www.delorie.com/gnu/docs/gcc/g77_71.html | search |
Buy the book! | |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
REAL()
and AIMAG()
of Complex
The GNU Fortran language disallows REAL(expr)
and AIMAG(expr)
,
where expr is any COMPLEX
type other than COMPLEX(KIND=1)
,
except when they are used in the following way:
REAL(REAL(expr)) REAL(AIMAG(expr)) |
The above forms explicitly specify that the desired effect
is to convert the real or imaginary part of expr, which might
be some REAL
type other than REAL(KIND=1)
,
to type REAL(KIND=1)
,
and have that serve as the value of the expression.
The GNU Fortran language offers clearly named intrinsics to extract the real and imaginary parts of a complex entity without any conversion:
REALPART(expr) IMAGPART(expr) |
To express the above using typical extended FORTRAN 77,
use the following constructs
(when expr is COMPLEX(KIND=2)
):
DBLE(expr) DIMAG(expr) |
The FORTRAN 77 language offers no way
to explicitly specify the real and imaginary parts of a complex expression of
arbitrary type, apparently as a result of requiring support for
only one COMPLEX
type (COMPLEX(KIND=1)
).
The concepts of converting an expression to type REAL(KIND=1)
and
of extracting the real part of a complex expression were
thus "smooshed" by FORTRAN 77 into a single intrinsic, since
they happened to have the exact same effect in that language
(due to having only one COMPLEX
type).
Note: When `-ff90' is in effect,
g77
treats `REAL(expr)', where expr is of
type COMPLEX
, as `REALPART(expr)',
whereas with `-fugly-complex -fno-f90' in effect, it is
treated as `REAL(REALPART(expr))'.
See section 9.9.3 Ugly Complex Part Extraction, for more information.
webmaster | delorie software privacy |
Copyright © 2003 by The Free Software Foundation | Updated Jun 2003 |