\frac{x \cdot \left(\left(y - z\right) + 1\right)}{z}\begin{array}{l}
\mathbf{if}\;x \le -1.955374476152934635601992853388084850774 \cdot 10^{-168}:\\
\;\;\;\;\mathsf{fma}\left(\frac{x}{z}, y, 1 \cdot \frac{x}{z} - x\right)\\
\mathbf{elif}\;x \le 8.101941502747141806933018865526614192325 \cdot 10^{-99}:\\
\;\;\;\;\frac{1}{z} \cdot \left(\left(1 + \left(y - z\right)\right) \cdot x\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\frac{z}{1 + \left(y - z\right)}}\\
\end{array}double f(double x, double y, double z) {
double r26523149 = x;
double r26523150 = y;
double r26523151 = z;
double r26523152 = r26523150 - r26523151;
double r26523153 = 1.0;
double r26523154 = r26523152 + r26523153;
double r26523155 = r26523149 * r26523154;
double r26523156 = r26523155 / r26523151;
return r26523156;
}
double f(double x, double y, double z) {
double r26523157 = x;
double r26523158 = -1.9553744761529346e-168;
bool r26523159 = r26523157 <= r26523158;
double r26523160 = z;
double r26523161 = r26523157 / r26523160;
double r26523162 = y;
double r26523163 = 1.0;
double r26523164 = r26523163 * r26523161;
double r26523165 = r26523164 - r26523157;
double r26523166 = fma(r26523161, r26523162, r26523165);
double r26523167 = 8.101941502747142e-99;
bool r26523168 = r26523157 <= r26523167;
double r26523169 = 1.0;
double r26523170 = r26523169 / r26523160;
double r26523171 = r26523162 - r26523160;
double r26523172 = r26523163 + r26523171;
double r26523173 = r26523172 * r26523157;
double r26523174 = r26523170 * r26523173;
double r26523175 = r26523160 / r26523172;
double r26523176 = r26523157 / r26523175;
double r26523177 = r26523168 ? r26523174 : r26523176;
double r26523178 = r26523159 ? r26523166 : r26523177;
return r26523178;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 10.4 |
|---|---|
| Target | 0.5 |
| Herbie | 0.5 |
if x < -1.9553744761529346e-168Initial program 13.9
Taylor expanded around 0 4.5
Simplified0.5
if -1.9553744761529346e-168 < x < 8.101941502747142e-99Initial program 0.2
rmApplied associate-/l*6.9
rmApplied div-inv7.0
Applied *-un-lft-identity7.0
Applied times-frac0.3
Simplified0.3
if 8.101941502747142e-99 < x Initial program 18.2
rmApplied associate-/l*0.8
Final simplification0.5
herbie shell --seed 2019170 +o rules:numerics
(FPCore (x y z)
:name "Diagrams.TwoD.Segment.Bernstein:evaluateBernstein from diagrams-lib-1.3.0.3"
:herbie-target
(if (< x -2.71483106713436e-162) (- (* (+ 1.0 y) (/ x z)) x) (if (< x 3.874108816439546e-197) (* (* x (+ (- y z) 1.0)) (/ 1.0 z)) (- (* (+ 1.0 y) (/ x z)) x)))
(/ (* x (+ (- y z) 1.0)) z))