x + y \cdot \frac{z - t}{z - a}x + \left(y \cdot \frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\sqrt[3]{z - a} \cdot \sqrt[3]{z - a}}\right) \cdot \frac{\sqrt[3]{z - t}}{\sqrt[3]{z - a}}double f(double x, double y, double z, double t, double a) {
double r681653 = x;
double r681654 = y;
double r681655 = z;
double r681656 = t;
double r681657 = r681655 - r681656;
double r681658 = a;
double r681659 = r681655 - r681658;
double r681660 = r681657 / r681659;
double r681661 = r681654 * r681660;
double r681662 = r681653 + r681661;
return r681662;
}
double f(double x, double y, double z, double t, double a) {
double r681663 = x;
double r681664 = y;
double r681665 = z;
double r681666 = t;
double r681667 = r681665 - r681666;
double r681668 = cbrt(r681667);
double r681669 = r681668 * r681668;
double r681670 = a;
double r681671 = r681665 - r681670;
double r681672 = cbrt(r681671);
double r681673 = r681672 * r681672;
double r681674 = r681669 / r681673;
double r681675 = r681664 * r681674;
double r681676 = r681668 / r681672;
double r681677 = r681675 * r681676;
double r681678 = r681663 + r681677;
return r681678;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 1.5 |
|---|---|
| Target | 1.4 |
| Herbie | 0.6 |
Initial program 1.5
rmApplied add-cube-cbrt2.1
Applied add-cube-cbrt1.9
Applied times-frac1.9
Applied associate-*r*0.6
Final simplification0.6
herbie shell --seed 2020083
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, A"
:precision binary64
:herbie-target
(+ x (/ y (/ (- z a) (- z t))))
(+ x (* y (/ (- z t) (- z a)))))