# a floating point math library for 64 bit PicoLisp

```Hello everyone.

I recently discovered PicoLisp, and like a few other newcomers, I was initially
disappointed to find that there was no support for floating point arithmetic.
After reading the excellent documentation, I came to understand why that is so
and also why fixed point arithmetic provides a fully acceptable alternative.```
```
As I found out more and more about PicoLisp and what it can do, I was
constantly amazed at its versatility and usability. When I found out about the
PicoLisp capability to interface with C through the "native" and "gcc"
functions, I decided to write a library to implement floating point arithmetic
for PicoLisp "just because".

Although this was my first interaction with PicoLisp (or any other Lisp, for
that matter), I found the process remarkably easy. The result of my project is
the picolisp-fp library for 64 bit PicoLisp, available at
https://github.com/gleetbone/picolisp-fp.

In the IEEE-754 floating point standard as implemented in C and other
languages, floating point values are represented as 32 or 64 bit words. Certain
bit fields in these words are interpreted as the sign, the exponent, and the
mantissa. However, in computer memory, each floating point value is simply a 32
or 64 bit machine word. The picolisp-fp library uses PicoLisp integers to hold
floating point words, and passes them to external C functions to be
"interpreted" and acted upon as floating point values. Floating point results
are passed back to PicoLisp "re-interpreted" as integers. No change to PicoLisp
is required - the picolisp-fp functions, through calls to the "gcc" or "native"
function, take integers as arguments and return integers. The library provides
basic math for single and double precision floating point values as well as all
of the trigonometric and transcendental functions from the C <math.h> header
file, along with functions that translate between single precision values,
double precision values, fixed point values, and their string representations.

The library is provided in two forms - an inline version that uses the "gcc"
function, and a separately compiled version that consists of both an external
shared library (compiled from a C file) and a PicoLisp file that uses the
"native" function to access the dynamic library. The GitHub repository also
contains examples and unit tests. Although I have only run the library on
x86_64 Linux, I see no reason why it shouldn't also work with other 64 bit CPUs
and operating systems.

Of course, this library is the solution to a nonexistent problem, but I think
it is possible that someone might find it useful in some special cases. And at
least it provides the means to shut up newbies like me who demand floating
point support!

Thanks,

Greg Lee

--
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
```
• a floating point math library for 64 bit PicoLisp Greg Lee