Average Error: 39.6 → 23.1
Time: 2.1s
Precision: binary64
\[\frac{\left(\left(\left(a1 \cdot a2\right) \cdot a2 - \left(a1 \cdot a1\right) \cdot a3\right) + \left(a0 \cdot a1\right) \cdot a4\right) - \left(a0 \cdot a2\right) \cdot a3}{a2 \cdot a2 - a1 \cdot a3}\]
\[a1 + \frac{a0 \cdot \left(a1 \cdot a4 - a2 \cdot a3\right)}{a2 \cdot a2 - a1 \cdot a3}\]
\frac{\left(\left(\left(a1 \cdot a2\right) \cdot a2 - \left(a1 \cdot a1\right) \cdot a3\right) + \left(a0 \cdot a1\right) \cdot a4\right) - \left(a0 \cdot a2\right) \cdot a3}{a2 \cdot a2 - a1 \cdot a3}
a1 + \frac{a0 \cdot \left(a1 \cdot a4 - a2 \cdot a3\right)}{a2 \cdot a2 - a1 \cdot a3}
double code(double a1, double a2, double a3, double a0, double a4) {
	return ((double) (((double) (((double) (((double) (((double) (((double) (a1 * a2)) * a2)) - ((double) (((double) (a1 * a1)) * a3)))) + ((double) (((double) (a0 * a1)) * a4)))) - ((double) (((double) (a0 * a2)) * a3)))) / ((double) (((double) (a2 * a2)) - ((double) (a1 * a3))))));
}
double code(double a1, double a2, double a3, double a0, double a4) {
	return ((double) (a1 + ((double) (((double) (a0 * ((double) (((double) (a1 * a4)) - ((double) (a2 * a3)))))) / ((double) (((double) (a2 * a2)) - ((double) (a1 * a3))))))));
}

Error

Bits error versus a1

Bits error versus a2

Bits error versus a3

Bits error versus a0

Bits error versus a4

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 39.6

    \[\frac{\left(\left(\left(a1 \cdot a2\right) \cdot a2 - \left(a1 \cdot a1\right) \cdot a3\right) + \left(a0 \cdot a1\right) \cdot a4\right) - \left(a0 \cdot a2\right) \cdot a3}{a2 \cdot a2 - a1 \cdot a3}\]
  2. Simplified23.1

    \[\leadsto \color{blue}{\frac{a0 \cdot \left(a1 \cdot a4 - a2 \cdot a3\right)}{a2 \cdot a2 - a1 \cdot a3} + a1 \cdot 1}\]
  3. Final simplification23.1

    \[\leadsto a1 + \frac{a0 \cdot \left(a1 \cdot a4 - a2 \cdot a3\right)}{a2 \cdot a2 - a1 \cdot a3}\]

Reproduce

herbie shell --seed 2020152 
(FPCore (a1 a2 a3 a0 a4)
  :name "(/ (- (+ (- (* (* a1 a2) a2) (* (* a1 a1) a3)) (* (* a0 a1) a4)) (* (* a0 a2) a3)) (- (* a2 a2) (* a1 a3)))"
  :precision binary64
  (/ (- (+ (- (* (* a1 a2) a2) (* (* a1 a1) a3)) (* (* a0 a1) a4)) (* (* a0 a2) a3)) (- (* a2 a2) (* a1 a3))))