Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
Change uses of _"foo" to (intl:gettext "foo"). This is because slime may get confused with source locations if the reader macros are installed.
Merge intl-branch 2010-03-18 to HEAD. To build, you need to use boot-2010-02-1 as the bootstrap file. You should probably also use the new -P option for build.sh to generate and update the po files while building.
Restart internalization work. This new branch starts with code from the intl-branch on date 2010-02-12 18:00:00+0500. This version works and LANG=en@piglatin bin/lisp works (once the piglatin translation is added).
Mark translatable strings; update cmucl.pot and ko/cmucl.po accordingly.
Add (intl:textdomain "cmucl") to the files to set the textdomain.
Merge from unicode-utf16 branch, label unicode-utf16-char-support-2009-03-25 to get character support.
Merge from HEAD, tag label-2009-03-25. Still left Config.FreeBSD_gencgc (obsolete), Config.x86_freebsd, FreeBSD-os.c and FreeBSD-os.h for Alex to merge.
code/irrat-dd.lisp: o Declare POLY-EVAL and POLY-EVAL-1 as maybe-inline functions so they can be semi-inlined. code/irrat.lisp: o I don't think there's any real reason to make the local function REAL-EXPT inline. It's very big and local function call is already good enough. compiler/float-tran.lisp: o Change some functions to be maybe-inline instead of inline to save on space for the the larger double-double functions: SUB-DD, SUB-D-DD, SUB-DD-D, SPLIT. Semi-inline should be good enough for these large functions, saving on cache memory, local function calling sequence should be good enough.
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).
Add a few type declarations to get rid of some warnings and notes. Fix one typo too.
code/irrat-dd.lisp: o Fix a warning o Implement x^y for real x < 0 and non-integer y, which returns a complex number. code/irrat.lisp: o Tell EXPT how to handle double-double-float. o Tell Log how to handle double-double-float when two args are given.
Explicitly handle some cases where we divide by zero expecting a signed infinity. Double-double doesn't do that very well.
Oops. Remove debugging prints.
Add implementation of special functions for double-double-float. More testing required, but basic functionality works. code/irrat-dd.lisp: o New file which implements all the required special functions for double-double. Modify existing COMPLEX-<foo> functions to handle double-double numbers. code/irrat.lisp: o Update HANDLE-REALS to handle double-double float case. o Update EXPT for double-double float. (But negative number to non-integer power not working yet.) o LOG handles double-double, but not 2-arg log yet. o SQRT handles double-double, including complex result. o ASIN handles double-double. o ACOS handles double-double. o ATAN handles double-double. o ACOSH handles double-double. o ATANH handles double-double. o Adjust declaration for SQUARE, SCALB, LOGB-FINITE, and LOGB to allow any float type. o COMPLEX-SQRT handles double-doubles. o COMPLEX-LOG handles double-doubles. o COMPLEX-ATANH handles double-doubles. o COMPLEX-TANH handles double-doubles. o COMPLEX-ACOS handles double-doubles. o COMPLEX-ASIN handles double-doubles. o COMPLEX-ASINH handles double-doubles. o COMPLEX-ATAN handles double-doubles. o COMPLEX-TAN handles double-doubles. tools/worldbuild.lisp: o Load irrat-dd. tools/worldcom.lisp: o Compile irrat-dd.
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|