Details

Time bar (total: 7.8s)

analyze723.0ms (9.3%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
0%0%99.9%0.1%0%0%0%5
0%0%99.9%0.1%0%0%0%6
25%25%74.9%0.1%0%0%0%7
37.5%37.4%62.4%0.1%0%0%0%8
37.5%37.4%62.4%0.1%0%0%0%9
56.3%56.2%43.7%0.1%0%0%0%10
65.6%65.5%34.3%0.1%0%0%0%11
65.6%65.5%34.3%0.1%0%0%0%12
Compiler

Compiled 13 to 9 computations (30.8% saved)

sample2.7s (35.1%)

Results
1.5s2147×body1024valid
852.0ms5079×body256valid
370.0ms1029×body512valid
1.0msbody2048valid
Bogosity

preprocess161.0ms (2.1%)

Algorithm
egg-herbie
Rules
2532×rational.json-simplify-42
1816×rational.json-simplify-45
1718×rational.json-simplify-35
1034×rational.json-simplify-2
846×rational.json-simplify-48
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
024108
150108
273108
3109108
4187108
5333108
6800108
72041108
84430108
95366108
105761108
116242108
126545108
033
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 y (cos.f64 x)) (*.f64 z (sin.f64 x)))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 x (cos.f64 z)) (*.f64 y (sin.f64 z)))
Outputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 y (cos.f64 x)) (*.f64 z (sin.f64 x)))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 x (cos.f64 z)) (*.f64 y (sin.f64 z)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify177.0ms (2.3%)

Algorithm
egg-herbie
Rules
2180×rational.json-simplify-35
1772×rational.json-simplify-1
1258×rational.json-simplify-26
918×rational.json-simplify-2
658×rational.json-simplify-52
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01127
12027
22927
34327
47527
513127
629027
771627
8204227
9330627
10405027
11452827
12528127
13569727
14630327
15687627
Stop Event
node limit
Counts
1 → 1
Calls
Call 1
Inputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
Outputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))

eval0.0ms (0%)

Compiler

Compiled 12 to 8 computations (33.3% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
0.1b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
Compiler

Compiled 12 to 8 computations (33.3% saved)

localize11.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 y)
0.0b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
0.1b
(*.f64 x (cos.f64 y))
0.2b
(*.f64 z (sin.f64 y))
Compiler

Compiled 27 to 8 computations (70.4% saved)

series8.0ms (0.1%)

Counts
4 → 68
Calls

24 calls:

TimeVariablePointExpression
2.0ms
z
@0
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
1.0ms
z
@0
(*.f64 z (sin.f64 y))
1.0ms
x
@-inf
(*.f64 x (cos.f64 y))
1.0ms
x
@0
(*.f64 x (cos.f64 y))
1.0ms
y
@0
(*.f64 z (sin.f64 y))

rewrite100.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
2020×bool.json-1
1032×bool.json-2
998×rational.json-1
998×rational.json-2
998×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01154
111354
231854
368954
4150254
5345754
6766554
Stop Event
node limit
Counts
4 → 69
Calls
Call 1
Inputs
(*.f64 z (sin.f64 y))
(*.f64 x (cos.f64 y))
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
(sin.f64 y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (sin.f64 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 z (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (*.f64 (sin.f64 y) 1/2)) (*.f64 z (*.f64 (sin.f64 y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 z (sin.f64 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) (+.f64 z z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) (*.f64 z 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 z (sin.f64 y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 z (sin.f64 y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 z (sin.f64 y)) 8)) (*.f64 2 (*.f64 (*.f64 z (sin.f64 y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 z (sin.f64 y)) (*.f64 z (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 z (sin.f64 y)) (*.f64 z (sin.f64 y)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (cos.f64 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 y) (*.f64 x 1/2)) (*.f64 (cos.f64 y) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (cos.f64 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 y) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (cos.f64 y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (cos.f64 y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (cos.f64 y)) 8)) (*.f64 2 (*.f64 (*.f64 x (cos.f64 y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (cos.f64 y)) (*.f64 x (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (cos.f64 y)) (*.f64 x (cos.f64 y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (cos.f64 y) (*.f64 x 1/2)) (*.f64 z (*.f64 (sin.f64 y) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 z (*.f64 (sin.f64 y) 1/2)) (*.f64 (cos.f64 y) (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (cos.f64 y) (+.f64 x x)) (*.f64 (sin.f64 y) (+.f64 z z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (sin.f64 y) (+.f64 z z)) (*.f64 (cos.f64 y) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 8)) (*.f64 2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (sin.f64 y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (neg.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 y) 1/2) (*.f64 (sin.f64 y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (sin.f64 y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (neg.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (sin.f64 y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (sin.f64 y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (sin.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (sin.f64 y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (sin.f64 y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sin.f64 y) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sin.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (sin.f64 y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sin.f64 y) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (sin.f64 y)) (neg.f64 (sin.f64 y))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (sin.f64 y) 8)) (*.f64 2 (*.f64 (sin.f64 y) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x and (sin.f64 y) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x or (sin.f64 y) (sin.f64 y))))))

simplify231.0ms (3%)

Algorithm
egg-herbie
Rules
1962×rational.json-simplify-53
1762×rational.json-simplify-35
1208×rational.json-simplify-1
1142×rational.json-simplify-51
986×rational.json-simplify-2
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01832459
13832459
29542435
321632411
441652411
549842411
657352411
764262411
871692411
972942411
Stop Event
node limit
Counts
137 → 126
Calls
Call 1
Inputs
(*.f64 y z)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 y z))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (*.f64 1/120 (*.f64 (pow.f64 y 5) z))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) z)) (*.f64 1/120 (*.f64 (pow.f64 y 5) z)))))
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(*.f64 z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
y
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 y (*.f64 -1/5040 (pow.f64 y 7)))))
(+.f64 (*.f64 z (sin.f64 y)) 0)
(+.f64 0 (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (*.f64 (sin.f64 y) 1/2)) (*.f64 z (*.f64 (sin.f64 y) 1/2)))
(-.f64 (*.f64 z (sin.f64 y)) 0)
(/.f64 (*.f64 z (sin.f64 y)) 1)
(/.f64 (*.f64 (sin.f64 y) (+.f64 z z)) 2)
(/.f64 (*.f64 (sin.f64 y) (*.f64 z 4)) 4)
(/.f64 (*.f64 (*.f64 z (sin.f64 y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 z (sin.f64 y)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 z (sin.f64 y)) 8)) (*.f64 2 (*.f64 (*.f64 z (sin.f64 y)) 8))) 32)
(+.f64 (*.f64 x (cos.f64 y)) 0)
(+.f64 0 (*.f64 x (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) (*.f64 x 1/2)) (*.f64 (cos.f64 y) (*.f64 x 1/2)))
(-.f64 (*.f64 x (cos.f64 y)) 0)
(/.f64 (*.f64 x (cos.f64 y)) 1)
(/.f64 (*.f64 (cos.f64 y) (+.f64 x x)) 2)
(/.f64 (*.f64 (cos.f64 y) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 x (cos.f64 y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (cos.f64 y)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (cos.f64 y)) 8)) (*.f64 2 (*.f64 (*.f64 x (cos.f64 y)) 8))) 32)
(-.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 0)
(*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 1)
(*.f64 1 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))))
(*.f64 2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 1/2))
(*.f64 2 (+.f64 (*.f64 (cos.f64 y) (*.f64 x 1/2)) (*.f64 z (*.f64 (sin.f64 y) 1/2))))
(*.f64 2 (+.f64 (*.f64 z (*.f64 (sin.f64 y) 1/2)) (*.f64 (cos.f64 y) (*.f64 x 1/2))))
(*.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4))
(*.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 2))
(*.f64 1/2 (+.f64 (*.f64 (cos.f64 y) (+.f64 x x)) (*.f64 (sin.f64 y) (+.f64 z z))))
(*.f64 1/2 (+.f64 (*.f64 (sin.f64 y) (+.f64 z z)) (*.f64 (cos.f64 y) (+.f64 x x))))
(*.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4))
(*.f64 (/.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4) 4)
(/.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 1)
(/.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 8)) (*.f64 2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 8))) 32)
(+.f64 (sin.f64 y) 0)
(+.f64 0 (sin.f64 y))
(+.f64 -1 (-.f64 1 (neg.f64 (sin.f64 y))))
(+.f64 (*.f64 (sin.f64 y) 1/2) (*.f64 (sin.f64 y) 1/2))
(+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1)
(-.f64 (sin.f64 y) 0)
(-.f64 0 (neg.f64 (sin.f64 y)))
(*.f64 (sin.f64 y) 1)
(*.f64 1 (sin.f64 y))
(*.f64 -1 (neg.f64 (sin.f64 y)))
(*.f64 2 (*.f64 (sin.f64 y) 1/2))
(*.f64 (*.f64 (sin.f64 y) 2) 1/2)
(*.f64 4 (/.f64 (sin.f64 y) 4))
(*.f64 (*.f64 (sin.f64 y) 4) 1/4)
(*.f64 1/2 (*.f64 (sin.f64 y) 2))
(*.f64 (*.f64 (sin.f64 y) 1/2) 2)
(*.f64 (neg.f64 (sin.f64 y)) -1)
(*.f64 1/4 (*.f64 (sin.f64 y) 4))
(*.f64 (/.f64 (sin.f64 y) 4) 4)
(/.f64 (sin.f64 y) 1)
(/.f64 (*.f64 (sin.f64 y) 2) 2)
(/.f64 (*.f64 (sin.f64 y) 4) 4)
(/.f64 (*.f64 (sin.f64 y) 8) 8)
(/.f64 (neg.f64 (sin.f64 y)) -1)
(/.f64 (*.f64 2 (*.f64 (sin.f64 y) 8)) 16)
(/.f64 (+.f64 (neg.f64 (sin.f64 y)) (neg.f64 (sin.f64 y))) -2)
(/.f64 (+.f64 (*.f64 2 (*.f64 (sin.f64 y) 8)) (*.f64 2 (*.f64 (sin.f64 y) 8))) 32)
(neg.f64 (neg.f64 (sin.f64 y)))
Outputs
(*.f64 y z)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 y z))
(+.f64 (*.f64 y z) (*.f64 -1/6 (*.f64 z (pow.f64 y 3))))
(+.f64 (*.f64 y z) (*.f64 z (*.f64 -1/6 (pow.f64 y 3))))
(*.f64 z (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (*.f64 1/120 (*.f64 (pow.f64 y 5) z))))
(+.f64 (*.f64 -1/6 (*.f64 z (pow.f64 y 3))) (+.f64 (*.f64 y z) (*.f64 (pow.f64 y 5) (*.f64 z 1/120))))
(+.f64 (*.f64 z (*.f64 -1/6 (pow.f64 y 3))) (+.f64 (*.f64 y z) (*.f64 z (*.f64 1/120 (pow.f64 y 5)))))
(+.f64 (*.f64 (pow.f64 y 3) (*.f64 z -1/6)) (*.f64 z (+.f64 y (*.f64 1/120 (pow.f64 y 5)))))
(*.f64 z (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (*.f64 1/120 (pow.f64 y 5)))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) z)) (*.f64 1/120 (*.f64 (pow.f64 y 5) z)))))
(+.f64 (*.f64 y z) (+.f64 (+.f64 (*.f64 (pow.f64 y 5) (*.f64 z 1/120)) (*.f64 -1/5040 (*.f64 z (pow.f64 y 7)))) (*.f64 -1/6 (*.f64 z (pow.f64 y 3)))))
(+.f64 (*.f64 z (*.f64 -1/6 (pow.f64 y 3))) (+.f64 (*.f64 y z) (+.f64 (*.f64 z (*.f64 1/120 (pow.f64 y 5))) (*.f64 -1/5040 (*.f64 z (pow.f64 y 7))))))
(+.f64 (*.f64 (pow.f64 y 3) (*.f64 z -1/6)) (+.f64 (*.f64 z (+.f64 y (*.f64 1/120 (pow.f64 y 5)))) (*.f64 (pow.f64 y 7) (*.f64 z -1/5040))))
(+.f64 (*.f64 (pow.f64 y 3) (*.f64 z -1/6)) (*.f64 z (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) (*.f64 -1/5040 (pow.f64 y 7))))))
(+.f64 (*.f64 -1/6 (*.f64 z (pow.f64 y 3))) (*.f64 z (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) (*.f64 -1/5040 (pow.f64 y 7))))))
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 x (*.f64 -1/2 (*.f64 x (pow.f64 y 2))))
(+.f64 x (*.f64 x (*.f64 (pow.f64 y 2) -1/2)))
(+.f64 x (*.f64 x (*.f64 -1/2 (pow.f64 y 2))))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (+.f64 x (*.f64 -1/2 (*.f64 x (pow.f64 y 2)))) (*.f64 1/24 (*.f64 x (pow.f64 y 4))))
(+.f64 x (+.f64 (*.f64 x (*.f64 (pow.f64 y 4) 1/24)) (*.f64 x (*.f64 (pow.f64 y 2) -1/2))))
(+.f64 (*.f64 x (*.f64 -1/2 (pow.f64 y 2))) (+.f64 x (*.f64 (pow.f64 y 4) (*.f64 x 1/24))))
(+.f64 x (*.f64 x (+.f64 (*.f64 1/24 (pow.f64 y 4)) (*.f64 -1/2 (pow.f64 y 2)))))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(+.f64 (*.f64 1/24 (*.f64 x (pow.f64 y 4))) (+.f64 (+.f64 x (*.f64 -1/2 (*.f64 x (pow.f64 y 2)))) (*.f64 (pow.f64 y 6) (*.f64 x -1/720))))
(+.f64 (+.f64 x (*.f64 x (*.f64 (pow.f64 y 2) -1/2))) (+.f64 (*.f64 x (*.f64 (pow.f64 y 6) -1/720)) (*.f64 x (*.f64 (pow.f64 y 4) 1/24))))
(+.f64 (+.f64 x (*.f64 (pow.f64 y 4) (*.f64 x 1/24))) (+.f64 (*.f64 x (*.f64 -1/2 (pow.f64 y 2))) (*.f64 (pow.f64 y 6) (*.f64 x -1/720))))
(+.f64 x (+.f64 (*.f64 x (+.f64 (*.f64 -1/720 (pow.f64 y 6)) (*.f64 -1/2 (pow.f64 y 2)))) (*.f64 (pow.f64 y 4) (*.f64 x 1/24))))
(+.f64 x (+.f64 (*.f64 (pow.f64 y 4) (*.f64 x 1/24)) (*.f64 x (+.f64 (*.f64 -1/720 (pow.f64 y 6)) (*.f64 -1/2 (pow.f64 y 2))))))
(+.f64 x (+.f64 (*.f64 x (*.f64 -1/720 (pow.f64 y 6))) (*.f64 x (+.f64 (*.f64 1/24 (pow.f64 y 4)) (*.f64 -1/2 (pow.f64 y 2))))))
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1/2 (*.f64 x (pow.f64 y 2)))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x (*.f64 (pow.f64 y 2) -1/2))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x (*.f64 -1/2 (pow.f64 y 2)))))
(+.f64 x (+.f64 (*.f64 y z) (*.f64 x (*.f64 -1/2 (pow.f64 y 2)))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/6 (*.f64 z (pow.f64 y 3))) (+.f64 x (*.f64 -1/2 (*.f64 x (pow.f64 y 2))))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 z (*.f64 -1/6 (pow.f64 y 3))) (+.f64 x (*.f64 x (*.f64 (pow.f64 y 2) -1/2)))))
(+.f64 (*.f64 z (+.f64 y (*.f64 -1/6 (pow.f64 y 3)))) (+.f64 x (*.f64 x (*.f64 -1/2 (pow.f64 y 2)))))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) x) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
y
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(+.f64 y (*.f64 -1/6 (pow.f64 y 3)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (*.f64 1/120 (pow.f64 y 5))))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 y (*.f64 -1/5040 (pow.f64 y 7)))))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 -1/5040 (pow.f64 y 7)) (*.f64 1/120 (pow.f64 y 5)))))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) (*.f64 -1/5040 (pow.f64 y 7)))))
(+.f64 y (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (*.f64 -1/5040 (pow.f64 y 7)))))
(+.f64 (*.f64 z (sin.f64 y)) 0)
(*.f64 z (sin.f64 y))
(+.f64 0 (*.f64 z (sin.f64 y)))
(*.f64 z (sin.f64 y))
(+.f64 (*.f64 z (*.f64 (sin.f64 y) 1/2)) (*.f64 z (*.f64 (sin.f64 y) 1/2)))
(*.f64 z (sin.f64 y))
(-.f64 (*.f64 z (sin.f64 y)) 0)
(*.f64 z (sin.f64 y))
(/.f64 (*.f64 z (sin.f64 y)) 1)
(*.f64 z (sin.f64 y))
(/.f64 (*.f64 (sin.f64 y) (+.f64 z z)) 2)
(*.f64 z (sin.f64 y))
(/.f64 (*.f64 (sin.f64 y) (*.f64 z 4)) 4)
(*.f64 z (sin.f64 y))
(/.f64 (*.f64 (*.f64 z (sin.f64 y)) 8) 8)
(*.f64 z (sin.f64 y))
(/.f64 (*.f64 2 (*.f64 (*.f64 z (sin.f64 y)) 8)) 16)
(*.f64 z (sin.f64 y))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 z (sin.f64 y)) 8)) (*.f64 2 (*.f64 (*.f64 z (sin.f64 y)) 8))) 32)
(*.f64 z (sin.f64 y))
(+.f64 (*.f64 x (cos.f64 y)) 0)
(*.f64 (cos.f64 y) x)
(+.f64 0 (*.f64 x (cos.f64 y)))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) (*.f64 x 1/2)) (*.f64 (cos.f64 y) (*.f64 x 1/2)))
(*.f64 (cos.f64 y) x)
(-.f64 (*.f64 x (cos.f64 y)) 0)
(*.f64 (cos.f64 y) x)
(/.f64 (*.f64 x (cos.f64 y)) 1)
(*.f64 (cos.f64 y) x)
(/.f64 (*.f64 (cos.f64 y) (+.f64 x x)) 2)
(*.f64 (cos.f64 y) x)
(/.f64 (*.f64 (cos.f64 y) (*.f64 x 4)) 4)
(*.f64 (cos.f64 y) x)
(/.f64 (*.f64 (*.f64 x (cos.f64 y)) 8) 8)
(*.f64 (cos.f64 y) x)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (cos.f64 y)) 8)) 16)
(*.f64 (cos.f64 y) x)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (cos.f64 y)) 8)) (*.f64 2 (*.f64 (*.f64 x (cos.f64 y)) 8))) 32)
(*.f64 (cos.f64 y) x)
(-.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 0)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 1)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 1 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 1/2))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 2 (+.f64 (*.f64 (cos.f64 y) (*.f64 x 1/2)) (*.f64 z (*.f64 (sin.f64 y) 1/2))))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 2 (+.f64 (*.f64 z (*.f64 (sin.f64 y) 1/2)) (*.f64 (cos.f64 y) (*.f64 x 1/2))))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 2) 1/2)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 4 (/.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4) 1/4)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 2))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 1/2 (+.f64 (*.f64 (cos.f64 y) (+.f64 x x)) (*.f64 (sin.f64 y) (+.f64 z z))))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 1/2 (+.f64 (*.f64 (sin.f64 y) (+.f64 z z)) (*.f64 (cos.f64 y) (+.f64 x x))))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 1/2) 2)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(*.f64 (/.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4) 4)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(/.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 1)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(/.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 2) 2)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(/.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 4) 4)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(/.f64 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 8) 8)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 8)) 16)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 8)) (*.f64 2 (*.f64 (+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y))) 8))) 32)
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x))
(+.f64 (sin.f64 y) 0)
(sin.f64 y)
(+.f64 0 (sin.f64 y))
(sin.f64 y)
(+.f64 -1 (-.f64 1 (neg.f64 (sin.f64 y))))
(sin.f64 y)
(+.f64 (*.f64 (sin.f64 y) 1/2) (*.f64 (sin.f64 y) 1/2))
(sin.f64 y)
(+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1)
(sin.f64 y)
(-.f64 (sin.f64 y) 0)
(sin.f64 y)
(-.f64 0 (neg.f64 (sin.f64 y)))
(sin.f64 y)
(*.f64 (sin.f64 y) 1)
(sin.f64 y)
(*.f64 1 (sin.f64 y))
(sin.f64 y)
(*.f64 -1 (neg.f64 (sin.f64 y)))
(sin.f64 y)
(*.f64 2 (*.f64 (sin.f64 y) 1/2))
(sin.f64 y)
(*.f64 (*.f64 (sin.f64 y) 2) 1/2)
(sin.f64 y)
(*.f64 4 (/.f64 (sin.f64 y) 4))
(sin.f64 y)
(*.f64 (*.f64 (sin.f64 y) 4) 1/4)
(sin.f64 y)
(*.f64 1/2 (*.f64 (sin.f64 y) 2))
(sin.f64 y)
(*.f64 (*.f64 (sin.f64 y) 1/2) 2)
(sin.f64 y)
(*.f64 (neg.f64 (sin.f64 y)) -1)
(sin.f64 y)
(*.f64 1/4 (*.f64 (sin.f64 y) 4))
(sin.f64 y)
(*.f64 (/.f64 (sin.f64 y) 4) 4)
(sin.f64 y)
(/.f64 (sin.f64 y) 1)
(sin.f64 y)
(/.f64 (*.f64 (sin.f64 y) 2) 2)
(sin.f64 y)
(/.f64 (*.f64 (sin.f64 y) 4) 4)
(sin.f64 y)
(/.f64 (*.f64 (sin.f64 y) 8) 8)
(sin.f64 y)
(/.f64 (neg.f64 (sin.f64 y)) -1)
(sin.f64 y)
(/.f64 (*.f64 2 (*.f64 (sin.f64 y) 8)) 16)
(sin.f64 y)
(/.f64 (+.f64 (neg.f64 (sin.f64 y)) (neg.f64 (sin.f64 y))) -2)
(sin.f64 y)
(/.f64 (+.f64 (*.f64 2 (*.f64 (sin.f64 y) 8)) (*.f64 2 (*.f64 (sin.f64 y) 8))) 32)
(sin.f64 y)
(neg.f64 (neg.f64 (sin.f64 y)))
(sin.f64 y)

eval30.0ms (0.4%)

Compiler

Compiled 2051 to 995 computations (51.5% saved)

prune20.0ms (0.3%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New1215126
Fresh000
Picked011
Done000
Total1216127
Error
0.1b
Counts
127 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
34.2b
(+.f64 (*.f64 y z) x)
7.8b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1)))
0.1b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
23.4b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z y))
16.7b
(+.f64 x (*.f64 z (sin.f64 y)))
37.0b
(*.f64 z (sin.f64 y))
Compiler

Compiled 116 to 80 computations (31% saved)

localize21.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (cos.f64 y))
0.2b
(*.f64 z (+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1))
0.5b
(-.f64 1 (neg.f64 (sin.f64 y)))
3.4b
(+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1)
Compiler

Compiled 54 to 26 computations (51.9% saved)

series1.0ms (0%)

Counts
3 → 48
Calls

12 calls:

TimeVariablePointExpression
0.0ms
y
@0
(+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1)
0.0ms
y
@0
(*.f64 z (+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1))
0.0ms
y
@0
(-.f64 1 (neg.f64 (sin.f64 y)))
0.0ms
y
@inf
(-.f64 1 (neg.f64 (sin.f64 y)))
0.0ms
y
@-inf
(-.f64 1 (neg.f64 (sin.f64 y)))

rewrite82.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1190×bool.json-1
1190×bool.json-2
1148×rational.json-1
1148×rational.json-2
1148×rational.json-4
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01263
113147
236927
380327
4172127
5402627
Stop Event
node limit
Counts
3 → 101
Calls
Call 1
Inputs
(+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1)
(-.f64 1 (neg.f64 (sin.f64 y)))
(*.f64 z (+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 1 (-.f64 1 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (sin.f64 y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 -1 (-.f64 -1 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 2 (-.f64 2 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 -2 (-.f64 -2 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (sin.f64 y) -1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (sin.f64 y) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (sin.f64 y) -2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sin.f64 y) 1/2) (*.f64 (sin.f64 y) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (-.f64 3 (neg.f64 (sin.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (sin.f64 y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (neg.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (sin.f64 y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (sin.f64 y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -2 (*.f64 (sin.f64 y) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) -2) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (sin.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (neg.f64 (*.f64 (sin.f64 y) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1/2 (*.f64 (sin.f64 y) -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (sin.f64 y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) -1/2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (*.f64 (sin.f64 y) -2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sin.f64 y) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sin.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (sin.f64 y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) -2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) -4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sin.f64 y) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sin.f64 y) -4)) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) -4))) -16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) 4))) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (sin.f64 y) -2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (sin.f64 y) -4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) -4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) 4))) (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) 4))) (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) 4)))) -16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 (sin.f64 y) -2)) (neg.f64 (*.f64 (sin.f64 y) -2))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 (sin.f64 y) -4)) (neg.f64 (*.f64 (sin.f64 y) -4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) -4))) (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) -4)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x sin.f64 y)))) (#(struct:change #<rule egg-rr> (2) ((x sin.f64 (-.f64 (PI.f64) y))))) (#(struct:change #<rule egg-rr> (2) ((x sin.f64 (neg.f64 (+.f64 y (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x sin.f64 (-.f64 (-.f64 y (PI.f64)) (PI.f64)))))) (#(struct:change #<rule egg-rr> (2) ((x sin.f64 (-.f64 y (-.f64 (neg.f64 (PI.f64)) (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x sin.f64 (-.f64 (PI.f64) (-.f64 (-.f64 y (PI.f64)) (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x and (sin.f64 y) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x or (sin.f64 y) (sin.f64 y))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (sin.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (sin.f64 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 (sin.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (+.f64 1 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 2 (+.f64 (sin.f64 y) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (-.f64 3 (neg.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (sin.f64 y) -1) 2)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (sin.f64 y) 2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1 (sin.f64 y)) 1/2) (*.f64 (+.f64 1 (sin.f64 y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 3 (neg.f64 (sin.f64 y))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 1 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 -1 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 1 (sin.f64 y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 1 (sin.f64 y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 -1 (sin.f64 y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 1 (sin.f64 y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 1 (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 1 (sin.f64 y)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 1 (sin.f64 y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 1 (sin.f64 y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 (sin.f64 y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 -1 (sin.f64 y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 (sin.f64 y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2)) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 -2 (*.f64 (sin.f64 y) -2))) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2))) (neg.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2)))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 -1 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 1 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 1 (sin.f64 y)) (+.f64 1 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 1 (sin.f64 y)) (+.f64 1 (sin.f64 y)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 y) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sin.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 y) (*.f64 z 1/2)) (*.f64 (sin.f64 y) (*.f64 z 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sin.f64 y) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) (+.f64 z z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) (*.f64 z 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sin.f64 y) (*.f64 z 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) (*.f64 z 4)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) (*.f64 z 4)))) (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) (*.f64 z 4))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (sin.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (sin.f64 y) z) (*.f64 (sin.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (sin.f64 y) z) (*.f64 (sin.f64 y) z))))))

simplify202.0ms (2.6%)

Algorithm
egg-herbie
Rules
1838×rational.json-simplify-35
1032×rational.json-simplify-1
906×trig.json-simplify-16
846×rational.json-simplify-2
628×rational.json-simplify-52
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02191587
14671587
213641569
330391569
445291569
556241569
661251569
766591569
875281569
Stop Event
node limit
Counts
149 → 139
Calls
Call 1
Inputs
y
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 y (*.f64 -1/5040 (pow.f64 y 7)))))
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
1
(+.f64 1 y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 1 y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 1 (+.f64 y (*.f64 1/120 (pow.f64 y 5)))))
(+.f64 1 (sin.f64 y))
(+.f64 1 (sin.f64 y))
(+.f64 1 (sin.f64 y))
(+.f64 1 (sin.f64 y))
(+.f64 1 (sin.f64 y))
(+.f64 1 (sin.f64 y))
(+.f64 1 (sin.f64 y))
(+.f64 1 (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 y z)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 y z))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (*.f64 1/120 (*.f64 (pow.f64 y 5) z))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) z)) (*.f64 1/120 (*.f64 (pow.f64 y 5) z)))))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(-.f64 1 (-.f64 1 (sin.f64 y)))
(-.f64 (sin.f64 y) 0)
(-.f64 (+.f64 1 (sin.f64 y)) 1)
(-.f64 -1 (-.f64 -1 (sin.f64 y)))
(-.f64 0 (neg.f64 (sin.f64 y)))
(-.f64 2 (-.f64 2 (sin.f64 y)))
(-.f64 -2 (-.f64 -2 (sin.f64 y)))
(-.f64 (+.f64 (sin.f64 y) -1) -1)
(-.f64 (+.f64 (sin.f64 y) 2) 2)
(-.f64 (+.f64 (sin.f64 y) -2) -2)
(-.f64 (*.f64 (sin.f64 y) 1/2) (*.f64 (sin.f64 y) -1/2))
(-.f64 (-.f64 3 (neg.f64 (sin.f64 y))) 3)
(*.f64 1 (sin.f64 y))
(*.f64 (sin.f64 y) 1)
(*.f64 (neg.f64 (sin.f64 y)) -1)
(*.f64 -1 (neg.f64 (sin.f64 y)))
(*.f64 2 (*.f64 (sin.f64 y) 1/2))
(*.f64 (*.f64 (sin.f64 y) 2) 1/2)
(*.f64 4 (/.f64 (sin.f64 y) 4))
(*.f64 -2 (*.f64 (sin.f64 y) -1/2))
(*.f64 (*.f64 (sin.f64 y) -2) -1/2)
(*.f64 (*.f64 (sin.f64 y) 4) 1/4)
(*.f64 1/2 (*.f64 (sin.f64 y) 2))
(*.f64 1/2 (neg.f64 (*.f64 (sin.f64 y) -2)))
(*.f64 -1/2 (*.f64 (sin.f64 y) -2))
(*.f64 (*.f64 (sin.f64 y) 1/2) 2)
(*.f64 1/4 (*.f64 (sin.f64 y) 4))
(*.f64 (*.f64 (sin.f64 y) -1/2) -2)
(*.f64 (neg.f64 (*.f64 (sin.f64 y) -2)) 1/2)
(*.f64 (/.f64 (sin.f64 y) 4) 4)
(/.f64 (sin.f64 y) 1)
(/.f64 (neg.f64 (sin.f64 y)) -1)
(/.f64 (*.f64 (sin.f64 y) 2) 2)
(/.f64 (*.f64 (sin.f64 y) -2) -2)
(/.f64 (*.f64 (sin.f64 y) 4) 4)
(/.f64 (*.f64 (sin.f64 y) -4) -4)
(/.f64 (*.f64 2 (*.f64 (sin.f64 y) 4)) 8)
(/.f64 (*.f64 2 (*.f64 (sin.f64 y) -4)) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) 4))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) -4))) -16)
(/.f64 (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) 4))) -8)
(/.f64 (neg.f64 (*.f64 (sin.f64 y) -2)) 2)
(/.f64 (neg.f64 (*.f64 (sin.f64 y) -4)) 4)
(/.f64 (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) -4))) 8)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) 4))) (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) 4)))) 32)
(/.f64 (+.f64 (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) 4))) (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) 4)))) -16)
(/.f64 (+.f64 (neg.f64 (*.f64 (sin.f64 y) -2)) (neg.f64 (*.f64 (sin.f64 y) -2))) 4)
(/.f64 (+.f64 (neg.f64 (*.f64 (sin.f64 y) -4)) (neg.f64 (*.f64 (sin.f64 y) -4))) 8)
(/.f64 (+.f64 (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) -4))) (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) -4)))) 16)
(neg.f64 (neg.f64 (sin.f64 y)))
(sin.f64 y)
(sin.f64 (-.f64 (PI.f64) y))
(sin.f64 (neg.f64 (+.f64 y (PI.f64))))
(sin.f64 (-.f64 (-.f64 y (PI.f64)) (PI.f64)))
(sin.f64 (-.f64 y (-.f64 (neg.f64 (PI.f64)) (PI.f64))))
(sin.f64 (-.f64 (PI.f64) (-.f64 (-.f64 y (PI.f64)) (PI.f64))))
(+.f64 1 (sin.f64 y))
(+.f64 (sin.f64 y) 1)
(+.f64 (+.f64 1 (sin.f64 y)) 0)
(+.f64 -1 (+.f64 (sin.f64 y) 2))
(+.f64 0 (+.f64 1 (sin.f64 y)))
(+.f64 2 (+.f64 (sin.f64 y) -1))
(+.f64 -2 (-.f64 3 (neg.f64 (sin.f64 y))))
(+.f64 (+.f64 (sin.f64 y) -1) 2)
(+.f64 (+.f64 (sin.f64 y) 2) -1)
(+.f64 (*.f64 (+.f64 1 (sin.f64 y)) 1/2) (*.f64 (+.f64 1 (sin.f64 y)) 1/2))
(+.f64 (-.f64 3 (neg.f64 (sin.f64 y))) -2)
(*.f64 1 (+.f64 1 (sin.f64 y)))
(*.f64 (+.f64 1 (sin.f64 y)) 1)
(*.f64 -1 (-.f64 -1 (sin.f64 y)))
(*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 1/2))
(*.f64 (*.f64 (+.f64 1 (sin.f64 y)) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 1 (sin.f64 y)) 4))
(*.f64 (-.f64 -1 (sin.f64 y)) -1)
(*.f64 (*.f64 (+.f64 1 (sin.f64 y)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 1 (sin.f64 y)) 2))
(*.f64 (*.f64 (+.f64 1 (sin.f64 y)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 1 (sin.f64 y)) 4))
(*.f64 (/.f64 (+.f64 1 (sin.f64 y)) 4) 4)
(/.f64 (+.f64 1 (sin.f64 y)) 1)
(/.f64 (*.f64 (+.f64 1 (sin.f64 y)) 2) 2)
(/.f64 (-.f64 -1 (sin.f64 y)) -1)
(/.f64 (*.f64 (+.f64 1 (sin.f64 y)) 4) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 4)) 8)
(/.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2)) -2)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 4))) 16)
(/.f64 (*.f64 2 (+.f64 -2 (*.f64 (sin.f64 y) -2))) -4)
(/.f64 (neg.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2))) 2)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 4)))) 32)
(/.f64 (+.f64 (neg.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2))) (neg.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2)))) 4)
(neg.f64 (-.f64 -1 (sin.f64 y)))
(+.f64 (*.f64 (sin.f64 y) z) 0)
(+.f64 0 (*.f64 (sin.f64 y) z))
(+.f64 (*.f64 (sin.f64 y) (*.f64 z 1/2)) (*.f64 (sin.f64 y) (*.f64 z 1/2)))
(-.f64 (*.f64 (sin.f64 y) z) 0)
(/.f64 (*.f64 (sin.f64 y) z) 1)
(/.f64 (*.f64 (sin.f64 y) (+.f64 z z)) 2)
(/.f64 (*.f64 (sin.f64 y) (*.f64 z 4)) 4)
(/.f64 (*.f64 2 (*.f64 (sin.f64 y) (*.f64 z 4))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) (*.f64 z 4)))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) (*.f64 z 4)))) (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) (*.f64 z 4))))) 32)
Outputs
y
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(+.f64 y (*.f64 -1/6 (pow.f64 y 3)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (*.f64 1/120 (pow.f64 y 5))))
(+.f64 y (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (*.f64 1/120 (pow.f64 y 5))))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 y (*.f64 -1/5040 (pow.f64 y 7)))))
(+.f64 y (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (*.f64 -1/5040 (pow.f64 y 7)))))
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
1
(+.f64 1 y)
(+.f64 y 1)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 1 y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y 1))
(+.f64 y (+.f64 (*.f64 -1/6 (pow.f64 y 3)) 1))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 1 (+.f64 y (*.f64 1/120 (pow.f64 y 5)))))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (+.f64 y (*.f64 1/120 (pow.f64 y 5))) 1))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 y 1)))
(+.f64 1 (sin.f64 y))
(+.f64 (sin.f64 y) 1)
(+.f64 1 (sin.f64 y))
(+.f64 (sin.f64 y) 1)
(+.f64 1 (sin.f64 y))
(+.f64 (sin.f64 y) 1)
(+.f64 1 (sin.f64 y))
(+.f64 (sin.f64 y) 1)
(+.f64 1 (sin.f64 y))
(+.f64 (sin.f64 y) 1)
(+.f64 1 (sin.f64 y))
(+.f64 (sin.f64 y) 1)
(+.f64 1 (sin.f64 y))
(+.f64 (sin.f64 y) 1)
(+.f64 1 (sin.f64 y))
(+.f64 (sin.f64 y) 1)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 y z)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 y z))
(+.f64 (*.f64 y z) (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)))
(*.f64 z (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))
(*.f64 (+.f64 y (*.f64 -1/6 (pow.f64 y 3))) z)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (*.f64 1/120 (*.f64 (pow.f64 y 5) z))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) z)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) z))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 1/120 (*.f64 (pow.f64 y 5) z))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 z (+.f64 y (*.f64 1/120 (pow.f64 y 5)))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 (+.f64 y (*.f64 1/120 (pow.f64 y 5))) z))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) z)) (*.f64 1/120 (*.f64 (pow.f64 y 5) z)))))
(+.f64 (*.f64 y z) (+.f64 (+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) z)) (*.f64 -1/5040 (*.f64 (pow.f64 y 7) z))) (*.f64 -1/6 (*.f64 (pow.f64 y 3) z))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) z)) (*.f64 -1/5040 (*.f64 (pow.f64 y 7) z)))))
(+.f64 (*.f64 (pow.f64 y 5) (*.f64 1/120 z)) (+.f64 (*.f64 z (+.f64 y (*.f64 -1/5040 (pow.f64 y 7)))) (*.f64 -1/6 (*.f64 (pow.f64 y 3) z))))
(+.f64 (*.f64 (pow.f64 y 5) (*.f64 1/120 z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 (+.f64 y (*.f64 -1/5040 (pow.f64 y 7))) z)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) z)) (*.f64 (+.f64 y (*.f64 -1/5040 (pow.f64 y 7))) z)))
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(-.f64 1 (-.f64 1 (sin.f64 y)))
(sin.f64 y)
(-.f64 (sin.f64 y) 0)
(sin.f64 y)
(-.f64 (+.f64 1 (sin.f64 y)) 1)
(sin.f64 y)
(-.f64 -1 (-.f64 -1 (sin.f64 y)))
(sin.f64 y)
(-.f64 0 (neg.f64 (sin.f64 y)))
(sin.f64 y)
(-.f64 2 (-.f64 2 (sin.f64 y)))
(sin.f64 y)
(-.f64 -2 (-.f64 -2 (sin.f64 y)))
(sin.f64 y)
(-.f64 (+.f64 (sin.f64 y) -1) -1)
(sin.f64 y)
(-.f64 (+.f64 (sin.f64 y) 2) 2)
(sin.f64 y)
(-.f64 (+.f64 (sin.f64 y) -2) -2)
(sin.f64 y)
(-.f64 (*.f64 (sin.f64 y) 1/2) (*.f64 (sin.f64 y) -1/2))
(sin.f64 y)
(-.f64 (-.f64 3 (neg.f64 (sin.f64 y))) 3)
(sin.f64 y)
(*.f64 1 (sin.f64 y))
(sin.f64 y)
(*.f64 (sin.f64 y) 1)
(sin.f64 y)
(*.f64 (neg.f64 (sin.f64 y)) -1)
(sin.f64 y)
(*.f64 -1 (neg.f64 (sin.f64 y)))
(sin.f64 y)
(*.f64 2 (*.f64 (sin.f64 y) 1/2))
(sin.f64 y)
(*.f64 (*.f64 (sin.f64 y) 2) 1/2)
(sin.f64 y)
(*.f64 4 (/.f64 (sin.f64 y) 4))
(sin.f64 y)
(*.f64 -2 (*.f64 (sin.f64 y) -1/2))
(sin.f64 y)
(*.f64 (*.f64 (sin.f64 y) -2) -1/2)
(sin.f64 y)
(*.f64 (*.f64 (sin.f64 y) 4) 1/4)
(sin.f64 y)
(*.f64 1/2 (*.f64 (sin.f64 y) 2))
(sin.f64 y)
(*.f64 1/2 (neg.f64 (*.f64 (sin.f64 y) -2)))
(sin.f64 y)
(*.f64 -1/2 (*.f64 (sin.f64 y) -2))
(sin.f64 y)
(*.f64 (*.f64 (sin.f64 y) 1/2) 2)
(sin.f64 y)
(*.f64 1/4 (*.f64 (sin.f64 y) 4))
(sin.f64 y)
(*.f64 (*.f64 (sin.f64 y) -1/2) -2)
(sin.f64 y)
(*.f64 (neg.f64 (*.f64 (sin.f64 y) -2)) 1/2)
(sin.f64 y)
(*.f64 (/.f64 (sin.f64 y) 4) 4)
(sin.f64 y)
(/.f64 (sin.f64 y) 1)
(sin.f64 y)
(/.f64 (neg.f64 (sin.f64 y)) -1)
(sin.f64 y)
(/.f64 (*.f64 (sin.f64 y) 2) 2)
(sin.f64 y)
(/.f64 (*.f64 (sin.f64 y) -2) -2)
(sin.f64 y)
(/.f64 (*.f64 (sin.f64 y) 4) 4)
(sin.f64 y)
(/.f64 (*.f64 (sin.f64 y) -4) -4)
(sin.f64 y)
(/.f64 (*.f64 2 (*.f64 (sin.f64 y) 4)) 8)
(sin.f64 y)
(/.f64 (*.f64 2 (*.f64 (sin.f64 y) -4)) -8)
(sin.f64 y)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) 4))) 16)
(sin.f64 y)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) -4))) -16)
(sin.f64 y)
(/.f64 (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) 4))) -8)
(sin.f64 y)
(/.f64 (neg.f64 (*.f64 (sin.f64 y) -2)) 2)
(sin.f64 y)
(/.f64 (neg.f64 (*.f64 (sin.f64 y) -4)) 4)
(sin.f64 y)
(/.f64 (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) -4))) 8)
(sin.f64 y)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) 4))) (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) 4)))) 32)
(sin.f64 y)
(/.f64 (+.f64 (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) 4))) (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) 4)))) -16)
(sin.f64 y)
(/.f64 (+.f64 (neg.f64 (*.f64 (sin.f64 y) -2)) (neg.f64 (*.f64 (sin.f64 y) -2))) 4)
(sin.f64 y)
(/.f64 (+.f64 (neg.f64 (*.f64 (sin.f64 y) -4)) (neg.f64 (*.f64 (sin.f64 y) -4))) 8)
(sin.f64 y)
(/.f64 (+.f64 (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) -4))) (neg.f64 (*.f64 2 (*.f64 (sin.f64 y) -4)))) 16)
(sin.f64 y)
(neg.f64 (neg.f64 (sin.f64 y)))
(sin.f64 y)
(sin.f64 y)
(sin.f64 (-.f64 (PI.f64) y))
(sin.f64 y)
(sin.f64 (neg.f64 (+.f64 y (PI.f64))))
(neg.f64 (sin.f64 (+.f64 y (PI.f64))))
(sin.f64 (-.f64 (-.f64 y (PI.f64)) (PI.f64)))
(sin.f64 (-.f64 y (-.f64 (neg.f64 (PI.f64)) (PI.f64))))
(neg.f64 (sin.f64 (+.f64 y (PI.f64))))
(sin.f64 (-.f64 (PI.f64) (-.f64 (-.f64 y (PI.f64)) (PI.f64))))
(sin.f64 (-.f64 (-.f64 y (PI.f64)) (PI.f64)))
(+.f64 1 (sin.f64 y))
(+.f64 (sin.f64 y) 1)
(+.f64 (sin.f64 y) 1)
(+.f64 (+.f64 1 (sin.f64 y)) 0)
(+.f64 (sin.f64 y) 1)
(+.f64 -1 (+.f64 (sin.f64 y) 2))
(+.f64 (sin.f64 y) 1)
(+.f64 0 (+.f64 1 (sin.f64 y)))
(+.f64 (sin.f64 y) 1)
(+.f64 2 (+.f64 (sin.f64 y) -1))
(+.f64 (sin.f64 y) 1)
(+.f64 -2 (-.f64 3 (neg.f64 (sin.f64 y))))
(+.f64 (sin.f64 y) 1)
(+.f64 (+.f64 (sin.f64 y) -1) 2)
(+.f64 (sin.f64 y) 1)
(+.f64 (+.f64 (sin.f64 y) 2) -1)
(+.f64 (sin.f64 y) 1)
(+.f64 (*.f64 (+.f64 1 (sin.f64 y)) 1/2) (*.f64 (+.f64 1 (sin.f64 y)) 1/2))
(+.f64 (sin.f64 y) 1)
(+.f64 (-.f64 3 (neg.f64 (sin.f64 y))) -2)
(+.f64 (sin.f64 y) 1)
(*.f64 1 (+.f64 1 (sin.f64 y)))
(+.f64 (sin.f64 y) 1)
(*.f64 (+.f64 1 (sin.f64 y)) 1)
(+.f64 (sin.f64 y) 1)
(*.f64 -1 (-.f64 -1 (sin.f64 y)))
(+.f64 (sin.f64 y) 1)
(*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 1/2))
(+.f64 (sin.f64 y) 1)
(*.f64 (*.f64 (+.f64 1 (sin.f64 y)) 2) 1/2)
(+.f64 (sin.f64 y) 1)
(*.f64 4 (/.f64 (+.f64 1 (sin.f64 y)) 4))
(+.f64 (sin.f64 y) 1)
(*.f64 (-.f64 -1 (sin.f64 y)) -1)
(+.f64 (sin.f64 y) 1)
(*.f64 (*.f64 (+.f64 1 (sin.f64 y)) 4) 1/4)
(+.f64 (sin.f64 y) 1)
(*.f64 1/2 (*.f64 (+.f64 1 (sin.f64 y)) 2))
(+.f64 (sin.f64 y) 1)
(*.f64 (*.f64 (+.f64 1 (sin.f64 y)) 1/2) 2)
(+.f64 (sin.f64 y) 1)
(*.f64 1/4 (*.f64 (+.f64 1 (sin.f64 y)) 4))
(+.f64 (sin.f64 y) 1)
(*.f64 (/.f64 (+.f64 1 (sin.f64 y)) 4) 4)
(+.f64 (sin.f64 y) 1)
(/.f64 (+.f64 1 (sin.f64 y)) 1)
(+.f64 (sin.f64 y) 1)
(/.f64 (*.f64 (+.f64 1 (sin.f64 y)) 2) 2)
(+.f64 (sin.f64 y) 1)
(/.f64 (-.f64 -1 (sin.f64 y)) -1)
(+.f64 (sin.f64 y) 1)
(/.f64 (*.f64 (+.f64 1 (sin.f64 y)) 4) 4)
(+.f64 (sin.f64 y) 1)
(/.f64 (*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 4)) 8)
(+.f64 (sin.f64 y) 1)
(/.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2)) -2)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 4))) 16)
(+.f64 (sin.f64 y) 1)
(/.f64 (*.f64 2 (+.f64 -2 (*.f64 (sin.f64 y) -2))) -4)
(*.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2)) -1/2)
(*.f64 -1/2 (+.f64 -2 (*.f64 (sin.f64 y) -2)))
(/.f64 (neg.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2))) 2)
(/.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2)) -2)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 1 (sin.f64 y)) 4)))) 32)
(+.f64 (sin.f64 y) 1)
(/.f64 (+.f64 (neg.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2))) (neg.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2)))) 4)
(/.f64 (+.f64 -2 (*.f64 (sin.f64 y) -2)) -2)
(neg.f64 (-.f64 -1 (sin.f64 y)))
(+.f64 (sin.f64 y) 1)
(+.f64 (*.f64 (sin.f64 y) z) 0)
(*.f64 (sin.f64 y) z)
(+.f64 0 (*.f64 (sin.f64 y) z))
(*.f64 (sin.f64 y) z)
(+.f64 (*.f64 (sin.f64 y) (*.f64 z 1/2)) (*.f64 (sin.f64 y) (*.f64 z 1/2)))
(*.f64 (sin.f64 y) z)
(-.f64 (*.f64 (sin.f64 y) z) 0)
(*.f64 (sin.f64 y) z)
(/.f64 (*.f64 (sin.f64 y) z) 1)
(*.f64 (sin.f64 y) z)
(/.f64 (*.f64 (sin.f64 y) (+.f64 z z)) 2)
(*.f64 (sin.f64 y) z)
(/.f64 (*.f64 (sin.f64 y) (*.f64 z 4)) 4)
(*.f64 (sin.f64 y) z)
(/.f64 (*.f64 2 (*.f64 (sin.f64 y) (*.f64 z 4))) 8)
(*.f64 (sin.f64 y) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) (*.f64 z 4)))) 16)
(*.f64 (sin.f64 y) z)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) (*.f64 z 4)))) (*.f64 2 (*.f64 2 (*.f64 (sin.f64 y) (*.f64 z 4))))) 32)
(*.f64 (sin.f64 y) z)

localize5.0ms (0.1%)

Compiler

Compiled 14 to 5 computations (64.3% saved)

localize6.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 y)
0.2b
(*.f64 z (sin.f64 y))
Compiler

Compiled 11 to 5 computations (54.5% saved)

localize7.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 y)
0.0b
(+.f64 x (*.f64 z (sin.f64 y)))
0.2b
(*.f64 z (sin.f64 y))
Compiler

Compiled 18 to 6 computations (66.7% saved)

series1.0ms (0%)

Counts
1 → 27
Calls

9 calls:

TimeVariablePointExpression
0.0ms
x
@inf
(+.f64 x (*.f64 z (sin.f64 y)))
0.0ms
x
@0
(+.f64 x (*.f64 z (sin.f64 y)))
0.0ms
y
@0
(+.f64 x (*.f64 z (sin.f64 y)))
0.0ms
y
@inf
(+.f64 x (*.f64 z (sin.f64 y)))
0.0ms
x
@-inf
(+.f64 x (*.f64 z (sin.f64 y)))

rewrite83.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1612×bool.json-1
1612×bool.json-2
1574×rational.json-1
1574×rational.json-2
1070×bool.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
19217
226317
355517
4118117
5266417
6594517
Stop Event
node limit
Counts
1 → 21
Calls
Call 1
Inputs
(+.f64 x (*.f64 z (sin.f64 y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 z (sin.f64 y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 z (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 z (*.f64 (sin.f64 y) 1/2)) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 z (*.f64 (sin.f64 y) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 z (*.f64 (sin.f64 y) 2)) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 x x) (*.f64 z (*.f64 (sin.f64 y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 z (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 8)) (*.f64 2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (*.f64 z (sin.f64 y))) (+.f64 x (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (*.f64 z (sin.f64 y))) (+.f64 x (*.f64 z (sin.f64 y))))))))

simplify210.0ms (2.7%)

Algorithm
egg-herbie
Rules
2152×rational.json-simplify-1
1608×rational.json-simplify-2
1496×rational.json-simplify-52
992×rational.json-simplify-48
928×rational.json-simplify-35
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
074830
1148830
2342818
3724812
41125812
52409812
63225812
73386812
83834812
94644812
105066812
115273812
126089812
136817812
Stop Event
node limit
Counts
48 → 36
Calls
Call 1
Inputs
(*.f64 z (sin.f64 y))
x
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
x
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
x
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) z)) x)))
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(-.f64 (+.f64 x (*.f64 z (sin.f64 y))) 0)
(*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 1)
(*.f64 1 (+.f64 x (*.f64 z (sin.f64 y))))
(*.f64 2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 1/2))
(*.f64 2 (+.f64 (*.f64 z (*.f64 (sin.f64 y) 1/2)) (*.f64 x 1/2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 z (*.f64 (sin.f64 y) 1/2))))
(*.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 2))
(*.f64 1/2 (+.f64 (*.f64 z (*.f64 (sin.f64 y) 2)) (+.f64 x x)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 z (*.f64 (sin.f64 y) 2))))
(*.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4))
(*.f64 (/.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4) 4)
(/.f64 (+.f64 x (*.f64 z (sin.f64 y))) 1)
(/.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 2) 2)
(/.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4) 4)
(/.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 8)) (*.f64 2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 8))) 32)
Outputs
(*.f64 z (sin.f64 y))
x
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
x
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
x
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
x
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 z y))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) x))
(+.f64 (*.f64 z y) (+.f64 x (*.f64 -1/6 (*.f64 z (pow.f64 y 3)))))
(+.f64 x (+.f64 (*.f64 z y) (*.f64 (pow.f64 y 3) (*.f64 z -1/6))))
(+.f64 x (*.f64 z (+.f64 y (*.f64 -1/6 (pow.f64 y 3)))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) z)) x)))
(+.f64 (*.f64 z y) (+.f64 (*.f64 -1/6 (*.f64 z (pow.f64 y 3))) (+.f64 x (*.f64 1/120 (*.f64 z (pow.f64 y 5))))))
(+.f64 (*.f64 z y) (+.f64 (*.f64 (pow.f64 y 3) (*.f64 z -1/6)) (+.f64 x (*.f64 (pow.f64 y 5) (*.f64 z 1/120)))))
(+.f64 (+.f64 x (*.f64 z (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))) (*.f64 (pow.f64 y 5) (*.f64 z 1/120)))
(+.f64 x (*.f64 z (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))))
(+.f64 x (*.f64 z (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) (*.f64 -1/6 (pow.f64 y 3))))))
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(-.f64 (+.f64 x (*.f64 z (sin.f64 y))) 0)
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 1)
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 1 (+.f64 x (*.f64 z (sin.f64 y))))
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 1/2))
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 2 (+.f64 (*.f64 z (*.f64 (sin.f64 y) 1/2)) (*.f64 x 1/2)))
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 z (*.f64 (sin.f64 y) 1/2))))
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 2) 1/2)
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 4 (/.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4))
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4) 1/4)
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 2))
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 1/2 (+.f64 (*.f64 z (*.f64 (sin.f64 y) 2)) (+.f64 x x)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 z (*.f64 (sin.f64 y) 2))))
(*.f64 1/2 (+.f64 (*.f64 z (*.f64 (sin.f64 y) 2)) (+.f64 x x)))
(*.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 1/2) 2)
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4))
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 (/.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4) 4)
(+.f64 (*.f64 z (sin.f64 y)) x)
(/.f64 (+.f64 x (*.f64 z (sin.f64 y))) 1)
(+.f64 (*.f64 z (sin.f64 y)) x)
(/.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 2) 2)
(+.f64 (*.f64 z (sin.f64 y)) x)
(/.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 4) 4)
(+.f64 (*.f64 z (sin.f64 y)) x)
(/.f64 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 8) 8)
(+.f64 (*.f64 z (sin.f64 y)) x)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 8)) 16)
(+.f64 (*.f64 z (sin.f64 y)) x)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 8)) (*.f64 2 (*.f64 (+.f64 x (*.f64 z (sin.f64 y))) 8))) 32)
(+.f64 (*.f64 z (sin.f64 y)) x)

localize9.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(cos.f64 y)
0.0b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z y))
0.1b
(*.f64 x (cos.f64 y))
Compiler

Compiled 23 to 7 computations (69.6% saved)

series5.0ms (0.1%)

Counts
2 → 40
Calls

12 calls:

TimeVariablePointExpression
3.0ms
z
@-inf
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z y))
0.0ms
y
@-inf
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z y))
0.0ms
x
@0
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z y))
0.0ms
y
@inf
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z y))
0.0ms
z
@inf
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z y))

rewrite91.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1494×bool.json-1
1494×bool.json-2
1442×rational.json-1
1442×rational.json-2
1442×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01028
110028
226928
357828
4124228
5280628
6584228
Stop Event
node limit
Counts
2 → 41
Calls
Call 1
Inputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z y))
(cos.f64 y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y (*.f64 z 1/2)) (*.f64 (cos.f64 y) (/.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (cos.f64 y) (/.f64 x 2)) (*.f64 y (*.f64 z 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 z (+.f64 y y)) (*.f64 (cos.f64 y) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (cos.f64 y) (+.f64 x x)) (*.f64 z (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 8)) (*.f64 2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (cos.f64 y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 y) 1/2) (*.f64 (cos.f64 y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (cos.f64 y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cos.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (cos.f64 y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 y) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (cos.f64 y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 y) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (cos.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 y) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (cos.f64 y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cos.f64 y) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cos.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 y) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 y) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 y) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (cos.f64 y) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (cos.f64 y) 8)) (*.f64 2 (*.f64 (cos.f64 y) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x and (cos.f64 y) (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x or (cos.f64 y) (cos.f64 y))))))

simplify394.0ms (5.1%)

Algorithm
egg-herbie
Rules
2244×rational.json-simplify-2
1742×rational.json-simplify-35
1364×rational.json-simplify-53
1106×rational.json-simplify-1
678×rational.json-simplify-38
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01111499
12171499
25861499
314181493
423931493
533941493
634821493
735571493
836501493
937621493
1038861493
1148761493
1256421493
1360081493
1462241493
1564981493
1667201493
1768741493
1873411493
Stop Event
node limit
Counts
81 → 73
Calls
Call 1
Inputs
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
1
(+.f64 1 (*.f64 -1/2 (pow.f64 y 2)))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 y 2)) (*.f64 1/24 (pow.f64 y 4))))
(+.f64 (*.f64 -1/720 (pow.f64 y 6)) (+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 y 2)) (*.f64 1/24 (pow.f64 y 4)))))
(-.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 0)
(*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 1)
(*.f64 1 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)))
(*.f64 2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 1/2))
(*.f64 2 (+.f64 (*.f64 y (*.f64 z 1/2)) (*.f64 (cos.f64 y) (/.f64 x 2))))
(*.f64 2 (+.f64 (*.f64 (cos.f64 y) (/.f64 x 2)) (*.f64 y (*.f64 z 1/2))))
(*.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4))
(*.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 2))
(*.f64 1/2 (+.f64 (*.f64 z (+.f64 y y)) (*.f64 (cos.f64 y) (+.f64 x x))))
(*.f64 1/2 (+.f64 (*.f64 (cos.f64 y) (+.f64 x x)) (*.f64 z (+.f64 y y))))
(*.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4))
(*.f64 (/.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4) 4)
(/.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 1)
(/.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 8)) (*.f64 2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 8))) 32)
(+.f64 (cos.f64 y) 0)
(+.f64 0 (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) 1/2) (*.f64 (cos.f64 y) 1/2))
(-.f64 (cos.f64 y) 0)
(*.f64 (cos.f64 y) 1)
(*.f64 1 (cos.f64 y))
(*.f64 2 (*.f64 (cos.f64 y) 1/2))
(*.f64 (*.f64 (cos.f64 y) 2) 1/2)
(*.f64 4 (/.f64 (cos.f64 y) 4))
(*.f64 (*.f64 (cos.f64 y) 4) 1/4)
(*.f64 1/2 (*.f64 (cos.f64 y) 2))
(*.f64 (*.f64 (cos.f64 y) 1/2) 2)
(*.f64 1/4 (*.f64 (cos.f64 y) 4))
(*.f64 (/.f64 (cos.f64 y) 4) 4)
(/.f64 (cos.f64 y) 1)
(/.f64 (*.f64 (cos.f64 y) 2) 2)
(/.f64 (*.f64 (cos.f64 y) 4) 4)
(/.f64 (*.f64 (cos.f64 y) 8) 8)
(/.f64 (*.f64 2 (*.f64 (cos.f64 y) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (cos.f64 y) 8)) (*.f64 2 (*.f64 (cos.f64 y) 8))) 32)
Outputs
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 (pow.f64 y 2) (*.f64 x -1/2)) (+.f64 (*.f64 y z) x))
(+.f64 (+.f64 (*.f64 y z) x) (*.f64 (pow.f64 y 2) (*.f64 x -1/2)))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1/2 (*.f64 x (pow.f64 y 2)))))
(+.f64 x (+.f64 (*.f64 y z) (*.f64 (pow.f64 y 2) (*.f64 x -1/2))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x (*.f64 -1/2 (pow.f64 y 2)))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(+.f64 (*.f64 1/24 (*.f64 x (pow.f64 y 4))) (+.f64 (*.f64 (pow.f64 y 2) (*.f64 x -1/2)) (+.f64 (*.f64 y z) x)))
(+.f64 (+.f64 (+.f64 (*.f64 y z) x) (*.f64 (pow.f64 y 2) (*.f64 x -1/2))) (*.f64 x (*.f64 1/24 (pow.f64 y 4))))
(+.f64 (*.f64 y z) (+.f64 (+.f64 x (*.f64 -1/2 (*.f64 x (pow.f64 y 2)))) (*.f64 x (*.f64 1/24 (pow.f64 y 4)))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 x (+.f64 (*.f64 -1/2 (pow.f64 y 2)) (*.f64 1/24 (pow.f64 y 4))))))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
1
(+.f64 1 (*.f64 -1/2 (pow.f64 y 2)))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 y 2)) (*.f64 1/24 (pow.f64 y 4))))
(+.f64 (*.f64 -1/2 (pow.f64 y 2)) (+.f64 (*.f64 1/24 (pow.f64 y 4)) 1))
(+.f64 (*.f64 -1/2 (pow.f64 y 2)) (+.f64 1 (*.f64 1/24 (pow.f64 y 4))))
(+.f64 (*.f64 -1/720 (pow.f64 y 6)) (+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 y 2)) (*.f64 1/24 (pow.f64 y 4)))))
(+.f64 (+.f64 (*.f64 -1/2 (pow.f64 y 2)) (+.f64 (*.f64 1/24 (pow.f64 y 4)) 1)) (*.f64 -1/720 (pow.f64 y 6)))
(+.f64 (*.f64 -1/2 (pow.f64 y 2)) (+.f64 (+.f64 1 (*.f64 1/24 (pow.f64 y 4))) (*.f64 -1/720 (pow.f64 y 6))))
(+.f64 (+.f64 1 (*.f64 1/24 (pow.f64 y 4))) (+.f64 (*.f64 -1/720 (pow.f64 y 6)) (*.f64 -1/2 (pow.f64 y 2))))
(+.f64 (*.f64 -1/2 (pow.f64 y 2)) (+.f64 (*.f64 1/24 (pow.f64 y 4)) (+.f64 1 (*.f64 -1/720 (pow.f64 y 6)))))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 y 2)) (+.f64 (*.f64 1/24 (pow.f64 y 4)) (*.f64 -1/720 (pow.f64 y 6)))))
(+.f64 (*.f64 1/24 (pow.f64 y 4)) (+.f64 (*.f64 -1/2 (pow.f64 y 2)) (+.f64 1 (*.f64 -1/720 (pow.f64 y 6)))))
(-.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 0)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 1)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 1 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 1/2))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 2 (+.f64 (*.f64 y (*.f64 z 1/2)) (*.f64 (cos.f64 y) (/.f64 x 2))))
(*.f64 2 (+.f64 (*.f64 z (*.f64 1/2 y)) (*.f64 (cos.f64 y) (/.f64 x 2))))
(*.f64 2 (+.f64 (*.f64 z (*.f64 y 1/2)) (*.f64 (cos.f64 y) (/.f64 x 2))))
(*.f64 2 (+.f64 (*.f64 (cos.f64 y) (/.f64 x 2)) (*.f64 y (*.f64 z 1/2))))
(*.f64 2 (+.f64 (*.f64 z (*.f64 1/2 y)) (*.f64 (cos.f64 y) (/.f64 x 2))))
(*.f64 2 (+.f64 (*.f64 z (*.f64 y 1/2)) (*.f64 (cos.f64 y) (/.f64 x 2))))
(*.f64 2 (+.f64 (*.f64 y (*.f64 z 1/2)) (*.f64 (cos.f64 y) (/.f64 x 2))))
(*.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 2) 1/2)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 4 (/.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4) 1/4)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 2))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 1/2 (+.f64 (*.f64 z (+.f64 y y)) (*.f64 (cos.f64 y) (+.f64 x x))))
(*.f64 1/2 (+.f64 (*.f64 (cos.f64 y) (+.f64 x x)) (*.f64 y (+.f64 z z))))
(*.f64 1/2 (+.f64 (*.f64 (cos.f64 y) (+.f64 x x)) (*.f64 z (+.f64 y y))))
(*.f64 1/2 (+.f64 (*.f64 z (+.f64 y y)) (*.f64 (cos.f64 y) (+.f64 x x))))
(*.f64 1/2 (+.f64 (*.f64 (cos.f64 y) (+.f64 x x)) (*.f64 y (+.f64 z z))))
(*.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 1/2) 2)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 (/.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4) 4)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(/.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 1)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(/.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 2) 2)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(/.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 4) 4)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(/.f64 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 8) 8)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 8)) 16)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 8)) (*.f64 2 (*.f64 (+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) 8))) 32)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (cos.f64 y) 0)
(cos.f64 y)
(+.f64 0 (cos.f64 y))
(cos.f64 y)
(+.f64 (*.f64 (cos.f64 y) 1/2) (*.f64 (cos.f64 y) 1/2))
(cos.f64 y)
(-.f64 (cos.f64 y) 0)
(cos.f64 y)
(*.f64 (cos.f64 y) 1)
(cos.f64 y)
(*.f64 1 (cos.f64 y))
(cos.f64 y)
(*.f64 2 (*.f64 (cos.f64 y) 1/2))
(cos.f64 y)
(*.f64 (*.f64 (cos.f64 y) 2) 1/2)
(cos.f64 y)
(*.f64 4 (/.f64 (cos.f64 y) 4))
(cos.f64 y)
(*.f64 (*.f64 (cos.f64 y) 4) 1/4)
(cos.f64 y)
(*.f64 1/2 (*.f64 (cos.f64 y) 2))
(cos.f64 y)
(*.f64 (*.f64 (cos.f64 y) 1/2) 2)
(cos.f64 y)
(*.f64 1/4 (*.f64 (cos.f64 y) 4))
(cos.f64 y)
(*.f64 (/.f64 (cos.f64 y) 4) 4)
(cos.f64 y)
(/.f64 (cos.f64 y) 1)
(cos.f64 y)
(/.f64 (*.f64 (cos.f64 y) 2) 2)
(cos.f64 y)
(/.f64 (*.f64 (cos.f64 y) 4) 4)
(cos.f64 y)
(/.f64 (*.f64 (cos.f64 y) 8) 8)
(cos.f64 y)
(/.f64 (*.f64 2 (*.f64 (cos.f64 y) 8)) 16)
(cos.f64 y)
(/.f64 (+.f64 (*.f64 2 (*.f64 (cos.f64 y) 8)) (*.f64 2 (*.f64 (cos.f64 y) 8))) 32)
(cos.f64 y)

eval103.0ms (1.3%)

Compiler

Compiled 6467 to 3590 computations (44.5% saved)

prune72.0ms (0.9%)

Pruning

8 alts after pruning (4 fresh and 4 done)

PrunedKeptTotal
New4284432
Fresh000
Picked101
Done145
Total4308438
Error
0.1b
Counts
438 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
34.2b
(+.f64 (*.f64 y z) x)
0.1b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
16.7b
(+.f64 x (*.f64 z (sin.f64 y)))
25.9b
(*.f64 (cos.f64 y) x)
44.5b
(*.f64 z (+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1))
37.0b
(*.f64 z (sin.f64 y))
54.1b
(*.f64 z y)
41.7b
x
Compiler

Compiled 65 to 46 computations (29.2% saved)

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize13.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 y)
0.2b
(*.f64 z (+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1))
0.5b
(-.f64 1 (neg.f64 (sin.f64 y)))
3.4b
(+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1)
Compiler

Compiled 33 to 18 computations (45.5% saved)

localize5.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(cos.f64 y)
0.1b
(*.f64 (cos.f64 y) x)
Compiler

Compiled 11 to 5 computations (54.5% saved)

series0.0ms (0%)

Counts
1 → 4
Calls

6 calls:

TimeVariablePointExpression
0.0ms
y
@0
(*.f64 (cos.f64 y) x)
0.0ms
x
@inf
(*.f64 (cos.f64 y) x)
0.0ms
x
@-inf
(*.f64 (cos.f64 y) x)
0.0ms
y
@-inf
(*.f64 (cos.f64 y) x)
0.0ms
y
@inf
(*.f64 (cos.f64 y) x)

rewrite113.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
1254×rational.json-simplify-35
1246×bool.json-1
1246×bool.json-2
1194×rational.json-1
1194×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
17111
221011
346211
497711
5215011
6459811
7791011
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (cos.f64 y) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (cos.f64 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (cos.f64 y) (*.f64 x 1/2)) (*.f64 (cos.f64 y) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (cos.f64 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 y) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cos.f64 y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (cos.f64 y) x) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 y) x) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (cos.f64 y) x) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (cos.f64 y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (cos.f64 y) x) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (cos.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (cos.f64 y) x) (*.f64 (cos.f64 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (cos.f64 y) x) (*.f64 (cos.f64 y) x))))))

simplify576.0ms (7.4%)

Algorithm
egg-herbie
Rules
3620×rational.json-simplify-35
2214×rational.json-simplify-2
1134×rational.json-simplify-1
1048×rational.json-simplify-53
802×rational.json-simplify-43
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
053269
1123269
2251269
3526257
41986257
53614257
64429257
74810257
85016257
95238257
105471257
116055257
126468257
136661257
146770257
156801257
166987257
177317257
187512257
197705257
207898257
Stop Event
node limit
Counts
15 → 28
Calls
Call 1
Inputs
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(+.f64 (*.f64 (cos.f64 y) x) 0)
(+.f64 0 (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) (*.f64 x 1/2)) (*.f64 (cos.f64 y) (*.f64 x 1/2)))
(-.f64 (*.f64 (cos.f64 y) x) 0)
(/.f64 (*.f64 (cos.f64 y) x) 1)
(/.f64 (*.f64 (cos.f64 y) (+.f64 x x)) 2)
(/.f64 (*.f64 (cos.f64 y) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 (cos.f64 y) x) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 y) x) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (cos.f64 y) x) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (cos.f64 y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (cos.f64 y) x) 8)))) 64)
Outputs
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 x (*.f64 -1/2 (*.f64 x (pow.f64 y 2))))
(+.f64 x (*.f64 x (*.f64 -1/2 (pow.f64 y 2))))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 -1/2 (*.f64 x (pow.f64 y 2))) (+.f64 x (*.f64 1/24 (*.f64 x (pow.f64 y 4)))))
(+.f64 (*.f64 x (*.f64 -1/2 (pow.f64 y 2))) (+.f64 x (*.f64 1/24 (*.f64 x (pow.f64 y 4)))))
(+.f64 x (+.f64 (*.f64 x (*.f64 -1/2 (pow.f64 y 2))) (*.f64 (pow.f64 y 4) (*.f64 x 1/24))))
(+.f64 x (*.f64 x (+.f64 (*.f64 1/24 (pow.f64 y 4)) (*.f64 -1/2 (pow.f64 y 2)))))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(+.f64 (*.f64 1/24 (*.f64 x (pow.f64 y 4))) (+.f64 (+.f64 x (*.f64 -1/2 (*.f64 x (pow.f64 y 2)))) (*.f64 -1/720 (*.f64 x (pow.f64 y 6)))))
(+.f64 (*.f64 x (*.f64 -1/2 (pow.f64 y 2))) (+.f64 (+.f64 x (*.f64 1/24 (*.f64 x (pow.f64 y 4)))) (*.f64 x (*.f64 (pow.f64 y 6) -1/720))))
(+.f64 x (+.f64 (+.f64 (*.f64 x (*.f64 -1/2 (pow.f64 y 2))) (*.f64 (pow.f64 y 4) (*.f64 x 1/24))) (*.f64 x (*.f64 -1/720 (pow.f64 y 6)))))
(+.f64 x (+.f64 (*.f64 x (+.f64 (*.f64 -1/720 (pow.f64 y 6)) (*.f64 -1/2 (pow.f64 y 2)))) (*.f64 x (*.f64 1/24 (pow.f64 y 4)))))
(+.f64 (*.f64 x (*.f64 1/24 (pow.f64 y 4))) (+.f64 x (*.f64 x (+.f64 (*.f64 -1/720 (pow.f64 y 6)) (*.f64 -1/2 (pow.f64 y 2))))))
(+.f64 x (+.f64 (*.f64 x (*.f64 -1/2 (pow.f64 y 2))) (*.f64 x (+.f64 (*.f64 -1/720 (pow.f64 y 6)) (*.f64 1/24 (pow.f64 y 4))))))
(+.f64 (*.f64 (cos.f64 y) x) 0)
(*.f64 x (cos.f64 y))
(+.f64 0 (*.f64 (cos.f64 y) x))
(*.f64 x (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) (*.f64 x 1/2)) (*.f64 (cos.f64 y) (*.f64 x 1/2)))
(*.f64 x (cos.f64 y))
(-.f64 (*.f64 (cos.f64 y) x) 0)
(*.f64 x (cos.f64 y))
(/.f64 (*.f64 (cos.f64 y) x) 1)
(*.f64 x (cos.f64 y))
(/.f64 (*.f64 (cos.f64 y) (+.f64 x x)) 2)
(*.f64 x (cos.f64 y))
(/.f64 (*.f64 (cos.f64 y) (*.f64 x 4)) 4)
(*.f64 x (cos.f64 y))
(/.f64 (*.f64 (*.f64 (cos.f64 y) x) 8) 8)
(*.f64 x (cos.f64 y))
(/.f64 (*.f64 2 (*.f64 (*.f64 (cos.f64 y) x) 8)) 16)
(*.f64 x (cos.f64 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (cos.f64 y) x) 8))) 32)
(*.f64 x (cos.f64 y))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (cos.f64 y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (cos.f64 y) x) 8)))) 64)
(*.f64 x (cos.f64 y))

eval53.0ms (0.7%)

Compiler

Compiled 2893 to 2002 computations (30.8% saved)

prune38.0ms (0.5%)

Pruning

9 alts after pruning (3 fresh and 6 done)

PrunedKeptTotal
New2362238
Fresh011
Picked011
Done156
Total2379246
Error
0.1b
Counts
246 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
34.2b
(+.f64 (*.f64 y z) x)
0.1b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
16.7b
(+.f64 x (*.f64 z (sin.f64 y)))
25.9b
(*.f64 (cos.f64 y) x)
44.6b
(*.f64 z (-.f64 (+.f64 (sin.f64 y) 2) 2))
62.1b
(*.f64 z (+.f64 1 -1))
37.0b
(*.f64 z (sin.f64 y))
54.1b
(*.f64 z y)
41.7b
x
Compiler

Compiled 72 to 52 computations (27.8% saved)

localize5.0ms (0.1%)

Compiler

Compiled 14 to 12 computations (14.3% saved)

localize11.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 y)
0.1b
(+.f64 (sin.f64 y) 2)
0.2b
(*.f64 z (-.f64 (+.f64 (sin.f64 y) 2) 2))
3.7b
(-.f64 (+.f64 (sin.f64 y) 2) 2)
Compiler

Compiled 26 to 16 computations (38.5% saved)

series2.0ms (0%)

Counts
3 → 48
Calls

12 calls:

TimeVariablePointExpression
1.0ms
y
@-inf
(+.f64 (sin.f64 y) 2)
0.0ms
y
@0
(-.f64 (+.f64 (sin.f64 y) 2) 2)
0.0ms
y
@0
(*.f64 z (-.f64 (+.f64 (sin.f64 y) 2) 2))
0.0ms
y
@0
(+.f64 (sin.f64 y) 2)
0.0ms
y
@inf
(+.f64 (sin.f64 y) 2)

rewrite91.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1676×bool.json-1
1676×bool.json-2
1634×rational.json-1
1104×bool.json-3
848×rational.json-2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01051
110327
229527
358527
4125127
5287227
6633027
Stop Event
node limit
Counts
3 → 64
Calls
Call 1
Inputs
(-.f64 (+.f64 (sin.f64 y) 2) 2)
(*.f64 z (-.f64 (+.f64 (sin.f64 y) 2) 2))
(+.f64 (sin.f64 y) 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (sin.f64 y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 2 (+.f64 (sin.f64 y) -2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (sin.f64 y) 2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (sin.f64 y) -2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 4 (+.f64 (sin.f64 y) -4))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (sin.f64 y) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (+.f64 (sin.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (sin.f64 y) -4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (neg.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 6 (+.f64 (+.f64 (sin.f64 y) -2) -4))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 y) 1/2) (*.f64 (sin.f64 y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (sin.f64 y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (sin.f64 y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (sin.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (neg.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (sin.f64 y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (sin.f64 y) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sin.f64 y) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sin.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (sin.f64 y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sin.f64 y) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (sin.f64 y)) (neg.f64 (sin.f64 y))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (sin.f64 y) 8)) (*.f64 2 (*.f64 (sin.f64 y) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x sin.f64 y)))) (#(struct:change #<rule egg-rr> (2) ((x sin.f64 (-.f64 (PI.f64) y))))) (#(struct:change #<rule egg-rr> (2) ((x sin.f64 (+.f64 y (*.f64 (PI.f64) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x and (sin.f64 y) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x or (sin.f64 y) (sin.f64 y))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 y) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sin.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sin.f64 y) (/.f64 z 2)) (*.f64 (sin.f64 y) (/.f64 z 2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sin.f64 y) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) (+.f64 z z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sin.f64 y) (*.f64 z 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (sin.f64 y) z) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 y) z) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 y) z) 8)) (*.f64 2 (*.f64 (*.f64 (sin.f64 y) z) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (sin.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (sin.f64 y) z) (*.f64 (sin.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (sin.f64 y) z) (*.f64 (sin.f64 y) z))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (sin.f64 y) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (sin.f64 y) 2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sin.f64 y) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (sin.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (sin.f64 y) 2) 4) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (sin.f64 y) 2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (sin.f64 y) 2) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (sin.f64 y) 2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (sin.f64 y) 2) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (sin.f64 y) 2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (sin.f64 y) 2) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (sin.f64 y) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (sin.f64 y) 2) 4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (sin.f64 y) 2) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (sin.f64 y) 2) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (sin.f64 y) 2) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (sin.f64 y) 2) 8)) (*.f64 2 (*.f64 (+.f64 (sin.f64 y) 2) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (sin.f64 y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (sin.f64 y) 2) (+.f64 (sin.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (sin.f64 y) 2) (+.f64 (sin.f64 y) 2))))))

simplify210.0ms (2.7%)

Algorithm
egg-herbie
Rules
1744×rational.json-simplify-1
1598×rational.json-simplify-35
1102×rational.json-simplify-53
1062×rational.json-simplify-51
828×rational.json-simplify-2
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01571204
13121204
28851186
322881174
441021174
552221174
658681174
765171174
870981174
974171174
Stop Event
node limit
Counts
112 → 103
Calls
Call 1
Inputs
y
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 y (*.f64 -1/5040 (pow.f64 y 7)))))
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 y z)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 y z))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (*.f64 1/120 (*.f64 (pow.f64 y 5) z))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) z)) (*.f64 1/120 (*.f64 (pow.f64 y 5) z)))))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
2
(+.f64 2 y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 2 y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 2 (+.f64 y (*.f64 1/120 (pow.f64 y 5)))))
(+.f64 2 (sin.f64 y))
(+.f64 2 (sin.f64 y))
(+.f64 2 (sin.f64 y))
(+.f64 2 (sin.f64 y))
(+.f64 2 (sin.f64 y))
(+.f64 2 (sin.f64 y))
(+.f64 2 (sin.f64 y))
(+.f64 2 (sin.f64 y))
(+.f64 (sin.f64 y) 0)
(+.f64 2 (+.f64 (sin.f64 y) -2))
(+.f64 (+.f64 (sin.f64 y) 2) -2)
(+.f64 0 (sin.f64 y))
(+.f64 (+.f64 (sin.f64 y) -2) 2)
(+.f64 4 (+.f64 (sin.f64 y) -4))
(+.f64 (+.f64 (sin.f64 y) 4) -4)
(+.f64 -2 (+.f64 (sin.f64 y) 2))
(+.f64 (+.f64 (sin.f64 y) -4) 4)
(+.f64 -1 (-.f64 1 (neg.f64 (sin.f64 y))))
(+.f64 6 (+.f64 (+.f64 (sin.f64 y) -2) -4))
(+.f64 (*.f64 (sin.f64 y) 1/2) (*.f64 (sin.f64 y) 1/2))
(+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1)
(*.f64 (sin.f64 y) 1)
(*.f64 2 (*.f64 (sin.f64 y) 1/2))
(*.f64 1 (sin.f64 y))
(*.f64 (*.f64 (sin.f64 y) 2) 1/2)
(*.f64 4 (/.f64 (sin.f64 y) 4))
(*.f64 (*.f64 (sin.f64 y) 4) 1/4)
(*.f64 1/2 (*.f64 (sin.f64 y) 2))
(*.f64 -1 (neg.f64 (sin.f64 y)))
(*.f64 (*.f64 (sin.f64 y) 1/2) 2)
(*.f64 (neg.f64 (sin.f64 y)) -1)
(*.f64 1/4 (*.f64 (sin.f64 y) 4))
(*.f64 (/.f64 (sin.f64 y) 4) 4)
(/.f64 (sin.f64 y) 1)
(/.f64 (*.f64 (sin.f64 y) 2) 2)
(/.f64 (*.f64 (sin.f64 y) 4) 4)
(/.f64 (*.f64 (sin.f64 y) 8) 8)
(/.f64 (neg.f64 (sin.f64 y)) -1)
(/.f64 (*.f64 2 (*.f64 (sin.f64 y) 8)) 16)
(/.f64 (+.f64 (neg.f64 (sin.f64 y)) (neg.f64 (sin.f64 y))) -2)
(/.f64 (+.f64 (*.f64 2 (*.f64 (sin.f64 y) 8)) (*.f64 2 (*.f64 (sin.f64 y) 8))) 32)
(neg.f64 (neg.f64 (sin.f64 y)))
(sin.f64 y)
(sin.f64 (-.f64 (PI.f64) y))
(sin.f64 (+.f64 y (*.f64 (PI.f64) -2)))
(+.f64 (*.f64 (sin.f64 y) z) 0)
(+.f64 0 (*.f64 (sin.f64 y) z))
(+.f64 (*.f64 (sin.f64 y) (/.f64 z 2)) (*.f64 (sin.f64 y) (/.f64 z 2)))
(-.f64 (*.f64 (sin.f64 y) z) 0)
(/.f64 (*.f64 (sin.f64 y) z) 1)
(/.f64 (*.f64 (sin.f64 y) (+.f64 z z)) 2)
(/.f64 (*.f64 (sin.f64 y) (*.f64 z 4)) 4)
(/.f64 (*.f64 (*.f64 (sin.f64 y) z) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 y) z) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 y) z) 8)) (*.f64 2 (*.f64 (*.f64 (sin.f64 y) z) 8))) 32)
(-.f64 (+.f64 (sin.f64 y) 2) 0)
(*.f64 2 (*.f64 (+.f64 (sin.f64 y) 2) 1/2))
(*.f64 (+.f64 (sin.f64 y) 2) 1)
(*.f64 1 (+.f64 (sin.f64 y) 2))
(*.f64 (+.f64 (*.f64 (sin.f64 y) 2) 4) 1/2)
(*.f64 4 (/.f64 (+.f64 (sin.f64 y) 2) 4))
(*.f64 (*.f64 (+.f64 (sin.f64 y) 2) 4) 1/4)
(*.f64 1/2 (+.f64 (*.f64 (sin.f64 y) 2) 4))
(*.f64 (*.f64 (+.f64 (sin.f64 y) 2) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (sin.f64 y) 2) 4))
(*.f64 (/.f64 (+.f64 (sin.f64 y) 2) 4) 4)
(/.f64 (+.f64 (sin.f64 y) 2) 1)
(/.f64 (+.f64 (*.f64 (sin.f64 y) 2) 4) 2)
(/.f64 (*.f64 (+.f64 (sin.f64 y) 2) 4) 4)
(/.f64 (*.f64 (+.f64 (sin.f64 y) 2) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (sin.f64 y) 2) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (sin.f64 y) 2) 8)) (*.f64 2 (*.f64 (+.f64 (sin.f64 y) 2) 8))) 32)
Outputs
y
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(+.f64 y (*.f64 -1/6 (pow.f64 y 3)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (*.f64 1/120 (pow.f64 y 5))))
(+.f64 y (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (*.f64 1/120 (pow.f64 y 5))))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 y (*.f64 -1/5040 (pow.f64 y 7)))))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 -1/5040 (pow.f64 y 7)) (*.f64 1/120 (pow.f64 y 5)))))
(+.f64 y (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (*.f64 -1/5040 (pow.f64 y 7)))))
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 y z)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 y z))
(+.f64 (*.f64 y z) (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)))
(*.f64 z (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))
(*.f64 (+.f64 y (*.f64 -1/6 (pow.f64 y 3))) z)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (*.f64 1/120 (*.f64 (pow.f64 y 5) z))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) z)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) z))))
(+.f64 (*.f64 (pow.f64 y 3) (*.f64 -1/6 z)) (*.f64 z (+.f64 y (*.f64 1/120 (pow.f64 y 5)))))
(*.f64 z (+.f64 y (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (*.f64 1/120 (pow.f64 y 5)))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) z)) (*.f64 1/120 (*.f64 (pow.f64 y 5) z)))))
(+.f64 (*.f64 y z) (+.f64 (+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) z)) (*.f64 (pow.f64 y 7) (*.f64 z -1/5040))) (*.f64 -1/6 (*.f64 (pow.f64 y 3) z))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) z)) (*.f64 -1/5040 (*.f64 (pow.f64 y 7) z)))))
(+.f64 (*.f64 (pow.f64 y 3) (*.f64 -1/6 z)) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) z)) (*.f64 z (+.f64 y (*.f64 -1/5040 (pow.f64 y 7))))))
(+.f64 (*.f64 z (+.f64 y (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (*.f64 1/120 (pow.f64 y 5))))) (*.f64 (pow.f64 y 7) (*.f64 -1/5040 z)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 z (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 y (*.f64 -1/5040 (pow.f64 y 7))))))
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
(*.f64 z (sin.f64 y))
(*.f64 (sin.f64 y) z)
2
(+.f64 2 y)
(+.f64 y 2)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 2 y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y 2))
(+.f64 y (+.f64 2 (*.f64 -1/6 (pow.f64 y 3))))
(+.f64 y (+.f64 (*.f64 -1/6 (pow.f64 y 3)) 2))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 2 (+.f64 y (*.f64 1/120 (pow.f64 y 5)))))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) 2)))
(+.f64 y (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) 2)))
(+.f64 2 (sin.f64 y))
(+.f64 (sin.f64 y) 2)
(+.f64 2 (sin.f64 y))
(+.f64 (sin.f64 y) 2)
(+.f64 2 (sin.f64 y))
(+.f64 (sin.f64 y) 2)
(+.f64 2 (sin.f64 y))
(+.f64 (sin.f64 y) 2)
(+.f64 2 (sin.f64 y))
(+.f64 (sin.f64 y) 2)
(+.f64 2 (sin.f64 y))
(+.f64 (sin.f64 y) 2)
(+.f64 2 (sin.f64 y))
(+.f64 (sin.f64 y) 2)
(+.f64 2 (sin.f64 y))
(+.f64 (sin.f64 y) 2)
(+.f64 (sin.f64 y) 0)
(sin.f64 y)
(+.f64 2 (+.f64 (sin.f64 y) -2))
(sin.f64 y)
(+.f64 (+.f64 (sin.f64 y) 2) -2)
(sin.f64 y)
(+.f64 0 (sin.f64 y))
(sin.f64 y)
(+.f64 (+.f64 (sin.f64 y) -2) 2)
(sin.f64 y)
(+.f64 4 (+.f64 (sin.f64 y) -4))
(sin.f64 y)
(+.f64 (+.f64 (sin.f64 y) 4) -4)
(sin.f64 y)
(+.f64 -2 (+.f64 (sin.f64 y) 2))
(sin.f64 y)
(+.f64 (+.f64 (sin.f64 y) -4) 4)
(sin.f64 y)
(+.f64 -1 (-.f64 1 (neg.f64 (sin.f64 y))))
(sin.f64 y)
(+.f64 6 (+.f64 (+.f64 (sin.f64 y) -2) -4))
(sin.f64 y)
(+.f64 (*.f64 (sin.f64 y) 1/2) (*.f64 (sin.f64 y) 1/2))
(sin.f64 y)
(+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1)
(sin.f64 y)
(*.f64 (sin.f64 y) 1)
(sin.f64 y)
(*.f64 2 (*.f64 (sin.f64 y) 1/2))
(sin.f64 y)
(*.f64 1 (sin.f64 y))
(sin.f64 y)
(*.f64 (*.f64 (sin.f64 y) 2) 1/2)
(sin.f64 y)
(*.f64 4 (/.f64 (sin.f64 y) 4))
(sin.f64 y)
(*.f64 (*.f64 (sin.f64 y) 4) 1/4)
(sin.f64 y)
(*.f64 1/2 (*.f64 (sin.f64 y) 2))
(sin.f64 y)
(*.f64 -1 (neg.f64 (sin.f64 y)))
(sin.f64 y)
(*.f64 (*.f64 (sin.f64 y) 1/2) 2)
(sin.f64 y)
(*.f64 (neg.f64 (sin.f64 y)) -1)
(sin.f64 y)
(*.f64 1/4 (*.f64 (sin.f64 y) 4))
(sin.f64 y)
(*.f64 (/.f64 (sin.f64 y) 4) 4)
(sin.f64 y)
(/.f64 (sin.f64 y) 1)
(sin.f64 y)
(/.f64 (*.f64 (sin.f64 y) 2) 2)
(sin.f64 y)
(/.f64 (*.f64 (sin.f64 y) 4) 4)
(sin.f64 y)
(/.f64 (*.f64 (sin.f64 y) 8) 8)
(sin.f64 y)
(/.f64 (neg.f64 (sin.f64 y)) -1)
(sin.f64 y)
(/.f64 (*.f64 2 (*.f64 (sin.f64 y) 8)) 16)
(sin.f64 y)
(/.f64 (+.f64 (neg.f64 (sin.f64 y)) (neg.f64 (sin.f64 y))) -2)
(sin.f64 y)
(/.f64 (+.f64 (*.f64 2 (*.f64 (sin.f64 y) 8)) (*.f64 2 (*.f64 (sin.f64 y) 8))) 32)
(sin.f64 y)
(neg.f64 (neg.f64 (sin.f64 y)))
(sin.f64 y)
(sin.f64 y)
(sin.f64 (-.f64 (PI.f64) y))
(sin.f64 y)
(sin.f64 (+.f64 y (*.f64 (PI.f64) -2)))
(sin.f64 (+.f64 y (*.f64 -2 (PI.f64))))
(+.f64 (*.f64 (sin.f64 y) z) 0)
(*.f64 (sin.f64 y) z)
(+.f64 0 (*.f64 (sin.f64 y) z))
(*.f64 (sin.f64 y) z)
(+.f64 (*.f64 (sin.f64 y) (/.f64 z 2)) (*.f64 (sin.f64 y) (/.f64 z 2)))
(*.f64 (sin.f64 y) z)
(-.f64 (*.f64 (sin.f64 y) z) 0)
(*.f64 (sin.f64 y) z)
(/.f64 (*.f64 (sin.f64 y) z) 1)
(*.f64 (sin.f64 y) z)
(/.f64 (*.f64 (sin.f64 y) (+.f64 z z)) 2)
(*.f64 (sin.f64 y) z)
(/.f64 (*.f64 (sin.f64 y) (*.f64 z 4)) 4)
(*.f64 (sin.f64 y) z)
(/.f64 (*.f64 (*.f64 (sin.f64 y) z) 8) 8)
(*.f64 (sin.f64 y) z)
(/.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 y) z) 8)) 16)
(*.f64 (sin.f64 y) z)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 (sin.f64 y) z) 8)) (*.f64 2 (*.f64 (*.f64 (sin.f64 y) z) 8))) 32)
(*.f64 (sin.f64 y) z)
(-.f64 (+.f64 (sin.f64 y) 2) 0)
(+.f64 (sin.f64 y) 2)
(*.f64 2 (*.f64 (+.f64 (sin.f64 y) 2) 1/2))
(+.f64 (sin.f64 y) 2)
(*.f64 (+.f64 (sin.f64 y) 2) 1)
(+.f64 (sin.f64 y) 2)
(*.f64 1 (+.f64 (sin.f64 y) 2))
(+.f64 (sin.f64 y) 2)
(*.f64 (+.f64 (*.f64 (sin.f64 y) 2) 4) 1/2)
(+.f64 (sin.f64 y) 2)
(*.f64 4 (/.f64 (+.f64 (sin.f64 y) 2) 4))
(+.f64 (sin.f64 y) 2)
(*.f64 (*.f64 (+.f64 (sin.f64 y) 2) 4) 1/4)
(+.f64 (sin.f64 y) 2)
(*.f64 1/2 (+.f64 (*.f64 (sin.f64 y) 2) 4))
(+.f64 (sin.f64 y) 2)
(*.f64 (*.f64 (+.f64 (sin.f64 y) 2) 1/2) 2)
(+.f64 (sin.f64 y) 2)
(*.f64 1/4 (*.f64 (+.f64 (sin.f64 y) 2) 4))
(+.f64 (sin.f64 y) 2)
(*.f64 (/.f64 (+.f64 (sin.f64 y) 2) 4) 4)
(+.f64 (sin.f64 y) 2)
(/.f64 (+.f64 (sin.f64 y) 2) 1)
(+.f64 (sin.f64 y) 2)
(/.f64 (+.f64 (*.f64 (sin.f64 y) 2) 4) 2)
(+.f64 (sin.f64 y) 2)
(/.f64 (*.f64 (+.f64 (sin.f64 y) 2) 4) 4)
(+.f64 (sin.f64 y) 2)
(/.f64 (*.f64 (+.f64 (sin.f64 y) 2) 8) 8)
(+.f64 (sin.f64 y) 2)
(/.f64 (*.f64 2 (*.f64 (+.f64 (sin.f64 y) 2) 8)) 16)
(+.f64 (sin.f64 y) 2)
(/.f64 (+.f64 (*.f64 2 (*.f64 (+.f64 (sin.f64 y) 2) 8)) (*.f64 2 (*.f64 (+.f64 (sin.f64 y) 2) 8))) 32)
(+.f64 (sin.f64 y) 2)

eval32.0ms (0.4%)

Compiler

Compiled 1668 to 1141 computations (31.6% saved)

prune23.0ms (0.3%)

Pruning

11 alts after pruning (3 fresh and 8 done)

PrunedKeptTotal
New1392141
Fresh011
Picked011
Done077
Total13911150
Error
0.1b
Counts
150 → 11
Alt Table
Click to see full alt table
StatusErrorProgram
34.2b
(+.f64 (*.f64 y z) x)
0.1b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
16.7b
(+.f64 x (*.f64 z (sin.f64 y)))
25.9b
(*.f64 (cos.f64 y) x)
44.6b
(*.f64 z (-.f64 (+.f64 (sin.f64 y) 2) 2))
61.4b
(*.f64 z (-.f64 (+.f64 y 2) 2))
44.8b
(*.f64 z (+.f64 6 (+.f64 (+.f64 (sin.f64 y) -2) -4)))
62.1b
(*.f64 z (+.f64 1 -1))
37.0b
(*.f64 z (sin.f64 y))
54.1b
(*.f64 z y)
41.7b
x
Compiler

Compiled 95 to 71 computations (25.3% saved)

regimes32.0ms (0.4%)

Counts
14 → 1
Calls
Call 1
Inputs
x
(*.f64 z y)
(*.f64 z (+.f64 1 -1))
(+.f64 (*.f64 y z) x)
(*.f64 z (-.f64 (+.f64 y 2) 2))
(*.f64 z (sin.f64 y))
(*.f64 (cos.f64 y) x)
(+.f64 x (*.f64 z (sin.f64 y)))
(*.f64 z (-.f64 (+.f64 (sin.f64 y) 2) 2))
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z y))
(*.f64 z (+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1))
(*.f64 z (+.f64 6 (+.f64 (+.f64 (sin.f64 y) -2) -4)))
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1)))
Outputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
Calls

4 calls:

8.0ms
z
7.0ms
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
7.0ms
y
7.0ms
x
Results
ErrorSegmentsBranch
0.1b1x
0.1b1y
0.1b1z
0.1b1(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
Compiler

Compiled 120 to 64 computations (46.7% saved)

regimes87.0ms (1.1%)

Counts
12 → 3
Calls
Call 1
Inputs
x
(*.f64 z y)
(*.f64 z (+.f64 1 -1))
(+.f64 (*.f64 y z) x)
(*.f64 z (-.f64 (+.f64 y 2) 2))
(*.f64 z (sin.f64 y))
(*.f64 (cos.f64 y) x)
(+.f64 x (*.f64 z (sin.f64 y)))
(*.f64 z (-.f64 (+.f64 (sin.f64 y) 2) 2))
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z y))
(*.f64 z (+.f64 (-.f64 1 (neg.f64 (sin.f64 y))) -1))
(*.f64 z (+.f64 6 (+.f64 (+.f64 (sin.f64 y) -2) -4)))
Outputs
(*.f64 (cos.f64 y) x)
(+.f64 x (*.f64 z (sin.f64 y)))
(*.f64 (cos.f64 y) x)
Calls

3 calls:

46.0ms
y
20.0ms
z
18.0ms
x
Results
ErrorSegmentsBranch
7.7b3x
10.7b7y
9.1b3z
Compiler

Compiled 85 to 49 computations (42.4% saved)

bsearch62.0ms (0.8%)

Algorithm
binary-search
Steps
TimeLeftRight
25.0ms
1.0360179452069724e+39
1.2050067684050333e+40
36.0ms
-2.002576489452528e+156
-1.1976594960232068e+150
Results
26.0ms58×body1024valid
23.0ms145×body256valid
10.0ms37×body512valid
Compiler

Compiled 288 to 208 computations (27.8% saved)

regimes77.0ms (1%)

Counts
7 → 5
Calls
Call 1
Inputs
x
(*.f64 z y)
(*.f64 z (+.f64 1 -1))
(+.f64 (*.f64 y z) x)
(*.f64 z (-.f64 (+.f64 y 2) 2))
(*.f64 z (sin.f64 y))
(*.f64 (cos.f64 y) x)
Outputs
(*.f64 (cos.f64 y) x)
(*.f64 z (sin.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 z (sin.f64 y))
(*.f64 (cos.f64 y) x)
Calls

3 calls:

29.0ms
y
25.0ms
z
21.0ms
x
Results
ErrorSegmentsBranch
12.4b5x
13.2b6y
15.7b5z
Compiler

Compiled 44 to 28 computations (36.4% saved)

bsearch123.0ms (1.6%)

Algorithm
binary-search
Steps
TimeLeftRight
24.0ms
1.0360179452069724e+39
1.2050067684050333e+40
40.0ms
7.103727271466633e-9
361752.39529415243
22.0ms
1.2187408289554633e-90
3.402846960270879e-90
38.0ms
-9.963679527930343e-17
-1.1768597288447482e-24
Results
52.0ms125×body1024valid
46.0ms285×body256valid
20.0ms70×body512valid
Compiler

Compiled 498 to 373 computations (25.1% saved)

regimes341.0ms (4.4%)

Counts
6 → 3
Calls
Call 1
Inputs
x
(*.f64 z y)
(*.f64 z (+.f64 1 -1))
(+.f64 (*.f64 y z) x)
(*.f64 z (-.f64 (+.f64 y 2) 2))
(*.f64 z (sin.f64 y))
Outputs
(*.f64 z (sin.f64 y))
(+.f64 (*.f64 y z) x)
(*.f64 z (sin.f64 y))
Calls

3 calls:

179.0ms
x
146.0ms
y
14.0ms
z
Results
ErrorSegmentsBranch
26.4b3x
18.0b3y
27.2b3z
Compiler

Compiled 40 to 26 computations (35% saved)

bsearch29.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
23.0ms
802218.0443287347
4026122207.468995
6.0ms
-793397.5379758866
-712437.9739472561
Results
25.0ms160×body256valid
Compiler

Compiled 188 to 133 computations (29.3% saved)

regimes13.0ms (0.2%)

Counts
5 → 1
Calls
Call 1
Inputs
x
(*.f64 z y)
(*.f64 z (+.f64 1 -1))
(+.f64 (*.f64 y z) x)
(*.f64 z (-.f64 (+.f64 y 2) 2))
Outputs
(+.f64 (*.f64 y z) x)
Calls

3 calls:

4.0ms
z
4.0ms
x
4.0ms
y
Results
ErrorSegmentsBranch
34.2b1x
34.2b1y
34.2b1z
Compiler

Compiled 36 to 24 computations (33.3% saved)

regimes76.0ms (1%)

Accuracy

Total -24.2b remaining (-62.9%)

Threshold costs -24.2b (-62.9%)

Counts
3 → 3
Calls
Call 1
Inputs
x
(*.f64 z y)
(*.f64 z (+.f64 1 -1))
Outputs
x
(*.f64 z y)
x
Calls

3 calls:

63.0ms
y
9.0ms
x
3.0ms
z
Results
ErrorSegmentsBranch
38.5b3x
40.6b3y
41.7b1z
Compiler

Compiled 24 to 17 computations (29.2% saved)

bsearch215.0ms (2.8%)

Algorithm
binary-search
Steps
TimeLeftRight
182.0ms
1.2597865723105145e-253
1.0621364758699423e-244
33.0ms
-2.5603412135012383e-26
-4.322801147823336e-30
Results
177.0ms82×body1024valid
23.0ms145×body256valid
13.0ms45×body512valid
Compiler

Compiled 222 to 166 computations (25.2% saved)

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
049269
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
(if (<=.f64 x -1200000000000000013344651621705194036153934411236609269391465806550823148718924258603522328009361548664795008007589484566806519110758981414610129649664) (*.f64 (cos.f64 y) x) (if (<=.f64 x 2600000000000000054805850998728369897472) (+.f64 x (*.f64 z (sin.f64 y))) (*.f64 (cos.f64 y) x)))
(if (<=.f64 x -584860318145363/5316911983139663491615228241121378304) (*.f64 (cos.f64 y) x) (if (<=.f64 x 3554922854784611/2293498615990071511610820895302086940796564989168281123737588839386922876088484808070018553110125686554624) (*.f64 z (sin.f64 y)) (if (<=.f64 x 330000) (*.f64 (cos.f64 y) x) (if (<=.f64 x 1049999999999999929138838317591905173504) (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x)))))
(if (<=.f64 y -720000) (*.f64 z (sin.f64 y)) (if (<=.f64 y 820000) (+.f64 (*.f64 y z) x) (*.f64 z (sin.f64 y))))
(+.f64 (*.f64 y z) x)
(if (<=.f64 x -6279889847906223/1427247692705959881058285969449495136382746624) x (if (<=.f64 x 2921324948424485/30750788930784052141961861920805916103932967295178766486232675904563738880488373075752592173385037335955677262580553574888172300969173988400174943873597051535522721474932336956770829721145939608862637129391729156728137068727028191720507858482133392040241659904) (*.f64 z y) x))
x
Outputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
(if (<=.f64 x -1200000000000000013344651621705194036153934411236609269391465806550823148718924258603522328009361548664795008007589484566806519110758981414610129649664) (*.f64 (cos.f64 y) x) (if (<=.f64 x 2600000000000000054805850998728369897472) (+.f64 x (*.f64 z (sin.f64 y))) (*.f64 (cos.f64 y) x)))
(if (<=.f64 x -584860318145363/5316911983139663491615228241121378304) (*.f64 (cos.f64 y) x) (if (<=.f64 x 3554922854784611/2293498615990071511610820895302086940796564989168281123737588839386922876088484808070018553110125686554624) (*.f64 z (sin.f64 y)) (if (<=.f64 x 330000) (*.f64 (cos.f64 y) x) (if (<=.f64 x 1049999999999999929138838317591905173504) (*.f64 z (sin.f64 y)) (*.f64 (cos.f64 y) x)))))
(if (<=.f64 y -720000) (*.f64 z (sin.f64 y)) (if (<=.f64 y 820000) (+.f64 (*.f64 y z) x) (*.f64 z (sin.f64 y))))
(+.f64 (*.f64 y z) x)
(if (<=.f64 x -6279889847906223/1427247692705959881058285969449495136382746624) x (if (<=.f64 x 2921324948424485/30750788930784052141961861920805916103932967295178766486232675904563738880488373075752592173385037335955677262580553574888172300969173988400174943873597051535522721474932336956770829721145939608862637129391729156728137068727028191720507858482133392040241659904) (*.f64 z y) x))
x
Compiler

Compiled 128 to 72 computations (43.8% saved)

soundness0.0ms (0%)

end45.0ms (0.6%)

Compiler

Compiled 110 to 43 computations (60.9% saved)

Profiling

Loading profile data...