\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 6.505647406761650844782775648491058656638 \cdot 10^{-159}:\\
\;\;\;\;\left(\left(x \cdot \left(z \cdot y\right) + \left(-a \cdot \left(x \cdot t\right)\right)\right) - 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 r35970507 = x;
double r35970508 = y;
double r35970509 = z;
double r35970510 = r35970508 * r35970509;
double r35970511 = t;
double r35970512 = a;
double r35970513 = r35970511 * r35970512;
double r35970514 = r35970510 - r35970513;
double r35970515 = r35970507 * r35970514;
double r35970516 = b;
double r35970517 = c;
double r35970518 = r35970517 * r35970509;
double r35970519 = i;
double r35970520 = r35970519 * r35970512;
double r35970521 = r35970518 - r35970520;
double r35970522 = r35970516 * r35970521;
double r35970523 = r35970515 - r35970522;
double r35970524 = j;
double r35970525 = r35970517 * r35970511;
double r35970526 = r35970519 * r35970508;
double r35970527 = r35970525 - r35970526;
double r35970528 = r35970524 * r35970527;
double r35970529 = r35970523 + r35970528;
return r35970529;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r35970530 = x;
double r35970531 = 6.505647406761651e-159;
bool r35970532 = r35970530 <= r35970531;
double r35970533 = z;
double r35970534 = y;
double r35970535 = r35970533 * r35970534;
double r35970536 = r35970530 * r35970535;
double r35970537 = a;
double r35970538 = t;
double r35970539 = r35970530 * r35970538;
double r35970540 = r35970537 * r35970539;
double r35970541 = -r35970540;
double r35970542 = r35970536 + r35970541;
double r35970543 = b;
double r35970544 = c;
double r35970545 = r35970544 * r35970533;
double r35970546 = i;
double r35970547 = r35970546 * r35970537;
double r35970548 = r35970545 - r35970547;
double r35970549 = r35970543 * r35970548;
double r35970550 = r35970542 - r35970549;
double r35970551 = j;
double r35970552 = r35970544 * r35970538;
double r35970553 = r35970546 * r35970534;
double r35970554 = r35970552 - r35970553;
double r35970555 = r35970551 * r35970554;
double r35970556 = r35970550 + r35970555;
double r35970557 = sqrt(r35970530);
double r35970558 = r35970534 * r35970533;
double r35970559 = r35970538 * r35970537;
double r35970560 = r35970558 - r35970559;
double r35970561 = r35970557 * r35970560;
double r35970562 = r35970557 * r35970561;
double r35970563 = r35970562 - r35970549;
double r35970564 = r35970563 + r35970555;
double r35970565 = r35970532 ? r35970556 : r35970564;
return r35970565;
}




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.2 |
|---|---|
| Target | 16.3 |
| Herbie | 12.0 |
if x < 6.505647406761651e-159Initial program 13.3
rmApplied add-cube-cbrt13.6
Applied associate-*l*13.6
rmApplied sub-neg13.6
Applied distribute-lft-in13.6
Applied distribute-lft-in13.6
Simplified13.5
Simplified13.0
if 6.505647406761651e-159 < x Initial program 10.1
rmApplied add-sqr-sqrt10.2
Applied associate-*l*10.3
Final simplification12.0
herbie shell --seed 2019174
(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)))))