?

Average Accuracy: 83.3% → 98.1%
Time: 14.7s
Precision: binary64
Cost: 6976

?

\[x + \frac{\left(y - z\right) \cdot t}{a - z} \]
\[\mathsf{fma}\left(\frac{y - z}{a - z}, t, x\right) \]
(FPCore (x y z t a) :precision binary64 (+ x (/ (* (- y z) t) (- a z))))
(FPCore (x y z t a) :precision binary64 (fma (/ (- y z) (- a z)) t x))
double code(double x, double y, double z, double t, double a) {
	return x + (((y - z) * t) / (a - z));
}
double code(double x, double y, double z, double t, double a) {
	return fma(((y - z) / (a - z)), t, x);
}
function code(x, y, z, t, a)
	return Float64(x + Float64(Float64(Float64(y - z) * t) / Float64(a - z)))
end
function code(x, y, z, t, a)
	return fma(Float64(Float64(y - z) / Float64(a - z)), t, x)
end
code[x_, y_, z_, t_, a_] := N[(x + N[(N[(N[(y - z), $MachinePrecision] * t), $MachinePrecision] / N[(a - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[x_, y_, z_, t_, a_] := N[(N[(N[(y - z), $MachinePrecision] / N[(a - z), $MachinePrecision]), $MachinePrecision] * t + x), $MachinePrecision]
x + \frac{\left(y - z\right) \cdot t}{a - z}
\mathsf{fma}\left(\frac{y - z}{a - z}, t, x\right)

Error?

Target

Original83.3%
Target99.3%
Herbie98.1%
\[\begin{array}{l} \mathbf{if}\;t < -1.0682974490174067 \cdot 10^{-39}:\\ \;\;\;\;x + \frac{y - z}{a - z} \cdot t\\ \mathbf{elif}\;t < 3.9110949887586375 \cdot 10^{-141}:\\ \;\;\;\;x + \frac{\left(y - z\right) \cdot t}{a - z}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y - z}{a - z} \cdot t\\ \end{array} \]

Derivation?

  1. Initial program 83.3%

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

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

    [Start]83.3

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

    +-commutative [=>]83.3

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

    associate-*l/ [<=]98.1

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

    fma-def [=>]98.1

    \[ \color{blue}{\mathsf{fma}\left(\frac{y - z}{a - z}, t, x\right)} \]
  3. Final simplification98.1%

    \[\leadsto \mathsf{fma}\left(\frac{y - z}{a - z}, t, x\right) \]

Alternatives

Alternative 1
Accuracy81.3%
Cost841
\[\begin{array}{l} \mathbf{if}\;z \leq -1550 \lor \neg \left(z \leq 6.6 \cdot 10^{-105}\right):\\ \;\;\;\;x + t \cdot \left(1 - \frac{y}{z}\right)\\ \mathbf{else}:\\ \;\;\;\;x + \frac{t}{\frac{a}{y}}\\ \end{array} \]
Alternative 2
Accuracy82.3%
Cost841
\[\begin{array}{l} \mathbf{if}\;z \leq -2.25 \cdot 10^{+18} \lor \neg \left(z \leq 4.3 \cdot 10^{-105}\right):\\ \;\;\;\;x + t \cdot \left(1 - \frac{y}{z}\right)\\ \mathbf{else}:\\ \;\;\;\;x + \frac{t}{\frac{a}{y - z}}\\ \end{array} \]
Alternative 3
Accuracy84.5%
Cost841
\[\begin{array}{l} \mathbf{if}\;z \leq -3.2 \cdot 10^{-69} \lor \neg \left(z \leq 3.1 \cdot 10^{-109}\right):\\ \;\;\;\;x - \frac{t}{\frac{a}{z} + -1}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{t}{\frac{a}{y - z}}\\ \end{array} \]
Alternative 4
Accuracy76.1%
Cost712
\[\begin{array}{l} \mathbf{if}\;z \leq -2.65 \cdot 10^{-70}:\\ \;\;\;\;t + x\\ \mathbf{elif}\;z \leq 1.35 \cdot 10^{-105}:\\ \;\;\;\;x + t \cdot \frac{y}{a}\\ \mathbf{else}:\\ \;\;\;\;t + x\\ \end{array} \]
Alternative 5
Accuracy76.5%
Cost712
\[\begin{array}{l} \mathbf{if}\;z \leq -5.8 \cdot 10^{-37}:\\ \;\;\;\;t + x\\ \mathbf{elif}\;z \leq 8 \cdot 10^{-105}:\\ \;\;\;\;x + \frac{t}{\frac{a}{y}}\\ \mathbf{else}:\\ \;\;\;\;t + x\\ \end{array} \]
Alternative 6
Accuracy98.1%
Cost704
\[x + \frac{y - z}{a - z} \cdot t \]
Alternative 7
Accuracy68.2%
Cost456
\[\begin{array}{l} \mathbf{if}\;z \leq -1.25 \cdot 10^{-47}:\\ \;\;\;\;t + x\\ \mathbf{elif}\;z \leq 2.25 \cdot 10^{-105}:\\ \;\;\;\;x\\ \mathbf{else}:\\ \;\;\;\;t + x\\ \end{array} \]
Alternative 8
Accuracy56.0%
Cost196
\[\begin{array}{l} \mathbf{if}\;t \leq 8.5 \cdot 10^{+172}:\\ \;\;\;\;x\\ \mathbf{else}:\\ \;\;\;\;t\\ \end{array} \]
Alternative 9
Accuracy20.0%
Cost64
\[t \]

Error

Reproduce?

herbie shell --seed 2023151 
(FPCore (x y z t a)
  :name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, A"
  :precision binary64

  :herbie-target
  (if (< t -1.0682974490174067e-39) (+ x (* (/ (- y z) (- a z)) t)) (if (< t 3.9110949887586375e-141) (+ x (/ (* (- y z) t) (- a z))) (+ x (* (/ (- y z) (- a z)) t))))

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