Details

Time bar (total: 3.2s)

analyze4.0ms (0.1%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%100%0%0%0%0%2
50%50%50%0%0%0%0%3
66.7%50%25%0%25%0%0%4
80%50%12.5%0%37.5%0%0%5
88.9%50%6.2%0%43.7%0%0%6
94.1%50%3.1%0%46.9%0%0%7
97%50%1.6%0%48.4%0%0%8
98.5%50%0.8%0%49.2%0%0%9
99.2%50.4%0.4%0%49.2%0%0%10
99.6%50.4%0.2%0%49.4%0%0%11
99.8%50.4%0.1%0%49.5%0%0%12
Compiler

Compiled 10 to 8 computations (20% saved)

sample2.7s (84.7%)

Results
1.8s4075×body1024valid
503.0ms2035×body512valid
214.0ms1730×body256valid
182.0ms416×body2048valid
1.0msbody256infinite
Bogosity

preprocess57.0ms (1.8%)

Algorithm
egg-herbie
Rules
618×fma-neg_binary64
579×fma-def_binary64
523×cancel-sign-sub-inv_binary64
509×associate-/l*_binary64
425×times-frac_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0813
11913
23413
35813
412013
526013
671513
7215513
8500312
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
Outputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
(*.f64 -1/2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(*.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) -1/2)
(fma.f64 1/2 (exp.f64 x) (/.f64 -1/2 (exp.f64 x)))
Compiler

Compiled 10 to 8 computations (20% saved)

simplify46.0ms (1.4%)

Algorithm
egg-herbie
Rules
618×fma-neg_binary64
579×fma-def_binary64
523×cancel-sign-sub-inv_binary64
509×associate-/l*_binary64
425×times-frac_binary64
Iterations

Useful iterations: 8 (0.0ms)

IterNodesCost
0813
11913
23413
35813
412013
526013
671513
7215513
8500312
Stop Event
node limit
Counts
1 → 4
Calls
Call 1
Inputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
Outputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
(*.f64 -1/2 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(*.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) -1/2)
(fma.f64 1/2 (exp.f64 x) (/.f64 -1/2 (exp.f64 x)))

eval1.0ms (0%)

Compiler

Compiled 33 to 16 computations (51.5% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New314
Fresh011
Picked000
Done000
Total325
Error
58.2b
Counts
5 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
58.2b
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
Compiler

Compiled 9 to 7 computations (22.2% saved)

localize8.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
5.4b
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Compiler

Compiled 24 to 8 computations (66.7% saved)

series4.0ms (0.1%)

Counts
1 → 0
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@0
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
0.0ms
x
@-inf
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
0.0ms
x
@inf
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Compiler

Compiled 390 to 285 computations (26.9% saved)

rewrite29.0ms (0.9%)

Algorithm
egg-rewrite-iter-limit
batch-egg-rewrite
Rules
70×add-sqr-sqrt_binary64
67×add-log-exp_binary64
66×*-un-lft-identity_binary64
66×pow1_binary64
65×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
066
11306
221886
066
Stop Event
iter limit
unsound
Counts
1 → 13
Calls
Call 1
Inputs
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (exp.f64 x) (neg.f64 (exp.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 2 (sinh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) (cbrt.f64 (*.f64 2 (sinh.f64 x)))) (cbrt.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2 (sinh.f64 x))) (sqrt.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (sinh.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (+.f64 (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x))) (*.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (sinh.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (*.f64 2 (sinh.f64 x)) (*.f64 2 (sinh.f64 x))) (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 2 (sinh.f64 x))))))))

simplify41.0ms (1.3%)

Algorithm
egg-herbie
Rules
499×associate-*l/_binary64
420×associate-*r/_binary64
307×div-sub_binary64
300×distribute-rgt-in_binary64
262×distribute-lft-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
042163
1117155
2414153
31619105
46597105
Stop Event
node limit
Counts
13 → 18
Calls
Call 1
Inputs
(+.f64 (exp.f64 x) (neg.f64 (exp.f64 (neg.f64 x))))
(*.f64 1 (*.f64 2 (sinh.f64 x)))
(*.f64 (*.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) (cbrt.f64 (*.f64 2 (sinh.f64 x)))) (cbrt.f64 (*.f64 2 (sinh.f64 x))))
(*.f64 (sqrt.f64 (*.f64 2 (sinh.f64 x))) (sqrt.f64 (*.f64 2 (sinh.f64 x))))
(*.f64 2 (sinh.f64 x))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (+.f64 (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x))) (*.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(/.f64 (-.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(pow.f64 (*.f64 2 (sinh.f64 x)) 1)
(log.f64 (exp.f64 (*.f64 2 (sinh.f64 x))))
(cbrt.f64 (*.f64 (*.f64 (*.f64 2 (sinh.f64 x)) (*.f64 2 (sinh.f64 x))) (*.f64 2 (sinh.f64 x))))
(expm1.f64 (log1p.f64 (*.f64 2 (sinh.f64 x))))
(log1p.f64 (expm1.f64 (*.f64 2 (sinh.f64 x))))
(exp.f64 (log.f64 (*.f64 2 (sinh.f64 x))))
Outputs
(+.f64 (exp.f64 x) (neg.f64 (exp.f64 (neg.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(*.f64 1 (*.f64 2 (sinh.f64 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(*.f64 (*.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) (cbrt.f64 (*.f64 2 (sinh.f64 x)))) (cbrt.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(*.f64 (sqrt.f64 (*.f64 2 (sinh.f64 x))) (sqrt.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(*.f64 2 (sinh.f64 x))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (+.f64 (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x))) (*.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 (exp.f64 (+.f64 x x)) (*.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (exp.f64 (*.f64 x -2)))))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (exp.f64 (*.f64 x -3))) (+.f64 1 (fma.f64 (exp.f64 x) (exp.f64 x) (exp.f64 (*.f64 x -2)))))
(/.f64 (-.f64 (pow.f64 (exp.f64 3) x) (pow.f64 (exp.f64 x) -3)) (+.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (pow.f64 (exp.f64 x) -2))))
(/.f64 (-.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(pow.f64 (*.f64 2 (sinh.f64 x)) 1)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(log.f64 (exp.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(cbrt.f64 (*.f64 (*.f64 (*.f64 2 (sinh.f64 x)) (*.f64 2 (sinh.f64 x))) (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(expm1.f64 (log1p.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(log1p.f64 (expm1.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(exp.f64 (log.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))

eval4.0ms (0.1%)

Compiler

Compiled 274 to 158 computations (42.3% saved)

prune3.0ms (0.1%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New16218
Fresh000
Picked101
Done000
Total17219
Error
0b
Counts
19 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(/.f64 (*.f64 2 (sinh.f64 x)) 2)
32.0b
(/.f64 (exp.f64 (log.f64 (*.f64 2 (sinh.f64 x)))) 2)
Compiler

Compiled 16 to 14 computations (12.5% saved)

localize13.0ms (0.4%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(sinh.f64 x)
3.2b
(exp.f64 (log.f64 (*.f64 2 (sinh.f64 x))))
Compiler

Compiled 28 to 18 computations (35.7% saved)

series13.0ms (0.4%)

Counts
2 → 0
Calls

6 calls:

TimeVariablePointExpression
2.0ms
x
@inf
(exp.f64 (log.f64 (*.f64 2 (sinh.f64 x))))
1.0ms
x
@-inf
(exp.f64 (log.f64 (*.f64 2 (sinh.f64 x))))
1.0ms
x
@0
(exp.f64 (log.f64 (*.f64 2 (sinh.f64 x))))
0.0ms
x
@0
(sinh.f64 x)
0.0ms
x
@-inf
(sinh.f64 x)
Compiler

Compiled 1090 to 675 computations (38.1% saved)

rewrite78.0ms (2.4%)

Algorithm
batch-egg-rewrite
Rules
552×pow1_binary64
511×add-log-exp_binary64
510×log1p-expm1-u_binary64
510×expm1-log1p-u_binary64
500×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
079
11289
213989
Stop Event
node limit
Counts
2 → 52
Calls
Call 1
Inputs
(exp.f64 (log.f64 (*.f64 2 (sinh.f64 x))))
(sinh.f64 x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (-.f64 (*.f64 2 (sinh.f64 x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (exp.f64 x) (neg.f64 (exp.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 2 (sinh.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (sinh.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sinh.f64 x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (sinh.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 2 (sinh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) (pow.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) 2) (cbrt.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sinh.f64 x)) 2) (*.f64 (cbrt.f64 (sinh.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2 (sinh.f64 x))) (sqrt.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sinh.f64 x)) (*.f64 (sqrt.f64 (sinh.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (pow.f64 (cbrt.f64 (sinh.f64 x)) 2)) (cbrt.f64 (sinh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (sqrt.f64 (sinh.f64 x))) (sqrt.f64 (sinh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (+.f64 (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x))) (*.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 2 (sinh.f64 x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (sinh.f64 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (sinh.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2 (sinh.f64 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 2 (sinh.f64 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 2 (sinh.f64 x))))) (sqrt.f64 (log.f64 (*.f64 2 (sinh.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 2 (sinh.f64 x)))) 2)) (cbrt.f64 (log.f64 (*.f64 2 (sinh.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 4 (pow.f64 (sinh.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 2) (sinh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 2 (sinh.f64 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 2 (sinh.f64 x))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sinh.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (exp.f64 x) 2) (/.f64 (exp.f64 (neg.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sinh.f64 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (sinh.f64 x)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sinh.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sinh.f64 x)) (pow.f64 (cbrt.f64 (sinh.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sinh.f64 x)) 2) (cbrt.f64 (sinh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sinh.f64 x)) (sqrt.f64 (sinh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (sinh.f64 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 2 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 2 (sinh.f64 x))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sinh.f64 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sinh.f64 x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sinh.f64 x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (sinh.f64 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (sinh.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sinh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (sinh.f64 x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sinh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sinh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sinh.f64 x)))))))

simplify46.0ms (1.4%)

Algorithm
egg-herbie
Rules
544×associate-*l/_binary64
509×fma-neg_binary64
424×associate-*r/_binary64
348×unswap-sqr_binary64
339×associate-/l*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0114586
1265488
21304351
37803351
Stop Event
node limit
Counts
52 → 65
Calls
Call 1
Inputs
(+.f64 1 (-.f64 (*.f64 2 (sinh.f64 x)) 1))
(+.f64 (exp.f64 x) (neg.f64 (exp.f64 (neg.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(-.f64 (+.f64 1 (*.f64 2 (sinh.f64 x))) 1)
(*.f64 2 (sinh.f64 x))
(*.f64 (sinh.f64 x) 2)
(*.f64 (*.f64 2 (sinh.f64 x)) 1)
(*.f64 1 (*.f64 2 (sinh.f64 x)))
(*.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) (pow.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) 2))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) 2) (cbrt.f64 (*.f64 2 (sinh.f64 x))))
(*.f64 (pow.f64 (cbrt.f64 (sinh.f64 x)) 2) (*.f64 (cbrt.f64 (sinh.f64 x)) 2))
(*.f64 (sqrt.f64 (*.f64 2 (sinh.f64 x))) (sqrt.f64 (*.f64 2 (sinh.f64 x))))
(*.f64 (sqrt.f64 (sinh.f64 x)) (*.f64 (sqrt.f64 (sinh.f64 x)) 2))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 (sinh.f64 x)) 2)) (cbrt.f64 (sinh.f64 x)))
(*.f64 (*.f64 2 (sqrt.f64 (sinh.f64 x))) (sqrt.f64 (sinh.f64 x)))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (+.f64 (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x))) (*.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(/.f64 (-.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (*.f64 (*.f64 2 (sinh.f64 x)) 2) 2)
(/.f64 (*.f64 2 (*.f64 2 (sinh.f64 x))) 2)
(pow.f64 (*.f64 2 (sinh.f64 x)) 1)
(pow.f64 (pow.f64 (*.f64 2 (sinh.f64 x)) 3) 1/3)
(pow.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) 3)
(pow.f64 (sqrt.f64 (*.f64 2 (sinh.f64 x))) 2)
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 2 (sinh.f64 x))))) (sqrt.f64 (log.f64 (*.f64 2 (sinh.f64 x)))))
(pow.f64 (exp.f64 1) (log.f64 (*.f64 2 (sinh.f64 x))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 2 (sinh.f64 x)))) 2)) (cbrt.f64 (log.f64 (*.f64 2 (sinh.f64 x)))))
(sqrt.f64 (*.f64 4 (pow.f64 (sinh.f64 x) 2)))
(log.f64 (pow.f64 (exp.f64 2) (sinh.f64 x)))
(cbrt.f64 (pow.f64 (*.f64 2 (sinh.f64 x)) 3))
(expm1.f64 (log1p.f64 (*.f64 2 (sinh.f64 x))))
(log1p.f64 (expm1.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (+.f64 1 (sinh.f64 x)) 1)
(-.f64 (/.f64 (exp.f64 x) 2) (/.f64 (exp.f64 (neg.f64 x)) 2))
(*.f64 (sinh.f64 x) 1)
(*.f64 (*.f64 2 (sinh.f64 x)) 1/2)
(*.f64 1 (sinh.f64 x))
(*.f64 (cbrt.f64 (sinh.f64 x)) (pow.f64 (cbrt.f64 (sinh.f64 x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (sinh.f64 x)) 2) (cbrt.f64 (sinh.f64 x)))
(*.f64 (sqrt.f64 (sinh.f64 x)) (sqrt.f64 (sinh.f64 x)))
(/.f64 (*.f64 2 (sinh.f64 x)) 2)
(/.f64 1 (/.f64 2 (*.f64 2 (sinh.f64 x))))
(/.f64 (neg.f64 (*.f64 2 (sinh.f64 x))) -2)
(pow.f64 (sinh.f64 x) 1)
(pow.f64 (pow.f64 (sinh.f64 x) 3) 1/3)
(pow.f64 (cbrt.f64 (sinh.f64 x)) 3)
(pow.f64 (sqrt.f64 (sinh.f64 x)) 2)
(sqrt.f64 (pow.f64 (sinh.f64 x) 2))
(log.f64 (exp.f64 (sinh.f64 x)))
(cbrt.f64 (pow.f64 (sinh.f64 x) 3))
(expm1.f64 (log1p.f64 (sinh.f64 x)))
(log1p.f64 (expm1.f64 (sinh.f64 x)))
(exp.f64 (log.f64 (sinh.f64 x)))
Outputs
(+.f64 1 (-.f64 (*.f64 2 (sinh.f64 x)) 1))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(+.f64 (exp.f64 x) (neg.f64 (exp.f64 (neg.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(-.f64 (+.f64 1 (*.f64 2 (sinh.f64 x))) 1)
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(*.f64 2 (sinh.f64 x))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 (sinh.f64 x) 2)
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(*.f64 (*.f64 2 (sinh.f64 x)) 1)
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(*.f64 1 (*.f64 2 (sinh.f64 x)))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(*.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) (pow.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) 2))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) 2) (cbrt.f64 (*.f64 2 (sinh.f64 x))))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(*.f64 (pow.f64 (cbrt.f64 (sinh.f64 x)) 2) (*.f64 (cbrt.f64 (sinh.f64 x)) 2))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(*.f64 (sqrt.f64 (*.f64 2 (sinh.f64 x))) (sqrt.f64 (*.f64 2 (sinh.f64 x))))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(*.f64 (sqrt.f64 (sinh.f64 x)) (*.f64 (sqrt.f64 (sinh.f64 x)) 2))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 (sinh.f64 x)) 2)) (cbrt.f64 (sinh.f64 x)))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(*.f64 (*.f64 2 (sqrt.f64 (sinh.f64 x))) (sqrt.f64 (sinh.f64 x)))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (+.f64 (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x))) (*.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 (exp.f64 (+.f64 x x)) (*.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (exp.f64 (*.f64 x -2)))))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (exp.f64 (*.f64 x -3))) (+.f64 1 (+.f64 (pow.f64 (exp.f64 2) x) (pow.f64 (exp.f64 x) -2))))
(/.f64 (-.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (-.f64 (exp.f64 (+.f64 x x)) (exp.f64 (+.f64 (neg.f64 x) (neg.f64 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (-.f64 (exp.f64 (+.f64 x x)) (exp.f64 (*.f64 x -2))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (-.f64 (pow.f64 (exp.f64 2) x) (pow.f64 (exp.f64 x) -2)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (*.f64 (*.f64 2 (sinh.f64 x)) 2) 2)
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (sinh.f64 x))) 2)
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(pow.f64 (*.f64 2 (sinh.f64 x)) 1)
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(pow.f64 (pow.f64 (*.f64 2 (sinh.f64 x)) 3) 1/3)
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(pow.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) 3)
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(pow.f64 (sqrt.f64 (*.f64 2 (sinh.f64 x))) 2)
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 2 (sinh.f64 x))))) (sqrt.f64 (log.f64 (*.f64 2 (sinh.f64 x)))))
(pow.f64 (exp.f64 1) (log.f64 (*.f64 2 (sinh.f64 x))))
(pow.f64 (E.f64) (log.f64 (*.f64 2 (sinh.f64 x))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 2 (sinh.f64 x)))) 2)) (cbrt.f64 (log.f64 (*.f64 2 (sinh.f64 x)))))
(sqrt.f64 (*.f64 4 (pow.f64 (sinh.f64 x) 2)))
(fabs.f64 (*.f64 2 (sinh.f64 x)))
(log.f64 (pow.f64 (exp.f64 2) (sinh.f64 x)))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(cbrt.f64 (pow.f64 (*.f64 2 (sinh.f64 x)) 3))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(expm1.f64 (log1p.f64 (*.f64 2 (sinh.f64 x))))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(log1p.f64 (expm1.f64 (*.f64 2 (sinh.f64 x))))
(+.f64 1 (fma.f64 2 (sinh.f64 x) -1))
(+.f64 (*.f64 2 (sinh.f64 x)) 0)
(*.f64 2 (sinh.f64 x))
(-.f64 (+.f64 1 (sinh.f64 x)) 1)
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(-.f64 (/.f64 (exp.f64 x) 2) (/.f64 (exp.f64 (neg.f64 x)) 2))
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(*.f64 (sinh.f64 x) 1)
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(*.f64 (*.f64 2 (sinh.f64 x)) 1/2)
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(*.f64 1 (sinh.f64 x))
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(*.f64 (cbrt.f64 (sinh.f64 x)) (pow.f64 (cbrt.f64 (sinh.f64 x)) 2))
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(*.f64 (pow.f64 (cbrt.f64 (sinh.f64 x)) 2) (cbrt.f64 (sinh.f64 x)))
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(*.f64 (sqrt.f64 (sinh.f64 x)) (sqrt.f64 (sinh.f64 x)))
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(/.f64 (*.f64 2 (sinh.f64 x)) 2)
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(/.f64 1 (/.f64 2 (*.f64 2 (sinh.f64 x))))
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(/.f64 (neg.f64 (*.f64 2 (sinh.f64 x))) -2)
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(pow.f64 (sinh.f64 x) 1)
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(pow.f64 (pow.f64 (sinh.f64 x) 3) 1/3)
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(pow.f64 (cbrt.f64 (sinh.f64 x)) 3)
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(pow.f64 (sqrt.f64 (sinh.f64 x)) 2)
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(sqrt.f64 (pow.f64 (sinh.f64 x) 2))
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(log.f64 (exp.f64 (sinh.f64 x)))
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(cbrt.f64 (pow.f64 (sinh.f64 x) 3))
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(expm1.f64 (log1p.f64 (sinh.f64 x)))
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(log1p.f64 (expm1.f64 (sinh.f64 x)))
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)
(exp.f64 (log.f64 (sinh.f64 x)))
(+.f64 1 (-.f64 (sinh.f64 x) 1))
(+.f64 (sinh.f64 x) 0)
(sinh.f64 x)

localize6.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(sinh.f64 x)
Compiler

Compiled 15 to 9 computations (40% saved)

eval22.0ms (0.7%)

Compiler

Compiled 1026 to 692 computations (32.6% saved)

prune10.0ms (0.3%)

Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New89089
Fresh000
Picked011
Done011
Total89291
Error
0b
Counts
91 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(/.f64 (*.f64 2 (sinh.f64 x)) 2)
32.0b
(/.f64 (exp.f64 (log.f64 (*.f64 2 (sinh.f64 x)))) 2)
Compiler

Compiled 16 to 14 computations (12.5% saved)

regimes11.0ms (0.3%)

Accuracy

Total -60.4b remaining (-1545640.7%)

Threshold costs -60.4b (-1545640.7%)

Counts
3 → 1
Calls
Call 1
Inputs
(/.f64 (*.f64 2 (sinh.f64 x)) 2)
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
(/.f64 (exp.f64 (log.f64 (*.f64 2 (sinh.f64 x)))) 2)
Outputs
(/.f64 (*.f64 2 (sinh.f64 x)) 2)
Calls

3 calls:

6.0ms
x
2.0ms
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
2.0ms
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2)
0.0b1(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Compiler

Compiled 41 to 31 computations (24.4% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069
179
Stop Event
done
saturated
Calls
Call 1
Inputs
(/.f64 (*.f64 2 (sinh.f64 x)) 2)
Outputs
(/.f64 (*.f64 2 (sinh.f64 x)) 2)
Compiler

Compiled 7 to 6 computations (14.3% saved)

soundness74.0ms (2.3%)

Algorithm
egg-herbie
Rules
499×associate-*l/_binary64
420×associate-*r/_binary64
307×div-sub_binary64
300×distribute-rgt-in_binary64
262×distribute-lft-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
042163
1117155
2414153
31619105
46597105
Stop Event
node limit
Compiler

Compiled 67 to 53 computations (20.9% saved)

end14.0ms (0.5%)

Compiler

Compiled 7 to 6 computations (14.3% saved)

Profiling

Loading profile data...