Search code examples
floating-pointprecisionnumerical-methodsfloating-accuracy

Exact Runge-Kutta coefficients


When using numerical methods (e.g. Runge-Kutta), the finite precision of floats on the computer can influence the solution (Brouwer's Law).

In this paper it suggests as a remedy simulating exact Runge-Kutta coefficients as e.g. A = B + C where B is an exact machine number, and C some small correction

Can someone explain how this works in practice? E.g. if A = 3/10, then how would one determine B and C?

Thanks for any help.


Solution

  • In the paper they suggest using a rational approximation for A with denominator 1024. (This means that A has at most 10 significant non-zero bits). You have (3/10)*1024 = 307.2, so B will be

    B=307/1024 = 0.2998046875 and C = A - B = 0.0001953125

    C is not exactly representable as IEEE Binary64, the nearest floating point number will be

    C = 1.9531249999998889776975374843...E-4.

    Insert these values in the formulas (3.1f)