diff --git a/Makefile b/Makefile
index d2b8065..13f2097 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@ all: ripser ripser-coeff ripser-reduction ripser-coeff-reduction ripser-debug
ripser: ripser.cpp
- c++ -std=c++11 ripser.cpp -o ripser -Ofast -D NDEBUG
+ c++ -std=c++11 ripser.cpp -o ripser -Ofast -D NDEBUG -D PRINT_PERSISTENCE_PAIRS -D INDICATE_PROGRESS
ripser-coeff: ripser.cpp
c++ -std=c++11 ripser.cpp -o ripser-coeff -Ofast -D NDEBUG -D USE_COEFFICIENTS
@@ -21,7 +21,8 @@ ripser-debug: ripser.cpp
clean:
- rm -rf ripser ripser-coeff ripser-reduction ripser-coeff-reduction ripser-debug emscripten pnacl && NACL_SDK_ROOT=~/Source/nacl_sdk/pepper_49/ make -f Makefile_pnacl clean
+ yes| rm ripser ripser-coeff ripser-reduction ripser-coeff-reduction ripser-debug emscripten pnacl
+ #&& NACL_SDK_ROOT=~/Source/nacl_sdk/pepper_49/ make -f Makefile_pnacl clean
live: pnacl emscripten
diff --git a/README.md b/README.md
index 0c5a2e6..e64fea1 100644
--- a/README.md
+++ b/README.md
@@ -25,6 +25,7 @@ Input formats currently supported by Ripser:
- comma-separated values full distance matrix
- [DIPHA] distance matrix data
- point cloud data
+ - sparse space-separated lower triangular matrix. Each line corresponds to a row. Row n consists of pairs (k dist(n,k)), where n>k. This especially means that the first line is empty. All missing values are presumed infinite. See the examples. When using sparse matrices, the threshold is ignored -- use a python filter.
Ripser's efficiency is based on a few important concepts and principles:
@@ -109,4 +110,4 @@ Ripser is licensed under the [LGPL] 3.0. Please contact the author if you want t
[Perseus]:
[GUDHI]:
[sparsehash]:
-[LGPL]:
\ No newline at end of file
+[LGPL]:
diff --git a/examples/sphere_3_192.lower_distance_matrix.sparse.threshold1.0 b/examples/sphere_3_192.lower_distance_matrix.sparse.threshold1.0
new file mode 100644
index 0000000..9fa004e
--- /dev/null
+++ b/examples/sphere_3_192.lower_distance_matrix.sparse.threshold1.0
@@ -0,0 +1,192 @@
+
+
+1 0.920778
+1 0.375817 2 0.586113
+
+0 0.916373
+0 0.185211
+0 0.693814 5 0.524761 6 0.804527
+4 0.588045
+1 0.693387 3 1.00594 4 0.6561 8 0.401576
+0 0.855067 5 0.613495 6 0.941014 7 0.200333
+4 0.231179 8 0.792794 9 0.863212
+2 0.617515 3 0.864858
+
+0 0.65706 4 0.922642 6 0.63549 11 0.789805
+1 0.53904 2 0.857563 3 0.448892 5 0.94607
+8 1.01434
+2 0.757279 10 0.950995 13 0.680141
+2 0.881271 12 1.00568 13 0.439355 17 0.502416
+2 0.708398 12 0.796307 13 0.66447 17 0.571517 18 0.237316
+1 0.932799 2 0.354112 3 0.593158 12 0.943208 15 0.661629 17 0.638039 18 0.956103 19 0.858389
+1 0.825573 3 0.942885 8 0.722728 9 0.60904 12 0.672518
+1 0.23879 2 0.744896 3 0.169115 9 0.910244 12 0.980719 15 0.381084 20 0.717499 21 0.949433
+1 0.738307 3 0.971098 4 0.74155 5 0.783719 9 0.881203 11 0.727244 15 0.706576 22 0.824956
+14 1.01536 16 0.0633425
+1 0.670627 2 0.559498 3 0.532104 9 0.96984 12 0.387245 15 0.951241 20 0.823293 21 0.586931 22 0.635738
+0 0.0853842 5 0.96398 6 0.174111 7 0.770854 10 0.930954 14 0.576485
+0 0.643286 4 0.820147 6 0.671768 11 0.657854 14 0.176636 26 0.569394
+13 0.336643 17 0.986907 18 0.688818 19 0.874996
+0 0.530267 4 0.874587 6 0.592646 11 0.688519 14 0.288354 26 0.46308 27 0.151879
+12 0.520655 16 0.90726 19 0.996814 21 0.637788 24 0.959764 25 0.799539
+0 0.912694 5 0.252863 7 0.341855 10 0.379453 15 0.991016 23 0.984825 26 0.975594
+1 0.574945 3 0.914817 4 0.64864 8 0.54433 9 0.168587 11 0.837278 15 1.00662 21 0.705239 22 0.799471 23 0.738915 25 0.96645
+0 0.0814685 5 0.961788 6 0.173684 7 0.767349 10 0.927511 14 0.580209 26 0.00391946 27 0.572785 29 0.466103 31 0.972731
+0 0.946102 4 0.433403 5 0.997242 8 0.955549 11 0.208851 14 0.649351 23 0.807349 26 0.902445 27 0.49478 29 0.500744 32 1.01997 33 0.904429
+4 0.693378 8 0.162738 9 0.542064 11 0.877326 16 0.871347 21 0.732709 24 0.900116 32 0.690588 34 1.01836
+0 0.273482 5 0.799694 6 0.368834 7 0.453052 10 0.606549 14 0.909006 26 0.357629 27 0.886081 29 0.766912 31 0.729943 33 0.353776
+1 0.621256 3 0.675514 5 0.763446 15 0.276383 20 0.899073 22 0.561628 23 0.46675 31 0.869752 32 0.951758
+0 0.988645 6 0.870207 10 1.01812 13 0.461814 18 0.874937 26 1.0163 28 0.301331 33 1.01493 36 0.90487
+1 0.735528 2 0.820882 3 0.735347 8 0.989125 9 0.802004 12 0.437096 21 0.310257 22 0.788926 25 0.287316 30 0.646305 32 0.843697 35 1.01075
+1 0.673864 2 0.957653 3 0.768004 8 0.835253 9 0.630279 12 0.612634 21 0.193804 22 0.781909 25 0.428368 30 0.728846 32 0.682559 35 0.872265 39 0.184757
+0 0.531651 5 0.525224 6 0.704872 7 0.656598 10 0.836064 11 0.837086 14 0.819273 23 0.94609 26 0.549429 27 0.691322 29 0.552645 31 0.657677 33 0.548424 34 0.669371 36 0.571566
+0 0.924244 6 0.916287 7 0.582372 10 0.474843 13 0.672219 17 0.786668 18 0.957368 26 0.991309 28 0.807317 31 0.834812 33 0.988227 36 0.698602 38 0.606907
+0 0.709904 6 0.560484 14 0.523358 16 0.872074 24 0.814681 26 0.651037 27 0.680288 29 0.726882 33 0.653632 36 0.901659 38 0.916574
+1 0.740853 2 0.559643 3 0.445398 15 0.374531 17 0.866331 20 0.297386 22 0.516885 25 0.856509 37 0.624693
+0 0.780627 6 0.67683 14 0.344005 16 0.814987 24 0.760821 26 0.706865 27 0.516661 29 0.608727 33 0.710235 34 0.949682 36 1.00721 43 0.255364
+4 0.849319 8 0.754764 11 0.880018 14 0.630948 16 0.610961 24 0.58991 27 0.716832 29 0.856401 34 0.889363 35 0.655113 43 0.777786 45 0.561426
+2 0.967133 5 1.00485 7 0.7951 10 0.607973 13 0.867835 17 0.400365 18 0.852719 19 0.943223 20 0.716108 31 0.797431 42 0.611541 44 0.821859
+2 0.758667 3 0.983663 12 0.154095 19 0.837441 21 0.628115 25 0.495773 30 0.370337 39 0.45635 40 0.613874
+0 0.614648 4 0.914746 5 0.583043 6 0.776416 7 0.783334 10 0.954395 11 0.707129 14 0.775264 23 0.86915 26 0.614992 27 0.62862 29 0.501447 31 0.750125 33 0.614813 34 0.538428 36 0.692725 41 0.141103
+1 0.795785 2 0.503301 3 0.481755 15 0.453047 17 0.799517 20 0.218561 22 0.571655 25 0.849552 37 0.698633 44 0.0802451 47 0.779401
+13 0.779394 16 0.84172 18 0.77945 19 0.806586 24 0.850288 28 0.62495 30 0.81335 38 0.888712 48 0.982965
+0 0.998031 6 0.869703 13 0.493826 18 0.896144 26 1.01951 28 0.276431 33 1.01841 36 0.934734 38 0.076909 42 0.678433 43 0.870666 51 0.842849
+0 0.63814 6 0.46639 13 0.948533 14 0.862982 26 0.632253 27 0.969335 28 0.723107 29 0.948785 33 0.632275 36 0.695833 38 0.517928 42 0.866257 43 0.45726 45 0.696125 52 0.487279
+0 0.355419 5 0.702283 6 0.524357 7 0.704794 10 0.888715 11 0.872729 14 0.665974 26 0.358167 27 0.559993 29 0.412572 31 0.791397 33 0.357672 34 0.685426 36 0.475552 41 0.205129 43 0.934278 45 0.913792 49 0.266918 53 0.959959
+12 0.785304 13 0.83682 18 0.649451 19 0.583151 28 0.81436 30 0.634418 48 0.713024 51 0.334523
+0 0.554281 6 0.376457 14 0.653625 24 1.0178 26 0.519375 27 0.772779 28 0.913952 29 0.766622 33 0.52072 36 0.699665 38 0.733741 43 0.266643 45 0.49259 46 1.01157 52 0.700722 53 0.227524 54 0.851587
+2 0.977881 10 0.948609 13 0.396994 17 0.297053 18 0.377019 19 0.559989 20 0.909745 28 0.720922 38 0.775486 42 0.642545 47 0.538973 52 0.825841 55 0.984092
+2 0.859598 12 0.842665 13 0.594687 17 0.692237 18 0.236525 19 0.179609 20 1.01713 28 0.753672 30 0.944238 38 0.985753 48 0.851439 51 0.641309 52 0.989912 55 0.439977 57 0.606565
+0 0.766296 4 0.640039 5 0.863406 6 0.881272 11 0.417271 14 0.603931 23 0.858002 26 0.729392 27 0.433196 29 0.374138 33 0.73101 34 0.217485 36 0.925396 41 0.46807 45 0.922837 46 0.989941 49 0.339394 54 0.478334
+2 0.769491 12 0.450813 13 1.00404 17 0.997743 18 0.66943 19 0.48067 21 1.01053 25 0.80719 30 0.55278 39 0.851097 40 1.00245 48 0.424333 51 0.702707 55 0.379849 57 1.00103 58 0.454956
+0 0.546149 5 0.771289 6 0.606781 7 0.284319 10 0.37151 26 0.62698 29 1.01302 31 0.617928 33 0.623284 36 0.279354 38 0.829538 41 0.734718 42 0.457212 47 0.886805 49 0.863294 52 0.879121 53 0.794395 54 0.70028 56 0.867056
+0 0.763162 5 0.42956 6 0.88496 7 0.111798 10 0.217107 26 0.836198 31 0.231288 33 0.832874 36 0.541052 41 0.645181 42 0.657583 47 0.780563 49 0.764569 54 0.724991 61 0.394441
+2 0.763717 10 0.86488 13 0.786449 17 0.147289 18 0.643615 19 0.700468 20 0.57698 42 0.771515 44 0.775885 47 0.280747 50 0.713088 57 0.406402 58 0.825698
+1 0.909184 4 0.318147 8 0.367872 9 0.349816 11 0.541768 21 0.907068 23 0.788506 32 0.376021 34 0.738121 35 0.517711 40 0.94965 46 0.923841 59 0.931404
+8 0.743017 16 0.305405 21 0.965006 24 0.346195 30 0.863792 35 0.589517 45 0.920635 46 0.51966
+1 0.934212 3 0.888359 5 0.521797 7 0.872594 10 0.840619 15 0.468406 20 0.869296 22 0.826889 23 0.684927 31 0.559643 37 0.358996 41 0.994704 44 0.64411 47 0.882037 49 1.01551 50 0.696872 62 0.771731
+5 0.157373 7 0.555867 10 0.592432 15 0.834049 23 0.788935 31 0.224873 36 0.89251 37 0.6759 41 0.675035 44 0.973523 47 0.902029 49 0.730298 50 1.01007 54 0.844134 59 0.993083 61 0.819505 62 0.449219 66 0.387966
+0 0.582003 6 0.447477 14 0.415003 16 0.984234 24 0.929254 26 0.515451 27 0.559609 29 0.590066 33 0.518399 34 1.01723 36 0.799139 38 0.967281 41 0.978062 43 0.155563 45 0.25532 46 0.801208 49 0.991444 52 0.931548 53 0.48458 54 0.795132 56 0.261887 59 0.936347 61 1.00968
+0 0.995782 6 0.979752 7 0.657558 10 0.536539 13 0.59899 17 0.71799 18 0.878926 28 0.760868 31 0.890891 36 0.778519 38 0.585655 42 0.0884133 47 0.578093 52 0.658679 53 0.895598 57 0.55954 61 0.542821 62 0.726223 63 0.713679
+4 0.669011 8 0.0857401 9 0.427589 11 0.86886 16 0.967912 21 0.66622 24 0.998416 32 0.581256 35 0.119132 39 0.942901 40 0.792909 46 0.759094 64 0.446637 65 0.690161
+0 0.976648 4 0.400453 8 0.878632 9 1.01807 11 0.217459 14 0.585687 23 0.897308 26 0.924231 27 0.450292 29 0.496765 32 1.01277 33 0.926637 34 0.133722 35 0.928008 41 0.765941 45 0.871438 46 0.768628 49 0.642546 54 0.753488 59 0.312477 64 0.701331 68 0.968648 70 0.946437
+12 0.728657 13 0.924001 16 0.983048 18 0.726202 19 0.637963 24 1.01257 28 0.89488 30 0.541947 48 0.64291 51 0.378602 55 0.0970981 58 0.510895 60 0.352356
+0 0.723464 6 0.691761 7 0.581968 10 0.560799 13 0.753136 17 1.00448 26 0.787718 28 0.778373 31 0.888343 33 0.784715 36 0.520987 38 0.513766 42 0.254587 47 0.844729 52 0.574597 53 0.647438 54 0.965057 56 0.802967 57 0.834276 61 0.347692 62 0.681533 63 0.998669 68 1.01027 69 0.317255
+0 0.511131 6 0.346507 14 0.541183 24 1.01217 26 0.460741 27 0.662405 28 1.01704 29 0.661063 33 0.462828 36 0.697196 38 0.84127 41 0.966596 43 0.223577 45 0.40778 46 0.940966 49 1.00222 52 0.810296 53 0.342693 54 0.782683 56 0.118595 59 0.999872 61 0.893608 68 0.158413 73 0.872357
+1 0.713881 2 0.292286 3 0.426032 12 0.499161 15 0.816946 17 1.01959 19 0.90752 20 0.553185 21 0.856617 22 0.580677 25 0.288937 30 0.97735 39 0.569963 40 0.699609 44 0.628827 48 0.643128 50 0.606062 60 0.814999
+0 0.828048 5 0.430318 6 0.945423 7 0.16395 10 0.190642 26 0.900227 31 0.202105 33 0.896948 36 0.605094 41 0.699432 42 0.653254 47 0.724241 49 0.813556 54 0.787022 61 0.440584 62 0.0714516 63 0.978749 66 0.726544 67 0.424464 69 0.716445 73 0.70357
+1 0.368142 3 0.636748 4 0.914634 9 0.74695 11 0.982032 15 0.493789 22 0.474628 23 0.385522 25 1.00509 32 0.589267 37 0.391946 40 0.96831 44 0.827078 50 0.897153 64 0.818903 66 0.73421 67 0.984194 75 1.01311
+0 0.873809 4 0.570592 5 0.821222 6 0.99568 11 0.349622 14 0.729715 23 0.727991 26 0.844975 27 0.56333 29 0.513413 33 0.846242 34 0.197758 36 1.00528 41 0.507222 49 0.369543 54 0.567515 59 0.142834 64 0.856152 67 0.942286 71 0.327611
+8 0.909164 14 0.950186 16 0.169084 24 0.164815 30 0.999024 35 0.765713 43 0.837525 45 0.733223 46 0.449999 51 0.990967 65 0.238181 68 0.932587 70 0.870814
+2 0.739613 3 0.933429 7 0.979788 10 0.815137 15 0.799369 17 0.460284 18 0.927017 19 0.938528 20 0.432714 22 1.00809 31 0.875385 37 0.945682 42 0.902572 44 0.527537 47 0.314533 50 0.480131 57 0.712424 62 0.935743 63 0.322581 66 0.747961 67 0.903251 69 0.871739 75 0.954958 76 0.87323
+2 0.83097 12 0.229796 19 0.887956 21 0.587904 25 0.538248 30 0.298248 39 0.454557 40 0.597327 48 0.0800348 51 0.965788 55 0.711231 58 0.888765 60 0.458608 72 0.634242 75 0.706752
+8 0.923002 14 0.689905 16 0.426498 24 0.388976 27 0.816835 29 0.945476 35 0.803232 43 0.655258 45 0.491179 46 0.24348 56 0.900769 65 0.45842 68 0.723261 70 0.910212 71 0.960264 74 0.850895 79 0.285561
+0 0.502203 6 0.32467 14 0.623915 26 0.465442 27 0.735977 28 0.951947 29 0.722682 33 0.466845 36 0.658126 38 0.762196 41 0.980658 43 0.285418 45 0.491903 46 1.01532 52 0.733664 53 0.258372 54 0.800594 56 0.0559886 61 0.837921 68 0.248185 73 0.795151 74 0.0911869 82 0.916973
+1 0.991684 2 0.276342 3 0.718627 12 0.360737 17 0.888151 18 0.851524 19 0.638929 20 0.621617 21 0.939792 22 0.868895 25 0.447843 30 0.842825 39 0.664859 40 0.82923 44 0.80727 48 0.501731 50 0.759887 55 0.891721 58 0.756418 60 0.541269 63 0.932088 72 0.871871 75 0.310381 80 0.969075 81 0.578563
+0 0.911761 5 0.646484 6 0.991361 7 0.266852 10 0.0672609 17 0.892912 26 0.986627 31 0.406106 33 0.983233 36 0.664477 38 1.01626 41 0.893254 42 0.457532 47 0.543556 49 1.00833 54 0.948211 57 0.899295 61 0.421825 62 0.273327 63 0.804007 66 0.830029 67 0.610068 69 0.510992 73 0.573842 76 0.234697 80 0.756841
+0 0.740554 4 0.648219 5 0.935474 6 0.840648 11 0.432658 14 0.51375 23 0.935247 26 0.694423 27 0.341331 29 0.297567 33 0.696474 34 0.226752 36 0.922781 41 0.513962 43 0.983962 45 0.838239 46 0.916206 49 0.397989 54 0.485608 59 0.0959228 64 0.940897 68 0.86158 71 0.281136 74 0.93451 78 0.228407 83 0.991493
+1 0.581292 3 0.769285 4 0.930629 5 0.818694 9 0.919624 11 0.941067 15 0.478258 22 0.622806 23 0.240869 31 0.978465 32 0.767117 37 0.253163 44 0.833113 50 0.905302 64 0.915619 66 0.556737 67 0.776559 77 0.237571 78 0.940656
+0 0.529517 4 0.992582 6 0.515593 11 0.840326 14 0.133525 26 0.447473 27 0.196639 29 0.229422 33 0.451258 34 0.678787 36 0.788044 41 0.731546 43 0.511386 45 0.39399 46 0.753499 49 0.70532 53 0.792966 54 0.561462 56 0.587756 59 0.589961 68 0.376364 71 0.639641 74 0.473881 78 0.72339 82 0.794417 83 0.549673 86 0.507174
+2 0.815751 12 0.374171 18 0.807007 19 0.623253 21 0.889009 25 0.747401 30 0.413186 39 0.748595 40 0.895589 48 0.305732 51 0.733711 55 0.428295 58 0.594547 60 0.149017 72 0.36824 75 0.807555 81 0.325281 84 0.566025
+12 0.896858 13 0.685129 17 0.999092 18 0.534579 19 0.523394 28 0.672426 30 0.788554 38 0.947621 48 0.843137 51 0.303494 52 0.923945 55 0.164809 57 0.861476 58 0.354747 60 0.475858 72 0.261221 81 0.849216 84 0.947979 89 0.557281
+0 0.868958 6 0.701193 13 0.86222 14 0.974155 16 0.98639 24 0.939493 26 0.856377 28 0.576411 33 0.856796 36 0.923676 38 0.471748 42 0.96665 43 0.497369 45 0.734523 51 0.888491 52 0.409968 53 0.253227 56 0.388233 61 0.989703 68 0.591551 69 0.973915 73 0.788097 74 0.495553 82 0.978846 83 0.439095 88 0.934083
+16 0.588087 19 1.01478 24 0.610336 28 0.8685 30 0.664993 48 0.93383 51 0.304062 55 0.476321 58 0.869777 60 0.779356 65 0.783744 72 0.45323 79 0.747194 81 0.893256 82 0.965743 89 0.750057 90 0.539355 91 0.969468
+8 0.736571 9 0.986065 16 0.480977 21 0.741137 24 0.539242 30 0.616249 35 0.597254 39 0.960137 40 0.915444 46 0.772938 48 0.929413 51 1.00259 65 0.285416 70 0.663084 72 0.954609 79 0.494551 81 0.857818 82 0.731174 89 0.985108 92 0.731989
+13 0.147203 17 0.692663 18 0.34298 19 0.557261 28 0.361078 38 0.562463 42 0.805861 47 0.93584 51 0.672973 52 0.578656 55 0.703607 57 0.434385 58 0.46431 60 0.877597 63 0.814265 69 0.732476 72 0.7935 73 0.886533 89 0.994812 90 0.548808 91 0.911604 92 0.951368
+0 0.184219 5 0.784223 6 0.330316 7 0.518247 10 0.688076 14 0.816356 26 0.266513 27 0.78161 29 0.656055 31 0.753824 33 0.262721 34 1.00806 36 0.122089 38 0.987306 41 0.48033 42 0.811447 43 0.867159 45 0.946645 49 0.594889 52 1.01044 53 0.725238 54 0.361515 56 0.689824 59 0.818184 61 0.391665 62 0.590443 67 0.893301 68 0.750111 69 0.889443 73 0.635303 74 0.666734 76 0.657379 78 0.904684 83 0.642757 85 0.748091 86 0.8133 88 0.69308 91 0.955289
+1 0.248323 2 0.733745 3 0.157251 9 0.91781 12 0.973301 15 0.382554 20 0.707604 21 0.94977 22 0.0120098 23 0.835007 25 0.62882 32 0.808337 37 0.567924 39 0.785723 40 0.781491 44 0.509322 50 0.563239 66 0.829334 75 0.570181 77 0.486023 80 1.00142 84 0.858785 87 0.632473
+5 0.518164 7 0.391384 10 0.270716 15 0.978704 17 0.906834 20 1.007 31 0.281435 36 0.82505 37 0.93519 41 0.899615 42 0.675795 44 0.94858 47 0.531636 49 0.996222 50 0.951479 54 1.00179 57 0.988258 61 0.62663 62 0.31959 63 0.79108 66 0.602692 67 0.431572 69 0.713907 73 0.804629 76 0.248903 80 0.646297 85 0.24546 95 0.883778
+12 0.520629 16 0.911254 21 0.590257 24 0.964796 25 0.779387 30 0.0515157 35 1.0051 39 0.611505 40 0.686943 48 0.37163 51 0.85722 55 0.683009 58 0.984969 60 0.590855 65 0.850317 70 1.00656 72 0.59133 75 0.969319 79 0.995644 81 0.295388 84 0.850437 89 0.449614 90 0.835577 92 0.701238 93 0.595584
+1 0.959906 2 0.797305 3 0.738845 5 0.86838 7 1.0048 10 0.887355 15 0.477153 17 0.797302 20 0.466933 22 0.767434 31 0.785999 37 0.614253 44 0.325593 47 0.60839 50 0.337192 62 0.928493 63 0.670634 66 0.447823 67 0.723994 75 0.91871 76 0.866679 77 0.93025 80 0.358825 85 0.845474 87 0.850239 96 0.763211 97 0.649338
+13 0.0831358 17 0.756357 18 0.505517 19 0.723848 28 0.25725 38 0.391988 42 0.679273 47 0.926031 51 0.749352 52 0.418378 53 0.88157 55 0.840183 57 0.47524 58 0.639726 63 0.858321 69 0.612384 72 0.927014 73 0.731738 90 0.687779 91 0.7872 92 1.01457 94 0.182332
+0 0.807604 6 0.774183 7 0.618331 10 0.56747 13 0.680965 17 0.928179 26 0.870557 28 0.736423 31 0.909418 33 0.867626 36 0.604457 38 0.488429 42 0.18428 47 0.784248 52 0.555796 53 0.697018 56 0.863963 57 0.750626 61 0.412059 62 0.711363 63 0.927487 69 0.234159 73 0.0910892 74 0.937978 76 0.724821 83 0.8602 85 0.569802 91 0.813039 94 0.817353 95 0.718097 97 0.798111 100 0.665339
+13 0.474806 18 0.744396 19 0.897375 28 0.176306 38 0.434233 42 0.963027 43 0.990756 51 0.478772 52 0.385263 53 0.749388 55 0.717751 56 0.915232 57 0.846418 58 0.753943 69 0.920406 72 0.792019 73 0.918435 74 1.01344 83 0.959045 90 0.59021 91 0.554731 92 0.711788 94 0.451499 100 0.405456 101 0.885348
+0 0.918568 5 0.269257 7 0.337026 10 0.366579 15 0.990641 23 0.995835 26 0.982121 31 0.0173134 33 0.97923 36 0.73225 37 0.873909 41 0.671775 42 0.822851 47 0.781682 49 0.765019 54 0.803041 61 0.613746 62 0.226309 66 0.560682 67 0.234925 69 0.878317 73 0.880343 76 0.192406 80 0.862051 85 0.391629 87 0.986215 95 0.75881 97 0.264384 99 0.777528 101 0.900056
+13 0.539108 16 0.993614 18 0.773141 19 0.909436 24 0.975764 28 0.254005 38 0.502272 43 0.980908 51 0.415403 52 0.44867 53 0.774433 55 0.677202 56 0.926433 57 0.901175 58 0.758962 60 1.00071 69 0.989162 72 0.747075 73 0.981978 83 0.972016 90 0.559978 91 0.564758 92 0.640054 94 0.501125 100 0.474021 101 0.951877 102 0.0782455
+1 0.476282 3 0.779483 4 0.764991 8 0.973102 9 0.665742 11 0.837584 15 0.643853 22 0.621038 23 0.301788 32 0.505367 34 0.968238 37 0.499315 40 0.996642 44 0.973122 64 0.684464 66 0.815554 67 1.01004 77 0.165314 78 0.939803 87 0.276502 96 0.632397
+1 0.755503 4 0.552978 8 0.357328 9 0.108768 11 0.765679 21 0.700683 22 0.971105 23 0.844427 32 0.195107 34 0.954078 35 0.51158 39 0.899515 40 0.731218 64 0.242216 70 0.403528 71 0.922978 77 0.758826 87 0.910975 93 1.00414 96 0.979239 105 0.657139
+2 0.831128 5 1.00923 7 0.899013 10 0.724093 13 0.991158 15 0.892317 17 0.419741 18 0.897466 19 0.940233 20 0.545389 31 0.829698 37 1.01441 42 0.790616 44 0.643203 47 0.192356 50 0.598691 57 0.641267 62 0.86397 63 0.274611 66 0.786406 67 0.887768 69 0.759551 73 1.01215 76 0.802252 80 0.123527 85 0.662721 97 0.580726 99 0.444822 101 0.956514 103 0.815151
+0 0.755415 5 0.189251 6 0.920594 7 0.491805 10 0.633985 11 1.01212 23 0.849134 26 0.800296 27 1.0028 29 0.875534 31 0.346297 33 0.79819 34 0.893936 36 0.666106 37 0.909901 41 0.344937 49 0.422064 54 0.522061 59 0.73288 61 0.695095 62 0.425901 66 0.700183 67 0.342286 71 1.00358 73 1.00828 76 0.456776 78 0.714406 85 0.681754 86 0.798922 87 0.927558 95 0.63159 97 0.618252 103 0.3628
+1 0.74298 4 0.397486 8 0.635417 9 0.437984 11 0.549649 21 1.00428 22 0.938184 23 0.521109 32 0.33836 34 0.735468 35 0.784873 37 0.879264 40 0.990633 59 0.89907 64 0.28968 70 0.704238 71 0.751291 77 0.567904 78 0.790403 86 0.937349 87 0.649223 96 0.948454 105 0.41634 106 0.366465
+0 0.795903 5 0.877309 6 0.823389 7 0.386141 10 0.309419 13 0.860653 17 0.912624 26 0.870647 28 0.965134 31 0.66992 33 0.867228 36 0.545412 38 0.739732 41 0.963094 42 0.205389 47 0.661458 52 0.804474 53 0.880568 54 0.949973 56 1.0054 57 0.814472 61 0.277191 62 0.471105 63 0.870064 67 0.876314 69 0.289547 73 0.266063 76 0.47702 80 0.932006 83 0.989323 85 0.315186 94 0.988924 95 0.657833 97 0.554788 100 0.863423 101 0.263935 103 0.659275 107 0.824794 108 0.856261
+2 0.227953 3 0.796809 12 0.577814 17 0.663862 18 0.686434 19 0.493797 20 0.493465 22 0.948914 25 0.663827 30 1.00431 39 0.887561 44 0.74447 47 0.954105 48 0.699848 50 0.680128 55 0.90086 57 0.843091 58 0.648427 60 0.59736 63 0.71343 72 0.907263 75 0.4565 80 0.786926 81 0.773599 84 0.243033 89 0.674506 90 0.914775 94 0.998346 96 0.938363 98 1.01972 99 0.928527 107 0.853224
+1 0.935078 2 0.733641 3 0.692832 5 0.929306 10 0.938015 15 0.469704 17 0.775084 20 0.401175 22 0.733921 31 0.848642 37 0.635379 44 0.266592 47 0.621359 50 0.271072 62 0.985627 63 0.653658 66 0.502754 67 0.78723 75 0.858588 76 0.92441 77 0.93195 80 0.347806 84 0.983438 85 0.894539 87 0.869215 96 0.728808 97 0.707122 99 0.0692368 103 0.840123 107 0.447559 111 0.870015
+0 1.00859 6 0.951704 7 0.820497 10 0.730842 13 0.444156 17 0.78438 18 0.807819 19 1.01634 28 0.555061 36 0.832045 38 0.375625 42 0.268229 47 0.746266 52 0.450744 53 0.76456 56 0.958458 57 0.555048 58 0.988317 61 0.648425 62 0.899167 63 0.818824 69 0.222547 73 0.329768 76 0.89916 83 0.968104 85 0.713896 91 0.803831 94 0.586477 95 0.938433 97 0.915916 100 0.434963 101 0.247747 102 0.72049 104 0.792774 107 0.917577 110 0.453805
+1 1.0066 8 0.655482 9 0.671086 12 0.754119 16 0.983844 21 0.215759 25 0.760163 30 0.552116 32 0.79919 35 0.619325 39 0.487134 40 0.406297 48 0.668945 60 1.01341 64 0.915414 65 0.773429 70 0.58264 75 1.01809 79 0.98425 81 0.608696 89 0.883206 93 0.53651 98 0.502741 106 0.742116
+13 0.865465 16 0.673382 18 1.01122 24 0.65758 28 0.594737 30 1.01471 38 0.781446 43 0.883297 45 1.01156 51 0.347388 52 0.715904 53 0.853278 55 0.670071 56 0.928656 58 0.928086 60 1.01378 65 0.942001 68 1.01707 72 0.700062 74 0.997732 79 0.81027 82 0.935097 83 0.97785 90 0.631264 91 0.617551 92 0.385921 93 0.99218 94 0.809786 100 0.807852 102 0.426378 104 0.352585
+1 0.530723 2 0.813122 3 0.576869 8 0.970284 9 0.704771 12 0.594786 15 0.956064 20 1.01618 21 0.395998 22 0.60416 25 0.291293 30 0.845907 32 0.708809 39 0.215922 40 0.204208 44 0.974576 48 0.646129 50 0.989558 60 1.0091 64 1.0192 70 0.940488 75 0.538231 77 0.863181 81 0.654907 84 0.726668 89 0.92412 96 0.602402 98 0.811246 105 0.922499 106 0.804814 109 1.00196 111 0.930137 114 0.603343
+0 0.782073 4 0.615605 5 0.896831 6 0.890788 11 0.393372 14 0.584518 23 0.869042 26 0.741857 27 0.413861 29 0.367442 33 0.743637 34 0.189106 36 0.947928 41 0.502891 45 0.904188 46 0.958295 49 0.375993 54 0.504811 59 0.037954 64 0.909655 68 0.927293 71 0.276811 74 0.996327 78 0.154423 86 0.0743236 88 0.578256 95 0.840577 108 0.768048 109 0.88764
+8 0.548526 9 0.747305 12 0.984272 16 0.732067 21 0.514771 24 0.784286 30 0.641968 32 0.898091 35 0.44096 39 0.782281 40 0.699304 46 0.859574 48 0.877406 64 0.882251 65 0.482958 70 0.46583 79 0.710019 81 0.808664 82 0.890377 89 1.01625 92 0.95155 93 0.277127 98 0.603248 106 0.779059 114 0.311392 116 0.886926
+0 0.274826 5 0.802143 6 0.368354 7 0.453547 10 0.606186 14 0.910303 26 0.358896 27 0.88801 29 0.769172 31 0.731497 33 0.355046 36 0.00367531 38 0.90161 41 0.575087 42 0.695946 43 0.900839 45 1.00727 49 0.696156 52 0.931543 53 0.693338 54 0.478901 56 0.698138 59 0.928389 61 0.277582 62 0.542009 67 0.894521 68 0.798759 69 0.775845 73 0.5177 74 0.69625 76 0.605885 78 1.00833 83 0.656757 85 0.663955 86 0.925606 88 0.789387 91 0.921173 95 0.125096 97 0.825393 101 0.601282 103 0.733725 108 0.669015 110 0.54324 113 0.828925 117 0.950856
+0 0.417354 6 0.3797 11 0.953008 14 0.264012 26 0.33364 27 0.327986 29 0.308544 33 0.337491 34 0.786028 36 0.679455 41 0.719573 43 0.453015 45 0.412747 46 0.851088 49 0.721183 53 0.674157 54 0.531523 56 0.47366 59 0.671267 61 0.930669 68 0.301986 71 0.760739 74 0.362032 78 0.804069 82 0.858553 83 0.429537 86 0.599008 88 0.142537 91 0.838051 95 0.592135 108 1.01549 117 0.666254 119 0.680441
+0 0.96432 5 0.299859 7 0.367204 10 0.366892 15 0.956038 23 0.998934 31 0.0694494 36 0.774395 37 0.850525 41 0.722733 42 0.820031 44 1.01117 47 0.740467 49 0.812612 54 0.854024 61 0.642208 62 0.25841 63 0.983992 66 0.527365 67 0.234583 69 0.871228 73 0.893376 76 0.211396 80 0.812535 85 0.382464 87 0.975729 95 0.805107 97 0.223232 99 0.727175 101 0.907582 103 0.0560443 107 0.767456 108 0.411128 110 0.66509 112 0.79031 119 0.775712
+5 0.216795 7 0.553427 10 0.568306 15 0.809719 23 0.819848 31 0.216778 36 0.912347 37 0.669639 41 0.728187 42 1.00211 44 0.930642 47 0.848338 49 0.786888 50 0.964898 54 0.891257 61 0.820356 62 0.445217 66 0.358901 67 0.0637053 76 0.410989 77 0.99223 78 0.997782 80 0.846016 85 0.579655 87 0.789807 95 0.920906 97 0.38496 99 0.67081 103 0.222544 107 0.830586 108 0.396405 110 0.856971 112 0.735153 119 0.91415 121 0.207261
+8 0.990956 16 0.324571 21 0.945323 24 0.384311 30 0.606478 35 0.853044 46 0.838388 48 0.94889 51 0.754016 55 0.83732 60 1.00018 65 0.364049 70 0.925507 72 0.776228 79 0.43673 81 0.882974 82 0.710909 89 0.91025 90 0.939566 92 0.463778 93 0.293192 98 0.610299 114 0.758604 115 0.728459 118 0.556595
+6 0.897955 14 0.81509 16 0.572296 24 0.514293 26 1.00058 27 0.973117 28 0.905379 33 1.0027 38 0.906966 43 0.388951 45 0.489308 46 0.758845 51 0.880236 52 0.841876 53 0.623043 56 0.556737 65 0.819722 68 0.538996 74 0.57815 79 0.599436 82 0.545935 83 0.600679 88 0.843711 91 0.480527 92 0.799517 93 1.01622 102 0.802121 104 0.764441 115 0.558863 120 0.814838 123 0.83834
+8 0.85677 14 0.838449 16 0.308235 24 0.290482 27 0.953426 35 0.720415 43 0.789206 45 0.647296 46 0.310216 65 0.296516 68 0.867206 70 0.829974 74 0.984355 79 0.143085 82 0.165907 88 0.942077 92 0.875426 93 0.574705 115 0.908251 118 0.750311 120 1.00543 123 0.566573 124 0.614939
+0 0.616009 6 0.489033 14 0.387193 16 0.953548 24 0.898454 26 0.54684 27 0.540156 29 0.582794 33 0.549934 34 0.998937 36 0.837445 38 1.00144 41 0.99248 43 0.15244 45 0.207016 46 0.756238 49 0.999132 52 0.964047 53 0.525411 54 0.8118 56 0.305509 59 0.927213 68 0.048826 71 0.944823 74 0.206291 79 0.896249 82 0.680332 83 0.295111 86 0.849867 88 0.36331 91 0.618015 95 0.785006 115 1.01701 117 0.916273 119 0.837179 120 0.307197 124 0.525168 125 0.826908
+1 0.974157 4 0.204544 8 0.705691 9 0.653791 11 0.283563 23 0.547927 27 0.91899 29 0.942729 32 0.593916 34 0.472127 35 0.830911 37 0.972443 41 0.991073 49 0.869345 59 0.648522 64 0.367522 70 0.784389 71 0.496392 77 0.746516 78 0.542126 86 0.685375 87 0.746296 105 0.590762 106 0.561087 109 0.275649 117 0.634379
+4 0.47669 8 0.780042 9 1.01538 11 0.40738 14 0.492148 26 0.965631 27 0.428688 29 0.54249 33 0.968641 34 0.38884 35 0.788406 41 0.944176 43 0.937094 45 0.71372 46 0.52441 49 0.838693 54 0.887068 59 0.525702 64 0.714768 65 0.972673 68 0.868808 70 0.836096 71 0.2576 74 0.994676 78 0.572836 79 0.945019 82 0.729927 86 0.461018 88 0.592078 106 0.923836 109 0.853156 117 0.489039 120 0.726641 125 0.817425 126 0.834901 127 0.640564
+2 0.662692 12 0.562891 13 0.872634 17 0.792789 18 0.484264 19 0.266635 20 0.908085 25 0.860987 28 1.01687 30 0.768031 39 0.968525 48 0.590589 51 0.771511 55 0.473081 57 0.810909 58 0.301887 60 0.228917 63 0.903045 72 0.490761 75 0.788836 81 0.641588 84 0.494072 89 0.370793 90 0.49419 92 0.915561 94 0.752136 98 0.803118 100 0.917898 102 0.996581 104 0.988213 111 0.454345
+0 0.670187 4 0.740977 6 0.731652 11 0.556624 14 0.310242 26 0.605959 27 0.134886 29 0.148506 33 0.608874 34 0.375821 36 0.894265 41 0.61147 43 0.80263 45 0.645258 46 0.786901 49 0.529059 54 0.511508 56 0.876272 59 0.301134 64 1.01746 68 0.679931 71 0.354816 74 0.769945 78 0.432662 82 0.910747 83 0.836892 86 0.207714 88 0.314683 95 0.784962 108 0.921132 117 0.280953 119 0.89661 120 0.427584 126 0.663952 127 0.821575 128 0.408418
+14 0.908738 16 0.329636 24 0.270996 28 1.01548 43 0.592492 45 0.602854 46 0.658809 51 0.824235 52 1.00912 53 0.853287 56 0.78586 65 0.59827 68 0.72748 74 0.793158 79 0.378605 82 0.424018 83 0.824891 88 0.966694 91 0.69673 92 0.662684 93 0.794357 102 0.886309 104 0.832503 115 0.542696 120 0.96907 123 0.612577 124 0.248879 125 0.432171 126 0.702945
+0 0.475415 5 0.560688 6 0.611606 7 0.240632 10 0.433741 26 0.55232 27 0.990863 29 0.859552 31 0.479058 33 0.548793 36 0.264483 41 0.479441 42 0.706421 47 1.00619 49 0.61523 53 0.93226 54 0.486831 56 0.940273 59 0.909574 61 0.277584 62 0.302002 66 0.996217 67 0.64929 68 1.01575 69 0.787522 73 0.615955 74 0.931471 76 0.372013 78 0.95616 83 0.899802 85 0.499071 86 0.934215 88 0.939427 95 0.295971 97 0.612183 101 0.679668 103 0.482485 108 0.445615 110 0.514978 113 0.903853 117 0.938918 119 0.266457 120 0.857657 121 0.528837 122 0.669014 130 0.963944
+0 0.695908 5 0.356214 6 0.83682 7 0.187048 10 0.346434 26 0.764752 29 0.99194 31 0.239253 33 0.761599 36 0.503998 41 0.519145 42 0.7585 47 0.897892 49 0.640052 54 0.612353 59 0.952257 61 0.430419 62 0.133033 66 0.778205 67 0.420851 69 0.830164 73 0.747543 76 0.190015 78 0.962958 85 0.404116 86 0.998013 95 0.527378 97 0.424102 99 0.9916 101 0.789047 103 0.244023 107 0.96999 108 0.308779 110 0.567955 113 0.987114 117 0.984634 119 0.505788 121 0.294412 122 0.435941 132 0.244097
+1 0.9432 2 0.240662 3 0.663081 12 0.384509 15 1.00615 17 0.899246 18 0.891819 19 0.684589 20 0.588088 21 0.930686 22 0.815515 25 0.415289 30 0.874676 39 0.649858 40 0.810209 44 0.761669 48 0.530489 50 0.716697 55 0.944051 58 0.806081 60 0.596833 63 0.934056 72 0.923418 75 0.253337 80 0.951234 81 0.606047 84 0.0593071 89 0.616277 90 0.999676 96 0.805229 98 0.879346 99 1.00784 111 0.259482 112 0.947463 116 0.69552 129 0.549995
+4 0.791802 8 0.753695 11 0.810262 14 0.573412 16 0.689557 24 0.667098 27 0.647922 29 0.789727 34 0.813883 35 0.669579 43 0.776651 45 0.54761 46 0.084341 56 1.0042 59 0.91603 64 0.890996 65 0.596061 68 0.783605 70 0.767475 71 0.691284 74 0.926234 78 0.978657 79 0.531217 82 0.310587 83 1.00332 86 0.841173 88 0.699226 93 0.840274 117 0.883593 118 0.909103 120 0.805459 123 0.913509 124 0.798455 125 0.392334 126 0.738673 127 0.973317 128 0.443911 130 0.713364 131 0.71952
+4 0.775185 8 0.37992 9 0.761848 11 0.91653 14 1.00968 16 0.683607 21 0.88618 24 0.705721 32 0.899853 34 1.01902 35 0.234112 45 0.979305 46 0.451397 64 0.684898 65 0.409011 70 0.351984 71 0.911568 79 0.557478 82 0.584621 93 0.517852 106 0.724424 109 0.949836 114 0.736832 118 0.479591 123 0.731632 125 0.498768 127 0.939876 128 0.720484 131 0.900295 135 0.483348
+1 0.829237 2 0.109526 3 0.483155 12 0.658606 15 0.76304 17 0.815209 18 0.973172 19 0.808876 20 0.321564 22 0.64396 25 0.53126 37 1.0111 39 0.801734 40 0.925607 44 0.477878 47 0.983834 48 0.801771 50 0.43005 58 0.957133 60 0.855277 63 0.803741 75 0.247675 80 0.734648 81 0.870987 84 0.346677 89 0.889599 96 0.632578 99 0.743082 107 0.835319 111 0.336422 112 0.678399 116 0.766102 129 0.761802 134 0.298645
+0 0.45393 5 0.506706 6 0.63198 7 0.51753 10 0.706151 11 0.977908 14 0.874627 26 0.494616 27 0.770633 29 0.628542 31 0.578925 33 0.492576 34 0.812236 36 0.433711 41 0.159282 42 0.999596 49 0.299316 54 0.226011 56 0.9755 59 0.612337 61 0.584424 62 0.521273 66 0.993772 67 0.647977 68 0.964846 71 0.900054 73 0.894178 74 0.927737 76 0.582642 78 0.659024 83 0.927519 85 0.766973 86 0.647108 88 0.772267 95 0.357234 97 0.802918 101 0.961623 103 0.590948 108 0.323964 110 0.821389 117 0.644978 119 0.437256 120 0.730808 121 0.644239 122 0.693335 126 0.986481 130 0.712619 132 0.324159 133 0.399094
+2 0.853424 12 0.983943 13 0.468612 17 0.492255 18 0.0311057 19 0.210372 20 0.932631 28 0.717666 38 0.902387 42 0.97381 47 0.849602 48 1.01653 51 0.793267 52 0.923751 55 0.650885 57 0.386294 58 0.229042 60 0.653488 63 0.633512 69 0.895657 72 0.72517 80 0.913833 84 0.824113 89 0.792057 90 0.542122 94 0.373579 100 0.535159 102 0.771105 104 0.798465 107 0.887931 111 0.657135 113 0.830331 129 0.462676 134 0.864391 137 0.946218
+1 0.668105 2 0.311254 3 0.370051 12 0.549423 15 0.765562 19 0.9479 20 0.536403 21 0.866498 22 0.526915 25 0.306008 30 1.01833 37 0.999601 39 0.585638 40 0.703467 44 0.588027 48 0.690563 50 0.570465 60 0.867092 75 0.057488 77 0.96591 80 0.940534 81 0.751734 84 0.364021 89 0.859274 96 0.516221 98 1.00868 99 0.884657 111 0.493754 112 0.824933 116 0.53218 129 0.838099 134 0.306436 137 0.247042
+13 0.71748 16 0.837363 18 0.938786 24 0.813807 28 0.414669 38 0.59159 43 0.850698 51 0.427826 52 0.524174 53 0.721795 55 0.737699 56 0.838649 58 0.901153 68 0.974993 72 0.788993 74 0.925097 79 0.956884 83 0.888315 90 0.655336 91 0.484643 92 0.563849 94 0.685346 100 0.650318 102 0.253829 104 0.192733 113 0.916052 115 0.201961 123 0.912498 124 0.59117 126 0.984585 131 0.653734 139 0.961927
+7 0.980495 10 0.840495 13 0.316023 17 0.486443 18 0.531513 19 0.740779 28 0.607324 38 0.591643 42 0.456292 47 0.582151 52 0.652388 57 0.226489 58 0.746764 61 0.888639 63 0.555256 69 0.36995 73 0.630842 76 1.00804 80 0.82374 85 0.799885 90 0.93079 94 0.424702 97 0.939873 100 0.371914 101 0.544088 102 0.760552 104 0.826635 107 0.730825 110 0.648314 113 0.33392 129 0.978962 139 0.550005 141 0.987167
+2 0.369576 3 0.924902 12 0.592232 13 0.9688 17 0.629238 18 0.564063 19 0.357117 20 0.602794 25 0.751566 30 0.966316 39 0.946068 44 0.862148 47 0.9591 48 0.69192 50 0.796241 55 0.78585 57 0.766644 58 0.511479 60 0.503917 63 0.706365 72 0.801014 75 0.578499 80 0.835794 81 0.762115 84 0.31756 89 0.604683 90 0.789835 94 0.883007 98 0.988404 99 1.01617 107 0.88431 111 0.143151 112 0.962009 116 1.0133 129 0.328918 134 0.35453 137 0.476661 139 0.534349 140 0.619783 142 0.967843
+2 0.770321 3 1.01834 12 0.180678 18 1.00264 19 0.806423 21 0.66601 25 0.538849 30 0.352995 39 0.504012 40 0.658651 48 0.0496187 51 0.940573 55 0.666457 58 0.813618 60 0.380571 72 0.59608 75 0.672079 81 0.0920583 84 0.510187 89 0.257522 90 0.798116 92 0.897183 93 0.927092 98 0.360993 111 0.696924 114 0.695217 116 0.692882 118 0.889981 123 0.931461 129 0.55632 134 0.543518 137 0.819092 139 0.984709 140 0.720721 143 0.67891
+1 0.952558 5 0.417462 7 0.905785 10 0.95033 11 0.973706 15 0.647748 22 0.93222 23 0.424016 31 0.603478 34 0.966735 37 0.400755 41 0.781478 44 0.921 49 0.764699 50 0.980723 54 0.966117 59 0.917765 62 0.809764 66 0.350741 67 0.386642 76 0.792878 77 0.6488 78 0.818783 85 0.963982 86 1.00176 87 0.419847 96 0.938612 97 0.777624 99 0.780545 103 0.614032 105 0.659364 108 0.547329 109 0.916426 112 0.828792 117 0.943128 121 0.612197 122 0.415141 127 0.890497 132 0.946183 133 0.757547 138 0.830921
+4 0.697423 8 0.125557 9 0.476608 11 0.89106 16 0.921926 21 0.674509 24 0.95307 32 0.630379 35 0.0753955 39 0.954519 40 0.809979 46 0.725606 64 0.490378 65 0.64092 70 0.0522132 71 0.957552 79 0.82447 82 0.870667 93 0.618723 98 0.985732 106 0.454518 109 0.750009 114 0.574757 116 0.963085 118 0.431628 123 0.881844 125 0.785649 127 0.820318 128 0.834434 135 0.738516 136 0.30667
+12 0.874628 16 0.599624 21 0.952609 24 0.645573 30 0.413789 39 1.0183 48 0.739143 51 0.530843 55 0.532953 58 0.941981 60 0.707252 65 0.684272 72 0.461584 79 0.737376 81 0.683005 82 0.990574 89 0.626427 90 0.658349 92 0.283881 93 0.537966 98 0.444066 102 0.960074 104 0.894523 114 0.80787 115 0.657176 118 0.727768 123 0.332695 124 0.975626 125 0.866234 129 0.893579 131 0.794899 136 1.00915 141 0.830483 144 0.708581
+2 0.526175 3 0.976381 12 0.335254 17 0.904247 18 0.703709 19 0.478191 20 0.835383 21 0.977179 25 0.629789 30 0.681076 39 0.75232 40 0.919649 48 0.403731 50 0.993484 51 0.932431 55 0.624148 57 0.984272 58 0.545468 60 0.259753 63 0.986992 72 0.604835 75 0.582789 81 0.472269 84 0.288591 89 0.316388 90 0.691366 92 1.01019 94 0.975619 98 0.704203 111 0.368592 116 0.876805 129 0.249345 134 0.346665 137 0.613706 139 0.679437 140 0.636768 143 0.312916 144 0.382954 147 0.918305
+12 0.987392 13 0.699514 16 0.979877 18 0.634553 19 0.652384 24 0.991564 28 0.616863 30 0.809569 38 0.895148 48 0.919039 51 0.165494 52 0.861282 55 0.226119 57 0.929758 58 0.482613 60 0.587753 72 0.303611 81 0.914382 89 0.646229 90 0.141823 91 0.974873 92 0.434714 94 0.575045 98 0.855967 100 0.685133 102 0.504333 104 0.460178 115 0.495387 123 0.864562 124 1.01704 129 0.628303 131 0.971973 139 0.646588 141 0.532087 142 0.967787 143 0.918128 144 0.874734 147 0.604993 148 0.811597
+0 0.773364 4 0.775254 6 0.775613 11 0.649734 14 0.165202 26 0.697423 27 0.1612 29 0.312079 33 0.700934 34 0.527122 36 1.01421 41 0.835198 43 0.662147 45 0.452851 46 0.564656 49 0.765064 53 1.00833 54 0.712865 56 0.806181 59 0.529382 64 1.01345 68 0.569299 71 0.443805 74 0.697467 78 0.641706 79 0.939238 82 0.680547 83 0.778439 86 0.436617 88 0.274455 95 0.916829 117 0.502167 119 1.01584 120 0.414201 124 0.90866 125 0.816465 126 0.537926 127 0.904689 128 0.33064 130 0.250718 131 0.963543 135 0.493337 136 0.910484 138 0.916375
+2 0.218526 3 0.734114 12 0.451372 17 0.799379 18 0.789849 19 0.582871 20 0.553761 22 0.887636 25 0.529828 30 0.913775 39 0.754671 40 0.913783 44 0.765955 48 0.585562 50 0.711462 55 0.900949 57 0.968821 58 0.716662 60 0.564654 63 0.843529 72 0.89166 75 0.348952 80 0.889639 81 0.66162 84 0.0988752 89 0.612397 90 0.940462 96 0.877178 98 0.924465 99 0.986331 107 0.963255 111 0.145725 112 0.9264 116 0.804832 129 0.47593 134 0.117883 137 0.310872 139 0.761483 140 0.395754 143 0.240402 144 0.589355 148 0.31245
+0 0.541144 4 1.00054 5 0.556568 6 0.710999 7 0.700711 10 0.878625 11 0.796616 14 0.788567 23 0.934482 26 0.55168 27 0.655263 29 0.518001 31 0.697699 33 0.551001 34 0.625618 36 0.601098 41 0.0471186 49 0.0994522 54 0.199673 59 0.422292 61 0.772822 62 0.689468 66 1.01572 67 0.70598 68 0.965149 71 0.722287 74 0.961167 76 0.742934 78 0.464898 83 0.97956 85 0.935163 86 0.468512 88 0.704755 95 0.505058 97 0.939502 103 0.711935 108 0.380544 110 1.00146 117 0.457219 119 0.604596 120 0.700758 121 0.762073 122 0.760052 126 0.977527 127 0.957714 128 0.902904 130 0.570914 132 0.521922 133 0.564232 138 0.20212 145 0.791086 150 0.798672
+0 0.972323 6 0.926555 7 0.753864 10 0.663326 13 0.509619 17 0.79096 18 0.854805 28 0.6227 31 1.00898 36 0.782505 38 0.428418 42 0.197515 47 0.715363 52 0.503119 53 0.775429 56 0.961769 57 0.581783 61 0.585743 62 0.833488 63 0.812303 69 0.162464 73 0.277478 76 0.833698 80 0.99709 83 0.967231 85 0.647549 91 0.835885 94 0.650411 95 0.891719 97 0.855683 100 0.504258 101 0.189652 102 0.785259 103 0.997882 104 0.856302 107 0.89044 110 0.382663 113 0.0728647 119 0.779434 121 0.996054 132 0.843423 133 0.923541 139 0.875836 141 0.973308 142 0.364607
+0 0.90675 6 0.738537 13 0.89734 14 0.960238 16 0.920803 24 0.873025 26 0.888265 28 0.601692 33 0.88897 36 0.976169 38 0.529191 43 0.471715 45 0.701686 51 0.857304 52 0.463727 53 0.307971 56 0.405135 68 0.581581 73 0.856118 74 0.503473 79 0.97237 82 0.921592 83 0.45866 88 0.929982 91 0.0746054 92 0.920164 94 0.936096 95 1.00138 100 0.822383 101 0.880194 102 0.558011 104 0.557618 113 0.865158 115 0.569166 119 0.97382 120 0.842298 124 0.411549 125 0.993389 126 0.602956 131 0.626781 141 0.45379 149 0.954057 153 0.898838
+0 0.142152 5 0.802933 6 0.303403 7 0.561647 10 0.73235 14 0.771926 26 0.221876 27 0.736933 29 0.611191 31 0.785545 33 0.218152 34 0.975186 36 0.166501 38 1.0045 41 0.467262 42 0.851898 43 0.837056 45 0.90909 49 0.575046 53 0.718945 54 0.331259 56 0.66865 59 0.785233 61 0.438618 62 0.630173 67 0.916377 68 0.715466 69 0.928574 73 0.671519 74 0.638353 76 0.697038 78 0.876751 83 0.619847 85 0.792077 86 0.776647 88 0.647565 91 0.949334 95 0.0487061 97 0.922546 101 0.754635 103 0.791213 108 0.645032 110 0.702314 113 0.970889 117 0.806641 119 0.169182 120 0.54741 121 0.838127 122 0.946191 126 0.749331 130 0.742267 132 0.33636 133 0.561697 138 0.356381 150 0.873323 152 0.488147 153 0.92632 154 0.992857
+0 0.938727 4 0.714244 5 0.593571 7 0.977374 11 0.537378 14 0.959169 23 0.547714 26 0.935051 27 0.800851 29 0.721772 31 0.82335 33 0.935168 34 0.459995 36 0.995878 37 0.873907 41 0.45972 49 0.350913 54 0.609953 59 0.388423 62 0.925023 64 0.94549 66 0.876278 67 0.705488 71 0.588999 76 0.951915 77 0.90821 78 0.280629 86 0.482065 87 0.74447 88 0.93092 95 0.913236 103 0.839025 105 0.81372 108 0.526447 109 0.795291 117 0.415007 119 0.999059 120 0.982258 121 0.872276 122 0.763227 127 0.605679 128 0.829427 130 0.677633 132 0.874751 133 0.813795 138 0.599336 145 0.557047 150 0.892931 152 0.435301 155 0.898578
+0 0.472217 6 0.297933 14 0.588818 26 0.430831 27 0.69786 28 0.988987 29 0.682362 33 0.43244 36 0.642389 38 0.797434 41 0.947903 43 0.287224 45 0.475848 46 1.00202 49 0.993036 52 0.770831 53 0.298019 54 0.765232 56 0.0966395 59 1.01441 61 0.833706 68 0.226182 73 0.809131 74 0.0702075 82 0.913023 83 0.0433426 86 0.953758 88 0.510522 91 0.481044 95 0.619778 101 0.876542 102 0.996853 104 1.00954 110 0.995259 113 0.992254 115 1.01093 117 1.01343 119 0.641227 120 0.387996 124 0.622001 126 0.274389 130 0.798375 131 0.84136 132 0.882687 135 0.986664 138 0.898265 141 0.925391 150 0.744631 152 0.945768 153 0.988831 154 0.49929 155 0.594414
+6 1.01171 13 0.789769 16 0.819352 24 0.785203 28 0.471105 38 0.565805 43 0.708375 45 0.89278 51 0.572083 52 0.4922 53 0.59123 55 0.878654 56 0.696554 68 0.835501 72 0.924518 73 1.00395 74 0.783918 79 0.919468 82 0.960865 83 0.748268 90 0.801551 91 0.344984 92 0.661585 94 0.782933 100 0.716891 101 1.00207 102 0.34787 104 0.312425 113 0.912292 115 0.285055 123 0.948404 124 0.47124 125 0.982995 126 0.846431 131 0.583633 141 0.1569 147 0.918172 149 0.681134 153 0.963167 154 0.304761 157 0.786179
+8 0.661036 9 0.824721 12 0.896881 16 0.727039 21 0.495325 24 0.783125 25 0.986769 30 0.525875 32 0.968128 35 0.559055 39 0.734911 40 0.678592 46 0.935228 48 0.78045 64 0.98149 65 0.515627 70 0.579525 72 0.979058 79 0.733297 81 0.708417 82 0.939048 89 0.91096 92 0.873158 93 0.257997 98 0.487379 106 0.866109 114 0.283562 116 0.865175 118 0.121955 123 0.503718 125 0.79386 135 0.989154 136 0.585685 144 0.790069 146 0.54796 147 0.632154
+1 0.635352 3 0.919516 4 0.670361 5 0.940983 8 0.978302 9 0.723323 11 0.710456 15 0.732725 22 0.766242 23 0.174172 32 0.574521 34 0.830854 37 0.536876 49 0.983321 59 0.920528 64 0.657948 66 0.807658 67 0.942734 71 0.900307 77 0.30651 78 0.791784 86 0.987808 87 0.288747 96 0.77714 105 0.165592 106 0.690251 108 1.00002 109 0.377729 117 0.924767 122 0.969844 127 0.479284 145 0.58573 156 0.662806
+1 0.916106 3 0.906032 5 0.492846 7 0.888643 10 0.875627 15 0.482756 20 0.934069 22 0.829653 23 0.607325 31 0.570458 37 0.321951 41 0.951381 44 0.700475 47 0.955201 49 0.962851 50 0.757358 62 0.787152 66 0.0870489 67 0.375968 76 0.748295 77 0.686731 80 0.827934 85 0.871066 87 0.493216 96 0.833303 97 0.65053 99 0.527761 103 0.574099 105 0.756428 107 0.865112 108 0.666469 112 0.579551 121 0.548065 122 0.360849 132 0.993236 133 0.778838 138 0.96289 145 0.267077 152 0.969723 156 0.804061 160 0.737549
+1 0.119187 2 0.962965 3 0.407432 9 0.738701 15 0.457314 20 0.930891 21 0.927174 22 0.244488 23 0.641388 25 0.769793 32 0.603546 37 0.510568 39 0.844791 40 0.783174 44 0.710555 50 0.773305 64 0.913588 66 0.836625 75 0.783085 77 0.264334 87 0.469236 96 0.256264 99 0.900975 105 0.395238 106 0.78665 109 0.71637 112 0.882958 116 0.644551 127 0.932966 134 1.00989 137 0.868373 140 0.734463 145 0.846091 160 0.55269 161 0.813852
+1 0.784073 2 0.452075 3 0.586283 12 0.298341 15 0.991985 19 0.905369 20 0.75555 21 0.689956 22 0.713987 25 0.150747 30 0.776788 39 0.391218 40 0.553337 44 0.84022 48 0.436152 50 0.819276 58 0.996711 60 0.692398 72 0.986571 75 0.227933 81 0.496144 84 0.30157 89 0.650349 96 0.705528 98 0.765887 111 0.528352 114 0.839542 116 0.437806 129 0.728419 134 0.273634 137 0.448516 140 0.270444 143 0.611579 144 0.471699 148 0.493018 151 0.388731 162 0.87348
+10 0.884898 13 0.369492 17 0.359867 18 0.45034 19 0.644521 20 0.968357 28 0.686897 38 0.709438 42 0.553644 47 0.52637 52 0.765006 57 0.0959033 58 0.676667 61 0.976969 63 0.445397 69 0.46896 73 0.746156 80 0.73668 85 0.837686 90 0.905261 94 0.438732 97 0.946247 100 0.441334 101 0.660871 102 0.82543 104 0.885394 107 0.653187 110 0.732186 111 0.927509 113 0.464961 129 0.891035 139 0.46348 142 0.135402 143 0.854269 149 0.961251 153 0.489877
+1 0.992792 2 0.739377 3 0.892772 12 0.154951 19 0.923501 21 0.532094 22 0.988382 25 0.386148 30 0.438119 39 0.329066 40 0.494939 48 0.131638 55 0.834427 58 0.95273 60 0.543468 72 0.765348 75 0.576743 81 0.156672 84 0.500837 89 0.433835 90 0.960239 93 0.941916 96 0.982434 98 0.424592 111 0.721007 114 0.608351 116 0.520192 118 0.851005 123 0.999418 129 0.687956 134 0.515559 137 0.765494 140 0.619102 143 0.738441 144 0.181108 147 0.824538 148 0.478378 151 0.593217 159 0.764421 163 0.356261
+1 0.888191 3 0.942644 5 0.480436 7 0.935825 10 0.953578 15 0.533421 22 0.842681 23 0.465174 31 0.622782 37 0.29997 41 0.886058 44 0.805618 49 0.877259 50 0.867415 62 0.836821 66 0.243855 67 0.407704 76 0.809657 77 0.609192 78 0.931155 80 0.968125 85 0.958354 87 0.389571 96 0.84834 97 0.754257 99 0.670574 103 0.630356 105 0.651678 107 1.00396 108 0.632531 109 0.953586 112 0.717139 121 0.617108 122 0.417201 127 0.960986 132 1.00429 133 0.803851 138 0.922481 145 0.127864 152 0.898222 156 0.677299 160 0.60948 161 0.157293 162 0.780529
+1 0.780715 3 0.948752 8 0.619728 9 0.484869 12 0.786128 21 0.129741 22 0.932074 25 0.659485 30 0.747055 32 0.589388 35 0.649802 39 0.402033 40 0.240491 48 0.749043 64 0.790304 65 0.959702 70 0.569875 75 0.91978 77 1.01041 81 0.71066 89 1.00327 93 0.761062 96 0.934045 98 0.699601 105 0.998958 106 0.577704 109 0.892803 114 0.258943 116 0.425875 118 0.51105 123 0.988248 134 1.01659 136 0.82632 140 0.922423 144 0.786559 146 0.585308 159 0.522428 162 0.87706 163 0.774885 165 0.651844
+2 1.01194 8 0.99907 9 0.978318 12 0.440908 21 0.407803 25 0.61738 30 0.251359 35 0.952684 39 0.414788 40 0.488995 48 0.318805 55 0.841414 60 0.670566 65 0.927433 70 0.930233 72 0.755505 75 0.844868 81 0.246491 84 0.784491 89 0.530249 90 0.985969 92 0.891793 93 0.665139 98 0.208063 111 0.984117 114 0.377147 116 0.618766 118 0.580276 123 0.754691 129 0.86171 134 0.801361 140 0.879162 143 0.982183 144 0.337333 146 0.918778 147 0.639936 148 0.708155 151 0.869774 159 0.480981 163 0.633221 165 0.302511 167 0.5288
+10 0.999382 13 0.199174 17 0.796885 18 0.630535 19 0.848908 28 0.283962 38 0.279016 42 0.560073 47 0.899606 51 0.854157 52 0.326761 53 0.781601 55 0.969258 56 0.985736 57 0.51771 58 0.777927 61 0.911359 63 0.878906 69 0.501251 73 0.590852 83 1.01104 85 0.979187 90 0.822208 91 0.722305 94 0.330197 100 0.151643 101 0.526137 102 0.456293 104 0.531367 110 0.7418 113 0.301045 115 0.859827 139 0.658633 141 0.686068 142 0.35111 149 0.808694 153 0.372841 154 0.768671 158 0.720533 164 0.458019
+4 0.81776 8 0.644968 9 1.00959 11 0.882884 14 0.743559 16 0.597596 24 0.590054 27 0.813236 29 0.949408 34 0.922206 35 0.534274 43 0.891686 45 0.685298 46 0.131438 64 0.850422 65 0.442651 68 0.919234 70 0.642967 71 0.801565 79 0.434885 82 0.312857 86 0.977258 88 0.864744 93 0.679527 106 0.954533 114 1.01136 117 1.01155 118 0.745471 120 0.963995 123 0.783825 124 0.839937 125 0.309336 126 0.875623 127 0.999727 128 0.563869 130 0.869118 131 0.709485 135 0.180409 136 0.322683 146 0.606521 150 0.663405 159 0.82833
+8 0.877101 12 0.946967 16 0.511812 21 0.743233 24 0.572766 30 0.471057 35 0.749815 39 0.917385 40 0.906426 46 0.90791 48 0.811423 51 0.873764 55 0.875047 60 0.95174 65 0.414774 70 0.802578 72 0.798389 79 0.577395 81 0.738778 82 0.834507 89 0.83838 90 0.999999 92 0.604389 93 0.17493 98 0.458817 114 0.549255 115 0.909739 118 0.375465 123 0.222693 125 0.682124 131 0.811333 135 0.976514 136 0.684808 144 0.802565 146 0.762659 147 0.377474 149 0.95354 159 0.297369 165 0.84314 167 0.791534 168 0.570794 170 0.826882
+4 0.449529 5 0.841944 8 0.988317 9 0.93325 11 0.317521 14 0.975304 23 0.463389 27 0.824374 29 0.797362 32 0.851291 34 0.361546 37 0.889566 41 0.715503 49 0.591529 54 0.823371 59 0.443892 64 0.676742 66 1.00037 67 0.926296 71 0.465622 77 0.793591 78 0.305689 86 0.516359 87 0.694223 88 0.987332 105 0.660803 106 0.852454 108 0.800533 109 0.533441 117 0.446833 122 0.97669 127 0.319449 128 0.69727 130 0.70315 138 0.857508 145 0.68405 150 0.867101 152 0.683663 156 0.293466 160 0.505345 161 0.924371 166 0.783732
+8 0.752297 14 0.976794 16 0.305188 24 0.324567 30 0.973355 35 0.602908 43 0.950641 45 0.813709 46 0.404016 65 0.124774 70 0.711435 79 0.173412 82 0.340295 92 0.843199 93 0.407233 98 0.961122 114 0.870198 115 0.952155 118 0.580416 123 0.460247 124 0.754622 125 0.18069 126 0.987821 128 0.88167 131 0.546427 135 0.483649 136 0.392701 146 0.663373 147 0.777405 150 0.936373 159 0.625431 170 0.340101 171 0.534476
+3 1.00127 5 0.429742 7 0.739918 10 0.705091 15 0.600182 20 0.90973 22 0.952084 23 0.776881 31 0.424153 37 0.500849 41 0.926277 44 0.720371 47 0.802201 49 0.966028 50 0.7612 61 0.994984 62 0.636761 63 0.980951 66 0.147427 67 0.279059 76 0.588434 77 0.863659 80 0.716161 85 0.695918 87 0.679557 96 0.953819 97 0.464901 99 0.470267 103 0.423614 105 0.933081 107 0.732349 108 0.612276 110 0.982012 112 0.534143 121 0.386469 122 0.234969 132 0.877872 133 0.652019 138 0.905587 145 0.397237 152 0.952807 156 0.876522 160 0.910071 161 0.194762 162 0.968235 166 0.326951
+2 0.920589 3 0.842753 5 0.746769 7 0.890463 10 0.780177 15 0.52837 17 0.840882 20 0.595573 22 0.851441 23 0.992957 31 0.656725 37 0.602362 44 0.454611 47 0.588907 50 0.472127 62 0.808253 63 0.7078 66 0.359837 67 0.598518 76 0.745461 77 0.947098 80 0.402747 85 0.742107 87 0.834108 96 0.848747 97 0.529741 99 0.138674 103 0.648188 107 0.455586 108 0.912954 110 1.00529 112 0.207453 121 0.59677 122 0.542532 133 0.869922 137 0.869845 140 1.0047 145 0.698033 161 0.44487 162 0.955436 166 0.596034 174 0.35058
+0 0.74427 4 0.758345 6 0.761252 11 0.616671 14 0.184939 26 0.670169 27 0.111131 29 0.258674 33 0.673587 34 0.479371 36 0.983236 41 0.77853 43 0.696924 45 0.501093 46 0.62122 49 0.705167 54 0.660575 56 0.822515 59 0.468414 64 1.00917 68 0.594042 71 0.40677 74 0.713165 78 0.584796 79 0.995635 82 0.741189 83 0.791259 86 0.374734 88 0.26691 95 0.882221 117 0.441976 119 0.985057 120 0.40688 124 0.956607 125 0.874345 126 0.566737 127 0.877358 128 0.333186 130 0.186066 131 1.01756 135 0.548484 136 0.949671 138 0.864752 150 0.0651112 152 0.740919 155 0.838543 156 0.836761 157 0.755747 170 0.714984 172 0.821073 173 0.989981
+0 0.916507 6 0.82593 7 0.888722 10 0.843584 13 0.496502 17 0.961793 18 0.902728 26 0.95909 28 0.46204 33 0.95705 36 0.784682 38 0.197377 42 0.419616 43 0.991414 47 0.939156 52 0.270081 53 0.570513 56 0.778843 57 0.719916 61 0.66679 62 0.978607 63 1.00472 68 1.01289 69 0.407706 73 0.331884 74 0.877054 76 0.992753 83 0.794387 85 0.841348 91 0.604542 94 0.62601 95 0.881773 100 0.451337 101 0.296113 102 0.61244 104 0.682226 110 0.553362 113 0.214018 115 0.959276 119 0.781312 132 0.916314 139 0.928023 141 0.777179 142 0.509638 153 0.249644 154 0.669734 155 0.906817 157 0.823202 158 0.747967 164 0.638866 169 0.303943
+1 0.826282 4 0.87842 8 0.403181 9 0.316534 12 0.990022 21 0.348951 22 1.01066 25 0.856116 30 0.89388 32 0.463079 35 0.458866 39 0.620113 40 0.451769 48 0.947238 64 0.589753 65 0.885061 70 0.361715 77 0.979458 81 0.904666 93 0.741087 96 1.01502 98 0.847611 105 0.930989 106 0.390213 109 0.738387 114 0.366224 116 0.606126 118 0.477277 123 0.997963 127 0.919906 136 0.665473 144 0.980394 146 0.387142 159 0.540149 160 1.00244 162 0.903249 163 0.973145 165 0.860307 167 0.2286 168 0.708571 170 0.958162 171 0.819783 173 0.94425
+1 0.872586 2 0.221294 3 0.519061 12 0.814713 15 0.691311 17 0.716282 18 0.961766 19 0.830736 20 0.149226 22 0.664421 25 0.687911 37 0.940311 39 0.950555 44 0.354513 47 0.842653 48 0.951762 50 0.289957 57 0.972591 58 0.987938 60 0.961076 63 0.68016 66 0.960783 75 0.41005 80 0.574393 81 1.01917 84 0.492964 89 1.0116 96 0.653513 99 0.590272 107 0.681773 111 0.404007 112 0.523922 116 0.898103 129 0.838014 134 0.453627 137 0.173586 139 0.93618 140 0.396813 143 0.53236 144 0.96565 148 0.731764 151 0.434727 161 1.0177 162 0.888859 163 0.615281 165 0.921901 174 1.01437 175 0.719966
+0 0.818487 5 0.15587 6 0.982284 7 0.555575 10 0.684025 11 0.979622 23 0.777874 26 0.858941 29 0.899826 31 0.36694 33 0.857045 34 0.87346 36 0.739483 37 0.845368 41 0.379187 49 0.43217 54 0.56786 59 0.725098 61 0.766157 62 0.481535 66 0.650418 67 0.311336 71 0.987229 76 0.503902 78 0.691382 85 0.727209 86 0.797416 87 0.857127 95 0.702303 97 0.639609 99 1.00409 103 0.383933 108 0.0792212 110 0.916047 117 0.759988 119 0.742382 121 0.426036 122 0.371034 130 0.933263 132 0.522172 133 0.373588 138 0.385587 145 0.47386 152 0.408237 155 0.713608 156 0.480213 160 0.932351 161 0.609763 166 0.564648 172 0.750762 174 0.573922 175 0.88806
+0 0.92127 6 0.778458 14 0.632894 16 0.659327 24 0.599194 26 0.863509 27 0.797767 29 0.874634 33 0.866101 38 0.975698 43 0.231675 45 0.298559 46 0.668209 52 0.918502 53 0.598529 56 0.464255 65 0.855309 68 0.371812 74 0.448908 79 0.635825 82 0.490457 83 0.496318 88 0.663559 91 0.536382 92 0.966766 102 0.944936 104 0.917247 115 0.742963 120 0.641957 123 0.946629 124 0.195722 125 0.605923 126 0.348866 128 0.956377 130 0.91951 131 0.368915 135 0.691034 141 0.758341 150 0.735531 154 0.482377 157 0.506422 158 0.628392 170 0.770733 173 0.768208 176 0.78369
+1 0.680583 3 0.664424 5 0.745045 15 0.227427 20 0.808187 22 0.577552 23 0.580614 31 0.816925 37 0.126595 44 0.533914 50 0.605936 62 1.01877 66 0.276755 67 0.636496 75 1.01827 76 0.977367 77 0.502481 80 0.832777 87 0.377793 96 0.581477 97 0.851359 99 0.49336 103 0.818877 105 0.618137 107 0.903294 108 0.904957 109 0.990976 112 0.517463 121 0.78885 122 0.618872 133 1.01813 137 0.952401 140 0.970037 145 0.432561 156 0.939432 160 0.657381 161 0.268806 162 0.578386 166 0.311993 172 0.982387 174 0.421524 175 0.481799 179 0.864106 180 0.84604
+0 0.992194 4 0.933833 5 0.352525 7 0.825887 10 0.934109 11 0.79021 15 0.938022 23 0.514046 26 1.01217 27 1.01453 29 0.917777 31 0.598567 33 1.01123 34 0.729981 36 0.970407 37 0.695478 41 0.499415 49 0.463666 54 0.691936 59 0.640101 62 0.749374 66 0.626068 67 0.443968 71 0.852762 76 0.761284 77 0.845656 78 0.553467 85 0.968235 86 0.728416 87 0.637308 95 0.915053 97 0.844264 103 0.614229 105 0.798539 108 0.362091 109 0.916357 117 0.670412 119 0.973392 121 0.640264 122 0.502107 127 0.795666 130 0.904383 132 0.786051 133 0.652644 138 0.58391 145 0.318032 152 0.501741 155 0.915282 156 0.282169 160 0.672854 161 0.555513 166 0.442195 172 0.512494 174 0.615148 175 0.936448 180 0.289189 182 0.737167
+1 0.896623 4 0.37503 8 0.319493 9 0.300811 11 0.598504 21 0.852879 23 0.827768 32 0.350411 34 0.791829 35 0.474698 40 0.90083 46 0.922667 59 0.98348 64 0.0623736 65 1.01992 70 0.395439 71 0.750722 77 0.832212 78 0.911284 86 0.990593 87 0.942176 105 0.704996 106 0.193791 109 0.326021 114 0.85952 116 0.978233 117 0.961461 118 0.830641 127 0.427842 128 0.749144 135 0.895137 136 0.65551 146 0.441412 156 0.999399 159 0.930062 160 0.691812 162 0.90912 167 0.734848 170 0.842151 172 0.734402 173 1.01339 178 0.530526
+8 0.958819 16 0.337858 21 0.916493 24 0.399021 30 0.598872 35 0.820359 46 0.828041 48 0.941399 51 0.78639 55 0.859683 60 1.00932 65 0.343083 70 0.89222 72 0.796295 79 0.436881 81 0.874153 82 0.710567 89 0.915402 90 0.964869 92 0.498205 93 0.254889 98 0.599498 114 0.726884 115 0.764341 118 0.519516 123 0.0387451 124 0.862032 125 0.562445 131 0.635227 135 0.902801 136 0.702928 141 0.946703 144 0.925803 146 0.848376 147 0.351856 149 0.893449 158 0.98121 159 0.468227 165 0.9875 167 0.957447 168 0.736627 170 0.768119 171 0.191661 173 0.445665 178 0.964628 181 0.964335
+1 0.900839 4 0.245934 8 0.489582 9 0.4329 11 0.454411 21 0.999809 23 0.684183 32 0.411091 34 0.655235 35 0.63294 46 0.972809 59 0.845693 64 0.127383 70 0.568523 71 0.637235 77 0.75986 78 0.758403 86 0.864984 87 0.831876 105 0.613456 106 0.330803 109 0.203812 117 0.826439 118 0.994721 127 0.24509 128 0.69513 130 0.963268 135 0.931262 136 0.782477 146 0.610353 150 0.989314 156 0.834335 160 0.562895 162 0.888605 167 0.88537 170 0.913555 172 0.558634 176 0.977006 178 0.697272 183 1.00268 184 0.186722
+0 0.739957 6 0.710923 7 0.577658 10 0.549427 13 0.744679 17 0.986533 26 0.804739 28 0.779298 31 0.881493 33 0.801718 36 0.533926 38 0.518862 42 0.233031 47 0.825162 52 0.581264 53 0.666342 54 0.976385 56 0.822528 57 0.817876 61 0.350973 62 0.675947 63 0.979964 69 0.296515 73 0.0217315 74 0.891832 76 0.695987 83 0.814949 85 0.560435 91 0.803272 94 0.878719 95 0.64869 97 0.791667 100 0.725445 101 0.0741239 102 0.921399 103 0.873138 104 0.985535 107 0.993648 108 1.00873 110 0.251249 113 0.318024 119 0.530692 121 0.884974 132 0.620258 133 0.745353 138 0.901436 142 0.614883 153 0.262868 154 0.871025 155 0.685537 157 0.828938 158 1.01377 164 0.729439 169 0.585349 177 0.33388
+0 0.758711 6 0.647803 7 0.869969 10 0.871226 13 0.672923 26 0.794715 28 0.556764 33 0.792919 36 0.664894 38 0.262111 42 0.522492 43 0.824649 52 0.295412 53 0.386278 56 0.593758 57 0.904789 61 0.615488 62 0.967632 68 0.836861 69 0.540988 73 0.332594 74 0.692964 76 0.995635 83 0.606726 85 0.884417 91 0.478461 94 0.788393 95 0.750848 100 0.61797 101 0.352288 102 0.670521 104 0.728894 110 0.591314 113 0.394512 115 0.950955 119 0.661465 120 0.955186 124 0.927202 126 0.878038 132 0.843955 133 1.01059 141 0.775483 142 0.701023 153 0.405294 154 0.550128 155 0.769494 157 0.635508 158 0.706534 164 0.826084 169 0.482057 177 0.202564 181 0.943048 187 0.346619
+2 0.739585 12 0.260061 18 0.856289 19 0.657082 21 0.821411 25 0.638782 30 0.425345 39 0.653324 40 0.81011 48 0.210867 51 0.840303 55 0.539565 58 0.657849 60 0.215936 72 0.481549 75 0.707192 81 0.251973 84 0.478871 89 0.115939 90 0.661252 92 0.84604 93 1.00675 98 0.451019 111 0.619892 114 0.840369 116 0.826425 118 1.00596 123 0.964319 129 0.399395 134 0.525789 137 0.807488 139 0.838355 140 0.759607 143 0.571847 144 0.167455 147 0.701951 148 0.265705 149 0.753229 151 0.537847 159 0.903919 163 0.540483 165 0.333829 167 0.937683 168 0.484423 171 0.86962 179 0.940647 185 0.965315
+0 0.831778 4 0.698609 6 0.844237 8 0.987273 11 0.577938 14 0.247821 26 0.758745 27 0.205524 29 0.348288 33 0.762122 34 0.46859 35 0.973917 41 0.84651 43 0.734984 45 0.51983 46 0.549163 49 0.764682 54 0.7415 56 0.881456 59 0.500555 64 0.941236 68 0.64747 71 0.373749 74 0.774754 78 0.601631 79 0.944374 82 0.692207 83 0.854361 86 0.410226 88 0.350966 95 0.966606 117 0.469666 120 0.49036 124 0.961904 125 0.818369 126 0.61552 127 0.833829 128 0.249339 130 0.251988 131 0.999528 135 0.472274 136 0.866874 138 0.938874 150 0.0831521 152 0.807809 155 0.92401 156 0.86048 157 0.821111 170 0.636555 172 0.811584 173 0.926149 176 0.0953899 181 0.794837 184 0.974438 186 0.916282
+1 0.50124 2 0.998475 3 0.538865 5 0.891824 15 0.175016 20 0.824101 22 0.421374 23 0.541585 25 1.01947 31 0.980769 32 0.902098 37 0.145018 44 0.545014 50 0.621774 66 0.461678 67 0.799606 75 0.927946 77 0.34715 80 0.935911 87 0.306928 96 0.427592 97 1.01775 99 0.609362 103 0.983455 105 0.489137 107 1.01777 109 0.882016 112 0.614685 116 0.974676 121 0.956657 122 0.788074 127 1.01192 137 0.904884 140 0.876759 145 0.541385 156 0.985291 160 0.569117 161 0.443496 162 0.39497 166 0.441629 172 0.971388 174 0.603754 175 0.630084 179 0.847796 180 0.974209 182 0.188963 183 0.825768
\ No newline at end of file
diff --git a/ripser.cpp b/ripser.cpp
index 5791676..8ca3063 100644
--- a/ripser.cpp
+++ b/ripser.cpp
@@ -58,6 +58,34 @@ template class hash_map : public google::sparse_hash_map class hash_map : public std::unordered_map {};
#endif
+#ifdef INDICATE_PROGRESS
+#ifndef INICATE_STATS
+ #define INDICATE_STATS
+#endif
+const uint32_t display_q = 1<<12;
+bool line_kill = false;
+inline void kill_line(){
+ if(line_kill){
+ std::cout << "\r\033[K";
+ line_kill = false;
+ }
+}
+#else
+#define kill_line()
+#endif
+
+#ifdef INDICATE_STATS
+#include
+
+std::chrono::time_point time_0;
+void print_runtime(){
+ auto now = std::chrono::high_resolution_clock::now();
+ auto tt = std::chrono::duration_cast(now - time_0);
+ char buff[20];
+ sprintf(buff, "[%04d.%06ds] ", tt.count()/1000000, tt.count()%1000000);
+ std::cout << buff;
+}
+#endif
typedef float value_t;
// typedef uint16_t value_t;
@@ -269,6 +297,44 @@ class sparse_distance_matrix {
}
size_t size() const { return neighbors.size(); }
+
+ sparse_distance_matrix(std::istream& input ){
+ std::string line;
+ value_t value;
+ index_t idx;
+ std::vector lens;
+ for (int i = 0; std::getline(input, line); ++i) {
+ std::vector nbv;
+ neighbors.push_back(nbv);
+ int len = 0;
+ std::istringstream s(line);
+ while(s >> idx && s>> value){
+ neighbors[i].push_back(std::make_pair(value, idx));
+ len++;
+ }
+ lens.push_back(len);
+ }
+ for(index_t i = 0; i < lens.size(); i++){
+ for(index_t j = 0; j < lens[i]; j++){
+ auto other = neighbors[i][j];
+ neighbors[get_index(other)].push_back(std::make_pair(get_diameter(other), i));
+ }
+ }
+ }
+ void print(){
+ //For testing. The output of this can be parsed again.
+ //std::cout << "Sparse distance matrix of size " << neighbors.size() << std::endl;
+ for(int i = 0; i < neighbors.size(); i++){
+ // std::cout << "Line " << i << std::endl;
+ for(auto ed: neighbors[i]){
+ if(get_index(ed)< i)
+ std::cout<< get_index(ed) << " " << get_diameter(ed) << " ";
+ else
+ break;
+ }
+ std::cout << std::endl;
+ }
+ }
};
template <> void compressed_distance_matrix::init_rows() {
@@ -636,9 +702,10 @@ template class ripser {
columns_to_reduce.clear();
-#ifdef INDICATE_PROGRESS
- std::cout << "\033[K"
- << "assembling " << num_simplices << " columns" << std::flush << "\r";
+
+#ifdef INDICATE_STATS
+ print_runtime();
+ std::cout << "assembling " << num_simplices << " columns" << std::flush << "\n";
#endif
for (index_t index = 0; index < num_simplices; ++index) {
@@ -647,25 +714,26 @@ template class ripser {
if (diameter <= threshold)
columns_to_reduce.push_back(std::make_pair(diameter, index));
#ifdef INDICATE_PROGRESS
- if ((index + 1) % 1000 == 0)
- std::cout << "\033[K"
- << "assembled " << columns_to_reduce.size() << " out of "
- << (index + 1) << "/" << num_simplices << " columns" << std::flush
- << "\r";
+ if ((index + 1) % display_q == 0){
+ std::cout << "\r\033[Kassembled " << columns_to_reduce.size() << " out of "
+ << (index + 1) << "/" << num_simplices << " columns" << std::flush;
+ }
#endif
}
}
-#ifdef INDICATE_PROGRESS
- std::cout << "\033[K"
- << "sorting " << num_simplices << " columns" << std::flush << "\r";
+
+#ifdef INDICATE_STATS
+ kill_line();
+ print_runtime();
+ std::cout << "assembled " << columns_to_reduce.size() << " columns out of "
+ << num_simplices << "\n";
+ print_runtime();
+ std::cout << "sorting " << columns_to_reduce.size() << " columns\n" << std::flush;
#endif
std::sort(columns_to_reduce.begin(), columns_to_reduce.end(),
greater_diameter_or_smaller_index());
-#ifdef INDICATE_PROGRESS
- std::cout << "\033[K";
-#endif
}
void assemble_sparse_columns_to_reduce(std::vector& simplices,
@@ -673,9 +741,11 @@ template class ripser {
hash_map& pivot_column_index,
index_t dim) {
-#ifdef INDICATE_PROGRESS
- std::cout << "\033[K"
- << "assembling columns" << std::flush << "\r";
+
+#ifdef INDICATE_STATS
+ print_runtime();
+ std::cout << "assembling columns\n" << std::flush;
+ index_t i = 0;
#endif
--dim;
@@ -688,7 +758,13 @@ template class ripser {
while (cofaces.has_next(false)) {
auto coface = cofaces.next();
-
+#ifdef INDICATE_PROGRESS
+ if (++i % display_q == 0){
+ std::cout << "\r\033[Kassembled " << columns_to_reduce.size()
+ << " columns" << std::flush;
+ line_kill = true;
+ }
+#endif
next_simplices.push_back(std::make_pair(get_diameter(coface), get_index(coface)));
if (pivot_column_index.find(get_index(coface)) == pivot_column_index.end())
@@ -699,25 +775,33 @@ template class ripser {
simplices.swap(next_simplices);
-#ifdef INDICATE_PROGRESS
- std::cout << "\033[K"
- << "sorting " << columns_to_reduce.size() << " columns" << std::flush << "\r";
+
+#ifdef INDICATE_STATS
+ kill_line();
+ print_runtime();
+ std::cout << "assembled " << columns_to_reduce.size() << " columns out of "
+ << simplices.size() << " simplices" << std::flush << "\n";
+ print_runtime();
+ std::cout << "sorting " << columns_to_reduce.size() << " columns" << std::flush << "\n";
#endif
std::sort(columns_to_reduce.begin(), columns_to_reduce.end(),
greater_diameter_or_smaller_index());
-#ifdef INDICATE_PROGRESS
- std::cout << "\033[K";
-#endif
+
}
template
void compute_pairs(std::vector& columns_to_reduce,
hash_map& pivot_column_index, index_t dim) {
-
+ kill_line();
#ifdef PRINT_PERSISTENCE_PAIRS
std::cout << "persistence intervals in dim " << dim << ":" << std::endl;
#endif
+#ifdef INDICATE_STATS
+ print_runtime();
+ std::cout << "reducing "<< columns_to_reduce.size() <<" columns" << std::endl;
+ index_t num_apparent = 0, num_non_apparent = 0;
+#endif
#ifdef __native_client__
pp::VarDictionary var_dict;
var_dict.Set("type", pp::Var("dim"));
@@ -754,10 +838,12 @@ template class ripser {
value_t diameter = get_diameter(column_to_reduce);
#ifdef INDICATE_PROGRESS
- //if ((i + 1) % 1000 == 0)
- std::cout << "\033[K"
- << "reducing column " << i + 1 << "/" << columns_to_reduce.size()
+ if ((i + 1) % display_q == 0){
+ std::cout << "\r\033[Kreducing column " << i + 1 << "/" << columns_to_reduce.size()
<< " (diameter " << diameter << ")" << std::flush << "\r";
+ line_kill = true;
+ }
+
#endif
index_t j = i;
@@ -819,9 +905,15 @@ template class ripser {
if (pivot_column_index.find(get_index(coface)) ==
pivot_column_index.end()) {
pivot = coface;
+#ifdef INDICATE_STATS
+ num_apparent ++;
+#endif
goto found_persistence_pair;
}
might_be_apparent_pair = false;
+#ifdef INDICATE_STATS
+ num_non_apparent++;
+#endif
}
}
}
@@ -839,10 +931,8 @@ template class ripser {
}
} else {
#ifdef PRINT_PERSISTENCE_PAIRS
-#ifdef INDICATE_PROGRESS
- std::cout << "\033[K";
-#endif
- std::cout << " [" << diameter << ", )" << std::endl << std::flush;
+ kill_line();
+ std::cout << "dim "<< dim <<": [" << diameter << ", )" << std::endl << std::flush;
#endif
#ifdef __native_client__
pp::VarDictionary var_dict;
@@ -862,10 +952,8 @@ template class ripser {
value_t death = get_diameter(pivot);
if (diameter != death) {
#ifdef PRINT_PERSISTENCE_PAIRS
-#ifdef INDICATE_PROGRESS
- std::cout << "\033[K";
-#endif
- std::cout << " [" << diameter << "," << death << ")" << std::endl;
+ kill_line();
+ std::cout << "dim "<< dim << ": [" << diameter << "," << death << ")" << std::endl;
#endif
#ifdef __native_client__
pp::VarDictionary var_dict;
@@ -916,9 +1004,15 @@ template class ripser {
} while (true);
}
-#ifdef INDICATE_PROGRESS
- std::cout << "\033[K";
+
+#ifdef INDICATE_STATS
+ kill_line();
+ print_runtime();
+ std::cout << "reduced "<< columns_to_reduce.size() <<" columns. "<< num_apparent
+ << " apparent, " << num_non_apparent << " non-apparent ("
+ << float(num_non_apparent)/float(num_apparent+num_non_apparent) <<")" << std::endl;
#endif
+ kill_line();
}
void compute_barcodes();
@@ -933,7 +1027,8 @@ enum file_format {
DISTANCE_MATRIX,
POINT_CLOUD,
DIPHA,
- RIPSER
+ RIPSER,
+ LOWER_SPARSE
};
template T read(std::istream& s) {
@@ -962,9 +1057,11 @@ compressed_lower_distance_matrix read_point_cloud(std::istream& input_stream) {
index_t n = eucl_dist.size();
-#ifdef INDICATE_PROGRESS
+
+#ifdef INDICATE_STATS
+ print_runtime();
std::cout << "point cloud with " << n << " points in dimension "
- << eucl_dist.points.front().size() << std::endl;
+ << eucl_dist.points.front().size() << std::endl;
#endif
#ifdef __native_client__
pp::VarDictionary var_dict;
@@ -1089,7 +1186,9 @@ void print_usage_and_exit(int exit_code) {
<< " distance (full distance matrix)" << std::endl
<< " point-cloud (point cloud in Euclidean space)" << std::endl
<< " dipha (distance matrix in DIPHA file format)" << std::endl
- << " ripser (distance matrix in Ripser binary file format)"
+ << " ripser (distance matrix in Ripser binary file format)\n"
+ << " lower-sparse (sparse lower triangular distance matrix)"
+
<< std::endl
<< " --dim compute persistent homology up to dimension " << std::endl
<< " --threshold compute Rips complexes up to diameter " << std::endl
@@ -1104,7 +1203,10 @@ void print_usage_and_exit(int exit_code) {
#ifndef __EMSCRIPTEN__
#ifndef __native_client__
int main(int argc, char** argv) {
-
+ std::cout<< "starting ripser\n" <::max())
+ ripser(std::move(dist), dim_max, threshold, modulus)
+ .compute_barcodes();
+ else{
+ ripser(sparse_distance_matrix(std::move(dist), threshold), dim_max,
+ threshold, modulus)
+ .compute_barcodes();
+ }
+ }
+ else{
+ ripser(sparse_distance_matrix(filename ? file_stream : std::cin), dim_max,
+ threshold, modulus)
+ .compute_barcodes();
+ }
+}
- compressed_lower_distance_matrix dist = read_file(filename ? file_stream : std::cin, format);
-
- auto value_range = std::minmax_element(dist.distances.begin(), dist.distances.end());
-
-#ifdef INDICATE_PROGRESS
- std::cout << "distance matrix with " << dist.size() << " points" << std::endl;
- std::cout << "value range: [" << *value_range.first << "," << *value_range.second << "]"
- << std::endl;
-#endif
-
- if (threshold == std::numeric_limits::max())
- ripser(std::move(dist), dim_max, threshold, modulus)
- .compute_barcodes();
- else
- ripser(sparse_distance_matrix(std::move(dist), threshold), dim_max,
- threshold, modulus)
- .compute_barcodes();
-}
#endif
#endif
@@ -1276,7 +1381,8 @@ template <> void ripser::compute_barcodes() {
}
template <> void ripser::compute_barcodes() {
-
+ //for debugging and testing:
+ //dist.print();
std::vector columns_to_reduce;
std::vector simplices;
@@ -1314,7 +1420,7 @@ template <> void ripser::compute_barcodes() {
if (u != v) {
if (get_diameter(e) != 0) {
#ifdef PRINT_PERSISTENCE_PAIRS
- std::cout << " [0," << get_diameter(e) << ")" << std::endl;
+ std::cout << "dim 0: [0," << get_diameter(e) << ")" << std::endl;
#endif
#ifdef __native_client__
pp::VarDictionary var_dict;
@@ -1338,7 +1444,7 @@ template <> void ripser::compute_barcodes() {
for (index_t i = 0; i < n; ++i)
if (dset.find(i) == i) {
#ifdef PRINT_PERSISTENCE_PAIRS
- std::cout << " [0, )" << std::endl << std::flush;
+ std::cout << "dim 0: [0, )" << std::endl << std::flush;
#endif
#ifdef __native_client__
pp::VarDictionary var_dict;