Average Error: 0.2 → 0.2
Time: 21.1s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\[\mathsf{fma}\left(4 \cdot b, b, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
\mathsf{fma}\left(4 \cdot b, b, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right) - 1
double f(double a, double b) {
        double r186072 = a;
        double r186073 = r186072 * r186072;
        double r186074 = b;
        double r186075 = r186074 * r186074;
        double r186076 = r186073 + r186075;
        double r186077 = 2.0;
        double r186078 = pow(r186076, r186077);
        double r186079 = 4.0;
        double r186080 = r186079 * r186075;
        double r186081 = r186078 + r186080;
        double r186082 = 1.0;
        double r186083 = r186081 - r186082;
        return r186083;
}

double f(double a, double b) {
        double r186084 = 4.0;
        double r186085 = b;
        double r186086 = r186084 * r186085;
        double r186087 = a;
        double r186088 = r186085 * r186085;
        double r186089 = fma(r186087, r186087, r186088);
        double r186090 = 2.0;
        double r186091 = pow(r186089, r186090);
        double r186092 = fma(r186086, r186085, r186091);
        double r186093 = 1.0;
        double r186094 = r186092 - r186093;
        return r186094;
}

Error

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 0.2

    \[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
  2. Simplified0.2

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

    \[\leadsto \mathsf{fma}\left(4 \cdot b, b, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right) - 1\]

Reproduce

herbie shell --seed 2019196 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (26)"
  (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (* b b))) 1.0))