\cos \left(\frac{K \cdot \left(m + n\right)}{2} - M\right) \cdot e^{\left(-{\left(\frac{m + n}{2} - M\right)}^{2}\right) - \left(\ell - \left|m - n\right|\right)}\frac{1}{e^{{\left(\frac{m + n}{2} - M\right)}^{2} + \left(\ell - \left|m - n\right|\right)}}double f(double K, double m, double n, double M, double l) {
double r155122 = K;
double r155123 = m;
double r155124 = n;
double r155125 = r155123 + r155124;
double r155126 = r155122 * r155125;
double r155127 = 2.0;
double r155128 = r155126 / r155127;
double r155129 = M;
double r155130 = r155128 - r155129;
double r155131 = cos(r155130);
double r155132 = r155125 / r155127;
double r155133 = r155132 - r155129;
double r155134 = pow(r155133, r155127);
double r155135 = -r155134;
double r155136 = l;
double r155137 = r155123 - r155124;
double r155138 = fabs(r155137);
double r155139 = r155136 - r155138;
double r155140 = r155135 - r155139;
double r155141 = exp(r155140);
double r155142 = r155131 * r155141;
return r155142;
}
double f(double __attribute__((unused)) K, double m, double n, double M, double l) {
double r155143 = 1.0;
double r155144 = m;
double r155145 = n;
double r155146 = r155144 + r155145;
double r155147 = 2.0;
double r155148 = r155146 / r155147;
double r155149 = M;
double r155150 = r155148 - r155149;
double r155151 = pow(r155150, r155147);
double r155152 = l;
double r155153 = r155144 - r155145;
double r155154 = fabs(r155153);
double r155155 = r155152 - r155154;
double r155156 = r155151 + r155155;
double r155157 = exp(r155156);
double r155158 = r155143 / r155157;
return r155158;
}



Bits error versus K



Bits error versus m



Bits error versus n



Bits error versus M



Bits error versus l
Results
Initial program 15.5
Simplified15.5
Taylor expanded around 0 1.4
Final simplification1.4
herbie shell --seed 2019199 +o rules:numerics
(FPCore (K m n M l)
:name "Maksimov and Kolovsky, Equation (32)"
(* (cos (- (/ (* K (+ m n)) 2.0) M)) (exp (- (- (pow (- (/ (+ m n) 2.0) M) 2.0)) (- l (fabs (- m n)))))))