\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\begin{array}{l}
\mathbf{if}\;x \leq -2.2792272315365673 \cdot 10^{-161}:\\
\;\;\;\;\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{\frac{y}{e^{y \cdot \log z + \left(\left(t + -1\right) \cdot \log a - b\right)}}} \cdot \sqrt[3]{\frac{y}{e^{y \cdot \log z + \left(\left(t + -1\right) \cdot \log a - b\right)}}}} \cdot \frac{\sqrt[3]{x}}{\sqrt[3]{\frac{y}{e^{y \cdot \log z + \left(\left(t + -1\right) \cdot \log a - b\right)}}}}\\
\mathbf{elif}\;x \leq 9.227147354557408 \cdot 10^{-83}:\\
\;\;\;\;e^{y \cdot \log z + \left(\left(t + -1\right) \cdot \log a - b\right)} \cdot \frac{x}{y}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\frac{y}{e^{y \cdot \log z + \left(\left(t + -1\right) \cdot \log a - b\right)}}}\\
\end{array}(FPCore (x y z t a b) :precision binary64 (/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))
(FPCore (x y z t a b)
:precision binary64
(if (<= x -2.2792272315365673e-161)
(*
(/
(* (cbrt x) (cbrt x))
(*
(cbrt (/ y (exp (+ (* y (log z)) (- (* (+ t -1.0) (log a)) b)))))
(cbrt (/ y (exp (+ (* y (log z)) (- (* (+ t -1.0) (log a)) b)))))))
(/
(cbrt x)
(cbrt (/ y (exp (+ (* y (log z)) (- (* (+ t -1.0) (log a)) b)))))))
(if (<= x 9.227147354557408e-83)
(* (exp (+ (* y (log z)) (- (* (+ t -1.0) (log a)) b))) (/ x y))
(/ x (/ y (exp (+ (* y (log z)) (- (* (+ t -1.0) (log a)) b))))))))double code(double x, double y, double z, double t, double a, double b) {
return (x * exp(((y * log(z)) + ((t - 1.0) * log(a))) - b)) / y;
}
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (x <= -2.2792272315365673e-161) {
tmp = ((cbrt(x) * cbrt(x)) / (cbrt(y / exp((y * log(z)) + (((t + -1.0) * log(a)) - b))) * cbrt(y / exp((y * log(z)) + (((t + -1.0) * log(a)) - b))))) * (cbrt(x) / cbrt(y / exp((y * log(z)) + (((t + -1.0) * log(a)) - b))));
} else if (x <= 9.227147354557408e-83) {
tmp = exp((y * log(z)) + (((t + -1.0) * log(a)) - b)) * (x / y);
} else {
tmp = x / (y / exp((y * log(z)) + (((t + -1.0) * log(a)) - b)));
}
return tmp;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 2.2 |
|---|---|
| Target | 10.8 |
| Herbie | 1.2 |
if x < -2.27922723153656731e-161Initial program 1.3
Simplified1.4
rmApplied add-cube-cbrt_binary64_195501.4
Applied add-cube-cbrt_binary64_195501.4
Applied times-frac_binary64_195211.4
if -2.27922723153656731e-161 < x < 9.2271473545574076e-83Initial program 4.3
Simplified1.2
if 9.2271473545574076e-83 < x Initial program 1.0
Simplified1.0
Final simplification1.2
herbie shell --seed 2021176
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A"
:precision binary64
:herbie-target
(if (< t -0.8845848504127471) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1.0) (* y (log z)))) (if (< t 852031.2288374073) (/ (* (/ x y) (pow a (- t 1.0))) (exp (- b (* (log z) y)))) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1.0) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))