def code(a, b):
return (math.pow(math.hypot(b, a), 4.0) + (4.0 * (((a * a) * (1.0 - a)) + ((b * b) * (a + 3.0))))) + -1.0
function code(a, b)
return Float64(Float64((Float64(Float64(a * a) + Float64(b * b)) ^ 2.0) + Float64(4.0 * Float64(Float64(Float64(a * a) * Float64(1.0 - a)) + Float64(Float64(b * b) * Float64(3.0 + a))))) - 1.0)
end
↓
function code(a, b)
return Float64(Float64((hypot(b, a) ^ 4.0) + Float64(4.0 * Float64(Float64(Float64(a * a) * Float64(1.0 - a)) + Float64(Float64(b * b) * Float64(a + 3.0))))) + -1.0)
end
function tmp = code(a, b)
tmp = ((((a * a) + (b * b)) ^ 2.0) + (4.0 * (((a * a) * (1.0 - a)) + ((b * b) * (3.0 + a))))) - 1.0;
end
↓
function tmp = code(a, b)
tmp = ((hypot(b, a) ^ 4.0) + (4.0 * (((a * a) * (1.0 - a)) + ((b * b) * (a + 3.0))))) + -1.0;
end
(-.f64 (+.f64 (pow.f64 (hypot.f64 b a) 4) (*.f64 4 (+.f64 (*.f64 (*.f64 a a) (-.f64 1 a)) (*.f64 (*.f64 b b) (+.f64 3 a))))) 1): 0 points increase in error, 0 points decrease in error
(-.f64 (+.f64 (pow.f64 (hypot.f64 b a) (Rewrite<= metadata-eval (*.f64 2 2))) (*.f64 4 (+.f64 (*.f64 (*.f64 a a) (-.f64 1 a)) (*.f64 (*.f64 b b) (+.f64 3 a))))) 1): 4 points increase in error, 0 points decrease in error
(-.f64 (+.f64 (Rewrite<= pow-sqr_binary64 (*.f64 (pow.f64 (hypot.f64 b a) 2) (pow.f64 (hypot.f64 b a) 2))) (*.f64 4 (+.f64 (*.f64 (*.f64 a a) (-.f64 1 a)) (*.f64 (*.f64 b b) (+.f64 3 a))))) 1): 0 points increase in error, 4 points decrease in error
(-.f64 (+.f64 (Rewrite<= unpow2_binary64 (pow.f64 (pow.f64 (hypot.f64 b a) 2) 2)) (*.f64 4 (+.f64 (*.f64 (*.f64 a a) (-.f64 1 a)) (*.f64 (*.f64 b b) (+.f64 3 a))))) 1): 4 points increase in error, 0 points decrease in error
(-.f64 (+.f64 (Rewrite<= expm1-log1p_binary64 (expm1.f64 (log1p.f64 (pow.f64 (pow.f64 (hypot.f64 b a) 2) 2)))) (*.f64 4 (+.f64 (*.f64 (*.f64 a a) (-.f64 1 a)) (*.f64 (*.f64 b b) (+.f64 3 a))))) 1): 2 points increase in error, 0 points decrease in error
(-.f64 (+.f64 (Rewrite<= expm1-def_binary64 (-.f64 (exp.f64 (log1p.f64 (pow.f64 (pow.f64 (hypot.f64 b a) 2) 2))) 1)) (*.f64 4 (+.f64 (*.f64 (*.f64 a a) (-.f64 1 a)) (*.f64 (*.f64 b b) (+.f64 3 a))))) 1): 0 points increase in error, 4 points decrease in error
herbie shell --seed 2022343
(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))