Average Error: 14.3 → 0.3
Time: 37.0s
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 r1931417 = atan2(1.0, 0.0);
        double r1931418 = 2.0;
        double r1931419 = r1931417 / r1931418;
        double r1931420 = 1.0;
        double r1931421 = b;
        double r1931422 = r1931421 * r1931421;
        double r1931423 = a;
        double r1931424 = r1931423 * r1931423;
        double r1931425 = r1931422 - r1931424;
        double r1931426 = r1931420 / r1931425;
        double r1931427 = r1931419 * r1931426;
        double r1931428 = r1931420 / r1931423;
        double r1931429 = r1931420 / r1931421;
        double r1931430 = r1931428 - r1931429;
        double r1931431 = r1931427 * r1931430;
        return r1931431;
}

double f(double a, double b) {
        double r1931432 = atan2(1.0, 0.0);
        double r1931433 = a;
        double r1931434 = b;
        double r1931435 = r1931433 + r1931434;
        double r1931436 = 2.0;
        double r1931437 = r1931435 * r1931436;
        double r1931438 = r1931432 / r1931437;
        double r1931439 = -1.0;
        double r1931440 = r1931439 / r1931434;
        double r1931441 = 1.0;
        double r1931442 = r1931437 * r1931433;
        double r1931443 = r1931442 / r1931432;
        double r1931444 = r1931441 / r1931443;
        double r1931445 = fma(r1931438, r1931440, r1931444);
        double r1931446 = r1931434 - r1931433;
        double r1931447 = r1931445 / r1931446;
        return r1931447;
}

Error

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 14.3

    \[\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 *-un-lft-identity0.3

    \[\leadsto \frac{\mathsf{fma}\left(\frac{\pi}{\left(a + b\right) \cdot 2}, \frac{-1}{b}, \frac{\color{blue}{1 \cdot \pi}}{a \cdot \left(\left(a + b\right) \cdot 2\right)}\right)}{b - a}\]
  7. Applied associate-/l*0.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}\]
  8. 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 2019144 +o rules:numerics
(FPCore (a b)
  :name "NMSE Section 6.1 mentioned, B"
  (* (* (/ PI 2) (/ 1 (- (* b b) (* a a)))) (- (/ 1 a) (/ 1 b))))