1 - \log \left(1 - \frac{x - y}{1 - y}\right)\begin{array}{l}
\mathbf{if}\;y \le -34474611802046.8828125:\\
\;\;\;\;1 - \log \left(\sqrt[3]{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)} \cdot \left(\sqrt[3]{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)} \cdot \sqrt[3]{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)}\right)\right)\\
\mathbf{elif}\;y \le 43744445.7007110416889190673828125:\\
\;\;\;\;1 - \left(\log \left(\sqrt{1 - \frac{x - y}{1 - y}}\right) + \log \left(\sqrt{1 - \frac{x - y}{1 - y}}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;1 - \log \left(\sqrt{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)} \cdot \sqrt{\frac{x}{y} + \left(\frac{x}{y} \cdot \frac{1}{y} - \frac{1}{y}\right)}\right)\\
\end{array}double f(double x, double y) {
double r373355 = 1.0;
double r373356 = x;
double r373357 = y;
double r373358 = r373356 - r373357;
double r373359 = r373355 - r373357;
double r373360 = r373358 / r373359;
double r373361 = r373355 - r373360;
double r373362 = log(r373361);
double r373363 = r373355 - r373362;
return r373363;
}
double f(double x, double y) {
double r373364 = y;
double r373365 = -34474611802046.883;
bool r373366 = r373364 <= r373365;
double r373367 = 1.0;
double r373368 = x;
double r373369 = r373368 / r373364;
double r373370 = r373367 / r373364;
double r373371 = r373369 * r373370;
double r373372 = r373371 - r373370;
double r373373 = r373369 + r373372;
double r373374 = cbrt(r373373);
double r373375 = r373374 * r373374;
double r373376 = r373374 * r373375;
double r373377 = log(r373376);
double r373378 = r373367 - r373377;
double r373379 = 43744445.70071104;
bool r373380 = r373364 <= r373379;
double r373381 = r373368 - r373364;
double r373382 = r373367 - r373364;
double r373383 = r373381 / r373382;
double r373384 = r373367 - r373383;
double r373385 = sqrt(r373384);
double r373386 = log(r373385);
double r373387 = r373386 + r373386;
double r373388 = r373367 - r373387;
double r373389 = sqrt(r373373);
double r373390 = r373389 * r373389;
double r373391 = log(r373390);
double r373392 = r373367 - r373391;
double r373393 = r373380 ? r373388 : r373392;
double r373394 = r373366 ? r373378 : r373393;
return r373394;
}




Bits error versus x




Bits error versus y
Results
| Original | 18.5 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
if y < -34474611802046.883Initial program 53.9
Taylor expanded around inf 0.0
Simplified0.0
rmApplied add-cube-cbrt0.0
Simplified0.0
Simplified0.0
if -34474611802046.883 < y < 43744445.70071104Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied log-prod0.2
if 43744445.70071104 < y Initial program 29.8
Taylor expanded around inf 0.0
Simplified0.0
rmApplied add-sqr-sqrt0.0
Simplified0.0
Simplified0.0
Final simplification0.1
herbie shell --seed 2019174
(FPCore (x y)
:name "Numeric.SpecFunctions:invIncompleteGamma from math-functions-0.1.5.2, B"
:herbie-target
(if (< y -81284752.61947241) (- 1.0 (log (- (/ x (* y y)) (- (/ 1.0 y) (/ x y))))) (if (< y 3.0094271212461764e+25) (log (/ (exp 1.0) (- 1.0 (/ (- x y) (- 1.0 y))))) (- 1.0 (log (- (/ x (* y y)) (- (/ 1.0 y) (/ x y)))))))
(- 1.0 (log (- 1.0 (/ (- x y) (- 1.0 y))))))