Average Error: 0.5 → 0.5
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{1}{\sqrt{1}} \cdot \frac{\left(\cos th \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}\right) \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}}{\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{1}{\sqrt{1}} \cdot \frac{\left(\cos th \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}\right) \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}}{\sqrt{2}}
double f(double a1, double a2, double th) {
        double r67652 = th;
        double r67653 = cos(r67652);
        double r67654 = 2.0;
        double r67655 = sqrt(r67654);
        double r67656 = r67653 / r67655;
        double r67657 = a1;
        double r67658 = r67657 * r67657;
        double r67659 = r67656 * r67658;
        double r67660 = a2;
        double r67661 = r67660 * r67660;
        double r67662 = r67656 * r67661;
        double r67663 = r67659 + r67662;
        return r67663;
}

double f(double a1, double a2, double th) {
        double r67664 = 1.0;
        double r67665 = sqrt(r67664);
        double r67666 = r67664 / r67665;
        double r67667 = th;
        double r67668 = cos(r67667);
        double r67669 = a1;
        double r67670 = r67669 * r67669;
        double r67671 = a2;
        double r67672 = r67671 * r67671;
        double r67673 = r67670 + r67672;
        double r67674 = sqrt(r67673);
        double r67675 = r67668 * r67674;
        double r67676 = r67675 * r67674;
        double r67677 = 2.0;
        double r67678 = sqrt(r67677);
        double r67679 = r67676 / r67678;
        double r67680 = r67666 * r67679;
        return r67680;
}

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}{\sqrt{2}} \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)}\]
  3. Using strategy rm
  4. Applied *-un-lft-identity0.5

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

    \[\leadsto \frac{\cos th}{\color{blue}{\sqrt{1} \cdot \sqrt{2}}} \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)\]
  6. Applied *-un-lft-identity0.5

    \[\leadsto \frac{\color{blue}{1 \cdot \cos th}}{\sqrt{1} \cdot \sqrt{2}} \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)\]
  7. Applied times-frac0.5

    \[\leadsto \color{blue}{\left(\frac{1}{\sqrt{1}} \cdot \frac{\cos th}{\sqrt{2}}\right)} \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)\]
  8. Applied associate-*l*0.5

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

    \[\leadsto \frac{1}{\sqrt{1}} \cdot \color{blue}{\frac{\cos th \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)}{\sqrt{2}}}\]
  10. Using strategy rm
  11. Applied add-sqr-sqrt0.5

    \[\leadsto \frac{1}{\sqrt{1}} \cdot \frac{\cos th \cdot \color{blue}{\left(\sqrt{a1 \cdot a1 + a2 \cdot a2} \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}\right)}}{\sqrt{2}}\]
  12. Applied associate-*r*0.5

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

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

Reproduce

herbie shell --seed 2020045 
(FPCore (a1 a2 th)
  :name "Migdal et al, Equation (64)"
  :precision binary64
  (+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))