\frac{x \cdot x - \left(y \cdot 4.0\right) \cdot y}{x \cdot x + \left(y \cdot 4.0\right) \cdot y}\begin{array}{l}
\mathbf{if}\;y \cdot \left(y \cdot 4.0\right) \le 5.256606017817734 \cdot 10^{-308}:\\
\;\;\;\;1\\
\mathbf{elif}\;y \cdot \left(y \cdot 4.0\right) \le 1.6350568935112376 \cdot 10^{+269}:\\
\;\;\;\;\frac{x \cdot x - y \cdot \left(y \cdot 4.0\right)}{x \cdot x + y \cdot \left(y \cdot 4.0\right)}\\
\mathbf{elif}\;y \cdot \left(y \cdot 4.0\right) \le 2.4786518810190947 \cdot 10^{+298}:\\
\;\;\;\;1\\
\mathbf{else}:\\
\;\;\;\;-1.0\\
\end{array}double f(double x, double y) {
double r11754125 = x;
double r11754126 = r11754125 * r11754125;
double r11754127 = y;
double r11754128 = 4.0;
double r11754129 = r11754127 * r11754128;
double r11754130 = r11754129 * r11754127;
double r11754131 = r11754126 - r11754130;
double r11754132 = r11754126 + r11754130;
double r11754133 = r11754131 / r11754132;
return r11754133;
}
double f(double x, double y) {
double r11754134 = y;
double r11754135 = 4.0;
double r11754136 = r11754134 * r11754135;
double r11754137 = r11754134 * r11754136;
double r11754138 = 5.256606017817734e-308;
bool r11754139 = r11754137 <= r11754138;
double r11754140 = 1.0;
double r11754141 = 1.6350568935112376e+269;
bool r11754142 = r11754137 <= r11754141;
double r11754143 = x;
double r11754144 = r11754143 * r11754143;
double r11754145 = r11754144 - r11754137;
double r11754146 = r11754144 + r11754137;
double r11754147 = r11754145 / r11754146;
double r11754148 = 2.4786518810190947e+298;
bool r11754149 = r11754137 <= r11754148;
double r11754150 = -1.0;
double r11754151 = r11754149 ? r11754140 : r11754150;
double r11754152 = r11754142 ? r11754147 : r11754151;
double r11754153 = r11754139 ? r11754140 : r11754152;
return r11754153;
}




Bits error versus x




Bits error versus y
Results
| Original | 31.2 |
|---|---|
| Target | 31.2 |
| Herbie | 12.6 |
if (* (* y 4.0) y) < 5.256606017817734e-308 or 1.6350568935112376e+269 < (* (* y 4.0) y) < 2.4786518810190947e+298Initial program 29.5
Taylor expanded around inf 11.5
if 5.256606017817734e-308 < (* (* y 4.0) y) < 1.6350568935112376e+269Initial program 15.5
if 2.4786518810190947e+298 < (* (* y 4.0) y) Initial program 61.7
Taylor expanded around 0 8.4
Final simplification12.6
herbie shell --seed 2019156
(FPCore (x y)
:name "Diagrams.TwoD.Arc:arcBetween from diagrams-lib-1.3.0.3"
:herbie-target
(if (< (/ (- (* x x) (* (* y 4.0) y)) (+ (* x x) (* (* y 4.0) y))) 0.9743233849626781) (- (/ (* x x) (+ (* x x) (* (* y y) 4.0))) (/ (* (* y y) 4.0) (+ (* x x) (* (* y y) 4.0)))) (- (pow (/ x (sqrt (+ (* x x) (* (* y y) 4.0)))) 2) (/ (* (* y y) 4.0) (+ (* x x) (* (* y y) 4.0)))))
(/ (- (* x x) (* (* y 4.0) y)) (+ (* x x) (* (* y 4.0) y))))