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 <a...@unscramble.co.jp>:
> 
> 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 <gleetb...@earthlink.net> 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:picolisp@software-lab.de?subjectUnsubscribe
> 

Reply via email to