\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;t \le -3.1254816444432774 \cdot 10^{97}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{elif}\;t \le 4.5818239141886201 \cdot 10^{140}:\\
\;\;\;\;\frac{x + \left(y \cdot \frac{z}{t \cdot z - x} - \sqrt[3]{{\left(\frac{1}{\frac{t \cdot z - x}{x}}\right)}^{3}}\right)}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{\frac{x + \left(y \cdot \frac{z}{t \cdot z - x} - \frac{x}{t \cdot z - x}\right)}{x + 1}} \cdot \sqrt[3]{\frac{x + \left(y \cdot \frac{z}{t \cdot z - x} - \frac{x}{t \cdot z - x}\right)}{x + 1}}\right) \cdot \sqrt[3]{\frac{x + \left(y \cdot \frac{z}{t \cdot z - x} - \frac{x}{t \cdot z - x}\right)}{x + 1}}\\
\end{array}double f(double x, double y, double z, double t) {
double r793110 = x;
double r793111 = y;
double r793112 = z;
double r793113 = r793111 * r793112;
double r793114 = r793113 - r793110;
double r793115 = t;
double r793116 = r793115 * r793112;
double r793117 = r793116 - r793110;
double r793118 = r793114 / r793117;
double r793119 = r793110 + r793118;
double r793120 = 1.0;
double r793121 = r793110 + r793120;
double r793122 = r793119 / r793121;
return r793122;
}
double f(double x, double y, double z, double t) {
double r793123 = t;
double r793124 = -3.1254816444432774e+97;
bool r793125 = r793123 <= r793124;
double r793126 = x;
double r793127 = y;
double r793128 = r793127 / r793123;
double r793129 = r793126 + r793128;
double r793130 = 1.0;
double r793131 = r793126 + r793130;
double r793132 = r793129 / r793131;
double r793133 = 4.58182391418862e+140;
bool r793134 = r793123 <= r793133;
double r793135 = z;
double r793136 = r793123 * r793135;
double r793137 = r793136 - r793126;
double r793138 = r793135 / r793137;
double r793139 = r793127 * r793138;
double r793140 = 1.0;
double r793141 = r793137 / r793126;
double r793142 = r793140 / r793141;
double r793143 = 3.0;
double r793144 = pow(r793142, r793143);
double r793145 = cbrt(r793144);
double r793146 = r793139 - r793145;
double r793147 = r793126 + r793146;
double r793148 = r793147 / r793131;
double r793149 = r793126 / r793137;
double r793150 = r793139 - r793149;
double r793151 = r793126 + r793150;
double r793152 = r793151 / r793131;
double r793153 = cbrt(r793152);
double r793154 = r793153 * r793153;
double r793155 = r793154 * r793153;
double r793156 = r793134 ? r793148 : r793155;
double r793157 = r793125 ? r793132 : r793156;
return r793157;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.3 |
|---|---|
| Target | 0.4 |
| Herbie | 2.6 |
if t < -3.1254816444432774e+97Initial program 9.3
Taylor expanded around inf 4.6
if -3.1254816444432774e+97 < t < 4.58182391418862e+140Initial program 6.5
rmApplied div-sub6.5
Simplified1.1
rmApplied add-cbrt-cube9.9
Applied add-cbrt-cube33.5
Applied cbrt-undiv33.5
Simplified1.6
rmApplied clear-num1.6
if 4.58182391418862e+140 < t Initial program 8.7
rmApplied div-sub8.7
Simplified4.5
rmApplied add-cube-cbrt5.1
Final simplification2.6
herbie shell --seed 2020046
(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)))