\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}\;a \le -1.672795493860766634501209364427778643557 \cdot 10^{-35}:\\
\;\;\;\;\left(\left(y \cdot z - a \cdot t\right) \cdot x + \sqrt[3]{\left(t \cdot c - y \cdot i\right) \cdot j} \cdot \left(\sqrt[3]{\left(t \cdot c - y \cdot i\right) \cdot j} \cdot \sqrt[3]{\left(t \cdot c - y \cdot i\right) \cdot j}\right)\right) + \left(\left(i \cdot b\right) \cdot a - \left(b \cdot z\right) \cdot c\right)\\
\mathbf{elif}\;a \le 1.363075426981875327339653073768105985957 \cdot 10^{-173}:\\
\;\;\;\;\left(i \cdot a - c \cdot z\right) \cdot b + \left(\left(y \cdot z - a \cdot t\right) \cdot x + \left(\left(i \cdot j\right) \cdot \left(-y\right) + t \cdot \left(j \cdot c\right)\right)\right)\\
\mathbf{elif}\;a \le 2.77838378540003226799654426646560472166 \cdot 10^{-74}:\\
\;\;\;\;\left(\left(i \cdot b\right) \cdot a - \left(c \cdot b\right) \cdot z\right) + \left(\left(t \cdot c - y \cdot i\right) \cdot j + \left(y \cdot z - a \cdot t\right) \cdot x\right)\\
\mathbf{elif}\;a \le 30772525990492999025426432:\\
\;\;\;\;\left(i \cdot a - c \cdot z\right) \cdot b + \left(\left(y \cdot z - a \cdot t\right) \cdot x + \left(\left(i \cdot j\right) \cdot \left(-y\right) + t \cdot \left(j \cdot c\right)\right)\right)\\
\mathbf{elif}\;a \le 1.992368486632287830436354769032418169245 \cdot 10^{58}:\\
\;\;\;\;\left(\left(t \cdot c - y \cdot i\right) \cdot j + \sqrt[3]{x} \cdot \left(\left(y \cdot z - a \cdot t\right) \cdot \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right)\right) + \left(\left(i \cdot b\right) \cdot a - \left(b \cdot z\right) \cdot c\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(i \cdot b\right) \cdot a - \left(c \cdot b\right) \cdot z\right) + \left(\left(t \cdot c - y \cdot i\right) \cdot j + \left(y \cdot z - a \cdot t\right) \cdot x\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r416313 = x;
double r416314 = y;
double r416315 = z;
double r416316 = r416314 * r416315;
double r416317 = t;
double r416318 = a;
double r416319 = r416317 * r416318;
double r416320 = r416316 - r416319;
double r416321 = r416313 * r416320;
double r416322 = b;
double r416323 = c;
double r416324 = r416323 * r416315;
double r416325 = i;
double r416326 = r416325 * r416318;
double r416327 = r416324 - r416326;
double r416328 = r416322 * r416327;
double r416329 = r416321 - r416328;
double r416330 = j;
double r416331 = r416323 * r416317;
double r416332 = r416325 * r416314;
double r416333 = r416331 - r416332;
double r416334 = r416330 * r416333;
double r416335 = r416329 + r416334;
return r416335;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r416336 = a;
double r416337 = -1.6727954938607666e-35;
bool r416338 = r416336 <= r416337;
double r416339 = y;
double r416340 = z;
double r416341 = r416339 * r416340;
double r416342 = t;
double r416343 = r416336 * r416342;
double r416344 = r416341 - r416343;
double r416345 = x;
double r416346 = r416344 * r416345;
double r416347 = c;
double r416348 = r416342 * r416347;
double r416349 = i;
double r416350 = r416339 * r416349;
double r416351 = r416348 - r416350;
double r416352 = j;
double r416353 = r416351 * r416352;
double r416354 = cbrt(r416353);
double r416355 = r416354 * r416354;
double r416356 = r416354 * r416355;
double r416357 = r416346 + r416356;
double r416358 = b;
double r416359 = r416349 * r416358;
double r416360 = r416359 * r416336;
double r416361 = r416358 * r416340;
double r416362 = r416361 * r416347;
double r416363 = r416360 - r416362;
double r416364 = r416357 + r416363;
double r416365 = 1.3630754269818753e-173;
bool r416366 = r416336 <= r416365;
double r416367 = r416349 * r416336;
double r416368 = r416347 * r416340;
double r416369 = r416367 - r416368;
double r416370 = r416369 * r416358;
double r416371 = r416349 * r416352;
double r416372 = -r416339;
double r416373 = r416371 * r416372;
double r416374 = r416352 * r416347;
double r416375 = r416342 * r416374;
double r416376 = r416373 + r416375;
double r416377 = r416346 + r416376;
double r416378 = r416370 + r416377;
double r416379 = 2.7783837854000323e-74;
bool r416380 = r416336 <= r416379;
double r416381 = r416347 * r416358;
double r416382 = r416381 * r416340;
double r416383 = r416360 - r416382;
double r416384 = r416353 + r416346;
double r416385 = r416383 + r416384;
double r416386 = 3.0772525990493e+25;
bool r416387 = r416336 <= r416386;
double r416388 = 1.9923684866322878e+58;
bool r416389 = r416336 <= r416388;
double r416390 = cbrt(r416345);
double r416391 = r416390 * r416390;
double r416392 = r416344 * r416391;
double r416393 = r416390 * r416392;
double r416394 = r416353 + r416393;
double r416395 = r416394 + r416363;
double r416396 = r416389 ? r416395 : r416385;
double r416397 = r416387 ? r416378 : r416396;
double r416398 = r416380 ? r416385 : r416397;
double r416399 = r416366 ? r416378 : r416398;
double r416400 = r416338 ? r416364 : r416399;
return r416400;
}




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.3 |
| Herbie | 11.1 |
if a < -1.6727954938607666e-35Initial program 16.1
Simplified16.1
Taylor expanded around inf 12.9
Simplified11.9
rmApplied add-cube-cbrt12.1
Simplified12.1
Simplified12.1
if -1.6727954938607666e-35 < a < 1.3630754269818753e-173 or 2.7783837854000323e-74 < a < 3.0772525990493e+25Initial program 9.2
Simplified9.2
rmApplied sub-neg9.2
Applied distribute-lft-in9.2
Simplified8.9
Simplified9.4
if 1.3630754269818753e-173 < a < 2.7783837854000323e-74 or 1.9923684866322878e+58 < a Initial program 15.8
Simplified15.8
Taylor expanded around inf 14.2
Simplified13.8
rmApplied pow113.8
Applied pow113.8
Applied pow-prod-down13.8
Applied pow113.8
Applied pow-prod-down13.8
Simplified14.2
if 3.0772525990493e+25 < a < 1.9923684866322878e+58Initial program 11.6
Simplified11.6
Taylor expanded around inf 10.7
Simplified9.1
rmApplied add-cube-cbrt9.4
Applied associate-*r*9.4
Simplified9.4
Final simplification11.1
herbie shell --seed 2019195
(FPCore (x y z t a b c i j)
:name "Linear.Matrix:det33 from linear-1.19.1.3"
:herbie-target
(if (< t -8.120978919195912e-33) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t -4.712553818218485e-169) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2.0) (pow (* i y) 2.0))) (+ (* c t) (* i y)))) (if (< t -7.633533346031584e-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.0) (pow (* i y) 2.0))) (+ (* 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)))))