Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
|Links to snapshot-2009-01:||(view) (annotate)|
Add (INHIBIT-WARNINGS 3) to various bits of double-double float code. I checked the notes and they all have to do with either boxing or generic operations (usually from FLOOR). This greatly reduces the amount of noise in the compilation logs.
o Inhibit warnings for POLY-EVAL and POLY-EVAL-1. o Add some declarations in various places to get rid of some warnings. o Rearrange DD-%ASIN to get rid of some warnings. o Declare the type of DD-%SIN, DD-%COS, and DD-%TAN because cmucl doesn't compute the correct return type.
Oops. Remove extra paren.
compiler/float-tran.lisp: o Handle signed-zeroes for addition, subtraction, and multiplication of double-double floats. That is, return the correct signed zero for the result. o Try to handle overflow in addition, multiplication, and division by returning infinity, if the overflow or divide-by-zero trap is disabled. This is done by looking to see what the corresponding double-float operation would return. This probably needs more work. code/irrat-dd.lisp: o Remove the careful-mul stuff from dd-complex-atanh since we handle signed zeroes better now during double-double multiplication.
Make DD-%SIN and DD-%TAN return -0w0 when the argument is -0w0.
Revert the previous change to DD-COMPLEX-ATANH. If z < -1, just call DD-COMPLEX-ATANH with -0w0 to get the correct value.
o Remove some unused constants o Fix a typo in a docstring. o Fix DD-COMPLEX-ASIN again: - The previous fix for asin(-2) being wrong actually broke the case for asin(2). Revert that. - The issue was that in our explicitly handling of the atan(y/0) case we didn't take into account the sign y and 0. Fix that.
o Make DD-%ATAN2 handle signed zeroes. This is needed to get branch cuts right for some special functions. o DD-COMPLEX-ATANH needs to be careful about producing signed zeroes in the right spots. Add a CAREFUL-MUL to make sure a zero of the correct sign is produced when needed. (What other places need such care?)
DD-COMPLEX-ATANH was returning the wrong value for real z and z > 1. It was saying atanh(-2) = .549 - i*pi/2. The correct answer is .549 + i*pi/2.
DD-COMPLEX-ASIN was returning the wrong value for real z and z < -1. It was saying asin(-2) = pi/2+i*1.317. The correct answer is -pi/2+i*1.317.
dd-%expm1 was computing the wrong values. Fix it so that it works. Only a few spot checks were done, but it seems to be working fine.
Oops. The argument reduction routine doesn't like negative numbers, so make dd-%sin, dd-%cos, dd-%tan handle that.
Implement accurate arg reduction for the trig functions sin, cos, tan, using __kernel_rem_pio2. Use the accurate reduction in dd-%sin, dd-%cos, dd-%tan. The original version were renamed dd-%%sin, dd-%%cos, dd-%%tan because we still need them to evaluate the functions for small args. This also has the side effect that we don't signal overflow for moderately large args (~1w50) anymore.
Oops. Use 0d0 instead of 0w0 when creating a double-double-float in dd-cssqs.
compiler/float-tran.lisp: o Change the following functions to be maybe-inline instead of inline so we don't inline them by default unless the user says so by specifying (SPACE 0): ADD-DD, MUL-DD-D, MUL-DD, ADD-DD-D, SQR-DD, DIV-DD, DIV-DD-D, SQRT-DD code/irrat-dd.lisp: o Set (SPACE 0) for these functions so we inline the operations. (Should we really inline all of these?)
This large checkin merges the double-double float support to HEAD. The merge is from the tag "double-double-irrat-end". The double-double branch is now obsolete. The code should build without double-double support (tested on sparc) as well as build with double-double support (tested also on sparc).
file irrat-dd.lisp was initially added on branch double-double-array-branch.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|