Details

Time bar (total: 11.1s)

analyze1.5s (13.2%)

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
0%99.9%0.1%6
6.2%93.6%0.1%7
9.4%90.5%0.1%8
14%85.8%0.1%9
19.5%80.4%0.1%10
20.7%79.2%0.1%11
22%77.8%0.1%12
23.5%76.4%0.1%13
23.8%76%0.1%14
Compiler

Compiled 13 to 9 computations (30.8% saved)

sample4.2s (37.7%)

Alt Table
StatusErrorProgram
15.2b
(/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b)))
Results
2.5s3548×body1024valid
783.0ms1445×body512valid
398.0ms2479×body128valid
245.0ms176×body2048valid
187.0ms608×body256valid
0.0msbody512invalid
Compiler

Compiled 62 to 42 computations (32.3% saved)

localize7.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 r (sin.f64 b))
0.2b
(/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b)))
2.6b
(cos.f64 (+.f64 a b))

series56.0ms (0.5%)

Counts
3 → 68
Calls

3 calls:

44.0ms
(/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b)))
7.0ms
(*.f64 r (sin.f64 b))
4.0ms
(cos.f64 (+.f64 a b))

rewrite100.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
701×prod-diff_binary64
211×fma-def_binary64
196×expm1-udef_binary64
196×log1p-udef_binary64
126×egg-rr
Counts
3 → 126
Calls

3 calls:

96.0ms
(*.f64 r (sin.f64 b))
96.0ms
(/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b)))
96.0ms
(cos.f64 (+.f64 a b))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0926
120026
2279926
3479226
4500926
000
100

prune317.0ms (2.9%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New17816194
Fresh000
Picked101
Done000
Total17916195
Error
0.1b
Counts
195 → 16
Alt Table
StatusErrorProgram
15.3b
(*.f64 r (/.f64 1 (/.f64 (cos.f64 (+.f64 a b)) (sin.f64 b))))
22.3b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (sqrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (sqrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))))
28.0b
(+.f64 (/.f64 (*.f64 (sin.f64 b) r) (cos.f64 b)) (/.f64 (*.f64 (pow.f64 (sin.f64 b) 2) (*.f64 a r)) (pow.f64 (cos.f64 b) 2)))
31.8b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b)))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))) (fma.f64 (neg.f64 (sqrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b))) (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))))
15.3b
(pow.f64 (/.f64 (cos.f64 (+.f64 a b)) (*.f64 r (sin.f64 b))) -1)
36.5b
(*.f64 (sqrt.f64 (*.f64 r (sin.f64 b))) (*.f64 (sqrt.f64 (*.f64 r (sin.f64 b))) (/.f64 1 (cos.f64 (+.f64 a b)))))
0.9b
(/.f64 (*.f64 r (sin.f64 b)) (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b)))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
0.5b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))))
15.3b
(*.f64 (/.f64 r (cos.f64 (+.f64 a b))) (sin.f64 b))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))))
0.5b
(/.f64 (*.f64 r (sin.f64 b)) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 3)) (fma.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b)) (fma.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))))))
15.9b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 r (sin.f64 b))) 2) (*.f64 (cbrt.f64 (*.f64 r (sin.f64 b))) (/.f64 1 (cos.f64 (+.f64 a b)))))
15.9b
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 r (sin.f64 b))) 2) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 2)) (cbrt.f64 (/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b)))))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))))
0.5b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))))
Compiler

Compiled 5039 to 1430 computations (71.6% saved)

localize13.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))
0.1b
(*.f64 r (sin.f64 b))
0.2b
(*.f64 (sin.f64 b) (sin.f64 a))
0.2b
(/.f64 (*.f64 r (sin.f64 b)) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))

series136.0ms (1.2%)

Counts
4 → 88
Calls

4 calls:

105.0ms
(/.f64 (*.f64 r (sin.f64 b)) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
15.0ms
(-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))
9.0ms
(*.f64 (sin.f64 b) (sin.f64 a))
7.0ms
(*.f64 r (sin.f64 b))

rewrite85.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
317×fma-neg_binary64
277×expm1-udef_binary64
277×log1p-udef_binary64
155×egg-rr
154×add-sqr-sqrt_binary64
Counts
4 → 155
Calls

4 calls:

81.0ms
(-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))
81.0ms
(*.f64 r (sin.f64 b))
81.0ms
(*.f64 (sin.f64 b) (sin.f64 a))
81.0ms
(/.f64 (*.f64 r (sin.f64 b)) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01358
129334
2406434
3522134
000
100

prune508.0ms (4.6%)

Pruning

17 alts after pruning (17 fresh and 0 done)

PrunedKeptTotal
New23211243
Fresh9615
Picked101
Done000
Total24217259
Error
0.0b
Counts
259 → 17
Alt Table
StatusErrorProgram
15.4b
(/.f64 (*.f64 r (sin.f64 b)) (log.f64 (exp.f64 (cos.f64 (+.f64 b a)))))
15.3b
(*.f64 r (/.f64 1 (/.f64 (cos.f64 (+.f64 a b)) (sin.f64 b))))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))))
0.7b
(/.f64 (*.f64 r (sin.f64 b)) (fma.f64 (*.f64 (cos.f64 b) (pow.f64 (cbrt.f64 (cos.f64 a)) 2)) (cbrt.f64 (cos.f64 a)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
28.6b
(/.f64 (pow.f64 (sqrt.f64 (*.f64 r (sin.f64 b))) 2) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
15.3b
(pow.f64 (/.f64 (cos.f64 (+.f64 a b)) (*.f64 r (sin.f64 b))) -1)
0.5b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))))
15.9b
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 r (sin.f64 b))) 2) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 2)) (cbrt.f64 (/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b)))))
0.7b
(/.f64 (*.f64 r (sin.f64 b)) (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 b)) 2) (*.f64 (cbrt.f64 (cos.f64 b)) (cos.f64 a)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cos.f64 a) (cos.f64 b))))
31.8b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b)))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))) (fma.f64 (neg.f64 (sqrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b))) (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))))
14.5b
(/.f64 (*.f64 r (sin.f64 b)) (fma.f64 (sqrt.f64 (cos.f64 b)) (*.f64 (sqrt.f64 (cos.f64 b)) (cos.f64 a)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
1.2b
(/.f64 (pow.f64 (cbrt.f64 (*.f64 r (sin.f64 b))) 3) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
0.5b
(/.f64 (*.f64 r (sin.f64 b)) (/.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) 3)) (+.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (-.f64 (*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))))
0.7b
(/.f64 (*.f64 r (sin.f64 b)) (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 a)) 2) (*.f64 (cbrt.f64 (cos.f64 a)) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
0.5b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))))
Compiler

Compiled 6146 to 1558 computations (74.7% saved)

localize13.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(+.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cos.f64 a) (cos.f64 b)))
0.1b
(*.f64 r (sin.f64 b))
0.2b
(*.f64 (sin.f64 b) (sin.f64 a))
0.2b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cos.f64 a) (cos.f64 b))))

series140.0ms (1.3%)

Counts
4 → 100
Calls

4 calls:

108.0ms
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cos.f64 a) (cos.f64 b))))
15.0ms
(+.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cos.f64 a) (cos.f64 b)))
10.0ms
(*.f64 (sin.f64 b) (sin.f64 a))
7.0ms
(*.f64 r (sin.f64 b))

rewrite84.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
318×fma-neg_binary64
275×expm1-udef_binary64
275×log1p-udef_binary64
165×add-sqr-sqrt_binary64
156×log1p-expm1-u_binary64
Counts
4 → 143
Calls

4 calls:

79.0ms
(+.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cos.f64 a) (cos.f64 b)))
79.0ms
(*.f64 r (sin.f64 b))
79.0ms
(*.f64 (sin.f64 b) (sin.f64 a))
79.0ms
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cos.f64 a) (cos.f64 b))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01462
131234
2407634
3516634
000
100

prune422.0ms (3.8%)

Pruning

17 alts after pruning (16 fresh and 1 done)

PrunedKeptTotal
New2430243
Fresh01616
Picked011
Done000
Total24317260
Error
0.0b
Counts
260 → 17
Alt Table
StatusErrorProgram
15.4b
(/.f64 (*.f64 r (sin.f64 b)) (log.f64 (exp.f64 (cos.f64 (+.f64 b a)))))
15.3b
(*.f64 r (/.f64 1 (/.f64 (cos.f64 (+.f64 a b)) (sin.f64 b))))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))))
0.7b
(/.f64 (*.f64 r (sin.f64 b)) (fma.f64 (*.f64 (cos.f64 b) (pow.f64 (cbrt.f64 (cos.f64 a)) 2)) (cbrt.f64 (cos.f64 a)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
28.6b
(/.f64 (pow.f64 (sqrt.f64 (*.f64 r (sin.f64 b))) 2) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
15.3b
(pow.f64 (/.f64 (cos.f64 (+.f64 a b)) (*.f64 r (sin.f64 b))) -1)
0.5b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))))
15.9b
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 r (sin.f64 b))) 2) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 2)) (cbrt.f64 (/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b)))))
0.7b
(/.f64 (*.f64 r (sin.f64 b)) (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 b)) 2) (*.f64 (cbrt.f64 (cos.f64 b)) (cos.f64 a)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cos.f64 a) (cos.f64 b))))
31.8b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b)))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))) (fma.f64 (neg.f64 (sqrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b))) (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))))
14.5b
(/.f64 (*.f64 r (sin.f64 b)) (fma.f64 (sqrt.f64 (cos.f64 b)) (*.f64 (sqrt.f64 (cos.f64 b)) (cos.f64 a)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
1.2b
(/.f64 (pow.f64 (cbrt.f64 (*.f64 r (sin.f64 b))) 3) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
0.5b
(/.f64 (*.f64 r (sin.f64 b)) (/.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) 3)) (+.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (-.f64 (*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))))
0.7b
(/.f64 (*.f64 r (sin.f64 b)) (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 a)) 2) (*.f64 (cbrt.f64 (cos.f64 a)) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
0.5b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))))
Compiler

Compiled 5741 to 1556 computations (72.9% saved)

localize19.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(/.f64 (*.f64 r (sin.f64 b)) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
0.3b
(*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))
0.4b
(/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
0.4b
(pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2)

series1.3s (11.4%)

Counts
4 → 108
Calls

4 calls:

1.1s
(/.f64 (*.f64 r (sin.f64 b)) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
112.0ms
(/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
27.0ms
(*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))
19.0ms
(pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2)

rewrite91.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
353×log1p-udef_binary64
331×prod-diff_binary64
224×add-sqr-sqrt_binary64
219×log1p-expm1-u_binary64
219×expm1-log1p-u_binary64
Counts
4 → 128
Calls

4 calls:

87.0ms
(/.f64 (*.f64 r (sin.f64 b)) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
87.0ms
(*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))
87.0ms
(/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
87.0ms
(pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
019128
144642
2421742
3528242
000
100

prune396.0ms (3.6%)

Pruning

15 alts after pruning (13 fresh and 2 done)

PrunedKeptTotal
New2315236
Fresh7815
Picked011
Done011
Total23815253
Error
0.0b
Counts
253 → 15
Alt Table
StatusErrorProgram
0.5b
(/.f64 (*.f64 r (+.f64 (*.f64 (sin.f64 a) (pow.f64 (sin.f64 b) 2)) (*.f64 (sin.f64 b) (*.f64 (cos.f64 a) (cos.f64 b))))) (-.f64 (*.f64 (pow.f64 (cos.f64 a) 2) (pow.f64 (cos.f64 b) 2)) (*.f64 (pow.f64 (sin.f64 b) 2) (pow.f64 (sin.f64 a) 2))))
0.7b
(/.f64 (*.f64 r (sin.f64 b)) (fma.f64 (*.f64 (cos.f64 b) (pow.f64 (cbrt.f64 (cos.f64 a)) 2)) (cbrt.f64 (cos.f64 a)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
28.6b
(/.f64 (pow.f64 (sqrt.f64 (*.f64 r (sin.f64 b))) 2) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
15.3b
(pow.f64 (/.f64 (cos.f64 (+.f64 a b)) (*.f64 r (sin.f64 b))) -1)
0.5b
(/.f64 (*.f64 r (sin.f64 b)) (/.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) 3)) (+.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (-.f64 (*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))))
1.1b
(/.f64 (*.f64 r (sin.f64 b)) (/.f64 (-.f64 (log.f64 (+.f64 1 (expm1.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2)))) (*.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
15.3b
(/.f64 (*.f64 r (sin.f64 b)) (*.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (pow.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 2)) (/.f64 1 (cos.f64 (-.f64 b a)))))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (/.f64 (-.f64 (*.f64 (pow.f64 (cos.f64 a) 2) (pow.f64 (cos.f64 b) 2)) (*.f64 (pow.f64 (sin.f64 b) 2) (pow.f64 (sin.f64 a) 2))) (+.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))))
15.3b
(*.f64 r (/.f64 1 (/.f64 (cos.f64 (+.f64 a b)) (sin.f64 b))))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cos.f64 a) (cos.f64 b))))
31.8b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b)))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))) (fma.f64 (neg.f64 (sqrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b))) (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))))
14.5b
(/.f64 (*.f64 r (sin.f64 b)) (fma.f64 (sqrt.f64 (cos.f64 b)) (*.f64 (sqrt.f64 (cos.f64 b)) (cos.f64 a)) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
15.9b
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 r (sin.f64 b))) 2) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 2)) (cbrt.f64 (/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b)))))
0.5b
(/.f64 (*.f64 (sin.f64 b) (*.f64 r (+.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))) (-.f64 (*.f64 (pow.f64 (cos.f64 a) 2) (pow.f64 (cos.f64 b) 2)) (*.f64 (pow.f64 (sin.f64 a) 2) (pow.f64 (sin.f64 b) 2))))
Compiler

Compiled 9006 to 2795 computations (69% saved)

regimes1.5s (13.7%)

Accuracy

Total 0.3b remaining (82.5%)

Threshold costs 0.3b (82.5%)

Counts
301 → 1
Compiler

Compiled 29049 to 17049 computations (41.3% saved)

simplify3.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01326
12126
23126
33726
44126
54226
64226

end272.0ms (2.5%)

Compiler

Compiled 544 to 298 computations (45.2% saved)

Profiling

Loading profile data...