Average Error: 25.0 → 7.3
Time: 32.1s
Precision: binary64
Cost: 4044
\[x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t} \]
\[\begin{array}{l} t_1 := x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\\ \mathbf{if}\;t_1 \leq -1 \cdot 10^{-260}:\\ \;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\ \mathbf{elif}\;t_1 \leq 0:\\ \;\;\;\;\left(-\frac{\left(y - x\right) \cdot \left(z - a\right)}{t}\right) + y\\ \mathbf{elif}\;t_1 \leq 2 \cdot 10^{+299}:\\ \;\;\;\;\frac{z \cdot \left(y - x\right)}{a - t} + \left(\left(y - x\right) \cdot \frac{t}{t - a} + x\right)\\ \mathbf{else}:\\ \;\;\;\;\left(-\frac{y - x}{t} \cdot \left(z - a\right)\right) + y\\ \end{array} \]
(FPCore (x y z t a) :precision binary64 (+ x (/ (* (- y x) (- z t)) (- a t))))
(FPCore (x y z t a)
 :precision binary64
 (let* ((t_1 (+ x (/ (* (- y x) (- z t)) (- a t)))))
   (if (<= t_1 -1e-260)
     (+ x (* (- y x) (/ (- z t) (- a t))))
     (if (<= t_1 0.0)
       (+ (- (/ (* (- y x) (- z a)) t)) y)
       (if (<= t_1 2e+299)
         (+ (/ (* z (- y x)) (- a t)) (+ (* (- y x) (/ t (- t a))) x))
         (+ (- (* (/ (- y x) t) (- z a))) y))))))
double code(double x, double y, double z, double t, double a) {
	return x + (((y - x) * (z - t)) / (a - t));
}
double code(double x, double y, double z, double t, double a) {
	double t_1 = x + (((y - x) * (z - t)) / (a - t));
	double tmp;
	if (t_1 <= -1e-260) {
		tmp = x + ((y - x) * ((z - t) / (a - t)));
	} else if (t_1 <= 0.0) {
		tmp = -(((y - x) * (z - a)) / t) + y;
	} else if (t_1 <= 2e+299) {
		tmp = ((z * (y - x)) / (a - t)) + (((y - x) * (t / (t - a))) + x);
	} else {
		tmp = -(((y - x) / t) * (z - a)) + y;
	}
	return tmp;
}
real(8) function code(x, y, z, t, a)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8), intent (in) :: t
    real(8), intent (in) :: a
    code = x + (((y - x) * (z - t)) / (a - t))
end function
real(8) function code(x, y, z, t, a)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8), intent (in) :: t
    real(8), intent (in) :: a
    real(8) :: t_1
    real(8) :: tmp
    t_1 = x + (((y - x) * (z - t)) / (a - t))
    if (t_1 <= (-1d-260)) then
        tmp = x + ((y - x) * ((z - t) / (a - t)))
    else if (t_1 <= 0.0d0) then
        tmp = -(((y - x) * (z - a)) / t) + y
    else if (t_1 <= 2d+299) then
        tmp = ((z * (y - x)) / (a - t)) + (((y - x) * (t / (t - a))) + x)
    else
        tmp = -(((y - x) / t) * (z - a)) + y
    end if
    code = tmp
end function
public static double code(double x, double y, double z, double t, double a) {
	return x + (((y - x) * (z - t)) / (a - t));
}
public static double code(double x, double y, double z, double t, double a) {
	double t_1 = x + (((y - x) * (z - t)) / (a - t));
	double tmp;
	if (t_1 <= -1e-260) {
		tmp = x + ((y - x) * ((z - t) / (a - t)));
	} else if (t_1 <= 0.0) {
		tmp = -(((y - x) * (z - a)) / t) + y;
	} else if (t_1 <= 2e+299) {
		tmp = ((z * (y - x)) / (a - t)) + (((y - x) * (t / (t - a))) + x);
	} else {
		tmp = -(((y - x) / t) * (z - a)) + y;
	}
	return tmp;
}
def code(x, y, z, t, a):
	return x + (((y - x) * (z - t)) / (a - t))
def code(x, y, z, t, a):
	t_1 = x + (((y - x) * (z - t)) / (a - t))
	tmp = 0
	if t_1 <= -1e-260:
		tmp = x + ((y - x) * ((z - t) / (a - t)))
	elif t_1 <= 0.0:
		tmp = -(((y - x) * (z - a)) / t) + y
	elif t_1 <= 2e+299:
		tmp = ((z * (y - x)) / (a - t)) + (((y - x) * (t / (t - a))) + x)
	else:
		tmp = -(((y - x) / t) * (z - a)) + y
	return tmp
function code(x, y, z, t, a)
	return Float64(x + Float64(Float64(Float64(y - x) * Float64(z - t)) / Float64(a - t)))
end
function code(x, y, z, t, a)
	t_1 = Float64(x + Float64(Float64(Float64(y - x) * Float64(z - t)) / Float64(a - t)))
	tmp = 0.0
	if (t_1 <= -1e-260)
		tmp = Float64(x + Float64(Float64(y - x) * Float64(Float64(z - t) / Float64(a - t))));
	elseif (t_1 <= 0.0)
		tmp = Float64(Float64(-Float64(Float64(Float64(y - x) * Float64(z - a)) / t)) + y);
	elseif (t_1 <= 2e+299)
		tmp = Float64(Float64(Float64(z * Float64(y - x)) / Float64(a - t)) + Float64(Float64(Float64(y - x) * Float64(t / Float64(t - a))) + x));
	else
		tmp = Float64(Float64(-Float64(Float64(Float64(y - x) / t) * Float64(z - a))) + y);
	end
	return tmp
end
function tmp = code(x, y, z, t, a)
	tmp = x + (((y - x) * (z - t)) / (a - t));
end
function tmp_2 = code(x, y, z, t, a)
	t_1 = x + (((y - x) * (z - t)) / (a - t));
	tmp = 0.0;
	if (t_1 <= -1e-260)
		tmp = x + ((y - x) * ((z - t) / (a - t)));
	elseif (t_1 <= 0.0)
		tmp = -(((y - x) * (z - a)) / t) + y;
	elseif (t_1 <= 2e+299)
		tmp = ((z * (y - x)) / (a - t)) + (((y - x) * (t / (t - a))) + x);
	else
		tmp = -(((y - x) / t) * (z - a)) + y;
	end
	tmp_2 = tmp;
end
code[x_, y_, z_, t_, a_] := N[(x + N[(N[(N[(y - x), $MachinePrecision] * N[(z - t), $MachinePrecision]), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(x + N[(N[(N[(y - x), $MachinePrecision] * N[(z - t), $MachinePrecision]), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -1e-260], N[(x + N[(N[(y - x), $MachinePrecision] * N[(N[(z - t), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 0.0], N[((-N[(N[(N[(y - x), $MachinePrecision] * N[(z - a), $MachinePrecision]), $MachinePrecision] / t), $MachinePrecision]) + y), $MachinePrecision], If[LessEqual[t$95$1, 2e+299], N[(N[(N[(z * N[(y - x), $MachinePrecision]), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(y - x), $MachinePrecision] * N[(t / N[(t - a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + x), $MachinePrecision]), $MachinePrecision], N[((-N[(N[(N[(y - x), $MachinePrecision] / t), $MachinePrecision] * N[(z - a), $MachinePrecision]), $MachinePrecision]) + y), $MachinePrecision]]]]]
x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}
\begin{array}{l}
t_1 := x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\\
\mathbf{if}\;t_1 \leq -1 \cdot 10^{-260}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\

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

\mathbf{elif}\;t_1 \leq 2 \cdot 10^{+299}:\\
\;\;\;\;\frac{z \cdot \left(y - x\right)}{a - t} + \left(\left(y - x\right) \cdot \frac{t}{t - a} + x\right)\\

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


\end{array}

Error

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original25.0
Target9.3
Herbie7.3
\[\begin{array}{l} \mathbf{if}\;a < -1.6153062845442575 \cdot 10^{-142}:\\ \;\;\;\;x + \frac{y - x}{1} \cdot \frac{z - t}{a - t}\\ \mathbf{elif}\;a < 3.774403170083174 \cdot 10^{-182}:\\ \;\;\;\;y - \frac{z}{t} \cdot \left(y - x\right)\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y - x}{1} \cdot \frac{z - t}{a - t}\\ \end{array} \]

Derivation

  1. Split input into 4 regimes
  2. if (+.f64 x (/.f64 (*.f64 (-.f64 y x) (-.f64 z t)) (-.f64 a t))) < -9.99999999999999961e-261

    1. Initial program 21.9

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

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

    if -9.99999999999999961e-261 < (+.f64 x (/.f64 (*.f64 (-.f64 y x) (-.f64 z t)) (-.f64 a t))) < 0.0

    1. Initial program 58.0

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(y - x, \frac{z - t}{a - t}, x\right)} \]
      Proof
    3. Taylor expanded in t around -inf 3.4

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

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

    if 0.0 < (+.f64 x (/.f64 (*.f64 (-.f64 y x) (-.f64 z t)) (-.f64 a t))) < 2.0000000000000001e299

    1. Initial program 2.0

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

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

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

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

    if 2.0000000000000001e299 < (+.f64 x (/.f64 (*.f64 (-.f64 y x) (-.f64 z t)) (-.f64 a t)))

    1. Initial program 62.8

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(y - x, \frac{z - t}{a - t}, x\right)} \]
      Proof
    3. Taylor expanded in t around -inf 40.9

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

      \[\leadsto \color{blue}{\left(-\frac{\left(y - x\right) \cdot \left(z - a\right)}{t}\right) + y} \]
      Proof
    5. Applied egg-rr20.7

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

Alternatives

Alternative 1
Error7.4
Cost3532
\[\begin{array}{l} t_1 := x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\\ \mathbf{if}\;t_1 \leq -1 \cdot 10^{-260}:\\ \;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\ \mathbf{elif}\;t_1 \leq 0:\\ \;\;\;\;\left(-\frac{\left(y - x\right) \cdot \left(z - a\right)}{t}\right) + y\\ \mathbf{elif}\;t_1 \leq 2 \cdot 10^{+299}:\\ \;\;\;\;t_1\\ \mathbf{else}:\\ \;\;\;\;\left(-\frac{y - x}{t} \cdot \left(z - a\right)\right) + y\\ \end{array} \]
Alternative 2
Error8.8
Cost1360
\[\begin{array}{l} t_1 := x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\ t_2 := \left(-\frac{y - x}{t} \cdot \left(z - a\right)\right) + y\\ \mathbf{if}\;t \leq -1.55 \cdot 10^{+99}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq 5.6 \cdot 10^{+122}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;t \leq 1.5 \cdot 10^{+185}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq 9.5 \cdot 10^{+226}:\\ \;\;\;\;t_1\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 3
Error13.8
Cost1296
\[\begin{array}{l} t_1 := x + \frac{z - t}{a - t} \cdot y\\ t_2 := \left(-\frac{y - x}{t} \cdot \left(z - a\right)\right) + y\\ \mathbf{if}\;t \leq -1.06 \cdot 10^{+99}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq -2.1 \cdot 10^{-164}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;t \leq 1.48 \cdot 10^{-173}:\\ \;\;\;\;x + \left(y - x\right) \cdot \frac{z}{a}\\ \mathbf{elif}\;t \leq 3.9 \cdot 10^{+109}:\\ \;\;\;\;t_1\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 4
Error28.9
Cost1236
\[\begin{array}{l} t_1 := \frac{a - z}{t}\\ t_2 := y \cdot \left(1 + t_1\right)\\ \mathbf{if}\;t \leq -1.02 \cdot 10^{+17}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq 6.8 \cdot 10^{-48}:\\ \;\;\;\;x + \frac{z}{a} \cdot y\\ \mathbf{elif}\;t \leq 7.5 \cdot 10^{+117}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq 3.35 \cdot 10^{+118}:\\ \;\;\;\;x\\ \mathbf{elif}\;t \leq 3.9 \cdot 10^{+180}:\\ \;\;\;\;-x \cdot t_1\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 5
Error28.5
Cost1236
\[\begin{array}{l} t_1 := \frac{a - z}{t}\\ t_2 := y \cdot \left(1 + t_1\right)\\ \mathbf{if}\;t \leq -1.16 \cdot 10^{+17}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;t \leq 6.4 \cdot 10^{+14}:\\ \;\;\;\;x + \frac{z}{a} \cdot y\\ \mathbf{elif}\;t \leq 1.6 \cdot 10^{+35}:\\ \;\;\;\;\left(\frac{x}{t} - \frac{y}{t}\right) \cdot z\\ \mathbf{elif}\;t \leq 4.4 \cdot 10^{+112}:\\ \;\;\;\;x + y\\ \mathbf{elif}\;t \leq 3.9 \cdot 10^{+180}:\\ \;\;\;\;-x \cdot t_1\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 6
Error19.9
Cost1100
\[\begin{array}{l} t_1 := x + \left(z - t\right) \cdot \frac{y - x}{a}\\ \mathbf{if}\;a \leq -5 \cdot 10^{-42}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;a \leq 0.055:\\ \;\;\;\;y - \frac{z \cdot \left(y - x\right)}{t}\\ \mathbf{elif}\;a \leq 6.5 \cdot 10^{+79}:\\ \;\;\;\;x + \frac{t}{t - a} \cdot y\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 7
Error16.3
Cost968
\[\begin{array}{l} t_1 := x + \frac{z - t}{a - t} \cdot y\\ \mathbf{if}\;a \leq -1.62 \cdot 10^{-161}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;a \leq 2.2 \cdot 10^{-102}:\\ \;\;\;\;y - \frac{z \cdot \left(y - x\right)}{t}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 8
Error36.9
Cost848
\[\begin{array}{l} \mathbf{if}\;t \leq -3.8 \cdot 10^{+78}:\\ \;\;\;\;y\\ \mathbf{elif}\;t \leq -2.15 \cdot 10^{-48}:\\ \;\;\;\;x\\ \mathbf{elif}\;t \leq -5.6 \cdot 10^{-250}:\\ \;\;\;\;x + y\\ \mathbf{elif}\;t \leq 3.8 \cdot 10^{-280}:\\ \;\;\;\;\frac{y \cdot z}{a}\\ \mathbf{elif}\;t \leq 6 \cdot 10^{+40}:\\ \;\;\;\;x\\ \mathbf{else}:\\ \;\;\;\;y\\ \end{array} \]
Alternative 9
Error24.5
Cost840
\[\begin{array}{l} t_1 := y \cdot \left(1 + \frac{a - z}{t}\right)\\ \mathbf{if}\;t \leq -5 \cdot 10^{+14}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;t \leq 6.2 \cdot 10^{+41}:\\ \;\;\;\;x + \left(y - x\right) \cdot \frac{z}{a}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 10
Error22.5
Cost840
\[\begin{array}{l} \mathbf{if}\;a \leq -0.000125:\\ \;\;\;\;x + \left(y - x\right) \cdot \frac{z}{a}\\ \mathbf{elif}\;a \leq 0.055:\\ \;\;\;\;y - \frac{z \cdot \left(y - x\right)}{t}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{t}{t - a} \cdot y\\ \end{array} \]
Alternative 11
Error29.6
Cost712
\[\begin{array}{l} \mathbf{if}\;t \leq -8 \cdot 10^{+86}:\\ \;\;\;\;y\\ \mathbf{elif}\;t \leq 1.15 \cdot 10^{+42}:\\ \;\;\;\;x + \frac{y}{a} \cdot z\\ \mathbf{else}:\\ \;\;\;\;y\\ \end{array} \]
Alternative 12
Error29.4
Cost712
\[\begin{array}{l} \mathbf{if}\;t \leq -1.28 \cdot 10^{+95}:\\ \;\;\;\;y\\ \mathbf{elif}\;t \leq 2.12 \cdot 10^{+40}:\\ \;\;\;\;x + \frac{z}{a} \cdot y\\ \mathbf{else}:\\ \;\;\;\;y\\ \end{array} \]
Alternative 13
Error35.8
Cost328
\[\begin{array}{l} \mathbf{if}\;a \leq -1.14 \cdot 10^{+98}:\\ \;\;\;\;x\\ \mathbf{elif}\;a \leq 29000000000000:\\ \;\;\;\;y\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array} \]
Alternative 14
Error45.6
Cost64
\[x \]

Error

Reproduce

herbie shell --seed 2023010 
(FPCore (x y z t a)
  :name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
  :precision binary64

  :herbie-target
  (if (< a -1.6153062845442575e-142) (+ x (* (/ (- y x) 1.0) (/ (- z t) (- a t)))) (if (< a 3.774403170083174e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1.0) (/ (- z t) (- a t))))))

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