Forked from
cmucl / cmucl
Source project has a limited visibility.
-
Raymond Toy authored
The deftransforms `upgraded-complex-real-contagion-arg1` and `upgraded-complex-real-contagion-arg2` were coercing the complex number to the exact type of the float number. Because of the `THE` form, the type of the float was `(member 1d0)`, so the compiler was coercing `#c(1/2 1/2)` to `(complex (double-float 1d0))`, which is wrong. Therefore, coerce the complex to just the type format of the real part, ignoring any bounds. * src/compiler/float-tran.lisp * Coerce to format type, discarding any bounds * src/general-info/release-21d.md * Update notes * tests/issues.lisp * Added test for this
Raymond Toy authoredThe deftransforms `upgraded-complex-real-contagion-arg1` and `upgraded-complex-real-contagion-arg2` were coercing the complex number to the exact type of the float number. Because of the `THE` form, the type of the float was `(member 1d0)`, so the compiler was coercing `#c(1/2 1/2)` to `(complex (double-float 1d0))`, which is wrong. Therefore, coerce the complex to just the type format of the real part, ignoring any bounds. * src/compiler/float-tran.lisp * Coerce to format type, discarding any bounds * src/general-info/release-21d.md * Update notes * tests/issues.lisp * Added test for this