bug-gsl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-gsl] diff.c (numerical differentiation)


From: spasmous
Subject: Re: [Bug-gsl] diff.c (numerical differentiation)
Date: Thu, 10 Apr 2008 13:22:16 -0700

Hi Brian,

Sorry that may also be foiled if the CPU has high precision registers.
I think it's necessary to add a volatile variable to force the compiler to
use the same precision throughout.


  volatile double y;
  ...
  h = sqrt (GSL_SQRT_DBL_EPSILON / (2.0 * a2));
  ...
  // ensure difference between (x+h) and h are representable in double
  y = x+h;
  h = y-x;

  *result = (GSL_FN_EVAL (f, x + h) - GSL_FN_EVAL (f, x)) / h;


Thanks!



On Tue, Apr 8, 2008 at 1:55 PM, Brian Gough <address@hidden>
wrote:

> At Sun, 6 Apr 2008 13:29:41 -0700,
> spasmous wrote:
> >   h = sqrt (GSL_SQRT_DBL_EPSILON / (2.0 * a2));
> >   ...
> >   h = (x+h)-x; // ensure difference between (x+h) and x is exactly h
> >   *result = (GSL_FN_EVAL (f, x + h) - GSL_FN_EVAL (f, x)) / h;
>
> Thanks for the suggestion.
>
> --
> Brian Gough
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]