Details

Time bar (total: 2.4s)

analyze50.0ms (2.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
25%25%74.9%0.1%0%0%0%5
28.6%25%62.4%0.1%12.5%0%0%6
46.2%37.5%43.7%0.1%18.7%0%0%7
57.7%46.8%34.3%0.1%18.7%0%0%8
69.4%53.1%23.4%0.1%23.4%0%0%9
76.5%58.5%18%0.1%23.4%0%0%10
83.7%62%12.1%0.1%25.8%0%0%11
87.6%65%9.2%0.1%25.8%0%0%12
Compiler

Compiled 11 to 7 computations (36.4% saved)

sample703.0ms (29.7%)

Results
667.0ms8256×body256valid
25.0ms276×body256infinite
Bogosity

preprocess24.0ms (1%)

Algorithm
egg-herbie
Rules
358×rational_best-simplify-2
246×rational_best-simplify-44
86×rational_best-simplify-47
54×rational_best-simplify-86
44×rational_best-simplify-32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01346
12746
24346
37946
413446
517446
621946
729746
837046
944446
1051046
1151346
022
122
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
0
Call 2
Inputs
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
(neg.f64 (*.f64 (*.f64 (*.f64 b b) a) a))
Outputs
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
(neg.f64 (*.f64 b (*.f64 (*.f64 a a) b)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
(*.f64 (*.f64 a b) (neg.f64 (*.f64 a b)))
(neg.f64 (*.f64 (*.f64 (*.f64 b b) a) a))
(neg.f64 (*.f64 b (*.f64 (*.f64 a a) b)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
(*.f64 (*.f64 a b) (neg.f64 (*.f64 a b)))
Symmetry

(sort a b)

Compiler

Compiled 12 to 8 computations (33.3% saved)

simplify26.0ms (1.1%)

Algorithm
egg-herbie
Rules
364×rational_best-simplify-2
252×rational_best-simplify-44
78×rational_best-simplify-47
54×rational_best-simplify-86
46×rational_best-simplify-32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0923
11723
22623
34823
49323
513723
616723
721223
829023
936423
1043823
1150523
1250923
Stop Event
saturated
Counts
1 → 6
Calls
Call 1
Inputs
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
Outputs
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
(neg.f64 (*.f64 b (*.f64 (*.f64 a a) b)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))

eval1.0ms (0%)

Compiler

Compiled 50 to 19 computations (62% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New336
Fresh101
Picked000
Done000
Total437
Error
10.8b
Counts
7 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
20.5b
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
16.1b
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
15.3b
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
Compiler

Compiled 30 to 18 computations (40% saved)

localize7.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
5.0b
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
9.8b
(*.f64 (*.f64 b b) (neg.f64 a))
Compiler

Compiled 23 to 6 computations (73.9% saved)

series5.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
1.0ms
a
@0
(*.f64 (*.f64 b b) (neg.f64 a))
1.0ms
b
@0
(*.f64 (*.f64 b b) (neg.f64 a))
1.0ms
b
@0
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
0.0ms
b
@inf
(*.f64 (*.f64 b b) (neg.f64 a))
0.0ms
a
@inf
(*.f64 (*.f64 b b) (neg.f64 a))

rewrite196.0ms (8.3%)

Algorithm
batch-egg-rewrite
Rules
1780×rational_best-2
1780×rational_best-1
1778×rational_best-3
1730×rational_best-4
1682×exponential-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0940
16540
211940
316140
421440
528240
636840
764840
8121740
9191240
10305340
11369040
12401440
13430840
14450940
15467140
16523640
17578440
18652040
19720040
Stop Event
node limit
Counts
2 → 16
Calls
Call 1
Inputs
(*.f64 (*.f64 b b) (neg.f64 a))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 b (*.f64 b (neg.f64 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 b (*.f64 b (neg.f64 a))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 b (*.f64 b (neg.f64 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 b (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 b (*.f64 b (neg.f64 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 b (*.f64 b a)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 b (*.f64 b (neg.f64 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 b (*.f64 b a)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 (*.f64 b b) (*.f64 a a)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 b b) (*.f64 a a)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 (*.f64 b b) (*.f64 a a)))))))

simplify52.0ms (2.2%)

Algorithm
egg-herbie
Rules
410×rational_best-simplify-2
270×rational_best-simplify-44
114×rational_best-simplify-47
50×rational_best-simplify-32
48×rational_best-simplify-86
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0411232
1751136
21231136
32151136
42711136
53211136
63961136
74731136
85561136
96281136
106321136
Stop Event
saturated
Counts
64 → 27
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(+.f64 (*.f64 b (*.f64 b (neg.f64 a))) 0)
(+.f64 0 (*.f64 b (*.f64 b (neg.f64 a))))
(-.f64 (*.f64 b (*.f64 b (neg.f64 a))) 0)
(-.f64 0 (*.f64 b (*.f64 b a)))
(/.f64 (*.f64 b (*.f64 b (neg.f64 a))) 1)
(/.f64 (*.f64 b (*.f64 b a)) -1)
(pow.f64 (*.f64 b (*.f64 b (neg.f64 a))) 1)
(neg.f64 (*.f64 b (*.f64 b a)))
(+.f64 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))) 0)
(+.f64 0 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))))
(-.f64 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))) 0)
(-.f64 0 (*.f64 (*.f64 b b) (*.f64 a a)))
(/.f64 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))) 1)
(/.f64 (*.f64 (*.f64 b b) (*.f64 a a)) -1)
(pow.f64 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))) 1)
(neg.f64 (*.f64 (*.f64 b b) (*.f64 a a)))
Outputs
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(+.f64 (*.f64 b (*.f64 b (neg.f64 a))) 0)
(*.f64 b (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 b (neg.f64 b)))
(+.f64 0 (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 b (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 b (neg.f64 b)))
(-.f64 (*.f64 b (*.f64 b (neg.f64 a))) 0)
(*.f64 b (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 b (neg.f64 b)))
(-.f64 0 (*.f64 b (*.f64 b a)))
(*.f64 b (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 b (neg.f64 b)))
(/.f64 (*.f64 b (*.f64 b (neg.f64 a))) 1)
(*.f64 b (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 b (neg.f64 b)))
(/.f64 (*.f64 b (*.f64 b a)) -1)
(*.f64 b (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 b (neg.f64 b)))
(pow.f64 (*.f64 b (*.f64 b (neg.f64 a))) 1)
(*.f64 b (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 b (neg.f64 b)))
(neg.f64 (*.f64 b (*.f64 b a)))
(*.f64 b (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 b (neg.f64 b)))
(+.f64 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))) 0)
(*.f64 b (*.f64 b (*.f64 (neg.f64 a) a)))
(neg.f64 (*.f64 b (*.f64 (*.f64 a a) b)))
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(+.f64 0 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))))
(*.f64 b (*.f64 b (*.f64 (neg.f64 a) a)))
(neg.f64 (*.f64 b (*.f64 (*.f64 a a) b)))
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(-.f64 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))) 0)
(*.f64 b (*.f64 b (*.f64 (neg.f64 a) a)))
(neg.f64 (*.f64 b (*.f64 (*.f64 a a) b)))
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(-.f64 0 (*.f64 (*.f64 b b) (*.f64 a a)))
(*.f64 b (*.f64 b (*.f64 (neg.f64 a) a)))
(neg.f64 (*.f64 b (*.f64 (*.f64 a a) b)))
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(/.f64 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))) 1)
(*.f64 b (*.f64 b (*.f64 (neg.f64 a) a)))
(neg.f64 (*.f64 b (*.f64 (*.f64 a a) b)))
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(/.f64 (*.f64 (*.f64 b b) (*.f64 a a)) -1)
(*.f64 b (*.f64 b (*.f64 (neg.f64 a) a)))
(neg.f64 (*.f64 b (*.f64 (*.f64 a a) b)))
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(pow.f64 (*.f64 b (*.f64 (neg.f64 a) (*.f64 b a))) 1)
(*.f64 b (*.f64 b (*.f64 (neg.f64 a) a)))
(neg.f64 (*.f64 b (*.f64 (*.f64 a a) b)))
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(neg.f64 (*.f64 (*.f64 b b) (*.f64 a a)))
(*.f64 b (*.f64 b (*.f64 (neg.f64 a) a)))
(neg.f64 (*.f64 b (*.f64 (*.f64 a a) b)))
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))

localize7.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
4.2b
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
11.2b
(*.f64 (*.f64 a a) (neg.f64 b))
Compiler

Compiled 23 to 6 computations (73.9% saved)

series3.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
1.0ms
a
@0
(*.f64 (*.f64 a a) (neg.f64 b))
0.0ms
b
@0
(*.f64 (*.f64 a a) (neg.f64 b))
0.0ms
a
@inf
(*.f64 (*.f64 a a) (neg.f64 b))
0.0ms
b
@inf
(*.f64 (*.f64 a a) (neg.f64 b))
0.0ms
b
@-inf
(*.f64 (*.f64 a a) (neg.f64 b))

rewrite193.0ms (8.2%)

Algorithm
batch-egg-rewrite
Rules
1780×rational_best-2
1780×rational_best-1
1778×rational_best-3
1730×rational_best-4
1682×exponential-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0940
16540
211940
316140
421440
528240
636840
764840
8121740
9191240
10305340
11369040
12401440
13430840
14450940
15467140
16523640
17578440
18652040
19720040
Stop Event
node limit
Counts
2 → 16
Calls
Call 1
Inputs
(*.f64 (*.f64 a a) (neg.f64 b))
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 a (*.f64 a (neg.f64 b))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 a (*.f64 a (neg.f64 b))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 a (*.f64 a (neg.f64 b))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 a (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 a (*.f64 a (neg.f64 b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 a (*.f64 a b)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a (*.f64 a (neg.f64 b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 a (*.f64 a b)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 (*.f64 a a) (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 a a) (*.f64 b b)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))))))

simplify52.0ms (2.2%)

Algorithm
egg-herbie
Rules
410×rational_best-simplify-2
260×rational_best-simplify-44
116×rational_best-simplify-47
50×rational_best-simplify-32
48×rational_best-simplify-86
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0411232
1761136
21251136
32171136
42761136
53271136
64021136
74761136
85591136
96271136
106301136
Stop Event
saturated
Counts
64 → 25
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(+.f64 (*.f64 a (*.f64 a (neg.f64 b))) 0)
(+.f64 0 (*.f64 a (*.f64 a (neg.f64 b))))
(-.f64 (*.f64 a (*.f64 a (neg.f64 b))) 0)
(-.f64 0 (*.f64 a (*.f64 a b)))
(/.f64 (*.f64 a (*.f64 a (neg.f64 b))) 1)
(/.f64 (*.f64 a (*.f64 a b)) -1)
(pow.f64 (*.f64 a (*.f64 a (neg.f64 b))) 1)
(neg.f64 (*.f64 a (*.f64 a b)))
(+.f64 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))) 0)
(+.f64 0 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))))
(-.f64 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))) 0)
(-.f64 0 (*.f64 (*.f64 a a) (*.f64 b b)))
(/.f64 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))) 1)
(/.f64 (*.f64 (*.f64 a a) (*.f64 b b)) -1)
(pow.f64 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))) 1)
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
Outputs
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(+.f64 (*.f64 a (*.f64 a (neg.f64 b))) 0)
(*.f64 a (*.f64 a (neg.f64 b)))
(+.f64 0 (*.f64 a (*.f64 a (neg.f64 b))))
(*.f64 a (*.f64 a (neg.f64 b)))
(-.f64 (*.f64 a (*.f64 a (neg.f64 b))) 0)
(*.f64 a (*.f64 a (neg.f64 b)))
(-.f64 0 (*.f64 a (*.f64 a b)))
(*.f64 a (*.f64 a (neg.f64 b)))
(/.f64 (*.f64 a (*.f64 a (neg.f64 b))) 1)
(*.f64 a (*.f64 a (neg.f64 b)))
(/.f64 (*.f64 a (*.f64 a b)) -1)
(*.f64 a (*.f64 a (neg.f64 b)))
(pow.f64 (*.f64 a (*.f64 a (neg.f64 b))) 1)
(*.f64 a (*.f64 a (neg.f64 b)))
(neg.f64 (*.f64 a (*.f64 a b)))
(*.f64 a (*.f64 a (neg.f64 b)))
(+.f64 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))) 0)
(*.f64 a (*.f64 a (*.f64 (neg.f64 b) b)))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
(+.f64 0 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))))
(*.f64 a (*.f64 a (*.f64 (neg.f64 b) b)))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
(-.f64 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))) 0)
(*.f64 a (*.f64 a (*.f64 (neg.f64 b) b)))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
(-.f64 0 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 a (*.f64 a (*.f64 (neg.f64 b) b)))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
(/.f64 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))) 1)
(*.f64 a (*.f64 a (*.f64 (neg.f64 b) b)))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
(/.f64 (*.f64 (*.f64 a a) (*.f64 b b)) -1)
(*.f64 a (*.f64 a (*.f64 (neg.f64 b) b)))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
(pow.f64 (*.f64 a (*.f64 (neg.f64 b) (*.f64 a b))) 1)
(*.f64 a (*.f64 a (*.f64 (neg.f64 b) b)))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 a (*.f64 a (*.f64 (neg.f64 b) b)))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))

localize7.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
20.1b
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
Compiler

Compiled 21 to 6 computations (71.4% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
a
@0
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
0.0ms
b
@inf
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
0.0ms
a
@inf
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
0.0ms
b
@-inf
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
0.0ms
a
@-inf
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))

rewrite193.0ms (8.1%)

Algorithm
batch-egg-rewrite
Rules
1776×rational_best-2
1776×rational_best-1
1770×rational_best-3
1726×rational_best-4
1678×exponential-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0923
16523
211923
315723
419723
527423
635523
763423
8120623
9190423
10303923
11367623
12400023
13429423
14449523
15465723
16523523
17578323
18651923
19719923
Stop Event
node limit
Counts
1 → 8
Calls
Call 1
Inputs
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 (*.f64 a a) (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 a a) (*.f64 b b)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))))))

simplify38.0ms (1.6%)

Algorithm
egg-herbie
Rules
394×rational_best-simplify-2
270×rational_best-simplify-44
106×rational_best-simplify-47
50×rational_best-simplify-32
44×rational_best-simplify-86
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
027640
150592
286592
3144592
4215592
5279592
6358592
7442592
8525592
9600592
10604592
Stop Event
saturated
Counts
32 → 14
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(+.f64 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)) 0)
(+.f64 0 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)))
(-.f64 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)) 0)
(-.f64 0 (*.f64 (*.f64 a a) (*.f64 b b)))
(/.f64 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)) 1)
(/.f64 (*.f64 (*.f64 a a) (*.f64 b b)) -1)
(pow.f64 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)) 1)
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
Outputs
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 b a) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(+.f64 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)) 0)
(*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b))
(neg.f64 (*.f64 (*.f64 b b) (*.f64 a a)))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b b)))
(+.f64 0 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)))
(*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b))
(neg.f64 (*.f64 (*.f64 b b) (*.f64 a a)))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b b)))
(-.f64 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)) 0)
(*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b))
(neg.f64 (*.f64 (*.f64 b b) (*.f64 a a)))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b b)))
(-.f64 0 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b))
(neg.f64 (*.f64 (*.f64 b b) (*.f64 a a)))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b b)))
(/.f64 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)) 1)
(*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b))
(neg.f64 (*.f64 (*.f64 b b) (*.f64 a a)))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b b)))
(/.f64 (*.f64 (*.f64 a a) (*.f64 b b)) -1)
(*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b))
(neg.f64 (*.f64 (*.f64 b b) (*.f64 a a)))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b b)))
(pow.f64 (*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b)) 1)
(*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b))
(neg.f64 (*.f64 (*.f64 b b) (*.f64 a a)))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b b)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 a (neg.f64 a)) (*.f64 b b))
(neg.f64 (*.f64 (*.f64 b b) (*.f64 a a)))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b b)))

eval9.0ms (0.4%)

Compiler

Compiled 586 to 194 computations (66.9% saved)

prune9.0ms (0.4%)

Pruning

6 alts after pruning (3 fresh and 3 done)

PrunedKeptTotal
New63366
Fresh000
Picked011
Done022
Total63669
Error
0.1b
Counts
69 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
20.5b
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
16.1b
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
4.3b
(*.f64 b (*.f64 a (*.f64 a (neg.f64 b))))
15.3b
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
5.2b
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
0.3b
(neg.f64 (pow.f64 (*.f64 a b) 2))
Compiler

Compiled 58 to 36 computations (37.9% saved)

localize7.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.3b
(pow.f64 (*.f64 a b) 2)
Compiler

Compiled 19 to 9 computations (52.6% saved)

series2.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
a
@-inf
(pow.f64 (*.f64 a b) 2)
0.0ms
a
@0
(pow.f64 (*.f64 a b) 2)
0.0ms
b
@-inf
(pow.f64 (*.f64 a b) 2)
0.0ms
b
@inf
(pow.f64 (*.f64 a b) 2)
0.0ms
a
@inf
(pow.f64 (*.f64 a b) 2)

rewrite13.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
14×rational_best-simplify-2
12×rational_best-4
12×rational_best-2
12×rational_best-3
12×rational_best-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14513
26813
Stop Event
saturated
Counts
1 → 6
Calls
Call 1
Inputs
(pow.f64 (*.f64 a b) 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (pow.f64 (*.f64 a b) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (pow.f64 (*.f64 a b) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (*.f64 a b) 2) 1)))))

simplify14.0ms (0.6%)

Algorithm
egg-herbie
Rules
18×rational_best-simplify-2
rational_best-simplify-5
rational_best-simplify-6
rational_best-simplify-47
rational_best-simplify-44
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
018390
120390
232390
338390
Stop Event
saturated
Counts
30 → 8
Calls
Call 1
Inputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(+.f64 (pow.f64 (*.f64 a b) 2) 0)
(+.f64 0 (pow.f64 (*.f64 a b) 2))
(-.f64 (pow.f64 (*.f64 a b) 2) 0)
(*.f64 (pow.f64 (*.f64 a b) 2) 1)
(*.f64 1 (pow.f64 (*.f64 a b) 2))
(/.f64 (pow.f64 (*.f64 a b) 2) 1)
Outputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(pow.f64 (*.f64 a b) 2)
(+.f64 (pow.f64 (*.f64 a b) 2) 0)
(pow.f64 (*.f64 a b) 2)
(+.f64 0 (pow.f64 (*.f64 a b) 2))
(pow.f64 (*.f64 a b) 2)
(-.f64 (pow.f64 (*.f64 a b) 2) 0)
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 (*.f64 a b) 2) 1)
(pow.f64 (*.f64 a b) 2)
(*.f64 1 (pow.f64 (*.f64 a b) 2))
(pow.f64 (*.f64 a b) 2)
(/.f64 (pow.f64 (*.f64 a b) 2) 1)
(pow.f64 (*.f64 a b) 2)

localize7.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 b (*.f64 b (neg.f64 a)))
5.0b
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
Compiler

Compiled 24 to 6 computations (75% saved)

series1.0ms (0%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
0.0ms
a
@0
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
0.0ms
a
@inf
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
0.0ms
a
@-inf
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
0.0ms
b
@-inf
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
0.0ms
b
@inf
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))

rewrite197.0ms (8.3%)

Algorithm
batch-egg-rewrite
Rules
1776×rational_best-2
1776×rational_best-1
1774×rational_best-3
1736×rational_best-4
1688×exponential-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0940
16540
211840
316140
422440
529340
632840
741340
867040
9125940
10194240
11307340
12370940
13403340
14432740
15452840
16469040
17526740
18581540
19655140
20723140
Stop Event
node limit
Counts
2 → 16
Calls
Call 1
Inputs
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 b (*.f64 b (neg.f64 a)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 b (*.f64 a (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 b (*.f64 a (*.f64 a b))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 b (*.f64 a (*.f64 a b))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 a (*.f64 b (neg.f64 b))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 a (*.f64 b (neg.f64 b))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 a (*.f64 b (neg.f64 b))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 a (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 a (*.f64 b (neg.f64 b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 a (*.f64 b b)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a (*.f64 b (neg.f64 b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 a (*.f64 b b)))))))

simplify55.0ms (2.3%)

Algorithm
egg-herbie
Rules
420×rational_best-simplify-2
244×rational_best-simplify-44
130×rational_best-simplify-47
54×rational_best-simplify-86
44×rational_best-simplify-32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0431232
1821136
21331136
31841136
42371136
52821136
63281136
74081136
84861136
95661136
106351136
116381136
Stop Event
saturated
Counts
64 → 27
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(+.f64 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))) 0)
(+.f64 0 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))))
(-.f64 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))) 0)
(-.f64 0 (*.f64 b (*.f64 a (*.f64 a b))))
(/.f64 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))) 1)
(/.f64 (*.f64 b (*.f64 a (*.f64 a b))) -1)
(pow.f64 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))) 1)
(neg.f64 (*.f64 b (*.f64 a (*.f64 a b))))
(+.f64 (*.f64 a (*.f64 b (neg.f64 b))) 0)
(+.f64 0 (*.f64 a (*.f64 b (neg.f64 b))))
(-.f64 (*.f64 a (*.f64 b (neg.f64 b))) 0)
(-.f64 0 (*.f64 a (*.f64 b b)))
(/.f64 (*.f64 a (*.f64 b (neg.f64 b))) 1)
(/.f64 (*.f64 a (*.f64 b b)) -1)
(pow.f64 (*.f64 a (*.f64 b (neg.f64 b))) 1)
(neg.f64 (*.f64 a (*.f64 b b)))
Outputs
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(*.f64 -1 (*.f64 a (pow.f64 b 2)))
(*.f64 (pow.f64 b 2) (neg.f64 a))
(*.f64 a (neg.f64 (pow.f64 b 2)))
(+.f64 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))) 0)
(*.f64 b (*.f64 a (*.f64 b (neg.f64 a))))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 b (*.f64 b (*.f64 a (neg.f64 a))))
(+.f64 0 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))))
(*.f64 b (*.f64 a (*.f64 b (neg.f64 a))))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 b (*.f64 b (*.f64 a (neg.f64 a))))
(-.f64 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))) 0)
(*.f64 b (*.f64 a (*.f64 b (neg.f64 a))))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 b (*.f64 b (*.f64 a (neg.f64 a))))
(-.f64 0 (*.f64 b (*.f64 a (*.f64 a b))))
(*.f64 b (*.f64 a (*.f64 b (neg.f64 a))))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 b (*.f64 b (*.f64 a (neg.f64 a))))
(/.f64 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))) 1)
(*.f64 b (*.f64 a (*.f64 b (neg.f64 a))))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 b (*.f64 b (*.f64 a (neg.f64 a))))
(/.f64 (*.f64 b (*.f64 a (*.f64 a b))) -1)
(*.f64 b (*.f64 a (*.f64 b (neg.f64 a))))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 b (*.f64 b (*.f64 a (neg.f64 a))))
(pow.f64 (*.f64 b (*.f64 b (*.f64 a (neg.f64 a)))) 1)
(*.f64 b (*.f64 a (*.f64 b (neg.f64 a))))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 b (*.f64 b (*.f64 a (neg.f64 a))))
(neg.f64 (*.f64 b (*.f64 a (*.f64 a b))))
(*.f64 b (*.f64 a (*.f64 b (neg.f64 a))))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 b (*.f64 b (*.f64 a (neg.f64 a))))
(+.f64 (*.f64 a (*.f64 b (neg.f64 b))) 0)
(*.f64 a (*.f64 b (neg.f64 b)))
(*.f64 b (*.f64 b (neg.f64 a)))
(+.f64 0 (*.f64 a (*.f64 b (neg.f64 b))))
(*.f64 a (*.f64 b (neg.f64 b)))
(*.f64 b (*.f64 b (neg.f64 a)))
(-.f64 (*.f64 a (*.f64 b (neg.f64 b))) 0)
(*.f64 a (*.f64 b (neg.f64 b)))
(*.f64 b (*.f64 b (neg.f64 a)))
(-.f64 0 (*.f64 a (*.f64 b b)))
(*.f64 a (*.f64 b (neg.f64 b)))
(*.f64 b (*.f64 b (neg.f64 a)))
(/.f64 (*.f64 a (*.f64 b (neg.f64 b))) 1)
(*.f64 a (*.f64 b (neg.f64 b)))
(*.f64 b (*.f64 b (neg.f64 a)))
(/.f64 (*.f64 a (*.f64 b b)) -1)
(*.f64 a (*.f64 b (neg.f64 b)))
(*.f64 b (*.f64 b (neg.f64 a)))
(pow.f64 (*.f64 a (*.f64 b (neg.f64 b))) 1)
(*.f64 a (*.f64 b (neg.f64 b)))
(*.f64 b (*.f64 b (neg.f64 a)))
(neg.f64 (*.f64 a (*.f64 b b)))
(*.f64 a (*.f64 b (neg.f64 b)))
(*.f64 b (*.f64 b (neg.f64 a)))

localize7.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 a (*.f64 a (neg.f64 b)))
4.2b
(*.f64 b (*.f64 a (*.f64 a (neg.f64 b))))
Compiler

Compiled 24 to 6 computations (75% saved)

series1.0ms (0%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
0.0ms
b
@0
(*.f64 b (*.f64 a (*.f64 a (neg.f64 b))))
0.0ms
b
@inf
(*.f64 b (*.f64 a (*.f64 a (neg.f64 b))))
0.0ms
b
@-inf
(*.f64 b (*.f64 a (*.f64 a (neg.f64 b))))
0.0ms
a
@inf
(*.f64 b (*.f64 a (*.f64 a (neg.f64 b))))
0.0ms
a
@-inf
(*.f64 b (*.f64 a (*.f64 a (neg.f64 b))))

rewrite194.0ms (8.2%)

Algorithm
batch-egg-rewrite
Rules
1776×rational_best-2
1776×rational_best-1
1774×rational_best-3
1736×rational_best-4
1688×exponential-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0940
16540
211840
316140
422440
529340
632840
741340
867040
9125940
10194240
11307340
12370940
13403340
14432740
15452840
16469040
17526740
18581540
19655140
20723140
Stop Event
node limit
Counts
2 → 16
Calls
Call 1
Inputs
(*.f64 b (*.f64 a (*.f64 a (neg.f64 b))))
(*.f64 a (*.f64 a (neg.f64 b)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 a (*.f64 b (*.f64 b a))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 a (*.f64 b (*.f64 b a))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 a (*.f64 b (*.f64 b a))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 b (*.f64 a (neg.f64 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 b (*.f64 a (neg.f64 a))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 b (*.f64 a (neg.f64 a))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 b (*.f64 a a)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 b (*.f64 a (neg.f64 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 b (*.f64 a a)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 b (*.f64 a (neg.f64 a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 b (*.f64 a a)))))))

simplify55.0ms (2.3%)

Algorithm
egg-herbie
Rules
424×rational_best-simplify-2
258×rational_best-simplify-44
132×rational_best-simplify-47
54×rational_best-simplify-86
46×rational_best-simplify-32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0431232
1831136
21351136
31861136
42401136
52861136
63321136
74121136
84891136
95691136
106461136
116501136
Stop Event
saturated
Counts
64 → 25
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(+.f64 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))) 0)
(+.f64 0 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))))
(-.f64 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))) 0)
(-.f64 0 (*.f64 a (*.f64 b (*.f64 b a))))
(/.f64 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))) 1)
(/.f64 (*.f64 a (*.f64 b (*.f64 b a))) -1)
(pow.f64 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))) 1)
(neg.f64 (*.f64 a (*.f64 b (*.f64 b a))))
(+.f64 (*.f64 b (*.f64 a (neg.f64 a))) 0)
(+.f64 0 (*.f64 b (*.f64 a (neg.f64 a))))
(-.f64 (*.f64 b (*.f64 a (neg.f64 a))) 0)
(-.f64 0 (*.f64 b (*.f64 a a)))
(/.f64 (*.f64 b (*.f64 a (neg.f64 a))) 1)
(/.f64 (*.f64 b (*.f64 a a)) -1)
(pow.f64 (*.f64 b (*.f64 a (neg.f64 a))) 1)
(neg.f64 (*.f64 b (*.f64 a a)))
Outputs
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (pow.f64 (*.f64 a b) 2))
(neg.f64 (pow.f64 (*.f64 a b) 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(*.f64 -1 (*.f64 (pow.f64 a 2) b))
(*.f64 (pow.f64 a 2) (neg.f64 b))
(+.f64 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))) 0)
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(+.f64 0 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(-.f64 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))) 0)
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(-.f64 0 (*.f64 a (*.f64 b (*.f64 b a))))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(/.f64 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))) 1)
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(/.f64 (*.f64 a (*.f64 b (*.f64 b a))) -1)
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(pow.f64 (*.f64 a (*.f64 a (*.f64 b (neg.f64 b)))) 1)
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(neg.f64 (*.f64 a (*.f64 b (*.f64 b a))))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 b))))
(+.f64 (*.f64 b (*.f64 a (neg.f64 a))) 0)
(*.f64 a (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 a (neg.f64 b)))
(*.f64 b (neg.f64 (*.f64 a a)))
(+.f64 0 (*.f64 b (*.f64 a (neg.f64 a))))
(*.f64 a (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 a (neg.f64 b)))
(*.f64 b (neg.f64 (*.f64 a a)))
(-.f64 (*.f64 b (*.f64 a (neg.f64 a))) 0)
(*.f64 a (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 a (neg.f64 b)))
(*.f64 b (neg.f64 (*.f64 a a)))
(-.f64 0 (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 a (neg.f64 b)))
(*.f64 b (neg.f64 (*.f64 a a)))
(/.f64 (*.f64 b (*.f64 a (neg.f64 a))) 1)
(*.f64 a (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 a (neg.f64 b)))
(*.f64 b (neg.f64 (*.f64 a a)))
(/.f64 (*.f64 b (*.f64 a a)) -1)
(*.f64 a (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 a (neg.f64 b)))
(*.f64 b (neg.f64 (*.f64 a a)))
(pow.f64 (*.f64 b (*.f64 a (neg.f64 a))) 1)
(*.f64 a (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 a (neg.f64 b)))
(*.f64 b (neg.f64 (*.f64 a a)))
(neg.f64 (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (neg.f64 a)))
(*.f64 a (*.f64 a (neg.f64 b)))
(*.f64 b (neg.f64 (*.f64 a a)))

eval7.0ms (0.3%)

Compiler

Compiled 526 to 199 computations (62.2% saved)

prune10.0ms (0.4%)

Pruning

6 alts after pruning (0 fresh and 6 done)

PrunedKeptTotal
New60060
Fresh000
Picked011
Done055
Total60666
Error
0.1b
Counts
66 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
20.5b
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
16.1b
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
4.3b
(*.f64 b (*.f64 a (*.f64 a (neg.f64 b))))
15.3b
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
5.2b
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
0.3b
(neg.f64 (pow.f64 (*.f64 a b) 2))
Compiler

Compiled 58 to 36 computations (37.9% saved)

regimes20.0ms (0.9%)

Counts
7 → 1
Calls
Call 1
Inputs
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
(*.f64 b (*.f64 a (*.f64 a (neg.f64 b))))
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
(neg.f64 (pow.f64 (*.f64 a b) 2))
Outputs
(neg.f64 (pow.f64 (*.f64 a b) 2))
Calls

5 calls:

5.0ms
a
4.0ms
b
3.0ms
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
3.0ms
(*.f64 a a)
3.0ms
(*.f64 (*.f64 (*.f64 a a) b) b)
Results
ErrorSegmentsBranch
0.3b1a
0.3b1b
0.3b1(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
0.3b1(*.f64 (*.f64 (*.f64 a a) b) b)
0.3b1(*.f64 a a)
Compiler

Compiled 86 to 43 computations (50% saved)

regimes37.0ms (1.5%)

Counts
6 → 4
Calls
Call 1
Inputs
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
(*.f64 b (*.f64 a (*.f64 a (neg.f64 b))))
(*.f64 b (*.f64 (*.f64 a a) (neg.f64 b)))
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
Outputs
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 b (*.f64 a (*.f64 a (neg.f64 b))))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 b (*.f64 a (*.f64 a (neg.f64 b))))
Calls

5 calls:

15.0ms
a
6.0ms
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
5.0ms
(*.f64 a a)
5.0ms
b
4.0ms
(*.f64 (*.f64 (*.f64 a a) b) b)
Results
ErrorSegmentsBranch
0.9b4a
4.3b1b
3.2b2(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
3.2b2(*.f64 (*.f64 (*.f64 a a) b) b)
3.2b2(*.f64 a a)
Compiler

Compiled 80 to 39 computations (51.3% saved)

bsearch42.0ms (1.8%)

Algorithm
binary-search
Steps
TimeLeftRight
8.0ms
9.023859062839336e-305
3.5551560794826586e-304
8.0ms
-5.491780911673426e-227
-4.358193551286195e-232
26.0ms
-4.2804867631464354e+220
-2.2487927018023527e+217
Results
24.0ms288×body256valid
14.0ms106×body256infinite
Compiler

Compiled 411 to 262 computations (36.3% saved)

regimes32.0ms (1.4%)

Accuracy

Total -17.8b remaining (-657.6%)

Threshold costs -17.8b (-657.6%)

Counts
3 → 3
Calls
Call 1
Inputs
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(*.f64 a (*.f64 (*.f64 b b) (neg.f64 a)))
Outputs
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
(*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))
Calls

5 calls:

9.0ms
a
7.0ms
(*.f64 a a)
6.0ms
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
5.0ms
(*.f64 (*.f64 (*.f64 a a) b) b)
3.0ms
b
Results
ErrorSegmentsBranch
3.3b3a
5.2b1b
2.7b3(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
2.7b3(*.f64 (*.f64 (*.f64 a a) b) b)
2.7b3(*.f64 a a)
Compiler

Compiled 56 to 31 computations (44.6% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.8658221144000904e+245
3.0266004372932926e+245
0.0ms
0.0
4.4e-323
Compiler

Compiled 15 to 10 computations (33.3% saved)

simplify4.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
039258
Stop Event
done
saturated
Calls
Call 1
Inputs
(neg.f64 (pow.f64 (*.f64 a b) 2))
(if (<=.f64 a -36000000000000001995896518153846077166715451233228075720919473087788992969353780952655808635634149598669414257680465976207989648520298248671861875271845928905522665319122206218753493030472553343569068928773027696476160) (*.f64 a (*.f64 b (*.f64 b (neg.f64 a)))) (if (<=.f64 a -5334411546303883/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 b (*.f64 a (*.f64 a (neg.f64 b)))) (if (<=.f64 a 1080944651146831/3088413288990945714607167766096760666649729152895234960279866913260350640380788374205938472006792060778611417607373228628384532735989280347702230834056678923362997806954442769843550227998248540363155634742320939156524772391123850992097524347673943425610505012700786888921103128284156837954503288400970554554866145951744) (*.f64 a (*.f64 b (*.f64 b (neg.f64 a)))) (*.f64 b (*.f64 a (*.f64 a (neg.f64 b)))))))
(if (<=.f64 (*.f64 a a) 0) (*.f64 a (*.f64 b (*.f64 b (neg.f64 a)))) (if (<=.f64 (*.f64 a a) 200000000000000008865591331916694877000857933217272512160395875661926954165237823719168356730340153384902021777125683944200820531246613453659458355377824296650910559620209942066205153823999633833272476105465504214545753911342860863491894855860224) (neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b)) (*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))))
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
Outputs
(neg.f64 (pow.f64 (*.f64 a b) 2))
(if (<=.f64 a -36000000000000001995896518153846077166715451233228075720919473087788992969353780952655808635634149598669414257680465976207989648520298248671861875271845928905522665319122206218753493030472553343569068928773027696476160) (*.f64 a (*.f64 b (*.f64 b (neg.f64 a)))) (if (<=.f64 a -5334411546303883/106688230926077668385277628651540124754316133157054530566340124988224595805082113144342915213944868651886878569494931847134220826465909841285813696837293280737522521272224232935409252574589024395663440258174185631707051968599623380658622038016) (*.f64 b (*.f64 a (*.f64 a (neg.f64 b)))) (if (<=.f64 a 1080944651146831/3088413288990945714607167766096760666649729152895234960279866913260350640380788374205938472006792060778611417607373228628384532735989280347702230834056678923362997806954442769843550227998248540363155634742320939156524772391123850992097524347673943425610505012700786888921103128284156837954503288400970554554866145951744) (*.f64 a (*.f64 b (*.f64 b (neg.f64 a)))) (*.f64 b (*.f64 a (*.f64 a (neg.f64 b)))))))
(if (<=.f64 (*.f64 a a) 0) (*.f64 a (*.f64 b (*.f64 b (neg.f64 a)))) (if (<=.f64 (*.f64 a a) 200000000000000008865591331916694877000857933217272512160395875661926954165237823719168356730340153384902021777125683944200820531246613453659458355377824296650910559620209942066205153823999633833272476105465504214545753911342860863491894855860224) (neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b)) (*.f64 a (*.f64 b (*.f64 b (neg.f64 a))))))
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
Compiler

Compiled 102 to 47 computations (53.9% saved)

soundness55.0ms (2.3%)

Algorithm
egg-herbie
Rules
410×rational_best-simplify-2
364×rational_best-simplify-2
270×rational_best-simplify-44
252×rational_best-simplify-44
114×rational_best-simplify-47
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0923
11723
22623
34823
49323
513723
616723
721223
829023
936423
1043823
1150523
1250923
0411232
1751136
21231136
32151136
42711136
53211136
63961136
74731136
85561136
96281136
106321136
Stop Event
saturated
saturated
Compiler

Compiled 112 to 59 computations (47.3% saved)

end32.0ms (1.3%)

Remove

(sort a b)

Compiler

Compiled 112 to 45 computations (59.8% saved)

Profiling

Loading profile data...