Details

Time bar (total: 9.4s)

analyze57.0ms (0.6%)

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
37.5%37.5%62.4%0.1%0%0%0%6
53.3%50%43.7%0.1%6.2%0%0%7
63.3%59.3%34.3%0.1%6.2%0%0%8
74.1%67.1%23.4%0.1%9.4%0%0%9
80.2%72.6%18%0.1%9.4%0%0%10
86.4%76.9%12.1%0.1%10.9%0%0%11
89.7%79.8%9.2%0.1%10.9%0%0%12
Compiler

Compiled 12 to 10 computations (16.7% saved)

sample2.2s (23.3%)

Results
2.1s8256×body256valid
74.0ms134×body256infinite
Bogosity

preprocess191.0ms (2%)

Algorithm
egg-herbie
Rules
24×rational.json-simplify-2
rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01538
11938
22738
33538
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 (*.f64 (-.f64 x (/.f64 16 116)) 3) y)
(*.f64 (*.f64 (-.f64 y (/.f64 16 116)) 3) x)
Outputs
(*.f64 (*.f64 (-.f64 x (/.f64 16 116)) 3) y)
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
(*.f64 (*.f64 (-.f64 y (/.f64 16 116)) 3) x)
(*.f64 x (*.f64 3 (-.f64 y 4/29)))
(*.f64 3 (*.f64 (-.f64 y 4/29) x))
(*.f64 3 (*.f64 x (-.f64 y 4/29)))
Compiler

Compiled 13 to 11 computations (15.4% saved)

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Rules
12×rational.json-simplify-2
rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01219
11419
21819
32219
Stop Event
saturated
Counts
1 → 3
Calls
Call 1
Inputs
(*.f64 (*.f64 (-.f64 x (/.f64 16 116)) 3) y)
Outputs
(*.f64 (*.f64 (-.f64 x (/.f64 16 116)) 3) y)
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
(*.f64 (-.f64 x 4/29) (*.f64 3 y))

eval1.0ms (0%)

Compiler

Compiled 25 to 19 computations (24% saved)

prune3.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New123
Fresh101
Picked000
Done000
Total224
Error
0.1b
Counts
4 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
0.2b
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
Compiler

Compiled 18 to 14 computations (22.2% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (-.f64 x 4/29) 3)
0.2b
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
Compiler

Compiled 21 to 15 computations (28.6% saved)

series4.0ms (0%)

Counts
2 → 36
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@inf
(*.f64 (-.f64 x 4/29) 3)
1.0ms
y
@0
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
1.0ms
x
@inf
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
0.0ms
y
@inf
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
0.0ms
x
@0
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)

rewrite78.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1312×bool.json-1
1312×bool.json-2
1268×rational.json-1
1268×rational.json-2
1268×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0932
18832
223132
348732
4100432
5221632
6476732
Stop Event
node limit
Counts
2 → 34
Calls
Call 1
Inputs
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
(*.f64 (-.f64 x 4/29) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 x -4/29) (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x -4/29) y) (*.f64 (+.f64 x -4/29) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x -4/29) (+.f64 y y)) (*.f64 (+.f64 x -4/29) y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 3/2)) (*.f64 (+.f64 x -4/29) (*.f64 y 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -4/29) (*.f64 12 y)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 24 (*.f64 (+.f64 x -4/29) y)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 24 (*.f64 (+.f64 x -4/29) y))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 (+.f64 x -4/29) y)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 (+.f64 x -4/29) y)))) (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 (+.f64 x -4/29) y))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 x -4/29) (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 x -4/29) (*.f64 3 y)) (*.f64 (+.f64 x -4/29) (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 x -4/29) (*.f64 3 y)) (*.f64 (+.f64 x -4/29) (*.f64 3 y)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (+.f64 x (+.f64 -4/29 (+.f64 x -8/29))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x -4/29) 3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 x -4/29) 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -4/29 (+.f64 x (+.f64 x (+.f64 x -8/29))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -4/29 (+.f64 (+.f64 x (+.f64 x -4/29)) (+.f64 x -4/29)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x -8/29) (+.f64 x (+.f64 x -4/29)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x -4/29) 3/2) (*.f64 (+.f64 x -4/29) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x (+.f64 x -4/29)) (+.f64 x -8/29))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x (+.f64 -4/29 (+.f64 x -8/29))) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x (+.f64 x (+.f64 x -8/29))) -4/29)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (+.f64 x (+.f64 x -4/29)) (+.f64 x -4/29)) -4/29)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x -4/29) 3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -4/29) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -4/29) 6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -4/29) 12) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 x -4/29) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 x -4/29) 3) (*.f64 (+.f64 x -4/29) 3))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 x -4/29) 3) (*.f64 (+.f64 x -4/29) 3))))))

simplify267.0ms (2.8%)

Algorithm
egg-herbie
Rules
3110×rational.json-simplify-41
2674×rational.json-simplify-2
2210×rational.json-simplify-35
1348×rational.json-simplify-53
570×rational.json-simplify-1
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0961264
12121210
24181210
310621084
420861084
530051084
639291084
740431084
841481084
942511084
1043611084
1152781084
1253811084
1354811084
1454811084
Stop Event
node limit
Counts
70 → 51
Calls
Call 1
Inputs
(*.f64 -12/29 y)
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(*.f64 3 (*.f64 y x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(*.f64 3 (*.f64 y x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
-12/29
(-.f64 (*.f64 3 x) 12/29)
(-.f64 (*.f64 3 x) 12/29)
(-.f64 (*.f64 3 x) 12/29)
(*.f64 3 x)
(-.f64 (*.f64 3 x) 12/29)
(-.f64 (*.f64 3 x) 12/29)
(-.f64 (*.f64 3 x) 12/29)
(*.f64 3 x)
(-.f64 (*.f64 3 x) 12/29)
(-.f64 (*.f64 3 x) 12/29)
(-.f64 (*.f64 3 x) 12/29)
(+.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 0)
(+.f64 0 (*.f64 (+.f64 x -4/29) (*.f64 3 y)))
(+.f64 (*.f64 (+.f64 x -4/29) y) (*.f64 (+.f64 x -4/29) (+.f64 y y)))
(+.f64 (*.f64 (+.f64 x -4/29) (+.f64 y y)) (*.f64 (+.f64 x -4/29) y))
(+.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 3/2)) (*.f64 (+.f64 x -4/29) (*.f64 y 3/2)))
(-.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 0)
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 1)
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 2)
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 12 y)) 4)
(/.f64 (*.f64 24 (*.f64 (+.f64 x -4/29) y)) 8)
(/.f64 (*.f64 2 (*.f64 24 (*.f64 (+.f64 x -4/29) y))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 (+.f64 x -4/29) y)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 (+.f64 x -4/29) y)))) (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 (+.f64 x -4/29) y))))) 64)
(+.f64 x (+.f64 x (+.f64 -4/29 (+.f64 x -8/29))))
(+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29)))
(+.f64 (*.f64 (+.f64 x -4/29) 3) 0)
(+.f64 0 (*.f64 (+.f64 x -4/29) 3))
(+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29))
(+.f64 -4/29 (+.f64 x (+.f64 x (+.f64 x -8/29))))
(+.f64 -4/29 (+.f64 (+.f64 x (+.f64 x -4/29)) (+.f64 x -4/29)))
(+.f64 (+.f64 x -8/29) (+.f64 x (+.f64 x -4/29)))
(+.f64 (*.f64 (+.f64 x -4/29) 3/2) (*.f64 (+.f64 x -4/29) 3/2))
(+.f64 (+.f64 x (+.f64 x -4/29)) (+.f64 x -8/29))
(+.f64 (+.f64 x (+.f64 -4/29 (+.f64 x -8/29))) x)
(+.f64 (+.f64 x (+.f64 x (+.f64 x -8/29))) -4/29)
(+.f64 (+.f64 (+.f64 x (+.f64 x -4/29)) (+.f64 x -4/29)) -4/29)
(-.f64 (*.f64 (+.f64 x -4/29) 3) 0)
(/.f64 (*.f64 (+.f64 x -4/29) 3) 1)
(/.f64 (*.f64 (+.f64 x -4/29) 6) 2)
(/.f64 (*.f64 (+.f64 x -4/29) 12) 4)
(/.f64 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8)))) 64)
Outputs
(*.f64 -12/29 y)
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 3 x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 3 x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 3 x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 3 x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 3 x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 3 x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 3 x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 3 x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 3 x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
-12/29
(-.f64 (*.f64 3 x) 12/29)
(-.f64 (*.f64 3 x) 12/29)
(-.f64 (*.f64 3 x) 12/29)
(*.f64 3 x)
(-.f64 (*.f64 3 x) 12/29)
(-.f64 (*.f64 3 x) 12/29)
(-.f64 (*.f64 3 x) 12/29)
(*.f64 3 x)
(-.f64 (*.f64 3 x) 12/29)
(-.f64 (*.f64 3 x) 12/29)
(-.f64 (*.f64 3 x) 12/29)
(+.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 0)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(+.f64 0 (*.f64 (+.f64 x -4/29) (*.f64 3 y)))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(+.f64 (*.f64 (+.f64 x -4/29) y) (*.f64 (+.f64 x -4/29) (+.f64 y y)))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(+.f64 (*.f64 (+.f64 x -4/29) (+.f64 y y)) (*.f64 (+.f64 x -4/29) y))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(+.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 3/2)) (*.f64 (+.f64 x -4/29) (*.f64 y 3/2)))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(-.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 0)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 1)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 2)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 12 y)) 4)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (*.f64 24 (*.f64 (+.f64 x -4/29) y)) 8)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (*.f64 2 (*.f64 24 (*.f64 (+.f64 x -4/29) y))) 16)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 (+.f64 x -4/29) y)))) 32)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 (+.f64 x -4/29) y)))) (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 (+.f64 x -4/29) y))))) 64)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(+.f64 x (+.f64 x (+.f64 -4/29 (+.f64 x -8/29))))
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29)))
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(+.f64 (*.f64 (+.f64 x -4/29) 3) 0)
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(+.f64 0 (*.f64 (+.f64 x -4/29) 3))
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29))
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(+.f64 -4/29 (+.f64 x (+.f64 x (+.f64 x -8/29))))
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(+.f64 -4/29 (+.f64 (+.f64 x (+.f64 x -4/29)) (+.f64 x -4/29)))
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(+.f64 (+.f64 x -8/29) (+.f64 x (+.f64 x -4/29)))
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(+.f64 (*.f64 (+.f64 x -4/29) 3/2) (*.f64 (+.f64 x -4/29) 3/2))
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(+.f64 (+.f64 x (+.f64 x -4/29)) (+.f64 x -8/29))
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(+.f64 (+.f64 x (+.f64 -4/29 (+.f64 x -8/29))) x)
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(+.f64 (+.f64 x (+.f64 x (+.f64 x -8/29))) -4/29)
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(+.f64 (+.f64 (+.f64 x (+.f64 x -4/29)) (+.f64 x -4/29)) -4/29)
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(-.f64 (*.f64 (+.f64 x -4/29) 3) 0)
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(/.f64 (*.f64 (+.f64 x -4/29) 3) 1)
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(/.f64 (*.f64 (+.f64 x -4/29) 6) 2)
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(/.f64 (*.f64 (+.f64 x -4/29) 12) 4)
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(/.f64 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8) 8)
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8)) 16)
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8))) 32)
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) 3) 8)))) 64)
(+.f64 x (+.f64 x (+.f64 x -12/29)))
(+.f64 (+.f64 -12/29 x) (+.f64 x x))
(+.f64 x (+.f64 x (+.f64 -12/29 x)))
(*.f64 3 (+.f64 x -4/29))

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
Compiler

Compiled 19 to 13 computations (31.6% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
2.0ms
y
@0
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
0.0ms
x
@0
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
0.0ms
x
@inf
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
0.0ms
y
@inf
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
0.0ms
y
@-inf
(*.f64 (-.f64 x 4/29) (*.f64 3 y))

rewrite78.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1330×bool.json-1
1330×bool.json-2
1286×rational.json-1
1286×rational.json-2
1286×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0919
19019
224519
351519
4103719
5228219
6489219
Stop Event
node limit
Counts
1 → 13
Calls
Call 1
Inputs
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 x -4/29) (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x -4/29) y) (*.f64 (+.f64 x -4/29) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x -4/29) (+.f64 y y)) (*.f64 (+.f64 x -4/29) y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (+.f64 x -4/29) y) 3/2) (*.f64 (*.f64 (+.f64 x -4/29) y) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (+.f64 x -4/29) y) 6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 12)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12)))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 x -4/29) (*.f64 3 y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 x -4/29) (*.f64 3 y)) (*.f64 (+.f64 x -4/29) (*.f64 3 y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 x -4/29) (*.f64 3 y)) (*.f64 (+.f64 x -4/29) (*.f64 3 y)))))))

simplify1.2s (12.9%)

Algorithm
egg-herbie
Rules
10586×rational.json-simplify-41
5282×rational.json-simplify-35
2686×rational.json-simplify-2
1596×rational.json-simplify-53
888×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
053733
1115679
2227679
3500679
41361679
52403679
63225679
73658679
83967679
94133679
104289679
114445679
124855679
134855679
144981679
155232679
165483679
175747679
185915679
196071679
206227679
216383679
226539679
236695679
246695679
256924679
266924679
277080679
287236679
297392679
307548679
317704679
Stop Event
node limit
Counts
37 → 26
Calls
Call 1
Inputs
(*.f64 -12/29 y)
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(*.f64 3 (*.f64 y x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(*.f64 3 (*.f64 y x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(+.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 0)
(+.f64 0 (*.f64 (+.f64 x -4/29) (*.f64 3 y)))
(+.f64 (*.f64 (+.f64 x -4/29) y) (*.f64 (+.f64 x -4/29) (+.f64 y y)))
(+.f64 (*.f64 (+.f64 x -4/29) (+.f64 y y)) (*.f64 (+.f64 x -4/29) y))
(+.f64 (*.f64 (*.f64 (+.f64 x -4/29) y) 3/2) (*.f64 (*.f64 (+.f64 x -4/29) y) 3/2))
(-.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 0)
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 1)
(/.f64 (*.f64 (*.f64 (+.f64 x -4/29) y) 6) 2)
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 12)) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12)))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12))))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12)))))) 64)
Outputs
(*.f64 -12/29 y)
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 x 3)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 x 3)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 x 3)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 x 3)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 x 3)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 x 3)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 x 3))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 x 3)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 x 3)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 y (*.f64 x 3)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (-.f64 x 4/29)))
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (-.f64 x 4/29) (*.f64 y 3))
(*.f64 y (*.f64 3 (-.f64 x 4/29)))
(+.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 0)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 (+.f64 x -4/29) 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(+.f64 0 (*.f64 (+.f64 x -4/29) (*.f64 3 y)))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 (+.f64 x -4/29) 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(+.f64 (*.f64 (+.f64 x -4/29) y) (*.f64 (+.f64 x -4/29) (+.f64 y y)))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 (+.f64 x -4/29) 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(+.f64 (*.f64 (+.f64 x -4/29) (+.f64 y y)) (*.f64 (+.f64 x -4/29) y))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 (+.f64 x -4/29) 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(+.f64 (*.f64 (*.f64 (+.f64 x -4/29) y) 3/2) (*.f64 (*.f64 (+.f64 x -4/29) y) 3/2))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 (+.f64 x -4/29) 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(-.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 0)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 (+.f64 x -4/29) 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 3 y)) 1)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 (+.f64 x -4/29) 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (*.f64 (*.f64 (+.f64 x -4/29) y) 6) 2)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 (+.f64 x -4/29) 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 12)) 4)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 (+.f64 x -4/29) 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12))) 8)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 (+.f64 x -4/29) 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12)))) 16)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 (+.f64 x -4/29) 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12))))) 32)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 (+.f64 x -4/29) 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x -4/29) (*.f64 y 12)))))) 64)
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(*.f64 y (*.f64 (+.f64 x -4/29) 3))
(*.f64 y (*.f64 3 (+.f64 x -4/29)))

eval17.0ms (0.2%)

Compiler

Compiled 765 to 556 computations (27.3% saved)

prune13.0ms (0.1%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New71677
Fresh000
Picked011
Done101
Total72779
Error
0.0b
Counts
79 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
0.2b
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
0.3b
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
36.8b
(*.f64 (*.f64 3 x) y)
0.3b
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
36.8b
(*.f64 3 (*.f64 y x))
26.6b
(*.f64 -12/29 y)
Compiler

Compiled 105 to 79 computations (24.8% saved)

localize9.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
0.1b
(*.f64 -12/29 y)
0.3b
(*.f64 3 (*.f64 y x))
Compiler

Compiled 26 to 14 computations (46.2% saved)

series4.0ms (0%)

Counts
3 → 15
Calls

15 calls:

TimeVariablePointExpression
1.0ms
y
@0
(*.f64 3 (*.f64 y x))
0.0ms
x
@inf
(*.f64 3 (*.f64 y x))
0.0ms
y
@inf
(*.f64 3 (*.f64 y x))
0.0ms
x
@0
(*.f64 3 (*.f64 y x))
0.0ms
y
@inf
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))

rewrite122.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
1992×bool.json-1
1418×rational.json-simplify-35
1280×bool.json-2
1236×rational.json-1
1236×rational.json-2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01045
110139
226939
357539
4119639
5269639
6515839
7780039
Stop Event
node limit
Counts
3 → 51
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y x))
(*.f64 -12/29 y)
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y x) (*.f64 y (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3 (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 3 (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (+.f64 x x)) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 x 3/2)) (*.f64 y (*.f64 x 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 3 (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 x 6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y x) 12) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y x) 12)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y x) 12))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y x) 12)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y x) 12)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y x) 12))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 3 (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 3 (*.f64 y x)) (*.f64 3 (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 3 (*.f64 y x)) (*.f64 3 (*.f64 y x)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y -12/29) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y -12/29))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y -6/29) (*.f64 y -6/29))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y -12/29) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y -12/29) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y -24/29) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y -48/29) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y -48/29)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 y -48/29))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y -12/29)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y -12/29) (*.f64 y -12/29))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y -12/29) (*.f64 y -12/29))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (+.f64 -12/29 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 y (+.f64 -12/29 (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 (+.f64 -12/29 (*.f64 3 x)) 1/2) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (*.f64 2 (+.f64 -12/29 (*.f64 3 x)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (*.f64 (+.f64 -12/29 (*.f64 3 x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y y) (/.f64 (+.f64 -12/29 (*.f64 3 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 -12/29 (*.f64 3 x)) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 -12/29 (*.f64 3 x))) (*.f64 y 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 y (*.f64 2 (+.f64 -12/29 (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y 1/2) (*.f64 2 (+.f64 -12/29 (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 -12/29 (*.f64 3 x)) 1/2) (+.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 -12/29 (*.f64 3 x)) 2) (+.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 2 (+.f64 -12/29 (*.f64 3 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y (+.f64 -12/29 (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y (+.f64 -12/29 (*.f64 3 x))) (*.f64 y (+.f64 -12/29 (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y (+.f64 -12/29 (*.f64 3 x))) (*.f64 y (+.f64 -12/29 (*.f64 3 x))))))))

simplify346.0ms (3.7%)

Algorithm
egg-herbie
Rules
4016×rational.json-simplify-41
2472×rational.json-simplify-35
2330×rational.json-simplify-2
894×rational.json-simplify-51
728×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01201044
12591036
25941036
316781036
432621036
538481036
640851036
742571036
844111036
945571036
1051191036
1153351036
1254341036
1354671036
1455241036
1555561036
1655561036
1756861036
1858161036
Stop Event
node limit
Counts
66 → 61
Calls
Call 1
Inputs
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 -1 (*.f64 y (+.f64 12/29 (*.f64 -3 x))))
(*.f64 -1 (*.f64 y (+.f64 12/29 (*.f64 -3 x))))
(*.f64 -1 (*.f64 y (+.f64 12/29 (*.f64 -3 x))))
(*.f64 -1 (*.f64 y (+.f64 12/29 (*.f64 -3 x))))
(*.f64 -12/29 y)
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 y (+.f64 x x)))
(+.f64 (*.f64 3 (*.f64 y x)) 0)
(+.f64 0 (*.f64 3 (*.f64 y x)))
(+.f64 (*.f64 y (+.f64 x x)) (*.f64 y x))
(+.f64 (*.f64 y (*.f64 x 3/2)) (*.f64 y (*.f64 x 3/2)))
(-.f64 (*.f64 3 (*.f64 y x)) 0)
(/.f64 (*.f64 3 (*.f64 y x)) 1)
(/.f64 (*.f64 y (*.f64 x 6)) 2)
(/.f64 (*.f64 (*.f64 y x) 12) 4)
(/.f64 (*.f64 2 (*.f64 (*.f64 y x) 12)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y x) 12))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y x) 12)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y x) 12)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y x) 12))))) 64)
(+.f64 (*.f64 y -12/29) 0)
(+.f64 0 (*.f64 y -12/29))
(+.f64 (*.f64 y -6/29) (*.f64 y -6/29))
(-.f64 (*.f64 y -12/29) 0)
(/.f64 (*.f64 y -12/29) 1)
(/.f64 (*.f64 y -24/29) 2)
(/.f64 (*.f64 y -48/29) 4)
(/.f64 (*.f64 2 (*.f64 y -48/29)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y -48/29))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29))))) 64)
(-.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 0)
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 1)
(*.f64 1 (*.f64 y (+.f64 -12/29 (*.f64 3 x))))
(*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 1/2))
(*.f64 2 (*.f64 (*.f64 (+.f64 -12/29 (*.f64 3 x)) 1/2) y))
(*.f64 (*.f64 y (*.f64 2 (+.f64 -12/29 (*.f64 3 x)))) 1/2)
(*.f64 (+.f64 y y) (*.f64 (+.f64 -12/29 (*.f64 3 x)) 1/2))
(*.f64 (+.f64 y y) (/.f64 (+.f64 -12/29 (*.f64 3 x)) 2))
(*.f64 (+.f64 -12/29 (*.f64 3 x)) y)
(*.f64 4 (/.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4))
(*.f64 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4) 1/4)
(*.f64 (*.f64 2 (+.f64 -12/29 (*.f64 3 x))) (*.f64 y 1/2))
(*.f64 1/2 (*.f64 y (*.f64 2 (+.f64 -12/29 (*.f64 3 x)))))
(*.f64 (*.f64 y 1/2) (*.f64 2 (+.f64 -12/29 (*.f64 3 x))))
(*.f64 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 1/2) 2)
(*.f64 (*.f64 (+.f64 -12/29 (*.f64 3 x)) 1/2) (+.f64 y y))
(*.f64 1/4 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4))
(*.f64 (/.f64 (+.f64 -12/29 (*.f64 3 x)) 2) (+.f64 y y))
(*.f64 (/.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4) 4)
(/.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 1)
(/.f64 (*.f64 y (*.f64 2 (+.f64 -12/29 (*.f64 3 x)))) 2)
(/.f64 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4) 4)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4))))) 64)
Outputs
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 -1 (*.f64 y (+.f64 12/29 (*.f64 -3 x))))
(*.f64 y (*.f64 (+.f64 12/29 (*.f64 x -3)) -1))
(*.f64 y (neg.f64 (+.f64 12/29 (*.f64 x -3))))
(*.f64 (+.f64 12/29 (*.f64 x -3)) (neg.f64 y))
(*.f64 -1 (*.f64 y (+.f64 12/29 (*.f64 -3 x))))
(*.f64 y (*.f64 (+.f64 12/29 (*.f64 x -3)) -1))
(*.f64 y (neg.f64 (+.f64 12/29 (*.f64 x -3))))
(*.f64 (+.f64 12/29 (*.f64 x -3)) (neg.f64 y))
(*.f64 -1 (*.f64 y (+.f64 12/29 (*.f64 -3 x))))
(*.f64 y (*.f64 (+.f64 12/29 (*.f64 x -3)) -1))
(*.f64 y (neg.f64 (+.f64 12/29 (*.f64 x -3))))
(*.f64 (+.f64 12/29 (*.f64 x -3)) (neg.f64 y))
(*.f64 -1 (*.f64 y (+.f64 12/29 (*.f64 -3 x))))
(*.f64 y (*.f64 (+.f64 12/29 (*.f64 x -3)) -1))
(*.f64 y (neg.f64 (+.f64 12/29 (*.f64 x -3))))
(*.f64 (+.f64 12/29 (*.f64 x -3)) (neg.f64 y))
(*.f64 -12/29 y)
(*.f64 y -12/29)
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 x y))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 x y))
(+.f64 (*.f64 y x) (*.f64 y (+.f64 x x)))
(*.f64 3 (*.f64 x y))
(+.f64 (*.f64 3 (*.f64 y x)) 0)
(*.f64 3 (*.f64 x y))
(+.f64 0 (*.f64 3 (*.f64 y x)))
(*.f64 3 (*.f64 x y))
(+.f64 (*.f64 y (+.f64 x x)) (*.f64 y x))
(*.f64 3 (*.f64 x y))
(+.f64 (*.f64 y (*.f64 x 3/2)) (*.f64 y (*.f64 x 3/2)))
(*.f64 3 (*.f64 x y))
(-.f64 (*.f64 3 (*.f64 y x)) 0)
(*.f64 3 (*.f64 x y))
(/.f64 (*.f64 3 (*.f64 y x)) 1)
(*.f64 3 (*.f64 x y))
(/.f64 (*.f64 y (*.f64 x 6)) 2)
(*.f64 3 (*.f64 x y))
(/.f64 (*.f64 (*.f64 y x) 12) 4)
(*.f64 3 (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 (*.f64 y x) 12)) 8)
(*.f64 3 (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y x) 12))) 16)
(*.f64 3 (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y x) 12)))) 32)
(*.f64 3 (*.f64 x y))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y x) 12)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y x) 12))))) 64)
(*.f64 3 (*.f64 x y))
(+.f64 (*.f64 y -12/29) 0)
(*.f64 y -12/29)
(+.f64 0 (*.f64 y -12/29))
(*.f64 y -12/29)
(+.f64 (*.f64 y -6/29) (*.f64 y -6/29))
(*.f64 y -12/29)
(-.f64 (*.f64 y -12/29) 0)
(*.f64 y -12/29)
(/.f64 (*.f64 y -12/29) 1)
(*.f64 y -12/29)
(/.f64 (*.f64 y -24/29) 2)
(*.f64 y -12/29)
(/.f64 (*.f64 y -48/29) 4)
(*.f64 y -12/29)
(/.f64 (*.f64 2 (*.f64 y -48/29)) 8)
(*.f64 y -12/29)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y -48/29))) 16)
(*.f64 y -12/29)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29)))) 32)
(*.f64 y -12/29)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29))))) 64)
(*.f64 y -12/29)
(-.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 0)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 1)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 1 (*.f64 y (+.f64 -12/29 (*.f64 3 x))))
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 1/2))
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 2 (*.f64 (*.f64 (+.f64 -12/29 (*.f64 3 x)) 1/2) y))
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 (*.f64 y (*.f64 2 (+.f64 -12/29 (*.f64 3 x)))) 1/2)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 (+.f64 y y) (*.f64 (+.f64 -12/29 (*.f64 3 x)) 1/2))
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 (+.f64 y y) (/.f64 (+.f64 -12/29 (*.f64 3 x)) 2))
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 (+.f64 -12/29 (*.f64 3 x)) y)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 4 (/.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4))
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4) 1/4)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 (*.f64 2 (+.f64 -12/29 (*.f64 3 x))) (*.f64 y 1/2))
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 1/2 (*.f64 y (*.f64 2 (+.f64 -12/29 (*.f64 3 x)))))
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 (*.f64 y 1/2) (*.f64 2 (+.f64 -12/29 (*.f64 3 x))))
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 1/2) 2)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 (*.f64 (+.f64 -12/29 (*.f64 3 x)) 1/2) (+.f64 y y))
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 1/4 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4))
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 (/.f64 (+.f64 -12/29 (*.f64 3 x)) 2) (+.f64 y y))
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(*.f64 (/.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4) 4)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(/.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 1)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(/.f64 (*.f64 y (*.f64 2 (+.f64 -12/29 (*.f64 3 x)))) 2)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(/.f64 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4) 4)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4)) 8)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4))) 16)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4)))) 32)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 -12/29 (*.f64 3 x))) 4))))) 64)
(*.f64 y (+.f64 (*.f64 3 x) -12/29))

localize3.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 -12/29 y)
Compiler

Compiled 7 to 5 computations (28.6% saved)

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.3b
(*.f64 3 (*.f64 y x))
Compiler

Compiled 13 to 6 computations (53.8% saved)

localize74.0ms (0.8%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 3 x) y)
Compiler

Compiled 13 to 8 computations (38.5% saved)

series0.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite498.0ms (5.3%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17013
219713
342913
488213
5194313
6412513
7704513
Stop Event
node limit
Counts
1 → 13
Calls
Call 1
Inputs
(*.f64 (*.f64 3 x) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3 (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 3 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x y) (*.f64 x (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 y y)) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 y 3/2)) (*.f64 x (*.f64 y 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 3 (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 y 6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x y) 12) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 24 (*.f64 x y)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 24 (*.f64 x y))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y)))) (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 3 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 3 (*.f64 x y)) (*.f64 3 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 3 (*.f64 x y)) (*.f64 3 (*.f64 x y)))))))

simplify319.0ms (3.4%)

Algorithm
egg-herbie
Rules
3654×rational.json-simplify-35
3496×rational.json-simplify-49
3082×rational.json-simplify-2
856×rational.json-simplify-1
530×rational.json-simplify-41
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
045481
199481
2215481
3497481
41364481
52350481
62937481
73201481
83407481
93568481
103734481
113888481
123888481
133909481
143909481
154057481
164205481
176508481
187722481
Stop Event
node limit
Counts
37 → 15
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(+.f64 (*.f64 3 (*.f64 x y)) 0)
(+.f64 0 (*.f64 3 (*.f64 x y)))
(+.f64 (*.f64 x y) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 x (+.f64 y y)) (*.f64 x y))
(+.f64 (*.f64 x (*.f64 y 3/2)) (*.f64 x (*.f64 y 3/2)))
(-.f64 (*.f64 3 (*.f64 x y)) 0)
(/.f64 (*.f64 3 (*.f64 x y)) 1)
(/.f64 (*.f64 x (*.f64 y 6)) 2)
(/.f64 (*.f64 (*.f64 x y) 12) 4)
(/.f64 (*.f64 24 (*.f64 x y)) 8)
(/.f64 (*.f64 2 (*.f64 24 (*.f64 x y))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y)))) (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y))))) 64)
Outputs
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 3 (*.f64 x y)) 0)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 0 (*.f64 3 (*.f64 x y)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 x y) (*.f64 x (+.f64 y y)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 x (+.f64 y y)) (*.f64 x y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 x (*.f64 y 3/2)) (*.f64 x (*.f64 y 3/2)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(-.f64 (*.f64 3 (*.f64 x y)) 0)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 3 (*.f64 x y)) 1)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 x (*.f64 y 6)) 2)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 (*.f64 x y) 12) 4)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 24 (*.f64 x y)) 8)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 2 (*.f64 24 (*.f64 x y))) 16)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y)))) 32)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y)))) (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y))))) 64)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))

localize13.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 y (-.f64 x 4/29))
0.3b
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
Compiler

Compiled 21 to 14 computations (33.3% saved)

series2.0ms (0%)

Counts
2 → 24
Calls

12 calls:

TimeVariablePointExpression
1.0ms
y
@-inf
(*.f64 y (-.f64 x 4/29))
0.0ms
x
@-inf
(*.f64 y (-.f64 x 4/29))
0.0ms
y
@inf
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
0.0ms
x
@inf
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
0.0ms
y
@0
(*.f64 3 (*.f64 y (-.f64 x 4/29)))

rewrite108.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1332×bool.json-1
1332×bool.json-2
1288×rational.json-1
1288×rational.json-2
1288×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0932
19032
224532
351632
4103832
5227732
6485332
Stop Event
node limit
Counts
2 → 24
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 y (-.f64 x 4/29))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3 (*.f64 y (+.f64 x -4/29))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 3 (*.f64 y (+.f64 x -4/29))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (+.f64 x (+.f64 x -8/29))) (*.f64 y (+.f64 x -4/29)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 (+.f64 x -4/29) 3/2)) (*.f64 y (*.f64 (+.f64 x -4/29) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 3 (*.f64 y (+.f64 x -4/29))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 y (+.f64 x -4/29))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (+.f64 x -4/29) 12)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 3 (*.f64 y (+.f64 x -4/29)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 3 (*.f64 y (+.f64 x -4/29))) (*.f64 3 (*.f64 y (+.f64 x -4/29))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 3 (*.f64 y (+.f64 x -4/29))) (*.f64 3 (*.f64 y (+.f64 x -4/29))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (+.f64 x -4/29)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (+.f64 x -4/29)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 (+.f64 x -4/29) 1/2)) (*.f64 y (*.f64 (+.f64 x -4/29) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (+.f64 x -4/29)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 x -4/29)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 x (+.f64 x -8/29))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (+.f64 x -4/29)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 x -4/29)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 x -4/29)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 x -4/29)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 x -4/29)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y (+.f64 x -4/29))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x -4/29)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x -4/29)))))))

simplify832.0ms (8.8%)

Algorithm
egg-herbie
Rules
3636×rational.json-simplify-41
2728×rational.json-simplify-2
2436×rational.json-simplify-35
1496×rational.json-simplify-53
1430×rational.json-simplify-43
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0741020
1175888
2383888
3900732
43477732
54237732
64450732
74583732
84706732
94827732
105950732
116723732
126852732
136854732
146854732
156971732
Stop Event
node limit
Counts
48 → 38
Calls
Call 1
Inputs
(*.f64 -12/29 y)
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(*.f64 3 (*.f64 y x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(*.f64 3 (*.f64 y x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(*.f64 -4/29 y)
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(+.f64 (*.f64 3 (*.f64 y (+.f64 x -4/29))) 0)
(+.f64 0 (*.f64 3 (*.f64 y (+.f64 x -4/29))))
(+.f64 (*.f64 y (+.f64 x (+.f64 x -8/29))) (*.f64 y (+.f64 x -4/29)))
(+.f64 (*.f64 y (*.f64 (+.f64 x -4/29) 3/2)) (*.f64 y (*.f64 (+.f64 x -4/29) 3/2)))
(-.f64 (*.f64 3 (*.f64 y (+.f64 x -4/29))) 0)
(/.f64 (*.f64 3 (*.f64 y (+.f64 x -4/29))) 1)
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 2)
(/.f64 (*.f64 y (*.f64 (+.f64 x -4/29) 12)) 4)
(/.f64 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4)))) 64)
(+.f64 (*.f64 y (+.f64 x -4/29)) 0)
(+.f64 0 (*.f64 y (+.f64 x -4/29)))
(+.f64 (*.f64 y (*.f64 (+.f64 x -4/29) 1/2)) (*.f64 y (*.f64 (+.f64 x -4/29) 1/2)))
(-.f64 (*.f64 y (+.f64 x -4/29)) 0)
(/.f64 (*.f64 y (+.f64 x -4/29)) 1)
(/.f64 (*.f64 y (+.f64 x (+.f64 x -8/29))) 2)
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 4)) 4)
(/.f64 (*.f64 (*.f64 y (+.f64 x -4/29)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 x -4/29)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 x -4/29)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 x -4/29)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 x -4/29)) 8)))) 64)
Outputs
(*.f64 -12/29 y)
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(*.f64 -4/29 y)
(*.f64 y -4/29)
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(*.f64 y (+.f64 x -4/29))
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(*.f64 y (+.f64 x -4/29))
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(*.f64 y (+.f64 x -4/29))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(*.f64 y (+.f64 x -4/29))
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(*.f64 y (+.f64 x -4/29))
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(*.f64 y (+.f64 x -4/29))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(*.f64 y (+.f64 x -4/29))
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(*.f64 y (+.f64 x -4/29))
(+.f64 (*.f64 y x) (*.f64 -4/29 y))
(*.f64 y (+.f64 x -4/29))
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(*.f64 y (+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29)))
(*.f64 y (+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29))))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(+.f64 (*.f64 3 (*.f64 y (+.f64 x -4/29))) 0)
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(*.f64 y (+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29)))
(*.f64 y (+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29))))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(+.f64 0 (*.f64 3 (*.f64 y (+.f64 x -4/29))))
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(*.f64 y (+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29)))
(*.f64 y (+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29))))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(+.f64 (*.f64 y (+.f64 x (+.f64 x -8/29))) (*.f64 y (+.f64 x -4/29)))
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(*.f64 y (+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29)))
(*.f64 y (+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29))))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(+.f64 (*.f64 y (*.f64 (+.f64 x -4/29) 3/2)) (*.f64 y (*.f64 (+.f64 x -4/29) 3/2)))
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(*.f64 y (+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29)))
(*.f64 y (+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29))))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(-.f64 (*.f64 3 (*.f64 y (+.f64 x -4/29))) 0)
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(*.f64 y (+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29)))
(*.f64 y (+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29))))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(/.f64 (*.f64 3 (*.f64 y (+.f64 x -4/29))) 1)
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(*.f64 y (+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29)))
(*.f64 y (+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29))))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 2)
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(*.f64 y (+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29)))
(*.f64 y (+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29))))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(/.f64 (*.f64 y (*.f64 (+.f64 x -4/29) 12)) 4)
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(*.f64 y (+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29)))
(*.f64 y (+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29))))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(/.f64 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4) 8)
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(*.f64 y (+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29)))
(*.f64 y (+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29))))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4)) 16)
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(*.f64 y (+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29)))
(*.f64 y (+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29))))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4))) 32)
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(*.f64 y (+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29)))
(*.f64 y (+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29))))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 6)) 4)))) 64)
(+.f64 (*.f64 y (+.f64 x -4/29)) (*.f64 y (+.f64 x (+.f64 x -8/29))))
(*.f64 y (+.f64 (+.f64 x (+.f64 x -8/29)) (+.f64 x -4/29)))
(*.f64 y (+.f64 (+.f64 x -4/29) (+.f64 x (+.f64 x -8/29))))
(*.f64 (+.f64 x -4/29) (*.f64 y 3))
(+.f64 (*.f64 y (+.f64 x -4/29)) 0)
(*.f64 y (+.f64 x -4/29))
(+.f64 0 (*.f64 y (+.f64 x -4/29)))
(*.f64 y (+.f64 x -4/29))
(+.f64 (*.f64 y (*.f64 (+.f64 x -4/29) 1/2)) (*.f64 y (*.f64 (+.f64 x -4/29) 1/2)))
(*.f64 y (+.f64 x -4/29))
(-.f64 (*.f64 y (+.f64 x -4/29)) 0)
(*.f64 y (+.f64 x -4/29))
(/.f64 (*.f64 y (+.f64 x -4/29)) 1)
(*.f64 y (+.f64 x -4/29))
(/.f64 (*.f64 y (+.f64 x (+.f64 x -8/29))) 2)
(*.f64 y (+.f64 x -4/29))
(/.f64 (*.f64 (+.f64 x -4/29) (*.f64 y 4)) 4)
(*.f64 y (+.f64 x -4/29))
(/.f64 (*.f64 (*.f64 y (+.f64 x -4/29)) 8) 8)
(*.f64 y (+.f64 x -4/29))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (+.f64 x -4/29)) 8)) 16)
(*.f64 y (+.f64 x -4/29))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 x -4/29)) 8))) 32)
(*.f64 y (+.f64 x -4/29))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 x -4/29)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (+.f64 x -4/29)) 8)))) 64)
(*.f64 y (+.f64 x -4/29))

eval29.0ms (0.3%)

Compiler

Compiled 1458 to 1045 computations (28.3% saved)

prune24.0ms (0.3%)

Pruning

7 alts after pruning (2 fresh and 5 done)

PrunedKeptTotal
New1371138
Fresh011
Picked101
Done055
Total1387145
Error
0.0b
Counts
145 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
0.2b
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
0.3b
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
36.8b
(*.f64 (*.f64 3 x) y)
36.8b
(*.f64 3 (*.f64 y x))
26.7b
(*.f64 3 (*.f64 y -4/29))
26.6b
(*.f64 -12/29 y)
Compiler

Compiled 55 to 42 computations (23.6% saved)

localize6.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 y -4/29)
0.3b
(*.f64 3 (*.f64 y -4/29))
Compiler

Compiled 13 to 10 computations (23.1% saved)

series1.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
y
@-inf
(*.f64 y -4/29)
0.0ms
y
@inf
(*.f64 y -4/29)
0.0ms
y
@0
(*.f64 y -4/29)
0.0ms
y
@inf
(*.f64 3 (*.f64 y -4/29))
0.0ms
y
@0
(*.f64 3 (*.f64 y -4/29))

rewrite95.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
1548×bool.json-1
1548×bool.json-2
1480×rational.json-1
1480×rational.json-2
1480×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0714
17314
220514
342514
486414
5185214
6379814
7654014
Stop Event
node limit
Counts
2 → 24
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y -4/29))
(*.f64 y -4/29)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y -4/29) (*.f64 y -8/29))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y -12/29) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y -12/29))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y -8/29) (*.f64 y -4/29))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y -6/29) (*.f64 y -6/29))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y -12/29) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y -12/29) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y -24/29) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y -48/29) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y -48/29)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 y -48/29))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y -12/29)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y -12/29) (*.f64 y -12/29))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y -12/29) (*.f64 y -12/29))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y -4/29) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y -4/29))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y -2/29) (*.f64 y -2/29))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y -4/29) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y -4/29) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y -8/29) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y -16/29) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y -4/29) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 y -16/29) (*.f64 y -48/29)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 (*.f64 y -16/29) (*.f64 y -48/29))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (+.f64 (*.f64 y -16/29) (*.f64 y -48/29))) (*.f64 2 (+.f64 (*.f64 y -16/29) (*.f64 y -48/29)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y -4/29)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y -4/29) (*.f64 y -4/29))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y -4/29) (*.f64 y -4/29))))))

simplify549.0ms (5.8%)

Algorithm
egg-herbie
Rules
5078×rational.json-simplify-41
3840×rational.json-simplify-35
1128×rational.json-simplify-2
538×rational.json-simplify-1
438×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
061336
1129336
2267336
3648336
42048336
53029336
63268336
73380336
83479336
93575336
103669336
113806336
123900336
133994336
144088336
154088336
164182336
174276336
184370336
194464336
204558336
214652336
224746336
234840336
244934336
255028336
265122336
275216336
285216336
Stop Event
node limit
Counts
48 → 27
Calls
Call 1
Inputs
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -4/29 y)
(*.f64 -4/29 y)
(*.f64 -4/29 y)
(*.f64 -4/29 y)
(*.f64 -4/29 y)
(*.f64 -4/29 y)
(*.f64 -4/29 y)
(*.f64 -4/29 y)
(*.f64 -4/29 y)
(*.f64 -4/29 y)
(*.f64 -4/29 y)
(*.f64 -4/29 y)
(+.f64 (*.f64 y -4/29) (*.f64 y -8/29))
(+.f64 (*.f64 y -12/29) 0)
(+.f64 0 (*.f64 y -12/29))
(+.f64 (*.f64 y -8/29) (*.f64 y -4/29))
(+.f64 (*.f64 y -6/29) (*.f64 y -6/29))
(-.f64 (*.f64 y -12/29) 0)
(/.f64 (*.f64 y -12/29) 1)
(/.f64 (*.f64 y -24/29) 2)
(/.f64 (*.f64 y -48/29) 4)
(/.f64 (*.f64 2 (*.f64 y -48/29)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y -48/29))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29))))) 64)
(+.f64 (*.f64 y -4/29) 0)
(+.f64 0 (*.f64 y -4/29))
(+.f64 (*.f64 y -2/29) (*.f64 y -2/29))
(-.f64 (*.f64 y -4/29) 0)
(/.f64 (*.f64 y -4/29) 1)
(/.f64 (*.f64 y -8/29) 2)
(/.f64 (*.f64 y -16/29) 4)
(/.f64 (*.f64 (*.f64 y -4/29) 8) 8)
(/.f64 (+.f64 (*.f64 y -16/29) (*.f64 y -48/29)) 16)
(/.f64 (*.f64 2 (+.f64 (*.f64 y -16/29) (*.f64 y -48/29))) 32)
(/.f64 (+.f64 (*.f64 2 (+.f64 (*.f64 y -16/29) (*.f64 y -48/29))) (*.f64 2 (+.f64 (*.f64 y -16/29) (*.f64 y -48/29)))) 64)
Outputs
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -12/29 y)
(*.f64 -4/29 y)
(*.f64 y -4/29)
(*.f64 -4/29 y)
(*.f64 y -4/29)
(*.f64 -4/29 y)
(*.f64 y -4/29)
(*.f64 -4/29 y)
(*.f64 y -4/29)
(*.f64 -4/29 y)
(*.f64 y -4/29)
(*.f64 -4/29 y)
(*.f64 y -4/29)
(*.f64 -4/29 y)
(*.f64 y -4/29)
(*.f64 -4/29 y)
(*.f64 y -4/29)
(*.f64 -4/29 y)
(*.f64 y -4/29)
(*.f64 -4/29 y)
(*.f64 y -4/29)
(*.f64 -4/29 y)
(*.f64 y -4/29)
(*.f64 -4/29 y)
(*.f64 y -4/29)
(+.f64 (*.f64 y -4/29) (*.f64 y -8/29))
(*.f64 -12/29 y)
(+.f64 (*.f64 y -12/29) 0)
(*.f64 -12/29 y)
(+.f64 0 (*.f64 y -12/29))
(*.f64 -12/29 y)
(+.f64 (*.f64 y -8/29) (*.f64 y -4/29))
(*.f64 -12/29 y)
(+.f64 (*.f64 y -6/29) (*.f64 y -6/29))
(*.f64 -12/29 y)
(-.f64 (*.f64 y -12/29) 0)
(*.f64 -12/29 y)
(/.f64 (*.f64 y -12/29) 1)
(*.f64 -12/29 y)
(/.f64 (*.f64 y -24/29) 2)
(*.f64 -12/29 y)
(/.f64 (*.f64 y -48/29) 4)
(*.f64 -12/29 y)
(/.f64 (*.f64 2 (*.f64 y -48/29)) 8)
(*.f64 -12/29 y)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y -48/29))) 16)
(*.f64 -12/29 y)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29)))) 32)
(*.f64 -12/29 y)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y -48/29))))) 64)
(*.f64 -12/29 y)
(+.f64 (*.f64 y -4/29) 0)
(*.f64 y -4/29)
(+.f64 0 (*.f64 y -4/29))
(*.f64 y -4/29)
(+.f64 (*.f64 y -2/29) (*.f64 y -2/29))
(*.f64 y -4/29)
(-.f64 (*.f64 y -4/29) 0)
(*.f64 y -4/29)
(/.f64 (*.f64 y -4/29) 1)
(*.f64 y -4/29)
(/.f64 (*.f64 y -8/29) 2)
(*.f64 y -4/29)
(/.f64 (*.f64 y -16/29) 4)
(*.f64 y -4/29)
(/.f64 (*.f64 (*.f64 y -4/29) 8) 8)
(*.f64 y -4/29)
(/.f64 (+.f64 (*.f64 y -16/29) (*.f64 y -48/29)) 16)
(*.f64 y -4/29)
(/.f64 (*.f64 2 (+.f64 (*.f64 y -16/29) (*.f64 y -48/29))) 32)
(*.f64 y -4/29)
(/.f64 (+.f64 (*.f64 2 (+.f64 (*.f64 y -16/29) (*.f64 y -48/29))) (*.f64 2 (+.f64 (*.f64 y -16/29) (*.f64 y -48/29)))) 64)
(*.f64 y -4/29)

localize9.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(-.f64 (*.f64 3 x) 12/29)
0.2b
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
Compiler

Compiled 21 to 15 computations (28.6% saved)

series2.0ms (0%)

Counts
2 → 15
Calls

9 calls:

TimeVariablePointExpression
0.0ms
y
@0
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
0.0ms
x
@-inf
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
0.0ms
x
@0
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
0.0ms
y
@inf
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
0.0ms
x
@inf
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)

rewrite106.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1970×bool.json-1
1970×bool.json-2
1164×rational.json-1
1164×rational.json-2
1164×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0932
18832
222732
345932
492932
5199832
6428632
7741932
Stop Event
node limit
Counts
2 → 38
Calls
Call 1
Inputs
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(-.f64 (*.f64 3 x) 12/29)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 (*.f64 3 x) -12/29) y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) (/.f64 y 2)) (*.f64 (+.f64 (*.f64 3 x) -12/29) (/.f64 y 2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) (+.f64 y y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 (*.f64 3 x) -12/29) y)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 (*.f64 3 x) -12/29) y) (*.f64 (+.f64 (*.f64 3 x) -12/29) y))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 (*.f64 3 x) -12/29) y) (*.f64 (+.f64 (*.f64 3 x) -12/29) y))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (+.f64 (+.f64 x x) -12/29))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3 x) -12/29)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 3 x) -12/29) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (+.f64 (*.f64 3 x) -12/29))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x x) (+.f64 x -12/29))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -12/29 (*.f64 3 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 1/2) (*.f64 (+.f64 (*.f64 3 x) -12/29) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x 3/2) (-.f64 (*.f64 x 3/2) 12/29))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x -12/29) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (+.f64 x x) -12/29) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 3 x) -12/29) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 3 x) -12/29))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 -12/29 (+.f64 (*.f64 x 6) -12/29)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 3 x) -12/29) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 -12/29 (+.f64 (*.f64 x 6) -12/29)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 3 x) -12/29) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 3 x) -12/29) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 3 x) -12/29) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 -12/29 (+.f64 (*.f64 x 6) -12/29)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 3 x) -12/29)))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 3 x) -12/29) (+.f64 (*.f64 3 x) -12/29))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 3 x) -12/29) (+.f64 (*.f64 3 x) -12/29))))))

simplify374.0ms (4%)

Algorithm
egg-herbie
Rules
5012×rational.json-simplify-41
1816×rational.json-simplify-2
1804×rational.json-simplify-35
812×rational.json-simplify-51
756×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
089935
1178815
2468815
31479815
43185815
53553815
63646815
73725815
83801815
93877815
104424815
114500815
124576815
134652815
144728815
154804815
164880815
174880815
Stop Event
node limit
Counts
53 → 50
Calls
Call 1
Inputs
(*.f64 -12/29 y)
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(*.f64 3 (*.f64 y x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(*.f64 3 (*.f64 y x))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
-12/29
(*.f64 3 x)
(*.f64 3 x)
(+.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) y) 0)
(+.f64 0 (*.f64 (+.f64 (*.f64 3 x) -12/29) y))
(+.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) (/.f64 y 2)) (*.f64 (+.f64 (*.f64 3 x) -12/29) (/.f64 y 2)))
(-.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) y) 0)
(/.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) y) 1)
(/.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) (+.f64 y y)) 2)
(/.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) (*.f64 y 4)) 4)
(/.f64 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29)) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29))))) 64)
(+.f64 x (+.f64 (+.f64 x x) -12/29))
(+.f64 (*.f64 3 x) -12/29)
(+.f64 (+.f64 (*.f64 3 x) -12/29) 0)
(+.f64 0 (+.f64 (*.f64 3 x) -12/29))
(+.f64 (+.f64 x x) (+.f64 x -12/29))
(+.f64 -12/29 (*.f64 3 x))
(+.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 1/2) (*.f64 (+.f64 (*.f64 3 x) -12/29) 1/2))
(+.f64 (*.f64 x 3/2) (-.f64 (*.f64 x 3/2) 12/29))
(+.f64 (+.f64 x -12/29) (+.f64 x x))
(+.f64 (+.f64 (+.f64 x x) -12/29) x)
(*.f64 (+.f64 (*.f64 3 x) -12/29) 1)
(*.f64 1 (+.f64 (*.f64 3 x) -12/29))
(*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 1/2))
(*.f64 (+.f64 -12/29 (+.f64 (*.f64 x 6) -12/29)) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 3 x) -12/29) 4))
(*.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 4) 1/4)
(*.f64 1/2 (+.f64 -12/29 (+.f64 (*.f64 x 6) -12/29)))
(*.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 3 x) -12/29) 4))
(*.f64 (/.f64 (+.f64 (*.f64 3 x) -12/29) 4) 4)
(/.f64 (+.f64 (*.f64 3 x) -12/29) 1)
(/.f64 (+.f64 -12/29 (+.f64 (*.f64 x 6) -12/29)) 2)
(/.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8)))) 64)
Outputs
(*.f64 -12/29 y)
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 x (*.f64 y 3))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
-12/29
(*.f64 3 x)
(*.f64 3 x)
(+.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) y) 0)
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 0 (*.f64 (+.f64 (*.f64 3 x) -12/29) y))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) (/.f64 y 2)) (*.f64 (+.f64 (*.f64 3 x) -12/29) (/.f64 y 2)))
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(-.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) y) 0)
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(/.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) y) 1)
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(/.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) (+.f64 y y)) 2)
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(/.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) (*.f64 y 4)) 4)
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(/.f64 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29)) 8)
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(/.f64 (*.f64 2 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29))) 16)
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29)))) 32)
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y 8) (+.f64 (*.f64 3 x) -12/29))))) 64)
(+.f64 (*.f64 -12/29 y) (*.f64 3 (*.f64 y x)))
(*.f64 y (+.f64 -12/29 (*.f64 3 x)))
(+.f64 x (+.f64 (+.f64 x x) -12/29))
(+.f64 x (+.f64 -12/29 (+.f64 x x)))
(+.f64 -12/29 (+.f64 (+.f64 x x) x))
(+.f64 -12/29 (+.f64 x (+.f64 x x)))
(+.f64 (*.f64 3 x) -12/29)
(+.f64 -12/29 (*.f64 3 x))
(+.f64 (+.f64 (*.f64 3 x) -12/29) 0)
(+.f64 -12/29 (*.f64 3 x))
(+.f64 0 (+.f64 (*.f64 3 x) -12/29))
(+.f64 -12/29 (*.f64 3 x))
(+.f64 (+.f64 x x) (+.f64 x -12/29))
(+.f64 x (+.f64 -12/29 (+.f64 x x)))
(+.f64 -12/29 (+.f64 (+.f64 x x) x))
(+.f64 -12/29 (+.f64 x (+.f64 x x)))
(+.f64 -12/29 (*.f64 3 x))
(+.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 1/2) (*.f64 (+.f64 (*.f64 3 x) -12/29) 1/2))
(+.f64 -12/29 (*.f64 3 x))
(+.f64 (*.f64 x 3/2) (-.f64 (*.f64 x 3/2) 12/29))
(+.f64 (+.f64 x -12/29) (+.f64 x x))
(+.f64 x (+.f64 -12/29 (+.f64 x x)))
(+.f64 -12/29 (+.f64 (+.f64 x x) x))
(+.f64 -12/29 (+.f64 x (+.f64 x x)))
(+.f64 (+.f64 (+.f64 x x) -12/29) x)
(+.f64 x (+.f64 -12/29 (+.f64 x x)))
(+.f64 -12/29 (+.f64 (+.f64 x x) x))
(+.f64 -12/29 (+.f64 x (+.f64 x x)))
(*.f64 (+.f64 (*.f64 3 x) -12/29) 1)
(+.f64 -12/29 (*.f64 3 x))
(*.f64 1 (+.f64 (*.f64 3 x) -12/29))
(+.f64 -12/29 (*.f64 3 x))
(*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 1/2))
(+.f64 -12/29 (*.f64 3 x))
(*.f64 (+.f64 -12/29 (+.f64 (*.f64 x 6) -12/29)) 1/2)
(+.f64 -12/29 (*.f64 3 x))
(*.f64 4 (/.f64 (+.f64 (*.f64 3 x) -12/29) 4))
(+.f64 -12/29 (*.f64 3 x))
(*.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 4) 1/4)
(+.f64 -12/29 (*.f64 3 x))
(*.f64 1/2 (+.f64 -12/29 (+.f64 (*.f64 x 6) -12/29)))
(+.f64 -12/29 (*.f64 3 x))
(*.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 1/2) 2)
(+.f64 -12/29 (*.f64 3 x))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 3 x) -12/29) 4))
(+.f64 -12/29 (*.f64 3 x))
(*.f64 (/.f64 (+.f64 (*.f64 3 x) -12/29) 4) 4)
(+.f64 -12/29 (*.f64 3 x))
(/.f64 (+.f64 (*.f64 3 x) -12/29) 1)
(+.f64 -12/29 (*.f64 3 x))
(/.f64 (+.f64 -12/29 (+.f64 (*.f64 x 6) -12/29)) 2)
(+.f64 -12/29 (*.f64 3 x))
(/.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 4) 4)
(+.f64 -12/29 (*.f64 3 x))
(/.f64 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8) 8)
(+.f64 -12/29 (*.f64 3 x))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8)) 16)
(+.f64 -12/29 (*.f64 3 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8))) 32)
(+.f64 -12/29 (*.f64 3 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 3 x) -12/29) 8)))) 64)
(+.f64 -12/29 (*.f64 3 x))

eval17.0ms (0.2%)

Compiler

Compiled 743 to 576 computations (22.5% saved)

prune12.0ms (0.1%)

Pruning

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New76177
Fresh000
Picked011
Done066
Total76884
Error
0.0b
Counts
84 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
0.2b
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
0.3b
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
36.8b
(*.f64 (*.f64 3 x) y)
36.8b
(*.f64 x (*.f64 y 3))
36.8b
(*.f64 3 (*.f64 y x))
26.7b
(*.f64 3 (*.f64 y -4/29))
26.6b
(*.f64 -12/29 y)
Compiler

Compiled 62 to 47 computations (24.2% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(*.f64 x (*.f64 y 3))
Compiler

Compiled 13 to 8 computations (38.5% saved)

series0.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite102.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
1862×bool.json-1
1862×bool.json-2
1092×rational.json-1
1092×rational.json-2
1092×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17213
221113
345913
491913
5202113
6426913
7728413
Stop Event
node limit
Counts
1 → 13
Calls
Call 1
Inputs
(*.f64 x (*.f64 y 3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 y 3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x y) (*.f64 x (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (+.f64 y y)) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 x 3/2)) (*.f64 y (*.f64 x 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 y 3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 y 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 x 6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x y) 12) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 24 (*.f64 x y)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 24 (*.f64 x y))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y)))) (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (*.f64 y 3))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (*.f64 y 3)) (*.f64 x (*.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (*.f64 y 3)) (*.f64 x (*.f64 y 3)))))))

simplify842.0ms (9%)

Algorithm
egg-herbie
Rules
4964×rational.json-simplify-35
3520×rational.json-simplify-49
1750×rational.json-simplify-2
860×rational.json-simplify-1
622×rational.json-simplify-53
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
046481
1104481
2210481
3507481
41382481
52399481
63056481
73425481
83637481
93845481
104014481
114171481
124174481
134328481
144351481
154412481
164455481
174634481
184807481
194969481
205120481
215269481
225418481
235567481
245716481
255865481
265865481
276014481
286163481
296312481
Stop Event
node limit
Counts
37 → 15
Calls
Call 1
Inputs
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(*.f64 3 (*.f64 y x))
(+.f64 (*.f64 x (*.f64 y 3)) 0)
(+.f64 0 (*.f64 x (*.f64 y 3)))
(+.f64 (*.f64 x y) (*.f64 x (+.f64 y y)))
(+.f64 (*.f64 x (+.f64 y y)) (*.f64 x y))
(+.f64 (*.f64 y (*.f64 x 3/2)) (*.f64 y (*.f64 x 3/2)))
(-.f64 (*.f64 x (*.f64 y 3)) 0)
(/.f64 (*.f64 x (*.f64 y 3)) 1)
(/.f64 (*.f64 y (*.f64 x 6)) 2)
(/.f64 (*.f64 (*.f64 x y) 12) 4)
(/.f64 (*.f64 24 (*.f64 x y)) 8)
(/.f64 (*.f64 2 (*.f64 24 (*.f64 x y))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y)))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y)))) (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y))))) 64)
Outputs
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 x (*.f64 y 3)) 0)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 0 (*.f64 x (*.f64 y 3)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 x y) (*.f64 x (+.f64 y y)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 x (+.f64 y y)) (*.f64 x y))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(+.f64 (*.f64 y (*.f64 x 3/2)) (*.f64 y (*.f64 x 3/2)))
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(-.f64 (*.f64 x (*.f64 y 3)) 0)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 x (*.f64 y 3)) 1)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 y (*.f64 x 6)) 2)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 (*.f64 x y) 12) 4)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 24 (*.f64 x y)) 8)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 2 (*.f64 24 (*.f64 x y))) 16)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y)))) 32)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y)))) (*.f64 2 (*.f64 2 (*.f64 24 (*.f64 x y))))) 64)
(*.f64 3 (*.f64 y x))
(*.f64 y (*.f64 3 x))

eval4.0ms (0%)

Compiler

Compiled 131 to 82 computations (37.4% saved)

prune5.0ms (0%)

Pruning

8 alts after pruning (0 fresh and 8 done)

PrunedKeptTotal
New15015
Fresh000
Picked011
Done077
Total15823
Error
0.0b
Counts
23 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
0.2b
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
0.3b
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
36.8b
(*.f64 (*.f64 3 x) y)
36.8b
(*.f64 x (*.f64 y 3))
36.8b
(*.f64 3 (*.f64 y x))
26.7b
(*.f64 3 (*.f64 y -4/29))
26.6b
(*.f64 -12/29 y)
Compiler

Compiled 62 to 47 computations (24.2% saved)

regimes84.0ms (0.9%)

Counts
11 → 1
Calls
Call 1
Inputs
(*.f64 -12/29 y)
(*.f64 3 (*.f64 y -4/29))
(*.f64 3 (*.f64 y x))
(*.f64 x (*.f64 y 3))
(*.f64 (*.f64 3 x) y)
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (*.f64 (-.f64 x (/.f64 16 116)) 3) y)
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
Outputs
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
Calls

5 calls:

58.0ms
(-.f64 x (/.f64 16 116))
7.0ms
(*.f64 (*.f64 (-.f64 x (/.f64 16 116)) 3) y)
7.0ms
x
6.0ms
y
4.0ms
(*.f64 (-.f64 x (/.f64 16 116)) 3)
Results
ErrorSegmentsBranch
0.2b1x
0.2b1y
0.2b1(*.f64 (*.f64 (-.f64 x (/.f64 16 116)) 3) y)
0.2b1(*.f64 (-.f64 x (/.f64 16 116)) 3)
0.2b1(-.f64 x (/.f64 16 116))
Compiler

Compiled 104 to 76 computations (26.9% saved)

regimes182.0ms (1.9%)

Counts
10 → 1
Calls
Call 1
Inputs
(*.f64 -12/29 y)
(*.f64 3 (*.f64 y -4/29))
(*.f64 3 (*.f64 y x))
(*.f64 x (*.f64 y 3))
(*.f64 (*.f64 3 x) y)
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (*.f64 (-.f64 x (/.f64 16 116)) 3) y)
Outputs
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
Calls

5 calls:

159.0ms
(*.f64 (-.f64 x (/.f64 16 116)) 3)
6.0ms
y
6.0ms
(*.f64 (*.f64 (-.f64 x (/.f64 16 116)) 3) y)
6.0ms
x
4.0ms
(-.f64 x (/.f64 16 116))
Results
ErrorSegmentsBranch
0.2b1x
0.2b1y
0.2b1(*.f64 (*.f64 (-.f64 x (/.f64 16 116)) 3) y)
0.2b1(*.f64 (-.f64 x (/.f64 16 116)) 3)
0.2b1(-.f64 x (/.f64 16 116))
Compiler

Compiled 95 to 71 computations (25.3% saved)

regimes13.0ms (0.1%)

Counts
8 → 1
Calls
Call 1
Inputs
(*.f64 -12/29 y)
(*.f64 3 (*.f64 y -4/29))
(*.f64 3 (*.f64 y x))
(*.f64 x (*.f64 y 3))
(*.f64 (*.f64 3 x) y)
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
(*.f64 (-.f64 x 4/29) (*.f64 3 y))
Outputs
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
Calls

2 calls:

7.0ms
y
5.0ms
x
Results
ErrorSegmentsBranch
0.2b1x
0.2b1y
Compiler

Compiled 52 to 36 computations (30.8% saved)

regimes12.0ms (0.1%)

Counts
6 → 1
Calls
Call 1
Inputs
(*.f64 -12/29 y)
(*.f64 3 (*.f64 y -4/29))
(*.f64 3 (*.f64 y x))
(*.f64 x (*.f64 y 3))
(*.f64 (*.f64 3 x) y)
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
Outputs
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
Calls

2 calls:

6.0ms
x
4.0ms
y
Results
ErrorSegmentsBranch
0.3b1x
0.3b1y
Compiler

Compiled 38 to 26 computations (31.6% saved)

regimes45.0ms (0.5%)

Counts
5 → 3
Calls
Call 1
Inputs
(*.f64 -12/29 y)
(*.f64 3 (*.f64 y -4/29))
(*.f64 3 (*.f64 y x))
(*.f64 x (*.f64 y 3))
(*.f64 (*.f64 3 x) y)
Outputs
(*.f64 x (*.f64 y 3))
(*.f64 -12/29 y)
(*.f64 x (*.f64 y 3))
Calls

2 calls:

32.0ms
y
12.0ms
x
Results
ErrorSegmentsBranch
1.9b3x
20.2b7y
Compiler

Compiled 31 to 21 computations (32.3% saved)

bsearch38.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
21.0ms
0.0016437129257599414
6.665369094012651e+20
17.0ms
-63945.90558391673
-0.007154197280916445
Results
34.0ms320×body256valid
Compiler

Compiled 296 to 233 computations (21.3% saved)

regimes103.0ms (1.1%)

Counts
3 → 3
Calls
Call 1
Inputs
(*.f64 -12/29 y)
(*.f64 3 (*.f64 y -4/29))
(*.f64 3 (*.f64 y x))
Outputs
(*.f64 3 (*.f64 y x))
(*.f64 -12/29 y)
(*.f64 3 (*.f64 y x))
Calls

2 calls:

78.0ms
x
25.0ms
y
Results
ErrorSegmentsBranch
1.9b3x
20.2b7y
Compiler

Compiled 21 to 15 computations (28.6% saved)

bsearch125.0ms (1.3%)

Algorithm
binary-search
Steps
TimeLeftRight
107.0ms
0.0016437129257599414
6.665369094012651e+20
18.0ms
-63945.90558391673
-0.007154197280916445
Results
121.0ms320×body256valid
Compiler

Compiled 296 to 233 computations (21.3% saved)

regimes8.0ms (0.1%)

Accuracy

Total -0.2b remaining (-0.6%)

Threshold costs -0.2b (-0.6%)

Counts
2 → 1
Calls
Call 1
Inputs
(*.f64 -12/29 y)
(*.f64 3 (*.f64 y -4/29))
Outputs
(*.f64 -12/29 y)
Calls

2 calls:

5.0ms
x
3.0ms
y
Results
ErrorSegmentsBranch
26.6b1x
26.6b1y
Compiler

Compiled 16 to 12 computations (25% saved)

simplify4.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
033191
Stop Event
done
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(if (<=.f64 x -1261007895663739/9007199254740992) (*.f64 x (*.f64 y 3)) (if (<=.f64 x 607985949695017/4503599627370496) (*.f64 -12/29 y) (*.f64 x (*.f64 y 3))))
(if (<=.f64 x -1261007895663739/9007199254740992) (*.f64 3 (*.f64 y x)) (if (<=.f64 x 607985949695017/4503599627370496) (*.f64 -12/29 y) (*.f64 3 (*.f64 y x))))
(*.f64 -12/29 y)
Outputs
(+.f64 (*.f64 3 (*.f64 y x)) (*.f64 -12/29 y))
(*.f64 (-.f64 (*.f64 3 x) 12/29) y)
(*.f64 (*.f64 (-.f64 x 4/29) 3) y)
(*.f64 3 (*.f64 y (-.f64 x 4/29)))
(if (<=.f64 x -1261007895663739/9007199254740992) (*.f64 x (*.f64 y 3)) (if (<=.f64 x 607985949695017/4503599627370496) (*.f64 -12/29 y) (*.f64 x (*.f64 y 3))))
(if (<=.f64 x -1261007895663739/9007199254740992) (*.f64 3 (*.f64 y x)) (if (<=.f64 x 607985949695017/4503599627370496) (*.f64 -12/29 y) (*.f64 3 (*.f64 y x))))
(*.f64 -12/29 y)
Compiler

Compiled 89 to 64 computations (28.1% saved)

soundness10.0ms (0.1%)

Algorithm
egg-herbie
Rules
12×rational.json-simplify-2
rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01219
11419
21819
32219
Stop Event
saturated
Compiler

Compiled 18 to 14 computations (22.2% saved)

end127.0ms (1.4%)

Compiler

Compiled 77 to 51 computations (33.8% saved)

Profiling

Loading profile data...