Raymond Toy [Fri, 11 Mar 2011 21:53:49 +0000]
Add kwexpand and kwunexpand scripts.
Raymond Toy [Fri, 11 Mar 2011 21:53:34 +0000]
Add kwexpand and kwunexpand scripts.
Raymond Toy [Fri, 11 Mar 2011 19:58:56 +0000]
Add some blank lines to change file.
Raymond Toy [Fri, 11 Mar 2011 19:56:22 +0000]
Test cvs keyword expansion
.gitattributes:
o Add filter for cvskeywords
qd-rep.lisp:
qd.lisp:
o Add $Id$ to test expansion
Raymond Toy [Fri, 11 Mar 2011 16:47:27 +0000]
Add ident attribute for all Lisp files.
Raymond Toy [Fri, 11 Mar 2011 16:42:04 +0000]
Add Id for testing gitattribute ident.
Raymond Toy [Fri, 11 Mar 2011 04:30:29 +0000]
Add ident attribute
Raymond Toy [Fri, 11 Mar 2011 04:29:22 +0000]
Add *oct-version*.
Raymond Toy [Fri, 11 Mar 2011 04:23:50 +0000]
Export Jacobi functions and elliptic integrals.
Raymond Toy [Fri, 11 Mar 2011 04:05:08 +0000]
Test carlson-rf and carlson-rd.
Raymond Toy [Fri, 11 Mar 2011 04:04:28 +0000]
Add elliptic integrals of the second kind.
Raymond Toy [Fri, 11 Mar 2011 03:23:50 +0000]
Implement elliptic integrals of the first kind.
o Add FLOAT-CONTAGION to determine the max precision of the given
arguments so we can do appopriate contagion in the routines.
o Add some docstrings and other documentation of the algorithms.
o Add implmentation of ELLIPTIC-K and ELLIPTIC-F for the complete and
incomplete elliptic integrals of the first kind, respectively.
Raymond Toy [Fri, 11 Mar 2011 03:21:26 +0000]
Add documentation for EPSILON and add FLOAT-PI.
FLOAT-PI returns a value of pi that matches the precision of the
argument.
Raymond Toy [Fri, 11 Mar 2011 03:20:27 +0000]
Move inline function NEG-QD-T before first use.
Raymond Toy [Tue, 8 Mar 2011 14:02:42 +0000]
Oops. Remove the #q reader functions from here.
They've been moved to qd-reader.lisp.
Raymond Toy [Tue, 8 Mar 2011 14:01:06 +0000]
Move #Q reader functions to new file qd-reader.lisp.
qd-reader.lisp:
o New file containing #Q reader functions.
o Create a new readtable containing our reader functions so we don't
destructively modify the default *readtable*.
oct.asd:
o Add qd-reader.lisp.
qd-complex.lisp:
qd-elliptic.lisp:
qd-format.lisp:
o Set the *readtable* to *oct-readtable* before compiling these
files.
Raymond Toy [Tue, 8 Mar 2011 13:56:13 +0000]
For clisp, disable floating-point underflow when running tests.
Raymond Toy [Tue, 8 Mar 2011 00:36:35 +0000]
Add elliptic K function and tests for it and Jacobi functions.
qd-elliptic.lisp:
o Add support for the complete elliptic integral K using Carlson's Rf
function.
rt-tests.lisp:
o Fix indentation for oct.atan.5
o Add tests for elliptic K
o Add tests for Jacobi sn, cn, and dn functions.
Raymond Toy [Tue, 8 Mar 2011 00:33:34 +0000]
Fix bug in qd-scale-float.
MAKE-QD-D returns a %quad-double, not qd-real. Use +QD-REAL-ONE+
instead.
Raymond Toy [Mon, 7 Mar 2011 22:55:50 +0000]
Oops. Use jacobi-dn, not dn.
Raymond Toy [Mon, 7 Mar 2011 20:48:05 +0000]
Clean up printing and fix printing bug in non-cmucl.
Clisp was printing #q(1 2) as #q(#q#q1 #q#q2). This is caused by
PRINT-OBJECT for QD-COMPLEX printing a #q in addition to a #q printed
by QD-FORMAT.
qd-class.lisp:
o Use the same PRINT-OBJECT method for qd-real for all Lisps.
o Remove extraneous #q from PRINT-OBJECT method for qd-complex.
qd-io.lisp:
o QD-FORMAT for cmucl needs to output #q.
Raymond Toy [Mon, 7 Mar 2011 19:59:00 +0000]
Support testing with Lisps without signed floating-point zeros.
CHECK-SIGN just returns T if Lisp thinks -0d0 and 0d0 are the same
number. This is only true if Lisp doesn't support signed zeroes.
Raymond Toy [Mon, 7 Mar 2011 19:50:44 +0000]
Fix issue with float-sign calling qfloat-sign.
If the optional arg to FLOAT-SIGN is not given, don't call qfloat-sign
with a second arg of NIL. This breaks things. Call qfloat-sign with
the same number of arguments as float-sign.
Raymond Toy [Mon, 7 Mar 2011 19:47:00 +0000]
Ignore *.fas files.
Raymond Toy [Mon, 7 Mar 2011 03:38:09 +0000]
Document algorithms better.
Raymond Toy [Mon, 7 Mar 2011 02:47:26 +0000]
Oops. Can't use #q yet,so change #q1 to (make-qd-d 1d0).
Raymond Toy [Mon, 7 Mar 2011 02:30:15 +0000]
Add support for Jacobi elliptic functions
qd-elliptic.lisp:
o Implementation for Jacobi sn, cn, and dn functions.
qd-methods.lisp:
o Add EPSILON method to return the floating-point epsilon value for
the given float.
oct.asd:
o Build qd-elliptic.lisp.
Raymond Toy [Mon, 7 Mar 2011 02:27:16 +0000]
Remove extra blank lines. Fix #1.
Raymond Toy [Fri, 4 Mar 2011 21:30:41 +0000]
Note this defsystem is deprecated. Fix #1.
Raymond Toy [Fri, 4 Mar 2011 21:24:11 +0000]
Remove trailing empty lines. Fix #1.
Raymond Toy [Fri, 4 Mar 2011 21:08:27 +0000]
Add newline to end of file. Fix #1.
Raymond Toy [Fri, 4 Mar 2011 21:03:17 +0000]
Add newline to end of file. Fix #1.
Raymond Toy [Sun, 13 Feb 2011 23:41:29 +0000]
Add test-op for oct to run the tests.
Raymond Toy [Sun, 13 Feb 2011 06:33:47 +0000]
The TARGET parameter is not a %QUAD-DOUBLE if we're not using
arrays to represent a %quad-double.
Raymond Toy [Sun, 13 Feb 2011 06:11:21 +0000]
Ignore *~.
Raymond Toy [Sun, 13 Feb 2011 06:10:31 +0000]
Ignore *.err files.
Raymond Toy [Fri, 11 Feb 2011 02:48:25 +0000]
Fix typo and add tests for atanh
o Fix typo in number in for test oct.atan-branch-pos.2
o Add tests for atanh branch cuts.
Raymond Toy [Thu, 10 Feb 2011 15:36:47 +0000]
Ignore more fasl files
Raymond Toy [Thu, 10 Feb 2011 00:37:09 +0000]
Update Copyright dates. No functional changes.
Raymond Toy [Thu, 10 Feb 2011 00:36:54 +0000]
Update Copyright dates. No functional changes.
Raymond Toy [Thu, 10 Feb 2011 00:30:30 +0000]
Update Copyright dates. No functional changes.
Raymond Toy [Wed, 9 Feb 2011 19:36:15 +0000]
Move the configuration stuff out of the system definition files and
place them in qd-package.lisp.
Raymond Toy [Wed, 9 Feb 2011 19:29:05 +0000]
Add additional tests. These are taken from branch-test.lisp.
Raymond Toy [Wed, 9 Feb 2011 19:28:00 +0000]
Change MAKE-FLOAT to multiply by the sign AFTER we've created the
quad-double. This way we create signed quad-double zeroes correctly.
Previously, the sign was applied to the rational which loses the sign
if the rational is 0.
Raymond Toy [Tue, 15 Jun 2010 18:27:37 +0000]
Ignore more fasls.
Raymond Toy [Tue, 15 Jun 2010 18:26:39 +0000]
Add in-package.
Raymond Toy [Tue, 15 Jun 2010 17:38:21 +0000]
o Use arrays if we're not running with cmucl.
Raymond Toy [Sun, 5 Oct 2008 15:28:02 +0000]
Turn off compiler macros converting two-arg functions into CL
functions or QD-REAL functions. They don't handle all the cases. If
we're going to make this CMUCL-specific, deftransforms would be much
easier and much better.
Raymond Toy [Thu, 31 Jul 2008 19:13:42 +0000]
For CMUCL, define compiler macros to convert two-arg-foo into the
appropriate CL function or QD-REAL function so we don't have to do
CLOS dispatch, if the types are known at compile-time.
Raymond Toy [Fri, 18 Jul 2008 17:01:51 +0000]
Add or cleanup some docstrings.
Raymond Toy [Thu, 17 Jul 2008 17:26:43 +0000]
Add or cleanup more docstrings.
Raymond Toy [Thu, 17 Jul 2008 17:26:21 +0000]
Fix minor typo.
Raymond Toy [Wed, 16 Jul 2008 21:02:07 +0000]
Add or cleanup some docstrings.
Raymond Toy [Mon, 11 Feb 2008 17:04:13 +0000]
o For CMU, ignore target only if we're not using oct-arrays.
o Add implementation for SUB-QD-T.
Raymond Toy [Wed, 28 Nov 2007 21:41:27 +0000]
Make default for CMUCL not to use arrays. Some quick tests show that
currently arrays are slower or much slower than complex
double-doubles.
Raymond Toy [Wed, 28 Nov 2007 20:00:28 +0000]
Adjust code so that CMUCL can use arrays to store quad-doubles instead
of using a (complex double-double-float).
With these changes, CMUCL uses arrays and (rt:do-tests) passes
successfully.
oct.system:
o Push :oct-array onto *FEATURES* to use arrays. This is the default
if not building on CMUCL.
qd-fun.lisp:
o Fix two erroneous uses of zerop on a quad-double in sinh-qd and
tanh-qd.
o Fix two erroneous uses of + on %quad-double; they should have used
ADD-QD instead.
qd-rep.lisp:
o Change conditionalization to allow arrays for CMUCL.
o Update compiler macros appropriately.
qd.lisp:
o Adjust optional target arg appropriately for oct-array feature.
o Clean up IGNORE declarations.
o Add some more declarations for the target to make CMUCL happier.
Raymond Toy [Fri, 23 Nov 2007 03:42:24 +0000]
Don't put initializers for the optional arg in the
define-compiler-macro. This causes the same initializer object to be
used everywhere. Instead, if no optional arg is given, call the
initializer in the expansion.
This fixes some issues with Allegro, and probably all other Lisps that
use don't have complex double-double-float objects.
Raymond Toy [Fri, 16 Nov 2007 19:44:06 +0000]
Don't compile with safety 0 on Allegro. I think this causes problems
on x86 because it doesn't quite keep the precision right.
Raymond Toy [Sat, 10 Nov 2007 21:29:54 +0000]
Add ADD-QD-D-t, MUL-QD-D-T, and SQR-QD-T to declaim block.
Raymond Toy [Wed, 7 Nov 2007 21:38:10 +0000]
Merge the changes from the THREE-ARG-BRANCH to HEAD.
Raymond Toy [Fri, 26 Oct 2007 15:48:15 +0000]
Add Pade approximation for exp. From Richard Fateman.
Experiments show that it is 25% faster than exp-qd/reduce. However,
it loses 3 bits of accuracy compared with exp-qd/reduce.
Raymond Toy [Thu, 18 Oct 2007 14:38:56 +0000]
Compare against pi/4 quad-double, not double-float.
Raymond Toy [Thu, 18 Oct 2007 14:38:11 +0000]
MAKE-QD-DD is only defined for CMUCL, so don't unconditionally inline
it.
Raymond Toy [Wed, 17 Oct 2007 03:44:12 +0000]
Add another implementation of REM-PI/2-INT. This extracts just the
part of 2/pi that is needed to compute the desired result instead of
multiplying by all l584 bits of 2/pi.
Not yet used.
Raymond Toy [Tue, 16 Oct 2007 17:09:46 +0000]
qd-fun.lisp:
o Remove extra rem-pi/2-int.
qd-rep.lisp:
o Fix typo in float-infinity-p for Allegro.
o Ignore var in float-infinity-p and friends.
Raymond Toy [Tue, 16 Oct 2007 17:05:13 +0000]
o Add default implementation of float-infinity-p, float-nan-p,
float-trapping-nan-p. These return NIL by default, unless the Lisp
implementation has a suitable version.
o Remove CMU conditionalization for float-infinity-p, float-nan-p,
float-trapping-nan-p.
Raymond Toy [Tue, 16 Oct 2007 14:21:13 +0000]
Remove duplicate TIME-MUL.
Raymond Toy [Tue, 16 Oct 2007 13:46:01 +0000]
Oops. QDI package no longer exists. Use OCTI.
Raymond Toy [Tue, 16 Oct 2007 13:44:00 +0000]
Oops. %MAKE-QD-D is a macro and not a function for some Lisps, so we
can't multiple-value-call it. Rearrange code accordingly.
Raymond Toy [Tue, 16 Oct 2007 13:42:49 +0000]
Remove CMUCL'isms.
Raymond Toy [Tue, 16 Oct 2007 02:39:21 +0000]
qd-package.lisp:
o Don't :USE CMUCL's EXTENSIONS package anymore. Import just the
symbols we need.
qd-class.lisp:
o No need to use package qualifiers.
qd-fun.lisp:
o Need package qualifier for MAYBE-INLINE.
qd.lisp:
o Need package qualifier for *INLINE-EXPANSION-LIMIT*
.
Raymond Toy [Mon, 15 Oct 2007 18:54:02 +0000]
o Oops. Fix up a few IN-PACKAGE's for the new package names.
Raymond Toy [Mon, 15 Oct 2007 18:53:43 +0000]
o Oops. Fix up a few IN-PACKAGE's for the new package names.
qd-fun.lisp:
o Comment out the old sin/cos routines
o Fix a few mistakes in accurate-sincos-qd
o Rename accurate-sincos-qd to sincos-qd.
Raymond Toy [Mon, 15 Oct 2007 18:21:46 +0000]
o Rename QUAD-DOUBLE-INTERNAL package to OCT-INTERNAL, with nickname
OCTI instead of QDI.
o Rename OCT package to NET.COMMON-LISP.OCT, with a nickname of OCT
o Remove nickname of QD. (Conflicts with other packages dealing with
quad-doubles.)
o Update all uses of QDI: to OCTI:
qd-fun.lisp:
o Add REM-PI/2 to do a simpler computation if the arg is small
enough. Otherwise, use the accurate but expensive rem operation.
o Renamed ACCURATE-SIN-QD to SIN-QD, etc.
o Update SIN-QD etc to use REM-PI/2.
Raymond Toy [Mon, 15 Oct 2007 15:45:33 +0000]
qd.lisp:
o Oops. In INTEGER-DECODE-QD, the signs of the parts were not
computed correctly when combining them into the final integer
result.
rt-tests.lisp:
o Add a test for INTEGER-DECODE-QD.
o Use OCT as the package, not QD.
Raymond Toy [Mon, 15 Oct 2007 03:26:38 +0000]
o Fix some typos accurate-sin-qd and accurate-cos-qd.
o Adjust code in accurate-sin-qd and accurate-cos-qd to handle values
of 0 <= j <= 3, instead of -1 <= j <= 2.
o Add accurate-sincos-qd.
Raymond Toy [Sun, 14 Oct 2007 18:38:14 +0000]
Add +2/pi-bits+, 1584 bits of 2/pi.
Raymond Toy [Sat, 13 Oct 2007 20:14:45 +0000]
o New routine to compute x mod pi/2 accurately, using many bits of
2/pi.
o Implement accurate sin and cos routines to use this new routine.
(Not used yet.)
Raymond Toy [Sat, 13 Oct 2007 15:34:51 +0000]
Redo implementation of INTEGER-DECODE-QD. It used to return way too
many digits if one of the components was 0. This causes problems
because the resulting integer can't even be coerced back to a
quad-double.
Raymond Toy [Sat, 13 Oct 2007 02:14:43 +0000]
Use package #:oct, not #:qd.
Raymond Toy [Thu, 11 Oct 2007 18:59:05 +0000]
Correct the timing info. I accidentally ran the C++ version on a
different (slower) machine. The results make some sense now.
Raymond Toy [Thu, 11 Oct 2007 17:47:08 +0000]
qd-const.lisp:
o Add code for clisp to create the constants we need. (Clisp has
arbitrary length long-float numbers.)
o Update the constants accordingly.
o Move the atan table stuff for CORDIC to qd-extra.lisp, since we
don't need them in oct itself.
qd-extra.lisp:
o atan table stuff for CORDIC moved here.
Raymond Toy [Thu, 11 Oct 2007 16:29:08 +0000]
Initial version.
Raymond Toy [Wed, 10 Oct 2007 15:25:41 +0000]
Ignore *.lib and *.fas too. (Files from clisp)
Raymond Toy [Wed, 10 Oct 2007 15:24:07 +0000]
qd-io.lisp:
o Add RATIONAL-TO-QD, a simple, fast and accurate method to convert
rationals to quad-doubles. (From Richard Fateman.)
o Use RATIONAL-TO-QD to create a quad-float
qd-methods.lisp:
o Use RATIONAL-TO-QD to create a quad-float from a bignum and ratio.
qd-package.lisp:
o Export RATIONAL-TO-QD
Raymond Toy [Wed, 10 Oct 2007 15:21:47 +0000]
o Move logb-finite before first use.
o Declare arg as double-float, not float.
Raymond Toy [Mon, 24 Sep 2007 21:32:15 +0000]
A new version of MAKE-FLOAT that converts the number to rational
before converting to a quad-double. This reduces round-off errors.
This still needs work, I think.
Raymond Toy [Mon, 24 Sep 2007 21:30:07 +0000]
Minor optimization converting a rational to a qd-real. If the
denominator is 1, skip the qd-real division.
Raymond Toy [Mon, 24 Sep 2007 02:37:31 +0000]
Use more bits (265 instead of 212) when converting a rational to a
quad-double. This fixes the issue that converting 10^100 to a
quad-double isn't as accurate as it could be.
Raymond Toy [Thu, 20 Sep 2007 21:04:05 +0000]
Add RATIONALIZE methods. Algorithm graciously provided by Bruno
Haible.
qd-package.lisp:
o Shadow RATIONALIZE
qd-methods.lisp:
o Add RATIONALIZE methods for CL:REAL's and QD-REAL's..
Raymond Toy [Wed, 19 Sep 2007 17:30:04 +0000]
MAKE-QD should handle rationals better instead of converting them to
doubles and then converting the qd-real. Convert the numerator and
denominator to qd-real, and the divide. (This should be done better.)
qd-class.lisp:
o Change method to work on floats, instead of reals.
qd-methods.lisp:
o Add method to handle rationals.
Raymond Toy [Tue, 18 Sep 2007 12:46:36 +0000]
Add method RATIONAL to convert a quad-double to a rational.
qd-package.lisp:
o Appropriately shadow and export RATIONAL.
o Need to export WITH-QD-PARTS from QDI.
qd-methods.lisp:
o Define methods for RATIONAL for reals and qd-reals.
qd-complex.lisp:
o Use CL:RATIONAL as appropriate for the CL rational type.
Raymond Toy [Tue, 18 Sep 2007 11:20:16 +0000]
qd-rep.lisp:
o Add macro WITH-QD-PARTS to extract the components of a quad-double.
qd.lisp:
o Use the macro as needed.
Raymond Toy [Tue, 18 Sep 2007 03:05:56 +0000]
qd-test.lisp:
o Add optional arg to enable/disable printing of results. Default is
on.
rt-tests.lisp:
o Don't print results.
Raymond Toy [Mon, 17 Sep 2007 19:04:23 +0000]
New SCALE-FLOAT-QD implementation that shouldn't suffer from premature
overflow/underflow. (Still issue if the exponent is very large or
very small, though, but not if the exponent is < 2000 or so.)
Raymond Toy [Mon, 17 Sep 2007 17:15:04 +0000]
o Convert THREE-SUM2 to a macro instead of a function (to speed things
up for Allegro and other Lisps that don't inline).
o Update code for the THREE-SUM2 macro.
Raymond Toy [Mon, 17 Sep 2007 14:06:20 +0000]
o Fix typo in ADD-QD-DD that was introduced in the THREE-SUM macro
conversion.
o Slightly simplify ADD-QD-DD too.
Raymond Toy [Mon, 17 Sep 2007 03:08:25 +0000]
o Replace THREE-SUM with a macro to make sure it's inlined
everywhere.
o Update code for new THREE-SUM macro.
Raymond Toy [Mon, 17 Sep 2007 03:07:27 +0000]
Make %MAKE-QD-D a macro to make sure it's inlined.
Raymond Toy [Sun, 16 Sep 2007 14:23:24 +0000]
o Remove old code.
o Inline float-infinity-p.