-----Original Message----- From: Boost [mailto:boost-bounces@lists.boost.org] On Behalf Of Andrey Semashev via Boost Sent: 31 December 2017 16:14 To: boost@lists.boost.org Cc: Andrey Semashev Subject: Re: [boost] Interest for a Fixed Point Arithmetics library
On December 31, 2017 6:50:01 PM "Paul A. Bristow via Boost"
wrote: -----Original Message----- From: Boost [mailto:boost-bounces@lists.boost.org] On Behalf Of Julien Vernay via Boost Sent: 30 December 2017 18:30 To: boost@lists.boost.org Cc: Julien Vernay Subject: [boost] Interest for a Fixed Point Arithmetics library
Hello everybody. I am working on a project that needs and can use fixed point numbers, so I started searching for a library implementing fixed point numbers, but I didn't find anything. So I was wondering if people would need fixed point arithmetics, and here I am.
The aim of this FixedPointNumber is to fix the point at compile-time using template, and having another template argument for the underlying type. So we have :
template
class FixedPointNumber { T value; public: //interface }; The N last bits of value is the decimal part : so to convert a FixedPointNumber to an int, we need only to use a bitshift operator (and same for construction from int). sizeof(FixedPointNumber
) == sizeof(T) , so there is no overhead in this implementation. Arithmetic and relational operators will be implemented. Multiplication needs one int multiplication and one bit shift. Division needs one int division and one bit shift. There is only one value for zero. Sign can be extracted with Most Significant Bit. I have already a basic implementation but if it interests more people I will do a proper implementation.
An implementation of fixed-point has been written (and is in real-life use) by Chris Kormanyos
see https://github.com/BoostGSoC15/fixed_point/
this uses a specified (fixed at compile-time) fixed-point format. Big formats are possible and it works seamlessly with many Boost.Math functions, often using constexpr for compile-time computations).
It did not receive much attention when tentatively proposed for Boost.
Is this proposal stalled? I vaguely remember a fixed-point proposal but I don't remember the details.
I'm interested in a fast compile-time configured fixed-point type as I had to write one for one project.
It is working and in 'real-life' use 'in anger', and reasonably documented with examples of usage. But nobody in Boost seemed to be at all interested, so it wasn't proposed formally. Paul --- Paul A. Bristow Prizet Farmhouse Kendal UK LA8 8AB +44 (0) 1539 561830