\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.645805544531443 \cdot 10^{-232}:\\
\;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(\left(y \cdot z - a \cdot t\right) \cdot x - \sqrt[3]{b \cdot \left(z \cdot c - i \cdot a\right)} \cdot \left(\sqrt[3]{b \cdot \left(z \cdot c - i \cdot a\right)} \cdot \left(\sqrt[3]{z \cdot c - i \cdot a} \cdot \sqrt[3]{b}\right)\right)\right)\\
\mathbf{elif}\;x \le 2.7793681624166355 \cdot 10^{-219}:\\
\;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(z \cdot c - i \cdot a\right) \cdot \left(-b\right)\\
\mathbf{else}:\\
\;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(\left(y \cdot z - a \cdot t\right) \cdot x - \sqrt[3]{b \cdot \left(z \cdot c - i \cdot a\right)} \cdot \left(\sqrt[3]{b \cdot \left(z \cdot c - i \cdot a\right)} \cdot \left(\sqrt[3]{z \cdot c - i \cdot a} \cdot \sqrt[3]{b}\right)\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r28305083 = x;
double r28305084 = y;
double r28305085 = z;
double r28305086 = r28305084 * r28305085;
double r28305087 = t;
double r28305088 = a;
double r28305089 = r28305087 * r28305088;
double r28305090 = r28305086 - r28305089;
double r28305091 = r28305083 * r28305090;
double r28305092 = b;
double r28305093 = c;
double r28305094 = r28305093 * r28305085;
double r28305095 = i;
double r28305096 = r28305095 * r28305088;
double r28305097 = r28305094 - r28305096;
double r28305098 = r28305092 * r28305097;
double r28305099 = r28305091 - r28305098;
double r28305100 = j;
double r28305101 = r28305093 * r28305087;
double r28305102 = r28305095 * r28305084;
double r28305103 = r28305101 - r28305102;
double r28305104 = r28305100 * r28305103;
double r28305105 = r28305099 + r28305104;
return r28305105;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r28305106 = x;
double r28305107 = -3.645805544531443e-232;
bool r28305108 = r28305106 <= r28305107;
double r28305109 = c;
double r28305110 = t;
double r28305111 = r28305109 * r28305110;
double r28305112 = i;
double r28305113 = y;
double r28305114 = r28305112 * r28305113;
double r28305115 = r28305111 - r28305114;
double r28305116 = j;
double r28305117 = r28305115 * r28305116;
double r28305118 = z;
double r28305119 = r28305113 * r28305118;
double r28305120 = a;
double r28305121 = r28305120 * r28305110;
double r28305122 = r28305119 - r28305121;
double r28305123 = r28305122 * r28305106;
double r28305124 = b;
double r28305125 = r28305118 * r28305109;
double r28305126 = r28305112 * r28305120;
double r28305127 = r28305125 - r28305126;
double r28305128 = r28305124 * r28305127;
double r28305129 = cbrt(r28305128);
double r28305130 = cbrt(r28305127);
double r28305131 = cbrt(r28305124);
double r28305132 = r28305130 * r28305131;
double r28305133 = r28305129 * r28305132;
double r28305134 = r28305129 * r28305133;
double r28305135 = r28305123 - r28305134;
double r28305136 = r28305117 + r28305135;
double r28305137 = 2.7793681624166355e-219;
bool r28305138 = r28305106 <= r28305137;
double r28305139 = -r28305124;
double r28305140 = r28305127 * r28305139;
double r28305141 = r28305117 + r28305140;
double r28305142 = r28305138 ? r28305141 : r28305136;
double r28305143 = r28305108 ? r28305136 : r28305142;
return r28305143;
}




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.3 |
|---|---|
| Target | 14.9 |
| Herbie | 11.2 |
if x < -3.645805544531443e-232 or 2.7793681624166355e-219 < x Initial program 10.1
rmApplied add-cube-cbrt10.4
rmApplied cbrt-prod10.4
if -3.645805544531443e-232 < x < 2.7793681624166355e-219Initial program 16.5
Taylor expanded around 0 15.4
Final simplification11.2
herbie shell --seed 2019158
(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) (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)))))