Details

Time bar (total: 16.3s)

analyze583.0ms (3.6%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
0%99.9%0.1%5
12.5%68.6%18.9%6
18.7%62.4%18.9%7
18.7%59.3%22%8
28.1%39%32.9%9
32.8%34.3%32.9%10
32.8%32%35.3%11
38.2%20.7%41.1%12
41%17.9%41.1%13
41%16.6%42.5%14
Compiler

Compiled 41 to 24 computations (41.5% saved)

sample2.9s (18%)

Results
2.6s7824×body256valid
204.0ms1293×body128invalid
75.0ms432×body128valid
Compiler

Compiled 122 to 71 computations (41.8% saved)

simplify195.0ms (1.2%)

Algorithm
egg-herbie
Rules
729×fma-neg_binary64
636×times-frac_binary64
620×div-sub_binary64
565×unsub-neg_binary64
481×sub-neg_binary64
Counts
1 → 2
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02052
15450
214450
340648
482648
5152348
6191148
7263248
8258948
9297148
10362548
11419348
12437548
13448548
14453348
15455748
16460748
17488248
18484848

prune5.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
35.4b
Counts
3 → 2
Alt Table
StatusErrorProgram
35.4b
(+.f64 (cbrt.f64 (/.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 (+.f64 g (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) a) -1/2)))
35.4b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
Compiler

Compiled 219 to 116 computations (47% saved)

localize19.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
3.8b
(-.f64 (*.f64 g g) (*.f64 h h))
7.5b
(cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))
10.3b
(cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))
29.0b
(sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))

series1.5s (9.2%)

Counts
4 → 120
Calls

4 calls:

752.0ms
(cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))
725.0ms
(cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))
15.0ms
(sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))
7.0ms
(-.f64 (*.f64 g g) (*.f64 h h))

rewrite30.0ms (0.2%)

Algorithm
rewrite-expression-head
Rules
10×cbrt-div_binary64
add-sqr-sqrt_binary64
add-log-exp_binary64
*-un-lft-identity_binary64
add-cube-cbrt_binary64
Counts
4 → 67
Calls

4 calls:

11.0ms
(cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))
9.0ms
(cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))
5.0ms
(sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))
3.0ms
(-.f64 (*.f64 g g) (*.f64 h h))

simplify120.0ms (0.7%)

Algorithm
egg-herbie
Rules
554×times-frac_binary64
313×associate-*l*_binary64
313×fma-def_binary64
303×associate-/r*_binary64
280×associate-/l*_binary64
Counts
187 → 252
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
05277243
115496993
251426993

prune962.0ms (5.9%)

Pruning

26 alts after pruning (26 fresh and 0 done)

PrunedKeptTotal
New31625341
Fresh011
Picked101
Done000
Total31726343
Error
30.6b
Counts
343 → 26
Alt Table
StatusErrorProgram
33.9b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (/.f64 (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) (cbrt.f64 (*.f64 2 a))))
35.5b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (*.f64 (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (/.f64 1/2 a) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))) (cbrt.f64 (cbrt.f64 (*.f64 (/.f64 1/2 a) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))) (cbrt.f64 (cbrt.f64 (*.f64 (/.f64 1/2 a) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))))
45.5b
(+.f64 (/.f64 (cbrt.f64 (*.f64 1 (+.f64 (pow.f64 (neg.f64 g) 3) (pow.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) 3)))) (cbrt.f64 (*.f64 (*.f64 2 a) (+.f64 (*.f64 (neg.f64 g) (neg.f64 g)) (-.f64 (*.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (*.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
47.7b
(+.f64 (*.f64 (cbrt.f64 -1/2) (exp.f64 (*.f64 1/3 (+.f64 (log.f64 (-.f64 (sqrt.f64 (-.f64 (pow.f64 g 2) (pow.f64 h 2))) g)) (log.f64 (/.f64 -1 a)))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
35.6b
(+.f64 (*.f64 (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (/.f64 1/2 a)))) (cbrt.f64 (cbrt.f64 (*.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (/.f64 1/2 a))))) (cbrt.f64 (cbrt.f64 (*.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (/.f64 1/2 a))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
48.1b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (*.f64 (cbrt.f64 -1/2) (cbrt.f64 (*.f64 (/.f64 2 a) g))))
40.8b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (*.f64 (*.f64 (cbrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) (cbrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (cbrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))))
35.4b
(+.f64 (cbrt.f64 (/.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 (+.f64 g (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) a) -1/2)))
44.8b
(+.f64 (pow.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) 1/3) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
48.9b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (*.f64 (cbrt.f64 1/2) (exp.f64 (*.f64 1/3 (+.f64 (log.f64 (+.f64 (sqrt.f64 (-.f64 (pow.f64 g 2) (pow.f64 h 2))) g)) (log.f64 (/.f64 -1 a)))))))
33.9b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
44.3b
(+.f64 (*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (/.f64 1/2 a)))) (sqrt.f64 (cbrt.f64 (*.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (/.f64 1/2 a))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
32.9b
(+.f64 (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
44.4b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (/.f64 (cbrt.f64 (-.f64 (pow.f64 (neg.f64 g) 3) (pow.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) 3))) (cbrt.f64 (*.f64 (*.f64 2 a) (fma.f64 g g (fma.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) (-.f64 (*.f64 g g) (*.f64 h h))))))))
38.1b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (*.f64 (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
39.3b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (*.f64 (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))))
56.4b
(+.f64 (*.f64 (exp.f64 (*.f64 1/3 (-.f64 (log.f64 (/.f64 2 a)) (log.f64 (/.f64 -1 g))))) (cbrt.f64 1/2)) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
45.5b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (pow.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) 3) (pow.f64 g 3))) (cbrt.f64 (*.f64 (*.f64 2 a) (fma.f64 g g (fma.f64 (+.f64 h g) (-.f64 g h) (*.f64 g (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
54.1b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (*.f64 (sqrt.f64 (+.f64 g h)) (sqrt.f64 (-.f64 g h)))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
50.2b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (*.f64 (cbrt.f64 1/2) (exp.f64 (*.f64 1/3 (+.f64 (log.f64 (/.f64 -1 g)) (log.f64 (*.f64 1/2 (/.f64 (pow.f64 h 2) a))))))))
57.7b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (*.f64 (cbrt.f64 -1/2) (pow.f64 (exp.f64 1/3) (+.f64 (log.f64 (/.f64 2 a)) (log.f64 g)))))
47.6b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (/.f64 (sqrt.f64 (-.f64 (pow.f64 g 4) (pow.f64 h 4))) (hypot.f64 h g))))))
60.0b
(+.f64 (*.f64 (cbrt.f64 1/2) (exp.f64 (*.f64 1/3 (fma.f64 2 (log.f64 h) (log.f64 (/.f64 -1/2 (*.f64 g a))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
44.5b
(+.f64 (/.f64 (cbrt.f64 (*.f64 (/.f64 1/2 a) (-.f64 (pow.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) 3) (pow.f64 g 3)))) (cbrt.f64 (fma.f64 g g (fma.f64 (+.f64 h g) (-.f64 g h) (*.f64 g (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
32.8b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
42.4b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (exp.f64 (log.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
Compiler

Compiled 20780 to 11062 computations (46.8% saved)

localize19.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.5b
(-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))
3.8b
(-.f64 (*.f64 g g) (*.f64 h h))
7.5b
(cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))
29.0b
(sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))

series17.0ms (0.1%)

Counts
1 → 24
Calls

1 calls:

17.0ms
(-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))

rewrite34.0ms (0.2%)

Algorithm
rewrite-expression-head
Rules
70×prod-diff_binary64
51×*-un-lft-identity_binary64
51×add-sqr-sqrt_binary64
47×add-cube-cbrt_binary64
45×sqrt-prod_binary64
Counts
1 → 106
Calls

1 calls:

9.0ms
(-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))

simplify125.0ms (0.8%)

Algorithm
egg-herbie
Rules
921×times-frac_binary64
769×fma-neg_binary64
618×fma-def_binary64
186×cancel-sign-sub-inv_binary64
121×sub-neg_binary64
Counts
130 → 152
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02105855
14863730
214642640
343792640
448772640

prune2.4s (14.8%)

Pruning

28 alts after pruning (28 fresh and 0 done)

PrunedKeptTotal
New39120411
Fresh17825
Picked101
Done000
Total40928437
Error
29.8b
Counts
437 → 28
Alt Table
StatusErrorProgram
38.2b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (*.f64 (*.f64 (cbrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (cbrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) (cbrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
45.5b
(+.f64 (/.f64 (cbrt.f64 (*.f64 1 (+.f64 (pow.f64 (neg.f64 g) 3) (pow.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) 3)))) (cbrt.f64 (*.f64 (*.f64 2 a) (+.f64 (*.f64 (neg.f64 g) (neg.f64 g)) (-.f64 (*.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (*.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
31.4b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (/.f64 (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) (cbrt.f64 (*.f64 2 a))))
47.4b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (fma.f64 (/.f64 (pow.f64 h 4) (pow.f64 g 3)) -1/8 (*.f64 (/.f64 (*.f64 h h) g) -1/2)))))
46.4b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (/.f64 (sqrt.f64 (-.f64 (pow.f64 g 4) (pow.f64 h 4))) (hypot.f64 h g))))))
47.2b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 -1/2) (cbrt.f64 (*.f64 (/.f64 2 a) g))))
32.8b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (*.f64 (*.f64 (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))))
35.4b
(+.f64 (cbrt.f64 (/.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 (+.f64 g (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) a) -1/2)))
44.1b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (*.f64 -1/2 (/.f64 (pow.f64 h 2) g)))))
42.9b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (/.f64 (cbrt.f64 (-.f64 (pow.f64 (neg.f64 g) 3) (pow.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) 3))) (cbrt.f64 (*.f64 (*.f64 2 a) (fma.f64 g g (fma.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) (-.f64 (*.f64 g g) (*.f64 h h))))))))
60.0b
(+.f64 (*.f64 (cbrt.f64 1/2) (exp.f64 (*.f64 1/3 (fma.f64 2 (log.f64 h) (log.f64 (/.f64 -1/2 (*.f64 g a))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
32.9b
(+.f64 (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
38.1b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (*.f64 (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
54.1b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (*.f64 (sqrt.f64 (+.f64 h g)) (sqrt.f64 (-.f64 g h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
32.9b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (/.f64 1/2 a) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))) (cbrt.f64 (cbrt.f64 (*.f64 (/.f64 1/2 a) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))) (cbrt.f64 (cbrt.f64 (*.f64 (/.f64 1/2 a) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))))
36.9b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (expm1.f64 (log1p.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
53.5b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (fma.f64 (*.f64 (cbrt.f64 g) (cbrt.f64 g)) (neg.f64 (cbrt.f64 g)) (neg.f64 (hypot.f64 (sqrt.f64 (neg.f64 (*.f64 h h))) g))))))
37.1b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (*.f64 (*.f64 (cbrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) (cbrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (cbrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
37.4b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (*.f64 (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))))
59.3b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (fma.f64 (sqrt.f64 (neg.f64 g)) (sqrt.f64 (neg.f64 g)) (neg.f64 (hypot.f64 (sqrt.f64 (neg.f64 (*.f64 h h))) g))))))
41.7b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (neg.f64 g) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
46.4b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (/.f64 (cbrt.f64 (-.f64 (*.f64 g g) (-.f64 (*.f64 g g) (*.f64 h h)))) (cbrt.f64 (*.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (*.f64 2 a)))))
35.5b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (*.f64 (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
50.2b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (*.f64 (cbrt.f64 1/2) (exp.f64 (*.f64 1/3 (+.f64 (log.f64 (/.f64 -1 g)) (log.f64 (*.f64 1/2 (/.f64 (pow.f64 h 2) a))))))))
57.8b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 -1/2) (pow.f64 (exp.f64 1/3) (+.f64 (log.f64 (/.f64 2 a)) (log.f64 g)))))
31.4b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
44.3b
(+.f64 (*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (/.f64 1/2 a)))) (sqrt.f64 (cbrt.f64 (*.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (/.f64 1/2 a))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
45.5b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (pow.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) 3) (pow.f64 g 3))) (cbrt.f64 (*.f64 (*.f64 2 a) (fma.f64 g g (fma.f64 (+.f64 h g) (-.f64 g h) (*.f64 g (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
Compiler

Compiled 23974 to 10294 computations (57.1% saved)

localize21.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.3b
(-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)
1.5b
(-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))
3.8b
(-.f64 (*.f64 g g) (*.f64 h h))
29.0b
(sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))

series18.0ms (0.1%)

Counts
1 → 24
Calls

1 calls:

18.0ms
(-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)

rewrite12.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
21×add-sqr-sqrt_binary64
21×prod-diff_binary64
19×*-un-lft-identity_binary64
17×sqrt-prod_binary64
17×add-cube-cbrt_binary64
Counts
1 → 47
Calls

1 calls:

9.0ms
(-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)

simplify124.0ms (0.8%)

Algorithm
egg-herbie
Rules
689×fma-def_binary64
458×associate-/l*_binary64
427×associate-/r*_binary64
424×fma-neg_binary64
237×cancel-sign-sub-inv_binary64
Counts
71 → 95
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01582090
13711451
212811337
344951337
449291337
549901337
650001337
748661337

prune2.3s (13.9%)

Pruning

28 alts after pruning (28 fresh and 0 done)

PrunedKeptTotal
New41213425
Fresh121527
Picked101
Done000
Total42528453
Error
29.6b
Counts
453 → 28
Alt Table
StatusErrorProgram
45.5b
(+.f64 (/.f64 (cbrt.f64 (*.f64 1 (+.f64 (pow.f64 (neg.f64 g) 3) (pow.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) 3)))) (cbrt.f64 (*.f64 (*.f64 2 a) (+.f64 (*.f64 (neg.f64 g) (neg.f64 g)) (-.f64 (*.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (*.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
35.8b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (*.f64 (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))))
35.7b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (cbrt.f64 (*.f64 (*.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))))
44.0b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (*.f64 (/.f64 (*.f64 h h) g) -1/2))))
50.2b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (*.f64 (cbrt.f64 1/2) (exp.f64 (*.f64 1/3 (+.f64 (log.f64 (/.f64 -1 g)) (log.f64 (*.f64 1/2 (/.f64 (pow.f64 h 2) a))))))))
31.4b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (*.f64 (+.f64 h g) (-.f64 g h)))))))
46.4b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (/.f64 (sqrt.f64 (-.f64 (pow.f64 g 4) (pow.f64 h 4))) (hypot.f64 h g))))))
47.2b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 -1/2) (cbrt.f64 (*.f64 (/.f64 2 a) g))))
31.4b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (/.f64 (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) (cbrt.f64 (*.f64 2 a))))
32.8b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (*.f64 (*.f64 (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))))
35.4b
(+.f64 (cbrt.f64 (/.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 (+.f64 g (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) a) -1/2)))
53.4b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (fma.f64 (neg.f64 (*.f64 (cbrt.f64 g) (cbrt.f64 g))) (cbrt.f64 g) (neg.f64 (hypot.f64 (sqrt.f64 (neg.f64 (*.f64 h h))) g))))))
44.3b
(+.f64 (*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (/.f64 1/2 a)))) (sqrt.f64 (cbrt.f64 (*.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (/.f64 1/2 a))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
42.9b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (/.f64 (cbrt.f64 (-.f64 (pow.f64 (neg.f64 g) 3) (pow.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) 3))) (cbrt.f64 (*.f64 (*.f64 2 a) (fma.f64 g g (fma.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) (-.f64 (*.f64 g g) (*.f64 h h))))))))
57.1b
(+.f64 (/.f64 (cbrt.f64 (fma.f64 (sqrt.f64 (+.f64 g h)) (sqrt.f64 (-.f64 g h)) (neg.f64 g))) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
32.9b
(+.f64 (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
38.1b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (*.f64 (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
36.0b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (expm1.f64 (log1p.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
59.3b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (fma.f64 (sqrt.f64 (neg.f64 g)) (sqrt.f64 (neg.f64 g)) (neg.f64 (hypot.f64 (sqrt.f64 (neg.f64 (*.f64 h h))) g))))))
31.4b
(+.f64 (/.f64 (cbrt.f64 (+.f64 (fma.f64 (*.f64 (cbrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (cbrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) (cbrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (neg.f64 (*.f64 (cbrt.f64 g) (*.f64 (cbrt.f64 g) (cbrt.f64 g))))) (fma.f64 (neg.f64 (cbrt.f64 g)) (*.f64 (cbrt.f64 g) (cbrt.f64 g)) (*.f64 (cbrt.f64 g) (*.f64 (cbrt.f64 g) (cbrt.f64 g)))))) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
48.4b
(+.f64 (/.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 (pow.f64 h 2) g))) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
41.7b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (neg.f64 g) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
47.3b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (fma.f64 (/.f64 (pow.f64 h 4) (pow.f64 g 3)) -1/8 (*.f64 (/.f64 (*.f64 h h) g) -1/2)))))
57.3b
(+.f64 (/.f64 (cbrt.f64 (+.f64 (fma.f64 (sqrt.f64 (+.f64 g h)) (sqrt.f64 (-.f64 g h)) (neg.f64 (*.f64 (cbrt.f64 g) (*.f64 (cbrt.f64 g) (cbrt.f64 g))))) (fma.f64 (neg.f64 (cbrt.f64 g)) (*.f64 (cbrt.f64 g) (cbrt.f64 g)) (*.f64 (cbrt.f64 g) (*.f64 (cbrt.f64 g) (cbrt.f64 g)))))) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
36.0b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (*.f64 (*.f64 (cbrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) (cbrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (cbrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
45.5b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (pow.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) 3) (pow.f64 g 3))) (cbrt.f64 (*.f64 (*.f64 2 a) (fma.f64 g g (fma.f64 (+.f64 h g) (-.f64 g h) (*.f64 g (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
34.2b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (*.f64 (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
54.1b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (*.f64 (sqrt.f64 (+.f64 h g)) (sqrt.f64 (-.f64 g h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
Compiler

Compiled 23180 to 8790 computations (62.1% saved)

localize24.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.5b
(-.f64 (neg.f64 g) (sqrt.f64 (*.f64 (+.f64 h g) (-.f64 g h))))
3.8b
(-.f64 (*.f64 g g) (*.f64 h h))
29.0b
(sqrt.f64 (*.f64 (+.f64 h g) (-.f64 g h)))
29.0b
(sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))

series35.0ms (0.2%)

Counts
2 → 48
Calls

2 calls:

18.0ms
(sqrt.f64 (*.f64 (+.f64 h g) (-.f64 g h)))
17.0ms
(-.f64 (neg.f64 g) (sqrt.f64 (*.f64 (+.f64 h g) (-.f64 g h))))

rewrite22.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
40×prod-diff_binary64
32×*-un-lft-identity_binary64
30×add-sqr-sqrt_binary64
28×add-cube-cbrt_binary64
16×distribute-rgt-neg-in_binary64
Counts
2 → 93
Calls

2 calls:

8.0ms
(sqrt.f64 (*.f64 (+.f64 h g) (-.f64 g h)))
5.0ms
(-.f64 (neg.f64 g) (sqrt.f64 (*.f64 (+.f64 h g) (-.f64 g h))))

simplify124.0ms (0.8%)

Algorithm
egg-herbie
Rules
658×distribute-rgt-in_binary64
343×fma-neg_binary64
289×cancel-sign-sub-inv_binary64
171×sub-neg_binary64
147×fma-def_binary64
Counts
141 → 201
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02624850
16473583
221832932
349252932
448932932

prune1.6s (9.5%)

Pruning

28 alts after pruning (28 fresh and 0 done)

PrunedKeptTotal
New2873290
Fresh22527
Picked101
Done000
Total29028318
Error
29.6b
Counts
318 → 28
Alt Table
StatusErrorProgram
45.5b
(+.f64 (/.f64 (cbrt.f64 (*.f64 1 (+.f64 (pow.f64 (neg.f64 g) 3) (pow.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) 3)))) (cbrt.f64 (*.f64 (*.f64 2 a) (+.f64 (*.f64 (neg.f64 g) (neg.f64 g)) (-.f64 (*.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (*.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
35.8b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (*.f64 (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))))
53.7b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (exp.f64 (log.f64 (hypot.f64 g (sqrt.f64 (neg.f64 (*.f64 h h))))))))))
35.7b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (cbrt.f64 (*.f64 (*.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))))
44.0b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (*.f64 (/.f64 (*.f64 h h) g) -1/2))))
46.4b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (/.f64 (sqrt.f64 (-.f64 (pow.f64 g 4) (pow.f64 h 4))) (hypot.f64 h g))))))
47.2b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 -1/2) (cbrt.f64 (*.f64 (/.f64 2 a) g))))
31.4b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (/.f64 (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) (cbrt.f64 (*.f64 2 a))))
32.8b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (*.f64 (*.f64 (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))))
35.4b
(+.f64 (cbrt.f64 (/.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 (+.f64 g (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) a) -1/2)))
53.4b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (fma.f64 (neg.f64 (*.f64 (cbrt.f64 g) (cbrt.f64 g))) (cbrt.f64 g) (neg.f64 (hypot.f64 (sqrt.f64 (neg.f64 (*.f64 h h))) g))))))
44.3b
(+.f64 (*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (/.f64 1/2 a)))) (sqrt.f64 (cbrt.f64 (*.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g) (/.f64 1/2 a))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
42.9b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (/.f64 (cbrt.f64 (-.f64 (pow.f64 (neg.f64 g) 3) (pow.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) 3))) (cbrt.f64 (*.f64 (*.f64 2 a) (fma.f64 g g (fma.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) (-.f64 (*.f64 g g) (*.f64 h h))))))))
57.1b
(+.f64 (/.f64 (cbrt.f64 (fma.f64 (sqrt.f64 (+.f64 g h)) (sqrt.f64 (-.f64 g h)) (neg.f64 g))) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
32.9b
(+.f64 (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
38.1b
(+.f64 (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (+.f64 (neg.f64 g) (*.f64 (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
36.0b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (expm1.f64 (log1p.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
48.4b
(+.f64 (/.f64 (cbrt.f64 (*.f64 -1/2 (/.f64 (pow.f64 h 2) g))) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
31.4b
(+.f64 (/.f64 (cbrt.f64 (+.f64 (fma.f64 (*.f64 (cbrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (cbrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) (cbrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (neg.f64 (*.f64 (cbrt.f64 g) (*.f64 (cbrt.f64 g) (cbrt.f64 g))))) (fma.f64 (neg.f64 (cbrt.f64 g)) (*.f64 (cbrt.f64 g) (cbrt.f64 g)) (*.f64 (cbrt.f64 g) (*.f64 (cbrt.f64 g) (cbrt.f64 g)))))) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
41.7b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (neg.f64 g) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
31.3b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (*.f64 (+.f64 h g) (-.f64 g h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (*.f64 (+.f64 h g) (-.f64 g h)))))))
47.3b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (fma.f64 (/.f64 (pow.f64 h 4) (pow.f64 g 3)) -1/8 (*.f64 (/.f64 (*.f64 h h) g) -1/2)))))
57.3b
(+.f64 (/.f64 (cbrt.f64 (+.f64 (fma.f64 (sqrt.f64 (+.f64 g h)) (sqrt.f64 (-.f64 g h)) (neg.f64 (*.f64 (cbrt.f64 g) (*.f64 (cbrt.f64 g) (cbrt.f64 g))))) (fma.f64 (neg.f64 (cbrt.f64 g)) (*.f64 (cbrt.f64 g) (cbrt.f64 g)) (*.f64 (cbrt.f64 g) (*.f64 (cbrt.f64 g) (cbrt.f64 g)))))) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
36.0b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (*.f64 (*.f64 (cbrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) (cbrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (cbrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
45.5b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (pow.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) 3) (pow.f64 g 3))) (cbrt.f64 (*.f64 (*.f64 2 a) (fma.f64 g g (fma.f64 (+.f64 h g) (-.f64 g h) (*.f64 g (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))))))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
34.2b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (*.f64 (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))) (sqrt.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
52.5b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h))) g)) (cbrt.f64 (*.f64 2 a))) (*.f64 (cbrt.f64 (/.f64 1/2 a)) (cbrt.f64 (-.f64 (neg.f64 g) (*.f64 (*.f64 (cbrt.f64 (hypot.f64 g (sqrt.f64 (neg.f64 (*.f64 h h))))) (cbrt.f64 (hypot.f64 g (sqrt.f64 (neg.f64 (*.f64 h h)))))) (cbrt.f64 (hypot.f64 g (sqrt.f64 (neg.f64 (*.f64 h h))))))))))
54.1b
(+.f64 (/.f64 (cbrt.f64 (-.f64 (*.f64 (sqrt.f64 (+.f64 h g)) (sqrt.f64 (-.f64 g h))) g)) (cbrt.f64 (*.f64 2 a))) (cbrt.f64 (*.f64 (/.f64 1 (*.f64 2 a)) (-.f64 (neg.f64 g) (sqrt.f64 (-.f64 (*.f64 g g) (*.f64 h h)))))))
Compiler

Compiled 15249 to 6005 computations (60.6% saved)

regimes2.6s (15.8%)

Accuracy

Total 1.9b remaining (5.7%)

Threshold costs 0b (0%)

Counts
215 → 1
Compiler

Compiled 80152 to 46842 computations (41.6% saved)

simplify5.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02254
13654
24754
35654
46054
56154
66154

end566.0ms (3.5%)

Compiler

Compiled 1422 to 757 computations (46.8% saved)

Profiling

Loading profile data...