\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;x \le -2.7461763742328719 \cdot 10^{61} \lor \neg \left(x \le 1.27002564444406092 \cdot 10^{82}\right):\\
\;\;\;\;\sqrt{\frac{x + \left(y \cdot \frac{z}{t \cdot z - x} - \frac{x}{t \cdot z - x}\right)}{x + 1}} \cdot \sqrt{\frac{x + \left(y \cdot \frac{z}{t \cdot z - x} - \frac{x}{t \cdot z - x}\right)}{x + 1}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \left(y \cdot \frac{z}{t \cdot z - x} - \frac{x}{t \cdot z - x}\right)}{x \cdot x - 1 \cdot 1} \cdot \left(x - 1\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r716778 = x;
double r716779 = y;
double r716780 = z;
double r716781 = r716779 * r716780;
double r716782 = r716781 - r716778;
double r716783 = t;
double r716784 = r716783 * r716780;
double r716785 = r716784 - r716778;
double r716786 = r716782 / r716785;
double r716787 = r716778 + r716786;
double r716788 = 1.0;
double r716789 = r716778 + r716788;
double r716790 = r716787 / r716789;
return r716790;
}
double f(double x, double y, double z, double t) {
double r716791 = x;
double r716792 = -2.746176374232872e+61;
bool r716793 = r716791 <= r716792;
double r716794 = 1.270025644444061e+82;
bool r716795 = r716791 <= r716794;
double r716796 = !r716795;
bool r716797 = r716793 || r716796;
double r716798 = y;
double r716799 = z;
double r716800 = t;
double r716801 = r716800 * r716799;
double r716802 = r716801 - r716791;
double r716803 = r716799 / r716802;
double r716804 = r716798 * r716803;
double r716805 = r716791 / r716802;
double r716806 = r716804 - r716805;
double r716807 = r716791 + r716806;
double r716808 = 1.0;
double r716809 = r716791 + r716808;
double r716810 = r716807 / r716809;
double r716811 = sqrt(r716810);
double r716812 = r716811 * r716811;
double r716813 = r716791 * r716791;
double r716814 = r716808 * r716808;
double r716815 = r716813 - r716814;
double r716816 = r716807 / r716815;
double r716817 = r716791 - r716808;
double r716818 = r716816 * r716817;
double r716819 = r716797 ? r716812 : r716818;
return r716819;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.9 |
|---|---|
| Target | 0.3 |
| Herbie | 2.7 |
if x < -2.746176374232872e+61 or 1.270025644444061e+82 < x Initial program 7.3
rmApplied div-sub7.3
Simplified0.6
rmApplied add-sqr-sqrt1.8
if -2.746176374232872e+61 < x < 1.270025644444061e+82Initial program 6.7
rmApplied div-sub6.7
Simplified3.3
rmApplied flip-+3.3
Applied associate-/r/3.3
Final simplification2.7
herbie shell --seed 2020045
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:precision binary64
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1)))