\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(x \cdot x\right)\right) \cdot \left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot \left(0.0005064034 + x \cdot \left(0.0001789971 \cdot x\right)\right)\right) + \left(0.0424060604 + 0.0072644182 \cdot \left(x \cdot x\right)\right)\right) + \left(1 + \left(x \cdot x\right) \cdot 0.1049934947\right)}{\left(1 + \left(x \cdot x\right) \cdot \left(\left(0.7715471019 + 0.2909738639 \cdot \left(x \cdot x\right)\right) + \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(0.0694555761 + \left(\left(\left(0.0001789971 \cdot x\right) \cdot x\right) \cdot 2 + 0.0008327945\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right)\right)\right) + \left(0.0140005442 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)} \cdot xdouble f(double x) {
double r5992140 = 1.0;
double r5992141 = /* ERROR: no posit support in C */;
double r5992142 = 0.1049934947;
double r5992143 = /* ERROR: no posit support in C */;
double r5992144 = x;
double r5992145 = r5992144 * r5992144;
double r5992146 = r5992143 * r5992145;
double r5992147 = r5992141 + r5992146;
double r5992148 = 0.0424060604;
double r5992149 = /* ERROR: no posit support in C */;
double r5992150 = r5992145 * r5992145;
double r5992151 = r5992149 * r5992150;
double r5992152 = r5992147 + r5992151;
double r5992153 = 0.0072644182;
double r5992154 = /* ERROR: no posit support in C */;
double r5992155 = r5992150 * r5992145;
double r5992156 = r5992154 * r5992155;
double r5992157 = r5992152 + r5992156;
double r5992158 = 0.0005064034;
double r5992159 = /* ERROR: no posit support in C */;
double r5992160 = r5992155 * r5992145;
double r5992161 = r5992159 * r5992160;
double r5992162 = r5992157 + r5992161;
double r5992163 = 0.0001789971;
double r5992164 = /* ERROR: no posit support in C */;
double r5992165 = r5992160 * r5992145;
double r5992166 = r5992164 * r5992165;
double r5992167 = r5992162 + r5992166;
double r5992168 = 0.7715471019;
double r5992169 = /* ERROR: no posit support in C */;
double r5992170 = r5992169 * r5992145;
double r5992171 = r5992141 + r5992170;
double r5992172 = 0.2909738639;
double r5992173 = /* ERROR: no posit support in C */;
double r5992174 = r5992173 * r5992150;
double r5992175 = r5992171 + r5992174;
double r5992176 = 0.0694555761;
double r5992177 = /* ERROR: no posit support in C */;
double r5992178 = r5992177 * r5992155;
double r5992179 = r5992175 + r5992178;
double r5992180 = 0.0140005442;
double r5992181 = /* ERROR: no posit support in C */;
double r5992182 = r5992181 * r5992160;
double r5992183 = r5992179 + r5992182;
double r5992184 = 0.0008327945;
double r5992185 = /* ERROR: no posit support in C */;
double r5992186 = r5992185 * r5992165;
double r5992187 = r5992183 + r5992186;
double r5992188 = 2.0;
double r5992189 = /* ERROR: no posit support in C */;
double r5992190 = r5992189 * r5992164;
double r5992191 = r5992165 * r5992145;
double r5992192 = r5992190 * r5992191;
double r5992193 = r5992187 + r5992192;
double r5992194 = r5992167 / r5992193;
double r5992195 = r5992194 * r5992144;
return r5992195;
}
double f(double x) {
double r5992196 = x;
double r5992197 = r5992196 * r5992196;
double r5992198 = r5992197 * r5992197;
double r5992199 = 0.0005064034;
double r5992200 = 0.0001789971;
double r5992201 = r5992200 * r5992196;
double r5992202 = r5992196 * r5992201;
double r5992203 = r5992199 + r5992202;
double r5992204 = r5992197 * r5992203;
double r5992205 = r5992197 * r5992204;
double r5992206 = 0.0424060604;
double r5992207 = 0.0072644182;
double r5992208 = r5992207 * r5992197;
double r5992209 = r5992206 + r5992208;
double r5992210 = r5992205 + r5992209;
double r5992211 = r5992198 * r5992210;
double r5992212 = 1.0;
double r5992213 = 0.1049934947;
double r5992214 = r5992197 * r5992213;
double r5992215 = r5992212 + r5992214;
double r5992216 = r5992211 + r5992215;
double r5992217 = 0.7715471019;
double r5992218 = 0.2909738639;
double r5992219 = r5992218 * r5992197;
double r5992220 = r5992217 + r5992219;
double r5992221 = 0.0694555761;
double r5992222 = r5992201 * r5992196;
double r5992223 = 2.0;
double r5992224 = r5992222 * r5992223;
double r5992225 = 0.0008327945;
double r5992226 = r5992224 + r5992225;
double r5992227 = r5992226 * r5992198;
double r5992228 = r5992221 + r5992227;
double r5992229 = r5992198 * r5992228;
double r5992230 = r5992220 + r5992229;
double r5992231 = r5992197 * r5992230;
double r5992232 = r5992212 + r5992231;
double r5992233 = 0.0140005442;
double r5992234 = r5992233 * r5992198;
double r5992235 = r5992234 * r5992198;
double r5992236 = r5992232 + r5992235;
double r5992237 = r5992216 / r5992236;
double r5992238 = r5992237 * r5992196;
return r5992238;
}



Bits error versus x
Initial program 4.3
Simplified3.6
rmApplied *p16-rgt-identity-expand3.6
Applied associate-/l*3.6
Simplified3.5
rmApplied associate-*r*3.5
rmApplied associate-*l*3.5
Simplified3.5
rmApplied associate-*l*3.5
Final simplification3.5
herbie shell --seed 2019158 +o rules:numerics
(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))