Average Error: 14.8 → 10.6
Time: 20.5s
Precision: 64
\[x + \left(y - z\right) \cdot \frac{t - x}{a - z}\]
\[\begin{array}{l} \mathbf{if}\;x + \frac{t - x}{a - z} \cdot \left(y - z\right) \le -3.214032951552718 \cdot 10^{-197}:\\ \;\;\;\;x + \frac{t - x}{a - z} \cdot \left(y - z\right)\\ \mathbf{elif}\;x + \frac{t - x}{a - z} \cdot \left(y - z\right) \le 0.0:\\ \;\;\;\;\left(t + \frac{x \cdot y}{z}\right) - \frac{y \cdot t}{z}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{t - x}{a - z} \cdot \left(y - z\right)\\ \end{array}\]
x + \left(y - z\right) \cdot \frac{t - x}{a - z}
\begin{array}{l}
\mathbf{if}\;x + \frac{t - x}{a - z} \cdot \left(y - z\right) \le -3.214032951552718 \cdot 10^{-197}:\\
\;\;\;\;x + \frac{t - x}{a - z} \cdot \left(y - z\right)\\

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

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r6322668 = x;
        double r6322669 = y;
        double r6322670 = z;
        double r6322671 = r6322669 - r6322670;
        double r6322672 = t;
        double r6322673 = r6322672 - r6322668;
        double r6322674 = a;
        double r6322675 = r6322674 - r6322670;
        double r6322676 = r6322673 / r6322675;
        double r6322677 = r6322671 * r6322676;
        double r6322678 = r6322668 + r6322677;
        return r6322678;
}

double f(double x, double y, double z, double t, double a) {
        double r6322679 = x;
        double r6322680 = t;
        double r6322681 = r6322680 - r6322679;
        double r6322682 = a;
        double r6322683 = z;
        double r6322684 = r6322682 - r6322683;
        double r6322685 = r6322681 / r6322684;
        double r6322686 = y;
        double r6322687 = r6322686 - r6322683;
        double r6322688 = r6322685 * r6322687;
        double r6322689 = r6322679 + r6322688;
        double r6322690 = -3.214032951552718e-197;
        bool r6322691 = r6322689 <= r6322690;
        double r6322692 = 0.0;
        bool r6322693 = r6322689 <= r6322692;
        double r6322694 = r6322679 * r6322686;
        double r6322695 = r6322694 / r6322683;
        double r6322696 = r6322680 + r6322695;
        double r6322697 = r6322686 * r6322680;
        double r6322698 = r6322697 / r6322683;
        double r6322699 = r6322696 - r6322698;
        double r6322700 = r6322693 ? r6322699 : r6322689;
        double r6322701 = r6322691 ? r6322689 : r6322700;
        return r6322701;
}

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

Derivation

  1. Split input into 2 regimes
  2. if (+ x (* (- y z) (/ (- t x) (- a z)))) < -3.214032951552718e-197 or 0.0 < (+ x (* (- y z) (/ (- t x) (- a z))))

    1. Initial program 7.0

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

    if -3.214032951552718e-197 < (+ x (* (- y z) (/ (- t x) (- a z)))) < 0.0

    1. Initial program 56.0

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

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

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

Reproduce

herbie shell --seed 2019165 
(FPCore (x y z t a)
  :name "Numeric.Signal:interpolate   from hsignal-0.2.7.1"
  (+ x (* (- y z) (/ (- t x) (- a z)))))