\frac{x - y}{z - y} \cdot t
\begin{array}{l}
t_1 := \sqrt[3]{x - y}\\
t_2 := \sqrt[3]{z - y}\\
\frac{t_1 \cdot t_1}{t_2 \cdot t_2} \cdot \left(\frac{t_1}{t_2} \cdot t\right)
\end{array}
(FPCore (x y z t) :precision binary64 (* (/ (- x y) (- z y)) t))
(FPCore (x y z t) :precision binary64 (let* ((t_1 (cbrt (- x y))) (t_2 (cbrt (- z y)))) (* (/ (* t_1 t_1) (* t_2 t_2)) (* (/ t_1 t_2) t))))
double code(double x, double y, double z, double t) {
return ((x - y) / (z - y)) * t;
}
double code(double x, double y, double z, double t) {
double t_1 = cbrt(x - y);
double t_2 = cbrt(z - y);
return ((t_1 * t_1) / (t_2 * t_2)) * ((t_1 / t_2) * t);
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.2 |
|---|---|
| Target | 2.2 |
| Herbie | 1.1 |
Initial program 2.2
Applied add-cube-cbrt_binary643.2
Applied add-cube-cbrt_binary642.9
Applied times-frac_binary642.9
Applied associate-*l*_binary641.1
Final simplification1.1
herbie shell --seed 2022076
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cput from hsignal-0.2.7.1"
:precision binary64
:herbie-target
(/ t (/ (- z y) (- x y)))
(* (/ (- x y) (- z y)) t))