x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}\begin{array}{l}
\mathbf{if}\;z \le -87077245091641527145418274318303940308890000:\\
\;\;\;\;x + \left(\frac{y}{z} \cdot \left(\frac{t}{z} - 36.52704169880641416057187598198652267456\right) + 3.130605476229999961645944495103321969509 \cdot y\right)\\
\mathbf{elif}\;z \le 177470294739602374656:\\
\;\;\;\;x + y \cdot \frac{\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}{\left(\frac{\left({\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z\right)}^{3} + {31.46901157490000144889563671313226222992}^{3}\right) \cdot z}{\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z\right) \cdot \left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z\right) + \left(31.46901157490000144889563671313226222992 \cdot 31.46901157490000144889563671313226222992 - \left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z\right) \cdot 31.46901157490000144889563671313226222992\right)} + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}\\
\mathbf{else}:\\
\;\;\;\;x + y \cdot \left(\frac{t}{{z}^{2}} + \left(3.130605476229999961645944495103321969509 - \frac{36.52704169880641416057187598198652267456}{z}\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r239190 = x;
double r239191 = y;
double r239192 = z;
double r239193 = 3.13060547623;
double r239194 = r239192 * r239193;
double r239195 = 11.1667541262;
double r239196 = r239194 + r239195;
double r239197 = r239196 * r239192;
double r239198 = t;
double r239199 = r239197 + r239198;
double r239200 = r239199 * r239192;
double r239201 = a;
double r239202 = r239200 + r239201;
double r239203 = r239202 * r239192;
double r239204 = b;
double r239205 = r239203 + r239204;
double r239206 = r239191 * r239205;
double r239207 = 15.234687407;
double r239208 = r239192 + r239207;
double r239209 = r239208 * r239192;
double r239210 = 31.4690115749;
double r239211 = r239209 + r239210;
double r239212 = r239211 * r239192;
double r239213 = 11.9400905721;
double r239214 = r239212 + r239213;
double r239215 = r239214 * r239192;
double r239216 = 0.607771387771;
double r239217 = r239215 + r239216;
double r239218 = r239206 / r239217;
double r239219 = r239190 + r239218;
return r239219;
}
double f(double x, double y, double z, double t, double a, double b) {
double r239220 = z;
double r239221 = -8.707724509164153e+43;
bool r239222 = r239220 <= r239221;
double r239223 = x;
double r239224 = y;
double r239225 = r239224 / r239220;
double r239226 = t;
double r239227 = r239226 / r239220;
double r239228 = 36.527041698806414;
double r239229 = r239227 - r239228;
double r239230 = r239225 * r239229;
double r239231 = 3.13060547623;
double r239232 = r239231 * r239224;
double r239233 = r239230 + r239232;
double r239234 = r239223 + r239233;
double r239235 = 1.7747029473960237e+20;
bool r239236 = r239220 <= r239235;
double r239237 = r239220 * r239231;
double r239238 = 11.1667541262;
double r239239 = r239237 + r239238;
double r239240 = r239239 * r239220;
double r239241 = r239240 + r239226;
double r239242 = r239241 * r239220;
double r239243 = a;
double r239244 = r239242 + r239243;
double r239245 = r239244 * r239220;
double r239246 = b;
double r239247 = r239245 + r239246;
double r239248 = 15.234687407;
double r239249 = r239220 + r239248;
double r239250 = r239249 * r239220;
double r239251 = 3.0;
double r239252 = pow(r239250, r239251);
double r239253 = 31.4690115749;
double r239254 = pow(r239253, r239251);
double r239255 = r239252 + r239254;
double r239256 = r239255 * r239220;
double r239257 = r239250 * r239250;
double r239258 = r239253 * r239253;
double r239259 = r239250 * r239253;
double r239260 = r239258 - r239259;
double r239261 = r239257 + r239260;
double r239262 = r239256 / r239261;
double r239263 = 11.9400905721;
double r239264 = r239262 + r239263;
double r239265 = r239264 * r239220;
double r239266 = 0.607771387771;
double r239267 = r239265 + r239266;
double r239268 = r239247 / r239267;
double r239269 = r239224 * r239268;
double r239270 = r239223 + r239269;
double r239271 = 2.0;
double r239272 = pow(r239220, r239271);
double r239273 = r239226 / r239272;
double r239274 = r239228 / r239220;
double r239275 = r239231 - r239274;
double r239276 = r239273 + r239275;
double r239277 = r239224 * r239276;
double r239278 = r239223 + r239277;
double r239279 = r239236 ? r239270 : r239278;
double r239280 = r239222 ? r239234 : r239279;
return r239280;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 29.2 |
|---|---|
| Target | 0.9 |
| Herbie | 1.1 |
if z < -8.707724509164153e+43Initial program 60.5
rmApplied add-cube-cbrt60.5
Applied times-frac58.5
Taylor expanded around inf 9.0
Simplified1.3
if -8.707724509164153e+43 < z < 1.7747029473960237e+20Initial program 1.1
rmApplied *-un-lft-identity1.1
Applied times-frac0.5
Simplified0.5
rmApplied flip3-+0.5
Applied associate-*l/0.5
if 1.7747029473960237e+20 < z Initial program 58.1
rmApplied *-un-lft-identity58.1
Applied times-frac55.3
Simplified55.3
Taylor expanded around inf 2.1
Simplified2.1
Final simplification1.1
herbie shell --seed 2019326
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, D"
:precision binary64
:herbie-target
(if (< z -6.499344996252632e+53) (+ x (* (+ (- 3.13060547623 (/ 36.527041698806414 z)) (/ t (* z z))) (/ y 1))) (if (< z 7.066965436914287e+59) (+ x (/ y (/ (+ (* (+ (* (+ (* (+ z 15.234687407) z) 31.4690115749) z) 11.9400905721) z) 0.607771387771) (+ (* (+ (* (+ (* (+ (* z 3.13060547623) 11.1667541262) z) t) z) a) z) b)))) (+ x (* (+ (- 3.13060547623 (/ 36.527041698806414 z)) (/ t (* z z))) (/ y 1)))))
(+ x (/ (* y (+ (* (+ (* (+ (* (+ (* z 3.13060547623) 11.1667541262) z) t) z) a) z) b)) (+ (* (+ (* (+ (* (+ z 15.234687407) z) 31.4690115749) z) 11.9400905721) z) 0.607771387771))))