HP OpenVMS Systems Documentation

Content starts here

OpenVMS VAX RTL Mathematics (MTH$) Manual


Previous Contents Index


MTH$xSIN

The Sine of Angle Expressed in Radians routine returns the sine of a given angle (in radians).

Format

MTH$SIN angle-in-radians

MTH$DSIN angle-in-radians

MTH$GSIN angle-in-radians

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

Corresponding JSB Entry Points

MTH$SIN_R4

MTH$DSIN_R7

MTH$GSIN_R7

Each of the above JSB entry points accepts one of the floating-point types as input.


RETURNS


OpenVMS usage: floating_point
type: F_floating, D_floating, G_floating
access: write only
mechanism: by value

Sine of the angle specified by angle-in-radians. MTH$SIN returns an F-floating number. MTH$DSIN returns a D-floating number. MTH$GSIN returns a G-floating number.


Argument

angle-in-radians


OpenVMS usage: floating_point
type: F_floating, D_floating, G_floating
access: read only
mechanism: by reference

Angle (in radians). The angle-in-radians argument is the address of a floating-point number that is this angle. For MTH$SIN, angle-in-radians specifies an F-floating number. For MTH$DSIN, angle-in-radians specifies a D-floating number. For MTH$GSIN, angle-in-radians specifies a G-floating number.

Description

See MTH$xSINCOS for the algorithm used to compute this sine.

See MTH$HSIN for the description of the H-floating point version of this routine.


Condition Value Signaled

SS$_ROPRAND Reserved operand. The MTH$xSIN 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$xSINCOS

The Sine and Cosine of Angle Expressed in Radians routine returns the sine and cosine of a given angle (in radians).

Format

MTH$SINCOS angle-in-radians ,sine ,cosine

MTH$DSINCOS angle-in-radians ,sine ,cosine

MTH$GSINCOS angle-in-radians ,sine ,cosine

MTH$HSINCOS angle-in-radians ,sine ,cosine

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

Corresponding JSB Entry Points

MTH$SINCOS_R5

MTH$DSINCOS_R7

MTH$GSINCOS_R7

MTH$HSINCOS_R7

Each of the above JSB entry points accepts one of the floating-point types as input.


RETURNS

MTH$SINCOS, MTH$DSINCOS, MTH$GSINCOS, and MTH$HSINCOS return the sine and cosine of the input angle by reference in the sine and cosine arguments.


Arguments

angle-in-radians


OpenVMS usage: floating_point
type: F_floating, D_floating, G_floating, H_floating
access: read only
mechanism: by reference

Angle (in radians) whose sine and cosine are to be returned. The angle-in-radians argument is the address of a floating-point number that is this angle. For MTH$SINCOS, angle-in-radians is an F-floating number. For MTH$DSINCOS, angle-in-radians is a D-floating number. For MTH$GSINCOS, angle-in-radians is a G-floating number. For MTH$HSINCOS, angle-in-radians is an H-floating number.

sine


OpenVMS usage: floating_point
type: F_floating, D_floating, G_floating, H_floating
access: write only
mechanism: by reference

Sine of the angle specified by angle-in-radians. The sine argument is the address of a floating-point number. MTH$SINCOS writes an F-floating number into sine. MTH$DSINCOS writes a D-floating number into sine. MTH$GSINCOS writes a G-floating number into sine. MTH$HSINCOS writes an H-floating number into sine.

cosine


OpenVMS usage: floating_point
type: F_floating, D_floating, G_floating, H_floating
access: write only
mechanism: by reference

Cosine of the angle specified by angle-in-radians. The cosine argument is the address of a floating-point number. MTH$SINCOS writes an F-floating number into cosine. MTH$DSINCOS writes a D-floating number into cosine. MTH$GSINCOS writes a G-floating number into cosine. MTH$HSINCOS writes an H-floating number into cosine.

Description

All routines with JSB entry points accept a single argument in R0:Rm, where m, which is defined below, is dependent on the data type.
Data Type m
F_floating 0
D_floating 1
G_floating 1
H_floating 3

In general, Run-Time Library routines with JSB entry points return one value in R0:Rm. The MTHxSINCOS routine returns two values, however. The sine of angle-in-radians is returned in R0:Rm and the cosine of angle-in-radians is returned in (R<m+1>:R<2*m+1>).

In radians, the computation of zSIN(X) and zCOS(X) is based on the following polynomial expansions:

sin(X) = X - X3/(3!) + X5/(5!) - X7/(7!) ...
=X + X*P(X2), where
P(y) = y/(3!) + y2/(5!) + y3/(7!) ...

cos(X) = 1 - X2/(2!) + x4/(4!) -X6/(6!) ...
=Q(X2), where
Q(y) = (1 - y/(2!) + y2/(4!) + y3/(6!) ...)
  1. If |X| < 2 (-f/2),
    then zSIN(X) = X and zCOS(X) = 1
    (see the section on MTH$zCOSH for
    the definition of f)
  2. If 2-f/2 <= |X| < Pi sign/4,
    then zSIN(X) = X + P(X2)
    and zCOS(X) = Q(X2)

  3. If Pi sign/4 <= |X| and X > 0,
    1. Let J = INT(X/(Pi sign/4))
      and I = J modulo 8
    2. If J is even, let Y = X - J* (Pi sign/4)
      otherwise, let Y = (J+1)* (Pi sign/4) - X
      With the above definitions, the following table relates zSIN(X) and zCOS(X) to zSIN(Y) and zCOS(Y):
      Value of I zSIN(X) zCOS(X)
      0 zSIN(Y) zCOS(Y)
      1 zCOS(Y) zSIN(Y)
      2 zCOS(Y) -zSIN(Y)
      3 zSIN(Y) -zCOS(Y)
      4 -zSIN(Y) -zCOS(Y)
      5 -zCOS(Y) -zSIN(Y)
      6 -zCOS(Y) zSIN(Y)
      7 -zSIN(Y) zCOS(Y)
    3. zSIN(Y) and zCOS(Y) are computed as follows:
      zSIN(Y) = Y + P(Y2),
      and zCOS(Y) = Q(Y2)
  4. If Pi sign/4 <= |X| and X < 0,
    then zSIN(X) = -zSIN(|X|)
    and zCOS(X) = zCOS(|X|)

Condition Value Returned

SS$_ROPRAND Reserved operand. The MTH$xSINCOS 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$xSINCOSD

The Sine and Cosine of Angle Expressed in Degrees routine returns the sine and cosine of a given angle (in degrees).

Format

MTH$SINCOSD angle-in-degrees ,sine ,cosine

MTH$DSINCOSD angle-in-degrees ,sine ,cosine

MTH$GSINCOSD angle-in-degrees ,sine ,cosine

MTH$HSINCOSD angle-in-degrees ,sine ,cosine

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

Corresponding JSB Entry Points

MTH$SINCOSD_R5

MTH$DSINCOSD_R7

MTH$GSINCOSD_R7

MTH$HSINCOSD_R7

Each of the above JSB entry points accepts one of the floating-point types as input.


RETURNS

MTH$SINCOSD, MTH$DSINCOSD, MTH$GSINCOSD, and MTH$HSINCOSD return the sine and cosine of the input angle by reference in the sine and cosine arguments.


Arguments

angle-in-degrees


OpenVMS usage: floating_point
type: F_floating, D_floating, G_floating, H_floating
access: read only
mechanism: by reference

Angle (in degrees) whose sine and cosine are returned by MTH$xSINCOSD. The angle-in-degrees argument is the address of a floating-point number that is this angle. For MTH$SINCOSD, angle-in-degrees is an F-floating number. For MTH$DSINCOSD, angle-in-degrees is a D-floating number. For MTH$GSINCOSD, angle-in-degrees is a G-floating number. For MTH$HSINCOSD, angle-in-degrees is an H-floating number.

sine


OpenVMS usage: floating_point
type: F_floating, D_floating, G_floating, H_floating
access: write only
mechanism: by reference

Sine of the angle specified by angle-in-degrees. The sine argument is the address of a floating-point number. MTH$SINCOSD writes an F-floating number into sine. MTH$DSINCOSD writes a D-floating number into sine. MTH$GSINCOSD writes a G-floating number into sine. MTH$HSINCOSD writes an H-floating number into sine.

cosine


OpenVMS usage: floating_point
type: F_floating, D_floating, G_floating, H_floating
access: write only
mechanism: by reference

Cosine of the angle specified by angle-in-degrees. The cosine argument is the address of a floating-point number. MTH$SINCOSD writes an F-floating number into cosine. MTH$DSINCOSD writes a D-floating number into cosine. MTH$GSINCOSD writes a G-floating number into cosine. MTH$HSINCOSD writes an H-floating number into cosine.

Description

All routines with JSB entry points accept a single argument in R0:Rm, where m, which is defined below, is dependent on the data type.
Data Type m
F_floating 0
D_floating 1
G_floating 1
H_floating 3

In general, Run-Time Library routines with JSB entry points return one value in R0:Rm. The MTH$xSINCOSD routine returns two values, however. The sine of angle-in-degrees is returned in R0:Rm and the cosine of angle-in-degrees is returned in (R<m+1>:R<2*m+1>).

In degrees, the computation of zSIND(X) and zCOSD(X) is based on the following polynomial expansions:

SIND(X) = (C*X) - (C*X)3/(3!) +
(C*X)5/(5!) - (C*X)7/(7!) ...
= X/26 + X*P(X2), where
P(y) = -y/(3!) + y2/(5!) - y3/(7!) ...

COSD(X) = 1 - (C*X)2/(2!) +
(C*X)4/(4!) - (C*X)6/(6!) ...
=Q(X2), where
Q(y) = 1 - y/(2!) + y2/(4!) - y3/(6!) ...
and C = Pi sign/180
  1. If |X| <(180/Pi sign)*2-2^e-1 and underflow signaling is enabled,
    underflow is signaled for zSIND(X) and zSINCOSD(X).
    (See MTH$zCOSH for the definition of e.)
    otherwise:
  2. If |X| < (180/Pi sign)*2(-f/2),
    then zSIND(X)= (Pi sign/180)*X and zCOSD(X) = 1.
    (See MTH$zCOSH for the definition of f.)
  3. If (180/Pi sign)*2(-f/2) <= |X| < 45
    then zSIND(X) = X/26 + P(X2)
    and zCOSD(X) = Q(X2)
  4. If 45 <= |X| and X > 0,
    1. Let J = INT(X/(45)) and
      I = J modulo 8
    2. If J is even, let Y = X - J*45 ;
      otherwise, let Y = (J+1)*45 - X .
      With the above definitions, the following table relates
      zSIND(X) and zCOSD(X) to zSIND(Y) and zCOSD(Y):
      Value of I zSIND(X) zCOSD(X)
      0 zSIND(Y) zCOSD(Y)
      1 zCOSD(Y) zSIND(Y)
      2 zCOSD(Y) -zSIND(Y)
      3 zSIND(Y) -zCOSD(Y)
      4 -zSIND(Y) -zCOSD(Y)
      5 -zCOSD(Y) -zSIND(Y)
      6 -zCOSD(Y) zSIND(Y)
      7 -zSIND(Y) zCOSD(Y)
    3. zSIND(Y) and zCOSD(Y) are computed as follows:
      zSIND(Y) = Y/26 + P(Y2)
      zCOSD(Y) = Q(Y2)
    4. If 45 <= |X| and X < 0,
      then zSIND(X) = -zSIND(|X|)
      and zCOSD(X) = zCOSD(|X|)

Condition Values Signaled

SS$_ROPRAND Reserved operand. The MTH$xSINCOSD 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$_FLOUNDMAT Floating-point underflow in Math Library. The absolute value of the input angle is less than 180/Pi sign*2 -m (where m = 128 for F-floating and D-floating, 1,024 for G-floating, and 16,384 for H-floating).

MTH$xSIND

The Sine of Angle Expressed in Degrees routine returns the sine of a given angle (in degrees).

Format

MTH$SIND angle-in-degrees

MTH$DSIND angle-in-degrees

MTH$GSIND angle-in-degrees

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

Corresponding JSB Entry Points

MTH$SIND_R4

MTH$DSIND_R7

MTH$GSIND_R7

Each of the above JSB entry points accepts one of the floating-point types as input.


RETURNS


OpenVMS usage: floating_point
type: F_floating, D_floating, G_floating
access: write only
mechanism: by value

The sine of the angle. MTH$SIND returns an F-floating number. MTH$DSIND returns a D-floating number. MTH$GSIND returns a G-floating number.


Argument

angle-in-degrees


OpenVMS usage: floating_point
type: F_floating, D_floating, G_floating
access: read only
mechanism: by reference

Angle (in degrees). The angle-in-degrees argument is the address of a floating-point number that is this angle. For MTH$SIND, angle-in-degrees specifies an F-floating number. For MTH$DSIND, angle-in-degrees specifies a D-floating number. For MTH$GSIND, angle-in-degrees specifies a G-floating number.

Description

See MTH$xSINCOSD for the algorithm that is used to compute the sine.

See MTH$HSIND for the description of the H-floating point version of this routine.


Condition Values Signaled

SS$_ROPRAND Reserved operand. The MTH$xSIND 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$_FLOUNDMAT Floating-point underflow in Math Library. The absolute value of the input angle is less than 180/Pi sign*2 -m (where m = 128 for F-floating and D-floating, and 1,024 for G-floating).

MTH$xSINH

The Hyperbolic Sine routine returns the hyperbolic sine of the input value specified by floating-point-input-value.

Format

MTH$SINH floating-point-input-value

MTH$DSINH floating-point-input-value

MTH$GSINH floating-point-input-value

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


RETURNS


OpenVMS usage: floating_point
type: F_floating, D_floating, G_floating
access: write only
mechanism: by value

The hyperbolic sine of floating-point-input-value. MTH$SINH returns an F-floating number. MTH$DSINH returns a D-floating number. MTH$GSINH returns a G-floating number.


Argument

floating-point-input-value


OpenVMS usage: floating_point
type: F_floating, D_floating, G_floating
access: read only
mechanism: by reference

The input value. The floating-point-input-value argument is the address of a floating-point number that is this value. For MTH$SINH, floating-point-input-value specifies an F-floating number. For MTH$DSINH, floating-point-input-value specifies a D-floating number. For MTH$GSINH, floating-point-input-value specifies a G-floating number.

Description

Computation of the hyperbolic sine function depends on the magnitude of the input argument. The range of the function is partitioned using four data type dependent constants: a(z), b(z), and c(z). The subscript z indicates the data type. The constants depend on the number of exponent bits (e) and the number of fraction bits (f) associated with the data type (z).

The values of e and f are:

z e f
F 8 24
D 8 56
G 11 53

The values of the constants in terms of e and f are:

Variable Value
a(z) 2 (-f/2)
b(z) CEILING[ (f+1)/2*ln(2) ]
c(z) (2 (e-1)*ln(2))

Based on the above definitions, zSINH(X) is computed as follows:

Value of X Value Returned
|X| < a(z) X
a(z) <= |X| < 1.0 zSINH(X) is computed using a
power series expansion in |X| 2
1.0 <= |X| < b(z) (zEXP(X) - zEXP(-X))/2
b(z) <= |X| < c(z) SIGN(X)*zEXP(|X|)/2
c(z) <= |X| Overflow occurs

See MTH$HSINH for the description of the H-floating point version of this routine.


Condition Values Signaled

SS$_ROPRAND Reserved operand. The MTH$HTANH 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.
MTH$_FLOOVEMAT Floating-point overflow in Math Library: the absolute value of floating-point-input-value is greater than yyy. 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.

The values of yyy are approximately:

MTH$SINH---88.722
MTH$DSINH---88.722
MTH$GSINH---709.782


Previous Next Contents Index