Ian Price wrote: > > I believe guile only considers numbers with an _exact_ 0 imaginary part > to be real. However, since all guile complex numbers are inexact, this > means that (* +i +i) is not considered real. > > scheme@(guile−user)> (* +i +i) > $19 = −1.0+0.0i > scheme@(guile−user)> (exact? (imag-part $19)) > $20 = #f > > While I don't know if this was a specific concern when writing, this is > in line with the interpretation in section 11.7.4 Numerical operations > of the r6rs document. > > http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-14.html#node_sec_11.7.4.1 > > If x is a real number object, then (rational? x) is true if and only if > there exist exact integer objects k1 and k2 such that (= x (/ k1 k2)) > and (= (numerator x) k1) and (= (denominator x) k2) are all true. Thus > infinities and NaNs are not rational number objects. > > (real? -2.5+0.0i) ⇒ #f > (real? -2.5+0i) ⇒ #t > > -- > Ian Price >
Thx Ian, the concept of exactness is new for me : scheme@(guile-user)> (real? +0i) $1 = #t scheme@(guile-user)> (inexact->exact 1.0) $2 = 1 scheme@(guile-user)> (inexact->exact (* +i +i)) $3 = -1 scheme@(guile-user)> (* +i +i) $4 = -1.0+0.0i scheme@(guile-user)> (real? (* +i +i)) $5 = #f scheme@(guile-user)> (real? (inexact->exact (* +i +i))) $6 = #t -- View this message in context: http://old.nabble.com/%28real--%28*-%2Bi-%2Bi%29%29--%3E--f-tp34250234p34250430.html Sent from the Gnu - Guile - User mailing list archive at Nabble.com.