Details

Time bar (total: 9.4s)

analyze758.0ms (8%)

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
18.7%81.1%0.1%6
26.5%67.1%6.4%7
35.1%58.5%6.4%8
41.3%49.9%8.7%9
46.4%40.2%13.4%10
50.8%34.2%15%11
55.2%26.7%18.1%12
57.4%22%20.6%13
59.8%17.9%22.3%14
Compiler

Compiled 42 to 27 computations (35.7% saved)

sample1.8s (19.5%)

Results
1.5s8256×body128valid
201.0ms1090×body128invalid
Compiler

Compiled 125 to 80 computations (36% saved)

simplify153.0ms (1.6%)

Algorithm
egg-herbie
Rules
1753×fma-neg_binary64
1288×fma-def_binary64
631×div-sub_binary64
512×times-frac_binary64
430×associate-/l*_binary64
Counts
1 → 2
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02258
14752
211852
326950
442950
574350
6131550
7173850
8217650
9285350
10406650
11352350
12357550
13354350
14355750
15451050
16462250
17476150

prune4.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
20.8b
Counts
3 → 1
Alt Table
StatusErrorProgram
20.8b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
Compiler

Compiled 149 to 91 computations (38.9% saved)

localize19.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b))
0.8b
(+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))
1.1b
(-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)
23.7b
(sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))
Compiler

Compiled 1536 to 1280 computations (16.7% saved)

series414.0ms (4.4%)

Counts
4 → 80
Calls

4 calls:

264.0ms
(/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b))
56.0ms
(-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)
50.0ms
(+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))
43.0ms
(sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))

rewrite23.0ms (0.2%)

Algorithm
rewrite-expression-head
Rules
36×add-sqr-sqrt_binary64
31×*-un-lft-identity_binary64
23×add-cube-cbrt_binary64
18×prod-diff_binary64
18×sqrt-prod_binary64
Counts
4 → 106
Calls

4 calls:

6.0ms
(/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b))
4.0ms
(-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)
3.0ms
(+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))
1.0ms
(sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))

simplify137.0ms (1.5%)

Algorithm
egg-herbie
Rules
885×fma-neg_binary64
381×cancel-sign-sub-inv_binary64
181×distribute-rgt-neg-in_binary64
159×distribute-rgt-in_binary64
157×distribute-lft-neg-in_binary64
Counts
186 → 234
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02615384
16864516
225464321
345004319
448654319

prune447.0ms (4.7%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New26216278
Fresh000
Picked101
Done000
Total26316279
Error
6.0b
Counts
279 → 16
Alt Table
StatusErrorProgram
25.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (exp.f64 (log.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))))) b)))
34.6b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (cbrt.f64 (/.f64 (*.f64 (*.f64 (*.f64 c 2) (*.f64 c 2)) (*.f64 c 2)) (*.f64 (*.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))))
34.1b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (exp.f64 (log.f64 (/.f64 (*.f64 2 c) (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))))
20.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (*.f64 (fabs.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))) b)))
20.6b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
25.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (exp.f64 (log.f64 (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))))
21.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 1 (/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b) (*.f64 c 2))))
23.3b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (exp.f64 (log.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
20.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (/.f64 c (sqrt.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b))) (/.f64 2 (sqrt.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))))
28.7b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (cbrt.f64 (*.f64 (*.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
31.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (sqrt.f64 (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b))) (sqrt.f64 (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))))
24.1b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (*.f64 (cbrt.f64 (/.f64 (*.f64 2 c) (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b))) (cbrt.f64 (/.f64 (*.f64 2 c) (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))) (cbrt.f64 (/.f64 (*.f64 2 c) (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))))
20.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (*.f64 (fabs.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
23.8b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (*.f64 -1 b) b)))
22.2b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (*.f64 (*.f64 (cbrt.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))))) (cbrt.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))) (cbrt.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
20.8b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (/.f64 c 1) (/.f64 2 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b))))
Compiler

Compiled 14107 to 8299 computations (41.2% saved)

localize19.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(*.f64 -1/2 (/.f64 (+.f64 b b) a))
0.1b
(/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b))
1.1b
(-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)
23.7b
(sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))
Compiler

Compiled 1536 to 1280 computations (16.7% saved)

series6.0ms (0.1%)

Counts
1 → 24
Calls

1 calls:

6.0ms
(*.f64 -1/2 (/.f64 (+.f64 b b) a))

rewrite17.0ms (0.2%)

Algorithm
rewrite-expression-head
Rules
40×associate-*r*_binary64
37×times-frac_binary64
36×*-un-lft-identity_binary64
35×add-sqr-sqrt_binary64
30×add-cube-cbrt_binary64
Counts
1 → 61
Calls

1 calls:

12.0ms
(*.f64 -1/2 (/.f64 (+.f64 b b) a))

simplify68.0ms (0.7%)

Algorithm
egg-herbie
Rules
938×fma-def_binary64
572×associate-/r/_binary64
399×*-commutative_binary64
243×distribute-rgt-in_binary64
242×associate-/l*_binary64
Counts
85 → 80
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0111889
1254771
2684771
32039771
44082771
54938771

prune549.0ms (5.8%)

Pruning

18 alts after pruning (18 fresh and 0 done)

PrunedKeptTotal
New2598267
Fresh51015
Picked101
Done000
Total26518283
Error
6.0b
Counts
283 → 18
Alt Table
StatusErrorProgram
23.7b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (/.f64 (*.f64 c 2) (*.f64 b -2)))
23.3b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (exp.f64 (log.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
28.7b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (cbrt.f64 (*.f64 (*.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
21.1b
(if (>=.f64 b 0) (*.f64 (*.f64 (cbrt.f64 -1/2) (cbrt.f64 -1/2)) (*.f64 (cbrt.f64 -1/2) (/.f64 (+.f64 b b) a))) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
20.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (*.f64 (fabs.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
24.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (/.f64 (*.f64 c 2) (-.f64 (exp.f64 (log.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))))) b)))
34.1b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (exp.f64 (log.f64 (/.f64 (*.f64 2 c) (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))))
20.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (*.f64 (fabs.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))) b)))
29.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (/.f64 (*.f64 c 2) (-.f64 (cbrt.f64 (pow.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) 3)) b)))
28.1b
(if (>=.f64 b 0) (exp.f64 (log.f64 (neg.f64 (/.f64 b a)))) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
25.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (exp.f64 (log.f64 (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))))
21.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 1 (/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b) (*.f64 c 2))))
23.7b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (*.f64 (/.f64 c (sqrt.f64 (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b))) (/.f64 2 (sqrt.f64 (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))))
22.2b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (*.f64 (*.f64 (cbrt.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))))) (cbrt.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))) (cbrt.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
21.0b
(if (>=.f64 b 0) (*.f64 (*.f64 -1/2 (cbrt.f64 b)) (/.f64 (+.f64 (*.f64 (cbrt.f64 b) (cbrt.f64 b)) (*.f64 (cbrt.f64 b) (cbrt.f64 b))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
24.1b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (*.f64 (cbrt.f64 (/.f64 (*.f64 2 c) (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b))) (cbrt.f64 (/.f64 (*.f64 2 c) (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))) (cbrt.f64 (/.f64 (*.f64 2 c) (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))))
33.4b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (*.f64 (sqrt.f64 (/.f64 (*.f64 2 c) (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b))) (sqrt.f64 (/.f64 (*.f64 2 c) (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))))
20.8b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (/.f64 c 1) (/.f64 2 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b))))
Compiler

Compiled 11206 to 6101 computations (45.6% saved)

localize22.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (/.f64 c 1) (/.f64 2 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
0.8b
(+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))
1.1b
(-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)
23.7b
(sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))
Compiler

Compiled 1536 to 1280 computations (16.7% saved)

series266.0ms (2.8%)

Counts
1 → 20
Calls

1 calls:

266.0ms
(*.f64 (/.f64 c 1) (/.f64 2 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))

rewrite22.0ms (0.2%)

Algorithm
rewrite-expression-head
Rules
47×add-sqr-sqrt_binary64
34×times-frac_binary64
26×*-un-lft-identity_binary64
24×associate-*r*_binary64
18×add-cube-cbrt_binary64
Counts
1 → 67
Calls

1 calls:

14.0ms
(*.f64 (/.f64 c 1) (/.f64 2 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))

simplify89.0ms (0.9%)

Algorithm
egg-herbie
Rules
744×fma-def_binary64
480×associate-*l/_binary64
418×associate-/l/_binary64
406×associate-/r*_binary64
360×associate-*r/_binary64
Counts
87 → 125
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01812525
14492281
216442171
345622171
450582171

prune940.0ms (10%)

Pruning

17 alts after pruning (16 fresh and 1 done)

PrunedKeptTotal
New3293332
Fresh41317
Picked011
Done000
Total33317350
Error
6.0b
Counts
350 → 17
Alt Table
StatusErrorProgram
23.7b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (/.f64 (*.f64 c 2) (*.f64 b -2)))
23.3b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (exp.f64 (log.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
28.7b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (cbrt.f64 (*.f64 (*.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
21.1b
(if (>=.f64 b 0) (*.f64 (*.f64 (cbrt.f64 -1/2) (cbrt.f64 -1/2)) (*.f64 (cbrt.f64 -1/2) (/.f64 (+.f64 b b) a))) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
20.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (*.f64 (fabs.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
25.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (/.f64 c 1) (/.f64 2 (-.f64 (exp.f64 (log.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))))) b))))
34.1b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (exp.f64 (log.f64 (/.f64 (*.f64 2 c) (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))))
20.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (*.f64 (fabs.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))) b)))
29.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (/.f64 (*.f64 c 2) (-.f64 (cbrt.f64 (pow.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) 3)) b)))
28.1b
(if (>=.f64 b 0) (exp.f64 (log.f64 (neg.f64 (/.f64 b a)))) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
25.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (exp.f64 (log.f64 (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))))
21.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 1 (/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b) (*.f64 c 2))))
24.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (/.f64 (*.f64 (cbrt.f64 c) (cbrt.f64 c)) 1) (*.f64 (/.f64 2 (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)) (cbrt.f64 c))))
22.2b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (*.f64 (*.f64 (cbrt.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))))) (cbrt.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))) (cbrt.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
21.0b
(if (>=.f64 b 0) (*.f64 (*.f64 -1/2 (cbrt.f64 b)) (/.f64 (+.f64 (*.f64 (cbrt.f64 b) (cbrt.f64 b)) (*.f64 (cbrt.f64 b) (cbrt.f64 b))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
35.1b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (*.f64 (sqrt.f64 c) (sqrt.f64 (/.f64 2 (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))) (*.f64 (sqrt.f64 c) (sqrt.f64 (/.f64 2 (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b))))))
20.8b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (/.f64 c 1) (/.f64 2 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b))))
Compiler

Compiled 17102 to 10345 computations (39.5% saved)

localize24.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.1b
(-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)
7.6b
(+.f64 b (*.f64 (fabs.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))))
23.7b
(sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))
24.5b
(cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))
Compiler

Compiled 1536 to 1280 computations (16.7% saved)

series138.0ms (1.5%)

Counts
2 → 72
Calls

2 calls:

82.0ms
(+.f64 b (*.f64 (fabs.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))))
56.0ms
(cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))

rewrite5.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
*-un-lft-identity_binary64
add-sqr-sqrt_binary64
add-cube-cbrt_binary64
add-log-exp_binary64
fma-def_binary64
Counts
2 → 29
Calls

2 calls:

2.0ms
(+.f64 b (*.f64 (fabs.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))))
2.0ms
(cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))

simplify134.0ms (1.4%)

Algorithm
egg-herbie
Rules
790×fma-def_binary64
395×associate-*r*_binary64
351×times-frac_binary64
277×associate-*l*_binary64
267×associate-/r*_binary64
Counts
101 → 151
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
03736108
112655483
247515483
353315483

prune1.1s (11.6%)

Pruning

18 alts after pruning (16 fresh and 2 done)

PrunedKeptTotal
New3371338
Fresh01515
Picked011
Done011
Total33718355
Error
6.0b
Counts
355 → 18
Alt Table
StatusErrorProgram
35.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (*.f64 (fabs.f64 (pow.f64 (exp.f64 1/3) (+.f64 (log.f64 (*.f64 a -4)) (log.f64 c)))) (sqrt.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
23.7b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (/.f64 (*.f64 c 2) (*.f64 b -2)))
23.3b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (exp.f64 (log.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
28.7b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (cbrt.f64 (*.f64 (*.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
21.1b
(if (>=.f64 b 0) (*.f64 (*.f64 (cbrt.f64 -1/2) (cbrt.f64 -1/2)) (*.f64 (cbrt.f64 -1/2) (/.f64 (+.f64 b b) a))) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
20.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (*.f64 (fabs.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
25.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (/.f64 c 1) (/.f64 2 (-.f64 (exp.f64 (log.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))))) b))))
34.1b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (exp.f64 (log.f64 (/.f64 (*.f64 2 c) (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))))
20.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (*.f64 (fabs.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (cbrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))) b)))
29.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (/.f64 (*.f64 c 2) (-.f64 (cbrt.f64 (pow.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) 3)) b)))
28.1b
(if (>=.f64 b 0) (exp.f64 (log.f64 (neg.f64 (/.f64 b a)))) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
25.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (exp.f64 (log.f64 (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))))
21.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 1 (/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b) (*.f64 c 2))))
24.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (/.f64 (*.f64 (cbrt.f64 c) (cbrt.f64 c)) 1) (*.f64 (/.f64 2 (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)) (cbrt.f64 c))))
22.2b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (*.f64 (*.f64 (cbrt.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))))) (cbrt.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))) (cbrt.f64 (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
21.0b
(if (>=.f64 b 0) (*.f64 (*.f64 -1/2 (cbrt.f64 b)) (/.f64 (+.f64 (*.f64 (cbrt.f64 b) (cbrt.f64 b)) (*.f64 (cbrt.f64 b) (cbrt.f64 b))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
35.1b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (*.f64 (sqrt.f64 c) (sqrt.f64 (/.f64 2 (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b)))) (*.f64 (sqrt.f64 c) (sqrt.f64 (/.f64 2 (-.f64 (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4)))) b))))))
20.8b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (*.f64 (/.f64 c 1) (/.f64 2 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b))))
Compiler

Compiled 23858 to 14755 computations (38.2% saved)

regimes1.8s (18.6%)

Accuracy

Total 1.1b remaining (15.4%)

Threshold costs 0b (0%)

Counts
141 → 5
Compiler

Compiled 23258 to 15234 computations (34.5% saved)

bsearch8.0ms (0.1%)

Compiler

Compiled 41 to 26 computations (36.6% saved)

simplify17.0ms (0.2%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
042446
158434
281434
398434
4109434
5114434
6115434
7114434

end455.0ms (4.8%)

Compiler

Compiled 1337 to 845 computations (36.8% saved)

Profiling

Loading profile data...