Average Error: 1.4 → 1.2
Time: 6.0s
Precision: 64
\[\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)\]
\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;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original1.4
Target1.2
Herbie1.2
\[\frac{\cos^{-1} \left(\frac{\frac{x}{27}}{y \cdot z} \cdot \frac{\sqrt{t}}{\frac{2}{3}}\right)}{3}\]

Derivation

  1. Initial program 1.4

    \[\frac{1}{3} \cdot \cos^{-1} \left(\frac{3 \cdot \frac{x}{y \cdot 27}}{z \cdot 2} \cdot \sqrt{t}\right)\]
  2. Taylor expanded around 0 1.2

    \[\leadsto \color{blue}{0.333333333333333315 \cdot \cos^{-1} \left(0.055555555555555552 \cdot \left(\sqrt{t} \cdot \frac{x}{z \cdot y}\right)\right)}\]
  3. Using strategy rm
  4. Applied add-log-exp1.2

    \[\leadsto 0.333333333333333315 \cdot \cos^{-1} \color{blue}{\left(\log \left(e^{0.055555555555555552 \cdot \left(\sqrt{t} \cdot \frac{x}{z \cdot y}\right)}\right)\right)}\]
  5. Final simplification1.2

    \[\leadsto 0.333333333333333315 \cdot \cos^{-1} \left(\log \left(e^{0.055555555555555552 \cdot \left(\sqrt{t} \cdot \frac{x}{z \cdot y}\right)}\right)\right)\]

Reproduce

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)))))