| 
     
     
         
 
 
  
 
  
 
  
 
  
 
  
 
  
 
          | 
     
     
         | 
          
          
          
          Updated: 
          
12 December 1998
          
          
          
          | 
      
 
 
OpenVMS VAX RTL Mathematics (MTH$) Manual
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 Digital.
     | 
  
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!) ...)
  
    - If |X| < 2 (-f/2),
then zSIN(X) = X and zCOS(X) = 1
(see the section on MTH$zCOSH for
the definition of f)
     - If 2-f/2 <= |X| < Pi sign/4,
then zSIN(X) = X + P(X2)
and zCOS(X) = Q(X2)
    
 - If Pi sign/4 <= |X| and X > 0,
    
      - Let J = INT(X/(Pi sign/4))
and I = J modulo 8
       - 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)
     | 
  
       - zSIN(Y) and zCOS(Y) are computed as follows:
 zSIN(Y) = Y + P(Y2),
and zCOS(Y) = Q(Y2)
     
     - 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 Digital.
     | 
  
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
 
  - 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:
   -  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.)
   -  If (180/Pi sign)*2(-f/2) <= |X| < 45
then zSIND(X) = X/26 + P(X2)
and zCOSD(X) = Q(X2)
   -  If 45 <= |X| and X > 0,
  
    -  Let J = INT(X/(45)) and
 I = J modulo 8
     -  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)
     | 
  
     -  zSIND(Y) and zCOSD(Y) are computed as follows:
 zSIND(Y) = Y/26 + P(Y2)
 zCOSD(Y) = Q(Y2)
     -  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 Digital.
     | 
  
  
    | 
      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 Digital.
     | 
  
  
    | 
      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 Digital.
     | 
  
  
    | 
      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
      
  
     |