Interval Arithmetic
anonymous via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Sep 29 14:37:41 PDT 2015
On Tuesday, 29 September 2015 at 21:04:06 UTC, Wulfrick wrote:
> Is there an interval arithmetic library in D? I couldn’t find
> one.
None I am aware of.
>
> In case I had to write my own, I understand that the IEEE
> standard floating point arithmetic provides operations for
> rounding up or down certain operations like summing,
> subtracting, etc. (thus overriding the default behavior of
> rounding to nearest representable).
>
> How do I access this functionality in D? At first I thought
> that std.math.nextDown and nextUp is what I needed, but not so.
> Apparently these functions return the previous or next
> representable *after* the calculation has been done.
>
> For example, I would like the value of x+y rounded in the
> arithmetic towards -\infty, which may or may not be
> nextDown(x+y).
>
> Any luck?
> Thanks for reading!
fencv.h [1] + a few extern(C) declarations could work - changes
the rounding mode.
Maybe there is an inline ASM solution, too.
I have never tried to use that from D. The FENV_ACCESS pragma
could cause problems - don't know how to pass that info to a D
compiler (never tried to figure it out).
It may be easier to generate an binding for an existing C/C++
lib, e.g. [2] (page is in German, but the downloadable tar.gz
("komprimierte (gzipped) tar-Datei") contains an English readme.
Boost also contains an interval arithmetic lib [3], but the use
of C++ templates will most likely force you to write some glue
code in C++...
[1] http://www.cplusplus.com/reference/cfenv/
[2] http://www.ti3.tuhh.de/keil/profil/ (GPL)
[3]
http://www.boost.org/doc/libs/1_58_0/libs/numeric/interval/doc/interval.htm
More information about the Digitalmars-d-learn
mailing list