Welcome to Oct, a portable implementation of quad-double numbers
Introduction
Oct is a portable Lisp implementation of quad-double arithmetic. This gives about 65 digits of precision. Quad-double arithmetic uses four double-float numbers to represent an extended precision number.
The implementation is modeled on the quad-double package by Yozo Hida. That package is in C++, but we have translated parts of it and extended it to use Lisp. The intent is to provide all of the CL arithmetic functions with a quad-double implementation.
News
Here is brief summary of some recent changeds. Check the wiki timeline for more detailed information of changes.
- 2011-03
- Documentation for functions added.
- Bug fixes for elliptic functions.
- Added implementation of theta functions.
- 2011-02-09
- For Lisp's that support signed zeros for floating point (like cmucl and sbcl), Oct now correctly handles signed quad-double zeroes.
- The CVS repository has been moved to Git. The CVS repository is still available but will not be updated. Use Git to obtain the latest versions. (See Oct gitweb for more links.)
- 2007-11-28
- Oct now passes all of the tests on Allegro/x86. The main change was not to compile with safety 0. This messes up Allegro's tracking of the precision.
- To help implementations (like Allegro or Clisp) that use arrays for storing %quad-double numbers, many functions now support an optional third arg which is where the result should be written. This is like how bit-and works. This should work correctly with both an array or (complex double-double-float) implementation, but perhaps some care is needed to make sure it works for both.
- CMUCL can use either an array or a (complex double-double-float) to store a %quad-double. However, simple timing measurements indicate that arrays are slightly slower to much slower than using (complex double-double-float).
- 2007-10-26
- A Pade approximation for exp has been added. This is currently not used, but tests show that it is 25% faster than the current method, but it loses about 3 bits of precision. This was contributed by Richard Fateman.
- 2007-10-15
- The
OCT
package has been renamed. The package is nowNET.COMMON-LISP.OCT
, with a nickname ofOCT
. QD
is no longer a nickname forOCT
.QUAD-DOUBLE-INTERNAL
has been renamed toOCT-INTERNAL
, with a nickname ofOCTI
. The old nicknameQDI
has been removed- Oct has a more accurate argument reduction for the trig
functions. This allows Oct to compute
cos(2
120
)
correctly (which is about -0.925879).
- The
- 2007-10-10
- Oct now has print/read consistency, thanks to Richard Fateman, who provided a very nice method to convert bignums to quad-double.
Supported Lisps
This package has been tested with CMUCL, SBCL, Clisp, Clozure CL and Allegro. (Allegro has not been tested recently, though). The status of these Lisps is given in the table below:
Lisp | Status |
CMUCL | All tests pass |
SBCL | All tests pass |
CCL | All tests pass except for two, which are probably bugs in CCL |
Clisp | All tests pass, but clisp doesn't support signed floating-point zeros |
Ecl | Not working |
Allegro | Working, but not recently tested |
Note that development is primarily done using CMUCL.
Getting Oct
Currently the only way to obtain the software is via git. You can browse the source using the Browse Source link above, or you can use the gitweb interface to browse the sources.
To obtain the sources, you will have to clone the repository at
git://common-lisp.net/projects/oct/oct.git
or
http://common-lisp.net/r/projects/oct/oct.git.
Mailing Lists
There are several mailing lists for Oct:
- Oct-devel for developers
- Oct-cvs for commit logs. Despite the name, this also contains the commits from git.
- Oct-announce for announcements. This is a very low volume list.
- Oct-ticket for changes to the Trac ticket system for Oct.
Additional Information
For additional information see:
Other information can be found on the Oct project page.
Please read the TracGuide to help you get started with your project.
Also see http://common-lisp.net/trac-intro.shtml for some information about how Trac is configured and for hints which you may be interested in.
Enjoy!
The common-lisp.net maintainers
Starting Points
- TracGuide -- Built-in Documentation
- The Trac project -- Trac Open Source Project
- Trac FAQ -- Frequently Asked Questions
- TracSupport -- Trac Support
For a complete list of local wiki pages, see TitleIndex.