Average Error: 6.0 → 0.9
Time: 14.1s
Precision: 64
\[x + \frac{y \cdot \left(z - t\right)}{a}\]
\[\begin{array}{l} \mathbf{if}\;y \le -269238844195856694002518404049970051153900:\\ \;\;\;\;\frac{z - t}{a} \cdot y + x\\ \mathbf{elif}\;y \le 3016889210368408841793848075091968:\\ \;\;\;\;\frac{\frac{1}{a}}{\frac{\frac{1}{y}}{z - t}} + x\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{z - t}{\sqrt[3]{a} \cdot \sqrt[3]{a}}}{\frac{\sqrt[3]{a}}{y}} + x\\ \end{array}\]
x + \frac{y \cdot \left(z - t\right)}{a}
\begin{array}{l}
\mathbf{if}\;y \le -269238844195856694002518404049970051153900:\\
\;\;\;\;\frac{z - t}{a} \cdot y + x\\

\mathbf{elif}\;y \le 3016889210368408841793848075091968:\\
\;\;\;\;\frac{\frac{1}{a}}{\frac{\frac{1}{y}}{z - t}} + x\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{z - t}{\sqrt[3]{a} \cdot \sqrt[3]{a}}}{\frac{\sqrt[3]{a}}{y}} + x\\

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r216823 = x;
        double r216824 = y;
        double r216825 = z;
        double r216826 = t;
        double r216827 = r216825 - r216826;
        double r216828 = r216824 * r216827;
        double r216829 = a;
        double r216830 = r216828 / r216829;
        double r216831 = r216823 + r216830;
        return r216831;
}

double f(double x, double y, double z, double t, double a) {
        double r216832 = y;
        double r216833 = -2.692388441958567e+41;
        bool r216834 = r216832 <= r216833;
        double r216835 = z;
        double r216836 = t;
        double r216837 = r216835 - r216836;
        double r216838 = a;
        double r216839 = r216837 / r216838;
        double r216840 = r216839 * r216832;
        double r216841 = x;
        double r216842 = r216840 + r216841;
        double r216843 = 3.016889210368409e+33;
        bool r216844 = r216832 <= r216843;
        double r216845 = 1.0;
        double r216846 = r216845 / r216838;
        double r216847 = r216845 / r216832;
        double r216848 = r216847 / r216837;
        double r216849 = r216846 / r216848;
        double r216850 = r216849 + r216841;
        double r216851 = cbrt(r216838);
        double r216852 = r216851 * r216851;
        double r216853 = r216837 / r216852;
        double r216854 = r216851 / r216832;
        double r216855 = r216853 / r216854;
        double r216856 = r216855 + r216841;
        double r216857 = r216844 ? r216850 : r216856;
        double r216858 = r216834 ? r216842 : r216857;
        return r216858;
}

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
Herbie0.9
\[\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 < -2.692388441958567e+41

    1. Initial program 17.9

      \[x + \frac{y \cdot \left(z - t\right)}{a}\]
    2. Simplified4.1

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{a}, z - t, x\right)}\]
    3. Using strategy rm
    4. Applied fma-udef4.1

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

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

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

    if -2.692388441958567e+41 < y < 3.016889210368409e+33

    1. Initial program 0.7

      \[x + \frac{y \cdot \left(z - t\right)}{a}\]
    2. Simplified1.7

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{a}, z - t, x\right)}\]
    3. Using strategy rm
    4. Applied fma-udef1.7

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

      \[\leadsto \color{blue}{\frac{z - t}{\frac{a}{y}}} + x\]
    6. Using strategy rm
    7. Applied clear-num1.9

      \[\leadsto \color{blue}{\frac{1}{\frac{\frac{a}{y}}{z - t}}} + x\]
    8. Using strategy rm
    9. Applied *-un-lft-identity1.9

      \[\leadsto \frac{1}{\frac{\frac{a}{y}}{\color{blue}{1 \cdot \left(z - t\right)}}} + x\]
    10. Applied div-inv1.9

      \[\leadsto \frac{1}{\frac{\color{blue}{a \cdot \frac{1}{y}}}{1 \cdot \left(z - t\right)}} + x\]
    11. Applied times-frac0.7

      \[\leadsto \frac{1}{\color{blue}{\frac{a}{1} \cdot \frac{\frac{1}{y}}{z - t}}} + x\]
    12. Applied associate-/r*0.7

      \[\leadsto \color{blue}{\frac{\frac{1}{\frac{a}{1}}}{\frac{\frac{1}{y}}{z - t}}} + x\]
    13. Simplified0.7

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

    if 3.016889210368409e+33 < y

    1. Initial program 16.7

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{a}, z - t, x\right)}\]
    3. Using strategy rm
    4. Applied fma-udef4.2

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

      \[\leadsto \color{blue}{\frac{z - t}{\frac{a}{y}}} + x\]
    6. Using strategy rm
    7. Applied *-un-lft-identity3.6

      \[\leadsto \frac{z - t}{\frac{a}{\color{blue}{1 \cdot y}}} + x\]
    8. Applied add-cube-cbrt4.2

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

      \[\leadsto \frac{z - t}{\color{blue}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{1} \cdot \frac{\sqrt[3]{a}}{y}}} + x\]
    10. Applied associate-/r*1.5

      \[\leadsto \color{blue}{\frac{\frac{z - t}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{1}}}{\frac{\sqrt[3]{a}}{y}}} + x\]
    11. Simplified1.5

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -269238844195856694002518404049970051153900:\\ \;\;\;\;\frac{z - t}{a} \cdot y + x\\ \mathbf{elif}\;y \le 3016889210368408841793848075091968:\\ \;\;\;\;\frac{\frac{1}{a}}{\frac{\frac{1}{y}}{z - t}} + x\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{z - t}{\sqrt[3]{a} \cdot \sqrt[3]{a}}}{\frac{\sqrt[3]{a}}{y}} + x\\ \end{array}\]

Reproduce

herbie shell --seed 2019304 +o rules:numerics
(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)))