| Alternative 1 | |
|---|---|
| Error | 89.23% |
| Cost | 45312 |
\[\mathsf{fma}\left(\sqrt{\pi} \cdot \sqrt{0.5}, \sqrt{\pi \cdot 0.5}, -\sin^{-1} \left(1 - x\right)\right)
\]
(FPCore (x) :precision binary64 (acos (- 1.0 x)))
(FPCore (x)
:precision binary64
(let* ((t_0 (* (pow PI 2.0) 0.25)) (t_1 (asin (- 1.0 x))))
(/
(fma t_0 (* PI 0.5) (- (pow t_1 3.0)))
(+ (* t_1 (+ (* PI 0.5) t_1)) t_0))))double code(double x) {
return acos((1.0 - x));
}
double code(double x) {
double t_0 = pow(((double) M_PI), 2.0) * 0.25;
double t_1 = asin((1.0 - x));
return fma(t_0, (((double) M_PI) * 0.5), -pow(t_1, 3.0)) / ((t_1 * ((((double) M_PI) * 0.5) + t_1)) + t_0);
}
function code(x) return acos(Float64(1.0 - x)) end
function code(x) t_0 = Float64((pi ^ 2.0) * 0.25) t_1 = asin(Float64(1.0 - x)) return Float64(fma(t_0, Float64(pi * 0.5), Float64(-(t_1 ^ 3.0))) / Float64(Float64(t_1 * Float64(Float64(pi * 0.5) + t_1)) + t_0)) end
code[x_] := N[ArcCos[N[(1.0 - x), $MachinePrecision]], $MachinePrecision]
code[x_] := Block[{t$95$0 = N[(N[Power[Pi, 2.0], $MachinePrecision] * 0.25), $MachinePrecision]}, Block[{t$95$1 = N[ArcSin[N[(1.0 - x), $MachinePrecision]], $MachinePrecision]}, N[(N[(t$95$0 * N[(Pi * 0.5), $MachinePrecision] + (-N[Power[t$95$1, 3.0], $MachinePrecision])), $MachinePrecision] / N[(N[(t$95$1 * N[(N[(Pi * 0.5), $MachinePrecision] + t$95$1), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]), $MachinePrecision]]]
\cos^{-1} \left(1 - x\right)
\begin{array}{l}
t_0 := {\pi}^{2} \cdot 0.25\\
t_1 := \sin^{-1} \left(1 - x\right)\\
\frac{\mathsf{fma}\left(t_0, \pi \cdot 0.5, -{t_1}^{3}\right)}{t_1 \cdot \left(\pi \cdot 0.5 + t_1\right) + t_0}
\end{array}
| Original | 92.83% |
|---|---|
| Target | 0.02% |
| Herbie | 89.23% |
Initial program 92.83
Applied egg-rr92.84
Simplified92.84
[Start]92.84 | \[ \frac{{\left(\pi \cdot 0.5\right)}^{3} - {\sin^{-1} \left(1 - x\right)}^{3}}{\left(\pi \cdot 0.5\right) \cdot \left(\pi \cdot 0.5\right) + \left(\sin^{-1} \left(1 - x\right) \cdot \sin^{-1} \left(1 - x\right) + \left(\pi \cdot 0.5\right) \cdot \sin^{-1} \left(1 - x\right)\right)}
\] |
|---|---|
cube-prod [=>]92.84 | \[ \frac{\color{blue}{{\pi}^{3} \cdot {0.5}^{3}} - {\sin^{-1} \left(1 - x\right)}^{3}}{\left(\pi \cdot 0.5\right) \cdot \left(\pi \cdot 0.5\right) + \left(\sin^{-1} \left(1 - x\right) \cdot \sin^{-1} \left(1 - x\right) + \left(\pi \cdot 0.5\right) \cdot \sin^{-1} \left(1 - x\right)\right)}
\] |
metadata-eval [=>]92.84 | \[ \frac{{\pi}^{3} \cdot \color{blue}{0.125} - {\sin^{-1} \left(1 - x\right)}^{3}}{\left(\pi \cdot 0.5\right) \cdot \left(\pi \cdot 0.5\right) + \left(\sin^{-1} \left(1 - x\right) \cdot \sin^{-1} \left(1 - x\right) + \left(\pi \cdot 0.5\right) \cdot \sin^{-1} \left(1 - x\right)\right)}
\] |
swap-sqr [=>]92.84 | \[ \frac{{\pi}^{3} \cdot 0.125 - {\sin^{-1} \left(1 - x\right)}^{3}}{\color{blue}{\left(\pi \cdot \pi\right) \cdot \left(0.5 \cdot 0.5\right)} + \left(\sin^{-1} \left(1 - x\right) \cdot \sin^{-1} \left(1 - x\right) + \left(\pi \cdot 0.5\right) \cdot \sin^{-1} \left(1 - x\right)\right)}
\] |
metadata-eval [=>]92.84 | \[ \frac{{\pi}^{3} \cdot 0.125 - {\sin^{-1} \left(1 - x\right)}^{3}}{\left(\pi \cdot \pi\right) \cdot \color{blue}{0.25} + \left(\sin^{-1} \left(1 - x\right) \cdot \sin^{-1} \left(1 - x\right) + \left(\pi \cdot 0.5\right) \cdot \sin^{-1} \left(1 - x\right)\right)}
\] |
distribute-rgt-out [=>]92.84 | \[ \frac{{\pi}^{3} \cdot 0.125 - {\sin^{-1} \left(1 - x\right)}^{3}}{\left(\pi \cdot \pi\right) \cdot 0.25 + \color{blue}{\sin^{-1} \left(1 - x\right) \cdot \left(\sin^{-1} \left(1 - x\right) + \pi \cdot 0.5\right)}}
\] |
+-commutative [<=]92.84 | \[ \frac{{\pi}^{3} \cdot 0.125 - {\sin^{-1} \left(1 - x\right)}^{3}}{\left(\pi \cdot \pi\right) \cdot 0.25 + \sin^{-1} \left(1 - x\right) \cdot \color{blue}{\left(\pi \cdot 0.5 + \sin^{-1} \left(1 - x\right)\right)}}
\] |
fma-def [=>]92.84 | \[ \frac{{\pi}^{3} \cdot 0.125 - {\sin^{-1} \left(1 - x\right)}^{3}}{\left(\pi \cdot \pi\right) \cdot 0.25 + \sin^{-1} \left(1 - x\right) \cdot \color{blue}{\mathsf{fma}\left(\pi, 0.5, \sin^{-1} \left(1 - x\right)\right)}}
\] |
Applied egg-rr89.23
Taylor expanded in x around 0 89.23
Final simplification89.23
| Alternative 1 | |
|---|---|
| Error | 89.23% |
| Cost | 45312 |
| Alternative 2 | |
|---|---|
| Error | 89.3% |
| Cost | 32384 |
| Alternative 3 | |
|---|---|
| Error | 89.3% |
| Cost | 26304 |
| Alternative 4 | |
|---|---|
| Error | 89.31% |
| Cost | 26048 |
| Alternative 5 | |
|---|---|
| Error | 90.23% |
| Cost | 19844 |
| Alternative 6 | |
|---|---|
| Error | 90.23% |
| Cost | 19716 |
| Alternative 7 | |
|---|---|
| Error | 90.22% |
| Cost | 19588 |
| Alternative 8 | |
|---|---|
| Error | 90.23% |
| Cost | 13572 |
| Alternative 9 | |
|---|---|
| Error | 90.22% |
| Cost | 13380 |
| Alternative 10 | |
|---|---|
| Error | 92.83% |
| Cost | 6592 |
herbie shell --seed 2023103
(FPCore (x)
:name "bug323 (missed optimization)"
:precision binary64
:pre (and (<= 0.0 x) (<= x 0.5))
:herbie-target
(* 2.0 (asin (sqrt (/ x 2.0))))
(acos (- 1.0 x)))