?

Average Error: 13.6 → 0.2
Time: 2.3min
Precision: binary64
Cost: 39168

?

\[\left(\left(\left(x = 0 \lor 0.5884142 \leq x \land x \leq 505.5909\right) \land \left(-1.796658 \cdot 10^{+308} \leq y \land y \leq -9.425585 \cdot 10^{-310} \lor 1.284938 \cdot 10^{-309} \leq y \land y \leq 1.751224 \cdot 10^{+308}\right)\right) \land \left(-1.776707 \cdot 10^{+308} \leq z \land z \leq -8.599796 \cdot 10^{-310} \lor 3.293145 \cdot 10^{-311} \leq z \land z \leq 1.725154 \cdot 10^{+308}\right)\right) \land \left(-1.796658 \cdot 10^{+308} \leq a \land a \leq -9.425585 \cdot 10^{-310} \lor 1.284938 \cdot 10^{-309} \leq a \land a \leq 1.751224 \cdot 10^{+308}\right)\]
\[x + \left(\tan \left(y + z\right) - \tan a\right) \]
\[x + \left(\frac{-\left(\tan y + \tan z\right)}{\mathsf{fma}\left(\tan y, \tan z, -1\right)} - \tan a\right) \]
(FPCore (x y z a) :precision binary64 (+ x (- (tan (+ y z)) (tan a))))
(FPCore (x y z a)
 :precision binary64
 (+ x (- (/ (- (+ (tan y) (tan z))) (fma (tan y) (tan z) -1.0)) (tan a))))
double code(double x, double y, double z, double a) {
	return x + (tan((y + z)) - tan(a));
}
double code(double x, double y, double z, double a) {
	return x + ((-(tan(y) + tan(z)) / fma(tan(y), tan(z), -1.0)) - tan(a));
}
function code(x, y, z, a)
	return Float64(x + Float64(tan(Float64(y + z)) - tan(a)))
end
function code(x, y, z, a)
	return Float64(x + Float64(Float64(Float64(-Float64(tan(y) + tan(z))) / fma(tan(y), tan(z), -1.0)) - tan(a)))
end
code[x_, y_, z_, a_] := N[(x + N[(N[Tan[N[(y + z), $MachinePrecision]], $MachinePrecision] - N[Tan[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[x_, y_, z_, a_] := N[(x + N[(N[((-N[(N[Tan[y], $MachinePrecision] + N[Tan[z], $MachinePrecision]), $MachinePrecision]) / N[(N[Tan[y], $MachinePrecision] * N[Tan[z], $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision] - N[Tan[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
x + \left(\tan \left(y + z\right) - \tan a\right)
x + \left(\frac{-\left(\tan y + \tan z\right)}{\mathsf{fma}\left(\tan y, \tan z, -1\right)} - \tan a\right)

Error?

Derivation?

  1. Initial program 13.6

    \[x + \left(\tan \left(y + z\right) - \tan a\right) \]
  2. Applied egg-rr0.2

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

Alternatives

Alternative 1
Error7.0
Cost45768
\[\begin{array}{l} t_0 := x + \left(\tan \left(y + z\right) - \tan a\right)\\ \mathbf{if}\;\tan a \leq -0.002:\\ \;\;\;\;t_0\\ \mathbf{elif}\;\tan a \leq 5 \cdot 10^{-6}:\\ \;\;\;\;\left(x - a\right) - \frac{\tan y + \tan z}{\mathsf{fma}\left(\tan y, \tan z, -1\right)}\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 2
Error0.2
Cost32832
\[x + \left(\frac{\tan y + \tan z}{1 - \tan y \cdot \tan z} - \tan a\right) \]
Alternative 3
Error7.9
Cost26568
\[\begin{array}{l} t_0 := x + \left(\tan \left(y + z\right) - \tan a\right)\\ \mathbf{if}\;a \leq -2.95 \cdot 10^{+26}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;a \leq 6.2 \cdot 10^{-8}:\\ \;\;\;\;\frac{\tan z + \tan y}{1 - \tan z \cdot \tan y} + x\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 4
Error26.1
Cost19784
\[\begin{array}{l} t_0 := x - \tan a\\ \mathbf{if}\;\tan a \leq -0.05:\\ \;\;\;\;t_0\\ \mathbf{elif}\;\tan a \leq 2.5 \cdot 10^{-6}:\\ \;\;\;\;\tan \left(z + y\right) + x\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 5
Error20.3
Cost13384
\[\begin{array}{l} \mathbf{if}\;z \leq -5 \cdot 10^{-10}:\\ \;\;\;\;\tan \left(z + y\right) + x\\ \mathbf{elif}\;z \leq 0.003:\\ \;\;\;\;x + \left(\tan y - \tan a\right)\\ \mathbf{else}:\\ \;\;\;\;\tan z + x\\ \end{array} \]
Alternative 6
Error13.9
Cost13384
\[\begin{array}{l} t_0 := x + \left(\tan y - \tan a\right)\\ \mathbf{if}\;y \leq -13:\\ \;\;\;\;t_0\\ \mathbf{elif}\;y \leq 2.2 \cdot 10^{-8}:\\ \;\;\;\;x + \left(\tan z - \tan a\right)\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 7
Error13.6
Cost13248
\[x + \left(\tan \left(y + z\right) - \tan a\right) \]
Alternative 8
Error26.0
Cost7112
\[\begin{array}{l} t_0 := x - \tan a\\ \mathbf{if}\;a \leq -3.5 \cdot 10^{-9}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;a \leq 62:\\ \;\;\;\;x + \left(\tan \left(z + y\right) - a\right)\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 9
Error32.2
Cost6988
\[\begin{array}{l} t_0 := \tan z + x\\ \mathbf{if}\;z \leq -1300:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq 5.8 \cdot 10^{-303}:\\ \;\;\;\;x - \tan a\\ \mathbf{elif}\;z \leq 0.00052:\\ \;\;\;\;\tan y + x\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 10
Error32.0
Cost6856
\[\begin{array}{l} t_0 := \tan z + x\\ \mathbf{if}\;z \leq -3.2 \cdot 10^{-6}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;z \leq 0.00052:\\ \;\;\;\;\tan y + x\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 11
Error38.0
Cost6592
\[\tan y + x \]
Alternative 12
Error43.8
Cost64
\[x \]

Error

Reproduce?

herbie shell --seed 2023033 
(FPCore (x y z a)
  :name "tan-example (used to crash)"
  :precision binary64
  :pre (and (and (and (or (== x 0.0) (and (<= 0.5884142 x) (<= x 505.5909))) (or (and (<= -1.796658e+308 y) (<= y -9.425585e-310)) (and (<= 1.284938e-309 y) (<= y 1.751224e+308)))) (or (and (<= -1.776707e+308 z) (<= z -8.599796e-310)) (and (<= 3.293145e-311 z) (<= z 1.725154e+308)))) (or (and (<= -1.796658e+308 a) (<= a -9.425585e-310)) (and (<= 1.284938e-309 a) (<= a 1.751224e+308))))
  (+ x (- (tan (+ y z)) (tan a))))