| Alternative 1 | |
|---|---|
| Accuracy | 99.7% |
| Cost | 32960 |
\[x + \left(\frac{1}{1 - \tan z \cdot \tan y} \cdot \left(\tan z + \tan y\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 a)
(*
(fma (sin y) (/ 1.0 (cos y)) (tan z))
(/ 1.0 (- 1.0 (* (tan z) (tan y))))))))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(a) - (fma(sin(y), (1.0 / cos(y)), tan(z)) * (1.0 / (1.0 - (tan(z) * tan(y))))));
}
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(tan(a) - Float64(fma(sin(y), Float64(1.0 / cos(y)), tan(z)) * Float64(1.0 / Float64(1.0 - Float64(tan(z) * tan(y))))))) 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[Tan[a], $MachinePrecision] - N[(N[(N[Sin[y], $MachinePrecision] * N[(1.0 / N[Cos[y], $MachinePrecision]), $MachinePrecision] + N[Tan[z], $MachinePrecision]), $MachinePrecision] * N[(1.0 / N[(1.0 - N[(N[Tan[z], $MachinePrecision] * N[Tan[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
x + \left(\tan \left(y + z\right) - \tan a\right)
x - \left(\tan a - \mathsf{fma}\left(\sin y, \frac{1}{\cos y}, \tan z\right) \cdot \frac{1}{1 - \tan z \cdot \tan y}\right)
Initial program 80.2%
Applied egg-rr99.7%
[Start]80.2 | \[ x + \left(\tan \left(y + z\right) - \tan a\right)
\] |
|---|---|
tan-sum [=>]99.7 | \[ x + \left(\color{blue}{\frac{\tan y + \tan z}{1 - \tan y \cdot \tan z}} - \tan a\right)
\] |
div-inv [=>]99.7 | \[ x + \left(\color{blue}{\left(\tan y + \tan z\right) \cdot \frac{1}{1 - \tan y \cdot \tan z}} - \tan a\right)
\] |
Applied egg-rr99.7%
[Start]99.7 | \[ x + \left(\left(\tan y + \tan z\right) \cdot \frac{1}{1 - \tan y \cdot \tan z} - \tan a\right)
\] |
|---|---|
tan-quot [=>]99.7 | \[ x + \left(\left(\color{blue}{\frac{\sin y}{\cos y}} + \tan z\right) \cdot \frac{1}{1 - \tan y \cdot \tan z} - \tan a\right)
\] |
div-inv [=>]99.7 | \[ x + \left(\left(\color{blue}{\sin y \cdot \frac{1}{\cos y}} + \tan z\right) \cdot \frac{1}{1 - \tan y \cdot \tan z} - \tan a\right)
\] |
fma-def [=>]99.7 | \[ x + \left(\color{blue}{\mathsf{fma}\left(\sin y, \frac{1}{\cos y}, \tan z\right)} \cdot \frac{1}{1 - \tan y \cdot \tan z} - \tan a\right)
\] |
Final simplification99.7%
| Alternative 1 | |
|---|---|
| Accuracy | 99.7% |
| Cost | 32960 |
| Alternative 2 | |
|---|---|
| Accuracy | 99.7% |
| Cost | 32832 |
| Alternative 3 | |
|---|---|
| Accuracy | 89.3% |
| Cost | 26696 |
| Alternative 4 | |
|---|---|
| Accuracy | 89.3% |
| Cost | 26568 |
| Alternative 5 | |
|---|---|
| Accuracy | 70.6% |
| Cost | 13385 |
| Alternative 6 | |
|---|---|
| Accuracy | 70.7% |
| Cost | 13384 |
| Alternative 7 | |
|---|---|
| Accuracy | 80.2% |
| Cost | 13248 |
| Alternative 8 | |
|---|---|
| Accuracy | 50.7% |
| Cost | 6720 |
| Alternative 9 | |
|---|---|
| Accuracy | 31.8% |
| Cost | 64 |
herbie shell --seed 2023151
(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))))