\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\left(\frac{\frac{\cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt[3]{\sqrt{2}}}} \cdot \left(a1 \cdot a1\right)\right) \cdot \frac{1}{\sqrt{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}}} + \left(a2 \cdot a2\right) \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\frac{\cos th}{\sqrt{2}}\right)\right)double f(double a1, double a2, double th) {
double r2385567 = th;
double r2385568 = cos(r2385567);
double r2385569 = 2.0;
double r2385570 = sqrt(r2385569);
double r2385571 = r2385568 / r2385570;
double r2385572 = a1;
double r2385573 = r2385572 * r2385572;
double r2385574 = r2385571 * r2385573;
double r2385575 = a2;
double r2385576 = r2385575 * r2385575;
double r2385577 = r2385571 * r2385576;
double r2385578 = r2385574 + r2385577;
return r2385578;
}
double f(double a1, double a2, double th) {
double r2385579 = th;
double r2385580 = cos(r2385579);
double r2385581 = 2.0;
double r2385582 = sqrt(r2385581);
double r2385583 = sqrt(r2385582);
double r2385584 = r2385580 / r2385583;
double r2385585 = cbrt(r2385582);
double r2385586 = sqrt(r2385585);
double r2385587 = r2385584 / r2385586;
double r2385588 = a1;
double r2385589 = r2385588 * r2385588;
double r2385590 = r2385587 * r2385589;
double r2385591 = 1.0;
double r2385592 = r2385585 * r2385585;
double r2385593 = sqrt(r2385592);
double r2385594 = r2385591 / r2385593;
double r2385595 = r2385590 * r2385594;
double r2385596 = a2;
double r2385597 = r2385596 * r2385596;
double r2385598 = r2385580 / r2385582;
double r2385599 = expm1(r2385598);
double r2385600 = log1p(r2385599);
double r2385601 = r2385597 * r2385600;
double r2385602 = r2385595 + r2385601;
return r2385602;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Results
Initial program 0.5
rmApplied add-sqr-sqrt0.5
Applied sqrt-prod0.5
Applied associate-/r*0.5
rmApplied add-cube-cbrt0.5
Applied sqrt-prod0.6
Applied *-un-lft-identity0.6
Applied times-frac0.5
Applied associate-*l*0.5
rmApplied log1p-expm1-u0.5
Final simplification0.5
herbie shell --seed 2019168 +o rules:numerics
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
(+ (* (/ (cos th) (sqrt 2.0)) (* a1 a1)) (* (/ (cos th) (sqrt 2.0)) (* a2 a2))))