\left|\left(ew \cdot \cos t\right) \cdot \cos \tan^{-1} \left(\frac{\left(-eh\right) \cdot \tan t}{ew}\right) - \left(eh \cdot \sin t\right) \cdot \sin \tan^{-1} \left(\frac{\left(-eh\right) \cdot \tan t}{ew}\right)\right|\left|\left(ew \cdot \cos t\right) \cdot \left(\sqrt{\cos \tan^{-1} \left(\frac{\left(-eh\right) \cdot \tan t}{ew}\right)} \cdot \sqrt{\cos \tan^{-1} \left(\frac{eh \cdot \tan t}{ew}\right)}\right) - \left(eh \cdot \sin t\right) \cdot \sin \tan^{-1} \left(\frac{\left(-eh\right) \cdot \tan t}{ew}\right)\right|(FPCore (eh ew t) :precision binary64 (fabs (- (* (* ew (cos t)) (cos (atan (/ (* (- eh) (tan t)) ew)))) (* (* eh (sin t)) (sin (atan (/ (* (- eh) (tan t)) ew)))))))
(FPCore (eh ew t)
:precision binary64
(fabs
(-
(*
(* ew (cos t))
(*
(sqrt (cos (atan (/ (* (- eh) (tan t)) ew))))
(sqrt (cos (atan (/ (* eh (tan t)) ew))))))
(* (* eh (sin t)) (sin (atan (/ (* (- eh) (tan t)) ew)))))))double code(double eh, double ew, double t) {
return fabs(((ew * cos(t)) * cos(atan((-eh * tan(t)) / ew))) - ((eh * sin(t)) * sin(atan((-eh * tan(t)) / ew))));
}
double code(double eh, double ew, double t) {
return fabs(((ew * cos(t)) * (sqrt(cos(atan((-eh * tan(t)) / ew))) * sqrt(cos(atan((eh * tan(t)) / ew))))) - ((eh * sin(t)) * sin(atan((-eh * tan(t)) / ew))));
}






Bits error versus eh






Bits error versus ew






Bits error versus t
Results
| Alternative 1 | |
|---|---|
| Error | 0.1 |
| Cost | 58880 |
| Alternative 2 | |
|---|---|
| Error | 0.6 |
| Cost | 52544 |
| Alternative 3 | |
|---|---|
| Error | 60.5 |
| Cost | 64 |

Initial program 0.1
rmApplied add-sqr-sqrt_binary64_24870.1
rmApplied distribute-lft-neg-out_binary64_24240.1
Applied distribute-frac-neg_binary64_24280.1
Applied atan-neg_binary64_26490.1
Applied cos-neg_binary64_25960.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2021044
(FPCore (eh ew t)
:name "Example 2 from Robby"
:precision binary64
(fabs (- (* (* ew (cos t)) (cos (atan (/ (* (- eh) (tan t)) ew)))) (* (* eh (sin t)) (sin (atan (/ (* (- eh) (tan t)) ew)))))))