Expression 4, p15

Time bar (total: 3.1s)

analyze30.0ms (1%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%0%100%0%0%0%0
0%0%0%100%0%0%0%1
0%0%0%100%0%0%0%2
50%0%0%100%0%0%0%3
50%0%0%100%0%0%0%4
75%0%0%100%0%0%0%5
75%0%0%100%0%0%0%6
87.5%0%0%100%0%0%0%7
87.5%0%0%100%0%0%0%8
93.8%0%0%100%0%0%0%9
93.8%0%0%100%0%0%0%10
96.9%0%0%100%0%0%0%11
96.9%0%0%100%0%0%0%12
Compiler

Compiled 24 to 15 computations (37.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 14.0ms
...c/correct-round.rkt:119:19: 4.0ms (29% of total)
ival-add: 3.0ms (21.8% of total)
ival-<=: 3.0ms (21.8% of total)
ival-mult: 2.0ms (14.5% of total)
ival-and: 1.0ms (7.3% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

sample1.3s (41.1%)

Results
874.0ms8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 482.0ms
...c/correct-round.rkt:119:19: 155.0ms (32.2% of total)
ival-<=: 143.0ms (29.7% of total)
ival-add: 70.0ms (14.5% of total)
ival-mult: 56.0ms (11.6% of total)
ival-and: 39.0ms (8.1% of total)
const: 15.0ms (3.1% of total)
backward-pass: 3.0ms (0.6% of total)
Bogosity

preprocess60.0ms (1.9%)

Algorithm
egg-herbie
Rules
3194×sum4-define
3170×sum5-define
1436×fnmadd-define
1212×fma-define
1130×sum3-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01430
16526
223226
378826
4367926
044
1124
2294
31094
41644
52144
62434
72604
82624
02624
Stop Event
iter limit
saturated
node limit
Calls
Call 1
Inputs
(* (+ a b) (+ a b))
Outputs
(* (+ a b) (+ a b))
(*.f64 (+.f64 a b) (+.f64 a b))
Call 2
Inputs
(* (+ a b) (+ a b))
(* (+ (neg a) b) (+ (neg a) b))
(* (+ a (neg b)) (+ a (neg b)))
(neg (* (+ (neg a) b) (+ (neg a) b)))
(neg (* (+ a (neg b)) (+ a (neg b))))
(* (+ b a) (+ b a))
Outputs
(* (+ a b) (+ a b))
(square (+ a b))
(* (+ (neg a) b) (+ (neg a) b))
(square (- b a))
(* (+ a (neg b)) (+ a (neg b)))
(square (- b a))
(neg (* (+ (neg a) b) (+ (neg a) b)))
(neg (square (- b a)))
(neg (* (+ a (neg b)) (+ a (neg b))))
(neg (square (- b a)))
(* (+ b a) (+ b a))
(square (+ a b))
Symmetry

(sort a b)

explain49.0ms (1.6%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-b
00-0-(*.f64 (+.f64 a b) (+.f64 a b))
00-0-a
00-0-(+.f64 a b)
Results
34.0ms512×0valid
Compiler

Compiled 39 to 14 computations (64.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 8.0ms
ival-add: 3.0ms (39.5% of total)
ival-mult: 3.0ms (39.5% of total)
const: 1.0ms (13.2% of total)
backward-pass: 0.0ms (0% of total)

eval0.0ms (0%)

Compiler

Compiled 9 to 4 computations (55.6% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 (+.f64 a b) (+.f64 a b))
Compiler

Compiled 9 to 4 computations (55.6% saved)

simplify13.0ms (0.4%)

Algorithm
egg-herbie
Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 a b)
cost-diff0
(*.f64 (+.f64 a b) (+.f64 a b))
Rules
140×fma-define
124×fma-lowering-fma.f32
124×fma-lowering-fma.f64
90×sum3-define
86×+-lowering-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
049
1129
2299
31099
41649
52149
62439
72609
82629
02629
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* (+ a b) (+ a b))
(+ a b)
a
b
Outputs
(* (+ a b) (+ a b))
(*.f64 (+.f64 a b) (+.f64 a b))
(+ a b)
(+.f64 a b)
a
b

localize22.0ms (0.7%)

Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(+.f64 a b)
accuracy100.0%
(*.f64 (+.f64 a b) (+.f64 a b))
Results
15.0ms256×0valid
Compiler

Compiled 15 to 5 computations (66.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 4.0ms
ival-add: 2.0ms (53.7% of total)
ival-mult: 2.0ms (53.7% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series2.0ms (0.1%)

Counts
2 → 48
Calls
Call 1
Inputs
#<alt (* (+ a b) (+ a b))>
#<alt (+ a b)>
Outputs
#<alt (pow b 2)>
#<alt (+ (* 2 (* a b)) (pow b 2))>
#<alt (+ (* a (+ a (* 2 b))) (pow b 2))>
#<alt (+ (* a (+ a (* 2 b))) (pow b 2))>
#<alt (pow a 2)>
#<alt (* (pow a 2) (+ 1 (* 2 (/ b a))))>
#<alt (* (pow a 2) (+ 1 (+ (* 2 (/ b a)) (/ (pow b 2) (pow a 2)))))>
#<alt (* (pow a 2) (+ 1 (+ (* 2 (/ b a)) (/ (pow b 2) (pow a 2)))))>
#<alt (pow a 2)>
#<alt (* (pow a 2) (+ 1 (* 2 (/ b a))))>
#<alt (* (pow a 2) (+ 1 (* -1 (/ (+ (* -2 b) (* -1 (/ (pow b 2) a))) a))))>
#<alt (* (pow a 2) (+ 1 (* -1 (/ (+ (* -2 b) (* -1 (/ (pow b 2) a))) a))))>
#<alt (pow a 2)>
#<alt (+ (* 2 (* a b)) (pow a 2))>
#<alt (+ (* b (+ b (* 2 a))) (pow a 2))>
#<alt (+ (* b (+ b (* 2 a))) (pow a 2))>
#<alt (pow b 2)>
#<alt (* (pow b 2) (+ 1 (* 2 (/ a b))))>
#<alt (* (pow b 2) (+ 1 (+ (* 2 (/ a b)) (/ (pow a 2) (pow b 2)))))>
#<alt (* (pow b 2) (+ 1 (+ (* 2 (/ a b)) (/ (pow a 2) (pow b 2)))))>
#<alt (pow b 2)>
#<alt (* (pow b 2) (+ 1 (* 2 (/ a b))))>
#<alt (* (pow b 2) (+ 1 (* -1 (/ (+ (* -2 a) (* -1 (/ (pow a 2) b))) b))))>
#<alt (* (pow b 2) (+ 1 (* -1 (/ (+ (* -2 a) (* -1 (/ (pow a 2) b))) b))))>
#<alt b>
#<alt (+ a b)>
#<alt (+ a b)>
#<alt (+ a b)>
#<alt a>
#<alt (* a (+ 1 (/ b a)))>
#<alt (* a (+ 1 (/ b a)))>
#<alt (* a (+ 1 (/ b a)))>
#<alt a>
#<alt (* -1 (* a (- (* -1 (/ b a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ b a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ b a)) 1)))>
#<alt a>
#<alt (+ a b)>
#<alt (+ a b)>
#<alt (+ a b)>
#<alt b>
#<alt (* b (+ 1 (/ a b)))>
#<alt (* b (+ 1 (/ a b)))>
#<alt (* b (+ 1 (/ a b)))>
#<alt b>
#<alt (* -1 (* b (- (* -1 (/ a b)) 1)))>
#<alt (* -1 (* b (- (* -1 (/ a b)) 1)))>
#<alt (* -1 (* b (- (* -1 (/ a b)) 1)))>
Calls

12 calls:

TimeVariablePointExpression
0.0ms
b
@-inf
(* (+ a b) (+ a b))
0.0ms
a
@inf
(* (+ a b) (+ a b))
0.0ms
a
@-inf
(* (+ a b) (+ a b))
0.0ms
a
@0
(* (+ a b) (+ a b))
0.0ms
b
@inf
(* (+ a b) (+ a b))

rewrite49.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
160×fma-define
124×fma-lowering-fma.f32
124×fma-lowering-fma.f64
104×+-lowering-+.f64
104×+-lowering-+.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
047
1147
2367
31227
41917
52527
63087
73417
83547
93587
03587
Stop Event
iter limit
saturated
Counts
2 → 35
Calls
Call 1
Inputs
(* (+ a b) (+ a b))
(+ a b)
Outputs
(+.f64 (*.f64 b (+.f64 a b)) (*.f64 a (+.f64 a b)))
(+.f64 (*.f64 a (+.f64 a b)) (*.f64 b (+.f64 a b)))
(+.f64 (*.f64 a a) (*.f64 b (+.f64 b (*.f64 a #s(literal 2 binary64)))))
(+.f64 (*.f64 a b) (+.f64 (*.f64 b (+.f64 a b)) (*.f64 a a)))
(+.f64 (*.f64 b b) (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))))
(+.f64 (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))) (*.f64 b b))
(+.f64 (*.f64 b (+.f64 b (*.f64 a #s(literal 2 binary64)))) (*.f64 a a))
(+.f64 (+.f64 (*.f64 b (+.f64 a b)) (*.f64 a a)) (*.f64 a b))
(+.f64 (*.f64 a (*.f64 b #s(literal 2 binary64))) (+.f64 (*.f64 a a) (*.f64 b b)))
(+.f64 (+.f64 (*.f64 a a) (*.f64 b b)) (*.f64 a (*.f64 b #s(literal 2 binary64))))
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 (+.f64 a b))))
(fma.f64 a a (*.f64 b (+.f64 b (*.f64 a #s(literal 2 binary64)))))
(fma.f64 a b (+.f64 (*.f64 b (+.f64 a b)) (*.f64 a a)))
(fma.f64 a (+.f64 a b) (*.f64 b (+.f64 a b)))
(fma.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))) (*.f64 b b))
(fma.f64 a (*.f64 b #s(literal 2 binary64)) (+.f64 (*.f64 a a) (*.f64 b b)))
(fma.f64 b a (+.f64 (*.f64 b (+.f64 a b)) (*.f64 a a)))
(fma.f64 b b (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))))
(fma.f64 b (+.f64 a b) (*.f64 a (+.f64 a b)))
(fma.f64 b (+.f64 b (*.f64 a #s(literal 2 binary64))) (*.f64 a a))
(fma.f64 b (*.f64 a #s(literal 2 binary64)) (+.f64 (*.f64 a a) (*.f64 b b)))
(fma.f64 (+.f64 a b) a (*.f64 b (+.f64 a b)))
(fma.f64 (+.f64 a b) b (*.f64 a (+.f64 a b)))
(fma.f64 #s(literal 2 binary64) (*.f64 a b) (+.f64 (*.f64 a a) (*.f64 b b)))
(fma.f64 (*.f64 a b) #s(literal 2 binary64) (+.f64 (*.f64 a a) (*.f64 b b)))
(fma.f64 (+.f64 b (*.f64 a #s(literal 2 binary64))) b (*.f64 a a))
(fma.f64 (+.f64 a (*.f64 b #s(literal 2 binary64))) a (*.f64 b b))
(fma.f64 (*.f64 b #s(literal 2 binary64)) a (+.f64 (*.f64 a a) (*.f64 b b)))
(fma.f64 (*.f64 a #s(literal 2 binary64)) b (+.f64 (*.f64 a a) (*.f64 b b)))
(pow.f64 (+.f64 a b) #s(literal 2 binary64))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 (+.f64 a b)))
(*.f64 (+.f64 a b) (+.f64 a b))
(+.f64 a b)
(+.f64 b a)
(exp.f64 (log.f64 (+.f64 a b)))

simplify274.0ms (8.8%)

Algorithm
egg-herbie
Rules
2404×*-lowering-*.f32
2404×*-lowering-*.f64
1036×fma-lowering-fma.f32
1036×fma-lowering-fma.f64
972×fnmsub-define
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
065252
1205213
2581213
31948204
44835204
08169204
Stop Event
iter limit
node limit
Counts
48 → 48
Calls
Call 1
Inputs
(pow b 2)
(+ (* 2 (* a b)) (pow b 2))
(+ (* a (+ a (* 2 b))) (pow b 2))
(+ (* a (+ a (* 2 b))) (pow b 2))
(pow a 2)
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(* (pow a 2) (+ 1 (+ (* 2 (/ b a)) (/ (pow b 2) (pow a 2)))))
(* (pow a 2) (+ 1 (+ (* 2 (/ b a)) (/ (pow b 2) (pow a 2)))))
(pow a 2)
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(* (pow a 2) (+ 1 (* -1 (/ (+ (* -2 b) (* -1 (/ (pow b 2) a))) a))))
(* (pow a 2) (+ 1 (* -1 (/ (+ (* -2 b) (* -1 (/ (pow b 2) a))) a))))
(pow a 2)
(+ (* 2 (* a b)) (pow a 2))
(+ (* b (+ b (* 2 a))) (pow a 2))
(+ (* b (+ b (* 2 a))) (pow a 2))
(pow b 2)
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(* (pow b 2) (+ 1 (+ (* 2 (/ a b)) (/ (pow a 2) (pow b 2)))))
(* (pow b 2) (+ 1 (+ (* 2 (/ a b)) (/ (pow a 2) (pow b 2)))))
(pow b 2)
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(* (pow b 2) (+ 1 (* -1 (/ (+ (* -2 a) (* -1 (/ (pow a 2) b))) b))))
(* (pow b 2) (+ 1 (* -1 (/ (+ (* -2 a) (* -1 (/ (pow a 2) b))) b))))
b
(+ a b)
(+ a b)
(+ a b)
a
(* a (+ 1 (/ b a)))
(* a (+ 1 (/ b a)))
(* a (+ 1 (/ b a)))
a
(* -1 (* a (- (* -1 (/ b a)) 1)))
(* -1 (* a (- (* -1 (/ b a)) 1)))
(* -1 (* a (- (* -1 (/ b a)) 1)))
a
(+ a b)
(+ a b)
(+ a b)
b
(* b (+ 1 (/ a b)))
(* b (+ 1 (/ a b)))
(* b (+ 1 (/ a b)))
b
(* -1 (* b (- (* -1 (/ a b)) 1)))
(* -1 (* b (- (* -1 (/ a b)) 1)))
(* -1 (* b (- (* -1 (/ a b)) 1)))
Outputs
(pow b 2)
(*.f64 b b)
(+ (* 2 (* a b)) (pow b 2))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(+ (* a (+ a (* 2 b))) (pow b 2))
(*.f64 a (+.f64 a (*.f64 b (+.f64 #s(literal 2 binary64) (/.f64 b a)))))
(+ (* a (+ a (* 2 b))) (pow b 2))
(*.f64 a (+.f64 a (*.f64 b (+.f64 #s(literal 2 binary64) (/.f64 b a)))))
(pow a 2)
(*.f64 a a)
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* (pow a 2) (+ 1 (+ (* 2 (/ b a)) (/ (pow b 2) (pow a 2)))))
(*.f64 a (+.f64 a (*.f64 b (+.f64 #s(literal 2 binary64) (/.f64 b a)))))
(* (pow a 2) (+ 1 (+ (* 2 (/ b a)) (/ (pow b 2) (pow a 2)))))
(*.f64 a (+.f64 a (*.f64 b (+.f64 #s(literal 2 binary64) (/.f64 b a)))))
(pow a 2)
(*.f64 a a)
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* (pow a 2) (+ 1 (* -1 (/ (+ (* -2 b) (* -1 (/ (pow b 2) a))) a))))
(*.f64 a (+.f64 a (*.f64 b (+.f64 #s(literal 2 binary64) (/.f64 b a)))))
(* (pow a 2) (+ 1 (* -1 (/ (+ (* -2 b) (* -1 (/ (pow b 2) a))) a))))
(*.f64 a (+.f64 a (*.f64 b (+.f64 #s(literal 2 binary64) (/.f64 b a)))))
(pow a 2)
(*.f64 a a)
(+ (* 2 (* a b)) (pow a 2))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(+ (* b (+ b (* 2 a))) (pow a 2))
(*.f64 a (+.f64 a (*.f64 b (+.f64 #s(literal 2 binary64) (/.f64 b a)))))
(+ (* b (+ b (* 2 a))) (pow a 2))
(*.f64 a (+.f64 a (*.f64 b (+.f64 #s(literal 2 binary64) (/.f64 b a)))))
(pow b 2)
(*.f64 b b)
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* (pow b 2) (+ 1 (+ (* 2 (/ a b)) (/ (pow a 2) (pow b 2)))))
(*.f64 a (+.f64 a (*.f64 b (+.f64 #s(literal 2 binary64) (/.f64 b a)))))
(* (pow b 2) (+ 1 (+ (* 2 (/ a b)) (/ (pow a 2) (pow b 2)))))
(*.f64 a (+.f64 a (*.f64 b (+.f64 #s(literal 2 binary64) (/.f64 b a)))))
(pow b 2)
(*.f64 b b)
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* (pow b 2) (+ 1 (* -1 (/ (+ (* -2 a) (* -1 (/ (pow a 2) b))) b))))
(*.f64 a (+.f64 a (*.f64 b (+.f64 #s(literal 2 binary64) (/.f64 b a)))))
(* (pow b 2) (+ 1 (* -1 (/ (+ (* -2 a) (* -1 (/ (pow a 2) b))) b))))
(*.f64 a (+.f64 a (*.f64 b (+.f64 #s(literal 2 binary64) (/.f64 b a)))))
b
(+ a b)
(+.f64 b a)
(+ a b)
(+.f64 b a)
(+ a b)
(+.f64 b a)
a
(* a (+ 1 (/ b a)))
(+.f64 b a)
(* a (+ 1 (/ b a)))
(+.f64 b a)
(* a (+ 1 (/ b a)))
(+.f64 b a)
a
(* -1 (* a (- (* -1 (/ b a)) 1)))
(+.f64 b a)
(* -1 (* a (- (* -1 (/ b a)) 1)))
(+.f64 b a)
(* -1 (* a (- (* -1 (/ b a)) 1)))
(+.f64 b a)
a
(+ a b)
(+.f64 b a)
(+ a b)
(+.f64 b a)
(+ a b)
(+.f64 b a)
b
(* b (+ 1 (/ a b)))
(+.f64 b a)
(* b (+ 1 (/ a b)))
(+.f64 b a)
(* b (+ 1 (/ a b)))
(+.f64 b a)
b
(* -1 (* b (- (* -1 (/ a b)) 1)))
(+.f64 b a)
(* -1 (* b (- (* -1 (/ a b)) 1)))
(+.f64 b a)
(* -1 (* b (- (* -1 (/ a b)) 1)))
(+.f64 b a)

eval14.0ms (0.5%)

Compiler

Compiled 892 to 69 computations (92.3% saved)

prune7.0ms (0.2%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New1064110
Fresh000
Picked011
Done000
Total1065111
Accuracy
100.0%
Counts
111 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(+.f64 (*.f64 b b) (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))))
100.0%
(*.f64 (+.f64 a b) (+.f64 a b))
98.3%
(*.f64 (+.f64 a b) b)
99.4%
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
98.2%
(*.f64 b b)
Compiler

Compiled 43 to 25 computations (41.9% saved)

simplify8.0ms (0.3%)

Algorithm
egg-herbie
Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 a (*.f64 b #s(literal 2 binary64)))
cost-diff0
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
cost-diff0
(*.f64 b b)
cost-diff0
(+.f64 (*.f64 b b) (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))))
cost-diff0
(+.f64 a b)
cost-diff0
(*.f64 (+.f64 a b) b)
cost-diff0
(*.f64 #s(literal 2 binary64) a)
cost-diff0
(+.f64 b (*.f64 #s(literal 2 binary64) a))
cost-diff0
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
cost-diff0
(*.f64 b b)
Rules
84×fma-define
70×fma-lowering-fma.f32
70×fma-lowering-fma.f64
40×+-lowering-+.f64
40×*-lowering-*.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01361
13355
27055
39955
411155
011155
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* b b)
b
(* b (+ b (* 2 a)))
b
(+ b (* 2 a))
(* 2 a)
2
a
(* (+ a b) b)
(+ a b)
a
b
(+ (* b b) (* a (+ a (* b 2))))
(* b b)
b
(* a (+ a (* b 2)))
a
(+ a (* b 2))
(* b 2)
2
Outputs
(* b b)
(*.f64 b b)
b
(* b (+ b (* 2 a)))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
b
(+ b (* 2 a))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
2
#s(literal 2 binary64)
a
(* (+ a b) b)
(*.f64 b (+.f64 b a))
(+ a b)
(+.f64 b a)
a
b
(+ (* b b) (* a (+ a (* b 2))))
(+.f64 (*.f64 a a) (*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a))))
(* b b)
(*.f64 b b)
b
(* a (+ a (* b 2)))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
a
(+ a (* b 2))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(* b 2)
(*.f64 b #s(literal 2 binary64))
2
#s(literal 2 binary64)

localize327.0ms (10.5%)

Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(*.f64 b b)
accuracy100.0%
(*.f64 b #s(literal 2 binary64))
accuracy100.0%
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
accuracy100.0%
(+.f64 (*.f64 b b) (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))))
accuracy100.0%
(+.f64 a b)
accuracy100.0%
(*.f64 (+.f64 a b) b)
accuracy100.0%
(+.f64 b (*.f64 #s(literal 2 binary64) a))
accuracy100.0%
(*.f64 #s(literal 2 binary64) a)
accuracy100.0%
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
accuracy100.0%
(*.f64 b b)
Results
64.0ms256×0valid
Compiler

Compiled 67 to 14 computations (79.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 24.0ms
ival-mult: 17.0ms (69.9% of total)
ival-add: 7.0ms (28.8% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series13.0ms (0.4%)

Counts
10 → 204
Calls
Call 1
Inputs
#<alt (* b b)>
#<alt (* b (+ b (* 2 a)))>
#<alt (+ b (* 2 a))>
#<alt (* 2 a)>
#<alt (* (+ a b) b)>
#<alt (+ a b)>
#<alt (+ (* b b) (* a (+ a (* b 2))))>
#<alt (* a (+ a (* b 2)))>
#<alt (+ a (* b 2))>
#<alt (* b 2)>
Outputs
#<alt (pow b 2)>
#<alt (pow b 2)>
#<alt (pow b 2)>
#<alt (pow b 2)>
#<alt (pow b 2)>
#<alt (pow b 2)>
#<alt (pow b 2)>
#<alt (pow b 2)>
#<alt (pow b 2)>
#<alt (pow b 2)>
#<alt (pow b 2)>
#<alt (pow b 2)>
#<alt (* 2 (* a b))>
#<alt (* b (+ b (* 2 a)))>
#<alt (* b (+ b (* 2 a)))>
#<alt (* b (+ b (* 2 a)))>
#<alt (pow b 2)>
#<alt (* (pow b 2) (+ 1 (* 2 (/ a b))))>
#<alt (* (pow b 2) (+ 1 (* 2 (/ a b))))>
#<alt (* (pow b 2) (+ 1 (* 2 (/ a b))))>
#<alt (pow b 2)>
#<alt (* (pow b 2) (+ 1 (* 2 (/ a b))))>
#<alt (* (pow b 2) (+ 1 (* 2 (/ a b))))>
#<alt (* (pow b 2) (+ 1 (* 2 (/ a b))))>
#<alt (pow b 2)>
#<alt (+ (* 2 (* a b)) (pow b 2))>
#<alt (+ (* 2 (* a b)) (pow b 2))>
#<alt (+ (* 2 (* a b)) (pow b 2))>
#<alt (* 2 (* a b))>
#<alt (* a (+ (* 2 b) (/ (pow b 2) a)))>
#<alt (* a (+ (* 2 b) (/ (pow b 2) a)))>
#<alt (* a (+ (* 2 b) (/ (pow b 2) a)))>
#<alt (* 2 (* a b))>
#<alt (* -1 (* a (+ (* -2 b) (* -1 (/ (pow b 2) a)))))>
#<alt (* -1 (* a (+ (* -2 b) (* -1 (/ (pow b 2) a)))))>
#<alt (* -1 (* a (+ (* -2 b) (* -1 (/ (pow b 2) a)))))>
#<alt (* 2 a)>
#<alt (+ b (* 2 a))>
#<alt (+ b (* 2 a))>
#<alt (+ b (* 2 a))>
#<alt b>
#<alt (* b (+ 1 (* 2 (/ a b))))>
#<alt (* b (+ 1 (* 2 (/ a b))))>
#<alt (* b (+ 1 (* 2 (/ a b))))>
#<alt b>
#<alt (* -1 (* b (- (* -2 (/ a b)) 1)))>
#<alt (* -1 (* b (- (* -2 (/ a b)) 1)))>
#<alt (* -1 (* b (- (* -2 (/ a b)) 1)))>
#<alt b>
#<alt (+ b (* 2 a))>
#<alt (+ b (* 2 a))>
#<alt (+ b (* 2 a))>
#<alt (* 2 a)>
#<alt (* a (+ 2 (/ b a)))>
#<alt (* a (+ 2 (/ b a)))>
#<alt (* a (+ 2 (/ b a)))>
#<alt (* 2 a)>
#<alt (* -1 (* a (- (* -1 (/ b a)) 2)))>
#<alt (* -1 (* a (- (* -1 (/ b a)) 2)))>
#<alt (* -1 (* a (- (* -1 (/ b a)) 2)))>
#<alt (* 2 a)>
#<alt (* 2 a)>
#<alt (* 2 a)>
#<alt (* 2 a)>
#<alt (* 2 a)>
#<alt (* 2 a)>
#<alt (* 2 a)>
#<alt (* 2 a)>
#<alt (* 2 a)>
#<alt (* 2 a)>
#<alt (* 2 a)>
#<alt (* 2 a)>
#<alt (pow b 2)>
#<alt (+ (* a b) (pow b 2))>
#<alt (+ (* a b) (pow b 2))>
#<alt (+ (* a b) (pow b 2))>
#<alt (* a b)>
#<alt (* a (+ b (/ (pow b 2) a)))>
#<alt (* a (+ b (/ (pow b 2) a)))>
#<alt (* a (+ b (/ (pow b 2) a)))>
#<alt (* a b)>
#<alt (* -1 (* a (+ (* -1 b) (* -1 (/ (pow b 2) a)))))>
#<alt (* -1 (* a (+ (* -1 b) (* -1 (/ (pow b 2) a)))))>
#<alt (* -1 (* a (+ (* -1 b) (* -1 (/ (pow b 2) a)))))>
#<alt (* a b)>
#<alt (* b (+ a b))>
#<alt (* b (+ a b))>
#<alt (* b (+ a b))>
#<alt (pow b 2)>
#<alt (* (pow b 2) (+ 1 (/ a b)))>
#<alt (* (pow b 2) (+ 1 (/ a b)))>
#<alt (* (pow b 2) (+ 1 (/ a b)))>
#<alt (pow b 2)>
#<alt (* (pow b 2) (+ 1 (/ a b)))>
#<alt (* (pow b 2) (+ 1 (/ a b)))>
#<alt (* (pow b 2) (+ 1 (/ a b)))>
#<alt b>
#<alt (+ a b)>
#<alt (+ a b)>
#<alt (+ a b)>
#<alt a>
#<alt (* a (+ 1 (/ b a)))>
#<alt (* a (+ 1 (/ b a)))>
#<alt (* a (+ 1 (/ b a)))>
#<alt a>
#<alt (* -1 (* a (- (* -1 (/ b a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ b a)) 1)))>
#<alt (* -1 (* a (- (* -1 (/ b a)) 1)))>
#<alt a>
#<alt (+ a b)>
#<alt (+ a b)>
#<alt (+ a b)>
#<alt b>
#<alt (* b (+ 1 (/ a b)))>
#<alt (* b (+ 1 (/ a b)))>
#<alt (* b (+ 1 (/ a b)))>
#<alt b>
#<alt (* -1 (* b (- (* -1 (/ a b)) 1)))>
#<alt (* -1 (* b (- (* -1 (/ a b)) 1)))>
#<alt (* -1 (* b (- (* -1 (/ a b)) 1)))>
#<alt (pow a 2)>
#<alt (+ (* 2 (* a b)) (pow a 2))>
#<alt (+ (* b (+ b (* 2 a))) (pow a 2))>
#<alt (+ (* b (+ b (* 2 a))) (pow a 2))>
#<alt (pow b 2)>
#<alt (* (pow b 2) (+ 1 (* 2 (/ a b))))>
#<alt (* (pow b 2) (+ 1 (+ (* 2 (/ a b)) (/ (pow a 2) (pow b 2)))))>
#<alt (* (pow b 2) (+ 1 (+ (* 2 (/ a b)) (/ (pow a 2) (pow b 2)))))>
#<alt (pow b 2)>
#<alt (* (pow b 2) (+ 1 (* 2 (/ a b))))>
#<alt (* (pow b 2) (+ 1 (* -1 (/ (+ (* -2 a) (* -1 (/ (pow a 2) b))) b))))>
#<alt (* (pow b 2) (+ 1 (* -1 (/ (+ (* -2 a) (* -1 (/ (pow a 2) b))) b))))>
#<alt (pow b 2)>
#<alt (+ (* 2 (* a b)) (pow b 2))>
#<alt (+ (* a (+ a (* 2 b))) (pow b 2))>
#<alt (+ (* a (+ a (* 2 b))) (pow b 2))>
#<alt (pow a 2)>
#<alt (* (pow a 2) (+ 1 (* 2 (/ b a))))>
#<alt (* (pow a 2) (+ 1 (+ (* 2 (/ b a)) (/ (pow b 2) (pow a 2)))))>
#<alt (* (pow a 2) (+ 1 (+ (* 2 (/ b a)) (/ (pow b 2) (pow a 2)))))>
#<alt (pow a 2)>
#<alt (* (pow a 2) (+ 1 (* 2 (/ b a))))>
#<alt (* (pow a 2) (+ 1 (* -1 (/ (+ (* -2 b) (* -1 (/ (pow b 2) a))) a))))>
#<alt (* (pow a 2) (+ 1 (* -1 (/ (+ (* -2 b) (* -1 (/ (pow b 2) a))) a))))>
#<alt (* 2 (* a b))>
#<alt (* a (+ a (* 2 b)))>
#<alt (* a (+ a (* 2 b)))>
#<alt (* a (+ a (* 2 b)))>
#<alt (pow a 2)>
#<alt (* (pow a 2) (+ 1 (* 2 (/ b a))))>
#<alt (* (pow a 2) (+ 1 (* 2 (/ b a))))>
#<alt (* (pow a 2) (+ 1 (* 2 (/ b a))))>
#<alt (pow a 2)>
#<alt (* (pow a 2) (+ 1 (* 2 (/ b a))))>
#<alt (* (pow a 2) (+ 1 (* 2 (/ b a))))>
#<alt (* (pow a 2) (+ 1 (* 2 (/ b a))))>
#<alt (pow a 2)>
#<alt (+ (* 2 (* a b)) (pow a 2))>
#<alt (+ (* 2 (* a b)) (pow a 2))>
#<alt (+ (* 2 (* a b)) (pow a 2))>
#<alt (* 2 (* a b))>
#<alt (* b (+ (* 2 a) (/ (pow a 2) b)))>
#<alt (* b (+ (* 2 a) (/ (pow a 2) b)))>
#<alt (* b (+ (* 2 a) (/ (pow a 2) b)))>
#<alt (* 2 (* a b))>
#<alt (* -1 (* b (+ (* -2 a) (* -1 (/ (pow a 2) b)))))>
#<alt (* -1 (* b (+ (* -2 a) (* -1 (/ (pow a 2) b)))))>
#<alt (* -1 (* b (+ (* -2 a) (* -1 (/ (pow a 2) b)))))>
#<alt (* 2 b)>
#<alt (+ a (* 2 b))>
#<alt (+ a (* 2 b))>
#<alt (+ a (* 2 b))>
#<alt a>
#<alt (* a (+ 1 (* 2 (/ b a))))>
#<alt (* a (+ 1 (* 2 (/ b a))))>
#<alt (* a (+ 1 (* 2 (/ b a))))>
#<alt a>
#<alt (* -1 (* a (- (* -2 (/ b a)) 1)))>
#<alt (* -1 (* a (- (* -2 (/ b a)) 1)))>
#<alt (* -1 (* a (- (* -2 (/ b a)) 1)))>
#<alt a>
#<alt (+ a (* 2 b))>
#<alt (+ a (* 2 b))>
#<alt (+ a (* 2 b))>
#<alt (* 2 b)>
#<alt (* b (+ 2 (/ a b)))>
#<alt (* b (+ 2 (/ a b)))>
#<alt (* b (+ 2 (/ a b)))>
#<alt (* 2 b)>
#<alt (* -1 (* b (- (* -1 (/ a b)) 2)))>
#<alt (* -1 (* b (- (* -1 (/ a b)) 2)))>
#<alt (* -1 (* b (- (* -1 (/ a b)) 2)))>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
#<alt (* 2 b)>
Calls

51 calls:

TimeVariablePointExpression
3.0ms
a
@-inf
(+ a b)
1.0ms
a
@-inf
(+ (* b b) (* a (+ a (* b 2))))
1.0ms
a
@0
(* b (+ b (* 2 a)))
0.0ms
b
@-inf
(* b (+ b (* 2 a)))
0.0ms
b
@0
(* b (+ b (* 2 a)))

rewrite25.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
98×fma-define
70×fma-lowering-fma.f32
70×fma-lowering-fma.f64
48×+-lowering-+.f64
48×+-lowering-+.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01350
13444
27544
311144
413944
515344
616344
716444
016444
Stop Event
iter limit
saturated
Counts
10 → 65
Calls
Call 1
Inputs
(* b b)
(* b (+ b (* 2 a)))
(+ b (* 2 a))
(* 2 a)
(* (+ a b) b)
(+ a b)
(+ (* b b) (* a (+ a (* b 2))))
(* a (+ a (* b 2)))
(+ a (* b 2))
(* b 2)
Outputs
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 b)))
(pow.f64 b #s(literal 2 binary64))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 b))
(*.f64 b b)
(+.f64 (*.f64 b b) (*.f64 b (*.f64 #s(literal 2 binary64) a)))
(+.f64 (*.f64 b (*.f64 #s(literal 2 binary64) a)) (*.f64 b b))
(fma.f64 b b (*.f64 b (*.f64 #s(literal 2 binary64) a)))
(fma.f64 b (*.f64 #s(literal 2 binary64) a) (*.f64 b b))
(fma.f64 #s(literal 2 binary64) (*.f64 b a) (*.f64 b b))
(fma.f64 a (*.f64 b #s(literal 2 binary64)) (*.f64 b b))
(fma.f64 (*.f64 #s(literal 2 binary64) a) b (*.f64 b b))
(fma.f64 (*.f64 b #s(literal 2 binary64)) a (*.f64 b b))
(fma.f64 (*.f64 b a) #s(literal 2 binary64) (*.f64 b b))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(*.f64 (+.f64 b (*.f64 #s(literal 2 binary64) a)) b)
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(+.f64 (*.f64 #s(literal 2 binary64) a) b)
(fma.f64 #s(literal 2 binary64) a b)
(fma.f64 a #s(literal 2 binary64) b)
(*.f64 #s(literal 2 binary64) a)
(*.f64 a #s(literal 2 binary64))
(+.f64 (*.f64 b b) (*.f64 b a))
(+.f64 (*.f64 b a) (*.f64 b b))
(fma.f64 b b (*.f64 b a))
(fma.f64 b a (*.f64 b b))
(fma.f64 a b (*.f64 b b))
(*.f64 b (+.f64 b a))
(*.f64 (+.f64 b a) b)
(+.f64 b a)
(+.f64 a b)
(+.f64 (*.f64 b b) (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))))
(+.f64 (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))) (*.f64 b b))
(+.f64 (*.f64 a a) (*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a))))
(+.f64 (*.f64 b (*.f64 #s(literal 2 binary64) a)) (+.f64 (*.f64 b b) (*.f64 a a)))
(+.f64 (+.f64 (*.f64 b b) (*.f64 a a)) (*.f64 b (*.f64 #s(literal 2 binary64) a)))
(+.f64 (*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a))) (*.f64 a a))
(fma.f64 b b (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))))
(fma.f64 b (*.f64 #s(literal 2 binary64) a) (+.f64 (*.f64 b b) (*.f64 a a)))
(fma.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)) (*.f64 a a))
(fma.f64 #s(literal 2 binary64) (*.f64 b a) (+.f64 (*.f64 b b) (*.f64 a a)))
(fma.f64 a a (*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a))))
(fma.f64 a (*.f64 b #s(literal 2 binary64)) (+.f64 (*.f64 b b) (*.f64 a a)))
(fma.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))) (*.f64 b b))
(fma.f64 (*.f64 #s(literal 2 binary64) a) b (+.f64 (*.f64 b b) (*.f64 a a)))
(fma.f64 (+.f64 b (*.f64 #s(literal 2 binary64) a)) b (*.f64 a a))
(fma.f64 (*.f64 b #s(literal 2 binary64)) a (+.f64 (*.f64 b b) (*.f64 a a)))
(fma.f64 (+.f64 a (*.f64 b #s(literal 2 binary64))) a (*.f64 b b))
(fma.f64 (*.f64 b a) #s(literal 2 binary64) (+.f64 (*.f64 b b) (*.f64 a a)))
(+.f64 (*.f64 a a) (*.f64 b (*.f64 #s(literal 2 binary64) a)))
(+.f64 (*.f64 b (*.f64 #s(literal 2 binary64) a)) (*.f64 a a))
(fma.f64 b (*.f64 #s(literal 2 binary64) a) (*.f64 a a))
(fma.f64 #s(literal 2 binary64) (*.f64 b a) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 #s(literal 2 binary64) a)))
(fma.f64 a (*.f64 b #s(literal 2 binary64)) (*.f64 a a))
(fma.f64 (*.f64 #s(literal 2 binary64) a) b (*.f64 a a))
(fma.f64 (*.f64 b #s(literal 2 binary64)) a (*.f64 a a))
(fma.f64 (*.f64 b a) #s(literal 2 binary64) (*.f64 a a))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(*.f64 (+.f64 a (*.f64 b #s(literal 2 binary64))) a)
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(+.f64 (*.f64 b #s(literal 2 binary64)) a)
(fma.f64 b #s(literal 2 binary64) a)
(fma.f64 #s(literal 2 binary64) b a)
(*.f64 b #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) b)

simplify335.0ms (10.7%)

Algorithm
egg-herbie
Rules
2078×*-lowering-*.f32
2078×*-lowering-*.f64
1488×sum4-define
1390×fnmadd-define
918×/-lowering-/.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0102981
1356831
21059831
33101831
47539831
08599831
Stop Event
iter limit
node limit
Counts
204 → 204
Calls
Call 1
Inputs
(pow b 2)
(pow b 2)
(pow b 2)
(pow b 2)
(pow b 2)
(pow b 2)
(pow b 2)
(pow b 2)
(pow b 2)
(pow b 2)
(pow b 2)
(pow b 2)
(* 2 (* a b))
(* b (+ b (* 2 a)))
(* b (+ b (* 2 a)))
(* b (+ b (* 2 a)))
(pow b 2)
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(pow b 2)
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(pow b 2)
(+ (* 2 (* a b)) (pow b 2))
(+ (* 2 (* a b)) (pow b 2))
(+ (* 2 (* a b)) (pow b 2))
(* 2 (* a b))
(* a (+ (* 2 b) (/ (pow b 2) a)))
(* a (+ (* 2 b) (/ (pow b 2) a)))
(* a (+ (* 2 b) (/ (pow b 2) a)))
(* 2 (* a b))
(* -1 (* a (+ (* -2 b) (* -1 (/ (pow b 2) a)))))
(* -1 (* a (+ (* -2 b) (* -1 (/ (pow b 2) a)))))
(* -1 (* a (+ (* -2 b) (* -1 (/ (pow b 2) a)))))
(* 2 a)
(+ b (* 2 a))
(+ b (* 2 a))
(+ b (* 2 a))
b
(* b (+ 1 (* 2 (/ a b))))
(* b (+ 1 (* 2 (/ a b))))
(* b (+ 1 (* 2 (/ a b))))
b
(* -1 (* b (- (* -2 (/ a b)) 1)))
(* -1 (* b (- (* -2 (/ a b)) 1)))
(* -1 (* b (- (* -2 (/ a b)) 1)))
b
(+ b (* 2 a))
(+ b (* 2 a))
(+ b (* 2 a))
(* 2 a)
(* a (+ 2 (/ b a)))
(* a (+ 2 (/ b a)))
(* a (+ 2 (/ b a)))
(* 2 a)
(* -1 (* a (- (* -1 (/ b a)) 2)))
(* -1 (* a (- (* -1 (/ b a)) 2)))
(* -1 (* a (- (* -1 (/ b a)) 2)))
(* 2 a)
(* 2 a)
(* 2 a)
(* 2 a)
(* 2 a)
(* 2 a)
(* 2 a)
(* 2 a)
(* 2 a)
(* 2 a)
(* 2 a)
(* 2 a)
(pow b 2)
(+ (* a b) (pow b 2))
(+ (* a b) (pow b 2))
(+ (* a b) (pow b 2))
(* a b)
(* a (+ b (/ (pow b 2) a)))
(* a (+ b (/ (pow b 2) a)))
(* a (+ b (/ (pow b 2) a)))
(* a b)
(* -1 (* a (+ (* -1 b) (* -1 (/ (pow b 2) a)))))
(* -1 (* a (+ (* -1 b) (* -1 (/ (pow b 2) a)))))
(* -1 (* a (+ (* -1 b) (* -1 (/ (pow b 2) a)))))
(* a b)
(* b (+ a b))
(* b (+ a b))
(* b (+ a b))
(pow b 2)
(* (pow b 2) (+ 1 (/ a b)))
(* (pow b 2) (+ 1 (/ a b)))
(* (pow b 2) (+ 1 (/ a b)))
(pow b 2)
(* (pow b 2) (+ 1 (/ a b)))
(* (pow b 2) (+ 1 (/ a b)))
(* (pow b 2) (+ 1 (/ a b)))
b
(+ a b)
(+ a b)
(+ a b)
a
(* a (+ 1 (/ b a)))
(* a (+ 1 (/ b a)))
(* a (+ 1 (/ b a)))
a
(* -1 (* a (- (* -1 (/ b a)) 1)))
(* -1 (* a (- (* -1 (/ b a)) 1)))
(* -1 (* a (- (* -1 (/ b a)) 1)))
a
(+ a b)
(+ a b)
(+ a b)
b
(* b (+ 1 (/ a b)))
(* b (+ 1 (/ a b)))
(* b (+ 1 (/ a b)))
b
(* -1 (* b (- (* -1 (/ a b)) 1)))
(* -1 (* b (- (* -1 (/ a b)) 1)))
(* -1 (* b (- (* -1 (/ a b)) 1)))
(pow a 2)
(+ (* 2 (* a b)) (pow a 2))
(+ (* b (+ b (* 2 a))) (pow a 2))
(+ (* b (+ b (* 2 a))) (pow a 2))
(pow b 2)
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(* (pow b 2) (+ 1 (+ (* 2 (/ a b)) (/ (pow a 2) (pow b 2)))))
(* (pow b 2) (+ 1 (+ (* 2 (/ a b)) (/ (pow a 2) (pow b 2)))))
(pow b 2)
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(* (pow b 2) (+ 1 (* -1 (/ (+ (* -2 a) (* -1 (/ (pow a 2) b))) b))))
(* (pow b 2) (+ 1 (* -1 (/ (+ (* -2 a) (* -1 (/ (pow a 2) b))) b))))
(pow b 2)
(+ (* 2 (* a b)) (pow b 2))
(+ (* a (+ a (* 2 b))) (pow b 2))
(+ (* a (+ a (* 2 b))) (pow b 2))
(pow a 2)
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(* (pow a 2) (+ 1 (+ (* 2 (/ b a)) (/ (pow b 2) (pow a 2)))))
(* (pow a 2) (+ 1 (+ (* 2 (/ b a)) (/ (pow b 2) (pow a 2)))))
(pow a 2)
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(* (pow a 2) (+ 1 (* -1 (/ (+ (* -2 b) (* -1 (/ (pow b 2) a))) a))))
(* (pow a 2) (+ 1 (* -1 (/ (+ (* -2 b) (* -1 (/ (pow b 2) a))) a))))
(* 2 (* a b))
(* a (+ a (* 2 b)))
(* a (+ a (* 2 b)))
(* a (+ a (* 2 b)))
(pow a 2)
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(pow a 2)
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(pow a 2)
(+ (* 2 (* a b)) (pow a 2))
(+ (* 2 (* a b)) (pow a 2))
(+ (* 2 (* a b)) (pow a 2))
(* 2 (* a b))
(* b (+ (* 2 a) (/ (pow a 2) b)))
(* b (+ (* 2 a) (/ (pow a 2) b)))
(* b (+ (* 2 a) (/ (pow a 2) b)))
(* 2 (* a b))
(* -1 (* b (+ (* -2 a) (* -1 (/ (pow a 2) b)))))
(* -1 (* b (+ (* -2 a) (* -1 (/ (pow a 2) b)))))
(* -1 (* b (+ (* -2 a) (* -1 (/ (pow a 2) b)))))
(* 2 b)
(+ a (* 2 b))
(+ a (* 2 b))
(+ a (* 2 b))
a
(* a (+ 1 (* 2 (/ b a))))
(* a (+ 1 (* 2 (/ b a))))
(* a (+ 1 (* 2 (/ b a))))
a
(* -1 (* a (- (* -2 (/ b a)) 1)))
(* -1 (* a (- (* -2 (/ b a)) 1)))
(* -1 (* a (- (* -2 (/ b a)) 1)))
a
(+ a (* 2 b))
(+ a (* 2 b))
(+ a (* 2 b))
(* 2 b)
(* b (+ 2 (/ a b)))
(* b (+ 2 (/ a b)))
(* b (+ 2 (/ a b)))
(* 2 b)
(* -1 (* b (- (* -1 (/ a b)) 2)))
(* -1 (* b (- (* -1 (/ a b)) 2)))
(* -1 (* b (- (* -1 (/ a b)) 2)))
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
(* 2 b)
Outputs
(pow b 2)
(*.f64 b b)
(pow b 2)
(*.f64 b b)
(pow b 2)
(*.f64 b b)
(pow b 2)
(*.f64 b b)
(pow b 2)
(*.f64 b b)
(pow b 2)
(*.f64 b b)
(pow b 2)
(*.f64 b b)
(pow b 2)
(*.f64 b b)
(pow b 2)
(*.f64 b b)
(pow b 2)
(*.f64 b b)
(pow b 2)
(*.f64 b b)
(pow b 2)
(*.f64 b b)
(* 2 (* a b))
(*.f64 #s(literal 2 binary64) (*.f64 b a))
(* b (+ b (* 2 a)))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* b (+ b (* 2 a)))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* b (+ b (* 2 a)))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(pow b 2)
(*.f64 b b)
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(pow b 2)
(*.f64 b b)
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(pow b 2)
(*.f64 b b)
(+ (* 2 (* a b)) (pow b 2))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(+ (* 2 (* a b)) (pow b 2))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(+ (* 2 (* a b)) (pow b 2))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* 2 (* a b))
(*.f64 #s(literal 2 binary64) (*.f64 b a))
(* a (+ (* 2 b) (/ (pow b 2) a)))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* a (+ (* 2 b) (/ (pow b 2) a)))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* a (+ (* 2 b) (/ (pow b 2) a)))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* 2 (* a b))
(*.f64 #s(literal 2 binary64) (*.f64 b a))
(* -1 (* a (+ (* -2 b) (* -1 (/ (pow b 2) a)))))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* -1 (* a (+ (* -2 b) (* -1 (/ (pow b 2) a)))))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* -1 (* a (+ (* -2 b) (* -1 (/ (pow b 2) a)))))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(+ b (* 2 a))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(+ b (* 2 a))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(+ b (* 2 a))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
b
(* b (+ 1 (* 2 (/ a b))))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(* b (+ 1 (* 2 (/ a b))))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(* b (+ 1 (* 2 (/ a b))))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
b
(* -1 (* b (- (* -2 (/ a b)) 1)))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(* -1 (* b (- (* -2 (/ a b)) 1)))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(* -1 (* b (- (* -2 (/ a b)) 1)))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
b
(+ b (* 2 a))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(+ b (* 2 a))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(+ b (* 2 a))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* a (+ 2 (/ b a)))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(* a (+ 2 (/ b a)))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(* a (+ 2 (/ b a)))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* -1 (* a (- (* -1 (/ b a)) 2)))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(* -1 (* a (- (* -1 (/ b a)) 2)))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(* -1 (* a (- (* -1 (/ b a)) 2)))
(+.f64 b (*.f64 #s(literal 2 binary64) a))
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(* 2 a)
(*.f64 #s(literal 2 binary64) a)
(pow b 2)
(*.f64 b b)
(+ (* a b) (pow b 2))
(*.f64 b (+.f64 b a))
(+ (* a b) (pow b 2))
(*.f64 b (+.f64 b a))
(+ (* a b) (pow b 2))
(*.f64 b (+.f64 b a))
(* a b)
(*.f64 b a)
(* a (+ b (/ (pow b 2) a)))
(*.f64 b (+.f64 b a))
(* a (+ b (/ (pow b 2) a)))
(*.f64 b (+.f64 b a))
(* a (+ b (/ (pow b 2) a)))
(*.f64 b (+.f64 b a))
(* a b)
(*.f64 b a)
(* -1 (* a (+ (* -1 b) (* -1 (/ (pow b 2) a)))))
(*.f64 b (+.f64 b a))
(* -1 (* a (+ (* -1 b) (* -1 (/ (pow b 2) a)))))
(*.f64 b (+.f64 b a))
(* -1 (* a (+ (* -1 b) (* -1 (/ (pow b 2) a)))))
(*.f64 b (+.f64 b a))
(* a b)
(*.f64 b a)
(* b (+ a b))
(*.f64 b (+.f64 b a))
(* b (+ a b))
(*.f64 b (+.f64 b a))
(* b (+ a b))
(*.f64 b (+.f64 b a))
(pow b 2)
(*.f64 b b)
(* (pow b 2) (+ 1 (/ a b)))
(*.f64 b (+.f64 b a))
(* (pow b 2) (+ 1 (/ a b)))
(*.f64 b (+.f64 b a))
(* (pow b 2) (+ 1 (/ a b)))
(*.f64 b (+.f64 b a))
(pow b 2)
(*.f64 b b)
(* (pow b 2) (+ 1 (/ a b)))
(*.f64 b (+.f64 b a))
(* (pow b 2) (+ 1 (/ a b)))
(*.f64 b (+.f64 b a))
(* (pow b 2) (+ 1 (/ a b)))
(*.f64 b (+.f64 b a))
b
(+ a b)
(+.f64 b a)
(+ a b)
(+.f64 b a)
(+ a b)
(+.f64 b a)
a
(* a (+ 1 (/ b a)))
(+.f64 b a)
(* a (+ 1 (/ b a)))
(+.f64 b a)
(* a (+ 1 (/ b a)))
(+.f64 b a)
a
(* -1 (* a (- (* -1 (/ b a)) 1)))
(+.f64 b a)
(* -1 (* a (- (* -1 (/ b a)) 1)))
(+.f64 b a)
(* -1 (* a (- (* -1 (/ b a)) 1)))
(+.f64 b a)
a
(+ a b)
(+.f64 b a)
(+ a b)
(+.f64 b a)
(+ a b)
(+.f64 b a)
b
(* b (+ 1 (/ a b)))
(+.f64 b a)
(* b (+ 1 (/ a b)))
(+.f64 b a)
(* b (+ 1 (/ a b)))
(+.f64 b a)
b
(* -1 (* b (- (* -1 (/ a b)) 1)))
(+.f64 b a)
(* -1 (* b (- (* -1 (/ a b)) 1)))
(+.f64 b a)
(* -1 (* b (- (* -1 (/ a b)) 1)))
(+.f64 b a)
(pow a 2)
(*.f64 a a)
(+ (* 2 (* a b)) (pow a 2))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(+ (* b (+ b (* 2 a))) (pow a 2))
(*.f64 b (+.f64 b (*.f64 a (+.f64 #s(literal 2 binary64) (/.f64 a b)))))
(+ (* b (+ b (* 2 a))) (pow a 2))
(*.f64 b (+.f64 b (*.f64 a (+.f64 #s(literal 2 binary64) (/.f64 a b)))))
(pow b 2)
(*.f64 b b)
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* (pow b 2) (+ 1 (+ (* 2 (/ a b)) (/ (pow a 2) (pow b 2)))))
(*.f64 b (+.f64 b (*.f64 a (+.f64 #s(literal 2 binary64) (/.f64 a b)))))
(* (pow b 2) (+ 1 (+ (* 2 (/ a b)) (/ (pow a 2) (pow b 2)))))
(*.f64 b (+.f64 b (*.f64 a (+.f64 #s(literal 2 binary64) (/.f64 a b)))))
(pow b 2)
(*.f64 b b)
(* (pow b 2) (+ 1 (* 2 (/ a b))))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(* (pow b 2) (+ 1 (* -1 (/ (+ (* -2 a) (* -1 (/ (pow a 2) b))) b))))
(*.f64 b (+.f64 b (*.f64 a (+.f64 #s(literal 2 binary64) (/.f64 a b)))))
(* (pow b 2) (+ 1 (* -1 (/ (+ (* -2 a) (* -1 (/ (pow a 2) b))) b))))
(*.f64 b (+.f64 b (*.f64 a (+.f64 #s(literal 2 binary64) (/.f64 a b)))))
(pow b 2)
(*.f64 b b)
(+ (* 2 (* a b)) (pow b 2))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(+ (* a (+ a (* 2 b))) (pow b 2))
(*.f64 b (+.f64 b (*.f64 a (+.f64 #s(literal 2 binary64) (/.f64 a b)))))
(+ (* a (+ a (* 2 b))) (pow b 2))
(*.f64 b (+.f64 b (*.f64 a (+.f64 #s(literal 2 binary64) (/.f64 a b)))))
(pow a 2)
(*.f64 a a)
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* (pow a 2) (+ 1 (+ (* 2 (/ b a)) (/ (pow b 2) (pow a 2)))))
(*.f64 b (+.f64 b (*.f64 a (+.f64 #s(literal 2 binary64) (/.f64 a b)))))
(* (pow a 2) (+ 1 (+ (* 2 (/ b a)) (/ (pow b 2) (pow a 2)))))
(*.f64 b (+.f64 b (*.f64 a (+.f64 #s(literal 2 binary64) (/.f64 a b)))))
(pow a 2)
(*.f64 a a)
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* (pow a 2) (+ 1 (* -1 (/ (+ (* -2 b) (* -1 (/ (pow b 2) a))) a))))
(*.f64 b (+.f64 b (*.f64 a (+.f64 #s(literal 2 binary64) (/.f64 a b)))))
(* (pow a 2) (+ 1 (* -1 (/ (+ (* -2 b) (* -1 (/ (pow b 2) a))) a))))
(*.f64 b (+.f64 b (*.f64 a (+.f64 #s(literal 2 binary64) (/.f64 a b)))))
(* 2 (* a b))
(*.f64 #s(literal 2 binary64) (*.f64 b a))
(* a (+ a (* 2 b)))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* a (+ a (* 2 b)))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* a (+ a (* 2 b)))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(pow a 2)
(*.f64 a a)
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(pow a 2)
(*.f64 a a)
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* (pow a 2) (+ 1 (* 2 (/ b a))))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(pow a 2)
(*.f64 a a)
(+ (* 2 (* a b)) (pow a 2))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(+ (* 2 (* a b)) (pow a 2))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(+ (* 2 (* a b)) (pow a 2))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* 2 (* a b))
(*.f64 #s(literal 2 binary64) (*.f64 b a))
(* b (+ (* 2 a) (/ (pow a 2) b)))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* b (+ (* 2 a) (/ (pow a 2) b)))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* b (+ (* 2 a) (/ (pow a 2) b)))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* 2 (* a b))
(*.f64 #s(literal 2 binary64) (*.f64 b a))
(* -1 (* b (+ (* -2 a) (* -1 (/ (pow a 2) b)))))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* -1 (* b (+ (* -2 a) (* -1 (/ (pow a 2) b)))))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* -1 (* b (+ (* -2 a) (* -1 (/ (pow a 2) b)))))
(*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64))))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(+ a (* 2 b))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(+ a (* 2 b))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(+ a (* 2 b))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
a
(* a (+ 1 (* 2 (/ b a))))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(* a (+ 1 (* 2 (/ b a))))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(* a (+ 1 (* 2 (/ b a))))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
a
(* -1 (* a (- (* -2 (/ b a)) 1)))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(* -1 (* a (- (* -2 (/ b a)) 1)))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(* -1 (* a (- (* -2 (/ b a)) 1)))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
a
(+ a (* 2 b))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(+ a (* 2 b))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(+ a (* 2 b))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(* b (+ 2 (/ a b)))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(* b (+ 2 (/ a b)))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(* b (+ 2 (/ a b)))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(* -1 (* b (- (* -1 (/ a b)) 2)))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(* -1 (* b (- (* -1 (/ a b)) 2)))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(* -1 (* b (- (* -1 (/ a b)) 2)))
(+.f64 a (*.f64 b #s(literal 2 binary64)))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(* 2 b)
(*.f64 b #s(literal 2 binary64))
(* 2 b)
(*.f64 b #s(literal 2 binary64))

eval33.0ms (1%)

Compiler

Compiled 2228 to 113 computations (94.9% saved)

prune10.0ms (0.3%)

Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New2850285
Fresh000
Picked044
Done011
Total2855290
Accuracy
100.0%
Counts
290 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(+.f64 (*.f64 b b) (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))))
100.0%
(*.f64 (+.f64 a b) (+.f64 a b))
98.3%
(*.f64 (+.f64 a b) b)
99.4%
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
98.2%
(*.f64 b b)
Compiler

Compiled 78 to 39 computations (50% saved)

regimes11.0ms (0.3%)

Counts
5 → 1
Calls
Call 1
Inputs
(*.f64 b b)
(*.f64 (+.f64 a b) b)
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(*.f64 (+.f64 a b) (+.f64 a b))
(+.f64 (*.f64 b b) (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))))
Outputs
(+.f64 (*.f64 b b) (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))))
Calls

4 calls:

3.0ms
(*.f64 (+.f64 a b) (+.f64 a b))
2.0ms
(+.f64 a b)
2.0ms
b
2.0ms
a
Results
AccuracySegmentsBranch
100.0%1a
100.0%1b
100.0%1(*.f64 (+.f64 a b) (+.f64 a b))
100.0%1(+.f64 a b)
Compiler

Compiled 20 to 11 computations (45% saved)

regimes9.0ms (0.3%)

Counts
4 → 1
Calls
Call 1
Inputs
(*.f64 b b)
(*.f64 (+.f64 a b) b)
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(*.f64 (+.f64 a b) (+.f64 a b))
Outputs
(*.f64 (+.f64 a b) (+.f64 a b))
Calls

4 calls:

2.0ms
(*.f64 (+.f64 a b) (+.f64 a b))
2.0ms
(+.f64 a b)
2.0ms
b
2.0ms
a
Results
AccuracySegmentsBranch
100.0%1a
100.0%1b
100.0%1(*.f64 (+.f64 a b) (+.f64 a b))
100.0%1(+.f64 a b)
Compiler

Compiled 20 to 11 computations (45% saved)

regimes5.0ms (0.1%)

Counts
3 → 1
Calls
Call 1
Inputs
(*.f64 b b)
(*.f64 (+.f64 a b) b)
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
Outputs
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
Calls

2 calls:

3.0ms
b
2.0ms
a
Results
AccuracySegmentsBranch
99.4%1a
99.4%1b
Compiler

Compiled 6 to 4 computations (33.3% saved)

regimes3.0ms (0.1%)

Counts
2 → 1
Calls
Call 1
Inputs
(*.f64 b b)
(*.f64 (+.f64 a b) b)
Outputs
(*.f64 (+.f64 a b) b)
Calls

2 calls:

1.0ms
b
1.0ms
a
Results
AccuracySegmentsBranch
98.3%1a
98.3%1b
Compiler

Compiled 6 to 4 computations (33.3% saved)

regimes3.0ms (0.1%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

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

2 calls:

1.0ms
a
1.0ms
b
Results
AccuracySegmentsBranch
98.2%1a
98.2%1b
Compiler

Compiled 6 to 4 computations (33.3% saved)

simplify9.0ms (0.3%)

Algorithm
egg-herbie
Rules
10×*-commutative_binary64
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01433
12333
Stop Event
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 b b) (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))))
(*.f64 (+.f64 a b) (+.f64 a b))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(*.f64 (+.f64 a b) b)
(*.f64 b b)
Outputs
(+.f64 (*.f64 b b) (*.f64 a (+.f64 a (*.f64 b #s(literal 2 binary64)))))
(*.f64 (+.f64 a b) (+.f64 a b))
(*.f64 (+.f64 b a) (+.f64 b a))
(*.f64 b (+.f64 b (*.f64 #s(literal 2 binary64) a)))
(*.f64 b (+.f64 b (*.f64 a #s(literal 2 binary64))))
(*.f64 (+.f64 a b) b)
(*.f64 b (+.f64 b a))
(*.f64 b b)

soundness474.0ms (15.2%)

Rules
2404×*-lowering-*.f32
2404×*-lowering-*.f64
1036×fma-lowering-fma.f32
1036×fma-lowering-fma.f64
972×fnmsub-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
065252
1205213
2581213
31948204
44835204
08169204
047
1147
2367
31227
41917
52527
63087
73417
83547
93587
03587
Stop Event
done
iter limit
saturated
iter limit
node limit
Compiler

Compiled 69 to 35 computations (49.3% saved)

preprocess53.0ms (1.7%)

Compiler

Compiled 226 to 116 computations (48.7% saved)

end0.0ms (0%)

Profiling

Loading profile data...