robin wrote:
>
> > 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.
how about writing
(k-1.)/(k+1.)
?
juergen
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|