Details

Time bar (total: 14.2s)

analyze1.8s (12.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
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.4s (31.2%)

Results
2.9s3582×body1024valid
592.0ms1387×body512valid
464.0ms2427×body128valid
292.0ms216×body2048valid
184.0ms644×body256valid
1.0msbody1024invalid
Compiler

Compiled 38 to 26 computations (31.6% saved)

simplify6.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-/l*_binary64
+-commutative_binary64
associate-*r/_binary64
associate-*l/_binary64
Counts
1 → 2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0914
11314
21614
32014
42114
52114

prune2.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New112
Fresh011
Picked000
Done000
Total123
Error
14.5b
Counts
3 → 1
Alt Table
StatusErrorProgram
14.5b
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
Compiler

Compiled 45 to 28 computations (37.8% saved)

localize9.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

series80.0ms (0.6%)

Counts
3 → 52
Calls

3 calls:

49.0ms
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
27.0ms
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
4.0ms
(cos.f64 (+.f64 a b))

rewrite195.0ms (1.4%)

Algorithm
egg-rewrite
Rules
49×egg
45×egg
45×egg
Counts
3 → 139
Calls

3 calls:

89.0ms
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
52.0ms
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
51.0ms
(cos.f64 (+.f64 a b))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
056
11156
215486
350676
0711
115911
2220811
3497311
0914
120014
2273614
3480014
4501614

simplify58.0ms (0.4%)

Algorithm
egg-herbie
Rules
694×fma-def_binary64
622×associate-*l*_binary64
444×associate-/r*_binary64
196×associate-/r/_binary64
178×associate-*l/_binary64
Counts
191 → 182
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01551422
14431420
216301358
350641358

prune232.0ms (1.6%)

Pruning

14 alts after pruning (14 fresh and 0 done)

PrunedKeptTotal
New16814182
Fresh000
Picked101
Done000
Total16914183
Error
0.1b
Counts
183 → 14
Alt Table
StatusErrorProgram
14.5b
(*.f64 (*.f64 r (sin.f64 b)) (/.f64 1 (cos.f64 (+.f64 b a))))
14.5b
(/.f64 (*.f64 (sin.f64 b) r) (cos.f64 (+.f64 a b)))
15.2b
(*.f64 (pow.f64 (cbrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 b a)))) 2) (*.f64 (cbrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 b a)))) r))
0.5b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (cbrt.f64 (*.f64 (sin.f64 a) (sin.f64 b))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 a) (sin.f64 b))) (cbrt.f64 (*.f64 (sin.f64 a) (sin.f64 b))))))) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 (sin.f64 a) (sin.f64 b)))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 a) (sin.f64 b))) (cbrt.f64 (*.f64 (sin.f64 a) (sin.f64 b)))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 a) (sin.f64 b))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 a) (sin.f64 b))) (cbrt.f64 (*.f64 (sin.f64 a) (sin.f64 b)))))))))
15.2b
(/.f64 1 (/.f64 (cos.f64 (+.f64 b a)) (*.f64 r (sin.f64 b))))
15.2b
(*.f64 r (*.f64 (pow.f64 (cbrt.f64 (sin.f64 b)) 2) (*.f64 (cbrt.f64 (sin.f64 b)) (/.f64 1 (cos.f64 (+.f64 b a))))))
36.3b
(*.f64 r (*.f64 (/.f64 (sqrt.f64 (sin.f64 b)) 1) (/.f64 (sqrt.f64 (sin.f64 b)) (cos.f64 (+.f64 b a)))))
26.2b
(*.f64 r (/.f64 (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 a) (sin.f64 b)))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b))))))
30.9b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 a) (sin.f64 b)))) (fma.f64 (neg.f64 (sqrt.f64 (*.f64 (sin.f64 a) (sin.f64 b)))) (sqrt.f64 (*.f64 (sin.f64 a) (sin.f64 b))) (*.f64 (sin.f64 a) (sin.f64 b))))))
0.3b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 a) (sin.f64 b)))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b))))))
14.5b
(/.f64 r (/.f64 (cos.f64 (+.f64 b a)) (sin.f64 b)))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b))) (*.f64 (*.f64 (sin.f64 a) (sin.f64 b)) (*.f64 (sin.f64 a) (sin.f64 b)))) (+.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 a) (sin.f64 b))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (*.f64 (sin.f64 a) (sin.f64 b)) 3)) (+.f64 (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b))) (+.f64 (*.f64 (*.f64 (sin.f64 a) (sin.f64 b)) (*.f64 (sin.f64 a) (sin.f64 b))) (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 a) (sin.f64 b))))))))
32.9b
(*.f64 (/.f64 r (sqrt.f64 (cos.f64 (+.f64 b a)))) (/.f64 (sin.f64 b) (sqrt.f64 (cos.f64 (+.f64 b a)))))
Compiler

Compiled 4966 to 1618 computations (67.4% saved)

localize18.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

series847.0ms (6%)

Counts
4 → 96
Calls

4 calls:

681.0ms
(/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 a) (sin.f64 b)))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b)))))
131.0ms
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 a) (sin.f64 b)))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b))))))
25.0ms
(fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b)))
10.0ms
(*.f64 (sin.f64 a) (sin.f64 b))

rewrite316.0ms (2.2%)

Algorithm
egg-rewrite
Rules
51×egg
46×egg
35×egg
24×egg
Counts
4 → 156
Calls

4 calls:

114.0ms
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 a) (sin.f64 b)))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b))))))
77.0ms
(*.f64 (sin.f64 a) (sin.f64 b))
71.0ms
(/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 a) (sin.f64 b)))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b)))))
51.0ms
(fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0818
116713
2185513
3573413
01443
130626
2359624
3510224
01646
134729
2412529
3498729
4536829
068
11238
215448
348898
450618

simplify71.0ms (0.5%)

Algorithm
egg-herbie
Rules
740×fma-def_binary64
675×associate-*l*_binary64
444×associate-/r*_binary64
196×associate-/r/_binary64
178×associate-*l/_binary64
Counts
252 → 206
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01742242
14922232
217552148
354942148

prune368.0ms (2.6%)

Pruning

13 alts after pruning (12 fresh and 1 done)

PrunedKeptTotal
New2544258
Fresh5813
Picked011
Done000
Total25913272
Error
0.0b
Counts
272 → 13
Alt Table
StatusErrorProgram
0.3b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (*.f64 (sin.f64 a) (sin.f64 b)) 3)) (+.f64 (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b))) (+.f64 (*.f64 (*.f64 (sin.f64 a) (sin.f64 b)) (*.f64 (sin.f64 a) (sin.f64 b))) (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 a) (sin.f64 b))))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 a) 3) (pow.f64 (sin.f64 b) 3))))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b))))))
32.9b
(*.f64 (/.f64 r (sqrt.f64 (cos.f64 (+.f64 b a)))) (/.f64 (sin.f64 b) (sqrt.f64 (cos.f64 (+.f64 b a)))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (cbrt.f64 (pow.f64 (*.f64 (sin.f64 a) (sin.f64 b)) 3)))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b))))))
35.4b
(*.f64 r (pow.f64 (sqrt.f64 (/.f64 (sin.f64 b) (fma.f64 (sin.f64 a) (+.f64 (sin.f64 b) (sin.f64 b)) (cos.f64 (-.f64 a b))))) 2))
14.5b
(*.f64 (*.f64 r (sin.f64 b)) (/.f64 1 (cos.f64 (+.f64 b a))))
36.3b
(*.f64 r (*.f64 (/.f64 (sqrt.f64 (sin.f64 b)) 1) (/.f64 (sqrt.f64 (sin.f64 b)) (cos.f64 (+.f64 b a)))))
26.2b
(*.f64 r (/.f64 (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 a) (sin.f64 b)))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b))))))
15.2b
(*.f64 (pow.f64 (cbrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 b a)))) 2) (*.f64 (cbrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 b a)))) r))
0.3b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 a) (sin.f64 b)))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b))))))
15.2b
(/.f64 1 (/.f64 (cos.f64 (+.f64 b a)) (*.f64 r (sin.f64 b))))
14.5b
(/.f64 r (/.f64 (cos.f64 (+.f64 b a)) (sin.f64 b)))
Compiler

Compiled 8600 to 2373 computations (72.4% saved)

localize18.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

series138.0ms (1%)

Counts
4 → 52
Calls

4 calls:

106.0ms
(/.f64 (*.f64 (sin.f64 b) r) (-.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 (sin.f64 b) r)

rewrite311.0ms (2.2%)

Algorithm
egg-rewrite
Rules
183×egg
62×egg
43×egg
35×egg
Counts
4 → 323
Calls

4 calls:

84.0ms
(*.f64 (sin.f64 b) r)
77.0ms
(*.f64 (sin.f64 b) (sin.f64 a))
74.0ms
(-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))
69.0ms
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01326
129314
2406414
3522114
068
11238
215448
348898
450618
01018
12266
229966
350426
056
1976
211146
347366
462426

simplify60.0ms (0.4%)

Algorithm
egg-herbie
Rules
833×times-frac_binary64
682×fma-def_binary64
663×associate-/l*_binary64
311×cancel-sign-sub-inv_binary64
154×fma-neg_binary64
Counts
375 → 377
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01521361
14691343
216201265
352561265

prune506.0ms (3.6%)

Pruning

13 alts after pruning (12 fresh and 1 done)

PrunedKeptTotal
New36710377
Fresh9211
Picked101
Done011
Total37713390
Error
0.0b
Counts
390 → 13
Alt Table
StatusErrorProgram
14.5b
(/.f64 (sin.f64 b) (/.f64 (cos.f64 (+.f64 b a)) r))
0.3b
(/.f64 (*.f64 r (sin.f64 b)) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
26.2b
(/.f64 (*.f64 (sin.f64 b) r) (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) (sin.f64 a)))))
0.3b
(/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (sin.f64 b) (neg.f64 (sin.f64 a)) (*.f64 (cos.f64 a) (cos.f64 b))))
14.5b
(/.f64 (*.f64 (sin.f64 b) r) (/.f64 1 (/.f64 (cos.f64 (-.f64 b a)) (*.f64 (cos.f64 (-.f64 b a)) (cos.f64 (+.f64 a b))))))
34.3b
(*.f64 (sqrt.f64 (*.f64 (sin.f64 b) r)) (*.f64 (sqrt.f64 (*.f64 (sin.f64 b) r)) (/.f64 1 (cos.f64 (+.f64 b a)))))
0.8b
(/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (pow.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) 2) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
0.4b
(/.f64 (*.f64 (sin.f64 b) r) (/.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.3b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 a) (sin.f64 b)))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b))))))
14.5b
(/.f64 r (/.f64 (cos.f64 (+.f64 b a)) (sin.f64 b)))
1.2b
(/.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 b) r)) 3) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
0.4b
(/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) 2) (neg.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (cos.f64 a) (cos.f64 b))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (cbrt.f64 (pow.f64 (*.f64 (sin.f64 a) (sin.f64 b)) 3)))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b))))))
Compiler

Compiled 9848 to 2413 computations (75.5% saved)

localize12.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

series133.0ms (0.9%)

Counts
3 → 68
Calls

3 calls:

108.0ms
(/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (sin.f64 b) (neg.f64 (sin.f64 a)) (*.f64 (cos.f64 a) (cos.f64 b))))
15.0ms
(fma.f64 (sin.f64 b) (neg.f64 (sin.f64 a)) (*.f64 (cos.f64 a) (cos.f64 b)))
9.0ms
(*.f64 (cos.f64 a) (cos.f64 b))

rewrite197.0ms (1.4%)

Algorithm
egg-rewrite
Rules
60×egg
34×egg
26×egg
Counts
3 → 120
Calls

3 calls:

78.0ms
(*.f64 (cos.f64 a) (cos.f64 b))
65.0ms
(/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (sin.f64 b) (neg.f64 (sin.f64 a)) (*.f64 (cos.f64 a) (cos.f64 b))))
51.0ms
(fma.f64 (sin.f64 b) (neg.f64 (sin.f64 a)) (*.f64 (cos.f64 a) (cos.f64 b)))
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01326
127214
2333614
3505014
01018
12056
222936
350986
068
11238
215408
348898
450478

simplify103.0ms (0.7%)

Algorithm
egg-herbie
Rules
833×times-frac_binary64
664×associate-/l*_binary64
638×fma-def_binary64
208×fma-neg_binary64
193×cancel-sign-sub-inv_binary64
Counts
188 → 164
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01421831
14201815
214401758
348491750
449981750
549881750

prune288.0ms (2%)

Pruning

13 alts after pruning (12 fresh and 1 done)

PrunedKeptTotal
New2123215
Fresh2911
Picked101
Done011
Total21513228
Error
0.0b
Counts
228 → 13
Alt Table
StatusErrorProgram
14.6b
(*.f64 (/.f64 (sin.f64 b) 1) (/.f64 r (cos.f64 (-.f64 a b))))
0.3b
(/.f64 (*.f64 r (sin.f64 b)) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
26.2b
(/.f64 (*.f64 (sin.f64 b) r) (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) (sin.f64 a)))))
14.5b
(/.f64 (*.f64 (sin.f64 b) r) (/.f64 1 (/.f64 (cos.f64 (-.f64 b a)) (*.f64 (cos.f64 (-.f64 b a)) (cos.f64 (+.f64 a b))))))
0.6b
(/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (sin.f64 b) (neg.f64 (sin.f64 a)) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 b)) 2) (*.f64 (cbrt.f64 (cos.f64 b)) (cos.f64 a)))))
0.4b
(/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) 2) (neg.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (cos.f64 a) (cos.f64 b))))
0.7b
(/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (sin.f64 b) (neg.f64 (sin.f64 a)) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 a)) 2) (*.f64 (cbrt.f64 (cos.f64 a)) (cos.f64 b)))))
34.3b
(*.f64 (sqrt.f64 (*.f64 (sin.f64 b) r)) (*.f64 (sqrt.f64 (*.f64 (sin.f64 b) r)) (/.f64 1 (cos.f64 (+.f64 b a)))))
0.4b
(/.f64 (*.f64 (sin.f64 b) r) (/.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.3b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 a) (sin.f64 b)))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b))))))
14.5b
(/.f64 r (/.f64 (cos.f64 (+.f64 b a)) (sin.f64 b)))
1.2b
(/.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 b) r)) 3) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (cbrt.f64 (pow.f64 (*.f64 (sin.f64 a) (sin.f64 b)) 3)))) (fma.f64 (neg.f64 (sin.f64 b)) (sin.f64 a) (*.f64 (sin.f64 a) (sin.f64 b))))))
Compiler

Compiled 4708 to 1463 computations (68.9% saved)

regimes3.6s (25.7%)

Accuracy

Total 0.2b remaining (79.4%)

Threshold costs 0.2b (79.4%)

Counts
441 → 1
Compiler

Compiled 48288 to 29263 computations (39.4% saved)

simplify4.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
sub-neg_binary64
+-commutative_binary64
cancel-sign-sub-inv_binary64
neg-sub0_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01646
12646
23646
35444
46744
57244
67344
76944

end358.0ms (2.5%)

Compiler

Compiled 404 to 218 computations (46% saved)

Profiling

Loading profile data...