id summary reporter owner description type status priority milestone component version resolution keywords cc
869 atan/log/sqrt failures dfindlay gb "The sqrt, log and atan functions are failing over significant portions of their domain (particularly for rational or complex rational arguments), even when it is entirely reasonable that a good result should be returned. Some typical examples are:
{{{
(sqrt (expt 10 47)) => 3.1622778E+23 ;CCL errors
(sqrt (/ (expt 10 47) 3)) => 1.8257418E+23 ;CCL errors
(sqrt (complex (expt 10 46) (expt 10 47))) => #C(2.3505187E+23 2.12719E+23) ;CCL errors
(sqrt (complex most-positive-short-float most-positive-short-float)) => #C(2.0267142E+19 8.394926E+18) ;CCL errors
(log (expt 10 -66)) => -151.97063 ;CCL errors
(log (- (expt 10 66))) => #C(151.97063 3.1415927) ;CCL returns wrong type (double, not single)
(log (complex (expt 10 65) (expt 10 66))) => #C(151.9756 1.4711276) ;CCL errors
(log (complex (expt 10 -65) (expt 10 -66))) => #C(-149.66307 0.09966865) ;CCL errors
(log 8.0d0 2) => 3.0D0 ;CCL returns wildly inaccurate result
(log #C(0.0 1.0) 0) => #C(0.0 0.0) ;CCL returns wrong type (integer)
(atan (expt 10 46) (expt 10 47)) => 0.09966865 ;CCL errors
(atan (expt 10 -46) (expt 10 -47)) => 1.4711276 ;CCL returns zero
}}}
I'm attaching a file that demonstrates how these could all be fixed by making changes to CCL's sqrt, log, log-e and atan functions (but the changes may not be implemented in the most efficient way). Making these fixes would also have a knock-on effect and correct dependent infelicities in both the arg and phase functions (which aren't noted above)." defect closed normal Clozure CL 1.9 ANSI CL Compliance trunk fixed