\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 -4.4898681204567659 \cdot 10^{122}:\\
\;\;\;\;\left(\left(\sqrt[3]{x \cdot \left(y \cdot z - t \cdot a\right)} \cdot \sqrt[3]{x \cdot \left(y \cdot z - t \cdot a\right)}\right) \cdot \sqrt[3]{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)\\
\mathbf{elif}\;j \le 4.2792569441990407 \cdot 10^{99}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\left(t \cdot j\right) \cdot c + \left(-\left(i \cdot j\right) \cdot y\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + \left(-i \cdot a\right) \cdot b\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 r483654 = x;
double r483655 = y;
double r483656 = z;
double r483657 = r483655 * r483656;
double r483658 = t;
double r483659 = a;
double r483660 = r483658 * r483659;
double r483661 = r483657 - r483660;
double r483662 = r483654 * r483661;
double r483663 = b;
double r483664 = c;
double r483665 = r483664 * r483656;
double r483666 = i;
double r483667 = r483666 * r483659;
double r483668 = r483665 - r483667;
double r483669 = r483663 * r483668;
double r483670 = r483662 - r483669;
double r483671 = j;
double r483672 = r483664 * r483658;
double r483673 = r483666 * r483655;
double r483674 = r483672 - r483673;
double r483675 = r483671 * r483674;
double r483676 = r483670 + r483675;
return r483676;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r483677 = j;
double r483678 = -4.489868120456766e+122;
bool r483679 = r483677 <= r483678;
double r483680 = x;
double r483681 = y;
double r483682 = z;
double r483683 = r483681 * r483682;
double r483684 = t;
double r483685 = a;
double r483686 = r483684 * r483685;
double r483687 = r483683 - r483686;
double r483688 = r483680 * r483687;
double r483689 = cbrt(r483688);
double r483690 = r483689 * r483689;
double r483691 = r483690 * r483689;
double r483692 = b;
double r483693 = c;
double r483694 = r483693 * r483682;
double r483695 = i;
double r483696 = r483695 * r483685;
double r483697 = r483694 - r483696;
double r483698 = r483692 * r483697;
double r483699 = r483691 - r483698;
double r483700 = r483693 * r483684;
double r483701 = r483695 * r483681;
double r483702 = r483700 - r483701;
double r483703 = r483677 * r483702;
double r483704 = r483699 + r483703;
double r483705 = 4.2792569441990407e+99;
bool r483706 = r483677 <= r483705;
double r483707 = r483688 - r483698;
double r483708 = r483684 * r483677;
double r483709 = r483708 * r483693;
double r483710 = r483695 * r483677;
double r483711 = r483710 * r483681;
double r483712 = -r483711;
double r483713 = r483709 + r483712;
double r483714 = r483707 + r483713;
double r483715 = r483692 * r483693;
double r483716 = r483682 * r483715;
double r483717 = -r483696;
double r483718 = r483717 * r483692;
double r483719 = r483716 + r483718;
double r483720 = r483688 - r483719;
double r483721 = r483720 + r483703;
double r483722 = r483706 ? r483714 : r483721;
double r483723 = r483679 ? r483704 : r483722;
return r483723;
}




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 | 11.9 |
|---|---|
| Target | 15.4 |
| Herbie | 9.3 |
if j < -4.489868120456766e+122Initial program 6.1
rmApplied add-cube-cbrt6.3
if -4.489868120456766e+122 < j < 4.2792569441990407e+99Initial program 13.4
rmApplied sub-neg13.4
Applied distribute-lft-in13.4
Simplified11.8
Simplified10.1
rmApplied associate-*r*10.1
rmApplied associate-*r*10.0
if 4.2792569441990407e+99 < j Initial program 6.1
rmApplied sub-neg6.1
Applied distribute-lft-in6.1
Simplified6.6
Simplified6.6
Final simplification9.3
herbie shell --seed 2020045
(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)))))