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)

sample772.0ms (35.8%)

Results
394.0ms4657×body256valid
351.0ms3599×body256infinite
Bogosity

preprocess167.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)

simplify161.0ms (7.4%)

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.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 18 to 10 computations (44.4% saved)

localize63.0ms (2.9%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
96.6%
(-.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
a
@-inf
(-.f64 (*.f64 a a) (*.f64 b b))

rewrite63.0ms (2.9%)

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)))

simplify59.0ms (2.7%)

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))

localize34.0ms (1.6%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
99.2%
(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
1.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)))

rewrite72.0ms (3.3%)

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)))

simplify66.0ms (3%)

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)

eval22.0ms (1%)

Compiler

Compiled 1560 to 562 computations (64% saved)

prune16.0ms (0.8%)

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
96.5%
(-.f64 (*.f64 a a) (*.f64 b b))
52.6%
(*.f64 b (neg.f64 b))
55.2%
(*.f64 a a)
Compiler

Compiled 20 to 12 computations (40% saved)

localize15.0ms (0.7%)

Compiler

Compiled 7 to 4 computations (42.9% saved)

localize20.0ms (0.9%)

Compiler

Compiled 10 to 5 computations (50% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune1.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
96.5%
(-.f64 (*.f64 a a) (*.f64 b b))
52.6%
(*.f64 b (neg.f64 b))
55.2%
(*.f64 a a)
Compiler

Compiled 20 to 12 computations (40% saved)

regimes18.0ms (0.8%)

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:

5.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
99.2%1a
99.2%1b
99.2%1(-.f64 (*.f64 a a) (*.f64 b b))
99.2%1(*.f64 a a)
99.2%1(*.f64 b b)
Compiler

Compiled 48 to 23 computations (52.1% saved)

regimes22.0ms (1%)

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:

7.0ms
(-.f64 (*.f64 a a) (*.f64 b b))
4.0ms
(*.f64 b b)
3.0ms
a
3.0ms
b
3.0ms
(*.f64 a a)
Results
AccuracySegmentsBranch
96.5%1a
96.5%1b
99.2%2(-.f64 (*.f64 a a) (*.f64 b b))
96.5%1(*.f64 a a)
99.2%2(*.f64 b b)
Compiler

Compiled 41 to 22 computations (46.3% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.566425725811519e+303
2.4850359686642162e+306
Compiler

Compiled 14 to 9 computations (35.7% saved)

regimes31.0ms (1.5%)

Accuracy

Total -48.9b remaining (-490.7%)

Threshold costs -48.9b (-490.7%)

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

3 calls:

15.0ms
a
10.0ms
b
5.0ms
(*.f64 a a)
Results
AccuracySegmentsBranch
84.4%5a
84.4%3b
80.0%2(*.f64 a a)
Compiler

Compiled 20 to 12 computations (40% saved)

bsearch47.0ms (2.2%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
narrow-enough
narrow-enough
Steps
TimeLeftRight
9.0ms
6.075940732429407e+50
8.331604921680579e+51
11.0ms
2.341524967442661e-77
1.301986666842803e-75
12.0ms
9.694198131491076e-148
5.153682332239843e-145
16.0ms
-0.0002086445032624501
-6.1891040805039665e-18
Results
33.0ms384×body256valid
9.0ms112×body256infinite
Compiler

Compiled 417 to 288 computations (30.9% saved)

simplify11.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
144146
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) 2000000000000000000323530153572912876425337292463318876590990034202234998451477495730520486068427830507559547136360674832054891641135558399286783083212052137222301492244569952354513300088401054553614654135380924225322855000394102452979796521357526782898752177094584641628255914972661310937838244526555136) (-.f64 (*.f64 a a) (*.f64 b b)) (*.f64 b (neg.f64 b)))
(if (<=.f64 a -2508757194024499/73786976294838206464) (*.f64 a a) (if (<=.f64 a 7170143860053219/14059105607947488696282932836518693308967803494693489478439861164411992439598399594747002144074658928593502845729752797260025831423419686528151609940203637047296) (*.f64 b (neg.f64 b)) (if (<=.f64 a 6257774519299541/260740604970814219042361048116400404614587954389239840081425977517360806369707098391474864128) (*.f64 a a) (if (<=.f64 a 2300000000000000050869581740277537991052282430488576) (*.f64 b (neg.f64 b)) (*.f64 a a)))))
(*.f64 a a)
Outputs
(fma.f64 a a (*.f64 b (neg.f64 b)))
(if (<=.f64 (*.f64 b b) 2000000000000000000323530153572912876425337292463318876590990034202234998451477495730520486068427830507559547136360674832054891641135558399286783083212052137222301492244569952354513300088401054553614654135380924225322855000394102452979796521357526782898752177094584641628255914972661310937838244526555136) (-.f64 (*.f64 a a) (*.f64 b b)) (*.f64 b (neg.f64 b)))
(if (<=.f64 a -2508757194024499/73786976294838206464) (*.f64 a a) (if (<=.f64 a 7170143860053219/14059105607947488696282932836518693308967803494693489478439861164411992439598399594747002144074658928593502845729752797260025831423419686528151609940203637047296) (*.f64 b (neg.f64 b)) (if (<=.f64 a 6257774519299541/260740604970814219042361048116400404614587954389239840081425977517360806369707098391474864128) (*.f64 a a) (if (<=.f64 a 2300000000000000050869581740277537991052282430488576) (*.f64 b (neg.f64 b)) (*.f64 a a)))))
(if (<=.f64 a -2508757194024499/73786976294838206464) (*.f64 a a) (if (or (<=.f64 a 7170143860053219/14059105607947488696282932836518693308967803494693489478439861164411992439598399594747002144074658928593502845729752797260025831423419686528151609940203637047296) (not (or (<=.f64 a 6257774519299541/260740604970814219042361048116400404614587954389239840081425977517360806369707098391474864128) (not (<=.f64 a 2300000000000000050869581740277537991052282430488576))))) (*.f64 b (neg.f64 b)) (*.f64 a a)))
(if (<=.f64 a -2508757194024499/73786976294838206464) (*.f64 a a) (if (or (<=.f64 a 7170143860053219/14059105607947488696282932836518693308967803494693489478439861164411992439598399594747002144074658928593502845729752797260025831423419686528151609940203637047296) (and (not (<=.f64 a 6257774519299541/260740604970814219042361048116400404614587954389239840081425977517360806369707098391474864128)) (<=.f64 a 2300000000000000050869581740277537991052282430488576))) (*.f64 b (neg.f64 b)) (*.f64 a a)))
(*.f64 a a)
Compiler

Compiled 62 to 36 computations (41.9% saved)

soundness413.0ms (19.2%)

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)

end79.0ms (3.7%)

Compiler

Compiled 148 to 68 computations (54.1% saved)

Profiling

Loading profile data...