x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\mathsf{fma}\left(\frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{1}, \frac{\sqrt[3]{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \left(\frac{\sqrt[3]{\sqrt[3]{y - x}}}{\sqrt[3]{a - t}} \cdot \left(z - t\right)\right), x\right)double f(double x, double y, double z, double t, double a) {
double r1169103 = x;
double r1169104 = y;
double r1169105 = r1169104 - r1169103;
double r1169106 = z;
double r1169107 = t;
double r1169108 = r1169106 - r1169107;
double r1169109 = r1169105 * r1169108;
double r1169110 = a;
double r1169111 = r1169110 - r1169107;
double r1169112 = r1169109 / r1169111;
double r1169113 = r1169103 + r1169112;
return r1169113;
}
double f(double x, double y, double z, double t, double a) {
double r1169114 = y;
double r1169115 = x;
double r1169116 = r1169114 - r1169115;
double r1169117 = cbrt(r1169116);
double r1169118 = r1169117 * r1169117;
double r1169119 = 1.0;
double r1169120 = r1169118 / r1169119;
double r1169121 = cbrt(r1169118);
double r1169122 = a;
double r1169123 = t;
double r1169124 = r1169122 - r1169123;
double r1169125 = cbrt(r1169124);
double r1169126 = r1169125 * r1169125;
double r1169127 = r1169121 / r1169126;
double r1169128 = cbrt(r1169117);
double r1169129 = r1169128 / r1169125;
double r1169130 = z;
double r1169131 = r1169130 - r1169123;
double r1169132 = r1169129 * r1169131;
double r1169133 = r1169127 * r1169132;
double r1169134 = fma(r1169120, r1169133, r1169115);
return r1169134;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 25.0 |
|---|---|
| Target | 9.3 |
| Herbie | 12.7 |
Initial program 25.0
Simplified15.1
rmApplied fma-udef15.2
rmApplied *-un-lft-identity15.2
Applied add-cube-cbrt15.8
Applied times-frac15.8
Applied associate-*l*13.0
rmApplied add-cube-cbrt13.2
Applied add-cube-cbrt13.2
Applied cbrt-prod13.3
Applied times-frac13.3
Applied associate-*l*12.7
rmApplied fma-def12.7
Final simplification12.7
herbie shell --seed 2020025 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< a -1.6153062845442575e-142) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t)))) (if (< a 3.774403170083174e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))