Average Error: 15.0 → 0.3
Time: 24.9s
Precision: 64
\[\left(\frac{\pi}{2} \cdot \frac{1}{b \cdot b - a \cdot a}\right) \cdot \left(\frac{1}{a} - \frac{1}{b}\right)\]
\[\frac{\mathsf{fma}\left(\frac{\pi}{\left(a + b\right) \cdot 2}, \frac{-1}{b}, \frac{1}{\frac{\left(\left(a + b\right) \cdot 2\right) \cdot a}{\pi}}\right)}{b - a}\]
\left(\frac{\pi}{2} \cdot \frac{1}{b \cdot b - a \cdot a}\right) \cdot \left(\frac{1}{a} - \frac{1}{b}\right)
\frac{\mathsf{fma}\left(\frac{\pi}{\left(a + b\right) \cdot 2}, \frac{-1}{b}, \frac{1}{\frac{\left(\left(a + b\right) \cdot 2\right) \cdot a}{\pi}}\right)}{b - a}
double f(double a, double b) {
        double r1191555 = atan2(1.0, 0.0);
        double r1191556 = 2.0;
        double r1191557 = r1191555 / r1191556;
        double r1191558 = 1.0;
        double r1191559 = b;
        double r1191560 = r1191559 * r1191559;
        double r1191561 = a;
        double r1191562 = r1191561 * r1191561;
        double r1191563 = r1191560 - r1191562;
        double r1191564 = r1191558 / r1191563;
        double r1191565 = r1191557 * r1191564;
        double r1191566 = r1191558 / r1191561;
        double r1191567 = r1191558 / r1191559;
        double r1191568 = r1191566 - r1191567;
        double r1191569 = r1191565 * r1191568;
        return r1191569;
}

double f(double a, double b) {
        double r1191570 = atan2(1.0, 0.0);
        double r1191571 = a;
        double r1191572 = b;
        double r1191573 = r1191571 + r1191572;
        double r1191574 = 2.0;
        double r1191575 = r1191573 * r1191574;
        double r1191576 = r1191570 / r1191575;
        double r1191577 = -1.0;
        double r1191578 = r1191577 / r1191572;
        double r1191579 = 1.0;
        double r1191580 = r1191575 * r1191571;
        double r1191581 = r1191580 / r1191570;
        double r1191582 = r1191579 / r1191581;
        double r1191583 = fma(r1191576, r1191578, r1191582);
        double r1191584 = r1191572 - r1191571;
        double r1191585 = r1191583 / r1191584;
        return r1191585;
}

Error

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 15.0

    \[\left(\frac{\pi}{2} \cdot \frac{1}{b \cdot b - a \cdot a}\right) \cdot \left(\frac{1}{a} - \frac{1}{b}\right)\]
  2. Simplified0.3

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\frac{\pi}{\left(a + b\right) \cdot 2}, \frac{-1}{b}, \frac{\frac{\pi}{\left(a + b\right) \cdot 2}}{a}\right)}{b - a}}\]
  3. Using strategy rm
  4. Applied associate-/l/0.3

    \[\leadsto \frac{\mathsf{fma}\left(\frac{\pi}{\left(a + b\right) \cdot 2}, \frac{-1}{b}, \color{blue}{\frac{\pi}{a \cdot \left(\left(a + b\right) \cdot 2\right)}}\right)}{b - a}\]
  5. Using strategy rm
  6. Applied clear-num0.3

    \[\leadsto \frac{\mathsf{fma}\left(\frac{\pi}{\left(a + b\right) \cdot 2}, \frac{-1}{b}, \color{blue}{\frac{1}{\frac{a \cdot \left(\left(a + b\right) \cdot 2\right)}{\pi}}}\right)}{b - a}\]
  7. Final simplification0.3

    \[\leadsto \frac{\mathsf{fma}\left(\frac{\pi}{\left(a + b\right) \cdot 2}, \frac{-1}{b}, \frac{1}{\frac{\left(\left(a + b\right) \cdot 2\right) \cdot a}{\pi}}\right)}{b - a}\]

Reproduce

herbie shell --seed 2019146 +o rules:numerics
(FPCore (a b)
  :name "NMSE Section 6.1 mentioned, B"
  (* (* (/ PI 2) (/ 1 (- (* b b) (* a a)))) (- (/ 1 a) (/ 1 b))))