Details

Time bar (total: 12.1s)

analyze260.0ms (2.2%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
25%25%74.9%0.1%0%0%0%5
31.3%31.2%68.7%0.1%0%0%0%6
45.9%43.7%51.5%0.1%4.7%0%0%7
50.8%48.4%46.8%0.1%4.7%0%0%8
59.7%55.4%37.5%0.1%7%0%0%9
62.6%58.1%34.7%0.1%7%0%0%10
67.4%61.9%29.9%0.1%8.2%0%0%11
69%63.3%28.4%0.1%8.2%0%0%12
Compiler

Compiled 12 to 9 computations (25% saved)

sample6.5s (54.3%)

Results
4.5s2514×body8192exit
1.8s7767×body256valid
161.0ms210×body1024valid
79.0ms279×body512valid
20.0ms133×body256infinite
Bogosity

preprocess3.0ms (0%)

Algorithm
egg-herbie
Rules
rational.json-simplify-17
rational.json-simplify-1
rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01654
12254
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(-.f64 (log.f64 (+.f64 1 (exp.f64 y))) (*.f64 y x))
Outputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(-.f64 (log.f64 (+.f64 1 (exp.f64 y))) (*.f64 y x))
(-.f64 (log.f64 (+.f64 1 (exp.f64 y))) (*.f64 x y))
Compiler

Compiled 13 to 10 computations (23.1% saved)

simplify9.0ms (0.1%)

Algorithm
egg-herbie
Rules
rational.json-simplify-17
rational.json-simplify-2
rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01127
11527
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
Outputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))

eval0.0ms (0%)

Compiler

Compiled 11 to 8 computations (27.3% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
0.8b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.8b
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
Compiler

Compiled 11 to 8 computations (27.3% saved)

localize12.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(+.f64 1 (exp.f64 x))
0.0b
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
0.5b
(log.f64 (+.f64 1 (exp.f64 x)))
Compiler

Compiled 28 to 14 computations (50% saved)

series90.0ms (0.7%)

Counts
3 → 32
Calls

12 calls:

TimeVariablePointExpression
69.0ms
x
@inf
(log.f64 (+.f64 1 (exp.f64 x)))
17.0ms
x
@-inf
(log.f64 (+.f64 1 (exp.f64 x)))
3.0ms
y
@0
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
0.0ms
x
@0
(log.f64 (+.f64 1 (exp.f64 x)))
0.0ms
x
@-inf
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))

rewrite91.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1538×bool.json-1
1538×bool.json-2
1490×rational.json-1
1490×rational.json-2
1490×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01153
111553
231953
364053
4127353
5280553
6589553
Stop Event
node limit
Counts
3 → 72
Calls
Call 1
Inputs
(log.f64 (+.f64 1 (exp.f64 x)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 1 (exp.f64 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (-.f64 (exp.f64 x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (-.f64 (exp.f64 x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8)) (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (log.f64 (-.f64 (exp.f64 x) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x and (log.f64 (-.f64 (exp.f64 x) -1)) (log.f64 (-.f64 (exp.f64 x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x or (log.f64 (-.f64 (exp.f64 x) -1)) (log.f64 (-.f64 (exp.f64 x) -1)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (neg.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (-.f64 1 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (*.f64 x y)) (log.f64 (-.f64 (exp.f64 x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (-.f64 1 (*.f64 x y))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2) (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (-.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) (*.f64 x (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (-.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) (*.f64 y (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1)))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8)) (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))) (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1)))))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) 4) -1) 4)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (-.f64 (exp.f64 x) -1) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (exp.f64 x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (exp.f64 x) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 (exp.f64 x) -1) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 2 (*.f64 (exp.f64 x) 2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (exp.f64 x) -1) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 2 (*.f64 (exp.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 (exp.f64 x) -1) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (exp.f64 x) -1) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 (exp.f64 x) -1) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (exp.f64 x) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 2 (*.f64 (exp.f64 x) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (exp.f64 x) -1) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (exp.f64 x) -1) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8)) (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (-.f64 (exp.f64 x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x and (-.f64 (exp.f64 x) -1) (-.f64 (exp.f64 x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x or (-.f64 (exp.f64 x) -1) (-.f64 (exp.f64 x) -1))))))

simplify196.0ms (1.6%)

Algorithm
egg-herbie
Rules
2422×rational.json-simplify-2
1538×rational.json-simplify-35
1100×rational.json-simplify-1
994×rational.json-simplify-52
936×rational.json-simplify-26
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01642440
13222248
28002248
319462248
432312248
537812248
641892248
753712248
865032248
970752248
Stop Event
node limit
Counts
104 → 114
Calls
Call 1
Inputs
(log.f64 2)
(+.f64 (*.f64 1/2 x) (log.f64 2))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/192 (pow.f64 x 4)) (log.f64 2))))
(log.f64 2)
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
(+.f64 (*.f64 (-.f64 1/2 y) x) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (log.f64 2)))
(+.f64 (*.f64 (-.f64 1/2 y) x) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (*.f64 -1/192 (pow.f64 x 4)) (log.f64 2))))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(log.f64 (+.f64 1 (exp.f64 x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
2
(+.f64 2 x)
(+.f64 2 (+.f64 (*.f64 1/2 (pow.f64 x 2)) x))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 2 (+.f64 (*.f64 1/2 (pow.f64 x 2)) x)))
(+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 0)
(+.f64 0 (log.f64 (-.f64 (exp.f64 x) -1)))
(+.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2))
(-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 0)
(*.f64 1 (log.f64 (-.f64 (exp.f64 x) -1)))
(*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1)
(*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2))
(*.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) 1/2)
(*.f64 4 (/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4))
(*.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 1/4)
(*.f64 1/2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2))
(*.f64 1/4 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4))
(*.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) 2)
(*.f64 (/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 4)
(/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1)
(/.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) 2)
(/.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 4)
(/.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8)) (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8))) 32)
(+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (neg.f64 (*.f64 x y)))
(+.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 0)
(+.f64 0 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))
(+.f64 -1 (+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (-.f64 1 (*.f64 x y))))
(+.f64 (neg.f64 (*.f64 x y)) (log.f64 (-.f64 (exp.f64 x) -1)))
(+.f64 (+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (-.f64 1 (*.f64 x y))) -1)
(+.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2) (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2))
(*.f64 1 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))
(*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1)
(*.f64 -1 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))
(*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2))
(*.f64 2 (-.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) (*.f64 x (*.f64 y 1/2))))
(*.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2) 1/2)
(*.f64 4 (/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4))
(*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) -1)
(*.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 1/4)
(*.f64 1/2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2))
(*.f64 1/2 (-.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) (*.f64 y (+.f64 x x))))
(*.f64 1/4 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4))
(*.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2) 2)
(*.f64 (/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 4)
(/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1)
(/.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2) 2)
(/.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) -1)
(/.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 4)
(/.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8) 8)
(/.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1)))) -2)
(/.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8)) 16)
(/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) 4) -4)
(/.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))) 2)
(/.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8)) (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8))) 32)
(/.f64 (+.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))) (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1)))))) 4)
(/.f64 (/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) 4) -1) 4)
(neg.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))
(-.f64 (exp.f64 x) -1)
(-.f64 (-.f64 (exp.f64 x) -1) 0)
(*.f64 1 (-.f64 (exp.f64 x) -1))
(*.f64 (-.f64 (exp.f64 x) -1) 1)
(*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 1/2))
(*.f64 4 (/.f64 (-.f64 (exp.f64 x) -1) 4))
(*.f64 (+.f64 2 (*.f64 (exp.f64 x) 2)) 1/2)
(*.f64 (*.f64 (-.f64 (exp.f64 x) -1) 4) 1/4)
(*.f64 1/2 (+.f64 2 (*.f64 (exp.f64 x) 2)))
(*.f64 1/4 (*.f64 (-.f64 (exp.f64 x) -1) 4))
(*.f64 (*.f64 (-.f64 (exp.f64 x) -1) 1/2) 2)
(*.f64 (/.f64 (-.f64 (exp.f64 x) -1) 4) 4)
(/.f64 (-.f64 (exp.f64 x) -1) 1)
(/.f64 (+.f64 2 (*.f64 (exp.f64 x) 2)) 2)
(/.f64 (*.f64 (-.f64 (exp.f64 x) -1) 4) 4)
(/.f64 (*.f64 (-.f64 (exp.f64 x) -1) 8) 8)
(/.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8)) (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8))) 32)
Outputs
(log.f64 2)
(+.f64 (*.f64 1/2 x) (log.f64 2))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 1/8 (pow.f64 x 2))))
(+.f64 (+.f64 (log.f64 2) (*.f64 1/2 x)) (*.f64 1/8 (pow.f64 x 2)))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/192 (pow.f64 x 4)) (log.f64 2))))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (log.f64 2) (*.f64 -1/192 (pow.f64 x 4)))))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (log.f64 2) (+.f64 (*.f64 1/2 x) (*.f64 -1/192 (pow.f64 x 4)))))
(+.f64 (log.f64 2) (+.f64 (+.f64 (*.f64 1/8 (pow.f64 x 2)) (*.f64 -1/192 (pow.f64 x 4))) (*.f64 1/2 x)))
(+.f64 (log.f64 2) (+.f64 (*.f64 1/2 x) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (*.f64 -1/192 (pow.f64 x 4)))))
(log.f64 2)
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(+.f64 (*.f64 (-.f64 1/2 y) x) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (log.f64 2)))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y))))
(+.f64 (log.f64 2) (+.f64 (*.f64 x (-.f64 1/2 y)) (*.f64 1/8 (pow.f64 x 2))))
(+.f64 (log.f64 2) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (*.f64 x (-.f64 1/2 y))))
(+.f64 (*.f64 (-.f64 1/2 y) x) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (*.f64 -1/192 (pow.f64 x 4)) (log.f64 2))))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (+.f64 (log.f64 2) (*.f64 -1/192 (pow.f64 x 4))) (*.f64 x (-.f64 1/2 y))))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (log.f64 2) (+.f64 (*.f64 -1/192 (pow.f64 x 4)) (*.f64 x (-.f64 1/2 y)))))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 x y))
(*.f64 x (neg.f64 y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 x y))
(*.f64 x (neg.f64 y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(log.f64 (+.f64 1 (exp.f64 x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 x y))
(*.f64 x (neg.f64 y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 x y))
(*.f64 x (neg.f64 y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
2
(+.f64 2 x)
(+.f64 2 (+.f64 (*.f64 1/2 (pow.f64 x 2)) x))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 2 x))
(+.f64 2 (+.f64 x (*.f64 1/2 (pow.f64 x 2))))
(+.f64 (+.f64 2 x) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 2 (+.f64 (*.f64 1/2 (pow.f64 x 2)) x)))
(+.f64 2 (+.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) (*.f64 1/6 (pow.f64 x 3))))
(+.f64 2 (+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 x (*.f64 1/6 (pow.f64 x 3)))))
(+.f64 2 (+.f64 x (+.f64 (*.f64 1/2 (pow.f64 x 2)) (*.f64 1/6 (pow.f64 x 3)))))
(+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 0)
(log.f64 (+.f64 1 (exp.f64 x)))
(+.f64 0 (log.f64 (-.f64 (exp.f64 x) -1)))
(log.f64 (+.f64 1 (exp.f64 x)))
(+.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2))
(log.f64 (+.f64 1 (exp.f64 x)))
(-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 0)
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 1 (log.f64 (-.f64 (exp.f64 x) -1)))
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1)
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2))
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) 1/2)
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 4 (/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4))
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 1/4)
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 1/2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2))
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 1/4 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4))
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) 2)
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 (/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 4)
(log.f64 (+.f64 1 (exp.f64 x)))
(/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1)
(log.f64 (+.f64 1 (exp.f64 x)))
(/.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) 2)
(log.f64 (+.f64 1 (exp.f64 x)))
(/.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 4)
(log.f64 (+.f64 1 (exp.f64 x)))
(/.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8) 8)
(log.f64 (+.f64 1 (exp.f64 x)))
(/.f64 (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8)) 16)
(log.f64 (+.f64 1 (exp.f64 x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8)) (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8))) 32)
(log.f64 (+.f64 1 (exp.f64 x)))
(+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (neg.f64 (*.f64 x y)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 0)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 0 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 -1 (+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (-.f64 1 (*.f64 x y))))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (neg.f64 (*.f64 x y)) (log.f64 (-.f64 (exp.f64 x) -1)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (-.f64 1 (*.f64 x y))) -1)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2) (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 1 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 -1 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 2 (-.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) (*.f64 x (*.f64 y 1/2))))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2) 1/2)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 4 (/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) -1)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 1/4)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 1/2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 1/2 (-.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) (*.f64 y (+.f64 x x))))
(*.f64 1/2 (-.f64 (*.f64 2 (log.f64 (+.f64 1 (exp.f64 x)))) (*.f64 y (+.f64 x x))))
(*.f64 1/2 (-.f64 (*.f64 2 (log.f64 (+.f64 1 (exp.f64 x)))) (*.f64 x (+.f64 y y))))
(*.f64 1/4 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2) 2)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 (/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 4)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2) 2)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) -1)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 4)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8) 8)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1)))) -2)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8)) 16)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) 4) -4)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))) 2)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8)) (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8))) 32)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (+.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))) (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1)))))) 4)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) 4) -1) 4)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(neg.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(-.f64 (exp.f64 x) -1)
(+.f64 1 (exp.f64 x))
(-.f64 (-.f64 (exp.f64 x) -1) 0)
(+.f64 1 (exp.f64 x))
(*.f64 1 (-.f64 (exp.f64 x) -1))
(+.f64 1 (exp.f64 x))
(*.f64 (-.f64 (exp.f64 x) -1) 1)
(+.f64 1 (exp.f64 x))
(*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 1/2))
(+.f64 1 (exp.f64 x))
(*.f64 4 (/.f64 (-.f64 (exp.f64 x) -1) 4))
(+.f64 1 (exp.f64 x))
(*.f64 (+.f64 2 (*.f64 (exp.f64 x) 2)) 1/2)
(*.f64 1/2 (+.f64 2 (*.f64 2 (exp.f64 x))))
(*.f64 (*.f64 (-.f64 (exp.f64 x) -1) 4) 1/4)
(+.f64 1 (exp.f64 x))
(*.f64 1/2 (+.f64 2 (*.f64 (exp.f64 x) 2)))
(*.f64 1/2 (+.f64 2 (*.f64 2 (exp.f64 x))))
(*.f64 1/4 (*.f64 (-.f64 (exp.f64 x) -1) 4))
(+.f64 1 (exp.f64 x))
(*.f64 (*.f64 (-.f64 (exp.f64 x) -1) 1/2) 2)
(+.f64 1 (exp.f64 x))
(*.f64 (/.f64 (-.f64 (exp.f64 x) -1) 4) 4)
(+.f64 1 (exp.f64 x))
(/.f64 (-.f64 (exp.f64 x) -1) 1)
(+.f64 1 (exp.f64 x))
(/.f64 (+.f64 2 (*.f64 (exp.f64 x) 2)) 2)
(/.f64 (+.f64 2 (*.f64 2 (exp.f64 x))) 2)
(/.f64 (*.f64 (-.f64 (exp.f64 x) -1) 4) 4)
(+.f64 1 (exp.f64 x))
(/.f64 (*.f64 (-.f64 (exp.f64 x) -1) 8) 8)
(+.f64 1 (exp.f64 x))
(/.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8)) 16)
(+.f64 1 (exp.f64 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8)) (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8))) 32)
(+.f64 1 (exp.f64 x))

eval27.0ms (0.2%)

Compiler

Compiled 1550 to 983 computations (36.6% saved)

prune15.0ms (0.1%)

Pruning

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New1104114
Fresh000
Picked101
Done000
Total1114115
Error
0.6b
Counts
115 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
9.4b
(-.f64 (log.f64 2) (*.f64 x y))
14.9b
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
33.5b
(*.f64 x (neg.f64 y))
30.1b
(log.f64 (+.f64 1 (exp.f64 x)))
Compiler

Compiled 31 to 24 computations (22.6% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 1 (exp.f64 x))
0.5b
(log.f64 (+.f64 1 (exp.f64 x)))
Compiler

Compiled 15 to 9 computations (40% saved)

localize4.0ms (0%)

Compiler

Compiled 10 to 4 computations (60% saved)

localize13.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (-.f64 1/2 y) x)
0.0b
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
Compiler

Compiled 24 to 17 computations (29.2% saved)

series6.0ms (0%)

Counts
2 → 27
Calls

12 calls:

TimeVariablePointExpression
2.0ms
y
@0
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
1.0ms
x
@0
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
0.0ms
x
@-inf
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
0.0ms
y
@inf
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
0.0ms
x
@inf
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))

rewrite86.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
1474×rational.json-simplify-35
1338×bool.json-1
1338×bool.json-2
1294×rational.json-1
1294×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01136
110636
226436
352436
4107936
5238536
6501436
Stop Event
node limit
Counts
2 → 33
Calls
Call 1
Inputs
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
(*.f64 (-.f64 1/2 y) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 2 (log.f64 2)) (*.f64 (-.f64 1/2 y) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) (+.f64 x x)) (*.f64 2 (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 1/2 (log.f64 2)) (*.f64 (-.f64 1/2 y) (*.f64 1/2 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)) (*.f64 1/2 (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1/2 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (-.f64 1/2 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)) (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (-.f64 1/2 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1/2 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1/2 y) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1/2 y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (-.f64 1/2 y) x) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (-.f64 1/2 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (-.f64 1/2 y) x) (*.f64 (-.f64 1/2 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (-.f64 1/2 y) x) (*.f64 (-.f64 1/2 y) x))))))

simplify552.0ms (4.6%)

Algorithm
egg-herbie
Rules
3860×rational.json-simplify-41
3296×rational.json-simplify-35
1398×rational.json-simplify-2
584×rational.json-simplify-1
480×rational.json-simplify-51
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0831296
11711252
23891144
310941144
421471144
527331144
630301144
732121144
833441144
934701144
1035871144
1137031144
1239391144
1339571144
1439891144
1540061144
1640241144
1740381144
1841591144
1942761144
2073061144
2174671144
2276421144
2377861144
2479321144
Stop Event
node limit
Counts
60 → 51
Calls
Call 1
Inputs
(+.f64 (*.f64 1/2 x) (log.f64 2))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(log.f64 2)
(*.f64 (-.f64 1/2 y) x)
(*.f64 (-.f64 1/2 y) x)
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(-.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 0)
(*.f64 1/2 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))
(*.f64 1/2 (+.f64 (*.f64 2 (log.f64 2)) (*.f64 (-.f64 1/2 y) (+.f64 x x))))
(*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) (+.f64 x x)) (*.f64 2 (log.f64 2))))
(*.f64 2 (*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))
(*.f64 2 (+.f64 (*.f64 1/2 (log.f64 2)) (*.f64 (-.f64 1/2 y) (*.f64 1/2 x))))
(*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)) (*.f64 1/2 (log.f64 2))))
(*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 1)
(*.f64 1 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))
(*.f64 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 1/4)
(*.f64 (*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4))
(*.f64 (/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 4)
(/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 1)
(/.f64 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 2)
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8)))) 64)
(+.f64 (*.f64 (-.f64 1/2 y) x) 0)
(+.f64 0 (*.f64 (-.f64 1/2 y) x))
(+.f64 (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)) (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)))
(-.f64 (*.f64 (-.f64 1/2 y) x) 0)
(/.f64 (*.f64 (-.f64 1/2 y) x) 1)
(/.f64 (*.f64 (-.f64 1/2 y) (+.f64 x x)) 2)
(/.f64 (*.f64 (-.f64 1/2 y) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 (-.f64 1/2 y) x) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8)))) 64)
Outputs
(+.f64 (*.f64 1/2 x) (log.f64 2))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 x y))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (log.f64 2) (*.f64 x (+.f64 1/2 (neg.f64 y))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 x y))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (log.f64 2) (*.f64 x (+.f64 1/2 (neg.f64 y))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 x y))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (log.f64 2) (*.f64 x (+.f64 1/2 (neg.f64 y))))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 x y))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (log.f64 2) (*.f64 x (+.f64 1/2 (neg.f64 y))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 x y))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (log.f64 2) (*.f64 x (+.f64 1/2 (neg.f64 y))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 x y))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (log.f64 2) (*.f64 x (+.f64 1/2 (neg.f64 y))))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 x y))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (log.f64 2) (*.f64 x (+.f64 1/2 (neg.f64 y))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 x y))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (log.f64 2) (*.f64 x (+.f64 1/2 (neg.f64 y))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 x y))))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (log.f64 2) (*.f64 x (+.f64 1/2 (neg.f64 y))))
(log.f64 2)
(*.f64 (-.f64 1/2 y) x)
(*.f64 x (-.f64 1/2 y))
(*.f64 (-.f64 1/2 y) x)
(*.f64 x (-.f64 1/2 y))
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(-.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 0)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 1/2 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 1/2 (+.f64 (*.f64 2 (log.f64 2)) (*.f64 (-.f64 1/2 y) (+.f64 x x))))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) (+.f64 x x)) (*.f64 2 (log.f64 2))))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 2 (*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 2 (+.f64 (*.f64 1/2 (log.f64 2)) (*.f64 (-.f64 1/2 y) (*.f64 1/2 x))))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)) (*.f64 1/2 (log.f64 2))))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 1)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 1 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 1/2)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 1/4)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 (*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 2)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 (/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 4)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 1)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 2)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 4)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8) 8)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8)) 16)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8))) 32)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8)))) 64)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(+.f64 (*.f64 (-.f64 1/2 y) x) 0)
(*.f64 x (-.f64 1/2 y))
(+.f64 0 (*.f64 (-.f64 1/2 y) x))
(*.f64 x (-.f64 1/2 y))
(+.f64 (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)) (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)))
(*.f64 x (-.f64 1/2 y))
(-.f64 (*.f64 (-.f64 1/2 y) x) 0)
(*.f64 x (-.f64 1/2 y))
(/.f64 (*.f64 (-.f64 1/2 y) x) 1)
(*.f64 x (-.f64 1/2 y))
(/.f64 (*.f64 (-.f64 1/2 y) (+.f64 x x)) 2)
(*.f64 x (-.f64 1/2 y))
(/.f64 (*.f64 (-.f64 1/2 y) (*.f64 x 4)) 4)
(*.f64 x (-.f64 1/2 y))
(/.f64 (*.f64 (*.f64 (-.f64 1/2 y) x) 8) 8)
(*.f64 x (-.f64 1/2 y))
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8)) 16)
(*.f64 x (-.f64 1/2 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8))) 32)
(*.f64 x (-.f64 1/2 y))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8)))) 64)
(*.f64 x (-.f64 1/2 y))

localize10.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(-.f64 (log.f64 2) (*.f64 x y))
Compiler

Compiled 16 to 9 computations (43.8% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite109.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1928×bool.json-1
1928×bool.json-2
1382×rational.json-simplify-35
1138×rational.json-1
1138×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
18717
222917
346617
495617
5211717
6445017
7750117
Stop Event
node limit
Counts
1 → 41
Calls
Call 1
Inputs
(-.f64 (log.f64 2) (*.f64 x y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 2) (neg.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log.f64 2) (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (log.f64 2) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (*.f64 x y)) (log.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (log.f64 2) 1/2) (-.f64 (*.f64 (log.f64 2) 1/2) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2) (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (*.f64 x y)) (+.f64 (log.f64 2) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (log.f64 2) 1) (-.f64 (neg.f64 (*.f64 x y)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (log.f64 2) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x y) (log.f64 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (-.f64 (/.f64 (log.f64 2) 4) (/.f64 (*.f64 x y) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 x y) (log.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (-.f64 (*.f64 (log.f64 2) 4) (*.f64 x (*.f64 y 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x y) (log.f64 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 2))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 x y) (log.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (-.f64 (log.f64 2) (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (-.f64 (log.f64 2) (*.f64 x y)) (-.f64 (log.f64 2) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (-.f64 (log.f64 2) (*.f64 x y)) (-.f64 (log.f64 2) (*.f64 x y)))))))

simplify518.0ms (4.3%)

Algorithm
egg-herbie
Rules
2872×rational.json-simplify-35
2076×rational.json-simplify-2
1222×rational.json-simplify-1
944×rational.json-simplify-51
942×rational.json-simplify-52
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0971325
12091325
25131325
312721097
422511097
534761097
644961097
750641097
860331097
962261097
1064031097
1165741097
1272401097
1372451097
1473291097
1573291097
1674981097
1776671097
1878361097
Stop Event
node limit
Counts
65 → 51
Calls
Call 1
Inputs
(log.f64 2)
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(log.f64 2)
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 x y)))
(+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 0)
(+.f64 0 (-.f64 (log.f64 2) (*.f64 x y)))
(+.f64 1 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) -1))
(+.f64 (neg.f64 (*.f64 x y)) (log.f64 2))
(+.f64 -1 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1))
(+.f64 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1) -1)
(+.f64 (*.f64 (log.f64 2) 1/2) (-.f64 (*.f64 (log.f64 2) 1/2) (*.f64 x y)))
(+.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2) (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2))
(+.f64 (-.f64 1 (*.f64 x y)) (+.f64 (log.f64 2) -1))
(+.f64 -2 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 2))
(+.f64 (+.f64 (log.f64 2) 1) (-.f64 (neg.f64 (*.f64 x y)) 1))
(+.f64 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 2) -2)
(*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2))
(*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1)
(*.f64 1 (-.f64 (log.f64 2) (*.f64 x y)))
(*.f64 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))) 1/2)
(*.f64 (-.f64 (*.f64 x y) (log.f64 2)) -1)
(*.f64 4 (/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4))
(*.f64 4 (-.f64 (/.f64 (log.f64 2) 4) (/.f64 (*.f64 x y) 4)))
(*.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 1/4)
(*.f64 -1 (-.f64 (*.f64 x y) (log.f64 2)))
(*.f64 1/2 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))))
(*.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2) 2)
(*.f64 1/4 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4))
(*.f64 1/4 (-.f64 (*.f64 (log.f64 2) 4) (*.f64 x (*.f64 y 4))))
(*.f64 (/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 4)
(/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1)
(/.f64 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))) 2)
(/.f64 (-.f64 (*.f64 x y) (log.f64 2)) -1)
(/.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 4)
(/.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8) 8)
(/.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 2))) -2)
(/.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8)) 16)
(/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4) -4)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) -8)
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) 4)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8)))) 64)
(/.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4))) 8)
(neg.f64 (-.f64 (*.f64 x y) (log.f64 2)))
Outputs
(log.f64 2)
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(log.f64 2)
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (neg.f64 (*.f64 x y)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 0)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 0 (-.f64 (log.f64 2) (*.f64 x y)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 1 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) -1))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (neg.f64 (*.f64 x y)) (log.f64 2))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 -1 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1) -1)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (*.f64 (log.f64 2) 1/2) (-.f64 (*.f64 (log.f64 2) 1/2) (*.f64 x y)))
(+.f64 (*.f64 (log.f64 2) 1/2) (-.f64 (*.f64 (log.f64 2) 1/2) (*.f64 y x)))
(+.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2) (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (-.f64 1 (*.f64 x y)) (+.f64 (log.f64 2) -1))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 -2 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 2))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (+.f64 (log.f64 2) 1) (-.f64 (neg.f64 (*.f64 x y)) 1))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 2) -2)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 1 (-.f64 (log.f64 2) (*.f64 x y)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))) 1/2)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 (-.f64 (*.f64 x y) (log.f64 2)) -1)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 4 (/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 4 (-.f64 (/.f64 (log.f64 2) 4) (/.f64 (*.f64 x y) 4)))
(*.f64 4 (-.f64 (/.f64 (log.f64 2) 4) (*.f64 y (/.f64 x 4))))
(*.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 1/4)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 -1 (-.f64 (*.f64 x y) (log.f64 2)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 1/2 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2) 2)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 1/4 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 1/4 (-.f64 (*.f64 (log.f64 2) 4) (*.f64 x (*.f64 y 4))))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 (/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 4)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))) 2)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (-.f64 (*.f64 x y) (log.f64 2)) -1)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 4)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8) 8)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 2))) -2)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8)) 16)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4) -4)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8))) 32)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) -8)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) 4)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8)))) 64)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4))) 8)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(neg.f64 (-.f64 (*.f64 x y) (log.f64 2)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))

eval36.0ms (0.3%)

Compiler

Compiled 1710 to 1292 computations (24.4% saved)

prune22.0ms (0.2%)

Pruning

7 alts after pruning (4 fresh and 3 done)

PrunedKeptTotal
New1604164
Fresh000
Picked011
Done123
Total1617168
Error
0.6b
Counts
168 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
9.4b
(-.f64 (log.f64 2) (*.f64 x y))
30.1b
(+.f64 (*.f64 1/2 x) (log.f64 2))
47.3b
(*.f64 (-.f64 1/2 y) x)
33.5b
(*.f64 x (neg.f64 y))
30.8b
(log.f64 (+.f64 2 x))
30.1b
(log.f64 (+.f64 1 (exp.f64 x)))
30.4b
(log.f64 2)
Compiler

Compiled 46 to 37 computations (19.6% saved)

localize4.0ms (0%)

Compiler

Compiled 5 to 5 computations (0% saved)

localize6.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(log.f64 (+.f64 2 x))
Compiler

Compiled 11 to 8 computations (27.3% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@inf
(log.f64 (+.f64 2 x))
0.0ms
x
@-inf
(log.f64 (+.f64 2 x))
0.0ms
x
@0
(log.f64 (+.f64 2 x))

rewrite94.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1884×bool.json-1
1884×bool.json-2
1146×rational.json-1
1146×rational.json-2
1146×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
16911
219011
338011
477811
5168611
6409411
7726011
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(log.f64 (+.f64 2 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (+.f64 2 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (+.f64 2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/2) (*.f64 (log.f64 (+.f64 2 x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (+.f64 2 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (+.f64 2 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (+.f64 2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (log.f64 (+.f64 2 x))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (log.f64 (+.f64 2 x)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (+.f64 2 x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (+.f64 2 x)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (log.f64 (+.f64 2 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (log.f64 (+.f64 2 x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (log.f64 (+.f64 2 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (log.f64 (+.f64 2 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 (+.f64 2 x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 (+.f64 2 x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (log.f64 (+.f64 2 x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (log.f64 (+.f64 2 x)) (log.f64 (+.f64 2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (log.f64 (+.f64 2 x)) (log.f64 (+.f64 2 x)))))))

simplify582.0ms (4.8%)

Algorithm
egg-herbie
Rules
1976×rational.json-simplify-2
1798×rational.json-simplify-35
1306×rational.json-simplify-46
1294×rational.json-simplify-1
1006×rational.json-simplify-49
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
085780
1175764
2418740
3951740
41481740
52813740
63559740
73627740
83670740
93711740
103752740
113793740
123860740
133901740
143942740
153983740
164024740
174065740
184106740
194840740
205239740
215292740
225345740
235401740
245470740
255592740
265990740
277267740
Stop Event
node limit
Counts
34 → 62
Calls
Call 1
Inputs
(log.f64 2)
(+.f64 (*.f64 1/2 x) (log.f64 2))
(+.f64 (*.f64 -1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 -1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 1/24 (pow.f64 x 3)))))
(*.f64 -1 (log.f64 (/.f64 1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x)))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x)))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (log.f64 (+.f64 2 x)) 0)
(+.f64 0 (log.f64 (+.f64 2 x)))
(+.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/2) (*.f64 (log.f64 (+.f64 2 x)) 1/2))
(-.f64 (log.f64 (+.f64 2 x)) 0)
(*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 1/2))
(*.f64 (log.f64 (+.f64 2 x)) 1)
(*.f64 1 (log.f64 (+.f64 2 x)))
(*.f64 (*.f64 2 (log.f64 (+.f64 2 x))) 1/2)
(*.f64 4 (*.f64 (log.f64 (+.f64 2 x)) 1/4))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 4) 1/4)
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 8) 1/8)
(*.f64 1/2 (*.f64 2 (log.f64 (+.f64 2 x))))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/2) 2)
(*.f64 1/4 (*.f64 (log.f64 (+.f64 2 x)) 4))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/4) 4)
(/.f64 (log.f64 (+.f64 2 x)) 1)
(/.f64 (*.f64 2 (log.f64 (+.f64 2 x))) 2)
(/.f64 (*.f64 (log.f64 (+.f64 2 x)) 4) 4)
(/.f64 (*.f64 (log.f64 (+.f64 2 x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8)))) 64)
Outputs
(log.f64 2)
(+.f64 (*.f64 1/2 x) (log.f64 2))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(+.f64 (*.f64 -1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (+.f64 (log.f64 2) (*.f64 1/2 x)) (*.f64 -1/8 (pow.f64 x 2)))
(+.f64 (log.f64 2) (+.f64 (*.f64 1/2 x) (*.f64 -1/8 (pow.f64 x 2))))
(+.f64 (*.f64 -1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 1/24 (pow.f64 x 3)))))
(+.f64 (*.f64 1/2 x) (+.f64 (+.f64 (log.f64 2) (*.f64 1/24 (pow.f64 x 3))) (*.f64 -1/8 (pow.f64 x 2))))
(+.f64 (log.f64 2) (+.f64 (+.f64 (*.f64 1/2 x) (*.f64 1/24 (pow.f64 x 3))) (*.f64 -1/8 (pow.f64 x 2))))
(+.f64 (log.f64 2) (+.f64 (*.f64 -1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (*.f64 1/24 (pow.f64 x 3)))))
(+.f64 (log.f64 2) (+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/8 (pow.f64 x 2)) (*.f64 1/24 (pow.f64 x 3)))))
(+.f64 (log.f64 2) (+.f64 (*.f64 1/24 (pow.f64 x 3)) (+.f64 (*.f64 1/2 x) (*.f64 -1/8 (pow.f64 x 2)))))
(*.f64 -1 (log.f64 (/.f64 1 x)))
(neg.f64 (log.f64 (/.f64 1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x)))
(+.f64 (neg.f64 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (*.f64 2 (/.f64 1 x)) (-.f64 (neg.f64 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(+.f64 (neg.f64 (log.f64 (/.f64 1 x))) (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2)))))
(-.f64 (+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x)))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x))) (-.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(+.f64 (+.f64 (neg.f64 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x))) (-.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(+.f64 (neg.f64 (log.f64 (/.f64 1 x))) (+.f64 (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2)))) (*.f64 8/3 (/.f64 1 (pow.f64 x 3)))))
(+.f64 (neg.f64 (log.f64 (/.f64 1 x))) (+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2))))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))
(+.f64 (neg.f64 (log.f64 (/.f64 -1 x))) (log.f64 -1))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (*.f64 2 (/.f64 1 x)) (log.f64 -1)))
(+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (neg.f64 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x)))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (*.f64 2 (/.f64 1 x)) (log.f64 -1))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (neg.f64 (log.f64 (/.f64 -1 x))) (-.f64 (+.f64 (*.f64 2 (/.f64 1 x)) (log.f64 -1)) (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(+.f64 (neg.f64 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2))))))
(+.f64 (log.f64 -1) (+.f64 (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2)))) (neg.f64 (log.f64 (/.f64 -1 x)))))
(-.f64 (+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (*.f64 2 (/.f64 1 x)) (log.f64 -1)))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (neg.f64 (log.f64 (/.f64 -1 x))) (-.f64 (+.f64 (*.f64 2 (/.f64 1 x)) (log.f64 -1)) (*.f64 2 (/.f64 1 (pow.f64 x 2))))))
(+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (neg.f64 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2)))))))
(+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (+.f64 (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2)))) (neg.f64 (log.f64 (/.f64 -1 x))))))
(+.f64 (log.f64 (+.f64 2 x)) 0)
(log.f64 (+.f64 2 x))
(+.f64 0 (log.f64 (+.f64 2 x)))
(log.f64 (+.f64 2 x))
(+.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/2) (*.f64 (log.f64 (+.f64 2 x)) 1/2))
(log.f64 (+.f64 2 x))
(-.f64 (log.f64 (+.f64 2 x)) 0)
(log.f64 (+.f64 2 x))
(*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 1/2))
(log.f64 (+.f64 2 x))
(*.f64 (log.f64 (+.f64 2 x)) 1)
(log.f64 (+.f64 2 x))
(*.f64 1 (log.f64 (+.f64 2 x)))
(log.f64 (+.f64 2 x))
(*.f64 (*.f64 2 (log.f64 (+.f64 2 x))) 1/2)
(log.f64 (+.f64 2 x))
(*.f64 4 (*.f64 (log.f64 (+.f64 2 x)) 1/4))
(log.f64 (+.f64 2 x))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 4) 1/4)
(log.f64 (+.f64 2 x))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 8) 1/8)
(log.f64 (+.f64 2 x))
(*.f64 1/2 (*.f64 2 (log.f64 (+.f64 2 x))))
(log.f64 (+.f64 2 x))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/2) 2)
(log.f64 (+.f64 2 x))
(*.f64 1/4 (*.f64 (log.f64 (+.f64 2 x)) 4))
(log.f64 (+.f64 2 x))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/4) 4)
(log.f64 (+.f64 2 x))
(/.f64 (log.f64 (+.f64 2 x)) 1)
(log.f64 (+.f64 2 x))
(/.f64 (*.f64 2 (log.f64 (+.f64 2 x))) 2)
(log.f64 (+.f64 2 x))
(/.f64 (*.f64 (log.f64 (+.f64 2 x)) 4) 4)
(log.f64 (+.f64 2 x))
(/.f64 (*.f64 (log.f64 (+.f64 2 x)) 8) 8)
(log.f64 (+.f64 2 x))
(/.f64 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8)) 16)
(log.f64 (+.f64 2 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8))) 32)
(log.f64 (+.f64 2 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8)))) 64)
(log.f64 (+.f64 2 x))

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (-.f64 1/2 y) x)
Compiler

Compiled 13 to 8 computations (38.5% saved)

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 1/2 x) (log.f64 2))
Compiler

Compiled 16 to 13 computations (18.8% saved)

series0.0ms (0%)

Counts
1 → 3
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
(+.f64 (*.f64 1/2 x) (log.f64 2))
0.0ms
x
@-inf
(+.f64 (*.f64 1/2 x) (log.f64 2))
0.0ms
x
@inf
(+.f64 (*.f64 1/2 x) (log.f64 2))

rewrite103.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1782×bool.json-1
1782×bool.json-2
1734×rational.json-1
1114×rational.json-2
1114×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
18817
222517
344017
488217
5192317
6413917
7694317
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(+.f64 (*.f64 1/2 x) (log.f64 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 1/2 (log.f64 2)) (*.f64 x 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 1/2 x) (log.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 2 (log.f64 2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (+.f64 (+.f64 x x) (*.f64 (log.f64 2) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 2 (log.f64 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 1/2 x) (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 1/2 x) (log.f64 2)) (+.f64 (*.f64 1/2 x) (log.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 1/2 x) (log.f64 2)) (+.f64 (*.f64 1/2 x) (log.f64 2)))))))

simplify751.0ms (6.2%)

Algorithm
egg-herbie
Rules
9292×rational.json-simplify-41
1918×rational.json-simplify-35
1152×rational.json-simplify-2
1044×rational.json-simplify-1
692×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
056447
1116447
2206447
3612447
41732447
53056447
63726447
73774447
83810447
93842447
103874447
113904447
123953447
133983447
144013447
154043447
164073447
174103447
184133447
194163447
204193447
214223447
224253447
234283447
244313447
254343447
264373447
274403447
284433447
294463447
304493447
314523447
324553447
334583447
344613447
354643447
364673447
374703447
384703447
Stop Event
node limit
Counts
25 → 26
Calls
Call 1
Inputs
(log.f64 2)
(*.f64 1/2 x)
(*.f64 1/2 x)
(-.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 0)
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(*.f64 2 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))))
(*.f64 2 (+.f64 (*.f64 1/2 (log.f64 2)) (*.f64 x 1/4)))
(*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 1)
(*.f64 1 (+.f64 (*.f64 1/2 x) (log.f64 2)))
(*.f64 (+.f64 x (*.f64 2 (log.f64 2))) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4))
(*.f64 4 (*.f64 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))) 1/2))
(*.f64 4 (*.f64 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4) 1))
(*.f64 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))) 1/4)
(*.f64 1/4 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))))
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 (log.f64 2) 4)))
(*.f64 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))) 2)
(*.f64 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4) 4)
(/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 1)
(/.f64 (+.f64 x (*.f64 2 (log.f64 2))) 2)
(/.f64 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))) 4)
(/.f64 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8)))) 64)
Outputs
(log.f64 2)
(*.f64 1/2 x)
(*.f64 1/2 x)
(-.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 0)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(*.f64 2 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 2 (+.f64 (*.f64 1/2 (log.f64 2)) (*.f64 x 1/4)))
(*.f64 2 (+.f64 (*.f64 (log.f64 2) 1/2) (*.f64 x 1/4)))
(*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 1)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 1 (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 (+.f64 x (*.f64 2 (log.f64 2))) 1/2)
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(*.f64 4 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 4 (*.f64 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))) 1/2))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 4 (*.f64 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4) 1))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))) 1/4)
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(*.f64 1/4 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))))
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 (log.f64 2) 4)))
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(*.f64 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))) 2)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4) 4)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 1)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(/.f64 (+.f64 x (*.f64 2 (log.f64 2))) 2)
(/.f64 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))) 4)
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(/.f64 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8) 8)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8)) 16)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8))) 32)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8)))) 64)
(+.f64 (log.f64 2) (*.f64 1/2 x))

eval28.0ms (0.2%)

Compiler

Compiled 1302 to 1106 computations (15.1% saved)

prune15.0ms (0.1%)

Pruning

9 alts after pruning (2 fresh and 7 done)

PrunedKeptTotal
New1022104
Fresh000
Picked011
Done066
Total1029111
Error
0.6b
Counts
111 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
9.4b
(-.f64 (log.f64 2) (*.f64 x y))
47.3b
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
30.1b
(+.f64 (*.f64 1/2 x) (log.f64 2))
47.3b
(*.f64 (-.f64 1/2 y) x)
33.5b
(*.f64 x (neg.f64 y))
61.6b
(*.f64 1/2 x)
30.8b
(log.f64 (+.f64 2 x))
30.1b
(log.f64 (+.f64 1 (exp.f64 x)))
30.4b
(log.f64 2)
Compiler

Compiled 61 to 48 computations (21.3% saved)

localize12.0ms (0.1%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
Compiler

Compiled 22 to 10 computations (54.5% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
x
@0
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
0.0ms
x
@inf
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
0.0ms
y
@0
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
0.0ms
x
@-inf
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
0.0ms
y
@inf
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))

rewrite83.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
1584×bool.json-1
1584×bool.json-2
1532×rational.json-1
1532×rational.json-2
1532×rational.json-3
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01023
110223
227319
358217
4128017
5310717
6620417
Stop Event
node limit
Counts
1 → 31
Calls
Call 1
Inputs
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (*.f64 2 (+.f64 1/2 (neg.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 x (*.f64 x (*.f64 y -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 1/2 (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 x) (*.f64 2 (+.f64 1/2 (neg.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 x) (+.f64 1 (*.f64 y -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (+.f64 1/2 (neg.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 1/2 x) (+.f64 1/2 (neg.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 1/2 (+.f64 1/2 (neg.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 2 (+.f64 1/2 (neg.f64 y)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (*.f64 x 1/4) (+.f64 1/2 (neg.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (*.f64 1/4 (+.f64 1/2 (neg.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1/2 (neg.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (/.f64 x 8) (+.f64 1/2 (neg.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 x 4)) (*.f64 1/8 (+.f64 1/2 (neg.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 1/2 (neg.f64 y))) (*.f64 1/2 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 1/2 x) (+.f64 1/2 (neg.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 1/2 (neg.f64 y))) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 x (*.f64 y -2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (*.f64 y -2)) (*.f64 1/2 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (+.f64 1/2 (neg.f64 y)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (+.f64 1/2 (neg.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (+.f64 1/2 (neg.f64 y))) (*.f64 x (+.f64 1/2 (neg.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (+.f64 1/2 (neg.f64 y))) (*.f64 x (+.f64 1/2 (neg.f64 y))))))))

simplify1.2s (10.3%)

Algorithm
egg-herbie
Rules
3884×rational.json-simplify-35
3074×rational.json-simplify-2
1556×rational.json-simplify-53
952×rational.json-simplify-1
736×rational.json-simplify-51
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
082957
1172945
2411945
31381945
42679945
53664929
64267929
74384929
84475929
94557929
104638929
114974929
125523929
135874929
146029929
156109929
166189929
176269929
186349929
196349929
206349929
216522929
226660929
236749929
246831929
256911929
266991929
277071929
287151929
297231929
307311929
317391929
327616929
337696929
347776929
357856929
367936929
Stop Event
node limit
Counts
55 → 44
Calls
Call 1
Inputs
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 -1 (*.f64 (-.f64 y 1/2) x))
(*.f64 -1 (*.f64 (-.f64 y 1/2) x))
(*.f64 -1 (*.f64 (-.f64 y 1/2) x))
(*.f64 -1 (*.f64 (-.f64 y 1/2) x))
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(-.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 0)
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 1/2 (neg.f64 y)))))
(*.f64 1/2 (+.f64 x (*.f64 x (*.f64 y -2))))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (*.f64 1/2 x) (*.f64 2 (+.f64 1/2 (neg.f64 y))))
(*.f64 (*.f64 1/2 x) (+.f64 1 (*.f64 y -2)))
(*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 1)
(*.f64 1 (*.f64 x (+.f64 1/2 (neg.f64 y))))
(*.f64 2 (*.f64 (*.f64 1/2 x) (+.f64 1/2 (neg.f64 y))))
(*.f64 (+.f64 x x) (*.f64 1/2 (+.f64 1/2 (neg.f64 y))))
(*.f64 (*.f64 x (*.f64 2 (+.f64 1/2 (neg.f64 y)))) 1/2)
(*.f64 4 (/.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4))
(*.f64 4 (*.f64 (*.f64 x 1/4) (+.f64 1/2 (neg.f64 y))))
(*.f64 (*.f64 x 4) (*.f64 1/4 (+.f64 1/2 (neg.f64 y))))
(*.f64 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4) 1/4)
(*.f64 (+.f64 1/2 (neg.f64 y)) x)
(*.f64 8 (*.f64 (/.f64 x 8) (+.f64 1/2 (neg.f64 y))))
(*.f64 (*.f64 2 (*.f64 x 4)) (*.f64 1/8 (+.f64 1/2 (neg.f64 y))))
(*.f64 (*.f64 2 (+.f64 1/2 (neg.f64 y))) (*.f64 1/2 x))
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4))
(*.f64 (*.f64 (*.f64 1/2 x) (+.f64 1/2 (neg.f64 y))) 2)
(*.f64 (*.f64 1/2 (+.f64 1/2 (neg.f64 y))) (+.f64 x x))
(*.f64 (/.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4) 4)
(*.f64 (+.f64 x (*.f64 x (*.f64 y -2))) 1/2)
(*.f64 (+.f64 1 (*.f64 y -2)) (*.f64 1/2 x))
(/.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 1)
(/.f64 (*.f64 x (*.f64 2 (+.f64 1/2 (neg.f64 y)))) 2)
(/.f64 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4) 4)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4)))) 32)
Outputs
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (+.f64 1/2 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 -1 (*.f64 (-.f64 y 1/2) x))
(*.f64 -1 (*.f64 x (-.f64 y 1/2)))
(*.f64 (-.f64 y 1/2) (neg.f64 x))
(*.f64 x (neg.f64 (-.f64 y 1/2)))
(*.f64 x (-.f64 1/2 y))
(*.f64 -1 (*.f64 (-.f64 y 1/2) x))
(*.f64 -1 (*.f64 x (-.f64 y 1/2)))
(*.f64 (-.f64 y 1/2) (neg.f64 x))
(*.f64 x (neg.f64 (-.f64 y 1/2)))
(*.f64 x (-.f64 1/2 y))
(*.f64 -1 (*.f64 (-.f64 y 1/2) x))
(*.f64 -1 (*.f64 x (-.f64 y 1/2)))
(*.f64 (-.f64 y 1/2) (neg.f64 x))
(*.f64 x (neg.f64 (-.f64 y 1/2)))
(*.f64 x (-.f64 1/2 y))
(*.f64 -1 (*.f64 (-.f64 y 1/2) x))
(*.f64 -1 (*.f64 x (-.f64 y 1/2)))
(*.f64 (-.f64 y 1/2) (neg.f64 x))
(*.f64 x (neg.f64 (-.f64 y 1/2)))
(*.f64 x (-.f64 1/2 y))
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(-.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 0)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 1/2 (neg.f64 y)))))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 1/2 (+.f64 x (*.f64 x (*.f64 y -2))))
(*.f64 1/2 (+.f64 x (*.f64 y (*.f64 -2 x))))
(*.f64 1/2 (+.f64 x (*.f64 y (*.f64 x -2))))
(*.f64 (*.f64 1/2 x) (+.f64 (*.f64 y -2) 1))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (*.f64 1/2 x) (*.f64 2 (+.f64 1/2 (neg.f64 y))))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (*.f64 1/2 x) (+.f64 1 (*.f64 y -2)))
(*.f64 1/2 (+.f64 x (*.f64 y (*.f64 -2 x))))
(*.f64 1/2 (+.f64 x (*.f64 y (*.f64 x -2))))
(*.f64 1/2 (+.f64 x (*.f64 x (*.f64 y -2))))
(*.f64 (*.f64 1/2 x) (+.f64 (*.f64 y -2) 1))
(*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 1)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 1 (*.f64 x (+.f64 1/2 (neg.f64 y))))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 2 (*.f64 (*.f64 1/2 x) (+.f64 1/2 (neg.f64 y))))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (+.f64 x x) (*.f64 1/2 (+.f64 1/2 (neg.f64 y))))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (*.f64 x (*.f64 2 (+.f64 1/2 (neg.f64 y)))) 1/2)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 4 (/.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 4 (*.f64 (*.f64 x 1/4) (+.f64 1/2 (neg.f64 y))))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (*.f64 x 4) (*.f64 1/4 (+.f64 1/2 (neg.f64 y))))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4) 1/4)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (+.f64 1/2 (neg.f64 y)) x)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 8 (*.f64 (/.f64 x 8) (+.f64 1/2 (neg.f64 y))))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (*.f64 2 (*.f64 x 4)) (*.f64 1/8 (+.f64 1/2 (neg.f64 y))))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (*.f64 2 (+.f64 1/2 (neg.f64 y))) (*.f64 1/2 x))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (*.f64 (*.f64 1/2 x) (+.f64 1/2 (neg.f64 y))) 2)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (*.f64 1/2 (+.f64 1/2 (neg.f64 y))) (+.f64 x x))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (/.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4) 4)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 (+.f64 x (*.f64 x (*.f64 y -2))) 1/2)
(*.f64 1/2 (+.f64 x (*.f64 y (*.f64 -2 x))))
(*.f64 1/2 (+.f64 x (*.f64 y (*.f64 x -2))))
(*.f64 1/2 (+.f64 x (*.f64 x (*.f64 y -2))))
(*.f64 (*.f64 1/2 x) (+.f64 (*.f64 y -2) 1))
(*.f64 (+.f64 1 (*.f64 y -2)) (*.f64 1/2 x))
(*.f64 1/2 (+.f64 x (*.f64 y (*.f64 -2 x))))
(*.f64 1/2 (+.f64 x (*.f64 y (*.f64 x -2))))
(*.f64 1/2 (+.f64 x (*.f64 x (*.f64 y -2))))
(*.f64 (*.f64 1/2 x) (+.f64 (*.f64 y -2) 1))
(/.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 1)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(/.f64 (*.f64 x (*.f64 2 (+.f64 1/2 (neg.f64 y)))) 2)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(/.f64 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4) 4)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4)) 8)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4))) 16)
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) 4)))) 32)
(*.f64 x (+.f64 1/2 (neg.f64 y)))

eval9.0ms (0.1%)

Compiler

Compiled 403 to 277 computations (31.3% saved)

prune9.0ms (0.1%)

Pruning

9 alts after pruning (0 fresh and 9 done)

PrunedKeptTotal
New44044
Fresh000
Picked011
Done088
Total44953
Error
0.6b
Counts
53 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
9.4b
(-.f64 (log.f64 2) (*.f64 x y))
47.3b
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
30.1b
(+.f64 (*.f64 1/2 x) (log.f64 2))
47.3b
(*.f64 (-.f64 1/2 y) x)
33.5b
(*.f64 x (neg.f64 y))
61.6b
(*.f64 1/2 x)
30.8b
(log.f64 (+.f64 2 x))
30.1b
(log.f64 (+.f64 1 (exp.f64 x)))
30.4b
(log.f64 2)
Compiler

Compiled 61 to 48 computations (21.3% saved)

regimes23.0ms (0.2%)

Counts
11 → 1
Calls
Call 1
Inputs
(*.f64 1/2 x)
(*.f64 x (neg.f64 y))
(*.f64 (-.f64 1/2 y) x)
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(log.f64 2)
(log.f64 (+.f64 2 x))
(+.f64 (*.f64 1/2 x) (log.f64 2))
(-.f64 (log.f64 2) (*.f64 x y))
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
(log.f64 (+.f64 1 (exp.f64 x)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
Outputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
Calls

3 calls:

7.0ms
x
7.0ms
y
5.0ms
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
Results
ErrorSegmentsBranch
0.8b1x
0.8b1y
0.8b1(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
Compiler

Compiled 79 to 54 computations (31.6% saved)

regimes39.0ms (0.3%)

Counts
10 → 2
Calls
Call 1
Inputs
(*.f64 1/2 x)
(*.f64 x (neg.f64 y))
(*.f64 (-.f64 1/2 y) x)
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(log.f64 2)
(log.f64 (+.f64 2 x))
(+.f64 (*.f64 1/2 x) (log.f64 2))
(-.f64 (log.f64 2) (*.f64 x y))
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
(log.f64 (+.f64 1 (exp.f64 x)))
Outputs
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
Calls

2 calls:

23.0ms
y
13.0ms
x
Results
ErrorSegmentsBranch
0.8b2x
7.5b3y
Compiler

Compiled 59 to 42 computations (28.8% saved)

bsearch20.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
20.0ms
-129.98806039069166
-2.030566851863427e-5
Results
18.0ms144×body256valid
Compiler

Compiled 178 to 138 computations (22.5% saved)

regimes35.0ms (0.3%)

Counts
8 → 2
Calls
Call 1
Inputs
(*.f64 1/2 x)
(*.f64 x (neg.f64 y))
(*.f64 (-.f64 1/2 y) x)
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(log.f64 2)
(log.f64 (+.f64 2 x))
(+.f64 (*.f64 1/2 x) (log.f64 2))
(-.f64 (log.f64 2) (*.f64 x y))
Outputs
(*.f64 x (neg.f64 y))
(-.f64 (log.f64 2) (*.f64 x y))
Calls

2 calls:

21.0ms
y
11.0ms
x
Results
ErrorSegmentsBranch
1.1b2x
7.5b3y
Compiler

Compiled 46 to 32 computations (30.4% saved)

bsearch27.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
27.0ms
-7104.552811092385
-129.98806039069166
Results
11.0ms37×body512valid
10.0ms67×body256valid
4.0msbody1024valid
0.0msbody256infinite
Compiler

Compiled 128 to 96 computations (25% saved)

regimes69.0ms (0.6%)

Counts
7 → 2
Calls
Call 1
Inputs
(*.f64 1/2 x)
(*.f64 x (neg.f64 y))
(*.f64 (-.f64 1/2 y) x)
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(log.f64 2)
(log.f64 (+.f64 2 x))
(+.f64 (*.f64 1/2 x) (log.f64 2))
Outputs
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 1/2 x) (log.f64 2))
Calls

2 calls:

51.0ms
y
16.0ms
x
Results
ErrorSegmentsBranch
12.5b2x
16.6b9y
Compiler

Compiled 40 to 28 computations (30% saved)

bsearch20.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
20.0ms
-129.98806039069166
-2.030566851863427e-5
Results
18.0ms144×body256valid
Compiler

Compiled 160 to 129 computations (19.4% saved)

regimes61.0ms (0.5%)

Counts
6 → 2
Calls
Call 1
Inputs
(*.f64 1/2 x)
(*.f64 x (neg.f64 y))
(*.f64 (-.f64 1/2 y) x)
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(log.f64 2)
(log.f64 (+.f64 2 x))
Outputs
(*.f64 x (neg.f64 y))
(log.f64 (+.f64 2 x))
Calls

2 calls:

45.0ms
y
14.0ms
x
Results
ErrorSegmentsBranch
12.6b2x
16.8b9y
Compiler

Compiled 34 to 23 computations (32.4% saved)

bsearch21.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
21.0ms
-129.98806039069166
-2.030566851863427e-5
Results
18.0ms144×body256valid
Compiler

Compiled 142 to 111 computations (21.8% saved)

regimes73.0ms (0.6%)

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

2 calls:

57.0ms
y
14.0ms
x
Results
ErrorSegmentsBranch
12.8b2x
16.8b9y
Compiler

Compiled 30 to 20 computations (33.3% saved)

bsearch25.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
25.0ms
-7104.552811092385
-129.98806039069166
Results
10.0ms36×body512valid
9.0ms67×body256valid
4.0msbody1024valid
0.0msbody256infinite
Compiler

Compiled 100 to 82 computations (18% saved)

regimes10.0ms (0.1%)

Accuracy

Total -28.5b remaining (-85.2%)

Threshold costs -28.5b (-85.2%)

Counts
4 → 1
Calls
Call 1
Inputs
(*.f64 1/2 x)
(*.f64 x (neg.f64 y))
(*.f64 (-.f64 1/2 y) x)
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
Outputs
(*.f64 x (neg.f64 y))
Calls

2 calls:

5.0ms
y
4.0ms
x
Results
ErrorSegmentsBranch
33.5b1x
33.5b1y
Compiler

Compiled 28 to 18 computations (35.7% saved)

simplify6.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
040218
Stop Event
done
saturated
Calls
Call 1
Inputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(if (<=.f64 x -3152519739159347/2251799813685248) (*.f64 x (neg.f64 y)) (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))
(if (<=.f64 x -130) (*.f64 x (neg.f64 y)) (-.f64 (log.f64 2) (*.f64 x y)))
(if (<=.f64 x -5764607523034235/288230376151711744) (*.f64 x (neg.f64 y)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(if (<=.f64 x -760928193040519/4611686018427387904) (*.f64 x (neg.f64 y)) (log.f64 (+.f64 2 x)))
(if (<=.f64 x -130) (*.f64 x (neg.f64 y)) (log.f64 2))
(*.f64 x (neg.f64 y))
(*.f64 1/2 x)
Outputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(if (<=.f64 x -3152519739159347/2251799813685248) (*.f64 x (neg.f64 y)) (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))
(if (<=.f64 x -130) (*.f64 x (neg.f64 y)) (-.f64 (log.f64 2) (*.f64 x y)))
(if (<=.f64 x -5764607523034235/288230376151711744) (*.f64 x (neg.f64 y)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(if (<=.f64 x -760928193040519/4611686018427387904) (*.f64 x (neg.f64 y)) (log.f64 (+.f64 2 x)))
(if (<=.f64 x -130) (*.f64 x (neg.f64 y)) (log.f64 2))
(*.f64 x (neg.f64 y))
(*.f64 1/2 x)
Compiler

Compiled 98 to 71 computations (27.6% saved)

soundness0.0ms (0%)

end51.0ms (0.4%)

Compiler

Compiled 84 to 46 computations (45.2% saved)

Profiling

Loading profile data...