\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)
\begin{array}{l}
\mathbf{if}\;j \le -2.17350619689253189401655020029257244027 \cdot 10^{117}:\\
\;\;\;\;\left(0 - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;j \le 10277251857021880127726352545428904345600:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\left(j \cdot c\right) \cdot t + 1 \cdot \left(-1 \cdot \left(i \cdot \left(y \cdot j\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\sqrt{j} \cdot \left(\sqrt{j} \cdot \left(c \cdot t\right)\right) + j \cdot \left(-i \cdot y\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r457304 = x;
double r457305 = y;
double r457306 = z;
double r457307 = r457305 * r457306;
double r457308 = t;
double r457309 = a;
double r457310 = r457308 * r457309;
double r457311 = r457307 - r457310;
double r457312 = r457304 * r457311;
double r457313 = b;
double r457314 = c;
double r457315 = r457314 * r457306;
double r457316 = i;
double r457317 = r457316 * r457309;
double r457318 = r457315 - r457317;
double r457319 = r457313 * r457318;
double r457320 = r457312 - r457319;
double r457321 = j;
double r457322 = r457314 * r457308;
double r457323 = r457316 * r457305;
double r457324 = r457322 - r457323;
double r457325 = r457321 * r457324;
double r457326 = r457320 + r457325;
return r457326;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r457327 = j;
double r457328 = -2.173506196892532e+117;
bool r457329 = r457327 <= r457328;
double r457330 = 0.0;
double r457331 = b;
double r457332 = c;
double r457333 = z;
double r457334 = r457332 * r457333;
double r457335 = i;
double r457336 = a;
double r457337 = r457335 * r457336;
double r457338 = r457334 - r457337;
double r457339 = r457331 * r457338;
double r457340 = r457330 - r457339;
double r457341 = t;
double r457342 = r457332 * r457341;
double r457343 = y;
double r457344 = r457335 * r457343;
double r457345 = r457342 - r457344;
double r457346 = r457327 * r457345;
double r457347 = r457340 + r457346;
double r457348 = 1.027725185702188e+40;
bool r457349 = r457327 <= r457348;
double r457350 = x;
double r457351 = r457343 * r457333;
double r457352 = r457341 * r457336;
double r457353 = r457351 - r457352;
double r457354 = r457350 * r457353;
double r457355 = r457354 - r457339;
double r457356 = r457327 * r457332;
double r457357 = r457356 * r457341;
double r457358 = 1.0;
double r457359 = -1.0;
double r457360 = r457343 * r457327;
double r457361 = r457335 * r457360;
double r457362 = r457359 * r457361;
double r457363 = r457358 * r457362;
double r457364 = r457357 + r457363;
double r457365 = r457355 + r457364;
double r457366 = sqrt(r457327);
double r457367 = r457366 * r457342;
double r457368 = r457366 * r457367;
double r457369 = -r457344;
double r457370 = r457327 * r457369;
double r457371 = r457368 + r457370;
double r457372 = r457355 + r457371;
double r457373 = r457349 ? r457365 : r457372;
double r457374 = r457329 ? r457347 : r457373;
return r457374;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus i




Bits error versus j
Results
| Original | 12.4 |
|---|---|
| Target | 16.2 |
| Herbie | 10.3 |
if j < -2.173506196892532e+117Initial program 6.4
Taylor expanded around 0 14.3
if -2.173506196892532e+117 < j < 1.027725185702188e+40Initial program 14.5
rmApplied sub-neg14.5
Applied distribute-lft-in14.5
rmApplied *-un-lft-identity14.5
Applied associate-*l*14.5
Simplified12.8
rmApplied associate-*r*10.6
if 1.027725185702188e+40 < j Initial program 6.5
rmApplied sub-neg6.5
Applied distribute-lft-in6.5
rmApplied add-sqr-sqrt6.5
Applied associate-*l*6.5
Final simplification10.3
herbie shell --seed 2019297
(FPCore (x y z t a b c i j)
:name "Linear.Matrix:det33 from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< t -8.1209789191959122e-33) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t -4.7125538182184851e-169) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2) (pow (* i y) 2))) (+ (* c t) (* i y)))) (if (< t -7.63353334603158369e-308) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t 1.0535888557455487e-139) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2) (pow (* i y) 2))) (+ (* c t) (* i y)))) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j)))))))
(+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))))