\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}\;x \le -9.125714986291682273805372429336846047599 \cdot 10^{-87}:\\
\;\;\;\;\left(i \cdot \left(b \cdot a\right) - \left(c \cdot b\right) \cdot z\right) + \left(x \cdot \left(y \cdot z - a \cdot t\right) + \left(c \cdot t - i \cdot y\right) \cdot j\right)\\
\mathbf{elif}\;x \le -5.851479915422898385518905209125160674093 \cdot 10^{-184}:\\
\;\;\;\;\left(\left(\left(i \cdot \sqrt[3]{a}\right) \cdot b\right) \cdot \left(\sqrt[3]{a} \cdot \sqrt[3]{a}\right) - \left(c \cdot b\right) \cdot z\right) + \left(x \cdot \left(y \cdot z - a \cdot t\right) + \left(\left(j \cdot y\right) \cdot \left(-i\right) + \left(j \cdot t\right) \cdot c\right)\right)\\
\mathbf{elif}\;x \le 1.078548306168217375586414278153095298333 \cdot 10^{-171}:\\
\;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(a \cdot \left(i \cdot b\right) - \left(c \cdot b\right) \cdot z\right)\\
\mathbf{elif}\;x \le 357975.87932408344931900501251220703125:\\
\;\;\;\;\left(\left(\left(\left(-i\right) \cdot j\right) \cdot y + \left(c \cdot j\right) \cdot t\right) + x \cdot \left(y \cdot z - a \cdot t\right)\right) + \left(a \cdot \left(i \cdot b\right) - b \cdot \left(z \cdot c\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a \cdot \left(i \cdot b\right) - b \cdot \left(z \cdot c\right)\right) + \left(\left(c \cdot t - i \cdot y\right) \cdot j + \left(\sqrt[3]{x \cdot \left(y \cdot z - a \cdot t\right)} \cdot \sqrt[3]{x \cdot \left(y \cdot z - a \cdot t\right)}\right) \cdot \sqrt[3]{x \cdot \left(y \cdot z - a \cdot t\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 r376309 = x;
double r376310 = y;
double r376311 = z;
double r376312 = r376310 * r376311;
double r376313 = t;
double r376314 = a;
double r376315 = r376313 * r376314;
double r376316 = r376312 - r376315;
double r376317 = r376309 * r376316;
double r376318 = b;
double r376319 = c;
double r376320 = r376319 * r376311;
double r376321 = i;
double r376322 = r376321 * r376314;
double r376323 = r376320 - r376322;
double r376324 = r376318 * r376323;
double r376325 = r376317 - r376324;
double r376326 = j;
double r376327 = r376319 * r376313;
double r376328 = r376321 * r376310;
double r376329 = r376327 - r376328;
double r376330 = r376326 * r376329;
double r376331 = r376325 + r376330;
return r376331;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r376332 = x;
double r376333 = -9.125714986291682e-87;
bool r376334 = r376332 <= r376333;
double r376335 = i;
double r376336 = b;
double r376337 = a;
double r376338 = r376336 * r376337;
double r376339 = r376335 * r376338;
double r376340 = c;
double r376341 = r376340 * r376336;
double r376342 = z;
double r376343 = r376341 * r376342;
double r376344 = r376339 - r376343;
double r376345 = y;
double r376346 = r376345 * r376342;
double r376347 = t;
double r376348 = r376337 * r376347;
double r376349 = r376346 - r376348;
double r376350 = r376332 * r376349;
double r376351 = r376340 * r376347;
double r376352 = r376335 * r376345;
double r376353 = r376351 - r376352;
double r376354 = j;
double r376355 = r376353 * r376354;
double r376356 = r376350 + r376355;
double r376357 = r376344 + r376356;
double r376358 = -5.851479915422898e-184;
bool r376359 = r376332 <= r376358;
double r376360 = cbrt(r376337);
double r376361 = r376335 * r376360;
double r376362 = r376361 * r376336;
double r376363 = r376360 * r376360;
double r376364 = r376362 * r376363;
double r376365 = r376364 - r376343;
double r376366 = r376354 * r376345;
double r376367 = -r376335;
double r376368 = r376366 * r376367;
double r376369 = r376354 * r376347;
double r376370 = r376369 * r376340;
double r376371 = r376368 + r376370;
double r376372 = r376350 + r376371;
double r376373 = r376365 + r376372;
double r376374 = 1.0785483061682174e-171;
bool r376375 = r376332 <= r376374;
double r376376 = r376335 * r376336;
double r376377 = r376337 * r376376;
double r376378 = r376377 - r376343;
double r376379 = r376355 + r376378;
double r376380 = 357975.87932408345;
bool r376381 = r376332 <= r376380;
double r376382 = r376367 * r376354;
double r376383 = r376382 * r376345;
double r376384 = r376340 * r376354;
double r376385 = r376384 * r376347;
double r376386 = r376383 + r376385;
double r376387 = r376386 + r376350;
double r376388 = r376342 * r376340;
double r376389 = r376336 * r376388;
double r376390 = r376377 - r376389;
double r376391 = r376387 + r376390;
double r376392 = cbrt(r376350);
double r376393 = r376392 * r376392;
double r376394 = r376393 * r376392;
double r376395 = r376355 + r376394;
double r376396 = r376390 + r376395;
double r376397 = r376381 ? r376391 : r376396;
double r376398 = r376375 ? r376379 : r376397;
double r376399 = r376359 ? r376373 : r376398;
double r376400 = r376334 ? r376357 : r376399;
return r376400;
}




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.3 |
|---|---|
| Target | 16.3 |
| Herbie | 12.1 |
if x < -9.125714986291682e-87Initial program 8.3
Simplified8.3
Taylor expanded around inf 9.7
Simplified9.8
rmApplied pow19.8
Applied pow19.8
Applied pow-prod-down9.8
Applied pow19.8
Applied pow-prod-down9.8
Simplified9.7
rmApplied add-cube-cbrt9.8
Applied associate-*l*9.8
Simplified8.7
rmApplied pow18.7
Applied pow18.7
Applied pow-prod-down8.7
Applied pow18.7
Applied pow-prod-down8.7
Applied pow18.7
Applied pow18.7
Applied pow-prod-down8.7
Applied pow-prod-down8.7
Simplified8.9
if -9.125714986291682e-87 < x < -5.851479915422898e-184Initial program 15.8
Simplified15.8
Taylor expanded around inf 15.9
Simplified16.1
rmApplied pow116.1
Applied pow116.1
Applied pow-prod-down16.1
Applied pow116.1
Applied pow-prod-down16.1
Simplified15.9
rmApplied add-cube-cbrt16.0
Applied associate-*l*16.0
Simplified15.3
rmApplied sub-neg15.3
Applied distribute-lft-in15.3
Simplified15.6
Simplified15.0
if -5.851479915422898e-184 < x < 1.0785483061682174e-171Initial program 17.8
Simplified17.8
Taylor expanded around inf 16.7
Simplified17.7
rmApplied pow117.7
Applied pow117.7
Applied pow-prod-down17.7
Applied pow117.7
Applied pow-prod-down17.7
Simplified16.7
Taylor expanded around 0 15.7
if 1.0785483061682174e-171 < x < 357975.87932408345Initial program 13.3
Simplified13.3
Taylor expanded around inf 13.0
Simplified13.5
rmApplied sub-neg13.5
Applied distribute-lft-in13.5
Simplified13.4
Simplified12.9
if 357975.87932408345 < x Initial program 7.5
Simplified7.5
Taylor expanded around inf 9.1
Simplified8.8
rmApplied add-cube-cbrt9.3
Final simplification12.1
herbie shell --seed 2019179
(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)))))