|
OpenVMS VAX RTL Mathematics (MTH$) Manual
MTH$xSQRT
The Square Root routine returns the square root of the input value
floating-point-input-value.
Format
MTH$SQRT floating-point-input-value
MTH$DSQRT floating-point-input-value
MTH$GSQRT floating-point-input-value
Each of the above formats accepts one of the floating-point types as
input. Corresponding JSB Entry Points
MTH$SQRT_R3
MTH$DSQRT_R5
MTH$GSQRT_R5
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 square root of floating-point-input-value.
MTH$SQRT returns an F-floating number. MTH$DSQRT returns a D-floating
number. MTH$GSQRT 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 |
Input value. The floating-point-input-value argument
is the address of a floating-point number that contains this input
value. For MTH$SQRT, floating-point-input-value
specifies an F-floating number. For MTH$DSQRT,
floating-point-input-value specifies a D-floating
number. For MTH$GSQRT, floating-point-input-value
specifies a G-floating number.
Description
The square root of X is computed as follows:
|
If X
< 0 , an error is signaled.
|
|
Let X = 2
K * F
|
|
where:
|
|
K is the exponential part of the floating-point data
|
|
F is the fractional part of the floating-point data
|
|
If K is even:
X = 2
(2*P) * F,
zSQRT(X) = 2
P * zSQRT(F),
1/2
<= F
< 1 , where P = K/2
|
|
If K is odd:
X = 2
(2*P+1) * F = 2
(2*P+2) * (F/2),
zSQRT(X) = 2
(P+1) * zSQRT(F/2),
1/4
<= F/2
< 1/2 , where p = (K-1)/2
|
|
Let F' = A*F + B, when K is even:
|
|
A = 0.95F6198 (hex)
|
|
B = 0.6BA5918 (hex)
|
|
Let F' = A* (F/2) + B, when K is odd:
|
|
A = 0.D413CCC (hex)
|
|
B = 0.4C1E248 (hex)
|
|
Let K' = P, when K is even
|
|
Let K' = P+1, when K is odd
|
Let Y[0] = 2K' * F' be a straight line approximation within
the given interval using coefficients A and B which minimize the
absolute error at the midpoint and endpoint.
Starting with Y[0], n Newton-Raphson iterations are performed:
|
Y[n+1] = 1/2 * (Y[n] + X/Y[n])
|
where n = 2, 3, or 3 for z = F-floating, D-floating, or G-floating,
respectively.
See MTH$HSQRT for the description of the H-floating point version of
this routine.
Condition Values Signaled
SS$_ROPRAND
|
Reserved operand. The MTH$xSQRT 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$_SQUROONEG
|
Square root of negative number. Argument
floating-point-input-value is less than 0.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.
|
MTH$xTAN
The Tangent of Angle Expressed in Radians routine returns the tangent
of a given angle (in radians).
Format
MTH$TAN angle-in-radians
MTH$DTAN angle-in-radians
MTH$GTAN angle-in-radians
Each of the above formats accepts one of the floating-point types as
input. Corresponding JSB Entry Points
MTH$TAN_R4
MTH$DTAN_R7
MTH$GTAN_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 tangent of the angle specified by
angle-in-radians. MTH$TAN returns an F-floating
number. MTH$DTAN returns a D-floating number. MTH$GTAN 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 |
The input angle (in radians). The angle-in-radians
argument is the address of a floating-point number that is this angle.
For MTH$TAN, angle-in-radians specifies an F-floating
number. For MTH$DTAN, angle-in-radians specifies a
D-floating number. For MTH$GTAN, angle-in-radians
specifies a G-floating number.
Description
When the input argument is expressed in radians, the tangent function
is computed as follows:
- If |X| < 2(-f/2) , then zTAN(X) = X (see the section on
MTH$zCOSH for the definition of f)
- Otherwise, call MTH$zSINCOS to obtain zSIN(X) and zCOS(X); then
- If zCOS(X) = 0 , signal overflow
- Otherwise, zTAN(X) = zSIN(X)/zCOS(X)
See MTH$HTAN for the description of the H-floating point version of
this routine.
Condition Values Signaled
SS$_ROPRAND
|
Reserved operand. The MTH$xTAN 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.
|
MTH$xTAND
The Tangent of Angle Expressed in Degrees routine returns the tangent
of a given angle (in degrees).
Format
MTH$TAND angle-in-degrees
MTH$DTAND angle-in-degrees
MTH$GTAND angle-in-degrees
Each of the above formats accepts one of the floating-point types as
input. Corresponding JSB Entry Points
MTH$TAND_R4
MTH$DTAND_R7
MTH$GTAND_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 |
Tangent of the angle specified by angle-in-degrees.
MTH$TAND returns an F-floating number. MTH$DTAND returns a D-floating
number. MTH$GTAND 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 |
The input angle (in degrees). The angle-in-degrees
argument is the address of a floating-point number which is this angle.
For MTH$TAND, angle-in-degrees specifies an F-floating
number. For MTH$DTAND, angle-in-degrees specifies a
D-floating number. For MTH$GTAND, angle-in-degrees
specifies a G-floating number.
Description
When the input argument is expressed in degrees, the tangent function
is computed as follows:
- If |X| < (180/Pi sign)*2(-2/(e-1)) and underflow
signaling is enabled, underflow is signaled. (See the section on
MTH$zCOSH for the definition of e.)
- Otherwise, if |X| < (180/Pi sign)*2(-f/2), then zTAND(X)
= (Pi sign/180)*X. (See the description of MTH$zCOSH for the definition
of f.)
- Otherwise, call MTH$zSINCOSD to obtain zSIND(X) and zCOSD(X).
- Then, if zCOSD(X) = 0 , signal overflow
- Else, zTAND(X) = zSIND(X)/zCOSD(X)
See MTH$HTAND for the description of the H-floating point version of
this routine.
Condition Values Signaled
SS$_ROPRAND
|
Reserved operand. The MTH$xTAND 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.
|
MTH$_FLOUNDMAT
|
Floating-point underflow in Math Library.
|
MTH$xTANH
The Compute the Hyperbolic Tangent routine returns the hyperbolic
tangent of the input value.
Format
MTH$TANH floating-point-input-value
MTH$DTANH floating-point-input-value
MTH$GTANH 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 tangent of floating-point-input-value.
MTH$TANH returns an F-floating number. MTH$DTANH returns a D-floating
number. MTH$GTANH 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 contains this
input value. For MTH$TANH, floating-point-input-value
specifies an F-floating number. For MTH$DTANH,
floating-point-input-value specifies a D-floating
number. For MTH$GTANH, floating-point-input-value
specifies a G-floating number.
Description
In calculating the hyperbolic tangent of x, the values of
g and h are:
z |
g |
h |
F
|
12
|
10
|
D
|
28
|
21
|
G
|
26
|
20
|
For MTH$TANH, MTH$DTANH, and MTH$GTANH the hyperbolic tangent of
x is then computed as follows:
Value of x |
Hyperbolic Tangent Returned |
|x|
<= 2
-g
|
X
|
2
-g
< |X|
< 0.5
|
xTANH(X) = X + X
3 * R(X
2), where R(X
2) is a rational function of X
2 .
|
0.5
<= |X|
< 1.0
|
xTANH(X) = xTANH(xHI) + xTANH(xLO)*C/B
|
|
where C = 1 - xTANH(xHI)*xTANH(xHI),
|
|
B = 1 + xTANH(xHI)*xTANH(xLO),
|
|
xHI = 1/2 + N/16 + 1/32 for N=0,1,...,7,
|
|
and xLO = X - xHI.
|
1.0
< |X|
< h
|
xTANH(X) = (xEXP(2*X) - 1)/(xEXP(2*X) + 1)
|
h
<= |X|
|
xTANH(X) = sign(X) *1
|
See MTH$HTANH for the description of the H-floating point version of
this routine.
Condition Value Signaled
SS$_ROPRAND
|
Reserved operand. The MTH$xTANH 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$UMAX
The Compute Unsigned Maximum routine computes the unsigned longword
maximum of n unsigned longword arguments, where n is
greater than or equal to 1.
Format
MTH$UMAX argument [argument,...]
RETURNS
OpenVMS usage: |
longword_unsigned |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Maximum value returned by MTH$UMAX.
Arguments
argument
OpenVMS usage: |
longword_unsigned |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Argument whose maximum MTH$UMAX computes. Each
argument argument is an unsigned longword that
contains one of these values.
argument
OpenVMS usage: |
longword_unsigned |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Additional arguments whose maximum MTH$UMAX computes. Each
argument argument is an unsigned longword that
contains one of these values.
Description
MTH$UMAX is the unsigned version of MTH$JMAX0, and computes the
unsigned longword maximum of n unsigned longword arguments,
where n is greater than or equal to 1.
Condition Values Returned
MTH$UMIN
The Compute Unsigned Minimum routine computes the unsigned longword
minimum of n unsigned longword arguments, where n is
greater than or equal to 1.
Format
MTH$UMIN argument [argument,...]
RETURNS
OpenVMS usage: |
longword_unsigned |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Minimum value returned by MTH$UMIN.
Arguments
argument
OpenVMS usage: |
longword_unsigned |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Argument whose minimum MTH$UMIN computes. Each
argument argument is an unsigned longword that
contains one of these values.
argument
OpenVMS usage: |
longword_unsigned |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Additional arguments whose minimum MTH$UMIN computes. Each
argument argument is an unsigned longword that
contains one of these values.
Description
MTH$UMIN is the unsigned version of MTH$JMIN0, and computes the
unsigned longword minimum of n unsigned longword arguments,
where n is greater than or equal to 1.
Condition Values Returned
|