\frac{2.0 + \left(\left(\sqrt{2.0} \cdot \left(\sin x - \frac{\sin y}{16.0}\right)\right) \cdot \left(\sin y - \frac{\sin x}{16.0}\right)\right) \cdot \left(\cos x - \cos y\right)}{3.0 \cdot \left(\left(1.0 + \frac{\sqrt{5.0} - 1.0}{2.0} \cdot \cos x\right) + \frac{3.0 - \sqrt{5.0}}{2.0} \cdot \cos y\right)}\frac{\frac{\mathsf{fma}\left(\frac{\left(\left(\cos x \cdot \left(\cos x \cdot \cos x\right) - \left(\cos y \cdot \cos y\right) \cdot \cos y\right) \cdot \sqrt{2.0}\right) \cdot \left(\left(\sin x + \frac{\sin y}{16.0}\right) \cdot \left(\sin x - \frac{\sin y}{16.0}\right)\right)}{\left(\left(\cos x \cdot \cos y + \cos y \cdot \cos y\right) + \cos x \cdot \cos x\right) \cdot \left(\sin x + \frac{\sin y}{16.0}\right)}, \sin y - \frac{\sin x}{16.0}, 2.0\right)}{\mathsf{fma}\left(\frac{\frac{3.0 \cdot 3.0 - 5.0}{\sqrt{5.0} + 3.0}}{2.0}, \cos y, \mathsf{fma}\left(\cos x, \frac{\sqrt{5.0} - 1.0}{2.0}, 1.0\right)\right)}}{3.0}double f(double x, double y) {
double r7127565 = 2.0;
double r7127566 = sqrt(r7127565);
double r7127567 = x;
double r7127568 = sin(r7127567);
double r7127569 = y;
double r7127570 = sin(r7127569);
double r7127571 = 16.0;
double r7127572 = r7127570 / r7127571;
double r7127573 = r7127568 - r7127572;
double r7127574 = r7127566 * r7127573;
double r7127575 = r7127568 / r7127571;
double r7127576 = r7127570 - r7127575;
double r7127577 = r7127574 * r7127576;
double r7127578 = cos(r7127567);
double r7127579 = cos(r7127569);
double r7127580 = r7127578 - r7127579;
double r7127581 = r7127577 * r7127580;
double r7127582 = r7127565 + r7127581;
double r7127583 = 3.0;
double r7127584 = 1.0;
double r7127585 = 5.0;
double r7127586 = sqrt(r7127585);
double r7127587 = r7127586 - r7127584;
double r7127588 = r7127587 / r7127565;
double r7127589 = r7127588 * r7127578;
double r7127590 = r7127584 + r7127589;
double r7127591 = r7127583 - r7127586;
double r7127592 = r7127591 / r7127565;
double r7127593 = r7127592 * r7127579;
double r7127594 = r7127590 + r7127593;
double r7127595 = r7127583 * r7127594;
double r7127596 = r7127582 / r7127595;
return r7127596;
}
double f(double x, double y) {
double r7127597 = x;
double r7127598 = cos(r7127597);
double r7127599 = r7127598 * r7127598;
double r7127600 = r7127598 * r7127599;
double r7127601 = y;
double r7127602 = cos(r7127601);
double r7127603 = r7127602 * r7127602;
double r7127604 = r7127603 * r7127602;
double r7127605 = r7127600 - r7127604;
double r7127606 = 2.0;
double r7127607 = sqrt(r7127606);
double r7127608 = r7127605 * r7127607;
double r7127609 = sin(r7127597);
double r7127610 = sin(r7127601);
double r7127611 = 16.0;
double r7127612 = r7127610 / r7127611;
double r7127613 = r7127609 + r7127612;
double r7127614 = r7127609 - r7127612;
double r7127615 = r7127613 * r7127614;
double r7127616 = r7127608 * r7127615;
double r7127617 = r7127598 * r7127602;
double r7127618 = r7127617 + r7127603;
double r7127619 = r7127618 + r7127599;
double r7127620 = r7127619 * r7127613;
double r7127621 = r7127616 / r7127620;
double r7127622 = r7127609 / r7127611;
double r7127623 = r7127610 - r7127622;
double r7127624 = fma(r7127621, r7127623, r7127606);
double r7127625 = 3.0;
double r7127626 = r7127625 * r7127625;
double r7127627 = 5.0;
double r7127628 = r7127626 - r7127627;
double r7127629 = sqrt(r7127627);
double r7127630 = r7127629 + r7127625;
double r7127631 = r7127628 / r7127630;
double r7127632 = r7127631 / r7127606;
double r7127633 = 1.0;
double r7127634 = r7127629 - r7127633;
double r7127635 = r7127634 / r7127606;
double r7127636 = fma(r7127598, r7127635, r7127633);
double r7127637 = fma(r7127632, r7127602, r7127636);
double r7127638 = r7127624 / r7127637;
double r7127639 = r7127638 / r7127625;
return r7127639;
}



Bits error versus x



Bits error versus y
Initial program 0.5
Simplified0.5
rmApplied flip--0.5
Simplified0.4
rmApplied associate-/r*0.4
rmApplied flip3--0.4
Applied associate-*l/0.4
Applied flip--0.4
Applied frac-times0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019164 +o rules:numerics
(FPCore (x y)
:name "Diagrams.TwoD.Path.Metafont.Internal:hobbyF from diagrams-contrib-1.3.0.5"
(/ (+ 2.0 (* (* (* (sqrt 2.0) (- (sin x) (/ (sin y) 16.0))) (- (sin y) (/ (sin x) 16.0))) (- (cos x) (cos y)))) (* 3.0 (+ (+ 1.0 (* (/ (- (sqrt 5.0) 1.0) 2.0) (cos x))) (* (/ (- 3.0 (sqrt 5.0)) 2.0) (cos y))))))