?

Average Error: 59.7 → 57.5
Time: 11.0s
Precision: binary64
Cost: 105152

?

\[0 \leq x \land x \leq 0.5\]
\[\cos^{-1} \left(1 - x\right) \]
\[\begin{array}{l} t_0 := \sin^{-1} \left(1 - x\right)\\ t_1 := {t_0}^{3}\\ \frac{\frac{{\left(\pi \cdot 0.5\right)}^{6} - t_1 \cdot t_1}{t_1 + 0.125 \cdot {\pi}^{3}}}{\left(\pi \cdot 0.5\right) \cdot \left(\pi \cdot 0.5\right) + \left(t_0 \cdot t_0 + \left(\pi \cdot 0.5\right) \cdot t_0\right)} \end{array} \]
(FPCore (x) :precision binary64 (acos (- 1.0 x)))
(FPCore (x)
 :precision binary64
 (let* ((t_0 (asin (- 1.0 x))) (t_1 (pow t_0 3.0)))
   (/
    (/ (- (pow (* PI 0.5) 6.0) (* t_1 t_1)) (+ t_1 (* 0.125 (pow PI 3.0))))
    (+ (* (* PI 0.5) (* PI 0.5)) (+ (* t_0 t_0) (* (* PI 0.5) t_0))))))
double code(double x) {
	return acos((1.0 - x));
}
double code(double x) {
	double t_0 = asin((1.0 - x));
	double t_1 = pow(t_0, 3.0);
	return ((pow((((double) M_PI) * 0.5), 6.0) - (t_1 * t_1)) / (t_1 + (0.125 * pow(((double) M_PI), 3.0)))) / (((((double) M_PI) * 0.5) * (((double) M_PI) * 0.5)) + ((t_0 * t_0) + ((((double) M_PI) * 0.5) * t_0)));
}
public static double code(double x) {
	return Math.acos((1.0 - x));
}
public static double code(double x) {
	double t_0 = Math.asin((1.0 - x));
	double t_1 = Math.pow(t_0, 3.0);
	return ((Math.pow((Math.PI * 0.5), 6.0) - (t_1 * t_1)) / (t_1 + (0.125 * Math.pow(Math.PI, 3.0)))) / (((Math.PI * 0.5) * (Math.PI * 0.5)) + ((t_0 * t_0) + ((Math.PI * 0.5) * t_0)));
}
def code(x):
	return math.acos((1.0 - x))
def code(x):
	t_0 = math.asin((1.0 - x))
	t_1 = math.pow(t_0, 3.0)
	return ((math.pow((math.pi * 0.5), 6.0) - (t_1 * t_1)) / (t_1 + (0.125 * math.pow(math.pi, 3.0)))) / (((math.pi * 0.5) * (math.pi * 0.5)) + ((t_0 * t_0) + ((math.pi * 0.5) * t_0)))
function code(x)
	return acos(Float64(1.0 - x))
end
function code(x)
	t_0 = asin(Float64(1.0 - x))
	t_1 = t_0 ^ 3.0
	return Float64(Float64(Float64((Float64(pi * 0.5) ^ 6.0) - Float64(t_1 * t_1)) / Float64(t_1 + Float64(0.125 * (pi ^ 3.0)))) / Float64(Float64(Float64(pi * 0.5) * Float64(pi * 0.5)) + Float64(Float64(t_0 * t_0) + Float64(Float64(pi * 0.5) * t_0))))
end
function tmp = code(x)
	tmp = acos((1.0 - x));
end
function tmp = code(x)
	t_0 = asin((1.0 - x));
	t_1 = t_0 ^ 3.0;
	tmp = ((((pi * 0.5) ^ 6.0) - (t_1 * t_1)) / (t_1 + (0.125 * (pi ^ 3.0)))) / (((pi * 0.5) * (pi * 0.5)) + ((t_0 * t_0) + ((pi * 0.5) * t_0)));
end
code[x_] := N[ArcCos[N[(1.0 - x), $MachinePrecision]], $MachinePrecision]
code[x_] := Block[{t$95$0 = N[ArcSin[N[(1.0 - x), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[Power[t$95$0, 3.0], $MachinePrecision]}, N[(N[(N[(N[Power[N[(Pi * 0.5), $MachinePrecision], 6.0], $MachinePrecision] - N[(t$95$1 * t$95$1), $MachinePrecision]), $MachinePrecision] / N[(t$95$1 + N[(0.125 * N[Power[Pi, 3.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(N[(Pi * 0.5), $MachinePrecision] * N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$0 * t$95$0), $MachinePrecision] + N[(N[(Pi * 0.5), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\cos^{-1} \left(1 - x\right)
\begin{array}{l}
t_0 := \sin^{-1} \left(1 - x\right)\\
t_1 := {t_0}^{3}\\
\frac{\frac{{\left(\pi \cdot 0.5\right)}^{6} - t_1 \cdot t_1}{t_1 + 0.125 \cdot {\pi}^{3}}}{\left(\pi \cdot 0.5\right) \cdot \left(\pi \cdot 0.5\right) + \left(t_0 \cdot t_0 + \left(\pi \cdot 0.5\right) \cdot t_0\right)}
\end{array}

Error?

Try it out?

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original59.7
Target0.0
Herbie57.5
\[2 \cdot \sin^{-1} \left(\sqrt{\frac{x}{2}}\right) \]

Derivation?

  1. Initial program 59.7

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

    \[\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. Applied egg-rr57.5

    \[\leadsto \frac{\color{blue}{\frac{{\left(\pi \cdot 0.5\right)}^{6} - \left(-{\sin^{-1} \left(1 - x\right)}^{3}\right) \cdot \left(-{\sin^{-1} \left(1 - x\right)}^{3}\right)}{0.125 \cdot {\pi}^{3} - \left(-{\sin^{-1} \left(1 - x\right)}^{3}\right)}}}{\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)} \]
  4. Final simplification57.5

    \[\leadsto \frac{\frac{{\left(\pi \cdot 0.5\right)}^{6} - {\sin^{-1} \left(1 - x\right)}^{3} \cdot {\sin^{-1} \left(1 - x\right)}^{3}}{{\sin^{-1} \left(1 - x\right)}^{3} + 0.125 \cdot {\pi}^{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)} \]

Alternatives

Alternative 1
Error57.5
Cost85248
\[\begin{array}{l} t_0 := {\left(\pi \cdot 0.5\right)}^{1.5}\\ t_1 := \sin^{-1} \left(1 - x\right)\\ \frac{\mathsf{fma}\left(t_0, t_0, -{t_1}^{3}\right)}{\left(\pi \cdot 0.5\right) \cdot \left(\pi \cdot 0.5\right) + \left(t_1 \cdot t_1 + \left(\pi \cdot 0.5\right) \cdot t_1\right)} \end{array} \]
Alternative 2
Error57.5
Cost72128
\[\begin{array}{l} t_0 := \sin^{-1} \left(1 - x\right)\\ t_1 := {t_0}^{2}\\ \frac{\mathsf{fma}\left(-t_0, t_0, t_1\right) + \left(0.25 \cdot {\pi}^{2} - t_1\right)}{\pi \cdot 0.5 + t_0} \end{array} \]
Alternative 3
Error57.5
Cost65856
\[\begin{array}{l} t_0 := \sin^{-1} \left(1 - x\right)\\ t_1 := \pi \cdot 0.5 + t_0\\ \frac{\mathsf{fma}\left(-t_0, t_0, {t_0}^{2}\right) + t_1 \cdot \cos^{-1} \left(1 - x\right)}{t_1} \end{array} \]
Alternative 4
Error57.5
Cost52288
\[\begin{array}{l} t_0 := \sin^{-1} \left(1 - x\right)\\ \cos^{-1} \left(1 - x\right) + \mathsf{fma}\left(0 - {t_0}^{0.3333333333333333}, {\left(\sqrt[3]{t_0}\right)}^{2}, t_0\right) \end{array} \]
Alternative 5
Error57.5
Cost38848
\[\log \left(e^{\pi \cdot 0.5 - {\left(\sqrt[3]{\sin^{-1} \left(1 - x\right)}\right)}^{3}}\right) \]
Alternative 6
Error57.5
Cost32640
\[\begin{array}{l} t_0 := \sqrt{\sin^{-1} \left(1 - x\right)}\\ \pi \cdot 0.5 - t_0 \cdot t_0 \end{array} \]
Alternative 7
Error58.1
Cost32580
\[\begin{array}{l} t_0 := \cos^{-1} \left(1 - x\right)\\ \mathbf{if}\;t_0 \leq 0:\\ \;\;\;\;1 + \left|t_0 + -1\right|\\ \mathbf{else}:\\ \;\;\;\;3 \cdot \log \left(\sqrt[3]{e^{t_0}}\right)\\ \end{array} \]
Alternative 8
Error58.1
Cost26628
\[\begin{array}{l} t_0 := \cos^{-1} \left(1 - x\right)\\ t_1 := t_0 + -1\\ \mathbf{if}\;t_0 \leq 0:\\ \;\;\;\;1 + \left|t_1\right|\\ \mathbf{else}:\\ \;\;\;\;1 + \frac{1}{{\left(\frac{1}{\sqrt[3]{t_1}}\right)}^{3}}\\ \end{array} \]
Alternative 9
Error58.1
Cost26308
\[\begin{array}{l} t_0 := \cos^{-1} \left(1 - x\right)\\ \mathbf{if}\;t_0 \leq 0:\\ \;\;\;\;1 + \left|t_0 + -1\right|\\ \mathbf{else}:\\ \;\;\;\;1 + \left(-1 + \log \left(e^{t_0}\right)\right)\\ \end{array} \]
Alternative 10
Error58.1
Cost26052
\[\begin{array}{l} t_0 := \cos^{-1} \left(1 - x\right)\\ \mathbf{if}\;t_0 \leq 0:\\ \;\;\;\;1 + \left|t_0 + -1\right|\\ \mathbf{else}:\\ \;\;\;\;\log \left(e^{t_0}\right)\\ \end{array} \]
Alternative 11
Error59.7
Cost19972
\[\begin{array}{l} t_0 := \cos^{-1} \left(1 - x\right) + -1\\ \mathbf{if}\;1 - x \leq 1:\\ \;\;\;\;1 + {\left(\sqrt[3]{t_0}\right)}^{3}\\ \mathbf{else}:\\ \;\;\;\;1 + \left|t_0\right|\\ \end{array} \]
Alternative 12
Error58.1
Cost19908
\[\begin{array}{l} t_0 := \cos^{-1} \left(1 - x\right)\\ t_1 := t_0 + -1\\ \mathbf{if}\;t_0 \leq 0:\\ \;\;\;\;1 + \left|t_1\right|\\ \mathbf{else}:\\ \;\;\;\;1 + \frac{1}{\frac{1}{t_1}}\\ \end{array} \]
Alternative 13
Error59.7
Cost7104
\[1 + \frac{1}{\frac{1}{\cos^{-1} \left(1 - x\right) + -1}} \]
Alternative 14
Error59.7
Cost6848
\[1 + \left(\cos^{-1} \left(1 - x\right) + -1\right) \]
Alternative 15
Error59.7
Cost6592
\[\cos^{-1} \left(1 - x\right) \]

Error

Reproduce?

herbie shell --seed 2023054 
(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)))