Average Error: 0.2 → 0.2
Time: 17.0s
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({\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({\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({\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
double f(double a, double b) {
        double r124124 = a;
        double r124125 = r124124 * r124124;
        double r124126 = b;
        double r124127 = r124126 * r124126;
        double r124128 = r124125 + r124127;
        double r124129 = 2.0;
        double r124130 = pow(r124128, r124129);
        double r124131 = 4.0;
        double r124132 = 1.0;
        double r124133 = r124132 - r124124;
        double r124134 = r124125 * r124133;
        double r124135 = 3.0;
        double r124136 = r124135 + r124124;
        double r124137 = r124127 * r124136;
        double r124138 = r124134 + r124137;
        double r124139 = r124131 * r124138;
        double r124140 = r124130 + r124139;
        double r124141 = r124140 - r124132;
        return r124141;
}

double f(double a, double b) {
        double r124142 = a;
        double r124143 = r124142 * r124142;
        double r124144 = b;
        double r124145 = r124144 * r124144;
        double r124146 = r124143 + r124145;
        double r124147 = 2.0;
        double r124148 = pow(r124146, r124147);
        double r124149 = 4.0;
        double r124150 = 1.0;
        double r124151 = r124150 - r124142;
        double r124152 = r124143 * r124151;
        double r124153 = 3.0;
        double r124154 = r124153 + r124142;
        double r124155 = r124145 * r124154;
        double r124156 = r124152 + r124155;
        double r124157 = r124149 * r124156;
        double r124158 = r124148 + r124157;
        double r124159 = r124158 - r124150;
        return r124159;
}

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. Final simplification0.2

    \[\leadsto \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\]

Reproduce

herbie shell --seed 2019323 
(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))