Details

Time bar (total: 8.9s)

analyze1.3s (14.2%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.8%0.2%0
0%99.8%0.2%1
0%99.8%0.2%2
0%99.8%0.2%3
0%99.8%0.2%4
0%99.8%0.2%5
0%99.8%0.2%6
0%99.8%0.2%7
6.2%93.6%0.2%8
25%74.9%0.2%9
28.1%71.7%0.2%10
29.6%70.2%0.2%11
53%46.8%0.2%12
71.3%28.5%0.2%13
71.7%28.1%0.2%14
Compiler

Compiled 20 to 12 computations (40% saved)

sample1.2s (13.3%)

Results
1.0s8256×body128valid
55.0ms467×body128invalid
Compiler

Compiled 59 to 35 computations (40.7% saved)

simplify67.0ms (0.8%)

Algorithm
egg-herbie
Rules
1070×fma-neg_binary64
881×fma-def_binary64
768×times-frac_binary64
551×cancel-sign-sub-inv_binary64
514×unsub-neg_binary64
Counts
1 → 2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01220
12520
24720
37820
414920
522820
632420
750020
869420
986720
1099920
11242220
12392020
13495020

prune3.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
25.3b
Counts
3 → 1
Alt Table
StatusErrorProgram
25.3b
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d)))
Compiler

Compiled 69 to 33 computations (52.2% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.3b
(-.f64 (*.f64 b c) (*.f64 a d))
24.9b
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d)))

series91.0ms (1%)

Counts
2 → 96
Calls

2 calls:

83.0ms
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d)))
8.0ms
(-.f64 (*.f64 b c) (*.f64 a d))

rewrite79.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
449×fma-def_binary64
239×fma-neg_binary64
227×expm1-udef_binary64
227×log1p-udef_binary64
224×egg-rr
Counts
2 → 224
Calls

2 calls:

73.0ms
(-.f64 (*.f64 b c) (*.f64 a d))
73.0ms
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01130
124429
2332329
3504229
000
100

simplify76.0ms (0.9%)

Algorithm
egg-herbie
Rules
905×fma-neg_binary64
615×fma-def_binary64
483×associate-*l/_binary64
469×cancel-sign-sub-inv_binary64
360×associate-/r/_binary64
Counts
320 → 249
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0471722
11311638
23721599
315581554
446861554
551751554

prune204.0ms (2.3%)

Pruning

9 alts after pruning (8 fresh and 1 done)

PrunedKeptTotal
New2418249
Fresh000
Picked011
Done000
Total2419250
Error
0.8b
Counts
250 → 9
Alt Table
StatusErrorProgram
41.2b
(pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 b c) (*.f64 a d))) (hypot.f64 c d)) 2)
34.2b
(neg.f64 (/.f64 a d))
15.3b
(fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2))))
32.7b
(-.f64 (*.f64 (/.f64 c (*.f64 d d)) (+.f64 b (/.f64 (*.f64 a c) d))) (/.f64 a d))
17.5b
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 b c) (*.f64 a d))) 2) (hypot.f64 c d)) (/.f64 (cbrt.f64 (-.f64 (*.f64 b c) (*.f64 a d))) (hypot.f64 c d)))
17.0b
(*.f64 (/.f64 1 (hypot.f64 c d)) (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (hypot.f64 c d)))
41.0b
(-.f64 (/.f64 b c) (*.f64 (/.f64 d (*.f64 c c)) (+.f64 a (/.f64 (*.f64 d b) c))))
41.6b
(/.f64 b c)
25.3b
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d)))
Compiler

Compiled 6322 to 1602 computations (74.7% saved)

localize11.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(/.f64 c (hypot.f64 c d))
0.0b
(pow.f64 (hypot.f64 c d) 2)
0.3b
(fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2))))
16.8b
(/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2))

series396.0ms (4.4%)

Counts
4 → 132
Calls

4 calls:

234.0ms
(fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2))))
95.0ms
(/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2))
47.0ms
(pow.f64 (hypot.f64 c d) 2)
20.0ms
(/.f64 c (hypot.f64 c d))

rewrite213.0ms (2.4%)

Algorithm
batch-egg-rewrite
Rules
598×prod-diff_binary64
581×egg-rr
254×log1p-udef_binary64
152×add-sqr-sqrt_binary64
142×log1p-expm1-u_binary64
Counts
4 → 581
Calls

4 calls:

185.0ms
(/.f64 c (hypot.f64 c d))
185.0ms
(pow.f64 (hypot.f64 c d) 2)
185.0ms
(fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2))))
185.0ms
(/.f64 (*.f64 a d) (pow.f64 (hypot.f64 c d) 2))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01458
130355
2369255
3529755
000
100

simplify120.0ms (1.3%)

Algorithm
egg-herbie
Rules
632×times-frac_binary64
407×associate-/l*_binary64
291×associate-/r*_binary64
280×cancel-sign-sub-inv_binary64
258×sub-neg_binary64
Counts
713 → 654
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01082980
13192826
210132708
346322681
450152681

prune620.0ms (6.9%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New6504654
Fresh527
Picked101
Done011
Total6567663
Error
0.0b
Counts
663 → 7
Alt Table
StatusErrorProgram
13.1b
(+.f64 (fma.f64 b (*.f64 (/.f64 1 (hypot.f64 c d)) (/.f64 c (hypot.f64 c d))) (neg.f64 (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) (fma.f64 (neg.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2))) a (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a)))
25.3b
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d)))
12.5b
(+.f64 (fma.f64 (*.f64 (/.f64 b (hypot.f64 c d)) c) (/.f64 1 (hypot.f64 c d)) (neg.f64 (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) (fma.f64 (neg.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2))) a (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a)))
41.2b
(pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 b c) (*.f64 a d))) (hypot.f64 c d)) 2)
17.0b
(*.f64 (/.f64 1 (hypot.f64 c d)) (/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (hypot.f64 c d)))
0.6b
(fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d)))))
15.4b
(fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 d (*.f64 a (pow.f64 (hypot.f64 c d) -2)))))
Compiler

Compiled 34068 to 12307 computations (63.9% saved)

localize11.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(/.f64 b (hypot.f64 c d))
0.0b
(/.f64 c (hypot.f64 c d))
0.3b
(fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d)))))
0.4b
(*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d)))

series405.0ms (4.5%)

Counts
3 → 120
Calls

3 calls:

237.0ms
(fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d)))))
92.0ms
(*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d)))
76.0ms
(/.f64 b (hypot.f64 c d))

rewrite251.0ms (2.8%)

Algorithm
batch-egg-rewrite
Rules
691×prod-diff_binary64
650×egg-rr
148×add-sqr-sqrt_binary64
137×log1p-expm1-u_binary64
137×expm1-log1p-u_binary64
Counts
3 → 650
Calls

3 calls:

217.0ms
(/.f64 b (hypot.f64 c d))
217.0ms
(fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d)))))
217.0ms
(*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01357
128948
2384248
3523848
000
100

simplify126.0ms (1.4%)

Algorithm
egg-herbie
Rules
754×fma-neg_binary64
547×times-frac_binary64
474×associate-/l*_binary64
300×associate-/r*_binary64
291×cancel-sign-sub-inv_binary64
Counts
770 → 719
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01163142
13452998
211062880
346382880
452222880

prune802.0ms (9%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New7792781
Fresh145
Picked101
Done011
Total7817788
Error
0b
Counts
788 → 7
Alt Table
StatusErrorProgram
13.1b
(+.f64 (fma.f64 b (*.f64 (/.f64 1 (hypot.f64 c d)) (/.f64 c (hypot.f64 c d))) (neg.f64 (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) (fma.f64 (neg.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2))) a (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a)))
25.3b
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d)))
12.5b
(+.f64 (fma.f64 (*.f64 (/.f64 b (hypot.f64 c d)) c) (/.f64 1 (hypot.f64 c d)) (neg.f64 (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) (fma.f64 (neg.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2))) a (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a)))
41.2b
(pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 b c) (*.f64 a d))) (hypot.f64 c d)) 2)
0.7b
(fma.f64 (/.f64 b (hypot.f64 c d)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d)))) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d)))))
15.4b
(fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 d (*.f64 a (pow.f64 (hypot.f64 c d) -2)))))
9.7b
(fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (/.f64 d (*.f64 (/.f64 (hypot.f64 c d) a) (hypot.f64 c d)))))
Compiler

Compiled 43412 to 11489 computations (73.5% saved)

localize15.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d))))
0.3b
(fma.f64 (/.f64 b (hypot.f64 c d)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d)))) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d)))))
0.4b
(/.f64 c (sqrt.f64 (hypot.f64 c d)))
0.4b
(*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d)))

series277.0ms (3.1%)

Counts
3 → 80
Calls

3 calls:

229.0ms
(fma.f64 (/.f64 b (hypot.f64 c d)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d)))) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d)))))
28.0ms
(/.f64 c (sqrt.f64 (hypot.f64 c d)))
19.0ms
(*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d))))

rewrite303.0ms (3.4%)

Algorithm
batch-egg-rewrite
Rules
794×prod-diff_binary64
698×egg-rr
181×add-sqr-sqrt_binary64
168×log1p-expm1-u_binary64
168×expm1-log1p-u_binary64
Counts
3 → 698
Calls

3 calls:

267.0ms
(*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d))))
267.0ms
(fma.f64 (/.f64 b (hypot.f64 c d)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d)))) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d)))))
267.0ms
(/.f64 c (sqrt.f64 (hypot.f64 c d)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01750
136944
2476544
3640444
000
100

simplify139.0ms (1.6%)

Algorithm
egg-herbie
Rules
484×times-frac_binary64
319×fma-def_binary64
314×associate-*r*_binary64
312×cancel-sign-sub-inv_binary64
289×associate-/l*_binary64
Counts
778 → 762
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01352152
13812054
211811993
346681966
450401966

prune970.0ms (10.9%)

Pruning

7 alts after pruning (5 fresh and 2 done)

PrunedKeptTotal
New8430843
Fresh055
Picked011
Done011
Total8437850
Error
0b
Counts
850 → 7
Alt Table
StatusErrorProgram
13.1b
(+.f64 (fma.f64 b (*.f64 (/.f64 1 (hypot.f64 c d)) (/.f64 c (hypot.f64 c d))) (neg.f64 (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) (fma.f64 (neg.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2))) a (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a)))
25.3b
(/.f64 (-.f64 (*.f64 b c) (*.f64 a d)) (fma.f64 c c (*.f64 d d)))
12.5b
(+.f64 (fma.f64 (*.f64 (/.f64 b (hypot.f64 c d)) c) (/.f64 1 (hypot.f64 c d)) (neg.f64 (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a))) (fma.f64 (neg.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2))) a (*.f64 (*.f64 d (pow.f64 (hypot.f64 c d) -2)) a)))
41.2b
(pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 b c) (*.f64 a d))) (hypot.f64 c d)) 2)
0.7b
(fma.f64 (/.f64 b (hypot.f64 c d)) (*.f64 (/.f64 1 (sqrt.f64 (hypot.f64 c d))) (/.f64 c (sqrt.f64 (hypot.f64 c d)))) (neg.f64 (*.f64 (/.f64 a (hypot.f64 c d)) (/.f64 d (hypot.f64 c d)))))
15.4b
(fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (*.f64 d (*.f64 a (pow.f64 (hypot.f64 c d) -2)))))
9.7b
(fma.f64 (/.f64 b (hypot.f64 c d)) (/.f64 c (hypot.f64 c d)) (neg.f64 (/.f64 d (*.f64 (/.f64 (hypot.f64 c d) a) (hypot.f64 c d)))))
Compiler

Compiled 48911 to 12829 computations (73.8% saved)

regimes1.2s (12.9%)

Accuracy

Total 1.4b remaining (91.7%)

Threshold costs 0b (0%)

Counts
163 → 1
Compiler

Compiled 24568 to 12784 computations (48% saved)

simplify4.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
sub-neg_binary64
neg-sub0_binary64
neg-mul-1_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01639
12738
24238
35538
46438
56938
67038
77038

end125.0ms (1.4%)

Compiler

Compiled 275 to 141 computations (48.7% saved)

Profiling

Loading profile data...