|
|
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
|