Details

Time bar (total: 6.4s)

analyze334.0ms (5.2%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
0%0%99.9%0.1%0%0%0%5
0%0%99.9%0.1%0%0%0%6
12.5%12.5%87.4%0.1%0%0%0%7
18.8%18.7%81.1%0.1%0%0%0%8
25.4%25%73.3%0.1%1.6%0%0%9
35.3%34.3%62.8%0.1%2.7%0%0%10
43.9%41.3%52.9%0.1%5.7%0%0%11
50.6%46.8%45.7%0.1%7.3%0%0%12
Compiler

Compiled 15 to 10 computations (33.3% saved)

sample1.8s (27.6%)

Results
1.4s7870×body256valid
249.0ms1425×body256infinite
41.0ms182×body1024valid
36.0ms204×body512valid
Bogosity

preprocess13.0ms (0.2%)

Algorithm
egg-herbie
Rules
66×rational.json-simplify-1
38×rational.json-simplify-2
36×rational.json-simplify-51
26×rational.json-simplify-41
swap-d2-d3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
023124
140100
26676
39776
411776
512276
033
133
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
1
Call 2
Inputs
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
(+.f64 (+.f64 (*.f64 d2 3) (*.f64 d2 d1)) (*.f64 d2 d3))
(+.f64 (+.f64 (*.f64 d3 3) (*.f64 d3 d2)) (*.f64 d3 d1))
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d3)) (*.f64 d1 d2))
Outputs
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
(+.f64 (*.f64 d1 d2) (*.f64 d1 (+.f64 d3 3)))
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (+.f64 (*.f64 d2 3) (*.f64 d2 d1)) (*.f64 d2 d3))
(+.f64 (+.f64 (*.f64 d1 d2) (*.f64 3 d2)) (*.f64 d2 d3))
(+.f64 (*.f64 d2 (+.f64 3 d1)) (*.f64 d2 d3))
(*.f64 d2 (+.f64 d3 (+.f64 d1 3)))
(*.f64 d2 (+.f64 3 (+.f64 d1 d3)))
(+.f64 (+.f64 (*.f64 d3 3) (*.f64 d3 d2)) (*.f64 d3 d1))
(+.f64 (*.f64 d1 d3) (+.f64 (*.f64 3 d3) (*.f64 d2 d3)))
(+.f64 (*.f64 d1 d3) (*.f64 d3 (+.f64 d2 3)))
(*.f64 d3 (+.f64 d1 (+.f64 3 d2)))
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d3)) (*.f64 d1 d2))
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
(+.f64 (*.f64 d1 d2) (*.f64 d1 (+.f64 d3 3)))
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
Symmetry

(sort d2 d3)

Compiler

Compiled 17 to 12 computations (29.4% saved)

simplify11.0ms (0.2%)

Algorithm
egg-herbie
Rules
24×rational.json-simplify-1
14×rational.json-simplify-2
10×rational.json-simplify-51
rational.json-simplify-41
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01131
11625
22419
33519
44319
54519
Stop Event
saturated
Counts
1 → 4
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
Outputs
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
(+.f64 (*.f64 d1 (+.f64 d2 3)) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))

eval1.0ms (0%)

Compiler

Compiled 37 to 21 computations (43.2% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New224
Fresh011
Picked000
Done000
Total235
Error
0.0b
Counts
5 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
0.1b
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
Compiler

Compiled 24 to 16 computations (33.3% saved)

localize10.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
Compiler

Compiled 22 to 13 computations (40.9% saved)

series3.0ms (0%)

Counts
1 → 36
Calls

9 calls:

TimeVariablePointExpression
1.0ms
d3
@inf
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
0.0ms
d1
@0
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
0.0ms
d1
@-inf
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
0.0ms
d1
@inf
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
0.0ms
d2
@inf
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))

rewrite81.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
1646×bool.json-1
1646×bool.json-2
1616×rational.json-1
1616×rational.json-2
1616×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0919
19119
224819
352919
4116119
5278319
6607019
Stop Event
node limit
Counts
1 → 10
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 d3 (+.f64 3 d2)) (*.f64 d1 1/2)) (*.f64 (+.f64 d3 (+.f64 3 d2)) (*.f64 d1 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (*.f64 (+.f64 d3 (+.f64 3 d2)) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (*.f64 (+.f64 d3 (+.f64 3 d2)) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 8)) (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 d1 (+.f64 d3 (+.f64 3 d2)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) (*.f64 d1 (+.f64 d3 (+.f64 3 d2))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) (*.f64 d1 (+.f64 d3 (+.f64 3 d2))))))))

simplify423.0ms (6.6%)

Algorithm
egg-herbie
Rules
3384×rational.json-simplify-41
2416×rational.json-simplify-2
2240×rational.json-simplify-35
1134×rational.json-simplify-53
660×rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
049814
1108814
2208814
3555814
42122814
53152814
63671814
73767814
83849814
93931814
104011814
114440814
124669814
134983814
145162814
155241814
165320814
175320814
187750814
197841814
207928814
Stop Event
node limit
Counts
46 → 20
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 (+.f64 d2 3) d1)
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(*.f64 d2 d1)
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(*.f64 d2 d1)
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(+.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 0)
(+.f64 0 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))))
(+.f64 (*.f64 (+.f64 d3 (+.f64 3 d2)) (*.f64 d1 1/2)) (*.f64 (+.f64 d3 (+.f64 3 d2)) (*.f64 d1 1/2)))
(-.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 0)
(/.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 1)
(/.f64 (*.f64 d1 (*.f64 (+.f64 d3 (+.f64 3 d2)) 2)) 2)
(/.f64 (*.f64 d1 (*.f64 (+.f64 d3 (+.f64 3 d2)) 4)) 4)
(/.f64 (*.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 8)) (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 8))) 32)
Outputs
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 (+.f64 d2 3) d1)
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 d3)
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 d3)
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 (+.f64 d2 3) d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 d3))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 d1 (+.f64 3 d3)) (*.f64 d2 d1))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 0)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 0 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 (+.f64 d3 (+.f64 3 d2)) (*.f64 d1 1/2)) (*.f64 (+.f64 d3 (+.f64 3 d2)) (*.f64 d1 1/2)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(-.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 0)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(/.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 1)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(/.f64 (*.f64 d1 (*.f64 (+.f64 d3 (+.f64 3 d2)) 2)) 2)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(/.f64 (*.f64 d1 (*.f64 (+.f64 d3 (+.f64 3 d2)) 4)) 4)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(/.f64 (*.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 8) 8)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 8)) 16)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 8)) (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 (+.f64 3 d2))) 8))) 32)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))

localize13.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
0.0b
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
Compiler

Compiled 34 to 15 computations (55.9% saved)

series4.0ms (0.1%)

Counts
2 → 60
Calls

15 calls:

TimeVariablePointExpression
1.0ms
d1
@0
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
1.0ms
d1
@inf
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
0.0ms
d1
@-inf
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
0.0ms
d2
@0
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
0.0ms
d3
@0
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))

rewrite95.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
1808×bool.json-1
1808×bool.json-2
1102×bool.json-3
1094×rational.json-1
1094×rational.json-2
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01150
110938
228032
361932
4138932
5343732
6707832
Stop Event
node limit
Counts
2 → 48
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 d1 (+.f64 3 (+.f64 d2 d3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (*.f64 2 (+.f64 3 (+.f64 d2 d3)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (*.f64 (+.f64 3 (+.f64 d2 d3)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 3 (+.f64 d2 d3)) d1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 3 (+.f64 d2 d3))) (*.f64 d1 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 3 (+.f64 d2 d3)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 3 (+.f64 d2 d3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 3 (+.f64 d2 d3)) 1/2) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (*.f64 2 (+.f64 3 (+.f64 d2 d3)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 d1 (+.f64 3 (+.f64 d2 d3)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) (*.f64 d1 (+.f64 3 (+.f64 d2 d3))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) (*.f64 d1 (+.f64 3 (+.f64 d2 d3))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 d1 (+.f64 3 d2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 d1 (+.f64 3 d2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (+.f64 3 d2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 d1 (+.f64 3 d2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 d1 (/.f64 (+.f64 3 d2) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (*.f64 2 (+.f64 3 d2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (*.f64 (+.f64 3 d2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (/.f64 (+.f64 3 d2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 3 d2) d1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 d1 (+.f64 3 d2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 3 d2) (*.f64 d1 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 3 d2)) (*.f64 d1 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 3 d2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (/.f64 (+.f64 3 d2) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 3 d2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 3 d2) 1/2) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 3 d2) (*.f64 d1 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 3 d2) 2) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 d1 (+.f64 3 d2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (+.f64 3 d2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (*.f64 2 (+.f64 3 d2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 3 d2) (*.f64 d1 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 3 d2) (*.f64 d1 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 3 d2) (*.f64 d1 4)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 3 d2) (*.f64 d1 4)))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 3 d2) (*.f64 d1 4))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 d1 (+.f64 3 d2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 d1 (+.f64 3 d2)) (*.f64 d1 (+.f64 3 d2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 d1 (+.f64 3 d2)) (*.f64 d1 (+.f64 3 d2)))))))

simplify400.0ms (6.2%)

Algorithm
egg-herbie
Rules
3990×rational.json-simplify-41
2538×rational.json-simplify-2
2044×rational.json-simplify-35
1048×rational.json-simplify-53
850×rational.json-simplify-51
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
01102064
12351752
25601752
316351728
432161696
539481680
643231680
744671680
846091680
947371680
1048521680
1152371680
1254621680
1357711680
1458861680
1559791680
1659961680
1759971680
1859971680
Stop Event
node limit
Counts
108 → 75
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 -1 (*.f64 d1 (-.f64 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2)) 3)))
(*.f64 -1 (*.f64 d1 (-.f64 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2)) 3)))
(*.f64 -1 (*.f64 d1 (-.f64 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2)) 3)))
(*.f64 -1 (*.f64 d1 (-.f64 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2)) 3)))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d2 d1)
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d2 d1)
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 d3)
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 d3)
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (+.f64 d2 3) d1)
(*.f64 (+.f64 d2 3) d1)
(*.f64 (+.f64 d2 3) d1)
(*.f64 (+.f64 d2 3) d1)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 3) d1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 3) d1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 3) d1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 3) d1))
(*.f64 3 d1)
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(*.f64 d2 d1)
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(*.f64 d2 d1)
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(-.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 0)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 1)
(*.f64 1 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))))
(*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 1/2))
(*.f64 (*.f64 d1 (*.f64 2 (+.f64 3 (+.f64 d2 d3)))) 1/2)
(*.f64 (+.f64 d1 d1) (*.f64 (+.f64 3 (+.f64 d2 d3)) 1/2))
(*.f64 4 (/.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4))
(*.f64 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4) 1/4)
(*.f64 (+.f64 3 (+.f64 d2 d3)) d1)
(*.f64 (*.f64 2 (+.f64 3 (+.f64 d2 d3))) (*.f64 d1 1/2))
(*.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 3 (+.f64 d2 d3)))))
(*.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 3 (+.f64 d2 d3))))
(*.f64 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 1/2) 2)
(*.f64 (*.f64 (+.f64 3 (+.f64 d2 d3)) 1/2) (+.f64 d1 d1))
(*.f64 1/4 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4))
(*.f64 (/.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4) 4)
(/.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 1)
(/.f64 (*.f64 d1 (*.f64 2 (+.f64 3 (+.f64 d2 d3)))) 2)
(/.f64 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4) 4)
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4)))) 32)
(-.f64 (*.f64 d1 (+.f64 3 d2)) 0)
(*.f64 d1 (+.f64 3 d2))
(*.f64 (*.f64 d1 (+.f64 3 d2)) 1)
(*.f64 1 (*.f64 d1 (+.f64 3 d2)))
(*.f64 2 (*.f64 d1 (/.f64 (+.f64 3 d2) 2)))
(*.f64 (*.f64 d1 (*.f64 2 (+.f64 3 d2))) 1/2)
(*.f64 (+.f64 d1 d1) (*.f64 (+.f64 3 d2) 1/2))
(*.f64 (+.f64 d1 d1) (/.f64 (+.f64 3 d2) 2))
(*.f64 (+.f64 3 d2) d1)
(*.f64 4 (/.f64 (*.f64 d1 (+.f64 3 d2)) 4))
(*.f64 (*.f64 (+.f64 3 d2) (*.f64 d1 4)) 1/4)
(*.f64 (*.f64 2 (+.f64 3 d2)) (*.f64 d1 1/2))
(*.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 3 d2))))
(*.f64 (*.f64 d1 (/.f64 (+.f64 3 d2) 2)) 2)
(*.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 3 d2)))
(*.f64 (*.f64 (+.f64 3 d2) 1/2) (+.f64 d1 d1))
(*.f64 1/4 (*.f64 (+.f64 3 d2) (*.f64 d1 4)))
(*.f64 (/.f64 (+.f64 3 d2) 2) (+.f64 d1 d1))
(*.f64 (/.f64 (*.f64 d1 (+.f64 3 d2)) 4) 4)
(/.f64 (*.f64 d1 (+.f64 3 d2)) 1)
(/.f64 (*.f64 d1 (*.f64 2 (+.f64 3 d2))) 2)
(/.f64 (*.f64 (+.f64 3 d2) (*.f64 d1 4)) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 3 d2) (*.f64 d1 4))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 3 d2) (*.f64 d1 4)))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 3 d2) (*.f64 d1 4)))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 3 d2) (*.f64 d1 4))))) 32)
Outputs
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 d2 (+.f64 3 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 -1 (*.f64 d1 (-.f64 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2)) 3)))
(*.f64 d1 (*.f64 (+.f64 (*.f64 d2 -1) (-.f64 (*.f64 d3 -1) 3)) -1))
(*.f64 (-.f64 (*.f64 -1 (+.f64 d2 d3)) 3) (neg.f64 d1))
(*.f64 d1 (neg.f64 (-.f64 (*.f64 (+.f64 d2 d3) -1) 3)))
(*.f64 (+.f64 (neg.f64 d2) (-.f64 -3 d3)) (neg.f64 d1))
(*.f64 d1 (-.f64 3 (neg.f64 (+.f64 d2 d3))))
(*.f64 d1 (-.f64 (+.f64 d2 d3) -3))
(*.f64 d1 (+.f64 d3 (-.f64 d2 -3)))
(*.f64 d1 (+.f64 d2 (-.f64 d3 -3)))
(*.f64 -1 (*.f64 d1 (-.f64 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2)) 3)))
(*.f64 d1 (*.f64 (+.f64 (*.f64 d2 -1) (-.f64 (*.f64 d3 -1) 3)) -1))
(*.f64 (-.f64 (*.f64 -1 (+.f64 d2 d3)) 3) (neg.f64 d1))
(*.f64 d1 (neg.f64 (-.f64 (*.f64 (+.f64 d2 d3) -1) 3)))
(*.f64 (+.f64 (neg.f64 d2) (-.f64 -3 d3)) (neg.f64 d1))
(*.f64 d1 (-.f64 3 (neg.f64 (+.f64 d2 d3))))
(*.f64 d1 (-.f64 (+.f64 d2 d3) -3))
(*.f64 d1 (+.f64 d3 (-.f64 d2 -3)))
(*.f64 d1 (+.f64 d2 (-.f64 d3 -3)))
(*.f64 -1 (*.f64 d1 (-.f64 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2)) 3)))
(*.f64 d1 (*.f64 (+.f64 (*.f64 d2 -1) (-.f64 (*.f64 d3 -1) 3)) -1))
(*.f64 (-.f64 (*.f64 -1 (+.f64 d2 d3)) 3) (neg.f64 d1))
(*.f64 d1 (neg.f64 (-.f64 (*.f64 (+.f64 d2 d3) -1) 3)))
(*.f64 (+.f64 (neg.f64 d2) (-.f64 -3 d3)) (neg.f64 d1))
(*.f64 d1 (-.f64 3 (neg.f64 (+.f64 d2 d3))))
(*.f64 d1 (-.f64 (+.f64 d2 d3) -3))
(*.f64 d1 (+.f64 d3 (-.f64 d2 -3)))
(*.f64 d1 (+.f64 d2 (-.f64 d3 -3)))
(*.f64 -1 (*.f64 d1 (-.f64 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2)) 3)))
(*.f64 d1 (*.f64 (+.f64 (*.f64 d2 -1) (-.f64 (*.f64 d3 -1) 3)) -1))
(*.f64 (-.f64 (*.f64 -1 (+.f64 d2 d3)) 3) (neg.f64 d1))
(*.f64 d1 (neg.f64 (-.f64 (*.f64 (+.f64 d2 d3) -1) 3)))
(*.f64 (+.f64 (neg.f64 d2) (-.f64 -3 d3)) (neg.f64 d1))
(*.f64 d1 (-.f64 3 (neg.f64 (+.f64 d2 d3))))
(*.f64 d1 (-.f64 (+.f64 d2 d3) -3))
(*.f64 d1 (+.f64 d3 (-.f64 d2 -3)))
(*.f64 d1 (+.f64 d2 (-.f64 d3 -3)))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d1 3) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 d3)
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 d3)
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(+.f64 (*.f64 3 d1) (+.f64 (*.f64 d2 d1) (*.f64 d1 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 (+.f64 d2 3) d1)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (+.f64 d2 3) d1)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (+.f64 d2 3) d1)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (+.f64 d2 3) d1)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 3) d1))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 d2 -1) 3)))
(*.f64 (-.f64 (neg.f64 d2) 3) (neg.f64 d1))
(*.f64 (-.f64 -3 d2) (neg.f64 d1))
(*.f64 d1 (-.f64 d2 -3))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 3) d1))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 d2 -1) 3)))
(*.f64 (-.f64 (neg.f64 d2) 3) (neg.f64 d1))
(*.f64 (-.f64 -3 d2) (neg.f64 d1))
(*.f64 d1 (-.f64 d2 -3))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 3) d1))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 d2 -1) 3)))
(*.f64 (-.f64 (neg.f64 d2) 3) (neg.f64 d1))
(*.f64 (-.f64 -3 d2) (neg.f64 d1))
(*.f64 d1 (-.f64 d2 -3))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 d2) 3) d1))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 d2 -1) 3)))
(*.f64 (-.f64 (neg.f64 d2) 3) (neg.f64 d1))
(*.f64 (-.f64 -3 d2) (neg.f64 d1))
(*.f64 d1 (-.f64 d2 -3))
(*.f64 3 d1)
(*.f64 d1 3)
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(-.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 0)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 1)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 1 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 1/2))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 (*.f64 d1 (*.f64 2 (+.f64 3 (+.f64 d2 d3)))) 1/2)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 (+.f64 d1 d1) (*.f64 (+.f64 3 (+.f64 d2 d3)) 1/2))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 4 (/.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4) 1/4)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 (+.f64 3 (+.f64 d2 d3)) d1)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 (*.f64 2 (+.f64 3 (+.f64 d2 d3))) (*.f64 d1 1/2))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 3 (+.f64 d2 d3)))))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 3 (+.f64 d2 d3))))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 1/2) 2)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 (*.f64 (+.f64 3 (+.f64 d2 d3)) 1/2) (+.f64 d1 d1))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 1/4 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4))
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(*.f64 (/.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4) 4)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(/.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 1)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(/.f64 (*.f64 d1 (*.f64 2 (+.f64 3 (+.f64 d2 d3)))) 2)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(/.f64 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4) 4)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4)) 8)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4))) 16)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 (+.f64 d2 d3))) 4)))) 32)
(*.f64 d1 (+.f64 3 (+.f64 d2 d3)))
(-.f64 (*.f64 d1 (+.f64 3 d2)) 0)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 (*.f64 d1 (+.f64 3 d2)) 1)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 1 (*.f64 d1 (+.f64 3 d2)))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 2 (*.f64 d1 (/.f64 (+.f64 3 d2) 2)))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (*.f64 d1 (*.f64 2 (+.f64 3 d2))) 1/2)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (+.f64 d1 d1) (*.f64 (+.f64 3 d2) 1/2))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (+.f64 d1 d1) (/.f64 (+.f64 3 d2) 2))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (+.f64 3 d2) d1)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 4 (/.f64 (*.f64 d1 (+.f64 3 d2)) 4))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (*.f64 (+.f64 3 d2) (*.f64 d1 4)) 1/4)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (*.f64 2 (+.f64 3 d2)) (*.f64 d1 1/2))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 3 d2))))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (*.f64 d1 (/.f64 (+.f64 3 d2) 2)) 2)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 3 d2)))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (*.f64 (+.f64 3 d2) 1/2) (+.f64 d1 d1))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 1/4 (*.f64 (+.f64 3 d2) (*.f64 d1 4)))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (/.f64 (+.f64 3 d2) 2) (+.f64 d1 d1))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 (/.f64 (*.f64 d1 (+.f64 3 d2)) 4) 4)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(/.f64 (*.f64 d1 (+.f64 3 d2)) 1)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(/.f64 (*.f64 d1 (*.f64 2 (+.f64 3 d2))) 2)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(/.f64 (*.f64 (+.f64 3 d2) (*.f64 d1 4)) 4)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(/.f64 (*.f64 2 (*.f64 (+.f64 3 d2) (*.f64 d1 4))) 8)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 3 d2) (*.f64 d1 4)))) 16)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 3 d2) (*.f64 d1 4)))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 3 d2) (*.f64 d1 4))))) 32)
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))

eval18.0ms (0.3%)

Compiler

Compiled 996 to 591 computations (40.7% saved)

prune17.0ms (0.3%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New90595
Fresh000
Picked101
Done011
Total91697
Error
0.0b
Counts
97 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
21.0b
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
21.0b
(*.f64 (+.f64 d2 3) d1)
41.7b
(*.f64 d2 d1)
0.1b
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
21.3b
(*.f64 d1 (+.f64 3 d3))
41.3b
(*.f64 d1 d3)
Compiler

Compiled 86 to 61 computations (29.1% saved)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
Compiler

Compiled 19 to 10 computations (47.4% saved)

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 d1 (+.f64 3 d3))
Compiler

Compiled 14 to 9 computations (35.7% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

6 calls:

TimeVariablePointExpression
1.0ms
d3
@0
(*.f64 d1 (+.f64 3 d3))
0.0ms
d1
@0
(*.f64 d1 (+.f64 3 d3))
0.0ms
d1
@inf
(*.f64 d1 (+.f64 3 d3))
0.0ms
d1
@-inf
(*.f64 d1 (+.f64 3 d3))
0.0ms
d3
@-inf
(*.f64 d1 (+.f64 3 d3))

rewrite92.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
1596×bool.json-1
1596×bool.json-2
1560×rational.json-1
1560×rational.json-2
1560×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17013
219313
340113
482113
5178013
6385413
7637613
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 3 d3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 d1 (+.f64 3 d3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 d1 (+.f64 3 d3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 d1 (*.f64 (+.f64 3 d3) 1/2)) (*.f64 d1 (*.f64 (+.f64 3 d3) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 d1 (+.f64 3 d3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (+.f64 3 d3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (+.f64 d3 (+.f64 d3 6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (*.f64 (+.f64 3 d3) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 d1 (+.f64 3 d3))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 d1 (+.f64 3 d3)) (*.f64 d1 (+.f64 3 d3)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 d1 (+.f64 3 d3)) (*.f64 d1 (+.f64 3 d3)))))))

simplify1.3s (20.3%)

Algorithm
egg-herbie
Rules
5840×rational.json-simplify-35
2014×rational.json-simplify-2
1048×rational.json-simplify-1
814×rational.json-simplify-53
750×rational.json-simplify-41
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
042401
197281
2191281
3425281
41823281
53552281
64431281
74753281
84943281
95091281
105237281
115523281
125524281
135524281
145543281
155719281
165883281
176053281
186216281
196360281
206504281
216648281
226792281
236936281
246936281
257080281
267224281
277368281
287512281
297656281
307800281
317944281
Stop Event
node limit
Counts
23 → 15
Calls
Call 1
Inputs
(*.f64 3 d1)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d1 (+.f64 3 d3)) 0)
(+.f64 0 (*.f64 d1 (+.f64 3 d3)))
(+.f64 (*.f64 d1 (*.f64 (+.f64 3 d3) 1/2)) (*.f64 d1 (*.f64 (+.f64 3 d3) 1/2)))
(-.f64 (*.f64 d1 (+.f64 3 d3)) 0)
(/.f64 (*.f64 d1 (+.f64 3 d3)) 1)
(/.f64 (*.f64 d1 (+.f64 d3 (+.f64 d3 6))) 2)
(/.f64 (*.f64 d1 (*.f64 (+.f64 3 d3) 4)) 4)
(/.f64 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8)))) 64)
Outputs
(*.f64 3 d1)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(+.f64 (*.f64 d1 (+.f64 3 d3)) 0)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(+.f64 0 (*.f64 d1 (+.f64 3 d3)))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(+.f64 (*.f64 d1 (*.f64 (+.f64 3 d3) 1/2)) (*.f64 d1 (*.f64 (+.f64 3 d3) 1/2)))
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(-.f64 (*.f64 d1 (+.f64 3 d3)) 0)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(/.f64 (*.f64 d1 (+.f64 3 d3)) 1)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(/.f64 (*.f64 d1 (+.f64 d3 (+.f64 d3 6))) 2)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(/.f64 (*.f64 d1 (*.f64 (+.f64 3 d3) 4)) 4)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(/.f64 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8) 8)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8)) 16)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8))) 32)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 3 d3)) 8)))) 64)
(+.f64 (*.f64 3 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 3 d3))

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (+.f64 d2 3) d1)
Compiler

Compiled 14 to 9 computations (35.7% saved)

series3.0ms (0.1%)

Counts
1 → 20
Calls

6 calls:

TimeVariablePointExpression
2.0ms
d2
@-inf
(*.f64 (+.f64 d2 3) d1)
0.0ms
d1
@0
(*.f64 (+.f64 d2 3) d1)
0.0ms
d1
@inf
(*.f64 (+.f64 d2 3) d1)
0.0ms
d1
@-inf
(*.f64 (+.f64 d2 3) d1)
0.0ms
d2
@0
(*.f64 (+.f64 d2 3) d1)

rewrite92.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
1596×bool.json-1
1596×bool.json-2
1560×rational.json-1
1560×rational.json-2
1560×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17013
219313
340113
482113
5178013
6385613
7637813
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (+.f64 d2 3) d1)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 d2 3) d1) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 d2 3) d1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 d2 3) (*.f64 d1 1/2)) (*.f64 (+.f64 d2 3) (*.f64 d1 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 d2 3) d1) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 d2 3) d1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 d2 3) (+.f64 d1 d1)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 d2 3) (*.f64 d1 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (+.f64 d2 3) d1) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 3) d1) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 3) d1) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 3) d1) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 3) d1) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 d2 3) d1)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 d2 3) d1) (*.f64 (+.f64 d2 3) d1))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 d2 3) d1) (*.f64 (+.f64 d2 3) d1))))))

simplify1.3s (19.6%)

Algorithm
egg-herbie
Rules
5140×rational.json-simplify-35
2504×rational.json-simplify-2
1112×rational.json-simplify-53
1004×rational.json-simplify-1
782×rational.json-simplify-43
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
042553
194385
2185385
3450385
41907385
53683385
64560385
74898385
85048385
95194385
105338385
115672385
125675385
135747385
145888385
155916385
166104385
176261385
186405385
196549385
206693385
216837385
226981385
237125385
247269385
257370385
267370385
277514385
287658385
297802385
307946385
Stop Event
node limit
Counts
31 → 17
Calls
Call 1
Inputs
(*.f64 3 d1)
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(*.f64 d2 d1)
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(*.f64 d2 d1)
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 (+.f64 d2 3) d1) 0)
(+.f64 0 (*.f64 (+.f64 d2 3) d1))
(+.f64 (*.f64 (+.f64 d2 3) (*.f64 d1 1/2)) (*.f64 (+.f64 d2 3) (*.f64 d1 1/2)))
(-.f64 (*.f64 (+.f64 d2 3) d1) 0)
(/.f64 (*.f64 (+.f64 d2 3) d1) 1)
(/.f64 (*.f64 (+.f64 d2 3) (+.f64 d1 d1)) 2)
(/.f64 (*.f64 (+.f64 d2 3) (*.f64 d1 4)) 4)
(/.f64 (*.f64 (*.f64 (+.f64 d2 3) d1) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 3) d1) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 3) d1) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 3) d1) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 3) d1) 8)))) 64)
Outputs
(*.f64 3 d1)
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d2 d1))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(+.f64 (*.f64 (+.f64 d2 3) d1) 0)
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 0 (*.f64 (+.f64 d2 3) d1))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(+.f64 (*.f64 (+.f64 d2 3) (*.f64 d1 1/2)) (*.f64 (+.f64 d2 3) (*.f64 d1 1/2)))
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(-.f64 (*.f64 (+.f64 d2 3) d1) 0)
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(/.f64 (*.f64 (+.f64 d2 3) d1) 1)
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(/.f64 (*.f64 (+.f64 d2 3) (+.f64 d1 d1)) 2)
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(/.f64 (*.f64 (+.f64 d2 3) (*.f64 d1 4)) 4)
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(/.f64 (*.f64 (*.f64 (+.f64 d2 3) d1) 8) 8)
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(/.f64 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 3) d1) 8)) 16)
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 3) d1) 8))) 32)
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 3) d1) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (+.f64 d2 3) d1) 8)))) 64)
(+.f64 (*.f64 3 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 3 d2))

eval11.0ms (0.2%)

Compiler

Compiled 560 to 409 computations (27% saved)

prune13.0ms (0.2%)

Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New63164
Fresh000
Picked011
Done055
Total63770
Error
0.0b
Counts
70 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
21.0b
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
21.0b
(*.f64 (+.f64 d2 3) d1)
41.7b
(*.f64 d2 d1)
0.1b
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
21.3b
(*.f64 d1 (+.f64 3 d3))
41.3b
(*.f64 d1 d3)
42.1b
(*.f64 d1 3)
Compiler

Compiled 54 to 39 computations (27.8% saved)

localize3.0ms (0%)

Compiler

Compiled 8 to 6 computations (25% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune2.0ms (0%)

Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done066
Total077
Error
0.0b
Counts
7 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
21.0b
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
21.0b
(*.f64 (+.f64 d2 3) d1)
41.7b
(*.f64 d2 d1)
0.1b
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
21.3b
(*.f64 d1 (+.f64 3 d3))
41.3b
(*.f64 d1 d3)
42.1b
(*.f64 d1 3)
Compiler

Compiled 54 to 39 computations (27.8% saved)

regimes23.0ms (0.4%)

Counts
8 → 1
Calls
Call 1
Inputs
(*.f64 d1 3)
(*.f64 d1 d3)
(*.f64 d2 d1)
(*.f64 d1 (+.f64 3 d3))
(*.f64 (+.f64 d2 3) d1)
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
(+.f64 (*.f64 d1 3) (*.f64 d1 d2))
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
Outputs
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
Calls

4 calls:

6.0ms
d3
5.0ms
(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
5.0ms
d1
5.0ms
d2
Results
ErrorSegmentsBranch
0.1b1d1
0.1b1d2
0.1b1d3
0.1b1(+.f64 (+.f64 (*.f64 d1 3) (*.f64 d1 d2)) (*.f64 d1 d3))
Compiler

Compiled 73 to 43 computations (41.1% saved)

regimes49.0ms (0.8%)

Counts
5 → 2
Calls
Call 1
Inputs
(*.f64 d1 3)
(*.f64 d1 d3)
(*.f64 d2 d1)
(*.f64 d1 (+.f64 3 d3))
(*.f64 (+.f64 d2 3) d1)
Outputs
(*.f64 (+.f64 d2 3) d1)
(*.f64 d1 (+.f64 3 d3))
Calls

3 calls:

31.0ms
d1
8.0ms
d2
8.0ms
d3
Results
ErrorSegmentsBranch
14.4b8d1
2.7b2d2
2.4b2d3
Compiler

Compiled 34 to 22 computations (35.3% saved)

bsearch14.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
14.0ms
7.236293354660942e-24
7.943537560063715e-22
Results
13.0ms112×body256valid
Compiler

Compiled 146 to 112 computations (23.3% saved)

regimes45.0ms (0.7%)

Counts
4 → 2
Calls
Call 1
Inputs
(*.f64 d1 3)
(*.f64 d1 d3)
(*.f64 d2 d1)
(*.f64 d1 (+.f64 3 d3))
Outputs
(*.f64 d2 d1)
(*.f64 d1 (+.f64 3 d3))
Calls

3 calls:

26.0ms
d1
10.0ms
d3
7.0ms
d2
Results
ErrorSegmentsBranch
17.7b7d1
3.3b2d2
14.5b2d3
Compiler

Compiled 29 to 19 computations (34.5% saved)

bsearch5.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
5.0ms
-1.3906890187417783e+26
-1.1122473733707358e+26
Results
4.0ms48×body256valid
Compiler

Compiled 68 to 50 computations (26.5% saved)

regimes69.0ms (1.1%)

Counts
3 → 3
Calls
Call 1
Inputs
(*.f64 d1 3)
(*.f64 d1 d3)
(*.f64 d2 d1)
Outputs
(*.f64 d2 d1)
(*.f64 d1 3)
(*.f64 d1 d3)
Calls

3 calls:

44.0ms
d1
14.0ms
d2
10.0ms
d3
Results
ErrorSegmentsBranch
27.9b14d1
14.0b3d2
15.5b3d3
Compiler

Compiled 24 to 16 computations (33.3% saved)

bsearch34.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
19.0ms
-3.222044119485455e-303
1.9904311642315373e-302
15.0ms
-11796732.096846698
-0.685066820742001
Results
28.0ms294×body256valid
2.0msbody1024valid
0.0msbody512valid
Compiler

Compiled 286 to 223 computations (22% saved)

regimes39.0ms (0.6%)

Accuracy

Total -38.7b remaining (-172.4%)

Threshold costs -38.7b (-172.4%)

Counts
2 → 2
Calls
Call 1
Inputs
(*.f64 d1 3)
(*.f64 d1 d3)
Outputs
(*.f64 d1 3)
(*.f64 d1 d3)
Calls

3 calls:

22.0ms
d1
10.0ms
d2
6.0ms
d3
Results
ErrorSegmentsBranch
33.7b7d1
31.8b3d2
22.5b2d3
Compiler

Compiled 21 to 15 computations (28.6% saved)

bsearch17.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
17.0ms
6.547568862349002e-5
603039.7030815742
Results
16.0ms160×body256valid
Compiler

Compiled 160 to 124 computations (22.5% saved)

simplify4.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
033152
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
(if (<=.f64 d3 8294382693697875/10633823966279326983230456482242756608) (*.f64 (+.f64 d2 3) d1) (*.f64 d1 (+.f64 3 d3)))
(if (<=.f64 d2 -112000000000000006710886400) (*.f64 d2 d1) (*.f64 d1 (+.f64 3 d3)))
(if (<=.f64 d2 -3) (*.f64 d2 d1) (if (<=.f64 d2 5404723255734155/1544206644495472857303583883048380333324864576447617480139933456630175320190394187102969236003396030389305708803686614314192266367994640173851115417028339461681498903477221384921775113999124270181577817371160469578262386195561925496048762173836971712805252506350393444460551564142078418977251644200485277277433072975872) (*.f64 d1 3) (*.f64 d1 d3)))
(if (<=.f64 d3 3) (*.f64 d1 3) (*.f64 d1 d3))
(*.f64 d1 3)
Outputs
(*.f64 d1 (+.f64 d3 (+.f64 3 d2)))
(if (<=.f64 d3 8294382693697875/10633823966279326983230456482242756608) (*.f64 (+.f64 d2 3) d1) (*.f64 d1 (+.f64 3 d3)))
(if (<=.f64 d2 -112000000000000006710886400) (*.f64 d2 d1) (*.f64 d1 (+.f64 3 d3)))
(if (<=.f64 d2 -3) (*.f64 d2 d1) (if (<=.f64 d2 5404723255734155/1544206644495472857303583883048380333324864576447617480139933456630175320190394187102969236003396030389305708803686614314192266367994640173851115417028339461681498903477221384921775113999124270181577817371160469578262386195561925496048762173836971712805252506350393444460551564142078418977251644200485277277433072975872) (*.f64 d1 3) (*.f64 d1 d3)))
(if (<=.f64 d3 3) (*.f64 d1 3) (*.f64 d1 d3))
(*.f64 d1 3)
Compiler

Compiled 81 to 56 computations (30.9% saved)

soundness9.0ms (0.1%)

Algorithm
egg-herbie
Rules
24×rational.json-simplify-1
14×rational.json-simplify-2
10×rational.json-simplify-51
rational.json-simplify-41
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01131
11625
22419
33519
44319
54519
Stop Event
saturated
Compiler

Compiled 61 to 30 computations (50.8% saved)

end109.0ms (1.7%)

Remove

(sort d2 d3)

Compiler

Compiled 86 to 53 computations (38.4% saved)

Profiling

Loading profile data...