Average Error: 14.1 → 0.3
Time: 23.2s
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}{2}, \frac{-1}{b}, \frac{\frac{\pi}{2}}{a}\right) \cdot \frac{1}{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{\mathsf{fma}\left(\frac{\pi}{2}, \frac{-1}{b}, \frac{\frac{\pi}{2}}{a}\right) \cdot \frac{1}{b + a}}{b - a}
double f(double a, double b) {
        double r1443859 = atan2(1.0, 0.0);
        double r1443860 = 2.0;
        double r1443861 = r1443859 / r1443860;
        double r1443862 = 1.0;
        double r1443863 = b;
        double r1443864 = r1443863 * r1443863;
        double r1443865 = a;
        double r1443866 = r1443865 * r1443865;
        double r1443867 = r1443864 - r1443866;
        double r1443868 = r1443862 / r1443867;
        double r1443869 = r1443861 * r1443868;
        double r1443870 = r1443862 / r1443865;
        double r1443871 = r1443862 / r1443863;
        double r1443872 = r1443870 - r1443871;
        double r1443873 = r1443869 * r1443872;
        return r1443873;
}

double f(double a, double b) {
        double r1443874 = atan2(1.0, 0.0);
        double r1443875 = 2.0;
        double r1443876 = r1443874 / r1443875;
        double r1443877 = -1.0;
        double r1443878 = b;
        double r1443879 = r1443877 / r1443878;
        double r1443880 = a;
        double r1443881 = r1443876 / r1443880;
        double r1443882 = fma(r1443876, r1443879, r1443881);
        double r1443883 = 1.0;
        double r1443884 = r1443878 + r1443880;
        double r1443885 = r1443883 / r1443884;
        double r1443886 = r1443882 * r1443885;
        double r1443887 = r1443878 - r1443880;
        double r1443888 = r1443886 / r1443887;
        return r1443888;
}

Error

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 14.1

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

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\frac{\pi}{2}, \frac{-1}{b}, \frac{\frac{\pi}{2}}{a}\right)}{b \cdot b - a \cdot a}}\]
  3. Using strategy rm
  4. Applied difference-of-squares9.6

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

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

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

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

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

Reproduce

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