I like it! Back when we needed float, we just used C, but your way is nicer 😀
> 25 jan. 2016 kl. 06:12 skrev Alexander Williams <[email protected]>: > > Hi Greg, > > This is quite impressive, particularly for a first time Lisper. Great job! > > I haven't tested it, but the code looks good. Thanks for the contribution. > > > AW > https://aw.github.io/picolisp > > > >> On Sun, Jan 24, 2016 at 8:33 AM, Greg Lee <[email protected]> wrote: >> 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:[email protected]?subjectUnsubscribe >
