(j3.2006) Asymmetry of REAL, CMPLX

Bill Long longb
Mon Jan 7 19:38:02 EST 2008

Van Snyder wrote:
> Assuming no KIND argument...
> Where REAL has a real, integer or BOZ argument, its result kind is
> default real.

This is type conversion.

> Where REAL has a complex argument, its result kind is the same as the
> argument.

This is not type conversion - just component extraction.

> Where CMPLX has a complex, integer or BOZ argument, its result kind is
> default real.

Type conversion again.

> Where CMPLX has a real argument, its result kind is still default real,

Also type conversion.  Consistent with all the other cases above.

> NOT the same as the argument.  This is the one that's singled out for
> unexpected behavior, and shouldn't be.

I guess it is not unexpected to me. 

> REAL <=> COMPLEX ought to work consistently, not REAL => COMPLEX working
> one way, and COMPLEX => REAL working differently.

But they are different animals.  Why should they work the same?
> Dan has pointed out that there have been other proposals for a new
> intrinsic, spelt COMPLEX e.g., that would provide symmetry.  That's just
> sugar for CMPLX with a KIND argument; 

What is the KIND of the result of these:

COMPLEX(1., 0.d0)

I think this is also likely to be confusing.


> it doesn't solve the real problem,
> which is the surprising asymmetry that costs time, money and
> reliability.
> _______________________________________________
> J3 mailing list
> J3 at j3-fortran.org
> http://j3-fortran.org/mailman/listinfo/j3

Bill Long                                   longb at cray.com
Fortran Technical Support    &              voice: 651-605-9024
Bioinformatics Software Development         fax:   651-605-9142
Cray Inc., 1340 Mendota Heights Rd., Mendota Heights, MN, 55120


More information about the J3 mailing list