Re: First --with-long-double, then _Decimal64!
- From: Morten Welinder <mortenw gnome org>
- To: Jeffrey Streifling <jss bulk gmail com>
- Cc: gnumeric-list gnome org
- Subject: Re: First --with-long-double, then _Decimal64!
- Date: Thu, 11 Nov 2010 09:40:13 -0500
How many pieces have to be in place to make a --with-Decimal64 option
that works similarly to --with-long-double in configure?
Not many. Search for GNM_WITH_LONG_DOUBLE
and its counterpart over in goffice.
However, ...
1. You are going to need versions of the math functions
in the C library that works with your type. sin, cos, sqrt,
pow, etc.
2. You need compiler support. The compiler must do the
right thing for *, /, +, -, etc. The compiler must have
a way of specifying decimal constants of the relevant
type. Also, the type cannot need a constructor,
a destructor, or special assignment handling.
Morten
John Harrison's paper shows that in many cases, if you have 80 bit
long doubles, you can just cast your _Decimal64 to long double and pass
it to the existing long double libc function to get accurate results, at
least for transcendentals.
I have actually met John a couple of times. Without having
read this particular paper of his, I can tell you that he probably
assumes that the C library's long-double functions are accurate
to begin with. For glibc that just isn't true. Also, my gut feeling
is that going from exact to long-double to Decimal64 will
occasionally give you the wrong last bit. For example, if my
memory serves me right, you need something like 119 bits
of log's result before can guarantee correct rounding to plain
old double. I'm sure John's paper spells this out in all its glory.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]