Boost logo

Boost :

Subject: Re: [boost] Interest for a Fixed Point Arithmetics library
From: Paul A. Bristow (pbristow_at_[hidden])
Date: 2018-01-01 12:27:39


> -----Original Message-----
> From: Boost [mailto:boost-bounces_at_[hidden]] On Behalf Of Andrey Semashev via Boost
> Sent: 31 December 2017 16:14
> To: boost_at_[hidden]
> 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"
> <boost_at_[hidden]> wrote:
>
> >
> >
> >> -----Original Message-----
> >> From: Boost [mailto:boost-bounces_at_[hidden]] On Behalf Of Julien
> >> Vernay via Boost
> >> Sent: 30 December 2017 18:30
> >> To: boost_at_[hidden]
> >> 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<typename T, size_t N>
> >> 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<T,N>) == 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

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