From 640c12562e08d24a4efbe628767d275908e752f2 Mon Sep 17 00:00:00 2001 From: Mohamed Moussa Date: Tue, 18 Jan 2022 16:41:09 +1100 Subject: [PATCH] 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. --- data/coo_torsion_duplicates.csv | 1146 +++++++++++++++++ data/coo_torsion_no_duplicates.csv | 798 ++++++++++++ .../LinearAlgebraTests/MatrixHelpers.cs | 47 + .../LinearAlgebraTests/MatrixTests.cs | 24 + src/TestData/TestData.csproj | 8 + 5 files changed, 2023 insertions(+) create mode 100644 data/coo_torsion_duplicates.csv create mode 100644 data/coo_torsion_no_duplicates.csv diff --git a/data/coo_torsion_duplicates.csv b/data/coo_torsion_duplicates.csv new file mode 100644 index 00000000..5e7c62de --- /dev/null +++ b/data/coo_torsion_duplicates.csv @@ -0,0 +1,1146 @@ +1145 +0,0,1.0000000000000635E+000 +0,4,1.6666660706202885E-001 +0,6,1.6666672627132545E-001 +0,25,-6.6666642824811539E-001 +0,26,-1.3877787807814457E-016 +0,27,-6.6666690508530202E-001 +4,0,1.6666660706202885E-001 +4,4,4.9999982118608655E-001 +4,6,7.6021435648462204E-017 +4,25,-6.6666642824811528E-001 +4,26,-4.1633363423443370E-017 +4,27,-1.3877787807814457E-016 +6,0,1.6666672627132545E-001 +6,4,7.6021435648462204E-017 +6,6,5.0000017881397674E-001 +6,25,-1.1102230246251565E-016 +6,26,-1.8041124150158794E-016 +6,27,-6.6666690508530180E-001 +25,0,-6.6666642824811539E-001 +25,4,-6.6666642824811528E-001 +25,6,-1.1102230246251565E-016 +25,25,2.6666666666668362E+000 +25,26,-1.3333338101706049E+000 +25,27,-3.8857805861880479E-016 +26,0,-1.3877787807814457E-016 +26,4,-4.1633363423443370E-017 +26,6,-1.8041124150158794E-016 +26,25,-1.3333338101706049E+000 +26,26,2.6666666666668370E+000 +26,27,-1.3333328564962312E+000 +27,0,-6.6666690508530202E-001 +27,4,-1.3877787807814457E-016 +27,6,-6.6666690508530180E-001 +27,25,-3.8857805861880479E-016 +27,26,-1.3333328564962312E+000 +27,27,2.6666666666668362E+000 +1,1,1.0000000000000635E+000 +1,7,1.6666660706202885E-001 +1,9,1.6666672627132545E-001 +1,28,-6.6666642824811539E-001 +1,29,-1.3877787807814457E-016 +1,30,-6.6666690508530202E-001 +7,1,1.6666660706202885E-001 +7,7,4.9999982118608655E-001 +7,9,7.6021435648462204E-017 +7,28,-6.6666642824811528E-001 +7,29,-4.1633363423443370E-017 +7,30,-1.3877787807814457E-016 +9,1,1.6666672627132545E-001 +9,7,7.6021435648462204E-017 +9,9,5.0000017881397674E-001 +9,28,-1.1102230246251565E-016 +9,29,-1.8041124150158794E-016 +9,30,-6.6666690508530180E-001 +28,1,-6.6666642824811539E-001 +28,7,-6.6666642824811528E-001 +28,9,-1.1102230246251565E-016 +28,28,2.6666666666668362E+000 +28,29,-1.3333338101706049E+000 +28,30,-3.8857805861880479E-016 +29,1,-1.3877787807814457E-016 +29,7,-4.1633363423443370E-017 +29,9,-1.8041124150158794E-016 +29,28,-1.3333338101706049E+000 +29,29,2.6666666666668370E+000 +29,30,-1.3333328564962312E+000 +30,1,-6.6666690508530202E-001 +30,7,-1.3877787807814457E-016 +30,9,-6.6666690508530180E-001 +30,28,-3.8857805861880479E-016 +30,29,-1.3333328564962312E+000 +30,30,2.6666666666668362E+000 +2,2,1.0000000000000635E+000 +2,10,1.6666660706202885E-001 +2,12,1.6666672627132545E-001 +2,31,-6.6666642824811539E-001 +2,32,-1.3877787807814457E-016 +2,33,-6.6666690508530202E-001 +10,2,1.6666660706202885E-001 +10,10,4.9999982118608655E-001 +10,12,7.6021435648462204E-017 +10,31,-6.6666642824811528E-001 +10,32,-4.1633363423443370E-017 +10,33,-1.3877787807814457E-016 +12,2,1.6666672627132545E-001 +12,10,7.6021435648462204E-017 +12,12,5.0000017881397674E-001 +12,31,-1.1102230246251565E-016 +12,32,-1.8041124150158794E-016 +12,33,-6.6666690508530180E-001 +31,2,-6.6666642824811539E-001 +31,10,-6.6666642824811528E-001 +31,12,-1.1102230246251565E-016 +31,31,2.6666666666668362E+000 +31,32,-1.3333338101706049E+000 +31,33,-3.8857805861880479E-016 +32,2,-1.3877787807814457E-016 +32,10,-4.1633363423443370E-017 +32,12,-1.8041124150158794E-016 +32,31,-1.3333338101706049E+000 +32,32,2.6666666666668370E+000 +32,33,-1.3333328564962312E+000 +33,2,-6.6666690508530202E-001 +33,10,-1.3877787807814457E-016 +33,12,-6.6666690508530180E-001 +33,31,-3.8857805861880479E-016 +33,32,-1.3333328564962312E+000 +33,33,2.6666666666668362E+000 +3,3,1.0000000000000635E+000 +3,13,1.6666660706202885E-001 +3,15,1.6666672627132545E-001 +3,34,-6.6666642824811539E-001 +3,35,-1.3877787807814457E-016 +3,36,-6.6666690508530202E-001 +13,3,1.6666660706202885E-001 +13,13,4.9999982118608655E-001 +13,15,7.6021435648462204E-017 +13,34,-6.6666642824811528E-001 +13,35,-4.1633363423443370E-017 +13,36,-1.3877787807814457E-016 +15,3,1.6666672627132545E-001 +15,13,7.6021435648462204E-017 +15,15,5.0000017881397674E-001 +15,34,-1.1102230246251565E-016 +15,35,-1.8041124150158794E-016 +15,36,-6.6666690508530180E-001 +34,3,-6.6666642824811539E-001 +34,13,-6.6666642824811528E-001 +34,15,-1.1102230246251565E-016 +34,34,2.6666666666668362E+000 +34,35,-1.3333338101706049E+000 +34,36,-3.8857805861880479E-016 +35,3,-1.3877787807814457E-016 +35,13,-4.1633363423443370E-017 +35,15,-1.8041124150158794E-016 +35,34,-1.3333338101706049E+000 +35,35,2.6666666666668370E+000 +35,36,-1.3333328564962312E+000 +36,3,-6.6666690508530202E-001 +36,13,-1.3877787807814457E-016 +36,15,-6.6666690508530180E-001 +36,34,-3.8857805861880479E-016 +36,35,-1.3333328564962312E+000 +36,36,2.6666666666668362E+000 +15,15,9.9999976158153403E-001 +15,14,1.6666658719382568E-001 +15,17,1.6666666666668564E-001 +15,37,-6.6666634877530273E-001 +15,38,-1.6653345369377348E-016 +15,39,-6.6666666666674246E-001 +14,15,1.6666658719382568E-001 +14,14,4.9999988079073843E-001 +14,17,3.9736420439395576E-008 +14,37,-6.6666634877530306E-001 +14,38,-1.5894568142216237E-007 +14,39,-2.0816681711721685E-016 +17,15,1.6666666666668564E-001 +17,14,3.9736420439395576E-008 +17,17,5.0000011920931797E-001 +17,37,-2.2204460492503131E-016 +17,38,-1.5894568162339029E-007 +17,39,-6.6666666666674212E-001 +37,15,-6.6666634877530273E-001 +37,14,-6.6666634877530306E-001 +37,17,-2.2204460492503131E-016 +37,37,2.6666663487754541E+000 +37,38,-1.3333333333334849E+000 +37,39,-3.1789136306636934E-007 +38,15,-1.6653345369377348E-016 +38,14,-1.5894568142216237E-007 +38,17,-1.5894568162339029E-007 +38,37,-1.3333333333334849E+000 +38,38,2.6666663487754545E+000 +38,39,-1.3333326975506061E+000 +39,15,-6.6666666666674246E-001 +39,14,-2.0816681711721685E-016 +39,17,-6.6666666666674212E-001 +39,37,-3.1789136306636934E-007 +39,38,-1.3333326975506061E+000 +39,39,2.6666663487754541E+000 +17,17,9.9999987760460884E-001 +17,16,1.6666664626743341E-001 +17,10,1.6666664626743602E-001 +17,40,-6.6666658506973386E-001 +17,41,-1.6653345369377348E-016 +17,42,-6.6666658506974397E-001 +16,17,1.6666664626743341E-001 +16,16,4.9999999999999950E-001 +16,10,2.0399233044939662E-008 +16,40,-6.6666658506973375E-001 +16,41,-8.1596932086092089E-008 +16,42,-1.1102230246251565E-016 +10,17,1.6666664626743602E-001 +10,16,2.0399233044939662E-008 +10,10,5.0000000000000733E-001 +10,40,-7.6327832942979512E-017 +10,41,-8.1596932093030983E-008 +10,42,-6.6666658506974419E-001 +40,17,-6.6666658506973386E-001 +40,16,-6.6666658506973375E-001 +40,10,-7.6327832942979512E-017 +40,40,2.6666665034728214E+000 +40,41,-1.3333331701394893E+000 +40,42,-1.6319386419993975E-007 +41,17,-1.6653345369377348E-016 +41,16,-8.1596932086092089E-008 +41,10,-8.1596932093030983E-008 +41,40,-1.3333331701394893E+000 +41,41,2.6666665034728219E+000 +41,42,-1.3333331701394686E+000 +42,17,-6.6666658506974397E-001 +42,16,-1.1102230246251565E-016 +42,10,-6.6666658506974419E-001 +42,40,-1.6319386419993975E-007 +42,41,-1.3333331701394686E+000 +42,42,2.6666665034728210E+000 +16,16,5.0000002803041466E-001 +16,18,1.6666667007403274E-001 +16,19,5.9361054734576732E-009 +16,43,-6.6666668029613096E-001 +16,44,-1.3877787807814457E-016 +16,45,-2.3744421762117440E-008 +18,16,1.6666667007403274E-001 +18,18,9.9999996438336880E-001 +18,19,1.6666665138709019E-001 +18,43,-6.6666668029613074E-001 +18,44,-6.6666660554836066E-001 +18,45,-2.4980018054066022E-016 +19,16,5.9361054734576732E-009 +19,18,1.6666665138709019E-001 +19,19,4.9999997196958679E-001 +19,43,-1.3877787807814457E-016 +19,44,-6.6666660554836077E-001 +19,45,-2.3744421678850713E-008 +43,16,-6.6666668029613096E-001 +43,18,-6.6666668029613074E-001 +43,19,-1.3877787807814457E-016 +43,43,2.6666666191778270E+000 +43,44,-4.7488843524234881E-008 +43,45,-1.3333332110967215E+000 +44,16,-1.3877787807814457E-016 +44,18,-6.6666660554836066E-001 +44,19,-6.6666660554836077E-001 +44,43,-4.7488843524234881E-008 +44,44,2.6666666191778279E+000 +44,45,-1.3333333605922624E+000 +45,16,-2.3744421762117440E-008 +45,18,-2.4980018054066022E-016 +45,19,-2.3744421678850713E-008 +45,43,-1.3333332110967215E+000 +45,44,-1.3333333605922624E+000 +45,45,2.6666666191778274E+000 +16,16,9.9999997622822712E-001 +16,14,1.6666666619526219E-001 +16,18,1.6666665921414675E-001 +16,46,-6.6666666478104841E-001 +16,47,-3.0531133177191805E-016 +16,43,-6.6666663685658734E-001 +14,16,1.6666666619526219E-001 +14,14,5.0000001047167297E-001 +14,18,3.9619622215630787E-009 +14,46,-6.6666666478104852E-001 +14,47,-1.5847848658379071E-008 +14,43,-2.4980018054066022E-016 +18,16,1.6666665921414675E-001 +18,14,3.9619622215630787E-009 +18,18,4.9999998952832686E-001 +18,46,-9.0205620750793969E-017 +18,47,-1.5847848915118146E-008 +18,43,-6.6666663685658711E-001 +46,16,-6.6666666478104841E-001 +46,14,-6.6666666478104852E-001 +46,18,-9.0205620750793969E-017 +46,46,2.6666666349709693E+000 +46,47,-1.3333332737131749E+000 +46,43,-3.1695697511047172E-008 +47,16,-3.0531133177191805E-016 +47,14,-1.5847848658379071E-008 +47,18,-1.5847848915118146E-008 +47,46,-1.3333332737131749E+000 +47,47,2.6666666349709702E+000 +47,43,-1.3333333295620977E+000 +43,16,-6.6666663685658734E-001 +43,14,-2.4980018054066022E-016 +43,18,-6.6666663685658711E-001 +43,46,-3.1695697511047172E-008 +43,47,-1.3333333295620977E+000 +43,43,2.6666666349709702E+000 +20,20,5.0000006658337082E-001 +20,8,1.6666668886112623E-001 +20,21,-2.6063311809045100E-015 +20,48,-6.6666675544450482E-001 +20,49,-5.5511151231257827E-017 +20,50,1.0408340855860843E-014 +8,20,1.6666668886112623E-001 +8,8,1.0000000000000242E+000 +8,21,1.6666664447221519E-001 +8,48,-6.6666675544450460E-001 +8,49,-6.6666657788886052E-001 +8,50,-4.7184478546569153E-016 +21,20,-2.6063311809045100E-015 +21,8,1.6666664447221519E-001 +21,21,4.9999993341663762E-001 +21,48,-1.1102230246251565E-016 +21,49,-6.6666657788886086E-001 +21,50,1.0796918914479647E-014 +48,20,-6.6666675544450482E-001 +48,8,-6.6666675544450460E-001 +48,21,-1.1102230246251565E-016 +48,48,2.6666666666667100E+000 +48,49,2.0983215165415459E-014 +48,50,-1.3333331557777217E+000 +49,20,-5.5511151231257827E-017 +49,8,-6.6666657788886052E-001 +49,21,-6.6666657788886086E-001 +49,48,2.0983215165415459E-014 +49,49,2.6666666666667105E+000 +49,50,-1.3333335108890099E+000 +50,20,1.0408340855860843E-014 +50,8,-4.7184478546569153E-016 +50,21,1.0796918914479647E-014 +50,48,-1.3333331557777217E+000 +50,49,-1.3333335108890099E+000 +50,50,2.6666666666667109E+000 +20,20,1.0000000113189889E+000 +20,14,1.6666667458011389E-001 +20,22,1.6666666252621559E-001 +20,51,-6.6666669832045533E-001 +20,52,-2.4980018054066022E-016 +20,53,-6.6666665010486259E-001 +14,20,1.6666667458011389E-001 +14,14,5.0000001808084760E-001 +14,22,-1.8864980990563237E-009 +14,51,-6.6666669832045589E-001 +14,52,7.5459924836485115E-009 +14,53,-2.7755575615628914E-017 +22,20,1.6666666252621559E-001 +22,14,-1.8864980990563237E-009 +22,22,4.9999998191915240E-001 +22,51,1.1102230246251565E-016 +22,52,7.5459921852760736E-009 +22,53,-6.6666665010486226E-001 +51,20,-6.6666669832045533E-001 +51,14,-6.6666669832045589E-001 +51,22,1.1102230246251565E-016 +51,51,2.6666666817586524E+000 +51,52,-1.3333333002097261E+000 +51,53,1.5091984217896481E-008 +52,20,-2.4980018054066022E-016 +52,14,7.5459924836485115E-009 +52,22,7.5459921852760736E-009 +52,51,-1.3333333002097261E+000 +52,52,2.6666666817586528E+000 +52,53,-1.3333333966409118E+000 +53,20,-6.6666665010486259E-001 +53,14,-2.7755575615628914E-017 +53,22,-6.6666665010486226E-001 +53,51,1.5091984217896481E-008 +53,52,-1.3333333966409118E+000 +53,53,2.6666666817586524E+000 +20,20,1.0000001078903504E+000 +20,22,1.6666665093890848E-001 +20,8,1.6666671835787478E-001 +20,53,-6.6666660375563447E-001 +20,54,-1.1102230246251565E-016 +20,48,-6.6666687343149911E-001 +22,20,1.6666665093890848E-001 +22,22,4.9999989887156338E-001 +22,8,-1.7981720828760453E-008 +22,53,-6.6666660375563425E-001 +22,54,7.1926883504769279E-008 +22,48,-1.8041124150158794E-016 +8,20,1.6666671835787478E-001 +8,22,-1.7981720828760453E-008 +8,8,5.0000010112846238E-001 +8,53,-2.4286128663675299E-016 +8,54,7.1926883740691672E-008 +8,48,-6.6666687343149977E-001 +53,20,-6.6666660375563447E-001 +53,22,-6.6666660375563425E-001 +53,8,-2.4286128663675299E-016 +53,53,2.6666668105205016E+000 +53,54,-1.3333337468629995E+000 +53,48,1.4385376706504971E-007 +54,20,-1.1102230246251565E-016 +54,22,7.1926883504769279E-008 +54,8,7.1926883740691672E-008 +54,53,-1.3333337468629995E+000 +54,54,2.6666668105205025E+000 +54,48,-1.3333332075112696E+000 +48,20,-6.6666687343149911E-001 +48,22,-1.8041124150158794E-016 +48,8,-6.6666687343149977E-001 +48,53,1.4385376706504971E-007 +48,54,-1.3333332075112696E+000 +48,48,2.6666668105205016E+000 +21,21,9.9999988696192810E-001 +21,23,1.6666661960558637E-001 +21,5,1.6666667604838969E-001 +21,55,-6.6666647842234572E-001 +21,56,-3.0531133177191805E-016 +21,57,-6.6666670419355833E-001 +23,21,1.6666661960558637E-001 +23,23,4.9999991533580551E-001 +23,5,1.8839681917521192E-008 +23,55,-6.6666647842234616E-001 +23,56,-7.5358727688601412E-008 +23,57,4.1633363423443370E-017 +5,21,1.6666667604838969E-001 +5,23,1.8839681917521192E-008 +5,5,5.0000008466421497E-001 +5,55,-2.0122792321330962E-016 +5,56,-7.5358727417984550E-008 +5,57,-6.6666670419355900E-001 +55,21,-6.6666647842234572E-001 +55,23,-6.6666647842234616E-001 +55,5,-2.0122792321330962E-016 +55,55,2.6666665159492657E+000 +55,56,-1.3333334083871176E+000 +55,57,-1.5071745601558106E-007 +56,21,-3.0531133177191805E-016 +56,23,-7.5358727688601412E-008 +56,5,-7.5358727417984550E-008 +56,55,-1.3333334083871176E+000 +56,56,2.6666665159492653E+000 +56,57,-1.3333329568446926E+000 +57,21,-6.6666670419355833E-001 +57,23,4.1633363423443370E-017 +57,5,-6.6666670419355900E-001 +57,55,-1.5071745601558106E-007 +57,56,-1.3333329568446926E+000 +57,57,2.6666665159492657E+000 +21,21,1.0000000707047816E+000 +21,5,1.6666666291418905E-001 +21,18,1.6666669398740458E-001 +21,57,-6.6666665165675620E-001 +21,58,-3.0531133177191805E-016 +21,59,-6.6666677594961854E-001 +5,21,1.6666666291418905E-001 +5,5,4.9999995339018000E-001 +5,18,-1.1784129099787077E-008 +5,57,-6.6666665165675620E-001 +5,58,4.7136516495571712E-008 +5,59,-1.8041124150158794E-016 +18,21,1.6666669398740458E-001 +18,5,-1.1784129099787077E-008 +18,18,5.0000004660982633E-001 +18,57,-2.4286128663675299E-016 +18,58,4.7136516689860741E-008 +18,59,-6.6666677594961832E-001 +57,21,-6.6666665165675620E-001 +57,5,-6.6666665165675620E-001 +57,18,-2.4286128663675299E-016 +57,57,2.6666667609397163E+000 +57,58,-1.3333335518992371E+000 +57,59,9.4273033490743785E-008 +58,21,-3.0531133177191805E-016 +58,5,4.7136516495571712E-008 +58,18,4.7136516689860741E-008 +58,57,-1.3333335518992371E+000 +58,58,2.6666667609397177E+000 +58,59,-1.3333333033135135E+000 +59,21,-6.6666677594961854E-001 +59,5,-1.8041124150158794E-016 +59,18,-6.6666677594961832E-001 +59,57,9.4273033490743785E-008 +59,58,-1.3333333033135135E+000 +59,59,2.6666667609397172E+000 +21,21,9.9999999382881088E-001 +21,8,1.6666669702137737E-001 +21,23,1.6666663425489275E-001 +21,49,-6.6666678808551039E-001 +21,60,2.4980018054066022E-016 +21,55,-6.6666653701957101E-001 +8,21,1.6666669702137737E-001 +8,8,5.0000009414973545E-001 +8,23,1.0285342589766406E-009 +8,49,-6.6666678808550983E-001 +8,60,-4.1141372530972831E-009 +8,55,4.1633363423443370E-017 +23,21,1.6666663425489275E-001 +23,8,1.0285342589766406E-009 +23,23,4.9999990585028170E-001 +23,49,-1.1102230246251565E-016 +23,60,-4.1141369686026330E-009 +23,55,-6.6666653701957146E-001 +49,21,-6.6666678808551039E-001 +49,8,-6.6666678808550983E-001 +49,23,-1.1102230246251565E-016 +49,49,2.6666666584384391E+000 +49,60,-1.3333330740391436E+000 +49,55,-8.2282747282391711E-009 +60,21,2.4980018054066022E-016 +60,8,-4.1141372530972831E-009 +60,23,-4.1141369686026330E-009 +60,49,-1.3333330740391436E+000 +60,60,2.6666666584384386E+000 +60,55,-1.3333335761710208E+000 +55,21,-6.6666653701957101E-001 +55,8,4.1633363423443370E-017 +55,23,-6.6666653701957146E-001 +55,49,-8.2282747282391711E-009 +55,60,-1.3333335761710208E+000 +55,55,2.6666666584384382E+000 +19,19,5.0000000614230067E-001 +19,5,1.6666667864820781E-001 +19,4,-9.9341075413055329E-009 +19,61,-6.6666671459283111E-001 +19,62,-1.1102230246251565E-016 +19,63,3.9736430201831041E-008 +5,19,1.6666667864820781E-001 +5,5,1.0000000596046468E+000 +5,4,1.6666667455334100E-001 +5,61,-6.6666671459283089E-001 +5,62,-6.6666669821336433E-001 +5,63,-2.4980018054066022E-016 +4,19,-9.9341075413055329E-009 +4,5,1.6666667455334100E-001 +4,4,4.9999999385770033E-001 +4,61,-5.5511151231257827E-017 +4,62,-6.6666669821336433E-001 +4,63,3.9736430562653524E-008 +61,19,-6.6666671459283111E-001 +61,5,-6.6666671459283089E-001 +61,4,-5.5511151231257827E-017 +61,61,2.6666667461395304E+000 +61,62,7.9472860736728990E-008 +61,63,-1.3333333964267289E+000 +62,19,-1.1102230246251565E-016 +62,5,-6.6666669821336433E-001 +62,4,-6.6666669821336433E-001 +62,61,7.9472860736728990E-008 +62,62,2.6666667461395317E+000 +62,63,-1.3333334291856640E+000 +63,19,3.9736430201831041E-008 +63,5,-2.4980018054066022E-016 +63,4,3.9736430562653524E-008 +63,61,-1.3333333964267289E+000 +63,62,-1.3333334291856640E+000 +63,63,2.6666667461395326E+000 +19,19,9.9999992811078386E-001 +19,24,1.6666662693024017E-001 +19,11,1.6666668244002120E-001 +19,64,-6.6666650772096026E-001 +19,65,-3.6082248300317588E-016 +19,66,-6.6666672976008468E-001 +24,19,1.6666662693024017E-001 +24,24,4.9999991673533656E-001 +24,11,1.1981538797823188E-008 +24,64,-6.6666650772096037E-001 +24,65,-4.7926154850275182E-008 +24,66,-3.0531133177191805E-016 +11,19,1.6666668244002120E-001 +11,24,1.1981538797823188E-008 +11,11,5.0000008326467971E-001 +11,64,-3.3306690738754696E-016 +11,65,-4.7926154732313986E-008 +11,66,-6.6666672976008468E-001 +64,19,-6.6666650772096026E-001 +64,24,-6.6666650772096037E-001 +64,11,-3.3306690738754696E-016 +64,64,2.6666665708144000E+000 +64,65,-1.3333334595201691E+000 +64,66,-9.5852309367483457E-008 +65,19,-3.6082248300317588E-016 +65,24,-4.7926154850275182E-008 +65,11,-4.7926154732313986E-008 +65,64,-1.3333334595201691E+000 +65,65,2.6666665708143995E+000 +65,66,-1.3333330154419205E+000 +66,19,-6.6666672976008468E-001 +66,24,-3.0531133177191805E-016 +66,11,-6.6666672976008468E-001 +66,64,-9.5852309367483457E-008 +66,65,-1.3333330154419205E+000 +66,66,2.6666665708144000E+000 +4,4,5.0000005960467264E-001 +4,5,1.6666664679846566E-001 +4,6,3.9736425076333053E-008 +4,62,-6.6666658719386296E-001 +4,67,-2.7755575615628914E-017 +4,26,-1.5894570035146494E-007 +5,4,1.6666664679846566E-001 +5,5,9.9999976158148374E-001 +5,6,1.6666660706202879E-001 +5,62,-6.6666658719386318E-001 +5,67,-6.6666642824811484E-001 +5,26,-3.0531133177191805E-016 +6,4,3.9736425076333053E-008 +6,5,1.6666660706202879E-001 +6,6,4.9999994039536233E-001 +6,62,5.5511151231257827E-017 +6,67,-6.6666642824811595E-001 +6,26,-1.5894570040697609E-007 +62,4,-6.6666658719386296E-001 +62,5,-6.6666658719386318E-001 +62,6,5.5511151231257827E-017 +62,62,2.6666663487753599E+000 +62,67,-3.1789140164661944E-007 +62,26,-1.3333328564962321E+000 +67,4,-2.7755575615628914E-017 +67,5,-6.6666642824811484E-001 +67,6,-6.6666642824811595E-001 +67,62,-3.1789140164661944E-007 +67,67,2.6666663487753590E+000 +67,26,-1.3333331743877268E+000 +26,4,-1.5894570035146494E-007 +26,5,-3.0531133177191805E-016 +26,6,-1.5894570040697609E-007 +26,62,-1.3333328564962321E+000 +26,67,-1.3333331743877268E+000 +26,26,2.6666663487753604E+000 +7,7,5.0000005960467264E-001 +7,8,1.6666664679846566E-001 +7,9,3.9736425076333053E-008 +7,68,-6.6666658719386296E-001 +7,69,-2.7755575615628914E-017 +7,29,-1.5894570035146494E-007 +8,7,1.6666664679846566E-001 +8,8,9.9999976158148374E-001 +8,9,1.6666660706202879E-001 +8,68,-6.6666658719386318E-001 +8,69,-6.6666642824811484E-001 +8,29,-3.0531133177191805E-016 +9,7,3.9736425076333053E-008 +9,8,1.6666660706202879E-001 +9,9,4.9999994039536233E-001 +9,68,5.5511151231257827E-017 +9,69,-6.6666642824811595E-001 +9,29,-1.5894570040697609E-007 +68,7,-6.6666658719386296E-001 +68,8,-6.6666658719386318E-001 +68,9,5.5511151231257827E-017 +68,68,2.6666663487753599E+000 +68,69,-3.1789140164661944E-007 +68,29,-1.3333328564962321E+000 +69,7,-2.7755575615628914E-017 +69,8,-6.6666642824811484E-001 +69,9,-6.6666642824811595E-001 +69,68,-3.1789140164661944E-007 +69,69,2.6666663487753590E+000 +69,29,-1.3333331743877268E+000 +29,7,-1.5894570035146494E-007 +29,8,-3.0531133177191805E-016 +29,9,-1.5894570040697609E-007 +29,68,-1.3333328564962321E+000 +29,69,-1.3333331743877268E+000 +29,29,2.6666663487753604E+000 +10,10,5.0000005960467264E-001 +10,11,1.6666664679846566E-001 +10,12,3.9736425076333053E-008 +10,70,-6.6666658719386296E-001 +10,71,-2.7755575615628914E-017 +10,32,-1.5894570035146494E-007 +11,10,1.6666664679846566E-001 +11,11,9.9999976158148374E-001 +11,12,1.6666660706202879E-001 +11,70,-6.6666658719386318E-001 +11,71,-6.6666642824811484E-001 +11,32,-3.0531133177191805E-016 +12,10,3.9736425076333053E-008 +12,11,1.6666660706202879E-001 +12,12,4.9999994039536233E-001 +12,70,5.5511151231257827E-017 +12,71,-6.6666642824811595E-001 +12,32,-1.5894570040697609E-007 +70,10,-6.6666658719386296E-001 +70,11,-6.6666658719386318E-001 +70,12,5.5511151231257827E-017 +70,70,2.6666663487753599E+000 +70,71,-3.1789140164661944E-007 +70,32,-1.3333328564962321E+000 +71,10,-2.7755575615628914E-017 +71,11,-6.6666642824811484E-001 +71,12,-6.6666642824811595E-001 +71,70,-3.1789140164661944E-007 +71,71,2.6666663487753590E+000 +71,32,-1.3333331743877268E+000 +32,10,-1.5894570035146494E-007 +32,11,-3.0531133177191805E-016 +32,12,-1.5894570040697609E-007 +32,70,-1.3333328564962321E+000 +32,71,-1.3333331743877268E+000 +32,32,2.6666663487753604E+000 +13,13,5.0000011920933141E-001 +13,14,1.6666664679847509E-001 +13,15,5.9604635301862911E-008 +13,72,-6.6666658719390048E-001 +13,37,1.1102230246251565E-016 +13,35,-2.3841854140949081E-007 +14,13,1.6666664679847509E-001 +14,14,9.9999964237227956E-001 +14,15,1.6666656732561794E-001 +14,72,-6.6666658719390115E-001 +14,37,-6.6666626930247141E-001 +14,35,-2.7755575615628914E-017 +15,13,5.9604635301862911E-008 +15,14,1.6666656732561794E-001 +15,15,4.9999988079076030E-001 +15,72,-1.3877787807814457E-016 +15,37,-6.6666626930247275E-001 +15,35,-2.3841854079886815E-007 +72,13,-6.6666658719390048E-001 +72,14,-6.6666658719390115E-001 +72,15,-1.3877787807814457E-016 +72,72,2.6666661898298294E+000 +72,37,-4.7683708270795933E-007 +72,35,-1.3333325386049451E+000 +37,13,1.1102230246251565E-016 +37,14,-6.6666626930247141E-001 +37,15,-6.6666626930247275E-001 +37,72,-4.7683708270795933E-007 +37,37,2.6666661898298298E+000 +37,35,-1.3333331743878027E+000 +35,13,-2.3841854140949081E-007 +35,14,-2.7755575615628914E-017 +35,15,-2.3841854079886815E-007 +35,72,-1.3333325386049451E+000 +35,37,-1.3333331743878027E+000 +35,35,2.6666661898298303E+000 +14,14,5.0000011761624152E-001 +14,16,1.6666670534106462E-001 +14,17,5.3101580595547821E-010 +14,46,-6.6666682136425870E-001 +14,40,-3.0531133177191805E-016 +14,38,-2.1240628145235974E-009 +16,14,1.6666670534106462E-001 +16,16,9.9999999681393192E-001 +16,17,1.6666662693024620E-001 +16,46,-6.6666682136425848E-001 +16,40,-6.6666650772098446E-001 +16,38,-1.3877787807814457E-016 +17,14,5.3101580595547821E-010 +17,16,1.6666662693024620E-001 +17,17,4.9999988238378618E-001 +17,46,-1.1102230246251565E-016 +17,40,-6.6666650772098479E-001 +17,38,-2.1240633418795341E-009 +46,14,-6.6666682136425870E-001 +46,16,-6.6666682136425848E-001 +46,17,-1.1102230246251565E-016 +46,46,2.6666666624186131E+000 +46,40,-4.2481269613148243E-009 +46,38,-1.3333330154419687E+000 +40,14,-3.0531133177191805E-016 +40,16,-6.6666650772098446E-001 +40,17,-6.6666650772098479E-001 +40,46,-4.2481269613148243E-009 +40,40,2.6666666624186135E+000 +40,38,-1.3333336427285167E+000 +38,14,-2.1240628145235974E-009 +38,16,-1.3877787807814457E-016 +38,17,-2.1240633418795341E-009 +38,46,-1.3333330154419687E+000 +38,40,-1.3333336427285167E+000 +38,38,2.6666666624186117E+000 +16,16,5.0000000159306157E-001 +16,11,1.6666668706590199E-001 +16,10,-1.9868214884578541E-008 +16,73,-6.6666674826360872E-001 +16,70,-1.3877787807814457E-016 +16,41,7.9472860181617477E-008 +11,16,1.6666668706590199E-001 +11,11,1.0000001192092964E+000 +11,10,1.6666668600386311E-001 +11,73,-6.6666674826360817E-001 +11,70,-6.6666674401545345E-001 +11,41,1.6653345369377348E-016 +10,16,-1.9868214884578541E-008 +10,11,1.6666668600386311E-001 +10,10,4.9999999840694487E-001 +10,73,-2.4980018054066022E-016 +10,70,-6.6666674401545256E-001 +10,41,7.9472859793039419E-008 +73,16,-6.6666674826360872E-001 +73,11,-6.6666674826360817E-001 +73,10,-2.4980018054066022E-016 +73,73,2.6666668256124044E+000 +73,70,1.5894572058527956E-007 +73,41,-1.3333334880309073E+000 +70,16,-1.3877787807814457E-016 +70,11,-6.6666674401545345E-001 +70,10,-6.6666674401545256E-001 +70,73,1.5894572058527956E-007 +70,70,2.6666668256124035E+000 +70,41,-1.3333334965272181E+000 +41,16,7.9472860181617477E-008 +41,11,1.6653345369377348E-016 +41,10,7.9472859793039419E-008 +41,73,-1.3333334880309073E+000 +41,70,-1.3333334965272181E+000 +41,41,2.6666668256124053E+000 +16,16,4.9999994813071541E-001 +16,19,9.9341065163713939E-009 +16,11,1.6666663944279869E-001 +16,45,-3.9736426149517001E-008 +16,66,-1.2490009027033011E-016 +16,73,-6.6666655777119455E-001 +19,16,9.9341065163713939E-009 +19,19,5.0000005186929108E-001 +19,11,1.6666667402232388E-001 +19,45,-3.9736425497260974E-008 +19,66,-6.6666669608929585E-001 +19,73,-3.0531133177191805E-016 +11,16,1.6666663944279869E-001 +11,19,1.6666667402232388E-001 +11,11,9.9999994039536821E-001 +11,45,-3.8857805861880479E-016 +11,66,-6.6666669608929552E-001 +11,73,-6.6666655777119521E-001 +45,16,-3.9736426149517001E-008 +45,19,-3.9736425497260974E-008 +45,11,-3.8857805861880479E-016 +45,45,2.6666665871938333E+000 +45,66,-1.3333331155423906E+000 +45,73,-1.3333333921785908E+000 +66,16,-1.2490009027033011E-016 +66,19,-6.6666669608929585E-001 +66,11,-6.6666669608929552E-001 +66,45,-1.3333331155423906E+000 +66,66,2.6666665871938333E+000 +66,73,-7.9472851188810978E-008 +73,16,-6.6666655777119455E-001 +73,19,-3.0531133177191805E-016 +73,11,-6.6666655777119521E-001 +73,45,-1.3333333921785908E+000 +73,66,-7.9472851188810978E-008 +73,73,2.6666665871938329E+000 +14,14,5.0000000778804043E-001 +14,20,1.6666663957477706E-001 +14,18,2.9687903107679162E-008 +14,51,-6.6666655829910815E-001 +14,74,-1.6653345369377348E-016 +14,47,-1.1875161221031050E-007 +20,14,1.6666663957477706E-001 +20,20,9.9999982187259662E-001 +20,18,1.6666663438275525E-001 +20,51,-6.6666655829910759E-001 +20,74,-6.6666653753102112E-001 +20,47,-1.9428902930940239E-016 +18,14,2.9687903107679162E-008 +18,20,1.6666663438275525E-001 +18,18,4.9999999221197505E-001 +18,51,0.0000000000000000E+000 +18,74,-6.6666653753102101E-001 +18,47,-1.1875161237684395E-007 +51,14,-6.6666655829910815E-001 +51,20,-6.6666655829910759E-001 +51,18,0.0000000000000000E+000 +51,51,2.6666664291634836E+000 +51,74,-2.3750322497573251E-007 +51,47,-1.3333330750620429E+000 +74,14,-1.6653345369377348E-016 +74,20,-6.6666653753102112E-001 +74,18,-6.6666653753102101E-001 +74,51,-2.3750322497573251E-007 +74,74,2.6666664291634836E+000 +74,47,-1.3333331165982165E+000 +47,14,-1.1875161221031050E-007 +47,20,-1.9428902930940239E-016 +47,18,-1.1875161237684395E-007 +47,51,-1.3333330750620429E+000 +47,74,-1.3333331165982165E+000 +47,47,2.6666664291634845E+000 +20,20,4.9999993862343756E-001 +20,21,1.7903773946622796E-008 +20,18,1.6666662830403850E-001 +20,50,-7.1615095756372149E-008 +20,59,-9.7144514654701197E-017 +20,74,-6.6666651321615400E-001 +21,20,1.7903773946622796E-008 +21,21,5.0000006137657527E-001 +21,18,1.6666666922175105E-001 +21,50,-7.1615095881272239E-008 +21,59,-6.6666667688700443E-001 +21,74,-2.7755575615628914E-017 +18,20,1.6666662830403850E-001 +18,21,1.6666666922175105E-001 +18,18,9.9999989257736899E-001 +18,50,-2.4980018054066022E-016 +18,59,-6.6666667688700432E-001 +18,74,-6.6666651321615367E-001 +50,20,-7.1615095756372149E-008 +50,21,-7.1615095881272239E-008 +50,18,-2.4980018054066022E-016 +50,50,2.6666665234365095E+000 +50,59,-1.3333330264323082E+000 +50,74,-1.3333333537740089E+000 +59,20,-9.7144514654701197E-017 +59,21,-6.6666667688700443E-001 +59,18,-6.6666667688700432E-001 +59,50,-1.3333330264323082E+000 +59,59,2.6666665234365090E+000 +59,74,-1.4323019192907793E-007 +74,20,-6.6666651321615400E-001 +74,21,-2.7755575615628914E-017 +74,18,-6.6666651321615367E-001 +74,50,-1.3333333537740089E+000 +74,59,-1.4323019192907793E-007 +74,74,2.6666665234365086E+000 +14,14,5.0000004718329139E-001 +14,13,1.6666666252621551E-001 +14,22,1.9868214885573633E-008 +14,72,-6.6666665010486237E-001 +14,75,-2.4980018054066022E-016 +14,52,-7.9472859321194633E-008 +13,14,1.6666666252621551E-001 +13,13,9.9999988079072155E-001 +13,22,1.6666663107069163E-001 +13,72,-6.6666665010486204E-001 +13,75,-6.6666652428276629E-001 +13,52,-2.7755575615628914E-016 +22,14,1.9868214885573633E-008 +22,13,1.6666663107069163E-001 +22,22,4.9999995281671972E-001 +22,72,-1.6653345369377348E-016 +22,75,-6.6666652428276640E-001 +22,52,-7.9472859682017116E-008 +72,14,-6.6666665010486237E-001 +72,13,-6.6666665010486204E-001 +72,22,-1.6653345369377348E-016 +72,72,2.6666665077209775E+000 +72,75,-1.5894571936403423E-007 +72,52,-1.3333330485655326E+000 +75,14,-2.4980018054066022E-016 +75,13,-6.6666652428276629E-001 +75,22,-6.6666652428276640E-001 +75,72,-1.5894571936403423E-007 +75,75,2.6666665077209770E+000 +75,52,-1.3333333002097245E+000 +52,14,-7.9472859321194633E-008 +52,13,-2.7755575615628914E-016 +52,22,-7.9472859682017116E-008 +52,72,-1.3333330485655326E+000 +52,75,-1.3333333002097245E+000 +52,52,2.6666665077209766E+000 +22,22,5.0000004718331914E-001 +22,9,1.6666664265801451E-001 +22,8,3.9736425153427464E-008 +22,76,-6.6666657063205814E-001 +22,69,-2.4980018054066022E-016 +22,54,-1.5894570035146494E-007 +9,22,1.6666664265801451E-001 +9,9,9.9999976158148207E-001 +9,8,1.6666661120247930E-001 +9,76,-6.6666657063205847E-001 +9,69,-6.6666644480991732E-001 +9,54,-1.3877787807814457E-016 +8,22,3.9736425153427464E-008 +8,9,1.6666661120247930E-001 +8,8,4.9999995281671311E-001 +8,76,-2.2204460492503131E-016 +8,69,-6.6666644480991710E-001 +8,54,-1.5894570032370936E-007 +76,22,-6.6666657063205814E-001 +76,9,-6.6666657063205847E-001 +76,8,-2.2204460492503131E-016 +76,76,2.6666663487753519E+000 +76,69,-3.1789140042537412E-007 +76,54,-1.3333328896198351E+000 +69,22,-2.4980018054066022E-016 +69,9,-6.6666644480991732E-001 +69,8,-6.6666644480991710E-001 +69,76,-3.1789140042537412E-007 +69,69,2.6666663487753519E+000 +69,54,-1.3333331412641174E+000 +54,22,-1.5894570035146494E-007 +54,9,-1.3877787807814457E-016 +54,8,-1.5894570032370936E-007 +54,76,-1.3333328896198351E+000 +54,69,-1.3333331412641174E+000 +54,54,2.6666663487753528E+000 +23,23,5.0000002197399396E-001 +23,6,1.6666663425490616E-001 +23,5,3.9736425171677252E-008 +23,77,-6.6666653701962486E-001 +23,67,-1.6653345369377348E-016 +23,56,-1.5894570043473166E-007 +6,23,1.6666663425490616E-001 +6,6,9.9999976158147807E-001 +6,5,1.6666661960558632E-001 +6,77,-6.6666653701962497E-001 +6,67,-6.6666647842234550E-001 +6,56,-1.6653345369377348E-016 +5,23,3.9736425171677252E-008 +5,6,1.6666661960558632E-001 +5,5,4.9999997802603457E-001 +5,77,-1.9428902930940239E-016 +5,67,-6.6666647842234528E-001 +5,56,-1.5894570065677627E-007 +77,23,-6.6666653701962486E-001 +77,6,-6.6666653701962497E-001 +77,5,-1.9428902930940239E-016 +77,77,2.6666663487753430E+000 +77,67,-3.1789140086946333E-007 +77,56,-1.3333329568446919E+000 +67,23,-1.6653345369377348E-016 +67,6,-6.6666647842234550E-001 +67,5,-6.6666647842234528E-001 +67,77,-3.1789140086946333E-007 +67,67,2.6666663487753426E+000 +67,56,-1.3333330740392504E+000 +56,23,-1.5894570043473166E-007 +56,6,-1.6653345369377348E-016 +56,5,-1.5894570065677627E-007 +56,77,-1.3333329568446919E+000 +56,67,-1.3333330740392504E+000 +56,56,2.6666663487753435E+000 +5,5,4.9999998663280559E-001 +5,19,1.6666665030268213E-001 +5,18,1.1908252884811393E-008 +5,61,-6.6666660121072885E-001 +5,44,0.0000000000000000E+000 +5,58,-4.7633011646119883E-008 +19,5,1.6666665030268213E-001 +19,19,9.9999992855048481E-001 +19,18,1.6666665921414608E-001 +19,61,-6.6666660121072852E-001 +19,44,-6.6666663685658412E-001 +19,58,-5.8286708792820718E-016 +18,5,1.1908252884811393E-008 +18,19,1.6666665921414608E-001 +18,18,5.0000001336719702E-001 +18,61,-1.1102230246251565E-016 +18,44,-6.6666663685658445E-001 +18,58,-4.7633011479586429E-008 +61,5,-6.6666660121072885E-001 +61,19,-6.6666660121072852E-001 +61,18,-1.1102230246251565E-016 +61,61,2.6666665714006497E+000 +61,44,-9.5266023403262068E-008 +61,58,-1.3333332737131687E+000 +44,5,0.0000000000000000E+000 +44,19,-6.6666663685658412E-001 +44,18,-6.6666663685658445E-001 +44,61,-9.5266023403262068E-008 +44,44,2.6666665714006501E+000 +44,58,-1.3333332024214579E+000 +58,5,-4.7633011646119883E-008 +58,19,-5.8286708792820718E-016 +58,18,-4.7633011479586429E-008 +58,61,-1.3333332737131687E+000 +58,44,-1.3333332024214579E+000 +58,58,2.6666665714006497E+000 +8,8,5.0000002197396709E-001 +8,7,1.6666667399132237E-001 +8,23,6.0667938096582947E-017 +8,68,-6.6666669596528916E-001 +8,78,-3.8857805861880479E-016 +8,60,0.0000000000000000E+000 +7,8,1.6666667399132237E-001 +7,7,1.0000000000000011E+000 +7,23,1.6666665934201122E-001 +7,68,-6.6666669596528927E-001 +7,78,-6.6666663736804477E-001 +7,60,-4.9960036108132044E-016 +23,8,6.0667938096582947E-017 +23,7,1.6666665934201122E-001 +23,23,4.9999997802603341E-001 +23,68,-2.7755575615628914E-016 +23,78,-6.6666663736804455E-001 +23,60,2.7755575615628914E-017 +68,8,-6.6666669596528916E-001 +68,7,-6.6666669596528927E-001 +68,23,-2.7755575615628914E-016 +68,68,2.6666666666666674E+000 +68,78,2.2204460492503131E-016 +68,60,-1.3333332747360886E+000 +78,8,-3.8857805861880479E-016 +78,7,-6.6666663736804477E-001 +78,23,-6.6666663736804455E-001 +78,68,2.2204460492503131E-016 +78,78,2.6666666666666679E+000 +78,60,-1.3333333919305783E+000 +60,8,0.0000000000000000E+000 +60,7,-4.9960036108132044E-016 +60,23,2.7755575615628914E-017 +60,68,-1.3333332747360886E+000 +60,78,-1.3333333919305783E+000 +60,60,2.6666666666666674E+000 +19,19,5.0000002980232050E-001 +19,4,2.1915647224060331E-008 +19,24,1.6666665468512620E-001 +19,63,-8.7662588896253446E-008 +19,79,-8.3266726846886741E-017 +19,64,-6.6666661874050492E-001 +4,19,2.1915647224060331E-008 +4,4,4.9999997019768949E-001 +4,24,1.6666663481691590E-001 +4,63,-8.7662588785231144E-008 +4,79,-6.6666653926766362E-001 +4,64,-1.1102230246251565E-016 +24,19,1.6666665468512620E-001 +24,4,1.6666663481691590E-001 +24,24,9.9999986850612654E-001 +24,63,-4.4408920985006262E-016 +24,79,-6.6666653926766339E-001 +24,64,-6.6666661874050470E-001 +63,19,-8.7662588896253446E-008 +63,4,-8.7662588785231144E-008 +63,24,-4.4408920985006262E-016 +63,63,2.6666664913415148E+000 +63,79,-1.3333332374810098E+000 +63,64,-1.3333330785353270E+000 +79,19,-8.3266726846886741E-017 +79,4,-6.6666653926766362E-001 +79,24,-6.6666653926766339E-001 +79,63,-1.3333332374810098E+000 +79,79,2.6666664913415152E+000 +79,64,-1.7532517798679592E-007 +64,19,-6.6666661874050492E-001 +64,4,-1.1102230246251565E-016 +64,24,-6.6666661874050470E-001 +64,63,-1.3333330785353270E+000 +64,79,-1.7532517798679592E-007 +64,64,2.6666664913415148E+000 +24,24,5.0000005960467298E-001 +24,12,1.6666664679846580E-001 +24,11,3.9736425134384489E-008 +24,80,-6.6666658719386340E-001 +24,71,-8.3266726846886741E-017 +24,65,-1.5894570040697609E-007 +12,24,1.6666664679846580E-001 +12,12,9.9999976158148440E-001 +12,11,1.6666660706202877E-001 +12,80,-6.6666658719386329E-001 +12,71,-6.6666642824811539E-001 +12,65,-5.5511151231257827E-017 +11,24,3.9736425134384489E-008 +11,12,1.6666660706202877E-001 +11,11,4.9999994039536177E-001 +11,80,-5.5511151231257827E-017 +11,71,-6.6666642824811517E-001 +11,65,-1.5894570049024281E-007 +80,24,-6.6666658719386340E-001 +80,12,-6.6666658719386329E-001 +80,11,-5.5511151231257827E-017 +80,80,2.6666663487753590E+000 +80,71,-3.1789140098048563E-007 +80,65,-1.3333328564962317E+000 +71,24,-8.3266726846886741E-017 +71,12,-6.6666642824811539E-001 +71,11,-6.6666642824811517E-001 +71,80,-3.1789140098048563E-007 +71,71,2.666666 diff --git a/data/coo_torsion_no_duplicates.csv b/data/coo_torsion_no_duplicates.csv new file mode 100644 index 00000000..d99c979b --- /dev/null +++ b/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 diff --git a/src/Numerics.Tests/LinearAlgebraTests/MatrixHelpers.cs b/src/Numerics.Tests/LinearAlgebraTests/MatrixHelpers.cs index f3bb89d6..a0122812 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/MatrixHelpers.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/MatrixHelpers.cs @@ -28,7 +28,9 @@ // 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 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); + } } } diff --git a/src/Numerics.Tests/LinearAlgebraTests/MatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/MatrixTests.cs index cc39f378..ec3f08b1 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/MatrixTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/MatrixTests.cs @@ -28,7 +28,9 @@ // 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(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}"); + } + } } } diff --git a/src/TestData/TestData.csproj b/src/TestData/TestData.csproj index 1e60635c..b9f2de2c 100644 --- a/src/TestData/TestData.csproj +++ b/src/TestData/TestData.csproj @@ -269,4 +269,12 @@ runtime; build; native; contentfiles; analyzers; buildtransitive + + + Data\coo_torsion_duplicates.csv + + + Data\coo_torsion_no_duplicates.csv + +