Average Error: 0.2 → 0.2
Time: 18.2s
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(1 - 3 \cdot a\right)\right)\right) - 1\]
\[\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(1 - 3 \cdot 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(1 - 3 \cdot a\right)\right)} - 1\]
\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(1 - 3 \cdot a\right)\right)\right) - 1
\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(1 - 3 \cdot 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(1 - 3 \cdot a\right)\right)} - 1
double f(double a, double b) {
        double r99015 = a;
        double r99016 = r99015 * r99015;
        double r99017 = b;
        double r99018 = r99017 * r99017;
        double r99019 = r99016 + r99018;
        double r99020 = 2.0;
        double r99021 = pow(r99019, r99020);
        double r99022 = 4.0;
        double r99023 = 1.0;
        double r99024 = r99023 + r99015;
        double r99025 = r99016 * r99024;
        double r99026 = 3.0;
        double r99027 = r99026 * r99015;
        double r99028 = r99023 - r99027;
        double r99029 = r99018 * r99028;
        double r99030 = r99025 + r99029;
        double r99031 = r99022 * r99030;
        double r99032 = r99021 + r99031;
        double r99033 = r99032 - r99023;
        return r99033;
}

double f(double a, double b) {
        double r99034 = a;
        double r99035 = r99034 * r99034;
        double r99036 = b;
        double r99037 = r99036 * r99036;
        double r99038 = r99035 + r99037;
        double r99039 = 2.0;
        double r99040 = pow(r99038, r99039);
        double r99041 = 4.0;
        double r99042 = 1.0;
        double r99043 = r99042 + r99034;
        double r99044 = r99035 * r99043;
        double r99045 = 3.0;
        double r99046 = r99045 * r99034;
        double r99047 = r99042 - r99046;
        double r99048 = r99037 * r99047;
        double r99049 = r99044 + r99048;
        double r99050 = r99041 * r99049;
        double r99051 = r99040 + r99050;
        double r99052 = sqrt(r99051);
        double r99053 = r99052 * r99052;
        double r99054 = r99053 - r99042;
        return r99054;
}

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(1 - 3 \cdot 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(1 - 3 \cdot 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(1 - 3 \cdot a\right)\right)}} - 1\]
  4. Final simplification0.2

    \[\leadsto \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(1 - 3 \cdot 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(1 - 3 \cdot a\right)\right)} - 1\]

Reproduce

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