Difference of squares

Details

Time bar (total: 1.9s)

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 (45%)

Results
447.0ms4706×body256valid
371.0ms3550×body256infinite
Bogosity

preprocess163.0ms (8.8%)

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)

simplify158.0ms (8.5%)

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
95.7%
Counts
3 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
95.7%
(fma.f64 a a (*.f64 b (neg.f64 b)))
91.4%
(-.f64 (*.f64 a a) (*.f64 b b))
Compiler

Compiled 18 to 10 computations (44.4% saved)

localize25.0ms (1.3%)

Local Accuracy

Found 1 expressions with local accuracy:

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

rewrite62.0ms (3.4%)

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

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

localize23.0ms (1.3%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
95.7%
(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)))

rewrite58.0ms (3.1%)

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

eval20.0ms (1.1%)

Compiler

Compiled 1560 to 562 computations (64% saved)

prune13.0ms (0.7%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New1023105
Fresh000
Picked101
Done101
Total1043107
Accurracy
100.0%
Counts
107 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 (-.f64 a b) (+.f64 a b))
57.4%
(*.f64 b (neg.f64 b))
50.7%
(*.f64 a a)
Compiler

Compiled 20 to 12 computations (40% saved)

localize14.0ms (0.7%)

Compiler

Compiled 7 to 4 computations (42.9% saved)

localize18.0ms (1%)

Compiler

Compiled 10 to 5 computations (50% saved)

localize21.0ms (1.1%)

Compiler

Compiled 18 to 6 computations (66.7% 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
100.0%
(*.f64 (-.f64 a b) (+.f64 a b))
57.4%
(*.f64 b (neg.f64 b))
50.7%
(*.f64 a a)
Compiler

Compiled 50 to 23 computations (54% saved)

regimes30.0ms (1.6%)

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

5 calls:

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

Compiled 55 to 26 computations (52.7% saved)

regimes31.0ms (1.7%)

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

3 calls:

13.0ms
b
13.0ms
a
4.0ms
(*.f64 a a)
Results
AccuracySegmentsBranch
83.5%5a
83.1%5b
81.2%2(*.f64 a a)
Compiler

Compiled 20 to 12 computations (40% saved)

regimes7.0ms (0.4%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 a a)
Outputs
(*.f64 a a)
Calls

3 calls:

2.0ms
b
2.0ms
a
2.0ms
(*.f64 a a)
Results
AccuracySegmentsBranch
50.7%1b
50.7%1a
50.7%1(*.f64 a a)
Compiler

Compiled 16 to 10 computations (37.5% saved)

bsearch11.0ms (0.6%)

Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
11.0ms
4.7457404502200954e+23
1.563611794171972e+27
Results
6.0ms82×body256valid
3.0ms46×body256infinite
Compiler

Compiled 102 to 73 computations (28.4% saved)

simplify5.0ms (0.3%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01759
12759
23259
33559
43659
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 (-.f64 a b) (+.f64 a b))
(if (<=.f64 (*.f64 a a) 289999999999999998355832832) (*.f64 b (neg.f64 b)) (*.f64 a a))
(*.f64 a a)
Outputs
(*.f64 (-.f64 a b) (+.f64 a b))
(if (<=.f64 (*.f64 a a) 289999999999999998355832832) (*.f64 b (neg.f64 b)) (*.f64 a a))
(*.f64 a a)
Compiler

Compiled 29 to 16 computations (44.8% saved)

soundness212.0ms (11.4%)

Rules
1818×fma-def
1818×fma-def
1680×pow1
1560×add-exp-log
1560×log1p-expm1-u
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
116019
2224719
01282078
13461964
215261810
01282078
13461964
215261810
Stop Event
node limit
node limit
node limit
Compiler

Compiled 51 to 26 computations (49% saved)

end36.0ms (1.9%)

Compiler

Compiled 86 to 42 computations (51.2% saved)

Profiling

Loading profile data...