\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\begin{array}{l}
\mathbf{if}\;t \le -5.535795100336089874765535724165452300231 \cdot 10^{58} \lor \neg \left(t \le 862649904951615160320\right):\\
\;\;\;\;\frac{\sqrt[3]{x + \frac{y}{\frac{t}{z}}} \cdot \sqrt[3]{x + \frac{y}{\frac{t}{z}}}}{\frac{\left(a + 1\right) + \frac{y}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{b}{\sqrt[3]{t}}}{\sqrt[3]{x + \frac{y}{\frac{t}{z}}}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \left(y \cdot b\right) \cdot \frac{1}{t}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r787172 = x;
double r787173 = y;
double r787174 = z;
double r787175 = r787173 * r787174;
double r787176 = t;
double r787177 = r787175 / r787176;
double r787178 = r787172 + r787177;
double r787179 = a;
double r787180 = 1.0;
double r787181 = r787179 + r787180;
double r787182 = b;
double r787183 = r787173 * r787182;
double r787184 = r787183 / r787176;
double r787185 = r787181 + r787184;
double r787186 = r787178 / r787185;
return r787186;
}
double f(double x, double y, double z, double t, double a, double b) {
double r787187 = t;
double r787188 = -5.53579510033609e+58;
bool r787189 = r787187 <= r787188;
double r787190 = 8.626499049516152e+20;
bool r787191 = r787187 <= r787190;
double r787192 = !r787191;
bool r787193 = r787189 || r787192;
double r787194 = x;
double r787195 = y;
double r787196 = z;
double r787197 = r787187 / r787196;
double r787198 = r787195 / r787197;
double r787199 = r787194 + r787198;
double r787200 = cbrt(r787199);
double r787201 = r787200 * r787200;
double r787202 = a;
double r787203 = 1.0;
double r787204 = r787202 + r787203;
double r787205 = cbrt(r787187);
double r787206 = r787205 * r787205;
double r787207 = r787195 / r787206;
double r787208 = b;
double r787209 = r787208 / r787205;
double r787210 = r787207 * r787209;
double r787211 = r787204 + r787210;
double r787212 = r787211 / r787200;
double r787213 = r787201 / r787212;
double r787214 = r787195 * r787196;
double r787215 = r787214 / r787187;
double r787216 = r787194 + r787215;
double r787217 = r787195 * r787208;
double r787218 = 1.0;
double r787219 = r787218 / r787187;
double r787220 = r787217 * r787219;
double r787221 = r787204 + r787220;
double r787222 = r787216 / r787221;
double r787223 = r787193 ? r787213 : r787222;
return r787223;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 16.4 |
|---|---|
| Target | 12.7 |
| Herbie | 13.1 |
if t < -5.53579510033609e+58 or 8.626499049516152e+20 < t Initial program 11.7
rmApplied add-cube-cbrt11.8
Applied times-frac8.6
rmApplied associate-/l*3.5
rmApplied add-cube-cbrt4.4
Applied associate-/l*4.5
if -5.53579510033609e+58 < t < 8.626499049516152e+20Initial program 20.2
rmApplied div-inv20.2
Final simplification13.1
herbie shell --seed 2019354
(FPCore (x y z t a b)
:name "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, B"
:precision binary64
:herbie-target
(if (< t -1.3659085366310088e-271) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b))))) (if (< t 3.036967103737246e-130) (/ z b) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b)))))))
(/ (+ x (/ (* y z) t)) (+ (+ a 1) (/ (* y b) t))))