 18 Feb, 2018 1 commit


Raymond Toy authored
The deftransforms `upgradedcomplexrealcontagionarg1` and `upgradedcomplexrealcontagionarg2` 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 (doublefloat 1d0))`, which is wrong. Therefore, coerce the complex to just the type format of the real part, ignoring any bounds. * src/compiler/floattran.lisp * Coerce to format type, discarding any bounds * src/generalinfo/release21d.md * Update notes * tests/issues.lisp * Added test for this

 04 Feb, 2018 1 commit


Raymond Toy authored
If 0 is the lower bound then the smallest exponent is not for 0, but for the least positive float because of denormals. Also handle exclusive bounds.

 03 Feb, 2018 1 commit


Raymond Toy authored
Type derivation for exponent part of decodefloat was incorrect. We need to take the absolute value of the argument before deriving the type since the exponent is, of course, independent of the sign of the number. In the test case, the negative interval caused the lower and upper bounds to be reversed, resulting in an invalid interval.

 20 Dec, 2017 1 commit


Raymond Toy authored

 14 May, 2016 1 commit


Raymond Toy authored
src/compiler/float.lisp: o The deftransform coerce was checking for a type of 'float and using %singlefloat to do the conversion. This is incorrect; it should only apply if the type is 'singlefloat. tests/issues.lisp o Add test for this. Verified that the test fails on the current snapshot and ix fixed by this change.

 07 Jun, 2015 3 commits


Raymond Toy authored
Previously only commented out, so really remove them now.

Raymond Toy authored

Raymond Toy authored
compiler/floattrandd.lisp: * Most of the doubledouble implementation moved here. compiler/floattran.lisp: * Removed most of the doubledouble implementation. compiler/loadcom.lisp: * Load floattrandd. tools/comcom.lisp: * Compile floattrandd. i18n/local/cmucl.pot: * Regenerated.

 26 Nov, 2014 1 commit


Raymond Toy authored
* code/exports.lisp: * Export %LOG2. * code/irrat.lisp: * Define %log2 * Use %log2 instead of log2. (This needs work) * compiler/floattran.lisp: * Use %log2 instead of log2 in the deftransforms.

 02 Oct, 2014 1 commit


Raymond Toy authored
If the exponent (second arg of SCALEFLOAT) is such that 2^exponent can be represented as a float (single or double), we can implement SCALEFLOAT using a multiplication by 2^exponent, since multiplication by 2^exponent is exact. * src/compiler/floattran.lisp: * Update deftransforms for SCALEFLOAT to do a multiply when possible. * tests/floattran.lisp: * Add tests to make sure the deftransforms for SCALEFLOAT are applied appropriately.

 25 Sep, 2014 3 commits


Raymond Toy authored
The minimum exponent is from 0, it's from leastpositive float. * src/compiler/floattran.lisp: * Derive the correct minimum exponent by using the exponent from the leastpositive float value of the appropriate type. * tests/floattran.lisp: * Add tests for the derived exponent type for DECODEFLOAT. Conflicts: tests/floattran.lisp

Raymond Toy authored
Type derivation of the sign of (DECODEFLOAT X) returned the incorrect value when x was declared to be of type (DOUBLEFLOAT (0d0)). * src/compiler/floattran.lisp * Fix type derivation * tests/floattran.lisp * New file for tests of DECODEFLOATSIGNDERIVETYPEAUX. * tests/float.lisp * New file to test that decodefloat is compiled correctly.

Raymond Toy authored
The minimum exponent is from 0, it's from leastpositive float. * src/compiler/floattran.lisp: * Derive the correct minimum exponent by using the exponent from the leastpositive float value of the appropriate type. * tests/floattran.lisp: * Add tests for the derived exponent type for DECODEFLOAT.

 21 Sep, 2014 1 commit


Raymond Toy authored
%log10. This better than using the definition (/ (log x) (log base)). This also allows exact answer for 2^n and 10^n for appropriate n. * src/compiler/floattran.lisp: * Add deftransforms to convert (log x 2) and (log x 10) to kernel::log2 and kernel:%log10 * tests/floattran.lisp: * Add tests to check the transforms are done, or not done, as appropriate.

 20 Sep, 2014 1 commit


Raymond Toy authored
Type derivation of the sign of (DECODEFLOAT X) returned the incorrect value when x was declared to be of type (DOUBLEFLOAT (0d0)). * src/compiler/floattran.lisp * Fix type derivation * tests/floattran.lisp * New file for tests of DECODEFLOATSIGNDERIVETYPEAUX. * tests/float.lisp * New file to test that decodefloat is compiled correctly.

 27 Aug, 2014 1 commit


Raymond Toy authored
This handles overflows better and (c::twoprod 1.7976931214684583d308 (1+ (scalefloat 1d0 28))) doesn't signal an overflow like the old algorithm.

 26 Jul, 2014 3 commits


Raymond Toy authored
* code/exports.lisp: * Export %ieee754rempi/2 and %sincos. * code/irrat.lisp: * Remove some conditionalization that is always true now. * compiler/floattran.lisp: * %sincos is exported so we don't need the package qualifier.

Raymond Toy authored
converted cis to (complex (cos x) (sin x)). Besides, that was blocking the other deftransform for cis that replaced cis with a call to %sincos.

Raymond Toy authored

 24 Jul, 2014 1 commit


Raymond Toy authored
to C.

 08 Mar, 2014 1 commit


Raymond Toy authored
It's incorrect. We really want log(0) to be inf + i*pi. It's needed to get the correct values on the branch cuts of the special functions from the definitions. Update trac test to test for this.

 09 Feb, 2014 1 commit


Raymond Toy authored
Type derivation for log fixed to be consistent with the actual returned values. * src/compiler/floattran.lisp: * Update {{{LOGDERIVETYPEAUX1}}} to compute the correct type. * tests/trac.lisp: * Add test for trac ticket:92

 03 Jan, 2014 1 commit


Raymond Toy authored

 21 Dec, 2013 1 commit


Raymond Toy authored
separately.

 15 Dec, 2013 1 commit


Raymond Toy authored
used for all platforms. code/irrat.lisp:: * Implement %SINCOS compiler/floattran.lisp:: * Update deftransforms for CIS. %SINCOS can be used on any platform. tests/trig.lisp: * Add tests to verify %sincos returns exactly the same values as for sin and cos.

 11 Dec, 2013 1 commit


Raymond Toy authored
Update users accordingly.

 08 Dec, 2013 2 commits


Raymond Toy authored
accurate pireduction so we don't have do it ourselves.

Raymond Toy authored

 07 Dec, 2013 1 commit


Raymond Toy authored
src/compiler/floattran.lisp o Add defoptimizer for DECODEFLOAT. src/generalinfo/release20f.txt: o Update notes.

 27 Oct, 2013 1 commit


Raymond Toy authored
0.

 22 Oct, 2013 1 commit


Raymond Toy authored
doublefloatbits for x86/sse2. This gives x86 the same microoptimizations that were available for sparc and ppc. o code/kernel.lisp: o Enable fast doublefloatbits using the vop instead of calling doublefloathighbits/doublefloatlowbits. o compiler/floattran.lisp: o Make fastunaryftruncate known to compiler and enable optimizer for it. o Make doublefloatbits known to compiler o compiler/x86/floatsse2.lisp: o Implement fastunaryftruncate for singles and doubles. o Implement doublefloatbits.

 22 Feb, 2013 1 commit


Raymond Toy authored
srctran.lisp:: * The optional converttype arg is always true, so remove it and update the local functions to convert always. * Clean up some comments as well. floattran.lisp:: * Fix up one place where we were supplying a value for the optional converttype arg.

 23 Dec, 2012 1 commit


Raymond Toy authored

 19 Aug, 2012 1 commit


Raymond Toy authored
o Convert x/n to x*(1/n) when n is a power of two since 1/n has an exact representation. o Convert 2*x to x+x.

 04 Nov, 2011 1 commit


Raymond Toy authored

 25 Sep, 2011 1 commit


Raymond Toy authored
entries with just the file path, removing the revision number, date, author and state. The actual information is now computed during compilation and stored in the fasl itself. (See ticket:48.)

 18 Aug, 2010 2 commits
 17 Aug, 2010 1 commit


rtoy authored
case of a negative real to an integer power. Previously, this case wasn't handled.

 20 Apr, 2010 1 commit


rtoy authored
may get confused with source locations if the reader macros are installed.
