The CMPLX function uses REAL or INTEGER arguments to compose a result of type COMPLEX. It may also convert between different kinds of COMPLEX numbers, possibly resulting in a loss of precision.
SyntaxCMPLX (x [, y] [, kind] )
x is an INTENT(IN) scalar or array of type REAL, INTEGER, or COMPLEX.
y is INTENT(IN) and of type REAL or INTEGER. If x is of type COMPLEX, y cannot be present.
kind is a number which determines the kind of the result. It must be a scalar INTEGER expression that can be evaluated at compile time. To maintain portability, this argument should be the result of a KIND Function, or SELECTED_REAL_KIND Function.
The result is of type COMPLEX.
If x is INTEGER or REAL, the value of the result is the complex number whose real part has the value of x, and whose imaginary part has the value of y. If y is absent, the imaginary part of the result is zero.
If x is COMPLEX, it is as if x and y were present with the values REAL(x), AIMAG(x)).
If kind is present, the result is of the kind specified by kind.
If kind is absent, the result is default kind.
Examplereal :: x=1.,y=1. integer :: ix=1,iy=1 complex(kind(1.d0)) :: z=(1.d0,1.d0) write(*,*) cmplx(x) ! y assumed to be zero write(*,*) cmplx(x,y) write(*,*) cmplx(ix,iy,kind(1.d0)) write(*,*) cmplx(ix,y) write(*,*) z, cmplx(z) ! precision is lost