diff --git a/test/spmm/Makefile b/test/spmm/Makefile new file mode 100644 index 00000000..3527bb1f --- /dev/null +++ b/test/spmm/Makefile @@ -0,0 +1,42 @@ +INSTALLDIR=../.. +INCDIR=$(INSTALLDIR)/include/ +MODDIR=$(INSTALLDIR)/modules/ +include $(INCDIR)/Make.inc.psblas +# +# Libraries used +# +LIBDIR = $(INSTALLDIR)/lib/ +PSBLAS_LIB = -L$(LIBDIR) -lpsb_util -lpsb_prec -lpsb_base +LDLIBS = $(PSBLDLIBS) + +FINCLUDES=$(FMFLAG)$(MODDIR) $(FMFLAG). + +EXEDIR=./runs + + +GREEN=\033[0;32m +RED=\033[0;31m +BLUE=\033[0;34m +YELLOW=\033[33m +END_COLOUR=\033[0m + + +all: runsd psb_spmm_test + @printf "$(GREEN)[INFO]\tCompilation success!$(END_COLOUR)\n" + +runsd: + @(if test ! -d runs ; then mkdir runs; fi) + @printf "$(BLUE)[INFO]\tBuild directory $(EXEDIR) correctly initialized$(END_COLOUR)\n" + + +psb_spmm_test: + @$(FLINK) $(LOPT) psb_spmm_test.f90 -o psb_spmm_test -I../../modules/ -I. $(PSBLAS_LIB) $(LDLIBS) + @mv psb_spmm_test $(EXEDIR) + @printf "$(BLUE)[INFO]\tTesting files generated correctly$(END_COLOUR)\n" + +clean: + @rm -f $(OBJS)\ + *$(.mod) $(EXEDIR)/psb_spmm_test + +.PHONY: all runsd clean + diff --git a/test/spmm/README.md b/test/spmm/README.md new file mode 100644 index 00000000..1778f28c --- /dev/null +++ b/test/spmm/README.md @@ -0,0 +1,45 @@ +# Introduction +This is a directory developed by Luca Pepè Sciarria and Simone Staccone froma Tor Vergata University to start to create some unit tests for PSBLAS 3.9, in particular for psb_spmm routine. + +## Environment +These tests are developed using a linux environment, in particular Rocky Linux 9.5 (Blue Onyx). + +The compiler used is: +- gnu 12.2.1 + +The necessary dependnces are: +- mpich 4.2.2 +- psblas 3.9 + +In order to have the exact same environment used for testing compile PSBALS library using cuda 12.5. + + +## Getting started +Steps to reproduce the tests: +- make +- insert the matrix files inside the matrix/ directory (or create one if it doesn't exists; psblas3/test/spmm/matrix/) +- run ./runs/psb_spmm_test +- ... + +## Test goal +Check the correctness of the matrix-vector multiplication $y = Ax$ using the **psb_spmm** routine, checking for all the test suite cases. + +## Test Suite +**A** matrixes are located in the matrix/ directory +|Matrix|File Name|Type| +|:-:|:-:|:-:| +|$A_1$|1138_bus.mtx|Sparse| + +**x** vectors are located in the vectors/ directory. They are generated randomly using the same seed and then saved on different files based on their characteristics. The size of the vector is choosen accordingly to the size of the matrix column space considered for the single test instance. +|Vector|File Name|Coefficients|Coefficients Description| +|:-:|:-:|:-:|:-:| +|$x_1$|x1.txt|$x_i> 0, \forall i$|Positive coefficients| +|$x_2$|x2.txt|$x_i < 0, \forall i$|Negative coefficients +|$x_3$|x3.txt|$x_i \ne 0, \forall i$|Random coefficients +|$x_4$|x4.txt|$x_i = 0, \forall i$|Null coefficients + +## Output +The results of the computation will be saved on different files based on the instance of the test considered. In particular the naming conventiona format the output file as sol_m#_x#_y#.mtx, where each # is a number choosen w.r.t. the test instance. (Ex. sol_m1_x1_y1.mtx is the solution computed using the first matrix file, the first x vector file and the first y vector file). + +## Notes +For now only integer multiplication is tested and on a single matrix \ No newline at end of file diff --git a/test/spmm/matrix/1138_bus.mtx b/test/spmm/matrix/1138_bus.mtx new file mode 100644 index 00000000..09591c70 --- /dev/null +++ b/test/spmm/matrix/1138_bus.mtx @@ -0,0 +1,2610 @@ +%%MatrixMarket matrix coordinate real symmetric +%------------------------------------------------------------------------------- +% UF Sparse Matrix Collection, Tim Davis +% http://www.cise.ufl.edu/research/sparse/matrices/HB/1138_bus +% name: HB/1138_bus +% [S ADMITTANCE MATRIX 1138 BUS POWER SYSTEM, D.J.TYLAVSKY, JULY 1985.] +% id: 1 +% date: 1985 +% author: D. Tylavsky +% ed: I. Duff, R. Grimes, J. Lewis +% fields: title A name id date author ed kind +% kind: power network problem +%------------------------------------------------------------------------------- +1138 1138 2596 +1 1 1474.779 +5 1 -9.017133 +563 1 -5.730659 +2 2 9.136654 +10 2 -3.405995 +563 2 -5.730659 +3 3 69.61468 +11 3 -8.810573 +34 3 -31.15265 +35 3 -16.06684 +104 3 -4.86926 +475 3 -8.715357 +4 4 68.60106 +7 4 -34.62025 +27 4 -.4755112 +101 4 -28.66497 +102 4 -.7463244 +103 4 -4.093998 +5 5 13.88805 +9 5 -4.870921 +6 6 116.8288 +7 6 -10.96124 +37 6 -56.81818 +98 6 -10.88139 +103 6 -38.16794 +7 7 52.76726 +37 7 -4.773726 +101 7 -.7772424 +102 7 -1.072973 +103 7 -.5618293 +8 8 30.25788 +26 8 -3.752486 +35 8 -.4975867 +724 8 -26.0078 +9 9 7.174451 +10 9 -.905633 +104 9 -1.397898 +10 10 5.709526 +104 10 -1.397898 +11 11 27.18584 +12 11 -1.238697 +38 11 -7.418397 +566 11 -9.718173 +12 12 1.238697 +13 13 7.142646 +34 13 -1.85192 +104 13 -5.290726 +14 14 12.95337 +413 14 -12.95337 +15 15 1696.756 +16 15 -30.67485 +17 15 -30.4878 +18 15 -30.39514 +19 15 -30.39514 +411 15 -1574.803 +16 16 30.67485 +17 17 30.4878 +18 18 30.39514 +19 19 30.39514 +20 20 5746.122 +21 20 -5714.287 +37 20 -18.24817 +102 20 -13.58696 +21 21 5735.022 +22 21 -5.205622 +23 21 -5.186722 +24 21 -5.181347 +25 21 -5.162622 +22 22 5.205622 +23 23 5.186722 +24 24 5.181347 +25 25 5.162622 +26 26 4.371336 +35 26 -.6188502 +27 27 9.123474 +28 27 -2.373605 +29 27 -2.439024 +30 27 -1.190334 +101 27 -2.644999 +28 28 2.373605 +29 29 2.439024 +30 30 1.190334 +31 31 1.688214 +32 31 -.6254691 +100 31 -1.062744 +32 32 1.688214 +100 32 -1.062744 +33 33 .6581979 +100 33 -.6581979 +34 34 56.31459 +104 34 -10.13479 +553 34 -13.17523 +35 35 10018.3 +104 35 -1.112756 +710 35 -10000 +36 36 10000 +711 36 -10000 +37 37 80.33353 +102 37 -.4934373 +38 38 74.99123 +39 38 -15.67398 +98 38 -46.2963 +412 38 -5.602555 +39 39 16.41742 +99 39 -.7434391 +40 40 245.9335 +41 40 -126.5823 +43 40 -55.24862 +45 40 -64.10257 +41 41 988.9011 +42 41 -28.98551 +44 41 -833.3333 +42 42 28.98551 +43 43 4403.075 +146 43 -4347.826 +44 44 10833.33 +486 44 -10000 +45 45 118.7474 +49 45 -54.64481 +46 46 10000 +48 46 -10000 +47 47 104.9318 +48 47 -104.9318 +48 48 20183.36 +54 48 -78.43137 +506 48 -10000 +49 49 288.754 +50 49 -126.5823 +53 49 -107.5269 +50 50 988.9011 +51 50 -28.98551 +52 50 -833.3333 +51 51 28.98551 +52 52 874.3169 +125 52 -40.98361 +53 53 1586.098 +54 53 -1428.572 +55 53 -50 +54 54 1957.633 +425 54 -119.0476 +445 54 -184.5238 +447 54 -147.0588 +55 55 50 +56 56 29.32551 +63 56 -29.32551 +57 57 112.3596 +66 57 -112.3596 +58 58 15.64945 +70 58 -15.64945 +59 59 24.3309 +67 59 -24.3309 +60 60 104.1667 +68 60 -104.1667 +61 61 125 +130 61 -125 +62 62 50.76142 +129 62 -50.76142 +63 63 10059.54 +64 63 -30.21148 +65 63 -10000 +64 64 159.7102 +71 64 -40.98361 +131 64 -16.05136 +226 64 -72.46377 +65 65 10015.92 +1095 65 -15.92357 +66 66 442.0023 +67 66 -97.08738 +68 66 -24.27184 +74 66 -32.65326 +183 66 -147.0588 +226 66 -28.57143 +67 67 167.4071 +68 67 -30.67485 +69 67 -15.31394 +68 68 289.2932 +74 68 -47.5921 +90 68 -32.33649 +201 68 -50.25126 +69 69 190.7525 +70 69 -175.4386 +70 70 225.5077 +182 70 -4.955401 +196 70 -5.170631 +1063 70 -4.623209 +1065 70 -16.47446 +1074 70 -3.195909 +71 71 96.53917 +72 71 -55.55556 +72 72 84.92064 +73 72 -5.555555 +121 72 -23.80952 +73 73 5.555555 +74 74 384.9024 +75 74 -40.32258 +76 74 -25.44529 +78 74 -34.3871 +80 74 -15.82279 +119 74 -188.6792 +75 75 693.1041 +204 75 -645.1613 +810 75 -4.608295 +918 75 -3.012048 +76 76 147.3945 +77 76 -30.03003 +78 76 -36.36364 +127 76 -55.55556 +77 77 5030.03 +1050 77 -5000 +78 78 262.67 +79 78 -90.90909 +452 78 -101.0101 +79 79 564.4214 +416 79 -48.07692 +417 79 -48.07692 +454 79 -377.3585 +80 80 657.1666 +81 80 -67.1141 +447 80 -476.1905 +452 80 -98.03922 +81 81 420.0095 +448 81 -158.7302 +450 81 -175.4386 +464 81 -18.72659 +82 82 4.975124 +94 82 -4.975124 +83 83 17.24138 +94 83 -17.24138 +84 84 17.57469 +95 84 -17.57469 +85 85 439.0805 +87 85 -172.4138 +126 85 -266.6667 +86 86 6807.496 +87 86 -5000 +241 86 -46.51163 +251 86 -71.94245 +253 86 -74.62687 +267 86 -94.78674 +269 86 -277.7778 +283 86 -138.8889 +291 86 -49.01961 +293 86 -57.14286 +294 86 -57.14286 +302 86 -689.6552 +315 86 -250 +87 87 5319.472 +88 87 -147.0588 +88 88 147.0588 +89 89 65.3412 +105 89 -38.31417 +115 89 -27.02703 +90 90 64.83059 +91 90 -32.4941 +91 91 645.056 +92 91 -163.6515 +108 91 -67.56757 +115 91 -24.19992 +116 91 -357.1429 +92 92 258.8896 +93 92 -95.2381 +93 93 612.1849 +94 93 -10.90512 +252 93 -131.5789 +264 93 -12.67427 +271 93 -66.0066 +288 93 -65.35947 +292 93 -31.84714 +293 93 -38.31417 +294 93 -38.31417 +322 93 -32.15434 +323 93 -34.8432 +324 93 -24.03846 +325 93 -14.40922 +326 93 -16.50165 +94 94 464.0852 +96 94 -4.800768 +264 94 -239.4475 +318 94 -110.6696 +325 94 -76.04562 +95 95 76.57204 +97 95 -8.285004 +262 95 -9.67118 +268 95 -7.142857 +300 95 -33.8983 +96 96 10022.9 +145 96 -7.24113 +704 96 -10.85776 +705 96 -10000 +97 97 12.12083 +268 97 -3.835827 +98 98 57.17769 +99 99 3.134068 +413 99 -2.390629 +100 100 40.73998 +725 100 -35.58719 +732 100 -2.369107 +101 101 34.2926 +102 101 -.754091 +103 101 -1.451295 +102 102 47.04131 +103 102 -30.38753 +103 103 10074.66 +478 103 -10000 +104 104 24.20333 +105 105 420.7618 +106 105 -12.07729 +109 105 -370.3704 +106 106 12.07729 +107 107 32.15434 +108 107 -32.15434 +108 108 1008.813 +110 108 -909.0909 +109 109 10370.37 +1029 109 -10000 +110 110 10974.79 +111 110 -41.84558 +328 110 -10000 +367 110 -10.77006 +370 110 -13.08045 +111 111 10056.95 +367 111 -7.27802 +368 111 -7.824726 +701 111 -10000 +112 112 301.7592 +113 112 -7.420491 +370 112 -8.624407 +686 112 -285.7143 +113 113 10040.49 +114 113 -7.624856 +115 113 -25.44529 +690 113 -10000 +114 114 10007.63 +1009 114 -10000 +115 115 76.67225 +116 116 436.123 +117 116 -10.9529 +126 116 -68.02721 +117 117 10.9529 +118 118 5.521811 +119 118 -5.521811 +119 119 228.3307 +123 119 -34.12969 +120 120 126.5823 +121 120 -126.5823 +121 121 272.2888 +122 121 -70.87661 +504 121 -51.02041 +122 122 152.6848 +123 122 -40.48583 +124 122 -41.32232 +123 123 111.929 +125 123 -37.31343 +124 124 97.81158 +125 124 -32.67974 +127 124 -23.80952 +125 125 363.2857 +126 125 -81.38689 +129 125 -70.92198 +546 125 -100 +126 126 478.1926 +129 126 -62.1118 +127 127 84.92064 +128 127 -5.555555 +128 128 5.555555 +129 129 183.7952 +130 130 356.9032 +133 130 -136.9863 +173 130 -51.81347 +213 130 -43.10345 +131 131 896.646 +132 131 -75.18797 +133 131 -769.2308 +136 131 -36.17595 +132 132 101.0104 +144 132 -4.409171 +742 132 -21.41328 +133 133 918.7799 +134 133 -12.56281 +134 134 12.56281 +135 135 10030.19 +136 135 -25.44529 +139 135 -4.748338 +740 135 -10000 +136 136 99.82595 +141 136 -38.20471 +137 137 108.031 +139 137 -72.46377 +141 137 -27.39726 +761 137 -8.169934 +138 138 217.898 +141 138 -28.98551 +877 138 -59.88025 +882 138 -129.0323 +139 139 90.06557 +140 139 -12.85347 +140 140 45.52996 +829 140 -18.62891 +830 140 -14.04757 +141 141 94.58748 +142 142 36.70324 +258 142 -21.55172 +366 142 -15.15152 +143 143 20014.59 +144 143 -12.5 +743 143 -2.090738 +745 143 -10000 +826 143 -10000 +144 144 10016.91 +827 144 -10000 +145 145 10022.01 +318 145 -14.77105 +703 145 -10000 +146 146 7289.003 +147 146 -2941.177 +147 147 12941.18 +148 147 -10000 +148 148 10000 +149 149 5.205622 +166 149 -5.205622 +150 150 73.52941 +173 150 -73.52941 +151 151 13.29787 +175 151 -13.29787 +152 152 10.40583 +180 152 -10.40583 +153 153 34.48276 +183 153 -34.48276 +154 154 13.71742 +207 154 -13.71742 +155 155 28.98551 +198 155 -28.98551 +156 156 144.9275 +213 156 -144.9275 +157 157 38.46154 +219 157 -38.46154 +158 158 28.0112 +226 158 -28.0112 +159 159 9.64196 +182 159 -4.730369 +205 159 -4.911591 +160 160 21.37365 +172 160 -10.01001 +233 160 -11.36364 +161 161 10.90321 +222 161 -4.730369 +743 161 -6.17284 +162 162 87.51172 +163 162 -46.08295 +169 162 -11.53403 +209 162 -7.451564 +223 162 -12.61034 +232 162 -9.832842 +163 163 145.9383 +186 163 -46.51163 +201 163 -13.6612 +227 163 -39.68254 +164 164 5.205622 +166 164 -5.205622 +165 165 117.6942 +166 165 -60.60606 +167 165 -17.33102 +175 165 -11.18568 +194 165 -28.57143 +166 166 341.3369 +192 166 -80 +201 166 -14.88095 +218 166 -175.4386 +167 167 34.66204 +175 167 -17.33102 +168 168 69.63064 +180 168 -9.389671 +209 168 -60.24096 +169 169 25.6384 +187 169 -14.10437 +170 170 30.28655 +188 170 -22.77904 +194 170 -7.507507 +171 171 52.2535 +178 171 -39.21569 +217 171 -13.03781 +172 172 66.85269 +173 172 -42.55319 +222 172 -4.873294 +755 172 -9.416196 +173 173 206.2103 +184 173 -38.31417 +174 174 50.63389 +211 174 -12.7551 +216 174 -37.87879 +175 175 53.63491 +179 175 -11.82033 +176 176 860.8028 +177 176 -172.4138 +178 176 -20.98079 +207 176 -667.4082 +177 177 276.5804 +207 177 -104.1667 +178 178 88.17661 +214 178 -15.06024 +217 178 -12.9199 +179 179 23.64066 +203 179 -11.82033 +180 180 28.49115 +209 180 -8.695652 +181 181 23.14815 +183 181 -23.14815 +182 182 61.50294 +183 182 -29.94012 +205 182 -16.72241 +221 182 -5.154639 +183 183 398.0187 +184 183 -91.74312 +201 183 -35.14939 +226 183 -36.49635 +184 184 192.1349 +193 184 -41.40787 +213 184 -20.6697 +185 185 8.064516 +187 185 -8.064516 +186 186 126.2011 +187 186 -41.66667 +218 186 -38.02281 +187 187 107.524 +188 187 -29.67359 +206 187 -8.695652 +209 187 -5.319149 +188 188 52.45263 +189 189 41.49792 +211 189 -11.46789 +216 189 -30.03003 +190 190 33.0033 +199 190 -33.0033 +191 191 1149.633 +195 191 -10.71811 +197 191 -14.74926 +198 191 -1111.111 +211 191 -13.05483 +192 192 824.6421 +199 192 -666.6667 +218 192 -63.29114 +220 192 -14.68429 +193 193 247.007 +198 193 -60.60606 +199 193 -106.383 +208 193 -38.61004 +194 194 78.9974 +216 194 -42.91846 +195 195 36.89613 +211 195 -26.17801 +196 196 5.170631 +197 197 36.48839 +212 197 -21.73913 +198 198 1200.703 +199 199 806.053 +200 200 60.0913 +201 200 -43.87481 +202 200 -16.21649 +201 201 172.6985 +218 201 -14.88095 +202 202 20.9357 +203 202 -4.719207 +203 203 16.53954 +204 204 645.1613 +205 205 28.7262 +221 205 -7.092198 +206 206 18.89453 +216 206 -10.19888 +207 207 881.1484 +208 207 -84.38818 +224 207 -11.46789 +208 208 122.9982 +209 209 81.70734 +210 210 1796.925 +215 210 -11.21076 +217 210 -1666.667 +218 210 -119.0476 +211 211 84.37634 +212 211 -20.9205 +212 212 42.65963 +213 213 282.2301 +504 213 -73.52941 +214 214 65.82166 +217 214 -50.76142 +215 215 11.21076 +216 216 148.1264 +218 216 -27.10027 +217 217 1743.386 +218 218 437.7814 +219 219 150.9842 +220 219 -86.20689 +230 219 -26.31579 +220 220 100.8912 +221 221 18.99606 +222 221 -3.15856 +225 221 -3.590664 +222 222 91.18269 +225 222 -26.24672 +233 222 -49.50495 +743 222 -2.668802 +223 223 54.62715 +232 223 -42.01681 +224 224 18.73533 +1026 224 -7.267442 +225 225 29.83738 +226 226 165.5428 +227 227 85.76549 +228 227 -46.08295 +228 228 97.42727 +229 228 -27.62431 +231 228 -12.7551 +232 228 -10.96491 +229 229 27.62431 +230 230 26.31579 +231 231 31.20529 +232 231 -18.45018 +232 232 81.26475 +233 233 60.86859 +234 234 29.17592 +236 234 -14.55604 +307 234 -14.61988 +235 235 2117.081 +236 235 -67.56757 +243 235 -14.59854 +270 235 -2000 +272 235 -9.208103 +298 235 -12.85347 +299 235 -12.85347 +236 236 90.2339 +286 236 -8.1103 +237 237 123.4571 +261 237 -2.818489 +287 237 -18.97533 +309 237 -69.68641 +366 237 -4.004806 +702 237 -27.97203 +238 238 188.1504 +239 238 -41.25455 +270 238 -146.8959 +239 239 59.24802 +270 239 -15.33742 +281 239 -2.656042 +240 240 7.917656 +259 240 -7.917656 +241 241 2888.018 +242 241 -185.1852 +246 241 -89.28572 +253 241 -123.4568 +257 241 -92.59259 +266 241 -123.4568 +275 241 -13.44086 +279 241 -31.74603 +289 241 -30.03003 +291 241 -833.3333 +292 241 -833.3333 +293 241 -138.8889 +294 241 -138.8889 +299 241 -13.28021 +310 241 -16.80672 +321 241 -88.49557 +327 241 -89.28572 +242 242 314.7918 +244 242 -57.14286 +245 242 -72.46377 +243 243 14.59854 +244 244 118.4926 +272 244 -61.34969 +245 245 95.93795 +298 245 -23.47418 +246 246 113.1521 +310 246 -23.86635 +247 247 582.7703 +248 247 -270.2703 +255 247 -312.5 +248 248 502.8284 +255 248 -232.5581 +249 249 1666.667 +282 249 -1666.667 +250 250 1123.714 +257 250 -92.59259 +263 250 -78.74016 +289 250 -119.0476 +317 250 -833.3333 +251 251 210.8313 +267 251 -138.8889 +252 252 288.2195 +310 252 -21.50537 +313 252 -135.1351 +253 253 198.0837 +254 254 383.7719 +255 254 -208.3333 +285 254 -175.4386 +255 255 910.2564 +258 255 -31.44654 +260 255 -71.94245 +263 255 -53.47594 +256 256 10133 +290 256 -52.35602 +317 256 -10000 +321 256 -80.64516 +257 257 185.1852 +258 258 261.8486 +261 258 -128.2051 +327 258 -80.64516 +259 259 20.85427 +278 259 -12.93661 +260 260 190.9901 +289 260 -119.0476 +261 261 131.0236 +262 262 183.095 +268 262 -26.17801 +276 262 -62.5 +314 262 -84.74576 +263 263 132.2161 +264 264 383.7008 +311 264 -131.5789 +265 265 1017.575 +276 265 -999.9999 +300 265 -17.57469 +266 266 246.9136 +307 266 -123.4568 +267 267 566.0127 +282 267 -144.9275 +284 267 -77.51938 +302 267 -109.8901 +268 268 158.6071 +270 268 -53.88283 +301 268 -67.56757 +269 269 486.1111 +284 269 -208.3333 +270 270 2317.201 +275 270 -12.77139 +279 270 -8.257638 +280 270 -29.32551 +318 270 -34.36426 +320 270 -16.36661 +271 271 66.0066 +272 272 70.5578 +273 273 1295.094 +274 273 -303.0303 +303 273 -714.2858 +315 273 -277.7778 +274 274 606.0606 +312 274 -303.0303 +275 275 26.21225 +276 276 1062.5 +277 277 5086.957 +285 277 -86.95652 +289 277 -5000 +278 278 27.55649 +309 278 -14.61988 +279 279 40.00367 +280 280 29.32551 +281 281 2.656042 +282 282 1811.594 +283 283 214.6465 +292 283 -75.75758 +284 284 285.8527 +285 285 262.3951 +286 286 8.1103 +287 287 18.97533 +288 288 127.4713 +291 288 -62.1118 +289 289 5268.125 +290 290 52.35602 +291 291 944.4647 +292 292 940.938 +293 293 234.3459 +294 294 234.3459 +295 295 38.31417 +298 295 -38.31417 +296 296 101.0101 +297 296 -101.0101 +297 297 118.4317 +299 297 -17.4216 +298 298 74.64183 +299 299 43.55529 +300 300 122.395 +696 300 -70.92198 +301 301 153.7745 +314 301 -86.20689 +302 302 799.5453 +303 303 1428.572 +312 303 -714.2858 +304 304 1380.582 +305 304 -263.1579 +315 304 -208.3333 +329 304 -909.0909 +305 305 459.2363 +315 305 -196.0784 +306 306 37.87879 +322 306 -37.87879 +307 307 138.0767 +308 308 81.30082 +323 308 -81.30082 +309 309 84.30629 +310 310 62.17845 +311 311 200.5445 +326 311 -68.96552 +312 312 1295.094 +315 312 -277.7778 +313 313 135.1351 +314 314 170.9527 +315 315 1688.798 +316 315 -322.5806 +319 315 -125 +323 315 -31.25 +316 316 360.1746 +322 316 -37.59399 +317 317 10833.33 +318 318 169.825 +704 318 -10.02004 +319 319 1236.111 +329 319 -1111.111 +320 320 16.36661 +321 321 169.1407 +322 322 107.6271 +323 323 147.394 +324 324 51.89362 +325 324 -27.85515 +325 325 118.31 +326 326 85.46717 +327 327 169.9309 +328 328 10000 +329 329 2020.202 +330 330 2.409639 +335 330 -2.409639 +331 331 .8810573 +336 331 -.8810573 +332 332 1.666667 +337 332 -1.666667 +333 333 2.608922 +350 333 -2.608922 +334 334 1.446132 +350 334 -1.446132 +335 335 30.26479 +337 335 -27.85515 +336 336 218.2724 +337 336 -217.3913 +337 337 260.9173 +338 337 -3.840246 +339 337 -3.955696 +340 337 -6.208189 +338 338 19.08415 +340 338 -15.2439 +339 339 19.1996 +340 339 -15.2439 +340 340 59.70203 +341 340 -8.1103 +342 340 -14.89573 +341 341 20.88169 +342 341 -12.77139 +342 342 66.7209 +343 342 -5.675369 +344 342 -10.71237 +345 342 -4.215851 +370 342 -18.45018 +343 343 15.14507 +346 343 -9.469697 +344 344 28.10368 +346 344 -17.3913 +345 345 26.63738 +346 345 -22.42153 +346 346 102.5212 +347 346 -14.08451 +349 346 -20.70393 +367 346 -18.45018 +347 347 54.57034 +348 347 -40.48583 +348 348 79.09587 +349 348 -38.61004 +349 349 83.58582 +350 349 -24.27184 +350 350 28.3269 +351 351 7.374631 +366 351 -7.374631 +352 352 14.91256 +353 352 -5.289326 +408 352 -2.934273 +409 352 -6.688963 +353 353 17.04893 +363 353 -3.816794 +382 353 -7.942812 +354 354 28.97867 +382 354 -6.199628 +383 354 -22.77904 +355 355 2.164971 +375 355 -2.164971 +356 356 13.59556 +383 356 -5.344736 +398 356 -8.250825 +357 357 1.307306 +394 357 -.5700604 +395 357 -.7372456 +358 358 46.94836 +479 358 -46.94836 +359 359 18.55447 +474 359 -18.55447 +360 360 8.05153 +715 360 -8.05153 +361 361 509.4518 +479 361 -9.451796 +480 361 -500 +362 362 22.4661 +403 362 -11.03753 +714 362 -11.42857 +363 363 96.66204 +364 363 -9.149131 +365 363 -9.149131 +373 363 -9.149131 +374 363 -9.149131 +388 363 -34.96503 +395 363 -4.926108 +407 363 -10.75847 +474 363 -5.599104 +364 364 9.149131 +365 365 9.149131 +366 366 41.86838 +699 366 -15.33742 +367 367 307.3316 +368 367 -104.1667 +372 367 -166.6667 +368 368 111.9914 +369 369 72.9927 +371 369 -72.9927 +370 370 40.15504 +371 371 239.6594 +372 371 -166.6667 +372 372 333.3333 +373 373 9.149131 +374 374 9.149131 +375 375 122.031 +376 375 -2.019386 +377 375 -2.019386 +378 375 -2.019386 +379 375 -1.959632 +380 375 -1.959632 +381 375 -1.959632 +389 375 -105.8201 +404 375 -2.108815 +376 376 2.019386 +377 377 2.019386 +378 378 2.019386 +379 379 1.959632 +380 380 1.959632 +381 381 1.959632 +382 382 14.14244 +383 383 84.26632 +384 383 -8.143323 +385 383 -8.032128 +386 383 -16.50165 +387 383 -16.50165 +392 383 -6.963788 +384 384 8.143323 +385 385 8.032128 +386 386 16.50165 +387 387 16.50165 +388 388 94.03941 +389 388 -22.98851 +390 388 -7.077141 +391 388 -7.077141 +395 388 -4.739336 +401 388 -9.416196 +405 388 -7.77605 +389 389 128.8086 +390 390 7.077141 +391 391 7.077141 +392 392 10.41564 +395 392 -3.451847 +393 393 32.25806 +474 393 -16.12903 +479 393 -16.12903 +394 394 20.16254 +395 394 -19.59248 +395 395 785.9075 +398 395 -76.33588 +399 395 -77.51938 +405 395 -10.71811 +406 395 -473.7875 +407 395 -89.28572 +474 395 -24.8139 +396 396 97.03087 +406 396 -86.43042 +716 396 -5.336179 +717 396 -5.264266 +397 397 690.4763 +716 397 -357.1429 +717 397 -333.3333 +398 398 84.5867 +399 399 77.51938 +400 400 10000 +473 400 -10000 +401 401 29.10979 +402 401 -8.038586 +714 401 -11.65501 +402 402 8.038586 +403 403 11.03753 +404 404 5.644883 +409 404 -3.536068 +405 405 18.49416 +406 406 10591.18 +479 406 -23.97024 +483 406 -10000 +716 406 -3.519887 +717 406 -3.472463 +407 407 100.0442 +408 408 2.934273 +409 409 10.22503 +410 410 10155.49 +411 410 -10000 +412 410 -80.19246 +731 410 -75.30121 +411 411 11741.83 +476 411 -48.89976 +477 411 -68.37394 +486 411 -49.75124 +412 412 111.7064 +413 412 -9.425071 +478 412 -3.253196 +709 412 -.6465378 +724 412 -12.58653 +413 413 24.76907 +414 414 319.0159 +431 414 -227.2727 +433 414 -91.74312 +415 415 319.0159 +432 415 -227.2727 +433 415 -91.74312 +416 416 362.0423 +433 416 -91.74312 +462 416 -222.2222 +417 417 362.0423 +433 417 -91.74312 +462 417 -222.2222 +418 418 39.25825 +419 418 -9.389671 +545 418 -29.86858 +419 419 9.389671 +420 420 1716.987 +421 420 -38.75969 +422 420 -11.56069 +470 420 -1666.667 +421 421 38.75969 +422 422 11.56069 +423 423 606.9609 +425 423 -526.3158 +516 423 -80.64516 +424 424 293.4111 +466 424 -212.766 +516 424 -80.64516 +425 425 905.9952 +426 425 -73.52941 +427 425 -35.58719 +466 425 -151.5152 +426 426 536.205 +437 426 -454.5455 +519 426 -8.130081 +427 427 35.58719 +428 428 305.9395 +429 428 -25 +430 428 -37.03704 +431 428 -121.9512 +432 428 -121.9512 +429 429 25 +430 430 37.03704 +431 431 349.224 +432 432 349.224 +433 433 602.0284 +434 433 -32.05128 +510 433 -181.8182 +564 433 -21.18644 +434 434 32.05128 +435 435 83.68201 +510 435 -83.68201 +436 436 21.45923 +534 436 -21.45923 +437 437 548.2252 +438 437 -45.6621 +439 437 -6.222775 +441 437 -12.12121 +458 437 -29.67359 +438 438 45.6621 +439 439 22.0206 +440 439 -11.16819 +460 439 -4.62963 +440 440 11.16819 +441 441 45.41016 +442 441 -33.28895 +442 442 33.28895 +443 443 1625.394 +444 443 -73.52941 +470 443 -1111.111 +506 443 -155.0388 +516 443 -285.7143 +444 444 1323.529 +458 444 -1250 +445 445 298.3669 +446 445 -46.72897 +447 445 -67.1141 +446 446 46.72897 +447 447 1251.698 +449 447 -73.52941 +537 447 -487.8049 +448 448 178.454 +464 448 -19.72387 +449 449 2073.529 +450 449 -2000 +450 450 2196.806 +451 450 -21.36752 +451 451 21.36752 +452 452 237.3635 +453 452 -38.31417 +453 453 38.31417 +454 454 413.3297 +455 454 -35.97123 +455 455 35.97123 +456 456 105.5727 +457 456 -24.27184 +564 456 -81.30082 +457 457 24.27184 +458 458 1323.682 +459 458 -18.69159 +460 458 -25.31645 +459 459 18.69159 +460 460 51.68521 +461 460 -21.73913 +461 461 21.73913 +462 462 492.9882 +463 462 -48.54369 +463 463 48.54369 +464 464 86.29654 +465 464 -26.88172 +545 464 -20.96436 +465 465 92.6712 +968 465 -65.78947 +466 466 414.0324 +467 466 -49.75124 +467 467 49.75124 +468 468 10000 +544 468 -10000 +469 469 10000 +543 469 -10000 +470 470 2777.778 +471 471 71.30248 +472 471 -24.67105 +478 471 -11.01079 +481 471 -2.51756 +492 471 -2.24341 +707 471 -5.08647 +708 471 -25.7732 +472 472 24.67105 +473 473 10004.09 +474 473 -4.095004 +474 474 69.19151 +475 475 31.94728 +710 475 -12.28501 +724 475 -10.94691 +476 476 81.26222 +482 476 -32.36246 +477 477 228.7589 +478 477 -160.3849 +478 478 10195.93 +708 478 -20.67495 +709 478 -.6028454 +479 479 118.9729 +480 479 -9.02527 +714 479 -8.410429 +726 479 -5.037783 +480 480 509.0252 +481 481 26.89223 +484 481 -4.597701 +485 481 -4.425562 +491 481 -2.892765 +492 481 -3.441512 +733 481 -9.017133 +482 482 111.1026 +483 482 -78.74016 +483 483 10078.74 +484 484 22.31696 +709 484 -10.70664 +733 484 -7.012623 +485 485 12.73121 +491 485 -8.305648 +486 486 10101.3 +731 486 -51.54639 +487 487 5.743825 +491 487 -5.743825 +488 488 5.743825 +491 488 -5.743825 +489 489 6.968641 +492 489 -6.968641 +490 490 7.077141 +492 490 -7.077141 +491 491 41.56859 +492 491 -16.91332 +734 491 -1.969202 +492 492 10036.64 +707 492 -10000 +493 493 11.23596 +707 493 -11.23596 +494 494 121.9512 +505 494 -121.9512 +495 495 46.2963 +513 495 -46.2963 +496 496 303.0303 +521 496 -303.0303 +497 497 104.1667 +522 497 -104.1667 +498 498 20.08032 +523 498 -20.08032 +499 499 87.33171 +500 499 -39.37008 +819 499 -23.98081 +914 499 -23.98081 +500 500 39.37008 +501 501 227.9827 +502 501 -33.19632 +505 501 -18.58736 +507 501 -58.13953 +521 501 -32.67974 +531 501 -42.55319 +536 501 -42.82655 +502 502 120.8391 +607 502 -33.33334 +609 502 -11.02536 +613 502 -27.3224 +937 502 -15.96169 +503 503 121.5155 +507 503 -42.91846 +513 503 -55.55556 +553 503 -23.04147 +504 504 195.9784 +505 504 -71.42857 +505 505 292.5258 +521 505 -41.49377 +526 505 -17.60563 +578 505 -21.45923 +506 506 10155.04 +507 507 295.7078 +508 507 -12.03369 +509 507 -53.0504 +515 507 -20.4918 +521 507 -39.0625 +522 507 -40.16064 +547 507 -29.85075 +508 508 265.0443 +619 508 -175.4386 +639 508 -56.49718 +781 508 -21.07482 +509 509 912.198 +511 509 -12.0919 +515 509 -82.64463 +520 509 -238.0952 +534 509 -526.3158 +510 510 2646.453 +520 510 -2380.952 +511 511 29.78859 +914 511 -6.779661 +926 511 -10.91703 +512 512 99.0099 +520 512 -99.0099 +513 513 185.3068 +514 513 -9.380863 +540 513 -74.07407 +514 514 28.32451 +790 514 -11.28668 +795 514 -7.656968 +515 515 688.1429 +516 515 -416.6667 +517 515 -10.34126 +518 515 -18.18182 +536 515 -80.64516 +547 515 -59.1716 +516 516 863.6713 +517 517 27.53012 +993 517 -12.95337 +995 517 -4.235493 +518 518 18.18182 +519 519 93.04359 +957 519 -16.42036 +967 519 -68.49315 +520 520 2718.058 +521 521 520.433 +522 521 -104.1667 +522 522 260.4988 +523 522 -12.0048 +523 523 247.5269 +582 523 -196.0784 +770 523 -3.675795 +779 523 -11.60093 +802 523 -4.086637 +524 524 220.5431 +533 524 -158.7302 +985 524 -43.85965 +1001 524 -17.95332 +525 525 78.74016 +568 525 -78.74016 +526 526 71.7446 +527 526 -21.45923 +531 526 -32.67974 +527 527 149.7379 +921 527 -4.553734 +933 527 -5.621135 +1068 527 -35.27337 +1073 527 -30.67485 +1074 527 -25.83979 +1124 527 -26.31579 +528 528 336.2918 +529 528 -196.0784 +809 528 -56.17978 +819 528 -84.03362 +529 529 196.0784 +530 530 261.7177 +578 530 -9.708738 +583 530 -9.259259 +780 530 -5.390836 +797 530 -4.800768 +803 530 -232.5581 +531 531 204.1382 +532 531 -53.71729 +534 531 -75.18797 +532 532 527.8732 +554 532 -35.97123 +647 532 -113.6364 +652 532 -91.3242 +663 532 -45.87156 +668 532 -63.29114 +672 532 -12.97017 +673 532 -32.78688 +677 532 -28.24859 +908 532 -13.75516 +912 532 -18.48429 +918 532 -6.426735 +1047 532 -11.38952 +533 533 158.7302 +534 534 740.9194 +535 534 -21.45923 +536 534 -56.49718 +542 534 -40 +535 535 37.48487 +885 535 -16.02564 +536 536 698.459 +537 536 -416.6667 +538 536 -21.14165 +539 536 -18.18182 +542 536 -62.5 +537 537 904.4716 +538 538 105.9105 +809 538 -33.78378 +914 538 -7.002801 +948 538 -11.17318 +953 538 -10.48768 +964 538 -22.32143 +539 539 18.18182 +540 540 95.5333 +800 540 -21.45923 +541 541 13.9958 +543 541 -13.9958 +542 542 256.9678 +543 542 -42.91846 +545 542 -21.45923 +546 542 -90.0901 +543 543 10075.1 +544 543 -18.18182 +544 544 10018.18 +545 545 72.29217 +546 546 190.0901 +547 547 89.02235 +548 548 7.942812 +551 548 -7.942812 +549 549 8.532423 +563 549 -8.532423 +550 550 35.33569 +566 550 -35.33569 +551 551 65.62718 +552 551 -17.51313 +555 551 -15.47988 +566 551 -24.69136 +552 552 35.10244 +558 552 -3.012048 +560 552 -14.57726 +553 553 67.98992 +561 553 -26.73797 +710 553 -5.035247 +554 554 351.6514 +574 554 -93.45794 +909 554 -222.2222 +555 555 58.73003 +556 555 -16.26016 +557 555 -8.591065 +564 555 -10.9529 +566 555 -7.446017 +556 556 150.6284 +559 556 -64.93507 +579 556 -7.886436 +621 556 -45.04505 +903 556 -16.50165 +557 557 25.14736 +558 557 -16.55629 +558 558 103.3103 +979 558 -4.599816 +980 558 -12.40695 +986 558 -12.0919 +989 558 -14.4405 +991 558 -13.86001 +998 558 -8.061266 +1000 558 -18.28154 +559 559 73.91173 +579 559 -8.976661 +560 560 20.04772 +980 560 -5.470459 +561 561 200.6328 +562 561 -135.1351 +566 561 -38.75969 +562 562 143.5954 +563 562 -8.460238 +563 563 31.84037 +567 563 -3.386387 +564 564 113.4402 +565 565 5.017561 +567 565 -5.017561 +566 566 120.1828 +567 566 -4.231908 +567 567 12.63586 +568 568 164.0549 +773 568 -6.574622 +795 568 -78.74016 +569 569 20.08032 +785 569 -20.08032 +570 570 14.70588 +579 570 -14.70588 +571 571 11.42857 +776 571 -11.42857 +572 572 14.85884 +783 572 -14.85884 +573 573 18.51852 +796 573 -18.51852 +574 574 93.45794 +575 575 400 +581 575 -400 +576 576 23.74311 +582 576 -13.31558 +784 576 -10.42753 +577 577 897.2149 +786 577 -769.2308 +802 577 -8.93655 +1090 577 -119.0476 +578 578 45.98278 +780 578 -14.81481 +579 579 84.46193 +580 579 -2.915452 +782 579 -20.4918 +783 579 -7.85546 +895 579 -18.21494 +927 579 -3.4153 +580 580 16.74671 +587 580 -13.83126 +581 581 427.649 +776 581 -9.65717 +796 581 -4.690432 +797 581 -7.42942 +799 581 -5.87199 +582 582 209.394 +583 583 29.98347 +780 583 -13.03781 +803 583 -7.686395 +584 584 52.25406 +585 584 -45.6621 +1068 584 -6.591958 +585 585 121.8822 +607 585 -38.91051 +613 585 -34.0136 +659 585 -3.295979 +586 586 2.538071 +597 586 -2.538071 +587 587 66.82627 +598 587 -14.08451 +614 587 -38.91051 +588 588 10.00413 +595 588 -5.065856 +597 588 -4.938272 +589 589 6.075334 +591 589 -6.075334 +590 590 11.77992 +595 590 -4.405286 +616 590 -7.374631 +591 591 15.86007 +601 591 -9.784736 +592 592 7.564296 +611 592 -7.564296 +593 593 10.53741 +604 593 -10.53741 +594 594 63.69427 +600 594 -63.69427 +595 595 9.471143 +596 596 22.07258 +597 596 -4.837929 +603 596 -6.493506 +607 596 -10.74114 +597 597 12.31427 +598 598 14.08451 +599 599 6.038647 +1105 599 -6.038647 +600 600 346.1801 +601 600 -4.708098 +782 600 -277.7778 +601 601 23.91828 +602 601 -5.24659 +633 601 -4.178855 +602 602 10.19709 +640 602 -4.950495 +603 603 49.17807 +604 603 -4.837929 +605 603 -10.96491 +1092 603 -26.88172 +604 604 30.79998 +612 604 -7.843137 +615 604 -7.581501 +605 605 31.29012 +607 605 -20.3252 +606 606 3.743916 +610 606 -3.743916 +607 607 103.3102 +608 608 44.10909 +610 608 -41.15226 +1101 608 -2.95683 +609 609 20.31041 +1068 609 -9.285051 +610 610 44.89618 +611 611 19.35675 +615 611 -11.79245 +612 612 7.843137 +613 613 61.33601 +614 614 38.91051 +615 615 19.37395 +616 616 7.374631 +617 617 51.02041 +1123 617 -51.02041 +618 618 27.57334 +629 618 -10.09082 +639 618 -17.48252 +619 619 180.4386 +620 619 -5 +620 620 7.089864 +632 620 -2.089864 +621 621 137.2607 +624 621 -87.7193 +1061 621 -4.496403 +622 622 12.46672 +625 622 -10.67236 +641 622 -1.794366 +623 623 18.4185 +639 623 -10.37344 +642 623 -8.045053 +624 624 110.7608 +638 624 -23.04147 +625 625 17.12814 +635 625 -6.455778 +626 626 8.504332 +634 626 -5.627462 +635 626 -2.87687 +627 627 15.82279 +639 627 -15.82279 +628 628 43.10402 +631 628 -33.22259 +642 628 -9.881423 +629 629 5125.033 +637 629 -5000 +643 629 -114.9425 +630 630 27.86917 +631 630 -5.931198 +635 630 -4.347826 +796 630 -17.59015 +631 631 39.15379 +632 632 10.68662 +634 632 -6.830601 +641 632 -1.76616 +633 633 4.178855 +634 634 12.45806 +635 635 18.68799 +636 635 -5.007511 +636 636 8.039652 +1094 636 -3.03214 +637 637 5000 +638 638 23.04147 +639 639 100.1759 +640 640 4.950495 +641 641 3.560526 +642 642 17.92648 +643 643 114.9425 +644 644 87.81362 +652 644 -55.55556 +662 644 -32.25806 +645 645 32.23264 +650 645 -26.80965 +1060 645 -5.422993 +646 646 35.23614 +664 646 -30.4878 +1051 646 -4.748338 +647 647 132.4334 +1041 647 -18.79699 +648 648 87.5595 +678 648 -64.93507 +1042 648 -22.62444 +649 649 89.50495 +672 649 -40 +1055 649 -49.50495 +650 650 43.7588 +653 650 -16.94915 +651 651 35.83253 +670 651 -15.12859 +1045 651 -20.70393 +652 652 4092.357 +653 652 -4.440497 +663 652 -3333.333 +666 652 -97.08738 +668 652 -158.7302 +676 652 -18.55288 +1054 652 -333.3333 +653 653 31.9941 +1048 653 -10.60445 +654 654 184.7682 +677 654 -39.84064 +1057 654 -144.9275 +655 655 330.6451 +657 655 -80.64516 +665 655 -250 +656 656 4.040404 +678 656 -4.040404 +657 657 188.172 +1055 657 -107.5269 +658 658 298.2456 +671 658 -131.5789 +672 658 -166.6667 +659 659 65.79597 +677 659 -62.5 +660 660 36.60525 +1050 660 -17.03578 +1058 660 -19.56947 +661 661 500 +677 661 -500 +662 662 90.3976 +672 662 -58.13953 +663 663 3379.205 +664 664 60.0736 +1056 664 -29.5858 +665 665 340.0901 +682 665 -90.0901 +666 666 623.4032 +681 666 -526.3158 +667 667 5.494505 +1051 667 -5.494505 +668 668 222.0213 +669 669 400 +679 669 -66.66667 +1058 669 -333.3333 +670 670 69.18265 +1121 670 -54.05405 +671 671 184.7704 +679 671 -53.19149 +672 672 619.955 +673 672 -24.27184 +682 672 -117.647 +1049 672 -40 +1050 672 -16.80672 +1052 672 -18.34863 +1058 672 -19.84127 +1121 672 -105.2632 +673 673 57.05873 +674 674 340.5986 +675 674 -322.5806 +1046 674 -18.01802 +675 675 353.4448 +1050 675 -30.8642 +676 676 172.399 +1043 676 -153.8461 +677 677 945.5062 +678 677 -4.347826 +1041 677 -66.66667 +1059 677 -243.9024 +678 678 73.3233 +679 679 119.8582 +680 680 103.5542 +1047 680 -46.08295 +1057 680 -57.47126 +681 681 1637.427 +1053 681 -1111.111 +682 682 207.7372 +683 683 1.579031 +689 683 -1.579031 +684 684 1.923077 +689 684 -1.923077 +685 685 1.764913 +691 685 -1.764913 +686 686 328.5128 +687 686 -18.34863 +688 686 -24.44988 +687 687 18.34863 +688 688 71.2075 +689 688 -4.409431 +694 688 -8.312551 +699 688 -3.82995 +700 688 -7.374631 +702 688 -22.83105 +689 689 9.846897 +693 689 -1.935359 +690 690 10178.92 +691 690 -4.99002 +694 690 -161.2903 +697 690 -12.64223 +691 691 10040.88 +692 691 -10000 +695 691 -34.12969 +692 692 10000 +693 693 36.06505 +695 693 -34.12969 +694 694 187.9515 +695 694 -18.34863 +695 695 86.60801 +696 696 70.92198 +697 697 23.45304 +698 697 -10.81081 +698 698 10.81081 +699 699 27.1355 +700 699 -7.968128 +700 700 15.34276 +701 701 10000 +702 702 50.80308 +703 703 10000 +704 704 20.8778 +705 705 10000 +706 706 11.04972 +707 706 -11.04972 +707 707 10067.62 +726 707 -40.24145 +708 708 78.90948 +709 708 -32.46134 +709 709 44.41736 +710 710 10017.32 +711 711 10024.15 +724 711 -11.7096 +734 711 -12.43781 +712 712 10.78749 +714 712 -10.78749 +713 713 10.92896 +714 713 -10.92896 +714 714 102.2441 +715 714 -25.08151 +734 714 -23.9521 +715 715 33.13305 +716 716 370.5403 +717 716 -4.541326 +717 717 346.6114 +718 718 14.51379 +724 718 -14.51379 +719 719 14.51379 +724 719 -14.51379 +720 720 14.51379 +724 720 -14.51379 +721 721 14.51379 +724 721 -14.51379 +722 722 14.51379 +724 722 -14.51379 +723 723 14.51379 +724 723 -14.51379 +724 724 156.8111 +725 724 -2.262444 +734 724 -6.215041 +725 725 37.84963 +726 726 45.27923 +727 727 22.77734 +728 727 -1.437174 +731 727 -21.34016 +728 728 22.77734 +731 728 -21.34016 +729 729 22.54354 +730 729 -.5025378 +731 729 -22.041 +730 730 22.63133 +731 730 -22.12879 +731 731 213.6977 +732 732 2.369107 +733 733 16.02976 +734 734 44.57415 +735 735 3.749531 +743 735 -3.749531 +736 736 5.060729 +742 736 -5.060729 +737 737 10.41667 +743 737 -10.41667 +738 738 25.25253 +742 738 -25.25253 +739 739 6.666667 +744 739 -6.666667 +740 740 10119.13 +741 740 -29.06977 +742 740 -9.416196 +744 740 -80.64516 +741 741 66.38967 +749 741 -30.12048 +759 741 -7.199424 +742 742 97.15186 +743 742 -36.00912 +743 743 65.14973 +746 743 -4.042037 +744 744 120.6452 +756 744 -33.33334 +745 745 10004.53 +746 745 -4.531038 +746 746 8.573075 +747 747 83.11967 +748 747 -15.5521 +758 747 -67.56757 +748 748 35.75412 +757 748 -20.20202 +749 749 109.4856 +753 749 -79.36508 +750 750 36.15381 +751 750 -9.199632 +759 750 -26.95418 +751 751 9.199632 +752 752 14.23959 +757 752 -10.20408 +762 752 -4.035512 +753 753 79.36508 +754 754 101.7248 +757 754 -42.55319 +765 754 -59.1716 +755 755 34.41619 +764 755 -25 +756 756 61.14975 +757 756 -27.81641 +757 757 100.7757 +758 758 67.56757 +759 759 34.1536 +760 760 6.238303 +761 760 -6.238303 +761 761 27.13861 +766 761 -4.730369 +767 761 -8 +762 762 8.519817 +763 762 -4.484305 +763 763 4.484305 +764 764 25 +765 765 59.1716 +766 766 7.055951 +768 766 -2.325581 +767 767 8 +768 768 8.877011 +769 768 -3.030303 +772 768 -3.521127 +769 769 3.030303 +770 770 10003.68 +823 770 -10000 +771 771 4.694836 +772 771 -4.694836 +772 772 8.215962 +773 773 41.97304 +774 773 -9.191176 +795 773 -6.067961 +801 773 -5.646527 +802 773 -14.49275 +774 774 9.191176 +775 775 87.97093 +776 775 -79.36508 +781 775 -8.605852 +776 776 145.414 +781 776 -7.067138 +796 776 -2.511932 +797 776 -3.435246 +1127 776 -31.94888 +777 777 24.34617 +793 777 -3.907777 +795 777 -5.797101 +800 777 -14.64129 +778 778 27.51031 +779 778 -27.51031 +779 779 52.63487 +780 779 -3.543586 +787 779 -9.980041 +780 780 53.90431 +797 780 -2.540005 +949 780 -14.57726 +781 781 36.74781 +782 782 311.0084 +783 782 -12.73885 +783 783 35.45316 +784 784 25.00479 +802 784 -14.57726 +785 785 85.04397 +786 785 -26.66667 +788 785 -16.80672 +796 785 -5.941771 +797 785 -11.00715 +802 785 -4.541326 +786 786 1295.897 +1128 786 -500 +787 787 18.79838 +949 787 -8.818342 +788 788 201.3442 +789 788 -2.932551 +796 788 -9.191176 +1132 788 -172.4138 +789 789 6.317792 +1094 789 -3.38524 +790 790 67.99094 +791 790 -32.89474 +795 790 -23.80952 +791 791 32.89474 +792 792 18.23483 +799 792 -10.1833 +1110 792 -8.05153 +793 793 10007.82 +794 793 -3.907777 +825 793 -10000 +794 794 24.34617 +795 794 -5.797101 +800 794 -14.64129 +795 795 127.8688 +796 796 80.27805 +799 796 -21.83406 +797 797 107.3739 +798 797 -4.818348 +803 797 -4.5106 +805 797 -18.83239 +1119 797 -50 +798 798 10.82075 +1114 798 -6.002401 +799 799 37.88935 +800 800 50.74181 +801 801 5.646527 +802 802 10046.63 +1137 802 -10000 +803 803 290.2097 +804 803 -45.45454 +804 804 45.45454 +805 805 136.4794 +1138 805 -117.647 +806 806 4.975124 +821 806 -4.975124 +807 807 4.065041 +887 807 -4.065041 +808 808 13.33333 +897 808 -13.33333 +809 809 202.3231 +920 809 -112.3596 +810 810 39.62731 +811 810 -26.31579 +918 810 -8.70322 +811 811 26.31579 +812 812 500 +909 812 -500 +813 813 805.5555 +885 813 -11.13586 +940 813 -25.18892 +1122 813 -769.2308 +814 814 149.0395 +815 814 -112.3596 +909 814 -23.14815 +918 814 -13.5318 +815 815 112.3596 +816 816 67.98565 +817 816 -47.61905 +927 816 -20.3666 +817 817 139.7763 +818 817 -52.63158 +907 817 -39.52569 +818 818 52.63158 +819 819 340.5726 +820 819 -232.5581 +820 820 232.5581 +821 821 148.7724 +888 821 -22.72727 +897 821 -114.9425 +921 821 -6.127451 +822 822 133.5555 +880 822 -77.51938 +885 822 -25.64103 +935 822 -30.39514 +823 823 10000 +824 824 10000 +825 824 -10000 +825 825 20000 +826 826 10000 +827 827 10000 +828 828 12.59221 +837 828 -3.399953 +838 828 -4.568296 +874 828 -4.623957 +829 829 38.16908 +833 829 -9.785693 +839 829 -9.75447 +830 830 35.75804 +833 830 -12.15067 +840 830 -9.559799 +831 831 21.56662 +841 831 -10.30197 +869 831 -11.26464 +832 832 24.83065 +842 832 -6.55914 +869 832 -18.27151 +833 833 25.06136 +843 833 -3.125 +834 834 65.83865 +844 834 -9.816236 +874 834 -56.02241 +835 835 97.96513 +845 835 -1.626016 +862 835 -96.33911 +836 836 13.04241 +846 836 -6.806048 +869 836 -6.236358 +837 837 3.399953 +838 838 11.84409 +859 838 -6.666667 +860 838 -.6091247 +839 839 9.75447 +840 840 9.559799 +841 841 10.30197 +842 842 6.55914 +843 843 3.125 +844 844 9.816236 +845 845 1.626016 +846 846 6.806048 +847 847 6.595976 +848 847 -6.595976 +848 848 14.46535 +873 848 -7.869369 +849 849 7.853637 +854 849 -3.149802 +863 849 -2.352 +864 849 -2.351835 +850 850 9.019895 +855 850 -6.506006 +873 850 -2.513889 +851 851 1.965569 +856 851 -.805153 +858 851 -1.160416 +852 852 2.941501 +857 852 -1.692047 +869 852 -1.249453 +853 853 5.118024 +876 853 -5.118024 +854 854 3.149802 +855 855 6.506006 +856 856 .805153 +857 857 1.692047 +858 858 3.252203 +873 858 -2.091788 +859 859 6.666667 +860 860 1.422133 +861 860 -.8130081 +861 861 .8130081 +862 862 101.7126 +863 862 -5.373455 +863 863 10.56927 +869 863 -2.843818 +864 864 26.18864 +865 864 -20.9205 +869 864 -2.916302 +865 865 20.9205 +866 866 71.85119 +869 866 -67.1141 +877 866 -4.737092 +867 867 5.135919 +878 867 -5.135919 +868 868 79.89591 +869 868 -68.02721 +871 868 -7.077141 +877 868 -4.791567 +869 869 245.0375 +870 869 -67.1141 +870 870 78.94842 +871 870 -7.097232 +877 870 -4.737092 +871 871 14.17437 +872 872 3.439506 +882 872 -3.439506 +873 873 19.16737 +882 873 -6.692322 +874 874 65.74321 +878 874 -5.09684 +875 875 268.8182 +876 875 -227.2727 +882 875 -41.54549 +876 876 232.3908 +877 877 144.0989 +878 877 -54.4514 +883 877 -15.50147 +878 878 64.68417 +879 879 13.23977 +882 879 -13.23977 +880 880 77.51938 +881 881 15.55936 +882 881 -15.55936 +882 882 209.5087 +883 883 15.50147 +884 884 208.6253 +937 884 -114.2857 +1123 884 -94.33962 +885 885 67.07021 +914 885 -9.425071 +918 885 -4.842615 +886 886 34.37894 +895 886 -13.2626 +927 886 -6.146282 +937 886 -14.97006 +887 887 30.75514 +896 887 -15.94896 +897 887 -10.74114 +888 888 34.51973 +924 888 -11.79245 +889 889 526.3158 +917 889 -526.3158 +890 890 90.17906 +891 890 -55.55556 +908 890 -11.79245 +917 890 -22.83105 +891 891 55.55556 +892 892 185.8299 +893 892 -78.74016 +899 892 -68.02721 +927 892 -39.0625 +893 893 78.74016 +894 894 10037.21 +921 894 -24.93765 +936 894 -12.26994 +1126 894 -10000 +895 895 486.023 +1125 895 -454.5455 +896 896 48.8437 +897 896 -32.89474 +897 897 242.6641 +913 897 -54.05405 +917 897 -3.943218 +944 897 -12.7551 +898 898 119.8733 +914 898 -21.83406 +926 898 -98.03922 +899 899 208.295 +900 899 -36.10108 +908 899 -104.1667 +900 900 36.10108 +901 901 10010.86 +913 901 -10.85776 +1129 901 -10000 +902 902 400 +906 902 -400 +903 903 27.64992 +987 903 -11.14827 +904 904 479.299 +905 904 -256.4103 +939 904 -192.3077 +944 904 -30.58104 +905 905 256.4103 +906 906 613.7151 +922 906 -17.63668 +939 906 -196.0784 +907 907 58.35809 +923 907 -18.83239 +908 908 200.9013 +912 908 -43.47826 +917 908 -7.668712 +927 908 -20.04008 +909 909 941.4488 +910 909 -196.0784 +910 910 196.0784 +911 911 131.5789 +912 911 -131.5789 +912 912 193.5415 +913 913 64.91182 +914 914 181.033 +935 914 -29.23977 +938 914 -78.74016 +963 914 -4.030633 +915 915 103.0928 +926 915 -103.0928 +916 916 81.96722 +991 916 -81.96722 +917 917 754.9636 +918 917 -121.2121 +930 917 -72.9927 +918 918 232.832 +919 918 -52.63158 +1130 918 -22.47191 +919 919 69.87296 +940 919 -17.24138 +920 920 112.3596 +921 921 123.4495 +923 921 -22.98851 +924 921 -29.06977 +927 921 -5.208333 +933 921 -23.98081 +937 921 -6.583279 +922 922 10033.82 +930 922 -16.18123 +1133 922 -10000 +923 923 41.8209 +924 924 79.77273 +925 924 -38.91051 +925 925 38.91051 +926 926 212.049 +927 927 138.2073 +928 927 -37.17472 +937 927 -6.793478 +928 928 1045.494 +929 928 -999.9999 +937 928 -8.319468 +929 929 999.9999 +930 930 185.3278 +931 930 -96.15385 +931 931 96.15385 +932 932 78.74016 +949 932 -78.74016 +933 933 187.4276 +934 933 -131.5789 +942 933 -26.24672 +934 934 131.5789 +935 935 94.47811 +947 935 -34.8432 +936 936 10045.17 +937 936 -32.89474 +1134 936 -10000 +937 937 199.8084 +938 938 78.74016 +939 939 388.3861 +940 940 141.4402 +954 940 -99.0099 +941 941 400 +954 941 -400 +942 942 26.24672 +943 943 80.64516 +944 943 -80.64516 +944 944 123.9813 +945 945 3.323363 +961 945 -3.323363 +946 946 10.52632 +965 946 -10.52632 +947 947 34.8432 +948 948 110.8715 +952 948 -12.90323 +955 948 -10.88454 +957 948 -18.50139 +958 948 -35.08772 +964 948 -22.32143 +949 949 102.1358 +950 950 59.13499 +951 950 -4.399472 +955 950 -35.77818 +956 950 -18.95735 +951 951 26.76585 +965 951 -4.962779 +969 951 -10.17294 +975 951 -7.230658 +952 952 78.2627 +960 952 -65.35947 +953 953 32.95959 +955 953 -22.47191 +954 954 528.2497 +959 954 -29.23977 +955 955 69.13462 +956 956 18.95735 +957 957 153.211 +958 957 -17.85714 +967 957 -21.69197 +973 957 -78.74016 +958 958 52.94486 +959 959 29.23977 +960 960 465.3595 +973 960 -400 +961 961 17.72833 +962 961 -6.060606 +963 961 -2.007226 +968 961 -6.337135 +962 962 42.96098 +966 962 -36.90037 +963 963 10.88517 +972 963 -4.84731 +964 964 44.64286 +965 965 31.12432 +968 965 -5.945303 +969 965 -9.689922 +966 966 135.9103 +971 966 -99.0099 +967 967 90.18512 +968 968 78.07191 +969 969 26.28135 +970 969 -6.418485 +970 970 6.418485 +971 971 110.4385 +972 971 -11.42857 +972 972 16.27588 +973 973 478.7402 +974 974 999.9999 +983 974 -999.9999 +975 975 7.230658 +976 976 131.2277 +977 976 -72.9927 +989 976 -11.28668 +1001 976 -46.94836 +977 977 72.9927 +978 978 11.99041 +989 978 -11.99041 +979 979 212.9332 +983 979 -208.3333 +980 980 17.87741 +981 981 214.386 +982 981 -192.3077 +984 981 -12.04819 +998 981 -10.03009 +982 982 192.3077 +983 983 1216.031 +986 983 -7.69823 +984 984 12.04819 +985 985 73.44217 +987 985 -24.27184 +989 985 -5.310675 +986 986 19.79013 +987 987 74.94581 +999 987 -39.52569 +988 988 25.27583 +993 988 -12.42236 +995 988 -12.85347 +989 989 48.93494 +990 989 -5.906674 +990 990 5.906674 +991 991 98.75978 +992 991 -2.932551 +992 992 2.932551 +993 993 29.40311 +994 993 -4.027386 +994 994 4.027386 +995 995 28.39029 +997 995 -7.267442 +998 995 -4.033885 +996 996 78.74016 +997 996 -78.74016 +997 997 95.07378 +998 997 -9.066183 +998 998 31.19142 +999 999 39.52569 +1000 1000 18.28154 +1001 1001 64.90168 +1002 1002 8.319468 +1027 1002 -8.319468 +1003 1003 4.084967 +1035 1003 -4.084967 +1004 1004 3.15856 +1032 1004 -3.15856 +1005 1005 10.41667 +1039 1005 -10.41667 +1006 1006 125.0263 +1007 1006 -4.149378 +1013 1006 -19.26782 +1019 1006 -10.48218 +1021 1006 -55.24862 +1030 1006 -14.32665 +1035 1006 -21.55167 +1007 1007 4.149378 +1008 1008 24.42002 +1023 1008 -24.42002 +1009 1009 10093.68 +1010 1009 -1.567398 +1018 1009 -21.18644 +1019 1009 -6.297229 +1021 1009 -4.244482 +1022 1009 -57.14286 +1040 1009 -3.239391 +1010 1010 1.567398 +1011 1011 41.15226 +1040 1011 -41.15226 +1012 1012 5.87199 +1040 1012 -5.87199 +1013 1013 748.2476 +1023 1013 -15.07159 +1029 1013 -454.4287 +1030 1013 -32.57329 +1037 1013 -118.3432 +1038 1013 -102.5641 +1039 1013 -5.9988 +1014 1014 75.75758 +1039 1014 -75.75758 +1015 1015 34.60208 +1029 1015 -34.60208 +1016 1016 4.102139 +1024 1016 -2.283626 +1034 1016 -1.818512 +1017 1017 73.80074 +1029 1017 -73.80074 +1018 1018 21.18644 +1019 1019 60.25767 +1033 1019 -43.47826 +1020 1020 34.96503 +1021 1020 -34.96503 +1021 1021 94.45814 +1022 1022 57.14286 +1023 1023 66.38087 +1024 1023 -6.973501 +1025 1023 -7.352941 +1027 1023 -12.56281 +1024 1024 11.00568 +1034 1024 -1.748557 +1025 1025 11.7895 +1028 1025 -4.436557 +1026 1026 16.88283 +1027 1026 -9.615384 +1027 1027 38.77231 +1028 1027 -3.372681 +1035 1027 -4.901961 +1028 1028 7.809239 +1029 1029 10562.83 +1030 1030 56.26324 +1031 1030 -9.363297 +1031 1031 9.363297 +1032 1032 19.43661 +1034 1032 -5.455537 +1036 1032 -10.82251 +1033 1033 43.47826 +1034 1034 9.022608 +1035 1035 34.63528 +1036 1035 -4.096682 +1036 1036 14.91919 +1037 1037 118.3432 +1038 1038 102.5641 +1039 1039 92.17304 +1040 1040 50.26365 +1041 1041 85.46367 +1042 1042 22.62444 +1043 1043 179.8878 +1050 1043 -26.04167 +1044 1044 51.6919 +1050 1044 -33.8983 +1053 1044 -17.79359 +1045 1045 69.24763 +1047 1045 -48.54369 +1046 1046 71.20951 +1058 1046 -53.19149 +1047 1047 106.0162 +1048 1048 10.60445 +1049 1049 66.17801 +1054 1049 -26.17801 +1050 1050 5329.354 +1051 1050 -4.708098 +1052 1050 -200 +1051 1051 18.55844 +1056 1051 -3.607503 +1052 1052 218.3486 +1053 1053 1128.905 +1054 1054 359.5114 +1055 1055 267.5334 +1056 1055 -4.118616 +1058 1055 -106.383 +1056 1056 37.31192 +1057 1057 202.3988 +1058 1058 532.3185 +1059 1059 295.9858 +1061 1059 -52.08333 +1060 1060 5.422993 +1061 1061 56.57973 +1062 1062 9.573448 +1072 1062 -6.301197 +1085 1062 -3.272251 +1063 1063 14.97518 +1074 1063 -10.35197 +1064 1064 15.77324 +1075 1064 -11.49425 +1087 1064 -4.27899 +1065 1065 56.4111 +1077 1065 -7.256895 +1080 1065 -32.67974 +1066 1066 14.0056 +1068 1066 -14.0056 +1067 1067 2.654632 +1071 1067 -2.654632 +1068 1068 96.37038 +1069 1068 -21.64502 +1092 1068 -9.569378 +1069 1069 49.50018 +1086 1069 -27.85515 +1070 1070 27.63299 +1077 1070 -21.09705 +1113 1070 -6.535948 +1071 1071 6.953859 +1088 1071 -4.299226 +1072 1072 10.51705 +1075 1072 -4.215851 +1073 1073 194.6093 +1074 1073 -163.9344 +1074 1074 315.5717 +1075 1074 -5.040322 +1081 1074 -85.47009 +1086 1074 -21.73913 +1075 1075 25.04781 +1082 1075 -4.297379 +1076 1076 18.69159 +1077 1076 -18.69159 +1077 1077 82.05888 +1078 1077 -9.416196 +1080 1077 -9.328359 +1088 1077 -11.54734 +1095 1077 -4.721436 +1078 1078 30.82096 +1084 1078 -17.66784 +1085 1078 -3.736921 +1079 1079 3.007519 +1117 1079 -3.007519 +1080 1080 42.00809 +1081 1081 85.47009 +1082 1082 4.297379 +1083 1083 500 +1087 1083 -500 +1084 1084 17.66784 +1085 1085 7.009172 +1086 1086 49.59428 +1087 1087 504.279 +1088 1088 15.84657 +1089 1089 12.21374 +1106 1089 -9.225092 +1112 1089 -2.988643 +1090 1090 123.7557 +1091 1090 -4.708098 +1091 1091 14.65977 +1093 1091 -5.681818 +1108 1091 -4.269855 +1092 1092 36.4511 +1093 1093 14.98414 +1098 1093 -9.302325 +1094 1094 6.417381 +1095 1095 136.3807 +1096 1095 -4.440497 +1100 1095 -7.342144 +1105 1095 -16.23377 +1113 1095 -87.7193 +1096 1096 16.50748 +1103 1096 -7.581501 +1107 1096 -2.338634 +1112 1096 -2.146844 +1097 1097 99.0099 +1100 1097 -99.0099 +1098 1098 15.8597 +1099 1098 -6.557377 +1099 1099 6.557377 +1100 1100 110.9308 +1101 1100 -4.578754 +1101 1101 13.03916 +1120 1101 -5.503577 +1102 1102 4.524887 +1112 1102 -4.524887 +1103 1103 7.581501 +1104 1104 46.18962 +1118 1104 -23.14815 +1119 1104 -23.04147 +1105 1105 22.27241 +1106 1106 15.2311 +1109 1106 -6.006006 +1107 1107 2.338634 +1108 1108 4.269855 +1109 1109 6.006006 +1110 1110 10.67965 +1114 1110 -2.628121 +1111 1111 7.380074 +1119 1111 -7.380074 +1112 1112 9.660375 +1113 1113 94.25525 +1114 1114 15.25571 +1115 1114 -4.384042 +1116 1114 -2.241148 +1115 1115 4.384042 +1116 1116 2.241148 +1117 1117 7.461862 +1120 1117 -4.454343 +1118 1118 23.14815 +1119 1119 80.42155 +1120 1120 9.95792 +1121 1121 159.3172 +1122 1122 791.0173 +1136 1122 -21.78649 +1123 1123 145.36 +1124 1124 37.05693 +1135 1124 -10.74114 +1125 1125 454.5455 +1126 1126 10000 +1127 1127 31.94888 +1128 1128 500 +1129 1129 10015.82 +1135 1129 -15.82279 +1130 1130 22.47191 +1131 1131 24.39024 +1136 1131 -24.39024 +1132 1132 172.4138 +1133 1133 10000 +1134 1134 10000 +1135 1135 26.56392 +1136 1136 46.17674 +1137 1137 10000 +1138 1138 117.647 diff --git a/test/spmm/psb_spmm_test.f90 b/test/spmm/psb_spmm_test.f90 new file mode 100644 index 00000000..0cd569c7 --- /dev/null +++ b/test/spmm/psb_spmm_test.f90 @@ -0,0 +1,249 @@ +!> Test program for y = AX spsb_pmm routine +!! Check the README.md to see all details about the tests. +!! +!! Author: Luca Pepé Sciarria, Staccone Simone (Tor Vergata University) +program psb_spmm_test + use psb_base_mod + use psb_util_mod + + implicit none + + ! input parameters + character(len=256) :: mtx_file, file_name, name + + ! Testing parameters + character(len=256),dimension(2) :: mtx_files + + ! sparse matrices + type(psb_sspmat_type) :: a + type(psb_lsspmat_type) :: aux_a + + ! vectors + type(psb_s_vect_type) :: x, y + + ! matrix descriptor data structure + type(psb_desc_type) :: desc_a + + ! communication context + type(psb_ctxt_type) :: ctxt + integer(psb_ipk_) :: my_rank, np, info, err_act + + ! matrix parameters + integer(psb_ipk_) :: m, n, nnz + integer(psb_ipk_) :: nr, nt ! In BLOCK ROWS distributin, the number of rows + + + real(psb_spk_), allocatable :: x_global(:), y_global(:) + integer(psb_ipk_) :: i + + name = "psb_spmm_test" ! Name of the program to output in case of error + info = psb_success_ + mtx_file = "matrix/1138_bus.mtx" + mtx_files(1) = "matrix/1138_bus.mtx" + + + call psb_init(ctxt) + call psb_info(ctxt,my_rank,np) + + if (my_rank < 0) then + ! This should not happen, but just in case + call psb_error(ctxt) + endif + + if (my_rank == psb_root_) then + write(psb_out_unit,*) 'Welcome to PSBLAS version: ',psb_version_string_ + write(psb_out_unit,*) 'This is the ',trim(name),' sample program' + end if + + + call mm_mat_read(aux_a,info,filename=mtx_file) + if(info /= psb_success_) then + write(psb_out_unit,*) "Error while reading matric ", mtx_file + goto 9999 + end if + + + ! part_block it's a macro defined in psb_blockpart_mod to identify BLOCK ROWS distribution + call psb_matdist(aux_a, a, ctxt,desc_a,info,fmt="COO",parts=part_block) + + + m = aux_a%get_nrows() + n = aux_a%get_ncols() + nnz = aux_a%get_nzeros() + + call psb_bcast(ctxt,m) + call psb_bcast(ctxt,n) + call psb_bcast(ctxt,nnz) + + if(my_rank == psb_root_) then + write(psb_out_unit,*) "Matrix stats" + write(psb_out_unit,*) "ROWS:", m + write(psb_out_unit,*) "COLS:", n + write(psb_out_unit,*) "NNZ: ", nnz + end if + + ! Generate random array for b using always the same seed + if(my_rank == psb_root_) then + allocate(x_global(n)) + allocate(y_global(n)) + call generate_vectors(n) ! True for x + call mm_array_read(x_global,info,filename="vectors/x1.mtx") + call mm_array_read(y_global,info,filename="vectors/y1.mtx") + end if + + call psb_geall(x,desc_a,info) + if(info /= psb_success_) then + write(psb_out_unit,*) "Error allocating x data structure" + goto 9999 + end if + + ! Populate x class using data from x_global vector + call psb_scatter(x_global,x,desc_a,info,root=psb_root_) + if(info /= psb_success_) then + write(psb_out_unit,*) "Error in psb_scatter to populate x data structure" + goto 9999 + end if + + + call psb_geall(y,desc_a,info) + if(info /= psb_success_) then + write(psb_out_unit,*) "Error allocating y data structure" + goto 9999 + end if + + ! Populate y class using data from y_global vector + call psb_scatter(y_global,y,desc_a,info,root=psb_root_) + if(info /= psb_success_) then + write(psb_out_unit,*) "Error in psb_scatter to populate y data structure" + goto 9999 + end if + + + ! y = alpha * A * x + betha * y + call psb_spmm(sone,a,x,sone,y,desc_a,info) + if(info /= psb_success_) then + write(psb_out_unit,*) "Error in psb_spmm routine" + goto 9999 + end if + + ! Save result to output file + call mm_array_write(y,"Result vector",info,filename="sol_m1_x1_y1.mtx") + + ! Deallocate + call psb_gefree(x, desc_a,info) + if(info /= psb_success_) then + write(psb_out_unit,*) "Error in vector x free routine" + goto 9999 + end if + + call psb_gefree(y, desc_a,info) + if(info /= psb_success_) then + write(psb_out_unit,*) "Error in vector y free routine" + goto 9999 + end if + + call psb_spfree(a, desc_a,info) + if(info /= psb_success_) then + write(psb_out_unit,*) "Error in matrix A free routine" + goto 9999 + end if + + call psb_cdfree(desc_a,info) + if(info /= psb_success_) then + write(psb_out_unit,*) "Error in matrix descriptor free routine" + goto 9999 + end if + + deallocate(x_global) + deallocate(y_global) + + call psb_exit(ctxt) + stop + + + ! Error handling + 9999 call psb_error(ctxt) + + call psb_errpush(info,name) + call psb_error_handler(ctxt,err_act) + call psb_exit(ctxt) + stop + + +contains + + !> @brief Function to randomly generate x and y vectors + !! and save them on multiple files based on their + !! coefficients values. + !! + !! @param n The size of the vector. + subroutine generate_vectors(n) + use psb_base_mod + + implicit none + + integer(psb_ipk_), intent(in) :: n + integer(psb_ipk_), allocatable :: x(:), y(:) + real(psb_spk_), allocatable :: v(:) + integer(psb_ipk_) :: i + + allocate(x(n)) + allocate(y(n)) + allocate(v(2*n)) + + + call random_init(repeatable=.true.,image_distinct=.true.) + call random_number(v) + + do i = 1,n + x(i) = int(v(i) * 100) + end do + + do i = 1,n + y(i) = int(v(i+n) * 100) + end do + + + ! Write only positive in x_1 + call mm_array_write(x,"Positive vector",info,filename="vectors/x1.mtx") + call mm_array_write(y,"Positive vector",info,filename="vectors/y1.mtx") + + ! Write only negative in x_2 + do i=1,n + x(i) = -x(i) + y(i) = -y(i) + end do + + call mm_array_write(x,"Negative vector",info,filename="vectors/x2.mtx") + call mm_array_write(y,"Negative vector",info,filename="vectors/y2.mtx") + + + ! Since numbers are less than one and always positive, we have to generate negative ones subtractiong 50 + do i=1,n + x(i) = -x(i) ! Make the values positive again + x(i) = x(i) - 50 + y(i) = -y(i) ! Make the values positive again + y(i) = y(i) - 50 + end do + + ! Write random in x_3 + call mm_array_write(x,"Random vector",info,filename="vectors/x3.mtx") + call mm_array_write(y,"Random vector",info,filename="vectors/y3.mtx") + + ! Write zero in x_4 + do i=1,n + x(i) = 0 + y(i) = 0 + end do + + call mm_array_write(x,"Null vector",info,filename="vectors/x4.mtx") + call mm_array_write(y,"Null vector",info,filename="vectors/y4.mtx") + + deallocate(x) + deallocate(y) + deallocate(v) + + end subroutine + +end program + diff --git a/test/spmm/sol_m1_x1_y1.mtx b/test/spmm/sol_m1_x1_y1.mtx new file mode 100644 index 00000000..e3b4e2f3 --- /dev/null +++ b/test/spmm/sol_m1_x1_y1.mtx @@ -0,0 +1,1142 @@ +%%MatrixMarket matrix array real general +% Result vector +% + 1138 1 + 1.207088125000000000E+05 + -3.507420959472656250E+02 + -1.650562622070312500E+03 + 5.142525878906250000E+03 + -8.138963012695312500E+02 + -4.825109375000000000E+03 + -3.839008544921875000E+03 + -5.428204345703125000E+02 + 1.031210632324218750E+02 + 4.508905944824218750E+02 + 1.023971252441406250E+03 + -6.383056640625000000E-01 + 2.370285034179687500E+02 + 8.101556396484375000E+02 + 1.233018828125000000E+05 + -1.563767089843750000E+03 + -1.826755859375000000E+03 + -1.881611328125000000E+02 + -1.387966674804687500E+03 + -9.828696875000000000E+04 + 9.717759375000000000E+04 + 2.379437255859375000E+01 + 2.529626464843750000E+02 + -1.667098388671875000E+02 + -1.481311035156250000E+01 + 2.121124114990234375E+02 + -3.667613525390625000E+02 + 1.077137298583984375E+02 + 1.316829223632812500E+02 + 1.684653778076171875E+02 + 1.353800201416015625E+01 + 4.957585906982421875E+01 + 4.403929138183593750E+01 + -4.798563232421875000E+02 + -6.199751250000000000E+05 + -3.200000000000000000E+05 + 6.475857421875000000E+03 + 2.553345947265625000E+03 + 4.301385803222656250E+02 + 9.568360351562500000E+03 + -4.721281250000000000E+04 + 6.836956787109375000E+02 + -7.655496875000000000E+04 + 7.708380625000000000E+05 + -1.956125488281250000E+02 + -8.099210000000000000E+05 + -2.364431640625000000E+03 + 9.962932500000000000E+05 + 2.826388183593750000E+03 + -4.175114062500000000E+04 + 1.314362426757812500E+03 + 3.315607421875000000E+04 + 4.764122656250000000E+04 + -4.917753125000000000E+04 + -3.337000000000000000E+03 + -9.910673828125000000E+02 + -3.591507080078125000E+03 + 1.093564819335937500E+03 + 4.006325683593750000E+02 + 4.456669921875000000E+02 + -7.092000000000000000E+03 + -3.458538085937500000E+03 + 4.507444375000000000E+05 + 6.633978027343750000E+03 + -4.499868437500000000E+05 + -1.281551757812500000E+03 + 4.516389160156250000E+02 + -1.718727783203125000E+03 + 1.401948730468750000E+04 + -1.673499609375000000E+04 + -4.633701660156250000E+03 + 2.523177490234375000E+02 + 4.195555419921875000E+02 + 1.613404296875000000E+03 + 5.573821777343750000E+03 + -2.206461181640625000E+02 + -3.557277500000000000E+05 + 6.405622070312500000E+03 + -2.271690673828125000E+03 + 2.169962500000000000E+04 + -1.990475976562500000E+04 + 2.938059387207031250E+02 + 1.038517333984375000E+03 + -9.287573242187500000E+02 + -1.701334570312500000E+04 + -2.320858750000000000E+05 + 1.675656250000000000E+05 + 1.774705566406250000E+03 + -6.634427490234375000E+02 + 3.249535644531250000E+03 + -2.656107812500000000E+04 + 2.092402343750000000E+03 + 1.984608203125000000E+04 + -2.145108789062500000E+04 + -5.620239257812500000E+02 + -7.938500000000000000E+04 + -2.698332519531250000E+02 + -2.688252441406250000E+03 + 8.809974670410156250E+00 + -3.017799682617187500E+02 + -1.007985595703125000E+03 + 9.748814086914062500E+02 + -8.212816875000000000E+05 + 2.826802978515625000E+02 + -2.377466406250000000E+04 + 5.360142822265625000E+02 + 2.093031982421875000E+03 + -1.477829882812500000E+04 + 1.733503125000000000E+05 + -4.394760000000000000E+05 + 6.519800625000000000E+05 + 3.711007812500000000E+03 + 3.697514687500000000E+05 + -6.000553750000000000E+05 + 2.051097656250000000E+03 + 2.013621875000000000E+04 + -5.324095458984375000E+02 + 1.326526794433593750E+02 + 6.037510986328125000E+02 + -5.428039062500000000E+03 + 9.556554687500000000E+03 + -2.630940429687500000E+03 + -1.648789306640625000E+03 + -2.499675903320312500E+02 + 8.558796875000000000E+03 + 1.064039648437500000E+04 + -1.596190673828125000E+03 + 3.946666259765625000E+02 + 5.308357421875000000E+03 + 1.834304296875000000E+04 + -2.007670507812500000E+04 + 5.102949218750000000E+03 + 3.692103759765625000E+03 + 1.980653076171875000E+02 + -3.099921250000000000E+05 + -9.751625976562500000E+02 + 1.122945068359375000E+03 + 3.461365722656250000E+03 + -4.503245849609375000E+02 + -5.954113769531250000E+01 + -3.642541503906250000E+02 + 1.563480712890625000E+03 + -5.804227500000000000E+05 + 4.069212500000000000E+04 + 4.701143125000000000E+05 + 1.856777656250000000E+05 + -4.416896875000000000E+05 + 3.300390000000000000E+05 + -3.614497680664062500E+02 + -1.052978515625000000E+01 + -2.285531616210937500E+02 + -1.044641113281250000E+02 + -9.899656982421875000E+02 + 5.293922729492187500E+02 + -1.192391479492187500E+03 + -9.894921875000000000E+02 + -2.281692382812500000E+03 + 5.772016601562500000E+02 + 1.244981384277343750E+02 + -6.990661621093750000E+01 + 3.510029602050781250E+01 + -2.373836181640625000E+03 + 1.614757080078125000E+03 + -2.828994750976562500E+01 + -2.421870605468750000E+03 + 1.925414062500000000E+04 + 3.256342773437500000E+02 + -1.184471923828125000E+03 + 1.197619018554687500E+03 + 1.388918579101562500E+03 + 8.545029296875000000E+02 + 2.307851562500000000E+02 + 1.978041015625000000E+03 + -7.531782226562500000E+02 + 3.219102783203125000E+02 + -7.635708007812500000E+03 + 1.947146484375000000E+04 + -1.783406250000000000E+03 + 6.623759155273437500E+02 + 1.108589721679687500E+03 + -2.929260253906250000E+02 + 3.859076843261718750E+02 + 7.176863281250000000E+03 + -7.101781738281250000E+03 + -1.367419433593750000E+02 + -3.529201171875000000E+03 + 2.314232177734375000E+03 + -2.270191650390625000E+03 + 8.329018554687500000E+02 + 1.882187988281250000E+03 + -2.909161987304687500E+02 + 1.126914648437500000E+04 + -5.204270019531250000E+02 + 1.352067138671875000E+03 + -5.053106689453125000E+02 + 2.698490295410156250E+02 + 1.872982299804687500E+03 + 2.478539062500000000E+03 + -1.493701757812500000E+04 + 1.220915527343750000E+02 + 9.230031738281250000E+02 + 5.494128417968750000E+01 + -3.075876464843750000E+02 + -5.733449218750000000E+03 + -2.213884887695312500E+02 + -1.968472290039062500E+02 + -1.693904687500000000E+04 + 4.898274414062500000E+03 + 1.440793457031250000E+02 + 6.868782031250000000E+04 + 1.894520141601562500E+03 + -2.538865966796875000E+03 + 5.625605468750000000E+03 + 2.891770019531250000E+03 + -6.506456298828125000E+02 + 4.811924743652343750E+02 + -6.183186718750000000E+04 + -2.655433789062500000E+04 + 6.634741210937500000E+01 + 2.468717773437500000E+03 + 5.218492431640625000E+02 + 1.761914428710937500E+03 + -2.588710937500000000E+02 + 1.242728393554687500E+03 + -1.483454467773437500E+03 + -8.447529296875000000E+02 + -1.720915527343750000E+02 + 4.046807617187500000E+03 + -2.338939208984375000E+03 + 5.579998779296875000E+02 + -1.810586669921875000E+03 + 2.793932128906250000E+03 + -5.649084472656250000E+02 + 2.157066040039062500E+02 + -6.555868750000000000E+04 + -5.696740722656250000E+02 + -3.201270019531250000E+03 + 1.604577148437500000E+03 + -6.787663574218750000E+02 + -2.689532470703125000E+02 + 1.411579062500000000E+05 + -2.113433593750000000E+03 + 5.983430786132812500E+02 + -6.693075195312500000E+03 + 4.841333007812500000E+02 + -6.861243164062500000E+03 + 9.650042968750000000E+03 + 5.740527832031250000E+03 + 1.667866796875000000E+04 + -1.104904687500000000E+04 + 1.439876220703125000E+03 + -3.675485351562500000E+03 + 4.794023437500000000E+02 + 1.152440332031250000E+04 + -2.437660546875000000E+04 + -3.713794687500000000E+05 + -1.894443359375000000E+03 + -7.061852539062500000E+03 + 1.373009277343750000E+03 + -7.137831054687500000E+03 + 6.091727539062500000E+03 + 2.074043457031250000E+03 + 2.227196289062500000E+03 + 7.608225097656250000E+03 + 6.335188476562500000E+03 + -1.032437109375000000E+04 + -9.209357421875000000E+03 + -4.119819335937500000E+02 + 2.178011328125000000E+04 + 6.250991015625000000E+04 + 7.550727539062500000E+02 + 3.880048828125000000E+03 + -2.358114843750000000E+04 + 3.003100390625000000E+04 + 3.115129394531250000E+02 + -8.948992187500000000E+03 + -3.765609375000000000E+04 + -1.949067138671875000E+03 + -2.083206298828125000E+03 + 5.032081298828125000E+02 + 9.543292236328125000E+01 + -1.491954687500000000E+04 + 4.698839355468750000E+03 + 1.046529296875000000E+03 + -6.747272460937500000E+03 + 1.511029815673828125E+01 + -5.602105712890625000E+02 + -7.865952148437500000E+03 + 4.489356250000000000E+04 + 1.205832275390625000E+03 + -1.174892968750000000E+04 + -7.204540625000000000E+04 + -1.415891406250000000E+04 + -8.431982421875000000E+02 + -1.695137695312500000E+03 + 7.850708007812500000E+02 + -1.369199218750000000E+03 + 1.966707763671875000E+03 + 1.794846679687500000E+03 + 8.496672851562500000E+03 + 1.061238769531250000E+03 + 1.619079589843750000E+04 + -3.919671875000000000E+04 + -6.459901562500000000E+04 + -1.918780468750000000E+04 + 3.171514892578125000E+02 + -4.381889648437500000E+02 + 5.705057617187500000E+03 + 4.523332031250000000E+03 + 7.775532226562500000E+02 + 2.077309570312500000E+02 + 8.791199218750000000E+03 + 9.078105468750000000E+02 + 8.136386718750000000E+02 + 6.408588281250000000E+04 + 8.658062500000000000E+03 + 3.825946875000000000E+05 + 3.070562988281250000E+03 + -6.584610937500000000E+04 + -4.302650451660156250E+02 + -2.390783203125000000E+03 + -4.073475097656250000E+03 + -9.032121093750000000E+03 + 3.027141113281250000E+02 + 6.607816894531250000E+03 + 9.424692382812500000E+02 + -1.412612304687500000E+03 + 4.500940000000000000E+05 + 1.212001250000000000E+05 + -8.096389770507812500E+00 + 7.188105773925781250E+01 + 1.866667175292968750E+01 + -4.356880187988281250E-01 + 2.601518821716308594E+01 + -9.078337402343750000E+02 + -5.570051757812500000E+03 + 7.935439941406250000E+03 + -1.459159698486328125E+02 + -3.956312866210937500E+02 + -1.157109497070312500E+03 + 6.794848022460937500E+02 + -2.126114807128906250E+02 + 3.230634155273437500E+02 + -1.924153320312500000E+03 + -3.044826660156250000E+02 + 4.500682128906250000E+03 + -8.567043457031250000E+02 + 3.236322021484375000E+02 + -8.603713378906250000E+02 + -4.971035766601562500E+02 + 1.053746337890625000E+02 + 1.004243041992187500E+03 + -1.368959716796875000E+03 + -5.857868041992187500E+02 + 1.392892456054687500E+02 + 6.519165649414062500E+02 + -3.059976959228515625E+01 + 3.841868896484375000E+03 + -1.072713745117187500E+03 + -3.907310791015625000E+02 + -3.294635546875000000E+04 + -3.172552490234375000E+02 + 1.375253051757812500E+03 + 1.603421630859375000E+02 + -2.915178222656250000E+02 + 6.864552307128906250E+01 + 1.159606347656250000E+04 + -5.572316406250000000E+03 + 2.360773437500000000E+03 + -1.826968994140625000E+02 + -1.249773437500000000E+03 + -6.803337890625000000E+03 + -3.674566650390625000E+01 + -1.282369384765625000E+02 + 7.954088134765625000E+02 + 1.168336029052734375E+02 + 1.307560577392578125E+02 + 1.514539642333984375E+02 + 4.823300933837890625E+01 + 1.034660186767578125E+02 + 2.237301940917968750E+02 + 9.453528442382812500E+02 + 2.087512207031250000E+03 + 7.514337158203125000E+01 + -1.712854003906250000E+01 + -6.925775146484375000E+02 + -9.511022949218750000E+02 + 1.541719970703125000E+03 + -2.970734619140625000E+03 + 2.086971130371093750E+02 + -8.977423095703125000E+01 + 3.243247070312500000E+02 + -8.992256469726562500E+02 + -4.127639160156250000E+02 + 2.881740966796875000E+03 + -1.019779541015625000E+03 + 5.687815234375000000E+04 + -5.044208984375000000E+03 + -3.603411132812500000E+03 + -4.299530000000000000E+05 + -2.097603515625000000E+03 + 6.116624145507812500E+02 + 1.181125488281250000E+02 + 3.699393005371093750E+02 + 1.034439697265625000E+02 + 3.821878125000000000E+04 + 1.335792968750000000E+03 + 5.500000000000000000E+01 + -6.869892578125000000E+02 + 8.490517500000000000E+05 + -9.605204375000000000E+05 + -5.847796386718750000E+03 + -9.143002929687500000E+02 + 1.152561621093750000E+04 + 1.184680273437500000E+04 + 2.037284179687500000E+04 + -5.566118164062500000E+02 + -3.528552246093750000E+02 + -2.978591308593750000E+02 + 1.254162500000000000E+04 + -2.072023193359375000E+03 + -4.026241149902343750E+02 + 1.422358789062500000E+04 + 1.381918164062500000E+04 + -1.509473046875000000E+04 + -1.191322949218750000E+04 + -2.176975097656250000E+02 + 1.090575927734375000E+03 + 4.450000000000000000E+02 + -2.211114501953125000E+01 + -9.429649414062500000E+03 + -8.351716796875000000E+03 + -1.980739648437500000E+04 + 5.598204345703125000E+02 + -4.362146484375000000E+03 + 8.279915161132812500E+02 + 1.826859179687500000E+04 + -2.139781005859375000E+03 + -3.856640625000000000E+02 + 1.580091247558593750E+02 + -3.578560791015625000E+03 + 2.883561035156250000E+03 + -1.968999218750000000E+04 + 6.247144531250000000E+04 + 4.095025878906250000E+03 + -1.452327026367187500E+03 + -1.917979101562500000E+04 + 1.411789746093750000E+04 + 1.552749687500000000E+05 + -1.546598750000000000E+05 + 7.868631591796875000E+02 + 2.482380371093750000E+02 + 2.845708007812500000E+02 + -7.575469726562500000E+03 + 1.586734130859375000E+03 + -8.452908203125000000E+03 + 1.300135742187500000E+03 + -6.469040234375000000E+04 + 1.344336425781250000E+03 + 1.159538574218750000E+02 + 5.237825317382812500E+02 + -1.240399414062500000E+04 + -3.408931884765625000E+02 + -2.159056152343750000E+03 + 5.506138671875000000E+03 + -1.229526953125000000E+04 + 3.189079101562500000E+03 + -1.399670000000000000E+05 + -2.499690000000000000E+05 + 1.341534375000000000E+04 + 1.965729614257812500E+03 + -8.238287353515625000E+02 + 4.301155000000000000E+05 + 2.366889404296875000E+03 + -2.153973999023437500E+02 + 2.048869323730468750E+02 + -4.053679687500000000E+03 + 8.268270000000000000E+05 + -6.988086425781250000E+03 + 3.359958984375000000E+04 + -9.026281127929687500E+02 + -5.752119140625000000E+03 + -2.422300000000000000E+04 + 2.991774902343750000E+02 + -5.522545776367187500E+02 + -7.314806250000000000E+05 + -2.210091552734375000E+02 + -9.136413574218750000E+01 + -2.714320373535156250E+02 + 2.822371215820312500E+02 + 1.142909912109375000E+03 + 5.500509375000000000E+05 + 7.416295166015625000E+02 + -1.671316406250000000E+03 + -3.420518554687500000E+03 + -7.571757812500000000E+03 + 6.171835449218750000E+03 + 7.980522460937500000E+02 + 4.457776855468750000E+03 + -2.281464599609375000E+03 + -1.123069824218750000E+03 + -1.256169555664062500E+03 + -6.344380859375000000E+03 + -9.447502929687500000E+03 + 8.818382812500000000E+03 + -1.755638125000000000E+05 + 3.370250000000000000E+03 + -4.153396606445312500E+02 + -5.681355468750000000E+03 + -6.245723437500000000E+04 + -9.609829101562500000E+02 + -7.784782714843750000E+03 + 1.324832421875000000E+04 + -3.172257080078125000E+02 + 3.234948242187500000E+03 + -2.154765429687500000E+04 + 7.082255859375000000E+02 + -2.828182067871093750E+02 + 4.007924804687500000E+02 + 9.237568750000000000E+04 + 1.237667773437500000E+04 + -1.374249511718750000E+04 + -5.874689453125000000E+03 + -6.739418457031250000E+03 + -2.079984375000000000E+03 + 1.902624511718750000E+03 + -7.371269531250000000E+03 + -2.090233886718750000E+03 + 2.997175781250000000E+03 + -1.064108691406250000E+04 + 1.051171875000000000E+02 + 1.962766601562500000E+04 + 6.441207519531250000E+03 + -7.059397460937500000E+03 + 1.129921997070312500E+03 + -9.415226562500000000E+03 + 2.107807812500000000E+04 + -6.550720214843750000E+00 + 3.273636474609375000E+02 + -5.876533203125000000E+03 + 2.449369506835937500E+02 + -4.135075195312500000E+03 + 2.529551406250000000E+05 + 1.390331250000000000E+05 + 2.915337646484375000E+03 + -7.223441406250000000E+03 + -1.288454956054687500E+03 + 2.683415527343750000E+02 + -1.825051269531250000E+02 + -8.947280273437500000E+02 + -3.638251708984375000E+03 + 1.940036865234375000E+03 + 4.613156738281250000E+03 + 5.165703125000000000E+03 + 1.441111083984375000E+03 + 6.421895019531250000E+03 + -5.832186889648437500E+02 + -5.920480346679687500E+02 + -5.237708984375000000E+03 + -8.864200439453125000E+02 + -8.519544921875000000E+03 + 3.846324951171875000E+03 + 8.842330932617187500E+01 + 8.982102539062500000E+03 + 3.989462280273437500E+01 + 5.166640625000000000E+03 + 4.382293701171875000E+01 + 6.824685546875000000E+03 + 1.445622558593750000E+02 + -5.849411621093750000E+02 + 2.198571014404296875E+02 + 2.700000000000000000E+01 + 2.587408447265625000E+02 + -5.037728515625000000E+03 + -1.996500000000000000E+04 + -5.386613769531250000E+02 + 1.563299609375000000E+04 + -2.266733886718750000E+03 + 2.803568603515625000E+03 + 1.642449951171875000E+02 + 2.082690625000000000E+04 + 7.282945312500000000E+03 + -8.107137451171875000E+02 + 3.154989746093750000E+03 + -3.096325195312500000E+03 + -5.513704681396484375E+01 + -1.792175292968750000E+03 + -5.618442382812500000E+02 + -1.005467224121093750E+01 + 5.256384277343750000E+02 + 1.630547027587890625E+02 + 1.499500732421875000E+02 + 2.937481689453125000E+02 + -2.609465087890625000E+03 + 1.184472351074218750E+02 + 1.463036499023437500E+03 + 4.113473510742187500E+02 + -8.792959594726562500E+01 + 1.201932373046875000E+02 + -7.784764648437500000E+03 + -2.513209533691406250E+02 + -8.517221069335937500E+01 + -1.386845092773437500E+03 + -5.434280395507812500E+02 + 1.592552978515625000E+03 + -2.322328491210937500E+02 + -4.240707519531250000E+03 + -7.181137695312500000E+02 + -3.089080810546875000E+01 + 1.097821533203125000E+03 + 6.218212890625000000E+01 + 4.611568603515625000E+02 + 1.872463134765625000E+03 + 1.828973144531250000E+03 + -1.486916198730468750E+02 + -2.658584289550781250E+02 + -1.410816650390625000E+02 + 1.518383789062500000E+01 + 2.089263671875000000E+03 + 2.007512664794921875E+02 + -5.708124511718750000E+03 + 7.758851928710937500E+02 + 5.882708740234375000E+02 + 5.404430175781250000E+03 + -2.233155517578125000E+02 + 6.745815277099609375E+00 + 3.436329956054687500E+02 + 3.249950683593750000E+03 + -7.750953125000000000E+04 + -1.199686279296875000E+02 + -3.213005859375000000E+03 + -4.765642700195312500E+02 + 1.892925109863281250E+02 + 5.575050659179687500E+02 + -7.140968017578125000E+02 + 3.883451843261718750E+02 + 8.503900000000000000E+04 + -1.541778442382812500E+03 + -1.509060058593750000E+03 + 2.518712615966796875E+02 + -5.462902069091796875E+01 + -3.435023193359375000E+02 + -7.239377441406250000E+03 + -2.208014160156250000E+03 + -1.288096069335937500E+03 + -1.609066925048828125E+02 + -4.907913085937500000E+03 + 4.115847656250000000E+03 + -4.097217773437500000E+03 + 2.753503173828125000E+03 + 5.385559082031250000E+01 + 8.467553125000000000E+04 + -2.016682617187500000E+03 + -3.416650878906250000E+03 + 1.519309179687500000E+04 + 2.826666564941406250E+02 + -5.387111328125000000E+03 + -1.573084375000000000E+04 + -2.400632568359375000E+03 + 3.593717041015625000E+02 + 8.017000000000000000E+03 + -1.475258789062500000E+03 + -7.542628125000000000E+04 + -8.353358154296875000E+02 + -1.571105664062500000E+04 + -3.120883300781250000E+03 + 4.695603942871093750E+01 + -1.195628125000000000E+04 + -2.173666015625000000E+03 + 3.177393066406250000E+03 + -9.326477050781250000E+02 + 2.583499414062500000E+04 + -2.044598388671875000E+03 + -6.265724609375000000E+03 + 6.111451171875000000E+03 + -1.377858398437500000E+03 + 1.098124218750000000E+04 + -4.484031738281250000E+03 + 3.508158691406250000E+03 + 1.499489746093750000E+03 + -3.879687890625000000E+04 + 5.909769531250000000E+03 + 4.963224792480468750E+01 + 1.315383911132812500E+01 + 5.499648284912109375E+01 + -3.071308593750000000E+03 + -6.345966186523437500E+02 + 3.614494384765625000E+03 + 3.552169036865234375E+01 + -3.707015000000000000E+05 + 9.481494140625000000E+03 + -9.950000000000000000E+03 + -1.352471923828125000E+03 + -2.142710449218750000E+03 + 3.207434570312500000E+03 + -6.433900390625000000E+03 + 1.396419433593750000E+03 + -2.977567138671875000E+02 + -8.987344360351562500E+02 + -5.839356689453125000E+02 + -6.499620000000000000E+05 + -9.018894042968750000E+02 + -4.699650000000000000E+05 + 6.335205078125000000E+01 + 8.004400000000000000E+04 + 7.903809204101562500E+02 + -5.541958750000000000E+05 + -8.710263671875000000E+02 + 5.133049316406250000E+02 + 6.203909375000000000E+05 + 3.211028437500000000E+05 + -2.936246948242187500E+02 + -7.250268554687500000E+01 + 3.707565429687500000E+03 + 1.806721191406250000E+02 + -2.827167578125000000E+04 + -2.948363085937500000E+04 + 4.033585205078125000E+02 + 1.505689697265625000E+02 + -9.416552734375000000E+01 + -8.678274536132812500E+02 + -3.434137573242187500E+02 + -5.541206054687500000E+02 + 2.720077880859375000E+03 + 4.511330566406250000E+02 + 2.702338134765625000E+03 + -2.532549438476562500E+02 + 1.303902832031250000E+03 + 2.803850097656250000E+02 + 9.308314208984375000E+02 + -4.421435546875000000E+03 + 8.116749572753906250E+01 + 5.419597778320312500E+02 + -1.933417846679687500E+03 + 3.314709167480468750E+02 + 5.287854003906250000E+01 + 6.222501831054687500E+02 + -5.383131713867187500E+02 + 1.556666717529296875E+02 + 3.105311875000000000E+05 + -2.678860473632812500E+01 + 1.927187744140625000E+03 + -2.193363769531250000E+03 + -2.284160644531250000E+03 + 3.502987187500000000E+05 + -1.687161102294921875E+02 + -6.384345703125000000E+02 + 2.386326660156250000E+03 + -4.373322753906250000E+03 + 1.819205078125000000E+03 + -5.991756591796875000E+02 + -2.604148559570312500E+02 + 4.455444824218750000E+03 + 4.793275878906250000E+03 + 1.279577636718750000E+03 + 3.094153808593750000E+03 + -4.527292968750000000E+03 + -3.789729919433593750E+02 + -1.056431884765625000E+03 + 3.168171997070312500E+02 + -6.670504760742187500E+02 + 4.560696105957031250E+02 + -2.465469360351562500E+01 + -1.037000000000000000E+03 + -2.571721679687500000E+03 + 1.435530090332031250E+01 + 3.140000000000000000E+02 + -1.172087402343750000E+02 + 1.355454559326171875E+02 + -2.700990937500000000E+05 + 1.008638305664062500E+02 + 1.979389038085937500E+02 + 1.333093872070312500E+02 + 2.979705810546875000E+02 + 1.372622192382812500E+03 + -4.784903320312500000E+03 + 8.357792358398437500E+02 + -1.525927734375000000E+02 + -7.421076049804687500E+02 + 1.221560546875000000E+03 + -1.048064208984375000E+03 + 1.081385156250000000E+04 + -3.016970214843750000E+02 + -6.804769287109375000E+02 + -4.968215942382812500E+02 + -6.349541406250000000E+04 + 2.041661376953125000E+02 + 5.765343750000000000E+03 + 1.411910552978515625E+02 + -8.540754394531250000E+02 + 1.534368652343750000E+03 + -8.474035644531250000E+02 + 5.104070000000000000E+05 + -3.268368530273437500E+02 + -5.283551757812500000E+03 + 1.433696166992187500E+03 + 2.874385253906250000E+03 + 6.556478881835937500E+02 + 5.350576171875000000E+02 + -5.040264892578125000E+02 + -1.563353881835937500E+02 + -1.193112187500000000E+05 + 8.848437500000000000E+03 + 1.828727294921875000E+03 + 8.112840820312500000E+03 + 2.601293334960937500E+02 + 6.884553527832031250E+01 + -8.366662597656250000E+01 + 5.479421386718750000E+03 + -2.673775878906250000E+03 + 2.417421142578125000E+03 + -3.447700000000000000E+04 + -1.746064843750000000E+04 + -2.112303222656250000E+03 + 1.162596191406250000E+03 + 1.230943969726562500E+03 + -5.386769042968750000E+03 + 1.392789550781250000E+03 + -1.224709863281250000E+04 + 9.097765625000000000E+03 + -4.901855957031250000E+03 + -3.255075195312500000E+03 + 2.700430000000000000E+05 + 5.100760000000000000E+05 + -1.019935000000000000E+06 + 2.300310000000000000E+05 + -3.999800000000000000E+04 + 2.830312500000000000E+02 + -6.704385375976562500E+02 + 1.723481811523437500E+03 + 2.423811645507812500E+02 + 2.501964111328125000E+02 + -2.936146240234375000E+02 + 3.524897460937500000E+03 + -4.325381835937500000E+03 + 6.165478515625000000E+01 + 1.027994232177734375E+02 + 1.285782165527343750E+02 + 1.260178833007812500E+02 + -3.988703613281250000E+02 + -5.232165527343750000E+01 + -2.140107727050781250E+02 + 1.375000000000000000E+02 + -5.047092285156250000E+02 + 7.121952056884765625E+00 + 3.174554443359375000E+01 + -4.815170288085937500E+01 + 3.593579101562500000E+01 + 3.845779113769531250E+02 + -4.826654052734375000E+01 + 9.340734100341796875E+01 + -5.610932922363281250E+01 + -3.612680664062500000E+02 + -1.222877197265625000E+02 + 1.240720825195312500E+02 + -9.492755889892578125E+00 + 1.243807067871093750E+02 + 2.799356079101562500E+01 + -6.133331298828125000E+01 + 5.442521667480468750E+01 + 3.056911468505859375E+00 + 4.750283691406250000E+03 + -7.292976074218750000E+02 + 1.507457275390625000E+02 + 4.115893554687500000E+01 + 3.178030700683593750E+02 + 1.571747131347656250E+02 + -2.467090087890625000E+03 + 4.237456542968750000E+03 + -1.017248657226562500E+03 + -9.432556152343750000E+00 + 1.145481414794921875E+02 + 3.639644775390625000E+02 + -3.304906738281250000E+03 + -1.647726953125000000E+04 + 1.664663476562500000E+04 + -6.936592407226562500E+02 + -1.070040527343750000E+03 + 1.648772583007812500E+02 + 1.474348876953125000E+03 + 6.892556152343750000E+02 + -2.387687988281250000E+03 + 5.190440673828125000E+02 + 6.330837402343750000E+02 + 2.151322265625000000E+03 + -1.615288452148437500E+03 + -1.410703247070312500E+03 + -4.367785339355468750E+02 + -1.037632812500000000E+03 + 2.303039550781250000E+02 + -7.211083984375000000E+01 + -7.270829101562500000E+03 + 4.245228515625000000E+03 + -4.407898125000000000E+05 + -3.979314843750000000E+04 + 1.562304443359375000E+03 + 4.471210937500000000E+03 + -4.303786132812500000E+03 + 4.989721191406250000E+03 + -9.939313964843750000E+02 + 6.006706875000000000E+05 + 1.084200000000000000E+04 + -3.399506835937500000E+02 + -2.835896484375000000E+04 + 1.258510351562500000E+04 + -2.276612109375000000E+04 + 3.547125000000000000E+03 + -2.128792968750000000E+03 + 4.655087500000000000E+04 + -1.073631152343750000E+04 + 3.351472656250000000E+03 + -5.895192382812500000E+03 + -1.310271850585937500E+03 + 3.670906494140625000E+03 + -2.676412597656250000E+03 + 3.444656005859375000E+03 + 1.350027148437500000E+04 + -1.430855273437500000E+04 + 2.623522949218750000E+03 + -4.286024414062500000E+03 + -8.780180053710937500E+02 + -4.898931250000000000E+04 + -1.098839843750000000E+03 + 3.164564453125000000E+03 + -1.869615112304687500E+03 + 7.419205078125000000E+03 + 2.983342285156250000E+03 + -4.232492675781250000E+02 + -9.940000000000000000E+02 + 4.579001953125000000E+03 + -6.586615234375000000E+03 + -1.413322753906250000E+03 + 7.997827148437500000E+03 + -5.961629394531250000E+03 + 1.260551635742187500E+03 + 3.086878125000000000E+05 + 7.820456054687500000E+03 + -3.119606445312500000E+03 + 2.472200976562500000E+04 + 2.750133789062500000E+03 + -9.987000000000000000E+03 + -5.786745605468750000E+02 + -1.079032226562500000E+03 + 4.223883789062500000E+03 + -1.588447875976562500E+02 + -5.716318359375000000E+02 + -6.815504150390625000E+02 + -5.791180175781250000E+03 + 2.104853027343750000E+03 + -1.876034301757812500E+03 + 2.713460388183593750E+02 + -1.924977294921875000E+03 + -1.197546386718750000E+02 + 9.959413085937500000E+03 + 2.714270996093750000E+03 + 1.512796020507812500E+01 + 3.475531250000000000E+03 + 2.320799560546875000E+03 + -1.232549926757812500E+03 + 1.659304687500000000E+03 + 9.069709472656250000E+02 + -1.261474121093750000E+03 + 6.278042602539062500E+01 + 1.799285888671875000E+02 + 1.080089843750000000E+03 + 2.454241210937500000E+03 + -1.544610351562500000E+03 + -5.097160156250000000E+03 + 7.994721069335937500E+02 + -2.748318481445312500E+02 + -1.207127075195312500E+03 + -1.056257324218750000E+02 + 4.523046875000000000E+02 + -1.493799609375000000E+04 + -2.922248840332031250E+02 + 4.540620605468750000E+03 + -3.634627685546875000E+03 + 4.217219238281250000E+02 + -2.876063476562500000E+03 + 7.933808593750000000E+02 + 1.654410156250000000E+03 + -1.648769531250000000E+03 + 1.829277734375000000E+04 + 2.300000000000000000E+01 + -1.823153808593750000E+03 + -4.466066589355468750E+02 + 1.428810058593750000E+03 + -6.032159423828125000E+02 + -3.747251892089843750E+02 + 1.431600646972656250E+02 + -3.392276611328125000E+03 + 7.746041107177734375E+01 + -1.222792358398437500E+02 + -2.191703796386718750E+00 + 8.099559326171875000E+02 + 3.560566894531250000E+03 + -4.143772460937500000E+03 + 1.033636962890625000E+03 + 1.085256347656250000E+02 + -6.840765380859375000E+01 + 4.364111328125000000E+02 + 2.147919921875000000E+02 + -2.761176452636718750E+02 + 2.079280090332031250E+01 + -5.757501831054687500E+02 + -4.998002929687500000E+03 + 2.749170227050781250E+02 + -6.984405517578125000E+02 + 6.022870000000000000E+05 + 2.216928863525390625E+01 + 4.966748657226562500E+02 + 3.492395629882812500E+02 + -2.489876171875000000E+04 + -2.327242675781250000E+03 + -4.384289550781250000E+02 + -4.357812500000000000E+01 + -5.835059570312500000E+03 + -4.658474121093750000E+02 + -1.048867431640625000E+03 + 1.398601196289062500E+03 + 3.426101074218750000E+02 + -9.062856445312500000E+02 + 2.130088623046875000E+03 + -3.323926696777343750E+02 + 2.368082580566406250E+02 + -1.761045532226562500E+02 + -1.148228759765625000E+03 + 3.042794189453125000E+02 + -1.199133750000000000E+05 + 1.193052246093750000E+03 + 9.990634155273437500E+01 + -5.626619873046875000E+02 + 1.334347900390625000E+03 + 2.717825622558593750E+02 + 2.034443359375000000E+03 + 6.028829956054687500E+02 + -1.412118408203125000E+03 + 1.595461669921875000E+03 + 3.406918457031250000E+03 + -9.246292114257812500E+02 + -3.891694335937500000E+03 + -5.187329101562500000E+01 + 2.288459716796875000E+03 + 2.747589111328125000E+02 + 3.029141601562500000E+03 + -3.762532714843750000E+03 + -5.570667968750000000E+03 + 4.653869018554687500E+02 + -2.139492187500000000E+03 + 3.683673437500000000E+05 + -8.258630371093750000E+02 + -1.318717480468750000E+04 + 3.855786328125000000E+04 + -1.236169921875000000E+03 + 3.770843750000000000E+03 + 1.764889038085937500E+03 + 2.543742187500000000E+03 + 5.588644531250000000E+03 + -1.465100781250000000E+04 + 1.742298889160156250E+01 + 3.766305419921875000E+03 + -3.838287353515625000E+00 + 1.055210815429687500E+03 + 7.213353271484375000E+02 + 3.148569580078125000E+03 + 4.701116943359375000E+01 + 4.448978042602539062E+01 + 2.873625000000000000E+03 + -1.624238281250000000E+03 + 1.172232666015625000E+03 + 1.749909057617187500E+02 + 2.184645690917968750E+02 + 1.324375878906250000E+04 + -1.582839453125000000E+04 + -5.704055175781250000E+02 + 9.695794067382812500E+02 + -7.690660400390625000E+02 + -7.267111816406250000E+02 + 3.788720703125000000E+01 + -2.017550048828125000E+03 + 3.868153808593750000E+03 + -6.854234313964843750E+01 + -4.397000000000000000E+04 + 5.256959838867187500E+02 + 2.277411193847656250E+02 + 6.614794311523437500E+02 + 4.411083984375000000E+04 + -5.038269042968750000E+02 + 7.225968627929687500E+02 + 9.666549072265625000E+02 + 7.658176269531250000E+02 + 1.419642333984375000E+03 + -5.186416625976562500E+02 + -4.932537841796875000E+01 + 2.624592529296875000E+03 + 2.595421447753906250E+02 + 6.840683105468750000E+03 + 6.331445312500000000E+01 + 1.779180297851562500E+02 + -7.266145996093750000E+03 + 3.379041748046875000E+02 + 7.124887084960937500E+01 + 1.324890136718750000E+02 + 2.307052734375000000E+03 + -1.462324829101562500E+02 + -7.787103271484375000E+02 + 1.167567749023437500E+02 + 1.641244506835937500E+01 + 3.653303222656250000E+02 + 5.861090698242187500E+02 + 6.096051635742187500E+02 + -3.607163696289062500E+02 + -2.656538574218750000E+03 + -5.969838256835937500E+02 + -5.391275024414062500E+01 + 2.200220031738281250E+02 + 1.210192871093750000E+02 + -7.674815673828125000E+02 + -4.283176757812500000E+03 + 8.597106933593750000E+00 + -9.278665039062500000E+03 + 1.600385156250000000E+04 + -3.167145996093750000E+03 + 2.194467285156250000E+03 + 3.871236718750000000E+04 + 4.400630000000000000E+05 + 2.524961425781250000E+03 + 4.609900000000000000E+04 + -6.006862500000000000E+05 + 1.697449462890625000E+03 + 6.371462402343750000E+02 + -5.855069335937500000E+03 + 5.003900000000000000E+04 + -3.099260000000000000E+05 + 4.941557617187500000E+02 + -1.150381469726562500E+03 + 1.200970000000000000E+05 + -7.875349609375000000E+03 diff --git a/test/spmm/spmm_checker.c b/test/spmm/spmm_checker.c new file mode 100644 index 00000000..7bdbd899 --- /dev/null +++ b/test/spmm/spmm_checker.c @@ -0,0 +1,116 @@ +/* Test program for checking if two arrays (output of alpha*A*x + beta*y) are the same +* Check the README.md to see all details about the tests. +* +* Author: Luca Pepé Sciarria, Staccone Simone (Tor Vergata University) +*/ + + + + + +#include +#include +#include + +void compare_files(const char *file1, const char *file2) { + FILE *file_s = fopen(file1, "r"); + FILE *file_p = fopen(file2, "r"); + + if (!file_s || !file_p) { + perror("Error opening files"); + exit(EXIT_FAILURE); + } + + int n_s, n_p; + fscanf(file_s, "%d", &n_s); + fscanf(file_p, "%d", &n_p); // Assuming both files have the same number of lines + + if (n_s != n_p) { + fprintf(stderr, "Error, differnet file sizes $d, $d", n_s, n_p); + exit(EXIT_FAILURE); + } + + double value_s, value_p; + + + for (int i = 0; i < n_s; i++) { + fscanf(file_s, "%lf", &value_s); + fscanf(file_p, "%lf", &value_p); + + if (value_s != value_p) { + printf("Index %d: %.2lf != %.2lf\n", i, value_s, value_p); + } + } + + fclose(file_s); + fclose(file_p); +} + +int main(int argc, char *argv[]) { + if (argc != 2) { + fprintf(stderr, "Usage: %s \n", argv[0]); + return EXIT_FAILURE; + } + + char file_s[256], file_p[256]; + snprintf(file_s, sizeof(file_s), "%s_serial.txt", argv[1]); + snprintf(file_p, sizeof(file_p), "%s_parallel.txt", argv[1]); + + compare_files(file_s, file_p); + + return EXIT_SUCCESS; +} + + +#include +#include +#include + +void compare_files(const char *file1, const char *file2) { + FILE *file_s = fopen(file1, "r"); + FILE *file_p = fopen(file2, "r"); + + if (!file_s || !file_p) { + perror("Error opening files"); + exit(EXIT_FAILURE); + } + + int n_s, n_p; + fscanf(file_s, "%d", &n_s); + fscanf(file_p, "%d", &n_p); // Assuming both files have the same number of lines + + if (n_s != n_p) { + fprintf(stderr, "Error, differnet file sizes $d, $d", n_s, n_p); + exit(EXIT_FAILURE); + } + + double value_s, value_p; + + + for (int i = 0; i < n_s; i++) { + fscanf(file_s, "%lf", &value_s); + fscanf(file_p, "%lf", &value_p); + + if (value_s != value_p) { + printf("Index %d: %.2lf != %.2lf\n", i, value_s, value_p); + } + } + + fclose(file_s); + fclose(file_p); +} + +int main(int argc, char *argv[]) { + if (argc != 2) { + fprintf(stderr, "Usage: %s \n", argv[0]); + return EXIT_FAILURE; + } + + char file_s[256], file_p[256]; + snprintf(file_s, sizeof(file_s), "%s_serial.txt", argv[1]); + snprintf(file_p, sizeof(file_p), "%s_parallel.txt", argv[1]); + + compare_files(file_s, file_p); + + return EXIT_SUCCESS; +} diff --git a/test/spmm/vectors/v.mtx b/test/spmm/vectors/v.mtx new file mode 100644 index 00000000..bea33ea0 --- /dev/null +++ b/test/spmm/vectors/v.mtx @@ -0,0 +1,2280 @@ +%%MatrixMarket matrix array real general +% Positive vector +% + 2276 1 + 8.252621889114379883E-01 + 1.913253664970397949E-01 + 1.555032730102539062E-01 + 9.853762388229370117E-01 + 7.472902536392211914E-02 + 1.006174087524414062E-02 + 8.712530136108398438E-03 + 5.640307664871215820E-01 + 4.111811518669128418E-01 + 9.784530401229858398E-01 + 8.922438621520996094E-01 + 5.730365514755249023E-01 + 7.508713603019714355E-01 + 8.061847090721130371E-01 + 8.466759324073791504E-01 + 3.195720911026000977E-01 + 2.397807836532592773E-01 + 7.610772252082824707E-01 + 3.678035736083984375E-01 + 2.524950504302978516E-01 + 4.255735874176025391E-01 + 4.157942533493041992E-01 + 9.012335538864135742E-01 + 5.474507808685302734E-02 + 3.782119750976562500E-01 + 9.816004633903503418E-01 + 2.183457612991333008E-01 + 4.723443984985351562E-01 + 5.975062847137451172E-01 + 9.705206751823425293E-01 + 3.669756054878234863E-01 + 6.821501851081848145E-01 + 3.193188309669494629E-01 + 3.225653171539306641E-01 + 1.817395687103271484E-01 + 6.766126751899719238E-01 + 8.674925565719604492E-01 + 6.555302143096923828E-01 + 8.572803735733032227E-01 + 8.064318299293518066E-01 + 3.427300453186035156E-01 + 5.542314052581787109E-01 + 3.226413130760192871E-01 + 8.337923288345336914E-01 + 6.414796710014343262E-01 + 1.540990471839904785E-01 + 7.370563745498657227E-01 + 9.641914963722229004E-01 + 5.003061890602111816E-01 + 7.600426673889160156E-03 + 4.413875341415405273E-01 + 4.176031947135925293E-01 + 7.699446678161621094E-01 + 4.727553725242614746E-01 + 8.890491724014282227E-02 + 5.250720381736755371E-01 + 1.946058273315429688E-01 + 6.767463088035583496E-01 + 7.529391050338745117E-01 + 6.488744616508483887E-01 + 3.945000171661376953E-01 + 8.730930089950561523E-02 + 8.694332838058471680E-01 + 9.554633498191833496E-01 + 4.196727275848388672E-01 + 5.105836391448974609E-01 + 6.118936538696289062E-01 + 6.028946638107299805E-01 + 8.110098838806152344E-01 + 3.621846437454223633E-02 + 9.575396776199340820E-02 + 2.987763285636901855E-01 + 9.313887953758239746E-01 + 6.720965504646301270E-01 + 5.246989130973815918E-01 + 4.130952954292297363E-01 + 1.608930230140686035E-01 + 7.932276725769042969E-01 + 1.658000349998474121E-01 + 9.984643459320068359E-01 + 9.240514039993286133E-02 + 6.280339360237121582E-01 + 7.040947675704956055E-01 + 9.530782699584960938E-03 + 1.460363268852233887E-01 + 6.053394079208374023E-02 + 3.931593894958496094E-01 + 5.172122716903686523E-01 + 3.628310561180114746E-01 + 9.126500487327575684E-01 + 2.476045489311218262E-01 + 5.459685921669006348E-01 + 8.449624180793762207E-01 + 1.428920626640319824E-01 + 5.712146759033203125E-01 + 8.055454492568969727E-01 + 3.802294135093688965E-01 + 5.547064542770385742E-02 + 3.324836492538452148E-01 + 7.547127008438110352E-01 + 5.441617369651794434E-01 + 3.097073435783386230E-01 + 1.235342025756835938E-02 + 5.357721447944641113E-01 + 3.540520071983337402E-01 + 7.426355481147766113E-01 + 8.965780138969421387E-01 + 2.487552762031555176E-01 + 9.818387627601623535E-01 + 3.875092864036560059E-01 + 7.844926714897155762E-01 + 7.591242790222167969E-01 + 5.202598571777343750E-01 + 3.245544433593750000E-01 + 6.426074504852294922E-01 + 7.689554095268249512E-01 + 2.132275104522705078E-01 + 7.208041548728942871E-01 + 6.572113633155822754E-01 + 1.120518445968627930E-01 + 5.419077873229980469E-01 + 2.726466059684753418E-01 + 3.696711659431457520E-01 + 3.604498505592346191E-01 + 6.698027849197387695E-01 + 6.273596286773681641E-01 + 2.367566823959350586E-01 + 8.929477334022521973E-01 + 7.735533118247985840E-01 + 9.669129252433776855E-01 + 4.132860898971557617E-02 + 7.055506110191345215E-01 + 2.254624962806701660E-01 + 3.118293285369873047E-01 + 4.476869106292724609E-02 + 1.984238624572753906E-02 + 3.721151947975158691E-01 + 5.042296648025512695E-01 + 3.089362978935241699E-01 + 4.029541611671447754E-01 + 2.201640605926513672E-01 + 8.959479928016662598E-01 + 5.098016262054443359E-01 + 9.268947839736938477E-01 + 6.369371414184570312E-01 + 4.946240186691284180E-01 + 1.186546087265014648E-01 + 4.458506107330322266E-01 + 7.365471124649047852E-02 + 8.723632693290710449E-01 + 5.402250885963439941E-01 + 6.138448119163513184E-01 + 3.762513995170593262E-01 + 5.301047563552856445E-01 + 2.131448388099670410E-01 + 7.456698417663574219E-01 + 1.034592986106872559E-01 + 9.420874118804931641E-01 + 7.431811094284057617E-01 + 5.927396416664123535E-01 + 3.806754946708679199E-01 + 3.438783288002014160E-01 + 4.841011762619018555E-01 + 7.107058763504028320E-01 + 6.006285548210144043E-01 + 8.718911409378051758E-01 + 7.528781294822692871E-01 + 1.678546071052551270E-01 + 8.530456423759460449E-01 + 6.928645372390747070E-01 + 4.483746290206909180E-01 + 8.691272735595703125E-01 + 8.830844759941101074E-01 + 4.455298781394958496E-01 + 7.613872289657592773E-01 + 2.563492655754089355E-01 + 9.345535635948181152E-01 + 2.429087162017822266E-01 + 9.339488744735717773E-01 + 7.248900532722473145E-01 + 5.507179498672485352E-01 + 6.892182826995849609E-01 + 6.875806450843811035E-01 + 3.168001174926757812E-01 + 1.607934832572937012E-01 + 6.812310218811035156E-02 + 4.336588978767395020E-01 + 1.000273227691650391E-01 + 7.927842736244201660E-01 + 9.029455184936523438E-01 + 6.314234733581542969E-01 + 5.179075002670288086E-01 + 4.327967762947082520E-01 + 7.583021521568298340E-01 + 5.472449660301208496E-01 + 4.906105995178222656E-01 + 8.797203302383422852E-01 + 6.395839452743530273E-01 + 3.322080969810485840E-01 + 6.633908152580261230E-01 + 6.552975773811340332E-01 + 6.561046242713928223E-01 + 6.216450929641723633E-01 + 4.372342824935913086E-01 + 6.419864296913146973E-01 + 3.634622693061828613E-01 + 1.972847580909729004E-01 + 6.649705767631530762E-01 + 2.752700448036193848E-01 + 7.503092885017395020E-01 + 7.001988887786865234E-01 + 1.834567189216613770E-01 + 8.104251623153686523E-01 + 7.950012087821960449E-01 + 1.598675251007080078E-01 + 5.615655779838562012E-01 + 3.915396928787231445E-01 + 8.270663022994995117E-02 + 7.018914222717285156E-01 + 9.125827550888061523E-01 + 7.986079454421997070E-01 + 5.635349750518798828E-01 + 7.957746386528015137E-01 + 9.319037199020385742E-01 + 6.931602954864501953E-02 + 7.693374752998352051E-01 + 6.818783283233642578E-01 + 8.934460878372192383E-01 + 1.714855432510375977E-02 + 8.962540626525878906E-01 + 3.553152680397033691E-01 + 9.922829866409301758E-01 + 4.770746231079101562E-01 + 1.363787651062011719E-01 + 2.533786892890930176E-01 + 1.517469882965087891E-01 + 3.890407681465148926E-01 + 6.477020978927612305E-01 + 5.188521742820739746E-01 + 5.825369954109191895E-01 + 9.254477024078369141E-01 + 6.444144845008850098E-01 + 6.410758495330810547E-01 + 7.450115680694580078E-02 + 6.786220669746398926E-01 + 2.606863975524902344E-01 + 6.093972921371459961E-01 + 5.878920555114746094E-01 + 2.780443429946899414E-01 + 7.952921390533447266E-01 + 1.286781430244445801E-01 + 6.314270496368408203E-01 + 6.242952942848205566E-01 + 6.475191712379455566E-01 + 3.181545734405517578E-01 + 5.732785463333129883E-01 + 7.518040537834167480E-01 + 5.190825462341308594E-01 + 9.551836252212524414E-01 + 1.983837485313415527E-01 + 9.735242128372192383E-01 + 8.406338095664978027E-01 + 7.621472477912902832E-01 + 5.292730331420898438E-01 + 5.907431244850158691E-01 + 5.738848447799682617E-02 + 5.152136087417602539E-02 + 7.235922813415527344E-01 + 7.364058494567871094E-01 + 5.750328898429870605E-01 + 9.592936038970947266E-01 + 6.466398835182189941E-01 + 1.536893844604492188E-01 + 7.757611870765686035E-01 + 8.554103374481201172E-01 + 5.270828008651733398E-01 + 6.470333337783813477E-01 + 1.759606599807739258E-01 + 3.171646595001220703E-01 + 7.309661507606506348E-01 + 7.395085692405700684E-01 + 1.788036227226257324E-01 + 2.987267971038818359E-01 + 5.869417190551757812E-01 + 3.801578879356384277E-01 + 1.693862080574035645E-01 + 6.402575969696044922E-02 + 1.512238383293151855E-01 + 7.245048880577087402E-01 + 7.901138663291931152E-01 + 7.059575319290161133E-01 + 1.078512072563171387E-01 + 9.835368394851684570E-02 + 6.694051027297973633E-01 + 1.260508298873901367E-01 + 6.057228446006774902E-01 + 5.397946238517761230E-01 + 5.784740447998046875E-01 + 9.608550071716308594E-01 + 9.779332876205444336E-01 + 8.950162529945373535E-01 + 2.638478875160217285E-01 + 2.152204513549804688E-03 + 2.239951491355895996E-01 + 1.383578777313232422E-02 + 4.029254317283630371E-01 + 2.975678443908691406E-02 + 9.719780087471008301E-01 + 8.856808543205261230E-01 + 6.842408180236816406E-01 + 6.185897588729858398E-01 + 4.010841846466064453E-01 + 6.911092996597290039E-01 + 9.133151173591613770E-01 + 7.127464413642883301E-01 + 9.122081995010375977E-01 + 9.490629434585571289E-01 + 4.896166920661926270E-01 + 3.302990198135375977E-01 + 2.989789843559265137E-01 + 6.109394431114196777E-01 + 3.352280855178833008E-01 + 2.758638858795166016E-01 + 9.510778188705444336E-01 + 9.706360697746276855E-01 + 7.689435482025146484E-01 + 6.439201235771179199E-01 + 8.323577642440795898E-01 + 8.808347582817077637E-01 + 5.308002829551696777E-01 + 7.352953553199768066E-01 + 8.174005746841430664E-01 + 9.872531890869140625E-02 + 2.232695817947387695E-01 + 6.359112858772277832E-01 + 7.247573733329772949E-01 + 9.864163398742675781E-01 + 1.946235895156860352E-01 + 6.219947338104248047E-02 + 1.332106590270996094E-01 + 5.636278986930847168E-01 + 3.380259871482849121E-01 + 8.998335599899291992E-01 + 3.618687391281127930E-02 + 7.324489355087280273E-01 + 9.723536372184753418E-01 + 4.119529128074645996E-01 + 4.371667504310607910E-01 + 3.705200552940368652E-01 + 1.342041492462158203E-01 + 4.717244505882263184E-01 + 9.205152988433837891E-01 + 6.986564397811889648E-02 + 4.785077571868896484E-01 + 4.369843602180480957E-01 + 8.334130048751831055E-01 + 4.248592853546142578E-01 + 9.185408353805541992E-01 + 2.652857899665832520E-01 + 1.638842821121215820E-01 + 8.059030771255493164E-02 + 4.903833866119384766E-01 + 8.426713347434997559E-01 + 9.306216239929199219E-01 + 4.762101173400878906E-01 + 4.691480994224548340E-01 + 8.859742283821105957E-01 + 3.707827329635620117E-01 + 9.004107117652893066E-01 + 3.973333239555358887E-01 + 5.963860154151916504E-01 + 5.329974889755249023E-01 + 7.948819398880004883E-01 + 6.974260210990905762E-01 + 1.703377366065979004E-01 + 6.070367693901062012E-01 + 5.649757385253906250E-01 + 9.254973530769348145E-01 + 3.684421777725219727E-01 + 5.500042438507080078E-01 + 9.848715662956237793E-01 + 8.748069405555725098E-01 + 6.669892668724060059E-01 + 6.773889064788818359E-01 + 6.210083365440368652E-01 + 1.958345174789428711E-01 + 4.418283700942993164E-02 + 6.869151592254638672E-01 + 3.966391086578369141E-02 + 9.005476832389831543E-01 + 4.597288370132446289E-01 + 9.152441620826721191E-01 + 2.047895789146423340E-01 + 5.394428968429565430E-01 + 7.526231408119201660E-01 + 6.502321958541870117E-01 + 9.896278977394104004E-01 + 1.534469127655029297E-01 + 2.805027961730957031E-01 + 5.242132544517517090E-01 + 1.998299360275268555E-02 + 7.057659029960632324E-01 + 5.285493731498718262E-01 + 7.505154013633728027E-01 + 7.348117828369140625E-01 + 8.441283702850341797E-01 + 8.954792618751525879E-01 + 9.231507778167724609E-01 + 1.679760813713073730E-01 + 9.362884759902954102E-01 + 9.385716915130615234E-02 + 3.007491827011108398E-01 + 1.955953240394592285E-01 + 5.343614220619201660E-01 + 5.908315181732177734E-01 + 7.220702767372131348E-01 + 1.414368748664855957E-01 + 6.061368584632873535E-01 + 2.797172069549560547E-01 + 7.774425148963928223E-01 + 2.398342490196228027E-01 + 4.237724542617797852E-01 + 5.056104063987731934E-01 + 7.343883514404296875E-01 + 2.845975756645202637E-01 + 4.750007390975952148E-01 + 2.091461420059204102E-01 + 2.555083036422729492E-01 + 4.228479266166687012E-01 + 2.263230085372924805E-01 + 1.604250073432922363E-01 + 2.383446097373962402E-01 + 2.089534997940063477E-01 + 3.697879910469055176E-01 + 5.448156595230102539E-02 + 7.418134808540344238E-01 + 7.670622467994689941E-01 + 2.828791737556457520E-01 + 3.065292835235595703E-01 + 3.632034659385681152E-01 + 1.032078862190246582E-01 + 9.525341391563415527E-01 + 5.078039765357971191E-01 + 6.642478108406066895E-01 + 6.369726061820983887E-01 + 3.125365376472473145E-01 + 6.916568279266357422E-01 + 9.249054789543151855E-01 + 8.601423501968383789E-01 + 9.220951795578002930E-02 + 4.494937062263488770E-01 + 9.120567440986633301E-01 + 9.652786850929260254E-01 + 8.636415004730224609E-03 + 4.424293637275695801E-01 + 5.604851245880126953E-02 + 5.728121995925903320E-01 + 1.709045767784118652E-01 + 8.466627001762390137E-01 + 3.734211325645446777E-01 + 5.710750222206115723E-01 + 1.448328495025634766E-01 + 5.715823173522949219E-02 + 4.699743986129760742E-01 + 8.878713846206665039E-01 + 2.984628677368164062E-01 + 9.389581680297851562E-01 + 5.292934179306030273E-02 + 4.867941737174987793E-01 + 7.119781970977783203E-01 + 8.554255366325378418E-01 + 4.829068183898925781E-01 + 9.523070454597473145E-01 + 8.572346568107604980E-01 + 5.118661522865295410E-01 + 1.102497577667236328E-01 + 4.375951886177062988E-01 + 8.304110765457153320E-01 + 1.152647733688354492E-01 + 7.412810325622558594E-01 + 3.140814304351806641E-01 + 8.405947685241699219E-02 + 8.133043050765991211E-01 + 8.789296150207519531E-01 + 3.401589393615722656E-02 + 1.078472733497619629E-01 + 2.482120394706726074E-01 + 4.191369414329528809E-01 + 5.697774887084960938E-02 + 8.443233966827392578E-01 + 6.388009786605834961E-01 + 5.539892315864562988E-01 + 6.268877387046813965E-01 + 6.325404047966003418E-01 + 4.602146148681640625E-02 + 2.652795314788818359E-01 + 5.901367068290710449E-01 + 9.069818854331970215E-01 + 8.469868302345275879E-01 + 2.679816484451293945E-01 + 4.448758363723754883E-01 + 3.271313905715942383E-01 + 1.651014685630798340E-01 + 2.497810721397399902E-01 + 7.720232009887695312E-01 + 7.824314832687377930E-01 + 4.325156807899475098E-01 + 5.084515213966369629E-01 + 4.463694691658020020E-01 + 5.862172842025756836E-01 + 3.017474412918090820E-01 + 1.019219756126403809E-01 + 8.014783859252929688E-01 + 4.223800301551818848E-01 + 3.166419267654418945E-01 + 1.863645911216735840E-01 + 6.116495132446289062E-01 + 1.042079329490661621E-01 + 6.684159040451049805E-01 + 8.986022472381591797E-01 + 5.140637159347534180E-01 + 5.548119544982910156E-03 + 5.232045054435729980E-01 + 3.493174910545349121E-01 + 5.902005434036254883E-01 + 7.681297063827514648E-01 + 1.812191009521484375E-01 + 3.511050939559936523E-01 + 5.094664692878723145E-01 + 9.818989038467407227E-02 + 5.636478066444396973E-01 + 7.988509535789489746E-01 + 7.415661215782165527E-01 + 3.767013549804687500E-01 + 8.274853229522705078E-01 + 5.100618600845336914E-01 + 8.444848060607910156E-01 + 4.494286775588989258E-01 + 6.411976218223571777E-01 + 2.647608518600463867E-02 + 8.805547952651977539E-01 + 2.402088642120361328E-01 + 7.336384057998657227E-01 + 1.976394057273864746E-01 + 8.569643497467041016E-01 + 8.666443824768066406E-02 + 2.025915384292602539E-01 + 5.323022007942199707E-01 + 1.058813929557800293E-01 + 5.757374167442321777E-01 + 2.473147511482238770E-01 + 8.773531913757324219E-01 + 8.968350887298583984E-01 + 8.059681653976440430E-01 + 8.452568054199218750E-01 + 7.942815423011779785E-01 + 2.834604382514953613E-01 + 3.915413022041320801E-01 + 8.034151792526245117E-02 + 4.009913206100463867E-01 + 1.293932795524597168E-01 + 4.044333696365356445E-01 + 4.146536588668823242E-01 + 9.417963027954101562E-01 + 6.069434285163879395E-01 + 8.369448781013488770E-01 + 6.617622375488281250E-01 + 8.604303598403930664E-01 + 3.408146500587463379E-01 + 3.902530670166015625E-01 + 2.809132337570190430E-01 + 6.212716698646545410E-01 + 9.703432917594909668E-01 + 2.686557173728942871E-01 + 3.090590238571166992E-01 + 3.003029823303222656E-01 + 2.674602866172790527E-01 + 4.913473129272460938E-02 + 8.095357418060302734E-01 + 5.576202869415283203E-01 + 8.081743717193603516E-01 + 8.510817885398864746E-01 + 9.351980686187744141E-02 + 9.282943010330200195E-01 + 2.881098389625549316E-01 + 4.011825323104858398E-01 + 3.898552656173706055E-01 + 1.271121501922607422E-01 + 1.263983845710754395E-01 + 9.574060440063476562E-01 + 2.684725522994995117E-01 + 4.189464449882507324E-01 + 5.820670127868652344E-01 + 1.675999164581298828E-02 + 6.192203164100646973E-01 + 9.907658696174621582E-01 + 8.335814476013183594E-01 + 2.785983085632324219E-01 + 3.754950165748596191E-01 + 4.206496477127075195E-01 + 2.659395337104797363E-01 + 4.196972846984863281E-01 + 5.686038136482238770E-01 + 3.835235834121704102E-01 + 7.225037217140197754E-01 + 5.795359611511230469E-04 + 4.830050468444824219E-02 + 6.896245479583740234E-01 + 4.784428477287292480E-01 + 8.537155389785766602E-01 + 3.420020341873168945E-01 + 8.801803588867187500E-01 + 6.071807742118835449E-01 + 8.331667184829711914E-01 + 2.555431127548217773E-01 + 5.000141263008117676E-01 + 2.684263586997985840E-01 + 5.271008014678955078E-01 + 6.289888024330139160E-01 + 7.425060868263244629E-01 + 4.271717667579650879E-01 + 9.555458426475524902E-01 + 8.180935382843017578E-01 + 8.669004440307617188E-01 + 4.263161420822143555E-01 + 3.685511946678161621E-01 + 5.869158506393432617E-01 + 9.464159011840820312E-01 + 7.517979145050048828E-01 + 4.896535277366638184E-01 + 4.117989540100097656E-02 + 1.094825863838195801E-01 + 5.076968073844909668E-01 + 6.271224021911621094E-01 + 4.564774036407470703E-02 + 5.943440198898315430E-01 + 9.251242280006408691E-01 + 1.914889812469482422E-01 + 3.952820301055908203E-01 + 8.493484854698181152E-01 + 3.335858583450317383E-01 + 6.804435849189758301E-01 + 1.219382286071777344E-01 + 2.557772397994995117E-01 + 3.634866476058959961E-01 + 4.472255706787109375E-01 + 3.301673531532287598E-01 + 8.804057240486145020E-01 + 3.105987906455993652E-01 + 8.592597842216491699E-01 + 7.863549590110778809E-01 + 5.435917973518371582E-01 + 3.213310241699218750E-02 + 4.336377978324890137E-01 + 9.894099831581115723E-01 + 9.214519262313842773E-01 + 5.689207315444946289E-01 + 6.156623363494873047E-03 + 3.634812235832214355E-01 + 9.063502550125122070E-01 + 9.253799319267272949E-01 + 4.404091238975524902E-01 + 3.205501437187194824E-01 + 5.656696557998657227E-01 + 5.103762149810791016E-01 + 2.166163325309753418E-01 + 2.042600512504577637E-01 + 7.466226816177368164E-02 + 7.322764396667480469E-01 + 8.006313443183898926E-01 + 1.773709654808044434E-01 + 8.188776373863220215E-01 + 4.462967514991760254E-01 + 4.242920875549316406E-01 + 6.335621476173400879E-01 + 8.572941422462463379E-01 + 7.656554579734802246E-01 + 2.643010616302490234E-01 + 7.720463275909423828E-01 + 5.278450250625610352E-01 + 2.150442600250244141E-01 + 9.603474140167236328E-01 + 7.631895542144775391E-01 + 5.307764410972595215E-01 + 2.801151275634765625E-01 + 6.459769010543823242E-01 + 2.503697872161865234E-01 + 9.333257675170898438E-01 + 6.800397634506225586E-01 + 1.533805131912231445E-01 + 4.547705650329589844E-01 + 4.419195652008056641E-01 + 3.034635782241821289E-01 + 1.200713515281677246E-01 + 6.882908940315246582E-01 + 6.796258687973022461E-02 + 9.744247198104858398E-01 + 6.455836892127990723E-01 + 6.767320632934570312E-02 + 5.648159980773925781E-02 + 1.353729367256164551E-01 + 4.434851408004760742E-01 + 1.627244949340820312E-01 + 6.661201119422912598E-01 + 8.816525340080261230E-01 + 6.803373694419860840E-01 + 2.162039279937744141E-03 + 7.368812561035156250E-01 + 8.695412874221801758E-01 + 8.040865063667297363E-01 + 9.951963424682617188E-01 + 5.284941196441650391E-01 + 7.543358206748962402E-01 + 8.259156942367553711E-01 + 6.935047507286071777E-01 + 2.012396454811096191E-01 + 1.193166971206665039E-01 + 9.888755083084106445E-01 + 7.797878384590148926E-01 + 6.068108677864074707E-01 + 1.250064969062805176E-01 + 4.232336878776550293E-01 + 2.711440324783325195E-01 + 7.212370038032531738E-01 + 8.662157654762268066E-01 + 6.040608286857604980E-01 + 3.075351119041442871E-01 + 9.652245044708251953E-01 + 5.184206366539001465E-01 + 7.768084406852722168E-01 + 4.080882668495178223E-01 + 8.947457671165466309E-01 + 8.783682584762573242E-01 + 4.194968938827514648E-01 + 8.720858097076416016E-01 + 5.732128024101257324E-01 + 7.640886902809143066E-01 + 3.418121337890625000E-01 + 4.050363302230834961E-01 + 3.508344292640686035E-01 + 3.427465558052062988E-01 + 5.917356014251708984E-01 + 2.537005543708801270E-01 + 2.713058590888977051E-01 + 8.594504594802856445E-01 + 2.739045619964599609E-01 + 1.084372997283935547E-01 + 8.509160280227661133E-01 + 3.589969873428344727E-01 + 8.083438277244567871E-01 + 1.438762545585632324E-01 + 2.654289603233337402E-01 + 9.116679430007934570E-01 + 7.466673851013183594E-01 + 9.797429442405700684E-01 + 7.693043947219848633E-01 + 2.665984034538269043E-01 + 3.740656375885009766E-02 + 3.774685263633728027E-01 + 5.209783911705017090E-01 + 1.500939130783081055E-01 + 9.418143630027770996E-01 + 7.283232212066650391E-01 + 5.215176343917846680E-01 + 2.953684329986572266E-01 + 2.808744907379150391E-01 + 4.589066505432128906E-01 + 5.379735231399536133E-01 + 7.141558527946472168E-01 + 3.577363491058349609E-02 + 9.846703410148620605E-01 + 9.102777242660522461E-01 + 5.938773155212402344E-01 + 8.557276129722595215E-01 + 2.620944976806640625E-01 + 1.236343383789062500E-01 + 5.683442950248718262E-01 + 1.477348804473876953E-02 + 1.031058430671691895E-01 + 4.934830665588378906E-01 + 7.980364561080932617E-02 + 8.039599061012268066E-01 + 6.218565702438354492E-01 + 1.294130086898803711E-01 + 2.762119174003601074E-01 + 4.183912277221679688E-02 + 4.764437675476074219E-01 + 4.147806763648986816E-01 + 4.400225877761840820E-01 + 5.007878541946411133E-01 + 9.423415660858154297E-01 + 3.309451937675476074E-01 + 7.247100472450256348E-01 + 8.588469028472900391E-02 + 2.926886081695556641E-01 + 8.403030037879943848E-01 + 6.227326393127441406E-01 + 9.878861904144287109E-01 + 8.237439990043640137E-01 + 8.249783515930175781E-02 + 2.642193436622619629E-01 + 4.807674288749694824E-01 + 5.388432145118713379E-01 + 9.247671961784362793E-01 + 7.129455208778381348E-01 + 4.061960577964782715E-01 + 1.425788998603820801E-01 + 3.612380027770996094E-01 + 5.013146996498107910E-01 + 3.730183839797973633E-02 + 9.378163814544677734E-01 + 1.195876002311706543E-01 + 7.113260030746459961E-02 + 2.984388470649719238E-01 + 3.976221680641174316E-01 + 4.427477717399597168E-01 + 1.295770406723022461E-01 + 3.751975297927856445E-01 + 1.603014469146728516E-01 + 5.578981041908264160E-01 + 5.217844247817993164E-02 + 2.797908782958984375E-01 + 3.045370578765869141E-01 + 7.299848794937133789E-01 + 2.131827473640441895E-01 + 7.337888479232788086E-01 + 8.816231489181518555E-01 + 6.930915117263793945E-01 + 1.998456716537475586E-01 + 8.885859847068786621E-01 + 9.456888437271118164E-01 + 8.732262849807739258E-01 + 4.634114503860473633E-01 + 5.756073594093322754E-01 + 2.569156289100646973E-01 + 7.941190004348754883E-01 + 8.163414001464843750E-01 + 6.552801728248596191E-01 + 2.316314578056335449E-01 + 4.014691114425659180E-01 + 8.310297131538391113E-01 + 5.346352458000183105E-01 + 8.291851878166198730E-01 + 1.762646436691284180E-02 + 2.236695885658264160E-01 + 7.024907469749450684E-01 + 4.930113554000854492E-01 + 6.125471591949462891E-01 + 8.556166887283325195E-01 + 5.323192477226257324E-01 + 5.306367874145507812E-01 + 5.152407884597778320E-01 + 1.123064756393432617E-01 + 2.308344841003417969E-01 + 6.585795879364013672E-01 + 3.589372634887695312E-01 + 6.691570281982421875E-01 + 6.656590104103088379E-01 + 5.167983174324035645E-01 + 7.451248764991760254E-01 + 6.387504339218139648E-01 + 7.063196897506713867E-01 + 3.915894031524658203E-02 + 9.870269894599914551E-01 + 9.606848359107971191E-01 + 9.097978472709655762E-01 + 3.228816390037536621E-01 + 5.353682041168212891E-01 + 9.083976149559020996E-01 + 7.051936388015747070E-01 + 6.016674041748046875E-01 + 6.062402725219726562E-01 + 6.769470572471618652E-01 + 4.946875572204589844E-02 + 2.766501307487487793E-01 + 9.849665164947509766E-01 + 3.604059219360351562E-01 + 1.690034270286560059E-01 + 4.821640849113464355E-01 + 4.520360231399536133E-01 + 7.439762949943542480E-01 + 3.636855483055114746E-01 + 6.686477065086364746E-01 + 6.606242060661315918E-01 + 7.230296730995178223E-01 + 7.494825124740600586E-02 + 1.554286479949951172E-02 + 1.082202196121215820E-01 + 9.439190626144409180E-01 + 7.948952317237854004E-01 + 7.702965140342712402E-01 + 3.191538453102111816E-01 + 8.425882458686828613E-01 + 1.721156835556030273E-01 + 1.192675232887268066E-01 + 6.008089780807495117E-01 + 4.473908543586730957E-01 + 4.779342412948608398E-01 + 6.014696955680847168E-01 + 3.160764575004577637E-01 + 8.238287568092346191E-01 + 6.146620512008666992E-01 + 6.544659733772277832E-01 + 2.101876735687255859E-01 + 7.035709619522094727E-01 + 3.422943949699401855E-01 + 7.703830599784851074E-01 + 4.242982268333435059E-01 + 8.093292713165283203E-01 + 2.510439157485961914E-01 + 3.530328869819641113E-01 + 1.039952039718627930E-01 + 2.926926016807556152E-01 + 6.403498053550720215E-01 + 6.234866976737976074E-01 + 7.454415559768676758E-01 + 9.650408625602722168E-01 + 1.809761524200439453E-01 + 6.652440428733825684E-01 + 1.102836728096008301E-01 + 3.959472775459289551E-01 + 7.906107902526855469E-01 + 2.959499359130859375E-01 + 6.134276390075683594E-01 + 1.212487220764160156E-01 + 8.864270448684692383E-01 + 6.085457801818847656E-01 + 3.318687677383422852E-01 + 3.266275525093078613E-01 + 6.966552734375000000E-01 + 7.224082946777343750E-05 + 5.643020868301391602E-01 + 7.808867096900939941E-01 + 3.243212699890136719E-01 + 5.247609615325927734E-01 + 4.050517082214355469E-01 + 9.145588278770446777E-01 + 2.468340992927551270E-01 + 9.143337607383728027E-01 + 6.106171607971191406E-01 + 2.294927239418029785E-01 + 5.517829060554504395E-01 + 8.581295013427734375E-01 + 9.916127324104309082E-01 + 4.688640832901000977E-01 + 2.588423490524291992E-01 + 3.001143336296081543E-01 + 1.444267630577087402E-01 + 7.431960105895996094E-01 + 2.103524208068847656E-01 + 6.808841228485107422E-01 + 5.271742343902587891E-01 + 5.631136894226074219E-01 + 4.774001836776733398E-01 + 7.049896121025085449E-01 + 1.863605380058288574E-01 + 9.603520631790161133E-01 + 8.550866842269897461E-01 + 3.635954856872558594E-02 + 8.971982598304748535E-01 + 9.529644250869750977E-01 + 5.606587529182434082E-01 + 7.468600273132324219E-01 + 3.210634589195251465E-01 + 8.798822164535522461E-01 + 8.524610996246337891E-01 + 5.666154026985168457E-01 + 2.205550670623779297E-01 + 9.965649247169494629E-01 + 5.450303554534912109E-01 + 7.295656800270080566E-01 + 6.556513905525207520E-01 + 9.102157354354858398E-01 + 4.439949989318847656E-01 + 1.583158373832702637E-01 + 8.720501661300659180E-01 + 3.626251220703125000E-01 + 8.308203220367431641E-01 + 4.509090781211853027E-01 + 8.156110644340515137E-01 + 6.529554724693298340E-01 + 5.636357665061950684E-01 + 5.960203409194946289E-01 + 6.506199240684509277E-01 + 2.543606162071228027E-01 + 2.337590456008911133E-01 + 7.852429151535034180E-01 + 2.330363988876342773E-01 + 5.447549819946289062E-01 + 6.345381140708923340E-01 + 3.395924568176269531E-01 + 4.150182604789733887E-01 + 3.376890420913696289E-01 + 2.608022093772888184E-01 + 6.482374072074890137E-01 + 6.878157854080200195E-01 + 2.421514987945556641E-01 + 7.789672613143920898E-01 + 7.961438298225402832E-01 + 3.447121977806091309E-01 + 7.898492813110351562E-01 + 4.689633250236511230E-01 + 6.096643209457397461E-02 + 4.070371985435485840E-01 + 3.549932837486267090E-01 + 1.037092804908752441E-01 + 6.313555836677551270E-01 + 4.006339907646179199E-01 + 9.257084131240844727E-01 + 5.062904953956604004E-01 + 2.925909757614135742E-01 + 6.367068886756896973E-01 + 3.177059292793273926E-01 + 6.009138822555541992E-01 + 6.904950737953186035E-01 + 2.389809489250183105E-01 + 3.124201297760009766E-02 + 6.615129113197326660E-01 + 5.694631934165954590E-01 + 8.529472947120666504E-01 + 4.531071782112121582E-01 + 7.648682594299316406E-01 + 7.262170314788818359E-01 + 2.585128545761108398E-01 + 9.538221955299377441E-01 + 4.445159435272216797E-01 + 3.103256225585937500E-01 + 9.871418476104736328E-01 + 8.365331292152404785E-01 + 5.058955550193786621E-01 + 5.805475115776062012E-01 + 3.546670675277709961E-01 + 8.618279695510864258E-01 + 5.634971857070922852E-01 + 7.859092354774475098E-01 + 8.481487035751342773E-01 + 1.942927837371826172E-01 + 4.650934338569641113E-01 + 9.200168251991271973E-01 + 1.892428994178771973E-01 + 2.048833370208740234E-01 + 8.579484820365905762E-01 + 9.845843315124511719E-01 + 8.009375929832458496E-01 + 7.555010318756103516E-01 + 1.600248217582702637E-01 + 1.261446475982666016E-01 + 4.585484862327575684E-01 + 3.510305285453796387E-01 + 8.757547736167907715E-01 + 1.209228634834289551E-01 + 2.641410231590270996E-01 + 5.641478896141052246E-01 + 4.933400154113769531E-01 + 7.524680495262145996E-01 + 9.971743226051330566E-01 + 5.869243144989013672E-01 + 7.943769693374633789E-01 + 3.014446496963500977E-01 + 3.739575743675231934E-01 + 9.624321460723876953E-01 + 5.427080392837524414E-01 + 7.835109829902648926E-01 + 8.602408170700073242E-01 + 7.096776366233825684E-01 + 7.121183872222900391E-01 + 2.283887267112731934E-01 + 6.924141645431518555E-01 + 1.172379255294799805E-01 + 8.459823727607727051E-01 + 3.500401973724365234E-01 + 5.881966948509216309E-01 + 8.543569445610046387E-01 + 1.771810054779052734E-01 + 2.902011871337890625E-01 + 9.959570169448852539E-01 + 4.991597533226013184E-01 + 3.083030581474304199E-01 + 7.820379734039306641E-01 + 1.534138321876525879E-01 + 6.293731331825256348E-01 + 7.696962356567382812E-02 + 1.193296909332275391E-02 + 5.534459948539733887E-01 + 6.084985733032226562E-01 + 2.666642665863037109E-01 + 8.907560110092163086E-01 + 1.084374785423278809E-01 + 8.455799221992492676E-01 + 3.679150342941284180E-01 + 8.887616395950317383E-01 + 9.611284136772155762E-01 + 1.764487624168395996E-01 + 3.067831993103027344E-01 + 4.531087875366210938E-01 + 7.851602435111999512E-01 + 8.635900616645812988E-01 + 3.119537830352783203E-01 + 4.773793220520019531E-01 + 1.739196777343750000E-01 + 7.901386618614196777E-01 + 2.572478652000427246E-01 + 8.440022468566894531E-01 + 7.690173387527465820E-01 + 3.200427293777465820E-01 + 2.942500114440917969E-01 + 9.556952118873596191E-01 + 7.155019640922546387E-01 + 8.482989072799682617E-01 + 8.090226054191589355E-01 + 8.447328209877014160E-01 + 1.523472070693969727E-01 + 1.990650892257690430E-01 + 2.079358696937561035E-01 + 2.307355403900146484E-02 + 7.426689863204956055E-01 + 9.314143061637878418E-01 + 3.939714431762695312E-01 + 1.432600617408752441E-01 + 8.068131804466247559E-01 + 2.267094254493713379E-01 + 2.755234837532043457E-01 + 3.023213148117065430E-01 + 8.989866971969604492E-01 + 9.632679224014282227E-01 + 6.113684773445129395E-01 + 9.106130003929138184E-01 + 9.673990011215209961E-01 + 2.265101671218872070E-01 + 9.126980304718017578E-01 + 2.641661167144775391E-01 + 7.695692777633666992E-02 + 8.473290801048278809E-01 + 9.105539321899414062E-02 + 6.693239212036132812E-01 + 6.822288036346435547E-03 + 6.005809307098388672E-01 + 4.171335697174072266E-02 + 7.548454403877258301E-01 + 4.190384745597839355E-01 + 7.813202738761901855E-01 + 4.113280773162841797E-02 + 2.877810001373291016E-01 + 3.799882531166076660E-01 + 5.033389329910278320E-01 + 1.278292536735534668E-01 + 5.050873756408691406E-02 + 7.303246259689331055E-01 + 9.621708393096923828E-01 + 3.943671584129333496E-01 + 4.133751392364501953E-01 + 2.081125974655151367E-01 + 4.622036218643188477E-02 + 6.267454028129577637E-01 + 3.341401815414428711E-01 + 5.597317218780517578E-01 + 7.197444438934326172E-01 + 3.716859221458435059E-01 + 6.172091364860534668E-01 + 2.931759357452392578E-01 + 4.994642734527587891E-02 + 2.598298192024230957E-01 + 1.169900298118591309E-01 + 5.297142267227172852E-02 + 2.107143402099609375E-02 + 4.615061283111572266E-01 + 3.940517306327819824E-01 + 7.877159714698791504E-01 + 7.580015063285827637E-01 + 3.734228014945983887E-01 + 7.390618324279785156E-01 + 3.480343818664550781E-01 + 8.466496467590332031E-01 + 6.553828716278076172E-03 + 9.507867097854614258E-01 + 7.197238802909851074E-01 + 7.813226580619812012E-01 + 6.804805994033813477E-01 + 5.238857865333557129E-01 + 7.511933445930480957E-01 + 1.082373261451721191E-01 + 5.921149253845214844E-02 + 6.590234637260437012E-01 + 7.927282452583312988E-01 + 4.900326728820800781E-01 + 3.750746250152587891E-01 + 5.806328058242797852E-01 + 2.057055234909057617E-01 + 3.940787315368652344E-01 + 1.427263021469116211E-01 + 1.700934767723083496E-01 + 2.089284062385559082E-01 + 6.350821256637573242E-01 + 6.517821550369262695E-02 + 4.658085107803344727E-02 + 9.250823259353637695E-01 + 6.008772850036621094E-01 + 2.942517995834350586E-01 + 3.311378955841064453E-01 + 4.417920112609863281E-01 + 1.949384212493896484E-01 + 2.040863037109375000E-04 + 7.779844403266906738E-01 + 4.916553497314453125E-01 + 9.791240692138671875E-01 + 9.778921008110046387E-01 + 2.911995053291320801E-01 + 6.525558233261108398E-02 + 2.369260787963867188E-02 + 9.269915223121643066E-01 + 6.460299491882324219E-01 + 3.313926458358764648E-01 + 4.450349807739257812E-01 + 7.245312333106994629E-01 + 2.393353581428527832E-01 + 9.684385061264038086E-01 + 1.439757347106933594E-01 + 8.326154351234436035E-01 + 3.312909603118896484E-02 + 5.534475445747375488E-01 + 7.399415373802185059E-01 + 7.359741330146789551E-01 + 9.786790609359741211E-01 + 1.654114723205566406E-01 + 2.050748467445373535E-01 + 1.061211228370666504E-01 + 5.562924742698669434E-01 + 7.017590999603271484E-01 + 6.557359099388122559E-01 + 4.089705944061279297E-01 + 4.779439568519592285E-01 + 7.703125476837158203E-02 + 3.746843338012695312E-02 + 2.341129779815673828E-01 + 1.830524206161499023E-01 + 4.638803601264953613E-01 + 1.454436779022216797E-01 + 4.543405771255493164E-01 + 2.956671714782714844E-01 + 9.017341732978820801E-01 + 7.335957884788513184E-01 + 7.725328207015991211E-02 + 6.831746101379394531E-01 + 6.531952619552612305E-01 + 3.552389144897460938E-02 + 3.950842618942260742E-01 + 1.727007031440734863E-01 + 2.279471755027770996E-01 + 5.800778269767761230E-01 + 8.710973262786865234E-01 + 7.593108415603637695E-01 + 9.735066890716552734E-01 + 2.186708450317382812E-01 + 1.033310294151306152E-01 + 7.005115747451782227E-01 + 9.468967318534851074E-01 + 3.056662082672119141E-01 + 1.588653326034545898E-01 + 7.416737079620361328E-01 + 1.976717710494995117E-01 + 9.611002802848815918E-01 + 4.915819168090820312E-01 + 8.916534781455993652E-01 + 5.037393569946289062E-01 + 8.046385645866394043E-01 + 2.858354449272155762E-01 + 9.457237720489501953E-01 + 2.020667791366577148E-01 + 8.402631878852844238E-01 + 2.816766500473022461E-02 + 9.668791294097900391E-01 + 8.547085523605346680E-01 + 5.551021695137023926E-01 + 1.292154192924499512E-01 + 2.560232877731323242E-01 + 5.537486076354980469E-02 + 6.203734874725341797E-01 + 9.584124088287353516E-01 + 5.616529583930969238E-01 + 9.391269683837890625E-01 + 5.043013691902160645E-01 + 7.001060843467712402E-01 + 1.691412925720214844E-01 + 6.291747093200683594E-03 + 7.562092542648315430E-01 + 3.943994641304016113E-01 + 5.531762838363647461E-01 + 6.382955312728881836E-01 + 6.433405280113220215E-01 + 1.086770296096801758E-01 + 7.935516834259033203E-01 + 6.371185779571533203E-01 + 2.580217123031616211E-01 + 2.576539516448974609E-01 + 2.650761008262634277E-01 + 7.309481501579284668E-01 + 4.778282046318054199E-01 + 6.400910615921020508E-01 + 4.064569473266601562E-01 + 1.423516273498535156E-01 + 4.225293993949890137E-01 + 5.597608685493469238E-01 + 8.222801089286804199E-01 + 5.105485320091247559E-01 + 8.372119069099426270E-01 + 4.213333129882812500E-02 + 1.725095510482788086E-01 + 9.016937613487243652E-01 + 5.755394697189331055E-02 + 3.079110383987426758E-02 + 5.016133785247802734E-01 + 3.329215645790100098E-01 + 3.447541594505310059E-01 + 6.308833956718444824E-01 + 3.969710469245910645E-01 + 4.467506408691406250E-01 + 9.549680352210998535E-01 + 7.790333628654479980E-01 + 8.850967884063720703E-02 + 8.277136087417602539E-01 + 9.982889890670776367E-01 + 7.511562108993530273E-02 + 8.157848715782165527E-01 + 4.296670556068420410E-01 + 2.263054847717285156E-01 + 5.301100015640258789E-01 + 3.952301740646362305E-01 + 1.807636022567749023E-02 + 5.887618660926818848E-01 + 1.576281785964965820E-01 + 1.968342661857604980E-01 + 6.360838413238525391E-01 + 1.051577329635620117E-01 + 3.284974098205566406E-01 + 1.933674216270446777E-01 + 4.998063445091247559E-01 + 8.617377281188964844E-02 + 6.203814744949340820E-01 + 6.874797344207763672E-01 + 5.708938837051391602E-01 + 7.383300662040710449E-01 + 7.384982705116271973E-01 + 1.520532369613647461E-02 + 6.891275644302368164E-01 + 5.514301657676696777E-01 + 4.432645440101623535E-01 + 1.077736020088195801E-01 + 3.930000662803649902E-01 + 6.871307492256164551E-01 + 4.927554130554199219E-01 + 3.337247967720031738E-01 + 3.335596919059753418E-01 + 2.275886535644531250E-01 + 2.815794944763183594E-01 + 7.034737467765808105E-01 + 7.612187862396240234E-01 + 6.940495371818542480E-01 + 7.160603404045104980E-01 + 2.467799186706542969E-01 + 5.561991930007934570E-01 + 1.498036980628967285E-01 + 3.861830830574035645E-01 + 9.108766913414001465E-01 + 3.078830242156982422E-01 + 2.485322952270507812E-02 + 6.997172832489013672E-01 + 9.242142438888549805E-01 + 5.876084566116333008E-01 + 5.963197946548461914E-01 + 2.433813214302062988E-01 + 1.756093502044677734E-01 + 8.467180728912353516E-01 + 1.856940388679504395E-01 + 8.568118214607238770E-01 + 4.264738559722900391E-01 + 4.063290953636169434E-01 + 8.207863569259643555E-02 + 2.449071407318115234E-01 + 3.111298084259033203E-01 + 3.239251971244812012E-01 + 2.996969223022460938E-01 + 6.135403513908386230E-01 + 3.226818442344665527E-01 + 3.410735726356506348E-01 + 4.758971333503723145E-01 + 2.179586887359619141E-02 + 1.274992823600769043E-01 + 1.194398403167724609E-01 + 3.613212108612060547E-01 + 6.328171491622924805E-02 + 4.556334018707275391E-02 + 8.816381692886352539E-01 + 1.272323131561279297E-01 + 9.572950005531311035E-01 + 5.076960921287536621E-01 + 7.426619529724121094E-01 + 7.144636511802673340E-01 + 3.502577543258666992E-01 + 2.805447578430175781E-01 + 9.289690256118774414E-01 + 5.725755095481872559E-01 + 9.921143054962158203E-01 + 3.360521793365478516E-02 + 4.673950672149658203E-01 + 1.365391612052917480E-01 + 5.056279897689819336E-02 + 4.470093846321105957E-01 + 9.920528531074523926E-01 + 2.951350808143615723E-01 + 2.437037825584411621E-01 + 4.851042032241821289E-01 + 3.138793706893920898E-01 + 4.895071983337402344E-01 + 5.169933438301086426E-01 + 8.346859812736511230E-01 + 9.870507717132568359E-01 + 6.881815791130065918E-01 + 3.457273840904235840E-01 + 3.736832141876220703E-01 + 8.985573053359985352E-02 + 6.553300619125366211E-01 + 6.378017067909240723E-01 + 7.556281685829162598E-01 + 7.712590694427490234E-02 + 4.728116989135742188E-01 + 6.069622635841369629E-01 + 1.898884177207946777E-01 + 5.453434586524963379E-01 + 3.162462115287780762E-01 + 8.451598882675170898E-01 + 7.125442624092102051E-01 + 2.941304445266723633E-01 + 2.968885898590087891E-01 + 7.818023562431335449E-01 + 8.764863610267639160E-01 + 6.648290753364562988E-01 + 8.083404898643493652E-01 + 1.909720897674560547E-01 + 8.514996767044067383E-01 + 9.090722799301147461E-01 + 8.931341767311096191E-01 + 8.337798714637756348E-01 + 6.499125361442565918E-01 + 5.272166132926940918E-01 + 9.311231970787048340E-01 + 1.497847437858581543E-01 + 1.845264434814453125E-02 + 7.171984314918518066E-01 + 5.862256884574890137E-01 + 4.374468326568603516E-01 + 9.722182154655456543E-01 + 4.888801574707031250E-01 + 6.285742521286010742E-01 + 2.689757943153381348E-01 + 9.538643360137939453E-01 + 1.944292783737182617E-01 + 1.537016034126281738E-01 + 2.895395755767822266E-01 + 3.081302046775817871E-01 + 1.205853819847106934E-01 + 2.078623771667480469E-01 + 9.426574110984802246E-01 + 5.332024097442626953E-01 + 4.038886427879333496E-01 + 3.940288424491882324E-01 + 9.483260512351989746E-01 + 8.971934318542480469E-01 + 1.624715924263000488E-01 + 7.117356061935424805E-01 + 4.760081171989440918E-01 + 1.055457592010498047E-01 + 1.351742744445800781E-01 + 4.323320984840393066E-01 + 8.349435329437255859E-01 + 8.523767590522766113E-01 + 6.639648079872131348E-01 + 7.545369863510131836E-01 + 2.647894620895385742E-02 + 3.778328299522399902E-01 + 5.907873511314392090E-01 + 8.190065622329711914E-01 + 3.263605237007141113E-01 + 6.595271825790405273E-01 + 5.504130721092224121E-01 + 1.393979191780090332E-01 + 1.128642559051513672E-01 + 3.102847933769226074E-01 + 8.859957456588745117E-01 + 9.815894961357116699E-01 + 4.173044562339782715E-01 + 2.799938321113586426E-01 + 9.571614861488342285E-01 + 8.368170857429504395E-01 + 5.303204059600830078E-03 + 7.531464099884033203E-03 + 8.603001832962036133E-01 + 2.206304073333740234E-01 + 3.659996390342712402E-01 + 8.280466794967651367E-01 + 9.387932419776916504E-01 + 9.497202038764953613E-01 + 7.801596522331237793E-01 + 4.705958962440490723E-01 + 8.262287974357604980E-01 + 5.694180727005004883E-02 + 6.158412098884582520E-01 + 9.879508018493652344E-01 + 4.121869802474975586E-02 + 1.369426846504211426E-01 + 3.024709224700927734E-01 + 9.841763973236083984E-02 + 9.087711572647094727E-02 + 8.013295531272888184E-01 + 3.067253232002258301E-01 + 5.220333337783813477E-01 + 2.262353897094726562E-03 + 1.194556951522827148E-01 + 2.936140894889831543E-01 + 6.570785045623779297E-01 + 5.465403795242309570E-01 + 9.732910394668579102E-01 + 6.767711043357849121E-01 + 1.519668102264404297E-01 + 8.396891355514526367E-01 + 7.252788543701171875E-01 + 4.142540097236633301E-01 + 5.941158533096313477E-02 + 5.374273061752319336E-01 + 7.397173643112182617E-01 + 9.568265080451965332E-01 + 4.072886705398559570E-02 + 1.215826869010925293E-01 + 1.050620079040527344E-01 + 9.810737371444702148E-01 + 2.133408188819885254E-01 + 9.774543642997741699E-01 + 4.039326310157775879E-01 + 4.704433679580688477E-01 + 3.225092291831970215E-01 + 5.737705230712890625E-01 + 8.548136353492736816E-01 + 3.937377333641052246E-01 + 8.665246963500976562E-01 + 8.474469184875488281E-01 + 3.202146291732788086E-01 + 5.563982129096984863E-01 + 3.083113431930541992E-01 + 9.273999929428100586E-02 + 6.263207197189331055E-01 + 3.431957364082336426E-01 + 1.390616893768310547E-01 + 8.950214982032775879E-01 + 8.765666484832763672E-01 + 2.191969156265258789E-01 + 9.045130610466003418E-01 + 8.484311699867248535E-01 + 1.215440034866333008E-01 + 4.413250684738159180E-01 + 2.139612436294555664E-01 + 2.244156599044799805E-02 + 6.468727588653564453E-01 + 2.252669334411621094E-01 + 1.000393033027648926E-01 + 2.649238705635070801E-01 + 6.757922172546386719E-01 + 6.399487257003784180E-01 + 2.038690447807312012E-01 + 8.908739686012268066E-01 + 7.750102281570434570E-01 + 7.440702915191650391E-01 + 8.978569507598876953E-02 + 4.729643464088439941E-01 + 7.399089336395263672E-01 + 3.433559536933898926E-01 + 5.864985585212707520E-01 + 5.236818790435791016E-01 + 1.332044601440429688E-03 + 9.189115762710571289E-01 + 5.172320604324340820E-01 + 5.451206564903259277E-01 + 1.843951940536499023E-01 + 4.592138528823852539E-01 + 5.007722377777099609E-01 + 4.394767880439758301E-01 + 3.560523986816406250E-01 + 3.683551549911499023E-01 + 2.549258470535278320E-01 + 8.874230980873107910E-01 + 3.920102119445800781E-01 + 1.259968280792236328E-01 + 9.305147528648376465E-01 + 4.564863443374633789E-01 + 4.699277877807617188E-02 + 4.544094800949096680E-01 + 3.817419409751892090E-01 + 6.985458731651306152E-01 + 9.279455542564392090E-01 + 1.239364147186279297E-01 + 8.983756303787231445E-01 + 4.824787378311157227E-01 + 9.679875373840332031E-01 + 2.537202835083007812E-02 + 3.547674417495727539E-01 + 9.920417070388793945E-01 + 5.847901105880737305E-02 + 3.306851983070373535E-01 + 3.178235888481140137E-01 + 8.262156844139099121E-01 + 8.610780835151672363E-01 + 8.945834040641784668E-01 + 7.512500286102294922E-01 + 1.199059486389160156E-01 + 5.758817195892333984E-01 + 1.019028425216674805E-01 + 3.765898346900939941E-01 + 5.656523704528808594E-01 + 4.768993258476257324E-01 + 3.170548081398010254E-01 + 4.702888131141662598E-01 + 9.398104548454284668E-01 + 2.911276817321777344E-01 + 3.116170167922973633E-01 + 7.088754773139953613E-01 + 1.634885668754577637E-01 + 3.675746917724609375E-02 + 3.545011878013610840E-01 + 7.731991410255432129E-01 + 7.754997611045837402E-01 + 2.343184351921081543E-01 + 2.850128412246704102E-01 + 4.559369683265686035E-01 + 3.662975430488586426E-01 + 9.822976589202880859E-01 + 4.978859424591064453E-02 + 2.601419091224670410E-01 + 3.549700379371643066E-01 + 6.415685415267944336E-01 + 2.807420492172241211E-02 + 7.378404140472412109E-01 + 8.104634881019592285E-01 + 5.280268192291259766E-01 + 6.023998260498046875E-01 + 4.959311485290527344E-01 + 9.532778263092041016E-01 + 6.070244908332824707E-01 + 7.811043262481689453E-01 + 5.208690762519836426E-01 + 8.251363039016723633E-02 + 7.244722247123718262E-01 + 3.730707168579101562E-01 + 4.029822349548339844E-01 + 3.019137978553771973E-01 + 2.908439636230468750E-01 + 2.813078761100769043E-01 + 4.864562749862670898E-01 + 9.974241256713867188E-01 + 5.494968295097351074E-01 + 3.088122606277465820E-01 + 2.670245766639709473E-01 + 6.780195236206054688E-01 + 5.158265233039855957E-01 + 5.821710824966430664E-02 + 4.648300409317016602E-01 + 2.222260832786560059E-01 + 3.731739521026611328E-02 + 9.750714898109436035E-01 + 5.636875033378601074E-01 + 1.386848688125610352E-01 + 5.576618313789367676E-01 + 5.922789573669433594E-01 + 9.221653342247009277E-01 + 8.452888131141662598E-01 + 4.005950689315795898E-02 + 3.276680111885070801E-01 + 1.162881255149841309E-01 + 7.507902383804321289E-02 + 9.132081270217895508E-01 + 3.085594177246093750E-01 + 3.534868359565734863E-01 + 4.332539439201354980E-01 + 8.037678003311157227E-01 + 1.562860012054443359E-01 + 4.248982071876525879E-01 + 1.869632601737976074E-01 + 4.946227669715881348E-01 + 3.816426396369934082E-01 + 8.212133049964904785E-01 + 2.455874681472778320E-01 + 8.125606179237365723E-01 + 7.657223939895629883E-02 + 7.688208818435668945E-01 + 8.395958542823791504E-01 + 5.225338339805603027E-01 + 3.070169687271118164E-02 + 8.083621859550476074E-01 + 7.489848732948303223E-01 + 1.938198208808898926E-01 + 2.324026226997375488E-01 + 7.519956827163696289E-01 + 7.105655670166015625E-01 + 9.892982244491577148E-02 + 6.959186792373657227E-01 + 7.095294594764709473E-01 + 3.394097089767456055E-01 + 1.511365175247192383E-02 + 3.389002680778503418E-01 + 4.020434617996215820E-02 + 1.899682283401489258E-01 + 3.710829019546508789E-01 + 2.735960483551025391E-01 + 1.822121143341064453E-01 + 9.494400024414062500E-02 + 3.521921038627624512E-01 + 6.302368640899658203E-02 + 9.751983284950256348E-01 + 1.597043871879577637E-01 + 7.491469383239746094E-02 + 2.725702524185180664E-02 + 6.716904044151306152E-01 + 8.023963570594787598E-01 + 4.907806515693664551E-01 + 8.162124752998352051E-01 + 7.796359062194824219E-02 + 5.406332612037658691E-01 + 3.907642364501953125E-01 + 3.751899600028991699E-01 + 7.595849037170410156E-01 + 4.421982765197753906E-01 + 7.813171744346618652E-01 + 9.779089093208312988E-01 + 8.311776518821716309E-01 + 2.209126949310302734E-02 + 2.018328309059143066E-01 + 8.677860498428344727E-01 + 2.998394370079040527E-01 + 6.714515089988708496E-01 + 9.045221209526062012E-01 + 8.489714264869689941E-01 + 3.928822278976440430E-02 + 4.987758994102478027E-01 + 5.655466318130493164E-01 + 4.845631718635559082E-01 + 3.585696816444396973E-01 + 8.659842610359191895E-01 + 2.974628210067749023E-01 + 1.432786583900451660E-01 + 8.593082427978515625E-02 + 8.059169650077819824E-01 + 9.980446100234985352E-02 + 6.915006637573242188E-01 + 1.964647173881530762E-01 + 7.834249138832092285E-01 + 5.677908658981323242E-01 + 6.649090051651000977E-01 + 6.386469006538391113E-01 + 2.079988718032836914E-01 + 4.404944777488708496E-01 + 7.770806550979614258E-02 + 6.181640028953552246E-01 + 9.903419613838195801E-01 + 4.891291856765747070E-01 + 1.879453659057617188E-02 + 9.710791110992431641E-01 + 6.163086295127868652E-01 + 4.355804324150085449E-01 + 3.276294469833374023E-02 + 1.779203414916992188E-01 + 6.198714971542358398E-01 + 3.826227188110351562E-01 + 5.312540531158447266E-01 + 8.948875069618225098E-01 + 5.656402707099914551E-01 + 9.011105298995971680E-01 + 2.528045773506164551E-01 + 3.999003767967224121E-01 + 2.716904878616333008E-02 + 7.649087309837341309E-01 + 3.911514282226562500E-01 + 1.608361005783081055E-01 + 1.894429326057434082E-01 + 2.972227334976196289E-02 + 1.644169688224792480E-01 + 3.137532472610473633E-01 + 5.350365638732910156E-01 + 7.504028677940368652E-01 + 2.207021117210388184E-01 + 8.157452344894409180E-01 + 5.066046118736267090E-01 + 2.213199734687805176E-01 + 3.297718763351440430E-01 + 4.579192399978637695E-01 + 7.259607911109924316E-01 + 5.600997209548950195E-01 + 1.693272590637207031E-01 + 4.369892477989196777E-01 + 6.820487976074218750E-02 + 7.331421971321105957E-01 + 9.330936670303344727E-01 + 1.789886951446533203E-01 + 6.372633576393127441E-01 + 6.318479180335998535E-01 + 7.196345925331115723E-01 + 9.379795193672180176E-01 + 8.378937840461730957E-01 + 3.485375642776489258E-02 + 6.118700504302978516E-01 + 9.322028756141662598E-01 + 1.223350763320922852E-01 + 2.278879284858703613E-01 + 2.625860571861267090E-01 + 1.436567306518554688E-02 + 4.009380936622619629E-01 + 7.895591259002685547E-01 + 4.761503338813781738E-01 + 8.117644786834716797E-01 + 2.678970098495483398E-01 + 5.087362527847290039E-01 + 1.402604579925537109E-02 + 9.278094768524169922E-01 + 9.174858927726745605E-01 + 3.767726421356201172E-01 + 4.285947084426879883E-01 + 8.596947789192199707E-01 + 6.550443172454833984E-01 + 8.195642828941345215E-01 + 2.131556868553161621E-01 + 5.671216845512390137E-01 + 1.016116142272949219E-02 + 8.728009462356567383E-01 + 5.011579394340515137E-01 + 1.851249933242797852E-01 + 4.226993918418884277E-01 + 9.821252822875976562E-01 + 2.018068432807922363E-01 + 3.350085020065307617E-02 + 5.906205773353576660E-01 + 4.073497653007507324E-01 + 7.302747368812561035E-01 + 3.887923955917358398E-01 + 4.908049702644348145E-01 + 3.583782315254211426E-01 + 3.511472344398498535E-01 + 4.476558566093444824E-01 + 3.929472565650939941E-01 + 9.903516769409179688E-01 + 6.712522506713867188E-01 + 6.420906782150268555E-01 + 8.047132492065429688E-01 + 6.578242182731628418E-01 + 3.004813194274902344E-01 + 4.083287715911865234E-02 + 8.176341652870178223E-01 + 8.096711635589599609E-01 + 1.004613637924194336E-01 + 9.562410116195678711E-01 + 2.671641111373901367E-01 + 7.860820293426513672E-01 + 8.009535074234008789E-01 + 3.961908817291259766E-02 + 9.201765656471252441E-01 + 9.959411621093750000E-01 + 1.706097722053527832E-01 + 2.854683995246887207E-01 + 4.161425828933715820E-01 + 5.516975522041320801E-01 + 1.437093615531921387E-01 + 5.198638439178466797E-01 + 9.966199398040771484E-01 + 6.665564179420471191E-01 + 4.868978857994079590E-01 + 3.770881295204162598E-01 + 6.190615892410278320E-02 + 9.964978098869323730E-01 + 6.354658007621765137E-01 + 9.159593582153320312E-01 + 9.361669421195983887E-01 + 6.956597566604614258E-01 + 8.372844457626342773E-01 + 5.453764200210571289E-01 + 7.165966033935546875E-01 + 1.834834814071655273E-01 + 8.188312649726867676E-01 + 3.604918718338012695E-01 + 8.602607846260070801E-01 + 5.597052574157714844E-01 + 2.822681665420532227E-01 + 4.116302728652954102E-01 + 5.360730290412902832E-01 + 8.753424882888793945E-02 + 1.465684771537780762E-01 + 1.140383481979370117E-01 + 8.880397677421569824E-01 + 5.131208300590515137E-01 + 7.077603340148925781E-01 + 9.809676408767700195E-01 + 9.489161372184753418E-01 + 8.102153539657592773E-01 + 8.605180978775024414E-01 + 4.555655717849731445E-01 + 8.320031166076660156E-01 + 7.443161010742187500E-01 + 8.894142508506774902E-01 + 9.154248237609863281E-01 + 1.166054606437683105E-01 + 7.452096939086914062E-01 + 1.389155983924865723E-01 + 8.120894432067871094E-01 + 8.157553076744079590E-01 + 6.815155744552612305E-01 + 9.737634062767028809E-01 + 2.251101136207580566E-01 + 5.901526212692260742E-01 + 9.898244142532348633E-01 + 7.847535610198974609E-02 + 3.903226256370544434E-01 + 9.520877003669738770E-01 + 5.211734771728515625E-02 + 7.765448093414306641E-01 + 5.700986981391906738E-01 + 2.950941920280456543E-01 + 6.940031051635742188E-01 + 3.211775422096252441E-01 + 8.544343113899230957E-01 + 4.158423542976379395E-01 + 7.350416779518127441E-01 + 7.248932123184204102E-01 + 8.547000288963317871E-01 + 3.595066070556640625E-02 + 8.771050572395324707E-01 + 3.032582402229309082E-01 + 9.440244436264038086E-01 + 4.553504586219787598E-01 + 2.196773886680603027E-01 + 6.421450376510620117E-01 + 6.627835631370544434E-01 + 1.413173675537109375E-01 + 6.849007606506347656E-01 + 7.040901184082031250E-01 + 3.038220405578613281E-01 + 4.857683181762695312E-01 + 9.128067493438720703E-01 + 5.629253387451171875E-01 + 6.136361956596374512E-01 + 8.679228425025939941E-01 + 1.607564687728881836E-01 + 2.306283116340637207E-01 + 5.231076478958129883E-01 + 5.142893195152282715E-01 + 4.973930716514587402E-01 + 2.332361340522766113E-01 + 8.714401721954345703E-02 + 4.316213726997375488E-01 + 3.954713940620422363E-01 + 3.358896374702453613E-01 + 2.283213138580322266E-01 + 7.730222940444946289E-01 + 5.012404918670654297E-01 + 2.806254029273986816E-01 + 7.790272831916809082E-01 + 5.445126295089721680E-01 + 4.365795850753784180E-01 + 7.637887597084045410E-01 + 6.519146561622619629E-01 + 3.175201416015625000E-01 + 2.241945266723632812E-02 + 5.269354581832885742E-02 + 2.436897754669189453E-01 + 8.053026795387268066E-01 + 8.429066538810729980E-01 + 8.285550475120544434E-01 + 6.531442999839782715E-01 + 6.712293624877929688E-02 + 5.843728780746459961E-02 + 6.913422346115112305E-01 + 6.277040243148803711E-01 + 5.983276963233947754E-01 + 8.762966990470886230E-01 + 6.082015633583068848E-01 + 6.152663230895996094E-01 + 9.642177820205688477E-02 + 2.538322806358337402E-01 + 4.559133052825927734E-01 + 1.288657784461975098E-01 + 9.338145852088928223E-01 + 3.180583119392395020E-01 + 4.891866445541381836E-02 + 2.776374816894531250E-01 + 6.580526232719421387E-01 + 9.472588300704956055E-01 + 1.845852732658386230E-01 + 8.445581197738647461E-01 + 7.309756875038146973E-01 + 4.686791300773620605E-01 + 5.806040763854980469E-02 + 9.974706768989562988E-01 + 1.569666862487792969E-01 + 3.281093835830688477E-01 + 4.055566787719726562E-01 + 1.243721842765808105E-01 + 5.536288022994995117E-01 + 7.179511189460754395E-01 + 5.591466426849365234E-01 + 8.325062394142150879E-01 + 6.240525841712951660E-01 + 7.543014883995056152E-01 + 1.884830594062805176E-01 + 2.746114730834960938E-01 + 9.334456324577331543E-01 + 1.247040033340454102E-01 + 3.221389651298522949E-01 + 7.266925573348999023E-01 + 2.631206512451171875E-01 + 3.308569192886352539E-01 + 6.575359702110290527E-01 + 1.926878094673156738E-01 + 4.057616591453552246E-01 + 6.821143627166748047E-02 + 7.977487444877624512E-01 + 9.864526391029357910E-01 + 8.529037237167358398E-01 + 5.414202213287353516E-01 + 9.429594874382019043E-01 + 9.797889590263366699E-01 + 2.101873755455017090E-01 + 4.561111927032470703E-01 + 5.135341286659240723E-01 + 1.565817594528198242E-01 + 7.185690999031066895E-01 + 3.988916277885437012E-01 + 8.631807565689086914E-02 + 7.226245999336242676E-01 + 4.187757372856140137E-01 + 4.708289504051208496E-01 + 9.587776660919189453E-01 + 4.243857264518737793E-01 + 8.708665370941162109E-01 + 9.594635367393493652E-01 + 5.324662923812866211E-01 + 9.534628987312316895E-01 + 4.206444025039672852E-01 + 3.669248819351196289E-01 + 5.253381133079528809E-01 + 2.148815989494323730E-01 + 4.023849964141845703E-02 + 7.497431635856628418E-01 + 7.520542144775390625E-01 + 8.600025773048400879E-01 + 4.821792244911193848E-01 + 6.254085302352905273E-01 + 6.168666481971740723E-01 + 7.685344815254211426E-01 + 2.492160797119140625E-01 + 4.479670524597167969E-02 + 8.440641164779663086E-01 + 1.504468321800231934E-01 + 8.797941803932189941E-01 + 1.186918616294860840E-01 + 9.671484827995300293E-01 + 6.615723371505737305E-01 + 5.525060892105102539E-01 + 3.531488180160522461E-01 + 1.774770021438598633E-01 + 3.792504668235778809E-01 + 8.681718111038208008E-01 + 4.438734054565429688E-02 + 6.357119679450988770E-01 + 6.275337934494018555E-02 + 7.703476548194885254E-01 + 4.850255250930786133E-01 + 4.992306232452392578E-02 + 6.982311010360717773E-01 + 9.161013364791870117E-01 + 8.517789840698242188E-01 + 8.351899981498718262E-01 + 5.140627622604370117E-01 + 3.035934567451477051E-01 + 8.413239717483520508E-01 + 9.009503126144409180E-01 + 1.364921927452087402E-01 + 2.585334181785583496E-01 + 5.084149837493896484E-01 + 8.882731199264526367E-02 + 4.203230142593383789E-02 + 8.155542612075805664E-01 + 8.501095175743103027E-01 + 5.405201911926269531E-01 + 8.599425554275512695E-01 + 2.716689109802246094E-01 + 9.139201045036315918E-01 + 3.701150417327880859E-02 + 6.969690918922424316E-01 + 5.974791049957275391E-01 + 3.722739815711975098E-01 + 7.267934679985046387E-01 + 8.859097957611083984E-02 + 2.605441808700561523E-01 + 5.421736240386962891E-01 + 4.170157909393310547E-01 + 3.381186723709106445E-02 + 4.595953226089477539E-01 + 2.167727947235107422E-01 + 4.671331048011779785E-01 + 6.344077587127685547E-01 + 9.711883664131164551E-01 + 8.129709959030151367E-02 + 9.421541094779968262E-01 + 7.931061983108520508E-01 + 1.409037709236145020E-01 + 5.655288696289062500E-03 + 1.859778165817260742E-01 + 4.689397811889648438E-01 + 6.297478675842285156E-01 + 9.182770252227783203E-01 + 2.349592447280883789E-01 + 8.825904130935668945E-01 + 7.423009276390075684E-01 + 1.309015154838562012E-01 + 4.886942505836486816E-01 + 4.413054585456848145E-01 + 8.283669948577880859E-01 + 9.918762445449829102E-01 + 2.322171330451965332E-01 + 1.232303380966186523E-01 + 2.463829517364501953E-01 + 3.768627047538757324E-01 + 4.848357439041137695E-01 + 2.843598127365112305E-01 + 9.052500724792480469E-01 + 7.547140121459960938E-01 + 5.469688773155212402E-01 + 8.895800113677978516E-01 + 2.612757682800292969E-01 + 3.216382265090942383E-01 + 9.619907140731811523E-01 + 9.202672243118286133E-01 + 7.479869723320007324E-01 + 6.995968818664550781E-01 + 2.392379641532897949E-01 + 6.919425725936889648E-01 + 9.043745398521423340E-01 + 1.876633763313293457E-01 + 5.007112026214599609E-02 + 1.844451427459716797E-01 + 8.150460720062255859E-01 + 5.535324215888977051E-01 + 8.381946086883544922E-01 + 9.025961160659790039E-01 + 8.895766139030456543E-01 + 4.471694231033325195E-01 + 8.532714843750000000E-01 + 4.869364500045776367E-01 + 9.760779142379760742E-01 + 4.679649472236633301E-01 + 2.120496630668640137E-01 + 6.939160227775573730E-01 + 8.573145866394042969E-01 + 9.584248065948486328E-03 + 9.612739086151123047E-03 + 7.565414905548095703E-02 + 8.549761772155761719E-02 + 5.719369649887084961E-01 + 4.551016688346862793E-01 + 8.133230209350585938E-01 + 5.593155622482299805E-01 + 7.352803945541381836E-01 + 6.537718176841735840E-01 + 6.882010102272033691E-01 + 7.697007060050964355E-01 + 2.571492791175842285E-01 + 9.844048023223876953E-01 + 3.072930574417114258E-01 + 4.350997805595397949E-01 + 6.914436221122741699E-01 + 4.863725304603576660E-01 + 8.739840984344482422E-02 + 5.782475471496582031E-01 + 2.313976883888244629E-01 + 3.260715603828430176E-01 + 8.665922284126281738E-01 + 1.657687425613403320E-01 + 2.277469635009765625E-02 + 8.560975790023803711E-01 + 3.302193284034729004E-01 + 5.707930326461791992E-01 + 9.420878887176513672E-01 + 2.021003365516662598E-01 + 6.794999241828918457E-01 + 7.389476299285888672E-01 + 3.722684979438781738E-01 + 2.299075722694396973E-01 + 9.668475985527038574E-01 + 6.401853561401367188E-01 + 7.447114586830139160E-01 + 8.093172311782836914E-01 + 2.533311247825622559E-01 + 6.751464605331420898E-01 + 6.999295949935913086E-02 + 1.243425011634826660E-01 + 8.655347824096679688E-01 + 4.191714525222778320E-01 + 7.711524367332458496E-01 + 7.914399504661560059E-01 + 9.508929848670959473E-01 + 1.956019401550292969E-01 + 7.969809770584106445E-01 + 5.340217351913452148E-01 + 4.931727647781372070E-01 + 9.928160905838012695E-02 + 3.322729468345642090E-01 + 7.160001397132873535E-01 + 4.149550199508666992E-01 + 3.499179482460021973E-01 + 5.283282399177551270E-01 + 3.569822311401367188E-01 + 9.137907624244689941E-01 + 6.135773658752441406E-02 + 8.389441967010498047E-01 + 9.708539843559265137E-01 + 2.273288369178771973E-01 + 2.655622959136962891E-01 + 3.081048130989074707E-01 + 8.426327705383300781E-01 + 9.666787385940551758E-01 + 4.833580851554870605E-01 + 9.856244325637817383E-01 + 5.438023209571838379E-01 + 9.199893474578857422E-02 + 2.103791832923889160E-01 + 4.553661942481994629E-01 + 8.693330883979797363E-01 + 1.543931365013122559E-01 + 8.651682138442993164E-01 + 2.905327081680297852E-01 + 6.302130222320556641E-01 + 9.287106990814208984E-02 + 3.875901103019714355E-01 + 7.315431833267211914E-01 + 5.568976402282714844E-01 + 2.728886604309082031E-01 + 2.616749405860900879E-01 + 8.754804134368896484E-01 + 2.249962687492370605E-01 + 9.590148925781250000E-01 + 5.960763692855834961E-01 + 7.796318531036376953E-01 + 8.968929052352905273E-01 + 3.590869307518005371E-01 + 5.046017169952392578E-01 + 9.379951357841491699E-01 + 2.651867270469665527E-01 + 4.942678809165954590E-01 + 7.155919671058654785E-01 + 2.514174580574035645E-01 + 9.927270412445068359E-01 + 1.846873760223388672E-01 + 8.944072723388671875E-01 + 6.276231408119201660E-01 + 6.160175800323486328E-01 + 6.705514192581176758E-01 + 3.174995183944702148E-01 + 2.563656568527221680E-01 + 7.985773682594299316E-01 + 7.631459832191467285E-01 + 6.376031041145324707E-01 + 1.401460170745849609E-02 + 9.902402162551879883E-01 + 1.033175587654113770E-01 + 5.783785581588745117E-01 + 3.443652391433715820E-02 + 7.697826623916625977E-02 + 3.929812908172607422E-01 + 7.437629699707031250E-01 + 4.518295526504516602E-01 + 7.215459346771240234E-01 + 9.740598797798156738E-01 + 7.097560167312622070E-02 diff --git a/test/spmm/vectors/x1.mtx b/test/spmm/vectors/x1.mtx new file mode 100644 index 00000000..d906978f --- /dev/null +++ b/test/spmm/vectors/x1.mtx @@ -0,0 +1,1142 @@ +%%MatrixMarket matrix array real general +% Positive vector +% + 1138 1 + 82 + 19 + 15 + 98 + 7 + 1 + 0 + 56 + 41 + 97 + 89 + 57 + 75 + 80 + 84 + 31 + 23 + 76 + 36 + 25 + 42 + 41 + 90 + 5 + 37 + 98 + 21 + 47 + 59 + 97 + 36 + 68 + 31 + 32 + 18 + 67 + 86 + 65 + 85 + 80 + 34 + 55 + 32 + 83 + 64 + 15 + 73 + 96 + 50 + 0 + 44 + 41 + 76 + 47 + 8 + 52 + 19 + 67 + 75 + 64 + 39 + 8 + 86 + 95 + 41 + 51 + 61 + 60 + 81 + 3 + 9 + 29 + 93 + 67 + 52 + 41 + 16 + 79 + 16 + 99 + 9 + 62 + 70 + 0 + 14 + 6 + 39 + 51 + 36 + 91 + 24 + 54 + 84 + 14 + 57 + 80 + 38 + 5 + 33 + 75 + 54 + 30 + 1 + 53 + 35 + 74 + 89 + 24 + 98 + 38 + 78 + 75 + 52 + 32 + 64 + 76 + 21 + 72 + 65 + 11 + 54 + 27 + 36 + 36 + 66 + 62 + 23 + 89 + 77 + 96 + 4 + 70 + 22 + 31 + 4 + 1 + 37 + 50 + 30 + 40 + 22 + 89 + 50 + 92 + 63 + 49 + 11 + 44 + 7 + 87 + 54 + 61 + 37 + 53 + 21 + 74 + 10 + 94 + 74 + 59 + 38 + 34 + 48 + 71 + 60 + 87 + 75 + 16 + 85 + 69 + 44 + 86 + 88 + 44 + 76 + 25 + 93 + 24 + 93 + 72 + 55 + 68 + 68 + 31 + 16 + 6 + 43 + 10 + 79 + 90 + 63 + 51 + 43 + 75 + 54 + 49 + 87 + 63 + 33 + 66 + 65 + 65 + 62 + 43 + 64 + 36 + 19 + 66 + 27 + 75 + 70 + 18 + 81 + 79 + 15 + 56 + 39 + 8 + 70 + 91 + 79 + 56 + 79 + 93 + 6 + 76 + 68 + 89 + 1 + 89 + 35 + 99 + 47 + 13 + 25 + 15 + 38 + 64 + 51 + 58 + 92 + 64 + 64 + 7 + 67 + 26 + 60 + 58 + 27 + 79 + 12 + 63 + 62 + 64 + 31 + 57 + 75 + 51 + 95 + 19 + 97 + 84 + 76 + 52 + 59 + 5 + 5 + 72 + 73 + 57 + 95 + 64 + 15 + 77 + 85 + 52 + 64 + 17 + 31 + 73 + 73 + 17 + 29 + 58 + 38 + 16 + 6 + 15 + 72 + 79 + 70 + 10 + 9 + 66 + 12 + 60 + 53 + 57 + 96 + 97 + 89 + 26 + 0 + 22 + 1 + 40 + 2 + 97 + 88 + 68 + 61 + 40 + 69 + 91 + 71 + 91 + 94 + 48 + 33 + 29 + 61 + 33 + 27 + 95 + 97 + 76 + 64 + 83 + 88 + 53 + 73 + 81 + 9 + 22 + 63 + 72 + 98 + 19 + 6 + 13 + 56 + 33 + 89 + 3 + 73 + 97 + 41 + 43 + 37 + 13 + 47 + 92 + 6 + 47 + 43 + 83 + 42 + 91 + 26 + 16 + 8 + 49 + 84 + 93 + 47 + 46 + 88 + 37 + 90 + 39 + 59 + 53 + 79 + 69 + 17 + 60 + 56 + 92 + 36 + 55 + 98 + 87 + 66 + 67 + 62 + 19 + 4 + 68 + 3 + 90 + 45 + 91 + 20 + 53 + 75 + 65 + 98 + 15 + 28 + 52 + 1 + 70 + 52 + 75 + 73 + 84 + 89 + 92 + 16 + 93 + 9 + 30 + 19 + 53 + 59 + 72 + 14 + 60 + 27 + 77 + 23 + 42 + 50 + 73 + 28 + 47 + 20 + 25 + 42 + 22 + 16 + 23 + 20 + 36 + 5 + 74 + 76 + 28 + 30 + 36 + 10 + 95 + 50 + 66 + 63 + 31 + 69 + 92 + 86 + 9 + 44 + 91 + 96 + 0 + 44 + 5 + 57 + 17 + 84 + 37 + 57 + 14 + 5 + 46 + 88 + 29 + 93 + 5 + 48 + 71 + 85 + 48 + 95 + 85 + 51 + 11 + 43 + 83 + 11 + 74 + 31 + 8 + 81 + 87 + 3 + 10 + 24 + 41 + 5 + 84 + 63 + 55 + 62 + 63 + 4 + 26 + 59 + 90 + 84 + 26 + 44 + 32 + 16 + 24 + 77 + 78 + 43 + 50 + 44 + 58 + 30 + 10 + 80 + 42 + 31 + 18 + 61 + 10 + 66 + 89 + 51 + 0 + 52 + 34 + 59 + 76 + 18 + 35 + 50 + 9 + 56 + 79 + 74 + 37 + 82 + 51 + 84 + 44 + 64 + 2 + 88 + 24 + 73 + 19 + 85 + 8 + 20 + 53 + 10 + 57 + 24 + 87 + 89 + 80 + 84 + 79 + 28 + 39 + 8 + 40 + 12 + 40 + 41 + 94 + 60 + 83 + 66 + 86 + 34 + 39 + 28 + 62 + 97 + 26 + 30 + 30 + 26 + 4 + 80 + 55 + 80 + 85 + 9 + 92 + 28 + 40 + 38 + 12 + 12 + 95 + 26 + 41 + 58 + 1 + 61 + 99 + 83 + 27 + 37 + 42 + 26 + 41 + 56 + 38 + 72 + 0 + 4 + 68 + 47 + 85 + 34 + 88 + 60 + 83 + 25 + 50 + 26 + 52 + 62 + 74 + 42 + 95 + 81 + 86 + 42 + 36 + 58 + 94 + 75 + 48 + 4 + 10 + 50 + 62 + 4 + 59 + 92 + 19 + 39 + 84 + 33 + 68 + 12 + 25 + 36 + 44 + 33 + 88 + 31 + 85 + 78 + 54 + 3 + 43 + 98 + 92 + 56 + 0 + 36 + 90 + 92 + 44 + 32 + 56 + 51 + 21 + 20 + 7 + 73 + 80 + 17 + 81 + 44 + 42 + 63 + 85 + 76 + 26 + 77 + 52 + 21 + 96 + 76 + 53 + 28 + 64 + 25 + 93 + 68 + 15 + 45 + 44 + 30 + 12 + 68 + 6 + 97 + 64 + 6 + 5 + 13 + 44 + 16 + 66 + 88 + 68 + 0 + 73 + 86 + 80 + 99 + 52 + 75 + 82 + 69 + 20 + 11 + 98 + 77 + 60 + 12 + 42 + 27 + 72 + 86 + 60 + 30 + 96 + 51 + 77 + 40 + 89 + 87 + 41 + 87 + 57 + 76 + 34 + 40 + 35 + 34 + 59 + 25 + 27 + 85 + 27 + 10 + 85 + 35 + 80 + 14 + 26 + 91 + 74 + 97 + 76 + 26 + 3 + 37 + 52 + 15 + 94 + 72 + 52 + 29 + 28 + 45 + 53 + 71 + 3 + 98 + 91 + 59 + 85 + 26 + 12 + 56 + 1 + 10 + 49 + 7 + 80 + 62 + 12 + 27 + 4 + 47 + 41 + 44 + 50 + 94 + 33 + 72 + 8 + 29 + 84 + 62 + 98 + 82 + 8 + 26 + 48 + 53 + 92 + 71 + 40 + 14 + 36 + 50 + 3 + 93 + 11 + 7 + 29 + 39 + 44 + 12 + 37 + 16 + 55 + 5 + 27 + 30 + 72 + 21 + 73 + 88 + 69 + 19 + 88 + 94 + 87 + 46 + 57 + 25 + 79 + 81 + 65 + 23 + 40 + 83 + 53 + 82 + 1 + 22 + 70 + 49 + 61 + 85 + 53 + 53 + 51 + 11 + 23 + 65 + 35 + 66 + 66 + 51 + 74 + 63 + 70 + 3 + 98 + 96 + 90 + 32 + 53 + 90 + 70 + 60 + 60 + 67 + 4 + 27 + 98 + 36 + 16 + 48 + 45 + 74 + 36 + 66 + 66 + 72 + 7 + 1 + 10 + 94 + 79 + 77 + 31 + 84 + 17 + 11 + 60 + 44 + 47 + 60 + 31 + 82 + 61 + 65 + 21 + 70 + 34 + 77 + 42 + 80 + 25 + 35 + 10 + 29 + 64 + 62 + 74 + 96 + 18 + 66 + 11 + 39 + 79 + 29 + 61 + 12 + 88 + 60 + 33 + 32 + 69 + 0 + 56 + 78 + 32 + 52 + 40 + 91 + 24 + 91 + 61 + 22 + 55 + 85 + 99 + 46 + 25 + 30 + 14 + 74 + 21 + 68 + 52 + 56 + 47 + 70 + 18 + 96 + 85 + 3 + 89 + 95 + 56 + 74 + 32 + 87 + 85 + 56 + 22 + 99 + 54 + 72 + 65 + 91 + 44 + 15 + 87 + 36 + 83 + 45 + 81 + 65 + 56 + 59 + 65 + 25 + 23 + 78 + 23 + 54 + 63 + 33 + 41 + 33 + 26 + 64 + 68 + 24 + 77 + 79 + 34 + 78 + 46 + 6 + 40 + 35 + 10 + 63 + 40 + 92 + 50 + 29 + 63 + 31 + 60 + 69 + 23 + 3 + 66 + 56 + 85 + 45 + 76 + 72 + 25 + 95 + 44 + 31 + 98 + 83 + 50 + 58 + 35 + 86 + 56 + 78 + 84 + 19 + 46 + 92 + 18 + 20 + 85 + 98 + 80 + 75 + 16 + 12 + 45 + 35 + 87 + 12 + 26 + 56 + 49 + 75 + 99 + 58 + 79 + 30 + 37 + 96 + 54 + 78 + 86 + 70 + 71 + 22 + 69 + 11 + 84 + 35 + 58 + 85 + 17 + 29 + 99 + 49 + 30 + 78 + 15 + 62 + 7 + 1 + 55 + 60 + 26 + 89 + 10 + 84 + 36 + 88 + 96 + 17 + 30 + 45 + 78 + 86 + 31 + 47 + 17 + 79 + 25 + 84 + 76 + 32 + 29 + 95 + 71 + 84 + 80 + 84 + 15 + 19 + 20 + 2 + 74 + 93 + 39 + 14 + 80 + 22 + 27 + 30 + 89 + 96 + 61 + 91 + 96 + 22 + 91 + 26 + 7 + 84 + 9 + 66 + 0 + 60 + 4 diff --git a/test/spmm/vectors/x2.mtx b/test/spmm/vectors/x2.mtx new file mode 100644 index 00000000..02c69354 --- /dev/null +++ b/test/spmm/vectors/x2.mtx @@ -0,0 +1,1142 @@ +%%MatrixMarket matrix array real general +% Negative vector +% + 1138 1 + -82 + -19 + -15 + -98 + -7 + -1 + 0 + -56 + -41 + -97 + -89 + -57 + -75 + -80 + -84 + -31 + -23 + -76 + -36 + -25 + -42 + -41 + -90 + -5 + -37 + -98 + -21 + -47 + -59 + -97 + -36 + -68 + -31 + -32 + -18 + -67 + -86 + -65 + -85 + -80 + -34 + -55 + -32 + -83 + -64 + -15 + -73 + -96 + -50 + 0 + -44 + -41 + -76 + -47 + -8 + -52 + -19 + -67 + -75 + -64 + -39 + -8 + -86 + -95 + -41 + -51 + -61 + -60 + -81 + -3 + -9 + -29 + -93 + -67 + -52 + -41 + -16 + -79 + -16 + -99 + -9 + -62 + -70 + 0 + -14 + -6 + -39 + -51 + -36 + -91 + -24 + -54 + -84 + -14 + -57 + -80 + -38 + -5 + -33 + -75 + -54 + -30 + -1 + -53 + -35 + -74 + -89 + -24 + -98 + -38 + -78 + -75 + -52 + -32 + -64 + -76 + -21 + -72 + -65 + -11 + -54 + -27 + -36 + -36 + -66 + -62 + -23 + -89 + -77 + -96 + -4 + -70 + -22 + -31 + -4 + -1 + -37 + -50 + -30 + -40 + -22 + -89 + -50 + -92 + -63 + -49 + -11 + -44 + -7 + -87 + -54 + -61 + -37 + -53 + -21 + -74 + -10 + -94 + -74 + -59 + -38 + -34 + -48 + -71 + -60 + -87 + -75 + -16 + -85 + -69 + -44 + -86 + -88 + -44 + -76 + -25 + -93 + -24 + -93 + -72 + -55 + -68 + -68 + -31 + -16 + -6 + -43 + -10 + -79 + -90 + -63 + -51 + -43 + -75 + -54 + -49 + -87 + -63 + -33 + -66 + -65 + -65 + -62 + -43 + -64 + -36 + -19 + -66 + -27 + -75 + -70 + -18 + -81 + -79 + -15 + -56 + -39 + -8 + -70 + -91 + -79 + -56 + -79 + -93 + -6 + -76 + -68 + -89 + -1 + -89 + -35 + -99 + -47 + -13 + -25 + -15 + -38 + -64 + -51 + -58 + -92 + -64 + -64 + -7 + -67 + -26 + -60 + -58 + -27 + -79 + -12 + -63 + -62 + -64 + -31 + -57 + -75 + -51 + -95 + -19 + -97 + -84 + -76 + -52 + -59 + -5 + -5 + -72 + -73 + -57 + -95 + -64 + -15 + -77 + -85 + -52 + -64 + -17 + -31 + -73 + -73 + -17 + -29 + -58 + -38 + -16 + -6 + -15 + -72 + -79 + -70 + -10 + -9 + -66 + -12 + -60 + -53 + -57 + -96 + -97 + -89 + -26 + 0 + -22 + -1 + -40 + -2 + -97 + -88 + -68 + -61 + -40 + -69 + -91 + -71 + -91 + -94 + -48 + -33 + -29 + -61 + -33 + -27 + -95 + -97 + -76 + -64 + -83 + -88 + -53 + -73 + -81 + -9 + -22 + -63 + -72 + -98 + -19 + -6 + -13 + -56 + -33 + -89 + -3 + -73 + -97 + -41 + -43 + -37 + -13 + -47 + -92 + -6 + -47 + -43 + -83 + -42 + -91 + -26 + -16 + -8 + -49 + -84 + -93 + -47 + -46 + -88 + -37 + -90 + -39 + -59 + -53 + -79 + -69 + -17 + -60 + -56 + -92 + -36 + -55 + -98 + -87 + -66 + -67 + -62 + -19 + -4 + -68 + -3 + -90 + -45 + -91 + -20 + -53 + -75 + -65 + -98 + -15 + -28 + -52 + -1 + -70 + -52 + -75 + -73 + -84 + -89 + -92 + -16 + -93 + -9 + -30 + -19 + -53 + -59 + -72 + -14 + -60 + -27 + -77 + -23 + -42 + -50 + -73 + -28 + -47 + -20 + -25 + -42 + -22 + -16 + -23 + -20 + -36 + -5 + -74 + -76 + -28 + -30 + -36 + -10 + -95 + -50 + -66 + -63 + -31 + -69 + -92 + -86 + -9 + -44 + -91 + -96 + 0 + -44 + -5 + -57 + -17 + -84 + -37 + -57 + -14 + -5 + -46 + -88 + -29 + -93 + -5 + -48 + -71 + -85 + -48 + -95 + -85 + -51 + -11 + -43 + -83 + -11 + -74 + -31 + -8 + -81 + -87 + -3 + -10 + -24 + -41 + -5 + -84 + -63 + -55 + -62 + -63 + -4 + -26 + -59 + -90 + -84 + -26 + -44 + -32 + -16 + -24 + -77 + -78 + -43 + -50 + -44 + -58 + -30 + -10 + -80 + -42 + -31 + -18 + -61 + -10 + -66 + -89 + -51 + 0 + -52 + -34 + -59 + -76 + -18 + -35 + -50 + -9 + -56 + -79 + -74 + -37 + -82 + -51 + -84 + -44 + -64 + -2 + -88 + -24 + -73 + -19 + -85 + -8 + -20 + -53 + -10 + -57 + -24 + -87 + -89 + -80 + -84 + -79 + -28 + -39 + -8 + -40 + -12 + -40 + -41 + -94 + -60 + -83 + -66 + -86 + -34 + -39 + -28 + -62 + -97 + -26 + -30 + -30 + -26 + -4 + -80 + -55 + -80 + -85 + -9 + -92 + -28 + -40 + -38 + -12 + -12 + -95 + -26 + -41 + -58 + -1 + -61 + -99 + -83 + -27 + -37 + -42 + -26 + -41 + -56 + -38 + -72 + 0 + -4 + -68 + -47 + -85 + -34 + -88 + -60 + -83 + -25 + -50 + -26 + -52 + -62 + -74 + -42 + -95 + -81 + -86 + -42 + -36 + -58 + -94 + -75 + -48 + -4 + -10 + -50 + -62 + -4 + -59 + -92 + -19 + -39 + -84 + -33 + -68 + -12 + -25 + -36 + -44 + -33 + -88 + -31 + -85 + -78 + -54 + -3 + -43 + -98 + -92 + -56 + 0 + -36 + -90 + -92 + -44 + -32 + -56 + -51 + -21 + -20 + -7 + -73 + -80 + -17 + -81 + -44 + -42 + -63 + -85 + -76 + -26 + -77 + -52 + -21 + -96 + -76 + -53 + -28 + -64 + -25 + -93 + -68 + -15 + -45 + -44 + -30 + -12 + -68 + -6 + -97 + -64 + -6 + -5 + -13 + -44 + -16 + -66 + -88 + -68 + 0 + -73 + -86 + -80 + -99 + -52 + -75 + -82 + -69 + -20 + -11 + -98 + -77 + -60 + -12 + -42 + -27 + -72 + -86 + -60 + -30 + -96 + -51 + -77 + -40 + -89 + -87 + -41 + -87 + -57 + -76 + -34 + -40 + -35 + -34 + -59 + -25 + -27 + -85 + -27 + -10 + -85 + -35 + -80 + -14 + -26 + -91 + -74 + -97 + -76 + -26 + -3 + -37 + -52 + -15 + -94 + -72 + -52 + -29 + -28 + -45 + -53 + -71 + -3 + -98 + -91 + -59 + -85 + -26 + -12 + -56 + -1 + -10 + -49 + -7 + -80 + -62 + -12 + -27 + -4 + -47 + -41 + -44 + -50 + -94 + -33 + -72 + -8 + -29 + -84 + -62 + -98 + -82 + -8 + -26 + -48 + -53 + -92 + -71 + -40 + -14 + -36 + -50 + -3 + -93 + -11 + -7 + -29 + -39 + -44 + -12 + -37 + -16 + -55 + -5 + -27 + -30 + -72 + -21 + -73 + -88 + -69 + -19 + -88 + -94 + -87 + -46 + -57 + -25 + -79 + -81 + -65 + -23 + -40 + -83 + -53 + -82 + -1 + -22 + -70 + -49 + -61 + -85 + -53 + -53 + -51 + -11 + -23 + -65 + -35 + -66 + -66 + -51 + -74 + -63 + -70 + -3 + -98 + -96 + -90 + -32 + -53 + -90 + -70 + -60 + -60 + -67 + -4 + -27 + -98 + -36 + -16 + -48 + -45 + -74 + -36 + -66 + -66 + -72 + -7 + -1 + -10 + -94 + -79 + -77 + -31 + -84 + -17 + -11 + -60 + -44 + -47 + -60 + -31 + -82 + -61 + -65 + -21 + -70 + -34 + -77 + -42 + -80 + -25 + -35 + -10 + -29 + -64 + -62 + -74 + -96 + -18 + -66 + -11 + -39 + -79 + -29 + -61 + -12 + -88 + -60 + -33 + -32 + -69 + 0 + -56 + -78 + -32 + -52 + -40 + -91 + -24 + -91 + -61 + -22 + -55 + -85 + -99 + -46 + -25 + -30 + -14 + -74 + -21 + -68 + -52 + -56 + -47 + -70 + -18 + -96 + -85 + -3 + -89 + -95 + -56 + -74 + -32 + -87 + -85 + -56 + -22 + -99 + -54 + -72 + -65 + -91 + -44 + -15 + -87 + -36 + -83 + -45 + -81 + -65 + -56 + -59 + -65 + -25 + -23 + -78 + -23 + -54 + -63 + -33 + -41 + -33 + -26 + -64 + -68 + -24 + -77 + -79 + -34 + -78 + -46 + -6 + -40 + -35 + -10 + -63 + -40 + -92 + -50 + -29 + -63 + -31 + -60 + -69 + -23 + -3 + -66 + -56 + -85 + -45 + -76 + -72 + -25 + -95 + -44 + -31 + -98 + -83 + -50 + -58 + -35 + -86 + -56 + -78 + -84 + -19 + -46 + -92 + -18 + -20 + -85 + -98 + -80 + -75 + -16 + -12 + -45 + -35 + -87 + -12 + -26 + -56 + -49 + -75 + -99 + -58 + -79 + -30 + -37 + -96 + -54 + -78 + -86 + -70 + -71 + -22 + -69 + -11 + -84 + -35 + -58 + -85 + -17 + -29 + -99 + -49 + -30 + -78 + -15 + -62 + -7 + -1 + -55 + -60 + -26 + -89 + -10 + -84 + -36 + -88 + -96 + -17 + -30 + -45 + -78 + -86 + -31 + -47 + -17 + -79 + -25 + -84 + -76 + -32 + -29 + -95 + -71 + -84 + -80 + -84 + -15 + -19 + -20 + -2 + -74 + -93 + -39 + -14 + -80 + -22 + -27 + -30 + -89 + -96 + -61 + -91 + -96 + -22 + -91 + -26 + -7 + -84 + -9 + -66 + 0 + -60 + -4 diff --git a/test/spmm/vectors/x3.mtx b/test/spmm/vectors/x3.mtx new file mode 100644 index 00000000..fe03e14e --- /dev/null +++ b/test/spmm/vectors/x3.mtx @@ -0,0 +1,1142 @@ +%%MatrixMarket matrix array real general +% Random vector +% + 1138 1 + 32 + -31 + -35 + 48 + -43 + -49 + -50 + 6 + -9 + 47 + 39 + 7 + 25 + 30 + 34 + -19 + -27 + 26 + -14 + -25 + -8 + -9 + 40 + -45 + -13 + 48 + -29 + -3 + 9 + 47 + -14 + 18 + -19 + -18 + -32 + 17 + 36 + 15 + 35 + 30 + -16 + 5 + -18 + 33 + 14 + -35 + 23 + 46 + 0 + -50 + -6 + -9 + 26 + -3 + -42 + 2 + -31 + 17 + 25 + 14 + -11 + -42 + 36 + 45 + -9 + 1 + 11 + 10 + 31 + -47 + -41 + -21 + 43 + 17 + 2 + -9 + -34 + 29 + -34 + 49 + -41 + 12 + 20 + -50 + -36 + -44 + -11 + 1 + -14 + 41 + -26 + 4 + 34 + -36 + 7 + 30 + -12 + -45 + -17 + 25 + 4 + -20 + -49 + 3 + -15 + 24 + 39 + -26 + 48 + -12 + 28 + 25 + 2 + -18 + 14 + 26 + -29 + 22 + 15 + -39 + 4 + -23 + -14 + -14 + 16 + 12 + -27 + 39 + 27 + 46 + -46 + 20 + -28 + -19 + -46 + -49 + -13 + 0 + -20 + -10 + -28 + 39 + 0 + 42 + 13 + -1 + -39 + -6 + -43 + 37 + 4 + 11 + -13 + 3 + -29 + 24 + -40 + 44 + 24 + 9 + -12 + -16 + -2 + 21 + 10 + 37 + 25 + -34 + 35 + 19 + -6 + 36 + 38 + -6 + 26 + -25 + 43 + -26 + 43 + 22 + 5 + 18 + 18 + -19 + -34 + -44 + -7 + -40 + 29 + 40 + 13 + 1 + -7 + 25 + 4 + -1 + 37 + 13 + -17 + 16 + 15 + 15 + 12 + -7 + 14 + -14 + -31 + 16 + -23 + 25 + 20 + -32 + 31 + 29 + -35 + 6 + -11 + -42 + 20 + 41 + 29 + 6 + 29 + 43 + -44 + 26 + 18 + 39 + -49 + 39 + -15 + 49 + -3 + -37 + -25 + -35 + -12 + 14 + 1 + 8 + 42 + 14 + 14 + -43 + 17 + -24 + 10 + 8 + -23 + 29 + -38 + 13 + 12 + 14 + -19 + 7 + 25 + 1 + 45 + -31 + 47 + 34 + 26 + 2 + 9 + -45 + -45 + 22 + 23 + 7 + 45 + 14 + -35 + 27 + 35 + 2 + 14 + -33 + -19 + 23 + 23 + -33 + -21 + 8 + -12 + -34 + -44 + -35 + 22 + 29 + 20 + -40 + -41 + 16 + -38 + 10 + 3 + 7 + 46 + 47 + 39 + -24 + -50 + -28 + -49 + -10 + -48 + 47 + 38 + 18 + 11 + -10 + 19 + 41 + 21 + 41 + 44 + -2 + -17 + -21 + 11 + -17 + -23 + 45 + 47 + 26 + 14 + 33 + 38 + 3 + 23 + 31 + -41 + -28 + 13 + 22 + 48 + -31 + -44 + -37 + 6 + -17 + 39 + -47 + 23 + 47 + -9 + -7 + -13 + -37 + -3 + 42 + -44 + -3 + -7 + 33 + -8 + 41 + -24 + -34 + -42 + -1 + 34 + 43 + -3 + -4 + 38 + -13 + 40 + -11 + 9 + 3 + 29 + 19 + -33 + 10 + 6 + 42 + -14 + 5 + 48 + 37 + 16 + 17 + 12 + -31 + -46 + 18 + -47 + 40 + -5 + 41 + -30 + 3 + 25 + 15 + 48 + -35 + -22 + 2 + -49 + 20 + 2 + 25 + 23 + 34 + 39 + 42 + -34 + 43 + -41 + -20 + -31 + 3 + 9 + 22 + -36 + 10 + -23 + 27 + -27 + -8 + 0 + 23 + -22 + -3 + -30 + -25 + -8 + -28 + -34 + -27 + -30 + -14 + -45 + 24 + 26 + -22 + -20 + -14 + -40 + 45 + 0 + 16 + 13 + -19 + 19 + 42 + 36 + -41 + -6 + 41 + 46 + -50 + -6 + -45 + 7 + -33 + 34 + -13 + 7 + -36 + -45 + -4 + 38 + -21 + 43 + -45 + -2 + 21 + 35 + -2 + 45 + 35 + 1 + -39 + -7 + 33 + -39 + 24 + -19 + -42 + 31 + 37 + -47 + -40 + -26 + -9 + -45 + 34 + 13 + 5 + 12 + 13 + -46 + -24 + 9 + 40 + 34 + -24 + -6 + -18 + -34 + -26 + 27 + 28 + -7 + 0 + -6 + 8 + -20 + -40 + 30 + -8 + -19 + -32 + 11 + -40 + 16 + 39 + 1 + -50 + 2 + -16 + 9 + 26 + -32 + -15 + 0 + -41 + 6 + 29 + 24 + -13 + 32 + 1 + 34 + -6 + 14 + -48 + 38 + -26 + 23 + -31 + 35 + -42 + -30 + 3 + -40 + 7 + -26 + 37 + 39 + 30 + 34 + 29 + -22 + -11 + -42 + -10 + -38 + -10 + -9 + 44 + 10 + 33 + 16 + 36 + -16 + -11 + -22 + 12 + 47 + -24 + -20 + -20 + -24 + -46 + 30 + 5 + 30 + 35 + -41 + 42 + -22 + -10 + -12 + -38 + -38 + 45 + -24 + -9 + 8 + -49 + 11 + 49 + 33 + -23 + -13 + -8 + -24 + -9 + 6 + -12 + 22 + -50 + -46 + 18 + -3 + 35 + -16 + 38 + 10 + 33 + -25 + 0 + -24 + 2 + 12 + 24 + -8 + 45 + 31 + 36 + -8 + -14 + 8 + 44 + 25 + -2 + -46 + -40 + 0 + 12 + -46 + 9 + 42 + -31 + -11 + 34 + -17 + 18 + -38 + -25 + -14 + -6 + -17 + 38 + -19 + 35 + 28 + 4 + -47 + -7 + 48 + 42 + 6 + -50 + -14 + 40 + 42 + -6 + -18 + 6 + 1 + -29 + -30 + -43 + 23 + 30 + -33 + 31 + -6 + -8 + 13 + 35 + 26 + -24 + 27 + 2 + -29 + 46 + 26 + 3 + -22 + 14 + -25 + 43 + 18 + -35 + -5 + -6 + -20 + -38 + 18 + -44 + 47 + 14 + -44 + -45 + -37 + -6 + -34 + 16 + 38 + 18 + -50 + 23 + 36 + 30 + 49 + 2 + 25 + 32 + 19 + -30 + -39 + 48 + 27 + 10 + -38 + -8 + -23 + 22 + 36 + 10 + -20 + 46 + 1 + 27 + -10 + 39 + 37 + -9 + 37 + 7 + 26 + -16 + -10 + -15 + -16 + 9 + -25 + -23 + 35 + -23 + -40 + 35 + -15 + 30 + -36 + -24 + 41 + 24 + 47 + 26 + -24 + -47 + -13 + 2 + -35 + 44 + 22 + 2 + -21 + -22 + -5 + 3 + 21 + -47 + 48 + 41 + 9 + 35 + -24 + -38 + 6 + -49 + -40 + -1 + -43 + 30 + 12 + -38 + -23 + -46 + -3 + -9 + -6 + 0 + 44 + -17 + 22 + -42 + -21 + 34 + 12 + 48 + 32 + -42 + -24 + -2 + 3 + 42 + 21 + -10 + -36 + -14 + 0 + -47 + 43 + -39 + -43 + -21 + -11 + -6 + -38 + -13 + -34 + 5 + -45 + -23 + -20 + 22 + -29 + 23 + 38 + 19 + -31 + 38 + 44 + 37 + -4 + 7 + -25 + 29 + 31 + 15 + -27 + -10 + 33 + 3 + 32 + -49 + -28 + 20 + -1 + 11 + 35 + 3 + 3 + 1 + -39 + -27 + 15 + -15 + 16 + 16 + 1 + 24 + 13 + 20 + -47 + 48 + 46 + 40 + -18 + 3 + 40 + 20 + 10 + 10 + 17 + -46 + -23 + 48 + -14 + -34 + -2 + -5 + 24 + -14 + 16 + 16 + 22 + -43 + -49 + -40 + 44 + 29 + 27 + -19 + 34 + -33 + -39 + 10 + -6 + -3 + 10 + -19 + 32 + 11 + 15 + -29 + 20 + -16 + 27 + -8 + 30 + -25 + -15 + -40 + -21 + 14 + 12 + 24 + 46 + -32 + 16 + -39 + -11 + 29 + -21 + 11 + -38 + 38 + 10 + -17 + -18 + 19 + -50 + 6 + 28 + -18 + 2 + -10 + 41 + -26 + 41 + 11 + -28 + 5 + 35 + 49 + -4 + -25 + -20 + -36 + 24 + -29 + 18 + 2 + 6 + -3 + 20 + -32 + 46 + 35 + -47 + 39 + 45 + 6 + 24 + -18 + 37 + 35 + 6 + -28 + 49 + 4 + 22 + 15 + 41 + -6 + -35 + 37 + -14 + 33 + -5 + 31 + 15 + 6 + 9 + 15 + -25 + -27 + 28 + -27 + 4 + 13 + -17 + -9 + -17 + -24 + 14 + 18 + -26 + 27 + 29 + -16 + 28 + -4 + -44 + -10 + -15 + -40 + 13 + -10 + 42 + 0 + -21 + 13 + -19 + 10 + 19 + -27 + -47 + 16 + 6 + 35 + -5 + 26 + 22 + -25 + 45 + -6 + -19 + 48 + 33 + 0 + 8 + -15 + 36 + 6 + 28 + 34 + -31 + -4 + 42 + -32 + -30 + 35 + 48 + 30 + 25 + -34 + -38 + -5 + -15 + 37 + -38 + -24 + 6 + -1 + 25 + 49 + 8 + 29 + -20 + -13 + 46 + 4 + 28 + 36 + 20 + 21 + -28 + 19 + -39 + 34 + -15 + 8 + 35 + -33 + -21 + 49 + -1 + -20 + 28 + -35 + 12 + -43 + -49 + 5 + 10 + -24 + 39 + -40 + 34 + -14 + 38 + 46 + -33 + -20 + -5 + 28 + 36 + -19 + -3 + -33 + 29 + -25 + 34 + 26 + -18 + -21 + 45 + 21 + 34 + 30 + 34 + -35 + -31 + -30 + -48 + 24 + 43 + -11 + -36 + 30 + -28 + -23 + -20 + 39 + 46 + 11 + 41 + 46 + -28 + 41 + -24 + -43 + 34 + -41 + 16 + -50 + 10 + -46 diff --git a/test/spmm/vectors/x4.mtx b/test/spmm/vectors/x4.mtx new file mode 100644 index 00000000..838ab8f9 --- /dev/null +++ b/test/spmm/vectors/x4.mtx @@ -0,0 +1,1142 @@ +%%MatrixMarket matrix array real general +% Null vector +% + 1138 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 diff --git a/test/spmm/vectors/y1.mtx b/test/spmm/vectors/y1.mtx new file mode 100644 index 00000000..41f22113 --- /dev/null +++ b/test/spmm/vectors/y1.mtx @@ -0,0 +1,1142 @@ +%%MatrixMarket matrix array real general +% Positive vector +% + 1138 1 + 75 + 41 + 78 + 4 + 28 + 37 + 50 + 12 + 5 + 73 + 96 + 39 + 41 + 20 + 4 + 62 + 33 + 55 + 71 + 37 + 61 + 29 + 4 + 25 + 11 + 5 + 2 + 46 + 39 + 78 + 75 + 37 + 73 + 34 + 84 + 0 + 95 + 71 + 78 + 68 + 52 + 75 + 10 + 5 + 65 + 79 + 49 + 37 + 58 + 20 + 39 + 14 + 17 + 20 + 63 + 6 + 4 + 92 + 60 + 29 + 33 + 44 + 19 + 0 + 77 + 49 + 97 + 97 + 29 + 6 + 2 + 92 + 64 + 33 + 44 + 72 + 23 + 96 + 14 + 83 + 3 + 55 + 73 + 73 + 97 + 16 + 20 + 10 + 55 + 70 + 65 + 40 + 47 + 7 + 3 + 23 + 18 + 46 + 14 + 45 + 29 + 90 + 73 + 7 + 68 + 65 + 3 + 39 + 17 + 22 + 58 + 87 + 75 + 97 + 21 + 10 + 70 + 94 + 30 + 15 + 74 + 19 + 96 + 49 + 89 + 50 + 80 + 28 + 94 + 20 + 84 + 2 + 96 + 85 + 55 + 12 + 25 + 5 + 62 + 95 + 56 + 93 + 50 + 70 + 16 + 0 + 75 + 39 + 55 + 63 + 64 + 10 + 79 + 63 + 25 + 25 + 26 + 73 + 47 + 64 + 40 + 14 + 42 + 55 + 82 + 51 + 83 + 4 + 17 + 90 + 5 + 3 + 50 + 33 + 34 + 63 + 39 + 44 + 95 + 77 + 8 + 82 + 99 + 7 + 81 + 42 + 22 + 53 + 39 + 1 + 58 + 15 + 19 + 63 + 10 + 32 + 19 + 49 + 8 + 62 + 68 + 57 + 73 + 73 + 1 + 68 + 55 + 44 + 10 + 39 + 68 + 49 + 33 + 33 + 22 + 28 + 70 + 76 + 69 + 71 + 24 + 55 + 14 + 38 + 91 + 30 + 2 + 69 + 92 + 58 + 59 + 24 + 17 + 84 + 18 + 85 + 42 + 40 + 8 + 24 + 31 + 32 + 29 + 61 + 32 + 34 + 47 + 2 + 12 + 11 + 36 + 6 + 4 + 88 + 12 + 95 + 50 + 74 + 71 + 35 + 28 + 92 + 57 + 99 + 3 + 46 + 13 + 5 + 44 + 99 + 29 + 24 + 48 + 31 + 48 + 51 + 83 + 98 + 68 + 34 + 37 + 8 + 65 + 63 + 75 + 7 + 47 + 60 + 18 + 54 + 31 + 84 + 71 + 29 + 29 + 78 + 87 + 66 + 80 + 19 + 85 + 90 + 89 + 83 + 64 + 52 + 93 + 14 + 1 + 71 + 58 + 43 + 97 + 48 + 62 + 26 + 95 + 19 + 15 + 28 + 30 + 12 + 20 + 94 + 53 + 40 + 39 + 94 + 89 + 16 + 71 + 47 + 10 + 13 + 43 + 83 + 85 + 66 + 75 + 2 + 37 + 59 + 81 + 32 + 65 + 55 + 13 + 11 + 31 + 88 + 98 + 41 + 27 + 95 + 83 + 0 + 0 + 86 + 22 + 36 + 82 + 93 + 94 + 78 + 47 + 82 + 5 + 61 + 98 + 4 + 13 + 30 + 9 + 9 + 80 + 30 + 52 + 0 + 11 + 29 + 65 + 54 + 97 + 67 + 15 + 83 + 72 + 41 + 5 + 53 + 73 + 95 + 4 + 12 + 10 + 98 + 21 + 97 + 40 + 47 + 32 + 57 + 85 + 39 + 86 + 84 + 32 + 55 + 30 + 9 + 62 + 34 + 13 + 89 + 87 + 21 + 90 + 84 + 12 + 44 + 21 + 2 + 64 + 22 + 10 + 26 + 67 + 63 + 20 + 89 + 77 + 74 + 8 + 47 + 73 + 34 + 58 + 52 + 0 + 91 + 51 + 54 + 18 + 45 + 50 + 43 + 35 + 36 + 25 + 88 + 39 + 12 + 93 + 45 + 4 + 45 + 38 + 69 + 92 + 12 + 89 + 48 + 96 + 2 + 35 + 99 + 5 + 33 + 31 + 82 + 86 + 89 + 75 + 11 + 57 + 10 + 37 + 56 + 47 + 31 + 47 + 93 + 29 + 31 + 70 + 16 + 3 + 35 + 77 + 77 + 23 + 28 + 45 + 36 + 98 + 4 + 26 + 35 + 64 + 2 + 73 + 81 + 52 + 60 + 49 + 95 + 60 + 78 + 52 + 8 + 72 + 37 + 40 + 30 + 29 + 28 + 48 + 99 + 54 + 30 + 26 + 67 + 51 + 5 + 46 + 22 + 3 + 97 + 56 + 13 + 55 + 59 + 92 + 84 + 4 + 32 + 11 + 7 + 91 + 30 + 35 + 43 + 80 + 15 + 42 + 18 + 49 + 38 + 82 + 24 + 81 + 7 + 76 + 83 + 52 + 3 + 80 + 74 + 19 + 23 + 75 + 71 + 9 + 69 + 70 + 33 + 1 + 33 + 4 + 18 + 37 + 27 + 18 + 9 + 35 + 6 + 97 + 15 + 7 + 2 + 67 + 80 + 49 + 81 + 7 + 54 + 39 + 37 + 75 + 44 + 78 + 97 + 83 + 2 + 20 + 86 + 29 + 67 + 90 + 84 + 3 + 49 + 56 + 48 + 35 + 86 + 29 + 14 + 8 + 80 + 9 + 69 + 19 + 78 + 56 + 66 + 63 + 20 + 44 + 7 + 61 + 99 + 48 + 1 + 97 + 61 + 43 + 3 + 17 + 61 + 38 + 53 + 89 + 56 + 90 + 25 + 39 + 2 + 76 + 39 + 16 + 18 + 2 + 16 + 31 + 53 + 75 + 22 + 81 + 50 + 22 + 32 + 45 + 72 + 56 + 16 + 43 + 6 + 73 + 93 + 17 + 63 + 63 + 71 + 93 + 83 + 3 + 61 + 93 + 12 + 22 + 26 + 1 + 40 + 78 + 47 + 81 + 26 + 50 + 1 + 92 + 91 + 37 + 42 + 85 + 65 + 81 + 21 + 56 + 1 + 87 + 50 + 18 + 42 + 98 + 20 + 3 + 59 + 40 + 73 + 38 + 49 + 35 + 35 + 44 + 39 + 99 + 67 + 64 + 80 + 65 + 30 + 4 + 81 + 80 + 10 + 95 + 26 + 78 + 80 + 3 + 92 + 99 + 17 + 28 + 41 + 55 + 14 + 51 + 99 + 66 + 48 + 37 + 6 + 99 + 63 + 91 + 93 + 69 + 83 + 54 + 71 + 18 + 81 + 36 + 86 + 55 + 28 + 41 + 53 + 8 + 14 + 11 + 88 + 51 + 70 + 98 + 94 + 81 + 86 + 45 + 83 + 74 + 88 + 91 + 11 + 74 + 13 + 81 + 81 + 68 + 97 + 22 + 59 + 98 + 7 + 39 + 95 + 5 + 77 + 57 + 29 + 69 + 32 + 85 + 41 + 73 + 72 + 85 + 3 + 87 + 30 + 94 + 45 + 21 + 64 + 66 + 14 + 68 + 70 + 30 + 48 + 91 + 56 + 61 + 86 + 16 + 23 + 52 + 51 + 49 + 23 + 8 + 43 + 39 + 33 + 22 + 77 + 50 + 28 + 77 + 54 + 43 + 76 + 65 + 31 + 2 + 5 + 24 + 80 + 84 + 82 + 65 + 6 + 5 + 69 + 62 + 59 + 87 + 60 + 61 + 9 + 25 + 45 + 12 + 93 + 31 + 4 + 27 + 65 + 94 + 18 + 84 + 73 + 46 + 5 + 99 + 15 + 32 + 40 + 12 + 55 + 71 + 55 + 83 + 62 + 75 + 18 + 27 + 93 + 12 + 32 + 72 + 26 + 33 + 65 + 19 + 40 + 6 + 79 + 98 + 85 + 54 + 94 + 97 + 21 + 45 + 51 + 15 + 71 + 39 + 8 + 72 + 41 + 47 + 95 + 42 + 87 + 95 + 53 + 95 + 42 + 36 + 52 + 21 + 4 + 74 + 75 + 86 + 48 + 62 + 61 + 76 + 24 + 4 + 84 + 15 + 87 + 11 + 96 + 66 + 55 + 35 + 17 + 37 + 86 + 4 + 63 + 6 + 77 + 48 + 4 + 69 + 91 + 85 + 83 + 51 + 30 + 84 + 90 + 13 + 25 + 50 + 8 + 4 + 81 + 85 + 54 + 85 + 27 + 91 + 3 + 69 + 59 + 37 + 72 + 8 + 26 + 54 + 41 + 3 + 45 + 21 + 46 + 63 + 97 + 8 + 94 + 79 + 14 + 0 + 18 + 46 + 62 + 91 + 23 + 88 + 74 + 13 + 48 + 44 + 82 + 99 + 23 + 12 + 24 + 37 + 48 + 28 + 90 + 75 + 54 + 88 + 26 + 32 + 96 + 92 + 74 + 69 + 23 + 69 + 90 + 18 + 5 + 18 + 81 + 55 + 83 + 90 + 88 + 44 + 85 + 48 + 97 + 46 + 21 + 69 + 85 + 0 + 0 + 7 + 8 + 57 + 45 + 81 + 55 + 73 + 65 + 68 + 76 + 25 + 98 + 30 + 43 + 69 + 48 + 8 + 57 + 23 + 32 + 86 + 16 + 2 + 85 + 33 + 57 + 94 + 20 + 67 + 73 + 37 + 22 + 96 + 64 + 74 + 80 + 25 + 67 + 6 + 12 + 86 + 41 + 77 + 79 + 95 + 19 + 79 + 53 + 49 + 9 + 33 + 71 + 41 + 34 + 52 + 35 + 91 + 6 + 83 + 97 + 22 + 26 + 30 + 84 + 96 + 48 + 98 + 54 + 9 + 21 + 45 + 86 + 15 + 86 + 29 + 63 + 9 + 38 + 73 + 55 + 27 + 26 + 87 + 22 + 95 + 59 + 77 + 89 + 35 + 50 + 93 + 26 + 49 + 71 + 25 + 99 + 18 + 89 + 62 + 61 + 67 + 31 + 25 + 79 + 76 + 63 + 1 + 99 + 10 + 57 + 3 + 7 + 39 + 74 + 45 + 72 + 97 + 7 diff --git a/test/spmm/vectors/y2.mtx b/test/spmm/vectors/y2.mtx new file mode 100644 index 00000000..db489c99 --- /dev/null +++ b/test/spmm/vectors/y2.mtx @@ -0,0 +1,1142 @@ +%%MatrixMarket matrix array real general +% Negative vector +% + 1138 1 + -75 + -41 + -78 + -4 + -28 + -37 + -50 + -12 + -5 + -73 + -96 + -39 + -41 + -20 + -4 + -62 + -33 + -55 + -71 + -37 + -61 + -29 + -4 + -25 + -11 + -5 + -2 + -46 + -39 + -78 + -75 + -37 + -73 + -34 + -84 + 0 + -95 + -71 + -78 + -68 + -52 + -75 + -10 + -5 + -65 + -79 + -49 + -37 + -58 + -20 + -39 + -14 + -17 + -20 + -63 + -6 + -4 + -92 + -60 + -29 + -33 + -44 + -19 + 0 + -77 + -49 + -97 + -97 + -29 + -6 + -2 + -92 + -64 + -33 + -44 + -72 + -23 + -96 + -14 + -83 + -3 + -55 + -73 + -73 + -97 + -16 + -20 + -10 + -55 + -70 + -65 + -40 + -47 + -7 + -3 + -23 + -18 + -46 + -14 + -45 + -29 + -90 + -73 + -7 + -68 + -65 + -3 + -39 + -17 + -22 + -58 + -87 + -75 + -97 + -21 + -10 + -70 + -94 + -30 + -15 + -74 + -19 + -96 + -49 + -89 + -50 + -80 + -28 + -94 + -20 + -84 + -2 + -96 + -85 + -55 + -12 + -25 + -5 + -62 + -95 + -56 + -93 + -50 + -70 + -16 + 0 + -75 + -39 + -55 + -63 + -64 + -10 + -79 + -63 + -25 + -25 + -26 + -73 + -47 + -64 + -40 + -14 + -42 + -55 + -82 + -51 + -83 + -4 + -17 + -90 + -5 + -3 + -50 + -33 + -34 + -63 + -39 + -44 + -95 + -77 + -8 + -82 + -99 + -7 + -81 + -42 + -22 + -53 + -39 + -1 + -58 + -15 + -19 + -63 + -10 + -32 + -19 + -49 + -8 + -62 + -68 + -57 + -73 + -73 + -1 + -68 + -55 + -44 + -10 + -39 + -68 + -49 + -33 + -33 + -22 + -28 + -70 + -76 + -69 + -71 + -24 + -55 + -14 + -38 + -91 + -30 + -2 + -69 + -92 + -58 + -59 + -24 + -17 + -84 + -18 + -85 + -42 + -40 + -8 + -24 + -31 + -32 + -29 + -61 + -32 + -34 + -47 + -2 + -12 + -11 + -36 + -6 + -4 + -88 + -12 + -95 + -50 + -74 + -71 + -35 + -28 + -92 + -57 + -99 + -3 + -46 + -13 + -5 + -44 + -99 + -29 + -24 + -48 + -31 + -48 + -51 + -83 + -98 + -68 + -34 + -37 + -8 + -65 + -63 + -75 + -7 + -47 + -60 + -18 + -54 + -31 + -84 + -71 + -29 + -29 + -78 + -87 + -66 + -80 + -19 + -85 + -90 + -89 + -83 + -64 + -52 + -93 + -14 + -1 + -71 + -58 + -43 + -97 + -48 + -62 + -26 + -95 + -19 + -15 + -28 + -30 + -12 + -20 + -94 + -53 + -40 + -39 + -94 + -89 + -16 + -71 + -47 + -10 + -13 + -43 + -83 + -85 + -66 + -75 + -2 + -37 + -59 + -81 + -32 + -65 + -55 + -13 + -11 + -31 + -88 + -98 + -41 + -27 + -95 + -83 + 0 + 0 + -86 + -22 + -36 + -82 + -93 + -94 + -78 + -47 + -82 + -5 + -61 + -98 + -4 + -13 + -30 + -9 + -9 + -80 + -30 + -52 + 0 + -11 + -29 + -65 + -54 + -97 + -67 + -15 + -83 + -72 + -41 + -5 + -53 + -73 + -95 + -4 + -12 + -10 + -98 + -21 + -97 + -40 + -47 + -32 + -57 + -85 + -39 + -86 + -84 + -32 + -55 + -30 + -9 + -62 + -34 + -13 + -89 + -87 + -21 + -90 + -84 + -12 + -44 + -21 + -2 + -64 + -22 + -10 + -26 + -67 + -63 + -20 + -89 + -77 + -74 + -8 + -47 + -73 + -34 + -58 + -52 + 0 + -91 + -51 + -54 + -18 + -45 + -50 + -43 + -35 + -36 + -25 + -88 + -39 + -12 + -93 + -45 + -4 + -45 + -38 + -69 + -92 + -12 + -89 + -48 + -96 + -2 + -35 + -99 + -5 + -33 + -31 + -82 + -86 + -89 + -75 + -11 + -57 + -10 + -37 + -56 + -47 + -31 + -47 + -93 + -29 + -31 + -70 + -16 + -3 + -35 + -77 + -77 + -23 + -28 + -45 + -36 + -98 + -4 + -26 + -35 + -64 + -2 + -73 + -81 + -52 + -60 + -49 + -95 + -60 + -78 + -52 + -8 + -72 + -37 + -40 + -30 + -29 + -28 + -48 + -99 + -54 + -30 + -26 + -67 + -51 + -5 + -46 + -22 + -3 + -97 + -56 + -13 + -55 + -59 + -92 + -84 + -4 + -32 + -11 + -7 + -91 + -30 + -35 + -43 + -80 + -15 + -42 + -18 + -49 + -38 + -82 + -24 + -81 + -7 + -76 + -83 + -52 + -3 + -80 + -74 + -19 + -23 + -75 + -71 + -9 + -69 + -70 + -33 + -1 + -33 + -4 + -18 + -37 + -27 + -18 + -9 + -35 + -6 + -97 + -15 + -7 + -2 + -67 + -80 + -49 + -81 + -7 + -54 + -39 + -37 + -75 + -44 + -78 + -97 + -83 + -2 + -20 + -86 + -29 + -67 + -90 + -84 + -3 + -49 + -56 + -48 + -35 + -86 + -29 + -14 + -8 + -80 + -9 + -69 + -19 + -78 + -56 + -66 + -63 + -20 + -44 + -7 + -61 + -99 + -48 + -1 + -97 + -61 + -43 + -3 + -17 + -61 + -38 + -53 + -89 + -56 + -90 + -25 + -39 + -2 + -76 + -39 + -16 + -18 + -2 + -16 + -31 + -53 + -75 + -22 + -81 + -50 + -22 + -32 + -45 + -72 + -56 + -16 + -43 + -6 + -73 + -93 + -17 + -63 + -63 + -71 + -93 + -83 + -3 + -61 + -93 + -12 + -22 + -26 + -1 + -40 + -78 + -47 + -81 + -26 + -50 + -1 + -92 + -91 + -37 + -42 + -85 + -65 + -81 + -21 + -56 + -1 + -87 + -50 + -18 + -42 + -98 + -20 + -3 + -59 + -40 + -73 + -38 + -49 + -35 + -35 + -44 + -39 + -99 + -67 + -64 + -80 + -65 + -30 + -4 + -81 + -80 + -10 + -95 + -26 + -78 + -80 + -3 + -92 + -99 + -17 + -28 + -41 + -55 + -14 + -51 + -99 + -66 + -48 + -37 + -6 + -99 + -63 + -91 + -93 + -69 + -83 + -54 + -71 + -18 + -81 + -36 + -86 + -55 + -28 + -41 + -53 + -8 + -14 + -11 + -88 + -51 + -70 + -98 + -94 + -81 + -86 + -45 + -83 + -74 + -88 + -91 + -11 + -74 + -13 + -81 + -81 + -68 + -97 + -22 + -59 + -98 + -7 + -39 + -95 + -5 + -77 + -57 + -29 + -69 + -32 + -85 + -41 + -73 + -72 + -85 + -3 + -87 + -30 + -94 + -45 + -21 + -64 + -66 + -14 + -68 + -70 + -30 + -48 + -91 + -56 + -61 + -86 + -16 + -23 + -52 + -51 + -49 + -23 + -8 + -43 + -39 + -33 + -22 + -77 + -50 + -28 + -77 + -54 + -43 + -76 + -65 + -31 + -2 + -5 + -24 + -80 + -84 + -82 + -65 + -6 + -5 + -69 + -62 + -59 + -87 + -60 + -61 + -9 + -25 + -45 + -12 + -93 + -31 + -4 + -27 + -65 + -94 + -18 + -84 + -73 + -46 + -5 + -99 + -15 + -32 + -40 + -12 + -55 + -71 + -55 + -83 + -62 + -75 + -18 + -27 + -93 + -12 + -32 + -72 + -26 + -33 + -65 + -19 + -40 + -6 + -79 + -98 + -85 + -54 + -94 + -97 + -21 + -45 + -51 + -15 + -71 + -39 + -8 + -72 + -41 + -47 + -95 + -42 + -87 + -95 + -53 + -95 + -42 + -36 + -52 + -21 + -4 + -74 + -75 + -86 + -48 + -62 + -61 + -76 + -24 + -4 + -84 + -15 + -87 + -11 + -96 + -66 + -55 + -35 + -17 + -37 + -86 + -4 + -63 + -6 + -77 + -48 + -4 + -69 + -91 + -85 + -83 + -51 + -30 + -84 + -90 + -13 + -25 + -50 + -8 + -4 + -81 + -85 + -54 + -85 + -27 + -91 + -3 + -69 + -59 + -37 + -72 + -8 + -26 + -54 + -41 + -3 + -45 + -21 + -46 + -63 + -97 + -8 + -94 + -79 + -14 + 0 + -18 + -46 + -62 + -91 + -23 + -88 + -74 + -13 + -48 + -44 + -82 + -99 + -23 + -12 + -24 + -37 + -48 + -28 + -90 + -75 + -54 + -88 + -26 + -32 + -96 + -92 + -74 + -69 + -23 + -69 + -90 + -18 + -5 + -18 + -81 + -55 + -83 + -90 + -88 + -44 + -85 + -48 + -97 + -46 + -21 + -69 + -85 + 0 + 0 + -7 + -8 + -57 + -45 + -81 + -55 + -73 + -65 + -68 + -76 + -25 + -98 + -30 + -43 + -69 + -48 + -8 + -57 + -23 + -32 + -86 + -16 + -2 + -85 + -33 + -57 + -94 + -20 + -67 + -73 + -37 + -22 + -96 + -64 + -74 + -80 + -25 + -67 + -6 + -12 + -86 + -41 + -77 + -79 + -95 + -19 + -79 + -53 + -49 + -9 + -33 + -71 + -41 + -34 + -52 + -35 + -91 + -6 + -83 + -97 + -22 + -26 + -30 + -84 + -96 + -48 + -98 + -54 + -9 + -21 + -45 + -86 + -15 + -86 + -29 + -63 + -9 + -38 + -73 + -55 + -27 + -26 + -87 + -22 + -95 + -59 + -77 + -89 + -35 + -50 + -93 + -26 + -49 + -71 + -25 + -99 + -18 + -89 + -62 + -61 + -67 + -31 + -25 + -79 + -76 + -63 + -1 + -99 + -10 + -57 + -3 + -7 + -39 + -74 + -45 + -72 + -97 + -7 diff --git a/test/spmm/vectors/y3.mtx b/test/spmm/vectors/y3.mtx new file mode 100644 index 00000000..6255714d --- /dev/null +++ b/test/spmm/vectors/y3.mtx @@ -0,0 +1,1142 @@ +%%MatrixMarket matrix array real general +% Random vector +% + 1138 1 + 25 + -9 + 28 + -46 + -22 + -13 + 0 + -38 + -45 + 23 + 46 + -11 + -9 + -30 + -46 + 12 + -17 + 5 + 21 + -13 + 11 + -21 + -46 + -25 + -39 + -45 + -48 + -4 + -11 + 28 + 25 + -13 + 23 + -16 + 34 + -50 + 45 + 21 + 28 + 18 + 2 + 25 + -40 + -45 + 15 + 29 + -1 + -13 + 8 + -30 + -11 + -36 + -33 + -30 + 13 + -44 + -46 + 42 + 10 + -21 + -17 + -6 + -31 + -50 + 27 + -1 + 47 + 47 + -21 + -44 + -48 + 42 + 14 + -17 + -6 + 22 + -27 + 46 + -36 + 33 + -47 + 5 + 23 + 23 + 47 + -34 + -30 + -40 + 5 + 20 + 15 + -10 + -3 + -43 + -47 + -27 + -32 + -4 + -36 + -5 + -21 + 40 + 23 + -43 + 18 + 15 + -47 + -11 + -33 + -28 + 8 + 37 + 25 + 47 + -29 + -40 + 20 + 44 + -20 + -35 + 24 + -31 + 46 + -1 + 39 + 0 + 30 + -22 + 44 + -30 + 34 + -48 + 46 + 35 + 5 + -38 + -25 + -45 + 12 + 45 + 6 + 43 + 0 + 20 + -34 + -50 + 25 + -11 + 5 + 13 + 14 + -40 + 29 + 13 + -25 + -25 + -24 + 23 + -3 + 14 + -10 + -36 + -8 + 5 + 32 + 1 + 33 + -46 + -33 + 40 + -45 + -47 + 0 + -17 + -16 + 13 + -11 + -6 + 45 + 27 + -42 + 32 + 49 + -43 + 31 + -8 + -28 + 3 + -11 + -49 + 8 + -35 + -31 + 13 + -40 + -18 + -31 + -1 + -42 + 12 + 18 + 7 + 23 + 23 + -49 + 18 + 5 + -6 + -40 + -11 + 18 + -1 + -17 + -17 + -28 + -22 + 20 + 26 + 19 + 21 + -26 + 5 + -36 + -12 + 41 + -20 + -48 + 19 + 42 + 8 + 9 + -26 + -33 + 34 + -32 + 35 + -8 + -10 + -42 + -26 + -19 + -18 + -21 + 11 + -18 + -16 + -3 + -48 + -38 + -39 + -14 + -44 + -46 + 38 + -38 + 45 + 0 + 24 + 21 + -15 + -22 + 42 + 7 + 49 + -47 + -4 + -37 + -45 + -6 + 49 + -21 + -26 + -2 + -19 + -2 + 1 + 33 + 48 + 18 + -16 + -13 + -42 + 15 + 13 + 25 + -43 + -3 + 10 + -32 + 4 + -19 + 34 + 21 + -21 + -21 + 28 + 37 + 16 + 30 + -31 + 35 + 40 + 39 + 33 + 14 + 2 + 43 + -36 + -49 + 21 + 8 + -7 + 47 + -2 + 12 + -24 + 45 + -31 + -35 + -22 + -20 + -38 + -30 + 44 + 3 + -10 + -11 + 44 + 39 + -34 + 21 + -3 + -40 + -37 + -7 + 33 + 35 + 16 + 25 + -48 + -13 + 9 + 31 + -18 + 15 + 5 + -37 + -39 + -19 + 38 + 48 + -9 + -23 + 45 + 33 + -50 + -50 + 36 + -28 + -14 + 32 + 43 + 44 + 28 + -3 + 32 + -45 + 11 + 48 + -46 + -37 + -20 + -41 + -41 + 30 + -20 + 2 + -50 + -39 + -21 + 15 + 4 + 47 + 17 + -35 + 33 + 22 + -9 + -45 + 3 + 23 + 45 + -46 + -38 + -40 + 48 + -29 + 47 + -10 + -3 + -18 + 7 + 35 + -11 + 36 + 34 + -18 + 5 + -20 + -41 + 12 + -16 + -37 + 39 + 37 + -29 + 40 + 34 + -38 + -6 + -29 + -48 + 14 + -28 + -40 + -24 + 17 + 13 + -30 + 39 + 27 + 24 + -42 + -3 + 23 + -16 + 8 + 2 + -50 + 41 + 1 + 4 + -32 + -5 + 0 + -7 + -15 + -14 + -25 + 38 + -11 + -38 + 43 + -5 + -46 + -5 + -12 + 19 + 42 + -38 + 39 + -2 + 46 + -48 + -15 + 49 + -45 + -17 + -19 + 32 + 36 + 39 + 25 + -39 + 7 + -40 + -13 + 6 + -3 + -19 + -3 + 43 + -21 + -19 + 20 + -34 + -47 + -15 + 27 + 27 + -27 + -22 + -5 + -14 + 48 + -46 + -24 + -15 + 14 + -48 + 23 + 31 + 2 + 10 + -1 + 45 + 10 + 28 + 2 + -42 + 22 + -13 + -10 + -20 + -21 + -22 + -2 + 49 + 4 + -20 + -24 + 17 + 1 + -45 + -4 + -28 + -47 + 47 + 6 + -37 + 5 + 9 + 42 + 34 + -46 + -18 + -39 + -43 + 41 + -20 + -15 + -7 + 30 + -35 + -8 + -32 + -1 + -12 + 32 + -26 + 31 + -43 + 26 + 33 + 2 + -47 + 30 + 24 + -31 + -27 + 25 + 21 + -41 + 19 + 20 + -17 + -49 + -17 + -46 + -32 + -13 + -23 + -32 + -41 + -15 + -44 + 47 + -35 + -43 + -48 + 17 + 30 + -1 + 31 + -43 + 4 + -11 + -13 + 25 + -6 + 28 + 47 + 33 + -48 + -30 + 36 + -21 + 17 + 40 + 34 + -47 + -1 + 6 + -2 + -15 + 36 + -21 + -36 + -42 + 30 + -41 + 19 + -31 + 28 + 6 + 16 + 13 + -30 + -6 + -43 + 11 + 49 + -2 + -49 + 47 + 11 + -7 + -47 + -33 + 11 + -12 + 3 + 39 + 6 + 40 + -25 + -11 + -48 + 26 + -11 + -34 + -32 + -48 + -34 + -19 + 3 + 25 + -28 + 31 + 0 + -28 + -18 + -5 + 22 + 6 + -34 + -7 + -44 + 23 + 43 + -33 + 13 + 13 + 21 + 43 + 33 + -47 + 11 + 43 + -38 + -28 + -24 + -49 + -10 + 28 + -3 + 31 + -24 + 0 + -49 + 42 + 41 + -13 + -8 + 35 + 15 + 31 + -29 + 6 + -49 + 37 + 0 + -32 + -8 + 48 + -30 + -47 + 9 + -10 + 23 + -12 + -1 + -15 + -15 + -6 + -11 + 49 + 17 + 14 + 30 + 15 + -20 + -46 + 31 + 30 + -40 + 45 + -24 + 28 + 30 + -47 + 42 + 49 + -33 + -22 + -9 + 5 + -36 + 1 + 49 + 16 + -2 + -13 + -44 + 49 + 13 + 41 + 43 + 19 + 33 + 4 + 21 + -32 + 31 + -14 + 36 + 5 + -22 + -9 + 3 + -42 + -36 + -39 + 38 + 1 + 20 + 48 + 44 + 31 + 36 + -5 + 33 + 24 + 38 + 41 + -39 + 24 + -37 + 31 + 31 + 18 + 47 + -28 + 9 + 48 + -43 + -11 + 45 + -45 + 27 + 7 + -21 + 19 + -18 + 35 + -9 + 23 + 22 + 35 + -47 + 37 + -20 + 44 + -5 + -29 + 14 + 16 + -36 + 18 + 20 + -20 + -2 + 41 + 6 + 11 + 36 + -34 + -27 + 2 + 1 + -1 + -27 + -42 + -7 + -11 + -17 + -28 + 27 + 0 + -22 + 27 + 4 + -7 + 26 + 15 + -19 + -48 + -45 + -26 + 30 + 34 + 32 + 15 + -44 + -45 + 19 + 12 + 9 + 37 + 10 + 11 + -41 + -25 + -5 + -38 + 43 + -19 + -46 + -23 + 15 + 44 + -32 + 34 + 23 + -4 + -45 + 49 + -35 + -18 + -10 + -38 + 5 + 21 + 5 + 33 + 12 + 25 + -32 + -23 + 43 + -38 + -18 + 22 + -24 + -17 + 15 + -31 + -10 + -44 + 29 + 48 + 35 + 4 + 44 + 47 + -29 + -5 + 1 + -35 + 21 + -11 + -42 + 22 + -9 + -3 + 45 + -8 + 37 + 45 + 3 + 45 + -8 + -14 + 2 + -29 + -46 + 24 + 25 + 36 + -2 + 12 + 11 + 26 + -26 + -46 + 34 + -35 + 37 + -39 + 46 + 16 + 5 + -15 + -33 + -13 + 36 + -46 + 13 + -44 + 27 + -2 + -46 + 19 + 41 + 35 + 33 + 1 + -20 + 34 + 40 + -37 + -25 + 0 + -42 + -46 + 31 + 35 + 4 + 35 + -23 + 41 + -47 + 19 + 9 + -13 + 22 + -42 + -24 + 4 + -9 + -47 + -5 + -29 + -4 + 13 + 47 + -42 + 44 + 29 + -36 + -50 + -32 + -4 + 12 + 41 + -27 + 38 + 24 + -37 + -2 + -6 + 32 + 49 + -27 + -38 + -26 + -13 + -2 + -22 + 40 + 25 + 4 + 38 + -24 + -18 + 46 + 42 + 24 + 19 + -27 + 19 + 40 + -32 + -45 + -32 + 31 + 5 + 33 + 40 + 38 + -6 + 35 + -2 + 47 + -4 + -29 + 19 + 35 + -50 + -50 + -43 + -42 + 7 + -5 + 31 + 5 + 23 + 15 + 18 + 26 + -25 + 48 + -20 + -7 + 19 + -2 + -42 + 7 + -27 + -18 + 36 + -34 + -48 + 35 + -17 + 7 + 44 + -30 + 17 + 23 + -13 + -28 + 46 + 14 + 24 + 30 + -25 + 17 + -44 + -38 + 36 + -9 + 27 + 29 + 45 + -31 + 29 + 3 + -1 + -41 + -17 + 21 + -9 + -16 + 2 + -15 + 41 + -44 + 33 + 47 + -28 + -24 + -20 + 34 + 46 + -2 + 48 + 4 + -41 + -29 + -5 + 36 + -35 + 36 + -21 + 13 + -41 + -12 + 23 + 5 + -23 + -24 + 37 + -28 + 45 + 9 + 27 + 39 + -15 + 0 + 43 + -24 + -1 + 21 + -25 + 49 + -32 + 39 + 12 + 11 + 17 + -19 + -25 + 29 + 26 + 13 + -49 + 49 + -40 + 7 + -47 + -43 + -11 + 24 + -5 + 22 + 47 + -43 diff --git a/test/spmm/vectors/y4.mtx b/test/spmm/vectors/y4.mtx new file mode 100644 index 00000000..838ab8f9 --- /dev/null +++ b/test/spmm/vectors/y4.mtx @@ -0,0 +1,1142 @@ +%%MatrixMarket matrix array real general +% Null vector +% + 1138 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 diff --git a/test/torture/psb_d_mvsv_tester.f90 b/test/torture/psb_d_mvsv_tester.f90 index 4ec87fa7..6d0b2c2f 100644 --- a/test/torture/psb_d_mvsv_tester.f90 +++ b/test/torture/psb_d_mvsv_tester.f90 @@ -22,10 +22,10 @@ contains ! 0 0 ! declaration of VA,IA,JA - integer(psb_ipk_) :: nnz=2 - integer(psb_ipk_) :: m=2 + integer(psb_ipk_) :: nnz=2 ! non zero + integer(psb_ipk_) :: m=2 ! integer(psb_ipk_) :: k=2 - integer(psb_ipk_) :: IA(2)=(/1, 1/) + integer(psb_ipk_) :: IA(2)=(/1, 1/) ! coordinate representation integer(psb_ipk_) :: JA(2)=(/1, 2/) real*8 :: VA(2)=(/1, 1/) real*8 :: x(2)=(/1, 1/)! reference x @@ -41,20 +41,20 @@ contains goto 9999 endif call psb_barrier(ctxt) - call psb_cdall(ctxt,desc_a,info,nl=m) + call psb_cdall(ctxt,desc_a,info,nl=m) ! specify index space m. Init desc_a if (info /= psb_success_)goto 9996 - call psb_spall(a,desc_a,info,nnz=nnz) + call psb_spall(a,desc_a,info,nnz=nnz) ! Init matrix a if (info /= psb_success_)goto 9996 call psb_barrier(ctxt) - call psb_spins(nnz,IA,JA,VA,a,desc_a,info) + call psb_spins(nnz,IA,JA,VA,a,desc_a,info) ! insert nnz values VA into matrix a in coordinates (IA, JA). Representation is given by the number of parameters: either COO or CSR. This one is COO if (info /= psb_success_)goto 9996 - call psb_cdasb(desc_a,info) + call psb_cdasb(desc_a,info) ! assemblatore comunicatore if (info /= psb_success_)goto 9996 - call psb_spasb(a,desc_a,info,afmt=afmt) + call psb_spasb(a,desc_a,info,afmt=afmt) ! "broadcast" the generated matrix. After this it can be used. Dovrebbe risolvere problemi di halo. afmt indicated the required format if(info.ne.0)print *,"matrix assembly failed" if(info.ne.0)goto 9996 - call psb_spmm(alpha,A,x,beta,y,desc_a,info,transa) + call psb_spmm(alpha,A,x,beta,y,desc_a,info,transa) !Sparse Matrix Dense Vectore Multiplication: alphaAx + betay. if(info.ne.0)print *,"psb_spmm failed" if(info.ne.0)goto 9996 do i=1,2