| Alternative 1 | |
|---|---|
| Accuracy | 98.5% |
| Cost | 19904 |
\[2 \cdot \cos \left(\frac{\cos^{-1} \left(-\frac{g}{h}\right)}{3} + \pi \cdot 0.6666666666666666\right)
\]

(FPCore (g h) :precision binary64 (* 2.0 (cos (+ (/ (* 2.0 PI) 3.0) (/ (acos (/ (- g) h)) 3.0)))))
(FPCore (g h) :precision binary64 (* 2.0 (cos (fma PI 0.6666666666666666 (/ (acos (- (/ g h))) 3.0)))))
double code(double g, double h) {
return 2.0 * cos((((2.0 * ((double) M_PI)) / 3.0) + (acos((-g / h)) / 3.0)));
}
double code(double g, double h) {
return 2.0 * cos(fma(((double) M_PI), 0.6666666666666666, (acos(-(g / h)) / 3.0)));
}
function code(g, h) return Float64(2.0 * cos(Float64(Float64(Float64(2.0 * pi) / 3.0) + Float64(acos(Float64(Float64(-g) / h)) / 3.0)))) end
function code(g, h) return Float64(2.0 * cos(fma(pi, 0.6666666666666666, Float64(acos(Float64(-Float64(g / h))) / 3.0)))) end
code[g_, h_] := N[(2.0 * N[Cos[N[(N[(N[(2.0 * Pi), $MachinePrecision] / 3.0), $MachinePrecision] + N[(N[ArcCos[N[((-g) / h), $MachinePrecision]], $MachinePrecision] / 3.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
code[g_, h_] := N[(2.0 * N[Cos[N[(Pi * 0.6666666666666666 + N[(N[ArcCos[(-N[(g / h), $MachinePrecision])], $MachinePrecision] / 3.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)
2 \cdot \cos \left(\mathsf{fma}\left(\pi, 0.6666666666666666, \frac{\cos^{-1} \left(-\frac{g}{h}\right)}{3}\right)\right)
Herbie found 3 alternatives:
| Alternative | Accuracy | Speedup |
|---|
Initial program 98.5%
Simplified98.5%
[Start]98.5 | \[ 2 \cdot \cos \left(\frac{2 \cdot \pi}{3} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)
\] |
|---|---|
associate-/l* [=>]98.5 | \[ 2 \cdot \cos \left(\color{blue}{\frac{2}{\frac{3}{\pi}}} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)
\] |
associate-/r/ [=>]98.5 | \[ 2 \cdot \cos \left(\color{blue}{\frac{2}{3} \cdot \pi} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)
\] |
*-commutative [=>]98.5 | \[ 2 \cdot \cos \left(\color{blue}{\pi \cdot \frac{2}{3}} + \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)
\] |
fma-def [=>]98.5 | \[ 2 \cdot \cos \color{blue}{\left(\mathsf{fma}\left(\pi, \frac{2}{3}, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)}
\] |
metadata-eval [=>]98.5 | \[ 2 \cdot \cos \left(\mathsf{fma}\left(\pi, \color{blue}{0.6666666666666666}, \frac{\cos^{-1} \left(\frac{-g}{h}\right)}{3}\right)\right)
\] |
Final simplification98.5%
| Alternative 1 | |
|---|---|
| Accuracy | 98.5% |
| Cost | 19904 |
| Alternative 2 | |
|---|---|
| Accuracy | 96.5% |
| Cost | 19840 |
herbie shell --seed 2023162
(FPCore (g h)
:name "2-ancestry mixing, negative discriminant"
:precision binary64
(* 2.0 (cos (+ (/ (* 2.0 PI) 3.0) (/ (acos (/ (- g) h)) 3.0)))))