FastMath test2

Time bar (total: 2.4s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
100%99.9%0%0.1%0%0%0%1
Compiler

Compiled 14 to 10 computations (28.6% saved)

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

sample834.0ms (34.7%)

Results
555.0ms8143×0valid
12.0ms59×2valid
7.0ms54×1valid
Precisions
Click to see histograms. Total time spent on operations: 308.0ms
ival-mult: 195.0ms (63.3% of total)
ival-add: 91.0ms (29.5% of total)
const: 16.0ms (5.2% of total)
backward-pass: 6.0ms (1.9% of total)
Bogosity

preprocess74.0ms (3.1%)

Algorithm
egg-herbie
Rules
2208×sum3-define
1952×sum4-define
1908×fnmadd-define
1758×fnmsub-define
1680×fmm-def
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02659
19244
231132
3110430
4360330
5714130
099
1207
2475
3785
4865
5875
0875
Stop Event
iter limit
saturated
node limit
Calls
Call 1
Inputs
(+ (+ (* d1 10) (* d1 d2)) (* d1 20))
Outputs
(+ (+ (* d1 10) (* d1 d2)) (* d1 20))
(*.f64 d1 (+.f64 d2 #s(literal 30 binary64)))
Call 2
Inputs
(+ (+ (* d1 10) (* d1 d2)) (* d1 20))
(+ (+ (* (neg d1) 10) (* (neg d1) d2)) (* (neg d1) 20))
(+ (+ (* d1 10) (* d1 (neg d2))) (* d1 20))
(neg (+ (+ (* (neg d1) 10) (* (neg d1) d2)) (* (neg d1) 20)))
(neg (+ (+ (* d1 10) (* d1 (neg d2))) (* d1 20)))
(+ (+ (* d2 10) (* d2 d1)) (* d2 20))
Outputs
(+ (+ (* d1 10) (* d1 d2)) (* d1 20))
(* d1 (+ d2 30))
(+ (+ (* (neg d1) 10) (* (neg d1) d2)) (* (neg d1) 20))
(* d1 (- -30 d2))
(+ (+ (* d1 10) (* d1 (neg d2))) (* d1 20))
(* d1 (- 30 d2))
(neg (+ (+ (* (neg d1) 10) (* (neg d1) d2)) (* (neg d1) 20)))
(* d1 (+ d2 30))
(neg (+ (+ (* d1 10) (* d1 (neg d2))) (* d1 20)))
(* d1 (+ d2 -30))
(+ (+ (* d2 10) (* d2 d1)) (* d2 20))
(* d2 (+ d1 30))
Symmetry

(negabs d1)

explain241.0ms (10%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-#s(literal 10 binary64)
00-0-#s(literal 20 binary64)
00-0-d1
00-0-d2
00-0-(+.f64 (*.f64 d1 #s(literal 10 binary64)) (*.f64 d1 d2))
00-0-(*.f64 d1 #s(literal 20 binary64))
00-0-(*.f64 d1 d2)
00-0-(*.f64 d1 #s(literal 10 binary64))
00-0-(+.f64 (+.f64 (*.f64 d1 #s(literal 10 binary64)) (*.f64 d1 d2)) (*.f64 d1 #s(literal 20 binary64)))
Results
135.0ms480×0valid
5.0ms14×2valid
4.0ms18×1valid
Compiler

Compiled 81 to 29 computations (64.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 20.0ms
ival-mult: 11.0ms (54.4% of total)
ival-add: 7.0ms (34.6% of total)
const: 1.0ms (4.9% of total)
backward-pass: 1.0ms (4.9% of total)

eval0.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 d1 (+.f64 d2 #s(literal 30 binary64)))
Compiler

Compiled 7 to 5 computations (28.6% saved)

simplify5.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 d2 #s(literal 30 binary64))
cost-diff0
(*.f64 d1 (+.f64 d2 #s(literal 30 binary64)))
Rules
12×*-lowering-*.f32
12×*-lowering-*.f64
fma-lowering-fma.f32
fma-define
+-lowering-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0511
11311
21811
32011
02011
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* d1 (+ d2 30))
d1
(+ d2 30)
d2
30
Outputs
(* d1 (+ d2 30))
(*.f64 d1 (+.f64 d2 #s(literal 30 binary64)))
d1
(+ d2 30)
(+.f64 d2 #s(literal 30 binary64))
d2
30
#s(literal 30 binary64)

localize98.0ms (4.1%)

Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(+.f64 d2 #s(literal 30 binary64))
accuracy100.0%
(*.f64 d1 (+.f64 d2 #s(literal 30 binary64)))
Results
91.0ms252×0valid
0.0ms2valid
0.0ms1valid
Compiler

Compiled 14 to 6 computations (57.1% saved)

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

series3.0ms (0.1%)

Counts
2 → 36
Calls
Call 1
Inputs
#<alt (* d1 (+ d2 30))>
#<alt (+ d2 30)>
Outputs
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* 30 d1)>
#<alt (+ (* 30 d1) (* d1 d2))>
#<alt (+ (* 30 d1) (* d1 d2))>
#<alt (+ (* 30 d1) (* d1 d2))>
#<alt (* d1 d2)>
#<alt (* d2 (+ d1 (* 30 (/ d1 d2))))>
#<alt (* d2 (+ d1 (* 30 (/ d1 d2))))>
#<alt (* d2 (+ d1 (* 30 (/ d1 d2))))>
#<alt (* d1 d2)>
#<alt (* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))>
#<alt (* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))>
#<alt (* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))>
#<alt 30>
#<alt (+ 30 d2)>
#<alt (+ 30 d2)>
#<alt (+ 30 d2)>
#<alt d2>
#<alt (* d2 (+ 1 (* 30 (/ 1 d2))))>
#<alt (* d2 (+ 1 (* 30 (/ 1 d2))))>
#<alt (* d2 (+ 1 (* 30 (/ 1 d2))))>
#<alt d2>
#<alt (* d2 (+ 1 (* 30 (/ 1 d2))))>
#<alt (* d2 (+ 1 (* 30 (/ 1 d2))))>
#<alt (* d2 (+ 1 (* 30 (/ 1 d2))))>
Calls

9 calls:

TimeVariablePointExpression
0.0ms
d2
@-inf
(* d1 (+ d2 30))
0.0ms
d1
@0
(* d1 (+ d2 30))
0.0ms
d1
@-inf
(* d1 (+ d2 30))
0.0ms
d1
@inf
(* d1 (+ d2 30))
0.0ms
d2
@inf
(* d1 (+ d2 30))

rewrite77.0ms (3.2%)

Algorithm
batch-egg-rewrite
Rules
12×*-lowering-*.f32
12×*-lowering-*.f64
fma-lowering-fma.f32
fma-define
+-lowering-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
058
1138
2188
3208
0208
Stop Event
iter limit
saturated
Counts
2 → 10
Calls
Call 1
Inputs
(* d1 (+ d2 30))
(+ d2 30)
Outputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 #s(literal 30 binary64)))
(+.f64 (*.f64 d1 #s(literal 30 binary64)) (*.f64 d1 d2))
(fma.f64 d1 d2 (*.f64 d1 #s(literal 30 binary64)))
(fma.f64 d1 #s(literal 30 binary64) (*.f64 d1 d2))
(fma.f64 d2 d1 (*.f64 d1 #s(literal 30 binary64)))
(fma.f64 #s(literal 30 binary64) d1 (*.f64 d1 d2))
(*.f64 d1 (+.f64 d2 #s(literal 30 binary64)))
(*.f64 (+.f64 d2 #s(literal 30 binary64)) d1)
(+.f64 d2 #s(literal 30 binary64))
(+.f64 #s(literal 30 binary64) d2)

simplify188.0ms (7.8%)

Algorithm
egg-herbie
Rules
2024×sum4-define
1592×fnmadd-define
1490×*-lowering-*.f32
1490×*-lowering-*.f64
1254×fmsub-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
024144
173144
2181144
3535144
41422144
53440144
67878144
08718144
Stop Event
iter limit
node limit
Counts
36 → 36
Calls
Call 1
Inputs
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* 30 d1)
(+ (* 30 d1) (* d1 d2))
(+ (* 30 d1) (* d1 d2))
(+ (* 30 d1) (* d1 d2))
(* d1 d2)
(* d2 (+ d1 (* 30 (/ d1 d2))))
(* d2 (+ d1 (* 30 (/ d1 d2))))
(* d2 (+ d1 (* 30 (/ d1 d2))))
(* d1 d2)
(* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))
(* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))
(* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))
30
(+ 30 d2)
(+ 30 d2)
(+ 30 d2)
d2
(* d2 (+ 1 (* 30 (/ 1 d2))))
(* d2 (+ 1 (* 30 (/ 1 d2))))
(* d2 (+ 1 (* 30 (/ 1 d2))))
d2
(* d2 (+ 1 (* 30 (/ 1 d2))))
(* d2 (+ 1 (* 30 (/ 1 d2))))
(* d2 (+ 1 (* 30 (/ 1 d2))))
Outputs
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* 30 d1)
(*.f64 d1 #s(literal 30 binary64))
(+ (* 30 d1) (* d1 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(+ (* 30 d1) (* d1 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(+ (* 30 d1) (* d1 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 d2)
(*.f64 d1 d2)
(* d2 (+ d1 (* 30 (/ d1 d2))))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d2 (+ d1 (* 30 (/ d1 d2))))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d2 (+ d1 (* 30 (/ d1 d2))))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 d2)
(*.f64 d1 d2)
(* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
30
#s(literal 30 binary64)
(+ 30 d2)
(+.f64 #s(literal 30 binary64) d2)
(+ 30 d2)
(+.f64 #s(literal 30 binary64) d2)
(+ 30 d2)
(+.f64 #s(literal 30 binary64) d2)
d2
(* d2 (+ 1 (* 30 (/ 1 d2))))
(+.f64 #s(literal 30 binary64) d2)
(* d2 (+ 1 (* 30 (/ 1 d2))))
(+.f64 #s(literal 30 binary64) d2)
(* d2 (+ 1 (* 30 (/ 1 d2))))
(+.f64 #s(literal 30 binary64) d2)
d2
(* d2 (+ 1 (* 30 (/ 1 d2))))
(+.f64 #s(literal 30 binary64) d2)
(* d2 (+ 1 (* 30 (/ 1 d2))))
(+.f64 #s(literal 30 binary64) d2)
(* d2 (+ 1 (* 30 (/ 1 d2))))
(+.f64 #s(literal 30 binary64) d2)

eval4.0ms (0.2%)

Compiler

Compiled 228 to 16 computations (93% saved)

prune3.0ms (0.1%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New43346
Fresh000
Picked011
Done000
Total43447
Accuracy
100.0%
Counts
47 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 d1 #s(literal 30 binary64) (*.f64 d1 d2))
100.0%
(*.f64 d1 (+.f64 d2 #s(literal 30 binary64)))
53.3%
(*.f64 d1 d2)
49.1%
(*.f64 d1 #s(literal 30 binary64))
Compiler

Compiled 25 to 17 computations (32% saved)

simplify5.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 d1 d2)
cost-diff6400
(fma.f64 d1 #s(literal 30 binary64) (*.f64 d1 d2))
cost-diff0
(*.f64 d1 d2)
cost-diff0
(*.f64 d1 #s(literal 30 binary64))
Rules
12×*-lowering-*.f32
12×*-lowering-*.f64
fma-lowering-fma.f32
fma-define
+-lowering-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0621
11221
21821
01821
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* d1 30)
d1
30
(* d1 d2)
d1
d2
(+ (* d1 30) (* d1 d2))
d1
30
(* d1 d2)
d2
Outputs
(* d1 30)
(*.f64 d1 #s(literal 30 binary64))
d1
30
#s(literal 30 binary64)
(* d1 d2)
(*.f64 d1 d2)
d1
d2
(+ (* d1 30) (* d1 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
d1
30
#s(literal 30 binary64)
(* d1 d2)
(*.f64 d1 d2)
d2

localize51.0ms (2.1%)

Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(*.f64 d1 d2)
accuracy100.0%
(fma.f64 d1 #s(literal 30 binary64) (*.f64 d1 d2))
accuracy100.0%
(*.f64 d1 d2)
accuracy100.0%
(*.f64 d1 #s(literal 30 binary64))
Results
39.0ms252×0valid
1.0ms2valid
0.0ms1valid
Compiler

Compiled 25 to 7 computations (72% saved)

Precisions
Click to see histograms. Total time spent on operations: 19.0ms
ival-mult: 14.0ms (72.2% of total)
compiled-spec: 4.0ms (20.6% of total)
ival-add: 1.0ms (5.2% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series4.0ms (0.2%)

Counts
3 → 60
Calls
Call 1
Inputs
#<alt (* d1 30)>
#<alt (* d1 d2)>
#<alt (+ (* d1 30) (* d1 d2))>
Outputs
#<alt (* 30 d1)>
#<alt (* 30 d1)>
#<alt (* 30 d1)>
#<alt (* 30 d1)>
#<alt (* 30 d1)>
#<alt (* 30 d1)>
#<alt (* 30 d1)>
#<alt (* 30 d1)>
#<alt (* 30 d1)>
#<alt (* 30 d1)>
#<alt (* 30 d1)>
#<alt (* 30 d1)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 d2)>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* d1 (+ 30 d2))>
#<alt (* -1 (* d1 (- (* -1 d2) 30)))>
#<alt (* -1 (* d1 (- (* -1 d2) 30)))>
#<alt (* -1 (* d1 (- (* -1 d2) 30)))>
#<alt (* -1 (* d1 (- (* -1 d2) 30)))>
#<alt (* 30 d1)>
#<alt (+ (* 30 d1) (* d1 d2))>
#<alt (+ (* 30 d1) (* d1 d2))>
#<alt (+ (* 30 d1) (* d1 d2))>
#<alt (* d1 d2)>
#<alt (* d2 (+ d1 (* 30 (/ d1 d2))))>
#<alt (* d2 (+ d1 (* 30 (/ d1 d2))))>
#<alt (* d2 (+ d1 (* 30 (/ d1 d2))))>
#<alt (* d1 d2)>
#<alt (* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))>
#<alt (* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))>
#<alt (* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))>
Calls

15 calls:

TimeVariablePointExpression
1.0ms
d1
@-inf
(* d1 d2)
0.0ms
d1
@inf
(+ (* d1 30) (* d1 d2))
0.0ms
d1
@inf
(* d1 30)
0.0ms
d1
@0
(* d1 d2)
0.0ms
d1
@inf
(* d1 d2)

rewrite64.0ms (2.7%)

Algorithm
batch-egg-rewrite
Rules
12×*-lowering-*.f32
12×*-lowering-*.f64
fma-lowering-fma.f32
fma-define
+-lowering-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0611
11211
21811
01811
Stop Event
iter limit
saturated
Counts
3 → 12
Calls
Call 1
Inputs
(* d1 30)
(* d1 d2)
(+ (* d1 30) (* d1 d2))
Outputs
(*.f64 d1 #s(literal 30 binary64))
(*.f64 #s(literal 30 binary64) d1)
(*.f64 d1 d2)
(*.f64 d2 d1)
(+.f64 (*.f64 d1 #s(literal 30 binary64)) (*.f64 d1 d2))
(+.f64 (*.f64 d1 d2) (*.f64 d1 #s(literal 30 binary64)))
(fma.f64 d1 #s(literal 30 binary64) (*.f64 d1 d2))
(fma.f64 d1 d2 (*.f64 d1 #s(literal 30 binary64)))
(fma.f64 #s(literal 30 binary64) d1 (*.f64 d1 d2))
(fma.f64 d2 d1 (*.f64 d1 #s(literal 30 binary64)))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(*.f64 (+.f64 #s(literal 30 binary64) d2) d1)

simplify140.0ms (5.8%)

Algorithm
egg-herbie
Rules
2190×sum3-define
1814×fnmadd-define
1430×fmsub-define
1372×sum4-define
1340×fmm-def
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
023222
167222
2177222
3402222
4981222
53151222
67376222
08885222
Stop Event
iter limit
node limit
Counts
60 → 60
Calls
Call 1
Inputs
(* 30 d1)
(* 30 d1)
(* 30 d1)
(* 30 d1)
(* 30 d1)
(* 30 d1)
(* 30 d1)
(* 30 d1)
(* 30 d1)
(* 30 d1)
(* 30 d1)
(* 30 d1)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 d2)
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* d1 (+ 30 d2))
(* -1 (* d1 (- (* -1 d2) 30)))
(* -1 (* d1 (- (* -1 d2) 30)))
(* -1 (* d1 (- (* -1 d2) 30)))
(* -1 (* d1 (- (* -1 d2) 30)))
(* 30 d1)
(+ (* 30 d1) (* d1 d2))
(+ (* 30 d1) (* d1 d2))
(+ (* 30 d1) (* d1 d2))
(* d1 d2)
(* d2 (+ d1 (* 30 (/ d1 d2))))
(* d2 (+ d1 (* 30 (/ d1 d2))))
(* d2 (+ d1 (* 30 (/ d1 d2))))
(* d1 d2)
(* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))
(* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))
(* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))
Outputs
(* 30 d1)
(*.f64 #s(literal 30 binary64) d1)
(* 30 d1)
(*.f64 #s(literal 30 binary64) d1)
(* 30 d1)
(*.f64 #s(literal 30 binary64) d1)
(* 30 d1)
(*.f64 #s(literal 30 binary64) d1)
(* 30 d1)
(*.f64 #s(literal 30 binary64) d1)
(* 30 d1)
(*.f64 #s(literal 30 binary64) d1)
(* 30 d1)
(*.f64 #s(literal 30 binary64) d1)
(* 30 d1)
(*.f64 #s(literal 30 binary64) d1)
(* 30 d1)
(*.f64 #s(literal 30 binary64) d1)
(* 30 d1)
(*.f64 #s(literal 30 binary64) d1)
(* 30 d1)
(*.f64 #s(literal 30 binary64) d1)
(* 30 d1)
(*.f64 #s(literal 30 binary64) d1)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 d2)
(*.f64 d1 d2)
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 (+ 30 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* -1 (* d1 (- (* -1 d2) 30)))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* -1 (* d1 (- (* -1 d2) 30)))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* -1 (* d1 (- (* -1 d2) 30)))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* -1 (* d1 (- (* -1 d2) 30)))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* 30 d1)
(*.f64 #s(literal 30 binary64) d1)
(+ (* 30 d1) (* d1 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(+ (* 30 d1) (* d1 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(+ (* 30 d1) (* d1 d2))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 d2)
(*.f64 d1 d2)
(* d2 (+ d1 (* 30 (/ d1 d2))))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d2 (+ d1 (* 30 (/ d1 d2))))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d2 (+ d1 (* 30 (/ d1 d2))))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* d1 d2)
(*.f64 d1 d2)
(* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(* -1 (* d2 (+ (* -30 (/ d1 d2)) (* -1 d1))))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))

eval9.0ms (0.4%)

Compiler

Compiled 440 to 17 computations (96.1% saved)

prune4.0ms (0.1%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New98098
Fresh000
Picked033
Done011
Total984102
Accuracy
100.0%
Counts
102 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 d1 #s(literal 30 binary64) (*.f64 d1 d2))
100.0%
(*.f64 d1 (+.f64 d2 #s(literal 30 binary64)))
53.3%
(*.f64 d1 d2)
49.1%
(*.f64 d1 #s(literal 30 binary64))
Compiler

Compiled 55 to 31 computations (43.6% saved)

regimes9.0ms (0.4%)

Counts
5 → 1
Calls
Call 1
Inputs
(*.f64 d1 #s(literal 30 binary64))
(*.f64 d1 d2)
(*.f64 d1 (+.f64 d2 #s(literal 30 binary64)))
(+.f64 (+.f64 (*.f64 d1 #s(literal 10 binary64)) (*.f64 d1 d2)) (*.f64 d1 #s(literal 20 binary64)))
(fma.f64 d1 #s(literal 30 binary64) (*.f64 d1 d2))
Outputs
(fma.f64 d1 #s(literal 30 binary64) (*.f64 d1 d2))
Calls

3 calls:

4.0ms
(+.f64 (+.f64 (*.f64 d1 #s(literal 10 binary64)) (*.f64 d1 d2)) (*.f64 d1 #s(literal 20 binary64)))
2.0ms
d1
2.0ms
d2
Results
AccuracySegmentsBranch
100.0%1d1
100.0%1d2
100.0%1(+.f64 (+.f64 (*.f64 d1 #s(literal 10 binary64)) (*.f64 d1 d2)) (*.f64 d1 #s(literal 20 binary64)))
Compiler

Compiled 19 to 13 computations (31.6% saved)

regimes7.0ms (0.3%)

Counts
4 → 1
Calls
Call 1
Inputs
(*.f64 d1 #s(literal 30 binary64))
(*.f64 d1 d2)
(*.f64 d1 (+.f64 d2 #s(literal 30 binary64)))
(+.f64 (+.f64 (*.f64 d1 #s(literal 10 binary64)) (*.f64 d1 d2)) (*.f64 d1 #s(literal 20 binary64)))
Outputs
(*.f64 d1 (+.f64 d2 #s(literal 30 binary64)))
Calls

3 calls:

2.0ms
d1
2.0ms
(+.f64 (+.f64 (*.f64 d1 #s(literal 10 binary64)) (*.f64 d1 d2)) (*.f64 d1 #s(literal 20 binary64)))
2.0ms
d2
Results
AccuracySegmentsBranch
100.0%1d1
100.0%1d2
100.0%1(+.f64 (+.f64 (*.f64 d1 #s(literal 10 binary64)) (*.f64 d1 d2)) (*.f64 d1 #s(literal 20 binary64)))
Compiler

Compiled 19 to 13 computations (31.6% saved)

regimes6.0ms (0.2%)

Counts
2 → 3
Calls
Call 1
Inputs
(*.f64 d1 #s(literal 30 binary64))
(*.f64 d1 d2)
Outputs
(*.f64 d1 d2)
(*.f64 d1 #s(literal 30 binary64))
(*.f64 d1 d2)
Calls

2 calls:

4.0ms
d2
2.0ms
d1
Results
AccuracySegmentsBranch
57.6%3d1
98.4%3d2
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 d1 #s(literal 30 binary64))
Outputs
(*.f64 d1 #s(literal 30 binary64))
Calls

2 calls:

1.0ms
d1
1.0ms
d2
Results
AccuracySegmentsBranch
49.1%1d1
49.1%1d2
Compiler

Compiled 6 to 4 computations (33.3% saved)

bsearch51.0ms (2.1%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
14.0ms
4.904846482782274e-5
357.4418266317535
34.0ms
-260177.3312863542
-0.00017833108978228284
Results
34.0ms288×0valid
Compiler

Compiled 234 to 175 computations (25.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 9.0ms
ival-mult: 6.0ms (65.9% of total)
ival-add: 3.0ms (33% of total)
const: 1.0ms (11% of total)
backward-pass: 0.0ms (0% of total)

simplify11.0ms (0.4%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
if-if-or-not_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01329
12029
Stop Event
saturated
Calls
Call 1
Inputs
(fma.f64 d1 #s(literal 30 binary64) (*.f64 d1 d2))
(*.f64 d1 (+.f64 d2 #s(literal 30 binary64)))
(if (<=.f64 d2 #s(literal -30 binary64)) (*.f64 d1 d2) (if (<=.f64 d2 #s(literal 30 binary64)) (*.f64 d1 #s(literal 30 binary64)) (*.f64 d1 d2)))
(*.f64 d1 #s(literal 30 binary64))
Outputs
(fma.f64 d1 #s(literal 30 binary64) (*.f64 d1 d2))
(*.f64 d1 (+.f64 d2 #s(literal 30 binary64)))
(*.f64 d1 (+.f64 #s(literal 30 binary64) d2))
(if (<=.f64 d2 #s(literal -30 binary64)) (*.f64 d1 d2) (if (<=.f64 d2 #s(literal 30 binary64)) (*.f64 d1 #s(literal 30 binary64)) (*.f64 d1 d2)))
(*.f64 d1 #s(literal 30 binary64))

soundness467.0ms (19.4%)

Rules
2024×sum4-define
1592×fnmadd-define
1490×*-lowering-*.f32
1490×*-lowering-*.f64
1254×fmsub-define
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
058
1138
2188
3208
0208
024144
173144
2181144
3535144
41422144
53440144
67878144
08718144
099
1207
2475
3785
4865
5875
0875
Stop Event
done
iter limit
saturated
iter limit
node limit
iter limit
saturated
Compiler

Compiled 91 to 54 computations (40.7% saved)

preprocess43.0ms (1.8%)

Remove

(negabs d1)

Compiler

Compiled 138 to 74 computations (46.4% saved)

end0.0ms (0%)

Profiling

Loading profile data...