Average Error: 6.0 → 0.4
Time: 18.0s
Precision: 64
\[x - \frac{y \cdot \left(z - t\right)}{a}\]
\[\begin{array}{l} \mathbf{if}\;y \cdot \left(z - t\right) \le -1.909546477474763351425656643953541951836 \cdot 10^{219}:\\ \;\;\;\;x - \frac{y}{\frac{a}{z - t}}\\ \mathbf{elif}\;y \cdot \left(z - t\right) \le 9.346814402829446941667508921526282193068 \cdot 10^{281}:\\ \;\;\;\;x - \frac{y \cdot \left(z - t\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;x - y \cdot \left(\frac{z}{a} - \frac{t}{a}\right)\\ \end{array}\]
x - \frac{y \cdot \left(z - t\right)}{a}
\begin{array}{l}
\mathbf{if}\;y \cdot \left(z - t\right) \le -1.909546477474763351425656643953541951836 \cdot 10^{219}:\\
\;\;\;\;x - \frac{y}{\frac{a}{z - t}}\\

\mathbf{elif}\;y \cdot \left(z - t\right) \le 9.346814402829446941667508921526282193068 \cdot 10^{281}:\\
\;\;\;\;x - \frac{y \cdot \left(z - t\right)}{a}\\

\mathbf{else}:\\
\;\;\;\;x - y \cdot \left(\frac{z}{a} - \frac{t}{a}\right)\\

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r250550 = x;
        double r250551 = y;
        double r250552 = z;
        double r250553 = t;
        double r250554 = r250552 - r250553;
        double r250555 = r250551 * r250554;
        double r250556 = a;
        double r250557 = r250555 / r250556;
        double r250558 = r250550 - r250557;
        return r250558;
}

double f(double x, double y, double z, double t, double a) {
        double r250559 = y;
        double r250560 = z;
        double r250561 = t;
        double r250562 = r250560 - r250561;
        double r250563 = r250559 * r250562;
        double r250564 = -1.9095464774747634e+219;
        bool r250565 = r250563 <= r250564;
        double r250566 = x;
        double r250567 = a;
        double r250568 = r250567 / r250562;
        double r250569 = r250559 / r250568;
        double r250570 = r250566 - r250569;
        double r250571 = 9.346814402829447e+281;
        bool r250572 = r250563 <= r250571;
        double r250573 = r250563 / r250567;
        double r250574 = r250566 - r250573;
        double r250575 = r250560 / r250567;
        double r250576 = r250561 / r250567;
        double r250577 = r250575 - r250576;
        double r250578 = r250559 * r250577;
        double r250579 = r250566 - r250578;
        double r250580 = r250572 ? r250574 : r250579;
        double r250581 = r250565 ? r250570 : r250580;
        return r250581;
}

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.8
Herbie0.4
\[\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)) < -1.9095464774747634e+219

    1. Initial program 31.2

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

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

    if -1.9095464774747634e+219 < (* y (- z t)) < 9.346814402829447e+281

    1. Initial program 0.3

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

    if 9.346814402829447e+281 < (* y (- z t))

    1. Initial program 50.1

      \[x - \frac{y \cdot \left(z - t\right)}{a}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt50.3

      \[\leadsto x - \frac{y \cdot \left(z - t\right)}{\color{blue}{\left(\sqrt[3]{a} \cdot \sqrt[3]{a}\right) \cdot \sqrt[3]{a}}}\]
    4. Applied times-frac0.9

      \[\leadsto x - \color{blue}{\frac{y}{\sqrt[3]{a} \cdot \sqrt[3]{a}} \cdot \frac{z - t}{\sqrt[3]{a}}}\]
    5. Taylor expanded around 0 50.1

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

      \[\leadsto x - \color{blue}{y \cdot \left(\frac{z}{a} - \frac{t}{a}\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \cdot \left(z - t\right) \le -1.909546477474763351425656643953541951836 \cdot 10^{219}:\\ \;\;\;\;x - \frac{y}{\frac{a}{z - t}}\\ \mathbf{elif}\;y \cdot \left(z - t\right) \le 9.346814402829446941667508921526282193068 \cdot 10^{281}:\\ \;\;\;\;x - \frac{y \cdot \left(z - t\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;x - y \cdot \left(\frac{z}{a} - \frac{t}{a}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019306 
(FPCore (x y z t a)
  :name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, F"
  :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)))