(FPCore (a b)
:precision binary64
(-
(+
(pow (+ (* a a) (* b b)) 2.0)
(* 4.0 (+ (* (* a a) (- 1.0 a)) (* (* b b) (+ 3.0 a)))))
1.0))
↓
(FPCore (a b)
:precision binary64
(if (<= (* b b) 2e-23)
(- (+ (pow a 4.0) (* (- 1.0 a) (* 4.0 (* a a)))) 1.0)
(- (+ (pow (+ (* a a) (* b b)) 2.0) (* 12.0 (* b b))) 1.0)))
double code(double a, double b) {
return (pow(((a * a) + (b * b)), 2.0) + (4.0 * (((a * a) * (1.0 - a)) + ((b * b) * (3.0 + a))))) - 1.0;
}
↓
double code(double a, double b) {
double tmp;
if ((b * b) <= 2e-23) {
tmp = (pow(a, 4.0) + ((1.0 - a) * (4.0 * (a * a)))) - 1.0;
} else {
tmp = (pow(((a * a) + (b * b)), 2.0) + (12.0 * (b * b))) - 1.0;
}
return tmp;
}
real(8) function code(a, b)
real(8), intent (in) :: a
real(8), intent (in) :: b
code = ((((a * a) + (b * b)) ** 2.0d0) + (4.0d0 * (((a * a) * (1.0d0 - a)) + ((b * b) * (3.0d0 + a))))) - 1.0d0
end function
↓
real(8) function code(a, b)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8) :: tmp
if ((b * b) <= 2d-23) then
tmp = ((a ** 4.0d0) + ((1.0d0 - a) * (4.0d0 * (a * a)))) - 1.0d0
else
tmp = ((((a * a) + (b * b)) ** 2.0d0) + (12.0d0 * (b * b))) - 1.0d0
end if
code = tmp
end function
public static double code(double a, double b) {
return (Math.pow(((a * a) + (b * b)), 2.0) + (4.0 * (((a * a) * (1.0 - a)) + ((b * b) * (3.0 + a))))) - 1.0;
}
↓
public static double code(double a, double b) {
double tmp;
if ((b * b) <= 2e-23) {
tmp = (Math.pow(a, 4.0) + ((1.0 - a) * (4.0 * (a * a)))) - 1.0;
} else {
tmp = (Math.pow(((a * a) + (b * b)), 2.0) + (12.0 * (b * b))) - 1.0;
}
return tmp;
}
herbie shell --seed 2023010
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (- 1.0 a)) (* (* b b) (+ 3.0 a))))) 1.0))