Expression, p6

Time bar (total: 2.2s)

analyze0.0ms (0%)

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

Compiled 44 to 32 computations (27.3% saved)

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

sample1.9s (88.6%)

Results
1.4s8256×256valid
Precisions
Click to see histograms. Total time spent on operations: 1.1s
ival-<=: 775.0ms (71.7% of total)
ival-add: 152.0ms (14.1% of total)
ival-mult: 65.0ms (6% of total)
ival-and: 52.0ms (4.8% of total)
const: 36.0ms (3.3% of total)
Bogosity

preprocess131.0ms (6%)

Algorithm
egg-herbie
Rules
803×fma-define
756×distribute-rgt-in
716×distribute-lft-in
696×unsub-neg
523×associate--r+
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
061616
1159592
2465592
32135592
46380592
57507592
67923592
Stop Event
node limit
Calls
Call 1
Inputs
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 (neg.f64 a) (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 (neg.f64 b) (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 (neg.f64 c) d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 c (neg.f64 d)))) #s(literal 2 binary64))
(neg.f64 (*.f64 (+.f64 (neg.f64 a) (+.f64 b (+.f64 c d))) #s(literal 2 binary64)))
(neg.f64 (*.f64 (+.f64 a (+.f64 (neg.f64 b) (+.f64 c d))) #s(literal 2 binary64)))
(neg.f64 (*.f64 (+.f64 a (+.f64 b (+.f64 (neg.f64 c) d))) #s(literal 2 binary64)))
(neg.f64 (*.f64 (+.f64 a (+.f64 b (+.f64 c (neg.f64 d)))) #s(literal 2 binary64)))
(*.f64 (+.f64 b (+.f64 a (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 c (+.f64 b (+.f64 a d))) #s(literal 2 binary64))
(*.f64 (+.f64 d (+.f64 b (+.f64 c a))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 c (+.f64 b d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 d (+.f64 c b))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 d c))) #s(literal 2 binary64))
Outputs
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 c (+.f64 b d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 c (+.f64 b d))) #s(literal 2 binary64))
(*.f64 (+.f64 (neg.f64 a) (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (+.f64 (+.f64 (neg.f64 a) b) (+.f64 c d)))
(*.f64 #s(literal 2 binary64) (-.f64 (+.f64 b (+.f64 c d)) a))
(*.f64 #s(literal 2 binary64) (+.f64 c (-.f64 (+.f64 b d) a)))
(*.f64 (-.f64 a (+.f64 c (+.f64 b d))) #s(literal -2 binary64))
(*.f64 (+.f64 a (+.f64 (neg.f64 b) (+.f64 c d))) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 (+.f64 c d) (neg.f64 b))))
(*.f64 #s(literal 2 binary64) (+.f64 a (-.f64 (+.f64 c d) b)))
(*.f64 #s(literal 2 binary64) (+.f64 c (+.f64 a (-.f64 d b))))
(*.f64 (+.f64 a (+.f64 b (+.f64 (neg.f64 c) d))) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 b (+.f64 d (neg.f64 c)))))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 b (-.f64 d c))))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 d (-.f64 b c))))
(*.f64 (+.f64 a (+.f64 b (+.f64 c (neg.f64 d)))) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 b (-.f64 c d))))
(*.f64 #s(literal 2 binary64) (+.f64 a (+.f64 c (-.f64 b d))))
(*.f64 #s(literal -2 binary64) (-.f64 d (+.f64 a (+.f64 b c))))
(*.f64 (-.f64 d (+.f64 a (+.f64 b c))) #s(literal -2 binary64))
(neg.f64 (*.f64 (+.f64 (neg.f64 a) (+.f64 b (+.f64 c d))) #s(literal 2 binary64)))
(*.f64 (+.f64 (+.f64 (neg.f64 a) b) (+.f64 c d)) #s(literal -2 binary64))
(*.f64 (-.f64 (+.f64 b (+.f64 c d)) a) #s(literal -2 binary64))
(*.f64 #s(literal 2 binary64) (-.f64 a (+.f64 c (+.f64 b d))))
(neg.f64 (*.f64 (+.f64 a (+.f64 (neg.f64 b) (+.f64 c d))) #s(literal 2 binary64)))
(*.f64 (+.f64 a (+.f64 (+.f64 c d) (neg.f64 b))) #s(literal -2 binary64))
(*.f64 (+.f64 a (-.f64 (+.f64 c d) b)) #s(literal -2 binary64))
(*.f64 #s(literal 2 binary64) (-.f64 (-.f64 b c) (+.f64 a d)))
(neg.f64 (*.f64 (+.f64 a (+.f64 b (+.f64 (neg.f64 c) d))) #s(literal 2 binary64)))
(*.f64 (+.f64 a (+.f64 b (+.f64 d (neg.f64 c)))) #s(literal -2 binary64))
(*.f64 (+.f64 a (+.f64 b (-.f64 d c))) #s(literal -2 binary64))
(*.f64 #s(literal 2 binary64) (-.f64 (-.f64 c d) (+.f64 a b)))
(*.f64 #s(literal 2 binary64) (-.f64 c (+.f64 a (+.f64 b d))))
(neg.f64 (*.f64 (+.f64 a (+.f64 b (+.f64 c (neg.f64 d)))) #s(literal 2 binary64)))
(*.f64 (+.f64 a (+.f64 b (-.f64 c d))) #s(literal -2 binary64))
(*.f64 (+.f64 a (+.f64 c (-.f64 b d))) #s(literal -2 binary64))
(*.f64 #s(literal 2 binary64) (-.f64 d (+.f64 a (+.f64 b c))))
(*.f64 (+.f64 b (+.f64 a (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 c (+.f64 b d))) #s(literal 2 binary64))
(*.f64 (+.f64 c (+.f64 b (+.f64 a d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 c (+.f64 b d))) #s(literal 2 binary64))
(*.f64 (+.f64 d (+.f64 b (+.f64 c a))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 c (+.f64 b d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 c (+.f64 b d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 d (+.f64 c b))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 c (+.f64 b d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 d c))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
(*.f64 (+.f64 a (+.f64 c (+.f64 b d))) #s(literal 2 binary64))
Symmetry

(sort a b c d)

explain81.0ms (3.7%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
768(-13.522091953929477 -2.509262293719622 3.282103283116761 12.841176189256785)46(-13.141285994115014 -2.9100890826776933 3.4246831839838157 13.112389550887604)(+.f64 a (+.f64 b (+.f64 c d)))
00-0-b
00-0-#s(literal 2 binary64)
00-0-c
00-0-(+.f64 b (+.f64 c d))
00-0-(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
00-0-d
00-0-(+.f64 c d)
00-0-a
Results
44.0ms512×256valid
Compiler

Compiled 81 to 29 computations (64.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 15.0ms
ival-add: 10.0ms (68.1% of total)
ival-mult: 4.0ms (27.2% of total)
const: 1.0ms (6.8% of total)

eval0.0ms (0%)

Compiler

Compiled 4 to 4 computations (0% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
94.3%
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
Compiler

Compiled 26 to 18 computations (30.8% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Rules
+-commutative
*-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01637
12037
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))
Outputs
(*.f64 (+.f64 a (+.f64 b (+.f64 c d))) #s(literal 2 binary64))

soundness0.0ms (0%)

Stop Event
fuel
Compiler

Compiled 13 to 9 computations (30.8% saved)

preprocess34.0ms (1.6%)

Remove

(sort a b c d)

Compiler

Compiled 134 to 92 computations (31.3% saved)

end0.0ms (0%)

Profiling

Loading profile data...