Document revision date: 30 March 2001

## OpenVMS VAX RTL Mathematics (MTH$) Manual

Previous | Contents | Index

## MTH$CxCOS

> The Cosine of a Complex Number routine returns the cosine of a complex number.

### Format

> MTH$CDCOS complex-cosine ,complex-number

> MTH$CGCOS complex-cosine ,complex-number

> Each of the above formats accepts one of the floating-point complex types as input.

### RETURNS

> None.

### Arguments

> #### complex-cosine

> OpenVMS usage: | complex_number
> type: | D_floating complex, G_floating complex
> access: | write only
> mechanism: | by reference

> Complex cosine of the complex-number. The complex cosine routines that have D-floating and G-floating complex input values write the address of the complex cosine into the complex-cosine argument. For MTH$CDCOS, the complex-cosine argument specifies a D-floating complex number. For MTH$CGCOS, the complex-cosine argument specifies a G-floating complex number.

> #### complex-number

> OpenVMS usage: | complex_number
> type: | D_floating complex, G_floating complex
> access: | read only
> mechanism: | by reference

> A complex number (r,i) where r and i are floating-point numbers. The complex-number argument is the address of this complex number. For MTH$CDCOS, complex-number specifies a D-floating complex number. For MTH$CGCOS, complex-number specifies a G-floating complex number.

### Description

> The complex cosine is calculated as follows:
> result = (COS(r) * COSH(i), -SIN(r) * SINH(i))

### Condition Values Signaled

> SS$_ROPRAND | Reserved operand. The MTH$CxCOS routine encountered a floating-point reserved operand due to incorrect user input. A floating-point reserved operand is a floating-point datum with a sign bit of 1 and a biased exponent of 0. Floating-point reserved operands are reserved for future use by Compaq.
> MTH$_FLOOVEMAT | Floating-point overflow in Math Library: the absolute value of i is greater than about 88.029 for F-floating and D-floating values, or greater than 709.089 for G-floating values.

### Example

    C+
    C    This Fortran example forms the complex
    C    cosine of a D-floating complex number using
    C    MTH$CDCOS and the Fortran random number
    C    generator RAN.
    C
    C    Declare Z and MTH$CDCOS as complex values.
    C    MTH$CDCOS will return the cosine value of
    C    Z:         Z_NEW = MTH$CDCOS(Z)
    C-

            COMPLEX*16 Z,Z_NEW,MTH$CDCOS
            COMPLEX*16 DCMPLX
            INTEGER M
            M = 1234567

    C+
    C    Generate a random complex number with the
    C    Fortran generic DCMPLX.
    C-

            Z = DCMPLX(RAN(M),RAN(M))

    C+
    C    Z is a complex number (r,i) with real part "r" and
    C    imaginary part "i".
    C-

            TYPE *, ' The complex number z is',z
            TYPE *, ' '

    C+
    C    Compute the complex cosine value of Z.
    C-

            Z_NEW = MTH$CDCOS(Z)
            TYPE *, ' The complex cosine value of',z,' is',Z_NEW
            END

> This Fortran example program demonstrates the use of MTH$CxCOS, using the MTH$CDCOS entry point. Notice the high precision of the output generated:

>     The complex number z is (0.8535407185554504,0.2043401598930359)
>     The complex cosine value of (0.8535407185554504,0.2043401598930359) is
>      (0.6710899028500762,-0.1550672019621661)

## MTH$CEXP

> The Complex Exponential (F-Floating Value) routine returns the complex exponential of a complex number as an F-floating value.

### Format

> MTH$CEXP complex-number

### RETURNS

> OpenVMS usage: | complex_number
> type: | F_floating complex
> access: | write only
> mechanism: | by value

> Complex exponential of the complex input number. MTH$CEXP returns an F-floating complex number.

### Argument

> #### complex-number

> OpenVMS usage: | complex_number
> type: | F_floating complex
> access: | read only
> mechanism: | by reference

> Complex number whose complex exponential is to be returned. This complex number has the form (r,i), where r is the real part and i is the imaginary part. The complex-number argument is the address of this complex number. For MTH$CEXP, complex-number specifies an F-floating number.

### Description

> The complex exponential is computed as follows:
> complex-exponent = (EXP(r)*COS(i), EXP(r)*SIN(i))

> See MTH$CxEXP for the descriptions of the D- and G-floating point versions of this routine.

### Condition Values Signaled

> SS$_ROPRAND | Reserved operand. The MTH$CEXP routine encountered a floating-point reserved operand due to incorrect user input. A floating-point reserved operand is a floating-point datum with a sign bit of 1 and a biased exponent of 0. Floating-point reserved operands are reserved for future use by Compaq.
> MTH$_FLOOVEMAT | Floating-point overflow in Math Library: the absolute value of r is greater than about 88.029 for F-floating values.

### Example

    C+
    C    This Fortran example forms the complex exponential
    C    of an F-floating complex number using MTH$CEXP
    C    and the Fortran random number generator RAN.
    C
    C    Declare Z and MTH$CEXP as complex values. MTH$CEXP
    C    will return the exponential value of Z: Z_NEW = MTH$CEXP(Z)
    C-

            COMPLEX Z,Z_NEW,MTH$CEXP
            COMPLEX CMPLX
            INTEGER M
            M = 1234567

    C+
    C    Generate a random complex number with the
    C    Fortran generic CMPLX.
    C-

            Z = CMPLX(RAN(M),RAN(M))

    C+
    C    Z is a complex number (r,i) with real part "r"
    C    and imaginary part "i".
    C-

           TYPE *, ' The complex number z is',z
           TYPE *, ' It has real part',REAL(Z),'and imaginary part',AIMAG(Z)
           TYPE *, ' '

    C+
    C    Compute the complex exponential value of Z.
    C-

            Z_NEW = MTH$CEXP(Z)
            TYPE *, ' The complex exponential value of',z,' is',Z_NEW
            END

> This Fortran program demonstrates the use of MTH$CEXP as a function call. The output generated by this example is as follows:

>     The complex number z is (0.8535407,0.2043402)
>     It has real part  0.8535407    and imaginary part  0.2043402
>     The complex exponential value of (0.8535407,0.2043402) is
>      (2.299097,0.4764476)

## MTH$CxEXP

> The Complex Exponential routine returns the complex exponential of a complex number.

### Format

> MTH$CDEXP complex-exponent ,complex-number

> MTH$CGEXP complex-exponent ,complex-number

> Each of the above formats accepts one of the floating-point complex types as input.

### RETURNS

> None.

### Arguments

> #### complex-exponent

> OpenVMS usage: | complex_number
> type: | D_floating complex, G_floating complex
> access: | write only
> mechanism: | by reference

> Complex exponential of complex-number. The complex exponential routines that have D-floating complex and G-floating complex input values write the complex-exponent into this argument. For MTH$CDEXP, complex-exponent argument specifies a D-floating complex number. For MTH$CGEXP, complex-exponent specifies a G-floating complex number.

> #### complex-number

> OpenVMS usage: | complex_number
> type: | D_floating complex, G_floating complex
> access: | read only
> mechanism: | by reference

> Complex number whose complex exponential is to be returned. This complex number has the form (r,i), where r is the real part and i is the imaginary part. The complex-number argument is the address of this complex number. For MTH$CDEXP, complex-number specifies a D-floating number. For MTH$CGEXP, complex-number specifies a G-floating number.

### Description

> The complex exponential is computed as follows:
> complex-exponent = (EXP(r)*COS(i), EXP(r)*SIN(i))

### Condition Values Signaled

> SS$_ROPRAND | Reserved operand. The MTH$CxEXP routine encountered a floating-point reserved operand due to incorrect user input. A floating-point reserved operand is a floating-point datum with a sign bit of 1 and a biased exponent of 0. Floating-point reserved operands are reserved for future use by Compaq.
> MTH$_FLOOVEMAT | Floating-point overflow in Math Library: the absolute value of r is greater than about 88.029 for D-floating values, or greater than about 709.089 for G-floating values.

### Example

    C+
    C    This Fortran example forms the complex exponential
    C    of a G-floating complex number using MTH$CGEXP
    C    and the Fortran random number generator RAN.
    C
    C    Declare Z and MTH$CGEXP as complex values.
    C    MTH$CGEXP will return the exponential value
    C    of Z:      CALL MTH$CGEXP(Z_NEW,Z)
    C-

            COMPLEX*16 Z,Z_NEW
            COMPLEX*16 MTH$GCMPLX
            REAL*8 R,I
            INTEGER M
            M = 1234567

    C+
    C    Generate a random complex number with the Fortran
    C-   generic CMPLX.
    C-

            R = RAN(M)
            I = RAN(M)
            Z = MTH$GCMPLX(R,I)
            TYPE *, ' The complex number z is',z
            TYPE *, ' '

    C+
    C    Compute the complex exponential value of Z.
    C-

            CALL MTH$CGEXP(Z_NEW,Z)
            TYPE *, ' The complex exponential value of',z,' is',Z_NEW
            END

> This Fortran example demonstrates how to access MTH$CGEXP as a procedure call. Because G-floating numbers are used, this program must be compiled using the command "Fortran/G filename".

> Notice the high precision of the output generated:

>      The complex number z is (0.853540718555450,0.204340159893036)
>      The complex exponential value of (0.853540718555450,0.204340159893036) is
>     (2.29909677719458,0.476447678044977)

## MTH$CLOG

> The Complex Natural Logarithm (F-Floating Value) routine returns the complex natural logarithm of a complex number as an F-floating value.

### Format

> MTH$CLOG complex-number

### RETURNS

> OpenVMS usage: | complex_number
> type: | F_floating complex
> access: | write only
> mechanism: | by value

> The complex natural logarithm of a complex number. MTH$CLOG returns an F-floating complex number.

### Argument

> #### complex-number

> OpenVMS usage: | complex_number
> type: | F_floating complex
> access: | read only
> mechanism: | by reference

> Complex number whose complex natural logarithm is to be returned. This complex number has the form (r,i), where r is the real part and i is the imaginary part. The complex-number argument is the address of this complex number. For MTH$CLOG, complex-number specifies an F-floating number.

### Description

> The complex natural logarithm is computed as follows:
> CLOG(x) = (LOG(CABS(x)), ATAN2(i,r))

> See MTH$CxLOG for the D- and G-floating point versions of this routine.

### Condition Value Signaled

> SS$_ROPRAND | Reserved operand. The MTH$CLOG routine encountered a floating-point reserved operand (a floating-point datum with a sign bit of 1 and a biased exponent of 0) due to incorrect user input. Floating-point reserved operands are reserved for use by Compaq.

### Example

> See Section 1.7.4 for examples of using MTH$CLOG from VAX MACRO.

## MTH$CxLOG

> The Complex Natural Logarithm routine returns the complex natural logarithm of a complex number.

### Format

> MTH$CDLOG complex-natural-log ,complex-number

> MTH$CGLOG complex-natural-log ,complex-number

> Each of the above formats accepts one of the floating-point complex types as input.

### RETURNS

> None.

### Arguments

> #### complex-natural-log

> OpenVMS usage: | complex_number
> type: | D_floating complex, G_floating complex
> access: | write only
> mechanism: | by reference

> Natural logarithm of the complex number specified by complex-number. The complex natural logarithm routines that have D-floating complex and G-floating complex input values write the address of the complex natural logarithm into complex-natural-log. For MTH$CDLOG, the complex-natural-log argument specifies a D-floating complex number. For MTH$CGLOG, the complex-natural-log argument specifies a G-floating complex number.

> #### complex-number

> OpenVMS usage: | complex_number
> type: | D_floating complex, G_floating complex
> access: | read only
> mechanism: | by reference

> Complex number whose complex natural logarithm is to be returned. This complex number has the form (r,i), where r is the real part and i is the imaginary part. The complex-number argument is the address of this complex number. For MTH$CDLOG, complex-number specifies a D-floating number. For MTH$CGLOG, complex-number specifies a G-floating number.

### Description

> The complex natural logarithm is computed as follows:
> CLOG(x) = (LOG(CABS(x)), ATAN2(i,r))

### Condition Value Signaled

> SS$_FLTOVF_F | Floating point overflow can occur. This condition value is signaled from MTH$CxABS when MTH$CxABS overflows.
> SS$_ROPRAND | Reserved operand. The MTH$CxLOG routine encountered a floating-point reserved operand due to incorrect user input. A floating-point reserved operand is a floating-point datum with a sign bit of 1 and a biased exponent of 0. Floating-point reserved operands are reserved for future use by Compaq.
> MTH$_INVARGMAT | Invalid argument: r = i = 0 . LIB$SIGNAL copies the floating-point reserved operand to the mechanism argument vector CHF$L_MCH_SAVR0/R1. The result is the floating-point reserved operand unless you have written a condition handler to change CHF$L_MCH_SAVR0/R1.

### Example

    C+
    C   This Fortran example forms the complex logarithm of a D-floating complex
    C   number by using MTH$CDLOG and the Fortran random number generator RAN.
    C
    C   Declare Z and MTH$CDLOG as complex values. Then MTH$CDLOG
    c   returns the logarithm of Z: CALL MTH$CDLOG(Z_NEW,Z).
    C
    C   Declare Z, Z_LOG, MTH$DCMPLX as complex values, and R, I as real values.
    C   MTH$DCMPLX takes two real arguments and returns one complex number.
    C
    C   Given complex number Z, MTH$CDLOG(Z) returns the complex natural
    C   logarithm of Z.
    C-
            COMPLEX*16 Z,Z_NEW,MTH$DCMPLX
            REAL*8 R,I
            R = 3.1425637846746565
            I = 7.43678469887
            Z = MTH$DCMPLX(R,I)
    C+
    C   Z is a complex number (r,i) with real part "r" and imaginary part "i".
    C-
            TYPE *, ' The complex number z is',z
            TYPE *, ' '
            CALL MTH$CDLOG(Z_NEW,Z)
            TYPE *,' The complex logarithm of',z,' is',Z_NEW
            END

> This Fortran example program uses MTH$CDLOG by calling it as a procedure. The output generated by this program is as follows:

>     The complex number z is (3.142563784674657,7.436784698870000)
>     The complex logarithm of (3.142563784674657,7.436784698870000) is
>      (2.088587642177504,1.170985519274141)

## MTH$CMPLX

> The Complex Number Made from F-Floating Point routine returns a complex number from two floating-point input values.

### Format

> MTH$CMPLX real-part ,imaginary-part

### RETURNS

> OpenVMS usage: | complex_number
> type: | F_floating complex
> access: | write only
> mechanism: | by value

> A complex number. MTH$CMPLX returns an F-floating complex number.

### Arguments

> #### real-part

> OpenVMS usage: | floating_point
> type: | F_floating
> access: | read only
> mechanism: | by reference

> Real part of a complex number. The real-part argument is the address of a floating-point number that contains this real part, r, of (r,i). For MTH$CMPLX, real-part specifies an F-floating number.

> #### imaginary-part

> OpenVMS usage: | floating_point
> type: | F_floating
> access: | read only
> mechanism: | by reference

> Imaginary part of a complex number. The imaginary-part argument is the address of a floating-point number that contains this imaginary part, i, of (r,i). For MTH$CMPLX, imaginary-part specifies an F-floating number.

### Description

> The MTH$CMPLX routine returns a complex number from two F-floating input values. See MTH$xCMPLX for the D- and G-floating point versions of this routine.

### Condition Value Signaled

> SS$_ROPRAND | Reserved operand. The MTH$CMPLX routine encountered a floating-point reserved operand due to incorrect user input. A floating-point reserved operand is a floating-point datum with a sign bit of 1 and a biased exponent of 0. Floating-point reserved operands are reserved for future use by Compaq.

### Example

    C+
    C    This Fortran example forms two F-floating
    C    point complex numbers using MTH$CMPLX
    C    and the Fortran random number generator RAN.
    C
    C    Declare Z and MTH$CMPLX as complex values, and R
    C    and I as real values.  MTH$CMPLX takes two real
    C    F-floating point values and returns one COMPLEX*8 number.
    C
    C    Note, since CMPLX is a generic name in Fortran, it would be
    C    sufficient to use CMPLX.
    C    CMPLX must be declared to be of type COMPLEX*8.
    C
    C    Z = CMPLX(R,I)
    C-

            COMPLEX Z,MTH$CMPLX,CMPLX
            REAL*4 R,I
            INTEGER M
            M = 1234567
            R = RAN(M)
            I = RAN(M)
            Z = MTH$CMPLX(R,I)

    C+
    C    Z is a complex number (r,i) with real part "r" and
    C    imaginary part "i".
    C-

            TYPE *, ' The two input values are:',R,I
            TYPE *, ' The complex number z is',z
            z = CMPLX(RAN(M),RAN(M))
            TYPE *, ' '
            TYPE *, ' Using the Fortran generic CMPLX with random R and I:'
            TYPE *, ' The complex number z is',z
            END

> This Fortran example program demonstrates the use of MTH$CMPLX. The output generated by this program is as follows:

>     The two input values are:  0.8535407      0.2043402
>     The complex number z is (0.8535407,0.2043402)
>     Using the Fortran generic CMPLX with random R and I:
>     The complex number z is (0.5722565,0.1857677)

Previous | Next | Contents | Index

| privacy and legal statement |
6117PRO_006.HTML