Boost logo

Boost :

Subject: Re: [boost] [fixed_point] First presentation from GSoC 2015 and more
From: Christopher Kormanyos (e_float_at_[hidden])
Date: 2016-10-15 16:59:09


>> Hello Boost developers,

>> A partial implementation of fixed-point in a Boost-like>> style based on proposal N3352 is now available.
> There has been a great deal of discussion of fixed-point libraries over
> the years on the the boost devel list going back to at least 2007. I
> hope you've taken the time to explore the archives.
> For example: http://lists.boost.org/Archives/boost/2013/02/200690.php

Thank you for pointing that out. Yes, I remember that threadand we were involved in it. It partly helped motivate theGSoC15 project.

Best regards, Chris.

    On Saturday, October 15, 2016 6:13 PM, Michael Marcin <mike.marcin_at_[hidden]> wrote:
 

 On 10/14/2016 12:11 PM, John McFarlane wrote:
>>
>>> I discuss P0106R0 (a revision to N3352) in my paper, the latest draft of
>>> which is always available here: https://github.com/
>>> johnmcfarlane/fixed_point/blob/master/doc/p0037.md#p0106

I once wrote and shipped a fixed-point software renderer. Granted that
was about 9 years ago.

There has been a great deal of discussion of fixed-point libraries over
the years on the the boost devel list going back to at least 2007. I
hope you've taken the time to explore the archives.
For example: http://lists.boost.org/Archives/boost/2013/02/200690.php

I read through P0106R0 but I came away feeling I knew almost nothing
about what the actual implementation would be.

I looked around the code and documentation on github as well. After
about 30 minutes it started to make some sense and looks pretty nice.
I couldn't figure out answers to some basic questions.

How does division work? Does it promote 32 -> 64 before division?
Does mixed fixed arithmetic work? i.e. s16.16 * s24.8?
Is the result of an operation necessarily the same as the operands?
  - For example its sometimes useful to do s16.16 * s16.16 -> s24.8.
How does one convert between different fixed-point representations?
How does one convert raw fixed-point integers <-> fixed-point class?

Note: the doxygen documentation for convert to float operator does not
say it's explicit, that worried me greatly but I saw it is marked as
explicit in the code.

I can't find the numeric_limits specialization.

I can't find the cmath functions.
At least a subset was crucial for my past work:
  * abs
  * fmod
  * floor
  * ceil
  * sqrt
  * cos
  * sin
  * atan2

I never did get a generic trig functions implementation.
IIRC our implementation used lookup tables and CORDIC algorithm for just
a handful of formats.

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

   


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk