x \cdot \log \left(\frac{x}{y}\right) - z\mathsf{fma}\left(x, \log \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right) + 2 \cdot \log \left(\frac{\sqrt[3]{\sqrt[3]{x}} \cdot \left(\sqrt[3]{\sqrt[3]{x}} \cdot \sqrt[3]{\sqrt[3]{x}}\right)}{\sqrt[3]{y}}\right), -z\right)double f(double x, double y, double z) {
double r389137 = x;
double r389138 = y;
double r389139 = r389137 / r389138;
double r389140 = log(r389139);
double r389141 = r389137 * r389140;
double r389142 = z;
double r389143 = r389141 - r389142;
return r389143;
}
double f(double x, double y, double z) {
double r389144 = x;
double r389145 = cbrt(r389144);
double r389146 = y;
double r389147 = cbrt(r389146);
double r389148 = r389145 / r389147;
double r389149 = log(r389148);
double r389150 = 2.0;
double r389151 = cbrt(r389145);
double r389152 = r389151 * r389151;
double r389153 = r389151 * r389152;
double r389154 = r389153 / r389147;
double r389155 = log(r389154);
double r389156 = r389150 * r389155;
double r389157 = r389149 + r389156;
double r389158 = z;
double r389159 = -r389158;
double r389160 = fma(r389144, r389157, r389159);
return r389160;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 15.0 |
|---|---|
| Target | 7.9 |
| Herbie | 0.2 |
Initial program 15.0
Simplified15.0
rmApplied add-cube-cbrt15.0
Applied add-cube-cbrt15.0
Applied times-frac15.0
Applied log-prod3.3
Simplified0.2
rmApplied add-cube-cbrt0.2
Final simplification0.2
herbie shell --seed 2019196 +o rules:numerics
(FPCore (x y z)
:name "Numeric.SpecFunctions.Extra:bd0 from math-functions-0.1.5.2"
:herbie-target
(if (< y 7.595077799083773e-308) (- (* x (log (/ x y))) z) (- (* x (- (log x) (log y))) z))
(- (* x (log (/ x y))) z))