\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}\;k \le -5.368824232414785634330611155838197389832 \cdot 10^{-40}:\\
\;\;\;\;\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(\left(\left(x \cdot y2 - z \cdot y3\right) \cdot y0\right) \cdot c + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(-y1 \cdot a\right)\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{elif}\;k \le -3.837734340409034693594451806420869680277 \cdot 10^{-190}:\\
\;\;\;\;\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(\left(\left(x \cdot y2 - z \cdot y3\right) \cdot y0\right) \cdot c + \left(\left(x \cdot y2 - z \cdot y3\right) \cdot \left(-y1\right)\right) \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)\\
\mathbf{elif}\;k \le 4.085379111073638406823244622669453896403 \cdot 10^{-15}:\\
\;\;\;\;\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(\left(\left(x \cdot y2 - z \cdot y3\right) \cdot y0\right) \cdot c + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(-y1 \cdot a\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(y0 \cdot \left(y3 \cdot \left(j \cdot y5\right)\right) - \left(y0 \cdot \left(y2 \cdot \left(k \cdot y5\right)\right) + y1 \cdot \left(y3 \cdot \left(j \cdot y4\right)\right)\right)\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(x \cdot j - z \cdot k\right) \cdot \left(y0 \cdot b - y1 \cdot i\right)\right) + \left(\left(\left(x \cdot y2 - z \cdot y3\right) \cdot y0\right) \cdot c + \left(x \cdot y2 - z \cdot y3\right) \cdot \left(-y1 \cdot a\right)\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)\\
\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 r810068 = x;
double r810069 = y;
double r810070 = r810068 * r810069;
double r810071 = z;
double r810072 = t;
double r810073 = r810071 * r810072;
double r810074 = r810070 - r810073;
double r810075 = a;
double r810076 = b;
double r810077 = r810075 * r810076;
double r810078 = c;
double r810079 = i;
double r810080 = r810078 * r810079;
double r810081 = r810077 - r810080;
double r810082 = r810074 * r810081;
double r810083 = j;
double r810084 = r810068 * r810083;
double r810085 = k;
double r810086 = r810071 * r810085;
double r810087 = r810084 - r810086;
double r810088 = y0;
double r810089 = r810088 * r810076;
double r810090 = y1;
double r810091 = r810090 * r810079;
double r810092 = r810089 - r810091;
double r810093 = r810087 * r810092;
double r810094 = r810082 - r810093;
double r810095 = y2;
double r810096 = r810068 * r810095;
double r810097 = y3;
double r810098 = r810071 * r810097;
double r810099 = r810096 - r810098;
double r810100 = r810088 * r810078;
double r810101 = r810090 * r810075;
double r810102 = r810100 - r810101;
double r810103 = r810099 * r810102;
double r810104 = r810094 + r810103;
double r810105 = r810072 * r810083;
double r810106 = r810069 * r810085;
double r810107 = r810105 - r810106;
double r810108 = y4;
double r810109 = r810108 * r810076;
double r810110 = y5;
double r810111 = r810110 * r810079;
double r810112 = r810109 - r810111;
double r810113 = r810107 * r810112;
double r810114 = r810104 + r810113;
double r810115 = r810072 * r810095;
double r810116 = r810069 * r810097;
double r810117 = r810115 - r810116;
double r810118 = r810108 * r810078;
double r810119 = r810110 * r810075;
double r810120 = r810118 - r810119;
double r810121 = r810117 * r810120;
double r810122 = r810114 - r810121;
double r810123 = r810085 * r810095;
double r810124 = r810083 * r810097;
double r810125 = r810123 - r810124;
double r810126 = r810108 * r810090;
double r810127 = r810110 * r810088;
double r810128 = r810126 - r810127;
double r810129 = r810125 * r810128;
double r810130 = r810122 + r810129;
return r810130;
}
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 r810131 = k;
double r810132 = -5.368824232414786e-40;
bool r810133 = r810131 <= r810132;
double r810134 = x;
double r810135 = y;
double r810136 = r810134 * r810135;
double r810137 = z;
double r810138 = t;
double r810139 = r810137 * r810138;
double r810140 = r810136 - r810139;
double r810141 = a;
double r810142 = b;
double r810143 = r810141 * r810142;
double r810144 = c;
double r810145 = i;
double r810146 = r810144 * r810145;
double r810147 = r810143 - r810146;
double r810148 = r810140 * r810147;
double r810149 = j;
double r810150 = r810134 * r810149;
double r810151 = r810137 * r810131;
double r810152 = r810150 - r810151;
double r810153 = y0;
double r810154 = r810153 * r810142;
double r810155 = y1;
double r810156 = r810155 * r810145;
double r810157 = r810154 - r810156;
double r810158 = r810152 * r810157;
double r810159 = r810148 - r810158;
double r810160 = y2;
double r810161 = r810134 * r810160;
double r810162 = y3;
double r810163 = r810137 * r810162;
double r810164 = r810161 - r810163;
double r810165 = r810164 * r810153;
double r810166 = r810165 * r810144;
double r810167 = r810155 * r810141;
double r810168 = -r810167;
double r810169 = r810164 * r810168;
double r810170 = r810166 + r810169;
double r810171 = r810159 + r810170;
double r810172 = y5;
double r810173 = r810135 * r810172;
double r810174 = r810145 * r810173;
double r810175 = r810131 * r810174;
double r810176 = r810149 * r810172;
double r810177 = r810145 * r810176;
double r810178 = r810138 * r810177;
double r810179 = y4;
double r810180 = r810135 * r810142;
double r810181 = r810179 * r810180;
double r810182 = r810131 * r810181;
double r810183 = r810178 + r810182;
double r810184 = r810175 - r810183;
double r810185 = r810171 + r810184;
double r810186 = r810138 * r810160;
double r810187 = r810135 * r810162;
double r810188 = r810186 - r810187;
double r810189 = r810179 * r810144;
double r810190 = r810172 * r810141;
double r810191 = r810189 - r810190;
double r810192 = r810188 * r810191;
double r810193 = r810185 - r810192;
double r810194 = r810131 * r810160;
double r810195 = r810149 * r810162;
double r810196 = r810194 - r810195;
double r810197 = r810179 * r810155;
double r810198 = r810172 * r810153;
double r810199 = r810197 - r810198;
double r810200 = r810196 * r810199;
double r810201 = r810193 + r810200;
double r810202 = -3.8377343404090347e-190;
bool r810203 = r810131 <= r810202;
double r810204 = -r810155;
double r810205 = r810164 * r810204;
double r810206 = r810205 * r810141;
double r810207 = r810166 + r810206;
double r810208 = r810159 + r810207;
double r810209 = r810138 * r810149;
double r810210 = r810135 * r810131;
double r810211 = r810209 - r810210;
double r810212 = r810179 * r810142;
double r810213 = r810172 * r810145;
double r810214 = r810212 - r810213;
double r810215 = r810211 * r810214;
double r810216 = r810208 + r810215;
double r810217 = r810216 - r810192;
double r810218 = r810217 + r810200;
double r810219 = 4.0853791110736384e-15;
bool r810220 = r810131 <= r810219;
double r810221 = r810171 + r810215;
double r810222 = r810221 - r810192;
double r810223 = r810162 * r810176;
double r810224 = r810153 * r810223;
double r810225 = r810131 * r810172;
double r810226 = r810160 * r810225;
double r810227 = r810153 * r810226;
double r810228 = r810149 * r810179;
double r810229 = r810162 * r810228;
double r810230 = r810155 * r810229;
double r810231 = r810227 + r810230;
double r810232 = r810224 - r810231;
double r810233 = r810222 + r810232;
double r810234 = r810220 ? r810233 : r810201;
double r810235 = r810203 ? r810218 : r810234;
double r810236 = r810133 ? r810201 : r810235;
return r810236;
}




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.5 |
|---|---|
| Target | 31.2 |
| Herbie | 28.3 |
if k < -5.368824232414786e-40 or 4.0853791110736384e-15 < k Initial program 28.2
rmApplied sub-neg28.2
Applied distribute-lft-in28.2
rmApplied associate-*r*28.1
Taylor expanded around inf 28.1
if -5.368824232414786e-40 < k < -3.8377343404090347e-190Initial program 26.4
rmApplied sub-neg26.4
Applied distribute-lft-in26.4
rmApplied associate-*r*27.0
rmApplied distribute-lft-neg-in27.0
Applied associate-*r*27.5
if -3.8377343404090347e-190 < k < 4.0853791110736384e-15Initial program 27.3
rmApplied sub-neg27.3
Applied distribute-lft-in27.3
rmApplied associate-*r*27.9
Taylor expanded around inf 28.7
Final simplification28.3
herbie shell --seed 2019362
(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)))))