Average Error: 0.2 → 0.2
Time: 5.8s
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\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(\left(a \cdot a\right) \cdot 1 + {a}^{3}\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot 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(1 - 3 \cdot a\right)\right)\right) - 1
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(\left(a \cdot a\right) \cdot 1 + {a}^{3}\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r251133 = a;
        double r251134 = r251133 * r251133;
        double r251135 = b;
        double r251136 = r251135 * r251135;
        double r251137 = r251134 + r251136;
        double r251138 = 2.0;
        double r251139 = pow(r251137, r251138);
        double r251140 = 4.0;
        double r251141 = 1.0;
        double r251142 = r251141 + r251133;
        double r251143 = r251134 * r251142;
        double r251144 = 3.0;
        double r251145 = r251144 * r251133;
        double r251146 = r251141 - r251145;
        double r251147 = r251136 * r251146;
        double r251148 = r251143 + r251147;
        double r251149 = r251140 * r251148;
        double r251150 = r251139 + r251149;
        double r251151 = r251150 - r251141;
        return r251151;
}

double f(double a, double b) {
        double r251152 = a;
        double r251153 = r251152 * r251152;
        double r251154 = b;
        double r251155 = r251154 * r251154;
        double r251156 = r251153 + r251155;
        double r251157 = 2.0;
        double r251158 = pow(r251156, r251157);
        double r251159 = 4.0;
        double r251160 = 1.0;
        double r251161 = r251153 * r251160;
        double r251162 = 3.0;
        double r251163 = pow(r251152, r251162);
        double r251164 = r251161 + r251163;
        double r251165 = 3.0;
        double r251166 = r251165 * r251152;
        double r251167 = r251160 - r251166;
        double r251168 = r251155 * r251167;
        double r251169 = r251164 + r251168;
        double r251170 = r251159 * r251169;
        double r251171 = r251158 + r251170;
        double r251172 = r251171 - r251160;
        return r251172;
}

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 distribute-lft-in0.2

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

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

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

Reproduce

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