\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 -7.230020761502895504952278131466171914023 \cdot 10^{-109}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \left(\sqrt[3]{b} \cdot \left(c \cdot z - i \cdot a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;j \le 2.841837214549664549498805049411080034753 \cdot 10^{59}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + b \cdot \left(-i \cdot a\right)\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + \left(b \cdot i\right) \cdot \left(-a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r382361 = x;
double r382362 = y;
double r382363 = z;
double r382364 = r382362 * r382363;
double r382365 = t;
double r382366 = a;
double r382367 = r382365 * r382366;
double r382368 = r382364 - r382367;
double r382369 = r382361 * r382368;
double r382370 = b;
double r382371 = c;
double r382372 = r382371 * r382363;
double r382373 = i;
double r382374 = r382373 * r382366;
double r382375 = r382372 - r382374;
double r382376 = r382370 * r382375;
double r382377 = r382369 - r382376;
double r382378 = j;
double r382379 = r382371 * r382365;
double r382380 = r382373 * r382362;
double r382381 = r382379 - r382380;
double r382382 = r382378 * r382381;
double r382383 = r382377 + r382382;
return r382383;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r382384 = j;
double r382385 = -7.2300207615028955e-109;
bool r382386 = r382384 <= r382385;
double r382387 = x;
double r382388 = y;
double r382389 = z;
double r382390 = r382388 * r382389;
double r382391 = t;
double r382392 = a;
double r382393 = r382391 * r382392;
double r382394 = r382390 - r382393;
double r382395 = r382387 * r382394;
double r382396 = b;
double r382397 = cbrt(r382396);
double r382398 = r382397 * r382397;
double r382399 = c;
double r382400 = r382399 * r382389;
double r382401 = i;
double r382402 = r382401 * r382392;
double r382403 = r382400 - r382402;
double r382404 = r382397 * r382403;
double r382405 = r382398 * r382404;
double r382406 = r382395 - r382405;
double r382407 = r382399 * r382391;
double r382408 = r382401 * r382388;
double r382409 = r382407 - r382408;
double r382410 = r382384 * r382409;
double r382411 = r382406 + r382410;
double r382412 = 2.8418372145496645e+59;
bool r382413 = r382384 <= r382412;
double r382414 = r382396 * r382399;
double r382415 = r382389 * r382414;
double r382416 = -r382402;
double r382417 = r382396 * r382416;
double r382418 = r382415 + r382417;
double r382419 = r382395 - r382418;
double r382420 = r382384 * r382399;
double r382421 = r382391 * r382420;
double r382422 = r382384 * r382388;
double r382423 = r382401 * r382422;
double r382424 = -r382423;
double r382425 = r382421 + r382424;
double r382426 = r382419 + r382425;
double r382427 = r382396 * r382401;
double r382428 = -r382392;
double r382429 = r382427 * r382428;
double r382430 = r382415 + r382429;
double r382431 = r382395 - r382430;
double r382432 = r382431 + r382410;
double r382433 = r382413 ? r382426 : r382432;
double r382434 = r382386 ? r382411 : r382433;
return r382434;
}




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.1 |
|---|---|
| Target | 15.9 |
| Herbie | 9.6 |
if j < -7.2300207615028955e-109Initial program 8.8
rmApplied add-cube-cbrt9.1
Applied associate-*l*9.1
if -7.2300207615028955e-109 < j < 2.8418372145496645e+59Initial program 15.3
rmApplied sub-neg15.3
Applied distribute-lft-in15.3
Simplified15.5
rmApplied sub-neg15.5
Applied distribute-lft-in15.5
Simplified13.2
Simplified10.5
if 2.8418372145496645e+59 < j Initial program 6.8
rmApplied sub-neg6.8
Applied distribute-lft-in6.8
Simplified7.1
rmApplied distribute-rgt-neg-in7.1
Applied associate-*r*7.5
Final simplification9.6
herbie shell --seed 2019323
(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.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) (pow (* i y) 2))) (+ (* 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) (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)))))