\frac{x}{y} \cdot \left(z - t\right) + t\begin{array}{l}
\mathbf{if}\;y \le -15878348927688876927630704640:\\
\;\;\;\;\frac{z - t}{y} \cdot x + t\\
\mathbf{elif}\;y \le 2.540376884917199652102681276732018106493 \cdot 10^{-48}:\\
\;\;\;\;\frac{\left(z - t\right) \cdot x}{y} + t\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{z}{y}}{\frac{1}{x}} - \left(\frac{t}{\frac{y}{x}} - t\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r310554 = x;
double r310555 = y;
double r310556 = r310554 / r310555;
double r310557 = z;
double r310558 = t;
double r310559 = r310557 - r310558;
double r310560 = r310556 * r310559;
double r310561 = r310560 + r310558;
return r310561;
}
double f(double x, double y, double z, double t) {
double r310562 = y;
double r310563 = -1.5878348927688877e+28;
bool r310564 = r310562 <= r310563;
double r310565 = z;
double r310566 = t;
double r310567 = r310565 - r310566;
double r310568 = r310567 / r310562;
double r310569 = x;
double r310570 = r310568 * r310569;
double r310571 = r310570 + r310566;
double r310572 = 2.5403768849171997e-48;
bool r310573 = r310562 <= r310572;
double r310574 = r310567 * r310569;
double r310575 = r310574 / r310562;
double r310576 = r310575 + r310566;
double r310577 = r310565 / r310562;
double r310578 = 1.0;
double r310579 = r310578 / r310569;
double r310580 = r310577 / r310579;
double r310581 = r310562 / r310569;
double r310582 = r310566 / r310581;
double r310583 = r310582 - r310566;
double r310584 = r310580 - r310583;
double r310585 = r310573 ? r310576 : r310584;
double r310586 = r310564 ? r310571 : r310585;
return r310586;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.2 |
|---|---|
| Target | 2.4 |
| Herbie | 1.2 |
if y < -1.5878348927688877e+28Initial program 1.0
Taylor expanded around 0 10.0
Simplified1.1
rmApplied associate-/r/1.0
if -1.5878348927688877e+28 < y < 2.5403768849171997e-48Initial program 4.2
Taylor expanded around 0 1.6
Simplified3.8
Taylor expanded around 0 1.6
Simplified1.6
if 2.5403768849171997e-48 < y Initial program 1.0
Taylor expanded around 0 9.0
Simplified1.2
rmApplied div-sub1.2
Applied associate-+l-1.2
rmApplied div-inv1.2
Applied associate-/r*1.0
Final simplification1.2
herbie shell --seed 2019323
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cget from hsignal-0.2.7.1"
:precision binary64
: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))