Average Error: 14.9 → 0.3
Time: 1.3m
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{\frac{1}{a + b}}{\frac{a}{\frac{\pi}{2}}}\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{\frac{1}{a + b}}{\frac{a}{\frac{\pi}{2}}}\right)}{b - a}
double f(double a, double b) {
        double r1984093 = atan2(1.0, 0.0);
        double r1984094 = 2.0;
        double r1984095 = r1984093 / r1984094;
        double r1984096 = 1.0;
        double r1984097 = b;
        double r1984098 = r1984097 * r1984097;
        double r1984099 = a;
        double r1984100 = r1984099 * r1984099;
        double r1984101 = r1984098 - r1984100;
        double r1984102 = r1984096 / r1984101;
        double r1984103 = r1984095 * r1984102;
        double r1984104 = r1984096 / r1984099;
        double r1984105 = r1984096 / r1984097;
        double r1984106 = r1984104 - r1984105;
        double r1984107 = r1984103 * r1984106;
        return r1984107;
}

double f(double a, double b) {
        double r1984108 = atan2(1.0, 0.0);
        double r1984109 = a;
        double r1984110 = b;
        double r1984111 = r1984109 + r1984110;
        double r1984112 = 2.0;
        double r1984113 = r1984111 * r1984112;
        double r1984114 = r1984108 / r1984113;
        double r1984115 = -1.0;
        double r1984116 = r1984115 / r1984110;
        double r1984117 = 1.0;
        double r1984118 = r1984117 / r1984111;
        double r1984119 = r1984108 / r1984112;
        double r1984120 = r1984109 / r1984119;
        double r1984121 = r1984118 / r1984120;
        double r1984122 = fma(r1984114, r1984116, r1984121);
        double r1984123 = r1984110 - r1984109;
        double r1984124 = r1984122 / r1984123;
        return r1984124;
}

Error

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 14.9

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

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

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

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

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

Reproduce

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