[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: sqrt/complex bug



Of course, you realize that this reflects the underlying arithmetic
(ergo, can hardly be called a KCL bug).  I observe the following
behavior in a Sun3:
      >(sqrt -1)
      #C(-4.371139S-8 1.0S0)

      >(sqrt -1.0)
      #C(6.123031769111886E-17 1.0)

      >(sqrt #C(-1.0 0.0))
      #C(6.123031769111886E-17 1.0)

Ten-to-the-minus-17 is as close to zero in the real part as I would
expect from this machine, especially because the advertised value of
long-float-epsilon is 1.110223024625157E-16.

Enter Daydreaming-mode:  a truly decent symbolic system would,
upon seeing its sign, convert the integer argument -1 into the
(gaussian-)integer #C(-1 0) and try the square root there, giving the
(gaussian-)integer #C(0 1).  And, if impossible in QxQ, would only then
coerce to floats and try in C.  That would be great for Computer
Algebra, but *always* looking for the correct algebraic closure will
make sqrt too expensive an operation for numerical purposes, so we
better not mess with it.

=Cesar
--------
Cesar Augusto  Quiroz Gonzalez

Department of Computer Science     ...allegra!rochester!quiroz
University of Rochester            or
Rochester,  NY 14627               quiroz@cs.rochester.edu