|
From: Bruno H. <br...@cl...> - 2005-06-06 20:43:20
|
Sam wrote: > I disagree. > <http://www.lisp.org/HyperSpec/Body/fun_realpartcm_imagpart.html> > If number is real, then realpart returns number and imagpart > returns (* 0 number), which has the effect that the imaginary > part of a rational is 0 and that of a float is a floating-point > zero of the same format. > > thus this is a bug fix for *FLOATING-POINT-RATIONAL-CONTAGION-ANSI*. > (thanks to Paul Dietz for pointing this out). Your change is an isolated change that makes no sense on its own: > (imagpart #c(3.4 -1)) -1 > (imagpart #c(3.4 0)) 0.0 To make sense, this needs to be accompanied by changes in the functions COMPLEX, many functions in comptran.d, TYPEP and SUBTYPEP. All based on *COMPLEX-NUMBERS-ANSI*. *FLOATING-POINT-RATIONAL-CONTAGION-ANSI* is the wrong discriminator for this operation. Bruno |