VMS Help  —  CPML
    The Compaq Portable Mathematics Library (CPML) is a set of
    mathematical routines that are accessed from high-level languages
    (such as Fortran and C) which support mathematical functions.
    Many CPML routines can also be called directly using standard
    call interfaces, but it is recommended that you invoke CPML
    routines only from a high-level language.

    CPML routines are documented with generic names, and with the
    symbol F_TYPE to indicate generic floating-point values (e.g. F_
    TYPE sqrt (F_TYPE x)).

    To determine the appropriate names and interfaces within a
    specific programming language (e.g. float sqrtf(float x) or
    REAL*4 SQRT), refer to that language's documentation.

    To enable the use of CPML routines which are not provided by your
    high-level language, the actual CPML entrynames for OpenVMS are
    provided.

    Note: CPML routines which return complex numbers ("F_COMPLEX")
    use a private interface. Therefore, they can only be called from
    high-level languages that support that interface.

    The Data Types S_FLOAT, T_FLOAT and X_FLOAT refer to IEEE format
    floating-point numbers of single-, double-, and quad-precision,
    respectively. F_FLOAT and G_FLOAT refer to VAX format single-
    precision, and G-floating double-precision floating point
    numbers, respectively.

    For each CPML routine, "exceptional" input values are
    also provided. That is, values for which the function is
    mathematically undefined, or for which the output would be out
    of range for the floating-point type.

    Refer to your language's documentation for information about
    how exceptions manifest themselves and how to control exception
    behavior. Further information is also available at the Compaq
    Math website at: http://www.compaq.com/math.

1  –  acos()

    Interface

      F_TYPE acos (F_TYPE x)

      F_TYPE acosd (F_TYPE x)

1.1  –  Description

    acos() computes the principal value of the arc cosine of x in the
    interval [0,pi] radians for x in the interval [-1,1].

    acosd() computes the principal value of the arc cosine of x in
    the interval [0,180] degrees for x in the interval [-1,1].

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    acos       S_FLOAT     math$acos_s    acosf
               T_FLOAT     math$acos_t    acos
               X_FLOAT     math$acos_x    acosl
               F_FLOAT     math$acos_f
               G_FLOAT     math$acos_g

    acosd      S_FLOAT     math$acosd_s   acosdf
               T_FLOAT     math$acosd_t   acosd
               X_FLOAT     math$acosd_x   acosdl
               F_FLOAT     math$acosd_f
               G_FLOAT     math$acosd_g

1.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    |x|>1                  Invalid argument

2  –  acosh()

    Interface

      F_TYPE acosh (F_TYPE x)

2.1  –  Description

    acosh() returns the hyperbolic arc cosine of x for x in the
    interval [1,+infinity]. acosh(x) = ln(x + sqrt(x**2 - 1)).

    acosh() is the inverse function of cosh().  The definition of the
    acosh() function is acosh(cosh (x)) = x.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    acosh      S_FLOAT     math$acosh_s   acoshf
               T_FLOAT     math$acosh_t   acosh
               X_FLOAT     math$acosh_x   acoshl
               F_FLOAT     math$acosh_f
               G_FLOAT     math$acosh_g

2.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    x<1                    Invalid argument

3  –  asin()

    Interface

      F_TYPE asin (F_TYPE x)

      F_TYPE asind (F_TYPE x)

3.1  –  Description

    asin() computes the principal value of the arc sine of x in the
    interval [-pi/2,pi/2] radians for x in the interval [-1,1].

    asind() computes the principal value of the arc sine of x in the
    interval [-90,90] degrees for x in the interval [-1,1].

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    asin       S_FLOAT     math$asin_s    asinf
               T_FLOAT     math$asin_t    asin
               X_FLOAT     math$asin_x    asinl
               F_FLOAT     math$asin_f
               G_FLOAT     math$asin_g

    asind      S_FLOAT     math$asind_s   asindf
               T_FLOAT     math$asind_t   asind
               X_FLOAT     math$asind_x   asindl
               F_FLOAT     math$asind_f
               G_FLOAT     math$asind_g

3.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    |x|>1                  Invalid argument

4  –  asinh()

    Interface

      F_TYPE asinh (F_TYPE x)

4.1  –  Description

    asinh()
    returns the hyperbolic arc sine of x for x in the interval
    [-infinity, +infinity]. asinh(x) = ln(x + sqrt(x**2 + 1)).

    asinh() is the inverse function of sinh().  asinh(sinh (x)) = x.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    asinh      S_FLOAT     math$asinh_s   asinhf
               T_FLOAT     math$asinh_t   asinh
               X_FLOAT     math$asinh_x   asinhl
               F_FLOAT     math$asinh_f
               G_FLOAT     math$asinh_g

4.2  –  Exceptions

    None.

5  –  atan()

    Interface

      F_TYPE atan (F_TYPE x)

      F_TYPE atand (F_TYPE x)

5.1  –  Description

    atan() computes the principal value of the arc tangent of x
    in the interval [-pi/2,pi/2] radians for x in the interval [-
    infinity, +infinity].

    atand() computes the principal value of the arc tangent of x in
    the interval [-90,90] degrees for x in the interval [-infinity,
    +infinity].

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    atan       S_FLOAT     math$atan_s    atanf
               T_FLOAT     math$atan_t    atan
               X_FLOAT     math$atan_x    atanl
               F_FLOAT     math$atan_f
               G_FLOAT     math$atan_g

    atand      S_FLOAT     math$atand_s   atandf
               T_FLOAT     math$atand_t   atand
               X_FLOAT     math$atand_x   atandl
               F_FLOAT     math$atand_f
               G_FLOAT     math$atand_g

5.2  –  Exceptions

    None.

6  –  atan2()

    Interface

      F_TYPE atan2 (F_TYPE y, F_TYPE x)

      F_TYPE atand2 (F_TYPE y, F_TYPE x)

6.1  –  Description

    atan2() computes the angle in the interval [-pi,pi] whose
    arc tangent is y/x radians for x and y in the interval
    [-infinity, +infinity]. The sign of atan2() is the same as the
    sign of y. The atan2(y, x) function is computed as follows, where
    f is the number of fraction bits associated with the data type:

    Value of Input Arguments            Angle Returned

    x = 0 or y/x > 2**(f+1)             pi/2 * (sign y)
    x > 0 and y/x < or = 2**(f+1)       atan(y/x)
    x < 0 and y/x < or = 2**(f+1)       pi * (sign y) + atan(y/x)

    atand2() computes the angle in the interval [-180,180]
    whose arc tangent is y/x degrees for x and y in the interval
    [-infinity, +infinity]. The sign of atand2() is the same as the
    sign of y.

                           Entry-Point Names

    Generic                                  Compaq
    Function   Data Type                     Tru64 UNIX
    Name       Required    OpenVMS Alpha     Alpha

    atan2      S_FLOAT     math$atan2_s      atan2f
               T_FLOAT     math$atan2_t      atan2
               X_FLOAT     math$atan2_x      atan2l
               F_FLOAT     math$atan2_f
               G_FLOAT     math$atan2_g

    atand2     S_FLOAT     math$atand2_s     atand2f
               T_FLOAT     math$atand2_t     atand2
               X_FLOAT     math$atand2_x     atand2l
               F_FLOAT     math$atand2_f
               G_FLOAT     math$atand2_g

6.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    y = x = 0              Invalid argument
    |y| = infinity and     Invalid argument
    |x| = infinity

7  –  atanh()

    Interface

      F_TYPE atanh (F_TYPE x)

7.1  –  Description

    atanh() returns the hyperbolic arc tangent of x for x in the
    interval (-1,1). atanh() is the inverse function of tanh().
    atanh(tanh (x)) = x.

    atanh(x) is computed as 1/2 ln((1+x)/(1-x)).

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    atanh      S_FLOAT     math$atanh_s   atanhf
               T_FLOAT     math$atanh_t   atanh
               X_FLOAT     math$atanh_x   atanhl
               F_FLOAT     math$atanh_f
               G_FLOAT     math$atanh_g

7.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    |x| > or = 1           Invalid argument

8  –  bessel()

    Interface

      F_TYPE j0 (F_TYPE x)

      F_TYPE j1 (F_TYPE x)

      F_TYPE jn (int n, F_TYPE x)

      F_TYPE y0 (F_TYPE x)

      F_TYPE y1 (F_TYPE x)

      F_TYPE yn (int n, F_TYPE x)

8.1  –  Description

    j0() and j1()  return the value of the Bessel function of the
    first kind of orders 0 and 1, respectively.

    jn() returns the value of the Bessel function of the first kind
    of order n.

    y0() and y1()  return the value of the Bessel function of the
    second kind of orders 0 and 1, respectively.

    yn() returns the value of the Bessel function of the second kind
    of order n.

    The value of x must be positive for the y family of Bessel
    functions. The value of n specifies some integer value.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    j0         S_FLOAT     math$j0_s      j0f
               T_FLOAT     math$j0_t      j0
               X_FLOAT     math$j0_x      j0l
               F_FLOAT     math$j0_f
               G_FLOAT     math$j0_g

    j1         S_FLOAT     math$j1_s      j1f
               T_FLOAT     math$j1_t      j1
               X_FLOAT     math$j1_x      j1l
               F_FLOAT     math$j1_f
               G_FLOAT     math$j1_g

    jn         S_FLOAT     math$jn_s      jnf
               T_FLOAT     math$jn_t      jn
               X_FLOAT     math$jn_x      jnl
               F_FLOAT     math$jn_f
               G_FLOAT     math$jn_g

    y0         S_FLOAT     math$y0_s      y0f
               T_FLOAT     math$y0_t      y0
               X_FLOAT     math$y0_x      y0l
               F_FLOAT     math$y0_f
               G_FLOAT     math$y0_g

    y1         S_FLOAT     math$y1_s      y1f
               T_FLOAT     math$y1_t      y1
               X_FLOAT     math$y1_x      y1l
               F_FLOAT     math$y1_f
               G_FLOAT     math$y1_g

    yn         S_FLOAT     math$yn_s      ynf
               T_FLOAT     math$yn_t      yn
               X_FLOAT     math$yn_x      ynl
               F_FLOAT     math$yn_f
               G_FLOAT     math$yn_g

8.2  –  Exceptions

    Exceptional Argument            Routine Behavior

    (y0(), y1(),  yn()) x < 0       Invalid argument
    (y0(), y1(),  yn()) x = 0       Overflow

    The j1() and jn()  functions can result in an underflow as x
    becomes small. The largest value of x for which this occurs is a
    function of n.

    The y1() and yn()  functions can result in an overflow as x
    becomes small. The largest value of x for which this occurs is
    a function of n.

9  –  cabs()

    Interface

      F_TYPE cabs (F_TYPE x, F_TYPE y)

9.1  –  Description

    cabs(x,y) is defined as the square root of (x**2 + y**2) and
    returns the same value as hypot(x,y).

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    cabs       S_FLOAT     math$hypot_s   cabsf
               T_FLOAT     math$hypot_t   cabs
               X_FLOAT     math$hypot_x   cabsl
               F_FLOAT     math$hypot_f
               G_FLOAT     math$hypot_g

9.2  –  Exceptions

    Exceptional Argument            Routine Behavior

    sqrt(x**2 + y**2) > max_float   Overflow

    Data
    Type  Value for: max_float

    F     Hexadecimal: FFFF7FFF
    G     Hexadecimal: FFFFFFFFFFFF7FFF
    S     Hexadecimal: 7F7FFFFF
    T     Hexadecimal: 7FEFFFFFFFFFFFFF
    X     Hexadecimal: 7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    F     Decimal: 1.701411e38
    G     Decimal: 8.988465674311579e307
    S     Decimal: 3.402823e38
    T     Decimal: 1.797693134862316e308
    X     Decimal: 1.189731495357231765085759326628007016196477e4932

10  –  cbrt()

    Interface

      F_TYPE cbrt (F_TYPE x)

10.1  –  Description

    cbrt() returns the cube root of x.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    cbrt       S_FLOAT     math$cbrt_s    cbrtf
               T_FLOAT     math$cbrt_t    cbrt
               X_FLOAT     math$cbrt_x    cbrtl
               F_FLOAT     math$cbrt_f
               G_FLOAT     math$cbrt_g

10.2  –  Exceptions

    None.

11  –  ccos()

    Interface

      F_COMPLEX ccos (F_TYPE x, F_TYPE y)

11.1  –  Description

    ccos() returns the cosine of a complex number, x + iy.

    ccos(x,y) is defined as cos (x + iy) = (cos x * cosh y - i * sin
    x * sinh y).

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    ccos       S_FLOAT     math$ccos_s    ccosf
               T_FLOAT     math$ccos_t    ccos
               X_FLOAT     math$ccos_x    ccosl
               F_FLOAT     math$ccos_f
               G_FLOAT     math$ccos_g

11.2  –  Exceptions

    Exceptional Argument            Routine Behavior

    |x| = infinity                  Invalid argument
    (sin x sinh y) > max_float      Overflow
    (cos x cosh y) > max_float      Overflow

    Data
    Type  Value for: max_float

    F     Hexadecimal: FFFF7FFF
    G     Hexadecimal: FFFFFFFFFFFF7FFF
    S     Hexadecimal: 7F7FFFFF
    T     Hexadecimal: 7FEFFFFFFFFFFFFF
    X     Hexadecimal: 7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    F     Decimal: 1.701411e38
    G     Decimal: 8.988465674311579e307
    S     Decimal: 3.402823e38
    T     Decimal: 1.797693134862316e308
    X     Decimal: 1.189731495357231765085759326628007016196477e4932

12  –  cdiv()

    Interface

      F_COMPLEX cdiv (F_TYPE a, F_TYPE b, F_TYPE c, F_TYPE d)

12.1  –  Description

    cdiv() returns the quotient of two complex numbers: (a + ib)/(c +
    id).

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    cdiv       S_FLOAT     math$cdiv_s    cdivf
               T_FLOAT     math$cdiv_t    cdiv
               X_FLOAT     math$cdiv_x    cdivl
               F_FLOAT     math$cdiv_f
               G_FLOAT     math$cdiv_g

12.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    c=d=0                  Invalid argument

    The quotient may overflow.

13  –  ceil()

    Interface

      F_TYPE ceil (F_TYPE x)

13.1  –  Description

    ceil() returns the smallest floating-point number of integral
    value greater than or equal to x.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    ceil       S_FLOAT     math$ceil_s    ceilf
               T_FLOAT     math$ceil_t    ceil
               X_FLOAT     math$ceil_x    ceill
               F_FLOAT     math$ceil_f
               G_FLOAT     math$ceil_g

13.2  –  Exceptions

    None.

14  –  cexp()

    Interface

      F_COMPLEX cexp (F_TYPE x, F_TYPE y)

14.1  –  Description

    cexp() returns the exponential of a complex number.

    cexp(x,y) is defined as e**(x + iy) = e**x cos y + ie**x sin y.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    cexp       S_FLOAT     math$cexp_s    cexpf
               T_FLOAT     math$cexp_t    cexp
               X_FLOAT     math$cexp_x    cexpl
               F_FLOAT     math$cexp_f
               G_FLOAT     math$cexp_g

14.2  –  Exceptions

    Exceptional Argument            Routine Behavior

    |y| = infinity                  Invalid argument
    |e**x cos y| > max_float        Overflow
    |e**x sin y| > max_float        Overflow

    Data
    Type  Value for: max_float

    F     Hexadecimal: FFFF7FFF
    G     Hexadecimal: FFFFFFFFFFFF7FFF
    S     Hexadecimal: 7F7FFFFF
    T     Hexadecimal: 7FEFFFFFFFFFFFFF
    X     Hexadecimal: 7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    F     Decimal: 1.701411e38
    G     Decimal: 8.988465674311579e307
    S     Decimal: 3.402823e38
    T     Decimal: 1.797693134862316e308
    X     Decimal: 1.189731495357231765085759326628007016196477e4932

    Data
    Type  Value for: min_float

    F     Hexadecimal: 00000080
    G     Hexadecimal: 0000000000000010
    S     Hexadecimal: 00000001
    T     Hexadecimal: 0000000000000001
    X     Hexadecimal: 00000000000000000000000000000001

    F     Decimal: 2.9387359e-39
    G     Decimal: 5.562684646268003e-309
    S     Decimal: 1.4012985e-45
    T     Decimal: 4.940656458412465e-324
    X     Decimal: 6.4751751194380251109244389582276465524996e-4966

15  –  clog()

    Interface

      F_COMPLEX clog (F_TYPE x, F_TYPE y)

15.1  –  Description

    clog() returns the natural logarithm of a complex number.

    clog(x,y) is defined as ln(x + iy) = 1/2 ln(x**2 + y**2) + i *
    atan2(y,x).

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    clog       S_FLOAT     math$clog_s    clogf
               T_FLOAT     math$clog_t    clog
               X_FLOAT     math$clog_x    clogl
               F_FLOAT     math$clog_f
               G_FLOAT     math$clog_g

15.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    y=x=0                  Invalid argument
    |y|=|x|=infinity       Invalid argument

16  –  cmul()

    Interface

      F_COMPLEX cmul (F_TYPE a, F_TYPE b, F_TYPE c, F_TYPE d)

16.1  –  Description

    cmul() returns the product of two complex numbers.

    cmul(a,b,c,d) is defined as (a + ib) * (c + id).

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    cmul       S_FLOAT     math$cmul_s    cmulf
               T_FLOAT     math$cmul_t    cmul
               X_FLOAT     math$cmul_x    cmull
               F_FLOAT     math$cmul_f
               G_FLOAT     math$cmul_g

16.2  –  Exceptions

    None.

17  –  copysign()

    Interface

      F_TYPE copysign (F_TYPE x, F_TYPE y)

17.1  –  Description

    copysign() returns x with the same sign as y. IEEE Std 754
    requires copysign(x,NaN) = +x or -x.

                           Entry-Point Names

    Generic                                   Compaq
    Function   Data Type                      Tru64 UNIX
    Name       Required    OpenVMS Alpha      Alpha

    copysign   S_FLOAT     math$copysign_s    copysignf
               T_FLOAT     math$copysign_t    copysign
               X_FLOAT     math$copysign_x    copysignl
               F_FLOAT     math$copysign_f
               G_FLOAT     math$copysign_g

17.2  –  Exceptions

    None.

18  –  cos()

    Interface

      F_TYPE cos (F_TYPE x)

      F_TYPE cosd (F_TYPE x)

18.1  –  Description

    cos() computes the cosine of x, measured in radians.

    cosd() computes the cosine of x, measured in degrees.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    cos        S_FLOAT     math$cos_s     cosf
               T_FLOAT     math$cos_t     cos
               X_FLOAT     math$cos_x     cosl
               F_FLOAT     math$cos_f
               G_FLOAT     math$cos_g

    cosd       S_FLOAT     math$cosd_s    cosdf
               T_FLOAT     math$cosd_t    cosd
               X_FLOAT     math$cosd_x    cosdl
               F_FLOAT     math$cosd_f
               G_FLOAT     math$cosd_g

18.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    |x| = infinity         Invalid argument

19  –  cosh()

    Interface

      F_TYPE cosh (F_TYPE x)

19.1  –  Description

    cosh() computes the hyperbolic cosine of x.

    cosh(x) is defined as (exp(x) + exp(-x))/2.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    cosh       S_FLOAT     math$cosh_s    coshf
               T_FLOAT     math$cosh_t    cosh
               X_FLOAT     math$cosh_x    coshl
               F_FLOAT     math$cosh_f
               G_FLOAT     math$cosh_g

19.2  –  Exceptions

    Exceptional Argument            Routine Behavior

    |x| > ln(2 * max_float)         Overflow

    Data
    Type  Value for: ln(2 * max_float)

    F     Hexadecimal: 721843B1
    G     Hexadecimal: 39EFFEFA2E4240A6
    S     Hexadecimal: 42B2D4FC
    T     Hexadecimal: 408633CE8FB9F87E
    X     Hexadecimal: 400C62E9BB80635D81D36125B64DA4A6

    F     Decimal: 88.72284
    G     Decimal: 709.7827128933840
    S     Decimal: 89.41599
    T     Decimal: 710.4758600739439
    X     Decimal: 11357.2165534747038948013483100922230678208

20  –  cot()

    Interface

      F_TYPE cot (F_TYPE x)

      F_TYPE cotd (F_TYPE x)

20.1  –  Description

    cot() computes the cotangent of x, measured in radians.

    cotd() computes the cotangent of x, measured in degrees.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    cot        S_FLOAT     math$cot_s     cotf
               T_FLOAT     math$cot_t     cot
               X_FLOAT     math$cot_x     cotl
               F_FLOAT     math$cot_f
               G_FLOAT     math$cot_g

    cotd       S_FLOAT     math$cotd_s    cotdf
               T_FLOAT     math$cotd_t    cotd
               X_FLOAT     math$cotd_x    cotdl
               F_FLOAT     math$cotd_f
               G_FLOAT     math$cotd_g

20.2  –  Exceptions

    Exceptional Argument                     Routine Behavior

    (cot) x=0                                Overflow
    (cotd) |x| = multiples of 180 degrees    Overflow

21  –  cpow()

    Interface

      F_COMPLEX cpow (F_TYPE a, F_TYPE b, F_TYPE c, F_TYPE d)

21.1  –  Description

    cpow() raises a complex base (a + ib) to a complex exponent (c +
    id).

    cpow(a,b,c,d) is defined as e**((c + id) ln(a + ib)).

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    cpow       S_FLOAT     math$cpow_s    cpowf
               T_FLOAT     math$cpow_t    cpow
               X_FLOAT     math$cpow_x    cpowl
               F_FLOAT     math$cpow_f
               G_FLOAT     math$cpow_g

21.2  –  Exceptions

    Exceptional Argument                Routine Behavior

    sqrt (a**2 + b**2) > max_float      Overflow
    c/2 * ln(a**2 + b**2) > max_float   Overflow
    c/2 * ln(a**2 + b**2) - (d *        Overflow
    atan2(b,c)) > max_float
    a=b=c=d=0                           Invalid argument

    Data
    Type  Value for: max_float

    F     Hexadecimal: FFFF7FFF
    G     Hexadecimal: FFFFFFFFFFFF7FFF
    S     Hexadecimal: 7F7FFFFF
    T     Hexadecimal: 7FEFFFFFFFFFFFFF
    X     Hexadecimal: 7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    F     Decimal: 1.701411e38
    G     Decimal: 8.988465674311579e307
    S     Decimal: 3.402823e38
    T     Decimal: 1.797693134862316e308
    X     Decimal: 1.189731495357231765085759326628007016196477e4932

22  –  csin()

    Interface

      F_COMPLEX csin (F_TYPE x, F_TYPE y)

22.1  –  Description

    csin() computes the sine of a complex number, x + iy.

    csin(x,y) is defined as csin (x + iy) = sin x * cosh y + i * cos
    x * sinh y.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    csin       S_FLOAT     math$csin_s    csinf
               T_FLOAT     math$csin_t    csin
               X_FLOAT     math$csin_x    csinl
               F_FLOAT     math$csin_f
               G_FLOAT     math$csin_g

22.2  –  Exceptions

    Exceptional Argument            Routine Behavior

    |x| = infinity                  Invalid argument
    |sin x * cosh y| > max_float    Overflow
    |cos x * sinh y| > max_float    Overflow

    Data
    Type  Value for: max_float

    F     Hexadecimal: FFFF7FFF
    G     Hexadecimal: FFFFFFFFFFFF7FFF
    S     Hexadecimal: 7F7FFFFF
    T     Hexadecimal: 7FEFFFFFFFFFFFFF
    X     Hexadecimal: 7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    F     Decimal: 1.701411e38
    G     Decimal: 8.988465674311579e307
    S     Decimal: 3.402823e38
    T     Decimal: 1.797693134862316e308
    X     Decimal: 1.189731495357231765085759326628007016196477e4932

23  –  csqrt()

    Interface

      F_COMPLEX csqrt (F_TYPE x, F_TYPE y)

23.1  –  Description

    csqrt() computes the square root of a complex number, x + iy.
    The root is chosen so that the real part of csqrt(x,y) is greater
    than or equal to zero.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    csqrt      S_FLOAT     math$csqrt_s   csqrtf
               T_FLOAT     math$csqrt_t   csqrt
               X_FLOAT     math$csqrt_x   csqrtl
               F_FLOAT     math$csqrt_f
               G_FLOAT     math$csqrt_g

23.2  –  Exceptions

    None.

24  –  drem()

    Interface

      F_TYPE drem (F_TYPE x, F_TYPE y)

24.1  –  Description

    drem() returns the remainder r = x-n*y, where n = rint(x/y).
    Additionally, if |n-x/y|=1/2, then n is even. The remainder is
    computed exactly, and |r| is less than or equal to |y|/2. The
    drem() and remainder()  functions are aliases of each other.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    drem       S_FLOAT     math$rem_s     dremf
               T_FLOAT     math$rem_t     drem
               X_FLOAT     math$rem_x     dreml
               F_FLOAT     math$rem_f
               G_FLOAT     math$rem_g

24.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    x = infinity           Invalid argument

    Note that rem(x,0) has value 0 and is not an exceptional case.

25  –  erf()

    Interface

      F_TYPE erf (F_TYPE x)

      F_TYPE erfc (F_TYPE x)

25.1  –  Description

    erf() returns the value of the error function. The definition of
    the erf() function is (2/sqrt(pi)) times the area under the curve
    exp(-t * t) between 0 and x.

    erfc() returns (1.0-erf(x)).

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    erf        S_FLOAT     math$erf_s     erff
               T_FLOAT     math$erf_t     erf
               X_FLOAT     math$erf_x     erfl
               F_FLOAT     math$erf_f
               G_FLOAT     math$erf_g

    erfc       S_FLOAT     math$erfc_s    erfcf
               T_FLOAT     math$erfc_t    erfc
               X_FLOAT     math$erfc_x    erfcl
               F_FLOAT     math$erfc_f
               G_FLOAT     math$erfc_g

25.2  –  Exceptions

    The erfc() function can result in an underflow as x gets large.

26  –  exp()

    Interface

      F_TYPE exp (F_TYPE x)

      F_TYPE expm1 (F_TYPE x)

26.1  –  Description

    exp() computes the value of the exponential function, defined
    as e**x, where e is the constant used as a base for natural
    logarithms.

    expm1() computes exp(x)-1 accurately, even for tiny x.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    exp        S_FLOAT     math$exp_s     expf
               T_FLOAT     math$exp_t     exp
               X_FLOAT     math$exp_x     expl
               F_FLOAT     math$exp_f
               G_FLOAT     math$exp_g

    expm1      S_FLOAT     math$expm1_s   expm1f
               T_FLOAT     math$expm1_t   expm1
               X_FLOAT     math$expm1_x   expm1l
               F_FLOAT     math$expm1_f
               G_FLOAT     math$expm1_g

26.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    x > ln(max_float)      Overflow
    x < ln(min_float)      Underflow

    Data
    Type  Value for: ln(max_float)

    F     Hexadecimal: 0F3443B0
    G     Hexadecimal: 7B616E3A28B740A6
    S     Hexadecimal: 42B17218
    T     Hexadecimal: 40862E42FEFA39EF
    X     Hexadecimal: 400C62E42FEFA39EF35793C7673007E6

    F     Decimal: 88.029692
    G     Decimal: 709.0895657128241
    S     Decimal: 88.7228391
    T     Decimal: 709.7827128933840
    X     Decimal: 11356.5234062941439494919310779707648912527

    Data
    Type  Value for: ln(min_float)

    F     Hexadecimal: 7218C3B1
    G     Hexadecimal: 39EFFEFA2E42C0A6
    S     Hexadecimal: C2CE8ED0
    T     Hexadecimal: C0874385446D71C3
    X     Hexadecimal: C00C6546282207802C89D24D65E96274

    F     Decimal: -88.72284
    G     Decimal: -709.7827128933840
    S     Decimal: -103.2789
    T     Decimal: -744.4400719213813
    X     Decimal: -11432.7695961557379335278266113311643138373

27  –  fabs()

    Interface

      F_TYPE fabs (F_TYPE x)

27.1  –  Description

    fabs() computes the absolute value of x.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    fabs       S_FLOAT     math$fabs_s    fabsf
               T_FLOAT     math$fabs_t    fabs
               X_FLOAT     math$fabs_x    fabsl
               F_FLOAT     math$fabs_f
               G_FLOAT     math$fabs_g

27.2  –  Exceptions

    None.

28  –  finite()

    Interface

      int finite (F_TYPE x)

28.1  –  Description

    finite() returns the integer value 1 (true) or 0 (false).

    finite(x) = 1 when -infinity < x < +infinity.

    finite(x) = 0 when |x| = infinity or x is a NaN.

                           Entry-Point Names

    Generic                                   Compaq
    Function   Data Type                      Tru64 UNIX
    Name       Required    OpenVMS Alpha      Alpha

    finite     S_FLOAT     math$finite_s      finitef
               T_FLOAT     math$finite_t      finite
               X_FLOAT     math$finite_x      finitel
               F_FLOAT     math$finite_f
               G_FLOAT     math$finite_g

28.2  –  Exceptions

    None.

29  –  floor()

    Interface

      F_TYPE floor (F_TYPE x)

29.1  –  Description

    floor() returns the largest floating-point number of integral
    value less than or equal to x.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    floor      S_FLOAT     math$floor_s   floorf
               T_FLOAT     math$floor_t   floor
               X_FLOAT     math$floor_x   floorl
               F_FLOAT     math$floor_f
               G_FLOAT     math$floor_g

29.2  –  Exceptions

    None.

30  –  fmod()

    Interface

      F_TYPE fmod (F_TYPE x, F_TYPE y)

30.1  –  Description

    fmod() computes the floating-point remainder of x modulo y.
    It returns the remainder r = x-n*y, where n = trunc(x/y). The
    remainder is computed exactly.

    The result has the same sign as x and a magnitude less than the
    magnitude of y.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    fmod       S_FLOAT     math$mod_s     fmodf
               T_FLOAT     math$mod_t     fmod
               X_FLOAT     math$mod_x     fmodl
               F_FLOAT     math$mod_f
               G_FLOAT     math$mod_g

30.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    x = infinity           Invalid argument

    Note that fmod(x,0) has value 0 and is not an exceptional case.

31  –  fp_class()

    Interface

      int fp_class (F_TYPE x)

31.1  –  Description

    These routines determine the class of IEEE floating-point values.
    They return one of the constants in the file <fp_class.h> and
    never cause an exception, even for signaling NaNs. These routines
    implement the recommended function class(x) in the appendix of
    the IEEE Std 754. The constants in <fp_class.h> refer to the
    following classes of values:

    Constant           Class

    FP_SNAN            Signaling NaN (Not-a-Number)
    FP_QNAN            Quiet NaN (Not-a-Number)
    FP_POS_INF         +Infinity
    FP_NEG_INF         -Infinity
    FP_POS_NORM        Positive normalized
    FP_NEG_NORM        Negative normalized
    FP_POS_DENORM      Positive denormalized
    FP_NEG_DENORM      Negative denormalized
    FP_POS_ZERO        +0.0 (positive zero)
    FP_NEG_ZERO        -0.0 (negative zero)

                           Entry-Point Names

    Generic                                       Compaq
    Function   Data Type                          Tru64 UNIX
    Name       Required    OpenVMS Alpha          Alpha

    fp_class   S_FLOAT     math$fp_class_s        fp_classf
               T_FLOAT     math$fp_class_t        fp_class
               X_FLOAT     math$fp_class_x        fp_classl
               F_FLOAT     math$fp_class_f
               G_FLOAT     math$fp_class_g

31.2  –  Exceptions

    None.

32  –  frexp()

    Interface

      F_TYPE frexp (F_TYPE x, int *n)

32.1  –  Description

    frexp() breaks a floating-point number into a normalized fraction
    and an integral power of 2. It stores the integer in the int
    object pointed to by the n parameter and returns the fraction
    part.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    frexp      S_FLOAT     math$frexp_s   frexpf
               T_FLOAT     math$frexp_t   frexp
               X_FLOAT     math$frexp_x   frexpl
               F_FLOAT     math$frexp_f
               G_FLOAT     math$frexp_g

32.2  –  Exceptions

    None.

33  –  hypot()

    Interface

      F_TYPE hypot (F_TYPE x, F_TYPE y)

33.1  –  Description

    hypot() computes the length of the hypotenuse of a right
    triangle, where x and y represent the perpendicular sides of
    the triangle.

    hypot(x,y) is defined as the square root of (x**2 + y**2) and
    returns the same value as cabs(x,y).

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    hypot      S_FLOAT     math$hypot_s   hypotf
               T_FLOAT     math$hypot_t   hypot
               X_FLOAT     math$hypot_x   hypotl
               F_FLOAT     math$hypot_f
               G_FLOAT     math$hypot_g

33.2  –  Exceptions

    Exceptional Argument            Routine Behavior

    sqrt(x**2 + y**2) > max_float   Overflow

    Data
    Type  Value for: max_float

    F     Hexadecimal: FFFF7FFF
    G     Hexadecimal: FFFFFFFFFFFF7FFF
    S     Hexadecimal: 7F7FFFFF
    T     Hexadecimal: 7FEFFFFFFFFFFFFF
    X     Hexadecimal: 7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    F     Decimal: 1.701411e38
    G     Decimal: 8.988465674311579e307
    S     Decimal: 3.402823e38
    T     Decimal: 1.797693134862316e308
    X     Decimal: 1.189731495357231765085759326628007016196477e4932

34  –  ilogb()

    Interface

      int ilogb (F_TYPE x)

34.1  –  Description

    ilogb(x) returns the unbiased exponent of x as an integer, (as if
    x were normalized >= 1.0 and < 2.0) except:

       ilogb(NaN) is INT_MIN
       ilogb(inf) is INT_MAX
       logb(0) is INT_MIN

    There are no errors. The sign of x is ignored.

                           Entry-Point Names

    Generic                                       Compaq
    Function   Data Type                          Tru64 UNIX
    Name       Required    OpenVMS Alpha          Alpha

    ilogb      S_FLOAT     math$ilogb_s           ilogbf
               T_FLOAT     math$ilogb_t           ilogb
               X_FLOAT     math$ilogb_x           ilogbl
               F_FLOAT     math$ilogb_f
               G_FLOAT     math$ilogb_g

34.2  –  Exceptions

    None.

35  –  isnan()

    Interface

      int isnan (F_TYPE x)

35.1  –  Description

    isnan() returns 1 (true) if x is NaN (the IEEE floating-point
    reserved Not-a-Number value) and 0 (false) otherwise.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    isnan      S_FLOAT     math$isnan_s   isnanf
               T_FLOAT     math$isnan_t   isnan
               X_FLOAT     math$isnan_x   isnanl
               F_FLOAT     math$isnan_f
               G_FLOAT     math$isnan_g

35.2  –  Exceptions

    None.

36  –  ldexp()

    Interface

      F_TYPE ldexp (F_TYPE x, int n)

36.1  –  Description

    ldexp() multiplies a floating-point number, x, by 2**n.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    ldexp      S_FLOAT     math$ldexp_s   ldexpf
               T_FLOAT     math$ldexp_t   ldexp
               X_FLOAT     math$ldexp_x   ldexpl
               F_FLOAT     math$ldexp_f
               G_FLOAT     math$ldexp_g

36.2  –  Exceptions

    Exceptional Argument            Routine Behavior

    |x*(2**n)| > max_float          Overflow
    |x*(2**n)| < min_float          Underflow

    Data
    Type  Value for: max_float

    F     Hexadecimal: FFFF7FFF
    G     Hexadecimal: FFFFFFFFFFFF7FFF
    S     Hexadecimal: 7F7FFFFF
    T     Hexadecimal: 7FEFFFFFFFFFFFFF
    X     Hexadecimal: 7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    F     Decimal: 1.701411e38
    G     Decimal: 8.988465674311579e307
    S     Decimal: 3.402823e38
    T     Decimal: 1.797693134862316e308
    X     Decimal: 1.189731495357231765085759326628007016196477e4932

    Data
    Type  Value for: min_float

    F     Hexadecimal: 00000080
    G     Hexadecimal: 0000000000000010
    S     Hexadecimal: 00000001
    T     Hexadecimal: 0000000000000001
    X     Hexadecimal: 00000000000000000000000000000001

    F     Decimal: 2.9387359e-39
    G     Decimal: 5.562684646268003e-309
    S     Decimal: 1.4012985e-45
    T     Decimal: 4.940656458412465e-324
    X     Decimal: 6.4751751194380251109244389582276465524996e-4966

37  –  lgamma()

    Interface

      F_TYPE lgamma (F_TYPE x)

37.1  –  Description

    lgamma() returns the logarithm of the absolute value of gamma
    of x, or ln(|G(x)|), where G is the gamma function. The sign of
    gamma of x is returned in the external integer variable signgam
    as +1 or -1. The x parameter cannot be 0 or a negative integer.

    gamma() returns the natural log of the gamma function and so is
    functionally equivalent to lgamma(). Because of this, gamma()  is
    marked TO BE WITHDRAWN in the X/Open Portability Guide, Revision
    4 (XPG4).

                           Entry-Point Names

    Generic                                       Compaq
    Function   Data Type                          Tru64 UNIX
    Name       Required    OpenVMS Alpha          Alpha

    lgamma     S_FLOAT     math$lgamma_s          lgammaf
               T_FLOAT     math$lgamma_t          lgamma
               X_FLOAT     math$lgamma_x          lgammal
               F_FLOAT     math$lgamma_f
               G_FLOAT     math$lgamma_g

37.2  –  Exceptions

    Exceptional Argument            Routine Behavior

    |x| = infinity                  Invalid argument
    x = 0, -1, -2, -3, ...          Invalid argument
    |x| > lgamma_max_float          Overflow

    Data
    Type  Value for: lgamma_max_float

    F     Hexadecimal: 50F97CC6
    G     Hexadecimal: F55FC5015ABD7F67
    S     Hexadecimal: 7BC650F9
    T     Hexadecimal: 7F475ABDC501F55F
    X     Hexadecimal: 7FF171AA9917FFFBD7EA44AE6D203DF6

    F     Decimal: 2.0594342e36
    G     Decimal: 1.2812545499066958e305
    S     Decimal: 2.0594342e36
    T     Decimal: 1.2812545499066958e305
    X     Decimal: 1.0485738685148938358098967157129705040168e4928

38  –  log()

    Interface

      F_TYPE ln (F_TYPE x)

      F_TYPE log2 (F_TYPE x)

      F_TYPE log10 (F_TYPE x)

      F_TYPE log1p (F_TYPE y)

38.1  –  Description

    ln() computes the natural (base e) logarithm of x.

    log2() computes the base 2 logarithm of x.

    log10() computes the common (base 10) logarithm of x.

    log1p() computes ln(1+y) accurately, even for tiny y.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    ln         S_FLOAT     math$ln_s      logf
               T_FLOAT     math$ln_t      log
               X_FLOAT     math$ln_x      logl
               F_FLOAT     math$ln_f
               G_FLOAT     math$ln_g

    log2       S_FLOAT     math$log2_s    log2f
               T_FLOAT     math$log2_t    log2
               X_FLOAT     math$log2_x    log2l
               F_FLOAT     math$log2_f
               G_FLOAT     math$log2_g

    log10      S_FLOAT     math$log10_s   log10f
               T_FLOAT     math$log10_t   log10
               X_FLOAT     math$log10_x   log10l
               F_FLOAT     math$log10_f
               G_FLOAT     math$log10_g

    log1p      S_FLOAT     math$log1p_s   log1pf
               T_FLOAT     math$log1p_t   log1p
               X_FLOAT     math$log1p_x   log1pl
               F_FLOAT     math$log1p_f
               G_FLOAT     math$log1p_g

38.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    x < 0                  Invalid argument
    x = 0                  Overflow
    1+y < 0                Invalid argument
    1+y = 0                Overflow

39  –  logb()

    Interface

      F_TYPE logb (F_TYPE x)

39.1  –  Description

    logb() returns a signed integer converted to double-precision
    floating-point and so chosen that 1 <= |x|/2**n < 2 unless x = 0
    or |x| = infinity.

    IEEE Std 754 defines logb(+infinity) = +infinity and logb(0) =
    -infinity. The latter is required to signal division by zero.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    logb       S_FLOAT     math$logb_s    logbf
               T_FLOAT     math$logb_t    logb
               X_FLOAT     math$logb_x    logbl
               F_FLOAT     math$logb_f
               G_FLOAT     math$logb_g

39.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    x = 0                  Invalid argument

40  –  modf()

    Interface

      F_TYPE modf (F_TYPE x, F_TYPE *n)

40.1  –  Description

    modf() splits a floating-point number x into a fractional part f
    and an integer part i such that |f| < 1.0 and (f + i) = x. Both f
    and i have the same sign as x. modf() returns f and stores i into
    the location pointed to by n.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    modf       S_FLOAT     math$modf_s    modff
               T_FLOAT     math$modf_t    modf
               X_FLOAT     math$modf_x    modfl
               F_FLOAT     math$modf_f
               G_FLOAT     math$modf_g

40.2  –  Exceptions

    None.

41  –  nextafter()

    Interface

      F_TYPE nextafter (F_TYPE x, F_TYPE y)

41.1  –  Description

    nextafter() returns the machine-representable number next to x in
    the direction y.

                           Entry-Point Names

    Generic                                       Compaq
    Function   Data Type                          Tru64 UNIX
    Name       Required    OpenVMS Alpha          Alpha

    nextafter  S_FLOAT     math$nextafter_s       nextafterf
               T_FLOAT     math$nextafter_t       nextafter
               X_FLOAT     math$nextafter_x       nextafterl
               F_FLOAT     math$nextafter_f
               G_FLOAT     math$nextafter_g

41.2  –  Exceptions

    Exceptional Argument            Routine Behavior

    x = max_float and y =           Overflow
    +infinity
    x = -max_float and y = -        Overflow
    infinity
    x = min_float and y is less     Underflow
    than or equal to 0
    x = -min_float and y is         Underflow
    greater than or equal to 0

42  –  nint()

    Interface

      F_TYPE nint (F_TYPE x)

42.1  –  Description

    nint() returns the nearest integral value to x, except halfway
    cases are rounded to the integral value larger in magnitude. This
    function corresponds to the Fortran generic intrinsic function
    nint().

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    nint       S_FLOAT     math$nint_s    nintf
               T_FLOAT     math$nint_t    nint
               X_FLOAT     math$nint_x    nintl
               F_FLOAT     math$nint_f
               G_FLOAT     math$nint_g

42.2  –  Exceptions

    None.

43  –  pow()

    Interface

      F_TYPE pow (F_TYPE x, F_TYPE y)

43.1  –  Description

    pow() raises a floating-point base x to a floating-point exponent
    y. The value of pow(x,y) is computed as e**(y ln(x)) for positive
    x. If x is 0 or negative, see your language reference manual.

    Passing a NaN input value to pow() produces a NaN result for
    nonzero values of y. For pow(NaN,0), see your language reference
    manual.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    pow        S_FLOAT     math$pow_ss    powf
               T_FLOAT     math$pow_tt    pow
               X_FLOAT     math$pow_xx    powl
               F_FLOAT     math$pow_ff
               G_FLOAT     math$pow_gg

43.2  –  Exceptions

    Exceptional Argument                     Routine Behavior

    y ln(x) > ln(max_float)                  Overflow
    y ln(x) < ln(min_float)                  Underflow

    Fortran-Exceptional Argument             Routine Behavior

    x < 0                                    Invalid argument
    x = 0 and y < 0                          Invalid argument
    x = 0 and y = 0                          Invalid argument
    x = +infinity and y = 0                  Invalid argument
    x = 1 and |y| = infinity                 Invalid argument

    ANSI C-Exceptional Argument              Routine Behavior

    |x| = 1 and |y| = infinity               Invalid argument
    x < 0 and y is not integral              Invalid argument

    Data
    Type  Value for: ln(max_float)

    F     Hexadecimal: 0F3443B0
    G     Hexadecimal: 7B616E3A28B740A6
    S     Hexadecimal: 42B17218
    T     Hexadecimal: 40862E42FEFA39EF
    X     Hexadecimal: 400C62E42FEFA39EF35793C7673007E6

    F     Decimal: 88.029692
    G     Decimal: 709.0895657128241
    S     Decimal: 88.7228391
    T     Decimal: 709.7827128933840
    X     Decimal: 11356.5234062941439494919310779707648912527

    Data
    Type  Value for: ln(min_float)

    F     Hexadecimal: 7218C3B1
    G     Hexadecimal: 39EFFEFA2E42C0A6
    S     Hexadecimal: C2CE8ED0
    T     Hexadecimal: C0874385446D71C3
    X     Hexadecimal: C00C6546282207802C89D24D65E96274

    F     Decimal: -88.72284
    G     Decimal: -709.7827128933840
    S     Decimal: -103.2789
    T     Decimal: -744.4400719213813
    X     Decimal: -11432.7695961557379335278266113311643138373

44  –  random()

    Interface

      F_TYPE random (int *n)

44.1  –  Description

    random() is a general random number generator. The argument to
    the random function is an integer passed by reference. There
    are no restrictions on the input argument, although it should
    be initialized to different values on separate runs in order to
    obtain different random sequences. This function must be called
    again to obtain the next pseudo random number. The argument is
    updated automatically.

    The result is a floating-point number that is uniformly
    distributed in the interval (0.0,1.0).

                           Entry-Point Names

    Generic                                  Compaq
    Function   Data Type                     Tru64 UNIX
    Name       Required    OpenVMS Alpha     Alpha

    random     S_FLOAT     math$random_l_s
               T_FLOAT
               X_FLOAT
               F_FLOAT     math$random_l_f
               G_FLOAT

44.2  –  Exceptions

    None.

45  –  remainder()

    Interface

      F_TYPE remainder (F_TYPE x, F_TYPE y)

45.1  –  Description

    remainder() returns the remainder r = x-n*y, where n = rint(x/y).
    Additionally, if |n-x/y| = 1/2, then n is even. Consequently, the
    remainder is computed exactly, and |r| is less than or equal to
    |y|/2. The drem() and remainder()  functions are aliases of each
    other.

                           Entry-Point Names

    Generic                                       Compaq
    Function   Data Type                          Tru64 UNIX
    Name       Required    OpenVMS Alpha          Alpha

    remainder  S_FLOAT     math$rem_s             remainderf
               T_FLOAT     math$rem_t             remainder
               X_FLOAT     math$rem_x             remainderl
               F_FLOAT     math$rem_f
               G_FLOAT     math$rem_g

45.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    x = infinity           Invalid argument

    Note that rem(x,0) has value 0 and is not an exceptional case.

46  –  rint()

    Interface

      F_TYPE rint (F_TYPE x)

46.1  –  Description

    rint() rounds x to an integral value according to the current
    IEEE rounding direction specified by the user.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    rint       S_FLOAT     math$rint_s    rintf
               T_FLOAT     math$rint_t    rint
               X_FLOAT     math$rint_x    rintl
               F_FLOAT     math$rint_f
               G_FLOAT     math$rint_g

46.2  –  Exceptions

    None.

47  –  scalb()

    Interface

      F_TYPE scalb (F_TYPE x, F_TYPE y)

47.1  –  Description

    scalb() = x*(2**y) computed, for integer-valued floating point
    number y.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    scalb      S_FLOAT     math$scalb_s   scalbf
               T_FLOAT     math$scalb_t   scalb
               X_FLOAT     math$scalb_x   scalbl
               F_FLOAT     math$scalb_f
               G_FLOAT     math$scalb_g

47.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    x*(2**y) > max_float   Overflow
    x*(2**y) < min_float   Underflow
    x=0, y=infinity        Invalid argument
    x=infinity, y=-        Invalid argument
    infinity

    Data
    Type  Value for: max_float

    F     Hexadecimal: FFFF7FFF
    G     Hexadecimal: FFFFFFFFFFFF7FFF
    S     Hexadecimal: 7F7FFFFF
    T     Hexadecimal: 7FEFFFFFFFFFFFFF
    X     Hexadecimal: 7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    F     Decimal: 1.701411e38
    G     Decimal: 8.988465674311579e307
    S     Decimal: 3.402823e38
    T     Decimal: 1.797693134862316e308
    X     Decimal: 1.189731495357231765085759326628007016196477e4932

    Data
    Type  Value for: min_float

    F     Hexadecimal: 00000080
    G     Hexadecimal: 0000000000000010
    S     Hexadecimal: 00000001
    T     Hexadecimal: 0000000000000001
    X     Hexadecimal: 00000000000000000000000000000001

    F     Decimal: 2.9387359e-39
    G     Decimal: 5.562684646268003e-309
    S     Decimal: 1.4012985e-45
    T     Decimal: 4.940656458412465e-324
    X     Decimal: 6.4751751194380251109244389582276465524996e-4966

48  –  sin()

    Interface

      F_TYPE sin (F_TYPE x)

      F_TYPE sind (F_TYPE x)

48.1  –  Description

    sin() computes the sine of x, measured in radians.

    sind() computes the sine of x, measured in degrees.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    sin        S_FLOAT     math$sin_s     sinf
               T_FLOAT     math$sin_t     sin
               X_FLOAT     math$sin_x     sinl
               F_FLOAT     math$sin_f
               G_FLOAT     math$sin_g

    sind       S_FLOAT     math$sind_s    sindf
               T_FLOAT     math$sind_t    sind
               X_FLOAT     math$sind_x    sindl
               F_FLOAT     math$sind_f
               G_FLOAT     math$sind_g

48.2  –  Exceptions

    Exceptional Argument                     Routine Behavior

    |x| = infinity                           Invalid argument
    (sind) |x| < (180/pi) * min_float        Underflow

    Data
    Type  Value for: (180/pi) * min_float

    F     Hexadecimal: 2EE10365
    G     Hexadecimal: C1F81A63A5DC006C
    S     Hexadecimal: 00000039
    T     Hexadecimal: 0000000000000039
    X     Hexadecimal: 00000000000000000000000000000039

    F     Decimal: 1.683772e-37
    G     Decimal: 3.187183529933798e-307
    S     Decimal: 8.028849e-44
    T     Decimal: 2.830787630910868e-322
    X     Decimal: 3.71000205951917569316937757202433432154392e-4964

49  –  sinh()

    Interface

      F_TYPE sinh (F_TYPE x)

49.1  –  Description

    sinh() computes the hyperbolic sine of x.

    sinh(x) is defined as (exp(x)-exp(-x))/2.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    sinh       S_FLOAT     math$sinh_s    sinhf
               T_FLOAT     math$sinh_t    sinh
               X_FLOAT     math$sinh_x    sinhl
               F_FLOAT     math$sinh_f
               G_FLOAT     math$sinh_g

49.2  –  Exceptions

    Exceptional Argument      Routine Behavior

    |x| > ln(2 * max_float)   Overflow

    Data
    Type  Value for: ln(2 * max_float)

    F     Hexadecimal: 721843B1
    G     Hexadecimal: 39EFFEFA2E4240A6
    S     Hexadecimal: 42B2D4FC
    T     Hexadecimal: 408633CE8FB9F87E
    X     Hexadecimal: 400C62E9BB80635D81D36125B64DA4A6

    F     Decimal: 88.72284
    G     Decimal: 709.7827128933840
    S     Decimal: 89.41599
    T     Decimal: 710.4758600739439
    X     Decimal: 11357.2165534747038948013483100922230678208

50  –  sqrt()

    Interface

      F_TYPE sqrt (F_TYPE x)

50.1  –  Description

    sqrt() computes the rounded square root of x.

    For platforms supporting a signed zero, sqrt(-0) = 0.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    sqrt       S_FLOAT     math$sqrt_s    sqrtf
               T_FLOAT     math$sqrt_t    sqrt
               X_FLOAT     math$sqrt_x    sqrtl
               F_FLOAT     math$sqrt_f
               G_FLOAT     math$sqrt_g

50.2  –  Exceptions

    Exceptional Argument   Routine Behavior

    x < 0                  Invalid argument

51  –  tan()

    Interface

      F_TYPE tan (F_TYPE x)

      F_TYPE tand (F_TYPE x)

51.1  –  Description

    tan() computes the tangent of x, measured in radians.

    tand() computes the tangent of x, measured in degrees.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    tan        S_FLOAT     math$tan_s     tanf
               T_FLOAT     math$tan_t     tan
               X_FLOAT     math$tan_x     tanl
               F_FLOAT     math$tan_f
               G_FLOAT     math$tan_g

    tand       S_FLOAT     math$tand_s    tandf
               T_FLOAT     math$tand_t    tand
               X_FLOAT     math$tand_x    tandl
               F_FLOAT     math$tand_f
               G_FLOAT     math$tand_g

51.2  –  Exceptions

    Exceptional Argument                  Routine Behavior

    |x| = infinity                        Invalid argument
    (tand) |x| < (180/pi) * min_float     Underflow
    (tand) x = (2n+1) * 90                Overflow

    Data
    Type  Value for: (180/pi) * min_float

    F     Hexadecimal: 2EE10365
    G     Hexadecimal: C1F81A63A5DC006C
    S     Hexadecimal: 00000039
    T     Hexadecimal: 0000000000000039
    X     Hexadecimal: 00000000000000000000000000000039

    F     Decimal: 1.683772e-37
    G     Decimal: 3.187183529933798e-307
    S     Decimal: 8.028849e-44
    T     Decimal: 2.830787630910868e-322
    X     Decimal: 3.71000205951917569316937757202433432154392e-4964

52  –  tanh()

    Interface

      F_TYPE tanh (F_TYPE x)

52.1  –  Description

    tanh() computes the hyperbolic tangent of x.

    tanh(x) is defined as (exp(x)-exp(-x))/(exp(x) + exp(-x)).

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    tanh       S_FLOAT     math$tanh_s    tanhf
               T_FLOAT     math$tanh_t    tanh
               X_FLOAT     math$tanh_x    tanhl
               F_FLOAT     math$tanh_f
               G_FLOAT     math$tanh_g

52.2  –  Exceptions

    None.

53  –  trunc()

    Interface

      F_TYPE trunc (F_TYPE x)

53.1  –  Description

    trunc() truncates x to an integral value.

                           Entry-Point Names

    Generic                               Compaq
    Function   Data Type   OpenVMS        Tru64 UNIX
    Name       Required    Alpha          Alpha

    trunc      S_FLOAT     math$trunc_s   truncf
               T_FLOAT     math$trunc_t   trunc
               X_FLOAT     math$trunc_x   truncl
               F_FLOAT     math$trunc_f
               G_FLOAT     math$trunc_g

53.2  –  Exceptions

    None.

54  –  unordered()

    Interface

      int unordered (F_TYPE x, F_TYPE y)

54.1  –  Description

    unordered(x,y) returns the value 1 (true) if x, y, or both are a
    NaN and returns the value 0 (false) otherwise.

                           Entry-Point Names

    Generic                                       Compaq
    Function   Data Type                          Tru64 UNIX
    Name       Required    OpenVMS Alpha          Alpha

    unordered  S_FLOAT     math$unordered_s       unorderedf
               T_FLOAT     math$unordered_t       unordered
               X_FLOAT     math$unordered_x       unorderedl
               F_FLOAT     math$unordered_f
               G_FLOAT     math$unordered_g

54.2  –  Exceptions

    None.
Close Help