Average Error: 5.9 → 1.0
Time: 53.7s
Precision: 64
\[x + \frac{y \cdot \left(z - t\right)}{a}\]
\[\begin{array}{l} \mathbf{if}\;\left(z - t\right) \cdot y \le -1.345098563272592420354002044193157608063 \cdot 10^{164}:\\ \;\;\;\;x + \frac{z - t}{a} \cdot y\\ \mathbf{elif}\;\left(z - t\right) \cdot y \le 9.417385554814111584786435793986354092013 \cdot 10^{65}:\\ \;\;\;\;x + \frac{1}{a} \cdot \left(\left(z - t\right) \cdot y\right)\\ \mathbf{else}:\\ \;\;\;\;x + \left(z - t\right) \cdot \frac{y}{a}\\ \end{array}\]
x + \frac{y \cdot \left(z - t\right)}{a}
\begin{array}{l}
\mathbf{if}\;\left(z - t\right) \cdot y \le -1.345098563272592420354002044193157608063 \cdot 10^{164}:\\
\;\;\;\;x + \frac{z - t}{a} \cdot y\\

\mathbf{elif}\;\left(z - t\right) \cdot y \le 9.417385554814111584786435793986354092013 \cdot 10^{65}:\\
\;\;\;\;x + \frac{1}{a} \cdot \left(\left(z - t\right) \cdot y\right)\\

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r18106287 = x;
        double r18106288 = y;
        double r18106289 = z;
        double r18106290 = t;
        double r18106291 = r18106289 - r18106290;
        double r18106292 = r18106288 * r18106291;
        double r18106293 = a;
        double r18106294 = r18106292 / r18106293;
        double r18106295 = r18106287 + r18106294;
        return r18106295;
}

double f(double x, double y, double z, double t, double a) {
        double r18106296 = z;
        double r18106297 = t;
        double r18106298 = r18106296 - r18106297;
        double r18106299 = y;
        double r18106300 = r18106298 * r18106299;
        double r18106301 = -1.3450985632725924e+164;
        bool r18106302 = r18106300 <= r18106301;
        double r18106303 = x;
        double r18106304 = a;
        double r18106305 = r18106298 / r18106304;
        double r18106306 = r18106305 * r18106299;
        double r18106307 = r18106303 + r18106306;
        double r18106308 = 9.417385554814112e+65;
        bool r18106309 = r18106300 <= r18106308;
        double r18106310 = 1.0;
        double r18106311 = r18106310 / r18106304;
        double r18106312 = r18106311 * r18106300;
        double r18106313 = r18106303 + r18106312;
        double r18106314 = r18106299 / r18106304;
        double r18106315 = r18106298 * r18106314;
        double r18106316 = r18106303 + r18106315;
        double r18106317 = r18106309 ? r18106313 : r18106316;
        double r18106318 = r18106302 ? r18106307 : r18106317;
        return r18106318;
}

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

Original5.9
Target0.8
Herbie1.0
\[\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.3450985632725924e+164

    1. Initial program 21.6

      \[x + \frac{y \cdot \left(z - t\right)}{a}\]
    2. Taylor expanded around 0 21.6

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

      \[\leadsto \color{blue}{\frac{z - t}{\frac{a}{y}} + x}\]
    4. Taylor expanded around inf 21.6

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

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

    if -1.3450985632725924e+164 < (* y (- z t)) < 9.417385554814112e+65

    1. Initial program 0.5

      \[x + \frac{y \cdot \left(z - t\right)}{a}\]
    2. Using strategy rm
    3. Applied div-inv0.6

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

    if 9.417385554814112e+65 < (* y (- z t))

    1. Initial program 13.6

      \[x + \frac{y \cdot \left(z - t\right)}{a}\]
    2. Taylor expanded around 0 13.6

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(z - t\right) \cdot y \le -1.345098563272592420354002044193157608063 \cdot 10^{164}:\\ \;\;\;\;x + \frac{z - t}{a} \cdot y\\ \mathbf{elif}\;\left(z - t\right) \cdot y \le 9.417385554814111584786435793986354092013 \cdot 10^{65}:\\ \;\;\;\;x + \frac{1}{a} \cdot \left(\left(z - t\right) \cdot y\right)\\ \mathbf{else}:\\ \;\;\;\;x + \left(z - t\right) \cdot \frac{y}{a}\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< y -1.0761266216389975e-10) (+ x (/ 1.0 (/ (/ a (- z t)) y))) (if (< y 2.894426862792089e-49) (+ x (/ (* y (- z t)) a)) (+ x (/ y (/ a (- z t))))))

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