Average Error: 6.0 → 5.8
Time: 5.4s
Precision: 64
\[x + \frac{y \cdot \left(z - t\right)}{a}\]
\[x + \frac{y}{\frac{a}{z - t}}\]
x + \frac{y \cdot \left(z - t\right)}{a}
x + \frac{y}{\frac{a}{z - t}}
double f(double x, double y, double z, double t, double a) {
        double r206569 = x;
        double r206570 = y;
        double r206571 = z;
        double r206572 = t;
        double r206573 = r206571 - r206572;
        double r206574 = r206570 * r206573;
        double r206575 = a;
        double r206576 = r206574 / r206575;
        double r206577 = r206569 + r206576;
        return r206577;
}

double f(double x, double y, double z, double t, double a) {
        double r206578 = x;
        double r206579 = y;
        double r206580 = a;
        double r206581 = z;
        double r206582 = t;
        double r206583 = r206581 - r206582;
        double r206584 = r206580 / r206583;
        double r206585 = r206579 / r206584;
        double r206586 = r206578 + r206585;
        return r206586;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original6.0
Target0.7
Herbie5.8
\[\begin{array}{l} \mathbf{if}\;y \lt -1.07612662163899753216593153715602325729 \cdot 10^{-10}:\\ \;\;\;\;x + \frac{1}{\frac{\frac{a}{z - t}}{y}}\\ \mathbf{elif}\;y \lt 2.894426862792089097262541964056085749132 \cdot 10^{-49}:\\ \;\;\;\;x + \frac{y \cdot \left(z - t\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y}{\frac{a}{z - t}}\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if (* y (- z t)) < -9.886386604580156e+99

    1. Initial program 15.7

      \[x + \frac{y \cdot \left(z - t\right)}{a}\]
    2. Using strategy rm
    3. Applied associate-/l*3.1

      \[\leadsto x + \color{blue}{\frac{y}{\frac{a}{z - t}}}\]
    4. Using strategy rm
    5. Applied associate-/r/2.1

      \[\leadsto x + \color{blue}{\frac{y}{a} \cdot \left(z - t\right)}\]

    if -9.886386604580156e+99 < (* y (- z t)) < 5.339467908683941e+103

    1. Initial program 0.4

      \[x + \frac{y \cdot \left(z - t\right)}{a}\]
    2. Using strategy rm
    3. Applied associate-/l*7.4

      \[\leadsto x + \color{blue}{\frac{y}{\frac{a}{z - t}}}\]
    4. Using strategy rm
    5. Applied div-inv7.4

      \[\leadsto x + \frac{y}{\color{blue}{a \cdot \frac{1}{z - t}}}\]
    6. Applied *-un-lft-identity7.4

      \[\leadsto x + \frac{\color{blue}{1 \cdot y}}{a \cdot \frac{1}{z - t}}\]
    7. Applied times-frac0.5

      \[\leadsto x + \color{blue}{\frac{1}{a} \cdot \frac{y}{\frac{1}{z - t}}}\]
    8. Simplified0.5

      \[\leadsto x + \frac{1}{a} \cdot \color{blue}{\left(y \cdot \left(z - t\right)\right)}\]

    if 5.339467908683941e+103 < (* y (- z t))

    1. Initial program 16.2

      \[x + \frac{y \cdot \left(z - t\right)}{a}\]
    2. Using strategy rm
    3. Applied associate-/l*2.9

      \[\leadsto x + \color{blue}{\frac{y}{\frac{a}{z - t}}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification5.8

    \[\leadsto x + \frac{y}{\frac{a}{z - t}}\]

Reproduce

herbie shell --seed 2019304 
(FPCore (x y z t a)
  :name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, E"
  :precision binary64

  :herbie-target
  (if (< y -1.07612662163899753e-10) (+ x (/ 1 (/ (/ a (- z t)) y))) (if (< y 2.8944268627920891e-49) (+ x (/ (* y (- z t)) a)) (+ x (/ y (/ a (- z t))))))

  (+ x (/ (* y (- z t)) a)))