Average Error: 0.2 → 0.2
Time: 17.9s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\]
\[{\left(a \cdot a + b \cdot b\right)}^{2} + \left(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) - 1\right)\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1
{\left(a \cdot a + b \cdot b\right)}^{2} + \left(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) - 1\right)
double f(double a, double b) {
        double r195468 = a;
        double r195469 = r195468 * r195468;
        double r195470 = b;
        double r195471 = r195470 * r195470;
        double r195472 = r195469 + r195471;
        double r195473 = 2.0;
        double r195474 = pow(r195472, r195473);
        double r195475 = 4.0;
        double r195476 = 1.0;
        double r195477 = r195476 - r195468;
        double r195478 = r195469 * r195477;
        double r195479 = 3.0;
        double r195480 = r195479 + r195468;
        double r195481 = r195471 * r195480;
        double r195482 = r195478 + r195481;
        double r195483 = r195475 * r195482;
        double r195484 = r195474 + r195483;
        double r195485 = r195484 - r195476;
        return r195485;
}

double f(double a, double b) {
        double r195486 = a;
        double r195487 = r195486 * r195486;
        double r195488 = b;
        double r195489 = r195488 * r195488;
        double r195490 = r195487 + r195489;
        double r195491 = 2.0;
        double r195492 = pow(r195490, r195491);
        double r195493 = 4.0;
        double r195494 = 1.0;
        double r195495 = r195494 - r195486;
        double r195496 = r195487 * r195495;
        double r195497 = 3.0;
        double r195498 = r195497 + r195486;
        double r195499 = r195489 * r195498;
        double r195500 = r195496 + r195499;
        double r195501 = r195493 * r195500;
        double r195502 = r195501 - r195494;
        double r195503 = r195492 + r195502;
        return r195503;
}

Error

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.2

    \[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt0.2

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

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

Reproduce

herbie shell --seed 2019297 
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (24)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))