Average Error: 5.9 → 0.8
Time: 1.1m
Precision: 64
\[x - \frac{y \cdot \left(z - t\right)}{a}\]
\[\begin{array}{l} \mathbf{if}\;\left(z - t\right) \cdot y \le -4.463702555680383129591610974344041882665 \cdot 10^{202}:\\ \;\;\;\;x + y \cdot \left(\frac{t}{a} - \frac{z}{a}\right)\\ \mathbf{elif}\;\left(z - t\right) \cdot y \le 2.770472112777995570095000450343623150183 \cdot 10^{157}:\\ \;\;\;\;x - \frac{1}{\frac{a}{\left(z - t\right) \cdot y}}\\ \mathbf{else}:\\ \;\;\;\;x + y \cdot \left(\frac{t}{a} - \frac{z}{a}\right)\\ \end{array}\]
x - \frac{y \cdot \left(z - t\right)}{a}
\begin{array}{l}
\mathbf{if}\;\left(z - t\right) \cdot y \le -4.463702555680383129591610974344041882665 \cdot 10^{202}:\\
\;\;\;\;x + y \cdot \left(\frac{t}{a} - \frac{z}{a}\right)\\

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

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r18552843 = x;
        double r18552844 = y;
        double r18552845 = z;
        double r18552846 = t;
        double r18552847 = r18552845 - r18552846;
        double r18552848 = r18552844 * r18552847;
        double r18552849 = a;
        double r18552850 = r18552848 / r18552849;
        double r18552851 = r18552843 - r18552850;
        return r18552851;
}

double f(double x, double y, double z, double t, double a) {
        double r18552852 = z;
        double r18552853 = t;
        double r18552854 = r18552852 - r18552853;
        double r18552855 = y;
        double r18552856 = r18552854 * r18552855;
        double r18552857 = -4.463702555680383e+202;
        bool r18552858 = r18552856 <= r18552857;
        double r18552859 = x;
        double r18552860 = a;
        double r18552861 = r18552853 / r18552860;
        double r18552862 = r18552852 / r18552860;
        double r18552863 = r18552861 - r18552862;
        double r18552864 = r18552855 * r18552863;
        double r18552865 = r18552859 + r18552864;
        double r18552866 = 2.7704721127779956e+157;
        bool r18552867 = r18552856 <= r18552866;
        double r18552868 = 1.0;
        double r18552869 = r18552860 / r18552856;
        double r18552870 = r18552868 / r18552869;
        double r18552871 = r18552859 - r18552870;
        double r18552872 = r18552867 ? r18552871 : r18552865;
        double r18552873 = r18552858 ? r18552865 : r18552872;
        return r18552873;
}

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
Herbie0.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 2 regimes
  2. if (* y (- z t)) < -4.463702555680383e+202 or 2.7704721127779956e+157 < (* y (- z t))

    1. Initial program 23.8

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

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

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

    if -4.463702555680383e+202 < (* y (- z t)) < 2.7704721127779956e+157

    1. Initial program 0.5

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

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

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

Reproduce

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

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