\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)0.333333333333333315 \cdot \cos^{-1} \left(\log \left(e^{0.055555555555555552 \cdot \left(\sqrt{t} \cdot \frac{x}{z \cdot y}\right)}\right)\right)double f(double x, double y, double z, double t) {
double r1300130 = 1.0;
double r1300131 = 3.0;
double r1300132 = r1300130 / r1300131;
double r1300133 = x;
double r1300134 = y;
double r1300135 = 27.0;
double r1300136 = r1300134 * r1300135;
double r1300137 = r1300133 / r1300136;
double r1300138 = r1300131 * r1300137;
double r1300139 = z;
double r1300140 = 2.0;
double r1300141 = r1300139 * r1300140;
double r1300142 = r1300138 / r1300141;
double r1300143 = t;
double r1300144 = sqrt(r1300143);
double r1300145 = r1300142 * r1300144;
double r1300146 = acos(r1300145);
double r1300147 = r1300132 * r1300146;
return r1300147;
}
double f(double x, double y, double z, double t) {
double r1300148 = 0.3333333333333333;
double r1300149 = 0.05555555555555555;
double r1300150 = t;
double r1300151 = sqrt(r1300150);
double r1300152 = x;
double r1300153 = z;
double r1300154 = y;
double r1300155 = r1300153 * r1300154;
double r1300156 = r1300152 / r1300155;
double r1300157 = r1300151 * r1300156;
double r1300158 = r1300149 * r1300157;
double r1300159 = exp(r1300158);
double r1300160 = log(r1300159);
double r1300161 = acos(r1300160);
double r1300162 = r1300148 * r1300161;
return r1300162;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.4 |
|---|---|
| Target | 1.2 |
| Herbie | 1.2 |
Initial program 1.4
Taylor expanded around 0 1.2
rmApplied add-log-exp1.2
Final simplification1.2
herbie shell --seed 2020025 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, D"
:precision binary64
:herbie-target
(/ (acos (* (/ (/ x 27) (* y z)) (/ (sqrt t) (/ 2 3)))) 3)
(* (/ 1 3) (acos (* (/ (* 3 (/ x (* y 27))) (* z 2)) (sqrt t)))))