Difference of squares

Details

Time bar (total: 2.2s)

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 10 to 6 computations (40% saved)

sample835.0ms (37.8%)

Results
422.0ms4585×body256valid
402.0ms3671×body256infinite
Bogosity

preprocess170.0ms (7.7%)

Algorithm
egg-herbie
Rules
2428×fma-def
1090×sub-neg
988×distribute-rgt-in
972×distribute-lft-in
832×distribute-lft-out
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0838
12838
24938
310538
427238
581038
6207538
7382138
8545838
9603938
10615238
11626638
12634638
13634638
14772738
022
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(-.f64 (*.f64 a a) (*.f64 b b))
(-.f64 (*.f64 b b) (*.f64 a a))
Outputs
(-.f64 (*.f64 a a) (*.f64 b b))
(-.f64 (*.f64 b b) (*.f64 a a))
Compiler

Compiled 11 to 7 computations (36.4% saved)

simplify160.0ms (7.3%)

Algorithm
egg-herbie
Rules
2086×fma-def
1386×distribute-lft-out
998×distribute-lft-out--
986×unsub-neg
954×sub-neg
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
11819
23019
35919
413419
538419
684319
7170619
8385019
9550819
10638219
11675119
12698119
13709519
14709519
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(-.f64 (*.f64 a a) (*.f64 b b))
Outputs
(-.f64 (*.f64 a a) (*.f64 b b))
(fma.f64 a a (*.f64 b (neg.f64 b)))

eval0.0ms (0%)

Compiler

Compiled 16 to 8 computations (50% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Accurracy
96.9%
Counts
3 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
96.9%
(fma.f64 a a (*.f64 b (neg.f64 b)))
92.6%
(-.f64 (*.f64 a a) (*.f64 b b))
Compiler

Compiled 18 to 10 computations (44.4% saved)

localize22.0ms (1%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
93.2%
(-.f64 (*.f64 a a) (*.f64 b b))
Compiler

Compiled 18 to 6 computations (66.7% saved)

series2.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
a
@0
(-.f64 (*.f64 a a) (*.f64 b b))
0.0ms
b
@0
(-.f64 (*.f64 a a) (*.f64 b b))
0.0ms
a
@inf
(-.f64 (*.f64 a a) (*.f64 b b))
0.0ms
b
@inf
(-.f64 (*.f64 a a) (*.f64 b b))
0.0ms
b
@-inf
(-.f64 (*.f64 a a) (*.f64 b b))

rewrite67.0ms (3%)

Algorithm
batch-egg-rewrite
Rules
1680×pow1
1560×add-exp-log
1560×log1p-expm1-u
1560×expm1-log1p-u
1522×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
116019
2224719
Stop Event
node limit
Counts
1 → 46
Calls
Call 1
Inputs
(-.f64 (*.f64 a a) (*.f64 b b))
Outputs
(+.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
(+.f64 (*.f64 a a) (*.f64 (*.f64 b (neg.f64 b)) 1))
(+.f64 (*.f64 a a) (+.f64 (*.f64 b (neg.f64 b)) (fma.f64 (neg.f64 b) b (*.f64 b b))))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b)))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (*.f64 b (neg.f64 b)) 1 (*.f64 b b)))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 b b))) (cbrt.f64 (pow.f64 b 4)) (*.f64 b b)))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (*.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) 1))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (+.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b))))
(+.f64 (*.f64 b (neg.f64 b)) (*.f64 a a))
(+.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (-.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 1)
(*.f64 1 (-.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2)) (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(*.f64 (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(*.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (/.f64 1 (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 a b) 2)))))
(*.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (/.f64 1 (fma.f64 a a (*.f64 b b))))
(*.f64 (+.f64 a b) (-.f64 a b))
(*.f64 (-.f64 a b) (+.f64 a b))
(/.f64 1 (/.f64 (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 a b) 2))) (-.f64 (pow.f64 a 6) (pow.f64 b 6))))
(/.f64 1 (/.f64 (fma.f64 a a (*.f64 b b)) (-.f64 (pow.f64 a 4) (pow.f64 b 4))))
(/.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 a b) 2))))
(/.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (fma.f64 a a (*.f64 b b)))
(/.f64 (neg.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6))) (neg.f64 (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 a b) 2)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4))) (neg.f64 (fma.f64 a a (*.f64 b b))))
(/.f64 (+.f64 (pow.f64 a 6) (pow.f64 (*.f64 b (neg.f64 b)) 3)) (+.f64 (pow.f64 a 4) (-.f64 (*.f64 (*.f64 b (neg.f64 b)) (*.f64 b (neg.f64 b))) (*.f64 (*.f64 a a) (*.f64 b (neg.f64 b))))))
(/.f64 (+.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 3) (pow.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) 3)) (+.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2) (-.f64 (*.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b))) (*.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b))))))
(/.f64 (-.f64 (pow.f64 a 4) (*.f64 (*.f64 b (neg.f64 b)) (*.f64 b (neg.f64 b)))) (-.f64 (*.f64 a a) (*.f64 b (neg.f64 b))))
(/.f64 (-.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2) (*.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b)))) (-.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b))))
(pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 1)
(pow.f64 (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) 3)
(pow.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 3) 1/3)
(pow.f64 (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) 2)
(sqrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2))
(log.f64 (pow.f64 (exp.f64 (+.f64 a b)) (-.f64 a b)))
(cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 3))
(expm1.f64 (log1p.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(exp.f64 (log.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(log1p.f64 (expm1.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(fma.f64 a a (*.f64 b (neg.f64 b)))
(fma.f64 1 (*.f64 a a) (*.f64 b (neg.f64 b)))
(fma.f64 1 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b)))
(fma.f64 (cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2)) (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (fma.f64 (neg.f64 b) b (*.f64 b b)))
(fma.f64 (cbrt.f64 (pow.f64 a 4)) (pow.f64 (cbrt.f64 a) 2) (*.f64 b (neg.f64 b)))
(fma.f64 (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (fma.f64 (neg.f64 b) b (*.f64 b b)))
(fma.f64 (+.f64 a b) (-.f64 a b) (fma.f64 (neg.f64 b) b (*.f64 b b)))

simplify53.0ms (2.4%)

Algorithm
egg-herbie
Rules
1818×fma-def
742×distribute-lft-in
734×distribute-rgt-in
422×cancel-sign-sub-inv
340×unswap-sqr
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01282078
13461964
215261810
Stop Event
node limit
Counts
70 → 69
Calls
Call 1
Inputs
(*.f64 -1 (pow.f64 b 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(pow.f64 a 2)
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(pow.f64 a 2)
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(pow.f64 a 2)
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(*.f64 -1 (pow.f64 b 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(*.f64 -1 (pow.f64 b 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
(+.f64 (*.f64 a a) (*.f64 (*.f64 b (neg.f64 b)) 1))
(+.f64 (*.f64 a a) (+.f64 (*.f64 b (neg.f64 b)) (fma.f64 (neg.f64 b) b (*.f64 b b))))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b)))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (*.f64 b (neg.f64 b)) 1 (*.f64 b b)))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 b b))) (cbrt.f64 (pow.f64 b 4)) (*.f64 b b)))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (*.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) 1))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (+.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b))))
(+.f64 (*.f64 b (neg.f64 b)) (*.f64 a a))
(+.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (-.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 1)
(*.f64 1 (-.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2)) (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(*.f64 (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(*.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (/.f64 1 (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 a b) 2)))))
(*.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (/.f64 1 (fma.f64 a a (*.f64 b b))))
(*.f64 (+.f64 a b) (-.f64 a b))
(*.f64 (-.f64 a b) (+.f64 a b))
(/.f64 1 (/.f64 (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 a b) 2))) (-.f64 (pow.f64 a 6) (pow.f64 b 6))))
(/.f64 1 (/.f64 (fma.f64 a a (*.f64 b b)) (-.f64 (pow.f64 a 4) (pow.f64 b 4))))
(/.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 a b) 2))))
(/.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (fma.f64 a a (*.f64 b b)))
(/.f64 (neg.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6))) (neg.f64 (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 a b) 2)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4))) (neg.f64 (fma.f64 a a (*.f64 b b))))
(/.f64 (+.f64 (pow.f64 a 6) (pow.f64 (*.f64 b (neg.f64 b)) 3)) (+.f64 (pow.f64 a 4) (-.f64 (*.f64 (*.f64 b (neg.f64 b)) (*.f64 b (neg.f64 b))) (*.f64 (*.f64 a a) (*.f64 b (neg.f64 b))))))
(/.f64 (+.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 3) (pow.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) 3)) (+.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2) (-.f64 (*.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b))) (*.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b))))))
(/.f64 (-.f64 (pow.f64 a 4) (*.f64 (*.f64 b (neg.f64 b)) (*.f64 b (neg.f64 b)))) (-.f64 (*.f64 a a) (*.f64 b (neg.f64 b))))
(/.f64 (-.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2) (*.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b)))) (-.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b))))
(pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 1)
(pow.f64 (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) 3)
(pow.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 3) 1/3)
(pow.f64 (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) 2)
(sqrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2))
(log.f64 (pow.f64 (exp.f64 (+.f64 a b)) (-.f64 a b)))
(cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 3))
(expm1.f64 (log1p.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(exp.f64 (log.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(log1p.f64 (expm1.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(fma.f64 a a (*.f64 b (neg.f64 b)))
(fma.f64 1 (*.f64 a a) (*.f64 b (neg.f64 b)))
(fma.f64 1 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b)))
(fma.f64 (cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2)) (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (fma.f64 (neg.f64 b) b (*.f64 b b)))
(fma.f64 (cbrt.f64 (pow.f64 a 4)) (pow.f64 (cbrt.f64 a) 2) (*.f64 b (neg.f64 b)))
(fma.f64 (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (fma.f64 (neg.f64 b) b (*.f64 b b)))
(fma.f64 (+.f64 a b) (-.f64 a b) (fma.f64 (neg.f64 b) b (*.f64 b b)))
Outputs
(*.f64 -1 (pow.f64 b 2))
(*.f64 b (neg.f64 b))
(neg.f64 (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(pow.f64 a 2)
(*.f64 a a)
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(pow.f64 a 2)
(*.f64 a a)
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(pow.f64 a 2)
(*.f64 a a)
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(*.f64 -1 (pow.f64 b 2))
(*.f64 b (neg.f64 b))
(neg.f64 (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(*.f64 -1 (pow.f64 b 2))
(*.f64 b (neg.f64 b))
(neg.f64 (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 a a) (*.f64 (*.f64 b (neg.f64 b)) 1))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 a a) (+.f64 (*.f64 b (neg.f64 b)) (fma.f64 (neg.f64 b) b (*.f64 b b))))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b)))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (*.f64 b (neg.f64 b)) 1 (*.f64 b b)))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 b b))) (cbrt.f64 (pow.f64 b 4)) (*.f64 b b)))
(fma.f64 (+.f64 b a) (-.f64 a b) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 b b))) (cbrt.f64 (pow.f64 b 4)) (*.f64 b b)))
(fma.f64 (neg.f64 (cbrt.f64 (*.f64 b b))) (cbrt.f64 (pow.f64 b 4)) (fma.f64 a a 0))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (*.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) 1))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (+.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b))))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 b (neg.f64 b)) (*.f64 a a))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (-.f64 (*.f64 a a) (*.f64 b b)))
(-.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 1)
(-.f64 (*.f64 a a) (*.f64 b b))
(*.f64 1 (-.f64 (*.f64 a a) (*.f64 b b)))
(-.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2)) (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(*.f64 (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2)))
(*.f64 (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(-.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (/.f64 1 (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 a b) 2)))))
(*.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (/.f64 1 (+.f64 (+.f64 (pow.f64 a 4) (pow.f64 b 4)) (pow.f64 (*.f64 b a) 2))))
(/.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 (*.f64 b a) 2) (+.f64 (pow.f64 a 4) (pow.f64 b 4))))
(/.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 b a) 2))))
(*.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (/.f64 1 (fma.f64 a a (*.f64 b b))))
(/.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (fma.f64 a a (*.f64 b b)))
(/.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (fma.f64 b b (*.f64 a a)))
(*.f64 (+.f64 a b) (-.f64 a b))
(-.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (-.f64 a b) (+.f64 a b))
(-.f64 (*.f64 a a) (*.f64 b b))
(/.f64 1 (/.f64 (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 a b) 2))) (-.f64 (pow.f64 a 6) (pow.f64 b 6))))
(*.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (/.f64 1 (+.f64 (+.f64 (pow.f64 a 4) (pow.f64 b 4)) (pow.f64 (*.f64 b a) 2))))
(/.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 (*.f64 b a) 2) (+.f64 (pow.f64 a 4) (pow.f64 b 4))))
(/.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 b a) 2))))
(/.f64 1 (/.f64 (fma.f64 a a (*.f64 b b)) (-.f64 (pow.f64 a 4) (pow.f64 b 4))))
(*.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (/.f64 1 (fma.f64 a a (*.f64 b b))))
(/.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (fma.f64 a a (*.f64 b b)))
(/.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (fma.f64 b b (*.f64 a a)))
(/.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 a b) 2))))
(*.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (/.f64 1 (+.f64 (+.f64 (pow.f64 a 4) (pow.f64 b 4)) (pow.f64 (*.f64 b a) 2))))
(/.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 (*.f64 b a) 2) (+.f64 (pow.f64 a 4) (pow.f64 b 4))))
(/.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 b a) 2))))
(/.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (fma.f64 a a (*.f64 b b)))
(*.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (/.f64 1 (fma.f64 a a (*.f64 b b))))
(/.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (fma.f64 b b (*.f64 a a)))
(/.f64 (neg.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6))) (neg.f64 (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 a b) 2)))))
(*.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (/.f64 1 (+.f64 (+.f64 (pow.f64 a 4) (pow.f64 b 4)) (pow.f64 (*.f64 b a) 2))))
(/.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 (*.f64 b a) 2) (+.f64 (pow.f64 a 4) (pow.f64 b 4))))
(/.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 b a) 2))))
(/.f64 (neg.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4))) (neg.f64 (fma.f64 a a (*.f64 b b))))
(*.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (/.f64 1 (fma.f64 a a (*.f64 b b))))
(/.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (fma.f64 a a (*.f64 b b)))
(/.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (fma.f64 b b (*.f64 a a)))
(/.f64 (+.f64 (pow.f64 a 6) (pow.f64 (*.f64 b (neg.f64 b)) 3)) (+.f64 (pow.f64 a 4) (-.f64 (*.f64 (*.f64 b (neg.f64 b)) (*.f64 b (neg.f64 b))) (*.f64 (*.f64 a a) (*.f64 b (neg.f64 b))))))
(*.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (/.f64 1 (+.f64 (+.f64 (pow.f64 a 4) (pow.f64 b 4)) (pow.f64 (*.f64 b a) 2))))
(/.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 (*.f64 b a) 2) (+.f64 (pow.f64 a 4) (pow.f64 b 4))))
(/.f64 (-.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 a 4) (+.f64 (pow.f64 b 4) (pow.f64 (*.f64 b a) 2))))
(/.f64 (+.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 3) (pow.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) 3)) (+.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2) (-.f64 (*.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b))) (*.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b))))))
(/.f64 (+.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 3) (pow.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) 3)) (+.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2) (*.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (-.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (-.f64 (*.f64 a a) (*.f64 b b))))))
(/.f64 (+.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 3) (pow.f64 (*.f64 0 (*.f64 b b)) 3)) (fma.f64 (*.f64 0 (*.f64 b b)) (+.f64 (-.f64 (*.f64 0 (*.f64 b b)) (*.f64 a a)) (*.f64 b b)) (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2)))
(/.f64 (+.f64 0 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 3)) (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2))
(/.f64 (-.f64 (pow.f64 a 4) (*.f64 (*.f64 b (neg.f64 b)) (*.f64 b (neg.f64 b)))) (-.f64 (*.f64 a a) (*.f64 b (neg.f64 b))))
(*.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (/.f64 1 (fma.f64 a a (*.f64 b b))))
(/.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (fma.f64 a a (*.f64 b b)))
(/.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (fma.f64 b b (*.f64 a a)))
(/.f64 (-.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2) (*.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b)))) (-.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b))))
(/.f64 (-.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2) (*.f64 (fma.f64 (neg.f64 b) b (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b)))) (-.f64 (*.f64 a a) (+.f64 (*.f64 b b) (fma.f64 (neg.f64 b) b (*.f64 b b)))))
(/.f64 (+.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2) (*.f64 (*.f64 0 (*.f64 b b)) (*.f64 0 (*.f64 b b)))) (-.f64 (*.f64 a a) (fma.f64 b b (*.f64 0 (*.f64 b b)))))
(/.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2) (-.f64 (*.f64 a a) (*.f64 b b)))
(pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 1)
(-.f64 (*.f64 a a) (*.f64 b b))
(pow.f64 (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) 3)
(-.f64 (*.f64 a a) (*.f64 b b))
(pow.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 3) 1/3)
(-.f64 (*.f64 a a) (*.f64 b b))
(pow.f64 (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) 2)
(-.f64 (*.f64 a a) (*.f64 b b))
(sqrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(log.f64 (pow.f64 (exp.f64 (+.f64 a b)) (-.f64 a b)))
(-.f64 (*.f64 a a) (*.f64 b b))
(cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 3))
(-.f64 (*.f64 a a) (*.f64 b b))
(expm1.f64 (log1p.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(-.f64 (*.f64 a a) (*.f64 b b))
(exp.f64 (log.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(-.f64 (*.f64 a a) (*.f64 b b))
(log1p.f64 (expm1.f64 (-.f64 (*.f64 a a) (*.f64 b b))))
(-.f64 (*.f64 a a) (*.f64 b b))
(fma.f64 a a (*.f64 b (neg.f64 b)))
(-.f64 (*.f64 a a) (*.f64 b b))
(fma.f64 1 (*.f64 a a) (*.f64 b (neg.f64 b)))
(-.f64 (*.f64 a a) (*.f64 b b))
(fma.f64 1 (-.f64 (*.f64 a a) (*.f64 b b)) (fma.f64 (neg.f64 b) b (*.f64 b b)))
(-.f64 (*.f64 a a) (*.f64 b b))
(fma.f64 (cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2)) (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (fma.f64 (neg.f64 b) b (*.f64 b b)))
(fma.f64 (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2)) (*.f64 0 (*.f64 b b)))
(fma.f64 (cbrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (cbrt.f64 (pow.f64 (-.f64 (*.f64 a a) (*.f64 b b)) 2)) 0)
(fma.f64 (cbrt.f64 (pow.f64 a 4)) (pow.f64 (cbrt.f64 a) 2) (*.f64 b (neg.f64 b)))
(fma.f64 (cbrt.f64 (pow.f64 a 4)) (pow.f64 (cbrt.f64 a) 2) (neg.f64 (*.f64 b b)))
(-.f64 (*.f64 (cbrt.f64 (pow.f64 a 4)) (pow.f64 (cbrt.f64 a) 2)) (*.f64 b b))
(fma.f64 (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 b b))) (fma.f64 (neg.f64 b) b (*.f64 b b)))
(-.f64 (*.f64 a a) (*.f64 b b))
(fma.f64 (+.f64 a b) (-.f64 a b) (fma.f64 (neg.f64 b) b (*.f64 b b)))
(-.f64 (*.f64 a a) (*.f64 b b))

localize27.0ms (1.2%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
96.9%
(fma.f64 a a (*.f64 b (neg.f64 b)))
Compiler

Compiled 18 to 6 computations (66.7% saved)

series2.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
a
@-inf
(fma.f64 a a (*.f64 b (neg.f64 b)))
0.0ms
a
@0
(fma.f64 a a (*.f64 b (neg.f64 b)))
0.0ms
a
@inf
(fma.f64 a a (*.f64 b (neg.f64 b)))
0.0ms
b
@0
(fma.f64 a a (*.f64 b (neg.f64 b)))
0.0ms
b
@inf
(fma.f64 a a (*.f64 b (neg.f64 b)))

rewrite55.0ms (2.5%)

Algorithm
batch-egg-rewrite
Rules
1434×pow1
1304×add-exp-log
1302×log1p-expm1-u
1302×expm1-log1p-u
1270×add-log-exp
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0919
117913
2217613
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(fma.f64 a a (*.f64 b (neg.f64 b)))
Outputs
(+.f64 (*.f64 b b) (*.f64 a a))
(+.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 (*.f64 a a) 1) (*.f64 b b))
(-.f64 (*.f64 a a) (*.f64 b b))
(-.f64 (+.f64 1 (pow.f64 (hypot.f64 a b) 2)) 1)
(*.f64 (pow.f64 (hypot.f64 a b) 2) 1)
(*.f64 1 (pow.f64 (hypot.f64 a b) 2))
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)) (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)) 2))
(*.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)) 2) (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)))
(*.f64 (hypot.f64 a b) (hypot.f64 a b))
(/.f64 (+.f64 (pow.f64 (*.f64 a a) 3) (pow.f64 (*.f64 b b) 3)) (+.f64 (*.f64 (*.f64 a a) (*.f64 a a)) (-.f64 (*.f64 b (pow.f64 b 3)) (*.f64 (*.f64 a a) (*.f64 b b)))))
(/.f64 (-.f64 (*.f64 (*.f64 a a) (*.f64 a a)) (*.f64 b (pow.f64 b 3))) (pow.f64 (hypot.f64 a b) 2))
(pow.f64 (pow.f64 (hypot.f64 a b) 2) 1)
(pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)) 3)
(pow.f64 (pow.f64 (pow.f64 (hypot.f64 a b) 2) 3) 1/3)
(pow.f64 (hypot.f64 a b) 2)
(sqrt.f64 (pow.f64 (pow.f64 (hypot.f64 a b) 2) 2))
(log.f64 (exp.f64 (pow.f64 (hypot.f64 a b) 2)))
(cbrt.f64 (pow.f64 (pow.f64 (hypot.f64 a b) 2) 3))
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 a b) 2)))
(exp.f64 (log.f64 (pow.f64 (hypot.f64 a b) 2)))
(log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 a b) 2)))

simplify56.0ms (2.5%)

Algorithm
egg-herbie
Rules
1900×times-frac
1800×fma-def
1232×log-prod
880×associate-*r*
776×associate-*l*
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0591008
1166868
2726768
35567768
Stop Event
node limit
Counts
46 → 36
Calls
Call 1
Inputs
(*.f64 -1 (pow.f64 b 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(pow.f64 a 2)
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(pow.f64 a 2)
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(pow.f64 a 2)
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(*.f64 -1 (pow.f64 b 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(*.f64 -1 (pow.f64 b 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(+.f64 (*.f64 b b) (*.f64 a a))
(+.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 (*.f64 a a) 1) (*.f64 b b))
(-.f64 (*.f64 a a) (*.f64 b b))
(-.f64 (+.f64 1 (pow.f64 (hypot.f64 a b) 2)) 1)
(*.f64 (pow.f64 (hypot.f64 a b) 2) 1)
(*.f64 1 (pow.f64 (hypot.f64 a b) 2))
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)) (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)) 2))
(*.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)) 2) (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)))
(*.f64 (hypot.f64 a b) (hypot.f64 a b))
(/.f64 (+.f64 (pow.f64 (*.f64 a a) 3) (pow.f64 (*.f64 b b) 3)) (+.f64 (*.f64 (*.f64 a a) (*.f64 a a)) (-.f64 (*.f64 b (pow.f64 b 3)) (*.f64 (*.f64 a a) (*.f64 b b)))))
(/.f64 (-.f64 (*.f64 (*.f64 a a) (*.f64 a a)) (*.f64 b (pow.f64 b 3))) (pow.f64 (hypot.f64 a b) 2))
(pow.f64 (pow.f64 (hypot.f64 a b) 2) 1)
(pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)) 3)
(pow.f64 (pow.f64 (pow.f64 (hypot.f64 a b) 2) 3) 1/3)
(pow.f64 (hypot.f64 a b) 2)
(sqrt.f64 (pow.f64 (pow.f64 (hypot.f64 a b) 2) 2))
(log.f64 (exp.f64 (pow.f64 (hypot.f64 a b) 2)))
(cbrt.f64 (pow.f64 (pow.f64 (hypot.f64 a b) 2) 3))
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 a b) 2)))
(exp.f64 (log.f64 (pow.f64 (hypot.f64 a b) 2)))
(log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 a b) 2)))
Outputs
(*.f64 -1 (pow.f64 b 2))
(neg.f64 (*.f64 b b))
(*.f64 b (neg.f64 b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(pow.f64 a 2)
(*.f64 a a)
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(pow.f64 a 2)
(*.f64 a a)
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(pow.f64 a 2)
(*.f64 a a)
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(*.f64 -1 (pow.f64 b 2))
(neg.f64 (*.f64 b b))
(*.f64 b (neg.f64 b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(*.f64 -1 (pow.f64 b 2))
(neg.f64 (*.f64 b b))
(*.f64 b (neg.f64 b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 -1 (pow.f64 b 2)) (pow.f64 a 2))
(-.f64 (*.f64 a a) (*.f64 b b))
(+.f64 (*.f64 b b) (*.f64 a a))
(fma.f64 b b (*.f64 a a))
(+.f64 (*.f64 a a) (*.f64 b b))
(fma.f64 b b (*.f64 a a))
(+.f64 (*.f64 (*.f64 a a) 1) (*.f64 b b))
(fma.f64 b b (*.f64 a a))
(-.f64 (*.f64 a a) (*.f64 b b))
(-.f64 (+.f64 1 (pow.f64 (hypot.f64 a b) 2)) 1)
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(*.f64 (pow.f64 (hypot.f64 a b) 2) 1)
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(*.f64 1 (pow.f64 (hypot.f64 a b) 2))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)) (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)) 2))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(*.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)) 2) (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(*.f64 (hypot.f64 a b) (hypot.f64 a b))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(/.f64 (+.f64 (pow.f64 (*.f64 a a) 3) (pow.f64 (*.f64 b b) 3)) (+.f64 (*.f64 (*.f64 a a) (*.f64 a a)) (-.f64 (*.f64 b (pow.f64 b 3)) (*.f64 (*.f64 a a) (*.f64 b b)))))
(/.f64 (+.f64 (pow.f64 (*.f64 a a) 3) (pow.f64 (*.f64 b b) 3)) (fma.f64 (*.f64 a a) (*.f64 a a) (-.f64 (*.f64 b (pow.f64 b 3)) (*.f64 (*.f64 b b) (*.f64 a a)))))
(/.f64 (+.f64 (pow.f64 a 6) (pow.f64 b 6)) (+.f64 (pow.f64 a 4) (-.f64 (pow.f64 b 4) (*.f64 b (*.f64 b (*.f64 a a))))))
(/.f64 (+.f64 (pow.f64 a 6) (pow.f64 b 6)) (fma.f64 b (*.f64 b (-.f64 (*.f64 b b) (*.f64 a a))) (pow.f64 a 4)))
(/.f64 (+.f64 (pow.f64 a 6) (pow.f64 b 6)) (fma.f64 (*.f64 b b) (fma.f64 a (neg.f64 a) (*.f64 b b)) (pow.f64 a 4)))
(/.f64 (-.f64 (*.f64 (*.f64 a a) (*.f64 a a)) (*.f64 b (pow.f64 b 3))) (pow.f64 (hypot.f64 a b) 2))
(/.f64 (-.f64 (pow.f64 a 4) (pow.f64 b 4)) (pow.f64 (hypot.f64 a b) 2))
(pow.f64 (pow.f64 (hypot.f64 a b) 2) 1)
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 a b) 2)) 3)
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(pow.f64 (pow.f64 (pow.f64 (hypot.f64 a b) 2) 3) 1/3)
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(pow.f64 (hypot.f64 a b) 2)
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(sqrt.f64 (pow.f64 (pow.f64 (hypot.f64 a b) 2) 2))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(log.f64 (exp.f64 (pow.f64 (hypot.f64 a b) 2)))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(cbrt.f64 (pow.f64 (pow.f64 (hypot.f64 a b) 2) 3))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 a b) 2)))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(exp.f64 (log.f64 (pow.f64 (hypot.f64 a b) 2)))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)
(log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 a b) 2)))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 a b) 2) 1))
(+.f64 (pow.f64 (hypot.f64 a b) 2) 0)
(pow.f64 (hypot.f64 a b) 2)

eval23.0ms (1.1%)

Compiler

Compiled 1560 to 562 computations (64% saved)

prune13.0ms (0.6%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New1032105
Fresh000
Picked101
Done011
Total1043107
Accurracy
100.0%
Counts
107 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
92.6%
(-.f64 (*.f64 a a) (*.f64 b b))
53.6%
(*.f64 b (neg.f64 b))
53.9%
(*.f64 a a)
Compiler

Compiled 20 to 12 computations (40% saved)

localize15.0ms (0.7%)

Compiler

Compiled 7 to 4 computations (42.9% saved)

localize25.0ms (1.1%)

Compiler

Compiled 10 to 5 computations (50% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done022
Total033
Accurracy
100.0%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
92.6%
(-.f64 (*.f64 a a) (*.f64 b b))
53.6%
(*.f64 b (neg.f64 b))
53.9%
(*.f64 a a)
Compiler

Compiled 20 to 12 computations (40% saved)

regimes24.0ms (1.1%)

Counts
4 → 1
Calls
Call 1
Inputs
(*.f64 a a)
(*.f64 b (neg.f64 b))
(-.f64 (*.f64 a a) (*.f64 b b))
(fma.f64 a a (*.f64 b (neg.f64 b)))
Outputs
(fma.f64 a a (*.f64 b (neg.f64 b)))
Calls

5 calls:

11.0ms
b
4.0ms
a
3.0ms
(-.f64 (*.f64 a a) (*.f64 b b))
3.0ms
(*.f64 a a)
3.0ms
(*.f64 b b)
Results
AccuracySegmentsBranch
96.9%1a
96.9%1b
96.9%1(-.f64 (*.f64 a a) (*.f64 b b))
96.9%1(*.f64 a a)
96.9%1(*.f64 b b)
Compiler

Compiled 48 to 23 computations (52.1% saved)

regimes37.0ms (1.7%)

Counts
3 → 2
Calls
Call 1
Inputs
(*.f64 a a)
(*.f64 b (neg.f64 b))
(-.f64 (*.f64 a a) (*.f64 b b))
Outputs
(-.f64 (*.f64 a a) (*.f64 b b))
(*.f64 b (neg.f64 b))
Calls

5 calls:

10.0ms
a
10.0ms
b
5.0ms
(-.f64 (*.f64 a a) (*.f64 b b))
5.0ms
(*.f64 b b)
5.0ms
(*.f64 a a)
Results
AccuracySegmentsBranch
95.7%3a
96.9%3b
96.9%2(-.f64 (*.f64 a a) (*.f64 b b))
95.7%2(*.f64 a a)
96.9%2(*.f64 b b)
Compiler

Compiled 41 to 22 computations (46.3% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
3.5667720770613775e+305
4.617144940164367e+305
Compiler

Compiled 14 to 9 computations (35.7% saved)

regimes48.0ms (2.2%)

Accuracy

Total -48.2b remaining (-451%)

Threshold costs -48.2b (-451%)

Counts
2 → 5
Calls
Call 1
Inputs
(*.f64 a a)
(*.f64 b (neg.f64 b))
Outputs
(*.f64 b (neg.f64 b))
(*.f64 a a)
(*.f64 b (neg.f64 b))
(*.f64 a a)
(*.f64 b (neg.f64 b))
Calls

3 calls:

17.0ms
b
17.0ms
a
13.0ms
(*.f64 a a)
Results
AccuracySegmentsBranch
80.8%5a
83.3%5b
81.6%6(*.f64 a a)
Compiler

Compiled 20 to 12 computations (40% saved)

bsearch60.0ms (2.7%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
narrow-enough
narrow-enough
Steps
TimeLeftRight
19.0ms
1332591.4541642922
7210028158448.267
14.0ms
-5.336201669709312e-89
-5.615476354401502e-95
14.0ms
-2.413131317783845e-19
-2.2093846267911508e-26
14.0ms
-1.45818398782691e+84
-9.087655051752552e+79
Results
38.0ms389×body256valid
16.0ms171×body256infinite
Compiler

Compiled 469 to 324 computations (30.9% saved)

simplify12.0ms (0.5%)

Algorithm
egg-herbie
Rules
not-or
sub-neg
+-commutative
not-not
if-if-or-not
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
030150
144150
252146
361142
466142
570142
671142
772142
Stop Event
done
saturated
Calls
Call 1
Inputs
(fma.f64 a a (*.f64 b (neg.f64 b)))
(if (<=.f64 (*.f64 b b) 399999999999999975701421002214584874401611488804692998127630862852928182520529356113732370297620309937474244722246486903148687749705441221209431953634675310999492057667280441642708410126497636233748792101942063963065587302032873306381964490784317992213841396746502896256304175233838394482996173925525749760) (-.f64 (*.f64 a a) (*.f64 b b)) (*.f64 b (neg.f64 b)))
(if (<=.f64 b -3799999999999999658746226936107099740187701272956725709319955091447999262309220352) (*.f64 b (neg.f64 b)) (if (<=.f64 b -6911985578081563/2658455991569831745807614120560689152) (*.f64 a a) (if (<=.f64 b -949651770683389/17917957937422433684459538244547554224973163977877196279199912807710334969441287563047019946172856926208) (*.f64 b (neg.f64 b)) (if (<=.f64 b 2500000000000) (*.f64 a a) (*.f64 b (neg.f64 b))))))
(*.f64 a a)
Outputs
(fma.f64 a a (*.f64 b (neg.f64 b)))
(if (<=.f64 (*.f64 b b) 399999999999999975701421002214584874401611488804692998127630862852928182520529356113732370297620309937474244722246486903148687749705441221209431953634675310999492057667280441642708410126497636233748792101942063963065587302032873306381964490784317992213841396746502896256304175233838394482996173925525749760) (-.f64 (*.f64 a a) (*.f64 b b)) (*.f64 b (neg.f64 b)))
(if (<=.f64 b -3799999999999999658746226936107099740187701272956725709319955091447999262309220352) (*.f64 b (neg.f64 b)) (if (<=.f64 b -6911985578081563/2658455991569831745807614120560689152) (*.f64 a a) (if (<=.f64 b -949651770683389/17917957937422433684459538244547554224973163977877196279199912807710334969441287563047019946172856926208) (*.f64 b (neg.f64 b)) (if (<=.f64 b 2500000000000) (*.f64 a a) (*.f64 b (neg.f64 b))))))
(if (<=.f64 b -3799999999999999658746226936107099740187701272956725709319955091447999262309220352) (*.f64 b (neg.f64 b)) (if (<=.f64 b -6911985578081563/2658455991569831745807614120560689152) (*.f64 a a) (if (or (<=.f64 b -949651770683389/17917957937422433684459538244547554224973163977877196279199912807710334969441287563047019946172856926208) (not (<=.f64 b 2500000000000))) (*.f64 b (neg.f64 b)) (*.f64 a a))))
(if (or (<=.f64 b -3799999999999999658746226936107099740187701272956725709319955091447999262309220352) (not (or (<=.f64 b -6911985578081563/2658455991569831745807614120560689152) (not (or (<=.f64 b -949651770683389/17917957937422433684459538244547554224973163977877196279199912807710334969441287563047019946172856926208) (not (<=.f64 b 2500000000000))))))) (*.f64 b (neg.f64 b)) (*.f64 a a))
(if (or (<=.f64 b -3799999999999999658746226936107099740187701272956725709319955091447999262309220352) (not (or (<=.f64 b -6911985578081563/2658455991569831745807614120560689152) (and (not (<=.f64 b -949651770683389/17917957937422433684459538244547554224973163977877196279199912807710334969441287563047019946172856926208)) (<=.f64 b 2500000000000))))) (*.f64 b (neg.f64 b)) (*.f64 a a))
(if (or (<=.f64 b -3799999999999999658746226936107099740187701272956725709319955091447999262309220352) (and (not (<=.f64 b -6911985578081563/2658455991569831745807614120560689152)) (or (<=.f64 b -949651770683389/17917957937422433684459538244547554224973163977877196279199912807710334969441287563047019946172856926208) (not (<=.f64 b 2500000000000))))) (*.f64 b (neg.f64 b)) (*.f64 a a))
(*.f64 a a)
Compiler

Compiled 60 to 37 computations (38.3% saved)

soundness414.0ms (18.7%)

Rules
2086×fma-def
1818×fma-def
1818×fma-def
1386×distribute-lft-out
998×distribute-lft-out--
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
11819
23019
35919
413419
538419
684319
7170619
8385019
9550819
10638219
11675119
12698119
13709519
14709519
01282078
13461964
215261810
01282078
13461964
215261810
Stop Event
node limit
node limit
node limit
Compiler

Compiled 51 to 27 computations (47.1% saved)

end88.0ms (4%)

Compiler

Compiled 144 to 70 computations (51.4% saved)

Profiling

Loading profile data...