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 now NET.COMMON-LISP.OCT, with a nickname of OCT.
    • QD is no longer a nickname for OCT.
    • QUAD-DOUBLE-INTERNAL has been renamed to OCT-INTERNAL, with a nickname of OCTI. The old nickname QDI has been removed
    • Oct has a more accurate argument reduction for the trig functions. This allows Oct to compute cos(2120) correctly (which is about -0.925879).
  • 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

For a complete list of local wiki pages, see TitleIndex.