\frac{\tan \left(\frac{x}{y \cdot 2}\right)}{\sin \left(\frac{x}{y \cdot 2}\right)}\begin{array}{l}
\mathbf{if}\;\frac{\tan \left(\frac{x}{y \cdot 2}\right)}{\sin \left(\frac{x}{y \cdot 2}\right)} \le 1.770366858518491293139618392160627990961:\\
\;\;\;\;\frac{\sin \left(\frac{x}{y \cdot 2}\right)}{\sin \left(\frac{x}{y \cdot 2}\right) \cdot \log \left(e^{\cos \left(\frac{x}{y \cdot 2}\right)}\right)}\\
\mathbf{else}:\\
\;\;\;\;1\\
\end{array}double f(double x, double y) {
double r404059 = x;
double r404060 = y;
double r404061 = 2.0;
double r404062 = r404060 * r404061;
double r404063 = r404059 / r404062;
double r404064 = tan(r404063);
double r404065 = sin(r404063);
double r404066 = r404064 / r404065;
return r404066;
}
double f(double x, double y) {
double r404067 = x;
double r404068 = y;
double r404069 = 2.0;
double r404070 = r404068 * r404069;
double r404071 = r404067 / r404070;
double r404072 = tan(r404071);
double r404073 = sin(r404071);
double r404074 = r404072 / r404073;
double r404075 = 1.7703668585184913;
bool r404076 = r404074 <= r404075;
double r404077 = cos(r404071);
double r404078 = exp(r404077);
double r404079 = log(r404078);
double r404080 = r404073 * r404079;
double r404081 = r404073 / r404080;
double r404082 = 1.0;
double r404083 = r404076 ? r404081 : r404082;
return r404083;
}




Bits error versus x




Bits error versus y
Results
| Original | 35.6 |
|---|---|
| Target | 29.0 |
| Herbie | 27.6 |
if (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))) < 1.7703668585184913Initial program 23.9
rmApplied tan-quot23.9
Applied associate-/l/23.9
rmApplied add-log-exp23.9
if 1.7703668585184913 < (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))) Initial program 61.9
Taylor expanded around 0 35.8
Final simplification27.6
herbie shell --seed 2019323
(FPCore (x y)
:name "Diagrams.TwoD.Layout.CirclePacking:approxRadius from diagrams-contrib-1.3.0.5"
:precision binary64
:herbie-target
(if (< y -1.2303690911306994e+114) 1 (if (< y -9.102852406811914e-222) (/ (sin (/ x (* y 2))) (* (sin (/ x (* y 2))) (log (exp (cos (/ x (* y 2))))))) 1))
(/ (tan (/ x (* y 2))) (sin (/ x (* y 2)))))