> Date: Sun, 17 Sep 2000 11:54:36 -0400
> From: Aleksandar Donev <[log in to unmask]>
> Hello,
>
> I have a pedagological question for the Fortran teachers out there.
> How does one write "best" an expression with mixed types, say:
>
> complex(kind=sp) :: x,y
> integer :: k
>
> y=(k-1)/(k+1)*x
>
> I recommend to students to explicitly write all the type conversions:
>
> y=cmplx(k-1,0,sp)/cmplx(k+1,0,sp)*x
>
> though
>
> y=x*(k-1)/(k+1)
>
> also works.
Only by accident. And it's not efficient, either.
One must always be careful about writing division involving integers.
(k-1)/(k+1) can easily return a zero result, especially wen it's written at the
start of an expression (as is your first example).
Writing REAL(k+1) is sufficient in your example.
Converting to complex is wasteful, and is almost unreadable.
It's wasteful because two complex multiplications are introduced
when simple scalar multiplication by a complex value is all that's required.
> This clouds readability to some extent.
> What do you recommend?
>
> Thanks,
> Aleksandar
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|