# HG changeset patch
# User Burcin Erocal <burcin@erocal.org>
# Date 1284285267 -7200
# Node ID df213e03c8a0cf9b62e6206e9d72a95a66dc970a
# Parent  de37d995a17c6ac9a4d1978c29b1789e0a9387a2
#9900: add doctests to test enhancements to conjugation of some special
functions in pynac/GiNaC.

diff --git a/sage/functions/hyperbolic.py b/sage/functions/hyperbolic.py
--- a/sage/functions/hyperbolic.py
+++ b/sage/functions/hyperbolic.py
@@ -315,6 +315,20 @@
             sage: arcsinh(1 + I*1.0)
             1.06127506190504 + 0.666239432492515*I
 
+        ``conjugate(arcsinh(x))==arcsinh(conjugate(x))`` unless on the branch
+        cuts which run along the imaginary axis outside the interval [-I, +I].::
+
+            sage: conjugate(arcsinh(x))
+            conjugate(arcsinh(x))
+            sage: var('y', domain='positive')
+            y
+            sage: conjugate(arcsinh(y))
+            arcsinh(y)
+            sage: conjugate(arcsinh(y+I))
+            conjugate(arcsinh(y + I))
+            sage: conjugate(arcsinh(1/16))
+            arcsinh(1/16)
+
         TESTS::
 
             sage: arcsinh(x).operator()
@@ -354,6 +368,20 @@
             sage: arccosh(CC(0.5))
             1.04719755119660*I
 
+        ``conjugate(arccosh(x))==arccosh(conjugate(x))`` unless on the branch
+        cut which runs along the real axis from +1 to -inf.::
+
+            sage: conjugate(arccosh(x))
+            conjugate(arccosh(x))
+            sage: var('y', domain='positive')
+            y
+            sage: conjugate(arccosh(y))
+            conjugate(arccosh(y))
+            sage: conjugate(arccosh(y+I))
+            conjugate(arccosh(y + I))
+            sage: conjugate(arccos(1/16))
+            arccos(1/16)
+
         TESTS::
 
             sage: arccosh(x).operator()
@@ -380,6 +408,20 @@
             sage: arctanh(1 + I*1.0)
             0.402359478108525 + 1.01722196789785*I
 
+        ``conjugate(arctanh(x))==arctanh(conjugate(x))`` unless on the branch
+        cuts which run along the real axis outside the interval [-1, +1].::
+
+            sage: conjugate(arctanh(x))
+            conjugate(arctanh(x))
+            sage: var('y', domain='positive')
+            y
+            sage: conjugate(arctanh(y))
+            conjugate(arctanh(y))
+            sage: conjugate(arctanh(y+I))
+            conjugate(arctanh(y + I))
+            sage: conjugate(arctanh(1/16))
+            arctanh(1/16)
+
         TESTS::
 
             sage: arctanh(x).operator()
diff --git a/sage/functions/log.py b/sage/functions/log.py
--- a/sage/functions/log.py
+++ b/sage/functions/log.py
@@ -55,6 +55,11 @@
             sage: latex(exp(sqrt(x)^x))
             e^{\left(\sqrt{x}^{x}\right)}
 
+        Test conjugates::
+
+            sage: conjugate(exp(x))
+            e^conjugate(x)
+
         Test simplifications when taking powers of exp, #7264::
 
             sage: var('a,b,c,I')
@@ -150,6 +155,18 @@
             sage: loads(dumps(ln(x)+1))
             log(x) + 1
 
+        ``conjugate(log(x))==log(conjugate(x))`` unless on the branch cut which
+        runs along the negative real axis.::
+
+            sage: conjugate(log(x))
+            conjugate(log(x))
+            sage: var('y', domain='positive')
+            y
+            sage: conjugate(log(y))
+            log(y)
+            sage: conjugate(log(y+I))
+            conjugate(log(y + I))
+
         Check if float arguments are handled properly.::
 
             sage: from sage.functions.log import function_log as log
@@ -360,6 +377,22 @@
 
             sage: latex(dilog(z))
             {\rm Li}_2\left(z\right)
+
+        TESTS:
+
+        ``conjugate(dilog(x))==dilog(conjugate(x))`` unless on the branch cuts
+        which run along the positive real axis beginning at 1.::
+
+            sage: conjugate(dilog(x))
+            conjugate(dilog(x))
+            sage: var('y',domain='positive')
+            y
+            sage: conjugate(dilog(y))
+            conjugate(dilog(y))
+            sage: conjugate(dilog(1/19))
+            dilog(1/19)
+            sage: conjugate(dilog(1/2*I))
+            dilog(-1/2*I)
         """        
         GinacFunction.__init__(self, 'dilog',
                 conversions=dict(maxima='li[2]'))
diff --git a/sage/functions/other.py b/sage/functions/other.py
--- a/sage/functions/other.py
+++ b/sage/functions/other.py
@@ -510,6 +510,8 @@
             sage: gamma1(int(5))
             24
 
+            sage: conjugate(gamma(x))
+            gamma(conjugate(x))
 
             sage: plot(gamma1(x),(x,1,5))
 
diff --git a/sage/functions/special.py b/sage/functions/special.py
--- a/sage/functions/special.py
+++ b/sage/functions/special.py
@@ -1588,6 +1588,20 @@
         4.78749174278205
         sage: log_gamma(x)
         log_gamma(x)
+
+    TESTS:
+
+    ``conjugate(log_gamma(x))==log_gamma(conjugate(x))`` unless on the branch
+    cut which runs along the negative real axis.::
+
+        sage: conjugate(log_gamma(x))
+        conjugate(log_gamma(x))
+        sage: var('y', domain='positive')
+        y
+        sage: conjugate(log_gamma(y))
+        log_gamma(y)
+        sage: conjugate(log_gamma(y+I))
+        conjugate(log_gamma(y + I))
     """
     try:
         return t.log_gamma()
diff --git a/sage/functions/trig.py b/sage/functions/trig.py
--- a/sage/functions/trig.py
+++ b/sage/functions/trig.py
@@ -12,14 +12,19 @@
 
         EXAMPLES::
 
-             sage: sin(0)
-             0
-             sage: sin(x).subs(x==0)
-             0
-             sage: sin(2).n(100)
-             0.90929742682568169539601986591
-             sage: loads(dumps(sin))
-             sin
+            sage: sin(0)
+            0
+            sage: sin(x).subs(x==0)
+            0
+            sage: sin(2).n(100)
+            0.90929742682568169539601986591
+            sage: loads(dumps(sin))
+            sin
+
+        TESTS::
+
+            sage: conjugate(sin(x))
+            sin(conjugate(x))
         """
         GinacFunction.__init__(self, "sin", latex_name=r"\sin",
                 conversions=dict(maxima='sin',mathematica='Sin'))
@@ -41,6 +46,11 @@
             -0.41614683654714238699756822950
             sage: loads(dumps(cos))
             cos
+
+        TESTS::
+
+            sage: conjugate(cos(x))
+            cos(conjugate(x))
         """
         GinacFunction.__init__(self, "cos", latex_name=r"\cos",
                 conversions=dict(maxima='cos',mathematica='Cos'))
@@ -66,6 +76,11 @@
             tan(1/2)
             sage: RR(tan(1/2))
             0.546302489843790
+
+        TESTS::
+
+            sage: conjugate(tan(x))
+            tan(conjugate(x))
         """
         GinacFunction.__init__(self, "tan", latex_name=r"\tan")
 
@@ -330,6 +345,20 @@
             
             sage: arcsin(x).operator()
             arcsin
+
+        ``conjugate(arcsin(x))==arcsin(conjugate(x))`` unless on the branch
+        cuts which run along the real axis outside the interval [-1, +1].::
+
+            sage: conjugate(arcsin(x))
+            conjugate(arcsin(x))
+            sage: var('y', domain='positive')
+            y
+            sage: conjugate(arcsin(y))
+            conjugate(arcsin(y))
+            sage: conjugate(arcsin(y+I))
+            conjugate(arcsin(y + I))
+            sage: conjugate(arcsin(1/16))
+            arcsin(1/16)
         """
         GinacFunction.__init__(self, 'arcsin', latex_name=r"\arcsin",
                 conversions=dict(maxima='asin'))
@@ -352,6 +381,20 @@
             sage: arccos(3/4).n(100)
             0.72273424781341561117837735264
 
+        ``conjugate(arccos(x))==arccos(conjugate(x))`` unless on the branch
+        cuts which run along the real axis outside the interval [-1, +1].::
+
+            sage: conjugate(arccos(x))
+            conjugate(arccos(x))
+            sage: var('y', domain='positive')
+            y
+            sage: conjugate(arccos(y))
+            conjugate(arccos(y))
+            sage: conjugate(arccos(y+I))
+            conjugate(arccos(y + I))
+            sage: conjugate(arccos(1/16))
+            arccos(1/16)
+
         TESTS::
 
             sage: arccos(x).operator()
@@ -378,6 +421,20 @@
             sage: arctan(1/2).n(100)
             0.46364760900080611621425623146
 
+        ``conjugate(arctan(x))==arctan(conjugate(x))`` unless on the branch
+        cuts which run along the imaginary axis outside the interval [-I, +I].::
+
+            sage: conjugate(arctan(x))
+            conjugate(arctan(x))
+            sage: var('y', domain='positive')
+            y
+            sage: conjugate(arctan(y))
+            arctan(y)
+            sage: conjugate(arctan(y+I))
+            conjugate(arctan(y + I))
+            sage: conjugate(arctan(1/16))
+            arctan(1/16)
+
         TESTS::
 
             sage: arctan(x).operator()
