[CLN-list] A silly program

Richard B. Kreckel kreckel at thep.physik.uni-mainz.de
Wed Nov 24 22:05:04 CET 2004


Hi!

Before anybody protests: I solemnly promise not to even try to to think
again when I'm tired!

On Wed, 24 Nov 2004, Richard B. Kreckel wrote:
[...]
> First, you dodged the question of the return type.  What should
> cln::operator@(float, const cln::cl_R&) return?  Is it just to
> conveniently save a few keystrokes and should hence return a cln::cl_R?
> No, wait!  cln::cl_R can have arbitrary precision but we do know the
> resulting precision cannot be better than that of float or double,
> respectively.  It would be wrong to return anything other than cl_FF or
> cl_DF; why return a base type?  Okay, that'ld leave us with implementing:
>
> inline const cl_FF operator@ (const cl_R& x, const float y)
> 	{ return float_approx(x) @ y; }
> inline const cl_FF operator@ (const float x, const cl_R& y)
> 	{ return x @ float_approx(y); }
>
> and the same for double.  And possibly for cl_F due to efficiency
> concerns.

The above line of reasoning is entirely wrong.  In CLN's type scheme, the
return value of operator@ (const cl_F&, float) must be cl_F and not cl_FF.
This is because the cl_F argument could actually have been a cl_SF.
Then, a cl_SF is returned, which is derived from cl_F, but *not* from
cl_FF.

>            In any case, that operator@ can hardly be said to be an
> operation in cl_R any more, because it always reduces its arguments
> precision-wise and does so even by declaration!

Even though that wasn't meant as a mathematically rigorous statement in
the first place and even though it might not be technically wrong, it is
pointless.

>                                                  This is why I am
> reluctant about such operators.  If a user wants his nice 1000 digit
> precision computation to decay he should be forced to state so
> explicitly.

Still a valid objection.  But probably a moot one.

No, I haven't been abusing drugs yesterday.  Maybe I should have.

 -richy.
-- 
Richard B. Kreckel
<http://www.ginac.de/~kreckel/>




More information about the CLN-list mailing list