Browse Source

Adds failing test comparing two COO matrices that should be the same

The matrix is taken from a program used to calculate the torsion constant of a square beam section.  The 'duplicate' matrix is a direct output from the program.  The 'no duplicates' matrix is the result after passing it through the Scipy sparse matrix routines.  If the order and duplicate normalizing functions are working correctly, these two matrices should be identical.
pull/895/head
Mohamed Moussa 4 years ago
parent
commit
640c12562e
  1. 1146
      data/coo_torsion_duplicates.csv
  2. 798
      data/coo_torsion_no_duplicates.csv
  3. 47
      src/Numerics.Tests/LinearAlgebraTests/MatrixHelpers.cs
  4. 24
      src/Numerics.Tests/LinearAlgebraTests/MatrixTests.cs
  5. 8
      src/TestData/TestData.csproj

1146
data/coo_torsion_duplicates.csv

File diff suppressed because it is too large

798
data/coo_torsion_no_duplicates.csv

@ -0,0 +1,798 @@
797
0,0,1.0000000000000635e+00
0,4,1.6666660706202885e-01
0,6,1.6666672627132545e-01
0,25,-6.6666642824811539e-01
0,26,-1.3877787807814457e-16
0,27,-6.6666690508530202e-01
1,1,1.0000000000000635e+00
1,7,1.6666660706202885e-01
1,9,1.6666672627132545e-01
1,28,-6.6666642824811539e-01
1,29,-1.3877787807814457e-16
1,30,-6.6666690508530202e-01
2,2,1.0000000000000635e+00
2,10,1.6666660706202885e-01
2,12,1.6666672627132545e-01
2,31,-6.6666642824811539e-01
2,32,-1.3877787807814457e-16
2,33,-6.6666690508530202e-01
3,3,1.0000000000000635e+00
3,13,1.6666660706202885e-01
3,15,1.6666672627132545e-01
3,34,-6.6666642824811539e-01
3,35,-1.3877787807814457e-16
3,36,-6.6666690508530202e-01
4,0,1.6666660706202885e-01
4,4,1.9999998448461489e+00
4,5,3.3333332135180666e-01
4,6,3.9736425152354492e-08
4,19,1.1981539682754798e-08
4,24,1.6666663481691590e-01
4,25,-6.6666642824811528e-01
4,26,-1.5894570039309830e-07
4,27,-1.3877787807814457e-16
4,61,-5.5511151231257827e-17
4,62,-1.3333332854072273e+00
4,63,-4.7926158222577619e-08
4,64,-1.1102230246251565e-16
4,67,-2.7755575615628914e-17
4,79,-6.6666653926766362e-01
5,4,3.3333332135180666e-01
5,5,3.9999998238993655e+00
5,6,3.3333322666761511e-01
5,18,1.2412378502431662e-10
5,19,3.3333332895088996e-01
5,21,3.3333333896257877e-01
5,23,5.8576107089198445e-08
5,26,-3.0531133177191805e-16
5,44,0.0000000000000000e+00
5,55,-2.0122792321330962e-16
5,56,-2.3430442807476082e-07
5,57,-1.3333333558503151e+00
5,58,-4.9649515054817073e-10
5,59,-1.8041124150158794e-16
5,61,-1.3333333158035598e+00
5,62,-1.3333332854072275e+00
5,63,-2.4980018054066022e-16
5,67,-1.3333329066704600e+00
5,77,-1.9428902930940239e-16
6,0,1.6666672627132545e-01
6,4,3.9736425152354492e-08
6,5,3.3333322666761511e-01
6,6,1.9999998807908170e+00
6,23,1.6666663425490616e-01
6,25,-1.1102230246251565e-16
6,26,-1.5894570058738733e-07
6,27,-6.6666690508530180e-01
6,56,-1.6653345369377348e-16
6,62,5.5511151231257827e-17
6,67,-1.3333329066704613e+00
6,77,-6.6666653701962497e-01
7,1,1.6666660706202885e-01
7,7,1.9999998807907602e+00
7,8,3.3333332078978806e-01
7,9,3.9736425152354492e-08
7,23,1.6666665934201122e-01
7,28,-6.6666642824811528e-01
7,29,-1.5894570039309830e-07
7,30,-1.3877787807814457e-16
7,60,-4.9960036108132044e-16
7,68,-1.3333332831591522e+00
7,69,-2.7755575615628914e-17
7,78,-6.6666663736804477e-01
8,7,3.3333332078978806e-01
8,8,3.9999999316503860e+00
8,9,3.3333321826450812e-01
8,20,3.3333340721900101e-01
8,21,3.3333334149359256e-01
8,22,2.1754704324667011e-08
8,23,1.0285343196445787e-09
8,29,-3.0531133177191805e-16
8,48,-1.3333336288760043e+00
8,49,-1.3333333659743705e+00
8,50,-4.7184478546569153e-16
8,53,-2.4286128663675299e-16
8,54,-8.7018816583017689e-08
8,55,4.1633363423443370e-17
8,60,-4.1141372530972831e-09
8,68,-1.3333332831591522e+00
8,69,-1.3333328730580321e+00
8,76,-2.2204460492503131e-16
8,78,-3.8857805861880479e-16
9,1,1.6666672627132545e-01
9,7,3.9736425152354492e-08
9,8,3.3333321826450812e-01
9,9,1.9999998807908210e+00
9,22,1.6666664265801451e-01
9,28,-1.1102230246251565e-16
9,29,-1.5894570058738733e-07
9,30,-6.6666690508530180e-01
9,54,-1.3877787807814457e-16
9,68,5.5511151231257827e-17
9,69,-1.3333328730580334e+00
9,76,-6.6666657063205847e-01
10,2,1.6666660706202885e-01
10,10,1.9999998791977114e+00
10,11,3.3333333280232880e-01
10,12,3.9736425152354492e-08
10,16,5.3101816036112034e-10
10,17,1.6666664626743602e-01
10,31,-6.6666642824811528e-01
10,32,-1.5894570039309830e-07
10,33,-1.3877787807814457e-16
10,40,-7.6327832942979512e-17
10,41,-2.1240722999915640e-09
10,42,-6.6666658506974419e-01
10,70,-1.3333333312093156e+00
10,71,-2.7755575615628914e-17
10,73,-2.4980018054066022e-16
11,10,3.3333333280232880e-01
11,11,3.9999998448461902e+00
11,12,3.3333321412405759e-01
11,16,3.3333332650870068e-01
11,19,3.3333335646234508e-01
11,24,5.1717963932207680e-08
11,32,-3.0531133177191805e-16
11,41,1.6653345369377348e-16
11,45,-3.8857805861880479e-16
11,64,-3.3306690738754696e-16
11,65,-2.0687185522255680e-07
11,66,-1.3333334258493803e+00
11,70,-1.3333333312093165e+00
11,71,-1.3333328564962299e+00
11,73,-1.3333333060348034e+00
11,80,-5.5511151231257827e-17
12,2,1.6666672627132545e-01
12,10,3.9736425152354492e-08
12,11,3.3333321412405759e-01
12,12,1.9999998807908235e+00
12,24,1.6666664679846580e-01
12,31,-1.1102230246251565e-16
12,32,-1.5894570058738733e-07
12,33,-6.6666690508530180e-01
12,65,-5.5511151231257827e-17
12,70,5.5511151231257827e-17
12,71,-1.3333328564962312e+00
12,80,-6.6666658719386329e-01
13,3,1.6666660706202885e-01
13,13,1.9999998211861394e+00
13,14,3.3333330932469063e-01
13,15,5.9604635377884350e-08
13,22,1.6666663107069163e-01
13,34,-6.6666642824811528e-01
13,35,-2.3841854145112418e-07
13,36,-1.3877787807814457e-16
13,37,1.1102230246251565e-16
13,52,-2.7755575615628914e-16
13,72,-1.3333332372987625e+00
13,75,-6.6666652428276629e-01
14,13,3.3333330932469063e-01
14,14,3.9999997243031120e+00
14,15,3.3333315451944362e-01
14,16,3.3333337153632681e-01
14,17,4.0267436245351053e-08
14,18,3.3649865329242243e-08
14,20,3.3333331415489098e-01
14,22,1.7981716786517311e-08
14,35,-2.7755575615628914e-17
14,37,-1.3333326180777745e+00
14,38,-1.6106974423668596e-07
14,39,-2.0816681711721685e-16
14,40,-3.0531133177191805e-16
14,43,-2.4980018054066022e-16
14,46,-1.3333334861453072e+00
14,47,-1.3459946086868957e-07
14,51,-1.3333332566195639e+00
14,52,-7.1926866837546122e-08
14,53,-2.7755575615628914e-17
14,72,-1.3333332372987634e+00
14,74,-1.6653345369377348e-16
14,75,-2.4980018054066022e-16
15,3,1.6666672627132545e-01
15,13,5.9604635377884350e-08
15,14,3.3333315451944362e-01
15,15,1.9999998211862708e+00
15,17,1.6666666666668564e-01
15,34,-1.1102230246251565e-16
15,35,-2.3841854097927939e-07
15,36,-6.6666690508530180e-01
15,37,-1.3333326180777756e+00
15,38,-1.6653345369377348e-16
15,39,-6.6666666666674246e-01
15,72,-1.3877787807814457e-16
16,10,5.3101816036112034e-10
16,11,3.3333332650870068e-01
16,14,3.3333337153632681e-01
16,16,3.9999999507963504e+00
16,17,3.3333327319767958e-01
16,18,3.3333332928817949e-01
16,19,1.5870211989829067e-08
16,38,-1.3877787807814457e-16
16,40,-1.3333330927907183e+00
16,41,-2.1240719044746115e-09
16,42,-1.1102230246251565e-16
16,43,-1.3333333171527184e+00
16,44,-1.3877787807814457e-16
16,45,-6.3480847911634442e-08
16,46,-1.3333334861453068e+00
16,47,-3.0531133177191805e-16
16,66,-1.2490009027033011e-16
16,70,-1.3877787807814457e-16
16,73,-1.3333333060348034e+00
17,10,1.6666664626743602e-01
17,14,4.0267436245351053e-08
17,15,1.6666666666668564e-01
17,16,3.3333327319767958e-01
17,17,1.9999998791977129e+00
17,37,-2.2204460492503131e-16
17,38,-1.6106974496526982e-07
17,39,-6.6666666666674212e-01
17,40,-1.3333330927907188e+00
17,41,-1.6653345369377348e-16
17,42,-6.6666658506974397e-01
17,46,-1.1102230246251565e-16
18,5,1.2412378502431662e-10
18,14,3.3649865329242243e-08
18,16,3.3333332928817949e-01
18,18,3.9999998986780634e+00
18,19,3.3333331060123628e-01
18,20,3.3333326268679375e-01
18,21,3.3333336320915563e-01
18,43,-1.3333333171527180e+00
18,44,-1.3333332424049451e+00
18,45,-2.4980018054066022e-16
18,46,-9.0205620750793969e-17
18,47,-1.3459946129196210e-07
18,50,-2.4980018054066022e-16
18,51,0.0000000000000000e+00
18,57,-2.4286128663675299e-16
18,58,-4.9649478972568772e-10
18,59,-1.3333334528366225e+00
18,61,-1.1102230246251565e-16
18,74,-1.3333330507471746e+00
19,4,1.1981539682754798e-08
19,5,3.3333332895088996e-01
19,11,3.3333335646234508e-01
19,16,1.5870211989829067e-08
19,18,3.3333331060123628e-01
19,19,3.9999999164447679e+00
19,24,3.3333328161536635e-01
19,43,-1.3877787807814457e-16
19,44,-1.3333332424049449e+00
19,45,-6.3480847176111688e-08
19,58,-5.8286708792820718e-16
19,61,-1.3333333158035596e+00
19,62,-1.1102230246251565e-16
19,63,-4.7926158694422405e-08
19,64,-1.3333331264614652e+00
19,65,-3.6082248300317588e-16
19,66,-1.3333334258493805e+00
19,73,-3.0531133177191805e-16
19,79,-8.3266726846886741e-17
20,8,3.3333340721900101e-01
20,14,3.3333331415489098e-01
20,18,3.3333326268679375e-01
20,20,3.9999999462887441e+00
20,21,1.7903771340291615e-08
20,22,3.3333331346512407e-01
20,47,-1.9428902930940239e-16
20,48,-1.3333336288760038e+00
20,49,-5.5511151231257827e-17
20,50,-7.1615085348031293e-08
20,51,-1.3333332566195630e+00
20,52,-2.4980018054066022e-16
20,53,-1.3333332538604972e+00
20,54,-1.1102230246251565e-16
20,59,-9.7144514654701197e-17
20,74,-1.3333330507471750e+00
21,5,3.3333333896257877e-01
21,8,3.3333334149359256e-01
21,18,3.3333336320915563e-01
21,20,1.7903771340291615e-08
21,21,3.9999999462887339e+00
21,23,3.3333325386047913e-01
21,48,-1.1102230246251565e-16
21,49,-1.3333333659743714e+00
21,50,-7.1615085084353325e-08
21,55,-1.3333330154419167e+00
21,56,-3.0531133177191805e-16
21,57,-1.3333333558503146e+00
21,58,-3.0531133177191805e-16
21,59,-1.3333334528366230e+00
21,60,2.4980018054066022e-16
21,74,-2.7755575615628914e-17
22,8,2.1754704324667011e-08
22,9,1.6666664265801451e-01
22,13,1.6666663107069163e-01
22,14,1.7981716786517311e-08
22,20,3.3333331346512407e-01
22,22,1.9999998807907544e+00
22,48,-1.8041124150158794e-16
22,51,1.1102230246251565e-16
22,52,-7.1926867496741043e-08
22,53,-1.3333332538604965e+00
22,54,-8.7018816846695657e-08
22,69,-2.4980018054066022e-16
22,72,-1.6653345369377348e-16
22,75,-6.6666652428276640e-01
22,76,-6.6666657063205814e-01
23,5,5.8576107089198445e-08
23,6,1.6666663425490616e-01
23,7,1.6666665934201122e-01
23,8,1.0285343196445787e-09
23,21,3.3333325386047913e-01
23,23,1.9999998211861145e+00
23,49,-1.1102230246251565e-16
23,55,-1.3333330154419176e+00
23,56,-2.3430442812333308e-07
23,57,4.1633363423443370e-17
23,60,-4.1141369408470574e-09
23,67,-1.6653345369377348e-16
23,68,-2.7755575615628914e-16
23,77,-6.6666653701962486e-01
23,78,-6.6666663736804455e-01
24,4,1.6666663481691590e-01
24,11,5.1717963932207680e-08
24,12,1.6666664679846580e-01
24,19,3.3333328161536635e-01
24,24,1.9999998448461360e+00
24,63,-4.4408920985006262e-16
24,64,-1.3333331264614650e+00
24,65,-2.0687185525725127e-07
24,66,-3.0531133177191805e-16
24,71,-8.3266726846886741e-17
24,79,-6.6666653926766339e-01
24,80,-6.6666658719386340e-01
25,0,-6.6666642824811539e-01
25,4,-6.6666642824811528e-01
25,6,-1.1102230246251565e-16
25,25,2.6666666666668362e+00
25,26,-1.3333338101706049e+00
25,27,-3.8857805861880479e-16
26,0,-1.3877787807814457e-16
26,4,-1.5894570039309830e-07
26,5,-3.0531133177191805e-16
26,6,-1.5894570058738733e-07
26,25,-1.3333338101706049e+00
26,26,5.3333330154421974e+00
26,27,-1.3333328564962312e+00
26,62,-1.3333328564962321e+00
26,67,-1.3333331743877268e+00
27,0,-6.6666690508530202e-01
27,4,-1.3877787807814457e-16
27,6,-6.6666690508530180e-01
27,25,-3.8857805861880479e-16
27,26,-1.3333328564962312e+00
27,27,2.6666666666668362e+00
28,1,-6.6666642824811539e-01
28,7,-6.6666642824811528e-01
28,9,-1.1102230246251565e-16
28,28,2.6666666666668362e+00
28,29,-1.3333338101706049e+00
28,30,-3.8857805861880479e-16
29,1,-1.3877787807814457e-16
29,7,-1.5894570039309830e-07
29,8,-3.0531133177191805e-16
29,9,-1.5894570058738733e-07
29,28,-1.3333338101706049e+00
29,29,5.3333330154421974e+00
29,30,-1.3333328564962312e+00
29,68,-1.3333328564962321e+00
29,69,-1.3333331743877268e+00
30,1,-6.6666690508530202e-01
30,7,-1.3877787807814457e-16
30,9,-6.6666690508530180e-01
30,28,-3.8857805861880479e-16
30,29,-1.3333328564962312e+00
30,30,2.6666666666668362e+00
31,2,-6.6666642824811539e-01
31,10,-6.6666642824811528e-01
31,12,-1.1102230246251565e-16
31,31,2.6666666666668362e+00
31,32,-1.3333338101706049e+00
31,33,-3.8857805861880479e-16
32,2,-1.3877787807814457e-16
32,10,-1.5894570039309830e-07
32,11,-3.0531133177191805e-16
32,12,-1.5894570058738733e-07
32,31,-1.3333338101706049e+00
32,32,5.3333330154421974e+00
32,33,-1.3333328564962312e+00
32,70,-1.3333328564962321e+00
32,71,-1.3333331743877268e+00
33,2,-6.6666690508530202e-01
33,10,-1.3877787807814457e-16
33,12,-6.6666690508530180e-01
33,31,-3.8857805861880479e-16
33,32,-1.3333328564962312e+00
33,33,2.6666666666668362e+00
34,3,-6.6666642824811539e-01
34,13,-6.6666642824811528e-01
34,15,-1.1102230246251565e-16
34,34,2.6666666666668362e+00
34,35,-1.3333338101706049e+00
34,36,-3.8857805861880479e-16
35,3,-1.3877787807814457e-16
35,13,-2.3841854145112418e-07
35,14,-2.7755575615628914e-17
35,15,-2.3841854097927939e-07
35,34,-1.3333338101706049e+00
35,35,5.3333328564966678e+00
35,36,-1.3333328564962312e+00
35,37,-1.3333331743878027e+00
35,72,-1.3333325386049451e+00
36,3,-6.6666690508530202e-01
36,13,-1.3877787807814457e-16
36,15,-6.6666690508530180e-01
36,34,-3.8857805861880479e-16
36,35,-1.3333328564962312e+00
36,36,2.6666666666668362e+00
37,13,1.1102230246251565e-16
37,14,-1.3333326180777745e+00
37,15,-1.3333326180777756e+00
37,17,-2.2204460492503131e-16
37,35,-1.3333331743878027e+00
37,37,5.3333325386052834e+00
37,38,-1.3333333333334849e+00
37,39,-3.1789136306636934e-07
37,72,-4.7683708270795933e-07
38,14,-1.6106974423668596e-07
38,15,-1.6653345369377348e-16
38,16,-1.3877787807814457e-16
38,17,-1.6106974496526982e-07
38,37,-1.3333333333334849e+00
38,38,5.3333330111940658e+00
38,39,-1.3333326975506061e+00
38,40,-1.3333336427285167e+00
38,46,-1.3333330154419687e+00
39,14,-2.0816681711721685e-16
39,15,-6.6666666666674246e-01
39,17,-6.6666666666674212e-01
39,37,-3.1789136306636934e-07
39,38,-1.3333326975506061e+00
39,39,2.6666663487754541e+00
40,10,-7.6327832942979512e-17
40,14,-3.0531133177191805e-16
40,16,-1.3333330927907183e+00
40,17,-1.3333330927907188e+00
40,38,-1.3333336427285167e+00
40,40,5.3333331658914354e+00
40,41,-1.3333331701394893e+00
40,42,-1.6319386419993975e-07
40,46,-4.2481269613148243e-09
41,10,-2.1240722999915640e-09
41,11,1.6653345369377348e-16
41,16,-2.1240719044746115e-09
41,17,-1.6653345369377348e-16
41,40,-1.3333331701394893e+00
41,41,5.3333333290852272e+00
41,42,-1.3333331701394686e+00
41,70,-1.3333334965272181e+00
41,73,-1.3333334880309073e+00
42,10,-6.6666658506974419e-01
42,16,-1.1102230246251565e-16
42,17,-6.6666658506974397e-01
42,40,-1.6319386419993975e-07
42,41,-1.3333331701394686e+00
42,42,2.6666665034728210e+00
43,14,-2.4980018054066022e-16
43,16,-1.3333333171527184e+00
43,18,-1.3333333171527180e+00
43,19,-1.3877787807814457e-16
43,43,5.3333332541487977e+00
43,44,-4.7488843524234881e-08
43,45,-1.3333332110967215e+00
43,46,-3.1695697511047172e-08
43,47,-1.3333333295620977e+00
44,5,0.0000000000000000e+00
44,16,-1.3877787807814457e-16
44,18,-1.3333332424049451e+00
44,19,-1.3333332424049449e+00
44,43,-4.7488843524234881e-08
44,44,5.3333331905784780e+00
44,45,-1.3333333605922624e+00
44,58,-1.3333332024214579e+00
44,61,-9.5266023403262068e-08
45,11,-3.8857805861880479e-16
45,16,-6.3480847911634442e-08
45,18,-2.4980018054066022e-16
45,19,-6.3480847176111688e-08
45,43,-1.3333332110967215e+00
45,44,-1.3333333605922624e+00
45,45,5.3333332063716608e+00
45,66,-1.3333331155423906e+00
45,73,-1.3333333921785908e+00
46,14,-1.3333334861453072e+00
46,16,-1.3333334861453068e+00
46,17,-1.1102230246251565e-16
46,18,-9.0205620750793969e-17
46,38,-1.3333330154419687e+00
46,40,-4.2481269613148243e-09
46,43,-3.1695697511047172e-08
46,46,5.3333332973895828e+00
46,47,-1.3333332737131749e+00
47,14,-1.3459946086868957e-07
47,16,-3.0531133177191805e-16
47,18,-1.3459946129196210e-07
47,20,-1.9428902930940239e-16
47,43,-1.3333333295620977e+00
47,46,-1.3333332737131749e+00
47,47,5.3333330641344547e+00
47,51,-1.3333330750620429e+00
47,74,-1.3333331165982165e+00
48,8,-1.3333336288760043e+00
48,20,-1.3333336288760038e+00
48,21,-1.1102230246251565e-16
48,22,-1.8041124150158794e-16
48,48,5.3333334771872121e+00
48,49,2.0983215165415459e-14
48,50,-1.3333331557777217e+00
48,53,1.4385376706504971e-07
48,54,-1.3333332075112696e+00
49,8,-1.3333333659743705e+00
49,20,-5.5511151231257827e-17
49,21,-1.3333333659743714e+00
49,23,-1.1102230246251565e-16
49,48,2.0983215165415459e-14
49,49,5.3333333251051496e+00
49,50,-1.3333335108890099e+00
49,55,-8.2282747282391711e-09
49,60,-1.3333330740391436e+00
50,8,-4.7184478546569153e-16
50,18,-2.4980018054066022e-16
50,20,-7.1615085348031293e-08
50,21,-7.1615085084353325e-08
50,48,-1.3333331557777217e+00
50,49,-1.3333335108890099e+00
50,50,5.3333331901032199e+00
50,59,-1.3333330264323082e+00
50,74,-1.3333333537740089e+00
51,14,-1.3333332566195639e+00
51,18,0.0000000000000000e+00
51,20,-1.3333332566195630e+00
51,22,1.1102230246251565e-16
51,47,-1.3333330750620429e+00
51,51,5.3333331109221360e+00
51,52,-1.3333333002097261e+00
51,53,1.5091984217896481e-08
51,74,-2.3750322497573251e-07
52,13,-2.7755575615628914e-16
52,14,-7.1926866837546122e-08
52,20,-2.4980018054066022e-16
52,22,-7.1926867496741043e-08
52,51,-1.3333333002097261e+00
52,52,5.3333331894796299e+00
52,53,-1.3333333966409118e+00
52,72,-1.3333330485655326e+00
52,75,-1.3333333002097245e+00
53,8,-2.4286128663675299e-16
53,14,-2.7755575615628914e-17
53,20,-1.3333332538604972e+00
53,22,-1.3333332538604965e+00
53,48,1.4385376706504971e-07
53,51,1.5091984217896481e-08
53,52,-1.3333333966409118e+00
53,53,5.3333334922791540e+00
53,54,-1.3333337468629995e+00
54,8,-8.7018816583017689e-08
54,9,-1.3877787807814457e-16
54,20,-1.1102230246251565e-16
54,22,-8.7018816846695657e-08
54,48,-1.3333332075112696e+00
54,53,-1.3333337468629995e+00
54,54,5.3333331592958553e+00
54,69,-1.3333331412641174e+00
54,76,-1.3333328896198351e+00
55,5,-2.0122792321330962e-16
55,8,4.1633363423443370e-17
55,21,-1.3333330154419167e+00
55,23,-1.3333330154419176e+00
55,49,-8.2282747282391711e-09
55,55,5.3333331743877039e+00
55,56,-1.3333334083871176e+00
55,57,-1.5071745601558106e-07
55,60,-1.3333335761710208e+00
56,5,-2.3430442807476082e-07
56,6,-1.6653345369377348e-16
56,21,-3.0531133177191805e-16
56,23,-2.3430442812333308e-07
56,55,-1.3333334083871176e+00
56,56,5.3333328647246088e+00
56,57,-1.3333329568446926e+00
56,67,-1.3333330740392504e+00
56,77,-1.3333329568446919e+00
57,5,-1.3333333558503151e+00
57,18,-2.4286128663675299e-16
57,21,-1.3333333558503146e+00
57,23,4.1633363423443370e-17
57,55,-1.5071745601558106e-07
57,56,-1.3333329568446926e+00
57,57,5.3333332768889825e+00
57,58,-1.3333335518992371e+00
57,59,9.4273033490743785e-08
58,5,-4.9649515054817073e-10
58,18,-4.9649478972568772e-10
58,19,-5.8286708792820718e-16
58,21,-3.0531133177191805e-16
58,44,-1.3333332024214579e+00
58,57,-1.3333335518992371e+00
58,58,5.3333333323403673e+00
58,59,-1.3333333033135135e+00
58,61,-1.3333332737131687e+00
59,5,-1.8041124150158794e-16
59,18,-1.3333334528366225e+00
59,20,-9.7144514654701197e-17
59,21,-1.3333334528366230e+00
59,50,-1.3333330264323082e+00
59,57,9.4273033490743785e-08
59,58,-1.3333333033135135e+00
59,59,5.3333332843762262e+00
59,74,-1.4323019192907793e-07
60,7,-4.9960036108132044e-16
60,8,-4.1141372530972831e-09
60,21,2.4980018054066022e-16
60,23,-4.1141369408470574e-09
60,49,-1.3333330740391436e+00
60,55,-1.3333335761710208e+00
60,60,5.3333333251051060e+00
60,68,-1.3333332747360886e+00
60,78,-1.3333333919305783e+00
61,4,-5.5511151231257827e-17
61,5,-1.3333333158035598e+00
61,18,-1.1102230246251565e-16
61,19,-1.3333333158035596e+00
61,44,-9.5266023403262068e-08
61,58,-1.3333332737131687e+00
61,61,5.3333333175401805e+00
61,62,7.9472860736728990e-08
61,63,-1.3333333964267289e+00
62,4,-1.3333332854072273e+00
62,5,-1.3333332854072275e+00
62,6,5.5511151231257827e-17
62,19,-1.1102230246251565e-16
62,26,-1.3333328564962321e+00
62,61,7.9472860736728990e-08
62,62,5.3333330949148916e+00
62,63,-1.3333334291856640e+00
62,67,-3.1789140164661944e-07
63,4,-4.7926158222577619e-08
63,5,-2.4980018054066022e-16
63,19,-4.7926158694422405e-08
63,24,-4.4408920985006262e-16
63,61,-1.3333333964267289e+00
63,62,-1.3333334291856640e+00
63,63,5.3333332374810478e+00
63,64,-1.3333330785353270e+00
63,79,-1.3333332374810098e+00
64,4,-1.1102230246251565e-16
64,11,-3.3306690738754696e-16
64,19,-1.3333331264614652e+00
64,24,-1.3333331264614650e+00
64,63,-1.3333330785353270e+00
64,64,5.3333330621559147e+00
64,65,-1.3333334595201691e+00
64,66,-9.5852309367483457e-08
64,79,-1.7532517798679592e-07
65,11,-4.7926154732313986e-08
65,19,-3.6082248300317588e-16
65,24,-4.7926154850275182e-08
65,64,-1.3333334595201691e+00
65,65,2.6666665708143995e+00
65,66,-1.3333330154419205e+00
66,11,-1.3333334258493803e+00
66,16,-1.2490009027033011e-16
66,19,-1.3333334258493805e+00
66,24,-3.0531133177191805e-16
66,45,-1.3333331155423906e+00
66,64,-9.5852309367483457e-08
66,65,-1.3333330154419205e+00
66,66,5.3333331580082337e+00
66,73,-7.9472851188810978e-08
67,4,-2.7755575615628914e-17
67,5,-1.3333329066704600e+00
67,6,-1.3333329066704613e+00
67,23,-1.6653345369377348e-16
67,26,-1.3333331743877268e+00
67,56,-1.3333330740392504e+00
67,62,-3.1789140164661944e-07
67,67,5.3333326975507021e+00
67,77,-3.1789140086946333e-07
68,7,-1.3333332831591522e+00
68,8,-1.3333332831591522e+00
68,9,5.5511151231257827e-17
68,23,-2.7755575615628914e-16
68,29,-1.3333328564962321e+00
68,60,-1.3333332747360886e+00
68,68,5.3333330154420278e+00
68,69,-3.1789140164661944e-07
68,78,2.2204460492503131e-16
69,7,-2.7755575615628914e-17
69,8,-1.3333328730580321e+00
69,9,-1.3333328730580334e+00
69,22,-2.4980018054066022e-16
69,29,-1.3333331743877268e+00
69,54,-1.3333331412641174e+00
69,68,-3.1789140164661944e-07
69,69,5.3333326975507109e+00
69,76,-3.1789140042537412e-07
70,10,-1.3333333312093156e+00
70,11,-1.3333333312093165e+00
70,12,5.5511151231257827e-17
70,16,-1.3877787807814457e-16
70,32,-1.3333328564962321e+00
70,41,-1.3333334965272181e+00
70,70,5.3333331743877634e+00
70,71,-3.1789140164661944e-07
70,73,1.5894572058527956e-07
71,10,-2.7755575615628914e-17
71,11,-1.3333328564962299e+00
71,12,-1.3333328564962312e+00
71,24,-8.3266726846886741e-17
71,32,-1.3333331743877268e+00
71,70,-3.1789140164661944e-07
71,71,5.3333323487753592e+00
71,80,-3.1789140098048563e-07
72,13,-1.3333332372987625e+00
72,14,-1.3333332372987634e+00
72,15,-1.3877787807814457e-16
72,22,-1.6653345369377348e-16
72,35,-1.3333325386049451e+00
72,37,-4.7683708270795933e-07
72,52,-1.3333330485655326e+00
72,72,5.3333326975508069e+00
72,75,-1.5894571936403423e-07
73,10,-2.4980018054066022e-16
73,11,-1.3333333060348034e+00
73,16,-1.3333333060348034e+00
73,19,-3.0531133177191805e-16
73,41,-1.3333334880309073e+00
73,45,-1.3333333921785908e+00
73,66,-7.9472851188810978e-08
73,70,1.5894572058527956e-07
73,73,5.3333334128062369e+00
74,14,-1.6653345369377348e-16
74,18,-1.3333330507471746e+00
74,20,-1.3333330507471750e+00
74,21,-2.7755575615628914e-17
74,47,-1.3333331165982165e+00
74,50,-1.3333333537740089e+00
74,51,-2.3750322497573251e-07
74,59,-1.4323019192907793e-07
74,74,5.3333329525999922e+00
75,13,-6.6666652428276629e-01
75,14,-2.4980018054066022e-16
75,22,-6.6666652428276640e-01
75,52,-1.3333333002097245e+00
75,72,-1.5894571936403423e-07
75,75,2.6666665077209770e+00
76,8,-2.2204460492503131e-16
76,9,-6.6666657063205847e-01
76,22,-6.6666657063205814e-01
76,54,-1.3333328896198351e+00
76,69,-3.1789140042537412e-07
76,76,2.6666663487753519e+00
77,5,-1.9428902930940239e-16
77,6,-6.6666653701962497e-01
77,23,-6.6666653701962486e-01
77,56,-1.3333329568446919e+00
77,67,-3.1789140086946333e-07
77,77,2.6666663487753430e+00
78,7,-6.6666663736804477e-01
78,8,-3.8857805861880479e-16
78,23,-6.6666663736804455e-01
78,60,-1.3333333919305783e+00
78,68,2.2204460492503131e-16
78,78,2.6666666666666679e+00
79,4,-6.6666653926766362e-01
79,19,-8.3266726846886741e-17
79,24,-6.6666653926766339e-01
79,63,-1.3333332374810098e+00
79,64,-1.7532517798679592e-07
79,79,2.6666664913415152e+00
80,11,-5.5511151231257827e-17
80,12,-6.6666658719386329e-01
80,24,-6.6666658719386340e-01
80,65,-1.3333328564962317e+00
80,71,-3.1789140098048563e-07
80,80,2.6666663487753590e+00
Can't render this file because it has a wrong number of fields in line 2.

47
src/Numerics.Tests/LinearAlgebraTests/MatrixHelpers.cs

@ -28,7 +28,9 @@
// </copyright>
using System;
using System.IO;
using MathNet.Numerics.LinearAlgebra;
using MathNet.Numerics.LinearAlgebra.Double;
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests
{
@ -98,5 +100,50 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests
}
}
}
public static Matrix<double> ReadTestDataSparseMatrixDoubleCoordinateFormat(string name)
{
var stream = MathNet.Numerics.TestData.Data.ReadStream(name);
if (stream == null)
throw new FileNotFoundException($"Could not find test data file '{name}'");
var reader = new StreamReader(stream);
var first = reader.ReadLine()?.Trim();
if (first == null)
throw new InvalidDataException("Could not read first line of data file");
if (!int.TryParse(first, out var nnz))
throw new InvalidDataException("Could not parse first line of file (expected integer count of coordinate tuples)");
var cooRows = new int[nnz];
var cooCols = new int[nnz];
var cooVals = new double[nnz];
var nRows = 0;
var nCols = 0;
for (var i = 0; i < nnz; i++)
{
var line = reader.ReadLine()?.Trim();
if (line == null)
throw new InvalidDataException($"File ended unexpectedly on line {i+1}. Expecting {nnz} coordinate tuples.");
var split = line.Split(',');
if (split.Length != 3)
throw new InvalidDataException($"Invalid sized tuple on line {i + 1} (expected 3 but detected {split.Length})");
if (!int.TryParse(split[0], out cooRows[i]))
throw new InvalidDataException($"Could not parse row integer on line {i + 1}");
if (!int.TryParse(split[1], out cooCols[i]))
throw new InvalidDataException($"Could not parse column integer on line {i + 1}");
if (!double.TryParse(split[2], out cooVals[i]))
throw new InvalidDataException($"Could not parse double value on line {i + 1}");
nRows = Math.Max(nRows, cooRows[i] + 1);
nCols = Math.Max(nCols, cooCols[i] + 1);
}
return SparseMatrix.Build.SparseFromCoordinateFormat(nRows, nCols, nnz, cooRows, cooCols, cooVals);
}
}
}

24
src/Numerics.Tests/LinearAlgebraTests/MatrixTests.cs

@ -28,7 +28,9 @@
// </copyright>
using System;
using System.Linq;
using MathNet.Numerics.LinearAlgebra;
using MathNet.Numerics.LinearAlgebra.Double;
using MathNet.Numerics.LinearAlgebra.Storage;
using NUnit.Framework;
@ -73,5 +75,27 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests
{
Assert.DoesNotThrow(() => new SparseCompressedRowMatrixStorage<double>(0, 0));
}
[Test]
public void SparseCompressedRowMatrixStorage_CoordinateFormatDuplicateRemovalCheck()
{
const double tol = 1e-6;
var matDuplicates = MatrixHelpers.ReadTestDataSparseMatrixDoubleCoordinateFormat("coo_torsion_duplicates.csv");
var matNoDuplicates = MatrixHelpers.ReadTestDataSparseMatrixDoubleCoordinateFormat("coo_torsion_no_duplicates.csv");
var rowCount = matDuplicates.RowCount;
var columnCount = matDuplicates.ColumnCount;
Assert.AreEqual(matNoDuplicates.RowCount, rowCount);
Assert.AreEqual(matNoDuplicates.ColumnCount, columnCount);
for (var r = 0; r < rowCount; r++)
for (var c = 0; c < columnCount; c++)
{
var actual = matDuplicates[r, c];
var expected = matNoDuplicates[r, c];
Assert.True(Math.Abs(actual - expected) < tol, $"Expected {expected:E6} at ({r}, {c}), but got {actual:E6}");
}
}
}
}

8
src/TestData/TestData.csproj

@ -269,4 +269,12 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="..\..\data\coo_torsion_duplicates.csv">
<Link>Data\coo_torsion_duplicates.csv</Link>
</EmbeddedResource>
<EmbeddedResource Include="..\..\data\coo_torsion_no_duplicates.csv">
<Link>Data\coo_torsion_no_duplicates.csv</Link>
</EmbeddedResource>
</ItemGroup>
</Project>

Loading…
Cancel
Save