\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)
\begin{array}{l}
\mathbf{if}\;i \le -8.74408787823680895778261987344205963442 \cdot 10^{88}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(k \cdot \left(i \cdot \left(z \cdot y1\right)\right) - \left(i \cdot \left(j \cdot \left(y1 \cdot x\right)\right) + y0 \cdot \left(z \cdot \left(k \cdot b\right)\right)\right)\right)\right) + \left(\left(x \cdot y2 - z \cdot y3\right) \cdot \left(\sqrt[3]{y0 \cdot c - y1 \cdot a} \cdot \sqrt[3]{y0 \cdot c - y1 \cdot a}\right)\right) \cdot \sqrt[3]{y0 \cdot c - y1 \cdot a}\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;i \le -8.158706521090690724821034295337254001684 \cdot 10^{-228}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(y0 \cdot \left(y3 \cdot \left(j \cdot y5\right) - y2 \cdot \left(k \cdot y5\right)\right) - y1 \cdot \left(y3 \cdot \left(j \cdot y4\right)\right)\right)\\
\mathbf{elif}\;i \le -2.669620811438326382911913231425594683926 \cdot 10^{-276}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(a \cdot \left(y3 \cdot \left(y1 \cdot z\right)\right) - \left(y0 \cdot \left(z \cdot \left(y3 \cdot c\right)\right) + a \cdot \left(x \cdot \left(y2 \cdot y1\right)\right)\right)\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;i \le -1.708567048804727701005981561979909311825 \cdot 10^{-307}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(y0 \cdot \left(y3 \cdot \left(j \cdot y5\right) - y2 \cdot \left(k \cdot y5\right)\right) - y1 \cdot \left(y3 \cdot \left(j \cdot y4\right)\right)\right)\\
\mathbf{elif}\;i \le 8.109006125147522733765394377879583540923 \cdot 10^{-241}:\\
\;\;\;\;\left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right) + \left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(\left(t \cdot y2 - y \cdot y3\right) \cdot \left(\sqrt[3]{y4 \cdot c - y5 \cdot a} \cdot \sqrt[3]{y4 \cdot c - y5 \cdot a}\right)\right) \cdot \sqrt[3]{y4 \cdot c - y5 \cdot a}\right)\\
\mathbf{elif}\;i \le 4.577496372739185874638015994050046305091 \cdot 10^{-17}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(a \cdot \left(y3 \cdot \left(y1 \cdot z\right)\right) - \left(y0 \cdot \left(z \cdot \left(y3 \cdot c\right)\right) + a \cdot \left(x \cdot \left(y2 \cdot y1\right)\right)\right)\right)\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;i \le 2.938920074240578084576727894718378075281 \cdot 10^{121}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(y0 \cdot c - y1 \cdot a\right)\right) + \left(k \cdot \left(i \cdot \left(y \cdot y5\right)\right) - \left(t \cdot \left(i \cdot \left(j \cdot y5\right)\right) + k \cdot \left(y4 \cdot \left(y \cdot b\right)\right)\right)\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(k \cdot \left(i \cdot \left(z \cdot y1\right)\right) - \left(i \cdot \left(j \cdot \left(y1 \cdot x\right)\right) + y0 \cdot \left(z \cdot \left(k \cdot b\right)\right)\right)\right)\right) + \left(\left(x \cdot y2 - z \cdot y3\right) \cdot \left(\sqrt[3]{y0 \cdot c - y1 \cdot a} \cdot \sqrt[3]{y0 \cdot c - y1 \cdot a}\right)\right) \cdot \sqrt[3]{y0 \cdot c - y1 \cdot a}\right) + \left(t \cdot j - y \cdot k\right) \cdot \left(y4 \cdot b - y5 \cdot i\right)\right) - \left(t \cdot y2 - y \cdot y3\right) \cdot \left(y4 \cdot c - y5 \cdot a\right)\right) + \left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k, double y0, double y1, double y2, double y3, double y4, double y5) {
double r418514 = x;
double r418515 = y;
double r418516 = r418514 * r418515;
double r418517 = z;
double r418518 = t;
double r418519 = r418517 * r418518;
double r418520 = r418516 - r418519;
double r418521 = a;
double r418522 = b;
double r418523 = r418521 * r418522;
double r418524 = c;
double r418525 = i;
double r418526 = r418524 * r418525;
double r418527 = r418523 - r418526;
double r418528 = r418520 * r418527;
double r418529 = j;
double r418530 = r418514 * r418529;
double r418531 = k;
double r418532 = r418517 * r418531;
double r418533 = r418530 - r418532;
double r418534 = y0;
double r418535 = r418534 * r418522;
double r418536 = y1;
double r418537 = r418536 * r418525;
double r418538 = r418535 - r418537;
double r418539 = r418533 * r418538;
double r418540 = r418528 - r418539;
double r418541 = y2;
double r418542 = r418514 * r418541;
double r418543 = y3;
double r418544 = r418517 * r418543;
double r418545 = r418542 - r418544;
double r418546 = r418534 * r418524;
double r418547 = r418536 * r418521;
double r418548 = r418546 - r418547;
double r418549 = r418545 * r418548;
double r418550 = r418540 + r418549;
double r418551 = r418518 * r418529;
double r418552 = r418515 * r418531;
double r418553 = r418551 - r418552;
double r418554 = y4;
double r418555 = r418554 * r418522;
double r418556 = y5;
double r418557 = r418556 * r418525;
double r418558 = r418555 - r418557;
double r418559 = r418553 * r418558;
double r418560 = r418550 + r418559;
double r418561 = r418518 * r418541;
double r418562 = r418515 * r418543;
double r418563 = r418561 - r418562;
double r418564 = r418554 * r418524;
double r418565 = r418556 * r418521;
double r418566 = r418564 - r418565;
double r418567 = r418563 * r418566;
double r418568 = r418560 - r418567;
double r418569 = r418531 * r418541;
double r418570 = r418529 * r418543;
double r418571 = r418569 - r418570;
double r418572 = r418554 * r418536;
double r418573 = r418556 * r418534;
double r418574 = r418572 - r418573;
double r418575 = r418571 * r418574;
double r418576 = r418568 + r418575;
return r418576;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k, double y0, double y1, double y2, double y3, double y4, double y5) {
double r418577 = i;
double r418578 = -8.744087878236809e+88;
bool r418579 = r418577 <= r418578;
double r418580 = x;
double r418581 = y;
double r418582 = r418580 * r418581;
double r418583 = z;
double r418584 = t;
double r418585 = r418583 * r418584;
double r418586 = r418582 - r418585;
double r418587 = a;
double r418588 = b;
double r418589 = r418587 * r418588;
double r418590 = c;
double r418591 = r418590 * r418577;
double r418592 = r418589 - r418591;
double r418593 = r418586 * r418592;
double r418594 = k;
double r418595 = y1;
double r418596 = r418583 * r418595;
double r418597 = r418577 * r418596;
double r418598 = r418594 * r418597;
double r418599 = j;
double r418600 = r418595 * r418580;
double r418601 = r418599 * r418600;
double r418602 = r418577 * r418601;
double r418603 = y0;
double r418604 = r418594 * r418588;
double r418605 = r418583 * r418604;
double r418606 = r418603 * r418605;
double r418607 = r418602 + r418606;
double r418608 = r418598 - r418607;
double r418609 = r418593 - r418608;
double r418610 = y2;
double r418611 = r418580 * r418610;
double r418612 = y3;
double r418613 = r418583 * r418612;
double r418614 = r418611 - r418613;
double r418615 = r418603 * r418590;
double r418616 = r418595 * r418587;
double r418617 = r418615 - r418616;
double r418618 = cbrt(r418617);
double r418619 = r418618 * r418618;
double r418620 = r418614 * r418619;
double r418621 = r418620 * r418618;
double r418622 = r418609 + r418621;
double r418623 = r418584 * r418599;
double r418624 = r418581 * r418594;
double r418625 = r418623 - r418624;
double r418626 = y4;
double r418627 = r418626 * r418588;
double r418628 = y5;
double r418629 = r418628 * r418577;
double r418630 = r418627 - r418629;
double r418631 = r418625 * r418630;
double r418632 = r418622 + r418631;
double r418633 = r418584 * r418610;
double r418634 = r418581 * r418612;
double r418635 = r418633 - r418634;
double r418636 = r418626 * r418590;
double r418637 = r418628 * r418587;
double r418638 = r418636 - r418637;
double r418639 = r418635 * r418638;
double r418640 = r418632 - r418639;
double r418641 = r418594 * r418610;
double r418642 = r418599 * r418612;
double r418643 = r418641 - r418642;
double r418644 = r418626 * r418595;
double r418645 = r418628 * r418603;
double r418646 = r418644 - r418645;
double r418647 = r418643 * r418646;
double r418648 = r418640 + r418647;
double r418649 = -8.158706521090691e-228;
bool r418650 = r418577 <= r418649;
double r418651 = r418580 * r418599;
double r418652 = r418583 * r418594;
double r418653 = r418651 - r418652;
double r418654 = r418603 * r418588;
double r418655 = r418595 * r418577;
double r418656 = r418654 - r418655;
double r418657 = r418653 * r418656;
double r418658 = r418593 - r418657;
double r418659 = r418614 * r418617;
double r418660 = r418658 + r418659;
double r418661 = r418660 + r418631;
double r418662 = r418661 - r418639;
double r418663 = r418599 * r418628;
double r418664 = r418612 * r418663;
double r418665 = r418594 * r418628;
double r418666 = r418610 * r418665;
double r418667 = r418664 - r418666;
double r418668 = r418603 * r418667;
double r418669 = r418599 * r418626;
double r418670 = r418612 * r418669;
double r418671 = r418595 * r418670;
double r418672 = r418668 - r418671;
double r418673 = r418662 + r418672;
double r418674 = -2.6696208114383264e-276;
bool r418675 = r418577 <= r418674;
double r418676 = r418595 * r418583;
double r418677 = r418612 * r418676;
double r418678 = r418587 * r418677;
double r418679 = r418612 * r418590;
double r418680 = r418583 * r418679;
double r418681 = r418603 * r418680;
double r418682 = r418610 * r418595;
double r418683 = r418580 * r418682;
double r418684 = r418587 * r418683;
double r418685 = r418681 + r418684;
double r418686 = r418678 - r418685;
double r418687 = r418658 + r418686;
double r418688 = r418687 + r418631;
double r418689 = r418688 - r418639;
double r418690 = r418689 + r418647;
double r418691 = -1.7085670488047277e-307;
bool r418692 = r418577 <= r418691;
double r418693 = 8.109006125147523e-241;
bool r418694 = r418577 <= r418693;
double r418695 = r418593 + r418659;
double r418696 = r418695 + r418631;
double r418697 = cbrt(r418638);
double r418698 = r418697 * r418697;
double r418699 = r418635 * r418698;
double r418700 = r418699 * r418697;
double r418701 = r418696 - r418700;
double r418702 = r418647 + r418701;
double r418703 = 4.577496372739186e-17;
bool r418704 = r418577 <= r418703;
double r418705 = 2.938920074240578e+121;
bool r418706 = r418577 <= r418705;
double r418707 = r418581 * r418628;
double r418708 = r418577 * r418707;
double r418709 = r418594 * r418708;
double r418710 = r418577 * r418663;
double r418711 = r418584 * r418710;
double r418712 = r418581 * r418588;
double r418713 = r418626 * r418712;
double r418714 = r418594 * r418713;
double r418715 = r418711 + r418714;
double r418716 = r418709 - r418715;
double r418717 = r418660 + r418716;
double r418718 = r418717 - r418639;
double r418719 = r418718 + r418647;
double r418720 = r418706 ? r418719 : r418648;
double r418721 = r418704 ? r418690 : r418720;
double r418722 = r418694 ? r418702 : r418721;
double r418723 = r418692 ? r418673 : r418722;
double r418724 = r418675 ? r418690 : r418723;
double r418725 = r418650 ? r418673 : r418724;
double r418726 = r418579 ? r418648 : r418725;
return r418726;
}




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




Bits error versus k




Bits error versus y0




Bits error versus y1




Bits error versus y2




Bits error versus y3




Bits error versus y4




Bits error versus y5
Results
| Original | 27.4 |
|---|---|
| Target | 31.0 |
| Herbie | 29.9 |
if i < -8.744087878236809e+88 or 2.938920074240578e+121 < i Initial program 31.2
rmApplied add-cube-cbrt31.3
Applied associate-*r*31.3
Taylor expanded around inf 30.8
if -8.744087878236809e+88 < i < -8.158706521090691e-228 or -2.6696208114383264e-276 < i < -1.7085670488047277e-307Initial program 26.2
Taylor expanded around inf 29.2
Simplified29.2
if -8.158706521090691e-228 < i < -2.6696208114383264e-276 or 8.109006125147523e-241 < i < 4.577496372739186e-17Initial program 27.1
Taylor expanded around inf 30.8
if -1.7085670488047277e-307 < i < 8.109006125147523e-241Initial program 25.0
rmApplied add-cube-cbrt25.1
Applied associate-*r*25.1
Taylor expanded around 0 28.7
if 4.577496372739186e-17 < i < 2.938920074240578e+121Initial program 27.6
Taylor expanded around inf 28.8
Final simplification29.9
herbie shell --seed 2019326
(FPCore (x y z t a b c i j k y0 y1 y2 y3 y4 y5)
:name "Linear.Matrix:det44 from linear-1.19.1.3"
:precision binary64
:herbie-target
(if (< y4 -7.206256231996481e+60) (- (- (* (- (* b a) (* i c)) (- (* y x) (* t z))) (- (* (- (* j x) (* k z)) (- (* y0 b) (* i y1))) (* (- (* j t) (* k y)) (- (* y4 b) (* y5 i))))) (- (/ (- (* y2 t) (* y3 y)) (/ 1 (- (* y4 c) (* y5 a)))) (* (- (* y2 k) (* y3 j)) (- (* y4 y1) (* y5 y0))))) (if (< y4 -3.364603505246317e-66) (+ (- (- (- (* (* t c) (* i z)) (* (* a t) (* b z))) (* (* y c) (* i x))) (* (- (* b y0) (* i y1)) (- (* j x) (* k z)))) (- (* (- (* y0 c) (* a y1)) (- (* x y2) (* z y3))) (- (* (- (* t y2) (* y y3)) (- (* y4 c) (* a y5))) (* (- (* y1 y4) (* y5 y0)) (- (* k y2) (* j y3)))))) (if (< y4 -1.2000065055686116e-105) (+ (+ (- (* (- (* j t) (* k y)) (- (* y4 b) (* y5 i))) (* (* y3 y) (- (* y5 a) (* y4 c)))) (+ (* (* y5 a) (* t y2)) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* x y2) (* z y3)) (- (* c y0) (* a y1))) (- (* (- (* b y0) (* i y1)) (- (* j x) (* k z))) (* (- (* y x) (* z t)) (- (* b a) (* i c)))))) (if (< y4 6.718963124057495e-279) (+ (- (- (- (* (* k y) (* y5 i)) (* (* y b) (* y4 k))) (* (* y5 t) (* i j))) (- (* (- (* y2 t) (* y3 y)) (- (* y4 c) (* y5 a))) (* (- (* y2 k) (* y3 j)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* b a) (* i c)) (- (* y x) (* t z))) (- (* (- (* j x) (* k z)) (- (* y0 b) (* i y1))) (* (- (* y2 x) (* y3 z)) (- (* c y0) (* y1 a)))))) (if (< y4 4.77962681403792e-222) (+ (+ (- (* (- (* j t) (* k y)) (- (* y4 b) (* y5 i))) (* (* y3 y) (- (* y5 a) (* y4 c)))) (+ (* (* y5 a) (* t y2)) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* x y2) (* z y3)) (- (* c y0) (* a y1))) (- (* (- (* b y0) (* i y1)) (- (* j x) (* k z))) (* (- (* y x) (* z t)) (- (* b a) (* i c)))))) (if (< y4 2.2852241541266835e-175) (+ (- (- (- (* (* k y) (* y5 i)) (* (* y b) (* y4 k))) (* (* y5 t) (* i j))) (- (* (- (* y2 t) (* y3 y)) (- (* y4 c) (* y5 a))) (* (- (* y2 k) (* y3 j)) (- (* y4 y1) (* y5 y0))))) (- (* (- (* b a) (* i c)) (- (* y x) (* t z))) (- (* (- (* j x) (* k z)) (- (* y0 b) (* i y1))) (* (- (* y2 x) (* y3 z)) (- (* c y0) (* y1 a)))))) (+ (- (+ (+ (- (* (- (* x y) (* z t)) (- (* a b) (* c i))) (- (* k (* i (* z y1))) (+ (* j (* i (* x y1))) (* y0 (* k (* z b)))))) (- (* z (* y3 (* a y1))) (+ (* y2 (* x (* a y1))) (* y0 (* z (* c y3)))))) (* (- (* t j) (* y k)) (- (* y4 b) (* y5 i)))) (* (- (* t y2) (* y y3)) (- (* y4 c) (* y5 a)))) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0))))))))))
(+ (- (+ (+ (- (* (- (* x y) (* z t)) (- (* a b) (* c i))) (* (- (* x j) (* z k)) (- (* y0 b) (* y1 i)))) (* (- (* x y2) (* z y3)) (- (* y0 c) (* y1 a)))) (* (- (* t j) (* y k)) (- (* y4 b) (* y5 i)))) (* (- (* t y2) (* y y3)) (- (* y4 c) (* y5 a)))) (* (- (* k y2) (* j y3)) (- (* y4 y1) (* y5 y0)))))