?

Average Error: 92.83% → 89.23%
Time: 9.5s
Precision: binary64
Cost: 72000

?

\[0 \leq x \land x \leq 0.5\]
\[\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} \]
(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}

Error?

Target

Original92.83%
Target0.02%
Herbie89.23%
\[2 \cdot \sin^{-1} \left(\sqrt{\frac{x}{2}}\right) \]

Derivation?

  1. Initial program 92.83

    \[\cos^{-1} \left(1 - x\right) \]
  2. Applied egg-rr92.84

    \[\leadsto \color{blue}{\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)}} \]
  3. Simplified92.84

    \[\leadsto \color{blue}{\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 \mathsf{fma}\left(\pi, 0.5, \sin^{-1} \left(1 - x\right)\right)}} \]
    Proof

    [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)}} \]
  4. Applied egg-rr89.23

    \[\leadsto \frac{\color{blue}{\mathsf{fma}\left({\pi}^{2} \cdot 0.25, \pi \cdot 0.5, -{\sin^{-1} \left(1 - x\right)}^{3}\right)}}{\left(\pi \cdot \pi\right) \cdot 0.25 + \sin^{-1} \left(1 - x\right) \cdot \mathsf{fma}\left(\pi, 0.5, \sin^{-1} \left(1 - x\right)\right)} \]
  5. Taylor expanded in x around 0 89.23

    \[\leadsto \frac{\mathsf{fma}\left({\pi}^{2} \cdot 0.25, \pi \cdot 0.5, -{\sin^{-1} \left(1 - x\right)}^{3}\right)}{\color{blue}{\left(\sin^{-1} \left(1 - x\right) + 0.5 \cdot \pi\right) \cdot \sin^{-1} \left(1 - x\right) + 0.25 \cdot {\pi}^{2}}} \]
  6. Final simplification89.23

    \[\leadsto \frac{\mathsf{fma}\left({\pi}^{2} \cdot 0.25, \pi \cdot 0.5, -{\sin^{-1} \left(1 - x\right)}^{3}\right)}{\sin^{-1} \left(1 - x\right) \cdot \left(\pi \cdot 0.5 + \sin^{-1} \left(1 - x\right)\right) + {\pi}^{2} \cdot 0.25} \]

Alternatives

Alternative 1
Error89.23%
Cost45312
\[\mathsf{fma}\left(\sqrt{\pi} \cdot \sqrt{0.5}, \sqrt{\pi \cdot 0.5}, -\sin^{-1} \left(1 - x\right)\right) \]
Alternative 2
Error89.3%
Cost32384
\[\mathsf{fma}\left({\left(\sqrt{0.5}\right)}^{2}, \pi, -\sin^{-1} \left(1 - x\right)\right) \]
Alternative 3
Error89.3%
Cost26304
\[1 + \left(\pi \cdot 0.5 - {\left(\sqrt{1 + \sin^{-1} \left(1 - x\right)}\right)}^{2}\right) \]
Alternative 4
Error89.31%
Cost26048
\[\pi \cdot {\left(\sqrt{0.5}\right)}^{2} - \sin^{-1} \left(1 - x\right) \]
Alternative 5
Error90.23%
Cost19844
\[\begin{array}{l} t_0 := \cos^{-1} \left(1 - x\right)\\ \mathbf{if}\;t_0 \leq 0:\\ \;\;\;\;\pi - t_0\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot 0.5 - \sin^{-1} \left(1 - x\right)\\ \end{array} \]
Alternative 6
Error90.23%
Cost19716
\[\begin{array}{l} t_0 := \cos^{-1} \left(1 - x\right)\\ \mathbf{if}\;t_0 \leq 0:\\ \;\;\;\;\pi - t_0\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 7
Error90.22%
Cost19588
\[\begin{array}{l} t_0 := \cos^{-1} \left(1 - x\right)\\ \mathbf{if}\;x \leq 5.6 \cdot 10^{-17}:\\ \;\;\;\;1 + \left|-1 + t_0\right|\\ \mathbf{else}:\\ \;\;\;\;\sqrt[3]{{t_0}^{3}}\\ \end{array} \]
Alternative 8
Error90.23%
Cost13572
\[\begin{array}{l} \mathbf{if}\;x \leq 5.6 \cdot 10^{-17}:\\ \;\;\;\;1 + \left|-1 + \cos^{-1} \left(1 - x\right)\right|\\ \mathbf{else}:\\ \;\;\;\;\left(\pi \cdot 0.5 + 1\right) - \left(1 + \sin^{-1} \left(1 - x\right)\right)\\ \end{array} \]
Alternative 9
Error90.22%
Cost13380
\[\begin{array}{l} \mathbf{if}\;x \leq 5.6 \cdot 10^{-17}:\\ \;\;\;\;1 + \left|-1 + \cos^{-1} \left(1 - x\right)\right|\\ \mathbf{else}:\\ \;\;\;\;\pi \cdot 0.5 - \sin^{-1} \left(1 - x\right)\\ \end{array} \]
Alternative 10
Error92.83%
Cost6592
\[\cos^{-1} \left(1 - x\right) \]

Error

Reproduce?

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)))