 |
HP OpenVMS RTL General Purpose (OTS$) Manual
OTS$POWDD
The Raise a D-Floating Base to a D-Floating Exponent routine raises a
D-floating base to a D-floating exponent.
Format
OTS$POWDD D-floating-point-base ,D-floating-point-exponent
RETURNS
OpenVMS usage: |
floating_point |
type: |
D_floating |
access: |
write only |
mechanism: |
by value |
Result of raising a D-floating base to a D-floating exponent.
Arguments
D-floating-point-base
OpenVMS usage: |
floating_point |
type: |
D_floating |
access: |
read only |
mechanism: |
by value |
Base. The D-floating-point-base argument is a
D-floating number containing the base.
D-floating-point-exponent
OpenVMS usage: |
floating_point |
type: |
D_floating |
access: |
read only |
mechanism: |
by value |
Exponent. The D-floating-point-exponent argument is a
D-floating number that contains the exponent.
Description
OTS$POWDD raises a D-floating base to a D-floating exponent.
The internal calculations and the floating-point result have the same
precision as the base value.
The D-floating result for OTS$POWDD is given by the following:
Base |
Exponent |
Result |
= 0
|
> 0
|
0.0
|
= 0
|
= 0
|
Undefined exponentiation
|
= 0
|
< 0
|
Undefined exponentiation
|
< 0
|
Any
|
Undefined exponentiation
|
> 0
|
> 0
|
2
[
exponent*log2(
base)]
|
> 0
|
= 0
|
1.0
|
> 0
|
< 0
|
2
[
exponent*log2(
base)]
|
Floating-point overflow can occur.
Undefined exponentiation occurs if the base is zero and the exponent is
zero or negative, or if the base is negative.
Condition Values Signaled
MTH$_FLOOVEMAT
|
Floating-point overflow in math library.
|
MTH$_FLOUNDMAT
|
Floating-point underflow in math library.
|
MTH$_UNDEXP
|
Undefined exponentiation. This error is signaled if
D-floating-point-base is zero and
D-floating-point-exponent is zero or negative, or if
the
D-floating-point-base is negative.
|
OTS$POWDJ
The Raise a D-Floating Base to a Longword Exponent routine raises a
D-floating base to a longword exponent.
Format
OTS$POWDJ D-floating-point-base ,longword-integer-exponent
RETURNS
OpenVMS usage: |
floating_point |
type: |
D_floating |
access: |
write only |
mechanism: |
by value |
Result of raising a D-floating base to a longword exponent.
Arguments
D-floating-point-base
OpenVMS usage: |
floating_point |
type: |
D_floating |
access: |
read only |
mechanism: |
by value |
Base. The D-floating-point-base argument is a
D-floating number containing the base.
longword-integer-exponent
OpenVMS usage: |
longword_signed |
type: |
longword (signed) |
access: |
read only |
mechanism: |
by value |
Exponent. The longword-integer-exponent argument is a
signed longword that contains the signed longword integer exponent.
Description
OTS$POWDJ raises a D-floating base to a longword exponent.
The internal calculations and the floating-point result have the same
precision as the base value.
The floating-point result is as follows:
Base |
Exponent |
Result |
Any
|
> 0
|
Product of (
base**2
i
), where
i is each nonzero bit position in
longword-integer-exponent.
|
> 0
|
= 0
|
1.0
|
= 0
|
= 0
|
Undefined exponentiation.
|
< 0
|
= 0
|
1.0
|
> 0
|
< 0
|
1.0/(
base**2
i
), where
i is each nonzero bit position in
longword-integer-exponent.
|
= 0
|
< 0
|
Undefined exponentiation.
|
< 0
|
< 0
|
1.0/(
base**2
i
), where
i is each nonzero bit position in
longword-integer-exponent.
|
Floating-point overflow can occur.
Undefined exponentiation occurs if the base is zero and the exponent is
zero or negative.
Condition Values Signaled
SS$_FLTOVF
|
Arithmetic trap. This error is signaled by the hardware if a
floating-point overflow occurs.
|
MTH$_FLOOVEMAT
|
Floating-point overflow in math library.
|
MTH$_FLOUNDMAT
|
Floating-point underflow in math library.
|
MTH$_UNDEXP
|
Undefined exponentiation. This error is signaled if
D-floating-point-base is zero and
longword-integer-exponent is zero or negative, or if
the
D-floating-point-base is negative.
|
OTS$POWDR
The Raise a D-Floating Base to an F-Floating Exponent routine raises a
D-floating base to an F-floating exponent.
Format
OTS$POWDR D-floating-point-base ,F-floating-point-exponent
RETURNS
OpenVMS usage: |
floating_point |
type: |
D_floating |
access: |
write only |
mechanism: |
by value |
Result of raising a D-floating base to an F-floating exponent.
Arguments
D-floating-point-base
OpenVMS usage: |
floating_point |
type: |
D_floating |
access: |
read only |
mechanism: |
by value |
Base. The D-floating-point-base argument is a
D-floating number containing the base.
F-floating-point-exponent
OpenVMS usage: |
floating_point |
type: |
F_floating |
access: |
read only |
mechanism: |
by value |
Exponent. The F-floating-point-exponent argument is an
F-floating number that contains the exponent.
Description
OTS$POWDR raises a D-floating base to an F-floating exponent.
The internal calculations and the floating-point result have the same
precision as the base value.
OTS$POWDR converts the F-floating exponent to a D-floating number. The
D-floating result for OTS$POWDR is given by the following:
Base |
Exponent |
Result |
= 0
|
> 0
|
0.0
|
= 0
|
= 0
|
Undefined exponentiation
|
= 0
|
< 0
|
Undefined exponentiation
|
< 0
|
Any
|
Undefined exponentiation
|
> 0
|
> 0
|
2
[
exponent*log2 (
base)]
|
> 0
|
= 0
|
1.0
|
> 0
|
< 0
|
2
[
exponent*log2 (
base)]
|
Floating-point overflow can occur.
Undefined exponentiation occurs if the base is zero and the exponent is
zero or negative, or if the base is negative.
Condition Values Signaled
SS$_FLTOVF
|
Arithmetic trap. This error is signaled by the hardware if a
floating-point overflow occurs.
|
MTH$_FLOOVEMAT
|
Floating-point overflow in math library.
|
MTH$_FLOUNDMAT
|
Floating-point underflow in math library.
|
MTH$_UNDEXP
|
Undefined exponentiation. This error is signaled if
D-floating-point-base is zero and
F-floating-point-exponent is zero or negative, or if
the
D-floating-point-base is negative.
|
OTS$POWGG
The Raise a G-Floating Base to a G-Floating Exponent routine raises a
G-floating base to a G-floating exponent.
Format
OTS$POWGG G-floating-point-base ,G-floating-point-exponent
RETURNS
OpenVMS usage: |
floating_point |
type: |
G_floating |
access: |
write only |
mechanism: |
by value |
Result of raising a G-floating base to a G-floating exponent.
Arguments
G-floating-point-base
OpenVMS usage: |
floating_point |
type: |
G_floating |
access: |
read only |
mechanism: |
by value |
Base that OTS$POWGG raises to a G-floating exponent. The
G-floating-point-base argument is a G-floating number
containing the base.
G-floating-point-exponent
OpenVMS usage: |
floating_point |
type: |
G_floating |
access: |
read only |
mechanism: |
by value |
Exponent to which OTS$POWGG raises the base. The
G-floating-point-exponent argument is a G-floating
number containing the exponent.
Description
OTS$POWGG raises a G-floating base to a G-floating exponent.
The internal calculations and the floating-point result have the same
precision as the base value.
The G-floating result for OTS$POWGG is as follows:
Base |
Exponent |
Result |
= 0
|
> 0
|
0.0
|
= 0
|
= 0
|
Undefined exponentiation
|
= 0
|
< 0
|
Undefined exponentiation
|
< 0
|
Any
|
Undefined exponentiation
|
> 0
|
> 0
|
2
[
exponent*log2(
base)]
|
> 0
|
= 0
|
1.0
|
> 0
|
< 0
|
2
[
exponent*log2(
base)]
|
Floating-point overflow can occur.
Undefined exponentiation occurs if the base is zero and the exponent is
zero or negative, or if the base is negative.
On Alpha and I64 systems, some restrictions apply when linking
OTS$POWGG. See Chapter 1 for more information about these
restrictions.
Condition Values Signaled
SS$_FLTOVF
|
Arithmetic trap. This error is signaled by the hardware if a
floating-point overflow occurs.
|
MTH$_FLOOVEMAT
|
Floating-point overflow in math library.
|
MTH$_FLOUNDMAT
|
Floating-point underflow in math library.
|
MTH$_UNDEXP
|
Undefined exponent. This error is signaled if
G-floating-point-base is zero and
G-floating-point-exponent is zero or negative, or if
G-floating-point-base is negative.
|
Example
|
C+
C This example demonstrates the use of OTS$POWGG,
C which raises a G-floating point base
C to a G-floating point power.
C-
REAL*8 X,Y,RESULT,OTS$POWGG
C+
C The arguments of OTS$POWGG are passed by value. Fortran can
C only pass INTEGER and REAL*4 expressions as VALUE. Since
C INTEGER and REAL*4 values are one longword long, while REAL*8
C values are two longwords long, equate the base (and power) to
C two-dimensional INTEGER vectors. These vectors will be passed
C by VALUE.
C-
INTEGER N(2),M(2)
EQUIVALENCE (N(1),X), (M(1),Y)
X = 8.0
Y = 2.0
C+
C To pass X by value, pass N(1) and N(2) by value. Similarly for Y.
C-
RESULT = OTS$POWGG(%VAL(N(1)),%VAL(N(2)),%VAL(M(1)),%VAL(M(2)))
TYPE *,' 8.0**2.0 IS ',RESULT
X = 9.0
Y = -0.5
C+
C In Fortran, OTS$POWWGG is indirectly called by simply using the
C exponentiation operator.
C-
RESULT = X**Y
TYPE *,' 9.0**-0.5 IS ',RESULT
END
|
This Fortran example uses OTS$POWGG to raise a G-floating base to a
G-floating exponent.
The output generated by this example is as follows:
8.0**2.0 IS 64.0000000000000
9.0**-0.5 IS 0.333333333333333
|
OTS$POWGJ
The Raise a G-Floating Base to a Longword Exponent routine raises a
G-floating base to a longword exponent.
Format
OTS$POWGJ G-floating-point-base ,longword-integer-exponent
RETURNS
OpenVMS usage: |
floating_point |
type: |
G_floating |
access: |
write only |
mechanism: |
by value |
Result of raising a G-floating base to a longword exponent.
Arguments
G-floating-point-base
OpenVMS usage: |
floating_point |
type: |
G_floating |
access: |
read only |
mechanism: |
by value |
Base that OTS$POWGJ raises to a longword exponent. The
G-floating-point-base argument is a G-floating number
containing the base.
longword-integer-exponent
OpenVMS usage: |
longword_signed |
type: |
longword (signed) |
access: |
read only |
mechanism: |
by value |
Exponent to which OTS$POWGJ raises the base. The
longword-integer-exponent argument is a signed
longword containing the exponent.
Description
OTS$POWGJ raises a G-floating base to a longword exponent.
The internal calculations and the floating-point result have the same
precision as the base value.
The floating-point result is as follows:
Base |
Exponent |
Result |
Any
|
> 0
|
Product of (
base**2
i
), where
i is each nonzero bit position in
longword-integer-exponent.
|
> 0
|
= 0
|
1.0
|
= 0
|
= 0
|
Undefined exponentiation.
|
< 0
|
= 0
|
1.0
|
> 0
|
< 0
|
1.0/(
base**2
i
), where
i is each nonzero bit position in
longword-integer-exponent.
|
= 0
|
< 0
|
Undefined exponentiation.
|
< 0
|
< 0
|
1.0/(
base**2
i
), where
i is each nonzero bit position in
longword-integer-exponent.
|
Floating-point overflow can occur.
Undefined exponentiation occurs if the base is zero and the exponent is
zero or negative.
On Alpha and I64 systems, some restrictions apply when linking
OTS$POWGJ. See Chapter 1 for more information about these
restrictions.
Condition Values Signaled
SS$_FLTOVF
|
Arithmetic trap. This error is signaled by the hardware if a
floating-point overflow occurs.
|
MTH$_FLOOVEMAT
|
Floating-point overflow in math library.
|
MTH$_FLOUNDMAT
|
Floating-point underflow in math library.
|
MTH$_UNDEXP
|
Undefined exponent. This error is signaled if
G-floating-point-base is zero and
longword-integer-exponent is zero or negative, or if
G-floating-point-base is negative.
|
OTS$POWHH_R3 (VAX Only)
On VAX systems, the Raise an H-Floating Base to an H-Floating Exponent
routine raises an H-floating base to an H-floating exponent.
Format
OTS$POWHH_R3 H-floating-point-base ,H-floating-point-exponent
RETURNS
OpenVMS usage: |
floating_point |
type: |
H_floating |
access: |
write only |
mechanism: |
by value |
Result of raising an H-floating base to an H-floating exponent.
Arguments
H-floating-point-base
OpenVMS usage: |
floating_point |
type: |
H_floating |
access: |
read only |
mechanism: |
by value |
Base. The H-floating-point-base argument is an
H-floating number containing the base.
H-floating-point-exponent
OpenVMS usage: |
floating_point |
type: |
H_floating |
access: |
read only |
mechanism: |
by value |
Exponent. The H-floating-point-exponent argument is an
H-floating number that contains the H-floating exponent.
Description
OTS$POWHH_R3 raises an H-floating base to an H-floating exponent.
The internal calculations and the floating-point result have the same
precision as the base value.
The H-floating result for OTS$POWHH_R3 is as follows:
Base |
Exponent |
Result |
= 0
|
> 0
|
0.0
|
= 0
|
= 0
|
Undefined exponentiation
|
= 0
|
< 0
|
Undefined exponentiation
|
< 0
|
Any
|
Undefined exponentiation
|
> 0
|
> 0
|
2
[
exponent*log2(
base)]
|
> 0
|
= 0
|
1.0
|
> 0
|
< 0
|
2
[
exponent*log2(
base)]
|
Floating-point overflow can occur.
Undefined exponentiation occurs if the base is zero and the exponent is
zero or negative, or if the base is negative.
Condition Values Signaled
SS$_FLTOVF
|
Arithmetic trap. This error is signaled by the hardware if a
floating-point overflow occurs.
|
MTH$_FLOOVEMAT
|
Floating-point overflow in math library.
|
MTH$_FLOUNDMAT
|
Floating-point underflow in math library.
|
MTH$_UNDEXP
|
Undefined exponentiation. This error is signaled if
H-floating-point-base is zero and
H-floating-point-exponent is zero or negative, or if
the
H-floating-point-base is negative.
|
Example
|
C+
C Example of OTS$POWHH, which raises an H_floating
C point base to an H_floating point power. In Fortran,
C it is not directly called.
C-
REAL*16 X,Y,RESULT
X = 9877356535.0
Y = -0.5837653
C+
C In Fortran, OTS$POWWHH is indirectly called by simply using the
C exponentiation operator.
C-
RESULT = X**Y
TYPE *,' 9877356535.0**-0.5837653 IS ',RESULT
END
|
This Fortran example demonstrates how to call OTS$POWHH_R3 to raise an
H-floating base to an H-floating power.
The output generated by this program is as follows:
9877356535.0**-0.5837653 IS 1.463779145994628357482343598205427E-0006
|
|