\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 -3.3735883346778377 \cdot 10^{-126}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(j \cdot \left(\sqrt[3]{c \cdot t - i \cdot y} \cdot \sqrt[3]{c \cdot t - i \cdot y}\right)\right) \cdot \sqrt[3]{c \cdot t - i \cdot y}\\
\mathbf{elif}\;x \le 1.34472083159762248 \cdot 10^{-129}:\\
\;\;\;\;\left(0 - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt{x} \cdot \left(\sqrt{x} \cdot \left(y \cdot z - t \cdot a\right)\right) - b \cdot \left(c \cdot z - i \cdot a\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 r622521 = x;
double r622522 = y;
double r622523 = z;
double r622524 = r622522 * r622523;
double r622525 = t;
double r622526 = a;
double r622527 = r622525 * r622526;
double r622528 = r622524 - r622527;
double r622529 = r622521 * r622528;
double r622530 = b;
double r622531 = c;
double r622532 = r622531 * r622523;
double r622533 = i;
double r622534 = r622533 * r622526;
double r622535 = r622532 - r622534;
double r622536 = r622530 * r622535;
double r622537 = r622529 - r622536;
double r622538 = j;
double r622539 = r622531 * r622525;
double r622540 = r622533 * r622522;
double r622541 = r622539 - r622540;
double r622542 = r622538 * r622541;
double r622543 = r622537 + r622542;
return r622543;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r622544 = x;
double r622545 = -3.373588334677838e-126;
bool r622546 = r622544 <= r622545;
double r622547 = y;
double r622548 = z;
double r622549 = r622547 * r622548;
double r622550 = t;
double r622551 = a;
double r622552 = r622550 * r622551;
double r622553 = r622549 - r622552;
double r622554 = r622544 * r622553;
double r622555 = b;
double r622556 = c;
double r622557 = r622556 * r622548;
double r622558 = i;
double r622559 = r622558 * r622551;
double r622560 = r622557 - r622559;
double r622561 = r622555 * r622560;
double r622562 = r622554 - r622561;
double r622563 = j;
double r622564 = r622556 * r622550;
double r622565 = r622558 * r622547;
double r622566 = r622564 - r622565;
double r622567 = cbrt(r622566);
double r622568 = r622567 * r622567;
double r622569 = r622563 * r622568;
double r622570 = r622569 * r622567;
double r622571 = r622562 + r622570;
double r622572 = 1.3447208315976225e-129;
bool r622573 = r622544 <= r622572;
double r622574 = 0.0;
double r622575 = r622574 - r622561;
double r622576 = r622563 * r622566;
double r622577 = r622575 + r622576;
double r622578 = sqrt(r622544);
double r622579 = r622578 * r622553;
double r622580 = r622578 * r622579;
double r622581 = r622580 - r622561;
double r622582 = r622581 + r622576;
double r622583 = r622573 ? r622577 : r622582;
double r622584 = r622546 ? r622571 : r622583;
return r622584;
}




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.0 |
|---|---|
| Target | 15.5 |
| Herbie | 12.6 |
if x < -3.373588334677838e-126Initial program 9.8
rmApplied add-cube-cbrt10.1
Applied associate-*r*10.0
if -3.373588334677838e-126 < x < 1.3447208315976225e-129Initial program 16.3
Taylor expanded around 0 17.5
if 1.3447208315976225e-129 < x Initial program 9.3
rmApplied add-sqr-sqrt9.4
Applied associate-*l*9.4
Final simplification12.6
herbie shell --seed 2020062
(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)))))