Details

Time bar (total: 11.8s)

analyze965.0ms (8.2%)

Algorithm
search
Search
TrueOtherFalseIter
0%100%0%0
0%100%0%1
0%100%0%2
50%50%0%3
50%50%0%4
50%50%0%5
50%50%0%6
50%50%0%7
50%50%0%8
50%50%0%9
50%50%0%10
50%50%0%11
50%50%0%12
50%50%0%13
50%49.9%0.1%14
Compiler

Compiled 12 to 9 computations (25% saved)

sample10.1s (85.5%)

Results
4.6s1585×body8192exit
2.6s3985×body1024valid
933.0ms1595×body1024invalid
874.0ms2083×body512valid
318.0ms1038×body256valid
273.0ms766×body512invalid
175.0ms205×body2048valid
150.0ms945×body128valid
111.0ms438×body256invalid
59.0ms424×body128invalid
Compiler

Compiled 24 to 18 computations (25% saved)

preprocess38.0ms (0.3%)

Algorithm
egg-herbie
Rules
924×unswap-sqr_binary64
427×associate-/l*_binary64
271×*-commutative_binary64
263×associate-/r*_binary64
222×associate-/l/_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
11617
22615
33915
46315
512015
627615
770815
8114515
9309515
10499515
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x)))
Outputs
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x)))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
Compiler

Compiled 11 to 8 computations (27.3% saved)

simplify34.0ms (0.3%)

Algorithm
egg-herbie
Rules
924×unswap-sqr_binary64
427×associate-/l*_binary64
271×*-commutative_binary64
263×associate-/r*_binary64
222×associate-/l/_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0917
11617
22615
33915
46315
512015
627615
770815
8114515
9309515
10499515
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x)))
Outputs
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x)))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))

prune2.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
59.4b
Counts
3 → 1
Alt Table
StatusErrorProgram
59.4b
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
Compiler

Compiled 40 to 21 computations (47.5% saved)

localize7.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (cos.f64 x))
0.3b
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
4.4b
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))

series5.0ms (0%)

Counts
3 → 8
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@0
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
1.0ms
x
@inf
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
1.0ms
x
@-inf
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
1.0ms
x
@inf
(sqrt.f64 (cos.f64 x))
1.0ms
x
@0
(sqrt.f64 (cos.f64 x))

rewrite43.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
695×pow1_binary64
641×add-log-exp_binary64
641×log1p-expm1-u_binary64
641×expm1-log1p-u_binary64
71×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0730
113930
2174530
Stop Event
node limit
Counts
3 → 70
Calls
Call 1
Inputs
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(sqrt.f64 (cos.f64 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (*.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (exp.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) (pow.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) 2) (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (exp.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) (sqrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (/.f64 1 (neg.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (exp.f64 (neg.f64 x)) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) 1) (/.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 1) (/.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (exp.f64 (+.f64 x x)))) (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (cbrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (cbrt.f64 (exp.f64 (+.f64 x x)))) (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (cbrt.f64 (exp.f64 (+.f64 x x)))) (/.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (cbrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (exp.f64 x))) (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (sqrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (sqrt.f64 (exp.f64 x))) (/.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (sqrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (exp.f64 x) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (neg.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) 3) (pow.f64 (exp.f64 x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (cos.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cos.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (cos.f64 x))) (cbrt.f64 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cos.f64 x)) (cbrt.f64 (sqrt.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cos.f64 x) 1/4) (pow.f64 (cos.f64 x) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (cos.f64 x)) 2)) (sqrt.f64 (cbrt.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cos.f64 x)) 2) 1/2) (pow.f64 (cbrt.f64 (cos.f64 x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cos.f64 x) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (cos.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cos.f64 x) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (cos.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cos.f64 x) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (cos.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (cos.f64 x) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (cos.f64 x))))))))

simplify29.0ms (0.2%)

Algorithm
egg-herbie
Rules
644×associate-*l*_binary64
593×cancel-sign-sub-inv_binary64
527×fma-def_binary64
282×fma-neg_binary64
166×distribute-rgt-neg-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
039194
1107194
2298158
31083138
44830138
Stop Event
node limit
Counts
78 → 84
Calls
Call 1
Inputs
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))
(-.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x))
(-.f64 (+.f64 (*.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 2))) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x))
(-.f64 (+.f64 (*.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 2))) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (+.f64 (*.f64 1/6 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 3))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x)))
1
(-.f64 1 (*.f64 1/4 (pow.f64 x 2)))
(-.f64 1 (+.f64 (*.f64 1/96 (pow.f64 x 4)) (*.f64 1/4 (pow.f64 x 2))))
(-.f64 1 (+.f64 (*.f64 1/96 (pow.f64 x 4)) (+.f64 (*.f64 19/5760 (pow.f64 x 6)) (*.f64 1/4 (pow.f64 x 2)))))
Outputs
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))
(-.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x))
(-.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))
(*.f64 (+.f64 (neg.f64 x) 1) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (fma.f64 -1 x 1))
(-.f64 (+.f64 (*.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 2))) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x))
(-.f64 (fma.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 x x)) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))
(+.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (-.f64 (*.f64 x (*.f64 x 1/2)) x)))
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (-.f64 (fma.f64 x (*.f64 x 1/2) 1) x))
(-.f64 (+.f64 (*.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 2))) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (+.f64 (*.f64 1/6 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 3))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x)))
(-.f64 (fma.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 x x)) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (fma.f64 1/6 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 3)) (*.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))
(-.f64 (fma.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 x x)) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (fma.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (pow.f64 x 3) 1/6))))
(-.f64 (*.f64 (+.f64 (*.f64 x (*.f64 x 1/2)) 1) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (+.f64 x (*.f64 1/6 (pow.f64 x 3)))))
(+.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (-.f64 (*.f64 (*.f64 x x) (-.f64 1/2 (*.f64 x 1/6))) x)))
1
(-.f64 1 (*.f64 1/4 (pow.f64 x 2)))
(+.f64 1 (*.f64 -1/4 (*.f64 x x)))
(+.f64 1 (*.f64 (*.f64 x x) -1/4))
(fma.f64 (*.f64 x x) -1/4 1)
(fma.f64 x (*.f64 x -1/4) 1)
(-.f64 1 (+.f64 (*.f64 1/96 (pow.f64 x 4)) (*.f64 1/4 (pow.f64 x 2))))
(-.f64 1 (fma.f64 1/96 (pow.f64 x 4) (*.f64 (*.f64 x x) 1/4)))
(-.f64 1 (fma.f64 1/96 (pow.f64 x 4) (*.f64 x (*.f64 x 1/4))))
(+.f64 (*.f64 (pow.f64 x 4) -1/96) (fma.f64 (*.f64 x x) -1/4 1))
(fma.f64 x (*.f64 x -1/4) (fma.f64 (pow.f64 x 4) -1/96 1))
(-.f64 1 (+.f64 (*.f64 1/96 (pow.f64 x 4)) (+.f64 (*.f64 19/5760 (pow.f64 x 6)) (*.f64 1/4 (pow.f64 x 2)))))
(-.f64 1 (fma.f64 1/96 (pow.f64 x 4) (fma.f64 19/5760 (pow.f64 x 6) (*.f64 (*.f64 x x) 1/4))))
(-.f64 1 (fma.f64 1/96 (pow.f64 x 4) (fma.f64 (*.f64 x x) 1/4 (*.f64 19/5760 (pow.f64 x 6)))))
(-.f64 1 (fma.f64 x (*.f64 x 1/4) (fma.f64 1/96 (pow.f64 x 4) (*.f64 19/5760 (pow.f64 x 6)))))
(+.f64 (fma.f64 (pow.f64 x 4) -1/96 1) (fma.f64 (*.f64 x x) -1/4 (*.f64 (pow.f64 x 6) -19/5760)))

prune69.0ms (0.6%)

Pruning

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New80484
Fresh000
Picked101
Done000
Total81485
Error
59.3b
Counts
85 → 4
Alt Table
StatusErrorProgram
59.4b
(exp.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x))
59.4b
(log.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))
60.5b
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))
59.4b
(/.f64 (log.f64 (exp.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (exp.f64 x))
Compiler

Compiled 1317 to 444 computations (66.3% saved)

localize19.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (cos.f64 x))
0.3b
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
2.2b
(log.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))
4.4b
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
(log.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))
0.0ms
x
@inf
(log.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))
0.0ms
x
@-inf
(log.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))

rewrite37.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
764×pow1_binary64
703×log1p-expm1-u_binary64
703×expm1-log1p-u_binary64
79×add-sqr-sqrt_binary64
78×*-un-lft-identity_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0915
116215
2193015
Stop Event
node limit
Counts
1 → 45
Calls
Call 1
Inputs
(log.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) (pow.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) 2) (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (*.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (exp.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) (sqrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (exp.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (/.f64 1 (neg.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (exp.f64 (neg.f64 x)) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) 1) (/.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 1) (/.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (exp.f64 (+.f64 x x)))) (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (cbrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (cbrt.f64 (exp.f64 (+.f64 x x)))) (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (cbrt.f64 (exp.f64 (+.f64 x x)))) (/.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (cbrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (exp.f64 x))) (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (sqrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (sqrt.f64 (exp.f64 x))) (/.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (sqrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (exp.f64 x) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (/.f64 (exp.f64 x) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (/.f64 (exp.f64 x) (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (/.f64 (exp.f64 x) (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (neg.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (neg.f64 (/.f64 (exp.f64 x) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (neg.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (neg.f64 (neg.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (sqrt.f64 (exp.f64 x))) (sqrt.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) 1) (exp.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (cbrt.f64 (exp.f64 (+.f64 x x)))) (cbrt.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (exp.f64 x) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (neg.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) 3) (pow.f64 (exp.f64 x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x) 1))))))

simplify27.0ms (0.2%)

Algorithm
egg-herbie
Rules
529×distribute-rgt-neg-in_binary64
425×distribute-lft-neg-in_binary64
293×cancel-sign-sub-inv_binary64
282×associate-*l*_binary64
273×fma-def_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
023262
162262
2169228
3601210
42733199
Stop Event
node limit
Counts
57 → 52
Calls
Call 1
Inputs
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))
(-.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x))
(-.f64 (+.f64 (*.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 2))) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x))
(-.f64 (+.f64 (*.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 2))) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (+.f64 (*.f64 1/6 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 3))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x)))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
Outputs
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))
(-.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x))
(-.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))
(*.f64 (+.f64 (neg.f64 x) 1) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (fma.f64 -1 x 1))
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (-.f64 1 x))
(-.f64 (+.f64 (*.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 2))) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x))
(-.f64 (fma.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 x x)) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))
(fma.f64 1/2 (*.f64 x (*.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (-.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))
(+.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (-.f64 (*.f64 x (*.f64 x 1/2)) x)))
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (-.f64 (fma.f64 x (*.f64 x 1/2) 1) x))
(-.f64 (+.f64 (*.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 2))) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (+.f64 (*.f64 1/6 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 3))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x)))
(-.f64 (fma.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 x x)) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (fma.f64 1/6 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 3)) (*.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))
(-.f64 (fma.f64 1/2 (*.f64 x (*.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (fma.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 1/6 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 3)))))
(-.f64 (*.f64 (+.f64 (*.f64 x (*.f64 x 1/2)) 1) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (+.f64 x (*.f64 1/6 (pow.f64 x 3)))))
(+.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (-.f64 (*.f64 (*.f64 x x) (-.f64 1/2 (*.f64 x 1/6))) x)))
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (-.f64 (fma.f64 x (*.f64 x 1/2) 1) (fma.f64 1/6 (pow.f64 x 3) x)))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))
(/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))

prune103.0ms (0.9%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New1360136
Fresh033
Picked011
Done000
Total1364140
Error
59.3b
Counts
140 → 4
Alt Table
StatusErrorProgram
59.4b
(exp.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x))
59.4b
(log.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))
60.5b
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))
59.4b
(/.f64 (log.f64 (exp.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (exp.f64 x))
Compiler

Compiled 2298 to 744 computations (67.6% saved)

localize8.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(exp.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x))
2.4b
(-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)
2.8b
(log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))
4.4b
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))

series71.0ms (0.6%)

Counts
3 → 7
Calls

9 calls:

TimeVariablePointExpression
25.0ms
x
@0
(log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))
23.0ms
x
@inf
(log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))
21.0ms
x
@-inf
(log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))
1.0ms
x
@0
(exp.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x))
0.0ms
x
@inf
(-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)

rewrite50.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
852×log1p-expm1-u_binary64
852×expm1-log1p-u_binary64
93×add-sqr-sqrt_binary64
91×*-un-lft-identity_binary64
91×pow1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0942
117942
2231442
Stop Event
node limit
Counts
3 → 96
Calls
Call 1
Inputs
(log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))
(-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)
(exp.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (log.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2)) (log.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (pow.f64 (cbrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) 2) (cbrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (sqrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 (neg.f64 x) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x) (fma.f64 (neg.f64 x) 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x) (fma.f64 (neg.f64 (cbrt.f64 x)) (pow.f64 (cbrt.f64 x) 2) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x) (fma.f64 (neg.f64 (sqrt.f64 x)) (sqrt.f64 x) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 x) (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) 2)) (log.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))) (log.f64 (sqrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)) (pow.f64 (cbrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)) 2) (cbrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)) (sqrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 3) (pow.f64 x 3)) (/.f64 1 (+.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (*.f64 x (+.f64 x (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (*.f64 x x)) (/.f64 1 (+.f64 x (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (sqrt.f64 x)) (-.f64 (sqrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (*.f64 x (+.f64 x (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))) (-.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 3) (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 x (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (-.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 3) (pow.f64 x 3)) (+.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (*.f64 x (+.f64 x (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (*.f64 x x)) (+.f64 x (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 3) (pow.f64 x 3))) (neg.f64 (+.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (*.f64 x (+.f64 x (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (*.f64 x x))) (neg.f64 (+.f64 x (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 3) (pow.f64 (neg.f64 x) 3)) (+.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (-.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (*.f64 (neg.f64 x) (neg.f64 x))) (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (neg.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) 2) (cbrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (sqrt.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (/.f64 1 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) (pow.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) 2) (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) (sqrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) 1) (/.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 1) (/.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (exp.f64 x)) 2)) (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (cbrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (pow.f64 (cbrt.f64 (exp.f64 x)) 2)) (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (pow.f64 (cbrt.f64 (exp.f64 x)) 2)) (/.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (cbrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (exp.f64 x))) (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (sqrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (sqrt.f64 (exp.f64 x))) (/.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (sqrt.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (exp.f64 x) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) 2) (/.f64 (exp.f64 x) (cbrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (/.f64 (exp.f64 x) (sqrt.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (neg.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (sqrt.f64 (exp.f64 x))) (sqrt.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) 1) (exp.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 (cbrt.f64 (exp.f64 x)) 2)) (cbrt.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)) 2)) (cbrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x))) (sqrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) 3) (pow.f64 (exp.f64 x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))))))

simplify25.0ms (0.2%)

Algorithm
egg-herbie
Rules
519×distribute-rgt-neg-in_binary64
418×distribute-lft-neg-in_binary64
293×cancel-sign-sub-inv_binary64
289×associate-*l*_binary64
270×fma-def_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
025160
166160
2172126
3607108
4273697
Stop Event
node limit
Counts
103 → 106
Calls
Call 1
Inputs
(log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))
(*.f64 -1 x)
(*.f64 -1 x)
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))
(-.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x))
(-.f64 (+.f64 (*.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 2))) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x))
(-.f64 (+.f64 (*.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 2))) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (+.f64 (*.f64 1/6 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 3))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x)))
Outputs
(log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))
(*.f64 -1 x)
(neg.f64 x)
(*.f64 -1 x)
(neg.f64 x)
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))
(-.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x))
(-.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))
(*.f64 (+.f64 (neg.f64 x) 1) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (fma.f64 x -1 1))
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (-.f64 1 x))
(-.f64 (+.f64 (*.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 2))) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x))
(-.f64 (fma.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 x x)) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))
(+.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (-.f64 (*.f64 1/2 (*.f64 x x)) x)))
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (-.f64 (fma.f64 x (*.f64 x 1/2) 1) x))
(-.f64 (+.f64 (*.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 2))) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (+.f64 (*.f64 1/6 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 3))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) x)))
(-.f64 (fma.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 x x)) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (fma.f64 1/6 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (pow.f64 x 3)) (*.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))))
(-.f64 (fma.f64 1/2 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 x x)) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (fma.f64 x (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (pow.f64 x 3) 1/6))))
(-.f64 (*.f64 (+.f64 (*.f64 1/2 (*.f64 x x)) 1) (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (+.f64 x (*.f64 1/6 (pow.f64 x 3)))))
(+.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (-.f64 (*.f64 (*.f64 x x) (-.f64 1/2 (*.f64 x 1/6))) x)))
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (-.f64 (fma.f64 x (*.f64 x 1/2) 1) (fma.f64 1/6 (pow.f64 x 3) x)))

prune58.0ms (0.5%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New1203123
Fresh022
Picked101
Done011
Total1216127
Error
20.4b
Counts
127 → 6
Alt Table
StatusErrorProgram
59.4b
(log.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))
60.5b
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))
22.3b
(exp.f64 (neg.f64 x))
60.5b
(exp.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))
59.4b
(exp.f64 (pow.f64 (cbrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)) 3))
59.4b
(/.f64 (log.f64 (exp.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (exp.f64 x))
Compiler

Compiled 2150 to 632 computations (70.6% saved)

localize2.0ms (0%)

prune3.0ms (0%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New000
Fresh044
Picked011
Done011
Total066
Error
20.4b
Counts
6 → 6
Alt Table
StatusErrorProgram
59.4b
(log.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x))))
60.5b
(fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))
22.3b
(exp.f64 (neg.f64 x))
60.5b
(exp.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))))
59.4b
(exp.f64 (pow.f64 (cbrt.f64 (-.f64 (log.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x)))) x)) 3))
59.4b
(/.f64 (log.f64 (exp.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))))) (exp.f64 x))
Compiler

Compiled 58 to 42 computations (27.6% saved)

regimes35.0ms (0.3%)

Accuracy

Total 0.4b remaining (1.9%)

Threshold costs 0.4b (1.9%)

Counts
28 → 3
Compiler

Compiled 322 to 94 computations (70.8% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Calls

2 calls:

0.0ms
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x)))
0.0ms
(*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x)))
Steps
ItersPointRange
2.0
∈ [
1.0
,
#hash((type . real) (value . NaN))
]
0.0
∈ [
0.0
,
2.2204460492503126e-16
]
Compiler

Compiled 11 to 8 computations (27.3% saved)

simplify3.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01973
12373
22573
32673
Stop Event
saturated
Calls
Call 1
Inputs
(if (<=.f64 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x))) 0) (exp.f64 (neg.f64 x)) (if (<=.f64 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x))) 2) (log.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))) (exp.f64 (neg.f64 x))))
Outputs
(if (<=.f64 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x))) 0) (exp.f64 (neg.f64 x)) (if (<=.f64 (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x))) 2) (log.f64 (exp.f64 (/.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 x)))) (exp.f64 (neg.f64 x))))

end77.0ms (0.6%)

Stop Event
fuel
Compiler

Compiled 146 to 76 computations (47.9% saved)

Profiling

Loading profile data...