\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 -1.72293184840612647 \cdot 10^{114}:\\
\;\;\;\;\left(\left(x \cdot \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right)\right) \cdot \left(\sqrt[3]{\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}} \cdot \sqrt[3]{\sqrt[3]{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{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-j\right) \cdot \left(i \cdot y\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 r542161 = x;
double r542162 = y;
double r542163 = z;
double r542164 = r542162 * r542163;
double r542165 = t;
double r542166 = a;
double r542167 = r542165 * r542166;
double r542168 = r542164 - r542167;
double r542169 = r542161 * r542168;
double r542170 = b;
double r542171 = c;
double r542172 = r542171 * r542163;
double r542173 = i;
double r542174 = r542173 * r542166;
double r542175 = r542172 - r542174;
double r542176 = r542170 * r542175;
double r542177 = r542169 - r542176;
double r542178 = j;
double r542179 = r542171 * r542165;
double r542180 = r542173 * r542162;
double r542181 = r542179 - r542180;
double r542182 = r542178 * r542181;
double r542183 = r542177 + r542182;
return r542183;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r542184 = j;
double r542185 = -1.7229318484061265e+114;
bool r542186 = r542184 <= r542185;
double r542187 = x;
double r542188 = y;
double r542189 = z;
double r542190 = r542188 * r542189;
double r542191 = t;
double r542192 = a;
double r542193 = r542191 * r542192;
double r542194 = r542190 - r542193;
double r542195 = cbrt(r542194);
double r542196 = r542195 * r542195;
double r542197 = r542187 * r542196;
double r542198 = cbrt(r542196);
double r542199 = cbrt(r542195);
double r542200 = r542198 * r542199;
double r542201 = r542197 * r542200;
double r542202 = b;
double r542203 = c;
double r542204 = r542203 * r542189;
double r542205 = i;
double r542206 = r542205 * r542192;
double r542207 = r542204 - r542206;
double r542208 = r542202 * r542207;
double r542209 = r542201 - r542208;
double r542210 = r542203 * r542191;
double r542211 = r542205 * r542188;
double r542212 = r542210 - r542211;
double r542213 = r542184 * r542212;
double r542214 = r542209 + r542213;
double r542215 = r542187 * r542194;
double r542216 = r542215 - r542208;
double r542217 = r542184 * r542203;
double r542218 = r542191 * r542217;
double r542219 = -r542184;
double r542220 = r542219 * r542211;
double r542221 = r542218 + r542220;
double r542222 = r542216 + r542221;
double r542223 = r542186 ? r542214 : r542222;
return r542223;
}




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 | 15.9 |
| Herbie | 11.6 |
if j < -1.7229318484061265e+114Initial program 6.1
rmApplied add-cube-cbrt6.3
Applied associate-*r*6.3
rmApplied add-cube-cbrt6.3
Applied cbrt-prod6.3
if -1.7229318484061265e+114 < j Initial program 12.9
rmApplied add-cube-cbrt13.1
Applied associate-*l*13.1
rmApplied sub-neg13.1
Applied distribute-lft-in13.1
Applied distribute-lft-in13.1
Simplified12.3
Simplified12.2
Final simplification11.6
herbie shell --seed 2020049
(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)))))