?

Average Accuracy: 88.0% → 99.9%
Time: 13.0s
Precision: binary64
Cost: 7112

?

\[\frac{x + y \cdot \left(z - x\right)}{z} \]
\[\begin{array}{l} \mathbf{if}\;y \leq -5 \cdot 10^{-251}:\\ \;\;\;\;\frac{x}{z} + y \cdot \left(1 - \frac{x}{z}\right)\\ \mathbf{elif}\;y \leq 5200000000000:\\ \;\;\;\;\frac{\mathsf{fma}\left(y, z - x, x\right)}{z}\\ \mathbf{else}:\\ \;\;\;\;y - y \cdot \frac{x}{z}\\ \end{array} \]
(FPCore (x y z) :precision binary64 (/ (+ x (* y (- z x))) z))
(FPCore (x y z)
 :precision binary64
 (if (<= y -5e-251)
   (+ (/ x z) (* y (- 1.0 (/ x z))))
   (if (<= y 5200000000000.0) (/ (fma y (- z x) x) z) (- y (* y (/ x z))))))
double code(double x, double y, double z) {
	return (x + (y * (z - x))) / z;
}
double code(double x, double y, double z) {
	double tmp;
	if (y <= -5e-251) {
		tmp = (x / z) + (y * (1.0 - (x / z)));
	} else if (y <= 5200000000000.0) {
		tmp = fma(y, (z - x), x) / z;
	} else {
		tmp = y - (y * (x / z));
	}
	return tmp;
}
function code(x, y, z)
	return Float64(Float64(x + Float64(y * Float64(z - x))) / z)
end
function code(x, y, z)
	tmp = 0.0
	if (y <= -5e-251)
		tmp = Float64(Float64(x / z) + Float64(y * Float64(1.0 - Float64(x / z))));
	elseif (y <= 5200000000000.0)
		tmp = Float64(fma(y, Float64(z - x), x) / z);
	else
		tmp = Float64(y - Float64(y * Float64(x / z)));
	end
	return tmp
end
code[x_, y_, z_] := N[(N[(x + N[(y * N[(z - x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / z), $MachinePrecision]
code[x_, y_, z_] := If[LessEqual[y, -5e-251], N[(N[(x / z), $MachinePrecision] + N[(y * N[(1.0 - N[(x / z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y, 5200000000000.0], N[(N[(y * N[(z - x), $MachinePrecision] + x), $MachinePrecision] / z), $MachinePrecision], N[(y - N[(y * N[(x / z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\frac{x + y \cdot \left(z - x\right)}{z}
\begin{array}{l}
\mathbf{if}\;y \leq -5 \cdot 10^{-251}:\\
\;\;\;\;\frac{x}{z} + y \cdot \left(1 - \frac{x}{z}\right)\\

\mathbf{elif}\;y \leq 5200000000000:\\
\;\;\;\;\frac{\mathsf{fma}\left(y, z - x, x\right)}{z}\\

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


\end{array}

Error?

Bogosity?

Bogosity

Target

Original88.0%
Target94.3%
Herbie99.9%
\[\left(y + \frac{x}{z}\right) - \frac{y}{\frac{z}{x}} \]

Derivation?

  1. Split input into 3 regimes
  2. if y < -5.0000000000000003e-251

    1. Initial program 84.2%

      \[\frac{x + y \cdot \left(z - x\right)}{z} \]
    2. Taylor expanded in y around 0 99.9%

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

    if -5.0000000000000003e-251 < y < 5.2e12

    1. Initial program 100.0%

      \[\frac{x + y \cdot \left(z - x\right)}{z} \]
    2. Simplified100.0%

      \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(y, z - x, x\right)}{z}} \]
      Proof

      [Start]100.0

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

      +-commutative [=>]100.0

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

      fma-def [=>]100.0

      \[ \frac{\color{blue}{\mathsf{fma}\left(y, z - x, x\right)}}{z} \]

    if 5.2e12 < y

    1. Initial program 76.2%

      \[\frac{x + y \cdot \left(z - x\right)}{z} \]
    2. Simplified76.2%

      \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(y, z - x, x\right)}{z}} \]
      Proof

      [Start]76.2

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

      +-commutative [=>]76.2

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

      fma-def [=>]76.2

      \[ \frac{\color{blue}{\mathsf{fma}\left(y, z - x, x\right)}}{z} \]
    3. Taylor expanded in y around inf 76.2%

      \[\leadsto \color{blue}{\frac{y \cdot \left(z - x\right)}{z}} \]
    4. Simplified94.3%

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

      [Start]76.2

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

      associate-*l/ [<=]94.3

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

      *-commutative [=>]94.3

      \[ \color{blue}{\left(z - x\right) \cdot \frac{y}{z}} \]
    5. Taylor expanded in z around 0 91.5%

      \[\leadsto \color{blue}{-1 \cdot \frac{y \cdot x}{z} + y} \]
    6. Simplified100.0%

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

      [Start]91.5

      \[ -1 \cdot \frac{y \cdot x}{z} + y \]

      +-commutative [=>]91.5

      \[ \color{blue}{y + -1 \cdot \frac{y \cdot x}{z}} \]

      mul-1-neg [=>]91.5

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

      unsub-neg [=>]91.5

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

      *-commutative [=>]91.5

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

      associate-*l/ [<=]100.0

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

      *-commutative [=>]100.0

      \[ y - \color{blue}{y \cdot \frac{x}{z}} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification100.0%

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \leq -5 \cdot 10^{-251}:\\ \;\;\;\;\frac{x}{z} + y \cdot \left(1 - \frac{x}{z}\right)\\ \mathbf{elif}\;y \leq 5200000000000:\\ \;\;\;\;\frac{\mathsf{fma}\left(y, z - x, x\right)}{z}\\ \mathbf{else}:\\ \;\;\;\;y - y \cdot \frac{x}{z}\\ \end{array} \]

Alternatives

Alternative 1
Accuracy77.6%
Cost1045
\[\begin{array}{l} t_0 := y + \frac{x}{z}\\ t_1 := \frac{-y}{\frac{z}{x}}\\ \mathbf{if}\;y \leq -1.55 \cdot 10^{+97}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;y \leq -3 \cdot 10^{+37}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;y \leq 100:\\ \;\;\;\;t_0\\ \mathbf{elif}\;y \leq 2.8 \cdot 10^{+91} \lor \neg \left(y \leq 2.08 \cdot 10^{+158}\right):\\ \;\;\;\;t_1\\ \mathbf{else}:\\ \;\;\;\;z \cdot \frac{y}{z}\\ \end{array} \]
Alternative 2
Accuracy77.6%
Cost1044
\[\begin{array}{l} t_0 := y + \frac{x}{z}\\ t_1 := \frac{x}{z} \cdot \left(-y\right)\\ \mathbf{if}\;y \leq -8 \cdot 10^{+95}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;y \leq -4.5 \cdot 10^{+34}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;y \leq 85:\\ \;\;\;\;t_0\\ \mathbf{elif}\;y \leq 3.8 \cdot 10^{+91}:\\ \;\;\;\;\frac{-y}{\frac{z}{x}}\\ \mathbf{elif}\;y \leq 10^{+154}:\\ \;\;\;\;z \cdot \frac{y}{z}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 3
Accuracy53.8%
Cost984
\[\begin{array}{l} \mathbf{if}\;x \leq -5.8 \cdot 10^{+18}:\\ \;\;\;\;\frac{x}{z}\\ \mathbf{elif}\;x \leq -3.5 \cdot 10^{-38}:\\ \;\;\;\;y\\ \mathbf{elif}\;x \leq -2 \cdot 10^{-133}:\\ \;\;\;\;\frac{x}{z}\\ \mathbf{elif}\;x \leq 1.5 \cdot 10^{-139}:\\ \;\;\;\;y\\ \mathbf{elif}\;x \leq 6.5 \cdot 10^{+74}:\\ \;\;\;\;\frac{x}{z}\\ \mathbf{elif}\;x \leq 1.6 \cdot 10^{+113}:\\ \;\;\;\;y\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{z}\\ \end{array} \]
Alternative 4
Accuracy99.8%
Cost840
\[\begin{array}{l} \mathbf{if}\;y \leq -45000000000:\\ \;\;\;\;\frac{y}{\frac{z}{z - x}}\\ \mathbf{elif}\;y \leq 4100000000000:\\ \;\;\;\;\frac{x + y \cdot \left(z - x\right)}{z}\\ \mathbf{else}:\\ \;\;\;\;y - y \cdot \frac{x}{z}\\ \end{array} \]
Alternative 5
Accuracy99.9%
Cost840
\[\begin{array}{l} \mathbf{if}\;y \leq -5 \cdot 10^{-251}:\\ \;\;\;\;\frac{x}{z} + y \cdot \left(1 - \frac{x}{z}\right)\\ \mathbf{elif}\;y \leq 4200000000000:\\ \;\;\;\;\frac{x + y \cdot \left(z - x\right)}{z}\\ \mathbf{else}:\\ \;\;\;\;y - y \cdot \frac{x}{z}\\ \end{array} \]
Alternative 6
Accuracy95.5%
Cost713
\[\begin{array}{l} \mathbf{if}\;y \leq -63 \lor \neg \left(y \leq 1\right):\\ \;\;\;\;\left(z - x\right) \cdot \frac{y}{z}\\ \mathbf{else}:\\ \;\;\;\;y + \frac{x}{z}\\ \end{array} \]
Alternative 7
Accuracy99.1%
Cost713
\[\begin{array}{l} \mathbf{if}\;y \leq -63 \lor \neg \left(y \leq 1\right):\\ \;\;\;\;y - y \cdot \frac{x}{z}\\ \mathbf{else}:\\ \;\;\;\;y + \frac{x}{z}\\ \end{array} \]
Alternative 8
Accuracy99.1%
Cost712
\[\begin{array}{l} \mathbf{if}\;y \leq -63:\\ \;\;\;\;\frac{y}{\frac{z}{z - x}}\\ \mathbf{elif}\;y \leq 1:\\ \;\;\;\;y + \frac{x}{z}\\ \mathbf{else}:\\ \;\;\;\;y - y \cdot \frac{x}{z}\\ \end{array} \]
Alternative 9
Accuracy62.4%
Cost585
\[\begin{array}{l} \mathbf{if}\;y \leq -1.7 \cdot 10^{-33} \lor \neg \left(y \leq 1.55 \cdot 10^{-14}\right):\\ \;\;\;\;z \cdot \frac{y}{z}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{z}\\ \end{array} \]
Alternative 10
Accuracy78.9%
Cost452
\[\begin{array}{l} \mathbf{if}\;y \leq 1:\\ \;\;\;\;y + \frac{x}{z}\\ \mathbf{else}:\\ \;\;\;\;z \cdot \frac{y}{z}\\ \end{array} \]
Alternative 11
Accuracy40.2%
Cost64
\[y \]

Error

Reproduce?

herbie shell --seed 2023160 
(FPCore (x y z)
  :name "Diagrams.Backend.Rasterific:rasterificRadialGradient from diagrams-rasterific-1.3.1.3"
  :precision binary64

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

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