Bouland and Aaronson, Equation (24)

Time bar (total: 1.8s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
100%99.9%0%0.1%0%0%0%1
Compiler

Compiled 32 to 19 computations (40.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
ival-sub: 0.0ms (0% of total)
ival-add: 0.0ms (0% of total)
ival-mult: 0.0ms (0% of total)
const: 0.0ms (0% of total)
ival-pow: 0.0ms (0% of total)

sample1.5s (83.8%)

Results
1.1s8256×256valid
Precisions
Click to see histograms. Total time spent on operations: 843.0ms
ival-mult: 318.0ms (37.7% of total)
ival-add: 281.0ms (33.3% of total)
ival-pow: 122.0ms (14.5% of total)
ival-sub: 102.0ms (12.1% of total)
const: 20.0ms (2.4% of total)
Bogosity

preprocess113.0ms (6.3%)

Algorithm
egg-herbie
Rules
664×unsub-neg
633×sub-neg
452×fma-neg
366×fma-define
320×distribute-lft-neg-out
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
057765
1194729
2770713
33528713
47880713
Stop Event
node limit
Calls
Call 1
Inputs
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64))
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64))
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 (neg.f64 a) (neg.f64 a)) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 (neg.f64 a) (neg.f64 a)) (-.f64 #s(literal 1 binary64) (neg.f64 a))) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) (neg.f64 a)))))) #s(literal 1 binary64))
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 (neg.f64 b) (neg.f64 b))) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 (neg.f64 b) (neg.f64 b)) (+.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64))
(neg.f64 (-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 (neg.f64 a) (neg.f64 a)) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 (neg.f64 a) (neg.f64 a)) (-.f64 #s(literal 1 binary64) (neg.f64 a))) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) (neg.f64 a)))))) #s(literal 1 binary64)))
(neg.f64 (-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 (neg.f64 b) (neg.f64 b))) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 (neg.f64 b) (neg.f64 b)) (+.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64)))
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 b b) (*.f64 a a)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 b b) (-.f64 #s(literal 1 binary64) b)) (*.f64 (*.f64 a a) (+.f64 #s(literal 3 binary64) b))))) #s(literal 1 binary64))
Outputs
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 4 binary64) (fma.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a) (*.f64 b (*.f64 b (+.f64 a #s(literal 3 binary64)))))) #s(literal 1 binary64)))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (fma.f64 #s(literal 4 binary64) (fma.f64 a (*.f64 a (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 a #s(literal 3 binary64)))) #s(literal -1 binary64)))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (fma.f64 #s(literal 4 binary64) (fma.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a) (*.f64 (*.f64 b b) (+.f64 a #s(literal 3 binary64)))) #s(literal -1 binary64)))
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 4 binary64) (fma.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a) (*.f64 b (*.f64 b (+.f64 a #s(literal 3 binary64)))))) #s(literal 1 binary64)))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (fma.f64 #s(literal 4 binary64) (fma.f64 a (*.f64 a (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 a #s(literal 3 binary64)))) #s(literal -1 binary64)))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (fma.f64 #s(literal 4 binary64) (fma.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a) (*.f64 (*.f64 b b) (+.f64 a #s(literal 3 binary64)))) #s(literal -1 binary64)))
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 (neg.f64 a) (neg.f64 a)) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 (neg.f64 a) (neg.f64 a)) (-.f64 #s(literal 1 binary64) (neg.f64 a))) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) (neg.f64 a)))))) #s(literal 1 binary64))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 4 binary64) (fma.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) (neg.f64 a)) (*.f64 b (*.f64 b (-.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64)))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (fma.f64 #s(literal 4 binary64) (fma.f64 (*.f64 a a) (+.f64 a #s(literal 1 binary64)) (*.f64 (*.f64 b b) (-.f64 #s(literal 3 binary64) a))) #s(literal -1 binary64)))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (fma.f64 #s(literal 4 binary64) (fma.f64 b (*.f64 b (-.f64 #s(literal 3 binary64) a)) (fma.f64 a a (pow.f64 a #s(literal 3 binary64)))) #s(literal -1 binary64)))
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 (neg.f64 b) (neg.f64 b))) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 (neg.f64 b) (neg.f64 b)) (+.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 4 binary64) (fma.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a) (*.f64 b (*.f64 b (+.f64 a #s(literal 3 binary64)))))) #s(literal 1 binary64)))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (fma.f64 #s(literal 4 binary64) (fma.f64 a (*.f64 a (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 a #s(literal 3 binary64)))) #s(literal -1 binary64)))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (fma.f64 #s(literal 4 binary64) (fma.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a) (*.f64 (*.f64 b b) (+.f64 a #s(literal 3 binary64)))) #s(literal -1 binary64)))
(neg.f64 (-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 (neg.f64 a) (neg.f64 a)) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 (neg.f64 a) (neg.f64 a)) (-.f64 #s(literal 1 binary64) (neg.f64 a))) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) (neg.f64 a)))))) #s(literal 1 binary64)))
(neg.f64 (+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 4 binary64) (fma.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) (neg.f64 a)) (*.f64 b (*.f64 b (-.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64))))
(+.f64 (neg.f64 (fma.f64 #s(literal 4 binary64) (fma.f64 (*.f64 a a) (+.f64 a #s(literal 1 binary64)) (*.f64 (*.f64 b b) (-.f64 #s(literal 3 binary64) a))) (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)))) #s(literal 1 binary64))
(-.f64 #s(literal 1 binary64) (fma.f64 #s(literal 4 binary64) (fma.f64 b (*.f64 b (-.f64 #s(literal 3 binary64) a)) (fma.f64 a a (pow.f64 a #s(literal 3 binary64)))) (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64))))
(neg.f64 (-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 (neg.f64 b) (neg.f64 b))) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 (neg.f64 b) (neg.f64 b)) (+.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64)))
(neg.f64 (+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 4 binary64) (fma.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a) (*.f64 b (*.f64 b (+.f64 a #s(literal 3 binary64)))))) #s(literal 1 binary64))))
(+.f64 (neg.f64 (fma.f64 #s(literal 4 binary64) (fma.f64 a (*.f64 a (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 a #s(literal 3 binary64)))) (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)))) #s(literal 1 binary64))
(-.f64 #s(literal 1 binary64) (fma.f64 #s(literal 4 binary64) (fma.f64 a (*.f64 a (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 a #s(literal 3 binary64)))) (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64))))
(-.f64 #s(literal 1 binary64) (fma.f64 #s(literal 4 binary64) (fma.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a) (*.f64 (*.f64 b b) (+.f64 a #s(literal 3 binary64)))) (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64))))
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 b b) (*.f64 a a)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 b b) (-.f64 #s(literal 1 binary64) b)) (*.f64 (*.f64 a a) (+.f64 #s(literal 3 binary64) b))))) #s(literal 1 binary64))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 4 binary64) (fma.f64 (*.f64 b b) (-.f64 #s(literal 1 binary64) b) (*.f64 (*.f64 a a) (+.f64 b #s(literal 3 binary64))))) #s(literal 1 binary64)))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (fma.f64 #s(literal 4 binary64) (fma.f64 a (*.f64 a (+.f64 b #s(literal 3 binary64))) (*.f64 (*.f64 b b) (-.f64 #s(literal 1 binary64) b))) #s(literal -1 binary64)))
(+.f64 (pow.f64 (fma.f64 a a (*.f64 b b)) #s(literal 2 binary64)) (fma.f64 #s(literal 4 binary64) (fma.f64 (*.f64 b b) (-.f64 #s(literal 1 binary64) b) (*.f64 a (*.f64 a (+.f64 b #s(literal 3 binary64))))) #s(literal -1 binary64)))
Symmetry

(abs b)

explain154.0ms (8.5%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
550-0-(+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) a)))))
390-0-(+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) a)))
140-0-(*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) a))
00-0-b
00-0-(+.f64 #s(literal 3 binary64) a)
00-0-#s(literal 2 binary64)
00-0-#s(literal 4 binary64)
048(-1.0016935890433179e-63 5.006567923731775e-238)0-(pow.f64 (+.f64 (*.f64 a a) (*.f64 b b)) #s(literal 2 binary64))
00-0-(*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) a))))
00-0-(+.f64 (*.f64 a a) (*.f64 b b))
00-0-(-.f64 #s(literal 1 binary64) a)
00-0-(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64))
00-0-(*.f64 b b)
00-0-(*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a))
00-0-#s(literal 1 binary64)
00-0-#s(literal 3 binary64)
00-0-a
00-0-(*.f64 a a)
Results
76.0ms512×256valid
Compiler

Compiled 309 to 56 computations (81.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 39.0ms
ival-mult: 18.0ms (46.1% of total)
ival-add: 9.0ms (23% of total)
ival-pow: 6.0ms (15.4% of total)
ival-sub: 5.0ms (12.8% of total)
const: 1.0ms (2.6% of total)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune1.0ms (0.1%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
69.4%
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64))
Compiler

Compiled 62 to 36 computations (41.9% saved)

simplify3.0ms (0.2%)

Algorithm
egg-herbie
Rules
+-commutative
unsub-neg
*-commutative
neg-mul-1
sub-neg
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
023115
140115
247115
353115
461115
572115
Stop Event
saturated
Calls
Call 1
Inputs
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64))
Outputs
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 #s(literal 3 binary64) a))))) #s(literal 1 binary64))
(-.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 a #s(literal 3 binary64)))))) #s(literal 1 binary64))
(+.f64 (+.f64 (pow.f64 (+.f64 (*.f64 a a) (*.f64 b b)) #s(literal 2 binary64)) (*.f64 #s(literal 4 binary64) (+.f64 (*.f64 (*.f64 a a) (-.f64 #s(literal 1 binary64) a)) (*.f64 (*.f64 b b) (+.f64 a #s(literal 3 binary64)))))) #s(literal -1 binary64))

soundness0.0ms (0%)

Stop Event
fuel
Compiler

Compiled 31 to 19 computations (38.7% saved)

preprocess21.0ms (1.2%)

Remove

(abs b)

Compiler

Compiled 248 to 150 computations (39.5% saved)

end0.0ms (0%)

Profiling

Loading profile data...