\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 -8757011.53356274776160717010498046875:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + b \cdot \left(-i \cdot a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;x \le 20797617278881095164624896:\\
\;\;\;\;\left(\left(\left(x \cdot y\right) \cdot z + \left(-a \cdot \left(x \cdot t\right)\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\right)\right)\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(-\left(i \cdot j\right) \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 r403172 = x;
double r403173 = y;
double r403174 = z;
double r403175 = r403173 * r403174;
double r403176 = t;
double r403177 = a;
double r403178 = r403176 * r403177;
double r403179 = r403175 - r403178;
double r403180 = r403172 * r403179;
double r403181 = b;
double r403182 = c;
double r403183 = r403182 * r403174;
double r403184 = i;
double r403185 = r403184 * r403177;
double r403186 = r403183 - r403185;
double r403187 = r403181 * r403186;
double r403188 = r403180 - r403187;
double r403189 = j;
double r403190 = r403182 * r403176;
double r403191 = r403184 * r403173;
double r403192 = r403190 - r403191;
double r403193 = r403189 * r403192;
double r403194 = r403188 + r403193;
return r403194;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r403195 = x;
double r403196 = -8757011.533562748;
bool r403197 = r403195 <= r403196;
double r403198 = y;
double r403199 = z;
double r403200 = r403198 * r403199;
double r403201 = t;
double r403202 = a;
double r403203 = r403201 * r403202;
double r403204 = r403200 - r403203;
double r403205 = r403195 * r403204;
double r403206 = b;
double r403207 = c;
double r403208 = r403206 * r403207;
double r403209 = r403199 * r403208;
double r403210 = i;
double r403211 = r403210 * r403202;
double r403212 = -r403211;
double r403213 = r403206 * r403212;
double r403214 = r403209 + r403213;
double r403215 = r403205 - r403214;
double r403216 = j;
double r403217 = r403207 * r403201;
double r403218 = r403210 * r403198;
double r403219 = r403217 - r403218;
double r403220 = r403216 * r403219;
double r403221 = r403215 + r403220;
double r403222 = 2.0797617278881095e+25;
bool r403223 = r403195 <= r403222;
double r403224 = r403195 * r403198;
double r403225 = r403224 * r403199;
double r403226 = r403195 * r403201;
double r403227 = r403202 * r403226;
double r403228 = -r403227;
double r403229 = r403225 + r403228;
double r403230 = r403207 * r403199;
double r403231 = r403230 - r403211;
double r403232 = r403206 * r403231;
double r403233 = r403229 - r403232;
double r403234 = r403216 * r403207;
double r403235 = r403201 * r403234;
double r403236 = r403216 * r403198;
double r403237 = r403210 * r403236;
double r403238 = -r403237;
double r403239 = r403235 + r403238;
double r403240 = r403233 + r403239;
double r403241 = r403205 - r403232;
double r403242 = r403210 * r403216;
double r403243 = r403242 * r403198;
double r403244 = -r403243;
double r403245 = r403235 + r403244;
double r403246 = r403241 + r403245;
double r403247 = r403223 ? r403240 : r403246;
double r403248 = r403197 ? r403221 : r403247;
return r403248;
}




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.7 |
|---|---|
| Target | 15.6 |
| Herbie | 9.3 |
if x < -8757011.533562748Initial program 6.8
rmApplied sub-neg6.8
Applied distribute-lft-in6.8
Simplified7.2
if -8757011.533562748 < x < 2.0797617278881095e+25Initial program 14.7
rmApplied sub-neg14.7
Applied distribute-lft-in14.7
Simplified15.1
Simplified15.2
rmApplied sub-neg15.2
Applied distribute-lft-in15.2
Simplified12.6
rmApplied associate-*r*10.3
if 2.0797617278881095e+25 < x Initial program 6.2
rmApplied sub-neg6.2
Applied distribute-lft-in6.2
Simplified7.0
Simplified6.9
rmApplied associate-*r*7.9
Final simplification9.3
herbie shell --seed 2019305
(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.1209789191959122e-33) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t -4.7125538182184851e-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.63353334603158369e-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)))))