SIGN(A, B)

Purpose

Returns the absolute value of A times the sign of B. If A is non-zero, you can use the result to determine whether B is negative or non-negative, as the sign of the result is the same as the sign of B.

Note that if you have declared B as REAL(4) or REAL(8), and B has a negative zero value, the sign of the result depends on whether you have specified the -qxlf90=signedzero compiler option.

Class

Elemental function

Argument type and attributes

A
must be of type integer or real.
B
must be of the same type and kind type parameter as A.

Result type and attributes

Same as A.

Result value

The result is sgn*|A|, where:

Fortran 95

Fortran 95 allows a processor to distinguish between a positive and a negative real zero, whereas Fortran 90 did not. Using the -qxlf90=signedzero option allows you to specify the Fortran 95 behavior (except in the case of REAL(16) numbers), which is consistent with the IEEE standard for binary floating-point arithmetic. -qxlf90=signedzero is the default for the xlf95, xlf95_r, and f95 invocation commands.

End of Fortran 95

Examples

SIGN (-3.0, 2.0) has the value 3.0.

Specific Name Argument Type Result Type Pass As Arg?
SIGN default real default real yes
ISIGN any integer  1  same as argument yes
DSIGN double precision real double precision real yes
QSIGN REAL(16) REAL(16) yes  2 
Notes:
  1. IBM Extension: the ability to specify a nondefault integer argument.
  2. IBM Extension: the ability to pass the name as an argument.

Related information

See the -qxlf90 option in the XL Fortran Compiler Reference.