Version 1 (modified by rtoy, 3 years ago)


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:


A quad-double type. This has about 65 digits of precision, or about 212 bits.


A complex type consisting of two QD-REAL values.

The reader is also modified to make it easier to enter quad-double values. {#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 "QD")
  QD> (/ (sqrt #q3) 2)
  QD> (sin (/ +pi+ 3))
  QD> (sqrt #q-1)
  #q(#q0.0q0 #q1.0q0)
  QD> (coerce 7 'qd-complex)
  #q(#q7.0q0 #q0.0q0)
  QD> (integer-decode-float +pi+)
  QD> +pi+
  QD> (* 4 (atan #q1))

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