Average Error: 0.5 → 0.5
Time: 25.0s
Precision: 64
\[\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\]
\[\left(\frac{a2}{\frac{\sqrt{2}}{a2}} + \frac{a1 \cdot a1}{\sqrt{2}}\right) \cdot \cos th\]
\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)
\left(\frac{a2}{\frac{\sqrt{2}}{a2}} + \frac{a1 \cdot a1}{\sqrt{2}}\right) \cdot \cos th
double f(double a1, double a2, double th) {
        double r2081806 = th;
        double r2081807 = cos(r2081806);
        double r2081808 = 2.0;
        double r2081809 = sqrt(r2081808);
        double r2081810 = r2081807 / r2081809;
        double r2081811 = a1;
        double r2081812 = r2081811 * r2081811;
        double r2081813 = r2081810 * r2081812;
        double r2081814 = a2;
        double r2081815 = r2081814 * r2081814;
        double r2081816 = r2081810 * r2081815;
        double r2081817 = r2081813 + r2081816;
        return r2081817;
}

double f(double a1, double a2, double th) {
        double r2081818 = a2;
        double r2081819 = 2.0;
        double r2081820 = sqrt(r2081819);
        double r2081821 = r2081820 / r2081818;
        double r2081822 = r2081818 / r2081821;
        double r2081823 = a1;
        double r2081824 = r2081823 * r2081823;
        double r2081825 = r2081824 / r2081820;
        double r2081826 = r2081822 + r2081825;
        double r2081827 = th;
        double r2081828 = cos(r2081827);
        double r2081829 = r2081826 * r2081828;
        return r2081829;
}

Error

Bits error versus a1

Bits error versus a2

Bits error versus th

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.5

    \[\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\]
  2. Simplified0.5

    \[\leadsto \color{blue}{\cos th \cdot \frac{\mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}{\sqrt{2}}}\]
  3. Taylor expanded around 0 0.5

    \[\leadsto \cos th \cdot \color{blue}{\left(\frac{{a2}^{2}}{\sqrt{2}} + \frac{{a1}^{2}}{\sqrt{2}}\right)}\]
  4. Simplified0.5

    \[\leadsto \cos th \cdot \color{blue}{\left(\frac{a2 \cdot a2}{\sqrt{2}} + \frac{a1 \cdot a1}{\sqrt{2}}\right)}\]
  5. Using strategy rm
  6. Applied associate-/l*0.5

    \[\leadsto \cos th \cdot \left(\color{blue}{\frac{a2}{\frac{\sqrt{2}}{a2}}} + \frac{a1 \cdot a1}{\sqrt{2}}\right)\]
  7. Final simplification0.5

    \[\leadsto \left(\frac{a2}{\frac{\sqrt{2}}{a2}} + \frac{a1 \cdot a1}{\sqrt{2}}\right) \cdot \cos th\]

Reproduce

herbie shell --seed 2019172 +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))))