\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}\;i \le -8.74408787823680895778261987344205963442 \cdot 10^{88}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(k \cdot \left(i \cdot \left(z \cdot y1\right)\right) - \left(i \cdot \left(j \cdot \left(y1 \cdot x\right)\right) + y0 \cdot \left(z \cdot \left(k \cdot b\right)\right)\right)\right)\right) + \left(\left(x \cdot y2 - z \cdot y3\right) \cdot \left(\sqrt[3]{y0 \cdot c - y1 \cdot a} \cdot \sqrt[3]{y0 \cdot c - y1 \cdot a}\right)\right) \cdot \sqrt[3]{y0 \cdot c - y1 \cdot a}\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}\;i \le -8.158706521090690724821034295337254001684 \cdot 10^{-228}:\\
\;\;\;\;\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(y0 \cdot \left(y3 \cdot \left(j \cdot y5\right) - y2 \cdot \left(k \cdot y5\right)\right) - y1 \cdot \left(y3 \cdot \left(j \cdot y4\right)\right)\right)\\
\mathbf{elif}\;i \le -2.669620811438326382911913231425594683926 \cdot 10^{-276}:\\
\;\;\;\;\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(a \cdot \left(y3 \cdot \left(y1 \cdot z\right)\right) - \left(y0 \cdot \left(z \cdot \left(y3 \cdot c\right)\right) + a \cdot \left(x \cdot \left(y2 \cdot y1\right)\right)\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(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;i \le -1.708567048804727701005981561979909311825 \cdot 10^{-307}:\\
\;\;\;\;\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(y0 \cdot \left(y3 \cdot \left(j \cdot y5\right) - y2 \cdot \left(k \cdot y5\right)\right) - y1 \cdot \left(y3 \cdot \left(j \cdot y4\right)\right)\right)\\
\mathbf{elif}\;i \le 8.109006125147522733765394377879583540923 \cdot 10^{-241}:\\
\;\;\;\;\left(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right) + \left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\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(\left(t \cdot y2 - y \cdot y3\right) \cdot \left(\sqrt[3]{y4 \cdot c - y5 \cdot a} \cdot \sqrt[3]{y4 \cdot c - y5 \cdot a}\right)\right) \cdot \sqrt[3]{y4 \cdot c - y5 \cdot a}\right)\\
\mathbf{elif}\;i \le 4.577496372739185874638015994050046305091 \cdot 10^{-17}:\\
\;\;\;\;\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(a \cdot \left(y3 \cdot \left(y1 \cdot z\right)\right) - \left(y0 \cdot \left(z \cdot \left(y3 \cdot c\right)\right) + a \cdot \left(x \cdot \left(y2 \cdot y1\right)\right)\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(k \cdot y2 - j \cdot y3\right) \cdot \left(y4 \cdot y1 - y5 \cdot y0\right)\\
\mathbf{elif}\;i \le 2.938920074240578084576727894718378075281 \cdot 10^{121}:\\
\;\;\;\;\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(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{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot y - z \cdot t\right) \cdot \left(a \cdot b - c \cdot i\right) - \left(k \cdot \left(i \cdot \left(z \cdot y1\right)\right) - \left(i \cdot \left(j \cdot \left(y1 \cdot x\right)\right) + y0 \cdot \left(z \cdot \left(k \cdot b\right)\right)\right)\right)\right) + \left(\left(x \cdot y2 - z \cdot y3\right) \cdot \left(\sqrt[3]{y0 \cdot c - y1 \cdot a} \cdot \sqrt[3]{y0 \cdot c - y1 \cdot a}\right)\right) \cdot \sqrt[3]{y0 \cdot c - y1 \cdot a}\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)\\
\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 r350064 = x;
double r350065 = y;
double r350066 = r350064 * r350065;
double r350067 = z;
double r350068 = t;
double r350069 = r350067 * r350068;
double r350070 = r350066 - r350069;
double r350071 = a;
double r350072 = b;
double r350073 = r350071 * r350072;
double r350074 = c;
double r350075 = i;
double r350076 = r350074 * r350075;
double r350077 = r350073 - r350076;
double r350078 = r350070 * r350077;
double r350079 = j;
double r350080 = r350064 * r350079;
double r350081 = k;
double r350082 = r350067 * r350081;
double r350083 = r350080 - r350082;
double r350084 = y0;
double r350085 = r350084 * r350072;
double r350086 = y1;
double r350087 = r350086 * r350075;
double r350088 = r350085 - r350087;
double r350089 = r350083 * r350088;
double r350090 = r350078 - r350089;
double r350091 = y2;
double r350092 = r350064 * r350091;
double r350093 = y3;
double r350094 = r350067 * r350093;
double r350095 = r350092 - r350094;
double r350096 = r350084 * r350074;
double r350097 = r350086 * r350071;
double r350098 = r350096 - r350097;
double r350099 = r350095 * r350098;
double r350100 = r350090 + r350099;
double r350101 = r350068 * r350079;
double r350102 = r350065 * r350081;
double r350103 = r350101 - r350102;
double r350104 = y4;
double r350105 = r350104 * r350072;
double r350106 = y5;
double r350107 = r350106 * r350075;
double r350108 = r350105 - r350107;
double r350109 = r350103 * r350108;
double r350110 = r350100 + r350109;
double r350111 = r350068 * r350091;
double r350112 = r350065 * r350093;
double r350113 = r350111 - r350112;
double r350114 = r350104 * r350074;
double r350115 = r350106 * r350071;
double r350116 = r350114 - r350115;
double r350117 = r350113 * r350116;
double r350118 = r350110 - r350117;
double r350119 = r350081 * r350091;
double r350120 = r350079 * r350093;
double r350121 = r350119 - r350120;
double r350122 = r350104 * r350086;
double r350123 = r350106 * r350084;
double r350124 = r350122 - r350123;
double r350125 = r350121 * r350124;
double r350126 = r350118 + r350125;
return r350126;
}
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 r350127 = i;
double r350128 = -8.744087878236809e+88;
bool r350129 = r350127 <= r350128;
double r350130 = x;
double r350131 = y;
double r350132 = r350130 * r350131;
double r350133 = z;
double r350134 = t;
double r350135 = r350133 * r350134;
double r350136 = r350132 - r350135;
double r350137 = a;
double r350138 = b;
double r350139 = r350137 * r350138;
double r350140 = c;
double r350141 = r350140 * r350127;
double r350142 = r350139 - r350141;
double r350143 = r350136 * r350142;
double r350144 = k;
double r350145 = y1;
double r350146 = r350133 * r350145;
double r350147 = r350127 * r350146;
double r350148 = r350144 * r350147;
double r350149 = j;
double r350150 = r350145 * r350130;
double r350151 = r350149 * r350150;
double r350152 = r350127 * r350151;
double r350153 = y0;
double r350154 = r350144 * r350138;
double r350155 = r350133 * r350154;
double r350156 = r350153 * r350155;
double r350157 = r350152 + r350156;
double r350158 = r350148 - r350157;
double r350159 = r350143 - r350158;
double r350160 = y2;
double r350161 = r350130 * r350160;
double r350162 = y3;
double r350163 = r350133 * r350162;
double r350164 = r350161 - r350163;
double r350165 = r350153 * r350140;
double r350166 = r350145 * r350137;
double r350167 = r350165 - r350166;
double r350168 = cbrt(r350167);
double r350169 = r350168 * r350168;
double r350170 = r350164 * r350169;
double r350171 = r350170 * r350168;
double r350172 = r350159 + r350171;
double r350173 = r350134 * r350149;
double r350174 = r350131 * r350144;
double r350175 = r350173 - r350174;
double r350176 = y4;
double r350177 = r350176 * r350138;
double r350178 = y5;
double r350179 = r350178 * r350127;
double r350180 = r350177 - r350179;
double r350181 = r350175 * r350180;
double r350182 = r350172 + r350181;
double r350183 = r350134 * r350160;
double r350184 = r350131 * r350162;
double r350185 = r350183 - r350184;
double r350186 = r350176 * r350140;
double r350187 = r350178 * r350137;
double r350188 = r350186 - r350187;
double r350189 = r350185 * r350188;
double r350190 = r350182 - r350189;
double r350191 = r350144 * r350160;
double r350192 = r350149 * r350162;
double r350193 = r350191 - r350192;
double r350194 = r350176 * r350145;
double r350195 = r350178 * r350153;
double r350196 = r350194 - r350195;
double r350197 = r350193 * r350196;
double r350198 = r350190 + r350197;
double r350199 = -8.158706521090691e-228;
bool r350200 = r350127 <= r350199;
double r350201 = r350130 * r350149;
double r350202 = r350133 * r350144;
double r350203 = r350201 - r350202;
double r350204 = r350153 * r350138;
double r350205 = r350145 * r350127;
double r350206 = r350204 - r350205;
double r350207 = r350203 * r350206;
double r350208 = r350143 - r350207;
double r350209 = r350164 * r350167;
double r350210 = r350208 + r350209;
double r350211 = r350210 + r350181;
double r350212 = r350211 - r350189;
double r350213 = r350149 * r350178;
double r350214 = r350162 * r350213;
double r350215 = r350144 * r350178;
double r350216 = r350160 * r350215;
double r350217 = r350214 - r350216;
double r350218 = r350153 * r350217;
double r350219 = r350149 * r350176;
double r350220 = r350162 * r350219;
double r350221 = r350145 * r350220;
double r350222 = r350218 - r350221;
double r350223 = r350212 + r350222;
double r350224 = -2.6696208114383264e-276;
bool r350225 = r350127 <= r350224;
double r350226 = r350145 * r350133;
double r350227 = r350162 * r350226;
double r350228 = r350137 * r350227;
double r350229 = r350162 * r350140;
double r350230 = r350133 * r350229;
double r350231 = r350153 * r350230;
double r350232 = r350160 * r350145;
double r350233 = r350130 * r350232;
double r350234 = r350137 * r350233;
double r350235 = r350231 + r350234;
double r350236 = r350228 - r350235;
double r350237 = r350208 + r350236;
double r350238 = r350237 + r350181;
double r350239 = r350238 - r350189;
double r350240 = r350239 + r350197;
double r350241 = -1.7085670488047277e-307;
bool r350242 = r350127 <= r350241;
double r350243 = 8.109006125147523e-241;
bool r350244 = r350127 <= r350243;
double r350245 = r350143 + r350209;
double r350246 = r350245 + r350181;
double r350247 = cbrt(r350188);
double r350248 = r350247 * r350247;
double r350249 = r350185 * r350248;
double r350250 = r350249 * r350247;
double r350251 = r350246 - r350250;
double r350252 = r350197 + r350251;
double r350253 = 4.577496372739186e-17;
bool r350254 = r350127 <= r350253;
double r350255 = 2.938920074240578e+121;
bool r350256 = r350127 <= r350255;
double r350257 = r350131 * r350178;
double r350258 = r350127 * r350257;
double r350259 = r350144 * r350258;
double r350260 = r350127 * r350213;
double r350261 = r350134 * r350260;
double r350262 = r350131 * r350138;
double r350263 = r350176 * r350262;
double r350264 = r350144 * r350263;
double r350265 = r350261 + r350264;
double r350266 = r350259 - r350265;
double r350267 = r350210 + r350266;
double r350268 = r350267 - r350189;
double r350269 = r350268 + r350197;
double r350270 = r350256 ? r350269 : r350198;
double r350271 = r350254 ? r350240 : r350270;
double r350272 = r350244 ? r350252 : r350271;
double r350273 = r350242 ? r350223 : r350272;
double r350274 = r350225 ? r350240 : r350273;
double r350275 = r350200 ? r350223 : r350274;
double r350276 = r350129 ? r350198 : r350275;
return r350276;
}




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.4 |
|---|---|
| Target | 31.0 |
| Herbie | 29.9 |
if i < -8.744087878236809e+88 or 2.938920074240578e+121 < i Initial program 31.2
rmApplied add-cube-cbrt31.3
Applied associate-*r*31.3
Taylor expanded around inf 30.8
if -8.744087878236809e+88 < i < -8.158706521090691e-228 or -2.6696208114383264e-276 < i < -1.7085670488047277e-307Initial program 26.2
Taylor expanded around inf 29.2
Simplified29.2
if -8.158706521090691e-228 < i < -2.6696208114383264e-276 or 8.109006125147523e-241 < i < 4.577496372739186e-17Initial program 27.1
Taylor expanded around inf 30.8
if -1.7085670488047277e-307 < i < 8.109006125147523e-241Initial program 25.0
rmApplied add-cube-cbrt25.1
Applied associate-*r*25.1
Taylor expanded around 0 28.7
if 4.577496372739186e-17 < i < 2.938920074240578e+121Initial program 27.6
Taylor expanded around inf 28.8
Final simplification29.9
herbie shell --seed 2019326
(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)))))