\frac{x}{y} \cdot \left(z - t\right) + t\mathsf{fma}\left(\frac{\sqrt[3]{z - t} \cdot \sqrt[3]{z - t}}{\frac{1}{\sqrt[3]{x} \cdot \sqrt[3]{x}}}, \frac{\sqrt[3]{z - t}}{\frac{y}{\sqrt[3]{x}}}, t\right)double f(double x, double y, double z, double t) {
double r26247362 = x;
double r26247363 = y;
double r26247364 = r26247362 / r26247363;
double r26247365 = z;
double r26247366 = t;
double r26247367 = r26247365 - r26247366;
double r26247368 = r26247364 * r26247367;
double r26247369 = r26247368 + r26247366;
return r26247369;
}
double f(double x, double y, double z, double t) {
double r26247370 = z;
double r26247371 = t;
double r26247372 = r26247370 - r26247371;
double r26247373 = cbrt(r26247372);
double r26247374 = r26247373 * r26247373;
double r26247375 = 1.0;
double r26247376 = x;
double r26247377 = cbrt(r26247376);
double r26247378 = r26247377 * r26247377;
double r26247379 = r26247375 / r26247378;
double r26247380 = r26247374 / r26247379;
double r26247381 = y;
double r26247382 = r26247381 / r26247377;
double r26247383 = r26247373 / r26247382;
double r26247384 = fma(r26247380, r26247383, r26247371);
return r26247384;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 2.1 |
|---|---|
| Target | 2.2 |
| Herbie | 1.7 |
Initial program 2.1
Taylor expanded around 0 6.2
Simplified2.1
rmApplied add-cube-cbrt2.6
Applied *-un-lft-identity2.6
Applied times-frac2.6
Applied add-cube-cbrt2.7
Applied times-frac1.7
Applied fma-def1.7
Final simplification1.7
herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cget from hsignal-0.2.7.1"
:herbie-target
(if (< z 2.759456554562692e-282) (+ (* (/ x y) (- z t)) t) (if (< z 2.326994450874436e-110) (+ (* x (/ (- z t) y)) t) (+ (* (/ x y) (- z t)) t)))
(+ (* (/ x y) (- z t)) t))