cmplx(x,y)出來的結果為complex的默認精度,不管x,y的精度是多少
從fortran wiki (http://fortranwiki.org/fortran/show/cmplx)上看cmplx函數有三種形式:
1.cmplx(x). x可以是interger、real、complex, 結果為complex的默認精度
2.cmplx(x,y). x可以是interger、real,y為integer、real,結果為complex的默認精度
3.cmplx(x,y,kind). x可以是interger、real,y為integer、real,kind為interger,結果精度為kind
complex(kind=n) 等價於complex*2n。例如:
complex(4) 等價於 complex*8
complex(8) 等價於 complex*16
complex(16) 等價於 complex*32
complex默認為complex(real, real)類型,real受編譯器的real影響。
-------------------------------------------------------------------------------------------------------------------------
from: http://fortranwiki.org/fortran/show/cmplx
Description
cmplx(x [, y [, kind]]) returns a complex number where x is converted to the real component. If y is present it is converted to the imaginary component. If y is not present then the imaginary component is set to 0.0. If x is complex then y must not be present.
Standard
FORTRAN 77 and later
Class
Syntax
result = cmplx(x [, y [, kind]])
Arguments
x- The type may beinteger,real, orcomplex.y- (Optional; only allowed ifxis notcomplex.) May beintegerorreal.kind- (Optional) Anintegerinitialization expression indicating the kind parameter of the result.
Return value
The return value is of complex type, with a kind equal to kind if it is specified. If kind is not specified, the result is of the default complex kind, regardless of the kinds of x and y.
Example
program test_cmplx integer :: i = 42 real :: x = 3.14 complex :: z z = cmplx(i, x) print *, z, cmplx(x) end program test_cmplx
-------------------------------------------------------------------------------------------------------------------------
from:https://software.intel.com/content/www/us/en/develop/documentation/fortran-compiler-developer-guide-and-reference/top/language-reference/data-types-constants-and-variables/intrinsic-data-types/complex-data-types.html
