\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\begin{array}{l}
\mathbf{if}\;a \leq -13027.803644546246 \lor \neg \left(a \leq 7.585443724790434 \cdot 10^{-102}\right):\\
\;\;\;\;\left({b}^{4} + \left({a}^{4} + a \cdot \left(a \cdot \left(b \cdot \left(b \cdot 2\right)\right)\right)\right)\right) - 1\\
\mathbf{else}:\\
\;\;\;\;\left(\left({b}^{\left(2 \cdot 2\right)} + a \cdot \left(a \cdot \left(2 \cdot {b}^{2}\right)\right)\right) + 4 \cdot \left(b \cdot b\right)\right) - 1\\
\end{array}(FPCore (a b) :precision binary64 (- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (* b b))) 1.0))
(FPCore (a b)
:precision binary64
(if (or (<= a -13027.803644546246) (not (<= a 7.585443724790434e-102)))
(- (+ (pow b 4.0) (+ (pow a 4.0) (* a (* a (* b (* b 2.0)))))) 1.0)
(-
(+ (+ (pow b (* 2.0 2.0)) (* a (* a (* 2.0 (pow b 2.0))))) (* 4.0 (* b b)))
1.0)))double code(double a, double b) {
return ((double) (((double) (((double) pow(((double) (((double) (a * a)) + ((double) (b * b)))), 2.0)) + ((double) (4.0 * ((double) (b * b)))))) - 1.0));
}
double code(double a, double b) {
double VAR;
if (((a <= -13027.803644546246) || !(a <= 7.585443724790434e-102))) {
VAR = ((double) (((double) (((double) pow(b, 4.0)) + ((double) (((double) pow(a, 4.0)) + ((double) (a * ((double) (a * ((double) (b * ((double) (b * 2.0)))))))))))) - 1.0));
} else {
VAR = ((double) (((double) (((double) (((double) pow(b, ((double) (2.0 * 2.0)))) + ((double) (a * ((double) (a * ((double) (2.0 * ((double) pow(b, 2.0)))))))))) + ((double) (4.0 * ((double) (b * b)))))) - 1.0));
}
return VAR;
}



Bits error versus a



Bits error versus b
Results
if a < -13027.803644546246 or 7.58544372479043434e-102 < a Initial program 0.4
Taylor expanded around inf 0.5
Simplified0.5
if -13027.803644546246 < a < 7.58544372479043434e-102Initial program 0.1
Taylor expanded around 0 32.5
Simplified0.4
Final simplification0.5
herbie shell --seed 2020198
(FPCore (a b)
:name "Bouland and Aaronson, Equation (26)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (* b b))) 1.0))