Average Error: 0.0 → 17.4
Time: 5.7s
Precision: binary64
Cost: 1240
\[\frac{x - y}{z - y} \]
\[\begin{array}{l} t_0 := \frac{x - y}{z}\\ t_1 := 1 - \frac{x}{y}\\ \mathbf{if}\;z \leq -2.5633821233555645 \cdot 10^{+161}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq -6.691893663159368 \cdot 10^{+81}:\\ \;\;\;\;\frac{-y}{z - y}\\ \mathbf{elif}\;z \leq -1.1211066976904637 \cdot 10^{+24}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq -9.090310035652928 \cdot 10^{-83}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;z \leq -1.7106545863538735 \cdot 10^{-156}:\\ \;\;\;\;\frac{x}{z - y}\\ \mathbf{elif}\;z \leq 2.33673782400799 \cdot 10^{-29}:\\ \;\;\;\;t_1\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{z} - \frac{y}{z}\\ \end{array} \]
(FPCore (x y z) :precision binary64 (/ (- x y) (- z y)))
(FPCore (x y z)
 :precision binary64
 (let* ((t_0 (/ (- x y) z)) (t_1 (- 1.0 (/ x y))))
   (if (<= z -2.5633821233555645e+161)
     t_0
     (if (<= z -6.691893663159368e+81)
       (/ (- y) (- z y))
       (if (<= z -1.1211066976904637e+24)
         t_0
         (if (<= z -9.090310035652928e-83)
           t_1
           (if (<= z -1.7106545863538735e-156)
             (/ x (- z y))
             (if (<= z 2.33673782400799e-29) t_1 (- (/ x z) (/ y z))))))))))
double code(double x, double y, double z) {
	return (x - y) / (z - y);
}
double code(double x, double y, double z) {
	double t_0 = (x - y) / z;
	double t_1 = 1.0 - (x / y);
	double tmp;
	if (z <= -2.5633821233555645e+161) {
		tmp = t_0;
	} else if (z <= -6.691893663159368e+81) {
		tmp = -y / (z - y);
	} else if (z <= -1.1211066976904637e+24) {
		tmp = t_0;
	} else if (z <= -9.090310035652928e-83) {
		tmp = t_1;
	} else if (z <= -1.7106545863538735e-156) {
		tmp = x / (z - y);
	} else if (z <= 2.33673782400799e-29) {
		tmp = t_1;
	} else {
		tmp = (x / z) - (y / z);
	}
	return tmp;
}
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    code = (x - y) / (z - y)
end function
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: tmp
    t_0 = (x - y) / z
    t_1 = 1.0d0 - (x / y)
    if (z <= (-2.5633821233555645d+161)) then
        tmp = t_0
    else if (z <= (-6.691893663159368d+81)) then
        tmp = -y / (z - y)
    else if (z <= (-1.1211066976904637d+24)) then
        tmp = t_0
    else if (z <= (-9.090310035652928d-83)) then
        tmp = t_1
    else if (z <= (-1.7106545863538735d-156)) then
        tmp = x / (z - y)
    else if (z <= 2.33673782400799d-29) then
        tmp = t_1
    else
        tmp = (x / z) - (y / z)
    end if
    code = tmp
end function
public static double code(double x, double y, double z) {
	return (x - y) / (z - y);
}
public static double code(double x, double y, double z) {
	double t_0 = (x - y) / z;
	double t_1 = 1.0 - (x / y);
	double tmp;
	if (z <= -2.5633821233555645e+161) {
		tmp = t_0;
	} else if (z <= -6.691893663159368e+81) {
		tmp = -y / (z - y);
	} else if (z <= -1.1211066976904637e+24) {
		tmp = t_0;
	} else if (z <= -9.090310035652928e-83) {
		tmp = t_1;
	} else if (z <= -1.7106545863538735e-156) {
		tmp = x / (z - y);
	} else if (z <= 2.33673782400799e-29) {
		tmp = t_1;
	} else {
		tmp = (x / z) - (y / z);
	}
	return tmp;
}
def code(x, y, z):
	return (x - y) / (z - y)
def code(x, y, z):
	t_0 = (x - y) / z
	t_1 = 1.0 - (x / y)
	tmp = 0
	if z <= -2.5633821233555645e+161:
		tmp = t_0
	elif z <= -6.691893663159368e+81:
		tmp = -y / (z - y)
	elif z <= -1.1211066976904637e+24:
		tmp = t_0
	elif z <= -9.090310035652928e-83:
		tmp = t_1
	elif z <= -1.7106545863538735e-156:
		tmp = x / (z - y)
	elif z <= 2.33673782400799e-29:
		tmp = t_1
	else:
		tmp = (x / z) - (y / z)
	return tmp
function code(x, y, z)
	return Float64(Float64(x - y) / Float64(z - y))
end
function code(x, y, z)
	t_0 = Float64(Float64(x - y) / z)
	t_1 = Float64(1.0 - Float64(x / y))
	tmp = 0.0
	if (z <= -2.5633821233555645e+161)
		tmp = t_0;
	elseif (z <= -6.691893663159368e+81)
		tmp = Float64(Float64(-y) / Float64(z - y));
	elseif (z <= -1.1211066976904637e+24)
		tmp = t_0;
	elseif (z <= -9.090310035652928e-83)
		tmp = t_1;
	elseif (z <= -1.7106545863538735e-156)
		tmp = Float64(x / Float64(z - y));
	elseif (z <= 2.33673782400799e-29)
		tmp = t_1;
	else
		tmp = Float64(Float64(x / z) - Float64(y / z));
	end
	return tmp
end
function tmp = code(x, y, z)
	tmp = (x - y) / (z - y);
end
function tmp_2 = code(x, y, z)
	t_0 = (x - y) / z;
	t_1 = 1.0 - (x / y);
	tmp = 0.0;
	if (z <= -2.5633821233555645e+161)
		tmp = t_0;
	elseif (z <= -6.691893663159368e+81)
		tmp = -y / (z - y);
	elseif (z <= -1.1211066976904637e+24)
		tmp = t_0;
	elseif (z <= -9.090310035652928e-83)
		tmp = t_1;
	elseif (z <= -1.7106545863538735e-156)
		tmp = x / (z - y);
	elseif (z <= 2.33673782400799e-29)
		tmp = t_1;
	else
		tmp = (x / z) - (y / z);
	end
	tmp_2 = tmp;
end
code[x_, y_, z_] := N[(N[(x - y), $MachinePrecision] / N[(z - y), $MachinePrecision]), $MachinePrecision]
code[x_, y_, z_] := Block[{t$95$0 = N[(N[(x - y), $MachinePrecision] / z), $MachinePrecision]}, Block[{t$95$1 = N[(1.0 - N[(x / y), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[z, -2.5633821233555645e+161], t$95$0, If[LessEqual[z, -6.691893663159368e+81], N[((-y) / N[(z - y), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, -1.1211066976904637e+24], t$95$0, If[LessEqual[z, -9.090310035652928e-83], t$95$1, If[LessEqual[z, -1.7106545863538735e-156], N[(x / N[(z - y), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 2.33673782400799e-29], t$95$1, N[(N[(x / z), $MachinePrecision] - N[(y / z), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\frac{x - y}{z - y}
\begin{array}{l}
t_0 := \frac{x - y}{z}\\
t_1 := 1 - \frac{x}{y}\\
\mathbf{if}\;z \leq -2.5633821233555645 \cdot 10^{+161}:\\
\;\;\;\;t_0\\

\mathbf{elif}\;z \leq -6.691893663159368 \cdot 10^{+81}:\\
\;\;\;\;\frac{-y}{z - y}\\

\mathbf{elif}\;z \leq -1.1211066976904637 \cdot 10^{+24}:\\
\;\;\;\;t_0\\

\mathbf{elif}\;z \leq -9.090310035652928 \cdot 10^{-83}:\\
\;\;\;\;t_1\\

\mathbf{elif}\;z \leq -1.7106545863538735 \cdot 10^{-156}:\\
\;\;\;\;\frac{x}{z - y}\\

\mathbf{elif}\;z \leq 2.33673782400799 \cdot 10^{-29}:\\
\;\;\;\;t_1\\

\mathbf{else}:\\
\;\;\;\;\frac{x}{z} - \frac{y}{z}\\


\end{array}

Error

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original0.0
Target0.0
Herbie17.4
\[\frac{x}{z - y} - \frac{y}{z - y} \]

Derivation

  1. Split input into 5 regimes
  2. if z < -2.5633821233555645e161 or -6.6918936631593678e81 < z < -1.12110669769046373e24

    1. Initial program 0.0

      \[\frac{x - y}{z - y} \]
    2. Taylor expanded in z around inf 13.2

      \[\leadsto \color{blue}{\frac{x - y}{z}} \]

    if -2.5633821233555645e161 < z < -6.6918936631593678e81

    1. Initial program 0.0

      \[\frac{x - y}{z - y} \]
    2. Taylor expanded in x around 0 29.6

      \[\leadsto \color{blue}{-1 \cdot \frac{y}{z - y}} \]
    3. Simplified29.6

      \[\leadsto \color{blue}{\frac{-y}{z - y}} \]

    if -1.12110669769046373e24 < z < -9.090310035652928e-83 or -1.71065458635387351e-156 < z < 2.33673782400799009e-29

    1. Initial program 0.0

      \[\frac{x - y}{z - y} \]
    2. Taylor expanded in z around 0 14.6

      \[\leadsto \color{blue}{-1 \cdot \frac{x - y}{y}} \]
    3. Simplified14.6

      \[\leadsto \color{blue}{1 - \frac{x}{y}} \]

    if -9.090310035652928e-83 < z < -1.71065458635387351e-156

    1. Initial program 0.0

      \[\frac{x - y}{z - y} \]
    2. Taylor expanded in x around inf 35.6

      \[\leadsto \color{blue}{\frac{x}{z - y}} \]

    if 2.33673782400799009e-29 < z

    1. Initial program 0.0

      \[\frac{x - y}{z - y} \]
    2. Taylor expanded in z around inf 17.5

      \[\leadsto \color{blue}{\frac{x - y}{z}} \]
    3. Applied egg-rr17.5

      \[\leadsto \color{blue}{\frac{x}{z} - \frac{y}{z}} \]
  3. Recombined 5 regimes into one program.
  4. Final simplification17.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \leq -2.5633821233555645 \cdot 10^{+161}:\\ \;\;\;\;\frac{x - y}{z}\\ \mathbf{elif}\;z \leq -6.691893663159368 \cdot 10^{+81}:\\ \;\;\;\;\frac{-y}{z - y}\\ \mathbf{elif}\;z \leq -1.1211066976904637 \cdot 10^{+24}:\\ \;\;\;\;\frac{x - y}{z}\\ \mathbf{elif}\;z \leq -9.090310035652928 \cdot 10^{-83}:\\ \;\;\;\;1 - \frac{x}{y}\\ \mathbf{elif}\;z \leq -1.7106545863538735 \cdot 10^{-156}:\\ \;\;\;\;\frac{x}{z - y}\\ \mathbf{elif}\;z \leq 2.33673782400799 \cdot 10^{-29}:\\ \;\;\;\;1 - \frac{x}{y}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{z} - \frac{y}{z}\\ \end{array} \]

Alternatives

Alternative 1
Error18.0
Cost1112
\[\begin{array}{l} t_0 := \frac{x - y}{z}\\ t_1 := 1 - \frac{x}{y}\\ \mathbf{if}\;z \leq -1.8673805929717004 \cdot 10^{+148}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq -1.7943935926826157 \cdot 10^{+90}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;z \leq -1.1211066976904637 \cdot 10^{+24}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq -9.090310035652928 \cdot 10^{-83}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;z \leq -1.7106545863538735 \cdot 10^{-156}:\\ \;\;\;\;\frac{x}{z - y}\\ \mathbf{elif}\;z \leq 2.33673782400799 \cdot 10^{-29}:\\ \;\;\;\;t_1\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 2
Error17.4
Cost1112
\[\begin{array}{l} t_0 := \frac{x - y}{z}\\ t_1 := 1 - \frac{x}{y}\\ \mathbf{if}\;z \leq -2.5633821233555645 \cdot 10^{+161}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq -6.691893663159368 \cdot 10^{+81}:\\ \;\;\;\;\frac{-y}{z - y}\\ \mathbf{elif}\;z \leq -1.1211066976904637 \cdot 10^{+24}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq -9.090310035652928 \cdot 10^{-83}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;z \leq -1.7106545863538735 \cdot 10^{-156}:\\ \;\;\;\;\frac{x}{z - y}\\ \mathbf{elif}\;z \leq 2.33673782400799 \cdot 10^{-29}:\\ \;\;\;\;t_1\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 3
Error20.7
Cost980
\[\begin{array}{l} t_0 := \frac{x}{z - y}\\ \mathbf{if}\;y \leq -3.701652366645535 \cdot 10^{+96}:\\ \;\;\;\;1 + \frac{z}{y}\\ \mathbf{elif}\;y \leq -30.577365894184755:\\ \;\;\;\;t_0\\ \mathbf{elif}\;y \leq -3.955312324278627 \cdot 10^{-17}:\\ \;\;\;\;1\\ \mathbf{elif}\;y \leq -8.953604463913068 \cdot 10^{-84}:\\ \;\;\;\;\frac{x - y}{z}\\ \mathbf{elif}\;y \leq 3.6404051415991935 \cdot 10^{+68}:\\ \;\;\;\;t_0\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \]
Alternative 4
Error25.5
Cost652
\[\begin{array}{l} \mathbf{if}\;y \leq -3.955312324278627 \cdot 10^{-17}:\\ \;\;\;\;1\\ \mathbf{elif}\;y \leq 1438.8701524641892:\\ \;\;\;\;\frac{x}{z}\\ \mathbf{elif}\;y \leq 5.048748105400254 \cdot 10^{+41}:\\ \;\;\;\;\frac{-x}{y}\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \]
Alternative 5
Error20.6
Cost584
\[\begin{array}{l} \mathbf{if}\;y \leq -3.701652366645535 \cdot 10^{+96}:\\ \;\;\;\;1\\ \mathbf{elif}\;y \leq 3.6404051415991935 \cdot 10^{+68}:\\ \;\;\;\;\frac{x}{z - y}\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \]
Alternative 6
Error20.6
Cost584
\[\begin{array}{l} \mathbf{if}\;y \leq -3.701652366645535 \cdot 10^{+96}:\\ \;\;\;\;1 + \frac{z}{y}\\ \mathbf{elif}\;y \leq 3.6404051415991935 \cdot 10^{+68}:\\ \;\;\;\;\frac{x}{z - y}\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \]
Alternative 7
Error25.6
Cost456
\[\begin{array}{l} \mathbf{if}\;y \leq -3.955312324278627 \cdot 10^{-17}:\\ \;\;\;\;1\\ \mathbf{elif}\;y \leq 1438.8701524641892:\\ \;\;\;\;\frac{x}{z}\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \]
Alternative 8
Error41.3
Cost64
\[1 \]

Error

Reproduce

herbie shell --seed 2022228 
(FPCore (x y z)
  :name "Graphics.Rasterific.Shading:$sgradientColorAt from Rasterific-0.6.1"
  :precision binary64

  :herbie-target
  (- (/ x (- z y)) (/ y (- z y)))

  (/ (- x y) (- z y)))