Average Error: 14.0 → 0.3
Time: 23.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{\frac{1}{2} \cdot \frac{\mathsf{fma}\left(-1, \frac{\pi}{b}, \frac{\pi}{a}\right)}{b + a}}{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{\frac{1}{2} \cdot \frac{\mathsf{fma}\left(-1, \frac{\pi}{b}, \frac{\pi}{a}\right)}{b + a}}{b - a}
double f(double a, double b) {
        double r1227225 = atan2(1.0, 0.0);
        double r1227226 = 2.0;
        double r1227227 = r1227225 / r1227226;
        double r1227228 = 1.0;
        double r1227229 = b;
        double r1227230 = r1227229 * r1227229;
        double r1227231 = a;
        double r1227232 = r1227231 * r1227231;
        double r1227233 = r1227230 - r1227232;
        double r1227234 = r1227228 / r1227233;
        double r1227235 = r1227227 * r1227234;
        double r1227236 = r1227228 / r1227231;
        double r1227237 = r1227228 / r1227229;
        double r1227238 = r1227236 - r1227237;
        double r1227239 = r1227235 * r1227238;
        return r1227239;
}

double f(double a, double b) {
        double r1227240 = 0.5;
        double r1227241 = -1.0;
        double r1227242 = atan2(1.0, 0.0);
        double r1227243 = b;
        double r1227244 = r1227242 / r1227243;
        double r1227245 = a;
        double r1227246 = r1227242 / r1227245;
        double r1227247 = fma(r1227241, r1227244, r1227246);
        double r1227248 = r1227243 + r1227245;
        double r1227249 = r1227247 / r1227248;
        double r1227250 = r1227240 * r1227249;
        double r1227251 = r1227243 - r1227245;
        double r1227252 = r1227250 / r1227251;
        return r1227252;
}

Error

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 14.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{\frac{\frac{\pi}{a} + \frac{-\pi}{b}}{b - a}}{\left(a + b\right) \cdot 2}}\]
  3. Using strategy rm
  4. Applied div-inv0.3

    \[\leadsto \frac{\color{blue}{\left(\frac{\pi}{a} + \frac{-\pi}{b}\right) \cdot \frac{1}{b - a}}}{\left(a + b\right) \cdot 2}\]
  5. Applied times-frac0.3

    \[\leadsto \color{blue}{\frac{\frac{\pi}{a} + \frac{-\pi}{b}}{a + b} \cdot \frac{\frac{1}{b - a}}{2}}\]
  6. Simplified0.3

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

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

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

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

Reproduce

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