a_double_unary_fun_xam.py#

View page source

Python: a_double Unary Functions with AD Result: Example and Test#

def a_double_unary_fun_xam() :
   #
   import numpy
   import cppad_py
   #
   # initialize return variable
   ok = True
   # ---------------------------------------------------------------------
   #
   # abs
   # numpy syntax does not work for this function
   a1   = cppad_py.a_double(-1.0)
   abs1 = a1.abs()
   ok   = ok and abs1 == 1.0
   # fabs
   a1   = cppad_py.a_double(1.0)
   abs1 = numpy.fabs( a1 )
   ok   = ok and abs1 == 1.0
   #
   # pi/4
   pi_4 = a1.atan()
   #
   # sqrt(2)
   atmp = cppad_py.a_double(2.0)
   r2 = numpy.sqrt( atmp )
   #
   # sin(pi/4)  * sqrt(2) = 1.0
   atmp = r2 * pi_4.sin()
   ok = ok and atmp.near_equal(a1)
   #
   # cos(pi/4)  * sqrt(2) = 1.0
   atmp = r2 * numpy.cos( pi_4 )
   ok = ok and atmp.near_equal(a1)
   #
   # tan(pi/4)  = 1.0
   atmp = pi_4.tan()
   ok = ok and atmp.near_equal(a1)
   #
   # erf(0.5) = 0.5204998778130465
   acheck = cppad_py.a_double(0.5204998778130465)
   atmp   = cppad_py.a_double(0.5)
   atmp   = atmp.erf()
   ok     = ok and atmp.near_equal(acheck)
   #
   return( ok )
#