\frac{\left(\left(\left(\left(\left(\left(\left(q \cdot q\right) \cdot q\right) \cdot f3 - \left(\left(\left(3 \cdot q\right) \cdot q\right) \cdot f2\right) \cdot q1\right) + \left(\left(\left(6 \cdot q\right) \cdot f1\right) \cdot q1\right) \cdot q1\right) - \left(\left(\left(6 \cdot f\right) \cdot q1\right) \cdot q1\right) \cdot q1\right) - \left(\left(f \cdot q\right) \cdot q\right) \cdot q3\right) - \left(\left(3 \cdot q\right) \cdot q\right) \cdot f1\right) - \left(\left(\left(2 \cdot f\right) \cdot q\right) \cdot q1\right) \cdot q2}{\left(q \cdot q\right) \cdot \left(q \cdot q\right)}\frac{\left(\left(q \cdot q\right) \cdot q\right) \cdot f3}{{q}^{4}} - \frac{q1 \cdot \left(\left(\left(3 \cdot q\right) \cdot q\right) \cdot f2 - \left(q1 \cdot 6\right) \cdot \left(q \cdot f1 - f \cdot q1\right)\right) + \left(\left(\left(f \cdot q\right) \cdot q\right) \cdot q3 + \left(\left(\left(3 \cdot q\right) \cdot q\right) \cdot f1 + \left(\left(\left(2 \cdot f\right) \cdot q\right) \cdot q1\right) \cdot q2\right)\right)}{{q}^{4}}double code(double q, double f3, double f2, double q1, double f1, double f, double q3, double q2) {
return ((double) (((double) (((double) (((double) (((double) (((double) (((double) (((double) (((double) (((double) (q * q)) * q)) * f3)) - ((double) (((double) (((double) (((double) (3.0 * q)) * q)) * f2)) * q1)))) + ((double) (((double) (((double) (((double) (6.0 * q)) * f1)) * q1)) * q1)))) - ((double) (((double) (((double) (((double) (6.0 * f)) * q1)) * q1)) * q1)))) - ((double) (((double) (((double) (f * q)) * q)) * q3)))) - ((double) (((double) (((double) (3.0 * q)) * q)) * f1)))) - ((double) (((double) (((double) (((double) (2.0 * f)) * q)) * q1)) * q2)))) / ((double) (((double) (q * q)) * ((double) (q * q))))));
}
double code(double q, double f3, double f2, double q1, double f1, double f, double q3, double q2) {
return ((double) (((double) (((double) (((double) (((double) (q * q)) * q)) * f3)) / ((double) pow(q, 4.0)))) - ((double) (((double) (((double) (q1 * ((double) (((double) (((double) (((double) (3.0 * q)) * q)) * f2)) - ((double) (((double) (q1 * 6.0)) * ((double) (((double) (q * f1)) - ((double) (f * q1)))))))))) + ((double) (((double) (((double) (((double) (f * q)) * q)) * q3)) + ((double) (((double) (((double) (((double) (3.0 * q)) * q)) * f1)) + ((double) (((double) (((double) (((double) (2.0 * f)) * q)) * q1)) * q2)))))))) / ((double) pow(q, 4.0))))));
}



Bits error versus q



Bits error versus f3



Bits error versus f2



Bits error versus q1



Bits error versus f1



Bits error versus f



Bits error versus q3



Bits error versus q2
Results
Initial program 53.7
Simplified53.7
Final simplification53.7
herbie shell --seed 2020152
(FPCore (q f3 f2 q1 f1 f q3 q2)
:name "(/ (- (- (- (- (+ (- (* (* (* q q) q) f3) (* (* (* (* 3.0 q) q) f2) q1)) (* (* (* (* 6.0 q) f1) q1) q1)) (* (* (* (* 6.0 f) q1) q1) q1)) (* (* (* f q) q) q3)) (* (* (* 3.0 q) q) f1)) (* (* (* (* 2.0 f) q) q1) q2)) (* (* q q) (* q q)))"
:precision binary64
(/ (- (- (- (- (+ (- (* (* (* q q) q) f3) (* (* (* (* 3.0 q) q) f2) q1)) (* (* (* (* 6.0 q) f1) q1) q1)) (* (* (* (* 6.0 f) q1) q1) q1)) (* (* (* f q) q) q3)) (* (* (* 3.0 q) q) f1)) (* (* (* (* 2.0 f) q) q1) q2)) (* (* q q) (* q q))))