Details

Time bar (total: 10.4s)

analyze326.0ms (3.1%)

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

Compiled 13 to 9 computations (30.8% saved)

sample3.0s (28.4%)

Results
1.6s6152×body256valid
977.0ms1392×body1024valid
343.0ms705×body512valid
8.0msbody2048valid

preprocess18.0ms (0.2%)

Algorithm
egg-herbie
Rules
24×fma-def_binary64
20×+-commutative_binary64
12×associate-+r+_binary64
12×associate-+l+_binary64
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02256
14248
27848
310248
033
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(+.f64 (+.f64 y (sin.f64 x)) (*.f64 z (cos.f64 x)))
(+.f64 (+.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y)))
(+.f64 (+.f64 x (sin.f64 z)) (*.f64 y (cos.f64 z)))
Outputs
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(+.f64 x (+.f64 (sin.f64 y) (*.f64 z (cos.f64 y))))
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (+.f64 y (sin.f64 x)) (*.f64 z (cos.f64 x)))
(fma.f64 z (cos.f64 x) (+.f64 y (sin.f64 x)))
(+.f64 (sin.f64 x) (fma.f64 z (cos.f64 x) y))
(+.f64 (+.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y)))
(+.f64 z (+.f64 (sin.f64 y) (*.f64 x (cos.f64 y))))
(fma.f64 x (cos.f64 y) (+.f64 (sin.f64 y) z))
(+.f64 (sin.f64 y) (fma.f64 x (cos.f64 y) z))
(+.f64 (+.f64 x (sin.f64 z)) (*.f64 y (cos.f64 z)))
(+.f64 x (+.f64 (sin.f64 z) (*.f64 y (cos.f64 z))))
(fma.f64 y (cos.f64 z) (+.f64 x (sin.f64 z)))
(+.f64 x (fma.f64 y (cos.f64 z) (sin.f64 z)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Rules
fma-def_binary64
+-commutative_binary64
associate-+r+_binary64
associate-+l+_binary64
*-commutative_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0914
11412
22312
32912
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
Outputs
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))

eval1.0ms (0%)

Compiler

Compiled 20 to 9 computations (55% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 23 to 15 computations (34.8% saved)

localize16.0ms (0.2%)

Local error

Found 3 expressions with local error:

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

Compiled 27 to 8 computations (70.4% saved)

series7.0ms (0.1%)

Counts
3 → 44
Calls

15 calls:

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

rewrite64.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
890×pow1_binary64
820×add-log-exp_binary64
820×log1p-expm1-u_binary64
820×expm1-log1p-u_binary64
801×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0815
116615
2220115
Stop Event
node limit
Counts
3 → 62
Calls
Call 1
Inputs
(*.f64 z (cos.f64 y))
(cos.f64 y)
(+.f64 x (sin.f64 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 z (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (cos.f64 y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cos.f64 y)) 1)))) (#(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 (cbrt.f64 (cos.f64 y)) (pow.f64 (cbrt.f64 (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cos.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cos.f64 y) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cos.f64 y)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (cos.f64 y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cos.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (cos.f64 y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cos.f64 y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 x x) (-.f64 x (sin.f64 y))) (/.f64 (pow.f64 (sin.f64 y) 2) (-.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 x (sin.f64 y))) (pow.f64 (cbrt.f64 (+.f64 x (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 x (sin.f64 y))) 2) (cbrt.f64 (+.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 x (sin.f64 y))) (sqrt.f64 (+.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 x 3) (pow.f64 (sin.f64 y) 3)) (/.f64 1 (fma.f64 x x (*.f64 (sin.f64 y) (-.f64 (sin.f64 y) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x x) (pow.f64 (sin.f64 y) 2)) (/.f64 1 (-.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 x x (*.f64 (sin.f64 y) (-.f64 (sin.f64 y) x))) (+.f64 (pow.f64 x 3) (pow.f64 (sin.f64 y) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 x (sin.f64 y)) (-.f64 (*.f64 x x) (pow.f64 (sin.f64 y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 3) (pow.f64 (sin.f64 y) 3)) (fma.f64 x x (*.f64 (sin.f64 y) (-.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 3) (pow.f64 (sin.f64 y) 3)) (+.f64 (pow.f64 (sin.f64 y) 2) (-.f64 (*.f64 x x) (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x x) (pow.f64 (sin.f64 y) 2)) (-.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 x 3) (pow.f64 (sin.f64 y) 3))) (neg.f64 (fma.f64 x x (*.f64 (sin.f64 y) (-.f64 (sin.f64 y) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 x x) (pow.f64 (sin.f64 y) 2))) (neg.f64 (-.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x x)) (-.f64 (sin.f64 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 x (sin.f64 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 x (sin.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 x (sin.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 x (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 x (sin.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (cbrt.f64 x) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (cbrt.f64 (sin.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 x) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 (sin.f64 y)) x)))))

simplify153.0ms (1.5%)

Algorithm
egg-herbie
Rules
1427×fma-def_binary64
747×sqr-pow_binary64
538×cube-prod_binary64
389×pow-sqr_binary64
345×*-commutative_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
049333
1122327
2315316
31036314
42465314
53284314
63414314
73595314
83780314
94025314
104908314
115327314
125840314
136453314
147265314
157713314
Stop Event
node limit
Counts
106 → 85
Calls
Call 1
Inputs
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
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)))))
(sin.f64 y)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 y x)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x)))
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
Outputs
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)
(*.f64 (fma.f64 -1/2 (*.f64 y y) 1) z)
(*.f64 z (fma.f64 y (*.f64 y -1/2) 1))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z) (*.f64 1/24 (*.f64 z (pow.f64 y 4))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z))
(*.f64 z (fma.f64 y (*.f64 y -1/2) (fma.f64 1/24 (pow.f64 y 4) 1)))
(fma.f64 z (*.f64 y (fma.f64 1/24 (pow.f64 y 3) (*.f64 y -1/2))) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (+.f64 z (*.f64 1/24 (*.f64 z (pow.f64 y 4))))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z)))
(+.f64 z (*.f64 z (fma.f64 -1/720 (pow.f64 y 6) (fma.f64 y (*.f64 y -1/2) (*.f64 1/24 (pow.f64 y 4))))))
(*.f64 z (fma.f64 1/24 (pow.f64 y 4) (fma.f64 -1/720 (pow.f64 y 6) (fma.f64 y (*.f64 y -1/2) 1))))
1
(+.f64 1 (*.f64 -1/2 (pow.f64 y 2)))
(+.f64 1 (*.f64 -1/2 (*.f64 y y)))
(fma.f64 -1/2 (*.f64 y y) 1)
(fma.f64 y (*.f64 y -1/2) 1)
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 y 2)) (*.f64 1/24 (pow.f64 y 4))))
(+.f64 1 (fma.f64 -1/2 (*.f64 y y) (*.f64 1/24 (pow.f64 y 4))))
(+.f64 1 (fma.f64 1/24 (pow.f64 y 4) (*.f64 -1/2 (*.f64 y y))))
(fma.f64 y (*.f64 y -1/2) (fma.f64 1/24 (pow.f64 y 4) 1))
(fma.f64 y (fma.f64 1/24 (pow.f64 y 3) (*.f64 y -1/2)) 1)
(+.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)))))
(fma.f64 -1/720 (pow.f64 y 6) (+.f64 1 (fma.f64 -1/2 (*.f64 y y) (*.f64 1/24 (pow.f64 y 4)))))
(+.f64 (fma.f64 1/24 (pow.f64 y 4) (*.f64 -1/2 (*.f64 y y))) (fma.f64 -1/720 (pow.f64 y 6) 1))
(fma.f64 -1/720 (pow.f64 y 6) (fma.f64 y (*.f64 y -1/2) (fma.f64 1/24 (pow.f64 y 4) 1)))
(fma.f64 1/24 (pow.f64 y 4) (fma.f64 -1/720 (pow.f64 y 6) (fma.f64 y (*.f64 y -1/2) 1)))
(sin.f64 y)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 y x)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y x))
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (fma.f64 1/120 (pow.f64 y 5) x)))
(+.f64 (fma.f64 1/120 (pow.f64 y 5) x) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) x)))
(+.f64 y (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) x)))
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)

localize15.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 22 to 7 computations (68.2% saved)

series5.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite55.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
909×pow1_binary64
838×add-log-exp_binary64
838×log1p-expm1-u_binary64
838×expm1-log1p-u_binary64
818×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0812
116712
2222212
Stop Event
node limit
Counts
1 → 23
Calls
Call 1
Inputs
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (cos.f64 y)) (+.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 z (cos.f64 y)) 1) (+.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 z (cos.f64 y)) x) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))) (pow.f64 (cbrt.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))) 2) (cbrt.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))) (sqrt.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3) (pow.f64 (+.f64 x (sin.f64 y)) 3)) (+.f64 (*.f64 (*.f64 z (cos.f64 y)) (*.f64 z (cos.f64 y))) (-.f64 (pow.f64 (+.f64 x (sin.f64 y)) 2) (*.f64 (*.f64 z (cos.f64 y)) (+.f64 x (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 z (cos.f64 y)) (*.f64 z (cos.f64 y))) (pow.f64 (+.f64 x (sin.f64 y)) 2)) (-.f64 (*.f64 z (cos.f64 y)) (+.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))))))))

simplify145.0ms (1.4%)

Algorithm
egg-herbie
Rules
980×fma-def_binary64
646×associate-*l*_binary64
536×unswap-sqr_binary64
497×distribute-lft-out_binary64
412×associate-*r*_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
023393
159393
2152393
3455390
41232388
53644388
65623388
76858388
87119388
97430388
107813388
Stop Event
node limit
Counts
59 → 38
Calls
Call 1
Inputs
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x))))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
Outputs
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 z x)
(+.f64 x z)
(+.f64 y (+.f64 z x))
(+.f64 (+.f64 y z) x)
(+.f64 y (+.f64 x z))
(+.f64 x (+.f64 y z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 (+.f64 y z) x))
(+.f64 (+.f64 x z) (fma.f64 -1/2 (*.f64 y (*.f64 y z)) y))
(+.f64 y (fma.f64 z (*.f64 y (*.f64 y -1/2)) (+.f64 x z)))
(+.f64 (+.f64 y x) (fma.f64 z (*.f64 y (*.f64 y -1/2)) z))
(+.f64 x (fma.f64 (fma.f64 y (*.f64 z -1/2) 1) y z))
(fma.f64 (fma.f64 y (*.f64 z -1/2) 1) y (+.f64 x z))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x))))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 (+.f64 y z) x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (+.f64 x z) (fma.f64 -1/2 (*.f64 y (*.f64 y z)) y)))
(+.f64 (+.f64 x z) (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 z (*.f64 y (*.f64 y -1/2)) y)))
(+.f64 z (fma.f64 (*.f64 y y) (fma.f64 y -1/6 (*.f64 z -1/2)) (+.f64 y x)))
(+.f64 y (+.f64 x (fma.f64 (*.f64 y y) (fma.f64 y -1/6 (*.f64 z -1/2)) z)))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))

eval88.0ms (0.8%)

Compiler

Compiled 2534 to 883 computations (65.2% saved)

prune82.0ms (0.8%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New17116187
Fresh000
Picked101
Done101
Total17316189
Error
0.0b
Counts
189 → 16
Alt Table
Click to see full alt table
StatusErrorProgram
21.1b
(+.f64 y (+.f64 z x))
31.6b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
9.2b
(fma.f64 z (cos.f64 y) x)
28.2b
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
9.2b
(+.f64 x (*.f64 z (cos.f64 y)))
0.1b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 3))))
18.6b
(+.f64 (+.f64 x (sin.f64 y)) (cbrt.f64 (*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))))
0.2b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 3)))
0.6b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
17.3b
(+.f64 z x)
36.9b
(*.f64 (cos.f64 y) z)
26.0b
(+.f64 (sin.f64 y) x)
0.1b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (-.f64 (+.f64 1 (cos.f64 y)) 1)))
34.9b
x
0.1b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (log.f64 (exp.f64 (cos.f64 y)))))
13.5b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (pow.f64 (sqrt.f64 (cos.f64 y)) 2)))
Compiler

Compiled 358 to 257 computations (28.2% saved)

localize38.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(cos.f64 y)
0.1b
(exp.f64 (cos.f64 y))
0.1b
(*.f64 z (log.f64 (exp.f64 (cos.f64 y))))
0.3b
(log.f64 (exp.f64 (cos.f64 y)))
Compiler

Compiled 38 to 10 computations (73.7% saved)

series7.0ms (0.1%)

Counts
3 → 40
Calls

12 calls:

TimeVariablePointExpression
1.0ms
y
@0
(exp.f64 (cos.f64 y))
1.0ms
y
@0
(log.f64 (exp.f64 (cos.f64 y)))
1.0ms
y
@0
(*.f64 z (log.f64 (exp.f64 (cos.f64 y))))
1.0ms
y
@-inf
(exp.f64 (cos.f64 y))
0.0ms
y
@inf
(exp.f64 (cos.f64 y))

rewrite80.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
531×pow1_binary64
504×add-sqr-sqrt_binary64
484×log1p-expm1-u_binary64
484×expm1-log1p-u_binary64
483×add-log-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0714
111914
2133014
Stop Event
node limit
Counts
3 → 49
Calls
Call 1
Inputs
(log.f64 (exp.f64 (cos.f64 y)))
(*.f64 z (log.f64 (exp.f64 (cos.f64 y))))
(exp.f64 (cos.f64 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (cos.f64 y)))) (log.f64 (sqrt.f64 (exp.f64 (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (cos.f64 y))) 2)) (log.f64 (cbrt.f64 (exp.f64 (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cos.f64 y)) 1)))) (#(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 (cbrt.f64 (cos.f64 y)) (pow.f64 (cbrt.f64 (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cos.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cos.f64 y) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cos.f64 y)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (cos.f64 y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cos.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (cos.f64 y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cos.f64 y)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cos.f64 y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (cos.f64 y) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cos.f64 y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (cos.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cos.f64 y) z)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (expm1.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (exp.f64 (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (exp.f64 (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (exp.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (exp.f64 (cos.f64 y))) (pow.f64 (cbrt.f64 (exp.f64 (cos.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (exp.f64 (cos.f64 y))) 2) (cbrt.f64 (exp.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (exp.f64 (cos.f64 y))) (sqrt.f64 (exp.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (cos.f64 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (exp.f64 (cos.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (exp.f64 (cos.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (exp.f64 (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (exp.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (exp.f64 (cos.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (exp.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (exp.f64 (cos.f64 y))))))))

simplify141.0ms (1.3%)

Algorithm
egg-herbie
Rules
1628×fma-def_binary64
820×unswap-sqr_binary64
612×sqr-pow_binary64
356×pow-sqr_binary64
355×cube-prod_binary64
Iterations

Useful iterations: 9 (0.0ms)

IterNodesCost
049338
1125330
2339311
31102305
42575305
53032305
63165305
73291305
83425305
93600304
104446304
116146304
126707304
137360304
Stop Event
node limit
Counts
89 → 73
Calls
Call 1
Inputs
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)))))
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(exp.f64 1)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) (exp.f64 1))) (exp.f64 1))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) (exp.f64 1))) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 y 4) (exp.f64 1))) (exp.f64 1)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) (exp.f64 1))) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 y 4) (exp.f64 1))) (+.f64 (*.f64 -31/720 (*.f64 (pow.f64 y 6) (exp.f64 1))) (exp.f64 1))))
Outputs
1
(+.f64 1 (*.f64 -1/2 (pow.f64 y 2)))
(+.f64 1 (*.f64 -1/2 (*.f64 y y)))
(fma.f64 -1/2 (*.f64 y y) 1)
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 y 2)) (*.f64 1/24 (pow.f64 y 4))))
(+.f64 1 (fma.f64 -1/2 (*.f64 y y) (*.f64 1/24 (pow.f64 y 4))))
(+.f64 (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 1/24 (pow.f64 y 4)))
(fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) 1))
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y 1/24) -1/2) 1)
(fma.f64 y (*.f64 y (fma.f64 y (*.f64 y 1/24) -1/2)) 1)
(+.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)))))
(fma.f64 -1/720 (pow.f64 y 6) (+.f64 1 (fma.f64 -1/2 (*.f64 y y) (*.f64 1/24 (pow.f64 y 4)))))
(+.f64 (fma.f64 -1/2 (*.f64 y y) (*.f64 1/24 (pow.f64 y 4))) (fma.f64 -1/720 (pow.f64 y 6) 1))
(fma.f64 -1/720 (pow.f64 y 6) (fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) 1)))
(fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) (fma.f64 -1/720 (pow.f64 y 6) 1)))
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y 1/24) -1/2) (fma.f64 -1/720 (pow.f64 y 6) 1))
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 (*.f64 y y) z) z)
(*.f64 (fma.f64 -1/2 (*.f64 y y) 1) z)
(fma.f64 (*.f64 y y) (*.f64 -1/2 z) z)
(fma.f64 y (*.f64 y (*.f64 -1/2 z)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (fma.f64 -1/2 (*.f64 (*.f64 y y) z) z) (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 1/24 (*.f64 (pow.f64 y 4) z) z))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) 1)))
(*.f64 (fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y 1/24) -1/2) 1) z)
(fma.f64 z (*.f64 (*.f64 y y) (fma.f64 y (*.f64 y 1/24) -1/2)) z)
(fma.f64 (*.f64 y y) (*.f64 z (fma.f64 y (*.f64 y 1/24) -1/2)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(fma.f64 -1/2 (*.f64 (*.f64 y y) z) (fma.f64 -1/720 (*.f64 (pow.f64 y 6) z) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 -1/720 (*.f64 (pow.f64 y 6) z) (fma.f64 1/24 (*.f64 (pow.f64 y 4) z) z)))
(+.f64 z (*.f64 z (fma.f64 -1/720 (pow.f64 y 6) (fma.f64 -1/2 (*.f64 y y) (*.f64 1/24 (pow.f64 y 4))))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) (fma.f64 -1/720 (pow.f64 y 6) 1))))
(*.f64 (fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) (fma.f64 -1/720 (pow.f64 y 6) 1))) z)
(*.f64 (fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y 1/24) -1/2) (fma.f64 -1/720 (pow.f64 y 6) 1)) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(exp.f64 1)
(E.f64)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) (exp.f64 1))) (exp.f64 1))
(fma.f64 -1/2 (*.f64 (*.f64 y y) (E.f64)) (E.f64))
(*.f64 (fma.f64 -1/2 (*.f64 y y) 1) (E.f64))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) (exp.f64 1))) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 y 4) (exp.f64 1))) (exp.f64 1)))
(fma.f64 -1/2 (*.f64 (*.f64 y y) (E.f64)) (fma.f64 1/6 (*.f64 (pow.f64 y 4) (E.f64)) (E.f64)))
(fma.f64 (E.f64) (fma.f64 -1/2 (*.f64 y y) (*.f64 (pow.f64 y 4) 1/6)) (E.f64))
(*.f64 (E.f64) (fma.f64 -1/2 (*.f64 y y) (fma.f64 (pow.f64 y 4) 1/6 1)))
(*.f64 (E.f64) (fma.f64 (pow.f64 y 4) 1/6 (fma.f64 -1/2 (*.f64 y y) 1)))
(*.f64 (E.f64) (fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y 1/6) -1/2) 1))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) (exp.f64 1))) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 y 4) (exp.f64 1))) (+.f64 (*.f64 -31/720 (*.f64 (pow.f64 y 6) (exp.f64 1))) (exp.f64 1))))
(fma.f64 -1/2 (*.f64 (*.f64 y y) (E.f64)) (fma.f64 1/6 (*.f64 (pow.f64 y 4) (E.f64)) (fma.f64 -31/720 (*.f64 (pow.f64 y 6) (E.f64)) (E.f64))))
(+.f64 (*.f64 (E.f64) (+.f64 (*.f64 (pow.f64 y 4) 1/6) (*.f64 (pow.f64 y 6) -31/720))) (*.f64 (fma.f64 -1/2 (*.f64 y y) 1) (E.f64)))
(fma.f64 (E.f64) (fma.f64 (pow.f64 y 4) 1/6 (*.f64 (pow.f64 y 6) -31/720)) (*.f64 (fma.f64 -1/2 (*.f64 y y) 1) (E.f64)))
(fma.f64 (E.f64) (fma.f64 -1/2 (*.f64 y y) (fma.f64 (pow.f64 y 4) 1/6 (*.f64 (pow.f64 y 6) -31/720))) (E.f64))
(*.f64 (E.f64) (fma.f64 (pow.f64 y 4) 1/6 (fma.f64 (pow.f64 y 6) -31/720 (fma.f64 -1/2 (*.f64 y y) 1))))
(*.f64 (E.f64) (fma.f64 -1/2 (*.f64 y y) (fma.f64 (pow.f64 y 4) 1/6 (fma.f64 (pow.f64 y 6) -31/720 1))))

localize5.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 11 to 5 computations (54.5% saved)

series2.0ms (0%)

Counts
1 → 7
Calls

6 calls:

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

rewrite48.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
612×pow1_binary64
569×add-log-exp_binary64
569×log1p-expm1-u_binary64
569×expm1-log1p-u_binary64
556×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
056
11086
215116
Stop Event
node limit
Counts
1 → 33
Calls
Call 1
Inputs
(+.f64 (sin.f64 y) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (sin.f64 y) 2) (-.f64 (sin.f64 y) x)) (/.f64 (*.f64 x x) (-.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sin.f64 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (sin.f64 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) (pow.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) 2) (cbrt.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 (sin.f64 y) x)) (sqrt.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) (/.f64 1 (+.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x (-.f64 x (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x x)) (/.f64 1 (-.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x (-.f64 x (sin.f64 y)))) (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (sin.f64 y) x) (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) (+.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x (-.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) (+.f64 (*.f64 x x) (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x x)) (-.f64 (sin.f64 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))) (neg.f64 (+.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x (-.f64 x (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x x))) (neg.f64 (-.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x x) (pow.f64 (sin.f64 y) 2)) (-.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (sin.f64 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 (sin.f64 y) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 (sin.f64 y) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 (sin.f64 y) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 (sin.f64 y) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (cbrt.f64 (sin.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (cbrt.f64 x) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 (sin.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 x) (sin.f64 y))))))

simplify150.0ms (1.4%)

Algorithm
egg-herbie
Rules
1204×sqr-pow_binary64
710×cube-prod_binary64
678×fabs-mul_binary64
660×pow-sqr_binary64
416×unswap-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01739
14439
29939
324839
444839
596539
6142739
7208139
8218939
9235139
10256439
11289439
12335039
13394939
14470039
15563039
16614039
17662839
18702639
19734639
20750839
Stop Event
node limit
Counts
40 → 41
Calls
Call 1
Inputs
x
(+.f64 y x)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x)))
(sin.f64 y)
x
x
Outputs
x
(+.f64 y x)
(+.f64 x y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 x y))
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (fma.f64 1/120 (pow.f64 y 5) x)))
(+.f64 (fma.f64 1/120 (pow.f64 y 5) x) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) x)))
(fma.f64 1/120 (pow.f64 y 5) (+.f64 x (fma.f64 -1/6 (pow.f64 y 3) y)))
(+.f64 y (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) x)))
(+.f64 x (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) y)))
(sin.f64 y)
x
x

localize11.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 20 to 7 computations (65% saved)

series4.0ms (0%)

Counts
2 → 19
Calls

12 calls:

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

rewrite62.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
803×pow1_binary64
742×add-log-exp_binary64
742×log1p-expm1-u_binary64
742×expm1-log1p-u_binary64
725×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0715
114815
2200115
Stop Event
node limit
Counts
2 → 46
Calls
Call 1
Inputs
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (cos.f64 y) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cos.f64 y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cos.f64 y) z)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 (cos.f64 y) z (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2) (-.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))) (/.f64 (pow.f64 (sin.f64 y) 2) (-.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 (cos.f64 y) z (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 (cos.f64 y) z (sin.f64 y))) (pow.f64 (cbrt.f64 (fma.f64 (cos.f64 y) z (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 (cos.f64 y) z (sin.f64 y))) 2) (cbrt.f64 (fma.f64 (cos.f64 y) z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 (cos.f64 y) z (sin.f64 y))) (sqrt.f64 (fma.f64 (cos.f64 y) z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3) (pow.f64 (sin.f64 y) 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2) (*.f64 (sin.f64 y) (-.f64 (sin.f64 y) (*.f64 (cos.f64 y) z))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2) (pow.f64 (sin.f64 y) 2)) (/.f64 1 (-.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2) (*.f64 (sin.f64 y) (-.f64 (sin.f64 y) (*.f64 (cos.f64 y) z)))) (+.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3) (pow.f64 (sin.f64 y) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 (cos.f64 y) z) (sin.f64 y)) (-.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2) (pow.f64 (sin.f64 y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3) (pow.f64 (sin.f64 y) 3)) (+.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2) (*.f64 (sin.f64 y) (-.f64 (sin.f64 y) (*.f64 (cos.f64 y) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3) (pow.f64 (sin.f64 y) 3)) (+.f64 (pow.f64 (sin.f64 y) 2) (-.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2) (*.f64 (cos.f64 y) (*.f64 z (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2) (pow.f64 (sin.f64 y) 2)) (-.f64 (*.f64 (cos.f64 y) z) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3) (pow.f64 (sin.f64 y) 3))) (neg.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2) (*.f64 (sin.f64 y) (-.f64 (sin.f64 y) (*.f64 (cos.f64 y) z))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2) (pow.f64 (sin.f64 y) 2))) (neg.f64 (-.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (pow.f64 (*.f64 (cos.f64 y) z) 2)) (-.f64 (sin.f64 y) (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 (cos.f64 y) z (sin.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 (cos.f64 y) z (sin.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 (cos.f64 y) z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 (cos.f64 y) z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 (cos.f64 y) z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 (cos.f64 y) z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 y) z (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z (cos.f64 y) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 y) (*.f64 (cos.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (cbrt.f64 (sin.f64 y)) (*.f64 (cos.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 2) (cbrt.f64 (*.f64 (cos.f64 y) z)) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 (sin.f64 y)) (*.f64 (cos.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) (sqrt.f64 (*.f64 (cos.f64 y) z)) (sin.f64 y))))))

simplify124.0ms (1.2%)

Algorithm
egg-herbie
Rules
765×fma-def_binary64
745×distribute-rgt-out_binary64
687×associate-*l*_binary64
565×distribute-lft-out_binary64
527×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
034171
186167
2240159
3835155
43973155
56847155
67098155
77367155
87637155
97989155
Stop Event
node limit
Counts
65 → 62
Calls
Call 1
Inputs
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
z
(+.f64 y z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z)))
(sin.f64 y)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
Outputs
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)
(fma.f64 z (*.f64 y (*.f64 -1/2 y)) z)
(*.f64 z (fma.f64 y (*.f64 -1/2 y) 1))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z) (*.f64 1/24 (*.f64 z (pow.f64 y 4))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z))
(*.f64 z (+.f64 (*.f64 y (*.f64 -1/2 y)) (fma.f64 1/24 (pow.f64 y 4) 1)))
(*.f64 z (fma.f64 1/24 (pow.f64 y 4) (fma.f64 y (*.f64 -1/2 y) 1)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (+.f64 z (*.f64 1/24 (*.f64 z (pow.f64 y 4))))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (*.f64 z (fma.f64 1/24 (pow.f64 y 4) 1)))
(*.f64 z (+.f64 (fma.f64 1/24 (pow.f64 y 4) 1) (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6)))))
(fma.f64 z (+.f64 (*.f64 1/24 (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6)))) z)
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
z
(+.f64 y z)
(+.f64 z y)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z y))
(fma.f64 (fma.f64 -1/2 (*.f64 y y) 1) z y)
(fma.f64 z (fma.f64 y (*.f64 -1/2 y) 1) y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z)))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z y)))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (fma.f64 -1/2 (*.f64 y y) 1) z y))
(+.f64 z (fma.f64 (*.f64 y y) (fma.f64 z -1/2 (*.f64 y -1/6)) y))
(sin.f64 y)
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))

localize22.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(cos.f64 y)
0.1b
(*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 3))
0.3b
(cbrt.f64 (cos.f64 y))
0.4b
(pow.f64 (cbrt.f64 (cos.f64 y)) 3)
Compiler

Compiled 42 to 17 computations (59.5% saved)

series10.0ms (0.1%)

Counts
3 → 48
Calls

12 calls:

TimeVariablePointExpression
3.0ms
y
@inf
(pow.f64 (cbrt.f64 (cos.f64 y)) 3)
2.0ms
y
@-inf
(pow.f64 (cbrt.f64 (cos.f64 y)) 3)
1.0ms
y
@0
(pow.f64 (cbrt.f64 (cos.f64 y)) 3)
1.0ms
y
@inf
(*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 3))
1.0ms
z
@inf
(*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 3))

rewrite57.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
634×pow1_binary64
592×add-log-exp_binary64
592×log1p-expm1-u_binary64
592×expm1-log1p-u_binary64
577×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0814
116614
2165814
Stop Event
node limit
Counts
3 → 50
Calls
Call 1
Inputs
(pow.f64 (cbrt.f64 (cos.f64 y)) 3)
(cbrt.f64 (cos.f64 y))
(*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cos.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cos.f64 y)) (pow.f64 (cbrt.f64 (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (pow.f64 (cbrt.f64 (cos.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cos.f64 y) 1/6) (*.f64 (pow.f64 (cos.f64 y) 1/6) (pow.f64 (cbrt.f64 (cos.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) 3) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cos.f64 y) 1/6) 3) (pow.f64 (pow.f64 (cos.f64 y) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) 1) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2)) (cbrt.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (pow.f64 (cos.f64 y) 1/6)) (pow.f64 (cos.f64 y) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cos.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (cos.f64 y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cos.f64 y)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cos.f64 y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (pow.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) (cbrt.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cos.f64 y) 1/6) (pow.f64 (cos.f64 y) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) 1/3) (cbrt.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (cos.f64 y)) 1/3) (pow.f64 (sqrt.f64 (cos.f64 y)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cos.f64 y) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cos.f64 y) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (cos.f64 y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (cos.f64 y) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cos.f64 y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (cos.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cos.f64 y) z)))))))

simplify147.0ms (1.4%)

Algorithm
egg-herbie
Rules
767×fma-def_binary64
630×distribute-rgt-out_binary64
621×distribute-rgt-in_binary64
573×associate-*l*_binary64
556×distribute-lft-out_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
047380
1116344
2297333
3926331
43444331
55862331
66219331
76472331
86719331
97029331
107414331
Stop Event
node limit
Counts
98 → 74
Calls
Call 1
Inputs
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 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
1
(+.f64 1 (*.f64 -1/6 (pow.f64 y 2)))
(+.f64 (*.f64 -1/72 (pow.f64 y 4)) (+.f64 1 (*.f64 -1/6 (pow.f64 y 2))))
(+.f64 (*.f64 -23/6480 (pow.f64 y 6)) (+.f64 (*.f64 -1/72 (pow.f64 y 4)) (+.f64 1 (*.f64 -1/6 (pow.f64 y 2)))))
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
Outputs
1
(+.f64 1 (*.f64 -1/2 (pow.f64 y 2)))
(+.f64 1 (*.f64 -1/2 (*.f64 y y)))
(fma.f64 -1/2 (*.f64 y y) 1)
(fma.f64 y (*.f64 -1/2 y) 1)
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 y 2)) (*.f64 1/24 (pow.f64 y 4))))
(+.f64 1 (fma.f64 -1/2 (*.f64 y y) (*.f64 1/24 (pow.f64 y 4))))
(+.f64 (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 1/24 (pow.f64 y 4)))
(fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) 1))
(+.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)))))
(fma.f64 -1/720 (pow.f64 y 6) (+.f64 1 (fma.f64 -1/2 (*.f64 y y) (*.f64 1/24 (pow.f64 y 4)))))
(+.f64 (fma.f64 -1/2 (*.f64 y y) (*.f64 1/24 (pow.f64 y 4))) (fma.f64 -1/720 (pow.f64 y 6) 1))
(fma.f64 -1/720 (pow.f64 y 6) (fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) 1)))
(fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) (fma.f64 -1/720 (pow.f64 y 6) 1)))
(fma.f64 (*.f64 y y) (fma.f64 (*.f64 y y) 1/24 -1/2) (fma.f64 -1/720 (pow.f64 y 6) 1))
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 1 (cos.f64 y))
(cos.f64 y)
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 1 (cos.f64 y))
(cos.f64 y)
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 1 (cos.f64 y))
(cos.f64 y)
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 1 (cos.f64 y))
(cos.f64 y)
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 1 (cos.f64 y))
(cos.f64 y)
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 1 (cos.f64 y))
(cos.f64 y)
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 1 (cos.f64 y))
(cos.f64 y)
(*.f64 (pow.f64 1 1/3) (cos.f64 y))
(*.f64 1 (cos.f64 y))
(cos.f64 y)
1
(+.f64 1 (*.f64 -1/6 (pow.f64 y 2)))
(+.f64 1 (*.f64 (*.f64 y y) -1/6))
(fma.f64 (*.f64 y y) -1/6 1)
(fma.f64 y (*.f64 y -1/6) 1)
(+.f64 (*.f64 -1/72 (pow.f64 y 4)) (+.f64 1 (*.f64 -1/6 (pow.f64 y 2))))
(fma.f64 -1/72 (pow.f64 y 4) (+.f64 1 (*.f64 (*.f64 y y) -1/6)))
(fma.f64 (pow.f64 y 4) -1/72 (fma.f64 (*.f64 y y) -1/6 1))
(fma.f64 y (*.f64 y -1/6) (fma.f64 (pow.f64 y 4) -1/72 1))
(+.f64 (*.f64 -23/6480 (pow.f64 y 6)) (+.f64 (*.f64 -1/72 (pow.f64 y 4)) (+.f64 1 (*.f64 -1/6 (pow.f64 y 2)))))
(fma.f64 -23/6480 (pow.f64 y 6) (fma.f64 -1/72 (pow.f64 y 4) (+.f64 1 (*.f64 (*.f64 y y) -1/6))))
(fma.f64 (pow.f64 y 6) -23/6480 (fma.f64 (pow.f64 y 4) -1/72 (fma.f64 (*.f64 y y) -1/6 1)))
(fma.f64 (pow.f64 y 4) -1/72 (fma.f64 (pow.f64 y 6) -23/6480 (fma.f64 y (*.f64 y -1/6) 1)))
(fma.f64 y (*.f64 y -1/6) (fma.f64 (pow.f64 y 4) -1/72 (fma.f64 (pow.f64 y 6) -23/6480 1)))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 (*.f64 y y) z) z)
(*.f64 (fma.f64 -1/2 (*.f64 y y) 1) z)
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) z)
(*.f64 (fma.f64 y (*.f64 -1/2 y) 1) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (fma.f64 -1/2 (*.f64 (*.f64 y y) z) z) (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))
(fma.f64 -1/2 (*.f64 (*.f64 y y) z) (fma.f64 1/24 (*.f64 (pow.f64 y 4) z) z))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) 1)))
(*.f64 (fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) 1)) z)
(fma.f64 z (*.f64 (*.f64 y y) (fma.f64 (*.f64 y y) 1/24 -1/2)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(fma.f64 -1/2 (*.f64 (*.f64 y y) z) (fma.f64 -1/720 (*.f64 (pow.f64 y 6) z) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(fma.f64 -1/2 (*.f64 (*.f64 y y) z) (fma.f64 -1/720 (*.f64 (pow.f64 y 6) z) (fma.f64 1/24 (*.f64 (pow.f64 y 4) z) z)))
(+.f64 z (*.f64 z (fma.f64 -1/720 (pow.f64 y 6) (fma.f64 -1/2 (*.f64 y y) (*.f64 1/24 (pow.f64 y 4))))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) (fma.f64 -1/720 (pow.f64 y 6) 1))))
(*.f64 (fma.f64 (*.f64 y y) (fma.f64 (*.f64 y y) 1/24 -1/2) (fma.f64 -1/720 (pow.f64 y 6) 1)) z)
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) (*.f64 -1/720 (pow.f64 y 6)))) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)

eval89.0ms (0.9%)

Compiler

Compiled 4503 to 1949 computations (56.7% saved)

prune68.0ms (0.7%)

Pruning

20 alts after pruning (17 fresh and 3 done)

PrunedKeptTotal
New30613319
Fresh7411
Picked101
Done134
Total31520335
Error
0.0b
Counts
335 → 20
Alt Table
Click to see full alt table
StatusErrorProgram
38.4b
(+.f64 y x)
17.3b
(+.f64 z x)
13.6b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (pow.f64 (cbrt.f64 (pow.f64 (sqrt.f64 (cos.f64 y)) 2)) 3)))
28.4b
(+.f64 (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 3) z) (sin.f64 y))
26.0b
(+.f64 (sin.f64 y) x)
36.7b
(+.f64 (*.f64 (pow.f64 (sqrt.f64 (cos.f64 y)) 2) z) (sin.f64 y))
28.8b
(+.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 3) (sin.f64 y))
34.9b
x
28.3b
(+.f64 (*.f64 (log.f64 (exp.f64 (cos.f64 y))) z) (sin.f64 y))
9.2b
(fma.f64 z (cos.f64 y) x)
28.2b
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
9.2b
(+.f64 x (*.f64 z (cos.f64 y)))
36.9b
(*.f64 (cos.f64 y) z)
31.0b
(-.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 1)
18.6b
(+.f64 (+.f64 x (sin.f64 y)) (cbrt.f64 (*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))))
43.5b
(+.f64 z y)
47.2b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2) (sin.f64 y))
28.3b
(+.f64 (*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 3)) z) (sin.f64 y))
53.8b
(sin.f64 y)
28.3b
(+.f64 (*.f64 (-.f64 (+.f64 1 (cos.f64 y)) 1) z) (sin.f64 y))
Compiler

Compiled 383 to 287 computations (25.1% saved)

localize17.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 13 to 5 computations (61.5% saved)

series5.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(fma.f64 z (cos.f64 y) x)
1.0ms
z
@0
(fma.f64 z (cos.f64 y) x)
1.0ms
y
@0
(fma.f64 z (cos.f64 y) x)
1.0ms
y
@inf
(fma.f64 z (cos.f64 y) x)
1.0ms
z
@inf
(fma.f64 z (cos.f64 y) x)

rewrite62.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
566×pow1_binary64
516×add-log-exp_binary64
516×log1p-expm1-u_binary64
516×expm1-log1p-u_binary64
503×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11177
213777
Stop Event
node limit
Counts
1 → 21
Calls
Call 1
Inputs
(fma.f64 z (cos.f64 y) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (cos.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 z (cos.f64 y)) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 z (cos.f64 y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 z (cos.f64 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 z (cos.f64 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 z (cos.f64 y) x)) (pow.f64 (cbrt.f64 (fma.f64 z (cos.f64 y) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 z (cos.f64 y) x)) 2) (cbrt.f64 (fma.f64 z (cos.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 z (cos.f64 y) x)) (sqrt.f64 (fma.f64 z (cos.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3) (pow.f64 x 3)) (+.f64 (*.f64 (*.f64 z (cos.f64 y)) (*.f64 z (cos.f64 y))) (-.f64 (*.f64 x x) (*.f64 (*.f64 z (cos.f64 y)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 z (cos.f64 y)) (*.f64 z (cos.f64 y))) (*.f64 x x)) (-.f64 (*.f64 z (cos.f64 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 z (cos.f64 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 z (cos.f64 y) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 z (cos.f64 y) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 z (cos.f64 y) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 z (cos.f64 y) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 z (cos.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 z (cos.f64 y) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 z (cos.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 z (cos.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 z (cos.f64 y) x)))))))

simplify160.0ms (1.5%)

Algorithm
egg-herbie
Rules
763×distribute-lft-out_binary64
691×fma-def_binary64
525×distribute-rgt-out_binary64
429×*-commutative_binary64
400×sqr-pow_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
031279
178279
2212270
3668267
42577267
54707267
64997267
75302267
85939267
96268267
106613267
117957267
Stop Event
node limit
Counts
57 → 34
Calls
Call 1
Inputs
x
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 z x)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z x))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) z)) x)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) z)) x))))
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 z (cos.f64 y)) x)
(+.f64 (*.f64 z (cos.f64 y)) x)
(+.f64 (*.f64 z (cos.f64 y)) x)
x
(+.f64 (*.f64 z (cos.f64 y)) x)
(+.f64 (*.f64 z (cos.f64 y)) x)
(+.f64 (*.f64 z (cos.f64 y)) x)
x
(+.f64 (*.f64 z (cos.f64 y)) x)
(+.f64 (*.f64 z (cos.f64 y)) x)
(+.f64 (*.f64 z (cos.f64 y)) x)
Outputs
x
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 z x)
(+.f64 x z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z x))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 x z))
(+.f64 x (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z))
(fma.f64 (fma.f64 -1/2 (*.f64 y y) 1) z x)
(fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) x)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) z)) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) x)))
(+.f64 (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) x) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z))
(fma.f64 (fma.f64 1/24 (pow.f64 y 4) 1) z (fma.f64 z (*.f64 y (*.f64 y -1/2)) x))
(fma.f64 z (fma.f64 y (*.f64 y -1/2) (fma.f64 1/24 (pow.f64 y 4) 1)) x)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) z)) x))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (+.f64 z (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) x))))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (fma.f64 (fma.f64 1/24 (pow.f64 y 4) 1) z x))
(fma.f64 y (*.f64 y (*.f64 z -1/2)) (fma.f64 z (fma.f64 -1/720 (pow.f64 y 6) (fma.f64 1/24 (pow.f64 y 4) 1)) x))
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 (cos.f64 y) z) x)
(fma.f64 (cos.f64 y) z x)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 z (cos.f64 y)) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 z (cos.f64 y)) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 z (cos.f64 y)) x)
(fma.f64 (cos.f64 y) z x)
x
(+.f64 (*.f64 z (cos.f64 y)) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 z (cos.f64 y)) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 z (cos.f64 y)) x)
(fma.f64 (cos.f64 y) z x)
x
(+.f64 (*.f64 z (cos.f64 y)) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 z (cos.f64 y)) x)
(fma.f64 (cos.f64 y) z x)
(+.f64 (*.f64 z (cos.f64 y)) x)
(fma.f64 (cos.f64 y) z x)

localize9.0ms (0.1%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize22.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 18 to 6 computations (66.7% saved)

localize39.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(cos.f64 y)
0.1b
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 3)) z)
0.3b
(cbrt.f64 (pow.f64 (cos.f64 y) 3))
0.3b
(pow.f64 (cos.f64 y) 3)
Compiler

Compiled 36 to 20 computations (44.4% saved)

series8.0ms (0.1%)

Counts
3 → 40
Calls

12 calls:

TimeVariablePointExpression
1.0ms
y
@inf
(pow.f64 (cos.f64 y) 3)
1.0ms
y
@-inf
(pow.f64 (cos.f64 y) 3)
1.0ms
y
@0
(pow.f64 (cos.f64 y) 3)
0.0ms
y
@0
(cbrt.f64 (pow.f64 (cos.f64 y) 3))
0.0ms
y
@0
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 3)) z)

rewrite86.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
632×pow1_binary64
590×add-log-exp_binary64
590×log1p-expm1-u_binary64
590×expm1-log1p-u_binary64
575×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0815
116615
2165315
Stop Event
node limit
Counts
3 → 50
Calls
Call 1
Inputs
(pow.f64 (cos.f64 y) 3)
(cbrt.f64 (pow.f64 (cos.f64 y) 3))
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 3)) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (cos.f64 y) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cos.f64 y) (pow.f64 (cos.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cos.f64 y) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cos.f64 y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cos.f64 y) 2) (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) (pow.f64 (cos.f64 y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (*.f64 (sqrt.f64 (cos.f64 y)) (pow.f64 (cos.f64 y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cos.f64 y) 3/2) (pow.f64 (cos.f64 y) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) 3) (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (cos.f64 y)) 3) (pow.f64 (sqrt.f64 (cos.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cos.f64 y) 2) 1) (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cos.f64 y) 2) (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cos.f64 y) 2) (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cos.f64 y) 6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cos.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (cos.f64 y) 3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cos.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cos.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 3 (log.f64 (cos.f64 y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cos.f64 y)) 1)))) (#(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 (cbrt.f64 (cos.f64 y)) (pow.f64 (cbrt.f64 (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cos.f64 y)) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/3) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cos.f64 y) 3/2) 1/3) (pow.f64 (pow.f64 (cos.f64 y) 3/2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cos.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cos.f64 y) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cos.f64 y)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (cos.f64 y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cos.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cos.f64 y)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cos.f64 y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (cos.f64 y) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cos.f64 y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (cos.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cos.f64 y) z)))))))

simplify164.0ms (1.6%)

Algorithm
egg-herbie
Rules
787×fma-def_binary64
629×distribute-rgt-in_binary64
629×distribute-rgt-out_binary64
574×associate-*l*_binary64
556×distribute-lft-out_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
045316
1108308
2283293
3898291
43428291
55814291
66154291
76384291
86601291
96874291
107211291
Stop Event
node limit
Counts
90 → 72
Calls
Call 1
Inputs
1
(+.f64 1 (*.f64 -3/2 (pow.f64 y 2)))
(+.f64 1 (+.f64 (*.f64 7/8 (pow.f64 y 4)) (*.f64 -3/2 (pow.f64 y 2))))
(+.f64 1 (+.f64 (*.f64 -61/240 (pow.f64 y 6)) (+.f64 (*.f64 7/8 (pow.f64 y 4)) (*.f64 -3/2 (pow.f64 y 2)))))
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)))))
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
Outputs
1
(+.f64 1 (*.f64 -3/2 (pow.f64 y 2)))
(+.f64 1 (*.f64 -3/2 (*.f64 y y)))
(fma.f64 -3/2 (*.f64 y y) 1)
(fma.f64 y (*.f64 -3/2 y) 1)
(+.f64 1 (+.f64 (*.f64 7/8 (pow.f64 y 4)) (*.f64 -3/2 (pow.f64 y 2))))
(+.f64 1 (fma.f64 7/8 (pow.f64 y 4) (*.f64 -3/2 (*.f64 y y))))
(+.f64 (fma.f64 -3/2 (*.f64 y y) 1) (*.f64 7/8 (pow.f64 y 4)))
(fma.f64 -3/2 (*.f64 y y) (fma.f64 7/8 (pow.f64 y 4) 1))
(+.f64 1 (+.f64 (*.f64 -61/240 (pow.f64 y 6)) (+.f64 (*.f64 7/8 (pow.f64 y 4)) (*.f64 -3/2 (pow.f64 y 2)))))
(+.f64 1 (fma.f64 -61/240 (pow.f64 y 6) (fma.f64 7/8 (pow.f64 y 4) (*.f64 -3/2 (*.f64 y y)))))
(+.f64 (fma.f64 -61/240 (pow.f64 y 6) (*.f64 7/8 (pow.f64 y 4))) (fma.f64 -3/2 (*.f64 y y) 1))
(fma.f64 -61/240 (pow.f64 y 6) (fma.f64 -3/2 (*.f64 y y) (fma.f64 7/8 (pow.f64 y 4) 1)))
(fma.f64 -3/2 (*.f64 y y) (fma.f64 7/8 (pow.f64 y 4) (fma.f64 -61/240 (pow.f64 y 6) 1)))
(fma.f64 -3/2 (*.f64 y y) (fma.f64 -61/240 (pow.f64 y 6) (fma.f64 7/8 (pow.f64 y 4) 1)))
1
(+.f64 1 (*.f64 -1/2 (pow.f64 y 2)))
(+.f64 1 (*.f64 (*.f64 y y) -1/2))
(fma.f64 (*.f64 y y) -1/2 1)
(fma.f64 y (*.f64 y -1/2) 1)
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 y 2)) (*.f64 1/24 (pow.f64 y 4))))
(+.f64 1 (fma.f64 -1/2 (*.f64 y y) (*.f64 (pow.f64 y 4) 1/24)))
(+.f64 1 (fma.f64 (*.f64 y y) -1/2 (*.f64 (pow.f64 y 4) 1/24)))
(fma.f64 y (*.f64 y -1/2) (fma.f64 (pow.f64 y 4) 1/24 1))
(+.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)))))
(fma.f64 -1/720 (pow.f64 y 6) (+.f64 1 (fma.f64 -1/2 (*.f64 y y) (*.f64 (pow.f64 y 4) 1/24))))
(+.f64 (fma.f64 (*.f64 y y) -1/2 (*.f64 (pow.f64 y 4) 1/24)) (fma.f64 (pow.f64 y 6) -1/720 1))
(fma.f64 (pow.f64 y 6) -1/720 (fma.f64 y (*.f64 y -1/2) (fma.f64 (pow.f64 y 4) 1/24 1)))
(fma.f64 y (*.f64 y -1/2) (fma.f64 (pow.f64 y 4) 1/24 (fma.f64 (pow.f64 y 6) -1/720 1)))
(fma.f64 y (*.f64 y -1/2) (fma.f64 (pow.f64 y 6) -1/720 (fma.f64 (pow.f64 y 4) 1/24 1)))
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
(cos.f64 y)
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 (*.f64 y y) z) z)
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) z)
(*.f64 (fma.f64 y (*.f64 y -1/2) 1) z)
(fma.f64 y (*.f64 y (*.f64 -1/2 z)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (fma.f64 -1/2 (*.f64 (*.f64 y y) z) z) (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 1/24 (*.f64 (pow.f64 y 4) z) z))
(*.f64 z (fma.f64 y (*.f64 y -1/2) (fma.f64 (pow.f64 y 4) 1/24 1)))
(*.f64 (fma.f64 y (*.f64 y -1/2) (fma.f64 (pow.f64 y 4) 1/24 1)) z)
(fma.f64 z (fma.f64 y (*.f64 y -1/2) (*.f64 (pow.f64 y 4) 1/24)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(fma.f64 -1/2 (*.f64 (*.f64 y y) z) (fma.f64 -1/720 (*.f64 (pow.f64 y 6) z) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 -1/720 (*.f64 (pow.f64 y 6) z) (fma.f64 1/24 (*.f64 (pow.f64 y 4) z) z)))
(+.f64 z (*.f64 z (fma.f64 (pow.f64 y 6) -1/720 (fma.f64 y (*.f64 y -1/2) (*.f64 (pow.f64 y 4) 1/24)))))
(fma.f64 z (fma.f64 y (*.f64 y -1/2) (fma.f64 (pow.f64 y 6) -1/720 (*.f64 (pow.f64 y 4) 1/24))) z)
(*.f64 (fma.f64 y (*.f64 y -1/2) (fma.f64 (pow.f64 y 6) -1/720 (fma.f64 (pow.f64 y 4) 1/24 1))) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)

localize30.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(cos.f64 y)
0.0b
(sqrt.f64 (*.f64 (cos.f64 y) z))
0.1b
(*.f64 (cos.f64 y) z)
0.3b
(pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2)
Compiler

Compiled 36 to 13 computations (63.9% saved)

series59.0ms (0.6%)

Counts
2 → 24
Calls

12 calls:

TimeVariablePointExpression
44.0ms
y
@-inf
(pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2)
3.0ms
z
@-inf
(pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2)
3.0ms
z
@0
(pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2)
2.0ms
y
@0
(pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2)
1.0ms
z
@inf
(pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2)

rewrite84.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
613×pow1_binary64
565×add-log-exp_binary64
565×log1p-expm1-u_binary64
565×expm1-log1p-u_binary64
551×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0814
116314
2159214
Stop Event
node limit
Counts
2 → 50
Calls
Call 1
Inputs
(pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2)
(sqrt.f64 (*.f64 (cos.f64 y) z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (cos.f64 y) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cos.f64 y) z)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 z (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) (sqrt.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (cos.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) (*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (cos.f64 y) z))) (sqrt.f64 (*.f64 (cos.f64 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 2) (cbrt.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (cos.f64 y) z) 1/4) (*.f64 (pow.f64 (*.f64 (cos.f64 y) z) 1/4) (sqrt.f64 (*.f64 (cos.f64 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (*.f64 (sqrt.f64 (cos.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (*.f64 (sqrt.f64 z) (sqrt.f64 (*.f64 (cos.f64 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) (pow.f64 (*.f64 (cos.f64 y) z) 1/4)) (pow.f64 (*.f64 (cos.f64 y) z) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 y) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) (cbrt.f64 (*.f64 (cos.f64 y) z))) (cbrt.f64 (sqrt.f64 (*.f64 (cos.f64 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) (sqrt.f64 (cos.f64 y))) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (cos.f64 y) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (cos.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cos.f64 y) z)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 (cos.f64 y) z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) (cbrt.f64 (sqrt.f64 (*.f64 (cos.f64 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 (cos.f64 y) z))) (cbrt.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (cos.f64 y) z) 1/4) (pow.f64 (*.f64 (cos.f64 y) z) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 z) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (cos.f64 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cos.f64 y) z) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (cos.f64 y) z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cos.f64 y) z) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (cos.f64 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) z) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (cos.f64 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (cos.f64 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (cos.f64 y) z))))))))

simplify100.0ms (1%)

Algorithm
egg-herbie
Rules
407×*-commutative_binary64
389×distribute-rgt-in_binary64
382×distribute-lft-in_binary64
314×distribute-lft-out_binary64
307×unswap-sqr_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
054357
1145353
2412305
31797278
45206277
Stop Event
node limit
Counts
74 → 65
Calls
Call 1
Inputs
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z)))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(sqrt.f64 z)
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))
(+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z)))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (*.f64 -1/4 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))))) (sqrt.f64 (/.f64 1 z)))) (+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))
Outputs
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 y (*.f64 -1/2 y)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 (pow.f64 y 4) (-.f64 (*.f64 z 5/48) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) z))
(fma.f64 (fma.f64 -1/2 (*.f64 y y) 1) z (*.f64 (pow.f64 y 4) (fma.f64 z 5/48 (*.f64 z -1/16))))
(fma.f64 z (*.f64 y (*.f64 -1/2 y)) (fma.f64 (pow.f64 y 4) (*.f64 z 1/24) z))
(*.f64 z (+.f64 (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (pow.f64 y 4) 1/24)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (fma.f64 (pow.f64 y 4) (-.f64 (*.f64 z 5/48) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) z)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (fma.f64 (pow.f64 y 4) (fma.f64 z 5/48 (*.f64 z -1/16)) z))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (fma.f64 (pow.f64 y 4) (*.f64 z 1/24) z))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(sqrt.f64 z)
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z))))
(fma.f64 -1/4 (*.f64 y (*.f64 y (sqrt.f64 z))) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1))
(+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z)))))
(+.f64 (sqrt.f64 z) (fma.f64 1/2 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)))))
(+.f64 (fma.f64 -1/4 (*.f64 y (*.f64 y (sqrt.f64 z))) (sqrt.f64 z)) (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 (*.f64 1/2 (pow.f64 y 4)) (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)))))
(fma.f64 (*.f64 (pow.f64 y 4) (fma.f64 z 1/24 (*.f64 z -1/16))) (*.f64 1/2 (sqrt.f64 (/.f64 1 z))) (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1)))
(fma.f64 1/2 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 z -1/48) (sqrt.f64 (/.f64 1 z)))) (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1)))
(fma.f64 (*.f64 z -1/48) (*.f64 (pow.f64 y 4) (*.f64 1/2 (sqrt.f64 (/.f64 1 z)))) (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1)))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (*.f64 -1/4 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))))) (sqrt.f64 (/.f64 1 z)))) (+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))))
(fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 (pow.f64 y 6) (+.f64 (*.f64 z -1/720) (*.f64 1/4 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)))))) (+.f64 (sqrt.f64 z) (fma.f64 1/2 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z))))))
(fma.f64 1/2 (*.f64 (fma.f64 z -1/720 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) 1/4)) (*.f64 (pow.f64 y 6) (sqrt.f64 (/.f64 1 z)))) (+.f64 (fma.f64 -1/4 (*.f64 y (*.f64 y (sqrt.f64 z))) (sqrt.f64 z)) (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 (*.f64 1/2 (pow.f64 y 4)) (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))))))
(fma.f64 (pow.f64 y 6) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 z)) (fma.f64 (fma.f64 z 1/24 (*.f64 z -1/16)) 1/4 (*.f64 z -1/720)))) (fma.f64 (*.f64 (pow.f64 y 4) (fma.f64 z 1/24 (*.f64 z -1/16))) (*.f64 1/2 (sqrt.f64 (/.f64 1 z))) (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1))))
(+.f64 (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1)) (*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 z))) (+.f64 (*.f64 (pow.f64 y 4) (*.f64 z -1/48)) (*.f64 (pow.f64 y 6) (fma.f64 z -1/720 (*.f64 -1/4 (*.f64 z 1/48)))))))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))
(sqrt.f64 (*.f64 z (cos.f64 y)))

eval98.0ms (0.9%)

Compiler

Compiled 3983 to 2003 computations (49.7% saved)

prune101.0ms (1%)

Pruning

21 alts after pruning (16 fresh and 5 done)

PrunedKeptTotal
New29112303
Fresh8412
Picked101
Done257
Total30221323
Error
0.0b
Counts
323 → 21
Alt Table
Click to see full alt table
StatusErrorProgram
43.5b
(+.f64 z y)
47.0b
(+.f64 (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z)) (sin.f64 y))
9.3b
(+.f64 x (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 3)))
38.4b
(+.f64 y x)
17.3b
(+.f64 z x)
19.5b
(+.f64 x (*.f64 z (pow.f64 (sqrt.f64 (cos.f64 y)) 2)))
9.7b
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
9.2b
(+.f64 x (*.f64 z (log.f64 (exp.f64 (cos.f64 y)))))
36.5b
(+.f64 x (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
13.6b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (pow.f64 (cbrt.f64 (pow.f64 (sqrt.f64 (cos.f64 y)) 2)) 3)))
9.2b
(+.f64 x (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 3))))
27.7b
(+.f64 x (cbrt.f64 (*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))))
34.9b
x
28.2b
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
9.2b
(+.f64 x (*.f64 z (cos.f64 y)))
36.7b
(+.f64 (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))) (sin.f64 y))
26.0b
(+.f64 (sin.f64 y) x)
36.9b
(*.f64 (cos.f64 y) z)
9.3b
(+.f64 x (*.f64 z (-.f64 (+.f64 1 (cos.f64 y)) 1)))
31.0b
(-.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 1)
53.8b
(sin.f64 y)
Compiler

Compiled 390 to 285 computations (26.9% saved)

localize16.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(cos.f64 y)
0.1b
(exp.f64 (cos.f64 y))
0.1b
(*.f64 z (log.f64 (exp.f64 (cos.f64 y))))
0.3b
(log.f64 (exp.f64 (cos.f64 y)))
Compiler

Compiled 29 to 8 computations (72.4% saved)

localize4.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize12.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (sin.f64 y) x)
0.2b
(+.f64 1 (+.f64 (sin.f64 y) x))
2.0b
(-.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 1)
Compiler

Compiled 26 to 12 computations (53.8% saved)

series3.0ms (0%)

Counts
2 → 31
Calls

12 calls:

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

rewrite80.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
844×prod-diff_binary64
562×unpow-prod-down_binary64
455×fma-def_binary64
357×log-prod_binary64
257×fma-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0821
118515
2277815
Stop Event
node limit
Counts
2 → 192
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 1)
(+.f64 1 (+.f64 (sin.f64 y) x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 (+.f64 (sin.f64 y) x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (+.f64 (+.f64 (sin.f64 y) x) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (sin.f64 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 x (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (sin.f64 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (+.f64 (sin.f64 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 1 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (+.f64 (sin.f64 y) x) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (sin.f64 y)) (+.f64 x -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (+.f64 (sin.f64 y) x))) 2)) (log.f64 (cbrt.f64 (exp.f64 (+.f64 (sin.f64 y) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (+.f64 (sin.f64 y) x)))) (log.f64 (sqrt.f64 (exp.f64 (+.f64 (sin.f64 y) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (sin.f64 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sin.f64 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) (pow.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) 2) (cbrt.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 (sin.f64 y) x)) (sqrt.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (expm1.f64 (*.f64 3 (log1p.f64 (+.f64 (sin.f64 y) x)))) (/.f64 1 (+.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 2) (+.f64 (+.f64 (sin.f64 y) x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (expm1.f64 (*.f64 3 (log1p.f64 (+.f64 (sin.f64 y) x)))) (pow.f64 (/.f64 1 (+.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 2) (+.f64 (+.f64 (sin.f64 y) x) 2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) (/.f64 1 (fma.f64 x (-.f64 x (sin.f64 y)) (pow.f64 (sin.f64 y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) (pow.f64 (/.f64 1 (fma.f64 x (-.f64 x (sin.f64 y)) (pow.f64 (sin.f64 y) 2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (expm1.f64 (*.f64 2 (log1p.f64 (+.f64 (sin.f64 y) x)))) (/.f64 1 (+.f64 (+.f64 (sin.f64 y) x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (expm1.f64 (*.f64 2 (log1p.f64 (+.f64 (sin.f64 y) x)))) (pow.f64 (/.f64 1 (+.f64 (+.f64 (sin.f64 y) x) 2)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x x)) (/.f64 1 (-.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x x)) (pow.f64 (/.f64 1 (-.f64 (sin.f64 y) x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 1) (expm1.f64 (*.f64 1/2 (log1p.f64 (+.f64 (sin.f64 y) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (+.f64 (sin.f64 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (+.f64 (sin.f64 y) x))) 3) (pow.f64 (sqrt.f64 (cbrt.f64 (+.f64 (sin.f64 y) x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (+.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 1) 1) (pow.f64 (expm1.f64 (*.f64 1/2 (log1p.f64 (+.f64 (sin.f64 y) x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (+.f64 (sin.f64 y) x))) 2) 3) (cbrt.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (pow.f64 (+.f64 (sin.f64 y) x) 3)) 1/3) (pow.f64 (sqrt.f64 (pow.f64 (+.f64 (sin.f64 y) x) 3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (+.f64 (sin.f64 y) x) 3/2) 1/3) (pow.f64 (pow.f64 (+.f64 (sin.f64 y) x) 3/2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (pow.f64 (+.f64 (sin.f64 y) x) 2) (pow.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) 2)) 1/3) (cbrt.f64 (cbrt.f64 (+.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (pow.f64 (+.f64 (sin.f64 y) x) 2) (sqrt.f64 (+.f64 (sin.f64 y) x))) 1/3) (cbrt.f64 (sqrt.f64 (+.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 x (-.f64 x (sin.f64 y)) (pow.f64 (sin.f64 y) 2)) (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (sin.f64 y) x) (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 2) (+.f64 (+.f64 (sin.f64 y) x) 2)) (expm1.f64 (*.f64 3 (log1p.f64 (+.f64 (sin.f64 y) x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (+.f64 (sin.f64 y) x) 2) (expm1.f64 (*.f64 2 (log1p.f64 (+.f64 (sin.f64 y) x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (expm1.f64 (*.f64 3 (log1p.f64 (+.f64 (sin.f64 y) x)))) (+.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 2) (+.f64 (+.f64 (sin.f64 y) x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (expm1.f64 (*.f64 3 (log1p.f64 (+.f64 (sin.f64 y) x)))) (+.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 2) (-.f64 1 (*.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) (fma.f64 x (-.f64 x (sin.f64 y)) (pow.f64 (sin.f64 y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) (fma.f64 x x (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (expm1.f64 (*.f64 2 (log1p.f64 (+.f64 (sin.f64 y) x)))) (+.f64 (+.f64 (sin.f64 y) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x x)) (-.f64 (sin.f64 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))) (neg.f64 (fma.f64 x (-.f64 x (sin.f64 y)) (pow.f64 (sin.f64 y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x x))) (neg.f64 (-.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (expm1.f64 (*.f64 3 (log1p.f64 (+.f64 (sin.f64 y) x))))) (neg.f64 (+.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 2) (+.f64 (+.f64 (sin.f64 y) x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (expm1.f64 (*.f64 2 (log1p.f64 (+.f64 (sin.f64 y) x))))) (neg.f64 (+.f64 (+.f64 (sin.f64 y) x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (+.f64 (+.f64 (sin.f64 y) x) -1) 3)) (+.f64 1 (-.f64 (pow.f64 (+.f64 (+.f64 (sin.f64 y) x) -1) 2) (+.f64 (+.f64 (sin.f64 y) x) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (+.f64 (+.f64 (sin.f64 y) x) -1) 2)) (-.f64 1 (+.f64 (+.f64 (sin.f64 y) x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x x) (pow.f64 (sin.f64 y) 2)) (-.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (sin.f64 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 (sin.f64 y) x) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 (sin.f64 y) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 (sin.f64 y) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 x (-.f64 x (sin.f64 y)) (pow.f64 (sin.f64 y) 2)) (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (sin.f64 y) x) (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 2) (+.f64 (+.f64 (sin.f64 y) x) 2)) (expm1.f64 (*.f64 3 (log1p.f64 (+.f64 (sin.f64 y) x))))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 (+.f64 (sin.f64 y) x) 2) (expm1.f64 (*.f64 2 (log1p.f64 (+.f64 (sin.f64 y) x))))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 (sin.f64 y) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (sin.f64 y))) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (sin.f64 y)) (+.f64 1 (expm1.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (sin.f64 y))) (+.f64 1 (expm1.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 x)) (exp.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 x) (+.f64 1 (expm1.f64 (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 x)) (+.f64 1 (expm1.f64 (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 (sin.f64 y) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 (+.f64 (sin.f64 y) x)) (sqrt.f64 (*.f64 (+.f64 (sin.f64 y) x) (+.f64 (+.f64 (sin.f64 y) x) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (*.f64 (log1p.f64 (+.f64 (sin.f64 y) x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (+.f64 (sin.f64 y) x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 (sin.f64 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 1 (+.f64 (sin.f64 y) x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 (+.f64 (sin.f64 y) x) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 1 (sin.f64 y)) (+.f64 x -1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 y) 1 x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 1 (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sin.f64 y) x) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 x) (pow.f64 (cbrt.f64 x) 2) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (cbrt.f64 x) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) (pow.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) 2) (cbrt.f64 (+.f64 (sin.f64 y) x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) (pow.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 2) (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 2) (*.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (sin.f64 y)) (pow.f64 (cbrt.f64 (sin.f64 y)) 2) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (cbrt.f64 (sin.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 x) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 (sin.f64 y) x)) (sqrt.f64 (+.f64 (sin.f64 y) x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) (*.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 (sin.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (expm1.f64 (*.f64 3 (log1p.f64 (+.f64 (sin.f64 y) x)))) (/.f64 1 (+.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 2) (+.f64 (+.f64 (sin.f64 y) x) 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) (/.f64 1 (fma.f64 x (-.f64 x (sin.f64 y)) (pow.f64 (sin.f64 y) 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 3)) (/.f64 1 (fma.f64 (+.f64 (sin.f64 y) x) (+.f64 (+.f64 (sin.f64 y) x) -1) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (expm1.f64 (*.f64 2 (log1p.f64 (+.f64 (sin.f64 y) x)))) (/.f64 1 (+.f64 (+.f64 (sin.f64 y) x) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x x)) (/.f64 1 (-.f64 (sin.f64 y) x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 2)) (/.f64 1 (-.f64 1 (+.f64 (sin.f64 y) x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 (+.f64 (sin.f64 y) x) -1)) 2) (cbrt.f64 (+.f64 (+.f64 (sin.f64 y) x) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 1 (sin.f64 y))) 2) (cbrt.f64 (+.f64 1 (sin.f64 y))) (+.f64 x -1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 (+.f64 (sin.f64 y) x) -1)) (sqrt.f64 (+.f64 (+.f64 (sin.f64 y) x) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (sin.f64 y))) (sqrt.f64 (+.f64 1 (sin.f64 y))) (+.f64 x -1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 1) (expm1.f64 (*.f64 1/2 (log1p.f64 (+.f64 (sin.f64 y) x)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (+.f64 (sin.f64 y) x)) 1) (-.f64 (sqrt.f64 (+.f64 (sin.f64 y) x)) 1) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (+.f64 (sin.f64 y) x) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 1 (-.f64 1 (+.f64 (sin.f64 y) x))) (/.f64 (pow.f64 (+.f64 (sin.f64 y) x) 2) (-.f64 1 (+.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 1 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) (pow.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 2) (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 2) (*.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 2) (pow.f64 (*.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) (*.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) (pow.f64 (*.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 3)) (/.f64 1 (fma.f64 (+.f64 (sin.f64 y) x) (+.f64 (+.f64 (sin.f64 y) x) -1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 3)) (pow.f64 (/.f64 1 (fma.f64 (+.f64 (sin.f64 y) x) (+.f64 (+.f64 (sin.f64 y) x) -1) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 2)) (/.f64 1 (-.f64 1 (+.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 2)) (pow.f64 (/.f64 1 (-.f64 1 (+.f64 (sin.f64 y) x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (+.f64 1 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x)))) 3) (pow.f64 (sqrt.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x)))) 2) 3) (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 3)) 1/3) (pow.f64 (sqrt.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 3/2) 1/3) (pow.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 3/2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 2) (pow.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 2)) 1/3) (cbrt.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 2) (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x)))) 1/3) (cbrt.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (+.f64 (sin.f64 y) x) (+.f64 (+.f64 (sin.f64 y) x) -1) 1) (+.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 1 (+.f64 (sin.f64 y) x)) (-.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 3)) (fma.f64 (+.f64 (sin.f64 y) x) (+.f64 (+.f64 (sin.f64 y) x) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 3)) (+.f64 (pow.f64 (+.f64 (sin.f64 y) x) 2) (-.f64 1 (+.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 2)) (-.f64 1 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 3))) (neg.f64 (fma.f64 (+.f64 (sin.f64 y) x) (+.f64 (+.f64 (sin.f64 y) x) -1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 2))) (neg.f64 (-.f64 1 (+.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (+.f64 1 (sin.f64 y)) 3) (pow.f64 x 3)) (+.f64 (pow.f64 (+.f64 1 (sin.f64 y)) 2) (-.f64 (*.f64 x x) (*.f64 (+.f64 1 (sin.f64 y)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (+.f64 (sin.f64 y) x) 2) 1) (+.f64 (+.f64 (sin.f64 y) x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (+.f64 1 (sin.f64 y)) 2) (*.f64 x x)) (-.f64 (+.f64 1 (sin.f64 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 3)) 1) (fma.f64 (+.f64 (sin.f64 y) x) (+.f64 (+.f64 (sin.f64 y) x) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 2)) 1) (-.f64 1 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (+.f64 (sin.f64 y) x) (+.f64 (+.f64 (sin.f64 y) x) -1) 1) (+.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 1 (+.f64 (sin.f64 y) x)) (-.f64 1 (pow.f64 (+.f64 (sin.f64 y) x) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 1 (+.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 1 (+.f64 (sin.f64 y) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 x) (exp.f64 (+.f64 1 (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 x)) (exp.f64 (+.f64 1 (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (+.f64 1 (sin.f64 y))) (+.f64 1 (expm1.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log.f64 (+.f64 (+.f64 (sin.f64 y) x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 1 (+.f64 (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log1p.f64 (+.f64 (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (+.f64 (sin.f64 y) x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (sin.f64 y) (+.f64 x 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (+.f64 1 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 (sin.f64 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 (+.f64 (sin.f64 y) x) 2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 1 (sin.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 y) 1 (+.f64 x 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 1 (+.f64 1 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sin.f64 y) x) 1 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 x) (pow.f64 (cbrt.f64 x) 2) (+.f64 1 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (cbrt.f64 x) (+.f64 1 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) (pow.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 (sin.f64 y) x)) 2) (cbrt.f64 (+.f64 (sin.f64 y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (sin.f64 y)) (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (+.f64 x 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (cbrt.f64 (sin.f64 y)) (+.f64 x 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 x) (+.f64 1 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 (sin.f64 y) x)) (sqrt.f64 (+.f64 (sin.f64 y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 (sin.f64 y)) (+.f64 x 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (expm1.f64 (*.f64 3 (log1p.f64 (+.f64 (sin.f64 y) x)))) (/.f64 1 (+.f64 (pow.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 2) (+.f64 (+.f64 (sin.f64 y) x) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)) (/.f64 1 (fma.f64 x (-.f64 x (sin.f64 y)) (pow.f64 (sin.f64 y) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (expm1.f64 (*.f64 2 (log1p.f64 (+.f64 (sin.f64 y) x)))) (/.f64 1 (+.f64 (+.f64 (sin.f64 y) x) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (+.f64 (sin.f64 y) x) 2) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 x x)) (/.f64 1 (-.f64 (sin.f64 y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 (sin.f64 y)) 1 x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 (+.f64 (sin.f64 y) x) 2)) 2) (cbrt.f64 (+.f64 (+.f64 (sin.f64 y) x) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 1 (sin.f64 y))) 2) (cbrt.f64 (+.f64 1 (sin.f64 y))) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 (+.f64 (sin.f64 y) x) 2)) (sqrt.f64 (+.f64 (+.f64 (sin.f64 y) x) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (sin.f64 y))) (sqrt.f64 (+.f64 1 (sin.f64 y))) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (+.f64 1 (+.f64 (sin.f64 y) x))) 1) (expm1.f64 (*.f64 1/2 (log1p.f64 (+.f64 (sin.f64 y) x)))) 1)))))

simplify168.0ms (1.6%)

Algorithm
egg-herbie
Rules
780×sqr-pow_binary64
706×fma-def_binary64
684×cube-prod_binary64
601×fabs-mul_binary64
416×unswap-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
025195
169195
2168195
3446195
4805195
51417195
62020195
72691195
82807195
92976195
103189195
113519195
123975195
134574195
145328195
156260195
166768195
177258195
187650195
197974195
Stop Event
node limit
Counts
223 → 210
Calls
Call 1
Inputs
x
(+.f64 y x)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x)))
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(sin.f64 y)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 1 x)
(+.f64 1 (+.f64 y x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 1 (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 1 (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x))))
(+.f64 1 (sin.f64 y))
x
x
Outputs
x
(+.f64 y x)
(+.f64 x y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 x y))
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (fma.f64 1/120 (pow.f64 y 5) x)))
(+.f64 (fma.f64 1/120 (pow.f64 y 5) x) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) x)))
(fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) (+.f64 x y)))
(+.f64 x (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) y)))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(sin.f64 y)
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
x
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
x
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 1 x)
(+.f64 x 1)
(+.f64 1 (+.f64 y x))
(+.f64 (+.f64 x y) 1)
(+.f64 y (+.f64 x 1))
(+.f64 x (+.f64 y 1))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 1 (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (+.f64 x y) 1))
(+.f64 (+.f64 x y) (fma.f64 -1/6 (pow.f64 y 3) 1))
(+.f64 x (+.f64 y (fma.f64 -1/6 (pow.f64 y 3) 1)))
(+.f64 y (+.f64 x (fma.f64 -1/6 (pow.f64 y 3) 1)))
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (+.f64 y 1)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 1 (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x))))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (+.f64 y (fma.f64 1/120 (pow.f64 y 5) x)) 1))
(+.f64 (+.f64 y (fma.f64 1/120 (pow.f64 y 5) x)) (fma.f64 -1/6 (pow.f64 y 3) 1))
(+.f64 x (+.f64 (fma.f64 -1/6 (pow.f64 y 3) 1) (fma.f64 1/120 (pow.f64 y 5) y)))
(+.f64 x (+.f64 y (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) 1))))
(+.f64 x (+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) 1))))
(+.f64 (+.f64 x y) (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) 1)))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (+.f64 x y)) (fma.f64 1/120 (pow.f64 y 5) 1))
(+.f64 1 (sin.f64 y))
(+.f64 (sin.f64 y) 1)
x
x

localize17.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(cos.f64 y)
0.1b
(*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 3))
0.3b
(cbrt.f64 (cos.f64 y))
0.4b
(pow.f64 (cbrt.f64 (cos.f64 y)) 3)
Compiler

Compiled 33 to 15 computations (54.5% saved)

localize14.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(cos.f64 y)
0.0b
(sqrt.f64 (*.f64 z (cos.f64 y)))
0.1b
(*.f64 z (cos.f64 y))
0.3b
(pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)
Compiler

Compiled 34 to 12 computations (64.7% saved)

series6.0ms (0.1%)

Counts
2 → 16
Calls

12 calls:

TimeVariablePointExpression
2.0ms
z
@inf
(sqrt.f64 (*.f64 z (cos.f64 y)))
1.0ms
z
@0
(pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)
0.0ms
z
@-inf
(pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)
0.0ms
z
@inf
(pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)
0.0ms
y
@0
(pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)

rewrite53.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
613×pow1_binary64
565×add-log-exp_binary64
565×log1p-expm1-u_binary64
565×expm1-log1p-u_binary64
551×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0814
116314
2159214
Stop Event
node limit
Counts
2 → 50
Calls
Call 1
Inputs
(pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2)
(sqrt.f64 (*.f64 z (cos.f64 y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 z (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 z (cos.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cos.f64 y) z)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) (sqrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) (*.f64 (cbrt.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))) (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2) (cbrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 (cos.f64 y)) (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/4) (*.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/4) (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (*.f64 (sqrt.f64 (cos.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) (pow.f64 (*.f64 z (cos.f64 y)) 1/4)) (pow.f64 (*.f64 z (cos.f64 y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 y) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) (cbrt.f64 (*.f64 z (cos.f64 y)))) (cbrt.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) (sqrt.f64 z)) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (cos.f64 y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 z (cos.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) (cbrt.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))) (cbrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 z) (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/4) (pow.f64 (*.f64 z (cos.f64 y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 y)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (cos.f64 y)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (cos.f64 y)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 z (cos.f64 y)))))))))

simplify50.0ms (0.5%)

Algorithm
egg-herbie
Rules
398×*-commutative_binary64
389×distribute-rgt-in_binary64
382×distribute-lft-in_binary64
316×distribute-lft-out_binary64
307×unswap-sqr_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
053293
1144289
2411241
31786214
45193213
Stop Event
node limit
Counts
66 → 64
Calls
Call 1
Inputs
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z)))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(sqrt.f64 z)
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))
(+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z)))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (*.f64 -1/4 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))))) (sqrt.f64 (/.f64 1 z)))) (+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))))
Outputs
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(*.f64 z (fma.f64 (*.f64 -1/2 y) y 1))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 (pow.f64 y 4) (-.f64 (*.f64 z 5/48) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) z))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (pow.f64 y 4) (fma.f64 z 5/48 (*.f64 z -1/16)) z))
(fma.f64 z (*.f64 y (*.f64 -1/2 y)) (fma.f64 (pow.f64 y 4) (*.f64 z 1/24) z))
(*.f64 z (+.f64 (fma.f64 (*.f64 -1/2 y) y 1) (*.f64 (pow.f64 y 4) 1/24)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (fma.f64 (pow.f64 y 4) (-.f64 (*.f64 z 5/48) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) z)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (fma.f64 (pow.f64 y 4) (fma.f64 z 5/48 (*.f64 z -1/16)) z))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (fma.f64 (pow.f64 y 4) (*.f64 z 1/24) z))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(sqrt.f64 z)
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z))))
(fma.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1))
(+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z)))))
(+.f64 (sqrt.f64 z) (fma.f64 1/2 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)))))
(+.f64 (fma.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)) (sqrt.f64 z)) (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z))) 1/2)))
(fma.f64 1/2 (*.f64 (pow.f64 y 4) (*.f64 (fma.f64 z 1/24 (*.f64 z -1/16)) (sqrt.f64 (/.f64 1 z)))) (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1)))
(fma.f64 (fma.f64 (*.f64 y y) -1/4 1) (sqrt.f64 z) (*.f64 (pow.f64 y 4) (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 1/2 (*.f64 z -1/48)))))
(fma.f64 (fma.f64 (*.f64 y y) -1/4 1) (sqrt.f64 z) (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 (pow.f64 y 4) (*.f64 1/2 (*.f64 z -1/48)))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (*.f64 -1/4 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))))) (sqrt.f64 (/.f64 1 z)))) (+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))))
(fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 (pow.f64 y 6) (+.f64 (*.f64 z -1/720) (*.f64 1/4 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)))))) (+.f64 (sqrt.f64 z) (fma.f64 1/2 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z))))))
(+.f64 (fma.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)) (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z))) 1/2))) (fma.f64 1/2 (*.f64 (fma.f64 z -1/720 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) 1/4)) (*.f64 (pow.f64 y 6) (sqrt.f64 (/.f64 1 z)))) (sqrt.f64 z)))
(fma.f64 (pow.f64 y 6) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 z)) (fma.f64 (fma.f64 z 1/24 (*.f64 z -1/16)) 1/4 (*.f64 z -1/720)))) (fma.f64 1/2 (*.f64 (pow.f64 y 4) (*.f64 (fma.f64 z 1/24 (*.f64 z -1/16)) (sqrt.f64 (/.f64 1 z)))) (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1))))
(+.f64 (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1)) (*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 z))) (+.f64 (*.f64 (pow.f64 y 6) (fma.f64 z -1/720 (*.f64 -1/4 (*.f64 z 1/48)))) (*.f64 (pow.f64 y 4) (*.f64 z -1/48)))))

eval267.0ms (2.6%)

Compiler

Compiled 7586 to 4078 computations (46.2% saved)

prune322.0ms (3.1%)

Pruning

22 alts after pruning (13 fresh and 9 done)

PrunedKeptTotal
New54111552
Fresh9211
Picked011
Done189
Total55122573
Error
0.0b
Counts
573 → 22
Alt Table
Click to see full alt table
StatusErrorProgram
43.5b
(+.f64 z y)
9.3b
(+.f64 x (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 3)))
38.4b
(+.f64 y x)
17.3b
(+.f64 z x)
36.5b
(+.f64 x (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
53.8b
(sin.f64 y)
9.2b
(+.f64 x (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 3))))
36.9b
(*.f64 (cos.f64 y) z)
37.0b
(+.f64 x (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z)))
19.5b
(+.f64 x (*.f64 z (pow.f64 (sqrt.f64 (cos.f64 y)) 2)))
19.5b
(+.f64 x (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))))
19.5b
(+.f64 x (*.f64 z (pow.f64 (cbrt.f64 (pow.f64 (sqrt.f64 (cos.f64 y)) 2)) 3)))
27.7b
(+.f64 x (cbrt.f64 (*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))))
28.2b
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
9.2b
(+.f64 x (*.f64 z (cos.f64 y)))
9.3b
(+.f64 x (*.f64 z (-.f64 (+.f64 1 (cos.f64 y)) 1)))
38.0b
(-.f64 (+.f64 x 1) 1)
9.2b
(+.f64 x (*.f64 z (log.f64 (exp.f64 (cos.f64 y)))))
26.0b
(+.f64 (sin.f64 y) x)
55.5b
(-.f64 (+.f64 (sin.f64 y) 1) 1)
9.7b
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 3))
34.9b
x
Compiler

Compiled 217 to 159 computations (26.7% saved)

regimes137.0ms (1.3%)

Counts
54 → 1
Calls
Call 1
Inputs
x
x
x
(+.f64 y x)
(+.f64 z y)
(+.f64 z x)
(-.f64 (+.f64 x 1) 1)
(+.f64 y (+.f64 z x))
(sin.f64 y)
(sin.f64 y)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(+.f64 (sin.f64 y) x)
(-.f64 (+.f64 (sin.f64 y) 1) 1)
(+.f64 x (*.f64 z (cos.f64 y)))
(-.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 1)
(+.f64 x (*.f64 z (-.f64 (+.f64 1 (cos.f64 y)) 1)))
(+.f64 x (*.f64 z (-.f64 (+.f64 1 (cos.f64 y)) 1)))
(fma.f64 z (cos.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (-.f64 (+.f64 1 (cos.f64 y)) 1) z) (sin.f64 y))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (-.f64 (+.f64 1 (cos.f64 y)) 1)))
(+.f64 x (*.f64 z (log.f64 (exp.f64 (cos.f64 y)))))
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))
(+.f64 x (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 3))))
(+.f64 x (*.f64 z (pow.f64 (sqrt.f64 (cos.f64 y)) 2)))
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 3))
(+.f64 x (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 3)))
(+.f64 x (*.f64 z (pow.f64 (sqrt.f64 (cos.f64 y)) 2)))
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
(+.f64 x (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
(+.f64 x (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 3))))
(+.f64 x (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z)))
(+.f64 (*.f64 (log.f64 (exp.f64 (cos.f64 y))) z) (sin.f64 y))
(+.f64 (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 3) z) (sin.f64 y))
(+.f64 (*.f64 (pow.f64 (sqrt.f64 (cos.f64 y)) 2) z) (sin.f64 y))
(+.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 3) (sin.f64 y))
(+.f64 (pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2) (sin.f64 y))
(+.f64 (*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 3)) z) (sin.f64 y))
(+.f64 x (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))))
(+.f64 (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z)) (sin.f64 y))
(+.f64 x (cbrt.f64 (*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (log.f64 (exp.f64 (cos.f64 y)))))
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 3))))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 3)))
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (pow.f64 (sqrt.f64 (cos.f64 y)) 2)))
(+.f64 x (*.f64 z (pow.f64 (cbrt.f64 (pow.f64 (sqrt.f64 (cos.f64 y)) 2)) 3)))
(+.f64 (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))) (sin.f64 y))
(+.f64 (+.f64 x (sin.f64 y)) (cbrt.f64 (*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (pow.f64 (cbrt.f64 (pow.f64 (sqrt.f64 (cos.f64 y)) 2)) 3)))
Outputs
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))
Calls

4 calls:

39.0ms
z
30.0ms
x
27.0ms
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
26.0ms
y
Results
ErrorSegmentsBranch
0.1b1x
0.1b1y
0.1b1z
0.1b1(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
Compiler

Compiled 468 to 190 computations (59.4% saved)

regimes62.0ms (0.6%)

Counts
25 → 1
Calls
Call 1
Inputs
x
x
x
(+.f64 y x)
(+.f64 z y)
(+.f64 z x)
(-.f64 (+.f64 x 1) 1)
(+.f64 y (+.f64 z x))
(sin.f64 y)
(sin.f64 y)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(+.f64 (sin.f64 y) x)
(-.f64 (+.f64 (sin.f64 y) 1) 1)
(+.f64 x (*.f64 z (cos.f64 y)))
(-.f64 (+.f64 1 (+.f64 (sin.f64 y) x)) 1)
(+.f64 x (*.f64 z (-.f64 (+.f64 1 (cos.f64 y)) 1)))
(+.f64 x (*.f64 z (-.f64 (+.f64 1 (cos.f64 y)) 1)))
(fma.f64 z (cos.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (-.f64 (+.f64 1 (cos.f64 y)) 1) z) (sin.f64 y))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (-.f64 (+.f64 1 (cos.f64 y)) 1)))
(+.f64 x (*.f64 z (log.f64 (exp.f64 (cos.f64 y)))))
Outputs
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
Calls

4 calls:

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

Compiled 162 to 74 computations (54.3% saved)

regimes192.0ms (1.8%)

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

3 calls:

98.0ms
y
59.0ms
x
30.0ms
z
Results
ErrorSegmentsBranch
3.1b3x
5.9b4y
2.2b3z
Compiler

Compiled 109 to 48 computations (56% saved)

bsearch282.0ms (2.7%)

Algorithm
binary-search
Steps
TimeLeftRight
190.0ms
4.013109801345175e-39
4.869241898997178e-34
91.0ms
-8.974192156555443e-13
-3.285777771336574e-14
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes368.0ms (3.5%)

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

3 calls:

168.0ms
z
115.0ms
y
77.0ms
x
Results
ErrorSegmentsBranch
8.0b3x
5.9b4y
2.2b3z
Compiler

Compiled 97 to 46 computations (52.6% saved)

bsearch215.0ms (2.1%)

Algorithm
binary-search
Steps
TimeLeftRight
89.0ms
4.013109801345175e-39
4.869241898997178e-34
125.0ms
-8.974192156555443e-13
-3.285777771336574e-14
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes306.0ms (2.9%)

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

3 calls:

177.0ms
x
62.0ms
z
56.0ms
y
Results
ErrorSegmentsBranch
9.1b12x
9.1b3y
6.7b4z
Compiler

Compiled 63 to 28 computations (55.6% saved)

bsearch259.0ms (2.5%)

Algorithm
binary-search
Steps
TimeLeftRight
46.0ms
425576.63372784475
4424379.401936617
115.0ms
-8.974192156555443e-13
-3.285777771336574e-14
98.0ms
-6.592531959858113e+216
-9.762145433240941e+204
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes128.0ms (1.2%)

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

3 calls:

59.0ms
x
46.0ms
y
20.0ms
z
Results
ErrorSegmentsBranch
12.9b5x
13.0b7y
12.9b3z
Compiler

Compiled 53 to 23 computations (56.6% saved)

bsearch128.0ms (1.2%)

Algorithm
binary-search
Steps
TimeLeftRight
71.0ms
1.3442933524802597e+126
6.348856230144987e+130
56.0ms
-6.592531959858113e+216
-9.762145433240941e+204
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes199.0ms (1.9%)

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

3 calls:

92.0ms
x
89.0ms
y
13.0ms
z
Results
ErrorSegmentsBranch
15.5b3x
14.2b6y
17.3b1z
Compiler

Compiled 41 to 21 computations (48.8% saved)

bsearch504.0ms (4.8%)

Algorithm
binary-search
Steps
TimeLeftRight
83.0ms
5.9822126053297135e+159
5.253468255859811e+165
75.0ms
1.216054285511013e+146
1.6156261281667184e+146
116.0ms
9.2124891195855e+94
1.3369582224799263e+96
127.0ms
2.1029162195330391e+68
2.0946961841570885e+70
102.0ms
-6.237953476278223e+20
-2951475126553852.0
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes40.0ms (0.4%)

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

3 calls:

17.0ms
y
16.0ms
x
5.0ms
z
Results
ErrorSegmentsBranch
15.5b3x
15.3b3y
17.3b1z
Compiler

Compiled 37 to 20 computations (45.9% saved)

bsearch83.0ms (0.8%)

Algorithm
binary-search
Steps
TimeLeftRight
41.0ms
7.318806627289397e+60
2.5221648677339053e+61
42.0ms
-6.237953476278223e+20
-2951475126553852.0
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes34.0ms (0.3%)

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

3 calls:

21.0ms
x
6.0ms
z
5.0ms
y
Results
ErrorSegmentsBranch
17.3b1x
17.3b1y
17.3b1z
Compiler

Compiled 32 to 19 computations (40.6% saved)

regimes72.0ms (0.7%)

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

3 calls:

28.0ms
y
24.0ms
z
17.0ms
x
Results
ErrorSegmentsBranch
24.1b3x
27.2b7y
25.8b5z
Compiler

Compiled 24 to 14 computations (41.7% saved)

bsearch104.0ms (1%)

Algorithm
binary-search
Steps
TimeLeftRight
47.0ms
3.553844872857042e+22
2.8112687655314453e+30
57.0ms
-2.7468294366694206e-111
-1.1653272361369644e-113
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes28.0ms (0.3%)

Counts
4 → 3
Calls
Call 1
Inputs
x
x
x
(+.f64 y x)
Outputs
x
(+.f64 y x)
x
Calls

3 calls:

11.0ms
y
11.0ms
x
4.0ms
z
Results
ErrorSegmentsBranch
33.0b3x
33.0b3y
34.9b1z
Compiler

Compiled 21 to 13 computations (38.1% saved)

bsearch100.0ms (1%)

Algorithm
binary-search
Steps
TimeLeftRight
42.0ms
7.318806627289397e+60
2.5221648677339053e+61
57.0ms
-4.456574292024145e+97
-9.398961706106641e+93
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes13.0ms (0.1%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0.0b (-0%)

Counts
3 → 1
Calls
Call 1
Inputs
x
x
x
Outputs
x
Calls

3 calls:

5.0ms
y
4.0ms
x
4.0ms
z
Results
ErrorSegmentsBranch
34.9b1x
34.9b1y
34.9b1z
Compiler

Compiled 18 to 12 computations (33.3% saved)

simplify15.0ms (0.1%)

Algorithm
egg-herbie
Rules
+-commutative_binary64
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067287
176287
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(if (<=.f64 z -8887609432672637/9903520314283042199192993792) (+.f64 x (*.f64 z (cos.f64 y))) (if (<=.f64 z 3075036437783337/766247770432944429179173513575154591809369561091801088) (+.f64 (sin.f64 y) x) (fma.f64 z (cos.f64 y) x)))
(if (<=.f64 z -8887609432672637/9903520314283042199192993792) (+.f64 x (*.f64 z (cos.f64 y))) (if (<=.f64 z 3075036437783337/766247770432944429179173513575154591809369561091801088) (+.f64 (sin.f64 y) x) (+.f64 x (*.f64 z (cos.f64 y)))))
(if (<=.f64 z -6592531959858112566735662956989506159437937843116164689489884622448530649076772171661906528232065561294116487811051339047209146064679462066999488656476027641696832446794389774810862221149588218025280438910838133227520) (*.f64 (cos.f64 y) z) (if (<=.f64 z -8887609432672637/9903520314283042199192993792) (+.f64 z x) (if (<=.f64 z 7311350895211455/17179869184) (+.f64 (sin.f64 y) x) (*.f64 (cos.f64 y) z))))
(if (<=.f64 z -6592531959858112566735662956989506159437937843116164689489884622448530649076772171661906528232065561294116487811051339047209146064679462066999488656476027641696832446794389774810862221149588218025280438910838133227520) (*.f64 (cos.f64 y) z) (if (<=.f64 z 1344293352480259710811877053518413955049735751978877040042576135954354008946338555143873119540235015865919274409011545081118720) (+.f64 z x) (*.f64 (cos.f64 y) z)))
(if (<=.f64 y -623795347627822284800) (+.f64 z x) (if (<=.f64 y 210291621953303912051455409396368654733149135805245307403469078921216) (+.f64 y (+.f64 z x)) (if (<=.f64 y 92124891195854996505710170217588948462905317661279166194926961120150444327638443249946274562048) (sin.f64 y) (if (<=.f64 y 121605428551101292391618246022157149451296643969117466210141495207327839017874163891921130234548570367590384311419979573050711573407492167100792832) (+.f64 z x) (if (<=.f64 y 5982212605329713521121265968520999945381240062016245190399550890672677112462619649826248857620311091116855455846065694492054163521516120216020497898867261440000) (sin.f64 y) (+.f64 z x))))))
(if (<=.f64 y -623795347627822284800) (+.f64 z x) (if (<=.f64 y 7318806627289397120659855222103003771344810622380132544806912) (+.f64 y (+.f64 z x)) (+.f64 z x)))
(+.f64 z x)
(if (<=.f64 x -3718774772447389/1353842624082429130653522550851115089568572790710847937094960732721983060451965636249987502980536903367866802227247837807116288) x (if (<=.f64 x 35538448728570420264960) (+.f64 z y) x))
(if (<=.f64 y -44565742920241451327351187094288198635308296330168520547363015124095167979625837162276755358089216) x (if (<=.f64 y 7318806627289397120659855222103003771344810622380132544806912) (+.f64 y x) x))
x
Outputs
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(if (<=.f64 z -8887609432672637/9903520314283042199192993792) (+.f64 x (*.f64 z (cos.f64 y))) (if (<=.f64 z 3075036437783337/766247770432944429179173513575154591809369561091801088) (+.f64 (sin.f64 y) x) (fma.f64 z (cos.f64 y) x)))
(if (<=.f64 z -8887609432672637/9903520314283042199192993792) (+.f64 x (*.f64 z (cos.f64 y))) (if (<=.f64 z 3075036437783337/766247770432944429179173513575154591809369561091801088) (+.f64 x (sin.f64 y)) (fma.f64 z (cos.f64 y) x)))
(if (<=.f64 z -8887609432672637/9903520314283042199192993792) (+.f64 x (*.f64 z (cos.f64 y))) (if (<=.f64 z 3075036437783337/766247770432944429179173513575154591809369561091801088) (+.f64 (sin.f64 y) x) (+.f64 x (*.f64 z (cos.f64 y)))))
(if (<=.f64 z -8887609432672637/9903520314283042199192993792) (+.f64 x (*.f64 z (cos.f64 y))) (if (<=.f64 z 3075036437783337/766247770432944429179173513575154591809369561091801088) (+.f64 x (sin.f64 y)) (+.f64 x (*.f64 z (cos.f64 y)))))
(if (<=.f64 z -6592531959858112566735662956989506159437937843116164689489884622448530649076772171661906528232065561294116487811051339047209146064679462066999488656476027641696832446794389774810862221149588218025280438910838133227520) (*.f64 (cos.f64 y) z) (if (<=.f64 z -8887609432672637/9903520314283042199192993792) (+.f64 z x) (if (<=.f64 z 7311350895211455/17179869184) (+.f64 (sin.f64 y) x) (*.f64 (cos.f64 y) z))))
(if (<=.f64 z -6592531959858112566735662956989506159437937843116164689489884622448530649076772171661906528232065561294116487811051339047209146064679462066999488656476027641696832446794389774810862221149588218025280438910838133227520) (*.f64 z (cos.f64 y)) (if (<=.f64 z -8887609432672637/9903520314283042199192993792) (+.f64 z x) (if (<=.f64 z 7311350895211455/17179869184) (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))))
(if (<=.f64 z -6592531959858112566735662956989506159437937843116164689489884622448530649076772171661906528232065561294116487811051339047209146064679462066999488656476027641696832446794389774810862221149588218025280438910838133227520) (*.f64 (cos.f64 y) z) (if (<=.f64 z 1344293352480259710811877053518413955049735751978877040042576135954354008946338555143873119540235015865919274409011545081118720) (+.f64 z x) (*.f64 (cos.f64 y) z)))
(if (<=.f64 z -6592531959858112566735662956989506159437937843116164689489884622448530649076772171661906528232065561294116487811051339047209146064679462066999488656476027641696832446794389774810862221149588218025280438910838133227520) (*.f64 z (cos.f64 y)) (if (<=.f64 z 1344293352480259710811877053518413955049735751978877040042576135954354008946338555143873119540235015865919274409011545081118720) (+.f64 z x) (*.f64 z (cos.f64 y))))
(if (<=.f64 y -623795347627822284800) (+.f64 z x) (if (<=.f64 y 210291621953303912051455409396368654733149135805245307403469078921216) (+.f64 y (+.f64 z x)) (if (<=.f64 y 92124891195854996505710170217588948462905317661279166194926961120150444327638443249946274562048) (sin.f64 y) (if (<=.f64 y 121605428551101292391618246022157149451296643969117466210141495207327839017874163891921130234548570367590384311419979573050711573407492167100792832) (+.f64 z x) (if (<=.f64 y 5982212605329713521121265968520999945381240062016245190399550890672677112462619649826248857620311091116855455846065694492054163521516120216020497898867261440000) (sin.f64 y) (+.f64 z x))))))
(if (<=.f64 y -623795347627822284800) (+.f64 z x) (if (<=.f64 y 7318806627289397120659855222103003771344810622380132544806912) (+.f64 y (+.f64 z x)) (+.f64 z x)))
(+.f64 z x)
(if (<=.f64 x -3718774772447389/1353842624082429130653522550851115089568572790710847937094960732721983060451965636249987502980536903367866802227247837807116288) x (if (<=.f64 x 35538448728570420264960) (+.f64 z y) x))
(if (<=.f64 y -44565742920241451327351187094288198635308296330168520547363015124095167979625837162276755358089216) x (if (<=.f64 y 7318806627289397120659855222103003771344810622380132544806912) (+.f64 y x) x))
x
Compiler

Compiled 233 to 132 computations (43.3% saved)

soundness9.0ms (0.1%)

Algorithm
egg-herbie
Rules
fma-def_binary64
+-commutative_binary64
associate-+r+_binary64
associate-+l+_binary64
*-commutative_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0914
11412
22312
32912
Stop Event
saturated
Compiler

Compiled 35 to 23 computations (34.3% saved)

end87.0ms (0.8%)

Compiler

Compiled 200 to 75 computations (62.5% saved)

Profiling

Loading profile data...