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 ifx
is notcomplex
.) May beinteger
orreal
.kind
- (Optional) Aninteger
initialization 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