\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\frac{\frac{\frac{\cos th \cdot \mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}{\sqrt[3]{\sqrt{2}} \cdot \sqrt[3]{\sqrt{2}}}}{\sqrt[3]{\sqrt[3]{\sqrt{2}}} \cdot \sqrt[3]{\sqrt[3]{\sqrt{2}}}}}{\sqrt[3]{\sqrt[3]{\sqrt{2}}}}double f(double a1, double a2, double th) {
double r140463 = th;
double r140464 = cos(r140463);
double r140465 = 2.0;
double r140466 = sqrt(r140465);
double r140467 = r140464 / r140466;
double r140468 = a1;
double r140469 = r140468 * r140468;
double r140470 = r140467 * r140469;
double r140471 = a2;
double r140472 = r140471 * r140471;
double r140473 = r140467 * r140472;
double r140474 = r140470 + r140473;
return r140474;
}
double f(double a1, double a2, double th) {
double r140475 = th;
double r140476 = cos(r140475);
double r140477 = a1;
double r140478 = a2;
double r140479 = r140478 * r140478;
double r140480 = fma(r140477, r140477, r140479);
double r140481 = r140476 * r140480;
double r140482 = 2.0;
double r140483 = sqrt(r140482);
double r140484 = cbrt(r140483);
double r140485 = r140484 * r140484;
double r140486 = r140481 / r140485;
double r140487 = cbrt(r140484);
double r140488 = r140487 * r140487;
double r140489 = r140486 / r140488;
double r140490 = r140489 / r140487;
return r140490;
}



Bits error versus a1



Bits error versus a2



Bits error versus th
Initial program 0.5
Simplified0.5
rmApplied add-cube-cbrt0.5
Applied associate-/r*0.5
rmApplied add-cube-cbrt0.5
Applied associate-/r*0.5
Final simplification0.5
herbie shell --seed 2020020 +o rules:numerics
(FPCore (a1 a2 th)
:name "Migdal et al, Equation (64)"
:precision binary64
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))