Details

Time bar (total: 5.9s)

analyze2.5s (42.1%)

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.8%25%71.8%0.1%3.1%0%0%9
36.4%34.3%60.1%0.1%5.5%0%0%10
44.5%41.3%51.5%0.1%7%0%0%11
51.5%46.8%44.1%0.1%9%0%0%12
Compiler

Compiled 11 to 7 computations (36.4% saved)

sample1.3s (21.8%)

Results
1.2s8256×body256valid
111.0ms1249×body256infinite
Bogosity

preprocess4.0ms (0.1%)

Algorithm
egg-herbie
Rules
12×rational.json-simplify-51
12×rational.json-simplify-2
12×rational.json-simplify-1
swap-d2-d3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01576
12152
23352
33652
033
133
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
1
Call 2
Inputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d2 d3))
(+.f64 (*.f64 d3 d2) (*.f64 d3 d1))
(+.f64 (*.f64 d1 d3) (*.f64 d1 d2))
Outputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
(+.f64 (*.f64 d1 d3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d2 d3))
(+.f64 (*.f64 d1 d2) (*.f64 d2 d3))
(*.f64 d2 (+.f64 d3 d1))
(*.f64 d2 (+.f64 d1 d3))
(+.f64 (*.f64 d3 d2) (*.f64 d3 d1))
(+.f64 (*.f64 d1 d3) (*.f64 d2 d3))
(*.f64 d3 (+.f64 d2 d1))
(*.f64 d3 (+.f64 d1 d2))
(+.f64 (*.f64 d1 d3) (*.f64 d1 d2))
(*.f64 d1 (+.f64 d2 d3))
Symmetry

(sort d2 d3)

Compiler

Compiled 13 to 9 computations (30.8% saved)

simplify9.0ms (0.2%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
0819
11113
21513
31613
Stop Event
saturated
Counts
1 → 3
Calls
Call 1
Inputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
Outputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d3 d2))
(*.f64 d1 (+.f64 d2 d3))

eval1.0ms (0%)

Compiler

Compiled 20 to 10 computations (50% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New123
Fresh011
Picked000
Done000
Total134
Error
0.0b
Counts
4 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
0.0b
(*.f64 d1 (+.f64 d3 d2))
Compiler

Compiled 18 to 11 computations (38.9% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series3.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite94.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
1638×bool.json-1
1638×bool.json-2
1606×rational.json-1
1606×rational.json-2
1606×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17013
219613
341713
486113
5188513
6389913
7640113
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 d3 d2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 d1 (+.f64 d3 d2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 d1 (+.f64 d3 d2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 d3 d2) (*.f64 d1 1/2)) (*.f64 (+.f64 d3 d2) (*.f64 d1 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 d1 (+.f64 d3 d2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (+.f64 d3 d2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 d3 d2) (+.f64 d1 d1)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (*.f64 (+.f64 d3 d2) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 d1 (+.f64 d3 d2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 d1 (+.f64 d3 d2)) (*.f64 d1 (+.f64 d3 d2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 d1 (+.f64 d3 d2)) (*.f64 d1 (+.f64 d3 d2)))))))

simplify1.6s (26.5%)

Algorithm
egg-herbie
Rules
5368×rational.json-simplify-35
2494×rational.json-simplify-2
1068×rational.json-simplify-53
974×rational.json-simplify-1
736×rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
042575
194575
2183575
3448575
41874575
53672575
64582575
74894575
85055575
95208575
105359575
115691575
125696575
135767575
145810575
155821575
165972575
176123575
186274575
196425575
206576575
216727575
226878575
237029575
247131575
257146575
267193575
277226575
287227575
297227575
307378575
317529575
327680575
337831575
347982575
Stop Event
node limit
Counts
47 → 16
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d1 (+.f64 d3 d2)) 0)
(+.f64 0 (*.f64 d1 (+.f64 d3 d2)))
(+.f64 (*.f64 (+.f64 d3 d2) (*.f64 d1 1/2)) (*.f64 (+.f64 d3 d2) (*.f64 d1 1/2)))
(-.f64 (*.f64 d1 (+.f64 d3 d2)) 0)
(/.f64 (*.f64 d1 (+.f64 d3 d2)) 1)
(/.f64 (*.f64 (+.f64 d3 d2) (+.f64 d1 d1)) 2)
(/.f64 (*.f64 d1 (*.f64 (+.f64 d3 d2) 4)) 4)
(/.f64 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8)))) 64)
Outputs
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d1 (+.f64 d3 d2)) 0)
(*.f64 d1 (+.f64 d2 d3))
(+.f64 0 (*.f64 d1 (+.f64 d3 d2)))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 (+.f64 d3 d2) (*.f64 d1 1/2)) (*.f64 (+.f64 d3 d2) (*.f64 d1 1/2)))
(*.f64 d1 (+.f64 d2 d3))
(-.f64 (*.f64 d1 (+.f64 d3 d2)) 0)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (*.f64 d1 (+.f64 d3 d2)) 1)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (*.f64 (+.f64 d3 d2) (+.f64 d1 d1)) 2)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (*.f64 d1 (*.f64 (+.f64 d3 d2) 4)) 4)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8) 8)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8)) 16)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8))) 32)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d3 d2)) 8)))) 64)
(*.f64 d1 (+.f64 d2 d3))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 19 to 6 computations (68.4% saved)

series3.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

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

rewrite79.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
1306×bool.json-1
1306×bool.json-2
1290×rational.json-simplify-35
1276×rational.json-1
1276×rational.json-2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0819
18013
222013
348013
499213
5220913
6471613
Stop Event
node limit
Counts
1 → 33
Calls
Call 1
Inputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 d1 (+.f64 d2 d3)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 d1 (+.f64 d2 d3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (+.f64 d2 d3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 d1 (+.f64 d2 d3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (+.f64 (+.f64 d3 d3) (+.f64 d2 d2)) (*.f64 d1 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 d1 (/.f64 (+.f64 d2 d3) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (*.f64 d1 d3) 1/2) (*.f64 (*.f64 d1 d2) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 (+.f64 d2 d3) 1/2) d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 d3))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (*.f64 (+.f64 d2 d3) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (/.f64 (+.f64 d2 d3) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d1 d1) (+.f64 (*.f64 d3 1/2) (*.f64 d2 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 d2 d3) d1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 d1 (+.f64 d2 d3)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 (*.f64 d3 1/2) (*.f64 d2 1/2)) (*.f64 d1 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (*.f64 (+.f64 d2 d3) 4)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 d2 d3)) (*.f64 d1 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 d2 d3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 d2 (+.f64 d1 d1)) (*.f64 d1 (+.f64 d3 d3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 d2 d3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 1/2) (+.f64 (+.f64 d3 d3) (+.f64 d2 d2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 d1 (/.f64 (+.f64 d2 d3) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 d2 d3) 1/2) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 d1 (*.f64 (+.f64 d2 d3) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 d2 d3) 2) (+.f64 d1 d1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 d1 (+.f64 d2 d3)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (+.f64 d2 d3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 d3))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 d1 (*.f64 (+.f64 d2 d3) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 d1 (+.f64 d2 d3))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 d1 (+.f64 d2 d3)) (*.f64 d1 (+.f64 d2 d3)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 d1 (+.f64 d2 d3)) (*.f64 d1 (+.f64 d2 d3)))))))

simplify233.0ms (4%)

Algorithm
egg-herbie
Rules
2032×rational.json-simplify-2
1840×rational.json-simplify-1
1632×rational.json-simplify-35
1182×rational.json-simplify-41
720×rational.json-simplify-52
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
088885
1198885
2419885
31282885
42557885
53918885
64286885
74488885
84596885
94703885
104862885
115764885
126533885
137086885
Stop Event
node limit
Counts
69 → 38
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d2 d1)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(-.f64 (*.f64 d1 (+.f64 d2 d3)) 0)
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (*.f64 d1 (+.f64 d2 d3)) 1)
(*.f64 1 (*.f64 d1 (+.f64 d2 d3)))
(*.f64 1 (*.f64 (+.f64 (+.f64 d3 d3) (+.f64 d2 d2)) (*.f64 d1 1/2)))
(*.f64 2 (*.f64 d1 (/.f64 (+.f64 d2 d3) 2)))
(*.f64 2 (+.f64 (*.f64 (*.f64 d1 d3) 1/2) (*.f64 (*.f64 d1 d2) 1/2)))
(*.f64 2 (*.f64 (*.f64 (+.f64 d2 d3) 1/2) d1))
(*.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 d3))) 1/2)
(*.f64 (+.f64 d1 d1) (*.f64 (+.f64 d2 d3) 1/2))
(*.f64 (+.f64 d1 d1) (/.f64 (+.f64 d2 d3) 2))
(*.f64 (+.f64 d1 d1) (+.f64 (*.f64 d3 1/2) (*.f64 d2 1/2)))
(*.f64 (+.f64 d2 d3) d1)
(*.f64 4 (/.f64 (*.f64 d1 (+.f64 d2 d3)) 4))
(*.f64 4 (*.f64 (+.f64 (*.f64 d3 1/2) (*.f64 d2 1/2)) (*.f64 d1 1/2)))
(*.f64 (*.f64 d1 (*.f64 (+.f64 d2 d3) 4)) 1/4)
(*.f64 (*.f64 2 (+.f64 d2 d3)) (*.f64 d1 1/2))
(*.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 d2 d3))))
(*.f64 1/2 (+.f64 (*.f64 d2 (+.f64 d1 d1)) (*.f64 d1 (+.f64 d3 d3))))
(*.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 d2 d3)))
(*.f64 (*.f64 d1 1/2) (+.f64 (+.f64 d3 d3) (+.f64 d2 d2)))
(*.f64 (*.f64 d1 (/.f64 (+.f64 d2 d3) 2)) 2)
(*.f64 (*.f64 (+.f64 d2 d3) 1/2) (+.f64 d1 d1))
(*.f64 1/4 (*.f64 d1 (*.f64 (+.f64 d2 d3) 4)))
(*.f64 (/.f64 (+.f64 d2 d3) 2) (+.f64 d1 d1))
(*.f64 (/.f64 (*.f64 d1 (+.f64 d2 d3)) 4) 4)
(/.f64 (*.f64 d1 (+.f64 d2 d3)) 1)
(/.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 d3))) 2)
(/.f64 (*.f64 d1 (*.f64 (+.f64 d2 d3) 4)) 4)
(/.f64 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8)))) 64)
Outputs
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 -1 (*.f64 d1 (+.f64 (*.f64 -1 d3) (*.f64 -1 d2))))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d2 d1)
(*.f64 d1 d2)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 d3)
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(+.f64 (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 (+.f64 d2 d3))
(-.f64 (*.f64 d1 (+.f64 d2 d3)) 0)
(*.f64 d1 (+.f64 d2 d3))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (*.f64 d1 (+.f64 d2 d3)) 1)
(*.f64 d1 (+.f64 d2 d3))
(*.f64 1 (*.f64 d1 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 1 (*.f64 (+.f64 (+.f64 d3 d3) (+.f64 d2 d2)) (*.f64 d1 1/2)))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 2 (*.f64 d1 (/.f64 (+.f64 d2 d3) 2)))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 2 (+.f64 (*.f64 (*.f64 d1 d3) 1/2) (*.f64 (*.f64 d1 d2) 1/2)))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 2 (*.f64 (*.f64 (+.f64 d2 d3) 1/2) d1))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 d3))) 1/2)
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (+.f64 d1 d1) (*.f64 (+.f64 d2 d3) 1/2))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (+.f64 d1 d1) (/.f64 (+.f64 d2 d3) 2))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (+.f64 d1 d1) (+.f64 (*.f64 d3 1/2) (*.f64 d2 1/2)))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (+.f64 d2 d3) d1)
(*.f64 d1 (+.f64 d2 d3))
(*.f64 4 (/.f64 (*.f64 d1 (+.f64 d2 d3)) 4))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 4 (*.f64 (+.f64 (*.f64 d3 1/2) (*.f64 d2 1/2)) (*.f64 d1 1/2)))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (*.f64 d1 (*.f64 (+.f64 d2 d3) 4)) 1/4)
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (*.f64 2 (+.f64 d2 d3)) (*.f64 d1 1/2))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 1/2 (*.f64 d1 (*.f64 2 (+.f64 d2 d3))))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 1/2 (+.f64 (*.f64 d2 (+.f64 d1 d1)) (*.f64 d1 (+.f64 d3 d3))))
(*.f64 (*.f64 d1 1/2) (*.f64 2 (+.f64 d2 d3)))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (*.f64 d1 1/2) (+.f64 (+.f64 d3 d3) (+.f64 d2 d2)))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (*.f64 d1 (/.f64 (+.f64 d2 d3) 2)) 2)
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (*.f64 (+.f64 d2 d3) 1/2) (+.f64 d1 d1))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 1/4 (*.f64 d1 (*.f64 (+.f64 d2 d3) 4)))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (/.f64 (+.f64 d2 d3) 2) (+.f64 d1 d1))
(*.f64 d1 (+.f64 d2 d3))
(*.f64 (/.f64 (*.f64 d1 (+.f64 d2 d3)) 4) 4)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (*.f64 d1 (+.f64 d2 d3)) 1)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (*.f64 d1 (*.f64 2 (+.f64 d2 d3))) 2)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (*.f64 d1 (*.f64 (+.f64 d2 d3) 4)) 4)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8) 8)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8)) 16)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8))) 32)
(*.f64 d1 (+.f64 d2 d3))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 d1 (+.f64 d2 d3)) 8)))) 64)
(*.f64 d1 (+.f64 d2 d3))

eval8.0ms (0.1%)

Compiler

Compiled 493 to 232 computations (52.9% saved)

prune9.0ms (0.2%)

Pruning

4 alts after pruning (2 fresh and 2 done)

PrunedKeptTotal
New52254
Fresh000
Picked011
Done011
Total52456
Error
0.0b
Counts
56 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
28.6b
(*.f64 d2 d1)
0.0b
(*.f64 d1 (+.f64 d3 d2))
30.2b
(*.f64 d1 d3)
Compiler

Compiled 30 to 19 computations (36.7% saved)

localize3.0ms (0.1%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize3.0ms (0.1%)

Compiler

Compiled 8 to 4 computations (50% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune1.0ms (0%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done033
Total044
Error
0.0b
Counts
4 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
28.6b
(*.f64 d2 d1)
0.0b
(*.f64 d1 (+.f64 d3 d2))
30.2b
(*.f64 d1 d3)
Compiler

Compiled 30 to 19 computations (36.7% saved)

regimes17.0ms (0.3%)

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

4 calls:

5.0ms
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
4.0ms
d2
4.0ms
d3
4.0ms
d1
Results
ErrorSegmentsBranch
0.0b1d1
0.0b1d2
0.0b1d3
0.0b1(+.f64 (*.f64 d1 d2) (*.f64 d1 d3))
Compiler

Compiled 43 to 24 computations (44.2% saved)

regimes36.0ms (0.6%)

Accuracy

Total -49.8b remaining (-609.7%)

Threshold costs -49.8b (-609.7%)

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

3 calls:

21.0ms
d1
9.0ms
d2
5.0ms
d3
Results
ErrorSegmentsBranch
22.1b7d1
8.2b2d2
9.6b2d3
Compiler

Compiled 21 to 14 computations (33.3% saved)

bsearch14.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
14.0ms
-1.80281800121529e-121
-3.8635787795965095e-129
Results
12.0ms144×body256valid
Compiler

Compiled 142 to 101 computations (28.9% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01543
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 d3 d2))
(if (<=.f64 d2 -8373182103885391/46517678354918840995156723704832290198633047083988355858015372747560914439257467092876227245680868195888801382801035387746214504231337984) (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
Outputs
(*.f64 d1 (+.f64 d3 d2))
(if (<=.f64 d2 -8373182103885391/46517678354918840995156723704832290198633047083988355858015372747560914439257467092876227245680868195888801382801035387746214504231337984) (*.f64 d2 d1) (*.f64 d1 d3))
(*.f64 d1 d3)
Compiler

Compiled 27 to 17 computations (37% saved)

soundness10.0ms (0.2%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
0819
11113
21513
31613
Stop Event
saturated
Compiler

Compiled 22 to 10 computations (54.5% saved)

end18.0ms (0.3%)

Remove

(sort d2 d3)

Compiler

Compiled 37 to 20 computations (45.9% saved)

Profiling

Loading profile data...