Average Error: 0.5 → 0.4
Time: 9.8s
Precision: 64
\[\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\]
\[\frac{\sqrt{\frac{1}{\sqrt{2}}} \cdot \left(\cos th \cdot \left(a2 \cdot a2\right) + \cos th \cdot \left(a1 \cdot a1\right)\right)}{\sqrt{\sqrt{2}}}\]
\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)
\frac{\sqrt{\frac{1}{\sqrt{2}}} \cdot \left(\cos th \cdot \left(a2 \cdot a2\right) + \cos th \cdot \left(a1 \cdot a1\right)\right)}{\sqrt{\sqrt{2}}}
double f(double a1, double a2, double th) {
        double r98777 = th;
        double r98778 = cos(r98777);
        double r98779 = 2.0;
        double r98780 = sqrt(r98779);
        double r98781 = r98778 / r98780;
        double r98782 = a1;
        double r98783 = r98782 * r98782;
        double r98784 = r98781 * r98783;
        double r98785 = a2;
        double r98786 = r98785 * r98785;
        double r98787 = r98781 * r98786;
        double r98788 = r98784 + r98787;
        return r98788;
}

double f(double a1, double a2, double th) {
        double r98789 = 1.0;
        double r98790 = 2.0;
        double r98791 = sqrt(r98790);
        double r98792 = r98789 / r98791;
        double r98793 = sqrt(r98792);
        double r98794 = th;
        double r98795 = cos(r98794);
        double r98796 = a2;
        double r98797 = r98796 * r98796;
        double r98798 = r98795 * r98797;
        double r98799 = a1;
        double r98800 = r98799 * r98799;
        double r98801 = r98795 * r98800;
        double r98802 = r98798 + r98801;
        double r98803 = r98793 * r98802;
        double r98804 = sqrt(r98791);
        double r98805 = r98803 / r98804;
        return r98805;
}

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}{\frac{\cos th \cdot \mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}{\sqrt{2}}}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt0.5

    \[\leadsto \frac{\cos th \cdot \mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}{\sqrt{\color{blue}{\sqrt{2} \cdot \sqrt{2}}}}\]
  5. Applied sqrt-prod0.6

    \[\leadsto \frac{\cos th \cdot \mathsf{fma}\left(a1, a1, a2 \cdot a2\right)}{\color{blue}{\sqrt{\sqrt{2}} \cdot \sqrt{\sqrt{2}}}}\]
  6. Applied associate-/r*0.5

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

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

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

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

Reproduce

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