Average Error: 0.5 → 0.5
Time: 7.7s
Precision: binary64
\[\]
\[\]
double code(double a1, double a2, double th) {
	return ((double) (((double) (((double) (((double) cos(th)) / ((double) sqrt(2.0)))) * ((double) (a1 * a1)))) + ((double) (((double) (((double) cos(th)) / ((double) sqrt(2.0)))) * ((double) (a2 * a2))))));
}
double code(double a1, double a2, double th) {
	return ((double) (((double) cos(th)) * ((double) (((double) (((double) (((double) (a1 * a1)) + ((double) (a2 * a2)))) / ((double) (((double) cbrt(((double) sqrt(2.0)))) * ((double) cbrt(((double) sqrt(2.0)))))))) / ((double) cbrt(((double) sqrt(2.0))))))));
}

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

    \[\]
  2. Simplified0.5

    \[\leadsto \]
  3. Using strategy rm
  4. Applied add-cube-cbrt0.5

    \[\leadsto \]
  5. Applied associate-/r*0.5

    \[\leadsto \]
  6. Final simplification0.5

    \[\leadsto \]

Reproduce

herbie shell --seed 2020191 
(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))))