Average Error: 0.5 → 0.5
Time: 10.3s
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{\frac{1}{\sqrt{2}}}{\frac{1}{\cos th}} \cdot \left(a1 \cdot a1\right) + \left(\frac{\frac{\cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}} \cdot a2\right) \cdot a2\]
\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)
\frac{\frac{1}{\sqrt{2}}}{\frac{1}{\cos th}} \cdot \left(a1 \cdot a1\right) + \left(\frac{\frac{\cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}} \cdot a2\right) \cdot a2
double f(double a1, double a2, double th) {
        double r107571 = th;
        double r107572 = cos(r107571);
        double r107573 = 2.0;
        double r107574 = sqrt(r107573);
        double r107575 = r107572 / r107574;
        double r107576 = a1;
        double r107577 = r107576 * r107576;
        double r107578 = r107575 * r107577;
        double r107579 = a2;
        double r107580 = r107579 * r107579;
        double r107581 = r107575 * r107580;
        double r107582 = r107578 + r107581;
        return r107582;
}

double f(double a1, double a2, double th) {
        double r107583 = 1.0;
        double r107584 = 2.0;
        double r107585 = sqrt(r107584);
        double r107586 = r107583 / r107585;
        double r107587 = th;
        double r107588 = cos(r107587);
        double r107589 = r107583 / r107588;
        double r107590 = r107586 / r107589;
        double r107591 = a1;
        double r107592 = r107591 * r107591;
        double r107593 = r107590 * r107592;
        double r107594 = sqrt(r107585);
        double r107595 = r107588 / r107594;
        double r107596 = r107595 / r107594;
        double r107597 = a2;
        double r107598 = r107596 * r107597;
        double r107599 = r107598 * r107597;
        double r107600 = r107593 + r107599;
        return r107600;
}

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. Using strategy rm
  3. Applied associate-*r*0.5

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

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

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

    \[\leadsto \frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \left(\color{blue}{\frac{\frac{\cos th}{\sqrt{\sqrt{2}}}}{\sqrt{\sqrt{2}}}} \cdot a2\right) \cdot a2\]
  8. Using strategy rm
  9. Applied clear-num0.5

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

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

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

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

Reproduce

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