wiki:UsingOct

Everything in Oct resides in the NET.COMMON-LISP.OCT package, with a nickname of OCT. The basic arithmetic operations of CL are shadowed in this package so you can use natural Lisp expressions to operate on quad-doubles. Special functions are included.

There are two types added:

QD-REAL
A quad-double type. This has about 65 digits of precision, or about 212 bits.
QD-COMPLEX
A complex type consisting of two QD-REAL values.

The reader is also modified to make it easier to enter quad-double values. To enable the reader, bind *readtable* to oct::*oct-readtable*. #q is used to enter both QD-REAL and QD-COMPLEX types. For example #q1.25q5 is the QD-REAL with the value 125000. The exponent marker is q. To enter a QD-COMPLEX value, use #q(r i) where r and i are the real and imaginary parts. The parts will be coerced to QD-REAL type if necessary.

Here are a few examples of using OCT:

  CL-USER (in-package "OCT")
  OCT> (/ (sqrt #q3) 2)
  #q0.866025403784438646763723170752936183471402626905190314027903489696q0
  OCT> (sin (/ +pi+ 3))
  #q0.86602540378443864676372317075293618347140262690519031402790348972q0
  OCT> (sqrt #q-1)
  #q(#q0.0q0 #q1.0q0)
  OCT> (coerce 7 'qd-complex)
  #q(#q7.0q0 #q0.0q0)
  OCT> (integer-decode-float +pi+)
  165424160919322423196824703508232170249081435635340508251270944637
  -215
  1
  OCT> +pi+
  #q3.1415926535897932384626433832795028841971693993751058209749445923q0
  OCT> (* 4 (atan #q1))
  #q3.1415926535897932384626433832795028841971693993751058209749445923q0

Note that +pi+ is the QD-REAL value for pi.

Last modified 12 months ago Last modified on 11/24/13 18:49:03