Average Error: 0.5 → 0.4
Time: 11.8s
Precision: binary64
\[\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right) \]
\[\frac{{\left(\mathsf{hypot}\left(a1, a2\right)\right)}^{2} \cdot \left(\cos th \cdot \sqrt[3]{0.5}\right)}{\frac{1}{{0.5}^{0.16666666666666666}}} \]
\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)
\frac{{\left(\mathsf{hypot}\left(a1, a2\right)\right)}^{2} \cdot \left(\cos th \cdot \sqrt[3]{0.5}\right)}{\frac{1}{{0.5}^{0.16666666666666666}}}
(FPCore (a1 a2 th)
 :precision binary64
 (+
  (* (/ (cos th) (sqrt 2.0)) (* a1 a1))
  (* (/ (cos th) (sqrt 2.0)) (* a2 a2))))
(FPCore (a1 a2 th)
 :precision binary64
 (/
  (* (pow (hypot a1 a2) 2.0) (* (cos th) (cbrt 0.5)))
  (/ 1.0 (pow 0.5 0.16666666666666666))))
double code(double a1, double a2, double th) {
	return ((cos(th) / sqrt(2.0)) * (a1 * a1)) + ((cos(th) / sqrt(2.0)) * (a2 * a2));
}
double code(double a1, double a2, double th) {
	return (pow(hypot(a1, a2), 2.0) * (cos(th) * cbrt(0.5))) / (1.0 / pow(0.5, 0.16666666666666666));
}

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 \mathsf{fma}\left(a1, a1, a2 \cdot a2\right)} \]
  3. Applied egg-rr0.6

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

    \[\leadsto \color{blue}{\left(\left({a1}^{2} + {a2}^{2}\right) \cdot \left(\cos th \cdot \sqrt[3]{0.5}\right)\right) \cdot {\left(\frac{1}{\sqrt{2}}\right)}^{0.3333333333333333}} \]
  5. Applied egg-rr0.4

    \[\leadsto \color{blue}{\frac{{\left(\mathsf{hypot}\left(a1, a2\right)\right)}^{2} \cdot \left(\cos th \cdot \sqrt[3]{0.5}\right)}{\frac{1}{{0.5}^{0.16666666666666666}}}} \]
  6. Final simplification0.4

    \[\leadsto \frac{{\left(\mathsf{hypot}\left(a1, a2\right)\right)}^{2} \cdot \left(\cos th \cdot \sqrt[3]{0.5}\right)}{\frac{1}{{0.5}^{0.16666666666666666}}} \]

Reproduce

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