\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(1\right)}{\left(\left(0.1049934947\right) \cdot \left(x \cdot x\right)\right)}\right)}{\left(\left(0.0424060604\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(0.0072644182\right) \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(0.0005064034\right) \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(0.0001789971\right) \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(\frac{\left(1\right)}{\left(\left(0.7715471019\right) \cdot \left(x \cdot x\right)\right)}\right)}{\left(\left(0.2909738639\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(0.0694555761\right) \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(0.0140005442\right) \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(0.0008327945\right) \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}{\left(\left(\left(2\right) \cdot \left(0.0001789971\right)\right) \cdot \left(\left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right)}\right)}\right) \cdot x\frac{\left(\left(x \cdot x\right) \cdot \left(\left(0.0424060604 + \left(0.0072644182 + \left(\left(x \cdot x\right) \cdot 0.0001789971 + 0.0005064034\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right) + 0.1049934947\right) + 1\right) \cdot x}{\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot 0.0140005442\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) + 1\right) + \left(x \cdot x\right) \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(0.0008327945 + \left(0.0001789971 \cdot 2\right) \cdot \left(x \cdot x\right)\right) + 0.0694555761\right) + \left(0.7715471019 + 0.2909738639 \cdot \left(x \cdot x\right)\right)\right)}double f(double x) {
double r5838190 = 1.0;
double r5838191 = /* ERROR: no posit support in C */;
double r5838192 = 0.1049934947;
double r5838193 = /* ERROR: no posit support in C */;
double r5838194 = x;
double r5838195 = r5838194 * r5838194;
double r5838196 = r5838193 * r5838195;
double r5838197 = r5838191 + r5838196;
double r5838198 = 0.0424060604;
double r5838199 = /* ERROR: no posit support in C */;
double r5838200 = r5838195 * r5838195;
double r5838201 = r5838199 * r5838200;
double r5838202 = r5838197 + r5838201;
double r5838203 = 0.0072644182;
double r5838204 = /* ERROR: no posit support in C */;
double r5838205 = r5838200 * r5838195;
double r5838206 = r5838204 * r5838205;
double r5838207 = r5838202 + r5838206;
double r5838208 = 0.0005064034;
double r5838209 = /* ERROR: no posit support in C */;
double r5838210 = r5838205 * r5838195;
double r5838211 = r5838209 * r5838210;
double r5838212 = r5838207 + r5838211;
double r5838213 = 0.0001789971;
double r5838214 = /* ERROR: no posit support in C */;
double r5838215 = r5838210 * r5838195;
double r5838216 = r5838214 * r5838215;
double r5838217 = r5838212 + r5838216;
double r5838218 = 0.7715471019;
double r5838219 = /* ERROR: no posit support in C */;
double r5838220 = r5838219 * r5838195;
double r5838221 = r5838191 + r5838220;
double r5838222 = 0.2909738639;
double r5838223 = /* ERROR: no posit support in C */;
double r5838224 = r5838223 * r5838200;
double r5838225 = r5838221 + r5838224;
double r5838226 = 0.0694555761;
double r5838227 = /* ERROR: no posit support in C */;
double r5838228 = r5838227 * r5838205;
double r5838229 = r5838225 + r5838228;
double r5838230 = 0.0140005442;
double r5838231 = /* ERROR: no posit support in C */;
double r5838232 = r5838231 * r5838210;
double r5838233 = r5838229 + r5838232;
double r5838234 = 0.0008327945;
double r5838235 = /* ERROR: no posit support in C */;
double r5838236 = r5838235 * r5838215;
double r5838237 = r5838233 + r5838236;
double r5838238 = 2.0;
double r5838239 = /* ERROR: no posit support in C */;
double r5838240 = r5838239 * r5838214;
double r5838241 = r5838215 * r5838195;
double r5838242 = r5838240 * r5838241;
double r5838243 = r5838237 + r5838242;
double r5838244 = r5838217 / r5838243;
double r5838245 = r5838244 * r5838194;
return r5838245;
}
double f(double x) {
double r5838246 = x;
double r5838247 = r5838246 * r5838246;
double r5838248 = 0.0424060604;
double r5838249 = 0.0072644182;
double r5838250 = 0.0001789971;
double r5838251 = r5838247 * r5838250;
double r5838252 = 0.0005064034;
double r5838253 = r5838251 + r5838252;
double r5838254 = r5838253 * r5838247;
double r5838255 = r5838249 + r5838254;
double r5838256 = r5838255 * r5838247;
double r5838257 = r5838248 + r5838256;
double r5838258 = r5838257 * r5838247;
double r5838259 = 0.1049934947;
double r5838260 = r5838258 + r5838259;
double r5838261 = r5838247 * r5838260;
double r5838262 = 1.0;
double r5838263 = r5838261 + r5838262;
double r5838264 = r5838263 * r5838246;
double r5838265 = r5838247 * r5838247;
double r5838266 = 0.0140005442;
double r5838267 = r5838265 * r5838266;
double r5838268 = r5838267 * r5838265;
double r5838269 = r5838268 + r5838262;
double r5838270 = 0.0008327945;
double r5838271 = 2.0;
double r5838272 = r5838250 * r5838271;
double r5838273 = r5838272 * r5838247;
double r5838274 = r5838270 + r5838273;
double r5838275 = r5838265 * r5838274;
double r5838276 = 0.0694555761;
double r5838277 = r5838275 + r5838276;
double r5838278 = r5838265 * r5838277;
double r5838279 = 0.7715471019;
double r5838280 = 0.2909738639;
double r5838281 = r5838280 * r5838247;
double r5838282 = r5838279 + r5838281;
double r5838283 = r5838278 + r5838282;
double r5838284 = r5838247 * r5838283;
double r5838285 = r5838269 + r5838284;
double r5838286 = r5838264 / r5838285;
return r5838286;
}



Bits error versus x
Initial program 4.3
Simplified3.6
rmApplied associate-*l*3.5
rmApplied p16-*-un-lft-identity3.5
Applied associate-/r*3.5
Simplified3.5
Simplified3.3
rmApplied p16-*-un-lft-identity3.3
Applied associate-/r*3.3
Simplified3.4
Final simplification3.4
herbie shell --seed 2019163
(FPCore (x)
:name "Jmat.Real.dawson"
(*.p16 (/.p16 (+.p16 (+.p16 (+.p16 (+.p16 (+.p16 (real->posit16 1) (*.p16 (real->posit16 0.1049934947) (*.p16 x x))) (*.p16 (real->posit16 0.0424060604) (*.p16 (*.p16 x x) (*.p16 x x)))) (*.p16 (real->posit16 0.0072644182) (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)))) (*.p16 (real->posit16 0.0005064034) (*.p16 (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)))) (*.p16 (real->posit16 0.0001789971) (*.p16 (*.p16 (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)))) (+.p16 (+.p16 (+.p16 (+.p16 (+.p16 (+.p16 (real->posit16 1) (*.p16 (real->posit16 0.7715471019) (*.p16 x x))) (*.p16 (real->posit16 0.2909738639) (*.p16 (*.p16 x x) (*.p16 x x)))) (*.p16 (real->posit16 0.0694555761) (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)))) (*.p16 (real->posit16 0.0140005442) (*.p16 (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)))) (*.p16 (real->posit16 0.0008327945) (*.p16 (*.p16 (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)))) (*.p16 (*.p16 (real->posit16 2) (real->posit16 0.0001789971)) (*.p16 (*.p16 (*.p16 (*.p16 (*.p16 (*.p16 x x) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)) (*.p16 x x)) (*.p16 x x))))) x))