\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 6.505647406761650844782775648491058656638 \cdot 10^{-159}:\\
\;\;\;\;\left(\left(\left(z \cdot y\right) \cdot x + \left(t \cdot x\right) \cdot \left(-a\right)\right) - \left(c \cdot z - i \cdot a\right) \cdot b\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(z \cdot y - t \cdot a\right) \cdot \sqrt{x}\right) \cdot \sqrt{x} - \left(c \cdot z - i \cdot a\right) \cdot b\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 r26900040 = x;
double r26900041 = y;
double r26900042 = z;
double r26900043 = r26900041 * r26900042;
double r26900044 = t;
double r26900045 = a;
double r26900046 = r26900044 * r26900045;
double r26900047 = r26900043 - r26900046;
double r26900048 = r26900040 * r26900047;
double r26900049 = b;
double r26900050 = c;
double r26900051 = r26900050 * r26900042;
double r26900052 = i;
double r26900053 = r26900052 * r26900045;
double r26900054 = r26900051 - r26900053;
double r26900055 = r26900049 * r26900054;
double r26900056 = r26900048 - r26900055;
double r26900057 = j;
double r26900058 = r26900050 * r26900044;
double r26900059 = r26900052 * r26900041;
double r26900060 = r26900058 - r26900059;
double r26900061 = r26900057 * r26900060;
double r26900062 = r26900056 + r26900061;
return r26900062;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r26900063 = x;
double r26900064 = 6.505647406761651e-159;
bool r26900065 = r26900063 <= r26900064;
double r26900066 = z;
double r26900067 = y;
double r26900068 = r26900066 * r26900067;
double r26900069 = r26900068 * r26900063;
double r26900070 = t;
double r26900071 = r26900070 * r26900063;
double r26900072 = a;
double r26900073 = -r26900072;
double r26900074 = r26900071 * r26900073;
double r26900075 = r26900069 + r26900074;
double r26900076 = c;
double r26900077 = r26900076 * r26900066;
double r26900078 = i;
double r26900079 = r26900078 * r26900072;
double r26900080 = r26900077 - r26900079;
double r26900081 = b;
double r26900082 = r26900080 * r26900081;
double r26900083 = r26900075 - r26900082;
double r26900084 = j;
double r26900085 = r26900076 * r26900070;
double r26900086 = r26900078 * r26900067;
double r26900087 = r26900085 - r26900086;
double r26900088 = r26900084 * r26900087;
double r26900089 = r26900083 + r26900088;
double r26900090 = r26900070 * r26900072;
double r26900091 = r26900068 - r26900090;
double r26900092 = sqrt(r26900063);
double r26900093 = r26900091 * r26900092;
double r26900094 = r26900093 * r26900092;
double r26900095 = r26900094 - r26900082;
double r26900096 = r26900095 + r26900088;
double r26900097 = r26900065 ? r26900089 : r26900096;
return r26900097;
}




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 | 16.3 |
| Herbie | 12.0 |
if x < 6.505647406761651e-159Initial program 13.3
rmApplied add-cube-cbrt13.6
Applied associate-*l*13.6
rmApplied sub-neg13.6
Applied distribute-lft-in13.6
Applied distribute-lft-in13.6
Simplified13.5
Simplified13.0
if 6.505647406761651e-159 < x Initial program 10.1
rmApplied add-sqr-sqrt10.2
Applied associate-*l*10.3
Final simplification12.0
herbie shell --seed 2019174
(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.0) (pow (* i y) 2.0))) (+ (* 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.0) (pow (* i y) 2.0))) (+ (* 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)))))