summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGard Spreemann <gspr@nonempty.org>2019-09-25 14:29:41 +0200
committerGard Spreemann <gspr@nonempty.org>2019-09-25 14:29:41 +0200
commit599d68cd916f533bdb66dd9e684dd5703233b6bb (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parenta2e642954ae39025e041471d486ecbac25dff440 (diff)
Delete all files in order to incorporate upstream's move to git.
-rw-r--r--CMakeGUDHIVersion.txt6
-rw-r--r--CMakeLists.txt91
-rw-r--r--COPYING674
-rw-r--r--Conventions.txt1
-rw-r--r--Doxyfile2317
-rw-r--r--GUDHIConfig.cmake.in12
-rw-r--r--GUDHIConfigVersion.cmake.in11
-rw-r--r--GudhUI/CMakeLists.txt40
-rw-r--r--GudhUI/gui/KNearestNeighborsMenu.ui150
-rw-r--r--GudhUI/gui/MainWindow.cpp299
-rw-r--r--GudhUI/gui/MainWindow.h118
-rw-r--r--GudhUI/gui/MenuEdgeContraction.ui118
-rw-r--r--GudhUI/gui/Menu_edge_contraction.cpp97
-rw-r--r--GudhUI/gui/Menu_edge_contraction.h60
-rw-r--r--GudhUI/gui/Menu_k_nearest_neighbors.cpp59
-rw-r--r--GudhUI/gui/Menu_k_nearest_neighbors.h51
-rw-r--r--GudhUI/gui/Menu_persistence.cpp53
-rw-r--r--GudhUI/gui/Menu_persistence.h51
-rw-r--r--GudhUI/gui/Menu_uniform_neighbors.cpp60
-rw-r--r--GudhUI/gui/Menu_uniform_neighbors.h51
-rw-r--r--GudhUI/gui/PersistenceMenu.ui139
-rw-r--r--GudhUI/gui/UniformNeighborsMenu.ui153
-rw-r--r--GudhUI/gui/gudhui.cpp38
-rw-r--r--GudhUI/gui/main_window.ui255
-rw-r--r--GudhUI/model/Complex_typedefs.h49
-rw-r--r--GudhUI/model/Model.h355
-rw-r--r--GudhUI/todo.txt22
-rw-r--r--GudhUI/utils/Bar_code_persistence.h113
-rw-r--r--GudhUI/utils/Critical_points.h133
-rw-r--r--GudhUI/utils/Edge_collapsor.h97
-rw-r--r--GudhUI/utils/Edge_contractor.h97
-rw-r--r--GudhUI/utils/Furthest_point_epsilon_net.h132
-rw-r--r--GudhUI/utils/Is_manifold.h104
-rw-r--r--GudhUI/utils/K_nearest_builder.h90
-rw-r--r--GudhUI/utils/Lloyd_builder.h91
-rw-r--r--GudhUI/utils/MClock.h70
-rw-r--r--GudhUI/utils/Persistence_compute.h94
-rw-r--r--GudhUI/utils/Rips_builder.h69
-rw-r--r--GudhUI/utils/UI_utils.h45
-rw-r--r--GudhUI/utils/Vertex_collapsor.h89
-rw-r--r--GudhUI/view/Color.h35
-rw-r--r--GudhUI/view/FirstCoordProjector.h44
-rw-r--r--GudhUI/view/Projector3D.h39
-rw-r--r--GudhUI/view/View_parameter.h151
-rw-r--r--GudhUI/view/Viewer.cpp186
-rw-r--r--GudhUI/view/Viewer.h117
-rw-r--r--GudhUI/view/Viewer_instructor.cpp192
-rw-r--r--GudhUI/view/Viewer_instructor.h114
-rw-r--r--README11
-rw-r--r--biblio/bibliography.bib1105
-rw-r--r--biblio/how_to_cite_cgal.bib947
-rw-r--r--biblio/how_to_cite_gudhi.bib142
-rw-r--r--cmake/modules/FindEigen3.cmake86
-rw-r--r--cmake/modules/FindGMP.cmake56
-rw-r--r--cmake/modules/FindGMPXX.cmake48
-rw-r--r--cmake/modules/FindQGLViewer.cmake61
-rw-r--r--cmake/modules/FindTBB.cmake425
-rw-r--r--cmake/modules/GUDHI_compilation_flags.cmake72
-rw-r--r--cmake/modules/GUDHI_doxygen_target.cmake19
-rw-r--r--cmake/modules/GUDHI_modules.cmake41
-rw-r--r--cmake/modules/GUDHI_test_coverage.cmake26
-rw-r--r--cmake/modules/GUDHI_third_party_libraries.cmake169
-rw-r--r--cmake/modules/GUDHI_user_version_target.cmake95
-rw-r--r--cmake/modules/UseEigen3.cmake9
-rw-r--r--cmake/modules/UseTBB.cmake6
-rw-r--r--concept/Alpha_complex/SimplicialComplexForAlpha.h89
-rw-r--r--concept/Bottleneck_distance/Persistence_diagram.h50
-rw-r--r--concept/Cech_complex/SimplicialComplexForCech.h66
-rw-r--r--concept/Persistence_representations/Real_valued_topological_data.h51
-rw-r--r--concept/Persistence_representations/Topological_data_with_averages.h44
-rw-r--r--concept/Persistence_representations/Topological_data_with_distances.h49
-rw-r--r--concept/Persistence_representations/Topological_data_with_scalar_product.h42
-rw-r--r--concept/Persistence_representations/Vectorized_topological_data.h51
-rw-r--r--concept/Persistent_cohomology/CoefficientField.h52
-rw-r--r--concept/Persistent_cohomology/FilteredComplex.h150
-rw-r--r--concept/Persistent_cohomology/PersistentHomology.h41
-rw-r--r--concept/Rips_complex/SimplicialComplexForRips.h54
-rw-r--r--concept/Simplex_tree/FiltrationValue.h35
-rw-r--r--concept/Simplex_tree/IndexingTag.h30
-rw-r--r--concept/Simplex_tree/SimplexKey.h28
-rw-r--r--concept/Simplex_tree/SimplexTreeOptions.h43
-rw-r--r--concept/Simplex_tree/VertexHandle.h27
-rw-r--r--concept/Skeleton_blocker/SkeletonBlockerDS.h129
-rw-r--r--concept/Skeleton_blocker/SkeletonBlockerGeometricDS.h90
-rw-r--r--concept/Witness_complex/SimplicialComplexForWitness.h100
-rw-r--r--cython/CMakeLists.txt405
-rw-r--r--cython/CONVENTIONS9
-rw-r--r--cython/README3
-rw-r--r--cython/cython/alpha_complex.pyx121
-rw-r--r--cython/cython/bottleneck_distance.pyx61
-rw-r--r--cython/cython/cubical_complex.pyx198
-rw-r--r--cython/cython/euclidean_strong_witness_complex.pyx97
-rw-r--r--cython/cython/euclidean_witness_complex.pyx97
-rw-r--r--cython/cython/nerve_gic.pyx401
-rw-r--r--cython/cython/off_reader.pyx50
-rw-r--r--cython/cython/periodic_cubical_complex.pyx200
-rwxr-xr-xcython/cython/persistence_graphical_tools.py220
-rw-r--r--cython/cython/reader_utils.pyx95
-rw-r--r--cython/cython/rips_complex.pyx96
-rw-r--r--cython/cython/simplex_tree.pyx548
-rw-r--r--cython/cython/strong_witness_complex.pyx81
-rw-r--r--cython/cython/subsampling.pyx142
-rw-r--r--cython/cython/tangential_complex.pyx154
-rw-r--r--cython/cython/witness_complex.pyx81
-rw-r--r--cython/doc/_templates/layout.html275
-rw-r--r--cython/doc/alpha_complex_ref.rst14
-rw-r--r--cython/doc/alpha_complex_sum.inc22
-rw-r--r--cython/doc/alpha_complex_user.rst210
-rw-r--r--cython/doc/bottleneck_distance_sum.inc15
-rw-r--r--cython/doc/bottleneck_distance_user.rst40
-rw-r--r--cython/doc/citation.rst19
-rwxr-xr-xcython/doc/conf.py203
-rw-r--r--cython/doc/cubical_complex_ref.rst13
-rw-r--r--cython/doc/cubical_complex_sum.inc15
-rw-r--r--cython/doc/cubical_complex_user.rst162
-rw-r--r--cython/doc/euclidean_strong_witness_complex_ref.rst14
-rw-r--r--cython/doc/euclidean_witness_complex_ref.rst14
-rw-r--r--cython/doc/examples.rst29
-rw-r--r--cython/doc/fileformats.rst90
-rw-r--r--cython/doc/img/graphical_tools_representation.pngbin10846 -> 0 bytes
-rw-r--r--cython/doc/index.rst93
-rw-r--r--cython/doc/installation.rst236
-rw-r--r--cython/doc/nerve_gic_complex_ref.rst10
-rw-r--r--cython/doc/nerve_gic_complex_sum.rst15
-rw-r--r--cython/doc/nerve_gic_complex_user.rst312
-rw-r--r--cython/doc/periodic_cubical_complex_ref.rst13
-rw-r--r--cython/doc/persistence_graphical_tools_ref.rst11
-rw-r--r--cython/doc/persistence_graphical_tools_sum.inc12
-rw-r--r--cython/doc/persistence_graphical_tools_user.rst62
-rw-r--r--cython/doc/persistent_cohomology_sum.inc27
-rw-r--r--cython/doc/persistent_cohomology_user.rst118
-rwxr-xr-xcython/doc/python3-sphinx-build.py11
-rw-r--r--cython/doc/reader_utils_ref.rst15
-rw-r--r--cython/doc/rips_complex_ref.rst14
-rw-r--r--cython/doc/rips_complex_sum.inc17
-rw-r--r--cython/doc/rips_complex_user.rst316
-rw-r--r--cython/doc/simplex_tree_ref.rst14
-rw-r--r--cython/doc/simplex_tree_sum.inc14
-rw-r--r--cython/doc/simplex_tree_user.rst72
-rw-r--r--cython/doc/strong_witness_complex_ref.rst14
-rw-r--r--cython/doc/tangential_complex_ref.rst14
-rw-r--r--cython/doc/tangential_complex_sum.inc15
-rw-r--r--cython/doc/tangential_complex_user.rst201
-rw-r--r--cython/doc/todos.rst9
-rw-r--r--cython/doc/witness_complex_ref.rst14
-rw-r--r--cython/doc/witness_complex_sum.inc19
-rw-r--r--cython/doc/witness_complex_user.rst135
-rwxr-xr-xcython/example/alpha_complex_diagram_persistence_from_off_file_example.py72
-rwxr-xr-xcython/example/alpha_complex_from_points_example.py67
-rwxr-xr-xcython/example/alpha_rips_persistence_bottleneck_distance.py101
-rwxr-xr-xcython/example/bottleneck_basic_example.py46
-rwxr-xr-xcython/example/coordinate_graph_induced_complex.py68
-rwxr-xr-xcython/example/euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py79
-rwxr-xr-xcython/example/euclidean_witness_complex_diagram_persistence_from_off_file_example.py79
-rwxr-xr-xcython/example/functional_graph_induced_complex.py69
-rwxr-xr-xcython/example/gudhi_graphical_tools_example.py49
-rwxr-xr-xcython/example/nerve_of_a_covering.py70
-rwxr-xr-xcython/example/periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py76
-rwxr-xr-xcython/example/random_cubical_complex_persistence_example.py58
-rwxr-xr-xcython/example/rips_complex_diagram_persistence_from_correlation_matrix_file_example.py84
-rwxr-xr-xcython/example/rips_complex_diagram_persistence_from_distance_matrix_file_example.py67
-rwxr-xr-xcython/example/rips_complex_diagram_persistence_from_off_file_example.py74
-rwxr-xr-xcython/example/rips_complex_from_points_example.py40
-rwxr-xr-xcython/example/rips_persistence_diagram.py43
-rwxr-xr-xcython/example/simplex_tree_example.py63
-rwxr-xr-xcython/example/tangential_complex_plain_homology_from_off_file_example.py69
-rwxr-xr-xcython/example/voronoi_graph_induced_complex.py65
-rwxr-xr-xcython/example/witness_complex_from_nearest_landmark_table.py46
-rw-r--r--cython/gudhi.pyx.in45
-rw-r--r--cython/include/Alpha_complex_interface.h82
-rw-r--r--cython/include/Bottleneck_distance_interface.h53
-rw-r--r--cython/include/Cubical_complex_interface.h62
-rw-r--r--cython/include/Euclidean_strong_witness_complex_interface.h93
-rw-r--r--cython/include/Euclidean_witness_complex_interface.h92
-rw-r--r--cython/include/Nerve_gic_interface.h61
-rw-r--r--cython/include/Off_reader_interface.h42
-rw-r--r--cython/include/Persistent_cohomology_interface.h121
-rw-r--r--cython/include/Reader_utils_interface.h56
-rw-r--r--cython/include/Rips_complex_interface.h74
-rw-r--r--cython/include/Simplex_tree_interface.h158
-rw-r--r--cython/include/Strong_witness_complex_interface.h73
-rw-r--r--cython/include/Subsampling_interface.h119
-rw-r--r--cython/include/Tangential_complex_interface.h116
-rw-r--r--cython/include/Witness_complex_interface.h74
-rw-r--r--cython/setup.py.in50
-rwxr-xr-xcython/test/test_alpha_complex.py86
-rwxr-xr-xcython/test/test_bottleneck_distance.py35
-rwxr-xr-xcython/test/test_cover_complex.py92
-rwxr-xr-xcython/test/test_cubical_complex.py97
-rwxr-xr-xcython/test/test_euclidean_witness_complex.py71
-rwxr-xr-xcython/test/test_reader_utils.py88
-rwxr-xr-xcython/test/test_rips_complex.py111
-rwxr-xr-xcython/test/test_simplex_tree.py207
-rwxr-xr-xcython/test/test_subsampling.py133
-rwxr-xr-xcython/test/test_tangential_complex.py52
-rwxr-xr-xcython/test/test_witness_complex.py62
-rw-r--r--data/bitmap/2d_torus.txt12
-rw-r--r--data/bitmap/3d_torus.txt31
-rw-r--r--data/bitmap/CubicalOneSphere.txt12
-rw-r--r--data/bitmap/CubicalTwoSphere.txt31
-rw-r--r--data/bitmap/cubicalcomplexdoc.txt12
-rw-r--r--data/bitmap/periodiccubicalcomplexdoc.txt12
-rw-r--r--data/correlation_matrix/lower_triangular_correlation_matrix.csv6
-rw-r--r--data/distance_matrix/full_square_distance_matrix.csv7
-rw-r--r--data/distance_matrix/lower_triangular_distance_matrix.csv5
-rw-r--r--data/filtered_simplicial_complex/Klein_bottle_complex.fsc55
-rw-r--r--data/persistence_diagram/first.pers5
-rw-r--r--data/persistence_diagram/rips_on_tore3D_1307.pers2044
-rw-r--r--data/persistence_diagram/second.pers3
-rw-r--r--data/points/Kl.off10002
-rw-r--r--data/points/KleinBottle5D.off15879
-rw-r--r--data/points/alphacomplexdoc.off10
-rw-r--r--data/points/generator/README15
-rwxr-xr-xdata/points/generator/aurelien_alvarez_surfaces_in_R8.py90
-rw-r--r--data/points/grid_10_10_10_in_0_1.off1002
-rw-r--r--data/points/grid_10_10_10_in_0_1.weights1000
-rw-r--r--data/points/iso_cuboid_3_in_0_1.txt1
-rw-r--r--data/points/iso_cuboid_3_in_0_10.txt1
-rw-r--r--data/points/shifted_sphere.off1002
-rw-r--r--data/points/shifted_sphere.weights1000
-rw-r--r--data/points/sphere2D_80.off82
-rw-r--r--data/points/sphere3D_2646.off2648
-rw-r--r--data/points/sphere3D_pts_on_grid.off17286
-rw-r--r--data/points/spiral_3d_10k.off10002
-rw-r--r--data/points/spiral_4d_10k.off10002
-rw-r--r--data/points/tore3D_1307.off1309
-rw-r--r--data/points/tore3D_300.off302
-rw-r--r--data/points/tore3D_300.weights300
-rw-r--r--doc/Alpha_complex/COPYRIGHT19
-rw-r--r--doc/Alpha_complex/Intro_alpha_complex.h177
-rw-r--r--doc/Alpha_complex/alpha_complex_doc.ipe296
-rw-r--r--doc/Alpha_complex/alpha_complex_doc.pngbin18720 -> 0 bytes
-rw-r--r--doc/Alpha_complex/alpha_complex_doc_420.ipe514
-rw-r--r--doc/Alpha_complex/alpha_complex_doc_420.pngbin80794 -> 0 bytes
-rw-r--r--doc/Alpha_complex/alpha_complex_representation.ipe321
-rw-r--r--doc/Alpha_complex/alpha_complex_representation.pngbin14606 -> 0 bytes
-rw-r--r--doc/Bitmap_cubical_complex/COPYRIGHT19
-rw-r--r--doc/Bitmap_cubical_complex/Cubical_complex_representation.ipe732
-rw-r--r--doc/Bitmap_cubical_complex/Cubical_complex_representation.pngbin19167 -> 0 bytes
-rw-r--r--doc/Bitmap_cubical_complex/Gudhi_Cubical_Complex_doc.h117
-rw-r--r--doc/Bitmap_cubical_complex/bitmapAllCubes.pngbin38944 -> 0 bytes
-rw-r--r--doc/Bitmap_cubical_complex/exampleBitmap.pngbin2549 -> 0 bytes
-rw-r--r--doc/Bottleneck_distance/COPYRIGHT19
-rw-r--r--doc/Bottleneck_distance/Intro_bottleneck_distance.h51
-rw-r--r--doc/Bottleneck_distance/perturb_pd.pngbin20864 -> 0 bytes
-rw-r--r--doc/Cech_complex/COPYRIGHT19
-rw-r--r--doc/Cech_complex/Intro_cech_complex.h114
-rw-r--r--doc/Cech_complex/cech_complex_representation.ipe330
-rw-r--r--doc/Cech_complex/cech_complex_representation.pngbin39938 -> 0 bytes
-rw-r--r--doc/Cech_complex/cech_one_skeleton.ipe314
-rw-r--r--doc/Cech_complex/cech_one_skeleton.pngbin24662 -> 0 bytes
-rw-r--r--doc/Contraction/COPYRIGHT18
-rw-r--r--doc/Contraction/SO3_rips.pngbin883320 -> 0 bytes
-rw-r--r--doc/Contraction/SO3_simplified.pngbin48126 -> 0 bytes
-rw-r--r--doc/Contraction/SO3points.pngbin62539 -> 0 bytes
-rw-r--r--doc/Contraction/so3.pngbin137258 -> 0 bytes
-rw-r--r--doc/Contraction/so3.svg209
-rw-r--r--doc/Contraction/sphere_contraction_representation.pngbin44839 -> 0 bytes
-rw-r--r--doc/Contraction/zoom.pngbin39710 -> 0 bytes
-rw-r--r--doc/Nerve_GIC/COPYRIGHT19
-rw-r--r--doc/Nerve_GIC/GIC.jpgbin457905 -> 0 bytes
-rw-r--r--doc/Nerve_GIC/GIC.pdfbin26073 -> 0 bytes
-rw-r--r--doc/Nerve_GIC/Intro_graph_induced_complex.h186
-rw-r--r--doc/Nerve_GIC/coordGICvisu.pdfbin20745 -> 0 bytes
-rw-r--r--doc/Nerve_GIC/coordGICvisu2.jpgbin1259868 -> 0 bytes
-rw-r--r--doc/Nerve_GIC/funcGICvisu.jpgbin68388 -> 0 bytes
-rw-r--r--doc/Nerve_GIC/funcGICvisu.pdfbin11347 -> 0 bytes
-rw-r--r--doc/Nerve_GIC/gicvisu.jpgbin167192 -> 0 bytes
-rw-r--r--doc/Nerve_GIC/gicvoronoivisu.jpgbin37785 -> 0 bytes
-rw-r--r--doc/Nerve_GIC/nerve.pngbin45129 -> 0 bytes
-rw-r--r--doc/Nerve_GIC/nervevisu.jpgbin127619 -> 0 bytes
-rw-r--r--doc/Persistence_representations/Persistence_representations_doc.h259
-rw-r--r--doc/Persistence_representations/average_landscape.pngbin14917 -> 0 bytes
-rw-r--r--doc/Persistent_cohomology/3DTorus_poch.pngbin40164 -> 0 bytes
-rw-r--r--doc/Persistent_cohomology/COPYRIGHT19
-rw-r--r--doc/Persistent_cohomology/Intro_persistent_cohomology.h270
-rw-r--r--doc/Rips_complex/COPYRIGHT19
-rw-r--r--doc/Rips_complex/Intro_rips_complex.h243
-rw-r--r--doc/Rips_complex/rips_complex_representation.ipe326
-rw-r--r--doc/Rips_complex/rips_complex_representation.pngbin15677 -> 0 bytes
-rw-r--r--doc/Rips_complex/rips_one_skeleton.ipe326
-rw-r--r--doc/Rips_complex/rips_one_skeleton.pngbin47651 -> 0 bytes
-rw-r--r--doc/Simplex_tree/COPYRIGHT19
-rw-r--r--doc/Simplex_tree/Intro_simplex_tree.h87
-rw-r--r--doc/Simplex_tree/Simplex_tree_representation.pngbin39217 -> 0 bytes
-rw-r--r--doc/Skeleton_blocker/COPYRIGHT18
-rw-r--r--doc/Skeleton_blocker/blocker_curve.svg2177
-rw-r--r--doc/Skeleton_blocker/blockers_curve.pngbin38135 -> 0 bytes
-rw-r--r--doc/Skeleton_blocker/ds_representation.pngbin36412 -> 0 bytes
-rw-r--r--doc/Skeleton_blocker/ds_representation.svg470
-rw-r--r--doc/Skeleton_blocker/ds_scheme.svg477
-rw-r--r--doc/Skeleton_blocker/sphere_contraction.pngbin48755 -> 0 bytes
-rw-r--r--doc/Spatial_searching/Intro_spatial_searching.h60
-rw-r--r--doc/Subsampling/Intro_subsampling.h68
-rw-r--r--doc/Tangential_complex/COPYRIGHT19
-rw-r--r--doc/Tangential_complex/Intro_tangential_complex.h117
-rw-r--r--doc/Tangential_complex/tc_example_01.pngbin20323 -> 0 bytes
-rw-r--r--doc/Tangential_complex/tc_example_02.pngbin36017 -> 0 bytes
-rw-r--r--doc/Tangential_complex/tc_example_03.pngbin62990 -> 0 bytes
-rw-r--r--doc/Tangential_complex/tc_example_05.pngbin36032 -> 0 bytes
-rw-r--r--doc/Tangential_complex/tc_example_06.pngbin37195 -> 0 bytes
-rw-r--r--doc/Tangential_complex/tc_example_07.pngbin49399 -> 0 bytes
-rw-r--r--doc/Tangential_complex/tc_example_07_after.pngbin50132 -> 0 bytes
-rw-r--r--doc/Tangential_complex/tc_example_07_before.pngbin48898 -> 0 bytes
-rw-r--r--doc/Tangential_complex/tc_example_08.pngbin63636 -> 0 bytes
-rw-r--r--doc/Tangential_complex/tc_example_09.pngbin35453 -> 0 bytes
-rw-r--r--doc/Tangential_complex/tc_examples.pngbin150776 -> 0 bytes
-rw-r--r--doc/Witness_complex/COPYRIGHT19
-rw-r--r--doc/Witness_complex/Witness_complex_doc.h122
-rw-r--r--doc/Witness_complex/Witness_complex_representation.ipe280
-rw-r--r--doc/Witness_complex/Witness_complex_representation.pngbin21202 -> 0 bytes
-rw-r--r--doc/Witness_complex/bench_Cy8.pngbin15254 -> 0 bytes
-rw-r--r--doc/Witness_complex/bench_sphere.pngbin16614 -> 0 bytes
-rw-r--r--doc/Witness_complex/swit.svg1303
-rw-r--r--doc/common/Gudhi_banner.pngbin34877 -> 0 bytes
-rw-r--r--doc/common/examples.h99
-rw-r--r--doc/common/file_formats.h125
-rw-r--r--doc/common/footer.html23
-rw-r--r--doc/common/header.html102
-rw-r--r--doc/common/installation.h280
-rw-r--r--doc/common/main_page.h269
-rw-r--r--doc/common/offline_header.html41
-rw-r--r--doc/common/stylesheet.css1367
-rw-r--r--example/Alpha_complex/Alpha_complex_from_off.cpp63
-rw-r--r--example/Alpha_complex/Alpha_complex_from_points.cpp68
-rw-r--r--example/Alpha_complex/CMakeLists.txt35
-rw-r--r--example/Alpha_complex/alphaoffreader_for_doc_32.txt22
-rw-r--r--example/Alpha_complex/alphaoffreader_for_doc_60.txt27
-rw-r--r--example/Bitmap_cubical_complex/CMakeLists.txt10
-rw-r--r--example/Bitmap_cubical_complex/Random_bitmap_cubical_complex.cpp82
-rw-r--r--example/Bottleneck_distance/CMakeLists.txt21
-rw-r--r--example/Bottleneck_distance/README19
-rw-r--r--example/Bottleneck_distance/alpha_rips_persistence_bottleneck_distance.cpp190
-rw-r--r--example/Bottleneck_distance/bottleneck_basic_example.cpp50
-rw-r--r--example/Cech_complex/CMakeLists.txt16
-rw-r--r--example/Cech_complex/cech_complex_example_from_points.cpp54
-rw-r--r--example/Cech_complex/cech_complex_example_from_points_for_doc.txt31
-rw-r--r--example/Cech_complex/cech_complex_step_by_step.cpp166
-rw-r--r--example/Contraction/CMakeLists.txt17
-rw-r--r--example/Contraction/Garland_heckbert.cpp192
-rw-r--r--example/Contraction/Garland_heckbert/Error_quadric.h182
-rw-r--r--example/Contraction/Rips_contraction.cpp98
-rw-r--r--example/Nerve_GIC/CMakeLists.txt28
-rw-r--r--example/Nerve_GIC/CoordGIC.cpp96
-rw-r--r--example/Nerve_GIC/FuncGIC.cpp94
-rw-r--r--example/Persistence_representations/CMakeLists.txt28
-rw-r--r--example/Persistence_representations/persistence_heat_maps.cpp80
-rw-r--r--example/Persistence_representations/persistence_intervals.cpp89
-rw-r--r--example/Persistence_representations/persistence_landscape.cpp86
-rw-r--r--example/Persistence_representations/persistence_landscape_on_grid.cpp82
-rw-r--r--example/Persistence_representations/persistence_vectors.cpp74
-rw-r--r--example/Persistent_cohomology/CMakeLists.txt69
-rw-r--r--example/Persistent_cohomology/README67
-rw-r--r--example/Persistent_cohomology/custom_persistence_sort.cpp137
-rw-r--r--example/Persistent_cohomology/persistence_from_file.cpp143
-rw-r--r--example/Persistent_cohomology/persistence_from_simple_simplex_tree.cpp175
-rw-r--r--example/Persistent_cohomology/plain_homology.cpp94
-rw-r--r--example/Persistent_cohomology/rips_multifield_persistence.cpp154
-rw-r--r--example/Persistent_cohomology/rips_persistence_step_by_step.cpp166
-rw-r--r--example/Persistent_cohomology/rips_persistence_via_boundary_matrix.cpp172
-rw-r--r--example/Rips_complex/CMakeLists.txt71
-rw-r--r--example/Rips_complex/example_one_skeleton_rips_from_correlation_matrix.cpp81
-rw-r--r--example/Rips_complex/example_one_skeleton_rips_from_distance_matrix.cpp58
-rw-r--r--example/Rips_complex/example_one_skeleton_rips_from_points.cpp52
-rw-r--r--example/Rips_complex/example_rips_complex_from_csv_distance_matrix_file.cpp72
-rw-r--r--example/Rips_complex/example_rips_complex_from_off_file.cpp71
-rw-r--r--example/Rips_complex/example_sparse_rips.cpp30
-rw-r--r--example/Rips_complex/full_skeleton_rips_for_doc.txt26
-rw-r--r--example/Rips_complex/one_skeleton_rips_for_doc.txt20
-rw-r--r--example/Rips_complex/one_skeleton_rips_from_correlation_matrix_for_doc.txt17
-rw-r--r--example/Simplex_tree/CMakeLists.txt54
-rw-r--r--example/Simplex_tree/README73
-rw-r--r--example/Simplex_tree/cech_complex_cgal_mini_sphere_3d.cpp221
-rw-r--r--example/Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp276
-rw-r--r--example/Simplex_tree/graph_expansion_with_blocker.cpp77
-rw-r--r--example/Simplex_tree/mini_simplex_tree.cpp66
-rw-r--r--example/Simplex_tree/simple_simplex_tree.cpp268
-rw-r--r--example/Simplex_tree/simplex_tree_from_cliques_of_graph.cpp121
-rw-r--r--example/Skeleton_blocker/CMakeLists.txt13
-rw-r--r--example/Skeleton_blocker/Skeleton_blocker_from_simplices.cpp77
-rw-r--r--example/Skeleton_blocker/Skeleton_blocker_iteration.cpp85
-rw-r--r--example/Skeleton_blocker/Skeleton_blocker_link.cpp69
-rw-r--r--example/Spatial_searching/CMakeLists.txt9
-rw-r--r--example/Spatial_searching/example_spatial_searching.cpp60
-rw-r--r--example/Subsampling/CMakeLists.txt22
-rw-r--r--example/Subsampling/example_choose_n_farthest_points.cpp29
-rw-r--r--example/Subsampling/example_custom_kernel.cpp65
-rw-r--r--example/Subsampling/example_pick_n_random_points.cpp27
-rw-r--r--example/Subsampling/example_sparsify_point_set.cpp27
-rw-r--r--example/Tangential_complex/CMakeLists.txt20
-rw-r--r--example/Tangential_complex/example_basic.cpp46
-rw-r--r--example/Tangential_complex/example_with_perturb.cpp53
-rw-r--r--example/Witness_complex/CMakeLists.txt34
-rw-r--r--example/Witness_complex/example_nearest_landmark_table.cpp47
-rw-r--r--example/Witness_complex/example_strong_witness_complex_off.cpp57
-rw-r--r--example/Witness_complex/example_witness_complex_off.cpp62
-rw-r--r--example/Witness_complex/example_witness_complex_sphere.cpp70
-rw-r--r--example/Witness_complex/generators.h166
-rw-r--r--example/common/CMakeLists.txt36
-rw-r--r--example/common/cgal3Doffreader_result.txt8
-rw-r--r--example/common/example_CGAL_3D_points_off_reader.cpp41
-rw-r--r--example/common/example_CGAL_points_off_reader.cpp46
-rw-r--r--example/common/example_vector_double_points_off_reader.cpp43
-rw-r--r--example/common/vectordoubleoffreader_result.txt7
-rw-r--r--include/gudhi/Active_witness/Active_witness.h67
-rw-r--r--include/gudhi/Active_witness/Active_witness_iterator.h108
-rw-r--r--include/gudhi/Alpha_complex.h434
-rw-r--r--include/gudhi/Bitmap_cubical_complex.h582
-rw-r--r--include/gudhi/Bitmap_cubical_complex/counter.h145
-rw-r--r--include/gudhi/Bitmap_cubical_complex_base.h854
-rw-r--r--include/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h396
-rw-r--r--include/gudhi/Bottleneck.h123
-rw-r--r--include/gudhi/Cech_complex.h130
-rw-r--r--include/gudhi/Cech_complex_blocker.h91
-rw-r--r--include/gudhi/Clock.h89
-rw-r--r--include/gudhi/Contraction/CGAL_queue/Modifiable_priority_queue.h101
-rw-r--r--include/gudhi/Contraction/Edge_profile.h130
-rw-r--r--include/gudhi/Contraction/policies/Contraction_visitor.h91
-rw-r--r--include/gudhi/Contraction/policies/Cost_policy.h53
-rw-r--r--include/gudhi/Contraction/policies/Dummy_valid_contraction.h49
-rw-r--r--include/gudhi/Contraction/policies/Edge_length_cost.h56
-rw-r--r--include/gudhi/Contraction/policies/First_vertex_placement.h52
-rw-r--r--include/gudhi/Contraction/policies/Link_condition_valid_contraction.h56
-rw-r--r--include/gudhi/Contraction/policies/Middle_placement.h51
-rw-r--r--include/gudhi/Contraction/policies/Placement_policy.h51
-rw-r--r--include/gudhi/Contraction/policies/Valid_contraction_policy.h51
-rw-r--r--include/gudhi/Debug_utils.h57
-rw-r--r--include/gudhi/Edge_contraction.h231
-rw-r--r--include/gudhi/Euclidean_strong_witness_complex.h104
-rw-r--r--include/gudhi/Euclidean_witness_complex.h106
-rw-r--r--include/gudhi/GIC.h1371
-rw-r--r--include/gudhi/Graph_matching.h174
-rw-r--r--include/gudhi/Hasse_complex.h248
-rw-r--r--include/gudhi/Internal_point.h91
-rw-r--r--include/gudhi/Kd_tree_search.h286
-rw-r--r--include/gudhi/Miniball.COPYRIGHT4
-rw-r--r--include/gudhi/Miniball.README26
-rw-r--r--include/gudhi/Miniball.hpp523
-rw-r--r--include/gudhi/Neighbors_finder.h193
-rw-r--r--include/gudhi/Null_output_iterator.h48
-rw-r--r--include/gudhi/Off_reader.h187
-rw-r--r--include/gudhi/PSSK.h168
-rw-r--r--include/gudhi/Persistence_graph.h188
-rw-r--r--include/gudhi/Persistence_heat_maps.h919
-rw-r--r--include/gudhi/Persistence_intervals.h570
-rw-r--r--include/gudhi/Persistence_intervals_with_distances.h63
-rw-r--r--include/gudhi/Persistence_landscape.h1383
-rw-r--r--include/gudhi/Persistence_landscape_on_grid.h1348
-rw-r--r--include/gudhi/Persistence_vectors.h640
-rw-r--r--include/gudhi/Persistent_cohomology.h769
-rw-r--r--include/gudhi/Persistent_cohomology/Field_Zp.h116
-rw-r--r--include/gudhi/Persistent_cohomology/Multi_field.h185
-rw-r--r--include/gudhi/Persistent_cohomology/Persistent_cohomology_column.h140
-rw-r--r--include/gudhi/Point.h170
-rw-r--r--include/gudhi/Points_3D_off_io.h202
-rw-r--r--include/gudhi/Points_off_io.h183
-rw-r--r--include/gudhi/Rips_complex.h185
-rw-r--r--include/gudhi/Simple_object_pool.h81
-rw-r--r--include/gudhi/Simplex_tree.h1483
-rw-r--r--include/gudhi/Simplex_tree/Simplex_tree_iterators.h354
-rw-r--r--include/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h72
-rw-r--r--include/gudhi/Simplex_tree/Simplex_tree_siblings.h131
-rw-r--r--include/gudhi/Simplex_tree/indexing_tag.h39
-rw-r--r--include/gudhi/Skeleton_blocker.h250
-rw-r--r--include/gudhi/Skeleton_blocker/Skeleton_blocker_complex_visitor.h144
-rw-r--r--include/gudhi/Skeleton_blocker/Skeleton_blocker_link_superior.h77
-rw-r--r--include/gudhi/Skeleton_blocker/Skeleton_blocker_off_io.h203
-rw-r--r--include/gudhi/Skeleton_blocker/Skeleton_blocker_simple_geometric_traits.h99
-rw-r--r--include/gudhi/Skeleton_blocker/Skeleton_blocker_simple_traits.h190
-rw-r--r--include/gudhi/Skeleton_blocker/Skeleton_blocker_simplex.h374
-rw-r--r--include/gudhi/Skeleton_blocker/Skeleton_blocker_sub_complex.h273
-rw-r--r--include/gudhi/Skeleton_blocker/internal/Top_faces.h73
-rw-r--r--include/gudhi/Skeleton_blocker/internal/Trie.h269
-rw-r--r--include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_blockers_iterators.h134
-rw-r--r--include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_edges_iterators.h147
-rw-r--r--include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_iterators.h32
-rw-r--r--include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_simplices_iterators.h402
-rw-r--r--include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_triangles_iterators.h226
-rw-r--r--include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_vertices_iterators.h170
-rw-r--r--include/gudhi/Skeleton_blocker_complex.h1605
-rw-r--r--include/gudhi/Skeleton_blocker_contractor.h582
-rw-r--r--include/gudhi/Skeleton_blocker_geometric_complex.h227
-rw-r--r--include/gudhi/Skeleton_blocker_link_complex.h299
-rw-r--r--include/gudhi/Skeleton_blocker_simplifiable_complex.h467
-rw-r--r--include/gudhi/Sparse_rips_complex.h175
-rw-r--r--include/gudhi/Strong_witness_complex.h182
-rw-r--r--include/gudhi/Tangential_complex.h2008
-rw-r--r--include/gudhi/Tangential_complex/Simplicial_complex.h539
-rw-r--r--include/gudhi/Tangential_complex/config.h43
-rw-r--r--include/gudhi/Tangential_complex/utilities.h195
-rw-r--r--include/gudhi/Unitary_tests_utils.h40
-rw-r--r--include/gudhi/Witness_complex.h201
-rw-r--r--include/gudhi/Witness_complex/all_faces_in.h55
-rw-r--r--include/gudhi/allocator.h55
-rw-r--r--include/gudhi/choose_n_farthest_points.h133
-rw-r--r--include/gudhi/common_persistence_representations.h127
-rw-r--r--include/gudhi/console_color.h97
-rw-r--r--include/gudhi/distance_functions.h123
-rw-r--r--include/gudhi/graph_simplicial_complex.h111
-rw-r--r--include/gudhi/pick_n_random_points.h86
-rw-r--r--include/gudhi/random_point_generators.h507
-rw-r--r--include/gudhi/read_persistence_from_file.h120
-rw-r--r--include/gudhi/reader_utils.h369
-rw-r--r--include/gudhi/sparsify_point_set.h113
-rw-r--r--include/gudhi/writing_persistence_to_file.h117
-rw-r--r--utilities/Alpha_complex/CMakeLists.txt64
-rw-r--r--utilities/Alpha_complex/alpha_complex_3d_helper.h74
-rw-r--r--utilities/Alpha_complex/alpha_complex_3d_persistence.cpp271
-rw-r--r--utilities/Alpha_complex/alpha_complex_persistence.cpp138
-rw-r--r--utilities/Alpha_complex/alphacomplex.md165
-rw-r--r--utilities/Alpha_complex/exact_alpha_complex_3d_persistence.cpp265
-rw-r--r--utilities/Alpha_complex/periodic_alpha_complex_3d_persistence.cpp302
-rw-r--r--utilities/Alpha_complex/weighted_alpha_complex_3d_persistence.cpp316
-rw-r--r--utilities/Alpha_complex/weighted_periodic_alpha_complex_3d_persistence.cpp288
-rw-r--r--utilities/Bitmap_cubical_complex/CMakeLists.txt28
-rw-r--r--utilities/Bitmap_cubical_complex/cubical_complex_persistence.cpp80
-rw-r--r--utilities/Bitmap_cubical_complex/cubicalcomplex.md37
-rw-r--r--utilities/Bitmap_cubical_complex/periodic_cubical_complex_persistence.cpp82
-rw-r--r--utilities/Bottleneck_distance/CMakeLists.txt15
-rw-r--r--utilities/Bottleneck_distance/bottleneck_distance.cpp50
-rw-r--r--utilities/Bottleneck_distance/bottleneckdistance.md26
-rw-r--r--utilities/Cech_complex/CMakeLists.txt14
-rw-r--r--utilities/Cech_complex/cech_persistence.cpp136
-rw-r--r--utilities/Cech_complex/cechcomplex.md38
-rw-r--r--utilities/Nerve_GIC/CMakeLists.txt27
-rwxr-xr-xutilities/Nerve_GIC/KeplerMapperVisuFromTxtFile.py89
-rw-r--r--utilities/Nerve_GIC/Nerve.cpp96
-rw-r--r--utilities/Nerve_GIC/Nerve.txt63
-rw-r--r--utilities/Nerve_GIC/VoronoiGIC.cpp90
-rw-r--r--utilities/Nerve_GIC/covercomplex.md69
-rwxr-xr-xutilities/Nerve_GIC/km.py390
-rw-r--r--utilities/Nerve_GIC/km.py.COPYRIGHT26
-rw-r--r--utilities/Persistence_representations/CMakeLists.txt59
-rw-r--r--utilities/Persistence_representations/persistence_heat_maps/CMakeLists.txt14
-rw-r--r--utilities/Persistence_representations/persistence_heat_maps/average_persistence_heat_maps.cpp63
-rw-r--r--utilities/Persistence_representations/persistence_heat_maps/compute_distance_of_persistence_heat_maps.cpp94
-rw-r--r--utilities/Persistence_representations/persistence_heat_maps/compute_scalar_product_of_persistence_heat_maps.cpp85
-rw-r--r--utilities/Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_arctan_of_their_persistence.cpp81
-rw-r--r--utilities/Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_distance_from_diagonal.cpp81
-rw-r--r--utilities/Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_squared_diag_distance.cpp83
-rw-r--r--utilities/Persistence_representations/persistence_heat_maps/create_persistence_heat_maps.cpp78
-rw-r--r--utilities/Persistence_representations/persistence_heat_maps/create_pssk.cpp79
-rw-r--r--utilities/Persistence_representations/persistence_heat_maps/plot_persistence_heat_map.cpp42
-rw-r--r--utilities/Persistence_representations/persistence_intervals/CMakeLists.txt37
-rw-r--r--utilities/Persistence_representations/persistence_intervals/compute_birth_death_range_in_persistence_diagram.cpp68
-rw-r--r--utilities/Persistence_representations/persistence_intervals/compute_bottleneck_distance.cpp95
-rw-r--r--utilities/Persistence_representations/persistence_intervals/compute_number_of_dominant_intervals.cpp54
-rw-r--r--utilities/Persistence_representations/persistence_intervals/plot_histogram_of_intervals_lengths.cpp77
-rw-r--r--utilities/Persistence_representations/persistence_intervals/plot_persistence_Betti_numbers.cpp87
-rw-r--r--utilities/Persistence_representations/persistence_intervals/plot_persistence_intervals.cpp53
-rw-r--r--utilities/Persistence_representations/persistence_landscapes/CMakeLists.txt9
-rw-r--r--utilities/Persistence_representations/persistence_landscapes/average_landscapes.cpp63
-rw-r--r--utilities/Persistence_representations/persistence_landscapes/compute_distance_of_landscapes.cpp93
-rw-r--r--utilities/Persistence_representations/persistence_landscapes/compute_scalar_product_of_landscapes.cpp84
-rw-r--r--utilities/Persistence_representations/persistence_landscapes/create_landscapes.cpp65
-rw-r--r--utilities/Persistence_representations/persistence_landscapes/plot_landscapes.cpp43
-rw-r--r--utilities/Persistence_representations/persistence_landscapes_on_grid/CMakeLists.txt10
-rw-r--r--utilities/Persistence_representations/persistence_landscapes_on_grid/average_landscapes_on_grid.cpp63
-rw-r--r--utilities/Persistence_representations/persistence_landscapes_on_grid/compute_distance_of_landscapes_on_grid.cpp93
-rw-r--r--utilities/Persistence_representations/persistence_landscapes_on_grid/compute_scalar_product_of_landscapes_on_grid.cpp85
-rw-r--r--utilities/Persistence_representations/persistence_landscapes_on_grid/create_landscapes_on_grid.cpp79
-rw-r--r--utilities/Persistence_representations/persistence_landscapes_on_grid/plot_landscapes_on_grid.cpp44
-rw-r--r--utilities/Persistence_representations/persistence_vectors/CMakeLists.txt9
-rw-r--r--utilities/Persistence_representations/persistence_vectors/average_persistence_vectors.cpp65
-rw-r--r--utilities/Persistence_representations/persistence_vectors/compute_distance_of_persistence_vectors.cpp94
-rw-r--r--utilities/Persistence_representations/persistence_vectors/compute_scalar_product_of_persistence_vectors.cpp86
-rw-r--r--utilities/Persistence_representations/persistence_vectors/create_persistence_vectors.cpp69
-rw-r--r--utilities/Persistence_representations/persistence_vectors/plot_persistence_vectors.cpp43
-rw-r--r--utilities/Rips_complex/CMakeLists.txt34
-rw-r--r--utilities/Rips_complex/rips_correlation_matrix_persistence.cpp171
-rw-r--r--utilities/Rips_complex/rips_distance_matrix_persistence.cpp133
-rw-r--r--utilities/Rips_complex/rips_persistence.cpp135
-rw-r--r--utilities/Rips_complex/ripscomplex.md109
-rw-r--r--utilities/Rips_complex/sparse_rips_persistence.cpp133
-rw-r--r--utilities/Witness_complex/CMakeLists.txt27
-rw-r--r--utilities/Witness_complex/strong_witness_persistence.cpp156
-rw-r--r--utilities/Witness_complex/weak_witness_persistence.cpp156
-rw-r--r--utilities/Witness_complex/witnesscomplex.md73
-rw-r--r--utilities/common/CMakeLists.txt16
-rw-r--r--utilities/common/off_file_from_shape_generator.cpp189
-rw-r--r--utilities/common/pointsetgenerator.md39
581 files changed, 0 insertions, 149828 deletions
diff --git a/CMakeGUDHIVersion.txt b/CMakeGUDHIVersion.txt
deleted file mode 100644
index ebaddd47..00000000
--- a/CMakeGUDHIVersion.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-set (GUDHI_MAJOR_VERSION 2)
-set (GUDHI_MINOR_VERSION 3)
-set (GUDHI_PATCH_VERSION 0)
-set(GUDHI_VERSION ${GUDHI_MAJOR_VERSION}.${GUDHI_MINOR_VERSION}.${GUDHI_PATCH_VERSION})
-
-message(STATUS "GUDHI version : ${GUDHI_VERSION}")
diff --git a/CMakeLists.txt b/CMakeLists.txt
deleted file mode 100644
index 6c446104..00000000
--- a/CMakeLists.txt
+++ /dev/null
@@ -1,91 +0,0 @@
-cmake_minimum_required(VERSION 3.1)
-
-project(GUDHI)
-
-include(CMakeGUDHIVersion.txt)
-
-list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/")
-
-# This variable is used by Cython CMakeLists.txt and by GUDHI_third_party_libraries to know its path
-set(GUDHI_CYTHON_PATH "cython")
-
-# For third parties libraries management - To be done last as CGAL updates CMAKE_MODULE_PATH
-include(GUDHI_third_party_libraries NO_POLICY_SCOPE)
-
-include(GUDHI_compilation_flags)
-
-# Add your new module in the list, order is not important
-include(GUDHI_modules)
-
-add_gudhi_module(common)
-add_gudhi_module(Alpha_complex)
-add_gudhi_module(Bitmap_cubical_complex)
-add_gudhi_module(Bottleneck_distance)
-add_gudhi_module(Cech_complex)
-add_gudhi_module(Contraction)
-add_gudhi_module(Hasse_complex)
-add_gudhi_module(Persistence_representations)
-add_gudhi_module(Persistent_cohomology)
-add_gudhi_module(Rips_complex)
-add_gudhi_module(Simplex_tree)
-add_gudhi_module(Skeleton_blocker)
-add_gudhi_module(Spatial_searching)
-add_gudhi_module(Subsampling)
-add_gudhi_module(Tangential_complex)
-add_gudhi_module(Witness_complex)
-add_gudhi_module(Nerve_GIC)
-
-message("++ GUDHI_MODULES list is:\"${GUDHI_MODULES}\"")
-
-# For "make doxygen" - Requires GUDHI_USER_VERSION_DIR to be set
-set(GUDHI_USER_VERSION_DIR ${CMAKE_SOURCE_DIR})
-include(GUDHI_doxygen_target)
-
-#---------------------------------------------------------------------------------------
-# Gudhi compilation part
-include_directories(include)
-
-# Include module CMake subdirectories
-# GUDHI_SUB_DIRECTORIES is managed in CMAKE_MODULE_PATH/GUDHI_modules.cmake
-foreach(GUDHI_MODULE ${GUDHI_MODULES})
- foreach(GUDHI_SUB_DIRECTORY ${GUDHI_SUB_DIRECTORIES})
- if(EXISTS ${CMAKE_SOURCE_DIR}/${GUDHI_SUB_DIRECTORY}/${GUDHI_MODULE}/CMakeLists.txt)
- add_subdirectory(${CMAKE_SOURCE_DIR}/${GUDHI_SUB_DIRECTORY}/${GUDHI_MODULE}/)
- endif()
- endforeach()
-endforeach()
-
-add_subdirectory(GudhUI)
-
-if (WITH_GUDHI_PYTHON)
- # specific for cython module
- add_subdirectory(${GUDHI_CYTHON_PATH})
-endif()
-#---------------------------------------------------------------------------------------
-
-#---------------------------------------------------------------------------------------
-# GUDHIConfig.cmake
-# Export the package for use from the build-tree
-# (this registers the build-tree with a global CMake-registry)
-export(PACKAGE GUDHI)
-
-message("++ make install will install ${PROJECT_NAME} in the following directory : ${CMAKE_INSTALL_PREFIX}")
-# Create the GUDHIConfig.cmake and GUDHIConfigVersion files
-set(CONF_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/include;${CMAKE_INSTALL_PREFIX}/include")
-configure_file(GUDHIConfig.cmake.in "${PROJECT_BINARY_DIR}/GUDHIConfig.cmake" @ONLY)
-configure_file(GUDHIConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/GUDHIConfigVersion.cmake" @ONLY)
-
-#---------------------------------------------------------------------------------------
-
-#---------------------------------------------------------------------------------------
-# Gudhi installation part
-
-# Install the GUDHIConfig.cmake and GUDHIConfigVersion.cmake
-install(FILES
- "${PROJECT_BINARY_DIR}/GUDHIConfig.cmake"
- "${PROJECT_BINARY_DIR}/GUDHIConfigVersion.cmake"
- DESTINATION share/gudhi)
-
-# install the include file on "make install"
-install(DIRECTORY include/gudhi DESTINATION include)
-#---------------------------------------------------------------------------------------
diff --git a/COPYING b/COPYING
deleted file mode 100644
index 20d40b6b..00000000
--- a/COPYING
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- <program> Copyright (C) <year> <name of author>
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>. \ No newline at end of file
diff --git a/Conventions.txt b/Conventions.txt
deleted file mode 100644
index e4ae7925..00000000
--- a/Conventions.txt
+++ /dev/null
@@ -1 +0,0 @@
-Please refer to the Wiki: https://gforge.inria.fr/plugins/mediawiki/wiki/gudhi/index.php/Conventions \ No newline at end of file
diff --git a/Doxyfile b/Doxyfile
deleted file mode 100644
index a16431ad..00000000
--- a/Doxyfile
+++ /dev/null
@@ -1,2317 +0,0 @@
-# Doxyfile 1.8.6
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME = "GUDHI"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER = "2.3.0"
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF = "C++ library for Topological Data Analysis (TDA) and Higher Dimensional Geometry Understanding."
-
-# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
-# the documentation. The maximum height of the logo should not exceed 55 pixels
-# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
-# to the output directory.
-
-PROJECT_LOGO =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = "doc/"
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES = YES
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH = include concept
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
-# new page for each member. If set to NO, the documentation of a member will be
-# part of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE = 4
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C.
-#
-# Note For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT = YES
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by by putting a % sign in front of the word
-# or globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES = NO
-
-# This flag is only useful for Objective-C code. When set to YES local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS = YES
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO these classes will be included in the various overviews. This option has
-# no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES = YES
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES = NO
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING = NO
-
-# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
-# todo list. This list is created by putting \todo commands in the
-# documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST = NO
-
-# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
-# test list. This list is created by putting \test commands in the
-# documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST = NO
-
-# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST = NO
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= NO
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if <section_label> ... \endif and \cond <section_label>
-# ... \endcond blocks.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES the list
-# will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. Do not use file names with spaces, bibtex cannot handle them. See
-# also \cite for info how to create references.
-
-CITE_BIB_FILES = biblio/bibliography.bib \
- biblio/how_to_cite_cgal.bib \
- biblio/how_to_cite_gudhi.bib
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO doxygen will only warn about wrong or incomplete parameter
-# documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
-# Note: If this tag is empty the current directory is searched.
-
-INPUT =
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
-
-FILE_PATTERNS =
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE = data/ \
- example/ \
- GudhUI/ \
- cmake/ \
- src/cython/ \
- include/gudhi_patches/
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS = */utilities/*/*.md
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH = biblio/ \
- example/ \
- utilities/
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH = doc/common/ \
- doc/Alpha_complex/ \
- doc/Bitmap_cubical_complex/ \
- doc/Bottleneck_distance/ \
- doc/Contraction/ \
- doc/Cech_complex/ \
- doc/Hasse_complex/ \
- doc/Persistence_representations/ \
- doc/Persistent_cohomology/ \
- doc/Rips_complex/ \
- doc/Simplex_tree/ \
- doc/Skeleton_blocker/ \
- doc/Spatial_searching/ \
- doc/Subsampling/ \
- doc/Tangential_complex/ \
- doc/Witness_complex/ \
- doc/Nerve_GIC/ \
-
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-# <filter> <input-file>
-#
-# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER ) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX = YES
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER = doc/common/header.html
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER = doc/common/footer.html
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET = doc/common/stylesheet.css
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
-# defined cascading style sheet that is included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefor more robust against future updates.
-# Doxygen will copy the style sheet file to the output directory. For an example
-# see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the stylesheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler ( hhc.exe). If non-empty
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated (
-# YES) or that it should be included in the master .chm file ( NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated (
-# YES) or a normal table of contents ( NO) in the .chm file.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX = YES
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW = YES
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH = 250
-
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using prerendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX = YES
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH = ../common
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use <access key> + S
-# (what the <access key> is depends on the OS and browser, but it is typically
-# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
-# key> to jump into the search results window, the results can be navigated
-# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
-# to select a filter and <Enter> or <escape> to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-SEARCHENGINE = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
-# are two flavours of web server based searching depending on the
-# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
-# searching and an index file used by the script. When EXTERNAL_SEARCH is
-# enabled the indexing and searching needs to be provided by external tools. See
-# the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/). See the section "External Indexing and
-# Searching" for details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
-# The default value is: YES.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when enabling USE_PDFLATEX this option is only used for generating
-# bitmaps for formulas in the HTML output, but not in the Makefile that is
-# written to the output directory.
-# The default file is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used by the
-# printer.
-# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE = a4
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES = amsfonts amsmath amssymb
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
-#
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
-# replace them by respectively the title of the page, the current date and time,
-# only the current date, the version number of doxygen, the project name (see
-# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
-# contain links (just like the HTML output) instead of page references. This
-# makes the output suitable for online browsing using a PDF viewer.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS = YES
-
-# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES to get a
-# higher quality PDF documentation.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-USE_PDFLATEX = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE = NO
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES = NO
-
-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
-# code with syntax highlighting in the LaTeX output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_SOURCE_CODE = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE = plain
-
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
-# RTF output is optimized for Word 97 and may not look too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
-# contain hyperlink fields. The RTF file will contain links (just like the HTML
-# output) instead of page references. This makes the output suitable for online
-# browsing using Word or some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's config
-# file, i.e. a series of assignments. You only have to provide replacements,
-# missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's config file. A template extensions file can be generated
-# using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
-# will generate one additional man file for each entity documented in the real
-# man page(s). These additional files only source the real man page, but without
-# them the man command would be unable to find the correct page.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
-# captures the structure of the code including all documentation.
-# The default value is: NO.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT = xml
-
-# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
-# listings (including syntax highlighting and cross-referencing information) to
-# the XML output. Note that enabling this will significantly increase the size
-# of the XML output.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT = docbook
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
-# Definitions (see http://autogen.sf.net) file that captures the structure of
-# the code including all documentation. Note that this feature is still
-# experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
-# file that captures the structure of the code including all documentation.
-#
-# Note that this feature is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
-# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
-# output from the Perl module output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
-# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO the
-# size of the Perl module output will be much smaller and Perl will parse it
-# just the same.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file are
-# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
-# so different doxyrules.make files included by the same Makefile don't
-# overwrite each other's variables.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
-# in the source code. If set to NO only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-MACRO_EXPANSION = YES
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
-# the macro expansion is limited to the macros specified with the PREDEFINED and
-# EXPAND_AS_DEFINED tags.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_ONLY_PREDEF = YES
-
-# If the SEARCH_INCLUDES tag is set to YES the includes files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by the
-# preprocessor.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will be
-# used.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that are
-# defined before the preprocessor is started (similar to the -D option of e.g.
-# gcc). The argument of the tag is a list of macros of the form: name or
-# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
-# is assumed. To prevent a macro definition from being undefined via #undef or
-# recursively expanded use the := operator instead of the = operator.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-PREDEFINED = protected=private
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
-# tag can be used to specify a list of macro names that should be expanded. The
-# macro definition that is found in the sources will be used. Use the PREDEFINED
-# tag if you want to use a different macro definition that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all refrences to function-like macros that are alone on a line, have an
-# all uppercase name, and do not end with a semicolon. Such function macros are
-# typically used for boiler-plate code, and will confuse the parser if not
-# removed.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. The format of
-# a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where loc1 and loc2 can be relative or absolute paths or URLs. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: Each tag file must have an unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
-# run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
-# tag file that is based on the input files it reads. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
-# class index. If set to NO only the inherited external classes will be listed.
-# The default value is: NO.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
-# the modules index. If set to NO, only the current project's groups will be
-# listed.
-# The default value is: YES.
-
-EXTERNAL_GROUPS = YES
-
-# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of 'which perl').
-# The default file (with absolute path) is: /usr/bin/perl.
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
-# disabled, but it is recommended to install and use dot, since it yields more
-# powerful graphs.
-# The default value is: YES.
-
-CLASS_DIAGRAMS = NO
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see:
-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH =
-
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH =
-
-# If set to YES, the inheritance and collaboration graphs will hide inheritance
-# and usage relations if the target is undocumented or is not a class.
-# The default value is: YES.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
-# Bell Labs. The other options in this section have no effect if this option is
-# set to NO
-# The default value is: NO.
-
-HAVE_DOT = YES
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS = 0
-
-# When you want a differently looking font n the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE = 10
-
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH =
-
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CLASS_GRAPH = NO
-
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
-# graph for each documented class showing the direct and indirect implementation
-# dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH = NO
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LIMIT_NUM_FIELDS = 10
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS = YES
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
-# direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH = NO
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
-# the direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH = NO
-
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
-# dependencies a directory has on other directories in a graphical way. The
-# dependency relations are determined by the #include relations between the
-# files in the directories.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, jpg, gif and svg.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG = NO
-
-# The DOT_PATH tag can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the \dotfile
-# command).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS =
-
-# The DIAFILE_DIRS tag can be used to specify one or more directories that
-# contain dia files that are included in the documentation (see the \diafile
-# command).
-
-DIAFILE_DIRS =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
-# generated by dot. A depth value of 3 means that only nodes reachable from the
-# root by following a path via at most 3 edges will be shown. Nodes that lay
-# further from the root node will be omitted. Note that setting this option to 1
-# or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS = YES
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
-# files that are used to generate the various graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_CLEANUP = YES
diff --git a/GUDHIConfig.cmake.in b/GUDHIConfig.cmake.in
deleted file mode 100644
index 8d82f235..00000000
--- a/GUDHIConfig.cmake.in
+++ /dev/null
@@ -1,12 +0,0 @@
-# - Config file for the GUDHI package
-# It defines the following variables
-# GUDHI_INCLUDE_DIRS - include directories for GUDHI
-#
-# Order is :
-# 1. user defined GUDHI_INCLUDE_DIRS
-# 2. ${CMAKE_SOURCE_DIR}/include => Where the 'cmake' has been done
-# 3. ${CMAKE_INSTALL_PREFIX}/include => Where the 'make install' has been performed
-
-# Compute paths
-set(GUDHI_INCLUDE_DIRS "${GUDHI_INCLUDE_DIRS};@CONF_INCLUDE_DIRS@")
-
diff --git a/GUDHIConfigVersion.cmake.in b/GUDHIConfigVersion.cmake.in
deleted file mode 100644
index 6d443ef6..00000000
--- a/GUDHIConfigVersion.cmake.in
+++ /dev/null
@@ -1,11 +0,0 @@
-set(PACKAGE_VERSION "@GUDHI_VERSION@")
-
-# Check whether the requested PACKAGE_FIND_VERSION is compatible
-if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
- set(PACKAGE_VERSION_COMPATIBLE FALSE)
-else()
- set(PACKAGE_VERSION_COMPATIBLE TRUE)
- if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
- set(PACKAGE_VERSION_EXACT TRUE)
- endif()
-endif()
diff --git a/GudhUI/CMakeLists.txt b/GudhUI/CMakeLists.txt
deleted file mode 100644
index b357b8f7..00000000
--- a/GudhUI/CMakeLists.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-project(GudhUI)
-
-# Need to find OpenGL first as find_package(Qt5) tries to #include"GL/gl.h" on some platforms
-find_package(OpenGL)
-
-if (OPENGL_FOUND)
- find_package(Qt5 COMPONENTS Widgets Xml OpenGL)
- find_package(QGLViewer)
-
- if ( CGAL_FOUND AND Qt5_FOUND AND QGLVIEWER_FOUND AND NOT CGAL_VERSION VERSION_EQUAL 4.8.0)
-
- set(CMAKE_AUTOMOC ON)
- set(CMAKE_AUTOUIC ON)
- set(CMAKE_INCLUDE_CURRENT_DIR ON)
-
- SET(Boost_USE_STATIC_LIBS ON)
- SET(Boost_USE_MULTITHREAD OFF)
- include_directories (${QGLVIEWER_INCLUDE_DIR})
-
- add_executable ( GudhUI
- gui/gudhui.cpp
- gui/MainWindow.cpp
- gui/Menu_k_nearest_neighbors.cpp
- gui/Menu_uniform_neighbors.cpp
- gui/Menu_edge_contraction.cpp
- gui/Menu_persistence.cpp
- view/Viewer_instructor.cpp
- view/Viewer.cpp
- )
- target_link_libraries( GudhUI Qt5::Widgets Qt5::Xml Qt5::OpenGL )
- target_link_libraries( GudhUI ${QGLVIEWER_LIBRARIES} )
- target_link_libraries( GudhUI ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} )
- if (TBB_FOUND)
- target_link_libraries( GudhUI ${TBB_LIBRARIES})
- endif()
-
- install(TARGETS GudhUI DESTINATION bin)
-
- endif()
-endif(OPENGL_FOUND)
diff --git a/GudhUI/gui/KNearestNeighborsMenu.ui b/GudhUI/gui/KNearestNeighborsMenu.ui
deleted file mode 100644
index 472db48b..00000000
--- a/GudhUI/gui/KNearestNeighborsMenu.ui
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>KNearestNeighborsMenu</class>
- <widget class="QDialog" name="KNearestNeighborsMenu">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>298</width>
- <height>209</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>k-nearest neighbors</string>
- </property>
- <widget class="QDialogButtonBox" name="buttonBox">
- <property name="geometry">
- <rect>
- <x>50</x>
- <y>160</y>
- <width>171</width>
- <height>32</height>
- </rect>
- </property>
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="standardButtons">
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
- </property>
- </widget>
- <widget class="QWidget" name="formLayoutWidget">
- <property name="geometry">
- <rect>
- <x>30</x>
- <y>10</y>
- <width>229</width>
- <height>84</height>
- </rect>
- </property>
- <layout class="QFormLayout" name="formLayout_2">
- <property name="fieldGrowthPolicy">
- <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
- </property>
- <item row="0" column="0">
- <widget class="QLabel" name="label">
- <property name="text">
- <string>k </string>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QSpinBox" name="spinBoxK">
- <property name="maximum">
- <number>10000000</number>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="label_2">
- <property name="text">
- <string>Metric</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QComboBox" name="comboBoxMetric">
- <item>
- <property name="text">
- <string>Ambient</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Reduced Space</string>
- </property>
- </item>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QWidget" name="gridLayoutWidget">
- <property name="geometry">
- <rect>
- <x>30</x>
- <y>110</y>
- <width>250</width>
- <height>40</height>
- </rect>
- </property>
- <layout class="QGridLayout" name="gridLayout">
- <item row="0" column="1">
- <widget class="QPushButton" name="pushButtonCompute">
- <property name="text">
- <string>Compute</string>
- </property>
- </widget>
- </item>
- <item row="0" column="0">
- <widget class="QCheckBox" name="checkBoxAutoUpdate">
- <property name="text">
- <string>auto update</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </widget>
- <resources/>
- <connections>
- <connection>
- <sender>buttonBox</sender>
- <signal>accepted()</signal>
- <receiver>KNearestNeighborsMenu</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>248</x>
- <y>254</y>
- </hint>
- <hint type="destinationlabel">
- <x>157</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>buttonBox</sender>
- <signal>rejected()</signal>
- <receiver>KNearestNeighborsMenu</receiver>
- <slot>reject()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>316</x>
- <y>260</y>
- </hint>
- <hint type="destinationlabel">
- <x>286</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
diff --git a/GudhUI/gui/MainWindow.cpp b/GudhUI/gui/MainWindow.cpp
deleted file mode 100644
index b11b80e9..00000000
--- a/GudhUI/gui/MainWindow.cpp
+++ /dev/null
@@ -1,299 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "MainWindow.h"
-
-#include <QWidget>
-#include <QInputDialog>
-#include <QFileDialog>
-
-#include <fenv.h>
-
-#include "gui/Menu_k_nearest_neighbors.h"
-#include "gui/Menu_uniform_neighbors.h"
-#include "gui/Menu_edge_contraction.h"
-#include "gui/Menu_persistence.h"
-
-MainWindow::MainWindow(QWidget* parent) :
- menu_k_nearest_neighbors_(new Menu_k_nearest_neighbors(this)),
- menu_uniform_neighbors_(new Menu_uniform_neighbors(this)),
- menu_edge_contraction_(new Menu_edge_contraction(this, model_)),
- menu_persistence_(new Menu_persistence(this)) {
- // #ifndef NDEBUG // catch nan
- // feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
- // #endif
-
- setupUi(this);
-
- viewer_instructor_ = new Viewer_instructor(
- this,
- this->viewer,
- model_.complex_);
-
- connectActions();
-
- update_view();
-}
-
-void
-MainWindow::closeEvent(QCloseEvent *event) {
- exit(0);
-}
-
-void
-MainWindow::connectActions() {
- QObject::connect(this->actionLoad_complex, SIGNAL(triggered()), this,
- SLOT(off_file_open()));
- QObject::connect(this->actionLoad_points, SIGNAL(triggered()), this,
- SLOT(off_points_open()));
- QObject::connect(this->actionSave_complex, SIGNAL(triggered()), this,
- SLOT(off_file_save()));
- QObject::connect(this->actionSave_points, SIGNAL(triggered()), this,
- SLOT(off_points_save()));
-
- QObject::connect(this->actionShow_graph_stats, SIGNAL(triggered()), this,
- SLOT(show_graph_stats()));
- QObject::connect(this->actionShow_complex_stats, SIGNAL(triggered()), this,
- SLOT(show_complex_stats()));
- QObject::connect(this->actionShow_complex_dimension, SIGNAL(triggered()), this,
- SLOT(show_complex_dimension()));
-
- QObject::connect(this->actionUniform_proximity_graph, SIGNAL(triggered()), this,
- SLOT(build_rips_menu()));
- QObject::connect(this->actionK_nearest_neighbors_graph, SIGNAL(triggered()), this,
- SLOT(build_k_nearest_neighbors_menu()));
-
-
- QObject::connect(this->actionContract_edges, SIGNAL(triggered()), this,
- SLOT(contract_edge_menu()));
-
- QObject::connect(this->actionCollapse_vertices, SIGNAL(triggered()), this,
- SLOT(collapse_vertices()));
-
- QObject::connect(this->actionCollapse_edges, SIGNAL(triggered()), this,
- SLOT(collapse_edges()));
-
- QObject::connect(this->actionNoise, SIGNAL(triggered()), this,
- SLOT(uniform_noise()));
- QObject::connect(this->actionLloyd, SIGNAL(triggered()), this,
- SLOT(lloyd()));
-
-
- // view
- QObject::connect(this->actionPoints, SIGNAL(triggered()), this->viewer_instructor_,
- SLOT(change_draw_vertices()));
- QObject::connect(this->actionEdges, SIGNAL(triggered()), this->viewer_instructor_,
- SLOT(change_draw_edges()));
- QObject::connect(this->actionTriangles, SIGNAL(triggered()), this->viewer_instructor_,
- SLOT(change_draw_triangles()));
-
- // topology
- QObject::connect(this->actionShow_homology_group, SIGNAL(triggered()), this,
- SLOT(show_homology_group()));
- QObject::connect(this->actionEuler_characteristic, SIGNAL(triggered()), this,
- SLOT(show_euler_characteristic()));
- QObject::connect(this->actionPersistence, SIGNAL(triggered()), this,
- SLOT(persistence_menu()));
- QObject::connect(this->actionEstimate_topological_changes, SIGNAL(triggered()), this,
- SLOT(critical_points_menu()));
- QObject::connect(this->actionIs_manifold, SIGNAL(triggered()), this,
- SLOT(is_manifold_menu()));
-
-
- QObject::connect(this, SIGNAL(sceneChanged()), this->viewer_instructor_,
- SLOT(sceneChanged()));
-}
-
-void
-MainWindow::init_view() const {
- viewer_instructor_->initialize_bounding_box();
- viewer_instructor_->show_entire_scene();
- update_view();
-}
-
-void
-MainWindow::update_view() const {
- emit(sceneChanged());
-}
-
-/**
- * open a file chooser to choose an off to load
- */
-void
-MainWindow::off_file_open() {
- QString fileName = QFileDialog::getOpenFileName(this, tr("Open off File"),
- "~/", tr("off files (*.off)"));
- if (!fileName.isEmpty()) {
- model_.off_file_open(fileName.toStdString());
- init_view();
- }
-}
-
-void
-MainWindow::off_points_open() {
- QString fileName = QFileDialog::getOpenFileName(this, tr("Open points in a off file"),
- "~/", tr("off files (*.off)"));
- if (!fileName.isEmpty()) {
- model_.off_points_open(fileName.toStdString());
- init_view();
- }
-}
-
-/**
- * open a file chooser to choose an off to save
- */
-void
-MainWindow::off_file_save() {
- QString fileName = QFileDialog::getOpenFileName(this, tr("Save to off File"),
- "~/", tr("off files (*.off)"));
- if (!fileName.isEmpty()) {
- model_.off_file_save(fileName.toStdString());
- }
-}
-
-/**
- * open a file chooser to choose an off to save
- */
-void
-MainWindow::off_points_save() {
- QString fileName = QFileDialog::getOpenFileName(this, tr("Save to off File"),
- "~/", tr("off files (*.off)"));
- if (!fileName.isEmpty()) {
- model_.off_points_save(fileName.toStdString());
- }
-}
-
-void
-MainWindow::show_graph_stats() {
- model_.show_graph_stats();
-}
-
-void
-MainWindow::show_complex_stats() {
- model_.show_complex_stats();
-}
-
-void
-MainWindow::show_complex_dimension() {
- model_.show_complex_dimension();
-}
-
-void
-MainWindow::build_rips_menu() {
- menu_uniform_neighbors_->show();
-}
-
-void
-MainWindow::build_rips(double alpha) {
- model_.build_rips(alpha);
- update_view();
-}
-
-void
-MainWindow::build_k_nearest_neighbors_menu() {
- menu_k_nearest_neighbors_->show();
-}
-
-void
-MainWindow::build_k_nearest_neighbors(unsigned k) {
- model_.build_k_nearest_neighbors(k);
- update_view();
-}
-
-void
-MainWindow::contract_edge_menu() {
- menu_edge_contraction_->show();
-}
-
-void
-MainWindow::contract_edges(unsigned num_collapses) {
- std::cerr << "Collapse " << num_collapses << " vertices\n";
- model_.contract_edges(num_collapses);
- update_view();
-}
-
-void
-MainWindow::collapse_edges() {
- model_.collapse_edges(model_.num_edges());
- update_view();
-}
-
-void
-MainWindow::collapse_vertices() {
- std::cerr << "Collapse vertices edges\n";
- model_.collapse_vertices(0);
- update_view();
-}
-
-void
-MainWindow::uniform_noise() {
- bool ok;
- double amplitude = QInputDialog::getDouble(this, tr("Uniform noise"),
- tr("Amplitude:"), 0, 0, 10000, 3, &ok);
- srand(time(NULL));
- if (ok)
- model_.uniform_noise(amplitude);
-}
-
-void
-MainWindow::lloyd() {
- // todo 1 ask lloyd parameters
- model_.lloyd(0, 0);
- update_view();
-}
-
-void
-MainWindow::show_homology_group() {
- model_.show_homology_group();
-}
-
-void
-MainWindow::show_euler_characteristic() {
- model_.show_euler_characteristic();
-}
-
-void
-MainWindow::persistence_menu() {
- menu_persistence_->show();
-}
-
-void
-MainWindow::compute_persistence(int p, double threshold, int max_dim, double min_pers) {
- model_.show_persistence(p, threshold, max_dim, min_pers);
-}
-
-void
-MainWindow::critical_points_menu() {
- bool ok;
- double max_length = QInputDialog::getDouble(this, tr("Maximal edge length for the Rips"),
- tr("Maximal edge length:"), 0, 0, 10000, 3, &ok);
- if (ok)
- model_.show_critical_points(max_length);
-}
-
-void
-MainWindow::is_manifold_menu() {
- model_.show_is_manifold();
-}
-
-
-#include "MainWindow.moc"
diff --git a/GudhUI/gui/MainWindow.h b/GudhUI/gui/MainWindow.h
deleted file mode 100644
index 6076c2ee..00000000
--- a/GudhUI/gui/MainWindow.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_MAINWINDOW_H_
-#define GUI_MAINWINDOW_H_
-
-// Workaround https://svn.boost.org/trac/boost/ticket/12534
-#include <boost/container/flat_map.hpp>
-
-#include <QMainWindow>
-#include "ui_main_window.h"
-#include "model/Model.h"
-#include "view/Viewer_instructor.h"
-
-
-class Menu_k_nearest_neighbors;
-class Menu_uniform_neighbors;
-class Menu_edge_contraction;
-class Menu_persistence;
-
-class MainWindow : public QMainWindow, public Ui::MainWindow {
- Q_OBJECT
-
- private:
- Model model_;
- Viewer_instructor* viewer_instructor_;
- Menu_k_nearest_neighbors* menu_k_nearest_neighbors_;
- Menu_uniform_neighbors* menu_uniform_neighbors_;
- Menu_edge_contraction* menu_edge_contraction_;
- Menu_persistence* menu_persistence_;
-
- public:
- MainWindow(QWidget* parent = 0);
- void connectActions();
-
- /**
- * compute the bounding box and calls update view
- */
- void init_view() const;
- void update_view() const;
-
-
- protected:
- void closeEvent(QCloseEvent *event);
-
- void keyPressEvent(QKeyEvent *event) { }
-
- public:
- public slots:
- /**
- * open a file chooser to choose an off to load
- */
- void off_file_open();
-
- void off_points_open();
-
- /**
- * open a file chooser to choose an off to save
- */
- void off_file_save();
- void off_points_save();
-
- void show_graph_stats();
- void show_complex_stats();
- void show_complex_dimension();
-
-
- void build_rips_menu();
- void build_rips(double alpha);
- void build_k_nearest_neighbors_menu();
- void build_k_nearest_neighbors(unsigned k);
-
-
- void contract_edge_menu();
- void contract_edges(unsigned num_collapses);
-
-
- void collapse_vertices();
- void collapse_edges();
-
-
- void uniform_noise();
- void lloyd();
-
- void show_homology_group();
- void show_euler_characteristic();
- void persistence_menu();
- void compute_persistence(int p, double threshold, int max_dim, double min_pers);
- void critical_points_menu();
- void is_manifold_menu();
-
-
- public:
- signals:
- void sceneChanged() const;
-};
-
-
-#endif // GUI_MAINWINDOW_H_
diff --git a/GudhUI/gui/MenuEdgeContraction.ui b/GudhUI/gui/MenuEdgeContraction.ui
deleted file mode 100644
index b1696431..00000000
--- a/GudhUI/gui/MenuEdgeContraction.ui
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>MenuEdgeContraction</class>
- <widget class="QDialog" name="MenuEdgeContraction">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>362</width>
- <height>209</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Edge contraction</string>
- </property>
- <layout class="QGridLayout" name="gridLayout">
- <item row="5" column="2">
- <widget class="QSpinBox" name="spinBox_nb_remaining_vertices">
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="maximum">
- <number>999999999</number>
- </property>
- <property name="value">
- <number>1</number>
- </property>
- </widget>
- </item>
- <item row="7" column="2">
- <widget class="QCheckBox" name="checkBox_link_condition">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>Link condition</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="3" column="2" alignment="Qt::AlignRight">
- <widget class="QLabel" name="txt_nb_collapses">
- <property name="text">
- <string>1</string>
- </property>
- </widget>
- </item>
- <item row="6" column="0">
- <widget class="QLabel" name="label">
- <property name="text">
- <string>Policy</string>
- </property>
- </widget>
- </item>
- <item row="6" column="2">
- <widget class="QComboBox" name="m_simplificationMethod">
- <item>
- <property name="text">
- <string>Length_midpoint</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="2" column="2" alignment="Qt::AlignRight">
- <widget class="QLabel" name="txt_nb_vertices">
- <property name="text">
- <string>0</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="label_5">
- <property name="text">
- <string>Number of vertices</string>
- </property>
- </widget>
- </item>
- <item row="3" column="0" colspan="2">
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>Number of contractions</string>
- </property>
- </widget>
- </item>
- <item row="5" column="0" colspan="2">
- <widget class="QLabel" name="label_4">
- <property name="text">
- <string>Number of vertices after </string>
- </property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QSlider" name="horizontalSlider">
- <property name="minimum">
- <number>0</number>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item row="1" column="2">
- <widget class="QPushButton" name="pushButton_collapse">
- <property name="text">
- <string>Perform collapse</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/GudhUI/gui/Menu_edge_contraction.cpp b/GudhUI/gui/Menu_edge_contraction.cpp
deleted file mode 100644
index 041bdf9e..00000000
--- a/GudhUI/gui/Menu_edge_contraction.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_MENU_EDGE_CONTRACTION_CPP_
-#define GUI_MENU_EDGE_CONTRACTION_CPP_
-
-#include "Menu_edge_contraction.h"
-
-Menu_edge_contraction::Menu_edge_contraction(MainWindow* parent, const Model& model) :
- parent_(parent), model_(model) {
- setupUi(this);
- connectActions(parent_);
-}
-
-void Menu_edge_contraction::connectActions(MainWindow* parent) {
- QObject::connect(
- this->horizontalSlider,
- SIGNAL(valueChanged(int)),
- this,
- SLOT(slider_value_changed(int)));
-
-
- QObject::connect(this, SIGNAL(contract_edges(unsigned)), parent, SLOT(contract_edges(unsigned)));
-
- QObject::connect(this->pushButton_collapse, SIGNAL(clicked()), this, SLOT(send_contract_edges()));
-}
-
-void Menu_edge_contraction::slider_value_changed(int new_slider_value) {
- int num_collapses =
- (horizontalSlider->value() == 1) ? 1 : horizontalSlider->value() * model_.num_vertices() / 100;
- this->txt_nb_vertices->setNum(static_cast<int>(model_.num_vertices()));
- this->txt_nb_collapses->setNum(num_collapses);
- this->spinBox_nb_remaining_vertices->setValue(model_.num_vertices() - num_collapses);
-}
-
-void
-Menu_edge_contraction::update_slider_value() {
- int num_vertices = model_.num_vertices();
- int num_collapses = (horizontalSlider->value() == 1) ? 1 : horizontalSlider->value() * num_vertices / 100;
- int horizontal_slider_position = num_vertices > 0 ? num_collapses / static_cast<double>(num_vertices * 100) : 1;
- horizontalSlider->setValue(horizontal_slider_position);
-}
-
-void
-Menu_edge_contraction::update_gui_numbers() {
- update_slider_value();
- bool ok;
- int num_collapses = this->txt_nb_collapses->text().toInt(&ok, 10);
- if (!ok) return;
- this->txt_nb_vertices->setNum(static_cast<int>(model_.num_vertices()));
- this->txt_nb_collapses->setNum(num_collapses);
- this->spinBox_nb_remaining_vertices->setValue(model_.num_vertices() - num_collapses);
-}
-
-void
-Menu_edge_contraction::update_gui_numbers(int new_value) {
- update_gui_numbers();
-}
-
-void
-Menu_edge_contraction::send_contract_edges() {
- emit(contract_edges(num_collapses()));
- update_gui_numbers();
-}
-
-unsigned
-Menu_edge_contraction::num_vertices() {
- return model_.num_vertices();
-}
-
-unsigned
-Menu_edge_contraction::num_collapses() {
- return (horizontalSlider->value() == 1) ? 1 : horizontalSlider->value() * num_vertices() / 100;
-}
-
-#include "Menu_edge_contraction.moc"
-
-#endif // GUI_MENU_EDGE_CONTRACTION_CPP_
diff --git a/GudhUI/gui/Menu_edge_contraction.h b/GudhUI/gui/Menu_edge_contraction.h
deleted file mode 100644
index 0ef7b267..00000000
--- a/GudhUI/gui/Menu_edge_contraction.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_MENU_EDGE_CONTRACTION_H_
-#define GUI_MENU_EDGE_CONTRACTION_H_
-
-#include "gui/MainWindow.h"
-#include "ui_MenuEdgeContraction.h"
-
-#include "model/Model.h"
-
-class Menu_edge_contraction : public QDialog, public Ui::MenuEdgeContraction {
- Q_OBJECT
-
- private:
- MainWindow* parent_;
- const Model& model_;
-
- void update_slider_value();
-
- public:
- Menu_edge_contraction(MainWindow* parent, const Model& model);
-
- void connectActions(MainWindow* parent);
-
- private:
- unsigned num_vertices();
- unsigned num_collapses();
-
- public slots:
- void slider_value_changed(int new_slider_value);
- void update_gui_numbers();
- void update_gui_numbers(int gui_numbers);
-
- void send_contract_edges();
-
- signals:
- void contract_edges(unsigned num_collapses);
-};
-
-#endif // GUI_MENU_EDGE_CONTRACTION_H_
diff --git a/GudhUI/gui/Menu_k_nearest_neighbors.cpp b/GudhUI/gui/Menu_k_nearest_neighbors.cpp
deleted file mode 100644
index b1ad15c8..00000000
--- a/GudhUI/gui/Menu_k_nearest_neighbors.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "Menu_k_nearest_neighbors.h"
-
-Menu_k_nearest_neighbors::Menu_k_nearest_neighbors(QMainWindow* parent_)
- : parent(parent_) {
- setupUi(this);
- connectActions(parent_);
-}
-
-void Menu_k_nearest_neighbors::connectActions(QMainWindow* parent) {
- QObject::connect(this->pushButtonCompute,
- SIGNAL(clicked()),
- this,
- SLOT(send_compute_k_nearest_neighbors()));
- QObject::connect(this->spinBoxK,
- SIGNAL(valueChanged(int)),
- this,
- SLOT(update_k(int)));
- QObject::connect(this,
- SIGNAL(compute_k_nearest_neighbors(unsigned)),
- parent,
- SLOT(build_k_nearest_neighbors(unsigned)));
-}
-
-void Menu_k_nearest_neighbors::send_compute_k_nearest_neighbors() {
- emit(compute_k_nearest_neighbors((unsigned) spinBoxK->value()));
-}
-
-void Menu_k_nearest_neighbors::accept() {
- send_compute_k_nearest_neighbors();
-}
-
-void Menu_k_nearest_neighbors::update_k(int new_k_value) {
- if (checkBoxAutoUpdate->isChecked())
- emit(compute_k_nearest_neighbors((unsigned) spinBoxK->value()));
-}
-
-#include "Menu_k_nearest_neighbors.moc"
diff --git a/GudhUI/gui/Menu_k_nearest_neighbors.h b/GudhUI/gui/Menu_k_nearest_neighbors.h
deleted file mode 100644
index 56b5b63d..00000000
--- a/GudhUI/gui/Menu_k_nearest_neighbors.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GUI_MENU_K_NEAREST_NEIGHBORS_H_
-#define GUI_MENU_K_NEAREST_NEIGHBORS_H_
-
-#include <QMainWindow>
-#include "ui_KNearestNeighborsMenu.h"
-
-class QWidget;
-
-class Menu_k_nearest_neighbors : public QDialog, public Ui::KNearestNeighborsMenu {
- Q_OBJECT
-
- private:
- QMainWindow* parent;
-
- public:
- Menu_k_nearest_neighbors(QMainWindow* parent_);
-
- void connectActions(QMainWindow* parent);
-
- public slots:
- void send_compute_k_nearest_neighbors();
- void update_k(int k);
- void accept();
-
- signals:
- void compute_k_nearest_neighbors(unsigned k);
-};
-
-#endif // GUI_MENU_K_NEAREST_NEIGHBORS_H_
diff --git a/GudhUI/gui/Menu_persistence.cpp b/GudhUI/gui/Menu_persistence.cpp
deleted file mode 100644
index ec990559..00000000
--- a/GudhUI/gui/Menu_persistence.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-#include "Menu_persistence.h"
-
-Menu_persistence::Menu_persistence(QMainWindow* parent_) : parent(parent_) {
- setupUi(this);
- connectActions(parent_);
-}
-
-void Menu_persistence::connectActions(QMainWindow* parent) {
- QObject::connect(this,
- SIGNAL(compute_persistence(int, double, int, double)),
- parent,
- SLOT(compute_persistence(int, double, int, double)));
-}
-
-void Menu_persistence::send_compute_persistence() {
- emit(compute_persistence(p_spinBox->value(), threshold_doubleSpinBox->value(),
- maxdimension_spinBox->value(), minpersistence_doubleSpinBox->value()));
-}
-
-void Menu_persistence::accept() {
- send_compute_persistence();
-}
-
-// void Menu_persistence::compute_persistence(int p_fied,double threshold,int dim_max,double min_persistence) {
-// if(checkBoxAutoUpdate->isChecked())
-// emit(compute_k_nearest_neighbors((unsigned)spinBoxK->value()));
-// }
-
-#include "Menu_persistence.moc"
diff --git a/GudhUI/gui/Menu_persistence.h b/GudhUI/gui/Menu_persistence.h
deleted file mode 100644
index 32f0c5ca..00000000
--- a/GudhUI/gui/Menu_persistence.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef GUI_MENU_PERSISTENCE_H_
-#define GUI_MENU_PERSISTENCE_H_
-
-#include <QMainWindow>
-#include "ui_PersistenceMenu.h"
-
-class QWidget;
-
-class Menu_persistence : public QDialog, public Ui::PersistenceMenu {
- Q_OBJECT
-
- private:
- QMainWindow* parent;
-
- public:
- Menu_persistence(QMainWindow* parent_);
-
- void connectActions(QMainWindow* parent);
-
- public slots:
- void send_compute_persistence();
- void accept();
-
- signals:
- void compute_persistence(int p_fied, double threshold, int dim_max, double min_persistence);
-};
-
-#endif // GUI_MENU_PERSISTENCE_H_
diff --git a/GudhUI/gui/Menu_uniform_neighbors.cpp b/GudhUI/gui/Menu_uniform_neighbors.cpp
deleted file mode 100644
index 7f392b6c..00000000
--- a/GudhUI/gui/Menu_uniform_neighbors.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "Menu_uniform_neighbors.h"
-
-Menu_uniform_neighbors::Menu_uniform_neighbors(QMainWindow* parent_) :
- parent(parent_) {
- setupUi(this);
- connectActions(parent_);
-}
-
-void Menu_uniform_neighbors::connectActions(QMainWindow* parent) {
- QObject::connect(this->pushButtonCompute,
- SIGNAL(clicked()),
- this,
- SLOT(send_compute_uniform_neighbors()));
- QObject::connect(this->doubleSpinBoxAlpha,
- SIGNAL(valueChanged(double)),
- this,
- SLOT(update_alpha(double)));
- QObject::connect(this,
- SIGNAL(compute_uniform_neighbors(double)),
- parent,
- SLOT(build_rips(double)));
-}
-
-void Menu_uniform_neighbors::send_compute_uniform_neighbors() {
- emit(compute_uniform_neighbors(doubleSpinBoxAlpha->value()));
-}
-
-void Menu_uniform_neighbors::accept() {
- send_compute_uniform_neighbors();
-}
-
-void Menu_uniform_neighbors::update_alpha(double alpha) {
- if (checkBoxAutoUpdate->isChecked())
- emit(compute_uniform_neighbors(doubleSpinBoxAlpha->value()));
-}
-
-#include "Menu_uniform_neighbors.moc"
diff --git a/GudhUI/gui/Menu_uniform_neighbors.h b/GudhUI/gui/Menu_uniform_neighbors.h
deleted file mode 100644
index 88a3823b..00000000
--- a/GudhUI/gui/Menu_uniform_neighbors.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef GUI_MENU_UNIFORM_NEIGHBORS_H_
-#define GUI_MENU_UNIFORM_NEIGHBORS_H_
-
-#include <QMainWindow>
-#include "ui_UniformNeighborsMenu.h"
-
-class Menu_uniform_neighbors : public QDialog, public Ui::UniformMenu {
- Q_OBJECT
-
- private:
- QMainWindow* parent;
-
- public:
- Menu_uniform_neighbors(QMainWindow* parent_);
-
- void connectActions(QMainWindow* parent);
-
- public slots:
- void send_compute_uniform_neighbors();
- void update_alpha(double alpha);
- void accept();
-
- signals:
- void compute_uniform_neighbors(double alpha);
-};
-
-
-#endif // GUI_MENU_UNIFORM_NEIGHBORS_H_
diff --git a/GudhUI/gui/PersistenceMenu.ui b/GudhUI/gui/PersistenceMenu.ui
deleted file mode 100644
index 29327db2..00000000
--- a/GudhUI/gui/PersistenceMenu.ui
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>PersistenceMenu</class>
- <widget class="QDialog" name="PersistenceMenu">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>354</width>
- <height>275</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Point cloud persistence</string>
- </property>
- <widget class="QWidget" name="">
- <property name="geometry">
- <rect>
- <x>20</x>
- <y>23</y>
- <width>318</width>
- <height>226</height>
- </rect>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <layout class="QGridLayout" name="gridLayout">
- <item row="0" column="0">
- <widget class="QSpinBox" name="p_spinBox">
- <property name="minimum">
- <number>2</number>
- </property>
- <property name="value">
- <number>2</number>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QLabel" name="label">
- <property name="text">
- <string>Coefficient Z/pZ</string>
- </property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QSpinBox" name="maxdimension_spinBox">
- <property name="maximum">
- <number>9999</number>
- </property>
- <property name="value">
- <number>10</number>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QLabel" name="label_4">
- <property name="text">
- <string>Max dimension</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QDoubleSpinBox" name="threshold_doubleSpinBox">
- <property name="maximum">
- <double>9999.000000000000000</double>
- </property>
- <property name="value">
- <double>1.000000000000000</double>
- </property>
- </widget>
- </item>
- <item row="2" column="1">
- <widget class="QLabel" name="label_2">
- <property name="text">
- <string>Max Rips offset</string>
- </property>
- </widget>
- </item>
- <item row="3" column="0">
- <widget class="QDoubleSpinBox" name="minpersistence_doubleSpinBox"/>
- </item>
- <item row="3" column="1">
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>Minimum Persistence</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QDialogButtonBox" name="buttonBox">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="standardButtons">
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </widget>
- <resources/>
- <connections>
- <connection>
- <sender>buttonBox</sender>
- <signal>accepted()</signal>
- <receiver>PersistenceMenu</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>248</x>
- <y>254</y>
- </hint>
- <hint type="destinationlabel">
- <x>157</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>buttonBox</sender>
- <signal>rejected()</signal>
- <receiver>PersistenceMenu</receiver>
- <slot>reject()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>316</x>
- <y>260</y>
- </hint>
- <hint type="destinationlabel">
- <x>286</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
diff --git a/GudhUI/gui/UniformNeighborsMenu.ui b/GudhUI/gui/UniformNeighborsMenu.ui
deleted file mode 100644
index f8ef7a24..00000000
--- a/GudhUI/gui/UniformNeighborsMenu.ui
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>UniformMenu</class>
- <widget class="QDialog" name="UniformMenu">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>292</width>
- <height>209</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Uniform neighbors (Rips)</string>
- </property>
- <widget class="QDialogButtonBox" name="buttonBox">
- <property name="geometry">
- <rect>
- <x>50</x>
- <y>160</y>
- <width>171</width>
- <height>32</height>
- </rect>
- </property>
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="standardButtons">
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
- </property>
- </widget>
- <widget class="QWidget" name="formLayoutWidget">
- <property name="geometry">
- <rect>
- <x>30</x>
- <y>10</y>
- <width>262</width>
- <height>84</height>
- </rect>
- </property>
- <layout class="QFormLayout" name="formLayout_2">
- <property name="fieldGrowthPolicy">
- <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
- </property>
- <item row="0" column="0">
- <widget class="QLabel" name="label">
- <property name="text">
- <string>alpha</string>
- </property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="label_2">
- <property name="text">
- <string>Metric</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QComboBox" name="comboBoxMetric">
- <item>
- <property name="text">
- <string>Ambient</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Reduced Space</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QDoubleSpinBox" name="doubleSpinBoxAlpha">
- <property name="decimals">
- <number>3</number>
- </property>
- <property name="maximum">
- <double>100000000.000000000000000</double>
- </property>
- <property name="singleStep">
- <double>0.100000000000000</double>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QWidget" name="gridLayoutWidget">
- <property name="geometry">
- <rect>
- <x>30</x>
- <y>110</y>
- <width>250</width>
- <height>40</height>
- </rect>
- </property>
- <layout class="QGridLayout" name="gridLayout">
- <item row="0" column="1">
- <widget class="QPushButton" name="pushButtonCompute">
- <property name="text">
- <string>Compute</string>
- </property>
- </widget>
- </item>
- <item row="0" column="0">
- <widget class="QCheckBox" name="checkBoxAutoUpdate">
- <property name="text">
- <string>auto update</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </widget>
- <resources/>
- <connections>
- <connection>
- <sender>buttonBox</sender>
- <signal>accepted()</signal>
- <receiver>UniformMenu</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>248</x>
- <y>254</y>
- </hint>
- <hint type="destinationlabel">
- <x>157</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>buttonBox</sender>
- <signal>rejected()</signal>
- <receiver>UniformMenu</receiver>
- <slot>reject()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>316</x>
- <y>260</y>
- </hint>
- <hint type="destinationlabel">
- <x>286</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
diff --git a/GudhUI/gui/gudhui.cpp b/GudhUI/gui/gudhui.cpp
deleted file mode 100644
index 2a100fd5..00000000
--- a/GudhUI/gui/gudhui.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "MainWindow.h"
-#include <QApplication>
-#include <CGAL/Qt/resources.h>
-
-int main(int argc, char** argv) {
- QApplication application(argc, argv);
- application.setOrganizationDomain("inria.fr");
- application.setOrganizationName("Inria");
- application.setApplicationName("GudhUI");
-
- MainWindow mw;
- application.setQuitOnLastWindowClosed(false);
- mw.show();
- return application.exec();
-}
diff --git a/GudhUI/gui/main_window.ui b/GudhUI/gui/main_window.ui
deleted file mode 100644
index 312480b6..00000000
--- a/GudhUI/gui/main_window.ui
+++ /dev/null
@@ -1,255 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>MainWindow</class>
- <widget class="QMainWindow" name="MainWindow">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>861</width>
- <height>880</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>GudhUI</string>
- </property>
- <property name="tabShape">
- <enum>QTabWidget::Rounded</enum>
- </property>
- <widget class="QWidget" name="centralwidget">
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="Viewer" name="viewer" native="true">
- <property name="autoFillBackground">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- <widget class="QMenuBar" name="menubar">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>861</width>
- <height>34</height>
- </rect>
- </property>
- <widget class="QMenu" name="menuFile">
- <property name="title">
- <string>File</string>
- </property>
- <addaction name="actionLoad_points"/>
- <addaction name="actionLoad_complex"/>
- <addaction name="actionSave_points"/>
- <addaction name="actionSave_complex"/>
- </widget>
- <widget class="QMenu" name="menuPoints">
- <property name="title">
- <string>Points</string>
- </property>
- <addaction name="actionNoise"/>
- </widget>
- <widget class="QMenu" name="menuGraph">
- <property name="title">
- <string>Graph</string>
- </property>
- <addaction name="actionK_nearest_neighbors_graph"/>
- <addaction name="actionUniform_proximity_graph"/>
- <addaction name="actionShow_graph_stats"/>
- </widget>
- <widget class="QMenu" name="menuComplex">
- <property name="title">
- <string>Complex</string>
- </property>
- <addaction name="actionContract_edges"/>
- <addaction name="actionCollapse_vertices"/>
- <addaction name="actionCollapse_edges"/>
- <addaction name="actionShow_complex_stats"/>
- <addaction name="actionShow_complex_dimension"/>
- </widget>
- <widget class="QMenu" name="menuView">
- <property name="title">
- <string>View</string>
- </property>
- <addaction name="actionPoints"/>
- <addaction name="actionEdges"/>
- <addaction name="actionTriangles"/>
- <addaction name="actionChange_projection"/>
- </widget>
- <widget class="QMenu" name="menuTopology">
- <property name="title">
- <string>Topology</string>
- </property>
- <addaction name="actionEuler_characteristic"/>
- <addaction name="actionShow_homology_group"/>
- <addaction name="actionPersistence"/>
- <addaction name="actionEstimate_topological_changes"/>
- <addaction name="actionIs_manifold"/>
- </widget>
- <addaction name="menuFile"/>
- <addaction name="menuPoints"/>
- <addaction name="menuGraph"/>
- <addaction name="menuComplex"/>
- <addaction name="menuTopology"/>
- <addaction name="menuView"/>
- </widget>
- <widget class="QStatusBar" name="statusbar"/>
- <action name="actionLoad_points">
- <property name="text">
- <string>Load points</string>
- </property>
- </action>
- <action name="actionLoad_complex">
- <property name="text">
- <string>Load complex</string>
- </property>
- </action>
- <action name="actionSave_points">
- <property name="text">
- <string>Save points</string>
- </property>
- </action>
- <action name="actionSave_complex">
- <property name="text">
- <string>Save complex</string>
- </property>
- </action>
- <action name="actionNoise">
- <property name="text">
- <string>Noise</string>
- </property>
- </action>
- <action name="actionLloyd">
- <property name="text">
- <string>Lloyd</string>
- </property>
- </action>
- <action name="actionUniform_proximity_graph">
- <property name="text">
- <string>Uniform proximity graph</string>
- </property>
- </action>
- <action name="actionK_nearest_neighbors_graph">
- <property name="text">
- <string>k-nearest neighbors graph</string>
- </property>
- </action>
- <action name="actionShow_graph_stats">
- <property name="text">
- <string>Show graph stats</string>
- </property>
- </action>
- <action name="actionBuild_complex_from_graph">
- <property name="text">
- <string>Graph expansion</string>
- </property>
- </action>
- <action name="actionBuild_Delaunay_from_points">
- <property name="text">
- <string>Delaunay from points</string>
- </property>
- </action>
- <action name="actionContract_edges">
- <property name="text">
- <string>Contract edges</string>
- </property>
- </action>
- <action name="actionCollapse_vertices">
- <property name="text">
- <string>Collapse vertices</string>
- </property>
- </action>
- <action name="actionCollapse_edges">
- <property name="text">
- <string>Collapse edges</string>
- </property>
- </action>
- <action name="actionPoints">
- <property name="text">
- <string>Points</string>
- </property>
- </action>
- <action name="actionEdges">
- <property name="text">
- <string>Edges</string>
- </property>
- </action>
- <action name="actionTriangles">
- <property name="text">
- <string>Triangles</string>
- </property>
- </action>
- <action name="actionChange_projection">
- <property name="text">
- <string>Change projection</string>
- </property>
- </action>
- <action name="actionShow_complex_stats">
- <property name="text">
- <string>Show complex stats</string>
- </property>
- </action>
- <action name="actionShow_complex_dimension">
- <property name="text">
- <string>Show complex dimension</string>
- </property>
- </action>
- <action name="actionShow_homology_group">
- <property name="text">
- <string>Homology groups</string>
- </property>
- </action>
- <action name="actionPersistence">
- <property name="text">
- <string>Point cloud persistence</string>
- </property>
- </action>
- <action name="actionEuler_characteristic">
- <property name="enabled">
- <bool>true</bool>
- </property>
- <property name="text">
- <string>Euler characteristic</string>
- </property>
- <property name="visible">
- <bool>true</bool>
- </property>
- </action>
- <action name="actionHomology_groups">
- <property name="text">
- <string>Homology groups</string>
- </property>
- </action>
- <action name="actionEstimate_topological_changes">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>Rips critical points approximation</string>
- </property>
- <property name="visible">
- <bool>false</bool>
- </property>
- </action>
- <action name="actionIs_manifold">
- <property name="text">
- <string>Is manifold</string>
- </property>
- </action>
- </widget>
- <customwidgets>
- <customwidget>
- <class>Viewer</class>
- <extends>QWidget</extends>
- <header>view/Viewer.h</header>
- </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>
diff --git a/GudhUI/model/Complex_typedefs.h b/GudhUI/model/Complex_typedefs.h
deleted file mode 100644
index 347db1e3..00000000
--- a/GudhUI/model/Complex_typedefs.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef MODEL_COMPLEX_TYPEDEFS_H_
-#define MODEL_COMPLEX_TYPEDEFS_H_
-
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_simple_geometric_traits.h>
-#include <gudhi/Skeleton_blocker_geometric_complex.h>
-
-#include <CGAL/Kernel_d/Point_d.h>
-#include <CGAL/Cartesian.h>
-#include <CGAL/Cartesian_d.h>
-
-struct Geometry_trait : public CGAL::Cartesian_d<double> {
- typedef CGAL::Cartesian<double>::Point_3 Point_3;
- typedef CGAL::Cartesian<double>::Vector_3 Vector_3;
- typedef CGAL::Point_d<Cartesian_d<double>> Point;
- typedef CGAL::Vector_d<Cartesian_d<double>> Vector;
-};
-
-typedef Geometry_trait::Point Point;
-
-using namespace Gudhi;
-using namespace Gudhi::skeleton_blocker;
-
-typedef Skeleton_blocker_simple_geometric_traits<Geometry_trait> Complex_geometric_traits;
-typedef Skeleton_blocker_geometric_complex< Complex_geometric_traits > Complex;
-
-#endif // MODEL_COMPLEX_TYPEDEFS_H_
diff --git a/GudhUI/model/Model.h b/GudhUI/model/Model.h
deleted file mode 100644
index 1d5cc087..00000000
--- a/GudhUI/model/Model.h
+++ /dev/null
@@ -1,355 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef MODEL_MODEL_H_
-#define MODEL_MODEL_H_
-
-#include <gudhi/Clock.h>
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_simple_geometric_traits.h>
-#include <gudhi/Skeleton_blocker_geometric_complex.h>
-#include <gudhi/Off_reader.h>
-
-#include <CGAL/Euclidean_distance.h>
-
-#include <fstream>
-#include <limits>
-#include <string>
-#include <vector>
-
-#include "utils/UI_utils.h"
-#include "utils/Lloyd_builder.h"
-#include "utils/Rips_builder.h"
-#include "utils/K_nearest_builder.h"
-#include "utils/Vertex_collapsor.h"
-#include "utils/Edge_collapsor.h"
-#include "utils/Edge_contractor.h"
-#include "utils/Persistence_compute.h"
-#include "utils/Critical_points.h"
-#include "utils/Is_manifold.h"
-
-#include "Complex_typedefs.h"
-
-template<typename Complex>
-class CGAL_geometric_flag_complex_wrapper {
- Complex& complex_;
- typedef typename Complex::Vertex_handle Vertex_handle;
- typedef typename Complex::Point Point;
-
- const bool load_only_points_;
-
- public:
- CGAL_geometric_flag_complex_wrapper(Complex& complex, bool load_only_points = false) :
- complex_(complex),
- load_only_points_(load_only_points) { }
-
- void init(int dim, int num_vertices, int num_max_faces, int num_edges) const { }
-
- void point(const std::vector<double>& coords) {
- Point p(coords.size(), coords.begin(), coords.end());
- complex_.add_vertex(p);
- }
-
- void maximal_face(std::vector<int> vertices) {
- if (!load_only_points_) {
- // std::cout << "size:" << vertices.size() << std::endl;
- for (std::size_t i = 0; i < vertices.size(); ++i)
- for (std::size_t j = i + 1; j < vertices.size(); ++j)
- complex_.add_edge_without_blockers(Vertex_handle(vertices[i]), Vertex_handle(vertices[j]));
- }
- }
-
- void done() const { }
-};
-
-class Model {
- public:
- Complex complex_;
- typedef Complex::Vertex_handle Vertex_handle;
-
- Model() : complex_() { }
-
- public:
- void off_file_open(const std::string& name_file) {
- UIDBGMSG("load off file", name_file);
- complex_.clear();
- CGAL_geometric_flag_complex_wrapper<Complex> read_wraper(complex_, false);
- Gudhi::read_off(name_file, read_wraper);
- }
-
- void off_points_open(const std::string& name_file) {
- UIDBGMSG("load off points", name_file);
- complex_.clear();
- CGAL_geometric_flag_complex_wrapper<Complex> read_wraper(complex_, true);
- Gudhi::read_off(name_file, read_wraper);
- }
-
- void off_file_save(const std::string& name_file) {
- UIDBG("save off file");
- UIDBG("save off off_points_save");
- std::ofstream file(name_file);
- if (file.is_open()) {
- file << "OFF\n";
- file << complex_.num_vertices() << " " << complex_.num_edges() << " 0\n";
- for (auto v : complex_.vertex_range()) {
- const auto& pt(complex_.point(v));
- for (auto it = pt.cartesian_begin(); it != pt.cartesian_end(); ++it)
- file << *it << " ";
- file << std::endl;
- }
- for (auto e : complex_.edge_range())
- file << "2 " << complex_.first_vertex(e) << " " << complex_.second_vertex(e) << "\n";
- file.close();
- } else {
- std::cerr << "Could not open file " << name_file << std::endl;
- }
- }
-
- void off_points_save(const std::string& name_file) {
- UIDBG("save off off_points_save");
- std::ofstream file(name_file);
- if (file.is_open()) {
- file << "OFF\n";
- file << complex_.num_vertices() << " 0 0\n";
- for (auto v : complex_.vertex_range()) {
- const auto& pt(complex_.point(v));
- for (auto it = pt.cartesian_begin(); it != pt.cartesian_end(); ++it)
- file << *it << " ";
- file << std::endl;
- }
- file.close();
- } else {
- std::cerr << "Could not open file " << name_file << std::endl;
- }
- }
-
- // point sets operations
- void uniform_noise(double amplitude) {
- UIDBG("unif noise");
- for (auto v : complex_.vertex_range())
- complex_.point(v) = add_uniform_noise(complex_.point(v), amplitude);
- }
-
- private:
- Point add_uniform_noise(const Point& point, double amplitude) {
- std::vector<double> new_point(point.dimension());
- for (int i = 0; i < point.dimension(); ++i) {
- new_point[i] = point[i] + (rand() % 2 - .5) * amplitude;
- }
- return Point(point.dimension(), new_point.begin(), new_point.end());
- }
-
- public:
- void lloyd(int num_iterations, int num_closest_neighbors) {
- UIDBG("lloyd");
- Lloyd_builder<Complex> lloyd_builder(complex_, 1);
- }
-
- double squared_eucl_distance(const Point& p1, const Point& p2) const {
- return Geometry_trait::Squared_distance_d()(p1, p2);
- }
-
- // complex operations from points
-
- void build_rips(double alpha) {
- UIDBG("build_rips");
- Rips_builder<Complex> rips_builder(complex_, alpha);
- }
-
- void build_k_nearest_neighbors(unsigned k) {
- UIDBG("build_k_nearest");
- complex_.keep_only_vertices();
- K_nearest_builder<Complex> k_nearest_builder(complex_, k);
- }
-
- void build_delaunay() {
- UIDBG("build_delaunay");
- complex_.keep_only_vertices();
- }
-
- void contract_edges(unsigned num_contractions) {
- Gudhi::Clock c;
- Edge_contractor<Complex> contractor(complex_, num_contractions);
- std::cout << "Time to simplify: " << c.num_seconds() << "s" << std::endl;
- }
-
- void collapse_vertices(unsigned num_collapses) {
- auto old_num_vertices = complex_.num_vertices();
- Vertex_collapsor<Complex> collapsor(complex_, complex_.num_vertices());
- UIDBGMSG("num vertices collapsed:", old_num_vertices - complex_.num_vertices());
- }
-
- void collapse_edges(unsigned num_collapses) {
- Edge_collapsor<Complex> collapsor(complex_, num_collapses);
- }
-
- void show_graph_stats() {
- std::cout << "++++++ Graph stats +++++++" << std::endl;
- std::cout << "Num vertices : " << complex_.num_vertices() << std::endl;
- std::cout << "Num edges : " << complex_.num_edges() << std::endl;
- std::cout << "Num connected components : " << complex_.num_connected_components() << std::endl;
- std::cout << "Min/avg/max degree : " << min_degree() << "/" << avg_degree() << "/" << max_degree() << std::endl;
- std::cout << "Num connected components : " << complex_.num_connected_components() << std::endl;
- std::cout << "Num connected components : " << complex_.num_connected_components() << std::endl;
- std::cout << "+++++++++++++++++++++++++" << std::endl;
- }
-
- private:
- int min_degree() const {
- int res = (std::numeric_limits<int>::max)();
- for (auto v : complex_.vertex_range())
- res = (std::min)(res, complex_.degree(v));
- return res;
- }
-
- int max_degree() const {
- int res = 0;
- for (auto v : complex_.vertex_range())
- res = (std::max)(res, complex_.degree(v));
- return res;
- }
-
- int avg_degree() const {
- int res = 0;
- for (auto v : complex_.vertex_range())
- res += complex_.degree(v);
- return res / complex_.num_vertices();
- }
-
- public:
- void show_complex_stats() {
- std::cout << "++++++ Mesh stats +++++++" << std::endl;
- std::cout << "Num vertices : " << complex_.num_vertices() << std::endl;
- std::cout << "Num edges : " << complex_.num_edges() << std::endl;
- std::cout << "Num connected components : " << complex_.num_connected_components() << std::endl;
- std::cout << "+++++++++++++++++++++++++" << std::endl;
- }
-
- void show_complex_dimension() {
- unsigned num_simplices = 0;
- int euler = 0;
- int dimension = 0;
- Gudhi::Clock clock;
- for (const auto &s : complex_.complex_simplex_range()) {
- num_simplices++;
- dimension = (std::max)(s.dimension(), dimension);
- if (s.dimension() % 2 == 0)
- euler += 1;
- else
- euler -= 1;
- }
- clock.end();
- std::cout << "++++++ Mesh dimension +++++++" << std::endl;
- std::cout << "Dimension : " << dimension << std::endl;
- std::cout << "Euler characteristic : " << euler << std::endl;
- std::cout << "Num simplices : " << num_simplices << std::endl;
- std::cout << "Total time: " << clock << std::endl;
- std::cout << "Time per simplex: " << clock.num_seconds() / num_simplices << " s" << std::endl;
- std::cout << "+++++++++++++++++++++++++" << std::endl;
- }
-
- void show_homology_group() {
-#ifdef _WIN32
- std::cout << "Works only on linux x64 for the moment\n";
-#else
- Gudhi::Clock clock;
- run_chomp();
- clock.end();
-#endif
- }
-
- void show_euler_characteristic() {
- unsigned num_simplices = 0;
- int euler = 0;
- int dimension = 0;
- for (const auto &s : complex_.complex_simplex_range()) {
- num_simplices++;
- dimension = (std::max)(s.dimension(), dimension);
- if (s.dimension() % 2 == 0)
- euler += 1;
- else
- euler -= 1;
- }
- std::cout << "Saw " << num_simplices << " simplices with maximum dimension " << dimension << std::endl;
- std::cout << "The euler characteristic is : " << euler << std::endl;
- }
-
- void show_persistence(int p, double threshold, int max_dim, double min_pers) {
- Persistence_compute<Complex> persistence(complex_, std::cout, Persistence_params(p, threshold, max_dim, min_pers));
- }
-
- void show_critical_points(double max_distance) {
- Critical_points<Complex> critical_points(complex_, std::cout, max_distance);
- }
-
- void show_is_manifold() {
- unsigned dim;
- bool is_manifold;
- Is_manifold<Complex> test_manifold(complex_, dim, is_manifold);
-
- if (is_manifold) {
- std::cout << "The complex is a " << dim << "-manifold\n";
- } else {
- if (dim < 4) {
- std::cout << "The complex has dimension greater than " << dim << " and is not a manifold\n";
- } else {
- std::cout << "The complex has dimension>=4 and may or may not be a manifold\n";
- }
- }
- }
-
- private:
- void run_chomp() {
- save_complex_in_file_for_chomp();
- std::cout << "Call CHOMP library\n";
- int returnValue = system("utils/homsimpl chomp.sim");
- std::cout << "CHOMP returns" << returnValue << std::endl;
- }
-
- void save_complex_in_file_for_chomp() {
- std::ofstream file;
- file.open("chomp.sim");
- for (const auto &s : complex_.complex_simplex_range()) {
- bool first = true;
- file << "(";
- for (auto x : s) {
- if (first)
- first = false;
- else
- file << ",";
- file << x;
- }
- file << ")\n";
- }
- }
-
- public:
- unsigned num_vertices() const {
- return complex_.num_vertices();
- }
-
- unsigned num_edges() const {
- return complex_.num_edges();
- }
-};
-
-#endif // MODEL_MODEL_H_
diff --git a/GudhUI/todo.txt b/GudhUI/todo.txt
deleted file mode 100644
index 19d99a77..00000000
--- a/GudhUI/todo.txt
+++ /dev/null
@@ -1,22 +0,0 @@
--- general
-
-o bug avec kreanrest neighbors lorsqu on baisse k après contraction après collapse vertices
-
-o clarify visitor sk_bl
-
-
-
--- ui
-
-x points dimension arbitraire
-x contractions
-
-
-x faire le lien MainWindow - Model
-
-
-
-
--- bug
-x bug ordre contraction -> just that first vertex placement dont work great
-x pb construction rips
diff --git a/GudhUI/utils/Bar_code_persistence.h b/GudhUI/utils/Bar_code_persistence.h
deleted file mode 100644
index 49c87b3c..00000000
--- a/GudhUI/utils/Bar_code_persistence.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <math.h> // isfinite
-
-#include <QtGui/QApplication>
-
-#include <QGraphicsView>
-#include <QGraphicsScene>
-#include <QPointF>
-#include <QVector>
-#include <QGraphicsTextItem>
-
-#include <iostream>
-#include <vector>
-#include <limits> // NaN, infinity
-#include <utility> // for pair
-#include <string>
-
-#ifndef UTILS_BAR_CODE_PERSISTENCE_H_
-#define UTILS_BAR_CODE_PERSISTENCE_H_
-
-class Bar_code_persistence {
- private:
- typedef std::vector<std::pair<double, double>> Persistence;
- Persistence persistence_vector;
- double min_birth;
- double max_death;
-
- public:
- Bar_code_persistence()
- : min_birth(std::numeric_limits<double>::quiet_NaN()),
- max_death(std::numeric_limits<double>::quiet_NaN()) { }
-
- void insert(double birth, double death) {
- persistence_vector.push_back(std::make_pair(birth, death));
- if (std::isfinite(birth)) {
- if ((birth < min_birth) || (std::isnan(min_birth)))
- min_birth = birth;
- if ((birth > max_death) || (std::isnan(max_death)))
- max_death = birth;
- }
- if (std::isfinite(death))
- if ((death > max_death) || (std::isnan(max_death)))
- max_death = death;
- }
-
- void show(const std::string& window_title) {
- // Create a view, put a scene in it
- QGraphicsView * view = new QGraphicsView();
- QGraphicsScene * scene = new QGraphicsScene();
- view->setScene(scene);
- double ratio = 600.0 / (max_death - min_birth);
- // std::cout << "min_birth=" << min_birth << " - max_death=" << max_death << " - ratio=" << ratio << std::endl;
-
- double height = 0.0, birth = 0.0, death = 0.0;
- int pers_num = 1;
- for (auto& persistence : persistence_vector) {
- height = 5.0 * pers_num;
- // std::cout << "[" << pers_num << "] birth=" << persistence.first << " - death=" << persistence.second << std::endl;
- if (std::isfinite(persistence.first))
- birth = ((persistence.first - min_birth) * ratio) + 50.0;
- else
- birth = 0.0;
-
- if (std::isfinite(persistence.second))
- death = ((persistence.second - min_birth) * ratio) + 50.0;
- else
- death = 700.0;
-
- scene->addLine(birth, height, death, height, QPen(Qt::blue, 2));
- pers_num++;
- }
- height += 10.0;
- // scale line
- scene->addLine(0, height, 700.0, height, QPen(Qt::black, 1));
- int modulo = 0;
- for (double scale = 50.0; scale < 700.0; scale += 50.0) {
- modulo++;
- // scale small dash
- scene->addLine(scale, height - 3.0, scale, height + 3.0, QPen(Qt::black, 1));
- // scale text
- QString scale_value = QString::number(((scale - 50.0) / ratio) + min_birth);
- QGraphicsTextItem* dimText = scene->addText(scale_value, QFont("Helvetica", 8));
- dimText->setPos(scale - (3.0 * scale_value.size()), height + 9.0 * (modulo % 2));
- }
- view->setWindowTitle(window_title.c_str());
- // Show the view
- view->show();
- }
-};
-
-#endif // UTILS_BAR_CODE_PERSISTENCE_H_
diff --git a/GudhUI/utils/Critical_points.h b/GudhUI/utils/Critical_points.h
deleted file mode 100644
index fbd690f8..00000000
--- a/GudhUI/utils/Critical_points.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef UTILS_CRITICAL_POINTS_H_
-#define UTILS_CRITICAL_POINTS_H_
-
-#include <deque>
-#include <utility> // for pair<>
-#include <algorithm> // for sort
-
-#include "utils/Edge_contractor.h"
-
-/**
- * Iteratively tries to anticollapse smallest edge non added so far.
- * If its link is contractible then no topological change and else possible topological change.
- *
- * todo do a sparsification with some parameter eps while growing
- */
-template<typename SkBlComplex> class Critical_points {
- private:
- SkBlComplex filled_complex_;
- const SkBlComplex& input_complex_;
- double max_length_;
- std::ostream& stream_;
-
- public:
- typedef typename SkBlComplex::Vertex_handle Vertex_handle;
- typedef typename SkBlComplex::Edge_handle Edge_handle;
- typedef typename std::pair<Vertex_handle, Vertex_handle> Edge;
-
- /**
- * @brief check all pair of points with length smaller than max_length
- */
- Critical_points(const SkBlComplex& input_complex, std::ostream& stream, double max_length) :
- input_complex_(input_complex), max_length_(max_length), stream_(stream) {
- std::deque<Edge> edges;
- auto vertices = input_complex.vertex_range();
- for (auto p = vertices.begin(); p != vertices.end(); ++p) {
- filled_complex_.add_vertex(input_complex.point(*p));
- for (auto q = p; ++q != vertices.end(); /**/)
- if (squared_eucl_distance(input_complex.point(*p), input_complex.point(*q)) < max_length_ * max_length_)
- edges.emplace_back(*p, *q);
- }
-
- std::sort(edges.begin(), edges.end(),
- [&](Edge e1, Edge e2) {
- return squared_edge_length(e1) < squared_edge_length(e2);
- });
-
- anti_collapse_edges(edges);
- }
-
- private:
- double squared_eucl_distance(const Point& p1, const Point& p2) const {
- return Geometry_trait::Squared_distance_d()(p1, p2);
- }
-
- void anti_collapse_edges(const std::deque<Edge>& edges) {
- unsigned pos = 0;
- for (Edge e : edges) {
- std::cout << "edge " << pos++ << "/" << edges.size() << "\n";
- auto eh = filled_complex_.add_edge_without_blockers(e.first, e.second);
- int is_contractible(is_link_reducible(eh));
-
- switch (is_contractible) {
- case 0:
- stream_ << "alpha=" << std::sqrt(squared_edge_length(e)) << " topological change" << std::endl;
- break;
- case 2:
- stream_ << "alpha=" << std::sqrt(squared_edge_length(e)) << " maybe a topological change" << std::endl;
- break;
- default:
- break;
- }
- }
- }
-
- // 0 -> not
- // 1 -> yes
- // 2 -> maybe
-
- int is_link_reducible(Edge_handle e) {
- auto link = filled_complex_.link(e);
-
- if (link.empty())
- return 0;
-
- Edge_contractor<Complex> contractor(link, link.num_vertices() - 1);
- (void)contractor;
-
- if (link.num_connected_components() > 1)
- // one than more CC -> not contractible
- return 0;
-
- if (link.num_vertices() == 1)
- // reduced to one point -> contractible
- return 1;
- else
- // we dont know
- return 2;
- }
-
- double squared_edge_length(Edge_handle e) const {
- return squared_eucl_distance(input_complex_.point(input_complex_.first_vertex(e)),
- input_complex_.point(input_complex_.second_vertex(e)));
- }
-
- double squared_edge_length(Edge e) const {
- return squared_eucl_distance(input_complex_.point(e.first), input_complex_.point(e.second));
- }
-};
-
-#endif // UTILS_CRITICAL_POINTS_H_
diff --git a/GudhUI/utils/Edge_collapsor.h b/GudhUI/utils/Edge_collapsor.h
deleted file mode 100644
index b3cc7df7..00000000
--- a/GudhUI/utils/Edge_collapsor.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef UTILS_EDGE_COLLAPSOR_H_
-#define UTILS_EDGE_COLLAPSOR_H_
-
-#include <list>
-#include "utils/Edge_contractor.h"
-#include "utils/UI_utils.h"
-
-/**
- * Iteratively puts every vertex at the center of its neighbors
- */
-template<typename SkBlComplex> class Edge_collapsor {
- private:
- SkBlComplex& complex_;
- unsigned num_collapses_;
-
- public:
- typedef typename SkBlComplex::Vertex_handle Vertex_handle;
- typedef typename SkBlComplex::Edge_handle Edge_handle;
-
- /**
- * @brief Collapse num_collapses edges. If num_collapses<0 then it collapses all possible edges.
- * Largest edges are collapsed first.
- *
- */
- Edge_collapsor(SkBlComplex& complex, unsigned num_collapses) :
- complex_(complex), num_collapses_(num_collapses) {
- std::list<Edge_handle> edges;
- edges.insert(edges.begin(), complex_.edge_range().begin(), complex_.edge_range().end());
-
- edges.sort(
- [&](Edge_handle e1, Edge_handle e2) {
- return squared_edge_length(e1) < squared_edge_length(e2);
- });
-
- collapse_edges(edges);
- }
-
- private:
- void collapse_edges(std::list<Edge_handle>& edges) {
- while (!edges.empty() && num_collapses_--) {
- Edge_handle current_edge = edges.front();
- edges.pop_front();
- if (is_link_reducible(current_edge))
- complex_.remove_edge(current_edge);
- }
- }
-
- bool is_link_reducible(Edge_handle e) {
- auto link = complex_.link(e);
-
- if (link.empty())
- return false;
-
- if (link.is_cone())
- return true;
-
- if (link.num_connected_components() > 1)
- return false;
-
- Edge_contractor<SkBlComplex> contractor(link, link.num_vertices() - 1);
-
- return (link.num_vertices() == 1);
- }
-
- double squared_edge_length(Edge_handle e) const {
- return squared_eucl_distance(complex_.point(complex_.first_vertex(e)), complex_.point(complex_.second_vertex(e)));
- }
-
- double squared_eucl_distance(const Point& p1, const Point& p2) const {
- return Geometry_trait::Squared_distance_d()(p1, p2);
- }
-};
-
-#endif // UTILS_EDGE_COLLAPSOR_H_
diff --git a/GudhUI/utils/Edge_contractor.h b/GudhUI/utils/Edge_contractor.h
deleted file mode 100644
index 090baabe..00000000
--- a/GudhUI/utils/Edge_contractor.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef UTILS_EDGE_CONTRACTOR_H_
-#define UTILS_EDGE_CONTRACTOR_H_
-
-
-#include <gudhi/Skeleton_blocker_contractor.h>
-#include <gudhi/Contraction/Edge_profile.h>
-#include <gudhi/Contraction/policies/Cost_policy.h>
-
-#include <vector>
-
-/**
- * Iteratively puts every vertex at the center of its neighbors
- */
-template<typename SkBlComplex> class Edge_contractor {
- private:
- SkBlComplex& complex_;
- unsigned num_contractions_;
-
- /**
- * @brief return a cost corresponding to the squared length of the edge
- */
- template< typename EdgeProfile> class Length_cost : public contraction::Cost_policy<EdgeProfile> {
- public:
- typedef typename contraction::Cost_policy<EdgeProfile>::Cost_type Cost_type;
- typedef typename EdgeProfile::Point Point;
-
- Cost_type operator()(const EdgeProfile& profile, const boost::optional<Point>& placement) const override {
- Cost_type res;
- if (!placement)
- return res;
- return Geometry_trait::Squared_distance_d()(profile.p0(), profile.p1()); // not working??
- }
- };
-
- /**
- * @brief return a cost corresponding to the squared length of the edge
- */
- template< typename EdgeProfile> class Middle_placement : public contraction::Placement_policy<EdgeProfile> {
- public:
- typedef typename contraction::Placement_policy<EdgeProfile>::Placement_type Placement_type;
- typedef typename EdgeProfile::Point Point;
-
- Placement_type operator()(const EdgeProfile& profile) const override {
- std::vector<double> mid_coords(profile.p0().dimension(), 0);
- for (int i = 0; i < profile.p0().dimension(); ++i) {
- mid_coords[i] = (profile.p0()[i] + profile.p1()[i]) / 2.;
- }
- return Point(profile.p0().dimension(), mid_coords.begin(), mid_coords.end());
- }
- };
-
- public:
- typedef typename SkBlComplex::Vertex_handle Vertex_handle;
- typedef typename SkBlComplex::Edge_handle Edge_handle;
-
- /**
- * @brief Modify complex to be the expansion of the k-nearest neighbor
- * symetric graph.
- */
- Edge_contractor(SkBlComplex& complex, unsigned num_contractions) :
- complex_(complex), num_contractions_(num_contractions) {
- typedef typename contraction::Edge_profile<Complex> Profile;
- num_contractions = (std::min)(static_cast<int>(num_contractions), static_cast<int>(complex_.num_vertices() - 1));
- typedef typename contraction::Skeleton_blocker_contractor<Complex> Contractor;
- Contractor contractor(complex_,
- new Length_cost<contraction::Edge_profile < Complex >> (),
- new Middle_placement<contraction::Edge_profile < Complex >> (),
- contraction::make_link_valid_contraction<Profile>(),
- contraction::make_remove_popable_blockers_visitor<Profile>());
- contractor.contract_edges(num_contractions);
- }
-};
-
-#endif // UTILS_EDGE_CONTRACTOR_H_
diff --git a/GudhUI/utils/Furthest_point_epsilon_net.h b/GudhUI/utils/Furthest_point_epsilon_net.h
deleted file mode 100644
index dbb6661c..00000000
--- a/GudhUI/utils/Furthest_point_epsilon_net.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef UTILS_FURTHEST_POINT_EPSILON_NET_H_
-#define UTILS_FURTHEST_POINT_EPSILON_NET_H_
-
-#include <vector>
-#include <algorithm> // for sort
-
-#include "utils/UI_utils.h"
-
-/**
- * Computes an epsilon net with furthest point strategy.
- */
-template<typename SkBlComplex> class Furthest_point_epsilon_net {
- private:
- SkBlComplex& complex_;
- typedef typename SkBlComplex::Vertex_handle Vertex_handle;
- typedef typename SkBlComplex::Edge_handle Edge_handle;
-
- /**
- * Let V be the set of vertices.
- * Initially v0 is one arbitrarly vertex and the set V0 is {v0}.
- * Then Vk is computed as follows.
- * First we compute the vertex pk that is the furthest from Vk
- * then Vk = Vk \cup pk.
- * The radius of pk is its distance to Vk and its meeting vertex
- * is the vertex of Vk for which this distance is achieved.
- */
- struct Net_filtration_vertex {
- Vertex_handle vertex_handle;
- Vertex_handle meeting_vertex;
- double radius;
-
- Net_filtration_vertex(Vertex_handle vertex_handle_,
- Vertex_handle meeting_vertex_,
- double radius_) :
- vertex_handle(vertex_handle_), meeting_vertex(meeting_vertex_), radius(radius_) { }
-
- bool operator<(const Net_filtration_vertex& other) const {
- return radius < other.radius;
- }
- };
-
- public:
- std::vector<Net_filtration_vertex> net_filtration_;
-
- /**
- * @brief Modify complex to be the expansion of the k-nearest neighbor
- * symetric graph.
- */
- Furthest_point_epsilon_net(SkBlComplex& complex) :
- complex_(complex) {
- if (!complex.empty()) {
- init_filtration();
- for (std::size_t k = 2; k < net_filtration_.size(); ++k) {
- update_radius_value(k);
- }
- }
- }
-
- // xxx does not work if complex not full
-
- double radius(Vertex_handle v) {
- return net_filtration_[v.vertex].radius;
- }
-
- private:
- void init_filtration() {
- Vertex_handle v0 = *(complex_.vertex_range().begin());
- net_filtration_.reserve(complex_.num_vertices());
- for (auto v : complex_.vertex_range()) {
- if (v != v0)
- net_filtration_.push_back(Net_filtration_vertex(v,
- Vertex_handle(-1),
- squared_eucl_distance(v, v0)));
- }
- net_filtration_.push_back(Net_filtration_vertex(v0, Vertex_handle(-1), 1e10));
- auto n = net_filtration_.size();
- sort_filtration(n - 1);
- }
-
- void update_radius_value(int k) {
- int n = net_filtration_.size();
- int index_to_update = n - k;
- for (int i = 0; i < index_to_update; ++i) {
- net_filtration_[i].radius = (std::min)(net_filtration_[i].radius,
- squared_eucl_distance(net_filtration_[i].vertex_handle,
- net_filtration_[index_to_update].vertex_handle));
- }
- sort_filtration(n - k);
- }
-
- /**
- * sort all i first elements.
- */
- void sort_filtration(int i) {
- std::sort(net_filtration_.begin(), net_filtration_.begin() + i);
- }
-
- double squared_eucl_distance(Vertex_handle v1, Vertex_handle v2) const {
- return std::sqrt(Geometry_trait::Squared_distance_d()(complex_.point(v1), complex_.point(v2)));
- }
-
- void print_filtration() const {
- for (auto v : net_filtration_) {
- std::cerr << "v=" << v.vertex_handle << "-> d=" << v.radius << std::endl;
- }
- }
-};
-
-#endif // UTILS_FURTHEST_POINT_EPSILON_NET_H_
diff --git a/GudhUI/utils/Is_manifold.h b/GudhUI/utils/Is_manifold.h
deleted file mode 100644
index 732df607..00000000
--- a/GudhUI/utils/Is_manifold.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Is_manifold.h
- * Created on: Jan 28, 2015
- * This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-#ifndef UTILS_IS_MANIFOLD_H_
-#define UTILS_IS_MANIFOLD_H_
-
-#include "utils/UI_utils.h"
-#include "utils/Edge_contractor.h"
-
-/**
- * Iteratively tries to anticollapse smallest edge non added so far.
- * If its link is contractible then no topological change and else possible topological change.
- *
- * todo do a sparsification with some parameter eps while growing
- */
-template<typename SkBlComplex> class Is_manifold {
- private:
- const SkBlComplex& input_complex_;
- typedef typename SkBlComplex::Vertex_handle Vertex_handle;
-
- public:
- /*
- * return dim the maximum dimension around one simplex and res which is true if the complex is a manifold.
- * If the complex has dimension <= 3 then if res is false, the complex is not a manifold.
- * For d-manifold with d>=4, res may be false while the complex is a manifold.
- */
- Is_manifold(const SkBlComplex& input_complex, unsigned& dim, bool & res) : input_complex_(input_complex) {
- res = true;
- dim = -1;
- if (!input_complex_.empty()) {
- for (auto v : input_complex_.vertex_range()) {
- dim = local_dimension(v);
- break;
- }
- // check that the link of every vertex is a dim-1 sphere
- for (auto v : input_complex_.vertex_range()) {
- if (!is_k_sphere(v, dim - 1)) {
- res = false;
- break;
- }
- }
- }
- }
-
- private:
- unsigned local_dimension(Vertex_handle v) {
- unsigned dim = 0;
- for (const auto& s : input_complex_.star_simplex_range(v))
- dim = (std::max)(dim, (unsigned) s.dimension());
- return dim;
- }
-
- bool is_k_sphere(Vertex_handle v, int k) {
- auto link = input_complex_.link(v);
- Edge_contractor<Complex> contractor(link, link.num_vertices() - 1);
- (void)contractor;
- return (is_sphere_simplex(link) == k);
- }
-
- // A minimal sphere is a complex that contains vertices v1...vn and all faces
- // made upon this set except the face {v1,...,vn}
- // return -2 if not a minimal sphere
- // and d otherwise if complex is a d minimal sphere
-
- template<typename SubComplex>
- int is_sphere_simplex(const SubComplex& complex) {
- if (complex.empty()) return -1;
- if (complex.num_blockers() != 1) return -2;
-
- // necessary and sufficient condition : there exists a unique blocker that passes through all vertices
- auto first_blocker = *(complex.const_blocker_range().begin());
-
- if (first_blocker->dimension() + 1 != complex.num_vertices())
- return -2;
- else
- return (first_blocker->dimension() - 1);
- }
-};
-
-#endif // UTILS_IS_MANIFOLD_H_
diff --git a/GudhUI/utils/K_nearest_builder.h b/GudhUI/utils/K_nearest_builder.h
deleted file mode 100644
index 14851d96..00000000
--- a/GudhUI/utils/K_nearest_builder.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef UTILS_K_NEAREST_BUILDER_H_
-#define UTILS_K_NEAREST_BUILDER_H_
-
-#include <CGAL/Euclidean_distance.h>
-#include <CGAL/Orthogonal_k_neighbor_search.h>
-#include <CGAL/Search_traits_d.h>
-#include <CGAL/Search_traits_adapter.h>
-#include <CGAL/property_map.h>
-
-#include <unordered_map>
-#include <list>
-#include <utility>
-
-#include "utils/UI_utils.h"
-#include "model/Complex_typedefs.h"
-
-template<typename SkBlComplex> class K_nearest_builder {
- private:
- typedef Geometry_trait Kernel;
- typedef Point Point_d;
- typedef std::pair<Point_d, unsigned> Point_d_with_id;
- typedef CGAL::Search_traits_d<Kernel> Traits_base;
- typedef CGAL::Search_traits_adapter<Point_d_with_id, CGAL::First_of_pair_property_map<Point_d_with_id>,
- Traits_base> Traits;
- typedef CGAL::Orthogonal_k_neighbor_search<Traits> Neighbor_search;
- typedef Neighbor_search::Tree Tree;
- typedef Neighbor_search::Distance Distance;
-
- SkBlComplex& complex_;
-
- public:
- /**
- * @brief Modify complex to be the expansion of the k-nearest neighbor
- * symetric graph.
- */
- K_nearest_builder(SkBlComplex& complex, unsigned k) : complex_(complex) {
- complex.keep_only_vertices();
- compute_edges(k);
- }
-
- private:
- double squared_eucl_distance(const Point& p1, const Point& p2) const {
- return Geometry_trait::Squared_distance_d()(p1, p2);
- }
-
- void compute_edges(unsigned k) {
- std::list<Point_d_with_id> points_with_id;
- for (auto v : complex_.vertex_range()) {
- Point_d_with_id point_v(complex_.point(v), v.vertex);
- points_with_id.push_back(point_v);
- }
-
- Tree tree(points_with_id.begin(), points_with_id.end());
-
- typedef typename SkBlComplex::Vertex_handle Vertex_handle;
- for (auto p : complex_.vertex_range()) {
- Neighbor_search search(tree, complex_.point(p), k + 1);
- for (auto it = ++search.begin(); it != search.end(); ++it) {
- Vertex_handle q(std::get<1>(it->first));
- if (p != q && complex_.contains_vertex(p) && complex_.contains_vertex(q))
- complex_.add_edge_without_blockers(p, q);
- }
- }
- }
-};
-
-#endif // UTILS_K_NEAREST_BUILDER_H_
diff --git a/GudhUI/utils/Lloyd_builder.h b/GudhUI/utils/Lloyd_builder.h
deleted file mode 100644
index 67595d33..00000000
--- a/GudhUI/utils/Lloyd_builder.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef UTILS_LLOYD_BUILDER_H_
-#define UTILS_LLOYD_BUILDER_H_
-
-#include <vector>
-#include <list>
-
-/**
- * Iteratively puts every vertex at the center of its neighbors
- */
-template<typename SkBlComplex> class Lloyd_builder {
- private:
- SkBlComplex& complex_;
- int dim;
-
- public:
- typedef typename SkBlComplex::Vertex_handle Vertex_handle;
-
- /**
- * @brief Modify complex to be the expansion of the k-nearest neighbor
- * symetric graph.
- */
- Lloyd_builder(SkBlComplex& complex, unsigned num_iterations) : complex_(complex), dim(-1) {
- if (!complex_.empty()) {
- dim = get_dimension();
- while (num_iterations--) {
- std::list<Point> new_points;
- for (auto v : complex.vertex_range())
- new_points.push_back(barycenter_neighbors(v));
-
- auto new_points_it = new_points.begin();
- for (auto v : complex.vertex_range())
- complex_.point(v) = *(new_points_it++);
- }
- }
- }
-
- private:
- int get_dimension() {
- assert(!complex_.empty());
- for (auto v : complex_.vertex_range())
- return complex_.point(v).dimension();
- return -1;
- }
-
- Point barycenter_neighbors(Vertex_handle v) const {
- if (complex_.degree(v) == 0)
- return complex_.point(v);
-
- std::vector<double> res(dim, 0);
- unsigned num_points = 0;
- for (auto nv : complex_.vertex_range(v)) {
- ++num_points;
- const Point& point = complex_.point(nv);
- assert(point.dimension() == dim);
- for (int i = 0; i < point.dimension(); ++i)
- res[i] += point[i];
- }
- for (auto& x : res)
- x /= num_points;
- return Point(dim, res.begin(), res.end());
- }
-
- double squared_eucl_distance(const Point& p1, const Point& p2) const {
- return Geometry_trait::Squared_distance_d()(p1, p2);
- }
-};
-
-#endif // UTILS_LLOYD_BUILDER_H_
diff --git a/GudhUI/utils/MClock.h b/GudhUI/utils/MClock.h
deleted file mode 100644
index 992f6fa5..00000000
--- a/GudhUI/utils/MClock.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef UTILS_MCLOCK_H_
-#define UTILS_MCLOCK_H_
-
-#include <sys/time.h>
-
-class MClock {
- public:
- MClock() {
- end_called = false;
- begin();
- }
-
- void begin() const {
- end_called = false;
- gettimeofday(&startTime, NULL);
- }
-
- void end() const {
- end_called = true;
- gettimeofday(&endTime, NULL);
- }
-
- friend std::ostream& operator<<(std::ostream& stream, const MClock& clock) {
- // if(!clock.end_called) clock.end();
- if (!clock.end_called) {
- stream << "end not called";
- } else {
- long totalTime = (clock.endTime.tv_sec - clock.startTime.tv_sec) * 1000000L;
- totalTime += (clock.endTime.tv_usec - clock.startTime.tv_usec);
- stream << clock.num_seconds() << "s";
- }
- return stream;
- }
-
- double num_seconds() const {
- if (!end_called) end();
- long totalTime = (endTime.tv_sec - startTime.tv_sec) * 1000000L;
- totalTime += (endTime.tv_usec - startTime.tv_usec);
- return (totalTime / 1000L) / static_cast<double>(1000);
- }
-
- private:
- mutable struct timeval startTime, endTime;
- mutable bool end_called;
-};
-
-#endif // UTILS_MCLOCK_H_
diff --git a/GudhUI/utils/Persistence_compute.h b/GudhUI/utils/Persistence_compute.h
deleted file mode 100644
index c8afded9..00000000
--- a/GudhUI/utils/Persistence_compute.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-#ifndef UTILS_PERSISTENCE_COMPUTE_H_
-#define UTILS_PERSISTENCE_COMPUTE_H_
-
-#include <gudhi/graph_simplicial_complex.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/distance_functions.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Rips_complex.h>
-
-#include <vector>
-
-struct Persistence_params {
- int p;
- double threshold;
- int max_dim;
- double min_pers;
-
- Persistence_params(int p_, double th_, int max_dim_ = 10, double min_pers_ = 0)
- : p(p_), threshold(th_), max_dim(max_dim_), min_pers(min_pers_) { }
-};
-
-/**
- * Show persistence into output stream
- */
-template<typename SkBlComplex> class Persistence_compute {
- public:
- typedef typename SkBlComplex::Vertex_handle Vertex_handle;
- typedef typename SkBlComplex::Edge_handle Edge_handle;
-
- /**
- * @brief Compute persistence
- * parameters :
- * unsigned dim_max
- * double threshold
- * int p for coefficient Z_p
- */
- Persistence_compute(SkBlComplex& complex, std::ostream& stream, const Persistence_params& params) {
- // for now everything is copied, todo boost adapt iterators to points of SkBlComplex instead of copying to an
- // initial vector
- typedef std::vector<double> Point_t;
- std::vector< Point_t > points;
- points.reserve(complex.num_vertices());
- for (auto v : complex.vertex_range()) {
- const auto & pt = complex.point(v);
- Point_t pt_to_add(pt.cartesian_begin(), pt.cartesian_end());
- points.emplace_back(std::move(pt_to_add));
- }
-
- using Simplex_tree = Gudhi::Simplex_tree<>;
- using Filtration_value = Simplex_tree::Filtration_value;
- using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
- using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
- using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp>;
-
- Rips_complex rips_complex(points, params.threshold, Euclidean_distance());
-
- Simplex_tree st;
- rips_complex.create_complex(st, params.max_dim);
- Persistent_cohomology pcoh(st);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(params.p);
- // put params.min_pers
- pcoh.compute_persistent_cohomology(params.min_pers);
- stream << "persistence: \n";
- stream << "p dimension birth death: \n";
- pcoh.output_diagram(stream);
- }
-};
-
-#endif // UTILS_PERSISTENCE_COMPUTE_H_
diff --git a/GudhUI/utils/Rips_builder.h b/GudhUI/utils/Rips_builder.h
deleted file mode 100644
index ed62c1c0..00000000
--- a/GudhUI/utils/Rips_builder.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef UTILS_RIPS_BUILDER_H_
-#define UTILS_RIPS_BUILDER_H_
-
-#include <boost/iterator/iterator_facade.hpp>
-
-#include <CGAL/Euclidean_distance.h>
-#include <CGAL/Orthogonal_k_neighbor_search.h>
-#include <CGAL/Search_traits_d.h>
-
-#include "utils/UI_utils.h"
-#include "model/Complex_typedefs.h"
-
-template<typename SkBlComplex> class Rips_builder {
- private:
- SkBlComplex& complex_;
-
- public:
- /**
- * @brief Modify complex to be the Rips complex
- * of its points with offset alpha.
- */
- Rips_builder(SkBlComplex& complex, double alpha) : complex_(complex) {
- complex.keep_only_vertices();
- if (alpha <= 0) return;
- compute_edges(alpha);
- }
-
- private:
- double squared_eucl_distance(const Point& p1, const Point& p2) const {
- return Geometry_trait::Squared_distance_d()(p1, p2);
- }
-
- void compute_edges(double alpha) {
- auto vertices = complex_.vertex_range();
- for (auto p = vertices.begin(); p != vertices.end(); ++p) {
- std::cout << *p << " ";
- std::cout.flush();
- for (auto q = p; ++q != vertices.end(); /**/)
- if (squared_eucl_distance(complex_.point(*p), complex_.point(*q)) < 4 * alpha * alpha)
- complex_.add_edge_without_blockers(*p, *q);
- }
- std::cout << std::endl;
- }
-};
-
-#endif // UTILS_RIPS_BUILDER_H_
diff --git a/GudhUI/utils/UI_utils.h b/GudhUI/utils/UI_utils.h
deleted file mode 100644
index 67a02869..00000000
--- a/GudhUI/utils/UI_utils.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef UTILS_UI_UTILS_H_
-#define UTILS_UI_UTILS_H_
-
-#define UIDBG_VERBOSE
-
-#ifdef UIDBG_VERBOSE
-#define UIDBG(a) std::cerr << "UIDBG: " << (a) << std::endl
-#define UIDBGMSG(a, b) std::cerr << "UIDBG: " << a << b << std::endl
-#define UIDBGVALUE(a) std::cerr << "UIDBG: " << #a << ": " << a << std::endl
-#define UIDBGCONT(a) std::cerr << "UIDBG: container " << #a << " -> "; for (auto x : a) std::cerr << x << ","; std::cerr << std::endl }
-#else
-// #define DBG(a) a
-// #define DBGMSG(a, b) b
-// #define DBGVALUE(a) a
-// #define DBGCONT(a) a
-#define UIDBG(a)
-#define UIDBGMSG(a, b)
-#define UIDBGVALUE(a)
-#define UIDBGCONT(a)
-#endif
-
-#endif // UTILS_UI_UTILS_H_
diff --git a/GudhUI/utils/Vertex_collapsor.h b/GudhUI/utils/Vertex_collapsor.h
deleted file mode 100644
index fca57f7d..00000000
--- a/GudhUI/utils/Vertex_collapsor.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef UTILS_VERTEX_COLLAPSOR_H_
-#define UTILS_VERTEX_COLLAPSOR_H_
-
-#include <list>
-
-#include "utils/Edge_contractor.h"
-#include "utils/Furthest_point_epsilon_net.h"
-#include "utils/UI_utils.h"
-
-/**
- * Iteratively puts every vertex at the center of its neighbors
- */
-template<typename SkBlComplex> class Vertex_collapsor {
- private:
- SkBlComplex& complex_;
- size_t num_collapses_;
-
- public:
- typedef typename SkBlComplex::Vertex_handle Vertex_handle;
- typedef typename SkBlComplex::Edge_handle Edge_handle;
-
- /**
- * @brief Modify complex to be the expansion of the k-nearest neighbor
- * symetric graph.
- */
- Vertex_collapsor(SkBlComplex& complex, size_t num_collapses) :
- complex_(complex), num_collapses_(num_collapses) {
- // std::list<Vertex_handle> vertices;
- // vertices.insert(vertices.begin(),complex_.vertex_range().begin(),complex_.vertex_range().end());
- // UIDBG("Collapse vertices");
- // collapse_vertices(vertices);
-
- std::list<Vertex_handle> vertices;
-
- UIDBG("Compute eps net");
- Furthest_point_epsilon_net<Complex> eps_net(complex_);
-
- for (auto vh : eps_net.net_filtration_)
- vertices.push_back(vh.vertex_handle);
-
- UIDBG("Collapse vertices");
- collapse_vertices(vertices);
- }
-
- private:
- void collapse_vertices(std::list<Vertex_handle>& vertices) {
- while (!vertices.empty() && num_collapses_--) {
- Vertex_handle current_vertex = vertices.front();
- vertices.pop_front();
- if (is_link_reducible(current_vertex))
- complex_.remove_vertex(current_vertex);
- }
- }
-
- bool is_link_reducible(Vertex_handle v) {
- auto link = complex_.link(v);
- if (link.empty()) return false;
- if (link.is_cone()) return true;
- if (link.num_connected_components() > 1) return false;
- Edge_contractor<Complex> contractor(link, link.num_vertices() - 1);
- (void)contractor;
- return (link.num_vertices() == 1);
- }
-};
-
-#endif // UTILS_VERTEX_COLLAPSOR_H_
diff --git a/GudhUI/view/Color.h b/GudhUI/view/Color.h
deleted file mode 100644
index 808dc2d8..00000000
--- a/GudhUI/view/Color.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef VIEW_COLOR_H_
-#define VIEW_COLOR_H_
-
-struct Color {
- double r;
- double g;
- double b;
-
- Color(double r_, double g_, double b_) : r(r_), g(g_), b(b_) { }
-};
-
-#endif // VIEW_COLOR_H_
diff --git a/GudhUI/view/FirstCoordProjector.h b/GudhUI/view/FirstCoordProjector.h
deleted file mode 100644
index 3f8a6fd9..00000000
--- a/GudhUI/view/FirstCoordProjector.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef VIEW_FIRSTCOORDPROJECTOR_H_
-#define VIEW_FIRSTCOORDPROJECTOR_H_
-
-#include "utils/UI_utils.h"
-#include "Projector3D.h"
-
-class FirstCoordProjector3D : public Projector3D {
- typedef Projector3D::Point Point;
- typedef Projector3D::Point_3 Point_3;
-
- Point_3 operator()(const Point& p) const {
- if (p.dimension() >= 3)
- return Point_3(p.x(), p.y(), p.z());
- else if (p.dimension() >= 2)
- return Point_3(p.x(), p.y(), 0.0);
- else
- return Point_3(0.0, 0.0, 0.0);
- }
-};
-
-#endif // VIEW_FIRSTCOORDPROJECTOR_H_
diff --git a/GudhUI/view/Projector3D.h b/GudhUI/view/Projector3D.h
deleted file mode 100644
index a1421f51..00000000
--- a/GudhUI/view/Projector3D.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef VIEW_PROJECTOR3D_H_
-#define VIEW_PROJECTOR3D_H_
-
-#include "model/Complex_typedefs.h"
-
-class Projector3D {
- public:
- typedef Geometry_trait::Point Point;
- typedef Geometry_trait::Point_3 Point_3;
-
- virtual Point_3 operator()(const Point&) const = 0;
-
- virtual ~Projector3D() { }
-};
-
-#endif // VIEW_PROJECTOR3D_H_
diff --git a/GudhUI/view/View_parameter.h b/GudhUI/view/View_parameter.h
deleted file mode 100644
index 578a0268..00000000
--- a/GudhUI/view/View_parameter.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef VIEW_VIEW_PARAMETER_H_
-#define VIEW_VIEW_PARAMETER_H_
-
-#include <iostream>
-
-/**
- * Different parameters for the view such as the camera angle,
- * the light, options for vertices/edges/triangles.
- */
-class View_parameter {
- public:
- bool light;
- bool relative_light;
-
- double size_vertices;
- double size_edges;
- double light_edges; // in 0-1
- double light_triangles; // in 0-1
-
- /**
- * light angle
- */
- double theta;
- double phi;
-
- enum VERTEX_MODE {
- V_NONE, V_SIMPLE, V_COUNT
- };
-
- enum EDGE_MODE {
- E_NONE, E_SIMPLE, E_COUNT
- };
-
- enum TRIANGLE_MODE {
- T_NONE, T_SIMPLE, T_COUNT
- };
-
- VERTEX_MODE vertex_mode;
- EDGE_MODE edge_mode;
- TRIANGLE_MODE triangle_mode;
-
- void change_vertex_mode() {
- int current_value = vertex_mode;
- vertex_mode = static_cast<VERTEX_MODE> (++current_value % V_COUNT);
- std::cout << "Vertex mode : ";
- switch (vertex_mode) {
- case V_NONE:
- std::cout << "empty\n";
- break;
- case V_SIMPLE:
- std::cout << "simple\n";
- break;
- default:
- break;
- }
- }
-
- void change_vertex_mode(int new_mode) {
- vertex_mode = static_cast<VERTEX_MODE> (new_mode % V_COUNT);
- }
-
- void change_edge_mode() {
- int current_value = edge_mode;
- edge_mode = static_cast<EDGE_MODE> (++current_value % E_COUNT);
- }
-
- void change_edge_mode(int new_mode) {
- edge_mode = static_cast<EDGE_MODE> (new_mode % E_COUNT);
- }
-
- void change_triangle_mode() {
- int current_value = triangle_mode;
- triangle_mode = static_cast<TRIANGLE_MODE> (++current_value % T_COUNT);
- }
-
- View_parameter() {
- light = true;
- relative_light = true;
- vertex_mode = V_SIMPLE;
- edge_mode = E_SIMPLE;
- triangle_mode = T_NONE;
-
- size_vertices = 3;
- size_edges = 2;
-
- light_edges = 0.3;
- light_triangles = 0.85;
- theta = 0;
- phi = 0;
- }
-
- friend std::ostream& operator<<(std::ostream& stream, const View_parameter& param) {
- stream << param.light << " ";
- stream << param.relative_light << " ";
- stream << param.vertex_mode << " ";
- stream << param.edge_mode << " ";
- stream << param.triangle_mode << " ";
- stream << param.size_vertices << " ";
- stream << param.size_edges << " ";
- stream << param.light_edges << " ";
- stream << param.light_triangles << " ";
- stream << param.theta << " ";
- stream << param.phi << " ";
- return stream;
- }
-
- friend std::istream& operator>>(std::istream& stream, View_parameter& param) {
- stream >> param.light;
- stream >> param.relative_light;
- int a;
- stream >> a;
- param.vertex_mode = static_cast<VERTEX_MODE> (a % V_COUNT);
- stream >> a;
- param.edge_mode = static_cast<EDGE_MODE> (a % E_COUNT);
- stream >> a;
- param.triangle_mode = static_cast<TRIANGLE_MODE> (a % T_COUNT);
- stream >> a;
- stream >> param.size_vertices;
- stream >> param.size_edges;
- stream >> param.light_edges;
- stream >> param.light_triangles;
- stream >> param.theta;
- stream >> param.phi;
- return stream;
- }
-};
-
-#endif // VIEW_VIEW_PARAMETER_H_
diff --git a/GudhUI/view/Viewer.cpp b/GudhUI/view/Viewer.cpp
deleted file mode 100644
index 42e35d6c..00000000
--- a/GudhUI/view/Viewer.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "Viewer.h"
-#include "utils/UI_utils.h"
-
-Viewer::Viewer(QWidget* parent) : QGLViewer(QGLFormat(QGL::SampleBuffers), parent), instructor(0), theta(0), phi(0) { }
-
-void Viewer::set_instructor(Viewer_instructor* instructor_) {
- instructor = instructor_;
-}
-
-void Viewer::show_entire_scene() {
- this->showEntireScene();
-}
-
-void Viewer::draw() {
- instructor->give_instructions();
-}
-
-void Viewer::set_bounding_box(const Point_3 & lower_left, const Point_3 & upper_right) {
- this->camera()->setSceneBoundingBox(qglviewer::Vec(lower_left[0], lower_left[1], lower_left[2]),
- qglviewer::Vec(upper_right[0], upper_right[1], upper_right[2]));
-}
-
-void Viewer::update_GL() {
- this->updateGL();
-}
-
-void Viewer::init_scene() {
- this->setBackgroundColor(Qt::white);
- ::glEnable(GL_LINE_SMOOTH);
- init_light();
-}
-
-void Viewer::init_light() {
- ::glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
-}
-
-void Viewer::set_light() {
- if (theta >= 0 && phi >= 0) {
- const GLfloat pos[4] = {static_cast<float> (sin(phi) * cos(theta)),
- static_cast<float> (sin(phi) * sin(theta)),
- static_cast<float> (cos(phi)), 0.};
- glLightfv(GL_LIGHT0, GL_POSITION, pos);
- }
-}
-
-void Viewer::set_light_direction(double theta_, double phi_) {
- theta = theta_;
- phi = phi_;
-}
-
-/**
- * set the light in the direction of the observer
- */
-void Viewer::set_light_direction() {
- theta = -1;
- phi = -1;
-}
-
-void Viewer::postSelection(const QPoint& point) {
- bool found;
-
- auto vec = this->camera()->pointUnderPixel(point, found);
-
- if (found) {
- Point_3 position(vec[0], vec[1], vec[2]);
- emit(click(position));
- }
-}
-
-////////////////////////
-// draw
-////////////////////////
-
-void Viewer::set_size_point(double size_points) {
- ::glPointSize(size_points);
-}
-
-void Viewer::draw_point(const Point_3& p, const Color& color, double size_points) {
- ::glColor3f(color.r, color.g, color.b);
- ::glDisable(GL_LIGHTING);
- ::glEnable(GL_POINT_SMOOTH);
- ::glPointSize(size_points);
- ::glBegin(GL_POINTS);
- ::glVertex3d(p.x(), p.y(), p.z());
- ::glEnd();
- ::glDisable(GL_POINT_SMOOTH);
-}
-
-void Viewer::begin_draw_points(double size, bool light) {
- light ? glEnable(GL_LIGHTING) : glDisable(GL_LIGHTING);
- ::glEnable(GL_POINT_SMOOTH);
- ::glPointSize(size);
- ::glBegin(GL_POINTS);
-}
-
-void Viewer::set_color(const Color& color) {
- ::glColor3f(color.r, color.g, color.b);
-}
-
-void Viewer::draw_points(const Point_3 & point) {
- ::glVertex3d(point.x(), point.y(), point.z());
-}
-
-void Viewer::end_draw_points() {
- ::glEnd();
- ::glDisable(GL_POINT_SMOOTH);
-}
-
-void Viewer::draw_edge(const Point_3 &a, const Point_3 &b, const Color& color, double size) {
- ::glColor3f(color.r, color.g, color.b);
- ::glPointSize(3.0);
- ::glLineWidth(size);
- ::glBegin(GL_LINES);
- ::glVertex3f(a.x(), a.y(), a.z());
- ::glVertex3f(b.x(), b.y(), b.z());
- ::glEnd();
-}
-
-void Viewer::begin_draw_edges(double size, bool light) {
- ::glLineWidth(size);
- ::glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- ::glEnable(GL_POLYGON_OFFSET_LINE);
- ::glPolygonOffset(3.0f, -3.0f);
- light ? glEnable(GL_LIGHTING) : glDisable(GL_LIGHTING);
- ::glBegin(GL_LINES);
-}
-
-void Viewer::draw_edges(const Point_3 &a, const Point_3 &b) {
- ::glVertex3f(a.x(), a.y(), a.z());
- ::glVertex3f(b.x(), b.y(), b.z());
-}
-
-void Viewer::end_draw_edges() {
- ::glEnd();
-}
-
-void Viewer::begin_draw_triangles(double size, bool light, bool transparent) {
- if (transparent) {
- ::glEnable(GL_BLEND);
- ::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
- ::glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- ::glEnable(GL_POLYGON_OFFSET_FILL);
- ::glPolygonOffset(3.0f, -3.0f);
- light ? glEnable(GL_LIGHTING) : glDisable(GL_LIGHTING);
- ::glBegin(GL_TRIANGLES);
-}
-
-void Viewer::draw_triangles(const Point_3& p1, const Point_3& p2, const Point_3& p3) {
- if (!CGAL::collinear(p1, p2, p3)) {
- auto triangle_normal = CGAL::unit_normal(p1, p2, p3);
- ::glNormal3d(triangle_normal.x(), triangle_normal.y(), triangle_normal.z());
- ::glVertex3d(p1.x(), p1.y(), p1.z());
- ::glVertex3d(p2.x(), p2.y(), p2.z());
- ::glVertex3d(p3.x(), p3.y(), p3.z());
- }
-}
-
-void Viewer::end_draw_triangles() {
- ::glEnd();
-}
-
-#include "Viewer.moc"
diff --git a/GudhUI/view/Viewer.h b/GudhUI/view/Viewer.h
deleted file mode 100644
index 414044ef..00000000
--- a/GudhUI/view/Viewer.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef VIEW_VIEWER_H_
-#define VIEW_VIEWER_H_
-
-#include <QGLViewer/qglviewer.h>
-
-#include <vector>
-
-#include "View_parameter.h"
-#include "model/Complex_typedefs.h"
-#include "Color.h"
-#include "Viewer_instructor.h"
-
-class Viewer_instructor;
-
-class Viewer : public QGLViewer {
- Q_OBJECT
-
- Viewer_instructor * instructor;
-
- /**
- * light angles
- */
- double theta, phi;
- typedef Complex::GT Gudhi_kernel;
- typedef Gudhi_kernel::Point_3 Point_3;
-
- public:
- Viewer(QWidget* parent);
-
- void set_instructor(Viewer_instructor* instructor_);
-
- void show_entire_scene();
-
- void draw();
-
- void set_bounding_box(const Point_3 & lower_left, const Point_3 & upper_right);
-
- void update_GL();
-
- void init_scene();
-
- void init_light();
-
- void set_light();
-
- void set_light_direction(double theta, double phi);
-
- /**
- * set the light in the direction of the observer
- */
- void set_light_direction();
-
- protected:
- virtual void postSelection(const QPoint& point);
-
- public:
- ////////////////////////
- // draw
- ////////////////////////
- void set_size_point(double size_points);
-
- void set_color(const Color& color);
-
- void draw_point(const Point_3& p, const Color& color, double size_points);
-
- void begin_draw_points(double size, bool light = false);
-
- void draw_points(const Point_3 & point);
-
- void end_draw_points();
-
- void draw_edge(const Point_3 &a, const Point_3 &b, const Color& color, double size);
-
- void begin_draw_edges(double size, bool light = false);
-
- void draw_edges(const Point_3 &a, const Point_3 &b);
-
- void end_draw_edges();
-
- void begin_draw_triangles(double size, bool light, bool transparent = false);
-
- void draw_triangles(const Point_3& p1, const Point_3& p2, const Point_3& p3);
-
- // todo remove
- void draw_triangles(const std::vector<Point_3*>& points);
-
- void end_draw_triangles();
-
-
- signals:
- void click(const Point_3& position);
-};
-
-#endif // VIEW_VIEWER_H_
diff --git a/GudhUI/view/Viewer_instructor.cpp b/GudhUI/view/Viewer_instructor.cpp
deleted file mode 100644
index a9dc4525..00000000
--- a/GudhUI/view/Viewer_instructor.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <utility>
-
-#include "Viewer_instructor.h"
-#include "utils/UI_utils.h"
-#include "FirstCoordProjector.h"
-
-Viewer_instructor::Viewer_instructor(QWidget* parent,
- Viewer* viewer,
- const Complex& mesh
- )
- : viewer_(viewer), mesh_(mesh), projector_(new FirstCoordProjector3D()) {
- viewer_->set_instructor(this);
-}
-
-void Viewer_instructor::initialize_bounding_box() {
- auto pair_bounding_box = compute_bounding_box_corners();
- viewer_->set_bounding_box(proj(pair_bounding_box.first), proj(pair_bounding_box.second));
- viewer_->init_scene();
-}
-
-std::pair<Complex::Point, Complex::Point> Viewer_instructor::compute_bounding_box_corners() {
- if (mesh_.empty()) {
- return std::make_pair(Point(-1, -1, -1, 1), Point(1, 1, 1, 1));
- } else {
- double x_min = 1e10;
- double y_min = 1e10;
- double z_min = 1e10;
- double x_max = -1e10;
- double y_max = -1e10;
- double z_max = -1e10;
- for (auto vi : mesh_.vertex_range()) {
- auto pt = proj(mesh_.point(vi));
- x_min = (std::min)(x_min, pt.x());
- y_min = (std::min)(y_min, pt.y());
- z_min = (std::min)(z_min, pt.z());
-
- x_max = (std::max)(x_max, pt.x());
- y_max = (std::max)(y_max, pt.y());
- z_max = (std::max)(z_max, pt.z());
- }
- return std::make_pair(Point(x_min, y_min, z_min, 1.),
- Point(x_max, y_max, z_max, 1.));
- }
-}
-
-void Viewer_instructor::show_entire_scene() {
- viewer_->show_entire_scene();
-}
-
-const qglviewer::Camera* Viewer_instructor::camera() const {
- return viewer_->camera();
-}
-
-int
-Viewer_instructor::width() const {
- return viewer_->width();
-}
-
-int
-Viewer_instructor::height() const {
- return viewer_->height();
-}
-
-/**
- * to change display parameters
- */
-View_parameter& Viewer_instructor::view_params() {
- return view_params_;
-}
-
-void
-Viewer_instructor::give_instructions() {
- if (view_params_.relative_light)
- viewer_->set_light_direction();
- else
- viewer_->set_light_direction(view_params_.theta, view_params_.phi);
- viewer_->set_light();
-
- if (view_params_.edge_mode) draw_edges();
- if (view_params_.triangle_mode) draw_triangles();
- if (view_params_.vertex_mode) draw_points();
-}
-
-void Viewer_instructor::draw_edges() {
- viewer_->begin_draw_edges(view_params_.size_edges, false);
-
- for (auto edge : mesh_.edge_range()) {
- set_color_edge(edge);
- const Point& a = mesh_.point(mesh_.first_vertex(edge));
- const Point& b = mesh_.point(mesh_.second_vertex(edge));
- viewer_->draw_edges(proj(a), proj(b));
- }
-
- viewer_->end_draw_edges();
-}
-
-void Viewer_instructor::draw_triangles() {
- const double size_triangles = 1.0;
- viewer_->begin_draw_triangles(size_triangles, view_params_.light);
-
- for (const auto& fit : mesh_.triangle_range()) {
- set_color_triangle(fit);
- if (view_params_.triangle_mode) {
- auto fit_it = fit.begin();
- const Point& p1 = mesh_.point(*fit_it);
- const Point& p2 = mesh_.point(*(++fit_it));
- const Point& p3 = mesh_.point(*(++fit_it));
- viewer_->draw_triangles(proj(p1), proj(p2), proj(p3));
- }
- }
- viewer_->end_draw_triangles();
-}
-
-void Viewer_instructor::draw_points() {
- viewer_->begin_draw_points(view_params_.size_vertices);
- for (auto vi : mesh_.vertex_range()) {
- viewer_->set_size_point(view_params_.size_vertices);
- set_color_vertex(vi);
- viewer_->draw_points(proj(mesh_.point(vi)));
- }
- viewer_->end_draw_points();
-}
-
-void Viewer_instructor::draw_edge(const Point&, const Point&) { }
-
-void Viewer_instructor::draw_point(const Point&) { }
-
-/**
- * set the right color of vertex/edge/triangle considering the view_params choice
- */
-void Viewer_instructor::set_color_vertex(Vertex_handle vh) {
- viewer_->set_color(Color(view_params_.light_edges, view_params_.light_edges, view_params_.light_edges));
-}
-
-void Viewer_instructor::set_color_edge(Edge_handle eh) {
- viewer_->set_color(Color(view_params_.light_edges, view_params_.light_edges, view_params_.light_edges));
-}
-
-void Viewer_instructor::set_color_triangle(const Simplex& triangle) {
- viewer_->set_color(Color(view_params_.light_triangles, view_params_.light_triangles, view_params_.light_triangles));
-}
-
-Viewer_instructor::Point_3
-Viewer_instructor::proj(const Point& p) const {
- return (*projector_)(p);
-}
-
-void Viewer_instructor::sceneChanged() {
- UIDBG("sceneChanged");
- viewer_->update_GL();
-}
-
-void Viewer_instructor::change_draw_vertices() {
- view_params_.change_vertex_mode();
-}
-
-void Viewer_instructor::change_draw_edges() {
- view_params_.change_edge_mode();
-}
-
-void Viewer_instructor::change_draw_triangles() {
- view_params_.change_triangle_mode();
-}
-
-void Viewer_instructor::change_light() {
- view_params_.light = !view_params_.light;
-}
-
-#include "Viewer_instructor.moc"
diff --git a/GudhUI/view/Viewer_instructor.h b/GudhUI/view/Viewer_instructor.h
deleted file mode 100644
index 4b06acb8..00000000
--- a/GudhUI/view/Viewer_instructor.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef VIEW_VIEWER_INSTRUCTOR_H_
-#define VIEW_VIEWER_INSTRUCTOR_H_
-
-// todo do a viewer instructor that have directely a pointer to a QGLviewer and buffer ot not triangles
-
-#include <QFileDialog>
-#include <QKeyEvent>
-#include <QGLViewer/camera.h>
-
-#include <memory>
-#include <utility> // for pair<>
-
-#include "model/Complex_typedefs.h"
-
-#include "Projector3D.h"
-#include "View_parameter.h"
-#include "Viewer.h"
-
-class Viewer;
-class Viewer_parameter;
-
-class Viewer_instructor : public QWidget {
- Q_OBJECT
-
- typedef Geometry_trait::Point_3 Point_3;
- typedef Complex::Point Point;
- typedef Complex::Vertex_handle Vertex_handle;
- typedef Complex::Edge_handle Edge_handle;
- typedef Complex::Simplex Simplex;
-
- Viewer* viewer_;
- View_parameter view_params_;
- const Complex& mesh_;
- std::unique_ptr<Projector3D> projector_;
-
- public:
- Viewer_instructor(QWidget* parent, Viewer* viewer, const Complex& mesh);
-
- void initialize_bounding_box();
-
- std::pair<Point, Point> compute_bounding_box_corners();
-
- void show_entire_scene();
-
- const qglviewer::Camera* camera() const;
-
- int width() const;
- int height() const;
-
- /**
- * to change display parameters
- */
- View_parameter& view_params();
-
- public:
- /**
- * gives instructions to the viewer
- */
- void give_instructions();
-
- void draw_edges();
- void draw_triangles();
- void draw_points();
-
- void draw_edge(const Point&, const Point&);
-
- void draw_point(const Point&);
-
- /**
- * set the right color of vertex/edge/triangle considering the view_params choice
- */
- void set_color_vertex(Vertex_handle vh);
- void set_color_edge(Edge_handle eh);
-
- void set_color_triangle(const Simplex& triangle);
-
- private:
- /**
- * Projection to 3D needed for the viewer.
- */
- Point_3 proj(const Point& p) const;
-
- public slots:
- void sceneChanged();
- void change_draw_vertices();
- void change_draw_edges();
- void change_draw_triangles();
- void change_light();
-};
-
-#endif // VIEW_VIEWER_INSTRUCTOR_H_
diff --git a/README b/README
deleted file mode 100644
index 2bbe5d14..00000000
--- a/README
+++ /dev/null
@@ -1,11 +0,0 @@
-The Gudhi library is release under the GNU GENERAL PUBLIC LICENSE Version 3. A
-copy of the licence may be found in the file COPYING.
-
-
-To build the library, run in a Terminal:
-
-cd /path-to-gudhi/
-mkdir build
-cd build/
-cmake ..
-make
diff --git a/biblio/bibliography.bib b/biblio/bibliography.bib
deleted file mode 100644
index 16f43d6f..00000000
--- a/biblio/bibliography.bib
+++ /dev/null
@@ -1,1105 +0,0 @@
-@inproceedings{gudhilibrary_ICMS14,
- author = {Cl\'ement Maria and Jean-Daniel Boissonnat and
- Marc Glisse and Mariette Yvinec},
- title = {The {G}udhi Library: Simplicial Complexes and Persistent Homology},
- booktitle = {ICMS},
- year = {2014},
-}
-
-@article{Carriere17c,
- author = {Carri\`ere, Mathieu and Michel, Bertrand and Oudot, Steve},
- title = {{Statistical Analysis and Parameter Selection for Mapper}},
- journal = {CoRR},
- volume = {abs/1706.00204},
- year = {2017}
-}
-
-@inproceedings{Dey13,
- author = {Dey, Tamal and Fan, Fengtao and Wang, Yusu},
- title = {Graph Induced Complex on Point Data},
- booktitle = {Proceedings of the Twenty-ninth Annual Symposium on Computational Geometry},
- year = {2013},
- pages = {107--116},
-}
-
-@article{Carriere16,
- title={{Structure and Stability of the 1-Dimensional Mapper}},
- author={Carri\`ere, Mathieu and Oudot, Steve},
- journal={CoRR},
- volume= {abs/1511.05823},
- year={2015}
-}
-
-@inproceedings{zigzag_reflection,
- author = {Jean-Daniel Boissonnat and Cl\'ement Maria and Steve Oudot},
- title = {Zigzag Persistent Homology Algorithm via Reflections},
- year = {2014 $\ \ \ \ \ \ \ \ \ \ \ $ \emph{In Preparation}},
-}
-
-@misc{gudhi_stpcoh,
- author = {Cl\'ement Maria},
- title = "\textsc{Gudhi}, Simplex Tree and Persistent Cohomology Packages",
- note = "\href{https://project.inria.fr/gudhi/software/}{\url{https://project.inria.fr/gudhi/software/}}"
-}
-
-%ARTICLES
-%------------------------------------------------------------------
-@article{boissonnatmariasimplextreealgorithmica,
-year={2014},
-issn={0178-4617},
-journal={Algorithmica},
-doi={10.1007/s00453-014-9887-3},
-title={The Simplex Tree: An Efficient Data Structure for General Simplicial Complexes},
-url={http://dx.doi.org/10.1007/s00453-014-9887-3},
-publisher={Springer US},
-keywords={Simplicial complexes; Data structure; Computational topology; Flag complexes; Witness complexes},
-author={Boissonnat, Jean-Daniel and Maria, Cl\'ement},
-pages={1-22},
-language={English}
-}
-
-@inproceedings{Garland,
- author = {Garland, Michael and Heckbert, Paul S.},
- title = {Surface simplification using quadric error metrics},
- booktitle = {Proceedings of the 24th annual conference on Computer graphics and interactive techniques},
- series = {SIGGRAPH '97},
- year = {1997},
- isbn = {0-89791-896-7},
- pages = {209--216},
- numpages = {8},
- publisher = {ACM Press/Addison-Wesley Publishing Co.},
- address = {New York, NY, USA},
- keywords = {level of detail, mutiresolution modeling, non-manifold, pair contraction, surface simplification},
-}
-
-
-@inproceedings{Lindstrom,
- author = {Lindstrom, Peter and Turk, Greg},
- title = {Fast and Memory Efficient Polygonal Simplification},
- booktitle = {Proceedings of the Conference on Visualization '98},
- series = {VIS '98},
- year = {1998},
- isbn = {1-58113-106-2},
- location = {Research Triangle Park, North Carolina, USA},
- pages = {279--286},
- numpages = {8},
- publisher = {IEEE Computer Society Press},
- address = {Los Alamitos, CA, USA},
-}
-
-
-@article{boissonnatmariacamalgorithmica,
-journal={Submitted to Algorithmica},
-title={The Compressed Annotation Matrix: An Efficient Data Structure for Computing Persistent Cohomology},
-author={Jean-Daniel Boissonnat and Tamal K. Dey and Cl{\'e}ment Maria},
-language={English},
-}
-
-@inproceedings{DBLP:conf/esa/BoissonnatDM13,
- author = {Jean-Daniel Boissonnat and
- Tamal K. Dey and
- Cl{\'e}ment Maria},
- title = {The Compressed Annotation Matrix: An Efficient Data Structure for Computing Persistent Cohomology},
- url = {http://dx.doi.org/10.1007/978-3-642-40450-4_59},
- doi = {10.1007/978-3-642-40450-4_59},
- booktitle = {ESA},
- year = {2013},
- pages = {695-706},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-@inproceedings{boissonnatmariaesa2014,
- author = {Jean-Daniel Boissonnat and
- Cl{\'e}ment Maria},
- title = {Computing Persistent Homology with Various Coefficient Fields in a Single Pass},
- booktitle = {ESA},
- year = {2014}
-}
-
-@inproceedings{DBLP:conf/esa/BoissonnatM12,
- author = {Jean-Daniel Boissonnat and
- Cl{\'e}ment Maria},
- title = {The Simplex Tree: An Efficient Data Structure for General Simplicial Complexes},
- url = {http://dx.doi.org/10.1007/978-3-642-33090-2_63},
- doi = {10.1007/978-3-642-33090-2_63},
- booktitle = {ESA},
- year = {2012},
- pages = {731-742},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-
-
-%% hal-00922572, version 2
-%% http://hal.inria.fr/hal-00922572
-@techreport{boissonnat:hal-00922572,
- hal_id = {hal-00922572},
- url = {http://hal.inria.fr/hal-00922572},
- title = {Computing Persistent Homology with Various Coefficient Fields in a Single Pass},
- author = {Boissonnat, Jean-Daniel and Maria, Cl{\'e}ment},
- abstract = {{In this article, we introduce the multi-field persistence diagram for the persistence homology of a filtered complex. It encodes compactly the superimposition of the persistence diagrams of the complex with several field coefficients, and provides a substantially more precise description of the topology of the filtered complex. Specifically, the multi-field persistence diagram encodes the Betti numbers of integral homology and the prime divisors of the torsion coefficients of the underlying shape. Moreover, it enjoys similar stability properties as the ones of standard persistence diagrams, with the appropriate notion of distance. These properties make the multi-field persistence diagram a useful tool in computational topology.}},
- keywords = {Computational Topology, Persistent homology, Modular reconstruction},
- language = {Anglais},
- affiliation = {GEOMETRICA - INRIA Sophia Antipolis / INRIA Saclay - Ile de France},
- pages = {19},
- type = {Rapport de recherche},
- institution = {INRIA},
- number = {RR-8436},
- year = {2013},
- month = Dec,
- pdf = {http://hal.inria.fr/hal-00922572/PDF/RR-8436.pdf},
-}
-
-
-
-
-
-
-@inproceedings{DBLP:conf/compgeom/CarlssonSM09,
- author = {Gunnar E. Carlsson and
- Vin de Silva and
- Dmitriy Morozov},
- title = {Zigzag persistent homology and real-valued functions},
- booktitle = {Symposium on Computational Geometry},
- year = {2009},
- pages = {247-256},
- ee = {http://doi.acm.org/10.1145/1542362.1542408},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@inproceedings{DBLP:conf/compgeom/Cohen-SteinerEM06,
- author = {David Cohen-Steiner and
- Herbert Edelsbrunner and
- Dmitriy Morozov},
- title = {Vines and vineyards by updating persistence in linear time},
- booktitle = {Symposium on Computational Geometry},
- year = {2006},
- pages = {119-126},
- ee = {http://doi.acm.org/10.1145/1137856.1137877},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-@article{quiverrepresentations_derksenweyman,
- author = {Harm Derksen and Jerzy Weyman},
- title = {Quiver Representations},
- journal = {Notices of the AMS},
- volume = {52},
- number = {2},
- year = {2005},
- pages = {200-206}
-}
-@article{DBLP:journals/dcg/SilvaMV11,
- author = {Vin de Silva and
- Dmitriy Morozov and
- Mikael Vejdemo-Johansson},
- title = {Persistent Cohomology and Circular Coordinates},
- journal = {Discrete {\&} Computational Geometry},
- volume = {45},
- number = {4},
- year = {2011},
- pages = {737-759},
- ee = {http://dx.doi.org/10.1007/s00454-011-9344-x},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@article{RS62,
- author={J. B. Rosser and L. Schoenfeld},
- title={Approximate Formulas for some Functions of Prime Numbers},
- journal= {ijm},
- volume= 6,
- year= 1962,
- pages={64-94},
- mrnumber={25 \#1139}
-}
-@article{DBLP:journals/siamcomp/Furer09,
- author = {Martin F{\"u}rer},
- title = {Faster Integer Multiplication},
- journal = {SIAM J. Comput.},
- volume = {39},
- number = {3},
- year = {2009},
- pages = {979-1005},
- ee = {http://dx.doi.org/10.1137/070711761},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@article{DBLP:journals/dcg/ZomorodianC05,
- author = {Afra Zomorodian and
- Gunnar E. Carlsson},
- title = {Computing Persistent Homology},
- journal = {Discrete {\&} Computational Geometry},
- volume = {33},
- number = {2},
- year = {2005},
- pages = {249-274},
- ee = {http://www.springerlink.com/index/10.1007/s00454-004-1146-y},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@article{DBLP:journals/dcg/Cohen-SteinerEH07,
- author = {David Cohen-Steiner and
- Herbert Edelsbrunner and
- John Harer},
- title = {Stability of Persistence Diagrams},
- journal = {Discrete {\&} Computational Geometry},
- volume = {37},
- number = {1},
- year = {2007},
- pages = {103-120},
- ee = {http://dx.doi.org/10.1007/s00454-006-1276-5},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@article{DBLP:journals/siamcomp/HafnerM91,
- author = {James L. Hafner and
- Kevin S. McCurley},
- title = {Asymptotically Fast Triangularization of Matrices Over Rings},
- journal = {SIAM J. Comput.},
- volume = {20},
- number = {6},
- year = {1991},
- pages = {1068-1083},
- ee = {http://dx.doi.org/10.1137/0220067},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@article{DBLP:journals/algorithmica/EfratIK01,
- author = {Alon Efrat and
- Alon Itai and
- Matthew J. Katz},
- title = {Geometry Helps in Bottleneck Matching and Related Problems},
- journal = {Algorithmica},
- volume = {31},
- number = {1},
- year = {2001},
- pages = {1-28},
- ee = {http://dx.doi.org/10.1007/s00453-001-0016-8},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@article{DBLP:journals/siamcomp/HopcroftK73,
- author = {John E. Hopcroft and
- Richard M. Karp},
- title = {An n$^{\mbox{5/2}}$ Algorithm for Maximum Matchings in Bipartite
- Graphs},
- journal = {SIAM J. Comput.},
- volume = {2},
- number = {4},
- year = {1973},
- pages = {225-231},
- ee = {http://dx.doi.org/10.1137/0202019},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-%------------------------------------------------------------------
-@article{blockers2012,
- author = {Dominique Attali and
- Andr{\'e} Lieutier and
- David Salinas},
- title = {Efficient Data Structure for Representing and Simplifying
- Simplicial complexes in High Dimensions},
- journal = {Int. J. Comput. Geometry Appl.},
- volume = {22},
- number = {4},
- year = {2012},
- pages = {279-304},
- ee = {http://dx.doi.org/10.1142/S0218195912600060},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-%------------------------------------------------------------------
-@article{rips2012,
- hal_id = {hal-00785072},
- url = {http://hal.archives-ouvertes.fr/hal-00785072},
- title = {{Vietoris-Rips Complexes also Provide Topologically Correct Reconstructions of Sampled Shapes}},
- author = {Attali, Dominique and Lieutier, Andr{\'e} and Salinas, David},
- keywords = {Shape reconstruction \sep Rips complexes \sep clique complexes \sep \v Cech complexes ; homotopy equivalence ; collapses ; high dimensions},
- language = {Anglais},
- affiliation = {Grenoble Images Parole Signal Automatique - GIPSA-lab , Laboratoire Jean Kuntzmann - LJK},
- pages = {448-465},
- journal = {Computational Geometry},
- volume = {46},
- number = {4, special issue },
- audience = {internationale },
- doi = {10.1016/j.comgeo.2012.02.009 },
- year = {2012},
- pdf = {http://hal.archives-ouvertes.fr/hal-00785072/PDF/2012-cgta-Rips.pdf},
-}
-
-
-%------------------------------------------------------------------
-@article{DBLP:journals/corr/abs-1210-1429,
- author = {Pawel Dlotko and
- Hubert Wagner},
- title = {Computing homology and persistent homology using iterated
- Morse decomposition},
- journal = {CoRR},
- volume = {abs/1210.1429},
- year = {2012},
- ee = {http://arxiv.org/abs/1210.1429},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-%------------------------------------------------------------------
-@article{tangentialcomplex2014,
-author="Boissonnat, Jean-Daniel and Ghosh, Arijit",
-title="Manifold Reconstruction Using Tangential Delaunay Complexes",
-journal="Discrete {\&} Computational Geometry",
-year="2014",
-volume="51",
-number="1",
-pages="221--267",
-abstract="We give a provably correct algorithm to reconstruct a k-dimensional smooth manifold embedded in d-dimensional Euclidean space. The input to our algorithm is a point sample coming from an unknown manifold. Our approach is based on two main ideas: the notion of tangential Delaunay complex defined in Boissonnat and Fl{\"o}totto (Comput. Aided Des. 36:161--174, 2004), Fl{\"o}totto (A coordinate system associated to a point cloud issued from a manifold: definition, properties and applications. Ph.D. thesis, 2003), Freedman (IEEE Trans. Pattern Anal. Mach. Intell. 24(10), 2002), and the technique of sliver removal by weighting the sample points (Cheng et al. in J. ACM 47:883--904, 2000). Differently from previous methods, we do not construct any subdivision of the d-dimensional ambient space. As a result, the running time of our algorithm depends only linearly on the extrinsic dimension d while it depends quadratically on the size of the input sample, and exponentially on the intrinsic dimension k. To the best of our knowledge, this is the first certified algorithm for manifold reconstruction whose complexity depends linearly on the ambient dimension. We also prove that for a dense enough sample the output of our algorithm is isotopic to the manifold and a close geometric approximation of the manifold.",
-issn="1432-0444",
-doi="10.1007/s00454-013-9557-2",
-url="http://dx.doi.org/10.1007/s00454-013-9557-2"
-}
-
-%BOOKS
-%------------------------------------------------------------------
-@book{DBLP:tibkat_237559129,
- author = {Saunders Mac Lane},
- title = {Categories for the working mathematician},
- year = {1998},
- ee = {http://www.zentralblatt-math.org/zmath/en/search/?an}
-}
-
-
-@book{Hatcher-algebraictopology2001,
- author = {Hatcher, Allen},
- day = {03},
- edition = {1},
- howpublished = {Paperback},
- isbn = {0521795400},
- keywords = {topology},
- month = dec,
- posted-at = {2008-06-25 09:53:39},
- priority = {2},
- publisher = {Cambridge University Press},
- title = {{Algebraic Topology}},
- url = {http://www.math.cornell.edu/\~{}hatcher/AT/AT.pdf},
- year = {2001}
-}
-@book{Munkres-elementsalgtop1984,
- author = {James R. Munkres},
- title = {Elements of algebraic topology},
- publisher = {Addison-Wesley},
- year = {1984},
- isbn = {978-0-201-04586-4},
- pages = {I-IX, 1-454},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@book{DBLP:books/aw/Knuth81,
- author = {Donald E. Knuth},
- title = {The Art of Computer Programming, Volume II: Seminumerical
- Algorithms, 2nd Edition},
- publisher = {Addison-Wesley},
- year = {1981},
- isbn = {0-201-03822-6},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@book{DBLP:books/daglib/0025666,
- author = {Herbert Edelsbrunner and
- John Harer},
- title = {Computational Topology - an Introduction},
- publisher = {American Mathematical Society},
- year = {2010},
- isbn = {978-0-8218-4925-5},
- pages = {I-XII, 1-241},
- ee = {http://www.ams.org/bookstore-getitem/item=MBK-69},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@book{Gathen:2003:MCA:945759,
- author = {Gathen, Joachim Von Zur and Gerhard, Jurgen},
- title = {Modern Computer Algebra},
- year = {2003},
- isbn = {0521826462},
- edition = {2},
- publisher = {Cambridge University Press},
- address = {New York, NY, USA},
-}
-@book{DBLP:books/aw/AhoHU74,
- author = {Alfred V. Aho and
- John E. Hopcroft and
- Jeffrey D. Ullman},
- title = {The Design and Analysis of Computer Algorithms},
- publisher = {Addison-Wesley},
- year = {1974},
- isbn = {0-201-00029-6},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-%------------------------------------------------------------------
-
-
-
-%INPROCEEDINGS
-%------------------------------------------------------------------
-
- crossref = {DBLP:conf/esa/2013},
-
-proceedings{DBLP:conf/esa/2013,
- editor = {Hans L. Bodlaender and
- Giuseppe F. Italiano},
- title = {Algorithms - ESA 2013 - 21st Annual European Symposium,
- Sophia Antipolis, France, September 2-4, 2013. Proceedings},
- booktitle = {ESA},
- publisher = {Springer},
- series = {Lecture Notes in Computer Science},
- volume = {8125},
- year = {2013},
- isbn = {978-3-642-40449-8},
- ee = {http://dx.doi.org/10.1007/978-3-642-40450-4},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@inproceedings{DBLP:conf/issac/StorjohannL96,
- author = {Arne Storjohann and
- George Labahn},
- title = {Asymptotically Fast Computation of {H}ermite Normal Forms
- of Integer Matrices},
- booktitle = {ISSAC},
- year = {1996},
- pages = {259-266},
- ee = {http://doi.acm.org/10.1145/236869.237083},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-} crossref = {DBLP:conf/issac/1996},
-@inproceedings{DBLP:conf/issac/Storjohann96,
- author = {Arne Storjohann},
- title = {Near Optimal Algorithms for Computing Smith Normal Forms
- of Integer Matrices},
- booktitle = {ISSAC},
- year = {1996},
- pages = {267-274},
- ee = {http://doi.acm.org/10.1145/236869.237084},
-
- bibsource = {DBLP, http://dblp.uni-trier.de}
-} crossref = {DBLP:conf/issac/1996},
-proceedings{DBLP:conf/issac/1996,
- editor = {Erwin Engeler and
- B. F. Caviness and
- Yagati N. Lakshman},
- title = {Proceedings of the 1996 International Symposium on Symbolic
- and Algebraic Computation, ISSAC '96, Zurich, Switzerland,
- July 24-26, 1996},
- booktitle = {ISSAC},
- publisher = {ACM},
- year = {1996},
- isbn = {0-89791-796-0},
- ee = {http://dl.acm.org/citation.cfm?id=236869},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-
-proceedings{DBLP:conf/issac/1996,
- editor = {Erwin Engeler and
- B. F. Caviness and
- Yagati N. Lakshman},
- title = {Proceedings of the 1996 International Symposium on Symbolic
- and Algebraic Computation, ISSAC '96, Zurich, Switzerland,
- July 24-26, 1996},
- booktitle = {ISSAC},
- publisher = {ACM},
- year = {1996},
- isbn = {0-89791-796-0},
- ee = {http://dl.acm.org/citation.cfm?id=236869},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-
-@inproceedings{socg_blockers_2011,
- author = {Attali, Dominique and Lieutier, Andr{\'e} and Salinas, David},
- title = {Efficient data structure for representing and simplifying simplicial complexes in high dimensions},
- booktitle = {Proceedings of the 27th annual ACM symposium on Computational geometry},
- series = {SoCG '11},
- year = {2011},
- location = {Paris, France},
- pages = {501--509},
- numpages = {9},
- keywords = {clique complexes, data structure, edge contraction, flag complexes, high dimensions, homotopy equivalence, shape reconstruction, shape simplification, simplicial complexes, vietoris-rips complexes},
-}
-
-
-
-%------------------------------------------------------------------
-
-%MISC
-%------------------------------------------------------------------
-@article{DBLP:journals/corr/abs-1208-5018,
- author = {Tamal K. Dey and
- Fengtao Fan and
- Yusu Wang},
- title = {Computing Topological Persistence for Simplicial Maps},
- journal = {CoRR},
- volume = {abs/1208.5018},
- year = {2012},
- ee = {http://arxiv.org/abs/1208.5018},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@article{DBLP:journals/corr/abs-1107-5665,
- author = {Vin de Silva and
- Dmitriy Morozov and
- Mikael Vejdemo-Johansson},
- title = {Dualities in persistent (co)homology},
- journal = {CoRR},
- volume = {abs/1107.5665},
- year = {2011},
- ee = {http://arxiv.org/abs/1107.5665},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-%------------------------------------------------------------------
-
-%LIBRARY
-
-%------------------------------------------------------------------
-@misc{gmplib_cite,
-title = "GMP, The GNU Multiple Precision Arithmetic Library",
-note = "http://gmplib.org/",
-}
-%------------------------------------------------------------------
-
-
-
-
-%TEMPORARY
-%------------------------------------------------------------------
-@inproceedings{deSilva:2013:GSP:2493132.2462402,
- author = {de Silva, Vin and Nanda, Vidit},
- title = {Geometry in the space of persistence modules},
- booktitle = {Proceedings of the twenty-ninth annual symposium on Computational geometry},
- series = {SoCG '13},
- year = {2013},
- isbn = {978-1-4503-2031-3},
- location = {Rio de Janeiro, Brazil},
- pages = {397--404},
- numpages = {8},
- url = {http://doi.acm.org/10.1145/2462356.2462402},
- doi = {10.1145/2462356.2462402},
- acmid = {2462402},
- publisher = {ACM},
- address = {New York, NY, USA},
- keywords = {discrete and computational geometry, embedding theorem, persistent homology},
-}
-@article{Fredman:1984:SST:828.1884,
- author = {Fredman, Michael L. and Koml\'{o}s, J\'{a}nos and Szemer{\'e}di, Endre},
- title = {Storing a Sparse Table with {O}(1) Worst Case Access Time},
- journal = {J. ACM},
- issue_date = {July 1984},
- volume = {31},
- number = {3},
- month = jun,
- year = {1984},
- issn = {0004-5411},
- pages = {538--544},
- numpages = {7},
- url = {http://doi.acm.org/10.1145/828.1884},
- doi = {10.1145/828.1884},
- acmid = {1884},
- publisher = {ACM},
- address = {New York, NY, USA},
-}
-%------------------------------------------------------------------
-
-
-
-%%%%% TEMP
-article{journals/moc/Moller08,
- added-at = {2011-04-10T00:00:00.000+0200},
- author = {M\"oller, Niels},
- biburl = {http://www.bibsonomy.org/bibtex/2a40c83ae0a723c978ff29ccaec7ff7ee/dblp},
- ee = {http://dx.doi.org/10.1090/S0025-5718-07-02017-0},
- interhash = {d2f425fef08e9b3ea347b12cbcf9792f},
- intrahash = {a40c83ae0a723c978ff29ccaec7ff7ee},
- journal = {Math. Comput.},
- keywords = {dblp},
- number = 261,
- pages = {589-607},
- timestamp = {2011-04-10T00:00:00.000+0200},
- title = {On Sch\"onhage's algorithm and subquadratic integer gcd computation.},
- url = {http://dblp.uni-trier.de/db/journals/moc/moc77.html#Moller08},
- volume = 77,
- year = 2008
-}
-
-@article{DBLP:journals/dcg/EdelsbrunnerLZ02,
- author = {Herbert Edelsbrunner and
- David Letscher and
- Afra Zomorodian},
- title = {Topological Persistence and Simplification},
- journal = {Discrete Comput. Geom.},
- volume = {28},
- number = {4},
- year = {2002},
- pages = {511-533},
- ee = {http://dx.doi.org/10.1007/s00454-002-2885-2},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-
-
-
-inproceedings{DBLP:conf/esa/2012,
- editor = {Leah Epstein and
- Paolo Ferragina},
- title = {Algorithms - ESA 2012 - 20th Annual European Symposium,
- Ljubljana, Slovenia, September 10-12, 2012. Proceedings},
- booktitle = {ESA},
- publisher = {Springer},
- series = {Lecture Notes in Computer Science},
- volume = {7501},
- year = {2012},
- isbn = {978-3-642-33089-6},
- ee = {http://dx.doi.org/10.1007/978-3-642-33090-2},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-
-
-@article{SMV11,
- author = {V. de Silva and
- D. Morozov and
- M. Vejdemo-Johansson},
- title = {Persistent cohomology and circular coordinates},
- journal = {Discrete Comput. Geom.},
- volume = {45},
- pages = {737-759},
- year = {2011},
-}
-@article{SMV211,
- author = {V. de Silva and
- D. Morozov and
- M. Vejdemo-Johansson},
- title = {Dualities in persistent (co)homology},
- journal = {Inverse Problems},
- volume = {27},
- year = {2011},
- pages = {124003},
-}
-
-
-
-
-
-inproceedings{DBLP:conf/soda/BentleyS97,
- author = {Jon Louis Bentley and
- Robert Sedgewick},
- title = {Fast Algorithms for Sorting and Searching Strings},
- booktitle = {SODA},
- year = {1997},
- pages = {360-369},
- ee = {http://doi.acm.org/10.1145/314161.314321},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@inproceedings{CO08,
- author = {F. Chazal and S. Oudot},
- title = {Towards persistence-based reconstruction in Euclidean spaces},
- booktitle = {Proc. 24th. Annu. Sympos. Comput. Geom.},
- year = {2008},
- pages = {231-241}
-}
-inproceedings{DBLP:conf/soda/1997,
- editor = {Michael E. Saks},
- title = {Proceedings of the Eighth Annual ACM-SIAM Symposium on Discrete
- Algorithms, 5-7 January 1997, New Orleans, Louisiana},
- booktitle = {SODA},
- publisher = {ACM/SIAM},
- year = {1997},
- isbn = {0-89871-390-0},
- ee = {http://dl.acm.org/citation.cfm?id=314161},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-
-
-
-@inproceedings{attali-rips_approx,
- author = {Dominique Attali and
- Andr{\'e} Lieutier and
- David Salinas},
- title = {Vietoris-rips complexes also provide topologically correct
- reconstructions of sampled shapes},
- booktitle = {Symposium on Computational Geometry},
- year = {2011},
- pages = {491-500},
- ee = {http://doi.acm.org/10.1145/1998196.1998276},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-
-
-
-
-
-@article{Carlsson:2008:LBS:1325290.1325300,
- author = {Carlsson, Gunnar and Ishkhanov, Tigran and Silva, Vin and Zomorodian, Afra},
- title = {On the Local Behavior of Spaces of Natural Images},
- journal = {Int. J. Comput. Vision},
- volume = {76},
- issue = {1},
- month = {January},
- year = {2008},
- issn = {0920-5691},
- pages = {1--12},
- numpages = {12},
- url = {http://portal.acm.org/citation.cfm?id=1325290.1325300},
- doi = {10.1007/s11263-007-0056-x},
- acmid = {1325300},
- publisher = {Kluwer Academic Publishers},
- address = {Hingham, MA, USA},
- keywords = {Filtration, Klein bottle, Manifold, Natural images, Persistent homology, Topology},
-}
-
-article{DBLP:journals/ijcv/LeePM03,
- author = {Ann B. Lee and
- Kim Steenstrup Pedersen and
- David Mumford},
- title = {The Nonlinear Statistics of High-Contrast Patches in Natural
- Images},
- journal = {International Journal of Computer Vision},
- volume = {54},
- number = {1-3},
- year = {2003},
- pages = {83-103},
- ee = {http://dx.doi.org/10.1023/A:1023705401078},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-
-@article{martin2010top,
-title={Topology of cyclo-octane energy landscape.},
-author={Martin, S. and Thompson, A. and Coutsias, E.A. and Watson, J.},
-journal={J Chem Phys},
-volume={132},
-number={23},
-pages={234115},
-year={2010},
-abstract={Understanding energy landscapes is a major challenge in chemistry and biology. Although a wide variety of methods have been invented and applied to this problem, very little is understood about the actual mathematical structures underlying such landscapes. Perhaps the most general assumption is the idea that energy landscapes are low-dimensional manifolds embedded in high-dimensional Euclidean space. While this is a very mild assumption, we have discovered an example of an energy landscape which is nonmanifold, demonstrating previously unknown mathematical complexity. The example occurs in the energy landscape of cyclo-octane, which was found to have the structure of a reducible algebraic variety, composed of the union of a sphere and a Klein bottle, intersecting in two rings.}
-}
-
-
-book{hatcher2002algebraic,
- title={Algebraic Topology},
- author={Hatcher, A.},
- isbn={9780521795401},
- lccn={00065166},
- url={http://books.google.fr/books?id=BjKs86kosqgC},
- year={2002},
- publisher={Cambridge University Press}
-}
-
-
-
-@article{DBLP:journals/cagd/DelfinadoE95,
- author = {Cecil Jose A. Delfinado and
- Herbert Edelsbrunner},
- title = {An incremental algorithm for {B}etti numbers of simplicial
- complexes on the 3-sphere},
- journal = {Computer Aided Geometric Design},
- volume = {12},
- number = {7},
- year = {1995},
- pages = {771-784},
- ee = {http://dx.doi.org/10.1016/0167-8396(95)00016-Y},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-
-@book{Cormen:2001:IA:580470,
- author = {Cormen, Thomas H. and Stein, Clifford and Rivest, Ronald L. and Leiserson, Charles E.},
- title = {Introduction to Algorithms},
- year = {2001},
- isbn = {0070131511},
- edition = {2nd},
- publisher = {McGraw-Hill Higher Education},
-}
-
-@article{DBLP:journals/focm/CarlssonS10,
- author = {Gunnar E. Carlsson and
- Vin de Silva},
- title = {Zigzag Persistence},
- journal = {Foundations of Computational Mathematics},
- volume = {10},
- number = {4},
- year = {2010},
- pages = {367-405},
- ee = {http://dx.doi.org/10.1007/s10208-010-9066-0},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-@article{ghrist_coverage,
- author = {V. de Silva and R. Ghrist},
- title = {Coverage in sensor network via persistent homology},
- journal = {Algebraic {\&} Geometric Topology},
- volume = {7},
- year = {2007},
- pages = {339-358},
-}
-@article{mischaikow_nanda_morse,
-year={2013},
-issn={0179-5376},
-journal={Discrete {\&} Computational Geometry},
-volume={50},
-number={2},
-doi={10.1007/s00454-013-9529-6},
-title={Morse Theory for Filtrations and Efficient Computation of Persistent Homology},
-url={http://dx.doi.org/10.1007/s00454-013-9529-6},
-publisher={Springer US},
-keywords={Computational topology; Discrete Morse theory; Persistent homology},
-author={Mischaikow, Konstantin and Nanda, Vidit},
-pages={330-353},
-language={English}
-}
-
-
-@inproceedings{DBLP:conf/compgeom/MilosavljevicMS11,
- author = {Nikola Milosavljevic and
- Dmitriy Morozov and
- Primoz Skraba},
- title = {Zigzag persistent homology in matrix multiplication time},
- booktitle = {Symposium on Comp. Geom.},
- year = {2011},
- ee = {http://doi.acm.org/10.1145/1998196.1998229},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-proceedings{DBLP:conf/compgeom/2011,
- editor = {Ferran Hurtado and
- Marc J. van Kreveld},
- title = {Proceedings of the 27th ACM Symposium on Computational Geometry,
- Paris, France, June 13-15, 2011},
- booktitle = {Symposium on Computational Geometry},
- publisher = {ACM},
- year = {2011},
- isbn = {978-1-4503-0682-9},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-@article{DBLP:journals/comgeo/ChenK13,
- author = {Chao Chen and
- Michael Kerber},
- title = {An output-sensitive algorithm for persistent homology},
- journal = {Comput. Geom.},
- volume = {46},
- number = {4},
- year = {2013},
- pages = {435-447},
- ee = {http://dx.doi.org/10.1016/j.comgeo.2012.02.010},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-
-@incollection{Bauer:arXiv1303.0477,
-year={2014},
-isbn={978-3-319-04098-1},
-booktitle={Topological Methods in Data Analysis and Visualization III},
-doi={10.1007/978-3-319-04099-8_7},
-title={Clear and Compress: Computing Persistent Homology in Chunks},
-url={http://dx.doi.org/10.1007/978-3-319-04099-8_7},
-author={Bauer, Ulrich and Kerber, Michael and Reininghaus, Jan},
-pages={103-117},
-language={English}
-}
-@inproceedings{DBLP:conf/alenex/BauerKR14,
- author = {Ulrich Bauer and
- Michael Kerber and
- Jan Reininghaus},
- title = {Distributed Computation of Persistent Homology},
- booktitle = {ALENEX},
- year = {2014},
- pages = {31-38},
- ee = {http://dx.doi.org/10.1137/1.9781611973198.4},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-@inproceedings{DBLP:conf/compgeom/DeyFW14,
- author = {Tamal K. Dey and
- Fengtao Fan and
- Yusu Wang},
- title = {Computing Topological Persistence for Simplicial Maps},
- booktitle = {Symposium on Computational Geometry},
- year = {2014},
- pages = {345},
- ee = {http://doi.acm.org/10.1145/2582112.2582165},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-@INPROCEEDINGS{Chen11persistenthomology,
- author = {Chao Chen and Michael Kerber},
- title = {Persistent homology computation with a twist},
- booktitle = {Proceedings 27th European Workshop on Computational Geometry},
- year = {2011}
-}
-
-
-@ARTICLE{Morozov05persistencealgorithm,
- author = {Dmitriy Morozov},
- title = {Persistence algorithm takes cubic time in worst case},
- journal = {BioGeometry News, Dept. Comput. Sci., Duke Univ},
- year = {2005}
-}
-
-@article{DBLP:journals/corr/abs-1205-3669,
- author = {Peter Bubenik and
- Jonathan A. Scott},
- title = {Categorification of persistent homology},
- journal = {CoRR},
- volume = {abs/1205.3669},
- year = {2012},
- ee = {http://arxiv.org/abs/1205.3669},
- bibsource = {DBLP, http://dblp.uni-trier.de}
-}
-
-misc{buddha_stanford_scan,
- author = "",
- title = "The Stanford 3D Scanning Repository",
- note = "http://graphics.stanford.edu/data/3Dscanrep/"
-}
-@misc{dionysus_morozov,
- author = "Dmitriy Morozov",
- title = "\textsc{Dionysus}",
- note = "http://www.mrzv.org/software/dionysus/"
-}
-
-@misc{phat_lib,
-author={Bauer, Ulrich and Kerber, Michael and Reininghaus, Jan},
- title = "\textsc{Phat}",
- note = "https://code.google.com/p/phat/"
-}
-
-misc{ann_mount,
-author = "David M. Mount
-and Sunil Arya",
- title = "\textsc{ANN}, {A}pproximate {N}earest {N}eighbors {L}ibrary",
- note = "http://www.cs.sunysb.edu/~algorith/implement/ANN/implement.shtml"
-}
-
-misc{jplex_cite,
- author = "Sexton, Harlan and Johansson, Mikael Vejdemo",
- title = "\textsc{JPlex}",
- year = "2009",
- note = "http://comptop.stanford.edu/programs/jplex/"
-}
-
-@book{kaczynski2004computational,
- title={Computational Homology},
- author={Kaczynski, T. and Mischaikow, K. and Mrozek, M.},
- isbn={9780387408538},
- lccn={03061109},
- series={Applied Mathematical Sciences},
- url={https://books.google.fr/books?id=AShKtpi3GecC},
- year={2004},
- publisher={Springer New York}
-}
-
-@inbook{peikert2012topological,
-year={2012},
-isbn={978-3-642-23174-2},
-booktitle={Topological Methods in Data Analysis and Visualization II},
-series={Mathematics and Visualization},
-editor={Peikert, Ronald and Hauser, Helwig and Carr, Hamish and Fuchs, Raphael},
-doi={10.1007/978-3-642-23175-9_7},
-title={Efficient Computation of Persistent Homology for Cubical Data},
-url={http://dx.doi.org/10.1007/978-3-642-23175-9_7},
-publisher={Springer Berlin Heidelberg},
-author={Wagner, Hubert and Chen, Chao and Vucini, Erald},
-pages={91-106},
-language={English}
-}
-
-@article{de2004topological,
- title={Topological estimation using witness complexes},
- author={De Silva, Vin and Carlsson, Gunnar},
- journal={Proc. Sympos. Point-Based Graphics},
- pages={157-166},
- year={2004}
-}
-
-@ARTICLE{bubenik_landscapes_2015,
- author = {P. Bubenik},
- title = {Statistical topological data analysis using persistence landscapes.},
- journal = {Journal of Machine Learning Research},
- year = {2015}
-}
-
-@ARTICLE{bubenik_dlotko_landscapes_2016,
- author = {P. Bubenik and P. Dlotko},
- title = {A persistence landscapes toolbox for topological statistics.},
- journal = {Journal of Symbolic Computation.},
- year = {2016}
-}
-
-@ARTICLE{Fasy_Kim_Lecci_Maria_tda,
- author = {B. Fasy and J. Kim and F. Lecci and C. Maria},
- title = {Introduction to the R package TDA.},
- journal = {arXiv:1411.1830.},
- year = {2016}
-}
-
-
-@ARTICLE{Ferri_Frosini_comparision_sheme_1,
- author = {P. Donatini and P. Frosini and A. Lovato},
- title = {Size functions for signature recognition.},
- journal = {Proceedings of SPIE, Vision Geometry VII, vol. 3454},
- year = {1998}
-}
-
-
-@ARTICLE{Ferri_Frosini_comparision_sheme_2,
- author = {M. Ferri and P. Frosini and A. Lovato and C. Zambelli},
- title = {Point selection: A new comparison scheme for size functions (With an application to monogram recognition).},
- journal = {Proceedings Third Asian Conference on Computer Vision, Lecture Notes in Computer Science 1351.},
- year = {1998}
-}
-
-@ARTICLE{Persistence_Images_2017,
- author = {H. Adams and S. Chepushtanova and T. Emerson and E. Hanson and M. Kirby and F. Motta and R. Neville and C. Peterson and P. Shipman and L. Ziegelmeier},
- title = {Persistence Images: A Stable Vector Representation of Persistent Homology.},
- journal = {Journal of Machine Learning Research},
- year = {2017}
-}
-
-
-@ARTICLE{Kusano_Fukumizu_Hiraoka_PWGK,
- author = {G. Kusano and K. Fukumizu and Y. Hiraoka},
- title = {Persistence weighted Gaussian kernel for topological data analysis.},
- journal = {ICML'16 Proceedings of the 33rd International Conference on International Conference on Machine Learning - Volume 48},
- year = {2016}
-}
-
-@ARTICLE{Reininghaus_Huber_ALL_PSSK,
- author = {J. Reininghaus and S. Huber and U. Bauer and R. Kwitt},
- title = {A Stable Multi-Scale Kernel for Topological Machine Learning.},
- journal = {Proc. 2015 IEEE Conf. Comp. Vision & Pat. Rec. (CVPR '15)},
- year = {2015}
-}
-
-@ARTICLE{Carriere_Oudot_Ovsjanikov_top_signatures_3d,
- author = {M. Carri\`ere and S. Oudot and M. Ovsjanikov},
- title = {Stable Topological Signatures for Points on 3D Shapes.},
- journal = {Proc. Sympos. on Geometry Processing},
- year = {2015}
-}
-
-@article{buchet16efficient,
- title = {Efficient and Robust Persistent Homology for Measures},
- author = {Micka\"{e}l Buchet and Fr\'{e}d\'{e}ric Chazal and Steve Y. Oudot and Donald Sheehy},
- booktitle = {Computational Geometry: Theory and Applications},
- volume = {58},
- pages = {70--96},
- year = {2016}
-}
-
-@inproceedings{cavanna15geometric,
- author = {Nicholas J. Cavanna and Mahmoodreza Jahanseir and Donald R. Sheehy},
- booktitle = {Proceedings of the Canadian Conference on Computational Geometry},
- title = {A Geometric Perspective on Sparse Filtrations},
- year = {2015}
-}
-
-@inproceedings{cavanna15visualizing,
- author = {Nicholas J. Cavanna and Mahmoodreza Jahanseir and Donald R. Sheehy},
- booktitle = {Proceedings of the 31st International Symposium on Computational Geometry},
- title = {Visualizing Sparse Filtrations},
- year = {2015},
- doi = {10.4230/LIPIcs.SOCG.2015.23}
-}
-
-@article{sheehy13linear,
- title = {Linear-Size Approximations to the {V}ietoris-{R}ips Filtration},
- author = {Donald R. Sheehy},
- journal = {Discrete \& Computational Geometry},
- volume = {49},
- number = {4},
- pages = {778--796},
- year = {2013}
-}
diff --git a/biblio/how_to_cite_cgal.bib b/biblio/how_to_cite_cgal.bib
deleted file mode 100644
index 7336ee81..00000000
--- a/biblio/how_to_cite_cgal.bib
+++ /dev/null
@@ -1,947 +0,0 @@
-@book{ cgal:eb-15b
-, title = "{CGAL} User and Reference Manual"
-, author = "{The CGAL Project}"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, year = 2015
-, url = "http://doc.cgal.org/4.7/Manual/packages.html"
-}
-@incollection{cgal:h-af-15b
-, author = "Michael Hemmer"
-, title = "Algebraic Foundations"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgAlgebraicFoundationsSummary"
-, year = 2015
-}
-
-@incollection{cgal:hhkps-nt-15b
-, author = "Michael Hemmer and Susan Hert and Sylvain Pion and Stefan Schirra"
-, title = "Number Types"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgNumberTypesSummary"
-, year = 2015
-}
-
-@incollection{cgal:h-ma-15b
-, author = "Michael Hemmer and Sylvain Pion"
-, title = "Modular Arithmetic"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgModularArithmeticSummary"
-, year = 2015
-}
-
-@incollection{cgal:h-p-15b
-, author = "Michael Hemmer"
-, title = "Polynomial"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgPolynomialSummary"
-, year = 2015
-}
-
-@incollection{cgal:bht-ak-15b
-, author = "Eric Berberich and Michael Hemmer and Michael Kerber and Sylvain Lazard and Luis Pe{\~n}aranda and Monique Teillaud"
-, title = "Algebraic Kernel"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgAlgebraicKerneldSummary"
-, year = 2015
-}
-
-@incollection{cgal:h-msms-15b
-, author = "Michael Hoffmann"
-, title = "Monotone and Sorted Matrix Search"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgMatrixSearchSummary"
-, year = 2015
-}
-
-@incollection{cgal:fgsw-lqps-15b
-, author = "Kaspar Fischer and Bernd G{\"a}rtner and Sven Sch{\"o}nherr and Frans Wessendorp"
-, title = "Linear and Quadratic Programming Solver"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgQPSolverSummary"
-, year = 2015
-}
-
-@incollection{cgal:bfghhkps-lgk23-15b
-, author = "Herv{\'e} Br{\"o}nnimann and Andreas Fabri and Geert-Jan Giezeman and Susan Hert and Michael Hoffmann and Lutz Kettner and Sylvain Pion and Stefan Schirra"
-, title = "{2D} and {3D} Linear Geometry Kernel"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgKernel23Summary"
-, year = 2015
-}
-
-@incollection{cgal:s-gkd-15b
-, author = "Michael Seel"
-, title = "{dD} Geometry Kernel"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgKernelDSummary"
-, year = 2015
-}
-
-@incollection{cgal:cpt-cgk2-15b
-, author = "Pedro Machado Manh{\~a}es de Castro and Sylvain Pion and Monique Teillaud"
-, title = "{2D} Circular Geometry Kernel"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgCircularKernel2Summary"
-, year = 2015
-}
-
-@incollection{cgal:cclt-sgk3-15b
-, author = "Pedro Machado Manh{\~a}es de Castro and Fr{\'e}d{\'e}ric Cazals and S{\'e}bastien Loriot and Monique Teillaud"
-, title = "{3D} Spherical Geometry Kernel"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSphericalKernel3Summary"
-, year = 2015
-}
-
-@incollection{cgal:hs-chep2-15b
-, author = "Susan Hert and Stefan Schirra"
-, title = "{2D} Convex Hulls and Extreme Points"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgConvexHull2Summary"
-, year = 2015
-}
-
-@incollection{cgal:hs-ch3-15b
-, author = "Susan Hert and Stefan Schirra"
-, title = "{3D} Convex Hulls"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgConvexHull3Summary"
-, year = 2015
-}
-
-@incollection{cgal:hs-chdt3-15b
-, author = "Susan Hert and Michael Seel"
-, title = "{dD} Convex Hulls and Delaunay Triangulations"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgConvexHullDSummary"
-, year = 2015
-}
-
-@incollection{cgal:gw-p2-15b
-, author = "Geert-Jan Giezeman and Wieger Wesselink"
-, title = "{2D} Polygons"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgPolygon2Summary"
-, year = 2015
-}
-
-@incollection{cgal:fwzh-rbso2-15b
-, author = "Efi Fogel and Ophir Setter and Ron Wein and Guy Zucker and Baruch Zukerman and Dan Halperin"
-, title = "{2D} Regularized Boolean Set-Operations"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgBooleanSetOperations2Summary"
-, year = 2015
-}
-
-@incollection{cgal:s-bonp2-15b
-, author = "Michael Seel"
-, title = "{2D} Boolean Operations on Nef Polygons"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgNef2Summary"
-, year = 2015
-}
-
-@incollection{cgal:hk-bonpes2-15b
-, author = "Peter Hachenberger and Lutz Kettner"
-, title = "{2D} Boolean Operations on Nef Polygons Embedded on the Sphere"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgNefS2Summary"
-, year = 2015
-}
-
-@incollection{cgal:h-pp2-15b
-, author = "Susan Hert"
-, title = "{2D} Polygon Partitioning"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgPolygonPartitioning2Summary"
-, year = 2015
-}
-
-@incollection{cgal:c-sspo2-15b
-, author = "Fernando Cacciola"
-, title = "{2D} Straight Skeleton and Polygon Offsetting"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgStraightSkeleton2Summary"
-, year = 2015
-}
-
-@incollection{cgal:w-rms2-15b
-, author = "Ron Wein and Alon Baram and Eyal Flato and Efi Fogel and Michael Hemmer and Sebastian Morr"
-, title = "{2D} Minkowski Sums"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgMinkowskiSum2Summary"
-, year = 2015
-}
-
-@incollection{cgal:f-ps2-15b
-, author = "Andreas Fabri"
-, title = "{2D} Polyline Simplification"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgPolylineSimplification2Summary"
-, year = 2015
-}
-
-@incollection{hhb-visibility-2-15b
-, author = "Michael Hemmer and Kan Huang and Francisc Bungiu and Ning Xu"
-, title = "{2D} Visibility Computation"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgVisibility_2Summary"
-, year = 2015
-}
-
-@incollection{cgal:k-ps-15b
-, author = "Lutz Kettner"
-, title = "{3D} Polyhedral Surface"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgPolyhedronSummary"
-, year = 2015
-}
-
-@incollection{cgal:k-hds-15b
-, author = "Lutz Kettner"
-, title = "Halfedge Data Structures"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgHDSSummary"
-, year = 2015
-}
-
-@incollection{cgal:bsmf-sm-15b
-, author = "Mario Botsch and Daniel Sieger and Philipp Moeller and Andreas Fabri"
-, title = "Surface Mesh"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSurfaceMeshSummary"
-, year = 2015
-}
-
-@incollection{cgal:d-cm-15b
-, author = "Guillaume Damiand"
-, title = "Combinatorial Maps"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgCombinatorialMapsSummary"
-, year = 2015
-}
-
-@incollection{cgal:d-lcc-12-15b
-, author = "Guillaume Damiand"
-, title = "Linear Cell Complex"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgLinearCellComplexSummary"
-, year = 2015
-}
-
-@incollection{cgal:hk-bonp3-15b
-, author = "Peter Hachenberger and Lutz Kettner"
-, title = "{3D} Boolean Operations on Nef Polyhedra"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgNef3Summary"
-, year = 2015
-}
-
-@incollection{cgal:h-emspe-15b
-, author = "Peter Hachenberger"
-, title = "Convex Decomposition of Polyhedra"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgConvexDecomposition3Summary"
-, year = 2015
-}
-
-@incollection{cgal:h-msp3-15b
-, author = "Peter Hachenberger"
-, title = "{3D} Minkowski Sum of Polyhedra"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgMinkowskiSum3Summary"
-, year = 2015
-}
-
-@incollection{cgal:wfzh-a2-15b
-, author = "Ron Wein and Eric Berberich and Efi Fogel and Dan Halperin and Michael Hemmer and Oren Salzman and Baruch Zukerman"
-, title = "{2D} Arrangements"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgArrangement2Summary"
-, year = 2015
-}
-
-@incollection{cgal:wfz-ic2-15b
-, author = "Baruch Zukerman and Ron Wein and Efi Fogel"
-, title = "{2D} Intersection of Curves"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgIntersectionOfCurves2Summary"
-, year = 2015
-}
-
-@incollection{cgal:p-sr2-15b
-, author = "Eli Packer"
-, title = "{2D} Snap Rounding"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSnapRounding2Summary"
-, year = 2015
-}
-
-@incollection{cgal:w-e2-15b
-, author = "Ron Wein"
-, title = "{2D} Envelopes"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgEnvelope2Summary"
-, year = 2015
-}
-
-@incollection{cgal:mwz-e3-15b
-, author = "Dan Halperin and Michal Meyerovitch and Ron Wein and Baruch Zukerman"
-, title = "{3D} Envelopes"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgEnvelope3Summary"
-, year = 2015
-}
-
-@incollection{cgal:y-t2-15b
-, author = "Mariette Yvinec"
-, title = "{2D} Triangulation"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgTriangulation2Summary"
-, year = 2015
-}
-
-@incollection{cgal:py-tds2-15b
-, author = "Sylvain Pion and Mariette Yvinec"
-, title = "{2D} Triangulation Data Structure"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgTDS2Summary"
-, year = 2015
-}
-
-@incollection{cgal:k-pt2-13-15b
-, author = "Nico Kruithof"
-, title = "{2D} Periodic Triangulations"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgPeriodic2Triangulation2Summary"
-, year = 2015
-}
-
-@incollection{cgal:pt-t3-15b
-, author = "Cl{\'e}ment Jamin and Sylvain Pion and Monique Teillaud"
-, title = "{3D} Triangulations"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgTriangulation3Summary"
-, year = 2015
-}
-
-@incollection{cgal:pt-tds3-15b
-, author = "Cl{\'e}ment Jamin and Sylvain Pion and Monique Teillaud"
-, title = "{3D} Triangulation Data Structure"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgTDS3Summary"
-, year = 2015
-}
-
-@incollection{cgal:ct-pt3-15b
-, author = "Manuel Caroli and Monique Teillaud"
-, title = "{3D} Periodic Triangulations"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgPeriodic3Triangulation3Summary"
-, year = 2015
-}
-
-@incollection{cgal:hdj-t-15b
-, author = "Samuel Hornus and Olivier Devillers and Cl{\'e}ment Jamin"
-, title = "{dD} Triangulations"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgTriangulationsSummary"
-, year = 2015
-}
-
-@incollection{cgal:d-as2-15b
-, author = "Tran Kai Frank Da"
-, title = "{2D} Alpha Shapes"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgAlphaShape2Summary"
-, year = 2015
-}
-
-@incollection{cgal:dy-as3-15b
-, author = "Tran Kai Frank Da and S{\'e}bastien Loriot and Mariette Yvinec"
-, title = "{3D} Alpha Shapes"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgAlphaShapes3Summary"
-, year = 2015
-}
-
-@incollection{cgal:k-sdg2-15b
-, author = "Menelaos Karavelas"
-, title = "{2D} Segment Delaunay Graphs"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSegmentDelaunayGraph2Summary"
-, year = 2015
-}
-
-@incollection{cgal:cdp-sdglinf2-15b
-, author = "Panagiotis Cheilaris and Sandeep Kumar Dey and Evanthia Papadopoulou"
-, title = "L Infinity Segment Delaunay Graphs"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSDGLinfSummary"
-, year = 2015
-}
-
-@incollection{cgal:ky-ag2-15b
-, author = "Menelaos Karavelas and Mariette Yvinec"
-, title = "{2D} Apollonius Graphs (Delaunay Graphs of Disks)"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgApolloniusGraph2Summary"
-, year = 2015
-}
-
-@incollection{cgal:k-vda2-15b
-, author = "Menelaos Karavelas"
-, title = "{2D} Voronoi Diagram Adaptor"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgVoronoiDiagramAdaptor2Summary"
-, year = 2015
-}
-
-@incollection{cgal:r-ctm2-15b
-, author = "Laurent Rineau"
-, title = "{2D} Conforming Triangulations and Meshes"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgMesh2Summary"
-, year = 2015
-}
-
-@incollection{cgal:ry-smg-15b
-, author = "Laurent Rineau and Mariette Yvinec"
-, title = "{3D} Surface Mesh Generation"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSurfaceMesher3Summary"
-, year = 2015
-}
-
-@incollection{cgal:asg-srps-15b
-, author = "Pierre Alliez and Laurent Saboret and Ga{\"e}l Guennebaud"
-, title = "Surface Reconstruction from Point Sets"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSurfaceReconstructionFromPointSetsSummary"
-, year = 2015
-}
-
-@incollection{cgal:ssr3-15b
-, author = "Thijs van Lankveld"
-, title = "Scale-Space Surface Reconstruction"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgScaleSpaceReconstruction3Summary"
-, year = 2015
-}
-
-@incollection{cgal:dc-afsr-15b
-, author = "Tran Kai Frank Da and David Cohen-Steiner"
-, title = "Advancing Front Surface Reconstruction"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgAdvancingFrontSurfaceReconstructionSummary"
-, year = 2015
-}
-
-@incollection{cgal:k-ssm3-15b
-, author = "Nico Kruithof"
-, title = "{3D} Skin Surface Meshing"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSkinSurface3Summary"
-, year = 2015
-}
-
-@incollection{cgal:rty-m3-15b
-, author = "Pierre Alliez and Cl{\'e}ment Jamin and Laurent Rineau and St{\'e}phane Tayeb and Jane Tournois and Mariette Yvinec"
-, title = "{3D} Mesh Generation"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgMesh_3Summary"
-, year = 2015
-}
-
-@incollection{cgal:lty-pmp-15b
-, author = "S{\'e}bastien Loriot and Jane Tournois and Ilker O. Yaz"
-, title = "Polygon Mesh Processing"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgPolygonMeshProcessingSummary"
-, year = 2015
-}
-
-@incollection{cgal:s-ssm2-15b
-, author = "Le-Jeng Andy Shiue"
-, title = "{3D} Surface Subdivision Methods"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSurfaceSubdivisionMethods3Summary"
-, year = 2015
-}
-
-@incollection{cgal:y-smsimpl-15b
-, author = "Ilker O. Yaz and S{\'e}bastien Loriot"
-, title = "Triangulated Surface Mesh Segmentation"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSurfaceSegmentationSummary"
-, year = 2015
-}
-
-@incollection{cgal:c-tsms-12-15b
-, author = "Fernando Cacciola"
-, title = "Triangulated Surface Mesh Simplification"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSurfaceMeshSimplificationSummary"
-, year = 2015
-}
-
-@incollection{cgal:lsxy-tsmd-15b
-, author = "S{\'e}bastien Loriot and Olga Sorkine-Hornung and Yin Xu and Ilker O. Yaz"
-, title = "Triangulated Surface Mesh Deformation"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSurfaceModelingSummary"
-, year = 2015
-}
-
-@incollection{cgal:sal-pptsm2-15b
-, author = "Laurent Saboret and Pierre Alliez and Bruno L{\'e}vy"
-, title = "Planar Parameterization of Triangulated Surface Meshes"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSurfaceParameterizationSummary"
-, year = 2015
-}
-
-@incollection{cgal:klcdv-tsmsp-15b
-, author = "Stephen Kiazyk and S{\'e}bastien Loriot and {\'E}ric Colin de Verdi{\`e}re"
-, title = "Triangulated Surface Mesh Shortest Paths"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSurfaceMeshShortestPathSummary"
-, year = 2015
-}
-
-@incollection{cgal:glt-tsms-15b
-, author = "Xiang Gao and S{\'e}bastien Loriot and Andrea Tagliasacchi"
-, title = "Triangulated Surface Mesh Skeletonization"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgMeanCurvatureSkeleton3Summary"
-, year = 2015
-}
-
-@incollection{cgal:cp-arutsm-15b
-, author = "Marc Pouget and Fr{\'e}d{\'e}ric Cazals"
-, title = "Approximation of Ridges and Umbilics on Triangulated Surface Meshes"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgRidges_3Summary"
-, year = 2015
-}
-
-@incollection{cgal:pc-eldp-15b
-, author = "Marc Pouget and Fr{\'e}d{\'e}ric Cazals"
-, title = "Estimation of Local Differential Properties of Point-Sampled Surfaces"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgJet_fitting_3Summary"
-, year = 2015
-}
-
-@incollection{cgal:ass-psp-15b
-, author = "Pierre Alliez and Cl{\'e}ment Jamin and Quentin M{\'e}rigot and Jocelyn Meyron and Laurent Saboret and Nader Salman and Shihao Wu"
-, title = "Point Set Processing"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgPointSetProcessingSummary"
-, year = 2015
-}
-
-@incollection{cgal:ovja-pssd-15b
-, author = "Sven Oesau and Yannick Verdie and Cl{\'e}ment Jamin and Pierre Alliez"
-, title = "Point Set Shape Detection"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgPointSetShapeDetection3Summary"
-, year = 2015
-}
-
-@incollection{cgal:m-ps-15b
-, author = "Abdelkrim Mebarki"
-, title = "{2D} Placement of Streamlines"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgPlacementOfStreamlines2Summary"
-, year = 2015
-}
-
-@incollection{cgal:b-ss2-15b
-, author = "Matthias B{\"a}sken"
-, title = "{2D} Range and Neighbor Search"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgPointSet2Summary"
-, year = 2015
-}
-
-@incollection{cgal:f-isl-15b
-, author = "Andreas Fabri"
-, title = "Interval Skip List"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgIntervalSkipListSummary"
-, year = 2015
-}
-
-@incollection{cgal:tf-ssd-15b
-, author = "Hans Tangelder and Andreas Fabri"
-, title = "{dD} Spatial Searching"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSpatialSearchingDSummary"
-, year = 2015
-}
-
-@incollection{cgal:n-rstd-15b
-, author = "Gabriele Neyer"
-, title = "{dD} Range and Segment Trees"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgRangeSegmentTreesDSummary"
-, year = 2015
-}
-
-@incollection{cgal:kmz-isiobd-15b
-, author = "Lutz Kettner and Andreas Meyer and Afra Zomorodian"
-, title = "Intersecting Sequences of {dD} Iso-oriented Boxes"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgBoxIntersectionDSummary"
-, year = 2015
-}
-
-@incollection{cgal:atw-aabb-15b
-, author = "Pierre Alliez and St{\'e}phane Tayeb and Camille Wormser"
-, title = "{3D} Fast Intersection and Distance Computation"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgAABB_treeSummary"
-, year = 2015
-}
-
-@incollection{cgal:dd-ss-15b
-, author = "Christophe Delage and Olivier Devillers"
-, title = "Spatial Sorting"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgSpatialSortingSummary"
-, year = 2015
-}
-
-@incollection{cgal:fghhs-bv-15b
-, author = "Kaspar Fischer and Bernd G{\"a}rtner and Thomas Herrmann and Michael Hoffmann and Sven Sch{\"o}nherr"
-, title = "Bounding Volumes"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgBoundingVolumesSummary"
-, year = 2015
-}
-
-@incollection{cgal:hp-ia-15b
-, author = "Michael Hoffmann and Eli Packer"
-, title = "Inscribed Areas"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgInscribedAreasSummary"
-, year = 2015
-}
-
-@incollection{cgal:fghhs-od-15b
-, author = "Kaspar Fischer and Bernd G{\"a}rtner and Thomas Herrmann and Michael Hoffmann and Sven Sch{\"o}nherr"
-, title = "Optimal Distances"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgOptimalDistancesSummary"
-, year = 2015
-}
-
-@incollection{cgal:ap-pcad-15b
-, author = "Pierre Alliez and Sylvain Pion and Ankit Gupta"
-, title = "Principal Component Analysis"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgPrincipalComponentAnalysisDSummary"
-, year = 2015
-}
-
-@incollection{cgal:f-i-15b
-, author = "Julia Fl{\"o}totto"
-, title = "{2D} and Surface Function Interpolation"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgInterpolation2Summary"
-, year = 2015
-}
-
-@incollection{cgal:abha-gbc-15b
-, author = "Dmitry Anisimov and David Bommes and Kai Hormann and Pierre Alliez"
-, title = "{2D} Generalized Barycentric Coordinates"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgBarycentric_coordinates_2Summary"
-, year = 2015
-}
-
-@incollection{cgal:r-kds-15b
-, author = "Daniel Russel"
-, title = "Kinetic Data Structures"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgKdsSummary"
-, year = 2015
-}
-
-@incollection{cgal:r-kdsf-15b
-, author = "Daniel Russel"
-, title = "Kinetic Framework"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgKdsFrameworkSummary"
-, year = 2015
-}
-
-@incollection{cgal:hkpw-se-15b
-, author = "Michael Hoffmann and Lutz Kettner and Sylvain Pion and Ron Wein"
-, title = "STL Extensions for {CGAL}"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgStlExtensionSummary"
-, year = 2015
-}
-
-@incollection{cgal:cfw-cbgl-15b
-, author = "Andreas Fabri and Fernando Cacciola and Philipp Moeller and Ron Wein"
-, title = "{CGAL} and the {Boost} Graph Library"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgBGLSummary"
-, year = 2015
-}
-
-@incollection{cgal:fs-cbpm-15b
-, author = "Andreas Fabri and Laurent Saboret"
-, title = "{CGAL} and {Boost} Property Maps"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgProperty_mapSummary"
-, year = 2015
-}
-
-@incollection{cgal:dksy-hc-15b
-, author = "Olivier Devillers and Lutz Kettner and Sylvain Pion and Michael Seel and Mariette Yvinec"
-, title = "Handles and Circulators"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgHandlesAndCirculatorsSummary"
-, year = 2015
-}
-
-@incollection{cgal:dhhk-gog-15b
-, author = "Pedro M. M. de Castro and Olivier Devillers and Susan Hert and Michael Hoffmann and Lutz Kettner and Sven Sch{\"o}nherr and Alexandru Tifrea"
-, title = "Geometric Object Generators"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgGeneratorsSummary"
-, year = 2015
-}
-
-@incollection{cgal:kps-pthum-15b
-, author = "Lutz Kettner and Sylvain Pion and Michael Seel"
-, title = "Profiling tools, Hash Map, Union-find, Modifiers"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgProfilingToolsSummary"
-, year = 2015
-}
-
-@incollection{cgal:fgk-ios-12-15b
-, author = "Andreas Fabri and Geert-Jan Giezeman and Lutz Kettner"
-, title = "IO Streams"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgIOstreamsSummary"
-, year = 2015
-}
-
-@incollection{cgal:fp-gv-15b
-, author = "Andreas Fabri and Sylvain Pion"
-, title = "Geomview"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgGeomviewSummary"
-, year = 2015
-}
-
-@incollection{cgal:fr-cqgvf-15b
-, author = "Andreas Fabri and Laurent Rineau"
-, title = "{CGAL} and the {Qt} Graphics View Framework"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgGraphicsViewSummary"
-, year = 2015
-}
-
-@incollection{cgal:lp-gi-15b
-, author = "Olivier Devillers and S{\'e}bastien Loriot and Sylvain Pion"
-, title = "{CGAL} Ipelets"
-, publisher = "{CGAL Editorial Board}"
-, edition = "{4.7}"
-, booktitle = "{CGAL} User and Reference Manual"
-, url = "http://doc.cgal.org/4.7/Manual/packages.html#PkgCGALIpeletsSummary"
-, year = 2015
-}
diff --git a/biblio/how_to_cite_gudhi.bib b/biblio/how_to_cite_gudhi.bib
deleted file mode 100644
index 942f8d7e..00000000
--- a/biblio/how_to_cite_gudhi.bib
+++ /dev/null
@@ -1,142 +0,0 @@
-@book{gudhi:urm
-, title = "{GUDHI} User and Reference Manual"
-, author = "{The GUDHI Project}"
-, publisher = "{GUDHI Editorial Board}"
-, year = 2015
-, url = "http://gudhi.gforge.inria.fr/doc/latest/"
-}
-
-@incollection{gudhi:FilteredComplexes
-, author = "Cl\'ement Maria"
-, title = "Filtered Complexes"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group__simplex__tree.html"
-, year = 2015
-}
-
-@incollection{gudhi:PersistentCohomology
-, author = "Cl\'ement Maria"
-, title = "Persistent Cohomology"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group__persistent__cohomology.html"
-, year = 2015
-}
-
-@incollection{gudhi:Contraction
-, author = "David Salinas"
-, title = "Contraction"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group__contr.html"
-, year = 2015
-}
-
-@incollection{gudhi:SkeletonBlocker
-, author = "David Salinas"
-, title = "Skeleton-Blocker"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group__skbl.html"
-, year = 2015
-}
-
-@incollection{gudhi:AlphaComplex
-, author = "Vincent Rouvreau"
-, title = "Alpha complex"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group__alpha__complex.html"
-, year = 2015
-}
-
-@incollection{gudhi:CubicalComplex
-, author = "Pawel Dlotko"
-, title = "Cubical complex"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group__cubical__complex.html"
-, year = 2015
-}
-
-@incollection{gudhi:WitnessComplex
-, author = "Siargey Kachanovich"
-, title = "Witness complex"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group__witness__complex.html"
-, year = 2015
-}
-
-@incollection{gudhi:SubSampling
-, author = "Cl\'ement Jamin, Siargey Kachanovich"
-, title = "Subsampling"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group__subsampling.html"
-, year = 2016
-}
-
-@incollection{gudhi:SpatialSearching
-, author = "Cl\'ement Jamin"
-, title = "Spatial searching"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group__spatial__searching.html"
-, year = 2016
-}
-
-@incollection{gudhi:TangentialComplex
-, author = "Cl\'ement Jamin"
-, title = "Tangential complex"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group__tangential__complex.html"
-, year = 2016
-}
-
-@incollection{gudhi:RipsComplex
-, author = "Cl\'ement Maria, Pawel Dlotko, Vincent Rouvreau, Marc Glisse"
-, title = "Rips complex"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group__rips__complex.html"
-, year = 2016
-}
-
-@incollection{gudhi:BottleneckDistance
-, author = "Fran{{\c{c}}ois Godi"
-, title = "Bottleneck distance"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group__bottleneck__distance.html"
-, year = 2016
-}
-
-@incollection{gudhi:cython
-, author = "Vincent Rouvreau"
-, title = "Cython interface"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/python/latest/"
-, year = 2016
-}
-
-@incollection{gudhi:CoverComplex
-, author = "Mathieu Carri\`ere"
-, title = "Cover complex"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group__cover__complex.html"
-, year = 2017
-}
-
-@incollection{gudhi:PersistenceRepresentations
-, author = "Pawel Dlotko"
-, title = "Persistence representations"
-, publisher = "{GUDHI Editorial Board}"
-, booktitle = "{GUDHI} User and Reference Manual"
-, url = "http://gudhi.gforge.inria.fr/doc/latest/group___persistence__representations.html"
-, year = 2017
-}
diff --git a/cmake/modules/FindEigen3.cmake b/cmake/modules/FindEigen3.cmake
deleted file mode 100644
index 70c07dfb..00000000
--- a/cmake/modules/FindEigen3.cmake
+++ /dev/null
@@ -1,86 +0,0 @@
-# - Try to find Eigen3 lib
-#
-# This module supports requiring a minimum version, e.g. you can do
-# find_package(Eigen3 3.1.2)
-# to require version 3.1.2 or newer of Eigen3.
-#
-# Once done this will define
-#
-# EIGEN3_FOUND - system has eigen lib with correct version
-# EIGEN3_INCLUDE_DIR - the eigen include directory
-# EIGEN3_VERSION - eigen version
-
-# Copyright (c) 2006, 2007 Montel Laurent, <montel@kde.org>
-# Copyright (c) 2008, 2009 Gael Guennebaud, <g.gael@free.fr>
-# Copyright (c) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
-# Redistribution and use is allowed according to the terms of the 2-clause BSD license.
-
-include(FindPackageHandleStandardArgs)
-
-if(NOT Eigen3_FIND_VERSION)
- if(NOT Eigen3_FIND_VERSION_MAJOR)
- set(Eigen3_FIND_VERSION_MAJOR 2)
- endif(NOT Eigen3_FIND_VERSION_MAJOR)
- if(NOT Eigen3_FIND_VERSION_MINOR)
- set(Eigen3_FIND_VERSION_MINOR 91)
- endif(NOT Eigen3_FIND_VERSION_MINOR)
- if(NOT Eigen3_FIND_VERSION_PATCH)
- set(Eigen3_FIND_VERSION_PATCH 0)
- endif(NOT Eigen3_FIND_VERSION_PATCH)
-
- set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}")
-endif(NOT Eigen3_FIND_VERSION)
-
-macro(_eigen3_get_version)
- file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)
-
- string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}")
- set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}")
- string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}")
- set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}")
- string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}")
- set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}")
-
- set(EIGEN3_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION})
-endmacro(_eigen3_get_version)
-
-set(EIGEN3_USE_FILE "UseEigen3")
-
-if (EIGEN3_INCLUDE_DIR)
-
- if (EXISTS ${EIGEN3_INCLUDE_DIR}/signature_of_eigen3_matrix_library)
- # in cache already and valid
- _eigen3_get_version()
- set(EIGEN3_FOUND ${EIGEN3_VERSION_OK})
-
- find_package_handle_standard_args(Eigen3
- REQUIRED_VARS EIGEN3_INCLUDE_DIR
- VERSION_VAR EIGEN3_VERSION)
-
- else()
- message(STATUS "Eigen3 path specified in cmake variable EIGEN3_INCLUDE_DIR is "
- "set to ${EIGEN3_INCLUDE_DIR}, but that path does not contains the file "
- "signature_of_eigen3_matrix_library and is considered as invalid.")
- endif()
-
-
-
-else (EIGEN3_INCLUDE_DIR)
-
- find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library
- HINTS ENV EIGEN3_INC_DIR
- ENV EIGEN3_DIR
- PATHS ${KDE4_INCLUDE_DIR}
- PATH_SUFFIXES include eigen3 eigen
- DOC "Directory containing the Eigen3 header files"
- )
-
- if(EIGEN3_INCLUDE_DIR)
- _eigen3_get_version()
- endif(EIGEN3_INCLUDE_DIR)
-
- find_package_handle_standard_args(Eigen3
- REQUIRED_VARS EIGEN3_INCLUDE_DIR
- VERSION_VAR EIGEN3_VERSION)
-
-endif(EIGEN3_INCLUDE_DIR)
diff --git a/cmake/modules/FindGMP.cmake b/cmake/modules/FindGMP.cmake
deleted file mode 100644
index de57646f..00000000
--- a/cmake/modules/FindGMP.cmake
+++ /dev/null
@@ -1,56 +0,0 @@
-# - Try to find the GMP libraries
-# This module defines:
-# GMP_FOUND - system has GMP lib
-# GMP_INCLUDE_DIR - the GMP include directory
-# GMP_LIBRARIES_DIR - directory where the GMP libraries are located
-# GMP_LIBRARIES - Link these to use GMP
-# GMP_IN_CGAL_AUXILIARY - TRUE if the GMP found is the one distributed with CGAL in the auxiliary folder
-
-# TODO: support MacOSX
-
-include(FindPackageHandleStandardArgs)
-#include(CGAL_GeneratorSpecificSettings)
-
-if(GMP_INCLUDE_DIR)
- set(GMP_in_cache TRUE)
-else()
- set(GMP_in_cache FALSE)
-endif()
-if(NOT GMP_LIBRARIES)
- set(GMP_in_cache FALSE)
-endif()
-
-# Is it already configured?
-if (GMP_in_cache)
-
- set(GMP_FOUND TRUE)
-
-else()
-
- find_path(GMP_INCLUDE_DIR
- NAMES gmp.h
- HINTS ENV GMP_INC_DIR
- ENV GMP_DIR
- PATH_SUFFIXES include
- DOC "The directory containing the GMP header files"
- )
-
- find_library(GMP_LIBRARIES NAMES gmp libgmp-10
- HINTS ENV GMP_LIB_DIR
- ENV GMP_DIR
- PATH_SUFFIXES lib
- DOC "Path to the GMP library"
- )
-
- if ( GMP_LIBRARIES )
- get_filename_component(GMP_LIBRARIES_DIR ${GMP_LIBRARIES} PATH CACHE )
- endif()
-
- # Attempt to load a user-defined configuration for GMP if couldn't be found
- if ( NOT GMP_INCLUDE_DIR OR NOT GMP_LIBRARIES_DIR )
- include( GMPConfig OPTIONAL )
- endif()
-
- find_package_handle_standard_args(GMP "DEFAULT_MSG" GMP_LIBRARIES GMP_INCLUDE_DIR)
-
-endif()
diff --git a/cmake/modules/FindGMPXX.cmake b/cmake/modules/FindGMPXX.cmake
deleted file mode 100644
index dda302c0..00000000
--- a/cmake/modules/FindGMPXX.cmake
+++ /dev/null
@@ -1,48 +0,0 @@
-# - Try to find the GMPXX libraries
-# This module defines:
-# GMPXX_FOUND - system has GMPXX lib
-# GMPXX_INCLUDE_DIR - the GMPXX include directory
-# GMPXX_LIBRARIES - Libraries needed to use GMPXX
-
-# TODO: support Windows and MacOSX
-
-# GMPXX needs GMP
-
-find_package( GMP QUIET )
-
-if(GMP_FOUND)
-
- if (GMPXX_INCLUDE_DIR AND GMPXX_LIBRARIES)
- # Already in cache, be silent
- set(GMPXX_FIND_QUIETLY TRUE)
- endif()
-
- find_path(GMPXX_INCLUDE_DIR NAMES gmpxx.h
- HINTS ENV GMPXX_INC_DIR
- ENV GMPXX_DIR
- ${GMP_INCLUDE_DIR_SEARCH}
- PATH_SUFFIXES include
- DOC "The directory containing the GMPXX include files"
- )
-
- find_library(GMPXX_LIBRARIES NAMES gmpxx
- HINTS ENV GMPXX_LIB_DIR
- ENV GMPXX_DIR
- ${GMP_LIBRARIES_DIR_SEARCH}
- PATH_SUFFIXES lib
- DOC "Path to the GMPXX library"
- )
-
- if ( GMPXX_LIBRARIES )
- get_filename_component(GMPXX_LIBRARIES_DIR ${GMPXX_LIBRARIES} PATH CACHE )
- endif()
-
- include(FindPackageHandleStandardArgs)
-
- find_package_handle_standard_args(GMPXX "DEFAULT_MSG" GMPXX_LIBRARIES GMPXX_INCLUDE_DIR )
-
-else()
-
- message( FATAL_ERROR "GMPXX needs GMP")
-
-endif()
diff --git a/cmake/modules/FindQGLViewer.cmake b/cmake/modules/FindQGLViewer.cmake
deleted file mode 100644
index 56c1b3cf..00000000
--- a/cmake/modules/FindQGLViewer.cmake
+++ /dev/null
@@ -1,61 +0,0 @@
-# - Try to find QGLViewer
-# Once done this will define
-#
-# QGLVIEWER_FOUND - system has QGLViewer
-# QGLVIEWER_INCLUDE_DIR - the QGLViewer include directory
-# QGLVIEWER_LIBRARIES - Link these to use QGLViewer
-# QGLVIEWER_DEFINITIONS - Compiler switches required for using QGLViewer
-#
-
-find_path(QGLVIEWER_INCLUDE_DIR
- NAMES QGLViewer/qglviewer.h
- PATHS /usr/include
- /usr/local/include
- ENV QGLVIEWERROOT
- )
-
-find_library(QGLVIEWER_LIBRARY_RELEASE
- NAMES qglviewer-qt5 QGLViewer-qt5 qglviewer QGLViewer QGLViewer2
- PATHS /usr/lib
- /usr/local/lib
- ENV QGLVIEWERROOT
- ENV LD_LIBRARY_PATH
- ENV LIBRARY_PATH
- PATH_SUFFIXES QGLViewer QGLViewer/release
- )
-
-find_library(QGLVIEWER_LIBRARY_DEBUG
- NAMES dqglviewer dQGLViewer dQGLViewer2 QGLViewerd2
- PATHS /usr/lib
- /usr/local/lib
- ENV QGLVIEWERROOT
- ENV LD_LIBRARY_PATH
- ENV LIBRARY_PATH
- PATH_SUFFIXES QGLViewer QGLViewer/debug
- )
-
-if(QGLVIEWER_LIBRARY_RELEASE)
- if(QGLVIEWER_LIBRARY_DEBUG)
- set(QGLVIEWER_LIBRARIES_ optimized ${QGLVIEWER_LIBRARY_RELEASE} debug ${QGLVIEWER_LIBRARY_DEBUG})
- else()
- set(QGLVIEWER_LIBRARIES_ ${QGLVIEWER_LIBRARY_RELEASE})
- endif()
-
- set(QGLVIEWER_LIBRARIES ${QGLVIEWER_LIBRARIES_} CACHE FILEPATH "The QGLViewer library")
-
-endif()
-
-IF(QGLVIEWER_INCLUDE_DIR AND QGLVIEWER_LIBRARIES)
- SET(QGLVIEWER_FOUND TRUE)
-ENDIF(QGLVIEWER_INCLUDE_DIR AND QGLVIEWER_LIBRARIES)
-
-IF(QGLVIEWER_FOUND)
- IF(NOT QGLViewer_FIND_QUIETLY)
- MESSAGE(STATUS "Found QGLViewer: ${QGLVIEWER_LIBRARIES}")
- ENDIF(NOT QGLViewer_FIND_QUIETLY)
-ELSE(QGLVIEWER_FOUND)
- IF(QGLViewer_FIND_REQUIRED)
- MESSAGE(FATAL_ERROR "Could not find QGLViewer")
- ENDIF(QGLViewer_FIND_REQUIRED)
-ENDIF(QGLVIEWER_FOUND)
-
diff --git a/cmake/modules/FindTBB.cmake b/cmake/modules/FindTBB.cmake
deleted file mode 100644
index 13f4d929..00000000
--- a/cmake/modules/FindTBB.cmake
+++ /dev/null
@@ -1,425 +0,0 @@
-# Locate Intel Threading Building Blocks include paths and libraries
-# FindTBB.cmake can be found at https://code.google.com/p/findtbb/
-# Written by Hannes Hofmann <hannes.hofmann _at_ informatik.uni-erlangen.de>
-# Improvements by Gino van den Bergen <gino _at_ dtecta.com>,
-# Florian Uhlig <F.Uhlig _at_ gsi.de>,
-# Jiri Marsik <jiri.marsik89 _at_ gmail.com>
-
-# The MIT License
-#
-# Copyright (c) 2011 Hannes Hofmann
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-# GvdB: This module uses the environment variable TBB_ARCH_PLATFORM which defines architecture and compiler.
-# e.g. "ia32/vc8" or "em64t/cc4.1.0_libc2.4_kernel2.6.16.21"
-# TBB_ARCH_PLATFORM is set by the build script tbbvars[.bat|.sh|.csh], which can be found
-# in the TBB installation directory (TBB_INSTALL_DIR).
-#
-# GvdB: Mac OS X distribution places libraries directly in lib directory.
-#
-# For backwards compatibility, you may explicitely set the CMake variables TBB_ARCHITECTURE and TBB_COMPILER.
-# TBB_ARCHITECTURE [ ia32 | em64t | itanium ]
-# which architecture to use
-# TBB_COMPILER e.g. vc9 or cc3.2.3_libc2.3.2_kernel2.4.21 or cc4.0.1_os10.4.9
-# which compiler to use (detected automatically on Windows)
-
-# This module respects
-# TBB_INSTALL_DIR or $ENV{TBB21_INSTALL_DIR} or $ENV{TBB_INSTALL_DIR}
-
-# This module defines
-# TBB_INCLUDE_DIRS, where to find task_scheduler_init.h, etc.
-# TBB_LIBRARY_DIRS, where to find TBB libraries
-# TBB_INSTALL_DIR, the base TBB install directory.
-# TBB_LIBRARIES, all the following TBB libraries (both release and debug versions, using "optimized" and "debug" CMake keywords). Note that if the debug versions are not found, the release versions will be used instead for the debug mode.
-# TBB_RELEASE_LIBRARY, the TBB release library
-# TBB_MALLOC_RELEASE_LIBRARY, the TBB release malloc library
-# TBB_DEBUG_LIBRARY, the TBB debug library
-# TBB_MALLOC_DEBUG_LIBRARY, the TBB debug malloc library
-# TBB_FOUND, If false, don't try to use TBB.
-# TBB_INTERFACE_VERSION, as defined in tbb/tbb_stddef.h
-# TBB_MALLOCPROXY_DEBUG_LIBRARY, the TBB debug malloc_proxy library (not included in TBB_LIBRARIES since it's optionnal)
-# TBB_MALLOCPROXY_RELEASE_LIBRARY, the TBB release malloc_proxy library (not included in TBB_LIBRARIES since it's optionnal)
-
-include(CheckCXXSourceCompiles)
-
-# Usage:
-# try_TBB_with_pthread(<result_var_name> [additional linker args...])
-function(try_TBB_with_pthread result_var)
- set(TBB_try_ts_source "
- #include <tbb/enumerable_thread_specific.h>
- int main() {
- tbb::enumerable_thread_specific<
- bool*,
- tbb::cache_aligned_allocator<bool*>,
- tbb::ets_key_per_instance> grid;
- }
- ")
- set(CMAKE_REQUIRED_LIBRARIES ${ALL_TBB_LIBRARIES} ${ARGN})
- set(CMAKE_REQUIRED_INCLUDES ${TBB_INCLUDE_DIR})
- check_cxx_source_compiles("${TBB_try_ts_source}" ${result_var})
- set(${result_var} ${${result_var}} PARENT_SCOPE)
-endfunction(try_TBB_with_pthread)
-
-if (WIN32)
- # has em64t/vc8 em64t/vc9
- # has ia32/vc7.1 ia32/vc8 ia32/vc9
- set(_TBB_DEFAULT_INSTALL_DIR "C:/Program Files/Intel/TBB" "C:/Program Files (x86)/Intel/TBB")
- set(_TBB_LIB_RELEASE_NAME "tbb")
- set(_TBB_LIB_MALLOC_RELEASE_NAME "${_TBB_LIB_RELEASE_NAME}malloc")
- set(_TBB_LIB_MALLOCPROXY_RELEASE_NAME "${_TBB_LIB_RELEASE_NAME}malloc_proxy")
- set(_TBB_LIB_DEBUG_NAME "${_TBB_LIB_RELEASE_NAME}_debug")
- set(_TBB_LIB_MALLOC_DEBUG_NAME "${_TBB_LIB_MALLOC_RELEASE_NAME}_debug")
- set(_TBB_LIB_MALLOCPROXY_DEBUG_NAME "${_TBB_LIB_MALLOCPROXY_RELEASE_NAME}_debug")
- if (MSVC71)
- set (_TBB_COMPILER "vc7.1")
- endif(MSVC71)
- if (MSVC80)
- set(_TBB_COMPILER "vc8")
- endif(MSVC80)
- if (MSVC90)
- set(_TBB_COMPILER "vc9")
- endif(MSVC90)
- if(MSVC10)
- set(_TBB_COMPILER "vc10")
- endif(MSVC10)
- if(MSVC11)
- set(_TBB_COMPILER "vc11")
- endif(MSVC11)
- if(MSVC12)
- set(_TBB_COMPILER "vc12")
- endif(MSVC12)
- #note there was no MSVC13
- if(MSVC14)
- set(_TBB_COMPILER "vc14")
- endif(MSVC14)
- # Todo: add other Windows compilers such as ICL.
- set(_TBB_ARCHITECTURE ${TBB_ARCHITECTURE})
-endif (WIN32)
-
-if (UNIX)
- if (APPLE)
- # MAC
- set(_TBB_DEFAULT_INSTALL_DIR "/Library/Frameworks/Intel_TBB.framework/Versions")
- # libs: libtbb.dylib, libtbbmalloc.dylib, *_debug
- set(_TBB_LIB_RELEASE_NAME "tbb")
- set(_TBB_LIB_MALLOC_RELEASE_NAME "${_TBB_LIB_RELEASE_NAME}malloc")
- #set(_TBB_LIB_MALLOCPROXY_RELEASE_NAME "${_TBB_LIB_RELEASE_NAME}malloc_proxy")
- set(_TBB_LIB_DEBUG_NAME "${_TBB_LIB_RELEASE_NAME}_debug")
- set(_TBB_LIB_MALLOC_DEBUG_NAME "${_TBB_LIB_MALLOC_RELEASE_NAME}_debug")
- #set(_TBB_LIB_MALLOCPROXY_DEBUG_NAME "${_TBB_LIB_MALLOCPROXY_RELEASE_NAME}_debug")
- # default flavor on apple: ia32/cc4.0.1_os10.4.9
- # Jiri: There is no reason to presume there is only one flavor and
- # that user's setting of variables should be ignored.
- if(NOT TBB_COMPILER)
- set(_TBB_COMPILER "cc4.0.1_os10.4.9")
- elseif (NOT TBB_COMPILER)
- set(_TBB_COMPILER ${TBB_COMPILER})
- endif(NOT TBB_COMPILER)
- if(NOT TBB_ARCHITECTURE)
- set(_TBB_ARCHITECTURE "ia32")
- elseif(NOT TBB_ARCHITECTURE)
- set(_TBB_ARCHITECTURE ${TBB_ARCHITECTURE})
- endif(NOT TBB_ARCHITECTURE)
- else (APPLE)
- # LINUX
- set(_TBB_DEFAULT_INSTALL_DIR "/opt/intel/tbb" "/usr/local/include" "/usr/include")
- set(_TBB_LIB_RELEASE_NAME "tbb")
- set(_TBB_LIB_MALLOC_RELEASE_NAME "${_TBB_LIB_RELEASE_NAME}malloc")
- set(_TBB_LIB_MALLOCPROXY_RELEASE_NAME "${_TBB_LIB_RELEASE_NAME}malloc_proxy")
- set(_TBB_LIB_DEBUG_NAME "${_TBB_LIB_RELEASE_NAME}_debug")
- set(_TBB_LIB_MALLOC_DEBUG_NAME "${_TBB_LIB_MALLOC_RELEASE_NAME}_debug")
- set(_TBB_LIB_MALLOCPROXY_DEBUG_NAME "${_TBB_LIB_MALLOCPROXY_RELEASE_NAME}_debug")
- # has em64t/cc3.2.3_libc2.3.2_kernel2.4.21 em64t/cc3.3.3_libc2.3.3_kernel2.6.5 em64t/cc3.4.3_libc2.3.4_kernel2.6.9 em64t/cc4.1.0_libc2.4_kernel2.6.16.21
- # has ia32/*
- # has itanium/*
- set(_TBB_COMPILER ${TBB_COMPILER})
- set(_TBB_ARCHITECTURE ${TBB_ARCHITECTURE})
- endif (APPLE)
-endif (UNIX)
-
-if (CMAKE_SYSTEM MATCHES "SunOS.*")
-# SUN
-# not yet supported
-# has em64t/cc3.4.3_kernel5.10
-# has ia32/*
-endif (CMAKE_SYSTEM MATCHES "SunOS.*")
-
-
-#-- Clear the public variables
-set (TBB_FOUND "NO")
-
-
-#-- Find TBB install dir and set ${_TBB_INSTALL_DIR} and cached ${TBB_INSTALL_DIR}
-# first: use CMake variable TBB_INSTALL_DIR
-if (TBB_INSTALL_DIR)
- set (_TBB_INSTALL_DIR ${TBB_INSTALL_DIR})
-endif (TBB_INSTALL_DIR)
-# second: use environment variable
-if (NOT _TBB_INSTALL_DIR)
- if (NOT "$ENV{TBBROOT}" STREQUAL "")
- set (_TBB_INSTALL_DIR $ENV{TBBROOT})
- endif (NOT "$ENV{TBBROOT}" STREQUAL "")
- if (NOT "$ENV{TBB_INSTALL_DIR}" STREQUAL "")
- set (_TBB_INSTALL_DIR $ENV{TBB_INSTALL_DIR})
- endif (NOT "$ENV{TBB_INSTALL_DIR}" STREQUAL "")
- # Intel recommends setting TBB21_INSTALL_DIR
- if (NOT "$ENV{TBB21_INSTALL_DIR}" STREQUAL "")
- set (_TBB_INSTALL_DIR $ENV{TBB21_INSTALL_DIR})
- endif (NOT "$ENV{TBB21_INSTALL_DIR}" STREQUAL "")
- if (NOT "$ENV{TBB22_INSTALL_DIR}" STREQUAL "")
- set (_TBB_INSTALL_DIR $ENV{TBB22_INSTALL_DIR})
- endif (NOT "$ENV{TBB22_INSTALL_DIR}" STREQUAL "")
- if (NOT "$ENV{TBB30_INSTALL_DIR}" STREQUAL "")
- set (_TBB_INSTALL_DIR $ENV{TBB30_INSTALL_DIR})
- endif (NOT "$ENV{TBB30_INSTALL_DIR}" STREQUAL "")
-endif (NOT _TBB_INSTALL_DIR)
-# third: try to find path automatically
-if (NOT _TBB_INSTALL_DIR)
- if (_TBB_DEFAULT_INSTALL_DIR)
- set (_TBB_INSTALL_DIR ${_TBB_DEFAULT_INSTALL_DIR})
- endif (_TBB_DEFAULT_INSTALL_DIR)
-endif (NOT _TBB_INSTALL_DIR)
-# sanity check
-if (NOT _TBB_INSTALL_DIR)
- message ("ERROR: Unable to find Intel TBB install directory. ${_TBB_INSTALL_DIR}")
-else (NOT _TBB_INSTALL_DIR)
-# finally: set the cached CMake variable TBB_INSTALL_DIR
-if (NOT TBB_INSTALL_DIR)
- set (TBB_INSTALL_DIR ${_TBB_INSTALL_DIR} CACHE PATH "Intel TBB install directory")
- mark_as_advanced(TBB_INSTALL_DIR)
-endif (NOT TBB_INSTALL_DIR)
-
-
-#-- A macro to rewrite the paths of the library. This is necessary, because
-# find_library() always found the em64t/vc9 version of the TBB libs
-macro(TBB_CORRECT_LIB_DIR var_name)
-# if (NOT "${_TBB_ARCHITECTURE}" STREQUAL "em64t")
- string(REPLACE em64t "${_TBB_ARCHITECTURE}" ${var_name} ${${var_name}})
-# endif (NOT "${_TBB_ARCHITECTURE}" STREQUAL "em64t")
- string(REPLACE ia32 "${_TBB_ARCHITECTURE}" ${var_name} ${${var_name}})
- string(REGEX REPLACE "vc[0-9]+(\.[0-9]+)?" "${_TBB_COMPILER}" ${var_name} ${${var_name}})
-endmacro(TBB_CORRECT_LIB_DIR var_content)
-
-
-#-- Look for include directory and set ${TBB_INCLUDE_DIR}
-set (TBB_INC_SEARCH_DIR ${_TBB_INSTALL_DIR}/include)
-# Jiri: tbbvars now sets the CPATH environment variable to the directory
-# containing the headers.
-# LR: search first with NO_DEFAULT_PATH...
-find_path(TBB_INCLUDE_DIR
- tbb/task_scheduler_init.h
- PATHS ${TBB_INC_SEARCH_DIR} ENV CPATH
- NO_DEFAULT_PATH
-)
-if(NOT TBB_INCLUDE_DIR)
-# LR: ... and then search again with NO_DEFAULT_PATH if nothing was found in
-# hinted paths
- find_path(TBB_INCLUDE_DIR
- tbb/task_scheduler_init.h
- PATHS ${TBB_INC_SEARCH_DIR} ENV CPATH
- )
-endif()
-mark_as_advanced(TBB_INCLUDE_DIR)
-
-
-#-- Look for libraries
-# GvdB: $ENV{TBB_ARCH_PLATFORM} is set by the build script tbbvars[.bat|.sh|.csh]
-if (NOT $ENV{TBB_ARCH_PLATFORM} STREQUAL "")
- set (_TBB_LIBRARY_DIR
- ${_TBB_INSTALL_DIR}/lib/$ENV{TBB_ARCH_PLATFORM}
- ${_TBB_INSTALL_DIR}/$ENV{TBB_ARCH_PLATFORM}/lib
- )
-endif (NOT $ENV{TBB_ARCH_PLATFORM} STREQUAL "")
-# Jiri: This block isn't mutually exclusive with the previous one
-# (hence no else), instead I test if the user really specified
-# the variables in question.
-if ((NOT ${TBB_ARCHITECTURE} STREQUAL "") AND (NOT ${TBB_COMPILER} STREQUAL ""))
- # HH: deprecated
- message(STATUS "[Warning] FindTBB.cmake: The use of TBB_ARCHITECTURE and TBB_COMPILER is deprecated and may not be supported in future versions. Please set \$ENV{TBB_ARCH_PLATFORM} (using tbbvars.[bat|csh|sh]).")
- # Jiri: It doesn't hurt to look in more places, so I store the hints from
- # ENV{TBB_ARCH_PLATFORM} and the TBB_ARCHITECTURE and TBB_COMPILER
- # variables and search them both.
- set (_TBB_LIBRARY_DIR "${_TBB_INSTALL_DIR}/${_TBB_ARCHITECTURE}/${_TBB_COMPILER}/lib" ${_TBB_LIBRARY_DIR})
-endif ((NOT ${TBB_ARCHITECTURE} STREQUAL "") AND (NOT ${TBB_COMPILER} STREQUAL ""))
-
-# GvdB: Mac OS X distribution places libraries directly in lib directory.
-list(APPEND _TBB_LIBRARY_DIR ${_TBB_INSTALL_DIR}/lib)
-
-# Jiri: No reason not to check the default paths. From recent versions,
-# tbbvars has started exporting the LIBRARY_PATH and LD_LIBRARY_PATH
-# variables, which now point to the directories of the lib files.
-# It all makes more sense to use the ${_TBB_LIBRARY_DIR} as a HINTS
-# argument instead of the implicit PATHS as it isn't hard-coded
-# but computed by system introspection. Searching the LIBRARY_PATH
-# and LD_LIBRARY_PATH environment variables is now even more important
-# that tbbvars doesn't export TBB_ARCH_PLATFORM and it facilitates
-# the use of TBB built from sources.
-# LR: search first with NO_DEFAULT_PATH...
-find_library(TBB_RELEASE_LIBRARY ${_TBB_LIB_RELEASE_NAME} HINTS ${_TBB_LIBRARY_DIR}
- PATHS ENV LIBRARY_PATH ENV LD_LIBRARY_PATH NO_DEFAULT_PATH)
-find_library(TBB_MALLOC_RELEASE_LIBRARY ${_TBB_LIB_MALLOC_RELEASE_NAME} HINTS ${_TBB_LIBRARY_DIR}
- PATHS ENV LIBRARY_PATH ENV LD_LIBRARY_PATH NO_DEFAULT_PATH)
-find_library(TBB_MALLOCPROXY_RELEASE_LIBRARY ${_TBB_LIB_MALLOCPROXY_RELEASE_NAME} HINTS ${_TBB_LIBRARY_DIR}
- PATHS ENV LIBRARY_PATH ENV LD_LIBRARY_PATH NO_DEFAULT_PATH)
-if(NOT TBB_RELEASE_LIBRARY OR NOT TBB_MALLOC_RELEASE_LIBRARY OR NOT TBB_MALLOCPROXY_RELEASE_LIBRARY)
-# LR: ... and then search again with NO_DEFAULT_PATH if nothing was found
-# in hinted paths
- find_library(TBB_RELEASE_LIBRARY ${_TBB_LIB_RELEASE_NAME} HINTS ${_TBB_LIBRARY_DIR}
- PATHS ENV LIBRARY_PATH ENV LD_LIBRARY_PATH)
- find_library(TBB_MALLOC_RELEASE_LIBRARY ${_TBB_LIB_MALLOC_RELEASE_NAME} HINTS ${_TBB_LIBRARY_DIR}
- PATHS ENV LIBRARY_PATH ENV LD_LIBRARY_PATH)
- find_library(TBB_MALLOCPROXY_RELEASE_LIBRARY ${_TBB_LIB_MALLOCPROXY_RELEASE_NAME} HINTS ${_TBB_LIBRARY_DIR}
- PATHS ENV LIBRARY_PATH ENV LD_LIBRARY_PATH)
-endif()
-
-#Extract path from TBB_RELEASE_LIBRARY name
-get_filename_component(TBB_RELEASE_LIBRARY_DIR ${TBB_RELEASE_LIBRARY} PATH)
-
-#TBB_CORRECT_LIB_DIR(TBB_RELEASE_LIBRARY)
-#TBB_CORRECT_LIB_DIR(TBB_MALLOC_RELEASE_LIBRARY)
-#TBB_CORRECT_LIB_DIR(TBB_MALLOCPROXY_RELEASE_LIBRARY)
-mark_as_advanced(TBB_RELEASE_LIBRARY TBB_MALLOC_RELEASE_LIBRARY TBB_MALLOCPROXY_RELEASE_LIBRARY)
-
-#-- Look for debug libraries
-# Jiri: Changed the same way as for the release libraries.
-find_library(TBB_DEBUG_LIBRARY ${_TBB_LIB_DEBUG_NAME} HINTS ${_TBB_LIBRARY_DIR}
- PATHS ENV LIBRARY_PATH ENV LD_LIBRARY_PATH NO_DEFAULT_PATH)
-find_library(TBB_MALLOC_DEBUG_LIBRARY ${_TBB_LIB_MALLOC_DEBUG_NAME} HINTS ${_TBB_LIBRARY_DIR}
- PATHS ENV LIBRARY_PATH ENV LD_LIBRARY_PATH NO_DEFAULT_PATH)
-find_library(TBB_MALLOCPROXY_DEBUG_LIBRARY ${_TBB_LIB_MALLOCPROXY_DEBUG_NAME} HINTS ${_TBB_LIBRARY_DIR}
- PATHS ENV LIBRARY_PATH ENV LD_LIBRARY_PATH NO_DEFAULT_PATH)
-if(NOT TBB_DEBUG_LIBRARY OR NOT TBB_MALLOC_DEBUG_LIBRARY OR NOT TBB_MALLOCPROXY_DEBUG_LIBRARY)
- find_library(TBB_DEBUG_LIBRARY ${_TBB_LIB_DEBUG_NAME} HINTS ${_TBB_LIBRARY_DIR}
- PATHS ENV LIBRARY_PATH ENV LD_LIBRARY_PATH)
- find_library(TBB_MALLOC_DEBUG_LIBRARY ${_TBB_LIB_MALLOC_DEBUG_NAME} HINTS ${_TBB_LIBRARY_DIR}
- PATHS ENV LIBRARY_PATH ENV LD_LIBRARY_PATH)
- find_library(TBB_MALLOCPROXY_DEBUG_LIBRARY ${_TBB_LIB_MALLOCPROXY_DEBUG_NAME} HINTS ${_TBB_LIBRARY_DIR}
- PATHS ENV LIBRARY_PATH ENV LD_LIBRARY_PATH)
-endif()
-
-# Jiri: Self-built TBB stores the debug libraries in a separate directory.
-# Extract path from TBB_DEBUG_LIBRARY name
-get_filename_component(TBB_DEBUG_LIBRARY_DIR ${TBB_DEBUG_LIBRARY} PATH)
-
-#TBB_CORRECT_LIB_DIR(TBB_DEBUG_LIBRARY)
-#TBB_CORRECT_LIB_DIR(TBB_MALLOC_DEBUG_LIBRARY)
-#TBB_CORRECT_LIB_DIR(TBB_MALLOCPROXY_DEBUG_LIBRARY)
-mark_as_advanced(TBB_DEBUG_LIBRARY TBB_MALLOC_DEBUG_LIBRARY TBB_MALLOCPROXY_DEBUG_LIBRARY)
-
-if (TBB_INCLUDE_DIR)
- if (TBB_RELEASE_LIBRARY)
- set (TBB_FOUND "YES")
-
- # NOTE: Removed because we don't want to link with the malloc_proxy by default
- #if (NOT "${TBB_MALLOCPROXY_RELEASE_LIBRARY}" STREQUAL "TBB_MALLOCPROXY_RELEASE_LIBRARY-NOTFOUND")
- # mark_as_advanced(TBB_MALLOCPROXY_RELEASE_LIBRARY)
- # set (_TBB_MALLOCPROXY optimized ${TBB_MALLOCPROXY_RELEASE_LIBRARY})
- #endif (NOT "${TBB_MALLOCPROXY_RELEASE_LIBRARY}" STREQUAL "TBB_MALLOCPROXY_RELEASE_LIBRARY-NOTFOUND")
- #if (NOT "${TBB_MALLOCPROXY_DEBUG_LIBRARY}" STREQUAL "TBB_MALLOCPROXY_DEBUG_LIBRARY-NOTFOUND")
- # mark_as_advanced(TBB_MALLOCPROXY_DEBUG_LIBRARY)
- # set (_TBB_MALLOCPROXY ${_TBB_MALLOCPROXY} debug ${TBB_MALLOCPROXY_DEBUG_LIBRARY})
- #endif (NOT "${TBB_MALLOCPROXY_DEBUG_LIBRARY}" STREQUAL "TBB_MALLOCPROXY_DEBUG_LIBRARY-NOTFOUND")
-
- # TBB release library
- set (ALL_TBB_LIBRARIES optimized ${TBB_RELEASE_LIBRARY})
-
- # TBB debug library found?
- if (TBB_DEBUG_LIBRARY)
- list(APPEND ALL_TBB_LIBRARIES debug ${TBB_DEBUG_LIBRARY})
- else (TBB_DEBUG_LIBRARY)
- # Otherwise, link with the release library even in debug mode
- list(APPEND ALL_TBB_LIBRARIES debug ${TBB_RELEASE_LIBRARY})
- endif (TBB_DEBUG_LIBRARY)
-
- # TBB malloc - release
- if (TBB_MALLOC_RELEASE_LIBRARY)
- list(APPEND ALL_TBB_LIBRARIES optimized ${TBB_MALLOC_RELEASE_LIBRARY})
-
- # TBB malloc - debug
- if (TBB_MALLOC_DEBUG_LIBRARY)
- list(APPEND ALL_TBB_LIBRARIES debug ${TBB_MALLOC_DEBUG_LIBRARY})
- else (TBB_MALLOC_DEBUG_LIBRARY)
- list(APPEND ALL_TBB_LIBRARIES debug ${TBB_MALLOC_RELEASE_LIBRARY})
- endif (TBB_MALLOC_DEBUG_LIBRARY)
- endif (TBB_MALLOC_RELEASE_LIBRARY)
-
- if(UNIX AND NOT APPLE)
- # On Fedora, code using TBB might need -pthread
-
- # First check without pthread
- try_TBB_with_pthread(TBB_without_pthread)
-
- if(NOT TBB_without_pthread)
- # Then check with -pthread
- try_TBB_with_pthread(TBB_with_pthread -pthread)
- if(TBB_with_pthread)
- list(APPEND ALL_TBB_LIBRARIES general -pthread)
- endif(TBB_with_pthread)
- endif(NOT TBB_without_pthread)
- endif(UNIX AND NOT APPLE)
-
- set (TBB_LIBRARIES ${ALL_TBB_LIBRARIES}
- CACHE PATH "TBB libraries" FORCE)
-
- # Include dirs
- set (TBB_INCLUDE_DIRS ${TBB_INCLUDE_DIR} CACHE PATH "TBB include directory" FORCE)
-
- # Library dirs
- if( "${TBB_DEBUG_LIBRARY_DIR}" STREQUAL "" OR "${TBB_RELEASE_LIBRARY_DIR}" STREQUAL "${TBB_DEBUG_LIBRARY_DIR}" )
- set (TBB_LIBRARY_DIRS
- ${TBB_RELEASE_LIBRARY_DIR}
- CACHE PATH "TBB library directories" FORCE)
- else( "${TBB_DEBUG_LIBRARY_DIR}" STREQUAL "" OR "${TBB_RELEASE_LIBRARY_DIR}" STREQUAL "${TBB_DEBUG_LIBRARY_DIR}" )
- set (TBB_LIBRARY_DIRS
- ${TBB_RELEASE_LIBRARY_DIR} ${TBB_DEBUG_LIBRARY_DIR}
- CACHE PATH "TBB library directories" FORCE)
- endif( "${TBB_DEBUG_LIBRARY_DIR}" STREQUAL "" OR "${TBB_RELEASE_LIBRARY_DIR}" STREQUAL "${TBB_DEBUG_LIBRARY_DIR}" )
-
- message(STATUS "Found Intel TBB")
- endif (TBB_RELEASE_LIBRARY)
-endif (TBB_INCLUDE_DIR)
-
-if (NOT TBB_FOUND)
- if(NOT TBB_FIND_QUIETLY)
- message("ERROR: Intel TBB NOT found! Please define the TBBROOT (or TBB_INSTALL_DIR) and/or TBB_ARCH_PLATFORM environment variables.")
- message(STATUS "Looked for Threading Building Blocks in ${_TBB_INSTALL_DIR}")
- endif(NOT TBB_FIND_QUIETLY)
- SET(TBB_INSTALL_DIR "TBB_INSTALL_DIR_NOT_FOUND" CACHE STRING "Intel TBB install directory")
- # do only throw fatal, if this pkg is REQUIRED
- if (TBB_FIND_REQUIRED)
- message(FATAL_ERROR "Could NOT find TBB library.")
- endif (TBB_FIND_REQUIRED)
-endif (NOT TBB_FOUND)
-
-endif (NOT _TBB_INSTALL_DIR)
-
-if (TBB_FOUND)
- set(TBB_INTERFACE_VERSION 0)
- FILE(READ "${TBB_INCLUDE_DIRS}/tbb/tbb_stddef.h" _TBB_VERSION_CONTENTS)
- STRING(REGEX REPLACE ".*#define TBB_INTERFACE_VERSION ([0-9]+).*" "\\1" TBB_INTERFACE_VERSION "${_TBB_VERSION_CONTENTS}")
- set(TBB_INTERFACE_VERSION "${TBB_INTERFACE_VERSION}")
-endif (TBB_FOUND)
-
-set(TBB_USE_FILE "UseTBB")
-
-### ** Emacs settings **
-### Local Variables:
-### cmake-tab-width: 4
-### End:
diff --git a/cmake/modules/GUDHI_compilation_flags.cmake b/cmake/modules/GUDHI_compilation_flags.cmake
deleted file mode 100644
index a01d6e13..00000000
--- a/cmake/modules/GUDHI_compilation_flags.cmake
+++ /dev/null
@@ -1,72 +0,0 @@
-# This files manage compilation flags required by GUDHI
-
-include(TestCXXAcceptsFlag)
-include(CheckCXXSourceCompiles)
-
-# add a compiler flag only if it is accepted
-macro(add_cxx_compiler_flag _flag)
- string(REPLACE "-" "_" _flag_var ${_flag})
- check_cxx_accepts_flag("${_flag}" CXX_COMPILER_${_flag_var}_OK)
- if(CXX_COMPILER_${_flag_var}_OK)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flag}")
- endif()
-endmacro()
-
-function(can_cgal_use_cxx11_thread_local)
- # This is because of https://github.com/CGAL/cgal/blob/master/Installation/include/CGAL/tss.h
- # CGAL is using boost thread if thread_local is not ready (requires XCode 8 for Mac).
- # The test in https://github.com/CGAL/cgal/blob/master/Installation/include/CGAL/config.h
- # #if __has_feature(cxx_thread_local) || \
- # ( (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L ) || \
- # ( _MSC_VER >= 1900 )
- # #define CGAL_CAN_USE_CXX11_THREAD_LOCAL
- # #endif
- set(CGAL_CAN_USE_CXX11_THREAD_LOCAL "
- int main() {
- #ifndef __has_feature
- #define __has_feature(x) 0 // Compatibility with non-clang compilers.
- #endif
- #if __has_feature(cxx_thread_local) || \
- ( (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L ) || \
- ( _MSC_VER >= 1900 )
- bool has_feature_thread_local = true;
- #else
- // Explicit error of compilation for CMake test purpose - has_feature_thread_local is not defined
- #endif
- bool result = has_feature_thread_local;
- } ")
- check_cxx_source_compiles("${CGAL_CAN_USE_CXX11_THREAD_LOCAL}" CGAL_CAN_USE_CXX11_THREAD_LOCAL_RESULT)
-endfunction()
-
-set (CMAKE_CXX_STANDARD 11)
-
-enable_testing()
-
-if(MSVC)
- # Turn off some VC++ warnings
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267 /wd4668 /wd4311 /wd4800 /wd4820 /wd4503 /wd4244 /wd4345 /wd4996 /wd4396 /wd4018")
-endif()
-
-add_cxx_compiler_flag("-Wall")
-
-if (DEBUG_TRACES)
- # For programs to be more verbose
- message(STATUS "DEBUG_TRACES are activated")
- add_definitions(-DDEBUG_TRACES)
-endif()
-
-set(GUDHI_CAN_USE_CXX11_THREAD_LOCAL "
- int main() {
- thread_local int result = 0;
- return result;
- } ")
-check_cxx_source_compiles("${GUDHI_CAN_USE_CXX11_THREAD_LOCAL}" GUDHI_CAN_USE_CXX11_THREAD_LOCAL_RESULT)
-if (GUDHI_CAN_USE_CXX11_THREAD_LOCAL_RESULT)
- add_definitions(-DGUDHI_CAN_USE_CXX11_THREAD_LOCAL)
-endif()
-
-if(CMAKE_BUILD_TYPE MATCHES Debug)
- message("++ Debug compilation flags are: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}")
-else()
- message("++ Release compilation flags are: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}")
-endif()
diff --git a/cmake/modules/GUDHI_doxygen_target.cmake b/cmake/modules/GUDHI_doxygen_target.cmake
deleted file mode 100644
index 9e10e566..00000000
--- a/cmake/modules/GUDHI_doxygen_target.cmake
+++ /dev/null
@@ -1,19 +0,0 @@
-# add a target to generate API documentation with Doxygen
-find_package(Doxygen)
-if(DOXYGEN_FOUND)
- # configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
-
- # starting from cmake 3.9 the usage of DOXYGEN_EXECUTABLE is deprecated
- if(TARGET Doxygen::doxygen)
- get_property(DOXYGEN_EXECUTABLE TARGET Doxygen::doxygen PROPERTY IMPORTED_LOCATION)
- endif()
-
- add_custom_target(doxygen ${DOXYGEN_EXECUTABLE} ${GUDHI_USER_VERSION_DIR}/Doxyfile
- WORKING_DIRECTORY ${GUDHI_USER_VERSION_DIR}
- COMMENT "Generating API documentation with Doxygen in ${GUDHI_USER_VERSION_DIR}/doc/html/" VERBATIM)
-
- if(TARGET user_version)
- # In dev version, doxygen target depends on user_version target. Not existing in user version
- add_dependencies(doxygen user_version)
- endif()
-endif(DOXYGEN_FOUND)
diff --git a/cmake/modules/GUDHI_modules.cmake b/cmake/modules/GUDHI_modules.cmake
deleted file mode 100644
index f95d0c34..00000000
--- a/cmake/modules/GUDHI_modules.cmake
+++ /dev/null
@@ -1,41 +0,0 @@
-# A function to add a new module in GUDHI
-
-set(GUDHI_MODULES "")
-set(GUDHI_MODULES_FULL_LIST "")
-function(add_gudhi_module file_path)
- option("WITH_MODULE_GUDHI_${file_path}" "Activate/desactivate ${file_path} compilation and installation" ON)
- if (WITH_MODULE_GUDHI_${file_path})
- set(GUDHI_MODULES ${GUDHI_MODULES} ${file_path} PARENT_SCOPE)
- endif()
- # Required by user_version
- set(GUDHI_MODULES_FULL_LIST ${GUDHI_MODULES_FULL_LIST} ${file_path} PARENT_SCOPE)
- # Include module headers is independant - You may ask for no Alpha complex module but Python interface i.e.
- if(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/src/${file_path}/include/)
- include_directories(src/${file_path}/include/)
- endif()
-
-endfunction(add_gudhi_module)
-
-option(WITH_GUDHI_BENCHMARK "Activate/desactivate benchmark compilation" OFF)
-option(WITH_GUDHI_EXAMPLE "Activate/desactivate examples compilation and installation" OFF)
-option(WITH_GUDHI_PYTHON "Activate/desactivate python module compilation and installation" ON)
-option(WITH_GUDHI_TEST "Activate/desactivate examples compilation and installation" ON)
-option(WITH_GUDHI_UTILITIES "Activate/desactivate utilities compilation and installation" ON)
-
-if (WITH_GUDHI_BENCHMARK)
- set(GUDHI_SUB_DIRECTORIES "${GUDHI_SUB_DIRECTORIES};benchmark")
-endif()
-if (WITH_GUDHI_EXAMPLE)
- set(GUDHI_SUB_DIRECTORIES "${GUDHI_SUB_DIRECTORIES};example")
-endif()
-if (WITH_GUDHI_TEST)
- set(GUDHI_SUB_DIRECTORIES "${GUDHI_SUB_DIRECTORIES};test")
-endif()
-if (WITH_GUDHI_UTILITIES)
- set(GUDHI_SUB_DIRECTORIES "${GUDHI_SUB_DIRECTORIES};utilities")
-endif()
-
-message("++ GUDHI_SUB_DIRECTORIES list is:\"${GUDHI_SUB_DIRECTORIES}\"")
-
-
-
diff --git a/cmake/modules/GUDHI_test_coverage.cmake b/cmake/modules/GUDHI_test_coverage.cmake
deleted file mode 100644
index bea5b2d6..00000000
--- a/cmake/modules/GUDHI_test_coverage.cmake
+++ /dev/null
@@ -1,26 +0,0 @@
-
-if (GCOVR_PATH)
- # for gcovr to make coverage reports - Corbera Jenkins plugin
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
-endif()
-if (GPROF_PATH)
- # for gprof to make coverage reports - Jenkins
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
-endif()
-
-if (DEBUG_TRACES)
- # Make CTest more verbose with DEBUG_TRACES - no XML output
- set(GUDHI_UT_LOG_LEVEL "--log_level=all")
- set(GUDHI_UT_REPORT_LEVEL "--report_level=detailed")
-else()
- set(GUDHI_UT_LOG_FORMAT "--log_format=XML")
- set(GUDHI_UT_LOG_SINK "--log_sink=${CMAKE_BINARY_DIR}/${unitary_test}_UT.xml")
- set(GUDHI_UT_LOG_LEVEL "--log_level=test_suite")
- set(GUDHI_UT_REPORT_LEVEL "--report_level=no")
-endif()
-
-function(gudhi_add_coverage_test unitary_test)
- add_test(NAME ${unitary_test} COMMAND $<TARGET_FILE:${unitary_test}>
- ${GUDHI_UT_LOG_FORMAT} ${GUDHI_UT_LOG_SINK}
- ${GUDHI_UT_LOG_LEVEL} ${GUDHI_UT_REPORT_LEVEL})
-endfunction()
diff --git a/cmake/modules/GUDHI_third_party_libraries.cmake b/cmake/modules/GUDHI_third_party_libraries.cmake
deleted file mode 100644
index f03c2177..00000000
--- a/cmake/modules/GUDHI_third_party_libraries.cmake
+++ /dev/null
@@ -1,169 +0,0 @@
-# This files manage third party libraries required by GUDHI
-
-find_package(Boost 1.48.0 REQUIRED COMPONENTS system filesystem unit_test_framework program_options thread)
-
-if(NOT Boost_FOUND)
- message(FATAL_ERROR "NOTICE: This program requires Boost and will not be compiled.")
-endif(NOT Boost_FOUND)
-
-find_package(GMP)
-if(GMP_FOUND)
- INCLUDE_DIRECTORIES(${GMP_INCLUDE_DIR})
- find_package(GMPXX)
- if(GMPXX_FOUND)
- INCLUDE_DIRECTORIES(${GMPXX_INCLUDE_DIR})
- endif()
-endif()
-
-# In CMakeLists.txt, when include(${CGAL_USE_FILE}), CMAKE_CXX_FLAGS are overwritten.
-# cf. http://doc.cgal.org/latest/Manual/installation.html#title40
-# A workaround is to include(${CGAL_USE_FILE}) before adding "-std=c++11".
-# A fix would be to use https://cmake.org/cmake/help/v3.1/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html
-# or even better https://cmake.org/cmake/help/v3.1/variable/CMAKE_CXX_STANDARD.html
-# but it implies to use cmake version 3.1 at least.
-find_package(CGAL)
-
-# Only CGAL versions > 4.4 supports what Gudhi uses from CGAL
-if (CGAL_VERSION VERSION_LESS 4.4.0)
- message("CGAL version ${CGAL_VERSION} is considered too old to be used by Gudhi.")
- unset(CGAL_FOUND)
-endif()
-if(CGAL_FOUND)
- message(STATUS "CGAL version: ${CGAL_VERSION}.")
- include( ${CGAL_USE_FILE} )
-
- if (NOT CGAL_VERSION VERSION_LESS 4.8.0)
- # HACK to detect CGAL version 4.8.0
- # CGAL version 4.8, 4.8.1 and 4.8.2 are identified as version 4.8.1000)
- # cf. https://github.com/CGAL/cgal/issues/1559
- # Limit the HACK between CGAL versions 4.8 and 4.9 because of file read
- if (NOT CGAL_VERSION VERSION_GREATER 4.9.0)
- foreach(CGAL_INCLUDE_DIR ${CGAL_INCLUDE_DIRS})
- if (EXISTS "${CGAL_INCLUDE_DIR}/CGAL/version.h")
- FILE(READ "${CGAL_INCLUDE_DIR}/CGAL/version.h" contents)
- STRING(REGEX REPLACE "\n" ";" contents "${contents}")
- foreach(Line ${contents})
- if("${Line}" STREQUAL "#define CGAL_VERSION 4.8")
- set(CGAL_VERSION 4.8.0)
- message (">>>>> HACK CGAL version to ${CGAL_VERSION}")
- endif("${Line}" STREQUAL "#define CGAL_VERSION 4.8")
- endforeach(Line ${contents})
- endif (EXISTS "${CGAL_INCLUDE_DIR}/CGAL/version.h")
- endforeach(CGAL_INCLUDE_DIR ${CGAL_INCLUDE_DIRS})
- endif(NOT CGAL_VERSION VERSION_GREATER 4.9.0)
-
- if (CGAL_VERSION VERSION_LESS 4.11.0)
- # For dev version
- include_directories(BEFORE "src/common/include/gudhi_patches")
- # For user version
- include_directories(BEFORE "include/gudhi_patches")
- endif ()
- endif()
-endif()
-
-option(WITH_GUDHI_USE_TBB "Build with Intel TBB parallelization" ON)
-
-# Find TBB package for parallel sort - not mandatory, just optional.
-if(WITH_GUDHI_USE_TBB)
- set(TBB_FIND_QUIETLY ON)
- find_package(TBB)
- if (TBB_FOUND)
- include(${TBB_USE_FILE})
- message("TBB found in ${TBB_LIBRARY_DIRS}")
- add_definitions(-DGUDHI_USE_TBB)
- endif()
-endif(WITH_GUDHI_USE_TBB)
-
-set(CGAL_WITH_EIGEN3_VERSION 0.0.0)
-find_package(Eigen3 3.1.0)
-if (EIGEN3_FOUND)
- include( ${EIGEN3_USE_FILE} )
- set(CGAL_WITH_EIGEN3_VERSION ${CGAL_VERSION})
-endif (EIGEN3_FOUND)
-
-# Required programs for unitary tests purpose
-FIND_PROGRAM( GCOVR_PATH gcovr )
-if (GCOVR_PATH)
- message("gcovr found in ${GCOVR_PATH}")
-endif()
-FIND_PROGRAM( GPROF_PATH gprof )
-if (GPROF_PATH)
- message("gprof found in ${GPROF_PATH}")
-endif()
-FIND_PROGRAM( DIFF_PATH diff )
-if (DIFF_PATH)
- message("diff found in ${DIFF_PATH}")
-endif()
-FIND_PROGRAM( GNUPLOT_PATH gnuplot )
-if (GNUPLOT_PATH)
- message("gnuplot found in ${GNUPLOT_PATH}")
-endif()
-
-# BOOST ISSUE result_of vs C++11
-add_definitions(-DBOOST_RESULT_OF_USE_DECLTYPE)
-# BOOST ISSUE with Libraries name resolution under Windows
-add_definitions(-DBOOST_ALL_NO_LIB)
-# problem with Visual Studio link on Boost program_options
-add_definitions( -DBOOST_ALL_DYN_LINK )
-# problem on Mac with boost_system and boost_thread
-add_definitions( -DBOOST_SYSTEM_NO_DEPRECATED )
-
-INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
-LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
-
-message(STATUS "boost include dirs:" ${Boost_INCLUDE_DIRS})
-message(STATUS "boost library dirs:" ${Boost_LIBRARY_DIRS})
-
-# Find the correct Python interpreter.
-# Can be set with -DPYTHON_EXECUTABLE=/usr/bin/python3 or -DPython_ADDITIONAL_VERSIONS=3 for instance.
-find_package( PythonInterp )
-
-# find_python_module tries to import module in Python interpreter and to retrieve its version number
-# returns ${PYTHON_MODULE_NAME_UP}_VERSION and ${PYTHON_MODULE_NAME_UP}_FOUND
-function( find_python_module PYTHON_MODULE_NAME )
- string(TOUPPER ${PYTHON_MODULE_NAME} PYTHON_MODULE_NAME_UP)
- execute_process(
- COMMAND ${PYTHON_EXECUTABLE} -c "import ${PYTHON_MODULE_NAME}; print(${PYTHON_MODULE_NAME}.__version__)"
- RESULT_VARIABLE PYTHON_MODULE_RESULT
- OUTPUT_VARIABLE PYTHON_MODULE_VERSION
- ERROR_VARIABLE PYTHON_MODULE_ERROR)
- if(PYTHON_MODULE_RESULT EQUAL 0)
- # Remove carriage return
- string(STRIP ${PYTHON_MODULE_VERSION} PYTHON_MODULE_VERSION)
- set(${PYTHON_MODULE_NAME_UP}_VERSION ${PYTHON_MODULE_VERSION} PARENT_SCOPE)
- set(${PYTHON_MODULE_NAME_UP}_FOUND TRUE PARENT_SCOPE)
- else()
- unset(${PYTHON_MODULE_NAME_UP}_VERSION PARENT_SCOPE)
- set(${PYTHON_MODULE_NAME_UP}_FOUND FALSE PARENT_SCOPE)
- endif()
-endfunction( find_python_module )
-
-if( PYTHONINTERP_FOUND )
- find_python_module("cython")
- find_python_module("pytest")
- find_python_module("matplotlib")
- find_python_module("numpy")
-endif()
-
-if(NOT GUDHI_CYTHON_PATH)
- message(FATAL_ERROR "ERROR: GUDHI_CYTHON_PATH is not valid.")
-endif(NOT GUDHI_CYTHON_PATH)
-
-if(PYTHONINTERP_FOUND AND CYTHON_FOUND)
- # Default found version 2
- if(PYTHON_VERSION_MAJOR EQUAL 2)
- # Documentation generation is available through sphinx
- find_program( SPHINX_PATH sphinx-build )
- elseif(PYTHON_VERSION_MAJOR EQUAL 3)
- # No sphinx-build in Pyton3, just hack it
- set(SPHINX_PATH "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/${GUDHI_CYTHON_PATH}/doc/python3-sphinx-build.py")
- else()
- message(FATAL_ERROR "ERROR: Try to compile the Cython interface. Python version ${PYTHON_VERSION_STRING} is not valid.")
- endif(PYTHON_VERSION_MAJOR EQUAL 2)
- # get PYTHON_SITE_PACKAGES relative path from a python command line
- execute_process(
- COMMAND "${PYTHON_EXECUTABLE}" -c "from distutils.sysconfig import get_python_lib; print (get_python_lib(prefix='', plat_specific=True))"
- OUTPUT_VARIABLE PYTHON_SITE_PACKAGES
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-endif(PYTHONINTERP_FOUND AND CYTHON_FOUND)
-
diff --git a/cmake/modules/GUDHI_user_version_target.cmake b/cmake/modules/GUDHI_user_version_target.cmake
deleted file mode 100644
index d43a6fa6..00000000
--- a/cmake/modules/GUDHI_user_version_target.cmake
+++ /dev/null
@@ -1,95 +0,0 @@
-# Definition of the custom target user_version
-add_custom_target(user_version)
-
-if(DEFINED USER_VERSION_DIR)
- # set the GUDHI_USER_VERSION_DIR with USER_VERSION_DIR defined by the user
- set(GUDHI_USER_VERSION_DIR ${CMAKE_CURRENT_BINARY_DIR}/${USER_VERSION_DIR})
-else()
- # set the GUDHI_USER_VERSION_DIR with timestamp and Gudhi version number
- string(TIMESTAMP DATE_AND_TIME "%Y-%m-%d-%H-%M-%S")
- set(GUDHI_USER_VERSION_DIR ${CMAKE_CURRENT_BINARY_DIR}/${DATE_AND_TIME}_GUDHI_${GUDHI_VERSION})
-endif()
-
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- make_directory ${GUDHI_USER_VERSION_DIR}
- COMMENT "user_version creation in ${GUDHI_USER_VERSION_DIR}")
-
-foreach(GUDHI_MODULE ${GUDHI_MODULES_FULL_LIST})
- set(GUDHI_DOXYGEN_IMAGE_PATH "${GUDHI_DOXYGEN_IMAGE_PATH} doc/${GUDHI_MODULE}/ \\ \n")
-endforeach(GUDHI_MODULE ${GUDHI_MODULES_FULL_LIST})
-
-# Generate setup.py file to cythonize Gudhi - This file must be named setup.py by convention
-configure_file(${CMAKE_SOURCE_DIR}/src/Doxyfile.in "${CMAKE_CURRENT_BINARY_DIR}/src/Doxyfile" @ONLY)
-
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy ${CMAKE_CURRENT_BINARY_DIR}/src/Doxyfile ${GUDHI_USER_VERSION_DIR}/Doxyfile)
-
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy ${CMAKE_SOURCE_DIR}/Conventions.txt ${GUDHI_USER_VERSION_DIR}/Conventions.txt)
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy ${CMAKE_SOURCE_DIR}/README ${GUDHI_USER_VERSION_DIR}/README)
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy ${CMAKE_SOURCE_DIR}/COPYING ${GUDHI_USER_VERSION_DIR}/COPYING)
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy ${CMAKE_SOURCE_DIR}/src/CMakeLists.txt ${GUDHI_USER_VERSION_DIR}/CMakeLists.txt)
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy ${CMAKE_SOURCE_DIR}/src/GUDHIConfigVersion.cmake.in ${GUDHI_USER_VERSION_DIR}/GUDHIConfigVersion.cmake.in)
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy ${CMAKE_SOURCE_DIR}/src/GUDHIConfig.cmake.in ${GUDHI_USER_VERSION_DIR}/GUDHIConfig.cmake.in)
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy ${CMAKE_SOURCE_DIR}/CMakeGUDHIVersion.txt ${GUDHI_USER_VERSION_DIR}/CMakeGUDHIVersion.txt)
-
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy_directory ${CMAKE_SOURCE_DIR}/biblio ${GUDHI_USER_VERSION_DIR}/biblio)
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy_directory ${CMAKE_SOURCE_DIR}/src/cython ${GUDHI_USER_VERSION_DIR}/cython)
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy_directory ${CMAKE_SOURCE_DIR}/data ${GUDHI_USER_VERSION_DIR}/data)
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy_directory ${CMAKE_SOURCE_DIR}/src/cmake ${GUDHI_USER_VERSION_DIR}/cmake)
-add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy_directory ${CMAKE_SOURCE_DIR}/src/GudhUI ${GUDHI_USER_VERSION_DIR}/GudhUI)
-
-set(GUDHI_DIRECTORIES "doc;example;concept;utilities")
-if (CGAL_VERSION VERSION_LESS 4.11.0)
- set(GUDHI_INCLUDE_DIRECTORIES "include/gudhi;include/gudhi_patches")
-else ()
- set(GUDHI_INCLUDE_DIRECTORIES "include/gudhi")
-endif ()
-
-foreach(GUDHI_MODULE ${GUDHI_MODULES_FULL_LIST})
- foreach(GUDHI_DIRECTORY ${GUDHI_DIRECTORIES})
- # Find files
- file(GLOB GUDHI_FILES ${CMAKE_SOURCE_DIR}/src/${GUDHI_MODULE}/${GUDHI_DIRECTORY}/*)
-
- foreach(GUDHI_FILE ${GUDHI_FILES})
- get_filename_component(GUDHI_FILE_NAME ${GUDHI_FILE} NAME)
- # GUDHI_FILE can be a file or a directory
- if(IS_DIRECTORY ${GUDHI_FILE})
- add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy_directory ${GUDHI_FILE} ${GUDHI_USER_VERSION_DIR}/${GUDHI_DIRECTORY}/${GUDHI_MODULE}/${GUDHI_FILE_NAME})
- else()
- add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy ${GUDHI_FILE} ${GUDHI_USER_VERSION_DIR}/${GUDHI_DIRECTORY}/${GUDHI_MODULE}/${GUDHI_FILE_NAME})
- endif()
- endforeach()
- endforeach(GUDHI_DIRECTORY ${GUDHI_DIRECTORIES})
-
- foreach(GUDHI_INCLUDE_DIRECTORY ${GUDHI_INCLUDE_DIRECTORIES})
- # include files
- file(GLOB GUDHI_INCLUDE_FILES ${CMAKE_SOURCE_DIR}/src/${GUDHI_MODULE}/${GUDHI_INCLUDE_DIRECTORY}/*)
-
- foreach(GUDHI_INCLUDE_FILE ${GUDHI_INCLUDE_FILES})
- get_filename_component(GUDHI_INCLUDE_FILE_NAME ${GUDHI_INCLUDE_FILE} NAME)
- # GUDHI_INCLUDE_FILE can be a file or a directory
- if(IS_DIRECTORY ${GUDHI_INCLUDE_FILE})
- add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy_directory ${GUDHI_INCLUDE_FILE} ${GUDHI_USER_VERSION_DIR}/${GUDHI_INCLUDE_DIRECTORY}/${GUDHI_INCLUDE_FILE_NAME})
- else()
- add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
- copy ${GUDHI_INCLUDE_FILE} ${GUDHI_USER_VERSION_DIR}/${GUDHI_INCLUDE_DIRECTORY}/${GUDHI_INCLUDE_FILE_NAME})
- endif()
- endforeach()
- endforeach(GUDHI_INCLUDE_DIRECTORY ${GUDHI_INCLUDE_DIRECTORIES})
-
-endforeach(GUDHI_MODULE ${GUDHI_MODULES_FULL_LIST}) \ No newline at end of file
diff --git a/cmake/modules/UseEigen3.cmake b/cmake/modules/UseEigen3.cmake
deleted file mode 100644
index e3ed18be..00000000
--- a/cmake/modules/UseEigen3.cmake
+++ /dev/null
@@ -1,9 +0,0 @@
-# This module setups the compiler for using Eigen v3 library.
-# It assumes that find_package(Eigen3) was already called.
-
-
-include_directories( SYSTEM ${EIGEN3_INCLUDE_DIR} )
-
-add_definitions(-DCGAL_EIGEN3_ENABLED)
-
-set (EIGEN3_SETUP TRUE)
diff --git a/cmake/modules/UseTBB.cmake b/cmake/modules/UseTBB.cmake
deleted file mode 100644
index e1ef5dfe..00000000
--- a/cmake/modules/UseTBB.cmake
+++ /dev/null
@@ -1,6 +0,0 @@
-# This module setups the compiler for using TBB library.
-# It assumes that find_package(TBB) was already called.
-
-include_directories ( ${TBB_INCLUDE_DIRS} )
-link_directories( ${TBB_LIBRARY_DIRS} )
-add_definitions( -DNOMINMAX -DGUDHI_USE_TBB )
diff --git a/concept/Alpha_complex/SimplicialComplexForAlpha.h b/concept/Alpha_complex/SimplicialComplexForAlpha.h
deleted file mode 100644
index a51df127..00000000
--- a/concept/Alpha_complex/SimplicialComplexForAlpha.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONCEPT_ALPHA_COMPLEX_SIMPLICIAL_COMPLEX_FOR_ALPHA_H_
-#define CONCEPT_ALPHA_COMPLEX_SIMPLICIAL_COMPLEX_FOR_ALPHA_H_
-
-namespace Gudhi {
-
-namespace alpha_complex {
-
-/** \brief The concept SimplicialComplexForAlpha describes the requirements for a type to implement a simplicial
- * complex, that can be created from a `Alpha_complex`.
- */
-struct SimplicialComplexForAlpha {
- /** Handle to specify a simplex. */
- typedef unspecified Simplex_handle;
- /** Handle to specify a vertex. Must be a non-negative integer. */
- typedef unspecified Vertex_handle;
- /** Handle to specify the simplex filtration value. */
- typedef unspecified Filtration_value;
-
- /** Returns the number of vertices in the simplicial complex. */
- std::size_t num_vertices();
-
- /** Sets the simplicial complex dimension. */
- void set_dimension(int dimension);
-
- /** Gets the 'simplex' dimension. */
- int dimension(Simplex_handle simplex);
-
- /** Assigns the 'simplex' with the given 'filtration' value. */
- int assign_filtration(Simplex_handle simplex, Filtration_value filtration);
-
- /** \brief Inserts a simplex with vertices from a given simplex (represented by a vector of Vertex_handle) in the
- * simplicial complex with the given 'filtration' value. */
- void insert_simplex_and_subfaces(std::vector<Vertex_handle> const & vertex_range, Filtration_value filtration);
-
- /** Browses the simplicial complex to make the filtration non-decreasing. */
- void make_filtration_non_decreasing();
-
- /** Prune the simplicial complex above 'filtration' value given as parameter. */
- void prune_above_filtration(Filtration_value filtration);
-
- /** \brief Iterator over vertices of a simplex.
- *
- * 'value type' must be 'Vertex_handle'.*/
- typedef unspecified Simplex_vertex_range;
-
- /** \brief Returns a range over vertices of a given
- * simplex. */
- Simplex_vertex_range simplex_vertex_range(Simplex_handle const & simplex);
-
- /** \brief Iterator over the boundaries of the complex, in an arbitrary order.
- *
- * 'value_type' must be 'Simplex_handle'.*/
- typedef unspecified Boundary_simplex_range;
-
- /** \brief Returns a range over boundaries of a given simplex. */
- Boundary_simplex_range boundary_simplex_range(Simplex_handle const & simplex);
-
- /** \brief Return type of an insertion of a simplex
- */
- typedef unspecified Insertion_result_type;
-};
-
-} // namespace alpha_complex
-
-} // namespace Gudhi
-
-#endif // CONCEPT_ALPHA_COMPLEX_SIMPLICIAL_COMPLEX_FOR_ALPHA_H_
diff --git a/concept/Bottleneck_distance/Persistence_diagram.h b/concept/Bottleneck_distance/Persistence_diagram.h
deleted file mode 100644
index d016faf4..00000000
--- a/concept/Bottleneck_distance/Persistence_diagram.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author: François Godi
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONCEPT_BOTTLENECK_DISTANCE_PERSISTENCE_DIAGRAM_H_
-#define CONCEPT_BOTTLENECK_DISTANCE_PERSISTENCE_DIAGRAM_H_
-
-namespace Gudhi {
-
-namespace persistence_diagram {
-
-/** \brief Concept of point in a persistence diagram. std::get<0>(point) must return the birth of the corresponding component and std::get<1>(point) its death.
- * Both should be convertible to `double`.
- * A valid implementation of this concept is std::pair<double,double>.
- * Death should be larger than birth, death can be std::numeric_limits<double>::infinity() for components which stay alive.
- *
- * \ingroup bottleneck_distance
- */
-struct DiagramPoint{};
-
-/** \brief Concept of persistence diagram. It is a range of `DiagramPoint`.
- * std::begin(diagram) and std::end(diagram) must return corresponding iterators.
- *
- * \ingroup bottleneck_distance
- */
-struct PersistenceDiagram{};
-
-} // namespace persistence_diagram
-
-} // namespace Gudhi
-
-#endif // CONCEPT_BOTTLENECK_DISTANCE_PERSISTENCE_DIAGRAM_H_
diff --git a/concept/Cech_complex/SimplicialComplexForCech.h b/concept/Cech_complex/SimplicialComplexForCech.h
deleted file mode 100644
index 89231eec..00000000
--- a/concept/Cech_complex/SimplicialComplexForCech.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2018 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONCEPT_CECH_COMPLEX_SIMPLICIAL_COMPLEX_FOR_CECH_H_
-#define CONCEPT_CECH_COMPLEX_SIMPLICIAL_COMPLEX_FOR_CECH_H_
-
-namespace Gudhi {
-
-namespace cech_complex {
-
-/** \brief The concept SimplicialComplexForCech describes the requirements for a type to implement a simplicial
- * complex, that can be created from a `Cech_complex`.
- */
-struct SimplicialComplexForCech {
- /** Handle to specify a simplex. */
- typedef unspecified Simplex_handle;
- /** Handle to specify a vertex. Must be a non-negative integer. */
- typedef unspecified Vertex_handle;
- /** Handle to specify the simplex filtration value. */
- typedef unspecified Filtration_value;
-
- /** Assigns the 'simplex' with the given 'filtration' value. */
- int assign_filtration(Simplex_handle simplex, Filtration_value filtration);
-
- /** \brief Returns a range over vertices of a given
- * simplex. */
- Simplex_vertex_range simplex_vertex_range(Simplex_handle const & simplex);
-
- /** \brief Inserts a given `Gudhi::ProximityGraph` in the simplicial complex. */
- template<class ProximityGraph>
- void insert_graph(const ProximityGraph& proximity_graph);
-
- /** \brief Expands the simplicial complex containing only its one skeleton until a given maximal dimension.
- * expansion can be blocked by the blocker oracle. */
- template< typename Blocker >
- void expansion_with_blockers(int max_dim, Blocker block_simplex);
-
- /** Returns the number of vertices in the simplicial complex. */
- std::size_t num_vertices();
-
-};
-
-} // namespace alpha_complex
-
-} // namespace Gudhi
-
-#endif // CONCEPT_ALPHA_COMPLEX_SIMPLICIAL_COMPLEX_FOR_ALPHA_H_
diff --git a/concept/Persistence_representations/Real_valued_topological_data.h b/concept/Persistence_representations/Real_valued_topological_data.h
deleted file mode 100644
index 22ef6d72..00000000
--- a/concept/Persistence_representations/Real_valued_topological_data.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONCEPT_REAL_VALUED_TOPOLOGICAL_DATA_H_
-#define CONCEPT_REAL_VALUED_TOPOLOGICAL_DATA_H_
-
-namespace Gudhi {
-
-namespace Persistence_representations {
-
-/** \brief The concept Real_valued_topological_data describes the requirements
- * for a type to implement a container that allows computations of its projections to R.
- */
-class Real_valued_topological_data {
- public:
- /**
-* Typically there are various ways data can be projected to R. This function gives us the number of functions for
-* vectorization provided by a given class.
- **/
- size_t number_of_projections_to_R();
- /**
-* This is a function to compute the projection from this container to reals. The parameter of a function have to
-* be between 0 and the value returned by number_of_projections_to_R().
-**/
- double project_to_R(size_t number_of_projection);
-};
-
-} // namespace Persistence_representations
-
-} // namespace Gudhi
-
-#endif // CONCEPT_REAL_VALUED_TOPOLOGICAL_DATA_H_
diff --git a/concept/Persistence_representations/Topological_data_with_averages.h b/concept/Persistence_representations/Topological_data_with_averages.h
deleted file mode 100644
index aa64467f..00000000
--- a/concept/Persistence_representations/Topological_data_with_averages.h
+++ /dev/null
@@ -1,44 +0,0 @@
-
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONCEPT_TOPOLOGICAL_DATA_WITH_AVERAGES_H_
-#define CONCEPT_TOPOLOGICAL_DATA_WITH_AVERAGES_H_
-
-namespace Gudhi {
-
-namespace Persistence_representations {
-
-/** \brief The concept Topological_data_with_averages describes the requirements
- * for a type to implement a container that allows computations of averages.
- * Note that the average object after being computed is stored in *this.
- */
-class Topological_data_with_averages {
- public:
- void compute_average(const std::vector<Topological_data_with_averages*>& to_average);
-};
-
-} // namespace Persistence_representations
-
-} // namespace Gudhi
-
-#endif // CONCEPT_TOPOLOGICAL_DATA_WITH_AVERAGES_H_
diff --git a/concept/Persistence_representations/Topological_data_with_distances.h b/concept/Persistence_representations/Topological_data_with_distances.h
deleted file mode 100644
index c8eb2b34..00000000
--- a/concept/Persistence_representations/Topological_data_with_distances.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONCEPT_TOPOLOGICAL_DATA_WITH_DISTANCES_H_
-#define CONCEPT_TOPOLOGICAL_DATA_WITH_DISTANCES_H_
-
-namespace Gudhi {
-
-namespace Persistence_representations {
-
-/** \brief The concept Topological_data_with_distances describes the requirements
- * for a type to implement a container that allows computations of distance to another contained of that type.
- * \details
- * The second parameter of the distance function allow to declare power of a distance. The exact meaning of that
- * number will be different for different distances. A few examples are given below:
- * In case of p-Wasserstein distance, the power is equal to p. power = std::limit<double>::max() for bottleneck
- * distance.
- *
- * In case of L^p landscape distance, the power is equal to p. s
- */
-class Topological_data_with_distances {
- public:
- double distance(const Topological_data_with_distances& second, double power = 1);
-};
-
-} // namespace Persistence_representations
-
-} // namespace Gudhi
-
-#endif // CONCEPT_TOPOLOGICAL_DATA_WITH_DISTANCES_H_
diff --git a/concept/Persistence_representations/Topological_data_with_scalar_product.h b/concept/Persistence_representations/Topological_data_with_scalar_product.h
deleted file mode 100644
index 0f08b8c6..00000000
--- a/concept/Persistence_representations/Topological_data_with_scalar_product.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONCEPT_TOPOLOGICAL_DATA_WITH_SCALAR_PRODUCT_H_
-#define CONCEPT_TOPOLOGICAL_DATA_WITH_SCALAR_PRODUCT_H_
-
-namespace Gudhi {
-
-namespace Persistence_representations {
-
-/** \brief The concept Topological_data_with_scalar_product describes the requirements
- * for a type to implement a container that allows computations of scalar products.
- */
-class Topological_data_with_scalar_product {
- public:
- double compute_scalar_product(const Topological_data_with_scalar_product& second);
-};
-
-} // namespace Persistence_representations
-
-} // namespace Gudhi
-
-#endif // CONCEPT_TOPOLOGICAL_DATA_WITH_SCALAR_PRODUCT_H_
diff --git a/concept/Persistence_representations/Vectorized_topological_data.h b/concept/Persistence_representations/Vectorized_topological_data.h
deleted file mode 100644
index 365105d6..00000000
--- a/concept/Persistence_representations/Vectorized_topological_data.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONCEPT_VECTORIZED_TOPOLOGICAL_DATA_H_
-#define CONCEPT_VECTORIZED_TOPOLOGICAL_DATA_H_
-
-namespace Gudhi {
-
-namespace Persistence_representations {
-
-/** \brief The concept Vectorized_topological_data describes the requirements
- * for a type to implement a container that allows vectorization.
- */
-class Vectorized_topological_data {
- public:
- /**
- * There are various ways data can be vectorized. This function give us the number of functions for vectorization
- *provided by a given class.
- **/
- size_t number_of_vectorize_functions();
- /**
- * This is a function to vectorize given container. The parameter of a function have to be between 0 and the value
- *returned by number_of_vectorize_functions().
- **/
- std::vector<double> vectorize(int number_of_function);
-};
-
-} // namespace Persistence_representations
-
-} // namespace Gudhi
-
-#endif // CONCEPT_VECTORIZED_TOPOLOGICAL_DATA_H_
diff --git a/concept/Persistent_cohomology/CoefficientField.h b/concept/Persistent_cohomology/CoefficientField.h
deleted file mode 100644
index 9d066cca..00000000
--- a/concept/Persistent_cohomology/CoefficientField.h
+++ /dev/null
@@ -1,52 +0,0 @@
- /* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/** \brief Concept describing the requirements for a class to represent
- * a field of coefficients to compute persistent homology.
- */
-struct CoefficientField {
-
-/** \brief Type of element of the field.
- *
- * Must be Assignable. */
- typedef unspecified Element;
-
-/** Default constructible. */
- CoefficientField();
-
- void init(Element charac);
- void init(Element charac_min, Element charac_max);
-
-/** Return the characteristic of the field. */
- Element characteristic();
-/** Return the element 1 of the field. */
- Element multiplicative_identity();
-/** Return the element 0 of the field. */
- Element additive_identity();
-
-/** Assign: x <- x + y */
- void plus_equal(Element x, Element y);
-
-/** */
-//... inverse()
-
- }; \ No newline at end of file
diff --git a/concept/Persistent_cohomology/FilteredComplex.h b/concept/Persistent_cohomology/FilteredComplex.h
deleted file mode 100644
index 62b9002f..00000000
--- a/concept/Persistent_cohomology/FilteredComplex.h
+++ /dev/null
@@ -1,150 +0,0 @@
- /* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/** \brief The concept FilteredComplex describes the requirements
- * for a type to implement a filtered cell complex, from which
- * one can compute persistent homology via a model of the concept
- * PersistentHomology.
- */
-struct FilteredComplex
-{
-/** Handle to specify a simplex. */
- typedef unspecified Simplex_handle;
-/** \brief Type for the value of the filtration function.
- *
- * Must be comparable with <. */
- typedef unspecified Filtration_value;
-
-/** \brief Specifies the nature of the indexing scheme.
- *
- * is model of IndexingTag. */
- typedef unspecified Indexing_tag;
-
-/** Returns a Simplex_handle that is different from all simplex handles
- * of the simplices. */
- Simplex_handle null_simplex();
-/** \brief Returns the number of simplices in the complex.
- *
- * Does not count the empty simplex. */
- size_t num_simplices();
-/** \brief Returns the dimension of a simplex. */
- int dimension(Simplex_handle sh);
-/** \brief Returns the filtration value of a simplex.
- *
- * If sh is null_simplex(), returns the maximal value of the
- * filtration function on the complex. */
- Filtration_value filtration(Simplex_handle sh);
-
-/** \brief Returns the simplex that has index idx in the filtration.
- *
- * This is only called on valid indices. */
- Simplex_handle simplex ( size_t idx );
-/** \brief Iterator on the simplices belonging to the
- * boundary of a simplex.
- *
- * <CODE>value_type</CODE> must be 'Simplex_handle'.
- */
-typedef unspecified Boundary_simplex_iterator;
-/** \brief Range giving access to the simplices in the boundary of
- * a simplex.
- *
- * .begin() and .end() return type Boundary_simplex_iterator.
- */
-typedef unspecified Boundary_simplex_range;
-
-/** \brief Returns a range giving access to all simplices of the
- * boundary of a simplex, i.e.
- * the set of codimension 1 subsimplices of the Simplex.
- *
- * If the simplex is \f$[v_0, \cdots ,v_d]\f$, with canonical orientation
- * induced by \f$ v_0 < \cdots < v_d \f$, the iterator enumerates the
- * simplices of the boundary in the order:
- * \f$[v_0,\cdots,\widehat{v_i},\cdots,v_d]\f$ for \f$i\f$ from 0 to d
- *
- * We note that the alternate sum of the simplices given by the iterator
- * gives the chains corresponding to the boundary of the simplex.*/
-Boundary_simplex_range boundary_simplex_range(Simplex_handle sh);
-
-/** \brief Iterator over all simplices of the complex
- * in the order of the indexing scheme.
- *
- * 'value_type' must be 'Simplex_handle'.
- */
-typedef unspecified Filtration_simplex_iterator;
-/** \brief Range over the simplices of the complex
- * in the order of the filtration.
- *
- * .begin() and .end() return type Filtration_simplex_iterator.*/
-typedef unspecified Filtration_simplex_range;
-/** \brief Returns a range over the simplices of the complex
- * in the order of the filtration.
- *
- * .begin() and .end() return type Filtration_simplex_iterator.*/
-Filtration_simplex_range filtration_simplex_range();
-
-/** \name Map interface
- * Conceptually a `std::unordered_map<Simplex_handle,std::size_t>`.
- * @{ */
-/** \brief Data stored for each simplex.
- *
- * Must be an integer type. */
- typedef unspecified Simplex_key;
-/** \brief Returns a constant dummy number that is either negative,
- * or at least as large as `num_simplices()`. Suggested value: -1. */
- Simplex_key null_key ();
-/** \brief Returns the number stored for a simplex by `assign_key`.
- *
- * This is never called on null_simplex(). */
- Simplex_key key ( Simplex_handle sh );
-/** \brief Store a number for a simplex, which can later be retrieved with `key(sh)`.
- *
- * This is never called on null_simplex(). */
- void assign_key(Simplex_handle sh, Simplex_key n);
-/** @} */
-
-
-/* \brief Iterator over the simplices of the complex,
- * in an arbitrary order.
- *
- * 'value_type' must be 'Simplex_handle'.*/
-//typedef unspecified Complex_simplex_iterator;
-//typedef unspecified Complex_simplex_range;
-
-/*
-* Returns a range over all the simplices of a
-* complex.
-*/
-//Complex_simplex_range complex_simplex_range();
-
-/*************************************************/ /**
-* @details Compares the filtration values of simplices s and t
-*
-* @return -1 if s comes before t in the filtration, +1
-* if it comes later, and 0 if they come at the same time
-*
-* @note OPTIONAL
-* @todo use an enum? Just a bool?
-*/
-//int is_before_in_filtration(Simplex_handle s, Simplex_handle t);
-/*************************************************/
-
-};
diff --git a/concept/Persistent_cohomology/PersistentHomology.h b/concept/Persistent_cohomology/PersistentHomology.h
deleted file mode 100644
index f9a78763..00000000
--- a/concept/Persistent_cohomology/PersistentHomology.h
+++ /dev/null
@@ -1,41 +0,0 @@
- /* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/** \brief Concept describing the requirements for a class to compute
- * persistent homology. */
-struct PersistentHomology {
-
-/** \brief Type of filtered cell complex on which persistent homology
- * is computed.
- *
- * Must be a model of concept FilteredComplex.
- */
- typedef unspecified Filtered_complex;
-
-/** \brief Type of coefficients to be used for computing persistent
- * homology.
- *
- * Must be a model of concept CoefficientField.
- */
- typedef unspecified Coefficient_field;
-
- };
diff --git a/concept/Rips_complex/SimplicialComplexForRips.h b/concept/Rips_complex/SimplicialComplexForRips.h
deleted file mode 100644
index 3c5acecf..00000000
--- a/concept/Rips_complex/SimplicialComplexForRips.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONCEPT_RIPS_COMPLEX_SIMPLICIAL_COMPLEX_FOR_RIPS_H_
-#define CONCEPT_RIPS_COMPLEX_SIMPLICIAL_COMPLEX_FOR_RIPS_H_
-
-namespace Gudhi {
-
-namespace rips_complex {
-
-/** \brief The concept SimplicialComplexForRips describes the requirements for a type to implement a simplicial
- * complex, that can be created from a `Rips_complex`. The only available model for the moment is the `Simplex_tree`.
- */
-struct SimplicialComplexForRips {
- /** \brief Type used to store the filtration values of the simplicial complex. */
- typedef unspecified Filtration_value;
-
- /** \brief Inserts a given `Gudhi::rips_complex::Rips_complex::OneSkeletonGraph` in the simplicial complex. */
- template<class OneSkeletonGraph>
- void insert_graph(const OneSkeletonGraph& skel_graph);
-
- /** \brief Expands the simplicial complex containing only its one skeleton until a given maximal dimension as
- * explained in \ref ripsdefinition. */
- void expansion(int max_dim);
-
- /** \brief Returns the number of vertices in the simplicial complex. */
- std::size_t num_vertices();
-
-};
-
-} // namespace rips_complex
-
-} // namespace Gudhi
-
-#endif // CONCEPT_RIPS_COMPLEX_SIMPLICIAL_COMPLEX_FOR_RIPS_H_
diff --git a/concept/Simplex_tree/FiltrationValue.h b/concept/Simplex_tree/FiltrationValue.h
deleted file mode 100644
index f4dcf985..00000000
--- a/concept/Simplex_tree/FiltrationValue.h
+++ /dev/null
@@ -1,35 +0,0 @@
- /* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/** \brief Value type for a filtration function on a cell complex.
- *
- * A <EM>filtration</EM> of a cell complex (see FilteredComplex) is
- * a function \f$f:\mathbf{K} \rightarrow \mathbb{R}\f$ satisfying \f$f(\tau)\leq
- * f(\sigma)\f$ whenever \f$\tau \subseteq \sigma\f$. Ordering the simplices
- * by increasing filtration values (breaking ties so as a simplex appears after
- * its subsimplices of same filtration value) provides an indexing scheme
- * (see IndexingTag).
- */
- struct FiltrationValue {
- /** \brief Operator < is a StrictWeakOrdering. */
- bool operator<(FiltrationValue f1, FiltrationValue f2);
- };
diff --git a/concept/Simplex_tree/IndexingTag.h b/concept/Simplex_tree/IndexingTag.h
deleted file mode 100644
index 37e7e294..00000000
--- a/concept/Simplex_tree/IndexingTag.h
+++ /dev/null
@@ -1,30 +0,0 @@
- /* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/** \brief Concept describing an indexing scheme (see FilteredComplex)
- * for applying
- * continuous maps to a cell complex, and compute its persistent
- * homology.
- *
- * Must be `Gudhi::linear_indexing_tag`.
- */
-struct IndexingTag {};
diff --git a/concept/Simplex_tree/SimplexKey.h b/concept/Simplex_tree/SimplexKey.h
deleted file mode 100644
index c03f7da1..00000000
--- a/concept/Simplex_tree/SimplexKey.h
+++ /dev/null
@@ -1,28 +0,0 @@
- /* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
- /** \brief Key type used as simplex identifier.
- *
- * Must be an integer type.
- */
- struct SimplexKey {};
-
diff --git a/concept/Simplex_tree/SimplexTreeOptions.h b/concept/Simplex_tree/SimplexTreeOptions.h
deleted file mode 100644
index 6638da26..00000000
--- a/concept/Simplex_tree/SimplexTreeOptions.h
+++ /dev/null
@@ -1,43 +0,0 @@
- /* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Marc Glisse
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/** \brief Concept of the template parameter for the class `Gudhi::Simplex_tree<SimplexTreeOptions>`.
- *
- * One model for this is `Gudhi::Simplex_tree_options_full_featured`. If you want to provide your own, it is recommended that you derive from it and override some parts instead of writing a class from scratch.
- */
-struct SimplexTreeOptions {
- /// Forced for now.
- typedef IndexingTag Indexing_tag;
- /// Must be a signed integer type. It admits a total order <.
- typedef VertexHandle Vertex_handle;
- /// Must be comparable with operator<.
- typedef FiltrationValue Filtration_value;
- /// Must be an integer type.
- typedef SimplexKey Simplex_key;
- /// If true, each simplex has extra storage for one `Simplex_key`. Necessary for `Persistent_cohomology`.
- static const bool store_key;
- /// If true, each simplex has extra storage for one `Filtration_value`, and this value is propagated by operations like `Gudhi::Simplex_tree::expansion`. Without it, `Persistent_cohomology` degenerates to computing usual (non-persistent) cohomology.
- static const bool store_filtration;
- /// If true, the list of vertices present in the complex must always be 0, ..., num_vertices-1, without any hole.
- static constexpr bool contiguous_vertices;
-};
-
diff --git a/concept/Simplex_tree/VertexHandle.h b/concept/Simplex_tree/VertexHandle.h
deleted file mode 100644
index 9d0642c3..00000000
--- a/concept/Simplex_tree/VertexHandle.h
+++ /dev/null
@@ -1,27 +0,0 @@
- /* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/** \brief Handle type for the vertices of a cell complex.
- *
- * Must be a signed integer type. <code>operator&lt;</code> defines a total order on it.
- */
-struct VertexHandle {};
diff --git a/concept/Skeleton_blocker/SkeletonBlockerDS.h b/concept/Skeleton_blocker/SkeletonBlockerDS.h
deleted file mode 100644
index fd806ff1..00000000
--- a/concept/Skeleton_blocker/SkeletonBlockerDS.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONCEPT_SKELETON_BLOCKER_SKELETONBLOCKERDS_H_
-#define CONCEPT_SKELETON_BLOCKER_SKELETONBLOCKERDS_H_
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/** \brief Concept for the template class passed for Skeleton_blocker_complex.
- * Most importantly, it contains the nodes for vertices and edges
- * (Graph_vertex and Graph_edge) that are stored in the simplicial
- * complex. The user can redefine these classes to attach
- * additional information to vertices and edges.
- */
-struct SkeletonBlockerDS {
- /**
- * @brief index that allows to find the vertex in the boost graph
- */
- typedef int boost_vertex_handle;
-
- /**
- * @brief Root_vertex_handle and Vertex_handle are similar to global and local vertex descriptor
- * used in <a href="http://www.boost.org/doc/libs/1_38_0/libs/graph/doc/subgraph.html">boost subgraphs</a>
- * and allow to localize a vertex of a subcomplex on its parent root complex.
- *
- * In gross, vertices are stored in a vector
- * and the Root_vertex_handle and Vertex_handle store indices of a vertex in this vector.
- *
- * For the root simplicial complex, the Root_vertex_handle and Vertex_handle of a vertex
- * are the same.
- *
- *
- * For a subcomplex L of a simplicial complex K, the local descriptor, ie the Vertex_handle, of a
- * vertex v (that belongs to L) is its position in the vector of vertices
- * of the subcomplex L whereas its Root_vertex_handle (global descriptor) is the position of v in the vector of the
- * vertices of the root simplicial complex K.
- */
- struct Root_vertex_handle {
- boost_vertex_handle vertex;
-
- friend ostream& operator<<(ostream& o, const Root_vertex_handle & v);
- };
-
- /**
- * A Vertex_handle must be Default Constructible, Assignable and Equality Comparable.
- */
- struct Vertex_handle {
- boost_vertex_handle vertex;
-
- friend ostream& operator<<(ostream& o, const Vertex_handle & v);
- };
-
- /**
- * \brief The type of vertices that are stored the boost graph.
- * A Vertex must be Default Constructible and Equality Comparable.
- *
- */
- struct Graph_vertex {
- /** \brief Used to deactivate a vertex for example when contracting an edge.
- * It allows in some cases to remove the vertex at low cost.
- */
- void deactivate();
-
- /** \brief Used to activate a vertex.
- */
- void activate();
-
- /** \brief Tells if the vertex is active.
- */
- bool is_active() const;
-
- void set_id(Root_vertex_handle i);
- Root_vertex_handle get_id() const;
- virtual string to_string() const;
- friend ostream& operator<<(ostream& o, const Graph_vertex & v);
- };
-
- /**
- * \brief The type of edges that are stored the boost graph.
- * An Edge must be Default Constructible and Equality Comparable.
- */
- struct Graph_edge {
- /**
- * @brief Allows to modify vertices of the edge.
- */
- void setId(Root_vertex_handle a, Root_vertex_handle b);
-
- /**
- * @brief Returns the first vertex of the edge.
- */
- Root_vertex_handle first() const;
-
- /**
- * @brief Returns the second vertex of the edge.
- */
- Root_vertex_handle second() const;
-
- friend ostream& operator<<(ostream& o, const Simple_edge & v);
- };
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // CONCEPT_SKELETON_BLOCKER_SKELETONBLOCKERDS_H_
diff --git a/concept/Skeleton_blocker/SkeletonBlockerGeometricDS.h b/concept/Skeleton_blocker/SkeletonBlockerGeometricDS.h
deleted file mode 100644
index d8521343..00000000
--- a/concept/Skeleton_blocker/SkeletonBlockerGeometricDS.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONCEPT_SKELETON_BLOCKER_SKELETONBLOCKERGEOMETRICDS_H_
-#define CONCEPT_SKELETON_BLOCKER_SKELETONBLOCKERGEOMETRICDS_H_
-
-namespace Gudhi {
-namespace skeleton_blocker {
-
-/**
- * \brief Concept for template class of Skeleton_blocker_geometric_complex .
- * It must specify a GeometryTrait which contains a Point definition.
- *
- * Graph_vertex must specify how to access to a point.
- * Graph_edge must specify how to access to an index.
- *
- */
-// TODO(DS): the index is just for contraction, to remove
-
-template<typename GeometryTrait>
-struct SkeletonBlockerGeometricDS : public SkeletonBlockerDS {
- /**
- * Geometry information.
- */
- typedef GeometryTrait GT;
-
- /**
- * Type of point (should be the same as GT::Point).
- */
- typedef typename GeometryTrait::Point Point;
-
- /**
- * @brief Vertex that stores a point.
- */
- class Graph_vertex : public SkeletonBlockerDS::Graph_vertex {
- public:
- /**
- * @brief Access to the point.
- */
- Point& point();
- /**
- * @brief Access to the point.
- */
- const Point& point();
- };
-
- /**
- * @brief Edge that allows to access to an index.
- * The indices of the edges are used to store heap information
- * in the edge contraction algorithm.
- */
- class Graph_Edge : public SkeletonBlockerDS::Graph_edge {
- public:
- /**
- * @brief Access to the index.
- */
- int& index();
- /**
- * @brief Access to the index.
- */
- int index();
- };
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // CONCEPT_SKELETON_BLOCKER_SKELETONBLOCKERGEOMETRICDS_H_
diff --git a/concept/Witness_complex/SimplicialComplexForWitness.h b/concept/Witness_complex/SimplicialComplexForWitness.h
deleted file mode 100644
index 8b85f4e4..00000000
--- a/concept/Witness_complex/SimplicialComplexForWitness.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Siargey Kachanovich
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONCEPT_WITNESS_COMPLEX_SIMPLICIAL_COMPLEX_FOR_WITNESS_H_
-#define CONCEPT_WITNESS_COMPLEX_SIMPLICIAL_COMPLEX_FOR_WITNESS_H_
-
-namespace Gudhi {
-
-namespace witness_complex {
-
-/** \brief The concept SimplicialComplexForWitness describes the requirements
- * for a type to implement a simplicial complex,
- * used for example to build a Witness_complex or Strong_witness_complex.
- */
-struct SimplicialComplexForWitness {
- /** Handle to specify a simplex. */
- typedef unspecified Simplex_handle;
- // /** Handle to specify a vertex. Must be a non-negative integer. */
- // typedef unspecified Vertex_handle;
-
- /** \brief Returns a Simplex_hanlde that is different from all simplex handles
- * of the simplices. */
- Simplex_handle null_simplex();
-
- /** Returns the number of vertices in the simplicial complex
- */
- std::size_t num_vertices();
-
- /** \brief Return type of an insertion of a simplex
- */
- typedef unspecified Insertion_result_type;
-
- /** \brief Inserts a simplex with vertices from a given range
- * 'vertex_range' in the simplicial complex.
- * The function is only used in Witness_complex class
- * and by construction, it is not necessary to check if
- * the faces are in the simplicial complex before insertion.
- * The simplex is given the filtration value 'filtration'.
- * Filtration_value should be convertible from double.
- * The return type is not used.
- * */
- template< typedef Input_vertex_range >
- Insertion_result_type insert_simplex(Input_vertex_range const & vertex_range, Filtration_value filtration);
-
- /** \brief Inserts a simplex and all its faces
- * with vertices from a given range
- * 'vertex_range' in the simplicial complex.
- * The function is only used in Strong_witness_complex class.
- * All inserted simplices are given the filtration
- * value 'filtration'.
- * Filtration_value should be convertible from double.
- * The return type is not used.
- */
-
- template< typedef Input_vertex_range,
- typedef Filtration_value>
- Insertion_result_type insert_simplex_and_subfaces(Input_vertex_range const & vertex_range, Filtration_value filtration);
-
- /** \brief Finds a simplex with vertices given by a range
- *
- * If a simplex exists, its Simplex_handle is returned.
- * Otherwise null_simplex() is returned. */
- template< typedef Input_vertex_range >
- Simplex_handle find(Input_vertex_range const & vertex_range);
-
- /** \brief Sets the dimension of the simplicial complex to
- * 'dimension'.
- */
- void set_dimension(int dimension);
-
- /** \brief Returns the filtration of the simplex given by
- * the simplex handle 'sh'.
- */
- double filtration(Simplex_handle sh);
-};
-
-} // namespace witness_complex
-
-} // namespace Gudhi
-
-#endif // CONCEPT_WITNESS_COMPLEX_SIMPLICIAL_COMPLEX_FOR_WITNESS_H_
diff --git a/cython/CMakeLists.txt b/cython/CMakeLists.txt
deleted file mode 100644
index 09ea28f1..00000000
--- a/cython/CMakeLists.txt
+++ /dev/null
@@ -1,405 +0,0 @@
-project(Cython)
-
-function( add_gudhi_cython_lib THE_LIB )
- if(EXISTS ${THE_LIB})
- get_filename_component(THE_LIB_FILE_NAME ${THE_LIB} NAME_WE)
- if(WIN32)
- message("++ ${THE_LIB} => THE_LIB_FILE_NAME = ${THE_LIB_FILE_NAME}")
- set(GUDHI_CYTHON_LIBRARIES "${GUDHI_CYTHON_LIBRARIES}'${THE_LIB_FILE_NAME}', " PARENT_SCOPE)
- else(WIN32)
- STRING(REGEX REPLACE "lib" "" UNIX_LIB_FILE_NAME ${THE_LIB_FILE_NAME})
- message("++ ${THE_LIB} => UNIX_LIB_FILE_NAME = ${UNIX_LIB_FILE_NAME}")
- set(GUDHI_CYTHON_LIBRARIES "${GUDHI_CYTHON_LIBRARIES}'${UNIX_LIB_FILE_NAME}', " PARENT_SCOPE)
- endif(WIN32)
- endif(EXISTS ${THE_LIB})
-endfunction( add_gudhi_cython_lib )
-
-# THE_TEST is the python test file name (without .py extension) containing tests functions
-function( add_gudhi_py_test THE_TEST )
- if(PYTEST_FOUND)
- # use ${PYTHON_EXECUTABLE} -B, otherwise a __pycache__ directory is created in sources by python
- # use py.test no cache provider, otherwise a .cache file is created in sources by py.test
- add_test(NAME ${THE_TEST}_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${PYTHON_EXECUTABLE} -B -m pytest -p no:cacheprovider ${CMAKE_CURRENT_SOURCE_DIR}/test/${THE_TEST}.py)
- endif()
-endfunction( add_gudhi_py_test )
-
-# Set gudhi.__debug_info__
-# WARNING : to be done before gudhi.pyx.in configure_file
-function( add_gudhi_debug_info DEBUG_INFO )
- set(GUDHI_CYTHON_DEBUG_INFO "${GUDHI_CYTHON_DEBUG_INFO} \"${DEBUG_INFO}\\n\" \\\n" PARENT_SCOPE)
-endfunction( add_gudhi_debug_info )
-
-
-if(CYTHON_FOUND)
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}off_reader;")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}simplex_tree;")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}rips_complex;")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}cubical_complex;")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}periodic_cubical_complex;")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}persistence_graphical_tools;")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}reader_utils;")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}witness_complex;")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}strong_witness_complex;")
-
- add_gudhi_debug_info("Python version ${PYTHON_VERSION_STRING}")
- add_gudhi_debug_info("Cython version ${CYTHON_VERSION}")
- if(PYTEST_FOUND)
- add_gudhi_debug_info("Pytest version ${PYTEST_VERSION}")
- endif()
- if(MATPLOTLIB_FOUND)
- add_gudhi_debug_info("Matplotlib version ${MATPLOTLIB_VERSION}")
- endif()
- if(NUMPY_FOUND)
- add_gudhi_debug_info("Numpy version ${NUMPY_VERSION}")
- endif()
- if(MATPLOTLIB_FOUND AND NUMPY_FOUND)
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}persistence_graphical_tools;")
- else()
- set(GUDHI_CYTHON_MISSING_MODULES "${GUDHI_CYTHON_MODULES}persistence_graphical_tools;")
- endif()
-
- message("++ ${PYTHON_EXECUTABLE} v.${PYTHON_VERSION_STRING} - Cython is ${CYTHON_VERSION} - Sphinx is ${SPHINX_PATH}")
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DBOOST_RESULT_OF_USE_DECLTYPE', ")
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DBOOST_ALL_NO_LIB', ")
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DBOOST_SYSTEM_NO_DEPRECATED', ")
-
- # Gudhi and CGAL compilation option
- if(MSVC)
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'/fp:strict', ")
- else(MSVC)
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-std=c++11', ")
- endif(MSVC)
- if(CMAKE_COMPILER_IS_GNUCXX)
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-frounding-math', ")
- endif(CMAKE_COMPILER_IS_GNUCXX)
- if (CMAKE_CXX_COMPILER_ID MATCHES Intel)
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-fp-model strict', ")
- endif(CMAKE_CXX_COMPILER_ID MATCHES Intel)
- if (DEBUG_TRACES)
- # For programs to be more verbose
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DDEBUG_TRACES', ")
- endif()
-
- if (EIGEN3_FOUND)
- add_gudhi_debug_info("Eigen3 version ${EIGEN3_VERSION}")
- # No problem, even if no CGAL found
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DCGAL_EIGEN3_ENABLED', ")
- endif (EIGEN3_FOUND)
-
- if (NOT CGAL_VERSION VERSION_LESS 4.8.1)
- set(GUDHI_CYTHON_BOTTLENECK_DISTANCE "include '${CMAKE_CURRENT_SOURCE_DIR}/cython/bottleneck_distance.pyx'")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}bottleneck_distance;")
- set(GUDHI_CYTHON_NERVE_GIC "include '${CMAKE_CURRENT_SOURCE_DIR}/cython/nerve_gic.pyx'")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}nerve_gic;")
- else()
- set(GUDHI_CYTHON_MISSING_MODULES "${GUDHI_CYTHON_MISSING_MODULES}bottleneck_distance;")
- set(GUDHI_CYTHON_MISSING_MODULES "${GUDHI_CYTHON_MISSING_MODULES}nerve_gic;")
- endif ()
- if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
- set(GUDHI_CYTHON_SUBSAMPLING "include '${CMAKE_CURRENT_SOURCE_DIR}/cython/subsampling.pyx'")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}subsampling;")
- set(GUDHI_CYTHON_TANGENTIAL_COMPLEX "include '${CMAKE_CURRENT_SOURCE_DIR}/cython/tangential_complex.pyx'")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}tangential_complex;")
- else()
- set(GUDHI_CYTHON_MISSING_MODULES "${GUDHI_CYTHON_MISSING_MODULES}subsampling;")
- set(GUDHI_CYTHON_MISSING_MODULES "${GUDHI_CYTHON_MISSING_MODULES}tangential_complex;")
- endif ()
- if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.7.0)
- set(GUDHI_CYTHON_ALPHA_COMPLEX "include '${CMAKE_CURRENT_SOURCE_DIR}/cython/alpha_complex.pyx'")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}alpha_complex;")
- else()
- set(GUDHI_CYTHON_MISSING_MODULES "${GUDHI_CYTHON_MISSING_MODULES}alpha_complex;")
- endif ()
- if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.6.0)
- set(GUDHI_CYTHON_EUCLIDEAN_WITNESS_COMPLEX
- "include '${CMAKE_CURRENT_SOURCE_DIR}/cython/euclidean_witness_complex.pyx'\ninclude '${CMAKE_CURRENT_SOURCE_DIR}/cython/euclidean_strong_witness_complex.pyx'\n")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}euclidean_witness_complex;")
- set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}euclidean_strong_witness_complex;")
- else()
- set(GUDHI_CYTHON_MISSING_MODULES "${GUDHI_CYTHON_MISSING_MODULES}euclidean_witness_complex;")
- set(GUDHI_CYTHON_MISSING_MODULES "${GUDHI_CYTHON_MISSING_MODULES}euclidean_strong_witness_complex;")
- endif ()
-
- add_gudhi_debug_info("Installed modules are: ${GUDHI_CYTHON_MODULES}")
- if(GUDHI_CYTHON_MISSING_MODULES)
- add_gudhi_debug_info("Missing modules are: ${GUDHI_CYTHON_MISSING_MODULES}")
- endif()
-
- if(CGAL_FOUND)
- can_cgal_use_cxx11_thread_local()
- if (NOT CGAL_CAN_USE_CXX11_THREAD_LOCAL_RESULT)
- if(CMAKE_BUILD_TYPE MATCHES Debug)
- add_gudhi_cython_lib("${Boost_THREAD_LIBRARY_DEBUG}")
- else()
- add_gudhi_cython_lib("${Boost_THREAD_LIBRARY_RELEASE}")
- endif()
- set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${Boost_LIBRARY_DIRS}', ")
- endif()
- # Add CGAL compilation args
- if(CGAL_HEADER_ONLY)
- add_gudhi_debug_info("CGAL header only version ${CGAL_VERSION}")
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DCGAL_HEADER_ONLY', ")
- else(CGAL_HEADER_ONLY)
- add_gudhi_debug_info("CGAL version ${CGAL_VERSION}")
- add_gudhi_cython_lib("${CGAL_LIBRARY}")
- set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${CGAL_LIBRARIES_DIR}', ")
- # If CGAL is not header only, CGAL library may link with boost system,
- if(CMAKE_BUILD_TYPE MATCHES Debug)
- add_gudhi_cython_lib("${Boost_SYSTEM_LIBRARY_DEBUG}")
- else()
- add_gudhi_cython_lib("${Boost_SYSTEM_LIBRARY_RELEASE}")
- endif()
- set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${Boost_LIBRARY_DIRS}', ")
- endif(CGAL_HEADER_ONLY)
- # GMP and GMPXX are not required, but if present, CGAL will link with them.
- if(GMP_FOUND)
- add_gudhi_debug_info("GMP_LIBRARIES = ${GMP_LIBRARIES}")
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DCGAL_USE_GMP', ")
- add_gudhi_cython_lib("${GMP_LIBRARIES}")
- set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${GMP_LIBRARIES_DIR}', ")
- if(GMPXX_FOUND)
- add_gudhi_debug_info("GMPXX_LIBRARIES = ${GMPXX_LIBRARIES}")
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DCGAL_USE_GMPXX', ")
- add_gudhi_cython_lib("${GMPXX_LIBRARIES}")
- set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${GMPXX_LIBRARIES_DIR}', ")
- endif(GMPXX_FOUND)
- endif(GMP_FOUND)
- endif(CGAL_FOUND)
-
- # Specific for Mac
- if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-mmacosx-version-min=10.12', ")
- set(GUDHI_CYTHON_EXTRA_LINK_ARGS "${GUDHI_CYTHON_EXTRA_LINK_ARGS}'-mmacosx-version-min=10.12', ")
- endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-
- # Loop on INCLUDE_DIRECTORIES PROPERTY
- get_property(GUDHI_INCLUDE_DIRECTORIES DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
- foreach(GUDHI_INCLUDE_DIRECTORY ${GUDHI_INCLUDE_DIRECTORIES})
- set(GUDHI_CYTHON_INCLUDE_DIRS "${GUDHI_CYTHON_INCLUDE_DIRS}'${GUDHI_INCLUDE_DIRECTORY}', ")
- endforeach()
- set(GUDHI_CYTHON_INCLUDE_DIRS "${GUDHI_CYTHON_INCLUDE_DIRS}'${CMAKE_SOURCE_DIR}/${GUDHI_CYTHON_PATH}/include', ")
-
- if (TBB_FOUND AND WITH_GUDHI_USE_TBB)
- add_gudhi_debug_info("TBB version ${TBB_INTERFACE_VERSION} found and used")
- set(GUDHI_CYTHON_EXTRA_COMPILE_ARGS "${GUDHI_CYTHON_EXTRA_COMPILE_ARGS}'-DGUDHI_USE_TBB', ")
- if(CMAKE_BUILD_TYPE MATCHES Debug)
- add_gudhi_cython_lib("${TBB_DEBUG_LIBRARY}")
- add_gudhi_cython_lib("${TBB_MALLOC_DEBUG_LIBRARY}")
- else()
- add_gudhi_cython_lib("${TBB_RELEASE_LIBRARY}")
- add_gudhi_cython_lib("${TBB_MALLOC_RELEASE_LIBRARY}")
- endif()
- set(GUDHI_CYTHON_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}'${TBB_LIBRARY_DIRS}', ")
- set(GUDHI_CYTHON_INCLUDE_DIRS "${GUDHI_CYTHON_INCLUDE_DIRS}'${TBB_INCLUDE_DIRS}', ")
- endif()
-
- if(UNIX)
- set( GUDHI_CYTHON_RUNTIME_LIBRARY_DIRS "${GUDHI_CYTHON_LIBRARY_DIRS}")
- endif(UNIX)
-
- # Generate setup.py file to cythonize Gudhi - This file must be named setup.py by convention
- configure_file(setup.py.in "${CMAKE_CURRENT_BINARY_DIR}/setup.py" @ONLY)
- # Generate gudhi.pyx - Gudhi cython file
- configure_file(gudhi.pyx.in "${CMAKE_CURRENT_BINARY_DIR}/gudhi.pyx" @ONLY)
-
- add_custom_command(
- OUTPUT gudhi.so
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_BINARY_DIR}/setup.py" "build_ext" "--inplace")
-
- add_custom_target(cython ALL DEPENDS gudhi.so
- COMMENT "Do not forget to add ${CMAKE_CURRENT_BINARY_DIR}/ to your PYTHONPATH before using examples or tests")
-
- # For installation purpose
- # TODO(VR) : files matching pattern mechanism is copying all cython directory
- install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" DESTINATION "${PYTHON_SITE_PACKAGES}/" FILES_MATCHING
- PATTERN "*.so"
- PATTERN "*.dylib"
- PATTERN "*.pyd")
-
- # Test examples
- if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
- # Bottleneck and Alpha
- add_test(NAME alpha_rips_persistence_bottleneck_distance_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/alpha_rips_persistence_bottleneck_distance.py"
- -f ${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off -t 0.15 -d 3)
-
- if(MATPLOTLIB_FOUND AND NUMPY_FOUND)
- # Tangential
- add_test(NAME tangential_complex_plain_homology_from_off_file_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/tangential_complex_plain_homology_from_off_file_example.py"
- --no-diagram -i 2 -f ${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off)
-
- add_gudhi_py_test(test_tangential_complex)
-
- # Witness complex AND Subsampling
- add_test(NAME euclidean_strong_witness_complex_diagram_persistence_from_off_file_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py"
- --no-diagram -f ${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off -a 1.0 -n 20 -d 2)
-
- add_test(NAME euclidean_witness_complex_diagram_persistence_from_off_file_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/euclidean_witness_complex_diagram_persistence_from_off_file_example.py"
- --no-diagram -f ${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off -a 1.0 -n 20 -d 2)
- endif()
-
- # Subsampling
- add_gudhi_py_test(test_subsampling)
-
- endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
- if (NOT CGAL_VERSION VERSION_LESS 4.8.1)
- # Bottleneck
- add_test(NAME bottleneck_basic_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/bottleneck_basic_example.py")
-
- add_gudhi_py_test(test_bottleneck_distance)
-
- # Cover complex
- file(COPY ${CMAKE_SOURCE_DIR}/data/points/human.off DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
- file(COPY ${CMAKE_SOURCE_DIR}/data/points/COIL_database/lucky_cat.off DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
- file(COPY ${CMAKE_SOURCE_DIR}/data/points/COIL_database/lucky_cat_PCA1 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
- add_test(NAME cover_complex_nerve_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/nerve_of_a_covering.py"
- -f human.off -c 2 -r 10 -g 0.3)
-
- add_test(NAME cover_complex_coordinate_gic_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/coordinate_graph_induced_complex.py"
- -f human.off -c 0 -v)
-
- add_test(NAME cover_complex_functional_gic_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/functional_graph_induced_complex.py"
- -o lucky_cat.off
- -f lucky_cat_PCA1 -v)
-
- add_test(NAME cover_complex_voronoi_gic_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/voronoi_graph_induced_complex.py"
- -f human.off -n 700 -v)
-
- add_gudhi_py_test(test_cover_complex)
- endif (NOT CGAL_VERSION VERSION_LESS 4.8.1)
-
- if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.7.0)
- # Alpha
- add_test(NAME alpha_complex_from_points_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/alpha_complex_from_points_example.py")
-
- if(MATPLOTLIB_FOUND AND NUMPY_FOUND)
- add_test(NAME alpha_complex_diagram_persistence_from_off_file_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/alpha_complex_diagram_persistence_from_off_file_example.py"
- --no-diagram -f ${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off -a 0.6)
- endif()
-
- add_gudhi_py_test(test_alpha_complex)
-
- endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.7.0)
-
- if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.6.0)
- # Euclidean witness
- add_gudhi_py_test(test_euclidean_witness_complex)
-
- endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.6.0)
-
- # Cubical
- add_test(NAME periodic_cubical_complex_barcode_persistence_from_perseus_file_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py"
- --no-barcode -f ${CMAKE_SOURCE_DIR}/data/bitmap/CubicalTwoSphere.txt)
-
- if(NUMPY_FOUND)
- add_test(NAME random_cubical_complex_persistence_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/random_cubical_complex_persistence_example.py"
- 10 10 10)
- endif()
-
- add_gudhi_py_test(test_cubical_complex)
-
- # Rips
- if(MATPLOTLIB_FOUND AND NUMPY_FOUND)
- add_test(NAME rips_complex_diagram_persistence_from_distance_matrix_file_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/example/rips_complex_diagram_persistence_from_distance_matrix_file_example.py"
- --no-diagram -f ${CMAKE_SOURCE_DIR}/data/distance_matrix/lower_triangular_distance_matrix.csv -e 12.0 -d 3)
-
- add_test(NAME rips_complex_diagram_persistence_from_off_file_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/example/rips_complex_diagram_persistence_from_off_file_example.py
- --no-diagram -f ${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off -e 0.25 -d 3)
- endif()
-
- add_test(NAME rips_complex_from_points_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/example/rips_complex_from_points_example.py)
-
- add_gudhi_py_test(test_rips_complex)
-
- # Simplex tree
- add_test(NAME simplex_tree_example_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/example/simplex_tree_example.py)
-
- add_gudhi_py_test(test_simplex_tree)
-
- # Witness
- add_test(NAME witness_complex_from_nearest_landmark_table_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/example/witness_complex_from_nearest_landmark_table.py)
-
- add_gudhi_py_test(test_witness_complex)
-
- # Reader utils
- add_gudhi_py_test(test_reader_utils)
-
- # Documentation generation is available through sphinx - requires all modules
- if(SPHINX_PATH AND MATPLOTLIB_FOUND AND NUMPY_FOUND AND NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
- set (GUDHI_SPHINX_MESSAGE "Generating API documentation with Sphinx in ${CMAKE_CURRENT_BINARY_DIR}/sphinx/")
- # User warning - Sphinx is a static pages generator, and configured to work fine with user_version
- # Images and biblio warnings because not found on developper version
- if (GUDHI_CYTHON_PATH STREQUAL "src/cython")
- set (GUDHI_SPHINX_MESSAGE "${GUDHI_SPHINX_MESSAGE} \n WARNING : Sphinx is configured for user version, you run it on developper version. Images and biblio will miss")
- endif()
- # sphinx target requires gudhi.so, because conf.py reads gudhi version from it
- add_custom_target(sphinx
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${SPHINX_PATH} -b html ${CMAKE_CURRENT_SOURCE_DIR}/doc ${CMAKE_CURRENT_BINARY_DIR}/sphinx
- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/gudhi.so"
- COMMENT "${GUDHI_SPHINX_MESSAGE}" VERBATIM)
-
- add_test(NAME sphinx_py_test
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}"
- ${SPHINX_PATH} -b doctest ${CMAKE_CURRENT_SOURCE_DIR}/doc ${CMAKE_CURRENT_BINARY_DIR}/doctest)
-
- endif()
-endif(CYTHON_FOUND)
diff --git a/cython/CONVENTIONS b/cython/CONVENTIONS
deleted file mode 100644
index 804e97f3..00000000
--- a/cython/CONVENTIONS
+++ /dev/null
@@ -1,9 +0,0 @@
-Gudhi is following PEP8 conventions.
-
-Please refer to:
-https://www.python.org/dev/peps/pep-0008/
-
-A summary:
- - modules (filenames) should have short, all-lowercase names, and they can contain underscores.
- - packages (directories) should have short, all-lowercase names, preferably without underscores.
- - classes should use the CapWords convention. \ No newline at end of file
diff --git a/cython/README b/cython/README
deleted file mode 100644
index 7d2c4491..00000000
--- a/cython/README
+++ /dev/null
@@ -1,3 +0,0 @@
-
-If you do not want to install the package, just launch the following command to help Python to find the compiled package :
-$> export PYTHONPATH=`pwd`:$PYTHONPATH
diff --git a/cython/cython/alpha_complex.pyx b/cython/cython/alpha_complex.pyx
deleted file mode 100644
index 4f772e31..00000000
--- a/cython/cython/alpha_complex.pyx
+++ /dev/null
@@ -1,121 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.utility cimport pair
-from libcpp.string cimport string
-from libcpp cimport bool
-import os
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Alpha_complex_interface.h" namespace "Gudhi":
- cdef cppclass Alpha_complex_interface "Gudhi::alpha_complex::Alpha_complex_interface":
- Alpha_complex_interface(vector[vector[double]] points)
- # bool from_file is a workaround for cython to find the correct signature
- Alpha_complex_interface(string off_file, bool from_file)
- vector[double] get_point(int vertex)
- void create_simplex_tree(Simplex_tree_interface_full_featured* simplex_tree, double max_alpha_square)
-
-# AlphaComplex python interface
-cdef class AlphaComplex:
- """AlphaComplex is a simplicial complex constructed from the finite cells
- of a Delaunay Triangulation.
-
- The filtration value of each simplex is computed as the square of the
- circumradius of the simplex if the circumsphere is empty (the simplex is
- then said to be Gabriel), and as the minimum of the filtration values of
- the codimension 1 cofaces that make it not Gabriel otherwise.
-
- All simplices that have a filtration value strictly greater than a given
- alpha squared value are not inserted into the complex.
-
- .. note::
-
- When Alpha_complex is constructed with an infinite value of alpha, the
- complex is a Delaunay complex.
-
- """
-
- cdef Alpha_complex_interface * thisptr
-
- # Fake constructor that does nothing but documenting the constructor
- def __init__(self, points=None, off_file=''):
- """AlphaComplex constructor.
-
- :param points: A list of points in d-Dimension.
- :type points: list of list of double
-
- Or
-
- :param off_file: An OFF file style name.
- :type off_file: string
- """
-
- # The real cython constructor
- def __cinit__(self, points=None, off_file=''):
- if off_file is not '':
- if os.path.isfile(off_file):
- self.thisptr = new Alpha_complex_interface(str.encode(off_file), True)
- else:
- print("file " + off_file + " not found.")
- else:
- if points is None:
- # Empty Alpha construction
- points=[]
- self.thisptr = new Alpha_complex_interface(points)
-
-
- def __dealloc__(self):
- if self.thisptr != NULL:
- del self.thisptr
-
- def __is_defined(self):
- """Returns true if AlphaComplex pointer is not NULL.
- """
- return self.thisptr != NULL
-
- def get_point(self, vertex):
- """This function returns the point corresponding to a given vertex.
-
- :param vertex: The vertex.
- :type vertex: int
- :rtype: list of float
- :returns: the point.
- """
- cdef vector[double] point = self.thisptr.get_point(vertex)
- return point
-
- def create_simplex_tree(self, max_alpha_square=float('inf')):
- """
- :param max_alpha_square: The maximum alpha square threshold the
- simplices shall not exceed. Default is set to infinity.
- :type max_alpha_square: float
- :returns: A simplex tree created from the Delaunay Triangulation.
- :rtype: SimplexTree
- """
- simplex_tree = SimplexTree()
- self.thisptr.create_simplex_tree(simplex_tree.thisptr, max_alpha_square)
- return simplex_tree
diff --git a/cython/cython/bottleneck_distance.pyx b/cython/cython/bottleneck_distance.pyx
deleted file mode 100644
index 76ef81f4..00000000
--- a/cython/cython/bottleneck_distance.pyx
+++ /dev/null
@@ -1,61 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.utility cimport pair
-import os
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Bottleneck_distance_interface.h" namespace "Gudhi::persistence_diagram":
- double bottleneck(vector[pair[double, double]], vector[pair[double, double]], double)
- double bottleneck(vector[pair[double, double]], vector[pair[double, double]])
-
-def bottleneck_distance(diagram_1, diagram_2, e=None):
- """This function returns the point corresponding to a given vertex.
-
- :param diagram_1: The first diagram.
- :type diagram_1: vector[pair[double, double]]
- :param diagram_2: The second diagram.
- :type diagram_2: vector[pair[double, double]]
- :param e: If `e` is 0, this uses an expensive algorithm to compute the
- exact distance.
- If `e` is not 0, it asks for an additive `e`-approximation, and
- currently also allows a small multiplicative error (the last 2 or 3
- bits of the mantissa may be wrong). This version of the algorithm takes
- advantage of the limited precision of `double` and is usually a lot
- faster to compute, whatever the value of `e`.
-
- Thus, by default, `e` is the smallest positive double.
- :type e: float
- :rtype: float
- :returns: the bottleneck distance.
- """
- if e is None:
- # Default value is the smallest double value (not 0, 0 is for exact version)
- return bottleneck(diagram_1, diagram_2)
- else:
- # Can be 0 for exact version
- return bottleneck(diagram_1, diagram_2, e)
diff --git a/cython/cython/cubical_complex.pyx b/cython/cython/cubical_complex.pyx
deleted file mode 100644
index e94cd539..00000000
--- a/cython/cython/cubical_complex.pyx
+++ /dev/null
@@ -1,198 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.utility cimport pair
-from libcpp.string cimport string
-from libcpp cimport bool
-import os
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Cubical_complex_interface.h" namespace "Gudhi":
- cdef cppclass Bitmap_cubical_complex_base_interface "Gudhi::Cubical_complex::Cubical_complex_interface<>":
- Bitmap_cubical_complex_base_interface(vector[unsigned] dimensions, vector[double] top_dimensional_cells)
- Bitmap_cubical_complex_base_interface(string perseus_file)
- int num_simplices()
- int dimension()
-
-cdef extern from "Persistent_cohomology_interface.h" namespace "Gudhi":
- cdef cppclass Cubical_complex_persistence_interface "Gudhi::Persistent_cohomology_interface<Gudhi::Cubical_complex::Cubical_complex_interface<>>":
- Cubical_complex_persistence_interface(Bitmap_cubical_complex_base_interface * st, bool persistence_dim_max)
- vector[pair[int, pair[double, double]]] get_persistence(int homology_coeff_field, double min_persistence)
- vector[int] betti_numbers()
- vector[int] persistent_betti_numbers(double from_value, double to_value)
- vector[pair[double,double]] intervals_in_dimension(int dimension)
-
-# CubicalComplex python interface
-cdef class CubicalComplex:
- """The CubicalComplex is an example of a structured complex useful in
- computational mathematics (specially rigorous numerics) and image
- analysis.
- """
- cdef Bitmap_cubical_complex_base_interface * thisptr
-
- cdef Cubical_complex_persistence_interface * pcohptr
-
- # Fake constructor that does nothing but documenting the constructor
- def __init__(self, dimensions=None, top_dimensional_cells=None,
- perseus_file=''):
- """CubicalComplex constructor from dimensions and
- top_dimensional_cells or from a Perseus-style file name.
-
- :param dimensions: A list of number of top dimensional cells.
- :type dimensions: list of int
- :param top_dimensional_cells: A list of cells filtration values.
- :type top_dimensional_cells: list of double
-
- Or
-
- :param perseus_file: A Perseus-style file name.
- :type perseus_file: string
- """
-
- # The real cython constructor
- def __cinit__(self, dimensions=None, top_dimensional_cells=None,
- perseus_file=''):
- if (dimensions is not None) and (top_dimensional_cells is not None) and (perseus_file is ''):
- self.thisptr = new Bitmap_cubical_complex_base_interface(dimensions, top_dimensional_cells)
- elif (dimensions is None) and (top_dimensional_cells is None) and (perseus_file is not ''):
- if os.path.isfile(perseus_file):
- self.thisptr = new Bitmap_cubical_complex_base_interface(str.encode(perseus_file))
- else:
- print("file " + perseus_file + " not found.")
- else:
- print("CubicalComplex can be constructed from dimensions and "
- "top_dimensional_cells or from a Perseus-style file name.")
-
- def __dealloc__(self):
- if self.thisptr != NULL:
- del self.thisptr
- if self.pcohptr != NULL:
- del self.pcohptr
-
- def __is_defined(self):
- """Returns true if CubicalComplex pointer is not NULL.
- """
- return self.thisptr != NULL
-
- def __is_persistence_defined(self):
- """Returns true if Persistence pointer is not NULL.
- """
- return self.pcohptr != NULL
-
- def num_simplices(self):
- """This function returns the number of all cubes in the complex.
-
- :returns: int -- the number of all cubes in the complex.
- """
- return self.thisptr.num_simplices()
-
- def dimension(self):
- """This function returns the dimension of the complex.
-
- :returns: int -- the complex dimension.
- """
- return self.thisptr.dimension()
-
- def persistence(self, homology_coeff_field=11, min_persistence=0):
- """This function returns the persistence of the complex.
-
- :param homology_coeff_field: The homology coefficient field. Must be a
- prime number
- :type homology_coeff_field: int.
- :param min_persistence: The minimum persistence value to take into
- account (strictly greater than min_persistence). Default value is
- 0.0.
- Sets min_persistence to -1.0 to see all values.
- :type min_persistence: float.
- :returns: list of pairs(dimension, pair(birth, death)) -- the
- persistence of the complex.
- """
- if self.pcohptr != NULL:
- del self.pcohptr
- if self.thisptr != NULL:
- self.pcohptr = new Cubical_complex_persistence_interface(self.thisptr, True)
- cdef vector[pair[int, pair[double, double]]] persistence_result
- if self.pcohptr != NULL:
- persistence_result = self.pcohptr.get_persistence(homology_coeff_field, min_persistence)
- return persistence_result
-
- def betti_numbers(self):
- """This function returns the Betti numbers of the complex.
-
- :returns: list of int -- The Betti numbers ([B0, B1, ..., Bn]).
-
- :note: betti_numbers function requires persistence function to be
- launched first.
-
- :note: betti_numbers function always returns [1, 0, 0, ...] as infinity
- filtration cubes are not removed from the complex.
- """
- cdef vector[int] bn_result
- if self.pcohptr != NULL:
- bn_result = self.pcohptr.betti_numbers()
- return bn_result
-
- def persistent_betti_numbers(self, from_value, to_value):
- """This function returns the persistent Betti numbers of the complex.
-
- :param from_value: The persistence birth limit to be added in the
- numbers (persistent birth <= from_value).
- :type from_value: float.
- :param to_value: The persistence death limit to be added in the
- numbers (persistent death > to_value).
- :type to_value: float.
-
- :returns: list of int -- The persistent Betti numbers ([B0, B1, ...,
- Bn]).
-
- :note: persistent_betti_numbers function requires persistence
- function to be launched first.
- """
- cdef vector[int] pbn_result
- if self.pcohptr != NULL:
- pbn_result = self.pcohptr.persistent_betti_numbers(<double>from_value, <double>to_value)
- return pbn_result
-
- def persistence_intervals_in_dimension(self, dimension):
- """This function returns the persistence intervals of the complex in a
- specific dimension.
-
- :param dimension: The specific dimension.
- :type from_value: int.
- :returns: The persistence intervals.
- :rtype: list of pair of float
-
- :note: intervals_in_dim function requires persistence function to be
- launched first.
- """
- cdef vector[pair[double,double]] intervals_result
- if self.pcohptr != NULL:
- intervals_result = self.pcohptr.intervals_in_dimension(dimension)
- else:
- print("intervals_in_dim function requires persistence function"
- " to be launched first.")
- return intervals_result
diff --git a/cython/cython/euclidean_strong_witness_complex.pyx b/cython/cython/euclidean_strong_witness_complex.pyx
deleted file mode 100644
index 62b7cf71..00000000
--- a/cython/cython/euclidean_strong_witness_complex.pyx
+++ /dev/null
@@ -1,97 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.utility cimport pair
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Euclidean_strong_witness_complex_interface.h" namespace "Gudhi":
- cdef cppclass Euclidean_strong_witness_complex_interface "Gudhi::witness_complex::Euclidean_strong_witness_complex_interface":
- Euclidean_strong_witness_complex_interface(vector[vector[double]] landmarks, vector[vector[double]] witnesses)
- void create_simplex_tree(Simplex_tree_interface_full_featured* simplex_tree, double max_alpha_square)
- void create_simplex_tree(Simplex_tree_interface_full_featured* simplex_tree, double max_alpha_square,
- unsigned limit_dimension)
- vector[double] get_point(unsigned vertex)
-
-# EuclideanStrongWitnessComplex python interface
-cdef class EuclideanStrongWitnessComplex:
- """Constructs strong witness complex for given sets of witnesses and
- landmarks in Euclidean space.
- """
-
- cdef Euclidean_strong_witness_complex_interface * thisptr
-
- # Fake constructor that does nothing but documenting the constructor
- def __init__(self, landmarks=None, witnesses=None):
- """WitnessComplex constructor.
-
- :param landmarks: A list of landmarks (in the point cloud).
- :type landmarks: list of list of double
-
- :param witnesses: The point cloud.
- :type witnesses: list of list of double
- """
-
- # The real cython constructor
- def __cinit__(self, landmarks=None, witnesses=None):
- if landmarks is not None and witnesses is not None:
- self.thisptr = new Euclidean_strong_witness_complex_interface(landmarks, witnesses)
-
- def __dealloc__(self):
- if self.thisptr != NULL:
- del self.thisptr
-
- def __is_defined(self):
- """Returns true if WitnessComplex pointer is not NULL.
- """
- return self.thisptr != NULL
-
- def create_simplex_tree(self, max_alpha_square, limit_dimension = -1):
- """
- :param max_alpha_square: The maximum alpha square threshold the
- simplices shall not exceed. Default is set to infinity.
- :type max_alpha_square: float
- :returns: A simplex tree created from the Delaunay Triangulation.
- :rtype: SimplexTree
- """
- simplex_tree = SimplexTree()
- if limit_dimension is not -1:
- self.thisptr.create_simplex_tree(simplex_tree.thisptr, max_alpha_square, limit_dimension)
- else:
- self.thisptr.create_simplex_tree(simplex_tree.thisptr, max_alpha_square)
- return simplex_tree
-
- def get_point(self, vertex):
- """This function returns the point corresponding to a given vertex.
-
- :param vertex: The vertex.
- :type vertex: int.
- :returns: The point.
- :rtype: list of float
- """
- cdef vector[double] point = self.thisptr.get_point(vertex)
- return point
-
diff --git a/cython/cython/euclidean_witness_complex.pyx b/cython/cython/euclidean_witness_complex.pyx
deleted file mode 100644
index c10ca73d..00000000
--- a/cython/cython/euclidean_witness_complex.pyx
+++ /dev/null
@@ -1,97 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.utility cimport pair
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Euclidean_witness_complex_interface.h" namespace "Gudhi":
- cdef cppclass Euclidean_witness_complex_interface "Gudhi::witness_complex::Euclidean_witness_complex_interface":
- Euclidean_witness_complex_interface(vector[vector[double]] landmarks, vector[vector[double]] witnesses)
- void create_simplex_tree(Simplex_tree_interface_full_featured* simplex_tree, double max_alpha_square)
- void create_simplex_tree(Simplex_tree_interface_full_featured* simplex_tree, double max_alpha_square,
- unsigned limit_dimension)
- vector[double] get_point(unsigned vertex)
-
-# EuclideanWitnessComplex python interface
-cdef class EuclideanWitnessComplex:
- """Constructs (weak) witness complex for given sets of witnesses and
- landmarks in Euclidean space.
- """
-
- cdef Euclidean_witness_complex_interface * thisptr
-
- # Fake constructor that does nothing but documenting the constructor
- def __init__(self, landmarks=None, witnesses=None):
- """WitnessComplex constructor.
-
- :param landmarks: A list of landmarks (in the point cloud).
- :type landmarks: list of list of double
-
- :param witnesses: The point cloud.
- :type witnesses: list of list of double
- """
-
- # The real cython constructor
- def __cinit__(self, landmarks=None, witnesses=None):
- if landmarks is not None and witnesses is not None:
- self.thisptr = new Euclidean_witness_complex_interface(landmarks, witnesses)
-
- def __dealloc__(self):
- if self.thisptr != NULL:
- del self.thisptr
-
- def __is_defined(self):
- """Returns true if WitnessComplex pointer is not NULL.
- """
- return self.thisptr != NULL
-
- def create_simplex_tree(self, max_alpha_square, limit_dimension = -1):
- """
- :param max_alpha_square: The maximum alpha square threshold the
- simplices shall not exceed. Default is set to infinity.
- :type max_alpha_square: float
- :returns: A simplex tree created from the Delaunay Triangulation.
- :rtype: SimplexTree
- """
- simplex_tree = SimplexTree()
- if limit_dimension is not -1:
- self.thisptr.create_simplex_tree(simplex_tree.thisptr, max_alpha_square, limit_dimension)
- else:
- self.thisptr.create_simplex_tree(simplex_tree.thisptr, max_alpha_square)
- return simplex_tree
-
- def get_point(self, vertex):
- """This function returns the point corresponding to a given vertex.
-
- :param vertex: The vertex.
- :type vertex: int.
- :returns: The point.
- :rtype: list of float
- """
- cdef vector[double] point = self.thisptr.get_point(vertex)
- return point
-
diff --git a/cython/cython/nerve_gic.pyx b/cython/cython/nerve_gic.pyx
deleted file mode 100644
index 30a14d3b..00000000
--- a/cython/cython/nerve_gic.pyx
+++ /dev/null
@@ -1,401 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.utility cimport pair
-from libcpp.string cimport string
-from libcpp cimport bool
-import os
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2018 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2018 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Nerve_gic_interface.h" namespace "Gudhi":
- cdef cppclass Nerve_gic_interface "Gudhi::cover_complex::Nerve_gic_interface":
- Nerve_gic_interface()
- double compute_confidence_level_from_distance(double distance)
- double compute_distance_from_confidence_level(double alpha)
- void compute_distribution(int N)
- double compute_p_value()
- void compute_PD()
- void find_simplices()
- void create_simplex_tree(Simplex_tree_interface_full_featured* simplex_tree)
- bool read_point_cloud(string off_file_name)
- double set_automatic_resolution()
- void set_color_from_coordinate(int k)
- void set_color_from_file(string color_file_name)
- void set_color_from_vector(vector[double] color)
- void set_cover_from_file(string cover_file_name)
- void set_cover_from_function()
- void set_cover_from_Euclidean_Voronoi(int m)
- void set_function_from_coordinate(int k)
- void set_function_from_file(string func_file_name)
- void set_function_from_range(vector[double] function)
- void set_gain(double g)
- double set_graph_from_automatic_euclidean_rips(int N)
- void set_graph_from_file(string graph_file_name)
- void set_graph_from_OFF()
- void set_graph_from_euclidean_rips(double threshold)
- void set_mask(int nodemask)
- void set_resolution_with_interval_length(double resolution)
- void set_resolution_with_interval_number(int resolution)
- void set_subsampling(double constant, double power)
- void set_type(string type)
- void set_verbose(bool verbose)
- vector[int] subpopulation(int c)
- void write_info()
- void plot_DOT()
- void plot_OFF()
-
-# CoverComplex python interface
-cdef class CoverComplex:
- """Cover complex data structure.
-
- The data structure is a simplicial complex, representing a Graph Induced
- simplicial Complex (GIC) or a Nerve, and whose simplices are computed with
- a cover C of a point cloud P, which often comes from the preimages of
- intervals covering the image of a function f defined on P. These intervals
- are parameterized by their resolution (either their length or their number)
- and their gain (percentage of overlap). To compute a GIC, one also needs a
- graph G built on top of P, whose cliques with vertices belonging to
- different elements of C correspond to the simplices of the GIC.
- """
-
- cdef Nerve_gic_interface * thisptr
-
- # Fake constructor that does nothing but documenting the constructor
- def __init__(self):
- """CoverComplex constructor.
- """
-
- # The real cython constructor
- def __cinit__(self):
- self.thisptr = new Nerve_gic_interface()
-
- def __dealloc__(self):
- if self.thisptr != NULL:
- del self.thisptr
-
- def __is_defined(self):
- """Returns true if CoverComplex pointer is not NULL.
- """
- return self.thisptr != NULL
-
- def compute_confidence_level_from_distance(self, distance):
- """Computes the confidence level of a specific bottleneck distance
- threshold.
-
- :param distance: Bottleneck distance.
- :type distance: double
- :rtype: double
- :returns: Confidence level.
- """
- return self.thisptr.compute_confidence_level_from_distance(distance)
-
- def compute_distance_from_confidence_level(self, alpha):
- """Computes the bottleneck distance threshold corresponding to a
- specific confidence level.
-
- :param alpha: Confidence level.
- :type alpha: double
- :rtype: double
- :returns: Bottleneck distance.
- """
- return self.thisptr.compute_distance_from_confidence_level(alpha)
-
- def compute_distribution(self, N=100):
- """Computes bootstrapped distances distribution.
-
- :param N: Loop number (default value is 100).
- :type alpha: int
- """
- self.thisptr.compute_distribution(N)
-
- def compute_p_value(self):
- """Computes the p-value, i.e. the opposite of the confidence level of
- the largest bottleneck distance preserving the points in the
- persistence diagram of the output simplicial complex.
-
- :rtype: double
- :returns: p-value.
- """
- return self.thisptr.compute_p_value()
-
- def compute_PD(self):
- """Computes the extended persistence diagram of the complex.
- """
- self.thisptr.compute_PD()
-
- def create_simplex_tree(self):
- """
- :returns: A simplex tree created from the Cover complex.
- :rtype: SimplexTree
- """
- simplex_tree = SimplexTree()
- self.thisptr.create_simplex_tree(simplex_tree.thisptr)
- return simplex_tree
-
- def find_simplices(self):
- """Computes the simplices of the simplicial complex.
- """
- self.thisptr.find_simplices()
-
- def read_point_cloud(self, off_file):
- """Reads and stores the input point cloud.
-
- :param off_file: Name of the input .OFF or .nOFF file.
- :type off_file: string
- :rtype: bool
- :returns: Read file status.
- """
- if os.path.isfile(off_file):
- return self.thisptr.read_point_cloud(str.encode(off_file))
- else:
- print("file " + off_file + " not found.")
- return False
-
- def set_automatic_resolution(self):
- """Computes the optimal length of intervals (i.e. the smallest interval
- length avoiding discretization artifacts—see :cite:`Carriere17c`) for a
- functional cover.
-
- :rtype: double
- :returns: reso interval length used to compute the cover.
- """
- return self.thisptr.set_automatic_resolution()
-
- def set_color_from_coordinate(self, k=0):
- """Computes the function used to color the nodes of the simplicial
- complex from the k-th coordinate.
-
- :param k: Coordinate to use (start at 0). Default value is 0.
- :type k: int
- """
- return self.thisptr.set_color_from_coordinate(k)
-
- def set_color_from_file(self, color_file_name):
- """Computes the function used to color the nodes of the simplicial
- complex from a file containing the function values.
-
- :param color_file_name: Name of the input color file.
- :type color_file_name: string
- """
- if os.path.isfile(color_file_name):
- self.thisptr.set_color_from_file(str.encode(color_file_name))
- else:
- print("file " + color_file_name + " not found.")
-
- def set_color_from_vector(self, color):
- """Computes the function used to color the nodes of the simplicial
- complex from a vector stored in memory.
-
- :param color: Input vector of values.
- :type color: vector[double]
- """
- self.thisptr.set_color_from_vector(color)
-
- def set_cover_from_file(self, cover_file_name):
- """Creates the cover C from a file containing the cover elements of
- each point (the order has to be the same as in the input file!).
-
- :param cover_file_name: Name of the input cover file.
- :type cover_file_name: string
- """
- if os.path.isfile(cover_file_name):
- self.thisptr.set_cover_from_file(str.encode(cover_file_name))
- else:
- print("file " + cover_file_name + " not found.")
-
- def set_cover_from_function(self):
- """Creates a cover C from the preimages of the function f.
- """
- self.thisptr.set_cover_from_function()
-
- def set_cover_from_Voronoi(self, m=100):
- """Creates the cover C from the Voronoï cells of a subsampling of the
- point cloud.
-
- :param m: Number of points in the subsample. Default value is 100.
- :type m: int
- """
- self.thisptr.set_cover_from_Euclidean_Voronoi(m)
-
- def set_function_from_coordinate(self, k):
- """Creates the function f from the k-th coordinate of the point cloud.
-
- :param k: Coordinate to use (start at 0).
- :type k: int
- """
- self.thisptr.set_function_from_coordinate(k)
-
- def set_function_from_file(self, func_file_name):
- """Creates the function f from a file containing the function values.
-
- :param func_file_name: Name of the input function file.
- :type func_file_name: string
- """
- if os.path.isfile(func_file_name):
- self.thisptr.set_function_from_file(str.encode(func_file_name))
- else:
- print("file " + func_file_name + " not found.")
-
- def set_function_from_range(self, function):
- """Creates the function f from a vector stored in memory.
-
- :param function: Input vector of values.
- :type function: vector[double]
- """
- self.thisptr.set_function_from_range(function)
-
- def set_gain(self, g = 0.3):
- """Sets a gain from a value stored in memory.
-
- :param g: Gain (default value is 0.3).
- :type g: double
- """
- self.thisptr.set_gain(g)
-
- def set_graph_from_automatic_rips(self, N=100):
- """Creates a graph G from a Rips complex whose threshold value is
- automatically tuned with subsampling—see.
-
- :param N: Number of subsampling iteration (the default reasonable value
- is 100, but there is no guarantee on how to choose it).
- :type N: int
- :rtype: double
- :returns: Delta threshold used for computing the Rips complex.
- """
- return self.thisptr.set_graph_from_automatic_euclidean_rips(N)
-
- def set_graph_from_file(self, graph_file_name):
- """Creates a graph G from a file containing the edges.
-
- :param graph_file_name: Name of the input graph file. The graph file
- contains one edge per line, each edge being represented by the IDs of
- its two nodes.
- :type graph_file_name: string
- """
- if os.path.isfile(graph_file_name):
- self.thisptr.set_graph_from_file(str.encode(graph_file_name))
- else:
- print("file " + graph_file_name + " not found.")
-
- def set_graph_from_OFF(self):
- """Creates a graph G from the triangulation given by the input OFF
- file.
- """
- self.thisptr.set_graph_from_OFF()
-
- def set_graph_from_rips(self, threshold):
- """Creates a graph G from a Rips complex.
-
- :param threshold: Threshold value for the Rips complex.
- :type threshold: double
- """
- self.thisptr.set_graph_from_euclidean_rips(threshold)
-
- def set_mask(self, nodemask):
- """Sets the mask, which is a threshold integer such that nodes in the
- complex that contain a number of data points which is less than or
- equal to this threshold are not displayed.
-
- :param nodemask: Threshold.
- :type nodemask: int
- """
- self.thisptr.set_mask(nodemask)
-
- def set_resolution_with_interval_length(self, resolution):
- """Sets a length of intervals from a value stored in memory.
-
- :param resolution: Length of intervals.
- :type resolution: double
- """
- self.thisptr.set_resolution_with_interval_length(resolution)
-
- def set_resolution_with_interval_number(self, resolution):
- """Sets a number of intervals from a value stored in memory.
-
- :param resolution: Number of intervals.
- :type resolution: int
- """
- self.thisptr.set_resolution_with_interval_number(resolution)
-
- def set_subsampling(self, constant, power):
- """Sets the constants used to subsample the data set. These constants
- are explained in :cite:`Carriere17c`.
-
- :param constant: Constant.
- :type constant: double
- :param power: Power.
- :type resolution: double
- """
- self.thisptr.set_subsampling(constant, power)
-
- def set_type(self, type):
- """Specifies whether the type of the output simplicial complex.
-
- :param type: either "GIC" or "Nerve".
- :type type: string
- """
- self.thisptr.set_type(str.encode(type))
-
- def set_verbose(self, verbose):
- """Specifies whether the program should display information or not.
-
- :param verbose: true = display info, false = do not display info.
- :type verbose: boolean
- """
- self.thisptr.set_verbose(verbose)
-
- def subpopulation(self, c):
- """Returns the data subset corresponding to a specific node of the
- created complex.
-
- :param c: ID of the node.
- :type c: int
- :rtype: vector[int]
- :returns: Vector of IDs of data points.
- """
- return self.thisptr.subpopulation(c)
-
- def write_info(self):
- """Creates a .txt file called SC.txt describing the 1-skeleton, which can
- then be plotted with e.g. KeplerMapper.
- """
- return self.thisptr.write_info()
-
- def plot_dot(self):
- """Creates a .dot file called SC.dot for neato (part of the graphviz
- package) once the simplicial complex is computed to get a visualization of
- its 1-skeleton in a .pdf file.
- """
- return self.thisptr.plot_DOT()
-
- def plot_off(self):
- """Creates a .off file called SC.off for 3D visualization, which contains
- the 2-skeleton of the GIC. This function assumes that the cover has been
- computed with Voronoi. If data points are in 1D or 2D, the remaining
- coordinates of the points embedded in 3D are set to 0.
- """
- return self.thisptr.plot_OFF()
diff --git a/cython/cython/off_reader.pyx b/cython/cython/off_reader.pyx
deleted file mode 100644
index b939013f..00000000
--- a/cython/cython/off_reader.pyx
+++ /dev/null
@@ -1,50 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.string cimport string
-import os
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Off_reader_interface.h" namespace "Gudhi":
- vector[vector[double]] read_points_from_OFF_file(string off_file)
-
-def read_off(off_file=''):
- """Read points from OFF file.
-
- :param off_file: An OFF file style name.
- :type off_file: string
-
- :returns: The point set.
- :rtype: vector[vector[double]]
- """
- if off_file is not '':
- if os.path.isfile(off_file):
- return read_points_from_OFF_file(str.encode(off_file))
- else:
- print("file " + off_file + " not found.")
- return []
-
diff --git a/cython/cython/periodic_cubical_complex.pyx b/cython/cython/periodic_cubical_complex.pyx
deleted file mode 100644
index e626950b..00000000
--- a/cython/cython/periodic_cubical_complex.pyx
+++ /dev/null
@@ -1,200 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.utility cimport pair
-from libcpp.string cimport string
-from libcpp cimport bool
-import os
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Cubical_complex_interface.h" namespace "Gudhi":
- cdef cppclass Periodic_cubical_complex_base_interface "Gudhi::Cubical_complex::Cubical_complex_interface<Gudhi::cubical_complex::Bitmap_cubical_complex_periodic_boundary_conditions_base<double>>":
- Periodic_cubical_complex_base_interface(vector[unsigned] dimensions, vector[double] top_dimensional_cells, vector[bool] periodic_dimensions)
- Periodic_cubical_complex_base_interface(string perseus_file)
- int num_simplices()
- int dimension()
-
-cdef extern from "Persistent_cohomology_interface.h" namespace "Gudhi":
- cdef cppclass Periodic_cubical_complex_persistence_interface "Gudhi::Persistent_cohomology_interface<Gudhi::Cubical_complex::Cubical_complex_interface<Gudhi::cubical_complex::Bitmap_cubical_complex_periodic_boundary_conditions_base<double>>>":
- Periodic_cubical_complex_persistence_interface(Periodic_cubical_complex_base_interface * st, bool persistence_dim_max)
- vector[pair[int, pair[double, double]]] get_persistence(int homology_coeff_field, double min_persistence)
- vector[int] betti_numbers()
- vector[int] persistent_betti_numbers(double from_value, double to_value)
- vector[pair[double,double]] intervals_in_dimension(int dimension)
-
-# PeriodicCubicalComplex python interface
-cdef class PeriodicCubicalComplex:
- """The PeriodicCubicalComplex is an example of a structured complex useful
- in computational mathematics (specially rigorous numerics) and image
- analysis.
- """
- cdef Periodic_cubical_complex_base_interface * thisptr
-
- cdef Periodic_cubical_complex_persistence_interface * pcohptr
-
- # Fake constructor that does nothing but documenting the constructor
- def __init__(self, dimensions=None, top_dimensional_cells=None,
- periodic_dimensions=None, perseus_file=''):
- """PeriodicCubicalComplex constructor from dimensions and
- top_dimensional_cells or from a Perseus-style file name.
-
- :param dimensions: A list of number of top dimensional cells.
- :type dimensions: list of int
- :param top_dimensional_cells: A list of cells filtration values.
- :type top_dimensional_cells: list of double
- :param periodic_dimensions: A list of top dimensional cells periodicity value.
- :type periodic_dimensions: list of boolean
-
- Or
-
- :param perseus_file: A Perseus-style file name.
- :type perseus_file: string
- """
-
- # The real cython constructor
- def __cinit__(self, dimensions=None, top_dimensional_cells=None,
- periodic_dimensions=None, perseus_file=''):
- if (dimensions is not None) and (top_dimensional_cells is not None) and (periodic_dimensions is not None) and (perseus_file is ''):
- self.thisptr = new Periodic_cubical_complex_base_interface(dimensions, top_dimensional_cells, periodic_dimensions)
- elif (dimensions is None) and (top_dimensional_cells is None) and (periodic_dimensions is None) and (perseus_file is not ''):
- if os.path.isfile(perseus_file):
- self.thisptr = new Periodic_cubical_complex_base_interface(str.encode(perseus_file))
- else:
- print("file " + perseus_file + " not found.")
- else:
- print("CubicalComplex can be constructed from dimensions and "
- "top_dimensional_cells or from a Perseus-style file name.")
-
- def __dealloc__(self):
- if self.thisptr != NULL:
- del self.thisptr
- if self.pcohptr != NULL:
- del self.pcohptr
-
- def __is_defined(self):
- """Returns true if PeriodicCubicalComplex pointer is not NULL.
- """
- return self.thisptr != NULL
-
- def __is_persistence_defined(self):
- """Returns true if Persistence pointer is not NULL.
- """
- return self.pcohptr != NULL
-
- def num_simplices(self):
- """This function returns the number of all cubes in the complex.
-
- :returns: int -- the number of all cubes in the complex.
- """
- return self.thisptr.num_simplices()
-
- def dimension(self):
- """This function returns the dimension of the complex.
-
- :returns: int -- the complex dimension.
- """
- return self.thisptr.dimension()
-
- def persistence(self, homology_coeff_field=11, min_persistence=0):
- """This function returns the persistence of the complex.
-
- :param homology_coeff_field: The homology coefficient field. Must be a
- prime number
- :type homology_coeff_field: int.
- :param min_persistence: The minimum persistence value to take into
- account (strictly greater than min_persistence). Default value is
- 0.0.
- Sets min_persistence to -1.0 to see all values.
- :type min_persistence: float.
- :returns: list of pairs(dimension, pair(birth, death)) -- the
- persistence of the complex.
- """
- if self.pcohptr != NULL:
- del self.pcohptr
- if self.thisptr != NULL:
- self.pcohptr = new Periodic_cubical_complex_persistence_interface(self.thisptr, True)
- cdef vector[pair[int, pair[double, double]]] persistence_result
- if self.pcohptr != NULL:
- persistence_result = self.pcohptr.get_persistence(homology_coeff_field, min_persistence)
- return persistence_result
-
- def betti_numbers(self):
- """This function returns the Betti numbers of the complex.
-
- :returns: list of int -- The Betti numbers ([B0, B1, ..., Bn]).
-
- :note: betti_numbers function requires persistence function to be
- launched first.
-
- :note: betti_numbers function always returns [1, 0, 0, ...] as infinity
- filtration cubes are not removed from the complex.
- """
- cdef vector[int] bn_result
- if self.pcohptr != NULL:
- bn_result = self.pcohptr.betti_numbers()
- return bn_result
-
- def persistent_betti_numbers(self, from_value, to_value):
- """This function returns the persistent Betti numbers of the complex.
-
- :param from_value: The persistence birth limit to be added in the
- numbers (persistent birth <= from_value).
- :type from_value: float.
- :param to_value: The persistence death limit to be added in the
- numbers (persistent death > to_value).
- :type to_value: float.
-
- :returns: list of int -- The persistent Betti numbers ([B0, B1, ...,
- Bn]).
-
- :note: persistent_betti_numbers function requires persistence
- function to be launched first.
- """
- cdef vector[int] pbn_result
- if self.pcohptr != NULL:
- pbn_result = self.pcohptr.persistent_betti_numbers(<double>from_value, <double>to_value)
- return pbn_result
-
- def persistence_intervals_in_dimension(self, dimension):
- """This function returns the persistence intervals of the complex in a
- specific dimension.
-
- :param dimension: The specific dimension.
- :type from_value: int.
- :returns: The persistence intervals.
- :rtype: list of pair of float
-
- :note: intervals_in_dim function requires persistence function to be
- launched first.
- """
- cdef vector[pair[double,double]] intervals_result
- if self.pcohptr != NULL:
- intervals_result = self.pcohptr.intervals_in_dimension(dimension)
- else:
- print("intervals_in_dim function requires persistence function"
- " to be launched first.")
- return intervals_result
diff --git a/cython/cython/persistence_graphical_tools.py b/cython/cython/persistence_graphical_tools.py
deleted file mode 100755
index 314bd6db..00000000
--- a/cython/cython/persistence_graphical_tools.py
+++ /dev/null
@@ -1,220 +0,0 @@
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau, Bertrand Michel
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau, Bertrand Michel"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-try:
- import matplotlib.pyplot as plt
- import matplotlib.patches as mpatches
- import numpy as np
- import os
-
- def __min_birth_max_death(persistence, band=0.):
- """This function returns (min_birth, max_death) from the persistence.
-
- :param persistence: The persistence to plot.
- :type persistence: list of tuples(dimension, tuple(birth, death)).
- :param band: band
- :type band: float.
- :returns: (float, float) -- (min_birth, max_death).
- """
- # Look for minimum birth date and maximum death date for plot optimisation
- max_death = 0
- min_birth = persistence[0][1][0]
- for interval in reversed(persistence):
- if float(interval[1][1]) != float('inf'):
- if float(interval[1][1]) > max_death:
- max_death = float(interval[1][1])
- if float(interval[1][0]) > max_death:
- max_death = float(interval[1][0])
- if float(interval[1][0]) < min_birth:
- min_birth = float(interval[1][0])
- if band > 0.:
- max_death += band
- return (min_birth, max_death)
-
- """
- Only 13 colors for the palette
- """
- palette = ['#ff0000', '#00ff00', '#0000ff', '#00ffff', '#ff00ff', '#ffff00',
- '#000000', '#880000', '#008800', '#000088', '#888800', '#880088',
- '#008888']
-
- def plot_persistence_barcode(persistence=[], persistence_file='', alpha=0.6,
- max_barcodes=1000, inf_delta=0.1, legend=False):
- """This function plots the persistence bar code from persistence values list
- or from a :doc:`persistence file <fileformats>`.
-
- :param persistence: Persistence values list.
- :type persistence: list of tuples(dimension, tuple(birth, death)).
- :param persistence_file: A :doc:`persistence file <fileformats>` style name
- (reset persistence if both are set).
- :type persistence_file: string
- :param alpha: barcode transparency value (0.0 transparent through 1.0 opaque - default is 0.6).
- :type alpha: float.
- :param max_barcodes: number of maximal barcodes to be displayed.
- Set it to 0 to see all, Default value is 1000.
- (persistence will be sorted by life time if max_barcodes is set)
- :type max_barcodes: int.
- :param inf_delta: Infinity is placed at ((max_death - min_birth) x inf_delta).
- A reasonable value is between 0.05 and 0.5 - default is 0.1.
- :type inf_delta: float.
- :returns: A matplotlib object containing horizontal bar plot of persistence
- (launch `show()` method on it to display it).
- """
- if persistence_file is not '':
- if os.path.isfile(persistence_file):
- # Reset persistence
- persistence = []
- diag = read_persistence_intervals_grouped_by_dimension(persistence_file=persistence_file)
- for key in diag.keys():
- for persistence_interval in diag[key]:
- persistence.append((key, persistence_interval))
- else:
- print("file " + persistence_file + " not found.")
- return None
-
- if max_barcodes > 0 and max_barcodes < len(persistence):
- # Sort by life time, then takes only the max_plots elements
- persistence = sorted(persistence, key=lambda life_time: life_time[1][1]-life_time[1][0], reverse=True)[:max_barcodes]
-
- persistence = sorted(persistence, key=lambda birth: birth[1][0])
-
- (min_birth, max_death) = __min_birth_max_death(persistence)
- ind = 0
- delta = ((max_death - min_birth) * inf_delta)
- # Replace infinity values with max_death + delta for bar code to be more
- # readable
- infinity = max_death + delta
- axis_start = min_birth - delta
- # Draw horizontal bars in loop
- for interval in reversed(persistence):
- if float(interval[1][1]) != float('inf'):
- # Finite death case
- plt.barh(ind, (interval[1][1] - interval[1][0]), height=0.8,
- left = interval[1][0], alpha=alpha,
- color = palette[interval[0]],
- linewidth=0)
- else:
- # Infinite death case for diagram to be nicer
- plt.barh(ind, (infinity - interval[1][0]), height=0.8,
- left = interval[1][0], alpha=alpha,
- color = palette[interval[0]],
- linewidth=0)
- ind = ind + 1
-
- if legend:
- dimensions = list(set(item[0] for item in persistence))
- plt.legend(handles=[mpatches.Patch(color=palette[dim],
- label=str(dim)) for dim in dimensions],
- loc='lower right')
- plt.title('Persistence barcode')
- # Ends plot on infinity value and starts a little bit before min_birth
- plt.axis([axis_start, infinity, 0, ind])
- return plt
-
- def plot_persistence_diagram(persistence=[], persistence_file='', alpha=0.6,
- band=0., max_plots=1000, inf_delta=0.1, legend=False):
- """This function plots the persistence diagram from persistence values list
- or from a :doc:`persistence file <fileformats>`.
-
- :param persistence: Persistence values list.
- :type persistence: list of tuples(dimension, tuple(birth, death)).
- :param persistence_file: A :doc:`persistence file <fileformats>` style name
- (reset persistence if both are set).
- :type persistence_file: string
- :param alpha: plot transparency value (0.0 transparent through 1.0 opaque - default is 0.6).
- :type alpha: float.
- :param band: band (not displayed if :math:`\leq` 0. - default is 0.)
- :type band: float.
- :param max_plots: number of maximal plots to be displayed
- Set it to 0 to see all, Default value is 1000.
- (persistence will be sorted by life time if max_plots is set)
- :type max_plots: int.
- :param inf_delta: Infinity is placed at ((max_death - min_birth) x inf_delta).
- A reasonable value is between 0.05 and 0.5 - default is 0.1.
- :type inf_delta: float.
- :returns: A matplotlib object containing diagram plot of persistence
- (launch `show()` method on it to display it).
- """
- if persistence_file is not '':
- if os.path.isfile(persistence_file):
- # Reset persistence
- persistence = []
- diag = read_persistence_intervals_grouped_by_dimension(persistence_file=persistence_file)
- for key in diag.keys():
- for persistence_interval in diag[key]:
- persistence.append((key, persistence_interval))
- else:
- print("file " + persistence_file + " not found.")
- return None
-
- if max_plots > 0 and max_plots < len(persistence):
- # Sort by life time, then takes only the max_plots elements
- persistence = sorted(persistence, key=lambda life_time: life_time[1][1]-life_time[1][0], reverse=True)[:max_plots]
-
- (min_birth, max_death) = __min_birth_max_death(persistence, band)
- ind = 0
- delta = ((max_death - min_birth) * inf_delta)
- # Replace infinity values with max_death + delta for diagram to be more
- # readable
- infinity = max_death + delta
- axis_start = min_birth - delta
-
- # line display of equation : birth = death
- x = np.linspace(axis_start, infinity, 1000)
- # infinity line and text
- plt.plot(x, x, color='k', linewidth=1.0)
- plt.plot(x, [infinity] * len(x), linewidth=1.0, color='k', alpha=alpha)
- plt.text(axis_start, infinity, r'$\infty$', color='k', alpha=alpha)
- # bootstrap band
- if band > 0.:
- plt.fill_between(x, x, x+band, alpha=alpha, facecolor='red')
-
- # Draw points in loop
- for interval in reversed(persistence):
- if float(interval[1][1]) != float('inf'):
- # Finite death case
- plt.scatter(interval[1][0], interval[1][1], alpha=alpha,
- color = palette[interval[0]])
- else:
- # Infinite death case for diagram to be nicer
- plt.scatter(interval[1][0], infinity, alpha=alpha,
- color = palette[interval[0]])
- ind = ind + 1
-
- if legend:
- dimensions = list(set(item[0] for item in persistence))
- plt.legend(handles=[mpatches.Patch(color=palette[dim], label=str(dim)) for dim in dimensions])
-
- plt.title('Persistence diagram')
- plt.xlabel('Birth')
- plt.ylabel('Death')
- # Ends plot on infinity value and starts a little bit before min_birth
- plt.axis([axis_start, infinity, axis_start, infinity + delta])
- return plt
-
-except ImportError:
- # Continue in case of import error, functions won't be available
- pass
diff --git a/cython/cython/reader_utils.pyx b/cython/cython/reader_utils.pyx
deleted file mode 100644
index e4572db0..00000000
--- a/cython/cython/reader_utils.pyx
+++ /dev/null
@@ -1,95 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.string cimport string
-from libcpp.map cimport map
-from libcpp.pair cimport pair
-import os
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2017 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2017 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Reader_utils_interface.h" namespace "Gudhi":
- vector[vector[double]] read_matrix_from_csv_file(string off_file, char separator)
- map[int, vector[pair[double, double]]] read_pers_intervals_grouped_by_dimension(string filename)
- vector[pair[double, double]] read_pers_intervals_in_dimension(string filename, int only_this_dim)
-
-def read_lower_triangular_matrix_from_csv_file(csv_file='', separator=';'):
- """Read lower triangular matrix from a CSV style file.
-
- :param csv_file: A CSV file style name.
- :type csv_file: string
- :param separator: The value separator in the CSV file. Default value is ';'
- :type separator: char
-
- :returns: The lower triangular matrix.
- :rtype: vector[vector[double]]
- """
- if csv_file is not '':
- if os.path.isfile(csv_file):
- return read_matrix_from_csv_file(str.encode(csv_file), ord(separator[0]))
- print("file " + csv_file + " not set or not found.")
- return []
-
-def read_persistence_intervals_grouped_by_dimension(persistence_file=''):
- """Reads a file containing persistence intervals.
- Each line might contain 2, 3 or 4 values: [[field] dimension] birth death
- The return value is an `map[dim, vector[pair[birth, death]]]`
- where `dim` is an `int`, `birth` a `double`, and `death` a `double`.
- Note: the function does not check that birth <= death.
-
- :param persistence_file: A persistence file style name.
- :type persistence_file: string
-
- :returns: The persistence pairs grouped by dimension.
- :rtype: map[int, vector[pair[double, double]]]
- """
- if persistence_file is not '':
- if os.path.isfile(persistence_file):
- return read_pers_intervals_grouped_by_dimension(str.encode(persistence_file))
- print("file " + persistence_file + " not set or not found.")
- return []
-
-def read_persistence_intervals_in_dimension(persistence_file='', only_this_dim=-1):
- """Reads a file containing persistence intervals.
- Each line might contain 2, 3 or 4 values: [[field] dimension] birth death
- If `only_this_dim` = -1, dimension is ignored and all lines are returned.
- If `only_this_dim` is >= 0, only the lines where dimension = `only_this_dim`
- (or where dimension is not specified) are returned.
- The return value is an `vector[pair[birth, death]]`
- where `birth` a `double`, and `death` a `double`.
- Note: the function does not check that birth <= death.
-
- :param persistence_file: A persistence file style name.
- :type persistence_file: string
-
- :returns: The persistence pairs grouped by dimension.
- :rtype: map[int, vector[pair[double, double]]]
- """
- if persistence_file is not '':
- if os.path.isfile(persistence_file):
- return read_pers_intervals_in_dimension(str.encode(persistence_file), only_this_dim)
- print("file " + persistence_file + " not set or not found.")
- return []
diff --git a/cython/cython/rips_complex.pyx b/cython/cython/rips_complex.pyx
deleted file mode 100644
index 30ca4443..00000000
--- a/cython/cython/rips_complex.pyx
+++ /dev/null
@@ -1,96 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.utility cimport pair
-from libcpp.string cimport string
-from libcpp cimport bool
-import os
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Rips_complex_interface.h" namespace "Gudhi":
- cdef cppclass Rips_complex_interface "Gudhi::rips_complex::Rips_complex_interface":
- Rips_complex_interface(vector[vector[double]] values, double threshold, bool euclidean)
- void create_simplex_tree(Simplex_tree_interface_full_featured* simplex_tree, int dim_max)
-
-# RipsComplex python interface
-cdef class RipsComplex:
- """The data structure is a one skeleton graph, or Rips graph, containing
- edges when the edge length is less or equal to a given threshold. Edge
- length is computed from a user given point cloud with a given distance
- function, or a distance matrix.
- """
-
- cdef Rips_complex_interface * thisptr
-
- # Fake constructor that does nothing but documenting the constructor
- def __init__(self, points=None, distance_matrix=None, max_edge_length=float('inf')):
- """RipsComplex constructor.
-
- :param max_edge_length: Rips value.
- :type max_edge_length: float
-
- :param points: A list of points in d-Dimension.
- :type points: list of list of double
-
- Or
-
- :param distance_matrix: A distance matrix (full square or lower
- triangular).
- :type points: list of list of double
- """
-
- # The real cython constructor
- def __cinit__(self, points=None, distance_matrix=None, max_edge_length=float('inf')):
- if distance_matrix is not None:
- self.thisptr = new Rips_complex_interface(distance_matrix, max_edge_length, False)
- else:
- if points is None:
- # Empty Rips construction
- points=[]
- self.thisptr = new Rips_complex_interface(points, max_edge_length, True)
-
-
- def __dealloc__(self):
- if self.thisptr != NULL:
- del self.thisptr
-
- def __is_defined(self):
- """Returns true if RipsComplex pointer is not NULL.
- """
- return self.thisptr != NULL
-
- def create_simplex_tree(self, max_dimension=1):
- """
- :param max_dimension: graph expansion for rips until this given maximal
- dimension.
- :type max_dimension: int
- :returns: A simplex tree created from the Delaunay Triangulation.
- :rtype: SimplexTree
- """
- simplex_tree = SimplexTree()
- self.thisptr.create_simplex_tree(simplex_tree.thisptr, max_dimension)
- return simplex_tree
diff --git a/cython/cython/simplex_tree.pyx b/cython/cython/simplex_tree.pyx
deleted file mode 100644
index e302486b..00000000
--- a/cython/cython/simplex_tree.pyx
+++ /dev/null
@@ -1,548 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.utility cimport pair
-from libcpp cimport bool
-from libcpp.string cimport string
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Simplex_tree_interface.h" namespace "Gudhi":
- cdef cppclass Simplex_tree_options_full_featured:
- pass
-
- cdef cppclass Simplex_tree_interface_full_featured "Gudhi::Simplex_tree_interface<Gudhi::Simplex_tree_options_full_featured>":
- Simplex_tree()
- double simplex_filtration(vector[int] simplex)
- void assign_simplex_filtration(vector[int] simplex, double filtration)
- void initialize_filtration()
- int num_vertices()
- int num_simplices()
- void set_dimension(int dimension)
- int dimension()
- int upper_bound_dimension()
- bint find_simplex(vector[int] simplex)
- bint insert_simplex_and_subfaces(vector[int] simplex,
- double filtration)
- vector[pair[vector[int], double]] get_filtration()
- vector[pair[vector[int], double]] get_skeleton(int dimension)
- vector[pair[vector[int], double]] get_star(vector[int] simplex)
- vector[pair[vector[int], double]] get_cofaces(vector[int] simplex,
- int dimension)
- void expansion(int max_dim)
- void remove_maximal_simplex(vector[int] simplex)
- bool prune_above_filtration(double filtration)
- bool make_filtration_non_decreasing()
-
-cdef extern from "Persistent_cohomology_interface.h" namespace "Gudhi":
- cdef cppclass Simplex_tree_persistence_interface "Gudhi::Persistent_cohomology_interface<Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_full_featured>>":
- Simplex_tree_persistence_interface(Simplex_tree_interface_full_featured * st, bool persistence_dim_max)
- vector[pair[int, pair[double, double]]] get_persistence(int homology_coeff_field, double min_persistence)
- vector[int] betti_numbers()
- vector[int] persistent_betti_numbers(double from_value, double to_value)
- vector[pair[double,double]] intervals_in_dimension(int dimension)
- void write_output_diagram(string diagram_file_name)
- vector[pair[vector[int], vector[int]]] persistence_pairs()
-
-# SimplexTree python interface
-cdef class SimplexTree:
- """The simplex tree is an efficient and flexible data structure for
- representing general (filtered) simplicial complexes. The data structure
- is described in Jean-Daniel Boissonnat and Clément Maria. The Simplex
- Tree: An Efficient Data Structure for General Simplicial Complexes.
- Algorithmica, pages 1–22, 2014.
-
- This class is a filtered, with keys, and non contiguous vertices version
- of the simplex tree.
- """
- cdef Simplex_tree_interface_full_featured * thisptr
-
- cdef Simplex_tree_persistence_interface * pcohptr
-
- # Fake constructor that does nothing but documenting the constructor
- def __init__(self):
- """SimplexTree constructor.
- """
-
- # The real cython constructor
- def __cinit__(self):
- self.thisptr = new Simplex_tree_interface_full_featured()
-
- def __dealloc__(self):
- if self.thisptr != NULL:
- del self.thisptr
- if self.pcohptr != NULL:
- del self.pcohptr
-
- def __is_defined(self):
- """Returns true if SimplexTree pointer is not NULL.
- """
- return self.thisptr != NULL
-
- def __is_persistence_defined(self):
- """Returns true if Persistence pointer is not NULL.
- """
- return self.pcohptr != NULL
-
- def filtration(self, simplex):
- """This function returns the filtration value for a given N-simplex in
- this simplicial complex, or +infinity if it is not in the complex.
-
- :param simplex: The N-simplex, represented by a list of vertex.
- :type simplex: list of int.
- :returns: The simplicial complex filtration value.
- :rtype: float
- """
- return self.thisptr.simplex_filtration(simplex)
-
- def assign_filtration(self, simplex, filtration):
- """This function assigns the simplicial complex filtration value for a
- given N-simplex.
-
- :param simplex: The N-simplex, represented by a list of vertex.
- :type simplex: list of int.
- :param filtration: The simplicial complex filtration value.
- :type filtration: float
- """
- self.thisptr.assign_simplex_filtration(simplex, filtration)
-
- def initialize_filtration(self):
- """This function initializes and sorts the simplicial complex
- filtration vector.
-
- .. note::
-
- This function must be launched before
- :func:`persistence()<gudhi.SimplexTree.persistence>`,
- :func:`betti_numbers()<gudhi.SimplexTree.betti_numbers>`,
- :func:`persistent_betti_numbers()<gudhi.SimplexTree.persistent_betti_numbers>`,
- or :func:`get_filtration()<gudhi.SimplexTree.get_filtration>`
- after :func:`inserting<gudhi.SimplexTree.insert>` or
- :func:`removing<gudhi.SimplexTree.remove_maximal_simplex>`
- simplices.
- """
- self.thisptr.initialize_filtration()
-
- def num_vertices(self):
- """This function returns the number of vertices of the simplicial
- complex.
-
- :returns: The simplicial complex number of vertices.
- :rtype: int
- """
- return self.thisptr.num_vertices()
-
- def num_simplices(self):
- """This function returns the number of simplices of the simplicial
- complex.
-
- :returns: the simplicial complex number of simplices.
- :rtype: int
- """
- return self.thisptr.num_simplices()
-
- def dimension(self):
- """This function returns the dimension of the simplicial complex.
-
- :returns: the simplicial complex dimension.
- :rtype: int
-
- .. note::
-
- This function is not constant time because it can recompute
- dimension if required (can be triggered by
- :func:`remove_maximal_simplex()<gudhi.SimplexTree.remove_maximal_simplex>`
- or
- :func:`prune_above_filtration()<gudhi.SimplexTree.prune_above_filtration>`
- methods).
- """
- return self.thisptr.dimension()
-
- def upper_bound_dimension(self):
- """This function returns a valid dimension upper bound of the
- simplicial complex.
-
- :returns: an upper bound on the dimension of the simplicial complex.
- :rtype: int
- """
- return self.thisptr.upper_bound_dimension()
-
- def set_dimension(self, dimension):
- """This function sets the dimension of the simplicial complex.
-
- :param dimension: The new dimension value.
- :type dimension: int.
-
- .. note::
-
- This function must be used with caution because it disables
- dimension recomputation when required
- (this recomputation can be triggered by
- :func:`remove_maximal_simplex()<gudhi.SimplexTree.remove_maximal_simplex>`
- or
- :func:`prune_above_filtration()<gudhi.SimplexTree.prune_above_filtration>`
- ).
- """
- self.thisptr.set_dimension(<int>dimension)
-
- def find(self, simplex):
- """This function returns if the N-simplex was found in the simplicial
- complex or not.
-
- :param simplex: The N-simplex to find, represented by a list of vertex.
- :type simplex: list of int.
- :returns: true if the simplex was found, false otherwise.
- :rtype: bool
- """
- cdef vector[int] csimplex
- for i in simplex:
- csimplex.push_back(i)
- return self.thisptr.find_simplex(csimplex)
-
- def insert(self, simplex, filtration=0.0):
- """This function inserts the given N-simplex and its subfaces with the
- given filtration value (default value is '0.0'). If some of those
- simplices are already present with a higher filtration value, their
- filtration value is lowered.
-
- :param simplex: The N-simplex to insert, represented by a list of
- vertex.
- :type simplex: list of int.
- :param filtration: The filtration value of the simplex.
- :type filtration: float.
- :returns: true if the simplex was not yet in the complex, false
- otherwise (whatever its original filtration value).
- :rtype: bool
- """
- cdef vector[int] csimplex
- for i in simplex:
- csimplex.push_back(i)
- return self.thisptr.insert_simplex_and_subfaces(csimplex,
- <double>filtration)
-
- def get_filtration(self):
- """This function returns a list of all simplices with their given
- filtration values.
-
- :returns: The simplices sorted by increasing filtration values.
- :rtype: list of tuples(simplex, filtration)
- """
- cdef vector[pair[vector[int], double]] filtration \
- = self.thisptr.get_filtration()
- ct = []
- for filtered_complex in filtration:
- v = []
- for vertex in filtered_complex.first:
- v.append(vertex)
- ct.append((v, filtered_complex.second))
- return ct
-
- def get_skeleton(self, dimension):
- """This function returns the (simplices of the) skeleton of a maximum
- given dimension.
-
- :param dimension: The skeleton dimension value.
- :type dimension: int.
- :returns: The (simplices of the) skeleton of a maximum dimension.
- :rtype: list of tuples(simplex, filtration)
- """
- cdef vector[pair[vector[int], double]] skeleton \
- = self.thisptr.get_skeleton(<int>dimension)
- ct = []
- for filtered_simplex in skeleton:
- v = []
- for vertex in filtered_simplex.first:
- v.append(vertex)
- ct.append((v, filtered_simplex.second))
- return ct
-
- def get_star(self, simplex):
- """This function returns the star of a given N-simplex.
-
- :param simplex: The N-simplex, represented by a list of vertex.
- :type simplex: list of int.
- :returns: The (simplices of the) star of a simplex.
- :rtype: list of tuples(simplex, filtration)
- """
- cdef vector[int] csimplex
- for i in simplex:
- csimplex.push_back(i)
- cdef vector[pair[vector[int], double]] star \
- = self.thisptr.get_star(csimplex)
- ct = []
- for filtered_simplex in star:
- v = []
- for vertex in filtered_simplex.first:
- v.append(vertex)
- ct.append((v, filtered_simplex.second))
- return ct
-
- def get_cofaces(self, simplex, codimension):
- """This function returns the cofaces of a given N-simplex with a
- given codimension.
-
- :param simplex: The N-simplex, represented by a list of vertex.
- :type simplex: list of int.
- :param codimension: The codimension. If codimension = 0, all cofaces
- are returned (equivalent of get_star function)
- :type codimension: int.
- :returns: The (simplices of the) cofaces of a simplex
- :rtype: list of tuples(simplex, filtration)
- """
- cdef vector[int] csimplex
- for i in simplex:
- csimplex.push_back(i)
- cdef vector[pair[vector[int], double]] cofaces \
- = self.thisptr.get_cofaces(csimplex, <int>codimension)
- ct = []
- for filtered_simplex in cofaces:
- v = []
- for vertex in filtered_simplex.first:
- v.append(vertex)
- ct.append((v, filtered_simplex.second))
- return ct
-
- def remove_maximal_simplex(self, simplex):
- """This function removes a given maximal N-simplex from the simplicial
- complex.
-
- :param simplex: The N-simplex, represented by a list of vertex.
- :type simplex: list of int.
-
- .. note::
-
- Be aware that removing is shifting data in a flat_map
- (:func:`initialize_filtration()<gudhi.SimplexTree.initialize_filtration>` to be done).
-
- .. note::
-
- The dimension of the simplicial complex may be lower after calling
- remove_maximal_simplex than it was before. However,
- :func:`upper_bound_dimension()<gudhi.SimplexTree.upper_bound_dimension>`
- method will return the old value, which
- remains a valid upper bound. If you care, you can call
- :func:`dimension()<gudhi.SimplexTree.dimension>`
- to recompute the exact dimension.
- """
- self.thisptr.remove_maximal_simplex(simplex)
-
- def prune_above_filtration(self, filtration):
- """Prune above filtration value given as parameter.
-
- :param filtration: Maximum threshold value.
- :type filtration: float.
- :returns: The filtration modification information.
- :rtype: bint
-
-
- .. note::
-
- Some simplex tree functions require the filtration to be valid.
- prune_above_filtration function is not launching
- :func:`initialize_filtration()<gudhi.SimplexTree.initialize_filtration>`
- but returns the filtration modification
- information. If the complex has changed , please call
- :func:`initialize_filtration()<gudhi.SimplexTree.initialize_filtration>`
- to recompute it.
-
- .. note::
-
- Note that the dimension of the simplicial complex may be lower
- after calling
- :func:`prune_above_filtration()<gudhi.SimplexTree.prune_above_filtration>`
- than it was before. However,
- :func:`upper_bound_dimension()<gudhi.SimplexTree.upper_bound_dimension>`
- will return the old value, which remains a
- valid upper bound. If you care, you can call
- :func:`dimension()<gudhi.SimplexTree.dimension>`
- method to recompute the exact dimension.
- """
- return self.thisptr.prune_above_filtration(filtration)
-
- def expansion(self, max_dim):
- """Expands the Simplex_tree containing only its one skeleton
- until dimension max_dim.
-
- The expanded simplicial complex until dimension :math:`d`
- attached to a graph :math:`G` is the maximal simplicial complex of
- dimension at most :math:`d` admitting the graph :math:`G` as
- :math:`1`-skeleton.
- The filtration value assigned to a simplex is the maximal filtration
- value of one of its edges.
-
- The Simplex_tree must contain no simplex of dimension bigger than
- 1 when calling the method.
-
- :param max_dim: The maximal dimension.
- :type max_dim: int.
- """
- self.thisptr.expansion(max_dim)
-
- def make_filtration_non_decreasing(self):
- """This function ensures that each simplex has a higher filtration
- value than its faces by increasing the filtration values.
-
- :returns: The filtration modification information.
- :rtype: bint
-
-
- .. note::
-
- Some simplex tree functions require the filtration to be valid.
- make_filtration_non_decreasing function is not launching
- :func:`initialize_filtration()<gudhi.SimplexTree.initialize_filtration>`
- but returns the filtration modification
- information. If the complex has changed , please call
- :func:`initialize_filtration()<gudhi.SimplexTree.initialize_filtration>`
- to recompute it.
- """
- return self.thisptr.make_filtration_non_decreasing()
-
- def persistence(self, homology_coeff_field=11, min_persistence=0, persistence_dim_max = False):
- """This function returns the persistence of the simplicial complex.
-
- :param homology_coeff_field: The homology coefficient field. Must be a
- prime number. Default value is 11.
- :type homology_coeff_field: int.
- :param min_persistence: The minimum persistence value to take into
- account (strictly greater than min_persistence). Default value is
- 0.0.
- Sets min_persistence to -1.0 to see all values.
- :type min_persistence: float.
- :returns: The persistence of the simplicial complex.
- :rtype: list of pairs(dimension, pair(birth, death))
- """
- if self.pcohptr != NULL:
- del self.pcohptr
- self.pcohptr = new Simplex_tree_persistence_interface(self.thisptr, persistence_dim_max)
- cdef vector[pair[int, pair[double, double]]] persistence_result
- if self.pcohptr != NULL:
- persistence_result = self.pcohptr.get_persistence(homology_coeff_field, min_persistence)
- return persistence_result
-
- def betti_numbers(self):
- """This function returns the Betti numbers of the simplicial complex.
-
- :returns: The Betti numbers ([B0, B1, ..., Bn]).
- :rtype: list of int
-
- :note: betti_numbers function requires
- :func:`persistence()<gudhi.SimplexTree.persistence>`
- function to be launched first.
- """
- cdef vector[int] bn_result
- if self.pcohptr != NULL:
- bn_result = self.pcohptr.betti_numbers()
- else:
- print("betti_numbers function requires persistence function"
- " to be launched first.")
- return bn_result
-
- def persistent_betti_numbers(self, from_value, to_value):
- """This function returns the persistent Betti numbers of the
- simplicial complex.
-
- :param from_value: The persistence birth limit to be added in the
- numbers (persistent birth <= from_value).
- :type from_value: float.
- :param to_value: The persistence death limit to be added in the
- numbers (persistent death > to_value).
- :type to_value: float.
-
- :returns: The persistent Betti numbers ([B0, B1, ..., Bn]).
- :rtype: list of int
-
- :note: persistent_betti_numbers function requires
- :func:`persistence()<gudhi.SimplexTree.persistence>`
- function to be launched first.
- """
- cdef vector[int] pbn_result
- if self.pcohptr != NULL:
- pbn_result = self.pcohptr.persistent_betti_numbers(<double>from_value, <double>to_value)
- else:
- print("persistent_betti_numbers function requires persistence function"
- " to be launched first.")
- return pbn_result
-
- def persistence_intervals_in_dimension(self, dimension):
- """This function returns the persistence intervals of the simplicial
- complex in a specific dimension.
-
- :param dimension: The specific dimension.
- :type dimension: int.
- :returns: The persistence intervals.
- :rtype: list of pair of float
-
- :note: intervals_in_dim function requires
- :func:`persistence()<gudhi.SimplexTree.persistence>`
- function to be launched first.
- """
- cdef vector[pair[double,double]] intervals_result
- if self.pcohptr != NULL:
- intervals_result = self.pcohptr.intervals_in_dimension(dimension)
- else:
- print("intervals_in_dim function requires persistence function"
- " to be launched first.")
- return intervals_result
-
- def persistence_pairs(self):
- """This function returns the persistence pairs of the simplicial
- complex.
-
- :returns: The persistence intervals.
- :rtype: list of pair of list of int
-
- :note: intervals_in_dim function requires
- :func:`persistence()<gudhi.SimplexTree.persistence>`
- function to be launched first.
- """
- cdef vector[pair[vector[int],vector[int]]] persistence_pairs_result
- if self.pcohptr != NULL:
- persistence_pairs_result = self.pcohptr.persistence_pairs()
- else:
- print("persistence_pairs function requires persistence function"
- " to be launched first.")
- return persistence_pairs_result
-
- def write_persistence_diagram(self, persistence_file=''):
- """This function writes the persistence intervals of the simplicial
- complex in a user given file name.
-
- :param persistence_file: The specific dimension.
- :type persistence_file: string.
-
- :note: intervals_in_dim function requires
- :func:`persistence()<gudhi.SimplexTree.persistence>`
- function to be launched first.
- """
- if self.pcohptr != NULL:
- if persistence_file != '':
- self.pcohptr.write_output_diagram(str.encode(persistence_file))
- else:
- print("persistence_file must be specified")
- else:
- print("intervals_in_dim function requires persistence function"
- " to be launched first.")
diff --git a/cython/cython/strong_witness_complex.pyx b/cython/cython/strong_witness_complex.pyx
deleted file mode 100644
index 74c5cb05..00000000
--- a/cython/cython/strong_witness_complex.pyx
+++ /dev/null
@@ -1,81 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.utility cimport pair
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Strong_witness_complex_interface.h" namespace "Gudhi":
- cdef cppclass Strong_witness_complex_interface "Gudhi::witness_complex::Strong_witness_complex_interface":
- Strong_witness_complex_interface(vector[vector[pair[size_t, double]]] nearest_landmark_table)
- void create_simplex_tree(Simplex_tree_interface_full_featured* simplex_tree, double max_alpha_square)
- void create_simplex_tree(Simplex_tree_interface_full_featured* simplex_tree, double max_alpha_square,
- unsigned limit_dimension)
-
-# StrongWitnessComplex python interface
-cdef class StrongWitnessComplex:
- """Constructs (strong) witness complex for a given table of nearest
- landmarks with respect to witnesses.
- """
-
- cdef Strong_witness_complex_interface * thisptr
-
- # Fake constructor that does nothing but documenting the constructor
- def __init__(self, nearest_landmark_table=None):
- """StrongWitnessComplex constructor.
-
- :param nearest_landmark_table: A list of nearest landmark.
- :type nearest_landmark_table: list of list of pair of unsigned and double
- """
-
- # The real cython constructor
- def __cinit__(self, nearest_landmark_table=None):
- if nearest_landmark_table is not None:
- self.thisptr = new Strong_witness_complex_interface(nearest_landmark_table)
-
- def __dealloc__(self):
- if self.thisptr != NULL:
- del self.thisptr
-
- def __is_defined(self):
- """Returns true if StrongWitnessComplex pointer is not NULL.
- """
- return self.thisptr != NULL
-
- def create_simplex_tree(self, max_alpha_square, limit_dimension = -1):
- """
- :param max_alpha_square: The maximum alpha square threshold the
- simplices shall not exceed. Default is set to infinity.
- :type max_alpha_square: float
- :returns: A simplex tree created from the Delaunay Triangulation.
- :rtype: SimplexTree
- """
- simplex_tree = SimplexTree()
- if limit_dimension is not -1:
- self.thisptr.create_simplex_tree(simplex_tree.thisptr, max_alpha_square, limit_dimension)
- else:
- self.thisptr.create_simplex_tree(simplex_tree.thisptr, max_alpha_square)
- return simplex_tree
diff --git a/cython/cython/subsampling.pyx b/cython/cython/subsampling.pyx
deleted file mode 100644
index e9d61a37..00000000
--- a/cython/cython/subsampling.pyx
+++ /dev/null
@@ -1,142 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.string cimport string
-from libcpp cimport bool
-import os
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Subsampling_interface.h" namespace "Gudhi::subsampling":
- vector[vector[double]] subsampling_n_farthest_points(vector[vector[double]] points, unsigned nb_points)
- vector[vector[double]] subsampling_n_farthest_points(vector[vector[double]] points, unsigned nb_points, unsigned starting_point)
- vector[vector[double]] subsampling_n_farthest_points_from_file(string off_file, unsigned nb_points)
- vector[vector[double]] subsampling_n_farthest_points_from_file(string off_file, unsigned nb_points, unsigned starting_point)
- vector[vector[double]] subsampling_n_random_points(vector[vector[double]] points, unsigned nb_points)
- vector[vector[double]] subsampling_n_random_points_from_file(string off_file, unsigned nb_points)
- vector[vector[double]] subsampling_sparsify_points(vector[vector[double]] points, double min_squared_dist)
- vector[vector[double]] subsampling_sparsify_points_from_file(string off_file, double min_squared_dist)
-
-def choose_n_farthest_points(points=None, off_file='', nb_points=0, starting_point = ''):
- """Subsample by a greedy strategy of iteratively adding the farthest point
- from the current chosen point set to the subsampling.
- The iteration starts with the landmark `starting point`.
-
- :param points: The input point set.
- :type points: vector[vector[double]].
-
- Or
-
- :param off_file: An OFF file style name.
- :type off_file: string
-
- :param nb_points: Number of points of the subsample.
- :type nb_points: unsigned.
- :param starting_point: The iteration starts with the landmark `starting \
- point`,which is the index of the poit to start with. If not set, this \
- index is choosen randomly.
- :type starting_point: unsigned.
- :returns: The subsample point set.
- :rtype: vector[vector[double]]
- """
- if off_file is not '':
- if os.path.isfile(off_file):
- if starting_point is '':
- return subsampling_n_farthest_points_from_file(str.encode(off_file),
- nb_points)
- else:
- return subsampling_n_farthest_points_from_file(str.encode(off_file),
- nb_points,
- starting_point)
- else:
- print("file " + off_file + " not found.")
- else:
- if points is None:
- # Empty points
- points=[]
- if starting_point is '':
- return subsampling_n_farthest_points(points, nb_points)
- else:
- return subsampling_n_farthest_points(points, nb_points,
- starting_point)
-
-def pick_n_random_points(points=None, off_file='', nb_points=0):
- """Subsample a point set by picking random vertices.
-
- :param points: The input point set.
- :type points: vector[vector[double]].
-
- Or
-
- :param off_file: An OFF file style name.
- :type off_file: string
-
- :param nb_points: Number of points of the subsample.
- :type nb_points: unsigned.
- :returns: The subsample point set.
- :rtype: vector[vector[double]]
- """
- if off_file is not '':
- if os.path.isfile(off_file):
- return subsampling_n_random_points_from_file(str.encode(off_file),
- nb_points)
- else:
- print("file " + off_file + " not found.")
- else:
- if points is None:
- # Empty points
- points=[]
- return subsampling_n_random_points(points, nb_points)
-
-def sparsify_point_set(points=None, off_file='', min_squared_dist=0.0):
- """Outputs a subset of the input points so that the squared distance
- between any two points is greater than or equal to min_squared_dist.
-
- :param points: The input point set.
- :type points: vector[vector[double]].
-
- Or
-
- :param off_file: An OFF file style name.
- :type off_file: string
-
- :param min_squared_dist: Minimum squared distance separating the output \
- points.
- :type min_squared_dist: float.
- :returns: The subsample point set.
- :rtype: vector[vector[double]]
- """
- if off_file is not '':
- if os.path.isfile(off_file):
- return subsampling_sparsify_points_from_file(str.encode(off_file),
- min_squared_dist)
- else:
- print("file " + off_file + " not found.")
- else:
- if points is None:
- # Empty points
- points=[]
- return subsampling_sparsify_points(points, min_squared_dist)
diff --git a/cython/cython/tangential_complex.pyx b/cython/cython/tangential_complex.pyx
deleted file mode 100644
index 4bb07076..00000000
--- a/cython/cython/tangential_complex.pyx
+++ /dev/null
@@ -1,154 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.utility cimport pair
-from libcpp.string cimport string
-from libcpp cimport bool
-import os
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Tangential_complex_interface.h" namespace "Gudhi":
- cdef cppclass Tangential_complex_interface "Gudhi::tangential_complex::Tangential_complex_interface":
- Tangential_complex_interface(int intrisic_dim, vector[vector[double]] points)
- # bool from_file is a workaround for cython to find the correct signature
- Tangential_complex_interface(int intrisic_dim, string off_file, bool from_file)
- vector[double] get_point(unsigned vertex)
- unsigned number_of_vertices()
- unsigned number_of_simplices()
- unsigned number_of_inconsistent_simplices()
- unsigned number_of_inconsistent_stars()
- void create_simplex_tree(Simplex_tree_interface_full_featured* simplex_tree)
- void fix_inconsistencies_using_perturbation(double max_perturb, double time_limit)
-
-# TangentialComplex python interface
-cdef class TangentialComplex:
- """The class Tangential_complex represents a tangential complex. After the
- computation of the complex, an optional post-processing called perturbation
- can be run to attempt to remove inconsistencies.
- """
-
- cdef Tangential_complex_interface * thisptr
-
- # Fake constructor that does nothing but documenting the constructor
- def __init__(self, intrisic_dim, points=None, off_file=''):
- """TangentialComplex constructor.
-
- :param intrisic_dim: Intrinsic dimension of the manifold.
- :type intrisic_dim: integer
-
- :param points: A list of points in d-Dimension.
- :type points: list of list of double
-
- Or
-
- :param off_file: An OFF file style name.
- :type off_file: string
- """
-
- # The real cython constructor
- def __cinit__(self, intrisic_dim, points=None, off_file=''):
- if off_file is not '':
- if os.path.isfile(off_file):
- self.thisptr = new Tangential_complex_interface(intrisic_dim, str.encode(off_file), True)
- else:
- print("file " + off_file + " not found.")
- else:
- if points is None:
- # Empty tangential construction
- points=[]
- self.thisptr = new Tangential_complex_interface(intrisic_dim, points)
-
-
- def __dealloc__(self):
- if self.thisptr != NULL:
- del self.thisptr
-
- def __is_defined(self):
- """Returns true if TangentialComplex pointer is not NULL.
- """
- return self.thisptr != NULL
-
- def get_point(self, vertex):
- """This function returns the point corresponding to a given vertex.
-
- :param vertex: The vertex.
- :type vertex: int.
- :returns: The point.
- :rtype: list of float
- """
- cdef vector[double] point = self.thisptr.get_point(vertex)
- return point
-
- def num_vertices(self):
- """
- :returns: The number of vertices.
- :rtype: unsigned
- """
- return self.thisptr.number_of_vertices()
-
- def num_simplices(self):
- """
- :returns: Total number of simplices in stars (including duplicates that appear in several stars).
- :rtype: unsigned
- """
- return self.thisptr.number_of_simplices()
-
- def num_inconsistent_simplices(self):
- """
- :returns: The number of inconsistent simplices.
- :rtype: unsigned
- """
- return self.thisptr.number_of_inconsistent_simplices()
-
- def num_inconsistent_stars(self):
- """
- :returns: The number of stars containing at least one inconsistent simplex.
- :rtype: unsigned
- """
- return self.thisptr.number_of_inconsistent_stars()
-
- def create_simplex_tree(self):
- """Exports the complex into a simplex tree.
-
- :returns: A simplex tree created from the complex.
- :rtype: SimplexTree
- """
- simplex_tree = SimplexTree()
- self.thisptr.create_simplex_tree(simplex_tree.thisptr)
- return simplex_tree
-
- def fix_inconsistencies_using_perturbation(self, max_perturb, time_limit=-1.0):
- """Attempts to fix inconsistencies by perturbing the point positions.
-
- :param max_perturb: Maximum length of the translations used by the
- perturbation.
- :type max_perturb: double
- :param time_limit: Time limit in seconds. If -1, no time limit is set.
- :type time_limit: double
- """
- self.thisptr.fix_inconsistencies_using_perturbation(max_perturb,
- time_limit)
diff --git a/cython/cython/witness_complex.pyx b/cython/cython/witness_complex.pyx
deleted file mode 100644
index 8591465a..00000000
--- a/cython/cython/witness_complex.pyx
+++ /dev/null
@@ -1,81 +0,0 @@
-from cython cimport numeric
-from libcpp.vector cimport vector
-from libcpp.utility cimport pair
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-cdef extern from "Witness_complex_interface.h" namespace "Gudhi":
- cdef cppclass Witness_complex_interface "Gudhi::witness_complex::Witness_complex_interface":
- Witness_complex_interface(vector[vector[pair[size_t, double]]] nearest_landmark_table)
- void create_simplex_tree(Simplex_tree_interface_full_featured* simplex_tree, double max_alpha_square)
- void create_simplex_tree(Simplex_tree_interface_full_featured* simplex_tree, double max_alpha_square,
- unsigned limit_dimension)
-
-# WitnessComplex python interface
-cdef class WitnessComplex:
- """Constructs (weak) witness complex for a given table of nearest landmarks
- with respect to witnesses.
- """
-
- cdef Witness_complex_interface * thisptr
-
- # Fake constructor that does nothing but documenting the constructor
- def __init__(self, nearest_landmark_table=None):
- """WitnessComplex constructor.
-
- :param nearest_landmark_table: A list of nearest landmark.
- :type nearest_landmark_table: list of list of pair of unsigned and double
- """
-
- # The real cython constructor
- def __cinit__(self, nearest_landmark_table=None):
- if nearest_landmark_table is not None:
- self.thisptr = new Witness_complex_interface(nearest_landmark_table)
-
- def __dealloc__(self):
- if self.thisptr != NULL:
- del self.thisptr
-
- def __is_defined(self):
- """Returns true if WitnessComplex pointer is not NULL.
- """
- return self.thisptr != NULL
-
- def create_simplex_tree(self, max_alpha_square, limit_dimension = -1):
- """
- :param max_alpha_square: The maximum alpha square threshold the
- simplices shall not exceed. Default is set to infinity.
- :type max_alpha_square: float
- :returns: A simplex tree created from the Delaunay Triangulation.
- :rtype: SimplexTree
- """
- simplex_tree = SimplexTree()
- if limit_dimension is not -1:
- self.thisptr.create_simplex_tree(simplex_tree.thisptr, max_alpha_square, limit_dimension)
- else:
- self.thisptr.create_simplex_tree(simplex_tree.thisptr, max_alpha_square)
- return simplex_tree
diff --git a/cython/doc/_templates/layout.html b/cython/doc/_templates/layout.html
deleted file mode 100644
index bc0e9658..00000000
--- a/cython/doc/_templates/layout.html
+++ /dev/null
@@ -1,275 +0,0 @@
-{#
- basic/layout.html
- ~~~~~~~~~~~~~~~~~
-
- Master layout template for Sphinx themes.
-
- :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
- :license: BSD, see LICENSE for details.
-#}
-{%- block doctype -%}
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-{%- endblock %}
-{%- set reldelim1 = reldelim1 is not defined and ' &raquo;' or reldelim1 %}
-{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %}
-{%- set render_sidebar = (not embedded) and (not theme_nosidebar|tobool) and
- (sidebars != []) %}
-{%- set url_root = pathto('', 1) %}
-{# XXX necessary? #}
-{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}
-{%- if not embedded and docstitle %}
- {%- set titlesuffix = " &mdash; "|safe + docstitle|e %}
-{%- else %}
- {%- set titlesuffix = "" %}
-{%- endif %}
-
-{%- macro relbar() %}
- <div class="related" role="navigation" aria-label="related navigation">
- <h3>{{ _('Navigation') }}</h3>
- <ul>
- {%- for rellink in rellinks %}
- <li class="right" {% if loop.first %}style="margin-right: 10px"{% endif %}>
- <a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags|e }}"
- {{ accesskey(rellink[2]) }}>{{ rellink[3] }}</a>
- {%- if not loop.first %}{{ reldelim2 }}{% endif %}</li>
- {%- endfor %}
- {%- block rootrellink %}
- <li class="nav-item nav-item-0"><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a>{{ reldelim1 }}</li>
- {%- endblock %}
- {%- for parent in parents %}
- <li class="nav-item nav-item-{{ loop.index }}"><a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a>{{ reldelim1 }}</li>
- {%- endfor %}
- {%- block relbaritems %} {% endblock %}
- </ul>
- </div>
-{%- endmacro %}
-
-{%- macro sidebar() %}
- {%- if render_sidebar %}
- <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
- <div class="sphinxsidebarwrapper">
- {%- block sidebarlogo %}
- {%- if logo %}
- <p class="logo"><a href="{{ pathto(master_doc) }}">
- <img class="logo" src="{{ pathto('_static/' + logo, 1) }}" alt="Logo"/>
- </a></p>
- {%- endif %}
- {%- endblock %}
- <h2><a href="index.html">GUDHI</a></h2>
- <h2><a href="fileformats.html">File formats</a></h2>
- <h2><a href="installation.html">GUDHI installation</a></h2>
- <h2><a href="citation.html">Acknowledging the GUDHI library</a></h2>
- <h2><a href="genindex.html">Index</a></h2>
- <h2><a href="examples.html">Examples</a></h2>
- {%- if sidebars != None %}
- {#- new style sidebar: explicitly include/exclude templates #}
- {%- for sidebartemplate in sidebars %}
- {%- include sidebartemplate %}
- {%- endfor %}
- {%- else %}
- {#- old style sidebars: using blocks -- should be deprecated #}
- {%- block sidebartoc %}
- {%- include "localtoc.html" %}
- {%- endblock %}
- {%- block sidebarrel %}
- {%- include "relations.html" %}
- {%- endblock %}
- {%- block sidebarsourcelink %}
- {%- include "sourcelink.html" %}
- {%- endblock %}
- {%- if customsidebar %}
- {%- include customsidebar %}
- {%- endif %}
- {%- block sidebarsearch %}
- {%- include "searchbox.html" %}
- {%- endblock %}
- {%- endif %}
- </div>
- </div>
- {%- endif %}
-{%- endmacro %}
-
-{%- macro script() %}
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '{{ url_root }}',
- VERSION: '{{ release|e }}',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '{{ '' if no_search_suffix else file_suffix }}',
- HAS_SOURCE: {{ has_source|lower }}
- };
- </script>
- {%- for scriptfile in script_files %}
- <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
- {%- endfor %}
-{%- endmacro %}
-
-{%- macro css() %}
-<!-- GUDHI website css for header BEGIN -->
-<link rel="stylesheet" type="text/css" href="https://gudhi.inria.fr/assets/css/styles_feeling_responsive.css" />
-<!-- GUDHI website css for header END -->
- <link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
- <link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
- {%- for cssfile in css_files %}
- <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
- {%- endfor %}
-{%- endmacro %}
-<!-- GUDHI website html class for header BEGIN -->
-<html xmlns="http://www.w3.org/1999/xhtml" class="no-js" lang="en">
-<!-- GUDHI website html class for header END -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset={{ encoding }}" />
- {{ metatags }}
- {%- block htmltitle %}
- <title>{{ title|striptags|e }}{{ titlesuffix }}</title>
- {%- endblock %}
- {{ css() }}
- {%- if not embedded %}
- {{ script() }}
- {%- if use_opensearch %}
- <link rel="search" type="application/opensearchdescription+xml"
- title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
- href="{{ pathto('_static/opensearch.xml', 1) }}"/>
- {%- endif %}
- {%- if favicon %}
- <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
- {%- endif %}
- {%- endif %}
-{%- block linktags %}
- {%- if hasdoc('about') %}
- <link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" />
- {%- endif %}
- {%- if hasdoc('genindex') %}
- <link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" />
- {%- endif %}
- {%- if hasdoc('search') %}
- <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" />
- {%- endif %}
- {%- if hasdoc('copyright') %}
- <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" />
- {%- endif %}
- <link rel="top" title="{{ docstitle|e }}" href="{{ pathto(master_doc) }}" />
- {%- if parents %}
- <link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}" />
- {%- endif %}
- {%- if next %}
- <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" />
- {%- endif %}
- {%- if prev %}
- <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" />
- {%- endif %}
-{%- endblock %}
-{%- block extrahead %} {% endblock %}
- </head>
- <body role="document">
- <!-- GUDHI website header BEGIN -->
- <div id="navigation" class="sticky">
- <nav class="top-bar" role="navigation" data-topbar>
- <ul class="title-area">
- <li class="name">
- <h1 class="show-for-small-only"><a href="" class="icon-tree"> GUDHI C++ library</a></h1>
- </li>
- <!-- Remove the class "menu-icon" to get rid of menu icon. Take out "Menu" to just have icon alone -->
- <li class="toggle-topbar menu-icon"><a href="#"><span>Navigation</span></a></li>
- </ul>
- <section class="top-bar-section">
- <ul class="right">
- <li class="divider"></li>
- <li><a href="/contact/">Contact</a></li>
- </ul>
- <ul class="left">
- <li><a href="/"> <img src="/assets/img/home.png" alt="&nbsp;&nbsp;GUDHI">&nbsp;&nbsp;GUDHI </a></li>
- <li class="divider"></li>
- <li class="has-dropdown">
- <a href="#">Project</a>
- <ul class="dropdown">
- <li><a href="/people/">People</a></li>
- <li><a href="/keepintouch/">Keep in touch</a></li>
- <li><a href="/partners/">Partners and Funding</a></li>
- <li><a href="/relatedprojects/">Related projects</a></li>
- <li><a href="/theyaretalkingaboutus/">They are talking about us</a></li>
- </ul>
- </li>
- <li class="divider"></li>
- <li class="has-dropdown">
- <a href="#">Download</a>
- <ul class="dropdown">
- <li><a href="/licensing/">Licensing</a></li>
- <li><a href="https://gforge.inria.fr/frs/download.php/latestzip/5253/library-latest.zip" target="_blank">Get the latest sources</a></li>
- <li><a href="https://gforge.inria.fr/frs/download.php/latestzip/5280/utils_osx-latest.zip" target="_blank">Utils for Mac OSx</a></li>
- <li><a href="https://gforge.inria.fr/frs/download.php/latestzip/5279/utils_win64-latest.zip" target="_blank">Utils for Win x64</a></li>
- </ul>
- </li>
- <li class="divider"></li>
- <li class="has-dropdown">
- <a href="#">Documentation</a>
- <ul class="dropdown">
- <li><a href="/doc/latest/">C++ documentation</a></li>
- <li><a href="/doc/latest/installation.html">C++ installation manual</a></li>
- <li><a href="/python/latest/">Python documentation</a></li>
- <li><a href="/python/latest/installation.html">Python installation manual</a></li>
- <li><a href="/utils/">Utilities</a></li>
- <li><a href="/tutorials/">Tutorials</a></li>
- <li><a href="/dockerfile/">Dockerfile</a></li>
- </ul>
- </li>
- <li class="divider"></li>
- <li><a href="/interfaces/">Interfaces</a></li>
- <li class="divider"></li>
- </ul>
- </section>
- </nav>
- </div><!-- /#navigation -->
- <!-- GUDHI website header BEGIN -->
-
-
-{%- block header %}{% endblock %}
-
-{%- block relbar1 %}{% endblock %}
-
-{%- block content %}
- {%- block sidebar1 %} {# possible location for sidebar #} {% endblock %}
-
- <div class="document">
- {%- block document %}
- <div class="documentwrapper">
- {%- if render_sidebar %}
- <div class="bodywrapper">
- {%- endif %}
- <div class="body" role="main">
- {% block body %} {% endblock %}
- </div>
- {%- if render_sidebar %}
- </div>
- {%- endif %}
- </div>
- {%- endblock %}
-
- {%- block sidebar2 %}{{ sidebar() }}{% endblock %}
- <div class="clearer"></div>
- </div>
-{%- endblock %}
-
-{%- block relbar2 %}{% endblock %}
-
-{%- block footer %}
- <div class="footer" role="contentinfo">
- {%- if show_copyright %}
- {%- if hasdoc('copyright') %}
- {% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
- {%- else %}
- {% trans copyright=copyright|e %} {{ copyright }}.{% endtrans %}
- {%- endif %}
- {%- endif %}
- {%- if last_updated %}
- {% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
- {%- endif %}
- {%- if show_sphinx %}
- {% trans sphinx_version=sphinx_version|e %}Created using <a href="http://sphinx-doc.org/">Sphinx</a> {{ sphinx_version }}.{% endtrans %}
- {%- endif %}
- </div>
-{%- endblock %}
- </body>
-</html>
-
diff --git a/cython/doc/alpha_complex_ref.rst b/cython/doc/alpha_complex_ref.rst
deleted file mode 100644
index 7da79543..00000000
--- a/cython/doc/alpha_complex_ref.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-==============================
-Alpha complex reference manual
-==============================
-
-.. autoclass:: gudhi.AlphaComplex
- :members:
- :undoc-members:
- :show-inheritance:
-
- .. automethod:: gudhi.AlphaComplex.__init__
diff --git a/cython/doc/alpha_complex_sum.inc b/cython/doc/alpha_complex_sum.inc
deleted file mode 100644
index 1680a712..00000000
--- a/cython/doc/alpha_complex_sum.inc
+++ /dev/null
@@ -1,22 +0,0 @@
-================================================================= =================================== ===================================
-:Author: Vincent Rouvreau :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3
-:Requires: CGAL :math:`\geq` 4.7.0 Eigen3
-================================================================= =================================== ===================================
-
-+----------------------------------------------------------------+------------------------------------------------------------------------+
-| .. figure:: | Alpha_complex is a simplicial complex constructed from the finite |
-| ../../doc/Alpha_complex/alpha_complex_representation.png | cells of a Delaunay Triangulation. |
-| :alt: Alpha complex representation | |
-| :figclass: align-center | The filtration value of each simplex is computed as the square of the |
-| | circumradius of the simplex if the circumsphere is empty (the simplex |
-| Alpha complex representation | is then said to be Gabriel), and as the minimum of the filtration |
-| | values of the codimension 1 cofaces that make it not Gabriel |
-| | otherwise. All simplices that have a filtration value strictly |
-| | greater than a given alpha squared value are not inserted into the |
-| | complex. |
-| | |
-| | This package requires having CGAL version 4.7 or higher (4.8.1 is |
-| | advised for better performance). |
-+----------------------------------------------------------------+------------------------------------------------------------------------+
-| :doc:`alpha_complex_user` | :doc:`alpha_complex_ref` |
-+----------------------------------------------------------------+------------------------------------------------------------------------+
diff --git a/cython/doc/alpha_complex_user.rst b/cython/doc/alpha_complex_user.rst
deleted file mode 100644
index d1e9c7cd..00000000
--- a/cython/doc/alpha_complex_user.rst
+++ /dev/null
@@ -1,210 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Alpha complex user manual
-=========================
-Definition
-----------
-
-.. include:: alpha_complex_sum.inc
-
-Alpha_complex is constructing a :doc:`Simplex_tree <simplex_tree_ref>` using
-`Delaunay Triangulation <http://doc.cgal.org/latest/Triangulation/index.html#Chapter_Triangulations>`_
-:cite:`cgal:hdj-t-15b` from `CGAL <http://www.cgal.org/>`_ (the Computational Geometry Algorithms Library
-:cite:`cgal:eb-15b`).
-
-Remarks
-^^^^^^^
-When Alpha_complex is constructed with an infinite value of :math:`\alpha`, the complex is a Delaunay complex.
-
-Example from points
--------------------
-
-This example builds the Delaunay triangulation from the given points, and initializes the alpha complex with it:
-
-.. testcode::
-
- import gudhi
- alpha_complex = gudhi.AlphaComplex(points=[[1, 1], [7, 0], [4, 6], [9, 6], [0, 14], [2, 19], [9, 17]])
-
- simplex_tree = alpha_complex.create_simplex_tree(max_alpha_square=60.0)
- result_str = 'Alpha complex is of dimension ' + repr(simplex_tree.dimension()) + ' - ' + \
- repr(simplex_tree.num_simplices()) + ' simplices - ' + \
- repr(simplex_tree.num_vertices()) + ' vertices.'
- print(result_str)
- fmt = '%s -> %.2f'
- for filtered_value in simplex_tree.get_filtration():
- print(fmt % tuple(filtered_value))
-
-The output is:
-
-.. testoutput::
-
- Alpha complex is of dimension 2 - 25 simplices - 7 vertices.
- [0] -> 0.00
- [1] -> 0.00
- [2] -> 0.00
- [3] -> 0.00
- [4] -> 0.00
- [5] -> 0.00
- [6] -> 0.00
- [2, 3] -> 6.25
- [4, 5] -> 7.25
- [0, 2] -> 8.50
- [0, 1] -> 9.25
- [1, 3] -> 10.00
- [1, 2] -> 11.25
- [1, 2, 3] -> 12.50
- [0, 1, 2] -> 13.00
- [5, 6] -> 13.25
- [2, 4] -> 20.00
- [4, 6] -> 22.74
- [4, 5, 6] -> 22.74
- [3, 6] -> 30.25
- [2, 6] -> 36.50
- [2, 3, 6] -> 36.50
- [2, 4, 6] -> 37.24
- [0, 4] -> 59.71
- [0, 2, 4] -> 59.71
-
-
-Algorithm
----------
-
-Data structure
-^^^^^^^^^^^^^^
-
-In order to build the alpha complex, first, a Simplex tree is built from the cells of a Delaunay Triangulation.
-(The filtration value is set to NaN, which stands for unknown value):
-
-.. figure::
- ../../doc/Alpha_complex/alpha_complex_doc.png
- :figclass: align-center
- :alt: Simplex tree structure construction example
-
- Simplex tree structure construction example
-
-Filtration value computation algorithm
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- **for** i : dimension :math:`\rightarrow` 0 **do**
- **for all** :math:`\sigma` of dimension i
- **if** filtration(:math:`\sigma`) is NaN **then**
- filtration(:math:`\sigma`) = :math:`\alpha^2(\sigma)`
- **end if**
-
- *//propagate alpha filtration value*
-
- **for all** :math:`\tau` face of :math:`\sigma`
- **if** filtration(:math:`\tau`) is not NaN **then**
- filtration(:math:`\tau`) = filtration(:math:`\sigma`)
- **end if**
- **end for**
- **end for**
- **end for**
-
- make_filtration_non_decreasing()
-
- prune_above_filtration()
-
-Dimension 2
-^^^^^^^^^^^
-
-From the example above, it means the algorithm looks into each triangle ([0,1,2], [0,2,4], [1,2,3], ...),
-computes the filtration value of the triangle, and then propagates the filtration value as described
-here:
-
-.. figure::
- ../../doc/Alpha_complex/alpha_complex_doc_420.png
- :figclass: align-center
- :alt: Filtration value propagation example
-
- Filtration value propagation example
-
-Dimension 1
-^^^^^^^^^^^
-
-Then, the algorithm looks into each edge ([0,1], [0,2], [1,2], ...),
-computes the filtration value of the edge (in this case, propagation will have no effect).
-
-Dimension 0
-^^^^^^^^^^^
-
-Finally, the algorithm looks into each vertex ([0], [1], [2], [3], [4], [5] and [6]) and
-sets the filtration value (0 in case of a vertex - propagation will have no effect).
-
-Non decreasing filtration values
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-As the squared radii computed by CGAL are an approximation, it might happen that these alpha squared values do not
-quite define a proper filtration (i.e. non-decreasing with respect to inclusion).
-We fix that up by calling `Simplex_tree::make_filtration_non_decreasing()` (cf.
-`C++ version <http://gudhi.gforge.inria.fr/doc/latest/index.html>`_).
-
-Prune above given filtration value
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The simplex tree is pruned from the given maximum alpha squared value (cf. `Simplex_tree::prune_above_filtration()`
-in the `C++ version <http://gudhi.gforge.inria.fr/doc/latest/index.html>`_).
-In the following example, the value is given by the user as argument of the program.
-
-
-Example from OFF file
-^^^^^^^^^^^^^^^^^^^^^
-
-This example builds the Delaunay triangulation from the points given by an OFF file, and initializes the alpha complex
-with it.
-
-
-Then, it is asked to display information about the alpha complex:
-
-.. testcode::
-
- import gudhi
- alpha_complex = gudhi.AlphaComplex(off_file=gudhi.__root_source_dir__ + \
- '/data/points/alphacomplexdoc.off')
- simplex_tree = alpha_complex.create_simplex_tree(max_alpha_square=59.0)
- result_str = 'Alpha complex is of dimension ' + repr(simplex_tree.dimension()) + ' - ' + \
- repr(simplex_tree.num_simplices()) + ' simplices - ' + \
- repr(simplex_tree.num_vertices()) + ' vertices.'
- print(result_str)
- fmt = '%s -> %.2f'
- for filtered_value in simplex_tree.get_filtration():
- print(fmt % tuple(filtered_value))
-
-the program output is:
-
-.. testoutput::
-
- Alpha complex is of dimension 2 - 23 simplices - 7 vertices.
- [0] -> 0.00
- [1] -> 0.00
- [2] -> 0.00
- [3] -> 0.00
- [4] -> 0.00
- [5] -> 0.00
- [6] -> 0.00
- [2, 3] -> 6.25
- [4, 5] -> 7.25
- [0, 2] -> 8.50
- [0, 1] -> 9.25
- [1, 3] -> 10.00
- [1, 2] -> 11.25
- [1, 2, 3] -> 12.50
- [0, 1, 2] -> 13.00
- [5, 6] -> 13.25
- [2, 4] -> 20.00
- [4, 6] -> 22.74
- [4, 5, 6] -> 22.74
- [3, 6] -> 30.25
- [2, 6] -> 36.50
- [2, 3, 6] -> 36.50
- [2, 4, 6] -> 37.24
-
-CGAL citations
-==============
-
-.. bibliography:: ../../biblio/how_to_cite_cgal.bib
- :filter: docnames
- :style: unsrt
diff --git a/cython/doc/bottleneck_distance_sum.inc b/cython/doc/bottleneck_distance_sum.inc
deleted file mode 100644
index 030fad9e..00000000
--- a/cython/doc/bottleneck_distance_sum.inc
+++ /dev/null
@@ -1,15 +0,0 @@
-================================================================= =================================== ===================================
-:Author: François Godi :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3
-:Requires: CGAL :math:`\geq` 4.8.0
-================================================================= =================================== ===================================
-
-+-----------------------------------------------------------------+----------------------------------------------------------------------+
-| .. figure:: | Bottleneck distance measures the similarity between two persistence |
-| ../../doc/Bottleneck_distance/perturb_pd.png | diagrams. It's the shortest distance b for which there exists a |
-| :figclass: align-center | perfect matching between the points of the two diagrams (+ all the |
-| | diagonal points) such that any couple of matched points are at |
-| Bottleneck distance is the length of | distance at most b. |
-| the longest edge | |
-+-----------------------------------------------------------------+----------------------------------------------------------------------+
-| :doc:`bottleneck_distance_user` | |
-+-----------------------------------------------------------------+----------------------------------------------------------------------+
diff --git a/cython/doc/bottleneck_distance_user.rst b/cython/doc/bottleneck_distance_user.rst
deleted file mode 100644
index 605db022..00000000
--- a/cython/doc/bottleneck_distance_user.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Bottleneck distance user manual
-===============================
-Definition
-----------
-
-.. include:: bottleneck_distance_sum.inc
-
-Function
---------
-.. autofunction:: gudhi.bottleneck_distance
-
-
-Basic example
--------------
-
-This example computes the bottleneck distance from 2 persistence diagrams:
-
-.. testcode::
-
- import gudhi
-
- diag1 = [[2.7, 3.7],[9.6, 14.],[34.2, 34.974], [3.,float('Inf')]]
- diag2 = [[2.8, 4.45],[9.5, 14.1],[3.2,float('Inf')]]
-
- message = "Bottleneck distance approximation=" + '%.2f' % gudhi.bottleneck_distance(diag1, diag2, 0.1)
- print(message)
-
- message = "Bottleneck distance value=" + '%.2f' % gudhi.bottleneck_distance(diag1, diag2)
- print(message)
-
-The output is:
-
-.. testoutput::
-
- Bottleneck distance approximation=0.81
- Bottleneck distance value=0.75
diff --git a/cython/doc/citation.rst b/cython/doc/citation.rst
deleted file mode 100644
index 117eb9dd..00000000
--- a/cython/doc/citation.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Acknowledging the GUDHI library
-###############################
-
-We kindly ask users to cite the GUDHI library as appropriately as possible in
-their papers, and to mention the use of the GUDHI library on the web pages of
-their projects using GUDHI and provide us with links to these web pages. Feel
-free to contact us in case you have any question or remark on this topic.
-
-We provide GUDHI bibtex entries for the modules of the User and Reference
-Manual, as well as for publications directly related to the GUDHI library.
-
-GUDHI bibtex
-************
-
-.. literalinclude:: ../../biblio/how_to_cite_gudhi.bib
diff --git a/cython/doc/conf.py b/cython/doc/conf.py
deleted file mode 100755
index 4a54d4fd..00000000
--- a/cython/doc/conf.py
+++ /dev/null
@@ -1,203 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# GUDHI documentation build configuration file, created by
-# sphinx-quickstart on Thu Jun 30 09:55:51 2016.
-#
-# This file is execfile()d with the current directory set to its
-# containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import sys
-import os
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
-
-# Path to Gudhi.so from source path
-sys.path.insert(0, os.path.abspath('.'))
-
-# -- General configuration ------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-#needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
-extensions = [
- 'matplotlib.sphinxext.plot_directive',
- 'sphinx.ext.autodoc',
- 'sphinx.ext.doctest',
- 'sphinx.ext.todo',
- 'sphinx.ext.mathjax',
- 'sphinx.ext.ifconfig',
- 'sphinx.ext.viewcode',
- 'sphinxcontrib.bibtex',
-]
-
-todo_include_todos = True
-# plot option : do not show hyperlinks (Source code, png, hires.png, pdf)
-plot_html_show_source_link = False
-plot_html_show_formats = False
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix of source filenames.
-source_suffix = '.rst'
-
-# The encoding of source files.
-#source_encoding = 'utf-8-sig'
-
-# The master toctree document.
-master_doc = 'index'
-
-import gudhi
-
-# General information about the project.
-project = gudhi.__name__
-copyright = gudhi.__copyright__ + ' - ' + gudhi.__license__
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-version = gudhi.__version__
-# The full version, including alpha/beta/rc tags.
-#release = '2.0.1-rc1'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-exclude_patterns = ['_build', '*.inc']
-
-# The reST default role (used for this markup: `text`) to use for all
-# documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-# If true, keep warnings as "system message" paragraphs in the built documents.
-#keep_warnings = False
-
-
-# -- Options for HTML output ----------------------------------------------
-
-# The theme to use for HTML and HTML Help pages. See the documentation for
-# a list of builtin themes.
-html_theme = 'classic'
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further. For a list of options available for each theme, see the
-# documentation.
-html_theme_options = {
- "sidebarbgcolor": "#A1ADCD",
- "sidebartextcolor": "black",
- "sidebarlinkcolor": "#334D5C",
- "body_max_width": "1200px",
-}
-
-# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
-
-# The name for this set of Sphinx documents. If None, it defaults to
-# "<project> v<release> documentation".
-#html_title = None
-
-# A shorter title for the navigation bar. Default is the same as html_title.
-#html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo =
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon =
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-
-# Add any extra paths that contain custom files (such as robots.txt or
-# .htaccess) here, relative to this directory. These files are copied
-# directly to the root of the documentation.
-#html_extra_path = []
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {'installation': 'installation.html'}
-
-# If false, no module index is generated.
-#html_domain_indices = True
-
-# If false, no index is generated.
-#html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-#html_show_sphinx = True
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it. The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = None
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'GUDHIdoc'
-
diff --git a/cython/doc/cubical_complex_ref.rst b/cython/doc/cubical_complex_ref.rst
deleted file mode 100644
index 1fe9d5fb..00000000
--- a/cython/doc/cubical_complex_ref.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Cubical complex reference manual
-################################
-
-.. autoclass:: gudhi.CubicalComplex
- :members:
- :undoc-members:
- :show-inheritance:
-
- .. automethod:: gudhi.CubicalComplex.__init__
diff --git a/cython/doc/cubical_complex_sum.inc b/cython/doc/cubical_complex_sum.inc
deleted file mode 100644
index 280ad0e0..00000000
--- a/cython/doc/cubical_complex_sum.inc
+++ /dev/null
@@ -1,15 +0,0 @@
-================================================================= =================================== ===================================
-:Author: Pawel Dlotko :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3
-================================================================= =================================== ===================================
-
-+--------------------------------------------------------------------------+----------------------------------------------------------------------+
-| .. figure:: | The cubical complex is an example of a structured complex useful in |
-| ../../doc/Bitmap_cubical_complex/Cubical_complex_representation.png | computational mathematics (specially rigorous numerics) and image |
-| :alt: Cubical complex representation | analysis. |
-| :figclass: align-center | |
-| | |
-| Cubical complex representation | |
-+--------------------------------------------------------------------------+----------------------------------------------------------------------+
-| :doc:`cubical_complex_user` | * :doc:`cubical_complex_ref` |
-| | * :doc:`periodic_cubical_complex_ref` |
-+--------------------------------------------------------------------------+----------------------------------------------------------------------+
diff --git a/cython/doc/cubical_complex_user.rst b/cython/doc/cubical_complex_user.rst
deleted file mode 100644
index 320bd79b..00000000
--- a/cython/doc/cubical_complex_user.rst
+++ /dev/null
@@ -1,162 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Cubical complex user manual
-===========================
-Definition
-----------
-
-===================================== ===================================== =====================================
-:Author: Pawel Dlotko :Introduced in: GUDHI PYTHON 2.0.0 :Copyright: GPL v3
-===================================== ===================================== =====================================
-
-+---------------------------------------------+----------------------------------------------------------------------+
-| :doc:`cubical_complex_user` | * :doc:`cubical_complex_ref` |
-| | * :doc:`periodic_cubical_complex_ref` |
-+---------------------------------------------+----------------------------------------------------------------------+
-
-The cubical complex is an example of a structured complex useful in computational mathematics (specially rigorous
-numerics) and image analysis.
-
-An *elementary interval* is an interval of a form :math:`[n,n+1]`, or :math:`[n,n]`, for :math:`n \in \mathcal{Z}`.
-The first one is called *non-degenerate*, while the second one is a *degenerate* interval. A
-*boundary of a elementary interval* is a chain :math:`\partial [n,n+1] = [n+1,n+1]-[n,n]` in case of
-non-degenerated elementary interval and :math:`\partial [n,n] = 0` in case of degenerate elementary interval. An
-*elementary cube* :math:`C` is a product of elementary intervals, :math:`C=I_1 \times \ldots \times I_n`.
-*Embedding dimension* of a cube is n, the number of elementary intervals (degenerate or not) in the product.
-A *dimension of a cube* :math:`C=I_1 \times ... \times I_n` is the number of non degenerate elementary
-intervals in the product. A *boundary of a cube* :math:`C=I_1 \times \ldots \times I_n` is a chain obtained
-in the following way:
-
-.. math::
-
- \partial C = (\partial I_1 \times \ldots \times I_n) + (I_1 \times \partial I_2 \times \ldots \times I_n) +
- \ldots + (I_1 \times I_2 \times \ldots \times \partial I_n).
-
-A *cubical complex* :math:`\mathcal{K}` is a collection of cubes closed under operation of taking boundary
-(i.e. boundary of every cube from the collection is in the collection). A cube :math:`C` in cubical complex
-:math:`\mathcal{K}` is *maximal* if it is not in a boundary of any other cube in :math:`\mathcal{K}`. A
-*support* of a cube :math:`C` is the set in :math:`\mathbb{R}^n` occupied by :math:`C` (:math:`n` is the embedding
-dimension of :math:`C`).
-
-Cubes may be equipped with a filtration values in which case we have filtered cubical complex. All the cubical
-complexes considered in this implementation are filtered cubical complexes (although, the range of a filtration may
-be a set of two elements).
-
-For further details and theory of cubical complexes, please consult :cite:`kaczynski2004computational` as well as the
-following paper :cite:`peikert2012topological`.
-
-Data structure.
----------------
-
-The implementation of Cubical complex provides a representation of complexes that occupy a rectangular region in
-:math:`\mathbb{R}^n`. This extra assumption allows for a memory efficient way of storing cubical complexes in a form
-of so called bitmaps. Let
-:math:`R = [b_1,e_1] \times \ldots \times [b_n,e_n]`, for :math:`b_1,...b_n,e_1,...,e_n \in \mathbb{Z}`,
-:math:`b_i \leq d_i` be the considered rectangular region and let :math:`\mathcal{K}` be a filtered
-cubical complex having the rectangle :math:`R` as its support. Note that the structure of the coordinate system gives
-a way a lexicographical ordering of cells of :math:`\mathcal{K}`. This ordering is a base of the presented
-bitmap-based implementation. In this implementation, the whole cubical complex is stored as a vector of the values
-of filtration. This, together with dimension of :math:`\mathcal{K}` and the sizes of :math:`\mathcal{K}` in all
-directions, allows to determine, dimension, neighborhood, boundary and coboundary of every cube
-:math:`C \in \mathcal{K}`.
-
-.. figure::
- ../../doc/Bitmap_cubical_complex/Cubical_complex_representation.png
- :alt: Cubical complex.
- :figclass: align-center
-
- Cubical complex.
-
-Note that the cubical complex in the figure above is, in a natural way, a product of one dimensional cubical
-complexes in :math:`\mathbb{R}`. The number of all cubes in each direction is equal :math:`2n+1`, where :math:`n` is
-the number of maximal cubes in the considered direction. Let us consider a cube at the position :math:`k` in the
-bitmap.
-Knowing the sizes of the bitmap, by a series of modulo operation, we can determine which elementary intervals are
-present in the product that gives the cube :math:`C`. In a similar way, we can compute boundary and the coboundary of
-each cube. Further details can be found in the literature.
-
-Input Format.
--------------
-
-In the current implantation, filtration is given at the maximal cubes, and it is then extended by the lower star
-filtration to all cubes. There are a number of constructors that can be used to construct cubical complex by users
-who want to use the code directly. They can be found in the :doc:`cubical_complex_ref`.
-Currently one input from a text file is used. It uses a format used already in
-`Perseus software <http://www.sas.upenn.edu/~vnanda/perseus/>`_ by Vidit Nanda.
-The file format is described here: :doc:`Perseus <fileformats>`.
-
-.. testcode::
-
- import gudhi
- cubical_complex = gudhi.CubicalComplex(perseus_file=gudhi.__root_source_dir__ + \
- '/data/bitmap/cubicalcomplexdoc.txt')
- result_str = 'Cubical complex is of dimension ' + repr(cubical_complex.dimension()) + ' - ' + \
- repr(cubical_complex.num_simplices()) + ' simplices.'
- print(result_str)
-
-the program output is:
-
-.. testoutput::
-
- Cubical complex is of dimension 2 - 49 simplices.
-
-Periodic boundary conditions.
------------------------------
-
-Often one would like to impose periodic boundary conditions to the cubical complex (cf.
-:doc:`periodic_cubical_complex_ref`).
-Let :math:`I_1\times ... \times I_n` be a box that is decomposed with a cubical complex :math:`\mathcal{K}`.
-Imposing periodic boundary conditions in the direction i, means that the left and the right side of a complex
-:math:`\mathcal{K}` are considered the same. In particular, if for a bitmap :math:`\mathcal{K}` periodic boundary
-conditions are imposed in all directions, then complex :math:`\mathcal{K}` became n-dimensional torus. One can use
-various constructors from the file Bitmap_cubical_complex_periodic_boundary_conditions_base.h to construct cubical
-complex with periodic boundary conditions.
-
-One can also use Perseus style input files (see :doc:`Perseus <fileformats>`) for the specific periodic case:
-
-.. testcode::
-
- import gudhi
- periodic_cc = gudhi.PeriodicCubicalComplex(perseus_file=gudhi.__root_source_dir__ + \
- '/data/bitmap/periodiccubicalcomplexdoc.txt')
- result_str = 'Periodic cubical complex is of dimension ' + repr(periodic_cc.dimension()) + ' - ' + \
- repr(periodic_cc.num_simplices()) + ' simplices.'
- print(result_str)
-
-the program output is:
-
-.. testoutput::
-
- Periodic cubical complex is of dimension 2 - 42 simplices.
-
-Or it can be defined as follows:
-
-.. testcode::
-
- from gudhi import PeriodicCubicalComplex as pcc
- periodic_cc = pcc(dimensions=[3,3],
- top_dimensional_cells= [0, 0, 0, 0, 1, 0, 0, 0, 0],
- periodic_dimensions=[True, False])
- result_str = 'Periodic cubical complex is of dimension ' + repr(periodic_cc.dimension()) + ' - ' + \
- repr(periodic_cc.num_simplices()) + ' simplices.'
- print(result_str)
-
-the program output is:
-
-.. testoutput::
-
- Periodic cubical complex is of dimension 2 - 42 simplices.
-
-Examples.
----------
-
-End user programs are available in cython/example/ folder.
-
-Bibliography
-============
-
-.. bibliography:: ../../biblio/bibliography.bib
- :filter: docnames
- :style: unsrt
diff --git a/cython/doc/euclidean_strong_witness_complex_ref.rst b/cython/doc/euclidean_strong_witness_complex_ref.rst
deleted file mode 100644
index 1a602cd5..00000000
--- a/cython/doc/euclidean_strong_witness_complex_ref.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-=================================================
-Euclidean strong witness complex reference manual
-=================================================
-
-.. autoclass:: gudhi.EuclideanStrongWitnessComplex
- :members:
- :undoc-members:
- :show-inheritance:
-
- .. automethod:: gudhi.EuclideanStrongWitnessComplex.__init__
diff --git a/cython/doc/euclidean_witness_complex_ref.rst b/cython/doc/euclidean_witness_complex_ref.rst
deleted file mode 100644
index 28daf965..00000000
--- a/cython/doc/euclidean_witness_complex_ref.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-==========================================
-Euclidean witness complex reference manual
-==========================================
-
-.. autoclass:: gudhi.EuclideanWitnessComplex
- :members:
- :undoc-members:
- :show-inheritance:
-
- .. automethod:: gudhi.EuclideanWitnessComplex.__init__
diff --git a/cython/doc/examples.rst b/cython/doc/examples.rst
deleted file mode 100644
index 1f02f8a2..00000000
--- a/cython/doc/examples.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Examples
-########
-
-.. only:: builder_html
-
- * :download:`rips_complex_from_points_example.py <../example/rips_complex_from_points_example.py>`
- * :download:`alpha_complex_from_points_example.py <../example/alpha_complex_from_points_example.py>`
- * :download:`simplex_tree_example.py <../example/simplex_tree_example.py>`
- * :download:`alpha_rips_persistence_bottleneck_distance.py <../example/alpha_rips_persistence_bottleneck_distance.py>`
- * :download:`tangential_complex_plain_homology_from_off_file_example.py <../example/tangential_complex_plain_homology_from_off_file_example.py>`
- * :download:`alpha_complex_diagram_persistence_from_off_file_example.py <../example/alpha_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py <../example/periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py>`
- * :download:`bottleneck_basic_example.py <../example/bottleneck_basic_example.py>`
- * :download:`gudhi_graphical_tools_example.py <../example/gudhi_graphical_tools_example.py>`
- * :download:`witness_complex_from_nearest_landmark_table.py <../example/witness_complex_from_nearest_landmark_table.py>`
- * :download:`euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py <../example/euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`euclidean_witness_complex_diagram_persistence_from_off_file_example.py <../example/euclidean_witness_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`rips_complex_diagram_persistence_from_off_file_example.py <../example/rips_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`rips_complex_diagram_persistence_from_distance_matrix_file_example.py <../example/rips_complex_diagram_persistence_from_distance_matrix_file_example.py>`
- * :download:`rips_persistence_diagram.py <../example/rips_persistence_diagram.py>`
- * :download:`random_cubical_complex_persistence_example.py <../example/random_cubical_complex_persistence_example.py>`
- * :download:`coordinate_graph_induced_complex.py <../example/coordinate_graph_induced_complex.py>`
- * :download:`functional_graph_induced_complex.py <../example/functional_graph_induced_complex.py>`
- * :download:`voronoi_graph_induced_complex.py <../example/voronoi_graph_induced_complex.py>`
- * :download:`nerve_of_a_covering.py <../example/nerve_of_a_covering.py>`
diff --git a/cython/doc/fileformats.rst b/cython/doc/fileformats.rst
deleted file mode 100644
index ff20f26e..00000000
--- a/cython/doc/fileformats.rst
+++ /dev/null
@@ -1,90 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-File formats
-############
-
-Persistence Diagram
-*******************
-
-Such a file, whose extension is usually ``.pers``, contains a list of
-persistence intervals.
-
-Lines starting with ``#`` are ignored (comments).
-
-Other lines might contain 2, 3 or 4 values (the number of values on each line
-must be the same for all lines)::
-
- [[field] dimension] birth death
-
-Here is a simple sample file::
-
- # Persistence diagram example
- 2 2.7 3.7
- 2 9.6 14.
- # Some comments
- 3 34.2 34.974
- 4 3. inf
-
-Other sample files can be found in the `data/persistence_diagram` folder.
-
-Such files can be generated with
-:meth:`gudhi.SimplexTree.write_persistence_diagram`, read with
-:meth:`gudhi.read_persistence_intervals_grouped_by_dimension`, or
-:meth:`gudhi.read_persistence_intervals_in_dimension` and displayed with
-:meth:`gudhi.plot_persistence_barcode` or
-:meth:`gudhi.plot_persistence_diagram`.
-
-Iso-cuboid
-**********
-
-Such a file describes an iso-oriented cuboid with diagonal opposite vertices
-(min_x, min_y, min_z,...) and (max_x, max_y, max_z, ...). The format is::
-
- min_x min_y [min_z ...]
- max_x max_y [max_z ...]
-
-Here is a simple sample file in the 3D case::
-
- -1. -1. -1.
- 1. 1. 1.
-
-
-Perseus
-*******
-
-This file format is the format used by the
-`Perseus software <http://www.sas.upenn.edu/~vnanda/perseus/>`_ by Vidit Nanda.
-The first line contains a number d begin the dimension of the bitmap (2 in the
-example below). Next d lines are the numbers of top dimensional cubes in each
-dimensions (3 and 3 in the example below). Next, in lexicographical order, the
-filtration of top dimensional cubes is given (1 4 6 8 20 4 7 6 5 in the example
-below).
-
-.. figure::
- ../../doc/Bitmap_cubical_complex/exampleBitmap.png
- :alt: Example of a input data.
- :figclass: align-center
-
- Example of a input data.
-
-The input file for the following complex is:
-
-.. literalinclude:: ../../data/bitmap/cubicalcomplexdoc.txt
-
-.. centered:: ../../data/bitmap/cubicalcomplexdoc.txt
-
-To indicate periodic boundary conditions in a given direction, then number of
-top dimensional cells in this direction have to be multiplied by -1. For
-instance:
-
-.. literalinclude:: ../../data/bitmap/periodiccubicalcomplexdoc.txt
-
-.. centered:: ../../data/bitmap/periodiccubicalcomplexdoc.txt
-
-
-Indicate that we have imposed periodic boundary conditions in the direction x,
-but not in the direction y.
-
-Other sample files can be found in the `data/bitmap` folder.
diff --git a/cython/doc/img/graphical_tools_representation.png b/cython/doc/img/graphical_tools_representation.png
deleted file mode 100644
index 9759f7ba..00000000
--- a/cython/doc/img/graphical_tools_representation.png
+++ /dev/null
Binary files differ
diff --git a/cython/doc/index.rst b/cython/doc/index.rst
deleted file mode 100644
index 15cbe267..00000000
--- a/cython/doc/index.rst
+++ /dev/null
@@ -1,93 +0,0 @@
-GUDHI Python module documentation
-#################################
-
-.. figure::
- ../../doc/common/Gudhi_banner.png
- :alt: Gudhi banner
- :figclass: align-center
-
-Introduction
-************
-
-The Python interface for the Gudhi library (Geometry Understanding in Higher
-Dimensions) is a generic open source
-`Python module <http://gudhi.gforge.inria.fr/python/latest/>`_, for
-Computational Topology and Topological Data Analysis
-(`TDA <https://en.wikipedia.org/wiki/Topological_data_analysis>`_).
-The GUDHI library intends to help the development of new algorithmic solutions
-in TDA and their transfer to applications. It provides robust, efficient,
-flexible and easy to use implementations of state-of-the-art algorithms and
-data structures.
-
-The current release of the GUDHI library includes:
-
-* Data structures to represent, construct and manipulate simplicial complexes.
-* Simplification of simplicial complexes by edge contraction.
-* Algorithms to compute persistent homology and bottleneck distance.
-
-We refer to :cite:`gudhilibrary_ICMS14` for a detailed description of the
-design of the library.
-
-Data structures
-***************
-
-Alpha complex
-=============
-
-.. include:: alpha_complex_sum.inc
-
-Cover complexes
-===============
-
-.. include:: nerve_gic_complex_sum.rst
-
-Cubical complex
-===============
-
-.. include:: cubical_complex_sum.inc
-
-Rips complex
-============
-
-.. include:: rips_complex_sum.inc
-
-Simplex tree
-============
-
-.. include:: simplex_tree_sum.inc
-
-Tangential complex
-==================
-
-.. include:: tangential_complex_sum.inc
-
-Witness complex
-===============
-
-.. include:: witness_complex_sum.inc
-
-
-Toolbox
-*******
-
-Bottleneck distance
-===================
-
-.. include:: bottleneck_distance_sum.inc
-
-Persistence cohomology
-======================
-
-.. include:: persistent_cohomology_sum.inc
-
-Persistence graphical tools
-===========================
-
-.. include:: persistence_graphical_tools_sum.inc
-
-Bibliography
-************
-
-.. bibliography:: ../../biblio/bibliography.bib
- :filter: docnames
- :style: unsrt
diff --git a/cython/doc/installation.rst b/cython/doc/installation.rst
deleted file mode 100644
index 43576ec9..00000000
--- a/cython/doc/installation.rst
+++ /dev/null
@@ -1,236 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Installation
-############
-
-Compiling
-*********
-The library uses c++11 and requires `Boost <https://www.boost.org/>`_ ≥ 1.48.0
-and `CMake <https://www.cmake.org/>`_ ≥ 3.1.
-It is a multi-platform library and compiles on Linux, Mac OSX and Visual
-Studio 2015.
-It also requires cmake to generate makefiles, and cython to compile the
-library.
-
-On `Windows <https://wiki.python.org/moin/WindowsCompilers>`_ , only Python
-3.5 and 3.6 are available because of the required Visual Studio version.
-
-On other systems, if you have several Python/cython installed, the version 2.X
-will be used by default, but you can force it by adding
-:code:`-DPython_ADDITIONAL_VERSIONS=3` to the cmake command.
-
-GUDHI Cythonization
-===================
-
-To build the GUDHI cython module, run the following commands in a terminal:
-
-.. code-block:: bash
-
- cd /path-to-gudhi/
- mkdir build
- cd build/
- cmake ..
- make cython
-
-Test suites
-===========
-
-To test your build, `py.test <http://doc.pytest.org>`_ is optional. Run the
-following command in a terminal:
-
-.. code-block:: bash
-
- cd /path-to-gudhi/build/cython
- # For windows, you have to set PYTHONPATH environment variable
- export PYTHONPATH='$PYTHONPATH:/path-to-gudhi/build/cython'
- ctest -R py_test
-
-Debugging issues
-================
-
-If tests fail, please check your PYTHONPATH and try to :code:`import gudhi`
-and check the errors.
-The problem can come from a third-party library bad link or installation.
-
-If :code:`import gudhi` succeeds, please have a look to debug informations:
-
-.. code-block:: python
-
- import gudhi
- print(gudhi.__debug_info__)
-
-You shall have something like:
-
-.. code-block:: none
-
- Python version 2.7.15
- Cython version 0.26.1
- Eigen3 version 3.1.1
- Installed modules are: off_reader;simplex_tree;rips_complex;cubical_complex;periodic_cubical_complex;
- persistence_graphical_tools;reader_utils;witness_complex;strong_witness_complex;alpha_complex;
- euclidean_witness_complex;euclidean_strong_witness_complex;
- Missing modules are: bottleneck_distance;nerve_gic;subsampling;tangential_complex;persistence_graphical_tools;
- CGAL version 4.7.1000
- GMP_LIBRARIES = /usr/lib/x86_64-linux-gnu/libgmp.so
- GMPXX_LIBRARIES = /usr/lib/x86_64-linux-gnu/libgmpxx.so
- TBB version 9107 found and used
-
-Here, you can see that bottleneck_distance, nerve_gic, subsampling and
-tangential_complex are missing because of the CGAL version.
-persistence_graphical_tools is not available as numpy and matplotlib are not
-available.
-Unitary tests cannot be run as pytest is missing.
-
-A complete configuration would be :
-
-.. code-block:: none
-
- Python version 3.6.5
- Cython version 0.28.2
- Pytest version 3.3.2
- Matplotlib version 2.2.2
- Numpy version 1.14.5
- Eigen3 version 3.3.4
- Installed modules are: off_reader;simplex_tree;rips_complex;cubical_complex;periodic_cubical_complex;
- persistence_graphical_tools;reader_utils;witness_complex;strong_witness_complex;persistence_graphical_tools;
- bottleneck_distance;nerve_gic;subsampling;tangential_complex;alpha_complex;euclidean_witness_complex;
- euclidean_strong_witness_complex;
- CGAL header only version 4.11.0
- GMP_LIBRARIES = /usr/lib/x86_64-linux-gnu/libgmp.so
- GMPXX_LIBRARIES = /usr/lib/x86_64-linux-gnu/libgmpxx.so
- TBB version 9107 found and used
-
-Documentation
-=============
-
-To build the documentation, `sphinx-doc <http://http://www.sphinx-doc.org>`_ is
-required. Please refer to *conf.py* file to see which
-`sphinx-doc <http://http://www.sphinx-doc.org>`_ modules are required to
-generate the documentation. Run the following commands in a terminal:
-
-.. code-block:: bash
-
- make sphinx
-
-Optional third-party library
-****************************
-
-CGAL
-====
-
-The :doc:`Alpha complex </alpha_complex_user>`,
-:doc:`Tangential complex </tangential_complex_user>` and
-:doc:`Witness complex </witness_complex_user>` data structures, and
-:doc:`Bottleneck distance </bottleneck_distance_user>` requires CGAL, which is a
-C++ library which provides easy access to efficient and reliable geometric
-algorithms.
-
-Having CGAL, the Computational Geometry Algorithms Library, version 4.7.0 or
-higher installed is recommended. The procedure to install this library
-according to your operating system is detailed
-`here <http://doc.cgal.org/latest/Manual/installation.html>`_.
-
-The following examples requires CGAL version ≥ 4.7.0:
-
-.. only:: builder_html
-
- * :download:`alpha_complex_diagram_persistence_from_off_file_example.py <../example/alpha_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`alpha_complex_from_points_example.py <../example/alpha_complex_from_points_example.py>`
-
-The following examples requires CGAL version ≥ 4.8.0:
-
-.. only:: builder_html
-
- * :download:`bottleneck_basic_example.py <../example/bottleneck_basic_example.py>`
- * :download:`tangential_complex_plain_homology_from_off_file_example.py <../example/tangential_complex_plain_homology_from_off_file_example.py>`
-
-The following examples requires CGAL version ≥ 4.8.1:
-
-.. only:: builder_html
-
- * :download:`euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py <../example/euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`euclidean_witness_complex_diagram_persistence_from_off_file_example.py <../example/euclidean_witness_complex_diagram_persistence_from_off_file_example.py>`
-
-Eigen3
-======
-
-The :doc:`Alpha complex </alpha_complex_user>`,
-:doc:`Tangential complex </tangential_complex_user>` and
-:doc:`Witness complex </witness_complex_user>` data structures and few
-examples requires `Eigen3 <http://eigen.tuxfamily.org/>`_, a C++ template
-library for linear algebra: matrices, vectors, numerical solvers, and related
-algorithms.
-
-The following examples require the `Eigen3 <http://eigen.tuxfamily.org/>`_:
-
-.. only:: builder_html
-
- * :download:`alpha_complex_diagram_persistence_from_off_file_example.py <../example/alpha_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`alpha_complex_from_points_example.py <../example/alpha_complex_from_points_example.py>`
- * :download:`tangential_complex_plain_homology_from_off_file_example.py <../example/tangential_complex_plain_homology_from_off_file_example.py>`
- * :download:`euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py <../example/euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`euclidean_witness_complex_diagram_persistence_from_off_file_example.py <../example/euclidean_witness_complex_diagram_persistence_from_off_file_example.py>`
-
-Matplotlib
-==========
-
-The :doc:`persistence graphical tools </persistence_graphical_tools_user>`
-module requires `Matplotlib <http://matplotlib.org>`_, a Python 2D plotting
-library which produces publication quality figures in a variety of hardcopy
-formats and interactive environments across platforms.
-
-The following examples require the `Matplotlib <http://matplotlib.org>`_:
-
-.. only:: builder_html
-
- * :download:`alpha_complex_diagram_persistence_from_off_file_example.py <../example/alpha_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`gudhi_graphical_tools_example.py <../example/gudhi_graphical_tools_example.py>`
- * :download:`periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py <../example/periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py>`
- * :download:`rips_complex_diagram_persistence_from_off_file_example.py <../example/rips_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`rips_persistence_diagram.py <../example/rips_persistence_diagram.py>`
- * :download:`rips_complex_diagram_persistence_from_distance_matrix_file_example.py <../example/rips_complex_diagram_persistence_from_distance_matrix_file_example.py>`
- * :download:`tangential_complex_plain_homology_from_off_file_example.py <../example/tangential_complex_plain_homology_from_off_file_example.py>`
- * :download:`euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py <../example/euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`euclidean_witness_complex_diagram_persistence_from_off_file_example.py <../example/euclidean_witness_complex_diagram_persistence_from_off_file_example.py>`
-
-Numpy
-=====
-
-The :doc:`persistence graphical tools </persistence_graphical_tools_user>`
-module requires `NumPy <http://numpy.org>`_, a fundamental package for
-scientific computing with Python.
-
-The following examples require the `NumPy <http://numpy.org>`_:
-
-.. only:: builder_html
-
- * :download:`alpha_complex_diagram_persistence_from_off_file_example.py <../example/alpha_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`gudhi_graphical_tools_example.py <../example/gudhi_graphical_tools_example.py>`
- * :download:`periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py <../example/periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py>`
- * :download:`rips_complex_diagram_persistence_from_off_file_example.py <../example/rips_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`rips_persistence_diagram.py <../example/rips_persistence_diagram.py>`
- * :download:`rips_complex_diagram_persistence_from_distance_matrix_file_example.py <../example/rips_complex_diagram_persistence_from_distance_matrix_file_example.py>`
- * :download:`tangential_complex_plain_homology_from_off_file_example.py <../example/tangential_complex_plain_homology_from_off_file_example.py>`
- * :download:`euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py <../example/euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`euclidean_witness_complex_diagram_persistence_from_off_file_example.py <../example/euclidean_witness_complex_diagram_persistence_from_off_file_example.py>`
-
-Threading Building Blocks
-=========================
-
-`Intel® TBB <https://www.threadingbuildingblocks.org/>`_ lets you easily write
-parallel C++ programs that take full advantage of multicore performance, that
-are portable and composable, and that have future-proof scalability.
-
-Having Intel® TBB installed is recommended to parallelize and accelerate some
-GUDHI computations.
-
-Bug reports and contributions
-*****************************
-
-Please help us improving the quality of the GUDHI library. You may report bugs or suggestions to:
-
- Contact: gudhi-users@lists.gforge.inria.fr
-
-GUDHI is open to external contributions. If you want to join our development team, please contact us.
diff --git a/cython/doc/nerve_gic_complex_ref.rst b/cython/doc/nerve_gic_complex_ref.rst
deleted file mode 100644
index e24e01fc..00000000
--- a/cython/doc/nerve_gic_complex_ref.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-================================
-Cover complexes reference manual
-================================
-
-.. autoclass:: gudhi.CoverComplex
- :members:
- :undoc-members:
- :show-inheritance:
-
- .. automethod:: gudhi.CoverComplex.__init__
diff --git a/cython/doc/nerve_gic_complex_sum.rst b/cython/doc/nerve_gic_complex_sum.rst
deleted file mode 100644
index 72782c7a..00000000
--- a/cython/doc/nerve_gic_complex_sum.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-================================================================= =================================== ===================================
-:Author: Mathieu Carrière :Introduced in: GUDHI 2.1.0 :Copyright: GPL v3
-:Requires: CGAL :math:`\geq` 4.8.1
-================================================================= =================================== ===================================
-
-+----------------------------------------------------------------+------------------------------------------------------------------------+
-| .. figure:: | Nerves and Graph Induced Complexes are cover complexes, i.e. |
-| ../../doc/Nerve_GIC/gicvisu.jpg | simplicial complexes that provably contain topological information |
-| :alt: Graph Induced Complex of a point cloud. | about the input data. They can be computed with a cover of the data, |
-| :figclass: align-center | that comes i.e. from the preimage of a family of intervals covering |
-| | the image of a scalar-valued function defined on the data. |
-| Graph Induced Complex of a point cloud. | |
-+----------------------------------------------------------------+------------------------------------------------------------------------+
-| :doc:`nerve_gic_complex_user` | :doc:`nerve_gic_complex_ref` |
-+----------------------------------------------------------------+------------------------------------------------------------------------+
diff --git a/cython/doc/nerve_gic_complex_user.rst b/cython/doc/nerve_gic_complex_user.rst
deleted file mode 100644
index d774827e..00000000
--- a/cython/doc/nerve_gic_complex_user.rst
+++ /dev/null
@@ -1,312 +0,0 @@
-Cover complexes user manual
-===========================
-Definition
-----------
-
-.. include:: nerve_gic_complex_sum.rst
-
-Visualizations of the simplicial complexes can be done with either
-neato (from `graphviz <http://www.graphviz.org/>`_),
-`geomview <http://www.geomview.org/>`_,
-`KeplerMapper <https://github.com/MLWave/kepler-mapper>`_.
-Input point clouds are assumed to be
-`OFF files <http://www.geomview.org/docs/html/OFF.html>`_.
-
-Covers
-------
-
-Nerves and Graph Induced Complexes require a cover C of the input point cloud P,
-that is a set of subsets of P whose union is P itself.
-Very often, this cover is obtained from the preimage of a family of intervals covering
-the image of some scalar-valued function f defined on P. This family is parameterized
-by its resolution, which can be either the number or the length of the intervals,
-and its gain, which is the overlap percentage between consecutive intervals (ordered by their first values).
-
-Nerves
-------
-
-Nerve definition
-^^^^^^^^^^^^^^^^
-
-Assume you are given a cover C of your point cloud P. Then, the Nerve of this cover
-is the simplicial complex that has one k-simplex per k-fold intersection of cover elements.
-See also `Wikipedia <https://en.wikipedia.org/wiki/Nerve_of_a_covering>`_.
-
-.. figure::
- ../../doc/Nerve_GIC/nerve.png
- :figclass: align-center
- :alt: Nerve of a double torus
-
- Nerve of a double torus
-
-Example
-^^^^^^^
-
-This example builds the Nerve of a point cloud sampled on a 3D human shape (human.off).
-The cover C comes from the preimages of intervals (10 intervals with gain 0.3)
-covering the height function (coordinate 2),
-which are then refined into their connected components using the triangulation of the .OFF file.
-
-.. testcode::
-
- import gudhi
- nerve_complex = gudhi.CoverComplex()
- nerve_complex.set_verbose(True)
-
- if (nerve_complex.read_point_cloud(gudhi.__root_source_dir__ + \
- '/data/points/human.off')):
- nerve_complex.set_type('Nerve')
- nerve_complex.set_color_from_coordinate(2)
- nerve_complex.set_function_from_coordinate(2)
- nerve_complex.set_graph_from_OFF()
- nerve_complex.set_resolution_with_interval_number(10)
- nerve_complex.set_gain(0.3)
- nerve_complex.set_cover_from_function()
- nerve_complex.find_simplices()
- nerve_complex.write_info()
- simplex_tree = nerve_complex.create_simplex_tree()
- nerve_complex.compute_PD()
- result_str = 'Nerve is of dimension ' + repr(simplex_tree.dimension()) + ' - ' + \
- repr(simplex_tree.num_simplices()) + ' simplices - ' + \
- repr(simplex_tree.num_vertices()) + ' vertices.'
- print(result_str)
- for filtered_value in simplex_tree.get_filtration():
- print(filtered_value[0])
-
-the program output is:
-
-.. code-block:: none
-
- Min function value = -0.979672 and Max function value = 0.816414
- Interval 0 = [-0.979672, -0.761576]
- Interval 1 = [-0.838551, -0.581967]
- Interval 2 = [-0.658942, -0.402359]
- Interval 3 = [-0.479334, -0.22275]
- Interval 4 = [-0.299725, -0.0431414]
- Interval 5 = [-0.120117, 0.136467]
- Interval 6 = [0.059492, 0.316076]
- Interval 7 = [0.239101, 0.495684]
- Interval 8 = [0.418709, 0.675293]
- Interval 9 = [0.598318, 0.816414]
- Computing preimages...
- Computing connected components...
- 5 interval(s) in dimension 0:
- [-0.909111, 0.0081753]
- [-0.171433, 0.367393]
- [-0.171433, 0.367393]
- [-0.909111, 0.745853]
- 0 interval(s) in dimension 1:
-
-.. testoutput::
-
- Nerve is of dimension 1 - 41 simplices - 21 vertices.
- [0]
- [1]
- [4]
- [1, 4]
- [2]
- [0, 2]
- [8]
- [2, 8]
- [5]
- [4, 5]
- [9]
- [8, 9]
- [13]
- [5, 13]
- [14]
- [9, 14]
- [19]
- [13, 19]
- [25]
- [32]
- [20]
- [20, 32]
- [33]
- [25, 33]
- [26]
- [14, 26]
- [19, 26]
- [42]
- [26, 42]
- [34]
- [33, 34]
- [27]
- [20, 27]
- [35]
- [27, 35]
- [34, 35]
- [35, 42]
- [44]
- [35, 44]
- [54]
- [44, 54]
-
-
-The program also writes a file ../../data/points/human.off_sc.txt. The first
-three lines in this file are the location of the input point cloud and the
-function used to compute the cover.
-The fourth line contains the number of vertices nv and edges ne of the Nerve.
-The next nv lines represent the vertices. Each line contains the vertex ID,
-the number of data points it contains, and their average color function value.
-Finally, the next ne lines represent the edges, characterized by the ID of
-their vertices.
-
-Using KeplerMapper, one can obtain the following visualization:
-
-.. figure::
- ../../doc/Nerve_GIC/nervevisu.jpg
- :figclass: align-center
- :alt: Visualization with KeplerMapper
-
- Visualization with KeplerMapper
-
-Graph Induced Complexes (GIC)
------------------------------
-
-GIC definition
-^^^^^^^^^^^^^^
-
-Again, assume you are given a cover C of your point cloud P. Moreover, assume
-you are also given a graph G built on top of P. Then, for any clique in G
-whose nodes all belong to different elements of C, the GIC includes a
-corresponding simplex, whose dimension is the number of nodes in the clique
-minus one.
-See :cite:`Dey13` for more details.
-
-.. figure::
- ../../doc/Nerve_GIC/GIC.jpg
- :figclass: align-center
- :alt: GIC of a point cloud
-
- GIC of a point cloud
-
-Example with cover from Voronoï
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This example builds the GIC of a point cloud sampled on a 3D human shape
-(human.off).
-We randomly subsampled 100 points in the point cloud, which act as seeds of
-a geodesic Voronoï diagram. Each cell of the diagram is then an element of C.
-The graph G (used to compute both the geodesics for Voronoï and the GIC)
-comes from the triangulation of the human shape. Note that the resulting
-simplicial complex is in dimension 3 in this example.
-
-.. testcode::
-
- import gudhi
- nerve_complex = gudhi.CoverComplex()
-
- if (nerve_complex.read_point_cloud(gudhi.__root_source_dir__ + \
- '/data/points/human.off')):
- nerve_complex.set_type('GIC')
- nerve_complex.set_color_from_coordinate()
- nerve_complex.set_graph_from_OFF()
- nerve_complex.set_cover_from_Voronoi(700)
- nerve_complex.find_simplices()
- nerve_complex.plot_off()
-
-the program outputs SC.off. Using e.g.
-
-.. code-block:: none
-
- geomview ../../data/points/human.off_sc.off
-
-one can obtain the following visualization:
-
-.. figure::
- ../../doc/Nerve_GIC/gicvoronoivisu.jpg
- :figclass: align-center
- :alt: Visualization with Geomview
-
- Visualization with Geomview
-
-Functional GIC
-^^^^^^^^^^^^^^
-
-If one restricts to the cliques in G whose nodes all belong to preimages of
-consecutive intervals (assuming the cover of the height function is minimal,
-i.e. no more than two intervals can intersect at a time), the GIC is of
-dimension one, i.e. a graph.
-We call this graph the functional GIC. See :cite:`Carriere16` for more details.
-
-Example
-^^^^^^^
-
-Functional GIC comes with automatic selection of the Rips threshold,
-the resolution and the gain of the function cover. See :cite:`Carriere17c` for
-more details. In this example, we compute the functional GIC of a Klein bottle
-embedded in R^5, where the graph G comes from a Rips complex with automatic
-threshold, and the cover C comes from the preimages of intervals covering the
-first coordinate, with automatic resolution and gain. Note that automatic
-threshold, resolution and gain can be computed as well for the Nerve.
-
-.. testcode::
-
- import gudhi
- nerve_complex = gudhi.CoverComplex()
-
- if (nerve_complex.read_point_cloud(gudhi.__root_source_dir__ + \
- '/data/points/KleinBottle5D.off')):
- nerve_complex.set_type('GIC')
- nerve_complex.set_color_from_coordinate(0)
- nerve_complex.set_function_from_coordinate(0)
- nerve_complex.set_graph_from_automatic_rips()
- nerve_complex.set_automatic_resolution()
- nerve_complex.set_gain()
- nerve_complex.set_cover_from_function()
- nerve_complex.find_simplices()
- nerve_complex.plot_dot()
-
-the program outputs SC.dot. Using e.g.
-
-.. code-block:: none
-
- neato ../../data/points/KleinBottle5D.off_sc.dot -Tpdf -o ../../data/points/KleinBottle5D.off_sc.pdf
-
-one can obtain the following visualization:
-
-.. figure::
- ../../doc/Nerve_GIC/coordGICvisu2.jpg
- :figclass: align-center
- :alt: Visualization with neato
-
- Visualization with neato
-
-where nodes are colored by the filter function values and, for each node, the
-first number is its ID and the second is the number of data points that its
-contain.
-
-We also provide an example on a set of 72 pictures taken around the same object
-(lucky_cat.off).
-The function is now the first eigenfunction given by PCA, whose values are
-written in a file (lucky_cat_PCA1). Threshold, resolution and gain are
-automatically selected as before.
-
-.. testcode::
-
- import gudhi
- nerve_complex = gudhi.CoverComplex()
-
- if (nerve_complex.read_point_cloud(gudhi.__root_source_dir__ + \
- '/data/points/COIL_database/lucky_cat.off')):
- nerve_complex.set_type('GIC')
- pca_file = gudhi.__root_source_dir__ + \
- '/data/points/COIL_database/lucky_cat_PCA1'
- nerve_complex.set_color_from_file(pca_file)
- nerve_complex.set_function_from_file(pca_file)
- nerve_complex.set_graph_from_automatic_rips()
- nerve_complex.set_automatic_resolution()
- nerve_complex.set_gain()
- nerve_complex.set_cover_from_function()
- nerve_complex.find_simplices()
- nerve_complex.plot_dot()
-
-the program outputs again SC.dot which gives the following visualization after using neato:
-
-.. figure::
- ../../doc/Nerve_GIC/funcGICvisu.jpg
- :figclass: align-center
- :alt: Visualization with neato
-
- Visualization with neato
diff --git a/cython/doc/periodic_cubical_complex_ref.rst b/cython/doc/periodic_cubical_complex_ref.rst
deleted file mode 100644
index 4b831647..00000000
--- a/cython/doc/periodic_cubical_complex_ref.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Periodic cubical complex reference manual
-#########################################
-
-.. autoclass:: gudhi.PeriodicCubicalComplex
- :members:
- :undoc-members:
- :show-inheritance:
-
- .. automethod:: gudhi.PeriodicCubicalComplex.__init__
diff --git a/cython/doc/persistence_graphical_tools_ref.rst b/cython/doc/persistence_graphical_tools_ref.rst
deleted file mode 100644
index a2c6bcef..00000000
--- a/cython/doc/persistence_graphical_tools_ref.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-============================================
-Persistence graphical tools reference manual
-============================================
-
-.. autofunction:: gudhi.__min_birth_max_death
-.. autofunction:: gudhi.plot_persistence_barcode
-.. autofunction:: gudhi.plot_persistence_diagram
diff --git a/cython/doc/persistence_graphical_tools_sum.inc b/cython/doc/persistence_graphical_tools_sum.inc
deleted file mode 100644
index d602daa7..00000000
--- a/cython/doc/persistence_graphical_tools_sum.inc
+++ /dev/null
@@ -1,12 +0,0 @@
-================================================================= =================================== ===================================
-:Author: Vincent Rouvreau :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3
-:Requires: Matplotlib Numpy
-================================================================= =================================== ===================================
-
-+-----------------------------------------------------------------+-----------------------------------------------------------------------+
-| .. figure:: | These graphical tools comes on top of persistence results and allows |
-| img/graphical_tools_representation.png | the user to build easily barcode and persistence diagram. |
-| | |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------+
-| :doc:`persistence_graphical_tools_user` | :doc:`persistence_graphical_tools_ref` |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------+
diff --git a/cython/doc/persistence_graphical_tools_user.rst b/cython/doc/persistence_graphical_tools_user.rst
deleted file mode 100644
index 292915eb..00000000
--- a/cython/doc/persistence_graphical_tools_user.rst
+++ /dev/null
@@ -1,62 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Persistence graphical tools user manual
-=======================================
-Definition
-----------
-.. include:: persistence_graphical_tools_sum.inc
-
-
-Show persistence as a barcode
------------------------------
-
-This function can display the persistence result as a barcode:
-
-.. plot::
- :include-source:
-
- import gudhi
-
- perseus_file = gudhi.__root_source_dir__ + '/data/bitmap/3d_torus.txt'
- periodic_cc = gudhi.PeriodicCubicalComplex(perseus_file=perseus_file)
- diag = periodic_cc.persistence()
- print("diag = ", diag)
- plt = gudhi.plot_persistence_barcode(diag)
- plt.show()
-
-Show persistence as a diagram
------------------------------
-
-This function can display the persistence result as a diagram:
-
-.. plot::
- :include-source:
-
- import gudhi
-
- # rips_on_tore3D_1307.pers obtained from write_persistence_diagram method
- persistence_file=gudhi.__root_source_dir__ + \
- '/data/persistence_diagram/rips_on_tore3D_1307.pers'
- plt = gudhi.plot_persistence_diagram(persistence_file=persistence_file,
- legend=True)
- plt.show()
-
-If you want more information on a specific dimension, for instance:
-
-.. plot::
- :include-source:
-
- import gudhi
-
- persistence_file=gudhi.__root_source_dir__ + \
- '/data/persistence_diagram/rips_on_tore3D_1307.pers'
- diag = \
- gudhi.read_persistence_intervals_grouped_by_dimension(persistence_file=\
- persistence_file)
- dim = 1
- # Display all points with some transparency
- plt = gudhi.plot_persistence_diagram([(dim,interval) for interval in diag[dim]],
- max_plots=0, alpha=0.1)
- plt.show()
diff --git a/cython/doc/persistent_cohomology_sum.inc b/cython/doc/persistent_cohomology_sum.inc
deleted file mode 100644
index a26df1dc..00000000
--- a/cython/doc/persistent_cohomology_sum.inc
+++ /dev/null
@@ -1,27 +0,0 @@
-================================================================= =================================== ===================================
-:Author: Clément Maria :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3
-================================================================= =================================== ===================================
-
-+-----------------------------------------------------------------+-----------------------------------------------------------------------+
-| .. figure:: | The theory of homology consists in attaching to a topological space |
-| ../../doc/Persistent_cohomology/3DTorus_poch.png | a sequence of (homology) groups, capturing global topological |
-| :figclass: align-center | features like connected components, holes, cavities, etc. Persistent |
-| | homology studies the evolution -- birth, life and death -- of these |
-| Rips Persistent Cohomology on a 3D | features when the topological space is changing. Consequently, the |
-| Torus | theory is essentially composed of three elements: topological spaces, |
-| | their homology groups and an evolution scheme. |
-| | |
-| | Computation of persistent cohomology using the algorithm of |
-| | :cite:`DBLP:journals/dcg/SilvaMV11` and |
-| | :cite:`DBLP:journals/corr/abs-1208-5018` and the Compressed |
-| | Annotation Matrix implementation of |
-| | :cite:`DBLP:conf/esa/BoissonnatDM13`. |
-| | |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------+
-| :doc:`persistent_cohomology_user` | Please refer to each data structure that contains persistence |
-| | feature for reference: |
-| | |
-| | * :doc:`simplex_tree_ref` |
-| | * :doc:`cubical_complex_ref` |
-| | * :doc:`periodic_cubical_complex_ref` |
-+-----------------------------------------------------------------+-----------------------------------------------------------------------+
diff --git a/cython/doc/persistent_cohomology_user.rst b/cython/doc/persistent_cohomology_user.rst
deleted file mode 100644
index ce7fc685..00000000
--- a/cython/doc/persistent_cohomology_user.rst
+++ /dev/null
@@ -1,118 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Persistent cohomology user manual
-=================================
-Definition
-----------
-===================================== ===================================== =====================================
-:Author: Clément Maria :Introduced in: GUDHI PYTHON 2.0.0 :Copyright: GPL v3
-===================================== ===================================== =====================================
-
-+---------------------------------------------+----------------------------------------------------------------------+
-| :doc:`persistent_cohomology_user` | Please refer to each data structure that contains persistence |
-| | feature for reference: |
-| | |
-| | * :doc:`simplex_tree_ref` |
-+---------------------------------------------+----------------------------------------------------------------------+
-
-
-Computation of persistent cohomology using the algorithm of :cite:`DBLP:journals/dcg/SilvaMV11` and
-:cite:`DBLP:journals/corr/abs-1208-5018` and the Compressed Annotation Matrix implementation of
-:cite:`DBLP:conf/esa/BoissonnatDM13`.
-
-The theory of homology consists in attaching to a topological space a sequence of (homology) groups, capturing global
-topological features like connected components, holes, cavities, etc. Persistent homology studies the evolution --
-birth, life and death -- of these features when the topological space is changing. Consequently, the theory is
-essentially composed of three elements:
-
-* topological spaces
-* their homology groups
-* an evolution scheme.
-
-Topological Spaces
-------------------
-
-Topological spaces are represented by simplicial complexes.
-Let :math:`V = \{1, \cdots ,|V|\}` be a set of *vertices*.
-A *simplex* :math:`\sigma` is a subset of vertices :math:`\sigma \subseteq V`.
-A *simplicial complex* :math:`\mathbf{K}` on :math:`V` is a collection of simplices :math:`\{\sigma\}`,
-:math:`\sigma \subseteq V`, such that :math:`\tau \subseteq \sigma \in \mathbf{K} \Rightarrow \tau \in \mathbf{K}`.
-The dimension :math:`n=|\sigma|-1` of :math:`\sigma` is its number of elements minus 1.
-A *filtration* of a simplicial complex is a function :math:`f:\mathbf{K} \rightarrow \mathbb{R}` satisfying
-:math:`f(\tau)\leq f(\sigma)` whenever :math:`\tau \subseteq \sigma`.
-
-Homology
---------
-
-For a ring :math:`\mathcal{R}`, the group of *n-chains*, denoted :math:`\mathbf{C}_n(\mathbf{K},\mathcal{R})`, of
-:math:`\mathbf{K}` is the group of formal sums of n-simplices with :math:`\mathcal{R}` coefficients. The
-*boundary operator* is a linear operator
-:math:`\partial_n: \mathbf{C}_n(\mathbf{K},\mathcal{R}) \rightarrow \mathbf{C}_{n-1}(\mathbf{K},\mathcal{R})`
-such that :math:`\partial_n \sigma = \partial_n [v_0, \cdots , v_n] = \sum_{i=0}^n (-1)^{i}[v_0,\cdots ,\widehat{v_i}, \cdots,v_n]`,
-where :math:`\widehat{v_i}` means :math:`v_i` is omitted from the list. The chain groups form a sequence:
-
-.. math::
-
- \cdots \ \ \mathbf{C}_n(\mathbf{K},\mathcal{R}) \xrightarrow{\ \partial_n\ }
- \mathbf{C}_{n-1}(\mathbf{K},\mathcal{R}) \xrightarrow{\partial_{n-1}} \cdots \xrightarrow{\ \partial_2 \ }
- \mathbf{C}_1(\mathbf{K},\mathcal{R}) \xrightarrow{\ \partial_1 \ } \mathbf{C}_0(\mathbf{K},\mathcal{R})
-
-of finitely many groups :math:`\mathbf{C}_n(\mathbf{K},\mathcal{R})` and homomorphisms :math:`\partial_n`, indexed by
-the dimension :math:`n \geq 0`. The boundary operators satisfy the property :math:`\partial_n \circ \partial_{n+1}=0`
-for every :math:`n > 0` and we define the homology groups:
-
-.. math::
-
- \mathbf{H}_n(\mathbf{K},\mathcal{R}) = \ker \partial_n / \mathrm{im} \ \partial_{n+1}
-
-We refer to :cite:`Munkres-elementsalgtop1984` for an introduction to homology
-theory and to :cite:`DBLP:books/daglib/0025666` for an introduction to persistent homology.
-
-Indexing Scheme
----------------
-
-"Changing" a simplicial complex consists in applying a simplicial map. An *indexing scheme* is a directed graph
-together with a traversal order, such that two consecutive nodes in the graph are connected by an arrow (either forward
-or backward).
-The nodes represent simplicial complexes and the directed edges simplicial maps.
-
-From the computational point of view, there are two types of indexing schemes of interest in persistent homology:
-
-* linear ones
- :math:`\bullet \longrightarrow \bullet \longrightarrow \cdots \longrightarrow \bullet \longrightarrow \bullet`
- in persistent homology :cite:`DBLP:journals/dcg/ZomorodianC05`,
-* zigzag ones
- :math:`\bullet \longrightarrow \bullet \longleftarrow \cdots \longrightarrow \bullet \longleftarrow \bullet`
- in zigzag persistent homology :cite:`DBLP:journals/focm/CarlssonS10`.
-
-These indexing schemes have a natural left-to-right traversal order, and we describe them with ranges and iterators.
-In the current release of the Gudhi library, only the linear case is implemented.
-
-In the following, we consider the case where the indexing scheme is induced by a filtration.
-
-Ordering the simplices by increasing filtration values (breaking ties so as a simplex appears after its subsimplices of
-same filtration value) provides an indexing scheme.
-
-Examples
---------
-
-We provide several example files: run these examples with -h for details on their use.
-
-.. only:: builder_html
-
- * :download:`alpha_complex_diagram_persistence_from_off_file_example.py <../example/alpha_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py <../example/periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py>`
- * :download:`rips_complex_diagram_persistence_from_off_file_example.py <../example/rips_complex_diagram_persistence_from_off_file_example.py>`
- * :download:`rips_persistence_diagram.py <../example/rips_persistence_diagram.py>`
- * :download:`rips_complex_diagram_persistence_from_distance_matrix_file_example.py <../example/rips_complex_diagram_persistence_from_distance_matrix_file_example.py>`
- * :download:`random_cubical_complex_persistence_example.py <../example/random_cubical_complex_persistence_example.py>`
- * :download:`tangential_complex_plain_homology_from_off_file_example.py <../example/tangential_complex_plain_homology_from_off_file_example.py>`
-
-Bibliography
-============
-
-.. bibliography:: ../../biblio/bibliography.bib
- :filter: docnames
- :style: unsrt
diff --git a/cython/doc/python3-sphinx-build.py b/cython/doc/python3-sphinx-build.py
deleted file mode 100755
index 84d158cf..00000000
--- a/cython/doc/python3-sphinx-build.py
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env python3
-
-"""
-Emulate sphinx-build for python3
-"""
-
-from sys import exit, argv
-from sphinx import main
-
-if __name__ == '__main__':
- exit(main(argv))
diff --git a/cython/doc/reader_utils_ref.rst b/cython/doc/reader_utils_ref.rst
deleted file mode 100644
index f3ecebad..00000000
--- a/cython/doc/reader_utils_ref.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-=============================
-Reader utils reference manual
-=============================
-
-.. autofunction:: gudhi.read_off
-
-.. autofunction:: gudhi.read_lower_triangular_matrix_from_csv_file
-
-.. autofunction:: gudhi.read_persistence_intervals_grouped_by_dimension
-
-.. autofunction:: gudhi.read_persistence_intervals_in_dimension
diff --git a/cython/doc/rips_complex_ref.rst b/cython/doc/rips_complex_ref.rst
deleted file mode 100644
index 22b5616c..00000000
--- a/cython/doc/rips_complex_ref.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-=============================
-Rips complex reference manual
-=============================
-
-.. autoclass:: gudhi.RipsComplex
- :members:
- :undoc-members:
- :show-inheritance:
-
- .. automethod:: gudhi.RipsComplex.__init__
diff --git a/cython/doc/rips_complex_sum.inc b/cython/doc/rips_complex_sum.inc
deleted file mode 100644
index 5616bfa9..00000000
--- a/cython/doc/rips_complex_sum.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-================================================================= =================================== ===================================
-:Author: Clément Maria, Pawel Dlotko, Vincent Rouvreau :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3
-================================================================= =================================== ===================================
-
-+----------------------------------------------------------------+------------------------------------------------------------------------+
-| .. figure:: | Rips complex is a simplicial complex constructed from a one skeleton |
-| ../../doc/Rips_complex/rips_complex_representation.png | graph. |
-| :figclass: align-center | |
-| | The filtration value of each edge is computed from a user-given |
-| Rips complex representation | distance function and is inserted until a user-given threshold |
-| | value. |
-| | |
-| | This complex can be built from a point cloud and a distance function, |
-| | or from a distance matrix. |
-+----------------------------------------------------------------+------------------------------------------------------------------------+
-| :doc:`rips_complex_user` | :doc:`rips_complex_ref` |
-+----------------------------------------------------------------+------------------------------------------------------------------------+
diff --git a/cython/doc/rips_complex_user.rst b/cython/doc/rips_complex_user.rst
deleted file mode 100644
index a8c06cf9..00000000
--- a/cython/doc/rips_complex_user.rst
+++ /dev/null
@@ -1,316 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Rips complex user manual
-=========================
-Definition
-----------
-
-======================================================= ===================================== =====================================
-:Authors: Clément Maria, Pawel Dlotko, Vincent Rouvreau :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3
-======================================================= ===================================== =====================================
-
-+-------------------------------------------+----------------------------------------------------------------------+
-| :doc:`rips_complex_user` | :doc:`rips_complex_ref` |
-+-------------------------------------------+----------------------------------------------------------------------+
-
-`Rips complex <https://en.wikipedia.org/wiki/Vietoris%E2%80%93Rips_complex>`_ is a one skeleton graph that allows to
-construct a simplicial complex from it. The input can be a point cloud with a given distance function, or a distance
-matrix.
-
-The filtration value of each edge is computed from a user-given distance function, or directly from the distance
-matrix.
-
-All edges that have a filtration value strictly greater than a given threshold value are not inserted into the complex.
-
-When creating a simplicial complex from this one skeleton graph, Rips inserts the one skeleton graph into the data
-structure, and then expands the simplicial complex when required.
-
-Vertex name correspond to the index of the point in the given range (aka. the point cloud).
-
-.. figure::
- ../../doc/Rips_complex/rips_complex_representation.png
- :align: center
-
- Rips-complex one skeleton graph representation
-
-On this example, as edges (4,5), (4,6) and (5,6) are in the complex, simplex (4,5,6) is added with the filtration value
-set with :math:`max(filtration(4,5), filtration(4,6), filtration(5,6))`. And so on for simplex (0,1,2,3).
-
-If the Rips_complex interfaces are not detailed enough for your need, please refer to rips_persistence_step_by_step.cpp
-example, where the graph construction over the Simplex_tree is more detailed.
-
-Point cloud
------------
-
-Example from a point cloud
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This example builds the one skeleton graph from the given points, and max_edge_length value.
-Then it creates a :doc:`Simplex_tree <simplex_tree_ref>` with it.
-
-Finally, it is asked to display information about the simplicial complex.
-
-.. testcode::
-
- import gudhi
- rips_complex = gudhi.RipsComplex(points=[[1, 1], [7, 0], [4, 6], [9, 6], [0, 14], [2, 19], [9, 17]],
- max_edge_length=12.0)
-
- simplex_tree = rips_complex.create_simplex_tree(max_dimension=1)
- result_str = 'Rips complex is of dimension ' + repr(simplex_tree.dimension()) + ' - ' + \
- repr(simplex_tree.num_simplices()) + ' simplices - ' + \
- repr(simplex_tree.num_vertices()) + ' vertices.'
- print(result_str)
- fmt = '%s -> %.2f'
- for filtered_value in simplex_tree.get_filtration():
- print(fmt % tuple(filtered_value))
-
-When launching (Rips maximal distance between 2 points is 12.0, is expanded
-until dimension 1 - one skeleton graph in other words), the output is:
-
-.. testoutput::
-
- Rips complex is of dimension 1 - 18 simplices - 7 vertices.
- [0] -> 0.00
- [1] -> 0.00
- [2] -> 0.00
- [3] -> 0.00
- [4] -> 0.00
- [5] -> 0.00
- [6] -> 0.00
- [2, 3] -> 5.00
- [4, 5] -> 5.39
- [0, 2] -> 5.83
- [0, 1] -> 6.08
- [1, 3] -> 6.32
- [1, 2] -> 6.71
- [5, 6] -> 7.28
- [2, 4] -> 8.94
- [0, 3] -> 9.43
- [4, 6] -> 9.49
- [3, 6] -> 11.00
-
-Example from OFF file
-^^^^^^^^^^^^^^^^^^^^^
-
-This example builds the :doc:`Rips_complex <rips_complex_ref>` from the given
-points in an OFF file, and max_edge_length value.
-Then it creates a :doc:`Simplex_tree <simplex_tree_ref>` with it.
-
-Finally, it is asked to display information about the Rips complex.
-
-
-.. testcode::
-
- import gudhi
- point_cloud = gudhi.read_off(off_file=gudhi.__root_source_dir__ + '/data/points/alphacomplexdoc.off')
- rips_complex = gudhi.RipsComplex(points=point_cloud, max_edge_length=12.0)
- simplex_tree = rips_complex.create_simplex_tree(max_dimension=1)
- result_str = 'Rips complex is of dimension ' + repr(simplex_tree.dimension()) + ' - ' + \
- repr(simplex_tree.num_simplices()) + ' simplices - ' + \
- repr(simplex_tree.num_vertices()) + ' vertices.'
- print(result_str)
- fmt = '%s -> %.2f'
- for filtered_value in simplex_tree.get_filtration():
- print(fmt % tuple(filtered_value))
-
-the program output is:
-
-.. testoutput::
-
- Rips complex is of dimension 1 - 18 simplices - 7 vertices.
- [0] -> 0.00
- [1] -> 0.00
- [2] -> 0.00
- [3] -> 0.00
- [4] -> 0.00
- [5] -> 0.00
- [6] -> 0.00
- [2, 3] -> 5.00
- [4, 5] -> 5.39
- [0, 2] -> 5.83
- [0, 1] -> 6.08
- [1, 3] -> 6.32
- [1, 2] -> 6.71
- [5, 6] -> 7.28
- [2, 4] -> 8.94
- [0, 3] -> 9.43
- [4, 6] -> 9.49
- [3, 6] -> 11.00
-
-Distance matrix
----------------
-
-Example from a distance matrix
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This example builds the one skeleton graph from the given distance matrix, and max_edge_length value.
-Then it creates a :doc:`Simplex_tree <simplex_tree_ref>` with it.
-
-Finally, it is asked to display information about the simplicial complex.
-
-.. testcode::
-
- import gudhi
- rips_complex = gudhi.RipsComplex(distance_matrix=[[],
- [6.0827625303],
- [5.8309518948, 6.7082039325],
- [9.4339811321, 6.3245553203, 5],
- [13.0384048104, 15.6524758425, 8.94427191, 12.0415945788],
- [18.0277563773, 19.6468827044, 13.152946438, 14.7648230602, 5.3851648071],
- [17.88854382, 17.1172427686, 12.0830459736, 11, 9.4868329805, 7.2801098893]],
- max_edge_length=12.0)
-
- simplex_tree = rips_complex.create_simplex_tree(max_dimension=1)
- result_str = 'Rips complex is of dimension ' + repr(simplex_tree.dimension()) + ' - ' + \
- repr(simplex_tree.num_simplices()) + ' simplices - ' + \
- repr(simplex_tree.num_vertices()) + ' vertices.'
- print(result_str)
- fmt = '%s -> %.2f'
- for filtered_value in simplex_tree.get_filtration():
- print(fmt % tuple(filtered_value))
-
-When launching (Rips maximal distance between 2 points is 12.0, is expanded
-until dimension 1 - one skeleton graph in other words), the output is:
-
-.. testoutput::
-
- Rips complex is of dimension 1 - 18 simplices - 7 vertices.
- [0] -> 0.00
- [1] -> 0.00
- [2] -> 0.00
- [3] -> 0.00
- [4] -> 0.00
- [5] -> 0.00
- [6] -> 0.00
- [2, 3] -> 5.00
- [4, 5] -> 5.39
- [0, 2] -> 5.83
- [0, 1] -> 6.08
- [1, 3] -> 6.32
- [1, 2] -> 6.71
- [5, 6] -> 7.28
- [2, 4] -> 8.94
- [0, 3] -> 9.43
- [4, 6] -> 9.49
- [3, 6] -> 11.00
-
-Example from csv file
-^^^^^^^^^^^^^^^^^^^^^
-
-This example builds the :doc:`Rips_complex <rips_complex_ref>` from the given
-distance matrix in a csv file, and max_edge_length value.
-Then it creates a :doc:`Simplex_tree <simplex_tree_ref>` with it.
-
-Finally, it is asked to display information about the Rips complex.
-
-
-.. testcode::
-
- import gudhi
- distance_matrix = gudhi.read_lower_triangular_matrix_from_csv_file(csv_file=gudhi.__root_source_dir__ + \
- '/data/distance_matrix/full_square_distance_matrix.csv')
- rips_complex = gudhi.RipsComplex(distance_matrix=distance_matrix, max_edge_length=12.0)
- simplex_tree = rips_complex.create_simplex_tree(max_dimension=1)
- result_str = 'Rips complex is of dimension ' + repr(simplex_tree.dimension()) + ' - ' + \
- repr(simplex_tree.num_simplices()) + ' simplices - ' + \
- repr(simplex_tree.num_vertices()) + ' vertices.'
- print(result_str)
- fmt = '%s -> %.2f'
- for filtered_value in simplex_tree.get_filtration():
- print(fmt % tuple(filtered_value))
-
-the program output is:
-
-.. testoutput::
-
- Rips complex is of dimension 1 - 18 simplices - 7 vertices.
- [0] -> 0.00
- [1] -> 0.00
- [2] -> 0.00
- [3] -> 0.00
- [4] -> 0.00
- [5] -> 0.00
- [6] -> 0.00
- [2, 3] -> 5.00
- [4, 5] -> 5.39
- [0, 2] -> 5.83
- [0, 1] -> 6.08
- [1, 3] -> 6.32
- [1, 2] -> 6.71
- [5, 6] -> 7.28
- [2, 4] -> 8.94
- [0, 3] -> 9.43
- [4, 6] -> 9.49
- [3, 6] -> 11.00
-
-Correlation matrix
-------------------
-
-Example from a correlation matrix
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Analogously to the case of distance matrix, Rips complexes can be also constructed based on correlation matrix.
-Given a correlation matrix M, comportment-wise 1-M is a distance matrix.
-This example builds the one skeleton graph from the given corelation matrix and threshold value.
-Then it creates a :doc:`Simplex_tree <simplex_tree_ref>` with it.
-
-Finally, it is asked to display information about the simplicial complex.
-
-.. testcode::
-
- import gudhi
- import numpy as np
-
- # User defined correlation matrix is:
- # |1 0.06 0.23 0.01 0.89|
- # |0.06 1 0.74 0.01 0.61|
- # |0.23 0.74 1 0.72 0.03|
- # |0.01 0.01 0.72 1 0.7 |
- # |0.89 0.61 0.03 0.7 1 |
- correlation_matrix=np.array([[1., 0.06, 0.23, 0.01, 0.89],
- [0.06, 1., 0.74, 0.01, 0.61],
- [0.23, 0.74, 1., 0.72, 0.03],
- [0.01, 0.01, 0.72, 1., 0.7],
- [0.89, 0.61, 0.03, 0.7, 1.]], float)
-
- distance_matrix = np.ones((correlation_matrix.shape),float) - correlation_matrix
- rips_complex = gudhi.RipsComplex(distance_matrix=distance_matrix, max_edge_length=1.0)
-
- simplex_tree = rips_complex.create_simplex_tree(max_dimension=1)
- result_str = 'Rips complex is of dimension ' + repr(simplex_tree.dimension()) + ' - ' + \
- repr(simplex_tree.num_simplices()) + ' simplices - ' + \
- repr(simplex_tree.num_vertices()) + ' vertices.'
- print(result_str)
- fmt = '%s -> %.2f'
- for filtered_value in simplex_tree.get_filtration():
- print(fmt % tuple(filtered_value))
-
-When launching (Rips maximal distance between 2 points is 12.0, is expanded
-until dimension 1 - one skeleton graph in other words), the output is:
-
-.. testoutput::
-
- Rips complex is of dimension 1 - 15 simplices - 5 vertices.
- [0] -> 0.00
- [1] -> 0.00
- [2] -> 0.00
- [3] -> 0.00
- [4] -> 0.00
- [0, 4] -> 0.11
- [1, 2] -> 0.26
- [2, 3] -> 0.28
- [3, 4] -> 0.30
- [1, 4] -> 0.39
- [0, 2] -> 0.77
- [0, 1] -> 0.94
- [2, 4] -> 0.97
- [0, 3] -> 0.99
- [1, 3] -> 0.99
-
-.. note::
- As persistence diagrams points will be under the diagonal,
- bottleneck distance and persistence graphical tool will not work properly,
- this is a known issue.
diff --git a/cython/doc/simplex_tree_ref.rst b/cython/doc/simplex_tree_ref.rst
deleted file mode 100644
index 9eb8c199..00000000
--- a/cython/doc/simplex_tree_ref.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-=============================
-Simplex tree reference manual
-=============================
-
-.. autoclass:: gudhi.SimplexTree
- :members:
- :undoc-members:
- :show-inheritance:
-
- .. automethod:: gudhi.SimplexTree.__init__
diff --git a/cython/doc/simplex_tree_sum.inc b/cython/doc/simplex_tree_sum.inc
deleted file mode 100644
index fb0e54c1..00000000
--- a/cython/doc/simplex_tree_sum.inc
+++ /dev/null
@@ -1,14 +0,0 @@
-================================================================= =================================== ===================================
-:Author: Clément Maria :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3
-================================================================= =================================== ===================================
-
-+----------------------------------------------------------------+------------------------------------------------------------------------+
-| .. figure:: | The simplex tree is an efficient and flexible data structure for |
-| ../../doc/Simplex_tree/Simplex_tree_representation.png | representing general (filtered) simplicial complexes. |
-| :alt: Simplex tree representation | |
-| :figclass: align-center | The data structure is described in |
-| | :cite:`boissonnatmariasimplextreealgorithmica` |
-| Simplex tree representation | |
-+----------------------------------------------------------------+------------------------------------------------------------------------+
-| :doc:`simplex_tree_user` | :doc:`simplex_tree_ref` |
-+----------------------------------------------------------------+------------------------------------------------------------------------+
diff --git a/cython/doc/simplex_tree_user.rst b/cython/doc/simplex_tree_user.rst
deleted file mode 100644
index aebeb29f..00000000
--- a/cython/doc/simplex_tree_user.rst
+++ /dev/null
@@ -1,72 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Simplex tree user manual
-========================
-Definition
-----------
-
-.. include:: simplex_tree_sum.inc
-
-A simplicial complex :math:`\mathbf{K}` on a set of vertices :math:`V = \{1, \cdots ,|V|\}` is a collection of
-simplices :math:`\{\sigma\}`, :math:`\sigma \subseteq V` such that
-:math:`\tau \subseteq \sigma \in \mathbf{K} \rightarrow \tau \in \mathbf{K}`. The dimension :math:`n=|\sigma|-1` of
-:math:`\sigma` is its number of elements minus `1`.
-
-A filtration of a simplicial complex is a function :math:`f:\mathbf{K} \rightarrow \mathbb{R}` satisfying
-:math:`f(\tau)\leq f(\sigma)` whenever :math:`\tau \subseteq \sigma`. Ordering the simplices by increasing filtration
-values (breaking ties so as a simplex appears after its subsimplices of same filtration value) provides an indexing
-scheme.
-
-
-Implementation
---------------
-
-There are two implementation of complexes. The first on is the Simplex_tree data structure.
-The simplex tree is an efficient and flexible data structure for representing general (filtered) simplicial complexes.
-The data structure is described in :cite`boissonnatmariasimplextreealgorithmica`.
-
-The second one is the Hasse_complex. The Hasse complex is a data structure representing explicitly all co-dimension 1
-incidence relations in a complex. It is consequently faster when accessing the boundary of a simplex, but is less
-compact and harder to construct from scratch.
-
-Example
--------
-
-.. testcode::
-
- import gudhi
- st = gudhi.SimplexTree()
- if st.insert([0, 1]):
- print("[0, 1] inserted")
- if st.insert([0, 1, 2], filtration=4.0):
- print("[0, 1, 2] inserted")
- if st.find([0, 1]):
- print("[0, 1] found")
- result_str = 'num_vertices=' + repr(st.num_vertices())
- print(result_str)
- result_str = 'num_simplices=' + repr(st.num_simplices())
- print(result_str)
- print("skeleton(2) =")
- for sk_value in st.get_skeleton(2):
- print(sk_value)
-
-
-The output is:
-
-.. testoutput::
-
- [0, 1] inserted
- [0, 1, 2] inserted
- [0, 1] found
- num_vertices=3
- num_simplices=7
- skeleton(2) =
- ([0, 1, 2], 4.0)
- ([0, 1], 0.0)
- ([0, 2], 4.0)
- ([0], 0.0)
- ([1, 2], 4.0)
- ([1], 0.0)
- ([2], 4.0)
diff --git a/cython/doc/strong_witness_complex_ref.rst b/cython/doc/strong_witness_complex_ref.rst
deleted file mode 100644
index d624d711..00000000
--- a/cython/doc/strong_witness_complex_ref.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-=======================================
-Strong witness complex reference manual
-=======================================
-
-.. autoclass:: gudhi.StrongWitnessComplex
- :members:
- :undoc-members:
- :show-inheritance:
-
- .. automethod:: gudhi.StrongWitnessComplex.__init__
diff --git a/cython/doc/tangential_complex_ref.rst b/cython/doc/tangential_complex_ref.rst
deleted file mode 100644
index cdfda082..00000000
--- a/cython/doc/tangential_complex_ref.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-===================================
-Tangential complex reference manual
-===================================
-
-.. autoclass:: gudhi.TangentialComplex
- :members:
- :undoc-members:
- :show-inheritance:
-
- .. automethod:: gudhi.TangentialComplex.__init__
diff --git a/cython/doc/tangential_complex_sum.inc b/cython/doc/tangential_complex_sum.inc
deleted file mode 100644
index 72b4d7ba..00000000
--- a/cython/doc/tangential_complex_sum.inc
+++ /dev/null
@@ -1,15 +0,0 @@
-================================================================= =================================== ===================================
-:Author: Clément Jamin :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3
-:Requires: CGAL :math:`\geq` 4.8.0 Eigen3
-================================================================= =================================== ===================================
-
-+----------------------------------------------------------------+------------------------------------------------------------------------+
-| .. figure:: | A Tangential Delaunay complex is a simplicial complex designed to |
-| ../../doc/Tangential_complex/tc_examples.png | reconstruct a :math:`k`-dimensional manifold embedded in :math:`d`- |
-| :figclass: align-center | dimensional Euclidean space. The input is a point sample coming from |
-| | an unknown manifold. The running time depends only linearly on the |
-| Tangential complex representation | extrinsic dimension :math:`d` and exponentially on the intrinsic |
-| | dimension :math:`k`. |
-+----------------------------------------------------------------+------------------------------------------------------------------------+
-| :doc:`tangential_complex_user` | :doc:`tangential_complex_ref` |
-+----------------------------------------------------------------+------------------------------------------------------------------------+
diff --git a/cython/doc/tangential_complex_user.rst b/cython/doc/tangential_complex_user.rst
deleted file mode 100644
index 5ce69e86..00000000
--- a/cython/doc/tangential_complex_user.rst
+++ /dev/null
@@ -1,201 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Tangential complex user manual
-==============================
-.. include:: tangential_complex_sum.inc
-
-Definition
-----------
-
-A Tangential Delaunay complex is a simplicial complex designed to reconstruct a
-:math:`k`-dimensional smooth manifold embedded in :math:`d`-dimensional
-Euclidean space. The input is a point sample coming from an unknown manifold,
-which means that the points lie close to a structure of "small" intrinsic
-dimension. The running time depends only linearly on the extrinsic dimension
-:math:`d` and exponentially on the intrinsic dimension :math:`k`.
-
-An extensive description of the Tangential complex can be found in
-:cite:`tangentialcomplex2014`.
-
-What is a Tangential Complex?
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Let us start with the description of the Tangential complex of a simple
-example, with :math:`k = 1` and :math:`d = 2`. The input data is 4 points
-:math:`P` located on a curve embedded in 2D.
-
-.. figure:: ../../doc/Tangential_complex/tc_example_01.png
- :alt: The input
- :figclass: align-center
-
- The input
-
-For each point :math:`p`, estimate its tangent subspace :math:`T_p` (e.g.
-using PCA).
-
-.. figure:: ../../doc/Tangential_complex/tc_example_02.png
- :alt: The estimated normals
- :figclass: align-center
-
- The estimated normals
-
-
-Let us add the Voronoi diagram of the points in orange. For each point
-:math:`p`, construct its star in the Delaunay triangulation of :math:`P`
-restricted to :math:`T_p`.
-
-.. figure:: ../../doc/Tangential_complex/tc_example_03.png
- :alt: The Voronoi diagram
- :figclass: align-center
-
- The Voronoi diagram
-
-The Tangential Delaunay complex is the union of those stars.
-
-In practice, neither the ambient Voronoi diagram nor the ambient Delaunay
-triangulation is computed. Instead, local :math:`k`-dimensional regular
-triangulations are computed with a limited number of points as we only need the
-star of each point. More details can be found in :cite:`tangentialcomplex2014`.
-
-Inconsistencies
-^^^^^^^^^^^^^^^
-Inconsistencies between the stars can occur. An inconsistency occurs when a
-simplex is not in the star of all its vertices.
-
-Let us take the same example.
-
-.. figure:: ../../doc/Tangential_complex/tc_example_07_before.png
- :alt: Before
- :figclass: align-center
-
- Before
-
-Let us slightly move the tangent subspace :math:`T_q`
-
-.. figure:: ../../doc/Tangential_complex/tc_example_07_after.png
- :alt: After
- :figclass: align-center
-
- After
-
-Now, the star of :math:`Q` contains :math:`QP`, but the star of :math:`P` does
-not contain :math:`QP`. We have an inconsistency.
-
-.. figure:: ../../doc/Tangential_complex/tc_example_08.png
- :alt: After
- :figclass: align-center
-
- After
-
-One way to solve inconsistencies is to randomly perturb the positions of the
-points involved in an inconsistency. In the current implementation, this
-perturbation is done in the tangent subspace of each point. The maximum
-perturbation radius is given as a parameter to the constructor.
-
-In most cases, we recommend to provide a point set where the minimum distance
-between any two points is not too small. This can be achieved using the
-functions provided by the Subsampling module. Then, a good value to start with
-for the maximum perturbation radius would be around half the minimum distance
-between any two points. The Example with perturbation below shows an example of
-such a process.
-
-In most cases, this process is able to dramatically reduce the number of
-inconsistencies, but is not guaranteed to succeed.
-
-Output
-^^^^^^
-The result of the computation is exported as a Simplex_tree. It is the union of
-the stars of all the input points. A vertex in the Simplex Tree is the index of
-the point in the range provided by the user. The point corresponding to a
-vertex can also be obtained through the Tangential_complex::get_point function.
-Note that even if the positions of the points are perturbed, their original
-positions are kept (e.g. Tangential_complex::get_point returns the original
-position of the point).
-
-The result can be obtained after the computation of the Tangential complex
-itself and/or after the perturbation process.
-
-
-Simple example
---------------
-
-This example builds the Tangential complex of point set read in an OFF file.
-
-.. testcode::
-
- import gudhi
- tc = gudhi.TangentialComplex(intrisic_dim = 1,
- off_file=gudhi.__root_source_dir__ + '/data/points/alphacomplexdoc.off')
- result_str = 'Tangential contains ' + repr(tc.num_simplices()) + \
- ' simplices - ' + repr(tc.num_vertices()) + ' vertices.'
- print(result_str)
-
- st = tc.create_simplex_tree()
- result_str = 'Simplex tree is of dimension ' + repr(st.dimension()) + \
- ' - ' + repr(st.num_simplices()) + ' simplices - ' + \
- repr(st.num_vertices()) + ' vertices.'
- print(result_str)
- for filtered_value in st.get_filtration():
- print(filtered_value[0])
-
-The output is:
-
-.. testoutput::
-
- Tangential contains 12 simplices - 7 vertices.
- Simplex tree is of dimension 1 - 15 simplices - 7 vertices.
- [0]
- [1]
- [0, 1]
- [2]
- [0, 2]
- [1, 2]
- [3]
- [1, 3]
- [4]
- [2, 4]
- [5]
- [4, 5]
- [6]
- [3, 6]
- [5, 6]
-
-
-Example with perturbation
--------------------------
-
-This example builds the Tangential complex of a point set, then tries to solve
-inconsistencies by perturbing the positions of points involved in inconsistent
-simplices.
-
-.. testcode::
-
- import gudhi
- tc = gudhi.TangentialComplex(intrisic_dim = 1,
- points=[[0.0, 0.0], [1.0, 0.0], [0.0, 1.0], [1.0, 1.0]])
- result_str = 'Tangential contains ' + repr(tc.num_vertices()) + ' vertices.'
- print(result_str)
-
- if tc.num_inconsistent_simplices() > 0:
- print('Tangential contains inconsistencies.')
-
- tc.fix_inconsistencies_using_perturbation(10, 60)
- if tc.num_inconsistent_simplices() == 0:
- print('Inconsistencies has been fixed.')
-
-The output is:
-
-.. testoutput::
-
- Tangential contains 4 vertices.
- Inconsistencies has been fixed.
-
-
-Bibliography
-============
-
-.. bibliography:: ../../biblio/bibliography.bib
- :filter: docnames
- :style: unsrt
diff --git a/cython/doc/todos.rst b/cython/doc/todos.rst
deleted file mode 100644
index ca274ced..00000000
--- a/cython/doc/todos.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-==========
-To be done
-==========
-
-.. todolist::
diff --git a/cython/doc/witness_complex_ref.rst b/cython/doc/witness_complex_ref.rst
deleted file mode 100644
index 9987d3fd..00000000
--- a/cython/doc/witness_complex_ref.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-================================
-Witness complex reference manual
-================================
-
-.. autoclass:: gudhi.WitnessComplex
- :members:
- :undoc-members:
- :show-inheritance:
-
- .. automethod:: gudhi.WitnessComplex.__init__
diff --git a/cython/doc/witness_complex_sum.inc b/cython/doc/witness_complex_sum.inc
deleted file mode 100644
index a8a126a0..00000000
--- a/cython/doc/witness_complex_sum.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-================================================================= =================================== ===================================
-:Author: Siargey Kachanovich :Introduced in: GUDHI 2.0.0 :Copyright: GPL v3
-:Euclidean version requires: CGAL :math:`\geq` 4.6.0 Eigen3
-================================================================= =================================== ===================================
-
-+-------------------------------------------------------------------+----------------------------------------------------------------------+
-| .. figure:: | Witness complex :math:`Wit(W,L)` is a simplicial complex defined on |
-| ../../doc/Witness_complex/Witness_complex_representation.png | two sets of points in :math:`\mathbb{R}^D`. |
-| :alt: Witness complex representation | |
-| :figclass: align-center | The data structure is described in |
-| | :cite:`boissonnatmariasimplextreealgorithmica`. |
-| | |
-| Witness complex representation | |
-+-------------------------------------------------------------------+----------------------------------------------------------------------+
-| :doc:`witness_complex_user` | * :doc:`witness_complex_ref` |
-| | * :doc:`strong_witness_complex_ref` |
-| | * :doc:`euclidean_witness_complex_ref` |
-| | * :doc:`euclidean_strong_witness_complex_ref` |
-+-------------------------------------------------------------------+----------------------------------------------------------------------+
diff --git a/cython/doc/witness_complex_user.rst b/cython/doc/witness_complex_user.rst
deleted file mode 100644
index 40e94134..00000000
--- a/cython/doc/witness_complex_user.rst
+++ /dev/null
@@ -1,135 +0,0 @@
-:orphan:
-
-.. To get rid of WARNING: document isn't included in any toctree
-
-Witness complex user manual
-===========================
-
-.. include:: witness_complex_sum.inc
-
-Definitions
------------
-
-Witness complex is a simplicial complex defined on two sets of points in :math:`\mathbb{R}^D`:
-
-- :math:`W` set of **witnesses** and
-- :math:`L` set of **landmarks**.
-
-Even though often the set of landmarks :math:`L` is a subset of the set of witnesses :math:`W`, it is not a requirement
-for the current implementation.
-
-Landmarks are the vertices of the simplicial complex and witnesses help to decide on which simplices are inserted via a
-predicate "is witnessed".
-
-De Silva and Carlsson in their paper :cite:`de2004topological` differentiate **weak witnessing** and
-**strong witnessing**:
-
-- *weak*: :math:`\sigma \subset L` is witnessed by :math:`w \in W` if :math:`\forall l \in \sigma,\ \forall l' \in \mathbf{L \setminus \sigma},\ d(w,l) \leq d(w,l')`
-- *strong*: :math:`\sigma \subset L` is witnessed by :math:`w \in W` if :math:`\forall l \in \sigma,\ \forall l' \in \mathbf{L},\ d(w,l) \leq d(w,l')`
-
-where :math:`d(.,.)` is a distance function.
-
-Both definitions can be relaxed by a real value :math:`\alpha`:
-
-- *weak*: :math:`\sigma \subset L` is :math:`\alpha`-witnessed by :math:`w \in W` if :math:`\forall l \in \sigma,\ \forall l' \in \mathbf{L \setminus \sigma},\ d(w,l)^2 \leq d(w,l')^2 + \alpha^2`
-- *strong*: :math:`\sigma \subset L` is :math:`\alpha`-witnessed by :math:`w \in W` if :math:`\forall l \in \sigma,\ \forall l' \in \mathbf{L},\ d(w,l)^2 \leq d(w,l')^2 + \alpha^2`
-
-which leads to definitions of **weak relaxed witness complex** (or just relaxed witness complex for short) and
-**strong relaxed witness complex** respectively.
-
-.. figure:: ../../doc/Witness_complex/swit.svg
- :alt: Strongly witnessed simplex
- :figclass: align-center
-
- Strongly witnessed simplex
-
-
-In particular case of 0-relaxation, weak complex corresponds to **witness complex** introduced in
-:cite:`de2004topological`, whereas 0-relaxed strong witness complex consists of just vertices and is not very
-interesting. Hence for small relaxation weak version is preferable.
-However, to capture the homotopy type (for example using Gudhi::persistent_cohomology::Persistent_cohomology) it is
-often necessary to work with higher filtration values. In this case strong relaxed witness complex is faster to compute
-and offers similar results.
-
-Implementation
---------------
-
-The two complexes described above are implemented in the corresponding classes
-
-- :doc:`witness_complex_ref`
-- :doc:`strong_witness_complex_ref`
-- :doc:`euclidean_witness_complex_ref`
-- :doc:`euclidean_strong_witness_complex_ref`
-
-The construction of the Euclidean versions of complexes follow the same scheme:
-
-1. Construct a search tree on landmarks.
-2. Construct lists of nearest landmarks for each witness.
-3. Construct the witness complex for nearest landmark lists.
-
-In the non-Euclidean classes, the lists of nearest landmarks are supposed to be given as input.
-
-The constructors take on the steps 1 and 2, while the function 'create_complex' executes the step 3.
-
-Constructing weak relaxed witness complex from an off file
-----------------------------------------------------------
-
-Let's start with a simple example, which reads an off point file and computes a weak witness complex.
-
-.. code-block:: python
-
- import gudhi
- import argparse
-
- parser = argparse.ArgumentParser(description='EuclideanWitnessComplex creation from '
- 'points read in a OFF file.',
- epilog='Example: '
- 'example/witness_complex_diagram_persistence_from_off_file_example.py '
- '-f ../data/points/tore3D_300.off -a 1.0 -n 20 -d 2'
- '- Constructs a alpha complex with the '
- 'points from the given OFF file.')
- parser.add_argument("-f", "--file", type=str, required=True)
- parser.add_argument("-a", "--max_alpha_square", type=float, required=True)
- parser.add_argument("-n", "--number_of_landmarks", type=int, required=True)
- parser.add_argument("-d", "--limit_dimension", type=int, required=True)
-
- args = parser.parse_args()
-
- with open(args.file, 'r') as f:
- first_line = f.readline()
- if (first_line == 'OFF\n') or (first_line == 'nOFF\n'):
- print("#####################################################################")
- print("EuclideanWitnessComplex creation from points read in a OFF file")
-
- witnesses = gudhi.read_off(off_file=args.file)
- landmarks = gudhi.pick_n_random_points(points=witnesses, nb_points=args.number_of_landmarks)
-
- message = "EuclideanWitnessComplex with max_edge_length=" + repr(args.max_alpha_square) + \
- " - Number of landmarks=" + repr(args.number_of_landmarks)
- print(message)
-
- witness_complex = gudhi.EuclideanWitnessComplex(witnesses=witnesses, landmarks=landmarks)
- simplex_tree = witness_complex.create_simplex_tree(max_alpha_square=args.max_alpha_square,
- limit_dimension=args.limit_dimension)
-
- message = "Number of simplices=" + repr(simplex_tree.num_simplices())
- print(message)
- else:
- print(args.file, "is not a valid OFF file")
-
- f.close()
-
-
-Example2: Computing persistence using strong relaxed witness complex
---------------------------------------------------------------------
-
-Here is an example of constructing a strong witness complex filtration and computing persistence on it:
-
-* :download:`euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py <../example/euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py>`
-
-Bibliography
-============
-
-.. bibliography:: ../../biblio/bibliography.bib
- :filter: docnames
- :style: unsrt
diff --git a/cython/example/alpha_complex_diagram_persistence_from_off_file_example.py b/cython/example/alpha_complex_diagram_persistence_from_off_file_example.py
deleted file mode 100755
index 4abe22d4..00000000
--- a/cython/example/alpha_complex_diagram_persistence_from_off_file_example.py
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import argparse
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='AlphaComplex creation from '
- 'points read in a OFF file.',
- epilog='Example: '
- 'example/alpha_complex_diagram_persistence_from_off_file_example.py '
- '-f ../data/points/tore3D_300.off -a 0.6'
- '- Constructs a alpha complex with the '
- 'points from the given OFF file.')
-parser.add_argument("-f", "--file", type=str, required=True)
-parser.add_argument("-a", "--max_alpha_square", type=float, default=0.5)
-parser.add_argument("-b", "--band", type=float, default=0.)
-parser.add_argument('--no-diagram', default=False, action='store_true' , help='Flag for not to display the diagrams')
-
-args = parser.parse_args()
-
-with open(args.file, 'r') as f:
- first_line = f.readline()
- if (first_line == 'OFF\n') or (first_line == 'nOFF\n'):
- print("#####################################################################")
- print("AlphaComplex creation from points read in a OFF file")
-
- message = "AlphaComplex with max_edge_length=" + repr(args.max_alpha_square)
- print(message)
-
- alpha_complex = gudhi.AlphaComplex(off_file=args.file)
- simplex_tree = alpha_complex.create_simplex_tree(max_alpha_square=args.max_alpha_square)
-
- message = "Number of simplices=" + repr(simplex_tree.num_simplices())
- print(message)
-
- diag = simplex_tree.persistence()
-
- print("betti_numbers()=")
- print(simplex_tree.betti_numbers())
-
- if args.no_diagram == False:
- pplot = gudhi.plot_persistence_diagram(diag, band=args.band)
- pplot.show()
- else:
- print(args.file, "is not a valid OFF file")
-
- f.close()
diff --git a/cython/example/alpha_complex_from_points_example.py b/cython/example/alpha_complex_from_points_example.py
deleted file mode 100755
index ad73c744..00000000
--- a/cython/example/alpha_complex_from_points_example.py
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env python
-
-from gudhi import AlphaComplex, SimplexTree
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-print("#####################################################################")
-print("AlphaComplex creation from points")
-alpha_complex = AlphaComplex(points=[[0, 0], [1, 0], [0, 1], [1, 1]])
-simplex_tree = alpha_complex.create_simplex_tree(max_alpha_square=60.0)
-
-if simplex_tree.find([0, 1]):
- print("[0, 1] Found !!")
-else:
- print("[0, 1] Not found...")
-
-if simplex_tree.find([4]):
- print("[4] Found !!")
-else:
- print("[4] Not found...")
-
-if simplex_tree.insert([0, 1, 2], filtration=4.0):
- print("[0, 1, 2] Inserted !!")
-else:
- print("[0, 1, 2] Not inserted...")
-
-if simplex_tree.insert([0, 1, 4], filtration=4.0):
- print("[0, 1, 4] Inserted !!")
-else:
- print("[0, 1, 4] Not inserted...")
-
-if simplex_tree.find([4]):
- print("[4] Found !!")
-else:
- print("[4] Not found...")
-
-print("dimension=", simplex_tree.dimension())
-print("filtrations=", simplex_tree.get_filtration())
-print("star([0])=", simplex_tree.get_star([0]))
-print("coface([0], 1)=", simplex_tree.get_cofaces([0], 1))
-
-print("point[0]=", alpha_complex.get_point(0))
-print("point[5]=", alpha_complex.get_point(5))
diff --git a/cython/example/alpha_rips_persistence_bottleneck_distance.py b/cython/example/alpha_rips_persistence_bottleneck_distance.py
deleted file mode 100755
index b51fa7a8..00000000
--- a/cython/example/alpha_rips_persistence_bottleneck_distance.py
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import argparse
-import math
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='AlphaComplex and RipsComplex '
- 'persistence creation from points read in '
- 'a OFF file. Bottleneck distance computation'
- ' on each dimension',
- epilog='Example: '
- 'example/alpha_rips_persistence_bottleneck_distance.py '
- '-f ../data/points/tore3D_1307.off -t 0.15 -d 3')
-parser.add_argument("-f", "--file", type=str, required=True)
-parser.add_argument("-t", "--threshold", type=float, default=0.5)
-parser.add_argument("-d", "--max_dimension", type=int, default=1)
-
-args = parser.parse_args()
-with open(args.file, 'r') as f:
- first_line = f.readline()
- if (first_line == 'OFF\n') or (first_line == 'nOFF\n'):
- point_cloud = gudhi.read_off(off_file=args.file)
- print("#####################################################################")
- print("RipsComplex creation from points read in a OFF file")
-
- message = "RipsComplex with max_edge_length=" + repr(args.threshold)
- print(message)
-
- rips_complex = gudhi.RipsComplex(points=point_cloud,
- max_edge_length=args.threshold)
-
- rips_stree = rips_complex.create_simplex_tree(max_dimension=args.max_dimension)
-
- message = "Number of simplices=" + repr(rips_stree.num_simplices())
- print(message)
-
- rips_diag = rips_stree.persistence()
-
- print("#####################################################################")
- print("AlphaComplex creation from points read in a OFF file")
-
- message = "AlphaComplex with max_edge_length=" + repr(args.threshold)
- print(message)
-
- alpha_complex = gudhi.AlphaComplex(points=point_cloud)
- alpha_stree = alpha_complex.create_simplex_tree(max_alpha_square=(args.threshold * args.threshold))
-
- message = "Number of simplices=" + repr(alpha_stree.num_simplices())
- print(message)
-
- alpha_diag = alpha_stree.persistence()
-
- max_b_distance = 0.0
- for dim in range(args.max_dimension):
- # Alpha persistence values needs to be transform because filtration
- # values are alpha square values
- funcs = [math.sqrt, math.sqrt]
- alpha_intervals = []
- for interval in alpha_stree.persistence_intervals_in_dimension(dim):
- alpha_intervals.append(map(lambda func,value: func(value), funcs, interval))
-
- rips_intervals = rips_stree.persistence_intervals_in_dimension(dim)
- bottleneck_distance = gudhi.bottleneck_distance(rips_intervals, alpha_intervals)
- message = "In dimension " + repr(dim) + ", bottleneck distance = " + repr(bottleneck_distance)
- print(message)
- max_b_distance = max(bottleneck_distance, max_b_distance)
-
- print("================================================================================")
- message = "Bottleneck distance is " + repr(max_b_distance)
- print(message)
-
- else:
- print(args.file, "is not a valid OFF file")
-
- f.close()
diff --git a/cython/example/bottleneck_basic_example.py b/cython/example/bottleneck_basic_example.py
deleted file mode 100755
index 287956e7..00000000
--- a/cython/example/bottleneck_basic_example.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Francois Godi, Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Francois Godi, Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-diag1 = [[2.7, 3.7],[9.6, 14.],[34.2, 34.974], [3.,float('Inf')]]
-
-diag2 = [[2.8, 4.45],[9.5, 14.1],[3.2,float('Inf')]]
-
-message = "diag1=" + repr(diag1)
-print(message)
-
-message = "diag2=" + repr(diag2)
-print(message)
-
-message = "Bottleneck distance approximation=" + repr(gudhi.bottleneck_distance(diag1, diag2, 0.1))
-print(message)
-
-message = "Bottleneck distance exact value=" + repr(gudhi.bottleneck_distance(diag1, diag2))
-print(message)
-
diff --git a/cython/example/coordinate_graph_induced_complex.py b/cython/example/coordinate_graph_induced_complex.py
deleted file mode 100755
index 9e93109a..00000000
--- a/cython/example/coordinate_graph_induced_complex.py
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import argparse
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2018 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2018 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='Coordinate GIC '
- 'from points read in a OFF file.',
- epilog='Example: '
- 'example/coordinate_graph_induced_complex.py '
- '-f ../data/points/KleinBottle5D.off -c 0 -v'
- '- Constructs the coordinate GIC with the '
- 'points from the given OFF file.')
-parser.add_argument("-f", "--file", type=str, required=True)
-parser.add_argument("-c", "--coordinate", type=int, default=0)
-parser.add_argument("-v", "--verbose", default=False, action='store_true' , help='Flag for program verbosity')
-
-args = parser.parse_args()
-
-nerve_complex = gudhi.CoverComplex()
-nerve_complex.set_verbose(args.verbose)
-
-if (nerve_complex.read_point_cloud(args.file)):
- nerve_complex.set_type('GIC')
- nerve_complex.set_color_from_coordinate(args.coordinate)
- nerve_complex.set_function_from_coordinate(args.coordinate)
- nerve_complex.set_graph_from_automatic_rips()
- nerve_complex.set_automatic_resolution()
- nerve_complex.set_gain()
- nerve_complex.set_cover_from_function()
- nerve_complex.find_simplices()
- nerve_complex.plot_dot()
- simplex_tree = nerve_complex.create_simplex_tree()
- nerve_complex.compute_PD()
- if (args.verbose):
- print('Iterator on coordinate GIC simplices')
- result_str = 'Coordinate GIC is of dimension ' + \
- repr(simplex_tree.dimension()) + ' - ' + \
- repr(simplex_tree.num_simplices()) + ' simplices - ' + \
- repr(simplex_tree.num_vertices()) + ' vertices.'
- print(result_str)
- for filtered_value in simplex_tree.get_filtration():
- print(filtered_value[0])
diff --git a/cython/example/euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py b/cython/example/euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py
deleted file mode 100755
index 3b29781f..00000000
--- a/cython/example/euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import argparse
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='EuclideanStrongWitnessComplex creation from '
- 'points read in a OFF file.',
- epilog='Example: '
- 'example/euclidean_strong_witness_complex_diagram_persistence_from_off_file_example.py '
- '-f ../data/points/tore3D_300.off -a 1.0 -n 20 -d 2'
- '- Constructs a strong witness complex with the '
- 'points from the given OFF file.')
-parser.add_argument("-f", "--file", type=str, required=True)
-parser.add_argument("-a", "--max_alpha_square", type=float, required=True)
-parser.add_argument("-n", "--number_of_landmarks", type=int, required=True)
-parser.add_argument("-d", "--limit_dimension", type=int, required=True)
-parser.add_argument("-b", "--band", type=float, default=0.)
-parser.add_argument('--no-diagram', default=False, action='store_true' , help='Flag for not to display the diagrams')
-
-args = parser.parse_args()
-
-with open(args.file, 'r') as f:
- first_line = f.readline()
- if (first_line == 'OFF\n') or (first_line == 'nOFF\n'):
- print("#####################################################################")
- print("EuclideanStrongWitnessComplex creation from points read in a OFF file")
-
- witnesses = gudhi.read_off(off_file=args.file)
- landmarks = gudhi.pick_n_random_points(points=witnesses, nb_points=args.number_of_landmarks)
-
- message = "EuclideanStrongWitnessComplex with max_edge_length=" + repr(args.max_alpha_square) + \
- " - Number of landmarks=" + repr(args.number_of_landmarks)
- print(message)
-
- witness_complex = gudhi.EuclideanStrongWitnessComplex(witnesses=witnesses, landmarks=landmarks)
- simplex_tree = witness_complex.create_simplex_tree(max_alpha_square=args.max_alpha_square,
- limit_dimension=args.limit_dimension)
-
- message = "Number of simplices=" + repr(simplex_tree.num_simplices())
- print(message)
-
- diag = simplex_tree.persistence()
-
- print("betti_numbers()=")
- print(simplex_tree.betti_numbers())
-
- if args.no_diagram == False:
- pplot = gudhi.plot_persistence_diagram(diag, band=args.band)
- pplot.show()
- else:
- print(args.file, "is not a valid OFF file")
-
- f.close()
diff --git a/cython/example/euclidean_witness_complex_diagram_persistence_from_off_file_example.py b/cython/example/euclidean_witness_complex_diagram_persistence_from_off_file_example.py
deleted file mode 100755
index db34962d..00000000
--- a/cython/example/euclidean_witness_complex_diagram_persistence_from_off_file_example.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import argparse
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='EuclideanWitnessComplex creation from '
- 'points read in a OFF file.',
- epilog='Example: '
- 'example/euclidean_witness_complex_diagram_persistence_from_off_file_example.py '
- '-f ../data/points/tore3D_300.off -a 1.0 -n 20 -d 2'
- '- Constructs a weak witness complex with the '
- 'points from the given OFF file.')
-parser.add_argument("-f", "--file", type=str, required=True)
-parser.add_argument("-a", "--max_alpha_square", type=float, required=True)
-parser.add_argument("-n", "--number_of_landmarks", type=int, required=True)
-parser.add_argument("-d", "--limit_dimension", type=int, required=True)
-parser.add_argument("-b", "--band", type=float, default=0.)
-parser.add_argument('--no-diagram', default=False, action='store_true' , help='Flag for not to display the diagrams')
-
-args = parser.parse_args()
-
-with open(args.file, 'r') as f:
- first_line = f.readline()
- if (first_line == 'OFF\n') or (first_line == 'nOFF\n'):
- print("#####################################################################")
- print("EuclideanWitnessComplex creation from points read in a OFF file")
-
- witnesses = gudhi.read_off(off_file=args.file)
- landmarks = gudhi.pick_n_random_points(points=witnesses, nb_points=args.number_of_landmarks)
-
- message = "EuclideanWitnessComplex with max_edge_length=" + repr(args.max_alpha_square) + \
- " - Number of landmarks=" + repr(args.number_of_landmarks)
- print(message)
-
- witness_complex = gudhi.EuclideanWitnessComplex(witnesses=witnesses, landmarks=landmarks)
- simplex_tree = witness_complex.create_simplex_tree(max_alpha_square=args.max_alpha_square,
- limit_dimension=args.limit_dimension)
-
- message = "Number of simplices=" + repr(simplex_tree.num_simplices())
- print(message)
-
- diag = simplex_tree.persistence()
-
- print("betti_numbers()=")
- print(simplex_tree.betti_numbers())
-
- if args.no_diagram == False:
- pplot = gudhi.plot_persistence_diagram(diag, band=args.band)
- pplot.show()
- else:
- print(args.file, "is not a valid OFF file")
-
- f.close()
diff --git a/cython/example/functional_graph_induced_complex.py b/cython/example/functional_graph_induced_complex.py
deleted file mode 100755
index 6ad7c2ec..00000000
--- a/cython/example/functional_graph_induced_complex.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import argparse
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2018 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2018 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='Functional GIC '
- 'from points read in a OFF file.',
- epilog='Example: '
- 'example/functional_graph_induced_complex.py '
- '-o ../data/points/COIL_database/lucky_cat.off '
- '-f ../data/points/COIL_database/lucky_cat_PCA1'
- '- Constructs the functional GIC with the '
- 'points from the given OFF and function files.')
-parser.add_argument("-o", "--off-file", type=str, required=True)
-parser.add_argument("-f", "--function-file", type=str, required=True)
-parser.add_argument("-v", "--verbose", default=False, action='store_true' , help='Flag for program verbosity')
-
-args = parser.parse_args()
-
-nerve_complex = gudhi.CoverComplex()
-nerve_complex.set_verbose(args.verbose)
-
-if (nerve_complex.read_point_cloud(args.off_file)):
- nerve_complex.set_type('GIC')
- nerve_complex.set_color_from_file(args.function_file)
- nerve_complex.set_function_from_file(args.function_file)
- nerve_complex.set_graph_from_automatic_rips()
- nerve_complex.set_automatic_resolution()
- nerve_complex.set_gain()
- nerve_complex.set_cover_from_function()
- nerve_complex.find_simplices()
- nerve_complex.plot_dot()
- simplex_tree = nerve_complex.create_simplex_tree()
- nerve_complex.compute_PD()
- if (args.verbose):
- print('Iterator on functional GIC simplices')
- result_str = 'Functional GIC is of dimension ' + \
- repr(simplex_tree.dimension()) + ' - ' + \
- repr(simplex_tree.num_simplices()) + ' simplices - ' + \
- repr(simplex_tree.num_vertices()) + ' vertices.'
- print(result_str)
- for filtered_value in simplex_tree.get_filtration():
- print(filtered_value[0])
diff --git a/cython/example/gudhi_graphical_tools_example.py b/cython/example/gudhi_graphical_tools_example.py
deleted file mode 100755
index ac3d146c..00000000
--- a/cython/example/gudhi_graphical_tools_example.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-print("#####################################################################")
-print("Show barcode persistence example")
-
-persistence = [(2, (1.0, float('inf'))), (1, (1.4142135623730951, float('inf'))),
- (1, (1.4142135623730951, float('inf'))), (0, (0.0, float('inf'))),
- (0, (0.0, 1.0)), (0, (0.0, 1.0)), (0, (0.0, 1.0))]
-gudhi.plot_persistence_barcode(persistence)
-
-print("#####################################################################")
-print("Show diagram persistence example")
-
-pplot = gudhi.plot_persistence_diagram(persistence)
-pplot.show()
-
-print("#####################################################################")
-print("Show diagram persistence example with a confidence band")
-
-pplot = gudhi.plot_persistence_diagram(persistence, band=0.2)
-pplot.show()
diff --git a/cython/example/nerve_of_a_covering.py b/cython/example/nerve_of_a_covering.py
deleted file mode 100755
index c5577cb1..00000000
--- a/cython/example/nerve_of_a_covering.py
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import argparse
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2018 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2018 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='Nerve of a covering creation '
- 'from points read in a OFF file.',
- epilog='Example: '
- 'example/nerve_of_a_covering.py '
- '-f ../data/points/human.off -c 2 -r 10 -g 0.3'
- '- Constructs Nerve of a covering with the '
- 'points from the given OFF file.')
-parser.add_argument("-f", "--file", type=str, required=True)
-parser.add_argument("-c", "--coordinate", type=int, default=0)
-parser.add_argument("-r", "--resolution", type=int, default=10)
-parser.add_argument("-g", "--gain", type=float, default=0.3)
-parser.add_argument("-v", "--verbose", default=False, action='store_true' , help='Flag for program verbosity')
-
-args = parser.parse_args()
-
-nerve_complex = gudhi.CoverComplex()
-nerve_complex.set_verbose(args.verbose)
-
-if (nerve_complex.read_point_cloud(args.file)):
- nerve_complex.set_type('Nerve')
- nerve_complex.set_color_from_coordinate(args.coordinate)
- nerve_complex.set_function_from_coordinate(args.coordinate)
- nerve_complex.set_graph_from_OFF()
- nerve_complex.set_resolution_with_interval_number(args.resolution)
- nerve_complex.set_gain(args.gain)
- nerve_complex.set_cover_from_function()
- nerve_complex.find_simplices()
- nerve_complex.write_info()
- simplex_tree = nerve_complex.create_simplex_tree()
- nerve_complex.compute_PD()
- if (args.verbose):
- print('Iterator on graph induced complex simplices')
- result_str = 'Nerve is of dimension ' + \
- repr(simplex_tree.dimension()) + ' - ' + \
- repr(simplex_tree.num_simplices()) + ' simplices - ' + \
- repr(simplex_tree.num_vertices()) + ' vertices.'
- print(result_str)
- for filtered_value in simplex_tree.get_filtration():
- print(filtered_value[0])
diff --git a/cython/example/periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py b/cython/example/periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py
deleted file mode 100755
index 5f968bf1..00000000
--- a/cython/example/periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import argparse
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-def is_file_perseus(file):
- num_lines = open(file).read().count('\n')
- try:
- f = open(file)
- num_dim = int(f.readline())
- coeff = 1
- for dim in range(0, num_dim):
- try:
- line = int(f.readline())
- coeff *= abs(line)
- except ValueError:
- return False
- if num_lines == (1 + num_dim + coeff):
- return True
- else:
- return False
- except ValueError:
- return False
-
-parser = argparse.ArgumentParser(description='Periodic cubical complex from a '
- 'Perseus-style file name.',
- epilog='Example: '
- './periodic_cubical_complex_barcode_persistence_from_perseus_file_example.py'
- ' -f ../data/bitmap/CubicalTwoSphere.txt')
-
-parser.add_argument("-f", "--file", type=str, required=True)
-parser.add_argument('--no-barcode', default=False, action='store_true' , help='Flag for not to display the barcodes')
-
-args = parser.parse_args()
-
-if is_file_perseus(args.file):
- print("#####################################################################")
- print("PeriodicCubicalComplex creation")
- periodic_cubical_complex = gudhi.PeriodicCubicalComplex(perseus_file=args.file)
-
- print("persistence(homology_coeff_field=3, min_persistence=0)=")
- diag = periodic_cubical_complex.persistence(homology_coeff_field=3, min_persistence=0)
- print(diag)
-
- print("betti_numbers()=")
- print(periodic_cubical_complex.betti_numbers())
- if args.no_barcode == False:
- gudhi.plot_persistence_barcode(diag)
-else:
- print(args.file, "is not a valid perseus style file")
diff --git a/cython/example/random_cubical_complex_persistence_example.py b/cython/example/random_cubical_complex_persistence_example.py
deleted file mode 100755
index 80ff2452..00000000
--- a/cython/example/random_cubical_complex_persistence_example.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import numpy
-from functools import reduce
-import argparse
-import operator
-
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='Random cubical complex.',
- epilog='Example: '
- './random_cubical_complex_persistence_example.py'
- ' 10 10 10 - Constructs a random cubical '
- 'complex in a dimension [10, 10, 10] (aka. '
- '1000 random top dimensional cells).')
-parser.add_argument('dimension', type=int, nargs="*",
- help='Cubical complex dimensions')
-
-args = parser.parse_args()
-dimension_multiplication = reduce(operator.mul, args.dimension, 1)
-
-if dimension_multiplication > 1:
- print("#####################################################################")
- print("CubicalComplex creation")
- cubical_complex = gudhi.CubicalComplex(dimensions=args.dimension,
- top_dimensional_cells = numpy.random.rand(dimension_multiplication))
-
- print("persistence(homology_coeff_field=2, min_persistence=0)=")
- print(cubical_complex.persistence(homology_coeff_field=2, min_persistence=0))
-
- print("betti_numbers()=")
- print(cubical_complex.betti_numbers())
diff --git a/cython/example/rips_complex_diagram_persistence_from_correlation_matrix_file_example.py b/cython/example/rips_complex_diagram_persistence_from_correlation_matrix_file_example.py
deleted file mode 100755
index 0c9dfc43..00000000
--- a/cython/example/rips_complex_diagram_persistence_from_correlation_matrix_file_example.py
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import sys
-import argparse
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2017 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2017 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='RipsComplex creation from '
- 'a correlation matrix read in a csv file.',
- epilog='Example: '
- 'example/rips_complex_diagram_persistence_from_correlation_matrix_file_example.py '
- '-f ../data/correlation_matrix/lower_triangular_correlation_matrix.csv -e 12.0 -d 3'
- '- Constructs a Rips complex with the '
- 'correlation matrix from the given csv file.')
-parser.add_argument("-f", "--file", type=str, required=True)
-parser.add_argument("-c", "--min_edge_correlation", type=float, default=0.5)
-parser.add_argument("-d", "--max_dimension", type=int, default=1)
-parser.add_argument("-b", "--band", type=float, default=0.)
-parser.add_argument('--no-diagram', default=False, action='store_true' , help='Flag for not to display the diagrams')
-
-args = parser.parse_args()
-
-if not (-1. < args.min_edge_correlation < 1.):
- print("Wrong value of the treshold corelation (should be between -1 and 1).")
- sys.exit(1)
-
-print("#####################################################################")
-print("Caution: as persistence diagrams points will be under the diagonal,")
-print("bottleneck distance and persistence graphical tool will not work")
-print("properly, this is a known issue.")
-
-print("#####################################################################")
-print("RipsComplex creation from correlation matrix read in a csv file")
-
-message = "RipsComplex with min_edge_correlation=" + repr(args.min_edge_correlation)
-print(message)
-
-correlation_matrix = gudhi.read_lower_triangular_matrix_from_csv_file(csv_file=args.file)
-# Given a correlation matrix M, we compute component-wise M'[i,j] = 1-M[i,j] to get a distance matrix:
-distance_matrix = [[1.-correlation_matrix[i][j] for j in range(len(correlation_matrix[i]))] for i in range(len(correlation_matrix))]
-
-rips_complex = gudhi.RipsComplex(distance_matrix=distance_matrix,
- max_edge_length=1.-args.min_edge_correlation)
-simplex_tree = rips_complex.create_simplex_tree(max_dimension=args.max_dimension)
-
-message = "Number of simplices=" + repr(simplex_tree.num_simplices())
-print(message)
-
-diag = simplex_tree.persistence()
-
-print("betti_numbers()=")
-print(simplex_tree.betti_numbers())
-
-# invert the persistence diagram
-invert_diag = [(diag[pers][0],(1.-diag[pers][1][0], 1.-diag[pers][1][1])) for pers in range(len(diag))]
-
-if args.no_diagram == False:
- pplot = gudhi.plot_persistence_diagram(invert_diag, band=args.band)
- pplot.show()
diff --git a/cython/example/rips_complex_diagram_persistence_from_distance_matrix_file_example.py b/cython/example/rips_complex_diagram_persistence_from_distance_matrix_file_example.py
deleted file mode 100755
index 4d2ed577..00000000
--- a/cython/example/rips_complex_diagram_persistence_from_distance_matrix_file_example.py
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import argparse
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='RipsComplex creation from '
- 'a distance matrix read in a csv file.',
- epilog='Example: '
- 'example/rips_complex_diagram_persistence_from_distance_matrix_file_example.py '
- '-f ../data/distance_matrix/lower_triangular_distance_matrix.csv -e 12.0 -d 3'
- '- Constructs a Rips complex with the '
- 'distance matrix from the given csv file.')
-parser.add_argument("-f", "--file", type=str, required=True)
-parser.add_argument("-e", "--max_edge_length", type=float, default=0.5)
-parser.add_argument("-d", "--max_dimension", type=int, default=1)
-parser.add_argument("-b", "--band", type=float, default=0.)
-parser.add_argument('--no-diagram', default=False, action='store_true' , help='Flag for not to display the diagrams')
-
-args = parser.parse_args()
-
-print("#####################################################################")
-print("RipsComplex creation from distance matrix read in a csv file")
-
-message = "RipsComplex with max_edge_length=" + repr(args.max_edge_length)
-print(message)
-
-distance_matrix = gudhi.read_lower_triangular_matrix_from_csv_file(csv_file=args.file)
-rips_complex = gudhi.RipsComplex(distance_matrix=distance_matrix, max_edge_length=args.max_edge_length)
-simplex_tree = rips_complex.create_simplex_tree(max_dimension=args.max_dimension)
-
-message = "Number of simplices=" + repr(simplex_tree.num_simplices())
-print(message)
-
-diag = simplex_tree.persistence()
-
-print("betti_numbers()=")
-print(simplex_tree.betti_numbers())
-
-if args.no_diagram == False:
- pplot = gudhi.plot_persistence_diagram(diag, band=args.band)
- pplot.show()
diff --git a/cython/example/rips_complex_diagram_persistence_from_off_file_example.py b/cython/example/rips_complex_diagram_persistence_from_off_file_example.py
deleted file mode 100755
index d15d5eb0..00000000
--- a/cython/example/rips_complex_diagram_persistence_from_off_file_example.py
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import argparse
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='RipsComplex creation from '
- 'points read in a OFF file.',
- epilog='Example: '
- 'example/rips_complex_diagram_persistence_from_off_file_example.py '
- '-f ../data/points/tore3D_300.off -a 0.6'
- '- Constructs a Rips complex with the '
- 'points from the given OFF file.')
-parser.add_argument("-f", "--file", type=str, required=True)
-parser.add_argument("-e", "--max_edge_length", type=float, default=0.5)
-parser.add_argument("-d", "--max_dimension", type=int, default=1)
-parser.add_argument("-b", "--band", type=float, default=0.)
-parser.add_argument('--no-diagram', default=False, action='store_true' , help='Flag for not to display the diagrams')
-
-args = parser.parse_args()
-
-with open(args.file, 'r') as f:
- first_line = f.readline()
- if (first_line == 'OFF\n') or (first_line == 'nOFF\n'):
- print("#####################################################################")
- print("RipsComplex creation from points read in a OFF file")
-
- message = "RipsComplex with max_edge_length=" + repr(args.max_edge_length)
- print(message)
-
- point_cloud = gudhi.read_off(off_file=args.file)
- rips_complex = gudhi.RipsComplex(points=point_cloud, max_edge_length=args.max_edge_length)
- simplex_tree = rips_complex.create_simplex_tree(max_dimension=args.max_dimension)
-
- message = "Number of simplices=" + repr(simplex_tree.num_simplices())
- print(message)
-
- diag = simplex_tree.persistence()
-
- print("betti_numbers()=")
- print(simplex_tree.betti_numbers())
-
- if args.no_diagram == False:
- pplot = gudhi.plot_persistence_diagram(diag, band=args.band)
- pplot.show()
- else:
- print(args.file, "is not a valid OFF file")
-
- f.close()
diff --git a/cython/example/rips_complex_from_points_example.py b/cython/example/rips_complex_from_points_example.py
deleted file mode 100755
index ffa9d91f..00000000
--- a/cython/example/rips_complex_from_points_example.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-print("#####################################################################")
-print("RipsComplex creation from points")
-rips = gudhi.RipsComplex(points=[[0, 0], [1, 0], [0, 1], [1, 1]],
- max_edge_length=42)
-
-simplex_tree = rips.create_simplex_tree(max_dimension=1)
-
-print("filtrations=", simplex_tree.get_filtration())
-print("star([0])=", simplex_tree.get_star([0]))
-print("coface([0], 1)=", simplex_tree.get_cofaces([0], 1))
diff --git a/cython/example/rips_persistence_diagram.py b/cython/example/rips_persistence_diagram.py
deleted file mode 100755
index 7a6a9f46..00000000
--- a/cython/example/rips_persistence_diagram.py
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Marc Glisse
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Marc Glisse"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-print("#####################################################################")
-print("RipsComplex creation from points")
-rips = gudhi.RipsComplex(points=[[0, 0], [1, 0], [0, 1], [1, 1]],
- max_edge_length=42)
-
-simplex_tree = rips.create_simplex_tree(max_dimension=1)
-
-
-diag = simplex_tree.persistence(homology_coeff_field=2, min_persistence=0)
-print("diag=", diag)
-
-pplot = gudhi.plot_persistence_diagram(diag)
-pplot.show()
diff --git a/cython/example/simplex_tree_example.py b/cython/example/simplex_tree_example.py
deleted file mode 100755
index 28679015..00000000
--- a/cython/example/simplex_tree_example.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-print("#####################################################################")
-print("SimplexTree creation from insertion")
-
-st = gudhi.SimplexTree()
-
-if st.insert([0, 1]):
- print("Inserted !!")
-else:
- print("Not inserted...")
-
-if st.find([0, 1]):
- print("Found !!")
-else:
- print("Not found...")
-
-if st.insert([0, 1, 2], filtration=4.0):
- print("Inserted !!")
-else:
- print("Not inserted...")
-
-print("dimension=", st.dimension())
-
-st.initialize_filtration()
-print("filtration=", st.get_filtration())
-print("filtration[1, 2]=", st.filtration([1, 2]))
-print("filtration[4, 2]=", st.filtration([4, 2]))
-
-print("num_simplices=", st.num_simplices())
-print("num_vertices=", st.num_vertices())
-
-print("skeleton[2]=", st.get_skeleton(2))
-print("skeleton[1]=", st.get_skeleton(1))
-print("skeleton[0]=", st.get_skeleton(0))
diff --git a/cython/example/tangential_complex_plain_homology_from_off_file_example.py b/cython/example/tangential_complex_plain_homology_from_off_file_example.py
deleted file mode 100755
index 0f8f5e80..00000000
--- a/cython/example/tangential_complex_plain_homology_from_off_file_example.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import argparse
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='TangentialComplex creation from '
- 'points read in a OFF file.',
- epilog='Example: '
- 'example/tangential_complex_plain_homology_from_off_file_example.py '
- '-f ../data/points/tore3D_300.off -i 3'
- '- Constructs a tangential complex with the '
- 'points from the given OFF file')
-parser.add_argument("-f", "--file", type=str, required=True)
-parser.add_argument("-i", "--intrisic_dim", type=int, required=True)
-parser.add_argument("-b", "--band", type=float, default=0.)
-parser.add_argument('--no-diagram', default=False, action='store_true' , help='Flag for not to display the diagrams')
-
-args = parser.parse_args()
-
-with open(args.file, 'r') as f:
- first_line = f.readline()
- if (first_line == 'OFF\n') or (first_line == 'nOFF\n'):
- print("#####################################################################")
- print("TangentialComplex creation from points read in a OFF file")
-
- tc = gudhi.TangentialComplex(intrisic_dim = args.intrisic_dim, off_file=args.file)
- st = tc.create_simplex_tree()
-
- message = "Number of simplices=" + repr(st.num_simplices())
- print(message)
-
- diag = st.persistence(persistence_dim_max = True)
-
- print("betti_numbers()=")
- print(st.betti_numbers())
-
- if args.no_diagram == False:
- pplot = gudhi.plot_persistence_diagram(diag, band=args.band)
- pplot.show()
- else:
- print(args.file, "is not a valid OFF file")
-
- f.close()
diff --git a/cython/example/voronoi_graph_induced_complex.py b/cython/example/voronoi_graph_induced_complex.py
deleted file mode 100755
index 8266a0e4..00000000
--- a/cython/example/voronoi_graph_induced_complex.py
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/env python
-
-import gudhi
-import argparse
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2018 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2018 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='Voronoi GIC '
- 'from points read in a OFF file.',
- epilog='Example: '
- 'example/voronoi_graph_induced_complex.py '
- '-f ../data/points/human.off -n 700 -v'
- '- Constructs the Voronoi GIC with the '
- 'points from the given OFF file.')
-parser.add_argument("-f", "--file", type=str, required=True)
-parser.add_argument("-n", "--subsample-nb-points", type=int, default=100)
-parser.add_argument("-v", "--verbose", default=False, action='store_true' , help='Flag for program verbosity')
-
-args = parser.parse_args()
-
-nerve_complex = gudhi.CoverComplex()
-nerve_complex.set_verbose(args.verbose)
-
-if (nerve_complex.read_point_cloud(args.file)):
- nerve_complex.set_type('GIC')
- nerve_complex.set_color_from_coordinate()
- nerve_complex.set_graph_from_OFF()
- nerve_complex.set_cover_from_Voronoi(args.subsample_nb_points)
- nerve_complex.find_simplices()
- nerve_complex.plot_off()
- simplex_tree = nerve_complex.create_simplex_tree()
- nerve_complex.compute_PD()
- if (args.verbose):
- print('Iterator on graph induced complex simplices')
- result_str = 'Graph induced complex is of dimension ' + \
- repr(simplex_tree.dimension()) + ' - ' + \
- repr(simplex_tree.num_simplices()) + ' simplices - ' + \
- repr(simplex_tree.num_vertices()) + ' vertices.'
- print(result_str)
- for filtered_value in simplex_tree.get_filtration():
- print(filtered_value[0])
diff --git a/cython/example/witness_complex_from_nearest_landmark_table.py b/cython/example/witness_complex_from_nearest_landmark_table.py
deleted file mode 100755
index e6b295ee..00000000
--- a/cython/example/witness_complex_from_nearest_landmark_table.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env python
-
-from gudhi import StrongWitnessComplex, SimplexTree
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-print("#####################################################################")
-print("WitnessComplex creation from nearest landmark table")
-nearest_landmark_table = [[[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]],
- [[1, 0], [2, 1], [3, 2], [4, 3], [0, 4]],
- [[2, 0], [3, 1], [4, 2], [0, 3], [1, 4]],
- [[3, 0], [4, 1], [0, 2], [1, 3], [2, 4]],
- [[4, 0], [0, 1], [1, 2], [2, 3], [3, 4]]]
-
-witness_complex = StrongWitnessComplex(nearest_landmark_table=nearest_landmark_table)
-simplex_tree = witness_complex.create_simplex_tree(max_alpha_square=4.1)
-
-message = "Number of simplices: " + repr(simplex_tree.num_simplices())
-print(message)
-
-diag = simplex_tree.persistence(min_persistence=-0.1, homology_coeff_field=11)
-print(diag)
diff --git a/cython/gudhi.pyx.in b/cython/gudhi.pyx.in
deleted file mode 100644
index 0d4b966b..00000000
--- a/cython/gudhi.pyx.in
+++ /dev/null
@@ -1,45 +0,0 @@
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-__version__ = "@GUDHI_VERSION@"
-# This variable is used by doctest to find files
-__root_source_dir__ = "@CMAKE_SOURCE_DIR@"
-__debug_info__ = @GUDHI_CYTHON_DEBUG_INFO@
-
-include '@CMAKE_CURRENT_SOURCE_DIR@/cython/off_reader.pyx'
-include '@CMAKE_CURRENT_SOURCE_DIR@/cython/simplex_tree.pyx'
-include '@CMAKE_CURRENT_SOURCE_DIR@/cython/rips_complex.pyx'
-include '@CMAKE_CURRENT_SOURCE_DIR@/cython/cubical_complex.pyx'
-include '@CMAKE_CURRENT_SOURCE_DIR@/cython/periodic_cubical_complex.pyx'
-include '@CMAKE_CURRENT_SOURCE_DIR@/cython/persistence_graphical_tools.py'
-include '@CMAKE_CURRENT_SOURCE_DIR@/cython/reader_utils.pyx'
-include '@CMAKE_CURRENT_SOURCE_DIR@/cython/witness_complex.pyx'
-include '@CMAKE_CURRENT_SOURCE_DIR@/cython/strong_witness_complex.pyx'
-@GUDHI_CYTHON_ALPHA_COMPLEX@
-@GUDHI_CYTHON_EUCLIDEAN_WITNESS_COMPLEX@
-@GUDHI_CYTHON_SUBSAMPLING@
-@GUDHI_CYTHON_TANGENTIAL_COMPLEX@
-@GUDHI_CYTHON_BOTTLENECK_DISTANCE@
-@GUDHI_CYTHON_NERVE_GIC@
diff --git a/cython/include/Alpha_complex_interface.h b/cython/include/Alpha_complex_interface.h
deleted file mode 100644
index 8cf527fc..00000000
--- a/cython/include/Alpha_complex_interface.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_ALPHA_COMPLEX_INTERFACE_H_
-#define INCLUDE_ALPHA_COMPLEX_INTERFACE_H_
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Alpha_complex.h>
-#include <CGAL/Epick_d.h>
-
-#include "Simplex_tree_interface.h"
-
-#include <iostream>
-#include <vector>
-#include <string>
-
-namespace Gudhi {
-
-namespace alpha_complex {
-
-class Alpha_complex_interface {
- using Dynamic_kernel = CGAL::Epick_d< CGAL::Dynamic_dimension_tag >;
- using Point_d = Dynamic_kernel::Point_d;
-
- public:
- Alpha_complex_interface(const std::vector<std::vector<double>>& points) {
- alpha_complex_ = new Alpha_complex<Dynamic_kernel>(points);
- }
-
- Alpha_complex_interface(const std::string& off_file_name, bool from_file = true) {
- alpha_complex_ = new Alpha_complex<Dynamic_kernel>(off_file_name);
- }
-
- ~Alpha_complex_interface() {
- delete alpha_complex_;
- }
-
- std::vector<double> get_point(int vh) {
- std::vector<double> vd;
- try {
- Point_d ph = alpha_complex_->get_point(vh);
- for (auto coord = ph.cartesian_begin(); coord < ph.cartesian_end(); coord++)
- vd.push_back(*coord);
- } catch (std::out_of_range outofrange) {
- // std::out_of_range is thrown in case not found. Other exceptions must be re-thrown
- }
- return vd;
- }
-
- void create_simplex_tree(Simplex_tree_interface<>* simplex_tree, double max_alpha_square) {
- alpha_complex_->create_complex(*simplex_tree, max_alpha_square);
- simplex_tree->initialize_filtration();
- }
-
- private:
- Alpha_complex<Dynamic_kernel>* alpha_complex_;
-};
-
-} // namespace alpha_complex
-
-} // namespace Gudhi
-
-#endif // INCLUDE_ALPHA_COMPLEX_INTERFACE_H_
diff --git a/cython/include/Bottleneck_distance_interface.h b/cython/include/Bottleneck_distance_interface.h
deleted file mode 100644
index 5ad9d77d..00000000
--- a/cython/include/Bottleneck_distance_interface.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_BOTTLENECK_DISTANCE_INTERFACE_H_
-#define INCLUDE_BOTTLENECK_DISTANCE_INTERFACE_H_
-
-#include <gudhi/Bottleneck.h>
-
-#include <iostream>
-#include <vector>
-#include <utility> // for std::pair
-
-namespace Gudhi {
-
-namespace persistence_diagram {
-
- // bottleneck_distance function renamed for the python function can be called bottleneck_dstance
- double bottleneck(const std::vector<std::pair<double, double>>& diag1,
- const std::vector<std::pair<double, double>>& diag2,
- double e) {
- return bottleneck_distance(diag1, diag2, e);
- }
-
- double bottleneck(const std::vector<std::pair<double, double>>& diag1,
- const std::vector<std::pair<double, double>>& diag2) {
- return bottleneck_distance(diag1, diag2);
- }
-
-} // namespace persistence_diagram
-
-} // namespace Gudhi
-
-
-#endif // INCLUDE_BOTTLENECK_DISTANCE_INTERFACE_H_
diff --git a/cython/include/Cubical_complex_interface.h b/cython/include/Cubical_complex_interface.h
deleted file mode 100644
index 85b717b3..00000000
--- a/cython/include/Cubical_complex_interface.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_CUBICAL_COMPLEX_INTERFACE_H_
-#define INCLUDE_CUBICAL_COMPLEX_INTERFACE_H_
-
-#include <gudhi/Bitmap_cubical_complex.h>
-#include <gudhi/Bitmap_cubical_complex_base.h>
-#include <gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h>
-
-#include <iostream>
-#include <vector>
-#include <string>
-
-namespace Gudhi {
-
-namespace cubical_complex {
-
-template<typename CubicalComplexOptions = Bitmap_cubical_complex_base<double>>
-class Cubical_complex_interface : public Bitmap_cubical_complex<CubicalComplexOptions> {
- public:
- Cubical_complex_interface(const std::vector<unsigned>& dimensions,
- const std::vector<double>& top_dimensional_cells)
- : Bitmap_cubical_complex<CubicalComplexOptions>(dimensions, top_dimensional_cells) {
- }
-
- Cubical_complex_interface(const std::vector<unsigned>& dimensions,
- const std::vector<double>& top_dimensional_cells,
- const std::vector<bool>& periodic_dimensions)
- : Bitmap_cubical_complex<CubicalComplexOptions>(dimensions, top_dimensional_cells, periodic_dimensions) {
- }
-
- Cubical_complex_interface(const std::string& perseus_file)
- : Bitmap_cubical_complex<CubicalComplexOptions>(perseus_file.c_str()) {
- }
-};
-
-} // namespace cubical_complex
-
-} // namespace Gudhi
-
-#endif // INCLUDE_CUBICAL_COMPLEX_INTERFACE_H_
-
diff --git a/cython/include/Euclidean_strong_witness_complex_interface.h b/cython/include/Euclidean_strong_witness_complex_interface.h
deleted file mode 100644
index d86355d6..00000000
--- a/cython/include/Euclidean_strong_witness_complex_interface.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_EUCLIDEAN_STRONG_WITNESS_COMPLEX_INTERFACE_H_
-#define INCLUDE_EUCLIDEAN_STRONG_WITNESS_COMPLEX_INTERFACE_H_
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Euclidean_strong_witness_complex.h>
-
-#include "Simplex_tree_interface.h"
-
-#include <CGAL/Epick_d.h>
-
-#include <vector>
-#include <utility> // std::pair
-#include <iostream>
-#include <cstddef>
-
-namespace Gudhi {
-
-namespace witness_complex {
-
-
-class Euclidean_strong_witness_complex_interface {
- using Dynamic_kernel = CGAL::Epick_d< CGAL::Dynamic_dimension_tag >;
- using Point_d = Dynamic_kernel::Point_d;
-
- typedef typename Simplex_tree<>::Simplex_key Simplex_key;
-
- public:
- Euclidean_strong_witness_complex_interface(const std::vector<std::vector<double>>& landmarks,
- const std::vector<std::vector<double>>& witnesses) {
- landmarks_.reserve(landmarks.size());
- for (auto& landmark : landmarks)
- landmarks_.emplace_back(landmark.begin(), landmark.end());
- witness_complex_ = new Euclidean_strong_witness_complex<Dynamic_kernel>(landmarks_, witnesses);
- }
-
- ~Euclidean_strong_witness_complex_interface() {
- delete witness_complex_;
- }
-
- void create_simplex_tree(Gudhi::Simplex_tree<>* simplex_tree, double max_alpha_square,
- std::size_t limit_dimension) {
- witness_complex_->create_complex(*simplex_tree, max_alpha_square, limit_dimension);
- simplex_tree->initialize_filtration();
- }
-
- void create_simplex_tree(Gudhi::Simplex_tree<>* simplex_tree, double max_alpha_square) {
- witness_complex_->create_complex(*simplex_tree, max_alpha_square);
- simplex_tree->initialize_filtration();
- }
-
- std::vector<double> get_point(unsigned vh) {
- std::vector<double> vd;
- if (vh < landmarks_.size()) {
- Point_d ph = witness_complex_->get_point(vh);
- for (auto coord = ph.cartesian_begin(); coord < ph.cartesian_end(); coord++)
- vd.push_back(*coord);
- }
- return vd;
- }
-
- private:
- std::vector<Point_d> landmarks_;
- Euclidean_strong_witness_complex<Dynamic_kernel>* witness_complex_;
-};
-
-} // namespace witness_complex
-
-} // namespace Gudhi
-
-#endif // INCLUDE_EUCLIDEAN_STRONG_WITNESS_COMPLEX_INTERFACE_H_
-
diff --git a/cython/include/Euclidean_witness_complex_interface.h b/cython/include/Euclidean_witness_complex_interface.h
deleted file mode 100644
index dc303533..00000000
--- a/cython/include/Euclidean_witness_complex_interface.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_EUCLIDEAN_WITNESS_COMPLEX_INTERFACE_H_
-#define INCLUDE_EUCLIDEAN_WITNESS_COMPLEX_INTERFACE_H_
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Euclidean_witness_complex.h>
-
-#include "Simplex_tree_interface.h"
-
-#include <CGAL/Epick_d.h>
-
-#include <vector>
-#include <utility> // std::pair
-#include <iostream>
-#include <cstddef>
-
-namespace Gudhi {
-
-namespace witness_complex {
-
-
-class Euclidean_witness_complex_interface {
- using Dynamic_kernel = CGAL::Epick_d< CGAL::Dynamic_dimension_tag >;
- using Point_d = Dynamic_kernel::Point_d;
-
- typedef typename Simplex_tree<>::Simplex_key Simplex_key;
-
- public:
- Euclidean_witness_complex_interface(const std::vector<std::vector<double>>& landmarks,
- const std::vector<std::vector<double>>& witnesses) {
- landmarks_.reserve(landmarks.size());
- for (auto& landmark : landmarks)
- landmarks_.emplace_back(landmark.begin(), landmark.end());
- witness_complex_ = new Euclidean_witness_complex<Dynamic_kernel>(landmarks_, witnesses);
- }
-
- ~Euclidean_witness_complex_interface() {
- delete witness_complex_;
- }
-
- void create_simplex_tree(Gudhi::Simplex_tree<>* simplex_tree, double max_alpha_square, std::size_t limit_dimension) {
- witness_complex_->create_complex(*simplex_tree, max_alpha_square, limit_dimension);
- simplex_tree->initialize_filtration();
- }
-
- void create_simplex_tree(Gudhi::Simplex_tree<>* simplex_tree, double max_alpha_square) {
- witness_complex_->create_complex(*simplex_tree, max_alpha_square);
- simplex_tree->initialize_filtration();
- }
-
- std::vector<double> get_point(unsigned vh) {
- std::vector<double> vd;
- if (vh < landmarks_.size()) {
- Point_d ph = witness_complex_->get_point(vh);
- for (auto coord = ph.cartesian_begin(); coord < ph.cartesian_end(); coord++)
- vd.push_back(*coord);
- }
- return vd;
- }
-
- private:
- std::vector<Point_d> landmarks_;
- Euclidean_witness_complex<Dynamic_kernel>* witness_complex_;
-};
-
-} // namespace witness_complex
-
-} // namespace Gudhi
-
-#endif // INCLUDE_EUCLIDEAN_WITNESS_COMPLEX_INTERFACE_H_
-
diff --git a/cython/include/Nerve_gic_interface.h b/cython/include/Nerve_gic_interface.h
deleted file mode 100644
index aa71e2a6..00000000
--- a/cython/include/Nerve_gic_interface.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2018 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_NERVE_GIC_INTERFACE_H_
-#define INCLUDE_NERVE_GIC_INTERFACE_H_
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/distance_functions.h>
-#include <gudhi/GIC.h>
-
-#include "Simplex_tree_interface.h"
-
-#include <iostream>
-#include <vector>
-#include <string>
-
-namespace Gudhi {
-
-namespace cover_complex {
-
-class Nerve_gic_interface : public Cover_complex<std::vector<double>> {
- public:
- void create_simplex_tree(Simplex_tree_interface<>* simplex_tree) {
- create_complex(*simplex_tree);
- simplex_tree->initialize_filtration();
- }
- void set_cover_from_Euclidean_Voronoi(int m) {
- set_cover_from_Voronoi(Gudhi::Euclidean_distance(), m);
- }
- double set_graph_from_automatic_euclidean_rips(int N) {
- return set_graph_from_automatic_rips(Gudhi::Euclidean_distance(), N);
- }
- void set_graph_from_euclidean_rips(double threshold) {
- set_graph_from_rips(threshold, Gudhi::Euclidean_distance());
- }
-};
-
-} // namespace cover_complex
-
-} // namespace Gudhi
-
-#endif // INCLUDE_NERVE_GIC_INTERFACE_H_
diff --git a/cython/include/Off_reader_interface.h b/cython/include/Off_reader_interface.h
deleted file mode 100644
index f6b14f38..00000000
--- a/cython/include/Off_reader_interface.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_OFF_READER_INTERFACE_H_
-#define INCLUDE_OFF_READER_INTERFACE_H_
-
-#include <gudhi/Points_off_io.h>
-
-#include <iostream>
-#include <vector>
-#include <string>
-
-namespace Gudhi {
-
-std::vector<std::vector<double>> read_points_from_OFF_file(const std::string& off_file) {
- Gudhi::Points_off_reader<std::vector<double>> off_reader(off_file);
- return off_reader.get_point_cloud();
-}
-
-} // namespace Gudhi
-
-#endif // INCLUDE_OFF_READER_INTERFACE_H_
-
diff --git a/cython/include/Persistent_cohomology_interface.h b/cython/include/Persistent_cohomology_interface.h
deleted file mode 100644
index 8cf71a4e..00000000
--- a/cython/include/Persistent_cohomology_interface.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_PERSISTENT_COHOMOLOGY_INTERFACE_H_
-#define INCLUDE_PERSISTENT_COHOMOLOGY_INTERFACE_H_
-
-#include <gudhi/Persistent_cohomology.h>
-
-#include <vector>
-#include <utility> // for std::pair
-#include <algorithm> // for sort
-
-namespace Gudhi {
-
-template<class FilteredComplex>
-class Persistent_cohomology_interface : public
-persistent_cohomology::Persistent_cohomology<FilteredComplex, persistent_cohomology::Field_Zp> {
- private:
- /*
- * Compare two intervals by dimension, then by length.
- */
- struct cmp_intervals_by_dim_then_length {
- explicit cmp_intervals_by_dim_then_length(FilteredComplex * sc)
- : sc_(sc) { }
-
- template<typename Persistent_interval>
- bool operator()(const Persistent_interval & p1, const Persistent_interval & p2) {
- if (sc_->dimension(get < 0 > (p1)) == sc_->dimension(get < 0 > (p2)))
- return (sc_->filtration(get < 1 > (p1)) - sc_->filtration(get < 0 > (p1))
- > sc_->filtration(get < 1 > (p2)) - sc_->filtration(get < 0 > (p2)));
- else
- return (sc_->dimension(get < 0 > (p1)) > sc_->dimension(get < 0 > (p2)));
- }
- FilteredComplex* sc_;
- };
-
- public:
- Persistent_cohomology_interface(FilteredComplex* stptr)
- : persistent_cohomology::Persistent_cohomology<FilteredComplex, persistent_cohomology::Field_Zp>(*stptr),
- stptr_(stptr) { }
-
- Persistent_cohomology_interface(FilteredComplex* stptr, bool persistence_dim_max)
- : persistent_cohomology::Persistent_cohomology<FilteredComplex,
- persistent_cohomology::Field_Zp>(*stptr, persistence_dim_max),
- stptr_(stptr) { }
-
- std::vector<std::pair<int, std::pair<double, double>>> get_persistence(int homology_coeff_field,
- double min_persistence) {
- persistent_cohomology::Persistent_cohomology<FilteredComplex,
- persistent_cohomology::Field_Zp>::init_coefficients(homology_coeff_field);
- persistent_cohomology::Persistent_cohomology<FilteredComplex,
- persistent_cohomology::Field_Zp>::compute_persistent_cohomology(min_persistence);
-
- // Custom sort and output persistence
- cmp_intervals_by_dim_then_length cmp(stptr_);
- auto persistent_pairs = persistent_cohomology::Persistent_cohomology<FilteredComplex,
- persistent_cohomology::Field_Zp>::get_persistent_pairs();
- std::sort(std::begin(persistent_pairs), std::end(persistent_pairs), cmp);
-
- std::vector<std::pair<int, std::pair<double, double>>> persistence;
- for (auto pair : persistent_pairs) {
- persistence.push_back(std::make_pair(stptr_->dimension(get<0>(pair)),
- std::make_pair(stptr_->filtration(get<0>(pair)),
- stptr_->filtration(get<1>(pair)))));
- }
- return persistence;
- }
-
- std::vector<std::pair<std::vector<int>, std::vector<int>>> persistence_pairs() {
- auto pairs = persistent_cohomology::Persistent_cohomology<FilteredComplex,
- persistent_cohomology::Field_Zp>::get_persistent_pairs();
-
- std::vector<std::pair<std::vector<int>, std::vector<int>>> persistence_pairs;
- persistence_pairs.reserve(pairs.size());
- for (auto pair : pairs) {
- std::vector<int> birth;
- if (get<0>(pair) != stptr_->null_simplex()) {
- for (auto vertex : stptr_->simplex_vertex_range(get<0>(pair))) {
- birth.push_back(vertex);
- }
- }
-
- std::vector<int> death;
- if (get<1>(pair) != stptr_->null_simplex()) {
- for (auto vertex : stptr_->simplex_vertex_range(get<1>(pair))) {
- death.push_back(vertex);
- }
- }
-
- persistence_pairs.push_back(std::make_pair(birth, death));
- }
- return persistence_pairs;
- }
-
- private:
- // A copy
- FilteredComplex* stptr_;
-};
-
-} // namespace Gudhi
-
-#endif // INCLUDE_PERSISTENT_COHOMOLOGY_INTERFACE_H_
diff --git a/cython/include/Reader_utils_interface.h b/cython/include/Reader_utils_interface.h
deleted file mode 100644
index 5f7527d9..00000000
--- a/cython/include/Reader_utils_interface.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2017 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_READER_UTILS_INTERFACE_H_
-#define INCLUDE_READER_UTILS_INTERFACE_H_
-
-#include <gudhi/reader_utils.h>
-
-#include <iostream>
-#include <vector>
-#include <string>
-#include <map>
-#include <utility> // for pair<>
-
-namespace Gudhi {
-
-// Redefine functions with a different name in order the original name can be used in the Python version.
-std::vector<std::vector<double>> read_matrix_from_csv_file(const std::string& filename,
- const char separator = ';') {
- return read_lower_triangular_matrix_from_csv_file<double>(filename, separator);
-}
-
-inline std::map<int, std::vector<std::pair<double, double>>>
- read_pers_intervals_grouped_by_dimension(std::string const& filename) {
- return read_persistence_intervals_grouped_by_dimension(filename);
-}
-
-inline std::vector<std::pair<double, double>>
- read_pers_intervals_in_dimension(std::string const& filename, int only_this_dim = -1) {
- return read_persistence_intervals_in_dimension(filename, only_this_dim);
-}
-
-
-} // namespace Gudhi
-
-
-#endif // INCLUDE_READER_UTILS_INTERFACE_H_
diff --git a/cython/include/Rips_complex_interface.h b/cython/include/Rips_complex_interface.h
deleted file mode 100644
index 8b6c9c35..00000000
--- a/cython/include/Rips_complex_interface.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_RIPS_COMPLEX_INTERFACE_H_
-#define INCLUDE_RIPS_COMPLEX_INTERFACE_H_
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Rips_complex.h>
-#include <gudhi/distance_functions.h>
-
-#include "Simplex_tree_interface.h"
-
-#include <iostream>
-#include <vector>
-#include <utility> // std::pair
-#include <string>
-
-namespace Gudhi {
-
-namespace rips_complex {
-
-class Rips_complex_interface {
- using Point_d = std::vector<double>;
- using Distance_matrix = std::vector<std::vector<Simplex_tree_interface<>::Filtration_value>>;
-
- public:
- Rips_complex_interface(const std::vector<std::vector<double>>& values, double threshold, bool euclidean) {
- if (euclidean) {
- // Rips construction where values is a vector of points
- rips_complex_ = new Rips_complex<Simplex_tree_interface<>::Filtration_value>(values, threshold,
- Gudhi::Euclidean_distance());
- } else {
- // Rips construction where values is a distance matrix
- rips_complex_ = new Rips_complex<Simplex_tree_interface<>::Filtration_value>(values, threshold);
- }
- }
-
- ~Rips_complex_interface() {
- delete rips_complex_;
- }
-
- void create_simplex_tree(Simplex_tree_interface<>* simplex_tree, int dim_max) {
- rips_complex_->create_complex(*simplex_tree, dim_max);
- simplex_tree->initialize_filtration();
- }
-
- private:
- Rips_complex<Simplex_tree_interface<>::Filtration_value>* rips_complex_;
-};
-
-} // namespace rips_complex
-
-} // namespace Gudhi
-
-#endif // INCLUDE_RIPS_COMPLEX_INTERFACE_H_
diff --git a/cython/include/Simplex_tree_interface.h b/cython/include/Simplex_tree_interface.h
deleted file mode 100644
index 3481eeff..00000000
--- a/cython/include/Simplex_tree_interface.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_SIMPLEX_TREE_INTERFACE_H_
-#define INCLUDE_SIMPLEX_TREE_INTERFACE_H_
-
-#include <gudhi/graph_simplicial_complex.h>
-#include <gudhi/distance_functions.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Points_off_io.h>
-
-#include "Persistent_cohomology_interface.h"
-
-#include <iostream>
-#include <vector>
-#include <utility> // std::pair
-
-namespace Gudhi {
-
-template<typename SimplexTreeOptions = Simplex_tree_options_full_featured>
-class Simplex_tree_interface : public Simplex_tree<SimplexTreeOptions> {
- public:
- using Base = Simplex_tree<SimplexTreeOptions>;
- using Filtration_value = typename Base::Filtration_value;
- using Vertex_handle = typename Base::Vertex_handle;
- using Simplex_handle = typename Base::Simplex_handle;
- using Insertion_result = typename std::pair<Simplex_handle, bool>;
- using Simplex = std::vector<Vertex_handle>;
- using Complex = std::vector<std::pair<Simplex, Filtration_value>>;
-
- public:
- bool find_simplex(const Simplex& vh) {
- return (Base::find(vh) != Base::null_simplex());
- }
-
- void assign_simplex_filtration(const Simplex& vh, Filtration_value filtration) {
- Base::assign_filtration(Base::find(vh), filtration);
- }
-
- bool insert(const Simplex& simplex, Filtration_value filtration = 0) {
- Insertion_result result = Base::insert_simplex_and_subfaces(simplex, filtration);
- return (result.second);
- }
-
- // Do not interface this function, only used in alpha complex interface for complex creation
- bool insert_simplex(const Simplex& simplex, Filtration_value filtration = 0) {
- Insertion_result result = Base::insert_simplex(simplex, filtration);
- return (result.second);
- }
-
- // Do not interface this function, only used in interface for complex creation
- bool insert_simplex_and_subfaces(const Simplex& simplex, Filtration_value filtration = 0) {
- Insertion_result result = Base::insert_simplex_and_subfaces(simplex, filtration);
- return (result.second);
- }
-
- // Do not interface this function, only used in strong witness interface for complex creation
- bool insert_simplex(const std::vector<std::size_t>& simplex, Filtration_value filtration = 0) {
- Insertion_result result = Base::insert_simplex(simplex, filtration);
- return (result.second);
- }
-
- // Do not interface this function, only used in strong witness interface for complex creation
- bool insert_simplex_and_subfaces(const std::vector<std::size_t>& simplex, Filtration_value filtration = 0) {
- Insertion_result result = Base::insert_simplex_and_subfaces(simplex, filtration);
- return (result.second);
- }
-
- Filtration_value simplex_filtration(const Simplex& simplex) {
- return Base::filtration(Base::find(simplex));
- }
-
- void remove_maximal_simplex(const Simplex& simplex) {
- Base::remove_maximal_simplex(Base::find(simplex));
- Base::initialize_filtration();
- }
-
- Complex get_filtration() {
- Base::initialize_filtration();
- Complex filtrations;
- for (auto f_simplex : Base::filtration_simplex_range()) {
- Simplex simplex;
- for (auto vertex : Base::simplex_vertex_range(f_simplex)) {
- simplex.insert(simplex.begin(), vertex);
- }
- filtrations.push_back(std::make_pair(simplex, Base::filtration(f_simplex)));
- }
- return filtrations;
- }
-
- Complex get_skeleton(int dimension) {
- Complex skeletons;
- for (auto f_simplex : Base::skeleton_simplex_range(dimension)) {
- Simplex simplex;
- for (auto vertex : Base::simplex_vertex_range(f_simplex)) {
- simplex.insert(simplex.begin(), vertex);
- }
- skeletons.push_back(std::make_pair(simplex, Base::filtration(f_simplex)));
- }
- return skeletons;
- }
-
- Complex get_star(const Simplex& simplex) {
- Complex star;
- for (auto f_simplex : Base::star_simplex_range(Base::find(simplex))) {
- Simplex simplex_star;
- for (auto vertex : Base::simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- simplex_star.insert(simplex_star.begin(), vertex);
- }
- std::cout << std::endl;
- star.push_back(std::make_pair(simplex_star, Base::filtration(f_simplex)));
- }
- return star;
- }
-
- Complex get_cofaces(const Simplex& simplex, int dimension) {
- Complex cofaces;
- for (auto f_simplex : Base::cofaces_simplex_range(Base::find(simplex), dimension)) {
- Simplex simplex_coface;
- for (auto vertex : Base::simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- simplex_coface.insert(simplex_coface.begin(), vertex);
- }
- std::cout << std::endl;
- cofaces.push_back(std::make_pair(simplex_coface, Base::filtration(f_simplex)));
- }
- return cofaces;
- }
-
- void create_persistence(Gudhi::Persistent_cohomology_interface<Base>* pcoh) {
- Base::initialize_filtration();
- pcoh = new Gudhi::Persistent_cohomology_interface<Base>(*this);
- }
-};
-
-} // namespace Gudhi
-
-#endif // INCLUDE_SIMPLEX_TREE_INTERFACE_H_
diff --git a/cython/include/Strong_witness_complex_interface.h b/cython/include/Strong_witness_complex_interface.h
deleted file mode 100644
index 3c72c916..00000000
--- a/cython/include/Strong_witness_complex_interface.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_STRONG_WITNESS_COMPLEX_INTERFACE_H_
-#define INCLUDE_STRONG_WITNESS_COMPLEX_INTERFACE_H_
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Strong_witness_complex.h>
-
-#include "Simplex_tree_interface.h"
-
-#include <vector>
-#include <utility> // std::pair
-#include <iostream>
-#include <cstddef>
-
-namespace Gudhi {
-
-namespace witness_complex {
-
-class Strong_witness_complex_interface {
- using Nearest_landmark_range = std::vector<std::pair<std::size_t, double>>;
- using Nearest_landmark_table = std::vector<Nearest_landmark_range>;
-
- public:
- Strong_witness_complex_interface(const Nearest_landmark_table& nlt) {
- witness_complex_ = new Strong_witness_complex<Nearest_landmark_table>(nlt);
- }
-
- ~Strong_witness_complex_interface() {
- delete witness_complex_;
- }
-
- void create_simplex_tree(Simplex_tree_interface<>* simplex_tree, double max_alpha_square,
- std::size_t limit_dimension) {
- witness_complex_->create_complex(*simplex_tree, max_alpha_square, limit_dimension);
- simplex_tree->initialize_filtration();
- }
-
- void create_simplex_tree(Simplex_tree_interface<>* simplex_tree,
- double max_alpha_square) {
- witness_complex_->create_complex(*simplex_tree, max_alpha_square);
- simplex_tree->initialize_filtration();
- }
-
- private:
- Strong_witness_complex<Nearest_landmark_table>* witness_complex_;
-};
-
-} // namespace witness_complex
-
-} // namespace Gudhi
-
-#endif // INCLUDE_STRONG_WITNESS_COMPLEX_INTERFACE_H_
diff --git a/cython/include/Subsampling_interface.h b/cython/include/Subsampling_interface.h
deleted file mode 100644
index f990da0c..00000000
--- a/cython/include/Subsampling_interface.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_SUBSAMPLING_INTERFACE_H_
-#define INCLUDE_SUBSAMPLING_INTERFACE_H_
-
-#include <gudhi/choose_n_farthest_points.h>
-#include <gudhi/pick_n_random_points.h>
-#include <gudhi/sparsify_point_set.h>
-#include <gudhi/Points_off_io.h>
-#include <CGAL/Epick_d.h>
-
-#include <iostream>
-#include <vector>
-#include <string>
-
-namespace Gudhi {
-
-namespace subsampling {
-
-using Subsampling_dynamic_kernel = CGAL::Epick_d< CGAL::Dynamic_dimension_tag >;
-using Subsampling_point_d = Subsampling_dynamic_kernel::Point_d;
-using Subsampling_ft = Subsampling_dynamic_kernel::FT;
-
-// ------ choose_n_farthest_points ------
-std::vector<std::vector<double>> subsampling_n_farthest_points(const std::vector<std::vector<double>>& points,
- unsigned nb_points) {
- std::vector<std::vector<double>> landmarks;
- Subsampling_dynamic_kernel k;
- choose_n_farthest_points(k, points, nb_points, random_starting_point, std::back_inserter(landmarks));
-
- return landmarks;
-}
-
-std::vector<std::vector<double>> subsampling_n_farthest_points(const std::vector<std::vector<double>>& points,
- unsigned nb_points, unsigned starting_point) {
- std::vector<std::vector<double>> landmarks;
- Subsampling_dynamic_kernel k;
- choose_n_farthest_points(k, points, nb_points, starting_point, std::back_inserter(landmarks));
-
- return landmarks;
-}
-
-std::vector<std::vector<double>> subsampling_n_farthest_points_from_file(const std::string& off_file,
- unsigned nb_points) {
- Gudhi::Points_off_reader<std::vector<double>> off_reader(off_file);
- std::vector<std::vector<double>> points = off_reader.get_point_cloud();
- return subsampling_n_farthest_points(points, nb_points);
-}
-
-std::vector<std::vector<double>> subsampling_n_farthest_points_from_file(const std::string& off_file,
- unsigned nb_points, unsigned starting_point) {
- Gudhi::Points_off_reader<std::vector<double>> off_reader(off_file);
- std::vector<std::vector<double>> points = off_reader.get_point_cloud();
- return subsampling_n_farthest_points(points, nb_points, starting_point);
-}
-
-// ------ pick_n_random_points ------
-std::vector<std::vector<double>> subsampling_n_random_points(const std::vector<std::vector<double>>& points,
- unsigned nb_points) {
- std::vector<std::vector<double>> landmarks;
- pick_n_random_points(points, nb_points, std::back_inserter(landmarks));
-
- return landmarks;
-}
-
-std::vector<std::vector<double>> subsampling_n_random_points_from_file(const std::string& off_file,
- unsigned nb_points) {
- Gudhi::Points_off_reader<std::vector<double>> off_reader(off_file);
- std::vector<std::vector<double>> points = off_reader.get_point_cloud();
- return subsampling_n_random_points(points, nb_points);
-}
-
-// ------ sparsify_point_set ------
-std::vector<std::vector<double>> subsampling_sparsify_points(const std::vector<std::vector<double>>& points,
- double min_squared_dist) {
- std::vector<Subsampling_point_d> input, output;
- for (auto point : points)
- input.push_back(Subsampling_point_d(point.size(), point.begin(), point.end()));
- Subsampling_dynamic_kernel k;
- sparsify_point_set(k, input, min_squared_dist, std::back_inserter(output));
-
- std::vector<std::vector<double>> landmarks;
- for (auto point : output)
- landmarks.push_back(std::vector<double>(point.cartesian_begin(), point.cartesian_end()));
- return landmarks;
-}
-
-std::vector<std::vector<double>> subsampling_sparsify_points_from_file(const std::string& off_file,
- double min_squared_dist) {
- Gudhi::Points_off_reader<std::vector<double>> off_reader(off_file);
- std::vector<std::vector<double>> points = off_reader.get_point_cloud();
- return subsampling_sparsify_points(points, min_squared_dist);
-}
-
-} // namespace subsampling
-
-} // namespace Gudhi
-
-#endif // INCLUDE_SUBSAMPLING_INTERFACE_H_
diff --git a/cython/include/Tangential_complex_interface.h b/cython/include/Tangential_complex_interface.h
deleted file mode 100644
index 71418886..00000000
--- a/cython/include/Tangential_complex_interface.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_TANGENTIAL_COMPLEX_INTERFACE_H_
-#define INCLUDE_TANGENTIAL_COMPLEX_INTERFACE_H_
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Tangential_complex.h>
-#include <gudhi/Points_off_io.h>
-#include <CGAL/Epick_d.h>
-
-#include "Simplex_tree_interface.h"
-
-#include <vector>
-#include <utility> // std::pair
-#include <iostream>
-#include <string>
-
-namespace Gudhi {
-
-namespace tangential_complex {
-
-class Tangential_complex_interface {
- using Dynamic_kernel = CGAL::Epick_d< CGAL::Dynamic_dimension_tag >;
- using Point_d = Dynamic_kernel::Point_d;
- using TC = Tangential_complex<Dynamic_kernel, CGAL::Dynamic_dimension_tag, CGAL::Parallel_tag>;
-
- public:
- Tangential_complex_interface(int intrisic_dim, const std::vector<std::vector<double>>& points) {
- Dynamic_kernel k;
-
- tangential_complex_ = new TC(points, intrisic_dim, k);
- tangential_complex_->compute_tangential_complex();
- num_inconsistencies_ = tangential_complex_->number_of_inconsistent_simplices();
- }
-
- Tangential_complex_interface(int intrisic_dim, const std::string& off_file_name, bool from_file = true) {
- Dynamic_kernel k;
-
- Gudhi::Points_off_reader<Point_d> off_reader(off_file_name);
- std::vector<Point_d> points = off_reader.get_point_cloud();
-
- tangential_complex_ = new TC(points, intrisic_dim, k);
- tangential_complex_->compute_tangential_complex();
- num_inconsistencies_ = tangential_complex_->number_of_inconsistent_simplices();
- }
-
- ~Tangential_complex_interface() {
- delete tangential_complex_;
- }
-
- std::vector<double> get_point(unsigned vh) {
- std::vector<double> vd;
- if (vh < tangential_complex_->number_of_vertices()) {
- Point_d ph = tangential_complex_->get_point(vh);
- for (auto coord = ph.cartesian_begin(); coord < ph.cartesian_end(); coord++)
- vd.push_back(*coord);
- }
- return vd;
- }
-
- unsigned number_of_vertices() {
- return tangential_complex_->number_of_vertices();
- }
-
- unsigned number_of_simplices() {
- return num_inconsistencies_.num_simplices;
- }
-
- unsigned number_of_inconsistent_simplices() {
- return num_inconsistencies_.num_inconsistent_simplices;
- }
-
- unsigned number_of_inconsistent_stars() {
- return num_inconsistencies_.num_inconsistent_stars;
- }
-
- void fix_inconsistencies_using_perturbation(double max_perturb, double time_limit) {
- tangential_complex_->fix_inconsistencies_using_perturbation(max_perturb, time_limit);
- num_inconsistencies_ = tangential_complex_->number_of_inconsistent_simplices();
- }
-
- void create_simplex_tree(Simplex_tree<>* simplex_tree) {
- tangential_complex_->create_complex<Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_full_featured>>(*simplex_tree);
- simplex_tree->initialize_filtration();
- }
-
- private:
- TC* tangential_complex_;
- TC::Num_inconsistencies num_inconsistencies_;
-};
-
-} // namespace tangential_complex
-
-} // namespace Gudhi
-
-#endif // INCLUDE_TANGENTIAL_COMPLEX_INTERFACE_H_
diff --git a/cython/include/Witness_complex_interface.h b/cython/include/Witness_complex_interface.h
deleted file mode 100644
index 01b372e7..00000000
--- a/cython/include/Witness_complex_interface.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INCLUDE_WITNESS_COMPLEX_INTERFACE_H_
-#define INCLUDE_WITNESS_COMPLEX_INTERFACE_H_
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Witness_complex.h>
-
-#include "Simplex_tree_interface.h"
-
-#include <vector>
-#include <utility> // std::pair
-#include <iostream>
-#include <cstddef>
-
-namespace Gudhi {
-
-namespace witness_complex {
-
-class Witness_complex_interface {
- using Nearest_landmark_range = std::vector<std::pair<std::size_t, double>>;
- using Nearest_landmark_table = std::vector<Nearest_landmark_range>;
-
- public:
- Witness_complex_interface(const Nearest_landmark_table& nlt) {
- witness_complex_ = new Witness_complex<Nearest_landmark_table>(nlt);
- }
-
- ~Witness_complex_interface() {
- delete witness_complex_;
- }
-
- void create_simplex_tree(Simplex_tree_interface<>* simplex_tree, double max_alpha_square,
- std::size_t limit_dimension) {
- witness_complex_->create_complex(*simplex_tree, max_alpha_square, limit_dimension);
- simplex_tree->initialize_filtration();
- }
-
- void create_simplex_tree(Simplex_tree_interface<>* simplex_tree,
- double max_alpha_square) {
- witness_complex_->create_complex(*simplex_tree, max_alpha_square);
- simplex_tree->initialize_filtration();
- }
-
- private:
- Witness_complex<Nearest_landmark_table>* witness_complex_;
-};
-
-} // namespace witness_complex
-
-} // namespace Gudhi
-
-#endif // INCLUDE_WITNESS_COMPLEX_INTERFACE_H_
-
diff --git a/cython/setup.py.in b/cython/setup.py.in
deleted file mode 100644
index 4037aab6..00000000
--- a/cython/setup.py.in
+++ /dev/null
@@ -1,50 +0,0 @@
-from distutils.core import setup, Extension
-from Cython.Build import cythonize
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "GUDHI Editorial Board"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-gudhi = Extension(
- "gudhi",
- sources = ['@CMAKE_CURRENT_BINARY_DIR@/gudhi.pyx',],
- language = 'c++',
- extra_compile_args=[@GUDHI_CYTHON_EXTRA_COMPILE_ARGS@],
- extra_link_args=[@GUDHI_CYTHON_EXTRA_LINK_ARGS@],
- libraries=[@GUDHI_CYTHON_LIBRARIES@],
- library_dirs=[@GUDHI_CYTHON_LIBRARY_DIRS@],
- include_dirs = [@GUDHI_CYTHON_INCLUDE_DIRS@],
- runtime_library_dirs=[@GUDHI_CYTHON_RUNTIME_LIBRARY_DIRS@],
-)
-
-setup(
- name = 'gudhi',
- author='GUDHI Editorial Board',
- author_email='gudhi-contact@lists.gforge.inria.fr',
- version='@GUDHI_VERSION@',
- url='http://gudhi.gforge.inria.fr/',
- ext_modules = cythonize(gudhi),
- install_requires = ["cython",],
-)
diff --git a/cython/test/test_alpha_complex.py b/cython/test/test_alpha_complex.py
deleted file mode 100755
index e97f2530..00000000
--- a/cython/test/test_alpha_complex.py
+++ /dev/null
@@ -1,86 +0,0 @@
-from gudhi import AlphaComplex, SimplexTree
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-
-def test_empty_alpha():
- alpha_complex = AlphaComplex(points=[[0,0]])
- assert alpha_complex.__is_defined() == True
-
-def test_infinite_alpha():
- point_list = [[0, 0], [1, 0], [0, 1], [1, 1]]
- alpha_complex = AlphaComplex(points=point_list)
- assert alpha_complex.__is_defined() == True
-
- simplex_tree = alpha_complex.create_simplex_tree()
- assert simplex_tree.__is_persistence_defined() == False
-
- assert simplex_tree.num_simplices() == 11
- assert simplex_tree.num_vertices() == 4
-
- assert simplex_tree.get_filtration() == \
- [([0], 0.0), ([1], 0.0), ([2], 0.0), ([3], 0.0),
- ([0, 1], 0.25), ([0, 2], 0.25), ([1, 3], 0.25),
- ([2, 3], 0.25), ([1, 2], 0.5), ([0, 1, 2], 0.5),
- ([1, 2, 3], 0.5)]
- assert simplex_tree.get_star([0]) == \
- [([0], 0.0), ([0, 1], 0.25), ([0, 1, 2], 0.5),
- ([0, 2], 0.25)]
- assert simplex_tree.get_cofaces([0], 1) == \
- [([0, 1], 0.25), ([0, 2], 0.25)]
-
- assert point_list[0] == alpha_complex.get_point(0)
- assert point_list[1] == alpha_complex.get_point(1)
- assert point_list[2] == alpha_complex.get_point(2)
- assert point_list[3] == alpha_complex.get_point(3)
- assert alpha_complex.get_point(4) == []
- assert alpha_complex.get_point(125) == []
-
-def test_filtered_alpha():
- point_list = [[0, 0], [1, 0], [0, 1], [1, 1]]
- filtered_alpha = AlphaComplex(points=point_list)
-
- simplex_tree = filtered_alpha.create_simplex_tree(max_alpha_square=0.25)
-
- assert simplex_tree.num_simplices() == 8
- assert simplex_tree.num_vertices() == 4
-
- assert point_list[0] == filtered_alpha.get_point(0)
- assert point_list[1] == filtered_alpha.get_point(1)
- assert point_list[2] == filtered_alpha.get_point(2)
- assert point_list[3] == filtered_alpha.get_point(3)
- assert filtered_alpha.get_point(4) == []
- assert filtered_alpha.get_point(125) == []
-
- assert simplex_tree.get_filtration() == \
- [([0], 0.0), ([1], 0.0), ([2], 0.0), ([3], 0.0),
- ([0, 1], 0.25), ([0, 2], 0.25), ([1, 3], 0.25),
- ([2, 3], 0.25)]
- assert simplex_tree.get_star([0]) == \
- [([0], 0.0), ([0, 1], 0.25), ([0, 2], 0.25)]
- assert simplex_tree.get_cofaces([0], 1) == \
- [([0, 1], 0.25), ([0, 2], 0.25)]
diff --git a/cython/test/test_bottleneck_distance.py b/cython/test/test_bottleneck_distance.py
deleted file mode 100755
index 4eb5848f..00000000
--- a/cython/test/test_bottleneck_distance.py
+++ /dev/null
@@ -1,35 +0,0 @@
-import gudhi
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-
-def test_basic_bottleneck():
- diag1 = [[2.7, 3.7],[9.6, 14.],[34.2, 34.974], [3.,float('Inf')]]
- diag2 = [[2.8, 4.45],[9.5, 14.1],[3.2,float('Inf')]]
-
- assert(gudhi.bottleneck_distance(diag1, diag2, 0.1) == 0.8081763781405569)
- assert(gudhi.bottleneck_distance(diag1, diag2) == 0.75)
diff --git a/cython/test/test_cover_complex.py b/cython/test/test_cover_complex.py
deleted file mode 100755
index 58935264..00000000
--- a/cython/test/test_cover_complex.py
+++ /dev/null
@@ -1,92 +0,0 @@
-from gudhi import CoverComplex
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2018 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2018 Inria"
-__license__ = "GPL v3"
-
-
-def test_empty_constructor():
- # Try to create an empty CoverComplex
- cover = CoverComplex()
- assert cover.__is_defined() == True
-
-def test_non_existing_file_read():
- # Try to open a non existing file
- cover = CoverComplex()
- assert (cover.read_point_cloud('pouetpouettralala.toubiloubabdou') == False)
-
-def test_files_creation():
- # Create test file
- cloud_file = open('cloud', 'w')
- cloud_file.write('nOFF\n3\n3 0 0\n0 0 0\n2 1 0\n4 0 0')
- cloud_file.close()
- cover_file = open('cover', 'w')
- cover_file.write('1\n2\n3')
- cover_file.close()
- graph_file = open('graph', 'w')
- graph_file.write('0 1\n0 2\n1 2')
- graph_file.close()
-
-def test_nerve():
- nerve = CoverComplex()
- nerve.set_type('Nerve')
- assert (nerve.read_point_cloud('cloud') == True)
- nerve.set_color_from_coordinate()
- nerve.set_graph_from_file('graph')
- nerve.set_cover_from_file('cover')
- nerve.find_simplices()
- stree = nerve.create_simplex_tree()
-
- assert (stree.num_vertices() == 3)
- assert ((stree.num_simplices() - stree.num_vertices()) == 0)
- assert (stree.dimension() == 0)
-
-def test_graph_induced_complex():
- gic = CoverComplex()
- gic.set_type('GIC')
- assert (gic.read_point_cloud('cloud') == True)
- gic.set_color_from_coordinate()
- gic.set_graph_from_file('graph')
- gic.set_cover_from_file('cover')
- gic.find_simplices()
- stree = gic.create_simplex_tree()
-
- assert (stree.num_vertices() == 3)
- assert ((stree.num_simplices() - stree.num_vertices()) == 4)
- assert (stree.dimension() == 2)
-
-def test_voronoi_graph_induced_complex():
- gic = CoverComplex()
- gic.set_type('GIC')
- assert (gic.read_point_cloud('cloud') == True)
- gic.set_color_from_coordinate()
- gic.set_graph_from_file('graph')
- gic.set_cover_from_Voronoi(2)
- gic.find_simplices()
- stree = gic.create_simplex_tree()
-
- assert (stree.num_vertices() == 2)
- assert ((stree.num_simplices() - stree.num_vertices()) == 1)
- assert (stree.dimension() == 1)
diff --git a/cython/test/test_cubical_complex.py b/cython/test/test_cubical_complex.py
deleted file mode 100755
index 92e591e9..00000000
--- a/cython/test/test_cubical_complex.py
+++ /dev/null
@@ -1,97 +0,0 @@
-from gudhi import CubicalComplex
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-
-def test_empty_constructor():
- # Try to create an empty CubicalComplex
- cub = CubicalComplex()
- assert cub.__is_defined() == False
- assert cub.__is_persistence_defined() == False
-
-def test_non_existing_perseus_file_constructor():
- # Try to open a non existing file
- cub = CubicalComplex(perseus_file='pouetpouettralala.toubiloubabdou')
- assert cub.__is_defined() == False
- assert cub.__is_persistence_defined() == False
-
-def test_dimension_or_perseus_file_constructor():
- # Create test file
- test_file = open('CubicalOneSphere.txt', 'w')
- test_file.write('2\n3\n3\n0\n0\n0\n0\n100\n0\n0\n0\n0\n')
- test_file.close()
- # CubicalComplex can be constructed from dimensions and
- # top_dimensional_cells OR from a Perseus-style file name.
- cub = CubicalComplex(dimensions=[3, 3],
- top_dimensional_cells = [1,2,3,4,5,6,7,8,9],
- perseus_file='CubicalOneSphere.txt')
- assert cub.__is_defined() == False
- assert cub.__is_persistence_defined() == False
-
- cub = CubicalComplex(top_dimensional_cells = [1,2,3,4,5,6,7,8,9],
- perseus_file='CubicalOneSphere.txt')
- assert cub.__is_defined() == False
- assert cub.__is_persistence_defined() == False
-
- cub = CubicalComplex(dimensions=[3, 3],
- perseus_file='CubicalOneSphere.txt')
- assert cub.__is_defined() == False
- assert cub.__is_persistence_defined() == False
-
-def test_dimension_simple_constructor():
- cub = CubicalComplex(dimensions=[3, 3],
- top_dimensional_cells = [1,2,3,4,5,6,7,8,9])
- assert cub.__is_defined() == True
- assert cub.__is_persistence_defined() == False
- assert cub.persistence() == [(0, (1.0, float('inf')))]
- assert cub.__is_persistence_defined() == True
- assert cub.betti_numbers() == [1, 0, 0]
- assert cub.persistent_betti_numbers(0, 1000) == [0, 0, 0]
-
-def test_user_case_simple_constructor():
- cub = CubicalComplex(dimensions=[3, 3],
- top_dimensional_cells = [float('inf'), 0.,0.,0.,1.,0.,0.,0.,0.])
- assert cub.__is_defined() == True
- assert cub.__is_persistence_defined() == False
- assert cub.persistence() == [(1, (0.0, 1.0)), (0, (0.0, float('inf')))]
- assert cub.__is_persistence_defined() == True
- other_cub = CubicalComplex(dimensions=[3, 3],
- top_dimensional_cells = [1000., 0.,0.,0.,1.,0.,0.,0.,0.])
- assert other_cub.persistence() == [(1, (0.0, 1.0)), (0, (0.0, float('inf')))]
-
-def test_dimension_file_constructor():
- # Create test file
- test_file = open('CubicalOneSphere.txt', 'w')
- test_file.write('2\n3\n3\n0\n0\n0\n0\n100\n0\n0\n0\n0\n')
- test_file.close()
- cub = CubicalComplex(perseus_file='CubicalOneSphere.txt')
- assert cub.__is_defined() == True
- assert cub.__is_persistence_defined() == False
- assert cub.persistence() == [(1, (0.0, 100.0)), (0, (0.0, float('inf')))]
- assert cub.__is_persistence_defined() == True
- assert cub.betti_numbers() == [1, 0, 0]
- assert cub.persistent_betti_numbers(0, 1000) == [1, 0, 0]
diff --git a/cython/test/test_euclidean_witness_complex.py b/cython/test/test_euclidean_witness_complex.py
deleted file mode 100755
index 2f77210a..00000000
--- a/cython/test/test_euclidean_witness_complex.py
+++ /dev/null
@@ -1,71 +0,0 @@
-import gudhi
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-
-def test_empty_euclidean_witness_complex():
- euclidean_witness = gudhi.EuclideanWitnessComplex()
- assert euclidean_witness.__is_defined() == False
-
-def test_witness_complex():
- point_cloud = [[1.0, 1.0], [7.0, 0.0], [4.0, 6.0], [9.0, 6.0],
- [0.0, 14.0], [2.0, 19.0], [9.0, 17.0]]
- landmarks = [[1.0, 1.0], [7.0, 0.0], [4.0, 6.0]]
- euclidean_witness_complex = gudhi.EuclideanWitnessComplex(landmarks=landmarks, witnesses = point_cloud)
- simplex_tree = euclidean_witness_complex.create_simplex_tree(max_alpha_square=4.1)
-
- assert landmarks[0] == euclidean_witness_complex.get_point(0)
- assert landmarks[1] == euclidean_witness_complex.get_point(1)
- assert landmarks[2] == euclidean_witness_complex.get_point(2)
-
- assert simplex_tree.get_filtration() == [([0], 0.0), ([1], 0.0),
- ([0, 1], 0.0), ([2], 0.0), ([0, 2], 0.0), ([1, 2], 0.0),
- ([0, 1, 2], 0.0)]
-
-def test_empty_euclidean_strong_witness_complex():
- euclidean_strong_witness = gudhi.EuclideanStrongWitnessComplex()
- assert euclidean_strong_witness.__is_defined() == False
-
-def test_strong_witness_complex():
- point_cloud = [[1.0, 1.0], [7.0, 0.0], [4.0, 6.0], [9.0, 6.0],
- [0.0, 14.0], [2.0, 19.0], [9.0, 17.0]]
- landmarks = [[1.0, 1.0], [7.0, 0.0], [4.0, 6.0]]
- euclidean_strong_witness_complex = gudhi.EuclideanStrongWitnessComplex(landmarks=landmarks, witnesses = point_cloud)
- simplex_tree = euclidean_strong_witness_complex.create_simplex_tree(max_alpha_square=14.9)
-
- assert landmarks[0] == euclidean_strong_witness_complex.get_point(0)
- assert landmarks[1] == euclidean_strong_witness_complex.get_point(1)
- assert landmarks[2] == euclidean_strong_witness_complex.get_point(2)
-
- assert simplex_tree.get_filtration() == [([0], 0.0), ([1], 0.0), ([2], 0.0)]
-
- simplex_tree = euclidean_strong_witness_complex.create_simplex_tree(max_alpha_square=100.0)
-
- assert simplex_tree.get_filtration() == [([0], 0.0), ([1], 0.0),
- ([2], 0.0), ([1, 2], 15.0), ([0, 2], 34.0), ([0, 1], 37.0),
- ([0, 1, 2], 37.0)]
-
diff --git a/cython/test/test_reader_utils.py b/cython/test/test_reader_utils.py
deleted file mode 100755
index b240c84f..00000000
--- a/cython/test/test_reader_utils.py
+++ /dev/null
@@ -1,88 +0,0 @@
-import gudhi
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2017 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2017 Inria"
-__license__ = "GPL v3"
-
-
-def test_non_existing_csv_file():
- # Try to open a non existing file
- matrix = gudhi.read_lower_triangular_matrix_from_csv_file(csv_file='pouetpouettralala.toubiloubabdou')
- assert matrix == []
-
-def test_full_square_distance_matrix_csv_file():
- # Create test file
- test_file = open('full_square_distance_matrix.csv', 'w')
- test_file.write('0;1;2;3;\n1;0;4;5;\n2;4;0;6;\n3;5;6;0;')
- test_file.close()
- matrix = gudhi.read_lower_triangular_matrix_from_csv_file(csv_file="full_square_distance_matrix.csv")
- assert matrix == [[], [1.0], [2.0, 4.0], [3.0, 5.0, 6.0]]
-
-def test_lower_triangular_distance_matrix_csv_file():
- # Create test file
- test_file = open('lower_triangular_distance_matrix.csv', 'w')
- test_file.write('\n1,\n2,3,\n4,5,6,\n7,8,9,10,')
- test_file.close()
- matrix = gudhi.read_lower_triangular_matrix_from_csv_file(csv_file="lower_triangular_distance_matrix.csv", separator=",")
- assert matrix == [[], [1.0], [2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0, 10.0]]
-
-def test_non_existing_persistence_file():
- # Try to open a non existing file
- persistence = gudhi.read_persistence_intervals_grouped_by_dimension(persistence_file='pouetpouettralala.toubiloubabdou')
- assert persistence == []
- persistence = gudhi.read_persistence_intervals_in_dimension(persistence_file='pouetpouettralala.toubiloubabdou', only_this_dim=1)
- assert persistence == []
-
-def test_read_persistence_intervals_without_dimension():
- # Create test file
- test_file = open('persistence_intervals_without_dimension.pers', 'w')
- test_file.write('# Simple persistence diagram without dimension\n2.7 3.7\n9.6 14.\n34.2 34.974\n3. inf')
- test_file.close()
- persistence = gudhi.read_persistence_intervals_in_dimension(persistence_file='persistence_intervals_without_dimension.pers')
- assert persistence == [(2.7, 3.7), (9.6, 14.), (34.2, 34.974), (3., float('Inf'))]
- persistence = gudhi.read_persistence_intervals_in_dimension(persistence_file='persistence_intervals_without_dimension.pers', only_this_dim=0)
- assert persistence == []
- persistence = gudhi.read_persistence_intervals_in_dimension(persistence_file='persistence_intervals_without_dimension.pers', only_this_dim=1)
- assert persistence == []
- persistence = gudhi.read_persistence_intervals_grouped_by_dimension(persistence_file='persistence_intervals_without_dimension.pers')
- assert persistence == {-1: [(2.7, 3.7), (9.6, 14.0), (34.2, 34.974), (3.0, float('Inf'))]}
-
-def test_read_persistence_intervals_with_dimension():
- # Create test file
- test_file = open('persistence_intervals_with_dimension.pers', 'w')
- test_file.write('# Simple persistence diagram with dimension\n0 2.7 3.7\n1 9.6 14.\n3 34.2 34.974\n1 3. inf')
- test_file.close()
- persistence = gudhi.read_persistence_intervals_in_dimension(persistence_file='persistence_intervals_with_dimension.pers')
- assert persistence == [(2.7, 3.7), (9.6, 14.), (34.2, 34.974), (3., float('Inf'))]
- persistence = gudhi.read_persistence_intervals_in_dimension(persistence_file='persistence_intervals_with_dimension.pers', only_this_dim=0)
- assert persistence == [(2.7, 3.7)]
- persistence = gudhi.read_persistence_intervals_in_dimension(persistence_file='persistence_intervals_with_dimension.pers', only_this_dim=1)
- assert persistence == [(9.6, 14.), (3., float('Inf'))]
- persistence = gudhi.read_persistence_intervals_in_dimension(persistence_file='persistence_intervals_with_dimension.pers', only_this_dim=2)
- assert persistence == []
- persistence = gudhi.read_persistence_intervals_in_dimension(persistence_file='persistence_intervals_with_dimension.pers', only_this_dim=3)
- assert persistence == [(34.2, 34.974)]
- persistence = gudhi.read_persistence_intervals_grouped_by_dimension(persistence_file='persistence_intervals_with_dimension.pers')
- assert persistence == {0: [(2.7, 3.7)], 1: [(9.6, 14.0), (3.0, float('Inf'))], 3: [(34.2, 34.974)]}
diff --git a/cython/test/test_rips_complex.py b/cython/test/test_rips_complex.py
deleted file mode 100755
index c37b5400..00000000
--- a/cython/test/test_rips_complex.py
+++ /dev/null
@@ -1,111 +0,0 @@
-from gudhi import RipsComplex
-from math import sqrt
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-
-def test_empty_rips():
- rips_complex = RipsComplex()
- assert rips_complex.__is_defined() == True
-
-def test_rips_from_points():
- point_list = [[0, 0], [1, 0], [0, 1], [1, 1]]
- rips_complex = RipsComplex(points=point_list, max_edge_length=42)
-
- simplex_tree = rips_complex.create_simplex_tree(max_dimension=1)
-
- assert simplex_tree.__is_defined() == True
- assert simplex_tree.__is_persistence_defined() == False
-
- assert simplex_tree.num_simplices() == 10
- assert simplex_tree.num_vertices() == 4
-
- assert simplex_tree.get_filtration() == \
- [([0], 0.0), ([1], 0.0), ([2], 0.0), ([3], 0.0),
- ([0, 1], 1.0), ([0, 2], 1.0), ([1, 3], 1.0),
- ([2, 3], 1.0), ([1, 2], 1.4142135623730951),
- ([0, 3], 1.4142135623730951)]
- assert simplex_tree.get_star([0]) == \
- [([0], 0.0), ([0, 1], 1.0), ([0, 2], 1.0),
- ([0, 3], 1.4142135623730951)]
- assert simplex_tree.get_cofaces([0], 1) == \
- [([0, 1], 1.0), ([0, 2], 1.0),
- ([0, 3], 1.4142135623730951)]
-
-def test_filtered_rips_from_points():
- point_list = [[0, 0], [1, 0], [0, 1], [1, 1]]
- filtered_rips = RipsComplex(points=point_list, max_edge_length=1.0)
-
- simplex_tree = filtered_rips.create_simplex_tree(max_dimension=1)
-
- assert simplex_tree.__is_defined() == True
- assert simplex_tree.__is_persistence_defined() == False
-
- assert simplex_tree.num_simplices() == 8
- assert simplex_tree.num_vertices() == 4
-
-def test_rips_from_distance_matrix():
- distance_matrix = [[0],
- [1, 0],
- [1, sqrt(2), 0],
- [sqrt(2), 1, 1, 0]]
- rips_complex = RipsComplex(distance_matrix=distance_matrix, max_edge_length=42)
-
- simplex_tree = rips_complex.create_simplex_tree(max_dimension=1)
-
- assert simplex_tree.__is_defined() == True
- assert simplex_tree.__is_persistence_defined() == False
-
- assert simplex_tree.num_simplices() == 10
- assert simplex_tree.num_vertices() == 4
-
- assert simplex_tree.get_filtration() == \
- [([0], 0.0), ([1], 0.0), ([2], 0.0), ([3], 0.0),
- ([0, 1], 1.0), ([0, 2], 1.0), ([1, 3], 1.0),
- ([2, 3], 1.0), ([1, 2], 1.4142135623730951),
- ([0, 3], 1.4142135623730951)]
- assert simplex_tree.get_star([0]) == \
- [([0], 0.0), ([0, 1], 1.0), ([0, 2], 1.0),
- ([0, 3], 1.4142135623730951)]
- assert simplex_tree.get_cofaces([0], 1) == \
- [([0, 1], 1.0), ([0, 2], 1.0),
- ([0, 3], 1.4142135623730951)]
-
-def test_filtered_rips_from_distance_matrix():
- distance_matrix = [[0],
- [1, 0],
- [1, sqrt(2), 0],
- [sqrt(2), 1, 1, 0]]
- filtered_rips = RipsComplex(distance_matrix=distance_matrix, max_edge_length=1.0)
-
- simplex_tree = filtered_rips.create_simplex_tree(max_dimension=1)
-
- assert simplex_tree.__is_defined() == True
- assert simplex_tree.__is_persistence_defined() == False
-
- assert simplex_tree.num_simplices() == 8
- assert simplex_tree.num_vertices() == 4
diff --git a/cython/test/test_simplex_tree.py b/cython/test/test_simplex_tree.py
deleted file mode 100755
index cb701c9a..00000000
--- a/cython/test/test_simplex_tree.py
+++ /dev/null
@@ -1,207 +0,0 @@
-from gudhi import SimplexTree
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-
-def test_insertion():
- st = SimplexTree()
- assert st.__is_defined() == True
- assert st.__is_persistence_defined() == False
-
- # insert test
- assert st.insert([0, 1]) == True
-
- assert st.dimension() == 1
-
- assert st.insert([0, 1, 2], filtration=4.0) == True
-
- assert st.dimension() == 2
-
- assert st.num_simplices() == 7
- assert st.num_vertices() == 3
-
- # find test
- assert st.find([0, 1, 2]) == True
- assert st.find([0, 1]) == True
- assert st.find([0, 2]) == True
- assert st.find([0]) == True
- assert st.find([1]) == True
- assert st.find([2]) == True
- assert st.find([3]) == False
- assert st.find([0, 3]) == False
- assert st.find([1, 3]) == False
- assert st.find([2, 3]) == False
-
- # filtration test
- st.initialize_filtration()
- assert st.filtration([0, 1, 2]) == 4.0
- assert st.filtration([0, 2]) == 4.0
- assert st.filtration([1, 2]) == 4.0
- assert st.filtration([2]) == 4.0
- assert st.filtration([0, 1]) == 0.0
- assert st.filtration([0]) == 0.0
- assert st.filtration([1]) == 0.0
-
- # skeleton test
- assert st.get_skeleton(2) == \
- [([0, 1, 2], 4.0), ([0, 1], 0.0), ([0, 2], 4.0),
- ([0], 0.0), ([1, 2], 4.0), ([1], 0.0), ([2], 4.0)]
- assert st.get_skeleton(1) == \
- [([0, 1], 0.0), ([0, 2], 4.0), ([0], 0.0),
- ([1, 2], 4.0), ([1], 0.0), ([2], 4.0)]
- assert st.get_skeleton(0) == \
- [([0], 0.0), ([1], 0.0), ([2], 4.0)]
-
- # remove_maximal_simplex test
- assert st.get_cofaces([0, 1, 2], 1) == []
- st.remove_maximal_simplex([0, 1, 2])
- assert st.get_skeleton(2) == \
- [([0, 1], 0.0), ([0, 2], 4.0), ([0], 0.0),
- ([1, 2], 4.0), ([1], 0.0), ([2], 4.0)]
- assert st.find([0, 1, 2]) == False
- assert st.find([0, 1]) == True
- assert st.find([0, 2]) == True
- assert st.find([0]) == True
- assert st.find([1]) == True
- assert st.find([2]) == True
-
- st.initialize_filtration()
- assert st.persistence(persistence_dim_max = True) == [(1, (4.0, float('inf'))), (0, (0.0, float('inf')))]
- assert st.__is_persistence_defined() == True
-
- assert st.betti_numbers() == [1, 1]
- assert st.persistent_betti_numbers(-0.1, 10000.0) == [0, 0]
- assert st.persistent_betti_numbers(0.0, 10000.0) == [1, 0]
- assert st.persistent_betti_numbers(3.9, 10000.0) == [1, 0]
- assert st.persistent_betti_numbers(4.0, 10000.0) == [1, 1]
- assert st.persistent_betti_numbers(9999.0, 10000.0) == [1, 1]
-
-def test_expansion():
- st = SimplexTree()
- assert st.__is_defined() == True
- assert st.__is_persistence_defined() == False
-
- # insert test
- assert st.insert([3, 2], 0.1) == True
- assert st.insert([2, 0], 0.2) == True
- assert st.insert([1, 0], 0.3) == True
- assert st.insert([3, 1], 0.4) == True
- assert st.insert([2, 1], 0.5) == True
- assert st.insert([6, 5], 0.6) == True
- assert st.insert([4, 2], 0.7) == True
- assert st.insert([3, 0], 0.8) == True
- assert st.insert([6, 4], 0.9) == True
- assert st.insert([6, 3], 1.0) == True
-
- assert st.num_vertices() == 7
- assert st.num_simplices() == 17
- assert st.get_filtration() == [([2], 0.1), ([3], 0.1), ([2, 3], 0.1),
- ([0], 0.2), ([0, 2], 0.2), ([1], 0.3), ([0, 1], 0.3), ([1, 3], 0.4),
- ([1, 2], 0.5), ([5], 0.6), ([6], 0.6), ([5, 6], 0.6), ([4], 0.7),
- ([2, 4], 0.7), ([0, 3], 0.8), ([4, 6], 0.9), ([3, 6], 1.0)]
-
- st.expansion(3)
- assert st.num_vertices() == 7
- assert st.num_simplices() == 22
- st.initialize_filtration()
-
- assert st.get_filtration() == [([2], 0.1), ([3], 0.1), ([2, 3], 0.1),
- ([0], 0.2), ([0, 2], 0.2), ([1], 0.3), ([0, 1], 0.3), ([1, 3], 0.4),
- ([1, 2], 0.5), ([0, 1, 2], 0.5), ([1, 2, 3], 0.5), ([5], 0.6), ([6], 0.6),
- ([5, 6], 0.6), ([4], 0.7), ([2, 4], 0.7), ([0, 3], 0.8), ([0, 1, 3], 0.8),
- ([0, 2, 3], 0.8), ([0, 1, 2, 3], 0.8), ([4, 6], 0.9), ([3, 6], 1.0)]
-
-def test_automatic_dimension():
- st = SimplexTree()
- assert st.__is_defined() == True
- assert st.__is_persistence_defined() == False
-
- # insert test
- assert st.insert([0,1,3], filtration=0.5) == True
- assert st.insert([0,1,2], filtration=1.) == True
-
- assert st.num_vertices() == 4
- assert st.num_simplices() == 11
-
- assert st.dimension() == 2
- assert st.upper_bound_dimension() == 2
-
- assert st.prune_above_filtration(0.6) == True
- assert st.dimension() == 2
- assert st.upper_bound_dimension() == 2
-
- st.assign_filtration([0, 1, 3], 0.7)
- assert st.filtration([0, 1, 3]) == 0.7
-
- st.remove_maximal_simplex([0, 1, 3])
- assert st.upper_bound_dimension() == 2
- assert st.dimension() == 1
- assert st.upper_bound_dimension() == 1
-
-def test_make_filtration_non_decreasing():
- st = SimplexTree()
- assert st.__is_defined() == True
- assert st.__is_persistence_defined() == False
-
- # Inserted simplex:
- # 1
- # o
- # /X\
- # o---o---o---o
- # 2 0 3\X/4
- # o
- # 5
- assert st.insert([2, 1, 0], filtration=2.0) == True
- assert st.insert([3, 0], filtration=2.0) == True
- assert st.insert([3, 4, 5], filtration=2.0) == True
-
- assert st.make_filtration_non_decreasing() == False
-
- # Because of non decreasing property of simplex tree, { 0 } , { 1 } and
- # { 0, 1 } are going to be set from value 2.0 to 1.0
- st.insert([0, 1, 6, 7], filtration=1.0);
-
- assert st.make_filtration_non_decreasing() == False
-
- # Modify specific values to test make_filtration_non_decreasing
- st.assign_filtration([0,1,6,7], 0.8);
- st.assign_filtration([0,1,6], 0.9);
- st.assign_filtration([0,6], 0.6);
- st.assign_filtration([3,4,5], 1.2);
- st.assign_filtration([3,4], 1.1);
- st.assign_filtration([4,5], 1.99);
-
- assert st.make_filtration_non_decreasing() == True
-
- assert st.filtration([0,1,6,7]) == 1.
- assert st.filtration([0,1,6]) == 1.
- assert st.filtration([0,1]) == 1.
- assert st.filtration([0]) == 1.
- assert st.filtration([1]) == 1.
- assert st.filtration([3,4,5]) == 2.
- assert st.filtration([3,4]) == 2.
- assert st.filtration([4,5]) == 2.
diff --git a/cython/test/test_subsampling.py b/cython/test/test_subsampling.py
deleted file mode 100755
index 96906a6f..00000000
--- a/cython/test/test_subsampling.py
+++ /dev/null
@@ -1,133 +0,0 @@
-import gudhi
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-
-def test_write_off_file_for_tests():
- file = open("subsample.off", "w")
- file.write("nOFF\n")
- file.write("2 7 0 0\n")
- file.write("1.0 1.0\n")
- file.write("7.0 0.0\n")
- file.write("4.0 6.0\n")
- file.write("9.0 6.0\n")
- file.write("0.0 14.0\n")
- file.write("2.0 19.0\n")
- file.write("9.0 17.0\n")
- file.close()
-
-def test_simple_choose_n_farthest_points_with_a_starting_point():
- point_set = [[0,1], [0,0], [1,0], [1,1]]
- i = 0
- for point in point_set:
- # The iteration starts with the given starting point
- sub_set = gudhi.choose_n_farthest_points(points = point_set, nb_points = 1, starting_point = i)
- assert sub_set[0] == point_set[i]
- i = i + 1
-
- # The iteration finds then the farthest
- sub_set = gudhi.choose_n_farthest_points(points = point_set, nb_points = 2, starting_point = 1)
- assert sub_set[1] == point_set[3]
- sub_set = gudhi.choose_n_farthest_points(points = point_set, nb_points = 2, starting_point = 3)
- assert sub_set[1] == point_set[1]
- sub_set = gudhi.choose_n_farthest_points(points = point_set, nb_points = 2, starting_point = 0)
- assert sub_set[1] == point_set[2]
- sub_set = gudhi.choose_n_farthest_points(points = point_set, nb_points = 2, starting_point = 2)
- assert sub_set[1] == point_set[0]
-
- # Test the limits
- assert gudhi.choose_n_farthest_points(points = [], nb_points = 0, starting_point = 0) == []
- assert gudhi.choose_n_farthest_points(points = [], nb_points = 1, starting_point = 0) == []
- assert gudhi.choose_n_farthest_points(points = [], nb_points = 0, starting_point = 1) == []
- assert gudhi.choose_n_farthest_points(points = [], nb_points = 1, starting_point = 1) == []
-
- # From off file test
- for i in range (0, 7):
- assert len(gudhi.choose_n_farthest_points(off_file = 'subsample.off', nb_points = i, starting_point = i)) == i
-
-def test_simple_choose_n_farthest_points_randomed():
- point_set = [[0,1], [0,0], [1,0], [1,1]]
- # Test the limits
- assert gudhi.choose_n_farthest_points(points = [], nb_points = 0) == []
- assert gudhi.choose_n_farthest_points(points = [], nb_points = 1) == []
- assert gudhi.choose_n_farthest_points(points = point_set, nb_points = 0) == []
-
- # Go furter than point set on purpose
- for iter in range(1,10):
- sub_set = gudhi.choose_n_farthest_points(points = point_set, nb_points = iter)
- for sub in sub_set:
- found = False
- for point in point_set:
- if point == sub:
- found = True
- # Check each sub set point is existing in the point set
- assert found == True
-
- # From off file test
- for i in range (0, 7):
- assert len(gudhi.choose_n_farthest_points(off_file = 'subsample.off', nb_points = i)) == i
-
-def test_simple_pick_n_random_points():
- point_set = [[0,1], [0,0], [1,0], [1,1]]
- # Test the limits
- assert gudhi.pick_n_random_points(points = [], nb_points = 0) == []
- assert gudhi.pick_n_random_points(points = [], nb_points = 1) == []
- assert gudhi.pick_n_random_points(points = point_set, nb_points = 0) == []
-
- # Go furter than point set on purpose
- for iter in range(1,10):
- sub_set = gudhi.pick_n_random_points(points = point_set, nb_points = iter)
- print(5)
- for sub in sub_set:
- found = False
- for point in point_set:
- if point == sub:
- found = True
- # Check each sub set point is existing in the point set
- assert found == True
-
- # From off file test
- for i in range (0, 7):
- assert len(gudhi.pick_n_random_points(off_file = 'subsample.off', nb_points = i)) == i
-
-def test_simple_sparsify_points():
- point_set = [[0,1], [0,0], [1,0], [1,1]]
- # Test the limits
- # assert gudhi.sparsify_point_set(points = [], min_squared_dist = 0.0) == []
- # assert gudhi.sparsify_point_set(points = [], min_squared_dist = 10.0) == []
- assert gudhi.sparsify_point_set(points = point_set, min_squared_dist = 0.0) == point_set
- assert gudhi.sparsify_point_set(points = point_set, min_squared_dist = 1.0) == point_set
- assert gudhi.sparsify_point_set(points = point_set, min_squared_dist = 2.0) == [[0,1], [1,0]]
- assert gudhi.sparsify_point_set(points = point_set, min_squared_dist = 2.01) == [[0,1]]
-
- assert len(gudhi.sparsify_point_set(off_file = 'subsample.off', min_squared_dist = 0.0)) == 7
- assert len(gudhi.sparsify_point_set(off_file = 'subsample.off', min_squared_dist = 30.0)) == 5
- assert len(gudhi.sparsify_point_set(off_file = 'subsample.off', min_squared_dist = 40.0)) == 4
- assert len(gudhi.sparsify_point_set(off_file = 'subsample.off', min_squared_dist = 90.0)) == 3
- assert len(gudhi.sparsify_point_set(off_file = 'subsample.off', min_squared_dist = 100.0)) == 2
- assert len(gudhi.sparsify_point_set(off_file = 'subsample.off', min_squared_dist = 325.0)) == 2
- assert len(gudhi.sparsify_point_set(off_file = 'subsample.off', min_squared_dist = 325.01)) == 1
diff --git a/cython/test/test_tangential_complex.py b/cython/test/test_tangential_complex.py
deleted file mode 100755
index 5385a0d3..00000000
--- a/cython/test/test_tangential_complex.py
+++ /dev/null
@@ -1,52 +0,0 @@
-from gudhi import TangentialComplex, SimplexTree
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-
-def test_tangential():
- point_list = [[0.0, 0.0], [1.0, 0.0], [0.0, 1.0], [1.0, 1.0]]
- tc = TangentialComplex(intrisic_dim = 1, points=point_list)
- assert tc.__is_defined() == True
- assert tc.num_vertices() == 4
-
- st = tc.create_simplex_tree()
- assert st.__is_defined() == True
- assert st.__is_persistence_defined() == False
-
- assert st.num_simplices() == 6
- assert st.num_vertices() == 4
-
- assert st.get_filtration() == \
- [([0], 0.0), ([1], 0.0), ([2], 0.0), ([0, 2], 0.0), ([3], 0.0), ([1, 3], 0.0)]
- assert st.get_cofaces([0], 1) == [([0, 2], 0.0)]
-
- assert point_list[0] == tc.get_point(0)
- assert point_list[1] == tc.get_point(1)
- assert point_list[2] == tc.get_point(2)
- assert point_list[3] == tc.get_point(3)
- assert tc.get_point(4) == []
- assert tc.get_point(125) == []
diff --git a/cython/test/test_witness_complex.py b/cython/test/test_witness_complex.py
deleted file mode 100755
index bcbc521b..00000000
--- a/cython/test/test_witness_complex.py
+++ /dev/null
@@ -1,62 +0,0 @@
-from gudhi import WitnessComplex, StrongWitnessComplex, SimplexTree
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Vincent Rouvreau
-
- Copyright (C) 2016 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Vincent Rouvreau"
-__copyright__ = "Copyright (C) 2016 Inria"
-__license__ = "GPL v3"
-
-
-def test_empty_witness_complex():
- witness = WitnessComplex()
- assert witness.__is_defined() == False
-
-def test_witness_complex():
- nearest_landmark_table = [[[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]],
- [[1, 0], [2, 1], [3, 2], [4, 3], [0, 4]],
- [[2, 0], [3, 1], [4, 2], [0, 3], [1, 4]],
- [[3, 0], [4, 1], [0, 2], [1, 3], [2, 4]],
- [[4, 0], [0, 1], [1, 2], [2, 3], [3, 4]]]
-
- witness_complex = WitnessComplex(nearest_landmark_table=nearest_landmark_table)
- simplex_tree = witness_complex.create_simplex_tree(max_alpha_square=4.1)
- assert simplex_tree.num_vertices() == 5
- assert simplex_tree.num_simplices() == 31
- simplex_tree = witness_complex.create_simplex_tree(max_alpha_square=4.1, limit_dimension=2)
- assert simplex_tree.num_vertices() == 5
- assert simplex_tree.num_simplices() == 25
-
-def test_strong_witness_complex():
- nearest_landmark_table = [[[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]],
- [[1, 0], [2, 1], [3, 2], [4, 3], [0, 4]],
- [[2, 0], [3, 1], [4, 2], [0, 3], [1, 4]],
- [[3, 0], [4, 1], [0, 2], [1, 3], [2, 4]],
- [[4, 0], [0, 1], [1, 2], [2, 3], [3, 4]]]
-
- strong_witness_complex = StrongWitnessComplex(nearest_landmark_table=nearest_landmark_table)
- simplex_tree = strong_witness_complex.create_simplex_tree(max_alpha_square=4.1)
- assert simplex_tree.num_vertices() == 5
- assert simplex_tree.num_simplices() == 31
- simplex_tree = strong_witness_complex.create_simplex_tree(max_alpha_square=4.1, limit_dimension=2)
- assert simplex_tree.num_vertices() == 5
- assert simplex_tree.num_simplices() == 25
diff --git a/data/bitmap/2d_torus.txt b/data/bitmap/2d_torus.txt
deleted file mode 100644
index f8c45da0..00000000
--- a/data/bitmap/2d_torus.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-2
--3
--3
-0
-0
-0
-0
-10
-0
-0
-0
-0
diff --git a/data/bitmap/3d_torus.txt b/data/bitmap/3d_torus.txt
deleted file mode 100644
index 53ed8450..00000000
--- a/data/bitmap/3d_torus.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-3
--3
--3
--3
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-10
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
diff --git a/data/bitmap/CubicalOneSphere.txt b/data/bitmap/CubicalOneSphere.txt
deleted file mode 100644
index 5b2d8998..00000000
--- a/data/bitmap/CubicalOneSphere.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-2
-3
-3
-0
-0
-0
-0
-100
-0
-0
-0
-0
diff --git a/data/bitmap/CubicalTwoSphere.txt b/data/bitmap/CubicalTwoSphere.txt
deleted file mode 100644
index fb1f0e01..00000000
--- a/data/bitmap/CubicalTwoSphere.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-3
-3
-3
-3
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-100
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
diff --git a/data/bitmap/cubicalcomplexdoc.txt b/data/bitmap/cubicalcomplexdoc.txt
deleted file mode 100644
index a87ad775..00000000
--- a/data/bitmap/cubicalcomplexdoc.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-2
-3
-3
-1
-4
-6
-8
-20
-4
-7
-6
-5
diff --git a/data/bitmap/periodiccubicalcomplexdoc.txt b/data/bitmap/periodiccubicalcomplexdoc.txt
deleted file mode 100644
index e93cb2b3..00000000
--- a/data/bitmap/periodiccubicalcomplexdoc.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-2
--3
-3
-1
-4
-6
-8
-20
-4
-7
-6
-5
diff --git a/data/correlation_matrix/lower_triangular_correlation_matrix.csv b/data/correlation_matrix/lower_triangular_correlation_matrix.csv
deleted file mode 100644
index 99ad0b5d..00000000
--- a/data/correlation_matrix/lower_triangular_correlation_matrix.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-
-0.4090538938
-0.2182708406;0.5664245836
-0.9109757412;0.5234453492;0.4239008464
-0.2426856242;0.7178816327;0.4748826202;0.8254894051
-0.0908790566;0.9369574252;0.9760741671;0.5256838992;0.0653515265
diff --git a/data/distance_matrix/full_square_distance_matrix.csv b/data/distance_matrix/full_square_distance_matrix.csv
deleted file mode 100644
index 51512b03..00000000
--- a/data/distance_matrix/full_square_distance_matrix.csv
+++ /dev/null
@@ -1,7 +0,0 @@
-0;6.0827625303;5.8309518948;9.4339811321;13.0384048104;18.0277563773;17.88854382;
-6.0827625303;0;6.7082039325;6.3245553203;15.6524758425;19.6468827044;17.1172427686;
-5.8309518948;6.7082039325;0;5;8.94427191;13.152946438;12.0830459736;
-9.4339811321;6.3245553203;5;0;12.0415945788;14.7648230602;11;
-13.0384048104;15.6524758425;8.94427191;12.0415945788;0;5.3851648071;9.4868329805;
-18.0277563773;19.6468827044;13.152946438;14.7648230602;5.3851648071;0;7.2801098893;
-17.88854382;17.1172427686;12.0830459736;11;9.4868329805;7.2801098893;0; \ No newline at end of file
diff --git a/data/distance_matrix/lower_triangular_distance_matrix.csv b/data/distance_matrix/lower_triangular_distance_matrix.csv
deleted file mode 100644
index d8a4c0a3..00000000
--- a/data/distance_matrix/lower_triangular_distance_matrix.csv
+++ /dev/null
@@ -1,5 +0,0 @@
-
-1,
-2,3,
-4,5,6,
-7,8,9,10, \ No newline at end of file
diff --git a/data/filtered_simplicial_complex/Klein_bottle_complex.fsc b/data/filtered_simplicial_complex/Klein_bottle_complex.fsc
deleted file mode 100644
index 430e4f73..00000000
--- a/data/filtered_simplicial_complex/Klein_bottle_complex.fsc
+++ /dev/null
@@ -1,55 +0,0 @@
-0 0 0.00
-0 1 0.01
-0 2 0.02
-0 3 0.03
-0 4 0.04
-0 5 0.05
-0 6 0.06
-0 7 0.07
-0 8 0.08
-0 9 0.09
-1 1 2 1.12
-1 1 3 1.13
-1 1 4 1.14
-1 1 5 1.15
-1 1 6 1.16
-1 1 7 1.17
-1 1 8 1.18
-1 1 9 1.19
-1 2 3 1.23
-1 2 6 1.26
-1 2 8 1.28
-1 2 9 1.29
-1 3 6 1.36
-1 3 7 1.37
-1 3 8 1.38
-1 4 5 1.45
-1 4 6 1.46
-1 4 8 1.48
-1 5 6 1.56
-1 5 7 1.57
-1 5 8 1.58
-1 5 9 1.59
-1 6 7 1.67
-1 6 8 1.68
-1 6 9 1.69
-1 7 8 1.78
-1 8 9 1.89
-2 1 2 6 2.126
-2 1 2 9 2.129
-2 1 3 7 2.137
-2 1 3 8 2.138
-2 1 4 6 2.146
-2 1 4 8 2.148
-2 1 5 7 2.157
-2 1 5 9 2.159
-2 2 3 6 2.236
-2 2 3 8 2.238
-2 2 8 9 2.289
-2 3 6 7 2.267
-2 4 5 6 2.456
-2 4 5 8 2.458
-2 5 6 9 2.569
-2 5 7 8 2.578
-2 6 7 8 2.678
-2 6 8 9 2.689 \ No newline at end of file
diff --git a/data/persistence_diagram/first.pers b/data/persistence_diagram/first.pers
deleted file mode 100644
index 193c60ba..00000000
--- a/data/persistence_diagram/first.pers
+++ /dev/null
@@ -1,5 +0,0 @@
-# Simple persistence diagram
-2.7 3.7
-9.6 14.
-34.2 34.974
-3. inf \ No newline at end of file
diff --git a/data/persistence_diagram/rips_on_tore3D_1307.pers b/data/persistence_diagram/rips_on_tore3D_1307.pers
deleted file mode 100644
index f1bd600b..00000000
--- a/data/persistence_diagram/rips_on_tore3D_1307.pers
+++ /dev/null
@@ -1,2044 +0,0 @@
-2 0.138335 inf
-1 0.104347 inf
-1 0.0983494 inf
-0 0 inf
-0 0 0.122545
-0 0 0.121171
-0 0 0.120964
-0 0 0.12057
-0 0 0.12047
-0 0 0.120414
-0 0 0.119758
-0 0 0.119091
-0 0 0.118893
-0 0 0.118874
-0 0 0.118398
-0 0 0.118204
-0 0 0.118102
-0 0 0.118095
-0 0 0.117908
-0 0 0.117806
-0 0 0.117768
-0 0 0.117751
-0 0 0.117407
-0 0 0.117253
-0 0 0.116946
-0 0 0.116892
-0 0 0.116706
-0 0 0.116528
-0 0 0.116232
-0 0 0.115975
-0 0 0.115683
-0 0 0.115646
-0 0 0.115363
-0 0 0.115251
-0 0 0.115146
-0 0 0.115117
-0 0 0.115023
-0 0 0.114815
-0 0 0.114723
-0 0 0.1147
-0 0 0.114614
-0 0 0.114402
-0 0 0.114275
-0 0 0.114223
-0 0 0.113893
-0 0 0.113764
-0 0 0.113647
-0 0 0.113442
-0 0 0.113398
-0 0 0.113164
-0 0 0.113063
-0 0 0.113049
-0 0 0.112954
-0 0 0.112901
-0 0 0.112891
-0 0 0.112885
-0 0 0.112865
-0 0 0.112826
-0 0 0.112796
-0 0 0.112766
-0 0 0.112608
-0 0 0.112307
-0 0 0.112264
-0 0 0.112184
-0 0 0.112147
-0 0 0.112082
-0 0 0.111801
-0 0 0.111735
-0 0 0.111625
-0 0 0.111604
-0 0 0.111575
-0 0 0.111377
-0 0 0.111343
-0 0 0.111156
-0 0 0.111117
-0 0 0.11106
-0 0 0.111002
-0 0 0.110975
-0 0 0.110881
-0 0 0.11069
-0 0 0.110493
-0 0 0.110475
-0 0 0.110435
-0 0 0.110311
-0 0 0.110289
-0 0 0.110272
-0 0 0.110233
-0 0 0.110208
-0 0 0.110205
-0 0 0.110137
-0 0 0.110108
-0 0 0.109917
-0 0 0.109875
-0 0 0.109867
-0 0 0.109799
-0 0 0.109791
-0 0 0.109754
-0 0 0.109736
-0 0 0.109555
-0 0 0.109497
-0 0 0.109492
-0 0 0.109298
-0 0 0.109242
-0 0 0.109079
-0 0 0.10898
-0 0 0.108948
-0 0 0.108943
-0 0 0.108932
-0 0 0.10893
-0 0 0.108922
-0 0 0.108825
-0 0 0.108627
-0 0 0.10856
-0 0 0.108534
-0 0 0.108511
-0 0 0.108472
-0 0 0.108444
-0 0 0.10836
-0 0 0.108346
-0 0 0.108339
-0 0 0.108289
-0 0 0.108224
-0 0 0.108176
-0 0 0.108162
-0 0 0.108154
-0 0 0.108103
-0 0 0.10808
-0 0 0.108051
-0 0 0.10802
-0 0 0.107985
-0 0 0.107938
-0 0 0.107932
-0 0 0.107859
-0 0 0.107802
-0 0 0.107766
-0 0 0.107761
-0 0 0.107733
-0 0 0.107731
-0 0 0.107725
-0 0 0.107557
-0 0 0.107536
-0 0 0.107535
-0 0 0.107516
-0 0 0.107477
-0 0 0.107471
-0 0 0.107469
-0 0 0.107445
-0 0 0.10744
-0 0 0.107419
-0 0 0.107336
-0 0 0.107313
-0 0 0.107297
-0 0 0.107267
-0 0 0.10717
-0 0 0.107131
-0 0 0.107067
-0 0 0.107039
-0 0 0.10689
-0 0 0.106828
-0 0 0.106744
-0 0 0.10666
-0 0 0.106639
-0 0 0.106637
-0 0 0.106593
-0 0 0.106535
-0 0 0.106455
-0 0 0.106438
-0 0 0.106428
-0 0 0.106402
-0 0 0.106382
-0 0 0.106273
-0 0 0.106187
-0 0 0.106182
-0 0 0.105991
-0 0 0.105911
-0 0 0.105803
-0 0 0.105792
-0 0 0.105763
-0 0 0.105749
-0 0 0.105725
-0 0 0.105672
-0 0 0.105622
-0 0 0.105605
-0 0 0.105558
-0 0 0.105484
-0 0 0.105439
-0 0 0.105415
-0 0 0.105389
-0 0 0.105369
-0 0 0.105346
-0 0 0.105339
-0 0 0.1053
-0 0 0.105274
-0 0 0.105206
-0 0 0.105187
-0 0 0.105133
-0 0 0.105093
-0 0 0.105088
-0 0 0.105083
-0 0 0.10505
-0 0 0.105021
-0 0 0.105015
-0 0 0.104978
-0 0 0.10494
-0 0 0.104898
-0 0 0.104883
-0 0 0.104836
-0 0 0.104832
-0 0 0.104746
-0 0 0.104722
-0 0 0.104718
-0 0 0.104692
-0 0 0.10468
-0 0 0.104641
-0 0 0.104638
-0 0 0.104527
-0 0 0.104507
-0 0 0.104477
-0 0 0.10447
-0 0 0.104422
-0 0 0.104414
-0 0 0.104411
-0 0 0.10434
-0 0 0.104314
-0 0 0.104286
-0 0 0.104274
-0 0 0.10427
-0 0 0.104222
-0 0 0.104206
-0 0 0.104201
-0 0 0.104185
-0 0 0.10416
-0 0 0.10415
-0 0 0.104114
-0 0 0.104113
-0 0 0.104099
-0 0 0.103988
-0 0 0.103974
-0 0 0.103946
-0 0 0.103925
-0 0 0.103897
-0 0 0.103852
-0 0 0.103724
-0 0 0.103667
-0 0 0.103651
-0 0 0.103641
-0 0 0.103637
-0 0 0.103574
-0 0 0.103557
-0 0 0.103536
-0 0 0.103516
-0 0 0.103469
-0 0 0.103456
-0 0 0.10344
-0 0 0.103427
-0 0 0.103421
-0 0 0.103376
-0 0 0.103358
-0 0 0.103266
-0 0 0.103263
-0 0 0.103249
-0 0 0.103192
-0 0 0.103156
-0 0 0.103092
-0 0 0.103081
-0 0 0.103058
-0 0 0.102872
-0 0 0.102835
-0 0 0.102805
-0 0 0.102768
-0 0 0.102758
-0 0 0.102752
-0 0 0.102741
-0 0 0.102739
-0 0 0.102715
-0 0 0.102696
-0 0 0.10265
-0 0 0.102553
-0 0 0.102486
-0 0 0.102486
-0 0 0.102467
-0 0 0.102441
-0 0 0.102363
-0 0 0.102346
-0 0 0.102298
-0 0 0.102266
-0 0 0.102253
-0 0 0.102217
-0 0 0.102193
-0 0 0.102191
-0 0 0.10216
-0 0 0.102117
-0 0 0.102031
-0 0 0.102007
-0 0 0.101945
-0 0 0.101907
-0 0 0.101896
-0 0 0.101855
-0 0 0.101847
-0 0 0.101843
-0 0 0.101833
-0 0 0.101822
-0 0 0.101821
-0 0 0.101809
-0 0 0.101699
-0 0 0.10155
-0 0 0.101538
-0 0 0.101493
-0 0 0.101468
-0 0 0.101447
-0 0 0.101403
-0 0 0.101392
-0 0 0.101377
-0 0 0.101373
-0 0 0.101355
-0 0 0.101341
-0 0 0.101286
-0 0 0.10122
-0 0 0.101184
-0 0 0.101126
-0 0 0.101084
-0 0 0.101084
-0 0 0.101072
-0 0 0.100981
-0 0 0.100929
-0 0 0.100921
-0 0 0.100844
-0 0 0.100805
-0 0 0.100797
-0 0 0.100772
-0 0 0.100749
-0 0 0.100749
-0 0 0.100679
-0 0 0.10064
-0 0 0.100635
-0 0 0.100613
-0 0 0.100599
-0 0 0.10052
-0 0 0.100512
-0 0 0.100462
-0 0 0.100399
-0 0 0.100346
-0 0 0.100324
-0 0 0.100276
-0 0 0.100269
-0 0 0.10026
-0 0 0.100249
-0 0 0.100173
-0 0 0.100143
-0 0 0.100132
-0 0 0.100016
-0 0 0.100004
-0 0 0.0999805
-0 0 0.0999609
-0 0 0.0999313
-0 0 0.0999304
-0 0 0.0998899
-0 0 0.099884
-0 0 0.0998646
-0 0 0.0998279
-0 0 0.0997317
-0 0 0.0997064
-0 0 0.0996974
-0 0 0.0996745
-0 0 0.0996681
-0 0 0.0996236
-0 0 0.0995811
-0 0 0.099502
-0 0 0.0994573
-0 0 0.0993738
-0 0 0.0993579
-0 0 0.0993118
-0 0 0.0993115
-0 0 0.099307
-0 0 0.099301
-0 0 0.0992841
-0 0 0.0992493
-0 0 0.0992196
-0 0 0.0992118
-0 0 0.0992002
-0 0 0.0991901
-0 0 0.0991748
-0 0 0.0991699
-0 0 0.0991355
-0 0 0.099127
-0 0 0.0991122
-0 0 0.0991061
-0 0 0.0991026
-0 0 0.0990777
-0 0 0.0990577
-0 0 0.0990106
-0 0 0.0989608
-0 0 0.0989511
-0 0 0.0989433
-0 0 0.0989068
-0 0 0.0989061
-0 0 0.0989017
-0 0 0.0988136
-0 0 0.0987844
-0 0 0.0987155
-0 0 0.0987137
-0 0 0.0987027
-0 0 0.0986656
-0 0 0.0986589
-0 0 0.0985188
-0 0 0.0985127
-0 0 0.0984978
-0 0 0.0984845
-0 0 0.0984384
-0 0 0.0984361
-0 0 0.0984105
-0 0 0.0983949
-0 0 0.0983794
-0 0 0.0983099
-0 0 0.0983022
-0 0 0.0982802
-0 0 0.098261
-0 0 0.0982605
-0 0 0.0982498
-0 0 0.0982427
-0 0 0.0982118
-0 0 0.0981918
-0 0 0.0981537
-0 0 0.0981249
-0 0 0.0981003
-0 0 0.0980403
-0 0 0.0980052
-0 0 0.0979611
-0 0 0.0979211
-0 0 0.0979103
-0 0 0.0978291
-0 0 0.0977825
-0 0 0.0977791
-0 0 0.0977691
-0 0 0.0977678
-0 0 0.0977566
-0 0 0.0977458
-0 0 0.0977308
-0 0 0.0976979
-0 0 0.0976947
-0 0 0.0976571
-0 0 0.0976316
-0 0 0.097628
-0 0 0.0976173
-0 0 0.097617
-0 0 0.0976144
-0 0 0.097594
-0 0 0.0975906
-0 0 0.0975423
-0 0 0.0975044
-0 0 0.0974811
-0 0 0.0974776
-0 0 0.09746
-0 0 0.0974517
-0 0 0.0974161
-0 0 0.097411
-0 0 0.0974102
-0 0 0.0973811
-0 0 0.0973704
-0 0 0.097361
-0 0 0.0973594
-0 0 0.0973475
-0 0 0.097347
-0 0 0.0973354
-0 0 0.0972601
-0 0 0.0972476
-0 0 0.0972407
-0 0 0.097222
-0 0 0.0971562
-0 0 0.097079
-0 0 0.0970225
-0 0 0.0970099
-0 0 0.0969931
-0 0 0.0969318
-0 0 0.0968345
-0 0 0.096738
-0 0 0.0967069
-0 0 0.0966177
-0 0 0.0966121
-0 0 0.0966075
-0 0 0.0965669
-0 0 0.0965524
-0 0 0.0965467
-0 0 0.0965306
-0 0 0.0964752
-0 0 0.0964273
-0 0 0.0964214
-0 0 0.0964044
-0 0 0.0963393
-0 0 0.0962953
-0 0 0.0962618
-0 0 0.0962443
-0 0 0.0962396
-0 0 0.0962072
-0 0 0.0961728
-0 0 0.0961412
-0 0 0.0960799
-0 0 0.0960719
-0 0 0.0960553
-0 0 0.0959975
-0 0 0.0959885
-0 0 0.0959874
-0 0 0.0959671
-0 0 0.0959571
-0 0 0.0959249
-0 0 0.0958821
-0 0 0.0958582
-0 0 0.0958079
-0 0 0.095807
-0 0 0.0957505
-0 0 0.0957349
-0 0 0.095686
-0 0 0.0956663
-0 0 0.0956426
-0 0 0.0955825
-0 0 0.095551
-0 0 0.095509
-0 0 0.0954092
-0 0 0.0954003
-0 0 0.0953929
-0 0 0.0953089
-0 0 0.0953083
-0 0 0.0952959
-0 0 0.0952952
-0 0 0.0952427
-0 0 0.0951664
-0 0 0.0951311
-0 0 0.0951128
-0 0 0.0950144
-0 0 0.0949971
-0 0 0.0949351
-0 0 0.0948798
-0 0 0.0948727
-0 0 0.0947763
-0 0 0.0947681
-0 0 0.0947623
-0 0 0.0947217
-0 0 0.0946984
-0 0 0.0946978
-0 0 0.0946832
-0 0 0.0946395
-0 0 0.0946177
-0 0 0.0945759
-0 0 0.0945205
-0 0 0.0944995
-0 0 0.0944882
-0 0 0.0944571
-0 0 0.0944524
-0 0 0.0944435
-0 0 0.0944357
-0 0 0.0943982
-0 0 0.0943872
-0 0 0.094384
-0 0 0.0943324
-0 0 0.0942979
-0 0 0.094255
-0 0 0.0942476
-0 0 0.0942305
-0 0 0.0941642
-0 0 0.094092
-0 0 0.0940547
-0 0 0.0940288
-0 0 0.0939997
-0 0 0.09392
-0 0 0.0938552
-0 0 0.0937687
-0 0 0.0936632
-0 0 0.0936529
-0 0 0.0936278
-0 0 0.0936091
-0 0 0.093571
-0 0 0.0935084
-0 0 0.0935022
-0 0 0.0934953
-0 0 0.0934922
-0 0 0.0934884
-0 0 0.0933871
-0 0 0.093311
-0 0 0.0932948
-0 0 0.0932911
-0 0 0.0932711
-0 0 0.0932653
-0 0 0.0932573
-0 0 0.0932562
-0 0 0.0932506
-0 0 0.0932066
-0 0 0.0932042
-0 0 0.0931597
-0 0 0.0931377
-0 0 0.0931191
-0 0 0.0930766
-0 0 0.0930576
-0 0 0.0930453
-0 0 0.0930159
-0 0 0.0928905
-0 0 0.0928695
-0 0 0.0928598
-0 0 0.0928533
-0 0 0.0928206
-0 0 0.0926988
-0 0 0.0926135
-0 0 0.0925997
-0 0 0.0925371
-0 0 0.0924703
-0 0 0.0924285
-0 0 0.0924272
-0 0 0.0924161
-0 0 0.0924104
-0 0 0.0922615
-0 0 0.0922589
-0 0 0.0922246
-0 0 0.0922069
-0 0 0.0921781
-0 0 0.0921505
-0 0 0.0921288
-0 0 0.0921087
-0 0 0.092054
-0 0 0.0920027
-0 0 0.091992
-0 0 0.0919474
-0 0 0.0919331
-0 0 0.0918839
-0 0 0.0918463
-0 0 0.091819
-0 0 0.0918129
-0 0 0.0917888
-0 0 0.0917854
-0 0 0.0917808
-0 0 0.0917657
-0 0 0.0917037
-0 0 0.0916728
-0 0 0.09166
-0 0 0.0916551
-0 0 0.0916386
-0 0 0.0915873
-0 0 0.091561
-0 0 0.0915438
-0 0 0.0915334
-0 0 0.0914912
-0 0 0.09148
-0 0 0.0914736
-0 0 0.0914634
-0 0 0.0913736
-0 0 0.0913735
-0 0 0.0913423
-0 0 0.0912014
-0 0 0.0912006
-0 0 0.0911837
-0 0 0.0911558
-0 0 0.0911005
-0 0 0.0910993
-0 0 0.0910305
-0 0 0.0910083
-0 0 0.0910021
-0 0 0.0909993
-0 0 0.0909587
-0 0 0.0909123
-0 0 0.0909078
-0 0 0.0908981
-0 0 0.0908775
-0 0 0.0908673
-0 0 0.0907541
-0 0 0.0907067
-0 0 0.0906992
-0 0 0.090662
-0 0 0.0905038
-0 0 0.0904268
-0 0 0.0904089
-0 0 0.0903719
-0 0 0.0903532
-0 0 0.0902778
-0 0 0.090237
-0 0 0.0902248
-0 0 0.0901963
-0 0 0.090193
-0 0 0.090185
-0 0 0.0901586
-0 0 0.0901274
-0 0 0.0900876
-0 0 0.0900408
-0 0 0.0900098
-0 0 0.0900073
-0 0 0.0899733
-0 0 0.0899145
-0 0 0.0898825
-0 0 0.0898324
-0 0 0.0898248
-0 0 0.089792
-0 0 0.0897916
-0 0 0.089778
-0 0 0.0897022
-0 0 0.0896718
-0 0 0.0896671
-0 0 0.0895692
-0 0 0.0895243
-0 0 0.0895045
-0 0 0.0894882
-0 0 0.0894629
-0 0 0.0893629
-0 0 0.0893336
-0 0 0.0893309
-0 0 0.0893193
-0 0 0.0892099
-0 0 0.089175
-0 0 0.0891563
-0 0 0.0891518
-0 0 0.0890728
-0 0 0.0890717
-0 0 0.0890423
-0 0 0.0890158
-0 0 0.0890093
-0 0 0.0890021
-0 0 0.0889876
-0 0 0.0889287
-0 0 0.0889174
-0 0 0.0888924
-0 0 0.0888761
-0 0 0.0888682
-0 0 0.0887979
-0 0 0.0887824
-0 0 0.0887418
-0 0 0.0887001
-0 0 0.0886274
-0 0 0.0886194
-0 0 0.0886061
-0 0 0.0885183
-0 0 0.0885029
-0 0 0.0884997
-0 0 0.0884676
-0 0 0.0884379
-0 0 0.0884268
-0 0 0.0884101
-0 0 0.0883594
-0 0 0.0883318
-0 0 0.0883027
-0 0 0.0882989
-0 0 0.0882955
-0 0 0.088251
-0 0 0.0882503
-0 0 0.0881693
-0 0 0.0881399
-0 0 0.0881344
-0 0 0.088097
-0 0 0.0880887
-0 0 0.0880663
-0 0 0.0880612
-0 0 0.0880102
-0 0 0.0879131
-0 0 0.0878652
-0 0 0.08786
-0 0 0.087834
-0 0 0.0878146
-0 0 0.087757
-0 0 0.0877406
-0 0 0.0876805
-0 0 0.0876786
-0 0 0.0876403
-0 0 0.087596
-0 0 0.0875844
-0 0 0.0875718
-0 0 0.0875645
-0 0 0.087518
-0 0 0.0874942
-0 0 0.0874353
-0 0 0.0874336
-0 0 0.0873725
-0 0 0.087351
-0 0 0.087348
-0 0 0.0872871
-0 0 0.0872623
-0 0 0.0872584
-0 0 0.0872349
-0 0 0.0871851
-0 0 0.0871834
-0 0 0.0870855
-0 0 0.0870338
-0 0 0.0870283
-0 0 0.0869914
-0 0 0.0869755
-0 0 0.0869607
-0 0 0.0869219
-0 0 0.0869096
-0 0 0.0868956
-0 0 0.0868514
-0 0 0.0868374
-0 0 0.0868301
-0 0 0.0867937
-0 0 0.0867655
-0 0 0.0867603
-0 0 0.0867516
-0 0 0.0867123
-0 0 0.0866914
-0 0 0.0866306
-0 0 0.0866296
-0 0 0.0866279
-0 0 0.0866149
-0 0 0.0866046
-0 0 0.086589
-0 0 0.0865754
-0 0 0.0865427
-0 0 0.0865283
-0 0 0.0865053
-0 0 0.0864874
-0 0 0.0864538
-0 0 0.0864228
-0 0 0.0864194
-0 0 0.0863696
-0 0 0.0862914
-0 0 0.0862708
-0 0 0.0862707
-0 0 0.0862618
-0 0 0.0862079
-0 0 0.0861181
-0 0 0.0861139
-0 0 0.0860775
-0 0 0.0859588
-0 0 0.0858682
-0 0 0.0858302
-0 0 0.0858208
-0 0 0.085786
-0 0 0.0857713
-0 0 0.0857462
-0 0 0.0857051
-0 0 0.0855555
-0 0 0.0855326
-0 0 0.0854601
-0 0 0.0854086
-0 0 0.0853601
-0 0 0.0853515
-0 0 0.0853294
-0 0 0.0852582
-0 0 0.085249
-0 0 0.0851983
-0 0 0.0851962
-0 0 0.0851742
-0 0 0.0851614
-0 0 0.0851573
-0 0 0.0851292
-0 0 0.0850985
-0 0 0.0850658
-0 0 0.0850454
-0 0 0.0849863
-0 0 0.0849704
-0 0 0.0849174
-0 0 0.0849149
-0 0 0.084807
-0 0 0.0847976
-0 0 0.0847651
-0 0 0.0847603
-0 0 0.0847507
-0 0 0.084721
-0 0 0.0847015
-0 0 0.0846691
-0 0 0.0846272
-0 0 0.0846259
-0 0 0.084625
-0 0 0.0845387
-0 0 0.0845105
-0 0 0.0844777
-0 0 0.0844517
-0 0 0.0844504
-0 0 0.0844359
-0 0 0.0844267
-0 0 0.0843912
-0 0 0.0843866
-0 0 0.0843828
-0 0 0.0843443
-0 0 0.0843409
-0 0 0.0843398
-0 0 0.0843247
-0 0 0.0842665
-0 0 0.0842532
-0 0 0.0842054
-0 0 0.0841559
-0 0 0.0841412
-0 0 0.08408
-0 0 0.0840751
-0 0 0.0839919
-0 0 0.0839865
-0 0 0.0839348
-0 0 0.083926
-0 0 0.0839201
-0 0 0.0838728
-0 0 0.0838659
-0 0 0.083832
-0 0 0.0838253
-0 0 0.0838225
-0 0 0.08381
-0 0 0.0837678
-0 0 0.0837502
-0 0 0.0836721
-0 0 0.0834546
-0 0 0.083452
-0 0 0.0834329
-0 0 0.0834192
-0 0 0.0834107
-0 0 0.0833158
-0 0 0.0832953
-0 0 0.0832912
-0 0 0.0832852
-0 0 0.0832816
-0 0 0.0831875
-0 0 0.0831751
-0 0 0.0831381
-0 0 0.08313
-0 0 0.0830867
-0 0 0.0830303
-0 0 0.0830191
-0 0 0.0829953
-0 0 0.0829902
-0 0 0.082963
-0 0 0.0829545
-0 0 0.0829356
-0 0 0.0829183
-0 0 0.0829129
-0 0 0.082855
-0 0 0.0828445
-0 0 0.0828289
-0 0 0.0827917
-0 0 0.0827618
-0 0 0.0827603
-0 0 0.0826968
-0 0 0.0826829
-0 0 0.0826788
-0 0 0.0825669
-0 0 0.0825437
-0 0 0.0825384
-0 0 0.0825341
-0 0 0.0824971
-0 0 0.0824907
-0 0 0.0824755
-0 0 0.0824587
-0 0 0.0824499
-0 0 0.0823912
-0 0 0.0823653
-0 0 0.082329
-0 0 0.0822893
-0 0 0.0822666
-0 0 0.0822373
-0 0 0.0822316
-0 0 0.0822187
-0 0 0.0820697
-0 0 0.082068
-0 0 0.0820532
-0 0 0.0820261
-0 0 0.0820089
-0 0 0.0819164
-0 0 0.0818598
-0 0 0.0818388
-0 0 0.0818334
-0 0 0.0817903
-0 0 0.0817481
-0 0 0.0816978
-0 0 0.0816822
-0 0 0.0816791
-0 0 0.0816385
-0 0 0.0816314
-0 0 0.0816145
-0 0 0.0816071
-0 0 0.0816029
-0 0 0.0815479
-0 0 0.0815381
-0 0 0.0815247
-0 0 0.0815176
-0 0 0.0815082
-0 0 0.0814955
-0 0 0.081407
-0 0 0.0813536
-0 0 0.0812334
-0 0 0.0811714
-0 0 0.0811689
-0 0 0.0811418
-0 0 0.0811346
-0 0 0.0811328
-0 0 0.0811056
-0 0 0.0811001
-0 0 0.0810472
-0 0 0.0810287
-0 0 0.0810215
-0 0 0.0809856
-0 0 0.0809801
-0 0 0.0809611
-0 0 0.0808721
-0 0 0.0808622
-0 0 0.0808618
-0 0 0.0808543
-0 0 0.0807894
-0 0 0.0807893
-0 0 0.0807705
-0 0 0.080715
-0 0 0.0806896
-0 0 0.0805033
-0 0 0.0804637
-0 0 0.0803715
-0 0 0.0803676
-0 0 0.0803405
-0 0 0.08034
-0 0 0.0803392
-0 0 0.0803318
-0 0 0.0803184
-0 0 0.080315
-0 0 0.0803084
-0 0 0.0802989
-0 0 0.0802988
-0 0 0.080297
-0 0 0.0802781
-0 0 0.0802677
-0 0 0.0802418
-0 0 0.0802358
-0 0 0.0802204
-0 0 0.080121
-0 0 0.0800679
-0 0 0.0800673
-0 0 0.0800411
-0 0 0.0800223
-0 0 0.0799564
-0 0 0.0799555
-0 0 0.0799524
-0 0 0.0799261
-0 0 0.0799149
-0 0 0.0798384
-0 0 0.0798239
-0 0 0.0798187
-0 0 0.079787
-0 0 0.0796839
-0 0 0.0796206
-0 0 0.0795918
-0 0 0.0795738
-0 0 0.0795622
-0 0 0.0795417
-0 0 0.0795402
-0 0 0.07953
-0 0 0.07946
-0 0 0.0794184
-0 0 0.0793805
-0 0 0.0793321
-0 0 0.0791912
-0 0 0.0791848
-0 0 0.0791774
-0 0 0.0790722
-0 0 0.0790089
-0 0 0.0789809
-0 0 0.0789498
-0 0 0.0789257
-0 0 0.0788734
-0 0 0.0788599
-0 0 0.0787641
-0 0 0.0787246
-0 0 0.0785622
-0 0 0.0785047
-0 0 0.078495
-0 0 0.0784875
-0 0 0.0784244
-0 0 0.0784187
-0 0 0.0783668
-0 0 0.0783633
-0 0 0.0782278
-0 0 0.0781832
-0 0 0.0781777
-0 0 0.0781513
-0 0 0.0781258
-0 0 0.0780305
-0 0 0.0780201
-0 0 0.0780181
-0 0 0.0780073
-0 0 0.077985
-0 0 0.0779695
-0 0 0.077938
-0 0 0.0778787
-0 0 0.0778179
-0 0 0.0777929
-0 0 0.0777845
-0 0 0.0777642
-0 0 0.0776513
-0 0 0.0776244
-0 0 0.0776135
-0 0 0.0775219
-0 0 0.0774934
-0 0 0.0774764
-0 0 0.0774541
-0 0 0.0774391
-0 0 0.0774203
-0 0 0.0773458
-0 0 0.0773391
-0 0 0.0773344
-0 0 0.0773236
-0 0 0.0773215
-0 0 0.0771755
-0 0 0.0771752
-0 0 0.0771671
-0 0 0.0770662
-0 0 0.0770659
-0 0 0.0769936
-0 0 0.076986
-0 0 0.0768987
-0 0 0.0768589
-0 0 0.0768001
-0 0 0.0767999
-0 0 0.0767277
-0 0 0.07672
-0 0 0.0767033
-0 0 0.0766285
-0 0 0.0766201
-0 0 0.0765619
-0 0 0.07653
-0 0 0.0764597
-0 0 0.0764593
-0 0 0.0762673
-0 0 0.0761308
-0 0 0.0760972
-0 0 0.0760373
-0 0 0.0760352
-0 0 0.0760226
-0 0 0.0759521
-0 0 0.0758866
-0 0 0.0758453
-0 0 0.075843
-0 0 0.0757932
-0 0 0.0757831
-0 0 0.0755611
-0 0 0.0755108
-0 0 0.075429
-0 0 0.0754205
-0 0 0.0753804
-0 0 0.0753703
-0 0 0.0753166
-0 0 0.075056
-0 0 0.0750491
-0 0 0.075046
-0 0 0.0749483
-0 0 0.0749391
-0 0 0.074843
-0 0 0.0748208
-0 0 0.0748122
-0 0 0.0747848
-0 0 0.0747133
-0 0 0.0746998
-0 0 0.074675
-0 0 0.0746619
-0 0 0.0746273
-0 0 0.0746011
-0 0 0.0745912
-0 0 0.0744812
-0 0 0.0744204
-0 0 0.0743043
-0 0 0.0742461
-0 0 0.074126
-0 0 0.0740759
-0 0 0.0740404
-0 0 0.0740253
-0 0 0.0739941
-0 0 0.0739699
-0 0 0.0738437
-0 0 0.0737842
-0 0 0.0737689
-0 0 0.073745
-0 0 0.0737311
-0 0 0.0735169
-0 0 0.0734621
-0 0 0.0733397
-0 0 0.073219
-0 0 0.0732121
-0 0 0.0731369
-0 0 0.0730708
-0 0 0.072856
-0 0 0.0728459
-0 0 0.0728339
-0 0 0.0727474
-0 0 0.0727014
-0 0 0.0725563
-0 0 0.0725443
-0 0 0.0724734
-0 0 0.0724154
-0 0 0.0721943
-0 0 0.0720927
-0 0 0.071931
-0 0 0.0719287
-0 0 0.0717993
-0 0 0.0717989
-0 0 0.0716285
-0 0 0.0715618
-0 0 0.0714544
-0 0 0.0713816
-0 0 0.0713583
-0 0 0.0713392
-0 0 0.0712466
-0 0 0.0712151
-0 0 0.071201
-0 0 0.0710418
-0 0 0.0709326
-0 0 0.0708223
-0 0 0.0707306
-0 0 0.0706176
-0 0 0.0703058
-0 0 0.0702881
-0 0 0.0702202
-0 0 0.0701399
-0 0 0.0695755
-0 0 0.0695132
-0 0 0.0694435
-0 0 0.069298
-0 0 0.0692617
-0 0 0.069201
-0 0 0.0691416
-0 0 0.0691246
-0 0 0.0691224
-0 0 0.0689761
-0 0 0.0687513
-0 0 0.068751
-0 0 0.0684475
-0 0 0.0681675
-0 0 0.0680444
-0 0 0.067827
-0 0 0.0677432
-0 0 0.0676582
-0 0 0.0676575
-0 0 0.0674522
-0 0 0.0674039
-0 0 0.0673475
-0 0 0.067117
-0 0 0.0668301
-0 0 0.0667495
-0 0 0.0666906
-0 0 0.066585
-0 0 0.0665527
-0 0 0.0665475
-0 0 0.0663859
-0 0 0.0663762
-0 0 0.0659211
-0 0 0.065897
-0 0 0.0658765
-0 0 0.0658305
-0 0 0.065485
-0 0 0.0654654
-0 0 0.0654504
-0 0 0.0653854
-0 0 0.06519
-0 0 0.0651654
-0 0 0.0651053
-0 0 0.0651005
-0 0 0.0649342
-0 0 0.0647983
-0 0 0.0645611
-0 0 0.064503
-0 0 0.0643878
-0 0 0.0641541
-0 0 0.0640333
-0 0 0.0639737
-0 0 0.0637212
-0 0 0.0635186
-0 0 0.063326
-0 0 0.0632864
-0 0 0.0632523
-0 0 0.0631945
-0 0 0.0630431
-0 0 0.0630282
-0 0 0.0628496
-0 0 0.0628005
-0 0 0.0627994
-0 0 0.0624745
-0 0 0.062401
-0 0 0.0623043
-0 0 0.0622939
-0 0 0.0620624
-0 0 0.0619763
-0 0 0.0619092
-0 0 0.0617949
-0 0 0.0616653
-0 0 0.0613634
-0 0 0.0611641
-0 0 0.0611428
-0 0 0.0610917
-0 0 0.0609721
-0 0 0.0609721
-0 0 0.060968
-0 0 0.0608642
-0 0 0.0608431
-0 0 0.0607373
-0 0 0.0603037
-0 0 0.0602398
-0 0 0.060237
-0 0 0.0601804
-0 0 0.0596339
-0 0 0.0595326
-0 0 0.0590727
-0 0 0.0589673
-0 0 0.0588864
-0 0 0.058629
-0 0 0.0586267
-0 0 0.0586052
-0 0 0.058033
-0 0 0.0578023
-0 0 0.0577624
-0 0 0.0576869
-0 0 0.0576773
-0 0 0.0576394
-0 0 0.057415
-0 0 0.057225
-0 0 0.0567939
-0 0 0.0567896
-0 0 0.0564245
-0 0 0.0563586
-0 0 0.0561217
-0 0 0.0560577
-0 0 0.0559755
-0 0 0.0557566
-0 0 0.0556232
-0 0 0.055521
-0 0 0.0550926
-0 0 0.0543985
-1 0.0997444 0.137724
-1 0.0963675 0.134298
-1 0.0997164 0.136077
-1 0.0993225 0.134439
-1 0.100243 0.135175
-1 0.102608 0.137141
-1 0.0988401 0.132691
-1 0.103142 0.136828
-1 0.100554 0.134097
-1 0.099464 0.13294
-1 0.0868897 0.119904
-1 0.0986767 0.131216
-1 0.102063 0.134272
-1 0.101951 0.133649
-1 0.104507 0.136174
-1 0.104789 0.136318
-1 0.100679 0.131807
-1 0.0979544 0.128526
-1 0.0992865 0.12979
-1 0.10505 0.135444
-1 0.106493 0.13644
-1 0.104331 0.13427
-1 0.0887233 0.116997
-1 0.100333 0.128453
-1 0.103249 0.130847
-1 0.0928315 0.12026
-1 0.103681 0.131101
-1 0.102419 0.129772
-1 0.107467 0.134504
-1 0.106298 0.13332
-1 0.0863482 0.113056
-1 0.0876685 0.114328
-1 0.102973 0.129426
-1 0.105968 0.132336
-1 0.101557 0.127648
-1 0.103991 0.129943
-1 0.0896578 0.115598
-1 0.102713 0.128567
-1 0.0943757 0.119823
-1 0.107541 0.132986
-1 0.0940415 0.119416
-1 0.106706 0.131892
-1 0.102134 0.127276
-1 0.08196 0.107085
-1 0.0971671 0.122111
-1 0.105478 0.130109
-1 0.0868236 0.111189
-1 0.0946673 0.118694
-1 0.101082 0.125066
-1 0.104529 0.128397
-1 0.113264 0.137008
-1 0.093598 0.117279
-1 0.102309 0.125859
-1 0.11137 0.134915
-1 0.109647 0.133169
-1 0.0961717 0.119526
-1 0.0914649 0.11455
-1 0.104092 0.126992
-1 0.110014 0.13285
-1 0.0969412 0.119714
-1 0.096505 0.119274
-1 0.107733 0.130472
-1 0.105091 0.127774
-1 0.107621 0.130186
-1 0.101354 0.12387
-1 0.0972194 0.119734
-1 0.111868 0.134382
-1 0.103895 0.126399
-1 0.105818 0.128237
-1 0.093991 0.11639
-1 0.106408 0.128753
-1 0.103344 0.125641
-1 0.0985647 0.120776
-1 0.107818 0.130023
-1 0.105326 0.127497
-1 0.108424 0.130451
-1 0.104609 0.126592
-1 0.105401 0.127105
-1 0.108989 0.130636
-1 0.109277 0.130788
-1 0.109884 0.131386
-1 0.096265 0.117692
-1 0.0973152 0.118724
-1 0.0978033 0.11914
-1 0.105971 0.127172
-1 0.105206 0.126174
-1 0.103094 0.123862
-1 0.0930364 0.1137
-1 0.0912215 0.111759
-1 0.105776 0.126283
-1 0.109117 0.129577
-1 0.11185 0.132307
-1 0.103348 0.123757
-1 0.112671 0.132855
-1 0.0873389 0.10751
-1 0.113148 0.133301
-1 0.107831 0.127932
-1 0.0942185 0.114302
-1 0.105423 0.125481
-1 0.100447 0.120461
-1 0.11413 0.134098
-1 0.103867 0.123829
-1 0.109305 0.129215
-1 0.111781 0.131688
-1 0.115776 0.135588
-1 0.0866676 0.106473
-1 0.0820686 0.101833
-1 0.109769 0.129516
-1 0.109777 0.129457
-1 0.0969575 0.116617
-1 0.111919 0.131476
-1 0.0974989 0.117008
-1 0.112238 0.131725
-1 0.0996257 0.119081
-1 0.101161 0.120602
-1 0.0894888 0.108793
-1 0.105021 0.124292
-1 0.110994 0.13024
-1 0.11702 0.136226
-1 0.108008 0.127172
-1 0.109482 0.128451
-1 0.108245 0.127174
-1 0.0942135 0.11312
-1 0.0992471 0.118131
-1 0.106623 0.125504
-1 0.0871873 0.106063
-1 0.108132 0.126863
-1 0.0987099 0.117422
-1 0.105374 0.124068
-1 0.114406 0.133036
-1 0.0914967 0.109997
-1 0.106521 0.1249
-1 0.0955759 0.113921
-1 0.111101 0.129415
-1 0.105122 0.122988
-1 0.091267 0.10908
-1 0.110432 0.127976
-1 0.088384 0.105787
-1 0.112786 0.130153
-1 0.106171 0.123531
-1 0.11442 0.13177
-1 0.109894 0.127229
-1 0.0937333 0.111036
-1 0.106992 0.124248
-1 0.0969028 0.114151
-1 0.116183 0.133233
-1 0.111736 0.128771
-1 0.0993216 0.116354
-1 0.0918067 0.108784
-1 0.104158 0.121134
-1 0.121028 0.137945
-1 0.119786 0.13669
-1 0.101491 0.118338
-1 0.0900619 0.106861
-1 0.105091 0.121844
-1 0.110906 0.12756
-1 0.0942669 0.110777
-1 0.0936016 0.110107
-1 0.103974 0.120299
-1 0.0903266 0.106619
-1 0.109739 0.126022
-1 0.101771 0.117974
-1 0.113957 0.130135
-1 0.104949 0.121106
-1 0.113859 0.129981
-1 0.107266 0.123375
-1 0.106434 0.122441
-1 0.0825495 0.0985038
-1 0.0928646 0.108775
-1 0.10811 0.124013
-1 0.115498 0.131352
-1 0.0857711 0.101566
-1 0.109411 0.12513
-1 0.0992369 0.114868
-1 0.104979 0.120588
-1 0.0928687 0.108436
-1 0.115035 0.130513
-1 0.10634 0.121795
-1 0.0972824 0.112736
-1 0.10508 0.120494
-1 0.0983725 0.11376
-1 0.101863 0.117236
-1 0.108938 0.124301
-1 0.107762 0.123121
-1 0.107407 0.122532
-1 0.102095 0.11715
-1 0.0926056 0.107647
-1 0.102122 0.117157
-1 0.111668 0.126692
-1 0.118187 0.133023
-1 0.091849 0.106675
-1 0.0955763 0.110398
-1 0.0897714 0.104589
-1 0.10026 0.115026
-1 0.117548 0.132301
-1 0.102181 0.116898
-1 0.1039 0.118592
-1 0.111494 0.126118
-1 0.117851 0.132466
-1 0.102311 0.116874
-1 0.104558 0.11907
-1 0.0826206 0.0971206
-1 0.0983518 0.112851
-1 0.108266 0.122713
-1 0.117257 0.13169
-1 0.112625 0.127054
-1 0.102561 0.116956
-1 0.105435 0.119828
-1 0.105814 0.120097
-1 0.110893 0.125174
-1 0.106181 0.120423
-1 0.10824 0.122466
-1 0.0998914 0.114008
-1 0.111463 0.125547
-1 0.106653 0.120712
-1 0.114143 0.128187
-1 0.0987227 0.112686
-1 0.10959 0.123535
-1 0.0866352 0.100557
-1 0.112146 0.126068
-1 0.088279 0.102
-1 0.110376 0.124047
-1 0.101789 0.115338
-1 0.106953 0.120376
-1 0.102707 0.116075
-1 0.0993793 0.112687
-1 0.108878 0.122123
-1 0.120961 0.134152
-1 0.10885 0.122037
-1 0.10738 0.12056
-1 0.101432 0.114597
-1 0.112405 0.125556
-1 0.106813 0.119921
-1 0.112285 0.12529
-1 0.11012 0.123063
-1 0.107717 0.120611
-1 0.0897068 0.102559
-1 0.0987529 0.111589
-1 0.0884634 0.101236
-1 0.0911157 0.103871
-1 0.11179 0.124441
-1 0.119124 0.131689
-1 0.114039 0.126565
-1 0.099306 0.111821
-1 0.109672 0.122139
-1 0.0967874 0.109252
-1 0.110451 0.122915
-1 0.10042 0.112872
-1 0.109867 0.122175
-1 0.11559 0.127875
-1 0.0924112 0.104671
-1 0.109943 0.122122
-1 0.0834784 0.0956025
-1 0.094677 0.106789
-1 0.0944022 0.106494
-1 0.104009 0.116052
-1 0.115406 0.127413
-1 0.0997344 0.111634
-1 0.0834597 0.0953123
-1 0.100265 0.112109
-1 0.108783 0.120624
-1 0.102596 0.114393
-1 0.105933 0.117699
-1 0.0955911 0.10734
-1 0.0915704 0.103284
-1 0.106757 0.11847
-1 0.108034 0.119659
-1 0.107063 0.118624
-1 0.102709 0.114217
-1 0.114347 0.125851
-1 0.101592 0.113064
-1 0.10639 0.117794
-1 0.109961 0.12135
-1 0.106373 0.117724
-1 0.111847 0.123153
-1 0.109539 0.120825
-1 0.0937078 0.104977
-1 0.106527 0.117767
-1 0.115889 0.127068
-1 0.108483 0.119661
-1 0.113189 0.124325
-1 0.106832 0.11787
-1 0.0875251 0.0984842
-1 0.115665 0.126551
-1 0.0929162 0.103716
-1 0.103776 0.114372
-1 0.0975538 0.108061
-1 0.107443 0.117928
-1 0.108814 0.119261
-1 0.103151 0.11358
-1 0.0967477 0.107154
-1 0.104979 0.115384
-1 0.101284 0.111574
-1 0.104981 0.115252
-1 0.0866825 0.0968263
-1 0.112361 0.122466
-1 0.108466 0.118492
-1 0.0975612 0.107561
-1 0.104563 0.114561
-1 0.0854395 0.095418
-1 0.0931692 0.10309
-1 0.107751 0.117652
-1 0.109986 0.119829
-1 0.107501 0.117327
-1 0.104998 0.114782
-1 0.107751 0.117509
-1 0.10754 0.117241
-1 0.111665 0.121357
-1 0.111614 0.121288
-1 0.0872065 0.0968618
-1 0.115761 0.125399
-1 0.10581 0.115426
-1 0.0991297 0.108708
-1 0.104736 0.114301
-1 0.103519 0.112982
-1 0.118659 0.12812
-1 0.107261 0.116706
-1 0.110161 0.119539
-1 0.108064 0.11741
-1 0.107143 0.116483
-1 0.108131 0.117452
-1 0.116427 0.125679
-1 0.0961462 0.105394
-1 0.112569 0.121769
-1 0.0927918 0.101983
-1 0.109636 0.118819
-1 0.0955058 0.104585
-1 0.114088 0.12316
-1 0.111901 0.120969
-1 0.121982 0.131005
-1 0.110988 0.119947
-1 0.0783357 0.0872192
-1 0.120473 0.129355
-1 0.0921671 0.101035
-1 0.119236 0.128003
-1 0.099794 0.108554
-1 0.111357 0.120079
-1 0.11281 0.121516
-1 0.109016 0.117706
-1 0.0931245 0.101783
-1 0.0878912 0.0964983
-1 0.102065 0.110672
-1 0.114585 0.123166
-1 0.110329 0.118883
-1 0.113325 0.121811
-1 0.101143 0.109586
-1 0.119504 0.127904
-1 0.0955487 0.103878
-1 0.0911453 0.0994428
-1 0.120339 0.128623
-1 0.12142 0.129703
-1 0.086379 0.0945977
-1 0.121228 0.129444
-1 0.103027 0.111225
-1 0.113614 0.1218
-1 0.108909 0.116988
-1 0.110248 0.118274
-1 0.0849678 0.0929893
-1 0.113829 0.121818
-1 0.0936312 0.101612
-1 0.102472 0.110429
-1 0.0868612 0.0948107
-1 0.114083 0.121935
-1 0.107052 0.114866
-1 0.105241 0.113053
-1 0.107277 0.114788
-1 0.115088 0.122587
-1 0.0829082 0.0903731
-1 0.10558 0.113044
-1 0.11145 0.118882
-1 0.110181 0.117593
-1 0.114964 0.122358
-1 0.0853302 0.0927109
-1 0.108171 0.115549
-1 0.106645 0.114018
-1 0.103232 0.110597
-1 0.106894 0.114255
-1 0.10519 0.11254
-1 0.127885 0.135225
-1 0.103913 0.111224
-1 0.10035 0.107651
-1 0.110201 0.1175
-1 0.0962617 0.103558
-1 0.108197 0.115486
-1 0.111458 0.11871
-1 0.098521 0.105772
-1 0.122219 0.129425
-1 0.0893661 0.0965408
-1 0.107871 0.115033
-1 0.104818 0.11198
-1 0.114927 0.122087
-1 0.120229 0.127389
-1 0.123751 0.130863
-1 0.0867811 0.0938895
-1 0.108725 0.115806
-1 0.111298 0.118332
-1 0.116132 0.123053
-1 0.102178 0.109074
-1 0.114549 0.121432
-1 0.110523 0.117281
-1 0.117735 0.124481
-1 0.0884368 0.0950995
-1 0.107416 0.114045
-1 0.106531 0.113154
-1 0.103014 0.109636
-1 0.10813 0.114736
-1 0.11639 0.122984
-1 0.109105 0.115698
-1 0.093397 0.0999793
-1 0.115742 0.122324
-1 0.118376 0.124898
-1 0.101104 0.107606
-1 0.115044 0.121535
-1 0.113476 0.119883
-1 0.105748 0.112141
-1 0.109104 0.115492
-1 0.125917 0.132265
-1 0.111914 0.118232
-1 0.125883 0.132169
-1 0.121077 0.127362
-1 0.115773 0.122013
-1 0.104313 0.110543
-1 0.118365 0.124566
-1 0.102092 0.108248
-1 0.120337 0.126478
-1 0.114541 0.120675
-1 0.0992553 0.105374
-1 0.105628 0.111687
-1 0.0850423 0.0910966
-1 0.103692 0.109734
-1 0.120771 0.126797
-1 0.119856 0.125882
-1 0.102024 0.108023
-1 0.119626 0.125622
-1 0.104521 0.110516
-1 0.0915391 0.0974011
-1 0.114983 0.12084
-1 0.110716 0.11656
-1 0.106244 0.112004
-1 0.107854 0.1136
-1 0.0903226 0.0960447
-1 0.120372 0.126087
-1 0.10324 0.108948
-1 0.122694 0.128337
-1 0.1117 0.117306
-1 0.119211 0.124804
-1 0.110743 0.116312
-1 0.117496 0.123039
-1 0.113227 0.118763
-1 0.108715 0.114232
-1 0.107506 0.113022
-1 0.116576 0.122077
-1 0.112014 0.11751
-1 0.121067 0.126503
-1 0.10271 0.10807
-1 0.117238 0.122588
-1 0.112664 0.117961
-1 0.110963 0.116251
-1 0.121302 0.126577
-1 0.112077 0.117336
-1 0.095596 0.100812
-1 0.111411 0.116605
-1 0.0902511 0.0954238
-1 0.114381 0.119466
-1 0.0998193 0.104886
-1 0.0918736 0.0969192
-1 0.0884121 0.0934282
-1 0.110972 0.115973
-1 0.108334 0.113302
-1 0.102994 0.107957
-1 0.122498 0.127409
-1 0.113511 0.118395
-1 0.0906824 0.0955612
-1 0.0908176 0.0956598
-1 0.104894 0.109707
-1 0.116777 0.12158
-1 0.108034 0.112829
-1 0.119415 0.12418
-1 0.119605 0.124356
-1 0.11511 0.119826
-1 0.10408 0.108782
-1 0.0893248 0.0940033
-1 0.109139 0.113811
-1 0.0869492 0.0916174
-1 0.11488 0.119522
-1 0.108902 0.113507
-1 0.102023 0.106573
-1 0.106527 0.111071
-1 0.1117 0.116244
-1 0.108254 0.11277
-1 0.111407 0.115914
-1 0.0906087 0.0950758
-1 0.106504 0.11095
-1 0.123911 0.128263
-1 0.10015 0.10448
-1 0.100373 0.104665
-1 0.104751 0.109037
-1 0.114767 0.119022
-1 0.11427 0.118524
-1 0.0873467 0.091541
-1 0.120737 0.124923
-1 0.101735 0.105869
-1 0.117308 0.121437
-1 0.0949366 0.0990612
-1 0.110445 0.114566
-1 0.111496 0.115581
-1 0.107981 0.112018
-1 0.0836944 0.0877279
-1 0.0869282 0.0909341
-1 0.126548 0.13054
-1 0.119075 0.123055
-1 0.116128 0.120086
-1 0.101842 0.10579
-1 0.113183 0.117117
-1 0.118439 0.122358
-1 0.103742 0.107651
-1 0.115295 0.119183
-1 0.103151 0.107026
-1 0.102092 0.105948
-1 0.108527 0.112373
-1 0.0988934 0.102714
-1 0.105175 0.108975
-1 0.0900176 0.0937998
-1 0.124104 0.127877
-1 0.108098 0.111867
-1 0.0927389 0.0964599
-1 0.0950363 0.09874
-1 0.103675 0.107361
-1 0.106655 0.110301
-1 0.109679 0.113325
-1 0.115272 0.118888
-1 0.115989 0.119557
-1 0.121905 0.125397
-1 0.10312 0.106565
-1 0.108113 0.111554
-1 0.121869 0.125284
-1 0.102783 0.106188
-1 0.103888 0.107291
-1 0.115296 0.118678
-1 0.10563 0.108996
-1 0.106472 0.109814
-1 0.11275 0.116076
-1 0.0845606 0.0878851
-1 0.119448 0.122766
-1 0.104633 0.107941
-1 0.109935 0.113234
-1 0.112474 0.115747
-1 0.091723 0.0949822
-1 0.0844931 0.0877142
-1 0.103435 0.106632
-1 0.0991778 0.102339
-1 0.0920068 0.0951646
-1 0.112581 0.115727
-1 0.100722 0.10379
-1 0.0926894 0.0957161
-1 0.0988585 0.101883
-1 0.112133 0.115093
-1 0.100392 0.103342
-1 0.121192 0.124101
-1 0.127297 0.130205
-1 0.124283 0.127125
-1 0.118629 0.121461
-1 0.120033 0.122863
-1 0.106227 0.109042
-1 0.0877192 0.0905291
-1 0.121117 0.123921
-1 0.1073 0.110085
-1 0.102226 0.104966
-1 0.0913487 0.094036
-1 0.121988 0.124653
-1 0.111379 0.114023
-1 0.118327 0.120956
-1 0.127402 0.129993
-1 0.0865545 0.0891376
-1 0.109444 0.112021
-1 0.116611 0.119173
-1 0.0898924 0.092445
-1 0.104545 0.107074
-1 0.106897 0.109384
-1 0.121135 0.123621
-1 0.108985 0.111453
-1 0.118284 0.120727
-1 0.106249 0.108667
-1 0.12219 0.1246
-1 0.122067 0.124462
-1 0.124465 0.126835
-1 0.112932 0.1153
-1 0.11878 0.121147
-1 0.118673 0.121016
-1 0.125604 0.127906
-1 0.102935 0.105231
-1 0.095249 0.0975133
-1 0.120558 0.122822
-1 0.0989733 0.101209
-1 0.107301 0.10953
-1 0.0928034 0.0950099
-1 0.114216 0.11637
-1 0.118923 0.121075
-1 0.0865676 0.0887081
-1 0.111848 0.113959
-1 0.104268 0.106377
-1 0.120826 0.1229
-1 0.105936 0.108007
-1 0.118976 0.121027
-1 0.110054 0.112099
-1 0.123635 0.125677
-1 0.112406 0.114439
-1 0.11012 0.112134
-1 0.0884612 0.0904603
-1 0.111737 0.113728
-1 0.113357 0.115347
-1 0.108096 0.110081
-1 0.108259 0.110219
-1 0.128584 0.130535
-1 0.10709 0.109027
-1 0.100268 0.102179
-1 0.122237 0.124142
-1 0.100079 0.101982
-1 0.0967714 0.0986662
-1 0.113603 0.115487
-1 0.0912266 0.0930879
-1 0.117149 0.119006
-1 0.110169 0.112011
-1 0.109301 0.111132
-1 0.118604 0.120405
-1 0.117961 0.11976
-1 0.104397 0.106158
-1 0.118609 0.120336
-1 0.0832201 0.0849465
-1 0.0797153 0.0814197
-1 0.0990505 0.100753
-1 0.10596 0.107658
-1 0.0998188 0.101476
-1 0.105913 0.10757
-1 0.113531 0.115182
-1 0.0967926 0.098443
-1 0.0940843 0.0957039
-1 0.114661 0.116274
-1 0.087046 0.0886275
-1 0.0916777 0.0932535
-1 0.123024 0.124591
-1 0.0875995 0.089149
-1 0.110778 0.112327
-1 0.116115 0.117637
-1 0.128015 0.129522
-1 0.11174 0.113234
-1 0.0897331 0.0912275
-1 0.0941751 0.0956475
-1 0.108018 0.109483
-1 0.0974017 0.0988631
-1 0.0933664 0.0947723
-1 0.111466 0.11286
-1 0.11841 0.11978
-1 0.114989 0.116311
-1 0.120067 0.121385
-1 0.113528 0.114839
-1 0.104843 0.106117
-1 0.111298 0.112507
-1 0.0987946 0.100003
-1 0.116609 0.117793
-1 0.0907966 0.0919788
-1 0.116691 0.117873
-1 0.105971 0.107138
-1 0.108219 0.109383
-1 0.107818 0.108969
-1 0.110756 0.111896
-1 0.107855 0.108977
-1 0.111159 0.112271
-1 0.106634 0.107745
-1 0.104271 0.105379
-1 0.114413 0.115445
-1 0.114315 0.115337
-1 0.0967034 0.0977021
-1 0.113498 0.114496
-1 0.105644 0.106638
-1 0.123591 0.124579
-1 0.108805 0.109775
-1 0.108044 0.109001
-1 0.123861 0.124794
-1 0.110087 0.111007
-1 0.0955589 0.0964736
-1 0.102733 0.103612
-1 0.104046 0.104922
-1 0.0924699 0.0933413
-1 0.115285 0.116112
-1 0.0954201 0.09623
-1 0.0855219 0.0863159
-1 0.0967526 0.0975336
-1 0.105675 0.106446
-1 0.0900959 0.0908643
-1 0.105807 0.10657
-1 0.118205 0.118962
-1 0.117617 0.118373
-1 0.114137 0.114887
-1 0.114842 0.115581
-1 0.10114 0.101879
-1 0.103445 0.104161
-1 0.0991235 0.0998339
-1 0.0972796 0.0979348
-1 0.102682 0.103332
-1 0.0938035 0.0944286
-1 0.111262 0.11188
-1 0.111618 0.112153
-1 0.0997941 0.100297
-1 0.120843 0.121314
-1 0.114265 0.114734
-1 0.10137 0.101832
-1 0.108491 0.108953
-1 0.0991029 0.099559
-1 0.102937 0.10339
-1 0.118778 0.119221
-1 0.107189 0.107626
-1 0.101957 0.102357
-1 0.0924087 0.0928051
-1 0.101168 0.101555
-1 0.109878 0.110253
-1 0.101449 0.101791
-1 0.0965111 0.0968328
-1 0.0997832 0.100102
-1 0.116346 0.11663
-1 0.125517 0.125757
-1 0.125432 0.125671
-1 0.111594 0.111803
-1 0.10228 0.102465
-1 0.110192 0.110371
-1 0.0993469 0.0995118
-1 0.104171 0.104324
-1 0.0807541 0.0808958
-1 0.10346 0.103585
-1 0.127331 0.127396
-1 0.0945151 0.0945558
-1 0.104771 0.104801
-1 0.103878 0.103908
-1 0.11169 0.111695
diff --git a/data/persistence_diagram/second.pers b/data/persistence_diagram/second.pers
deleted file mode 100644
index 6292fde6..00000000
--- a/data/persistence_diagram/second.pers
+++ /dev/null
@@ -1,3 +0,0 @@
-2.8 4.45
-9.5 14.1
-3.2 inf \ No newline at end of file
diff --git a/data/points/Kl.off b/data/points/Kl.off
deleted file mode 100644
index 8930a321..00000000
--- a/data/points/Kl.off
+++ /dev/null
@@ -1,10002 +0,0 @@
-nOFF
-5 10000 0 0
-0.5 0 0 0 1
-0.562791 0 0.125333 0 0.998027
-0.625333 0 0.24869 0 0.992115
-0.687381 0 0.368124 0 0.982287
-0.74869 0 0.481754 0 0.968583
-0.809017 0 0.587785 0 0.951057
-0.868124 0 0.684547 0 0.929777
-0.925779 0 0.770513 0 0.904827
-0.981754 0 0.844328 0 0.876307
-1.03583 0 0.904827 0 0.844328
-1.08779 0 0.951056 0 0.809017
-1.13742 0 0.982287 0 0.770513
-1.18455 0 0.998027 0 0.728969
-1.22897 0 0.998027 0 0.684547
-1.27051 0 0.982287 0 0.637424
-1.30902 0 0.951057 0 0.587785
-1.34433 0 0.904827 0 0.535827
-1.37631 0 0.844328 0 0.481754
-1.40483 0 0.770514 0 0.42578
-1.42978 0 0.684547 0 0.368125
-1.45106 0 0.587786 0 0.309017
-1.46858 0 0.481754 0 0.24869
-1.48229 0 0.368125 0 0.187382
-1.49211 0 0.24869 0 0.125334
-1.49803 0 0.125334 0 0.0627908
-1.5 0 6.5359e-07 0 3.26795e-07
-1.49803 0 -0.125333 0 -0.0627902
-1.49211 0 -0.248689 0 -0.125333
-1.48229 0 -0.368124 0 -0.187381
-1.46858 0 -0.481753 0 -0.24869
-1.45106 0 -0.587785 0 -0.309017
-1.42978 0 -0.684547 0 -0.368124
-1.40483 0 -0.770513 0 -0.425779
-1.37631 0 -0.844327 0 -0.481753
-1.34433 0 -0.904827 0 -0.535826
-1.30902 0 -0.951056 0 -0.587785
-1.27051 0 -0.982287 0 -0.637424
-1.22897 0 -0.998027 0 -0.684547
-1.18455 0 -0.998027 0 -0.728968
-1.13742 0 -0.982287 0 -0.770513
-1.08779 0 -0.951057 0 -0.809017
-1.03583 0 -0.904828 0 -0.844328
-0.981754 0 -0.844329 0 -0.876306
-0.92578 0 -0.770514 0 -0.904827
-0.868125 0 -0.684548 0 -0.929776
-0.809018 0 -0.587786 0 -0.951056
-0.74869 0 -0.481755 0 -0.968583
-0.687382 0 -0.368126 0 -0.982287
-0.625334 0 -0.248691 0 -0.992115
-0.562791 0 -0.125335 0 -0.998027
-0.500001 0 -1.30718e-06 0 -1
-0.43721 0 0.125332 0 -0.998027
-0.374667 0 0.248689 0 -0.992115
-0.312619 0 0.368123 0 -0.982287
-0.251311 0 0.481752 0 -0.968583
-0.190984 0 0.587784 0 -0.951057
-0.131876 0 0.684546 0 -0.929777
-0.0742214 0 0.770512 0 -0.904827
-0.018247 0 0.844327 0 -0.876307
--0.0358261 -0 0.904826 0 -0.844328
--0.0877846 0 0.951056 0 -0.809017
--0.137423 -0 0.982287 0 -0.770514
--0.184547 0 0.998027 0 -0.728969
--0.228968 0 0.998027 0 -0.684548
--0.270513 -0 0.982288 0 -0.637425
--0.309016 -0 0.951057 0 -0.587786
--0.344327 0 0.904828 0 -0.535828
--0.376306 0 0.844329 0 -0.481754
--0.404827 -0 0.770514 0 -0.42578
--0.429776 0 0.684548 0 -0.368125
--0.451056 -0 0.587787 0 -0.309018
--0.468583 0 0.481755 0 -0.248691
--0.482287 -0 0.368126 0 -0.187382
--0.492115 -0 0.248692 0 -0.125334
--0.498027 -0 0.125335 0 -0.0627915
--0.5 0 1.96077e-06 0 -9.80385e-07
--0.498027 -0 -0.125331 0 0.0627895
--0.492115 -0 -0.248688 0 0.125332
--0.482287 -0 -0.368123 0 0.18738
--0.468583 0 -0.481752 0 0.248689
--0.451057 0 -0.587784 0 0.309016
--0.429777 -0 -0.684546 0 0.368124
--0.404828 0 -0.770512 0 0.425778
--0.376307 0 -0.844327 0 0.481753
--0.344329 -0 -0.904826 0 0.535826
--0.309018 0 -0.951056 0 0.587784
--0.270514 -0 -0.982287 0 0.637423
--0.228969 0 -0.998027 0 0.684546
--0.184548 0 -0.998027 0 0.728968
--0.137425 0 -0.982288 0 0.770513
--0.0877862 -0 -0.951057 0 0.809016
--0.0358278 0 -0.904828 0 0.844327
-0.0182453 0 -0.844329 0 0.876306
-0.0742196 0 -0.770515 0 0.904827
-0.131874 0 -0.684549 0 0.929776
-0.190982 0 -0.587787 0 0.951056
-0.251309 0 -0.481756 0 0.968583
-0.312617 0 -0.368127 0 0.982287
-0.374665 0 -0.248692 0 0.992115
-0.437208 0 -0.125336 0 0.998027
-0.499013 0.0313953 0 0.0627905 1
-0.55772 0.0350888 0.127244 0.0627905 0.998027
-0.616241 0.0387706 0.252504 0.0627905 0.992115
-0.674392 0.0424292 0.373829 0.0627905 0.982287
-0.731988 0.0460527 0.489327 0.0627905 0.968583
-0.788842 0.0496297 0.597202 0.0627905 0.951057
-0.84477 0.0531484 0.695772 0.0627905 0.929777
-0.899588 0.0565973 0.783507 0.0627905 0.904827
-0.95311 0.0599646 0.859043 0.0627905 0.876307
-1.00515 0.0632389 0.921211 0.0627905 0.844328
-1.05553 0.0664086 0.96905 0.0627905 0.809017
-1.10407 0.0694623 1.00182 0.0627905 0.770513
-1.15059 0.0723887 1.01904 0.0627905 0.728969
-1.1949 0.0751766 1.02043 0.0627905 0.684547
-1.23683 0.0778149 1.00601 0.0627905 0.637424
-1.27622 0.080293 0.975999 0.0627905 0.587785
-1.31289 0.0826003 0.930902 0.0627905 0.535827
-1.34669 0.0847266 0.871437 0.0627905 0.481754
-1.37745 0.0866621 0.798555 0.0627905 0.42578
-1.40504 0.0883974 0.713415 0.0627905 0.368125
-1.4293 0.0899238 0.617369 0.0627905 0.309017
-1.45011 0.0912329 0.51194 0.0627905 0.24869
-1.46734 0.0923171 0.398798 0.0627905 0.187382
-1.48089 0.0931694 0.279731 0.0627905 0.125334
-1.49065 0.0937837 0.156621 0.0627905 0.0627908
-1.49655 0.0941548 0.0314114 0.0627905 3.26795e-07
-1.49851 0.0942781 -0.0939219 0.0627905 -0.0627902
-1.49648 0.0941504 -0.217403 0.0627905 -0.125333
-1.49042 0.0937692 -0.337088 0.0627905 -0.187381
-1.48031 0.0931332 -0.451091 0.0627905 -0.24869
-1.46615 0.0922424 -0.557621 0.0627905 -0.309017
-1.44796 0.0910977 -0.655004 0.0627905 -0.368124
-1.42576 0.0897015 -0.741711 0.0627905 -0.425779
-1.39963 0.0880571 -0.816385 0.0627905 -0.481753
-1.36962 0.0861695 -0.877859 0.0627905 -0.535826
-1.33585 0.0840446 -0.925175 0.0627905 -0.587785
-1.29842 0.0816897 -0.9576 0.0627905 -0.637424
-1.25747 0.0791134 -0.974637 0.0627905 -0.684547
-1.21316 0.0763255 -0.976032 0.0627905 -0.728968
-1.16566 0.0733371 -0.961781 0.0627905 -0.770513
-1.11516 0.0701602 -0.932125 0.0627905 -0.809017
-1.06188 0.0668081 -0.88755 0.0627905 -0.844328
-1.00605 0.0632952 -0.82878 0.0627905 -0.876306
-0.947898 0.0596367 -0.75676 0.0627905 -0.904827
-0.88769 0.0558487 -0.672647 0.0627905 -0.929776
-0.825695 0.0519483 -0.57779 0.0627905 -0.951056
-0.762193 0.0479531 -0.473705 0.0627905 -0.968583
-0.697474 0.0438813 -0.362058 0.0627905 -0.982287
-0.631834 0.0397516 -0.244632 0.0627905 -0.992115
-0.565579 0.0355832 -0.1233 0.0627905 -0.998027
-0.499014 0.0313953 -1.286e-06 0.0627905 -1
-0.432449 0.0272074 0.123298 0.0627905 -0.998027
-0.366194 0.023039 0.244629 0.0627905 -0.992115
-0.300555 0.0189093 0.362056 0.0627905 -0.982287
-0.235835 0.0148375 0.473703 0.0627905 -0.968583
-0.172333 0.0108423 0.577788 0.0627905 -0.951057
-0.110338 0.00694185 0.672645 0.0627905 -0.929777
-0.05013 0.00315391 0.756758 0.0627905 -0.904827
--0.00802039 -0.0005046 0.828778 0.0627905 -0.876307
--0.0638568 -0.00401753 0.887549 0.0627905 -0.844328
--0.117136 -0.00736959 0.932124 0.0627905 -0.809017
--0.167632 -0.0105465 0.96178 0.0627905 -0.770514
--0.215132 -0.013535 0.976032 0.0627905 -0.728969
--0.259444 -0.0163228 0.974637 0.0627905 -0.684548
--0.300393 -0.0188991 0.9576 0.0627905 -0.637425
--0.337823 -0.021254 0.925176 0.0627905 -0.587786
--0.371597 -0.0233789 0.87786 0.0627905 -0.535828
--0.401601 -0.0252666 0.816387 0.0627905 -0.481754
--0.427737 -0.0269109 0.741713 0.0627905 -0.42578
--0.44993 -0.0283072 0.655006 0.0627905 -0.368125
--0.468124 -0.0294519 0.557623 0.0627905 -0.309018
--0.482284 -0.0303427 0.451094 0.0627905 -0.248691
--0.492392 -0.0309787 0.33709 0.0627905 -0.187382
--0.498451 -0.0313599 0.217406 0.0627905 -0.125334
--0.500482 -0.0314876 0.0939245 0.0627905 -0.0627915
--0.498521 -0.0313643 -0.0314088 0.0627905 -9.80385e-07
--0.492624 -0.0309932 -0.156618 0.0627905 0.0627895
--0.482859 -0.0303789 -0.279728 0.0627905 0.125332
--0.469312 -0.0295266 -0.398795 0.0627905 0.18738
--0.452079 -0.0284424 -0.511938 0.0627905 0.248689
--0.431272 -0.0271333 -0.617367 0.0627905 0.309016
--0.407011 -0.025607 -0.713413 0.0627905 0.368124
--0.379428 -0.0238716 -0.798553 0.0627905 0.425778
--0.348664 -0.0219361 -0.871436 0.0627905 0.481753
--0.314868 -0.0198098 -0.930901 0.0627905 0.535826
--0.278195 -0.0175025 -0.975998 0.0627905 0.587784
--0.238807 -0.0150245 -1.006 0.0627905 0.637423
--0.196872 -0.0123861 -1.02043 0.0627905 0.684546
--0.15256 -0.00959824 -1.01904 0.0627905 0.728968
--0.106046 -0.00667187 -1.00182 0.0627905 0.770513
--0.057509 -0.00361816 -0.969051 0.0627905 0.809016
--0.00712798 -0.000448454 -0.921212 0.0627905 0.844327
-0.0449152 0.00282582 -0.859045 0.0627905 0.876306
-0.0984375 0.00619316 -0.783509 0.0627905 0.904827
-0.153255 0.00964199 -0.695774 0.0627905 0.929776
-0.209184 0.0131607 -0.597204 0.0627905 0.951056
-0.266038 0.0167377 -0.48933 0.0627905 0.968583
-0.323633 0.0203613 -0.373831 0.0627905 0.982287
-0.381784 0.0240198 -0.252507 0.0627905 0.992115
-0.440306 0.0277017 -0.127246 0.0627905 0.998027
-0.496057 0.0626666 0 0.125333 1
-0.550422 0.0695345 0.129029 0.125333 0.998027
-0.604665 0.0763869 0.256069 0.125333 0.992115
-0.658662 0.0832083 0.379164 0.125333 0.982287
-0.712288 0.0899829 0.496418 0.125333 0.968583
-0.765416 0.0966945 0.606029 0.125333 0.951057
-0.817914 0.103327 0.706311 0.125333 0.929777
-0.869646 0.109862 0.795728 0.125333 0.904827
-0.920471 0.116283 0.872911 0.125333 0.876307
-0.970243 0.12257 0.936686 0.125333 0.844328
-1.01881 0.128706 0.986087 0.125333 0.809017
-1.06602 0.134669 1.02037 0.125333 0.770513
-1.11169 0.14044 1.03904 0.125333 0.728969
-1.15568 0.145996 1.04183 0.125333 0.684547
-1.19779 0.151317 1.02873 0.125333 0.637424
-1.23786 0.156379 0.999979 0.125333 0.587785
-1.27571 0.161159 0.956058 0.125333 0.535827
-1.31114 0.165636 0.897686 0.125333 0.481754
-1.34398 0.169784 0.825808 0.125333 0.42578
-1.37404 0.173581 0.741578 0.125333 0.368125
-1.40114 0.177005 0.646343 0.125333 0.309017
-1.4251 0.180031 0.541621 0.125333 0.24869
-1.44574 0.18264 0.429077 0.125333 0.187382
-1.46291 0.184809 0.310495 0.125333 0.125334
-1.47645 0.186519 0.187753 0.125333 0.0627908
-1.48621 0.187752 0.0627912 0.125333 3.26795e-07
-1.49207 0.188492 -0.0624186 0.125333 -0.0627902
-1.4939 0.188723 -0.185903 0.125333 -0.125333
-1.49161 0.188434 -0.305719 0.125333 -0.187381
-1.48512 0.187614 -0.419985 0.125333 -0.24869
-1.47437 0.186256 -0.526907 0.125333 -0.309017
-1.45933 0.184356 -0.624815 0.125333 -0.368124
-1.43998 0.181911 -0.712178 0.125333 -0.425779
-1.41634 0.178925 -0.787638 0.125333 -0.481753
-1.38844 0.175401 -0.850025 0.125333 -0.535826
-1.35636 0.171348 -0.898381 0.125333 -0.587785
-1.32018 0.166777 -0.931968 0.125333 -0.637424
-1.28002 0.161705 -0.950285 0.125333 -0.684547
-1.23604 0.156148 -0.953074 0.125333 -0.728968
-1.1884 0.15013 -0.940325 0.125333 -0.770513
-1.1373 0.143675 -0.912273 0.125333 -0.809017
-1.08298 0.136812 -0.869397 0.125333 -0.844328
-1.02567 0.129572 -0.812413 0.125333 -0.876306
-0.965646 0.121989 -0.742259 0.125333 -0.904827
-0.903203 0.114101 -0.660082 0.125333 -0.929776
-0.83865 0.105946 -0.567223 0.125333 -0.951056
-0.772311 0.0975656 -0.465189 0.125333 -0.968583
-0.704527 0.0890025 -0.355633 0.125333 -0.982287
-0.63565 0.0803012 -0.240331 0.125333 -0.992115
-0.566038 0.0715072 -0.121144 0.125333 -0.998027
-0.496058 0.0626667 -1.26356e-06 0.125333 -1
-0.426078 0.0538261 0.121142 0.125333 -0.998027
-0.356466 0.0450322 0.240328 0.125333 -0.992115
-0.287589 0.0363309 0.355631 0.125333 -0.982287
-0.219805 0.0277678 0.465186 0.125333 -0.968583
-0.153466 0.0193873 0.567221 0.125333 -0.951057
-0.0889129 0.0112323 0.660081 0.125333 -0.929777
-0.0264703 0.00334398 0.742257 0.125333 -0.904827
--0.0335514 -0.00423853 0.812412 0.125333 -0.876307
--0.0908612 -0.0114784 0.869396 0.125333 -0.844328
--0.145188 -0.0183415 0.912272 0.125333 -0.809017
--0.196284 -0.0247964 0.940324 0.125333 -0.770514
--0.243924 -0.0308147 0.953074 0.125333 -0.728969
--0.287908 -0.0363712 0.950285 0.125333 -0.684548
--0.328063 -0.041444 0.931968 0.125333 -0.637425
--0.364242 -0.0460145 0.898382 0.125333 -0.587786
--0.396326 -0.0500676 0.850027 0.125333 -0.535828
--0.424221 -0.0535916 0.787639 0.125333 -0.481754
--0.447863 -0.0565782 0.712179 0.125333 -0.42578
--0.467211 -0.0590225 0.624817 0.125333 -0.368125
--0.482254 -0.0609228 0.52691 0.125333 -0.309018
--0.493003 -0.0622807 0.419987 0.125333 -0.248691
--0.499494 -0.0631007 0.305722 0.125333 -0.187382
--0.501784 -0.0633901 0.185906 0.125333 -0.125334
--0.499954 -0.0631588 0.0624212 0.125333 -0.0627915
--0.4941 -0.0624193 -0.0627885 0.125333 -9.80385e-07
--0.484338 -0.0611861 -0.187751 0.125333 0.0627895
--0.4708 -0.0594759 -0.310493 0.125333 0.125332
--0.453629 -0.0573067 -0.429075 0.125333 0.18738
--0.432981 -0.0546983 -0.541619 0.125333 0.248689
--0.409022 -0.0516715 -0.646341 0.125333 0.309016
--0.381924 -0.0482482 -0.741576 0.125333 0.368124
--0.351865 -0.0444508 -0.825806 0.125333 0.425778
--0.319027 -0.0403024 -0.897684 0.125333 0.481753
--0.283594 -0.0358262 -0.956056 0.125333 0.535826
--0.245751 -0.0310455 -0.999978 0.125333 0.587784
--0.20568 -0.0259835 -1.02873 0.125333 0.637423
--0.163564 -0.020663 -1.04183 0.125333 0.684546
--0.11958 -0.0151065 -1.03904 0.125333 0.728968
--0.0739014 -0.00933591 -1.02037 0.125333 0.770513
--0.0266968 -0.00337259 -0.986088 0.125333 0.809016
-0.0218703 0.00276286 -0.936687 0.125333 0.844327
-0.0716424 0.00905053 -0.872913 0.125333 0.876306
-0.122467 0.0154712 -0.795729 0.125333 0.904827
-0.174199 0.0220065 -0.706313 0.125333 0.929776
-0.226697 0.0286385 -0.606031 0.125333 0.951056
-0.279825 0.0353501 -0.496421 0.125333 0.968583
-0.333452 0.0421248 -0.379166 0.125333 0.982287
-0.387449 0.0489462 -0.256071 0.125333 0.992115
-0.441691 0.0557986 -0.129031 0.125333 0.998027
-0.491144 0.0936906 0 0.187381 1
-0.540962 0.103194 0.130686 0.187381 0.998027
-0.590721 0.112686 0.259381 0.187381 0.992115
-0.640359 0.122155 0.384125 0.187381 0.982287
-0.68981 0.131588 0.503019 0.187381 0.968583
-0.739004 0.140973 0.614258 0.187381 0.951057
-0.787862 0.150293 0.716153 0.187381 0.929777
-0.836298 0.159532 0.807163 0.187381 0.904827
-0.884213 0.168673 0.885918 0.187381 0.876307
-0.9315 0.177693 0.951237 0.187381 0.844328
-0.978038 0.186571 1.00215 0.187381 0.809017
-1.02369 0.19528 1.03791 0.187381 0.770513
-1.06832 0.203793 1.05802 0.187381 0.728969
-1.11176 0.21208 1.0622 0.187381 0.684547
-1.15385 0.220108 1.05044 0.187381 0.637424
-1.19439 0.227841 1.02297 0.187381 0.587785
-1.23319 0.235244 0.98027 0.187381 0.535827
-1.27006 0.242276 0.923049 0.187381 0.481754
-1.30477 0.248898 0.852246 0.187381 0.42578
-1.33712 0.255069 0.769009 0.187381 0.368125
-1.36687 0.260745 0.674679 0.187381 0.309017
-1.39381 0.265884 0.570768 0.187381 0.24869
-1.41772 0.270444 0.458933 0.187381 0.187382
-1.43837 0.274384 0.340953 0.187381 0.125334
-1.45556 0.277662 0.2187 0.187381 0.0627908
-1.46907 0.28024 0.0941089 0.187381 3.26795e-07
-1.47873 0.282082 -0.0308537 0.187381 -0.0627902
-1.48435 0.283155 -0.154219 0.187381 -0.125333
-1.48578 0.283428 -0.274049 0.187381 -0.187381
-1.48288 0.282875 -0.388463 0.187381 -0.24869
-1.47554 0.281475 -0.495674 0.187381 -0.309017
-1.46368 0.279212 -0.594009 0.187381 -0.368124
-1.44723 0.276073 -0.681941 0.187381 -0.425779
-1.42616 0.272054 -0.758113 0.187381 -0.481753
-1.40048 0.267156 -0.821353 0.187381 -0.535826
-1.37022 0.261384 -0.8707 0.187381 -0.587785
-1.33545 0.254751 -0.905416 0.187381 -0.637424
-1.29628 0.247279 -0.924995 0.187381 -0.684547
-1.25284 0.238992 -0.929176 0.187381 -0.728968
-1.2053 0.229924 -0.917941 0.187381 -0.770513
-1.15387 0.220113 -0.891521 0.187381 -0.809017
-1.09879 0.209605 -0.850386 0.187381 -0.844328
-1.04032 0.198451 -0.795244 0.187381 -0.876306
-0.978753 0.186707 -0.727025 0.187381 -0.904827
-0.914424 0.174436 -0.646866 0.187381 -0.929776
-0.847676 0.161703 -0.556096 0.187381 -0.951056
-0.778879 0.148579 -0.456213 0.187381 -0.968583
-0.70842 0.135138 -0.348858 0.187381 -0.982287
-0.6367 0.121457 -0.235792 0.187381 -0.992115
-0.564135 0.107614 -0.118869 0.187381 -0.998027
-0.491144 0.0936908 -1.23987e-06 0.187381 -1
-0.418154 0.0797671 0.118867 0.187381 -0.998027
-0.345588 0.0659245 0.23579 0.187381 -0.992115
-0.273869 0.0522433 0.348855 0.187381 -0.982287
-0.20341 0.0388025 0.456211 0.187381 -0.968583
-0.134612 0.0256787 0.556094 0.187381 -0.951057
-0.0678647 0.0129459 0.646864 0.187381 -0.929777
-0.00353565 0.000674461 0.727023 0.187381 -0.904827
--0.0580268 -0.0110692 0.795243 0.187381 -0.876307
--0.116499 -0.0222234 0.850385 0.187381 -0.844328
--0.171584 -0.0327314 0.89152 0.187381 -0.809017
--0.223014 -0.0425423 0.917941 0.187381 -0.770514
--0.270552 -0.0516106 0.929176 0.187381 -0.728969
--0.313994 -0.0598975 0.924996 0.187381 -0.684548
--0.353166 -0.06737 0.905417 0.187381 -0.637425
--0.387933 -0.0740022 0.870701 0.187381 -0.587786
--0.418191 -0.0797742 0.821354 0.187381 -0.535828
--0.443872 -0.084673 0.758114 0.187381 -0.481754
--0.464939 -0.0886918 0.681943 0.187381 -0.42578
--0.481391 -0.0918302 0.594011 0.187381 -0.368125
--0.493257 -0.0940937 0.495676 0.187381 -0.309018
--0.500595 -0.0954935 0.388466 0.187381 -0.248691
--0.503492 -0.0960463 0.274051 0.187381 -0.187382
--0.502062 -0.0957735 0.154222 0.187381 -0.125334
--0.496441 -0.0947011 0.0308563 0.187381 -0.0627915
--0.486784 -0.0928591 -0.0941063 0.187381 -9.80385e-07
--0.473269 -0.0902808 -0.218698 0.187381 0.0627895
--0.456084 -0.0870027 -0.34095 0.187381 0.125332
--0.435433 -0.0830632 -0.45893 0.187381 0.18738
--0.411527 -0.078503 -0.570766 0.187381 0.248689
--0.384586 -0.0733637 -0.674677 0.187381 0.309016
--0.354831 -0.0676876 -0.769007 0.187381 0.368124
--0.322485 -0.0615173 -0.852244 0.187381 0.425778
--0.287771 -0.0548952 -0.923047 0.187381 0.481753
--0.250905 -0.0478627 -0.980269 0.187381 0.535826
--0.2121 -0.0404603 -1.02297 0.187381 0.587784
--0.171559 -0.0327267 -1.05044 0.187381 0.637423
--0.129477 -0.024699 -1.0622 0.187381 0.684546
--0.0860359 -0.0164122 -1.05802 0.187381 0.728968
--0.0414079 -0.00789897 -1.03792 0.187381 0.770513
-0.00424818 0.000810384 -1.00215 0.187381 0.809016
-0.0507863 0.009688 -0.951238 0.187381 0.844327
-0.0980732 0.0187085 -0.885919 0.187381 0.876306
-0.145989 0.0278488 -0.807165 0.187381 0.904827
-0.194424 0.0370883 -0.716155 0.187381 0.929776
-0.243282 0.0464085 -0.61426 0.187381 0.951056
-0.292476 0.0557927 -0.503022 0.187381 0.968583
-0.341927 0.0652261 -0.384127 0.187381 0.982287
-0.391565 0.074695 -0.259384 0.187381 0.992115
-0.441324 0.084187 -0.130689 0.187381 0.998027
-0.484292 0.124345 0 0.24869 1
-0.529415 0.135931 0.132215 0.24869 0.998027
-0.57454 0.147517 0.262437 0.24869 0.992115
-0.619666 0.159103 0.388707 0.24869 0.982287
-0.664786 0.170688 0.509124 0.24869 0.968583
-0.709885 0.182268 0.62188 0.24869 0.951057
-0.754938 0.193835 0.725287 0.24869 0.929777
-0.799905 0.205381 0.817802 0.24869 0.904827
-0.844733 0.21689 0.89805 0.24869 0.876307
-0.88935 0.228346 0.964849 0.24869 0.844328
-0.933667 0.239725 1.01723 0.24869 0.809017
-0.977576 0.250999 1.05443 0.24869 0.770513
-1.02095 0.262135 1.07595 0.24869 0.728969
-1.06363 0.273095 1.08152 0.24869 0.684547
-1.10547 0.283836 1.07111 0.24869 0.637424
-1.14626 0.294309 1.04495 0.24869 0.587785
-1.1858 0.304462 1.00351 0.24869 0.535827
-1.22388 0.314238 0.947501 0.24869 0.481754
-1.26024 0.323576 0.877843 0.24869 0.42578
-1.29466 0.332411 0.795681 0.24869 0.368125
-1.32685 0.340677 0.70235 0.24869 0.309017
-1.35656 0.348306 0.599351 0.24869 0.24869
-1.38353 0.355229 0.488336 0.24869 0.187382
-1.40747 0.361377 0.371074 0.24869 0.125334
-1.42813 0.36668 0.249431 0.24869 0.0627908
-1.44524 0.371074 0.125334 0.24869 3.26795e-07
-1.45856 0.374493 0.000741619 0.24869 -0.0627902
-1.46785 0.37688 -0.122383 0.24869 -0.125333
-1.4729 0.378178 -0.242108 0.24869 -0.187381
-1.47353 0.378338 -0.356559 0.24869 -0.24869
-1.46956 0.377319 -0.463951 0.24869 -0.309017
-1.46086 0.375084 -0.562617 0.24869 -0.368124
-1.44732 0.371608 -0.651032 0.24869 -0.425779
-1.42887 0.366872 -0.727839 0.24869 -0.481753
-1.40549 0.360868 -0.791869 0.24869 -0.535826
-1.37717 0.353596 -0.84216 0.24869 -0.587785
-1.34396 0.34507 -0.877971 0.24869 -0.637424
-1.30595 0.33531 -0.898793 0.24869 -0.684547
-1.26326 0.32435 -0.904361 0.24869 -0.728968
-1.21607 0.312233 -0.894651 0.24869 -0.770513
-1.16458 0.299012 -0.869888 0.24869 -0.809017
-1.10903 0.284752 -0.830536 0.24869 -0.844328
-1.04973 0.269525 -0.777291 0.24869 -0.876306
-0.98698 0.253413 -0.711074 0.24869 -0.904827
-0.921141 0.236509 -0.633012 0.24869 -0.929776
-0.852595 0.218909 -0.544421 0.24869 -0.951056
-0.781753 0.20072 -0.446787 0.24869 -0.968583
-0.709044 0.182052 -0.341738 0.24869 -0.982287
-0.634921 0.16302 -0.231022 0.24869 -0.992115
-0.559846 0.143744 -0.116476 0.24869 -0.998027
-0.484292 0.124345 -1.21496e-06 0.24869 -1
-0.408739 0.104946 0.116474 0.24869 -0.998027
-0.333664 0.0856704 0.231019 0.24869 -0.992115
-0.25954 0.0666386 0.341735 0.24869 -0.982287
-0.186832 0.0479703 0.446785 0.24869 -0.968583
-0.115989 0.029781 0.544419 0.24869 -0.951057
-0.0474437 0.0121815 0.63301 0.24869 -0.929777
--0.0183953 -0.00472312 0.711072 0.24869 -0.904827
--0.0811445 -0.0208344 0.77729 0.24869 -0.876307
--0.14045 -0.0360615 0.830535 0.24869 -0.844328
--0.195992 -0.0503221 0.869888 0.24869 -0.809017
--0.247483 -0.0635428 0.894651 0.24869 -0.770514
--0.294676 -0.07566 0.90436 0.24869 -0.728969
--0.337363 -0.0866201 0.898793 0.24869 -0.684548
--0.375375 -0.0963798 0.877971 0.24869 -0.637425
--0.408583 -0.104906 0.842161 0.24869 -0.587786
--0.436903 -0.112178 0.791871 0.24869 -0.535828
--0.460289 -0.118182 0.727841 0.24869 -0.481754
--0.478735 -0.122918 0.651034 0.24869 -0.42578
--0.492274 -0.126394 0.562619 0.24869 -0.368125
--0.500976 -0.128629 0.463953 0.24869 -0.309018
--0.504947 -0.129648 0.356561 0.24869 -0.248691
--0.504322 -0.129488 0.24211 0.24869 -0.187382
--0.499267 -0.12819 0.122386 0.24869 -0.125334
--0.489973 -0.125804 -0.000739035 0.24869 -0.0627915
--0.476654 -0.122384 -0.125331 0.24869 -9.80385e-07
--0.459543 -0.117991 -0.249429 0.24869 0.0627895
--0.438887 -0.112687 -0.371072 0.24869 0.125332
--0.414945 -0.10654 -0.488333 0.24869 0.18738
--0.387982 -0.0996168 -0.599349 0.24869 0.248689
--0.358268 -0.0919876 -0.702348 0.24869 0.309016
--0.326073 -0.0837212 -0.79568 0.24869 0.368124
--0.291662 -0.074886 -0.877841 0.24869 0.425778
--0.255294 -0.0655484 -0.947499 0.24869 0.481753
--0.21722 -0.0557727 -1.00351 0.24869 0.535826
--0.177676 -0.0456195 -1.04495 0.24869 0.587784
--0.136885 -0.0351461 -1.07111 0.24869 0.637423
--0.0950523 -0.0244053 -1.08152 0.24869 0.684546
--0.0523656 -0.0134452 -1.07595 0.24869 0.728968
--0.00899362 -0.00230917 -1.05443 0.24869 0.770513
-0.0349152 0.0089647 -1.01723 0.24869 0.809016
-0.0792324 0.0203434 -0.96485 0.24869 0.844327
-0.123849 0.0317991 -0.898051 0.24869 0.876306
-0.168677 0.0433089 -0.817803 0.24869 0.904827
-0.213644 0.0548545 -0.725289 0.24869 0.929776
-0.258697 0.066422 -0.621883 0.24869 0.951056
-0.303796 0.0780015 -0.509126 0.24869 0.968583
-0.348916 0.0895864 -0.388709 0.24869 0.982287
-0.394042 0.101173 -0.26244 0.24869 0.992115
-0.439167 0.112759 -0.132217 0.24869 0.998027
-0.475528 0.154508 0 0.309017 1
-0.515864 0.167614 0.133613 0.309017 0.998027
-0.55626 0.18074 0.265234 0.309017 0.992115
-0.596776 0.193904 0.392905 0.309017 0.982287
-0.63746 0.207123 0.514726 0.309017 0.968583
-0.678353 0.22041 0.628889 0.309017 0.951057
-0.71948 0.233773 0.733706 0.309017 0.929777
-0.760847 0.247214 0.827633 0.309017 0.904827
-0.802445 0.26073 0.909296 0.309017 0.876307
-0.844237 0.274309 0.977509 0.309017 0.844328
-0.886166 0.287933 1.0313 0.309017 0.809017
-0.928148 0.301574 1.06991 0.309017 0.770513
-0.970071 0.315195 1.09283 0.309017 0.728969
-1.0118 0.328753 1.09978 0.309017 0.684547
-1.05317 0.342194 1.09073 0.309017 0.637424
-1.09398 0.355456 1.06591 0.309017 0.587785
-1.13403 0.368468 1.02577 0.309017 0.535827
-1.17307 0.381153 0.971018 0.309017 0.481754
-1.21084 0.393426 0.902573 0.309017 0.42578
-1.24707 0.405196 0.821569 0.309017 0.368125
-1.28145 0.416369 0.729327 0.309017 0.309017
-1.31369 0.426844 0.627343 0.309017 0.24869
-1.34347 0.436519 0.517256 0.309017 0.187382
-1.37047 0.445292 0.40083 0.309017 0.125334
-1.39438 0.45306 0.279917 0.309017 0.0627908
-1.41488 0.459721 0.156435 0.309017 3.26795e-07
-1.43167 0.465177 0.0323362 0.309017 -0.0627902
-1.44447 0.469336 -0.0904265 0.309017 -0.125333
-1.45301 0.47211 -0.209928 0.309017 -0.187381
-1.45704 0.47342 -0.324302 0.309017 -0.24869
-1.45635 0.473197 -0.43177 0.309017 -0.309017
-1.45076 0.471379 -0.53067 0.309017 -0.368124
-1.44011 0.46792 -0.61948 0.309017 -0.425779
-1.4243 0.462784 -0.696848 0.309017 -0.481753
-1.40326 0.455948 -0.761605 0.309017 -0.535826
-1.37697 0.447405 -0.812789 0.309017 -0.587785
-1.34545 0.437163 -0.849659 0.309017 -0.637424
-1.30877 0.425244 -0.871703 0.309017 -0.684547
-1.26704 0.411686 -0.878653 0.309017 -0.728968
-1.22043 0.396543 -0.870479 0.309017 -0.770513
-1.16916 0.379883 -0.847398 0.309017 -0.809017
-1.11347 0.36179 -0.809866 0.309017 -0.844328
-1.05368 0.342361 -0.75857 0.309017 -0.876306
-0.990119 0.321709 -0.694421 0.309017 -0.904827
-0.923171 0.299956 -0.618533 0.309017 -0.929776
-0.853253 0.277239 -0.532209 0.309017 -0.951056
-0.78081 0.2537 -0.43692 0.309017 -0.968583
-0.706314 0.229495 -0.33428 0.309017 -0.982287
-0.63026 0.204784 -0.226023 0.309017 -0.992115
-0.553158 0.179732 -0.113969 0.309017 -0.998027
-0.475529 0.154509 -1.18884e-06 0.309017 -1
-0.3979 0.129286 0.113966 0.309017 -0.998027
-0.320798 0.104234 0.22602 0.309017 -0.992115
-0.244744 0.0795222 0.334278 0.309017 -0.982287
-0.170249 0.0553171 0.436918 0.309017 -0.968583
-0.0978052 0.0317788 0.532207 0.309017 -0.951057
-0.0278867 0.00906092 0.618531 0.309017 -0.929777
--0.0390611 -0.0126917 0.69442 0.309017 -0.904827
--0.102622 -0.0333441 0.758569 0.309017 -0.876307
--0.162417 -0.0527724 0.809865 0.309017 -0.844328
--0.218102 -0.0708656 0.847397 0.309017 -0.809017
--0.269376 -0.0875257 0.870478 0.309017 -0.770514
--0.315983 -0.102669 0.878653 0.309017 -0.728969
--0.35771 -0.116227 0.871704 0.309017 -0.684548
--0.394394 -0.128146 0.849659 0.309017 -0.637425
--0.425916 -0.138388 0.81279 0.309017 -0.587786
--0.452207 -0.146931 0.761606 0.309017 -0.535828
--0.473245 -0.153767 0.696849 0.309017 -0.481754
--0.489054 -0.158903 0.619482 0.309017 -0.42578
--0.4997 -0.162362 0.530671 0.309017 -0.368125
--0.505294 -0.16418 0.431772 0.309017 -0.309018
--0.505982 -0.164404 0.324304 0.309017 -0.248691
--0.50195 -0.163093 0.209931 0.309017 -0.187382
--0.493412 -0.160319 0.090429 0.309017 -0.125334
--0.480613 -0.15616 -0.0323337 0.309017 -0.0627915
--0.463819 -0.150704 -0.156432 0.309017 -9.80385e-07
--0.443319 -0.144043 -0.279914 0.309017 0.0627895
--0.419413 -0.136276 -0.400827 0.309017 0.125332
--0.392412 -0.127502 -0.517254 0.309017 0.18738
--0.362634 -0.117827 -0.62734 0.309017 0.248689
--0.330395 -0.107352 -0.729325 0.309017 0.309016
--0.29601 -0.0961794 -0.821567 0.309017 0.368124
--0.259784 -0.0844089 -0.902572 0.309017 0.425778
--0.222011 -0.0721359 -0.971016 0.309017 0.481753
--0.182971 -0.059451 -1.02577 0.309017 0.535826
--0.142924 -0.0464389 -1.0659 0.309017 0.587784
--0.102109 -0.0331773 -1.09073 0.309017 0.637423
--0.0607429 -0.0197366 -1.09978 0.309017 0.684546
--0.0190157 -0.00617856 -1.09283 0.309017 0.728968
-0.0229076 0.00744313 -1.06991 0.309017 0.770513
-0.0648892 0.0210838 -1.0313 0.309017 0.809016
-0.106818 0.0347074 -0.97751 0.309017 0.844327
-0.148611 0.0482866 -0.909297 0.309017 0.876306
-0.190208 0.0618024 -0.827635 0.309017 0.904827
-0.231576 0.0752436 -0.733709 0.309017 0.929776
-0.272703 0.0886064 -0.628892 0.309017 0.951056
-0.313596 0.101893 -0.514729 0.309017 0.968583
-0.35428 0.115113 -0.392908 0.309017 0.982287
-0.394796 0.128277 -0.265237 0.309017 0.992115
-0.435192 0.141402 -0.133616 0.309017 0.998027
-0.464888 0.184062 0 0.368124 1
-0.500399 0.198122 0.134879 0.368124 0.998027
-0.536029 0.212229 0.26777 0.368124 0.992115
-0.571889 0.226427 0.396716 0.368124 0.982287
-0.608086 0.240758 0.51982 0.368124 0.968583
-0.64471 0.255259 0.635278 0.368124 0.951057
-0.681836 0.269958 0.741401 0.368124 0.929777
-0.719515 0.284876 0.836648 0.368124 0.904827
-0.757776 0.300025 0.919644 0.368124 0.876307
-0.796621 0.315405 0.989204 0.368124 0.844328
-0.836021 0.331004 1.04435 0.368124 0.809017
-0.875916 0.346799 1.08433 0.368124 0.770513
-0.916211 0.362754 1.10862 0.368124 0.728969
-0.956782 0.378817 1.11694 0.368124 0.684547
-0.997467 0.394925 1.10927 0.368124 0.637424
-1.03807 0.411002 1.08581 0.368124 0.587785
-1.07838 0.42696 1.04701 0.368124 0.535827
-1.11812 0.442697 0.993576 0.368124 0.481754
-1.15703 0.458102 0.926413 0.368124 0.42578
-1.1948 0.473053 0.846645 0.368124 0.368125
-1.23109 0.487423 0.755585 0.368124 0.309017
-1.26557 0.501075 0.654715 0.368124 0.24869
-1.29788 0.513868 0.545667 0.368124 0.187382
-1.32767 0.52566 0.430189 0.368124 0.125334
-1.35456 0.536307 0.310125 0.368124 0.0627908
-1.3782 0.545666 0.187382 0.368124 3.26795e-07
-1.39823 0.553598 0.063899 0.368124 -0.0627902
-1.41432 0.559969 -0.0583805 0.368124 -0.125333
-1.42615 0.564654 -0.177541 0.368124 -0.187381
-1.43344 0.567537 -0.291725 0.368124 -0.24869
-1.4359 0.568513 -0.399163 0.368124 -0.309017
-1.43332 0.567493 -0.498199 0.368124 -0.368124
-1.42551 0.564401 -0.587317 0.368124 -0.425779
-1.41233 0.55918 -0.665169 0.368124 -0.481753
-1.39366 0.551789 -0.730588 0.368124 -0.535826
-1.36947 0.54221 -0.782616 0.368124 -0.587785
-1.33974 0.530441 -0.820508 0.368124 -0.637424
-1.30454 0.516504 -0.843754 0.368124 -0.684547
-1.26397 0.500441 -0.852078 0.368124 -0.728968
-1.21819 0.482315 -0.845447 0.368124 -0.770513
-1.16741 0.462211 -0.824071 0.368124 -0.809017
-1.1119 0.440234 -0.788397 0.368124 -0.844328
-1.05198 0.416508 -0.739101 0.368124 -0.876306
-0.987997 0.391176 -0.677083 0.368124 -0.904827
-0.920364 0.364398 -0.603443 0.368124 -0.929776
-0.849522 0.336349 -0.519471 0.368124 -0.951056
-0.775952 0.307221 -0.426622 0.368124 -0.968583
-0.700161 0.277213 -0.326493 0.368124 -0.982287
-0.622684 0.246538 -0.220801 0.368124 -0.992115
-0.544072 0.215413 -0.111349 0.368124 -0.998027
-0.464889 0.184063 -1.16156e-06 0.368124 -1
-0.385706 0.152712 0.111346 0.368124 -0.998027
-0.307094 0.121587 0.220799 0.368124 -0.992115
-0.229617 0.0909116 0.326491 0.368124 -0.982287
-0.153826 0.0609041 0.42662 0.368124 -0.968583
-0.080256 0.0317756 0.519469 0.368124 -0.951057
-0.00941445 0.00372744 0.603441 0.368124 -0.929777
--0.0582193 -0.0230507 0.677081 0.368124 -0.904827
--0.122201 -0.0483829 0.7391 0.368124 -0.876307
--0.182127 -0.0721092 0.788396 0.368124 -0.844328
--0.237635 -0.0940865 0.82407 0.368124 -0.809017
--0.288412 -0.11419 0.845447 0.368124 -0.770514
--0.334192 -0.132316 0.852078 0.368124 -0.728969
--0.374763 -0.148379 0.843754 0.368124 -0.684548
--0.409964 -0.162316 0.820509 0.368124 -0.637425
--0.439688 -0.174085 0.782617 0.368124 -0.587786
--0.463884 -0.183665 0.73059 0.368124 -0.535828
--0.48255 -0.191055 0.66517 0.368124 -0.481754
--0.495738 -0.196276 0.587319 0.368124 -0.42578
--0.503547 -0.199368 0.498201 0.368124 -0.368125
--0.506124 -0.200389 0.399165 0.368124 -0.309018
--0.503659 -0.199413 0.291728 0.368124 -0.248691
--0.496378 -0.19653 0.177544 0.368124 -0.187382
--0.484545 -0.191845 0.058383 0.368124 -0.125334
--0.468453 -0.185474 -0.0638964 0.368124 -0.0627915
--0.44842 -0.177542 -0.187379 0.368124 -9.80385e-07
--0.424782 -0.168183 -0.310123 0.368124 0.0627895
--0.397891 -0.157536 -0.430187 0.368124 0.125332
--0.368107 -0.145744 -0.545664 0.368124 0.18738
--0.335794 -0.13295 -0.654713 0.368124 0.248689
--0.301314 -0.119299 -0.755583 0.368124 0.309016
--0.265021 -0.104929 -0.846643 0.368124 0.368124
--0.227257 -0.0899774 -0.926412 0.368124 0.425778
--0.188349 -0.0745726 -0.993575 0.368124 0.481753
--0.148602 -0.0588357 -1.04701 0.368124 0.535826
--0.108298 -0.0428783 -1.0858 0.368124 0.587784
--0.0676913 -0.0268009 -1.10927 0.368124 0.637423
--0.0270062 -0.0106925 -1.11694 0.368124 0.684546
-0.0135643 0.0053705 -1.10862 0.368124 0.728968
-0.0538601 0.0213247 -1.08433 0.368124 0.770513
-0.0937544 0.03712 -1.04435 0.368124 0.809016
-0.133154 0.0527195 -0.989205 0.368124 0.844327
-0.171999 0.0680993 -0.919646 0.368124 0.876306
-0.210261 0.0832482 -0.83665 0.368124 0.904827
-0.24794 0.0981665 -0.741404 0.368124 0.929776
-0.285065 0.112865 -0.63528 0.368124 0.951056
-0.32169 0.127366 -0.519823 0.368124 0.968583
-0.357886 0.141697 -0.396718 0.368124 0.982287
-0.393747 0.155895 -0.267773 0.368124 0.992115
-0.429376 0.170002 -0.134882 0.368124 0.998027
-0.452414 0.21289 0 0.425779 1
-0.483121 0.22734 0.136012 0.425779 0.998027
-0.514 0.24187 0.270041 0.425779 0.992115
-0.545217 0.25656 0.400135 0.425779 0.982287
-0.576926 0.271481 0.524401 0.425779 0.968583
-0.609268 0.2867 0.641039 0.425779 0.951057
-0.642364 0.302273 0.748365 0.425779 0.929777
-0.676307 0.318246 0.844838 0.425779 0.904827
-0.711164 0.334648 0.929085 0.425779 0.876307
-0.746971 0.351498 0.999923 0.425779 0.844328
-0.783728 0.368794 1.05637 0.425779 0.809017
-0.821396 0.38652 1.09768 0.425779 0.770513
-0.859901 0.404638 1.12332 0.425779 0.728969
-0.899127 0.423097 1.13301 0.425779 0.684547
-0.938919 0.441821 1.12671 0.425779 0.637424
-0.979083 0.460721 1.10463 0.425779 0.587785
-1.01939 0.479688 1.06722 0.425779 0.535827
-1.05957 0.498595 1.01515 0.425779 0.481754
-1.09932 0.517302 0.949339 0.425779 0.42578
-1.13832 0.535654 0.870886 0.425779 0.368125
-1.17621 0.553483 0.781096 0.425779 0.309017
-1.21262 0.570614 0.681442 0.425779 0.24869
-1.24715 0.586863 0.573539 0.425779 0.187382
-1.2794 0.60204 0.459124 0.425779 0.125334
-1.30897 0.615954 0.340028 0.425779 0.0627908
-1.33545 0.628415 0.218144 0.425779 3.26795e-07
-1.35845 0.639236 0.0953986 0.425779 -0.0627902
-1.37757 0.648237 -0.0262769 0.425779 -0.125333
-1.39247 0.655246 -0.144979 0.425779 -0.187381
-1.4028 0.660106 -0.258861 0.425779 -0.24869
-1.40825 0.662671 -0.366162 0.425779 -0.309017
-1.40856 0.662816 -0.465236 0.425779 -0.368124
-1.40349 0.660434 -0.554574 0.425779 -0.425779
-1.39288 0.655439 -0.632833 0.425779 -0.481753
-1.37658 0.64777 -0.698851 0.425779 -0.535826
-1.35453 0.637391 -0.75167 0.425779 -0.587785
-1.32669 0.624293 -0.790548 0.425779 -0.637424
-1.29311 0.608492 -0.814971 0.425779 -0.684547
-1.25389 0.590034 -0.824662 0.425779 -0.728968
-1.20917 0.568991 -0.819581 0.425779 -0.770513
-1.15917 0.545464 -0.799931 0.425779 -0.809017
-1.10416 0.51958 -0.766149 0.425779 -0.844328
-1.04447 0.491492 -0.718903 0.425779 -0.876306
-0.980478 0.461378 -0.659077 0.425779 -0.904827
-0.912599 0.429436 -0.587758 0.425779 -0.929776
-0.841305 0.395888 -0.50622 0.425779 -0.951056
-0.767106 0.360973 -0.415902 0.425779 -0.968583
-0.69054 0.324943 -0.318384 0.425779 -0.982287
-0.612175 0.288068 -0.215361 0.425779 -0.992115
-0.532599 0.250622 -0.108619 0.425779 -0.998027
-0.452414 0.21289 -1.13312e-06 0.425779 -1
-0.37223 0.175158 0.108616 0.425779 -0.998027
-0.292654 0.137712 0.215359 0.425779 -0.992115
-0.214289 0.100837 0.318382 0.425779 -0.982287
-0.137723 0.0648074 0.4159 0.425779 -0.968583
-0.0635231 0.0298917 0.506219 0.425779 -0.951057
--0.00777004 -0.0036563 0.587756 0.425779 -0.929777
--0.0756494 -0.0355979 0.659075 0.425779 -0.904827
--0.139647 -0.0657127 0.718902 0.425779 -0.876307
--0.199337 -0.0938006 0.766148 0.425779 -0.844328
--0.254343 -0.119685 0.79993 0.425779 -0.809017
--0.30434 -0.143211 0.819581 0.425779 -0.770514
--0.349058 -0.164254 0.824662 0.425779 -0.728969
--0.388284 -0.182712 0.814972 0.425779 -0.684548
--0.421863 -0.198513 0.790549 0.425779 -0.637425
--0.449699 -0.211612 0.751671 0.425779 -0.587786
--0.471755 -0.221991 0.698852 0.425779 -0.535828
--0.488052 -0.22966 0.632834 0.425779 -0.481754
--0.498666 -0.234655 0.554576 0.425779 -0.42578
--0.50373 -0.237037 0.465238 0.425779 -0.368125
--0.503422 -0.236892 0.366164 0.425779 -0.309018
--0.49797 -0.234327 0.258863 0.425779 -0.248691
--0.487643 -0.229467 0.144981 0.425779 -0.187382
--0.472747 -0.222458 0.0262794 0.425779 -0.125334
--0.453619 -0.213457 -0.095396 0.425779 -0.0627915
--0.430623 -0.202636 -0.218141 0.425779 -9.80385e-07
--0.404142 -0.190175 -0.340026 0.425779 0.0627895
--0.374573 -0.176261 -0.459122 0.425779 0.125332
--0.342321 -0.161084 -0.573536 0.425779 0.18738
--0.307791 -0.144836 -0.68144 0.425779 0.248689
--0.271386 -0.127705 -0.781094 0.425779 0.309016
--0.233496 -0.109875 -0.870884 0.425779 0.368124
--0.194497 -0.0915231 -0.949337 0.425779 0.425778
--0.154742 -0.0728162 -1.01515 0.425779 0.481753
--0.114563 -0.0539091 -1.06722 0.425779 0.535826
--0.0742569 -0.0349426 -1.10463 0.425779 0.587784
--0.0340924 -0.0160426 -1.12671 0.425779 0.637423
-0.00569972 0.00268209 -1.13301 0.425779 0.684546
-0.0449255 0.0211403 -1.12332 0.425779 0.728968
-0.0834303 0.0392593 -1.09768 0.425779 0.770513
-0.121099 0.0569847 -1.05637 0.425779 0.809016
-0.157855 0.0742809 -0.999924 0.425779 0.844327
-0.193662 0.0911304 -0.929087 0.425779 0.876306
-0.22852 0.107533 -0.844839 0.425779 0.904827
-0.262463 0.123506 -0.748367 0.425779 0.929776
-0.295558 0.139079 -0.641042 0.425779 0.951056
-0.3279 0.154298 -0.524404 0.425779 0.968583
-0.35961 0.169219 -0.400137 0.425779 0.982287
-0.390826 0.183909 -0.270044 0.425779 0.992115
-0.421705 0.198439 -0.136015 0.425779 0.998027
-0.438153 0.240877 0 0.481754 1
-0.464135 0.25516 0.137011 0.481754 0.998027
-0.490337 0.269565 0.272046 0.481754 0.992115
-0.516973 0.284208 0.403159 0.481754 0.982287
-0.544247 0.299202 0.528465 0.481754 0.968583
-0.572344 0.314649 0.646168 0.481754 0.951057
-0.601426 0.330637 0.75459 0.481754 0.929777
-0.631628 0.34724 0.852193 0.481754 0.904827
-0.663051 0.364515 0.937609 0.481754 0.876307
-0.695763 0.382499 1.00965 0.481754 0.844328
-0.729789 0.401205 1.06735 0.481754 0.809017
-0.765115 0.420625 1.10995 0.481754 0.770513
-0.801682 0.440728 1.13691 0.481754 0.728969
-0.839386 0.461456 1.14796 0.481754 0.684547
-0.878078 0.482727 1.14305 0.481754 0.637424
-0.917565 0.504436 1.12237 0.481754 0.587785
-0.957611 0.526451 1.08638 0.481754 0.535827
-0.997938 0.548621 1.03573 0.481754 0.481754
-1.03823 0.570773 0.971328 0.481754 0.42578
-1.07814 0.592714 0.894267 0.481754 0.368125
-1.11729 0.614236 0.805837 0.481754 0.309017
-1.15528 0.635118 0.707496 0.481754 0.24869
-1.19167 0.655126 0.600845 0.481754 0.187382
-1.22604 0.674021 0.487606 0.481754 0.125334
-1.25794 0.691559 0.369595 0.481754 0.0627908
-1.28693 0.707495 0.24869 0.481754 3.26795e-07
-1.31257 0.72159 0.126804 0.481754 -0.0627902
-1.33443 0.733611 0.00585268 0.481754 -0.125333
-1.35212 0.743334 -0.112274 0.481754 -0.187381
-1.36525 0.750553 -0.225741 0.481754 -0.24869
-1.37348 0.755078 -0.3328 0.481754 -0.309017
-1.37651 0.756741 -0.431814 0.481754 -0.368124
-1.37407 0.755399 -0.521284 0.481754 -0.425779
-1.36594 0.750934 -0.599873 0.481754 -0.481753
-1.35199 0.743261 -0.666424 0.481754 -0.535826
-1.33209 0.732323 -0.719983 0.481754 -0.587785
-1.30622 0.718098 -0.759808 0.481754 -0.637424
-1.27438 0.700598 -0.785385 0.481754 -0.684547
-1.23668 0.67987 -0.796432 0.481754 -0.728968
-1.19325 0.655996 -0.792906 0.481754 -0.770513
-1.14431 0.629092 -0.775001 0.481754 -0.809017
-1.09014 0.599309 -0.743146 0.481754 -0.844328
-1.03106 0.566829 -0.697995 0.481754 -0.876306
-0.967462 0.531867 -0.64042 0.481754 -0.904827
-0.899792 0.494665 -0.571493 0.481754 -0.929776
-0.828535 0.455491 -0.49247 0.481754 -0.951056
-0.754224 0.414638 -0.404773 0.481754 -0.968583
-0.677424 0.372417 -0.30996 0.481754 -0.982287
-0.598731 0.329155 -0.209709 0.481754 -0.992115
-0.518763 0.285192 -0.105781 0.481754 -0.998027
-0.438154 0.240877 -1.10357e-06 0.481754 -1
-0.357545 0.196562 0.105779 0.481754 -0.998027
-0.277578 0.1526 0.209707 0.481754 -0.992115
-0.198885 0.109338 0.309958 0.481754 -0.982287
-0.122084 0.0671164 0.404771 0.481754 -0.968583
-0.0477728 0.0262633 0.492469 0.481754 -0.951057
--0.0234835 -0.0129101 0.571491 0.481754 -0.929777
--0.0911539 -0.0501123 0.640418 0.481754 -0.904827
--0.15475 -0.0850745 0.697994 0.481754 -0.876307
--0.213831 -0.117554 0.743145 0.481754 -0.844328
--0.268006 -0.147338 0.775001 0.481754 -0.809017
--0.316945 -0.174242 0.792906 0.481754 -0.770514
--0.360372 -0.198116 0.796432 0.481754 -0.728969
--0.398076 -0.218844 0.785385 0.481754 -0.684548
--0.429908 -0.236344 0.759809 0.481754 -0.637425
--0.455783 -0.250569 0.719984 0.481754 -0.587786
--0.475679 -0.261507 0.666425 0.481754 -0.535828
--0.489638 -0.269181 0.599874 0.481754 -0.481754
--0.497759 -0.273645 0.521286 0.481754 -0.42578
--0.500201 -0.274988 0.431816 0.481754 -0.368125
--0.497176 -0.273325 0.332802 0.481754 -0.309018
--0.488945 -0.2688 0.225743 0.481754 -0.248691
--0.475814 -0.261581 0.112276 0.481754 -0.187382
--0.458127 -0.251857 -0.00585018 0.481754 -0.125334
--0.436262 -0.239837 -0.126802 0.481754 -0.0627915
--0.410623 -0.225742 -0.248688 0.481754 -9.80385e-07
--0.381635 -0.209805 -0.369593 0.481754 0.0627895
--0.349734 -0.192268 -0.487604 0.481754 0.125332
--0.315364 -0.173373 -0.600842 0.481754 0.18738
--0.278969 -0.153365 -0.707494 0.481754 0.248689
--0.240986 -0.132483 -0.805835 0.481754 0.309016
--0.201837 -0.110961 -0.894265 0.481754 0.368124
--0.161926 -0.0890195 -0.971326 0.481754 0.425778
--0.121632 -0.0668678 -1.03573 0.481754 0.481753
--0.0813049 -0.0446977 -1.08638 0.481754 0.535826
--0.0412591 -0.0226824 -1.12237 0.481754 0.587784
--0.00177198 -0.000974157 -1.14305 0.481754 0.637423
-0.0369202 0.020297 -1.14796 0.481754 0.684546
-0.0746241 0.0410249 -1.13691 0.481754 0.728968
-0.111191 0.0611278 -1.10995 0.481754 0.770513
-0.146517 0.0805484 -1.06735 0.481754 0.809016
-0.180544 0.0992546 -1.00966 0.481754 0.844327
-0.213255 0.117238 -0.937611 0.481754 0.876306
-0.244678 0.134513 -0.852195 0.481754 0.904827
-0.27488 0.151116 -0.754592 0.481754 0.929776
-0.303962 0.167104 -0.646171 0.481754 0.951056
-0.332059 0.182551 -0.528468 0.481754 0.968583
-0.359333 0.197545 -0.403162 0.481754 0.982287
-0.38597 0.212189 -0.272049 0.481754 0.992115
-0.412171 0.226593 -0.137014 0.481754 0.998027
-0.422164 0.267913 0 0.535827 1
-0.443551 0.281486 0.137875 0.535827 0.998027
-0.465203 0.295227 0.273782 0.535827 0.992115
-0.487378 0.309299 0.405785 0.535827 0.982287
-0.510321 0.323859 0.532007 0.535827 0.968583
-0.534257 0.33905 0.650659 0.535827 0.951057
-0.559389 0.354999 0.76007 0.535827 0.929777
-0.585885 0.371814 0.858707 0.535827 0.904827
-0.613881 0.389581 0.945208 0.535827 0.876307
-0.643473 0.40836 1.01839 0.535827 0.844328
-0.674711 0.428185 1.07728 0.535827 0.809017
-0.707602 0.449057 1.12112 0.535827 0.770513
-0.742102 0.470952 1.14938 0.535827 0.728969
-0.778119 0.493809 1.16177 0.535827 0.684547
-0.815511 0.517539 1.15825 0.535827 0.637424
-0.854086 0.54202 1.139 0.535827 0.587785
-0.893606 0.5671 1.10446 0.535827 0.535827
-0.933786 0.592598 1.05528 0.535827 0.481754
-0.974298 0.618308 0.992358 0.535827 0.42578
-1.01478 0.643997 0.916766 0.535827 0.368125
-1.05482 0.669412 0.829783 0.535827 0.309017
-1.09401 0.694281 0.732851 0.535827 0.24869
-1.13189 0.718319 0.627558 0.535827 0.187382
-1.16799 0.74123 0.515607 0.535827 0.125334
-1.20184 0.762713 0.398798 0.535827 0.0627908
-1.23297 0.782464 0.278992 0.535827 3.26795e-07
-1.26089 0.800185 0.158084 0.535827 -0.0627902
-1.28515 0.815584 0.0379765 0.535827 -0.125333
-1.30532 0.828381 -0.0794577 0.535827 -0.187381
-1.32098 0.838316 -0.192398 0.535827 -0.24869
-1.33174 0.845149 -0.29911 0.535827 -0.309017
-1.33728 0.848664 -0.397966 0.535827 -0.368124
-1.3373 0.848678 -0.48748 0.535827 -0.425779
-1.33157 0.845037 -0.566321 0.535827 -0.481753
-1.31989 0.837627 -0.633339 0.535827 -0.535826
-1.30215 0.826368 -0.687585 0.535827 -0.587785
-1.27829 0.811225 -0.728318 0.535827 -0.637424
-1.24831 0.792201 -0.755023 0.535827 -0.684547
-1.21229 0.769344 -0.767416 0.535827 -0.728968
-1.17038 0.742744 -0.765449 0.535827 -0.770513
-1.12277 0.712533 -0.749307 0.535827 -0.809017
-1.06976 0.678887 -0.719409 0.535827 -0.844328
-1.01166 0.64202 -0.676398 0.535827 -0.876306
-0.94889 0.602184 -0.621131 0.535827 -0.904827
-0.881893 0.559666 -0.554663 0.535827 -0.929776
-0.811175 0.514787 -0.478234 0.535827 -0.951056
-0.737285 0.467895 -0.393244 0.535827 -0.968583
-0.660809 0.419362 -0.301231 0.535827 -0.982287
-0.582367 0.369581 -0.203849 0.535827 -0.992115
-0.502599 0.318959 -0.10284 0.535827 -0.998027
-0.422165 0.267914 -1.07293e-06 0.535827 -1
-0.341731 0.216869 0.102838 0.535827 -0.998027
-0.261963 0.166247 0.203847 0.535827 -0.992115
-0.18352 0.116465 0.301229 0.535827 -0.982287
-0.107044 0.0679325 0.393242 0.535827 -0.968583
-0.0331543 0.0210404 0.478233 0.535827 -0.951057
--0.0375635 -0.0238385 0.554662 0.535827 -0.929777
--0.10456 -0.066356 0.62113 0.535827 -0.904827
--0.167332 -0.106192 0.676397 0.535827 -0.876307
--0.225426 -0.14306 0.719408 0.535827 -0.844328
--0.278444 -0.176706 0.749306 0.535827 -0.809017
--0.326048 -0.206916 0.765449 0.535827 -0.770514
--0.367963 -0.233517 0.767416 0.535827 -0.728969
--0.403981 -0.256374 0.755023 0.535827 -0.684548
--0.433958 -0.275398 0.728318 0.535827 -0.637425
--0.45782 -0.290541 0.687586 0.535827 -0.587786
--0.47556 -0.3018 0.633341 0.535827 -0.535828
--0.487238 -0.30921 0.566322 0.535827 -0.481754
--0.492974 -0.312851 0.487482 0.535827 -0.42578
--0.492953 -0.312838 0.397968 0.535827 -0.368125
--0.487414 -0.309322 0.299112 0.535827 -0.309018
--0.476648 -0.30249 0.192401 0.535827 -0.248691
--0.460993 -0.292555 0.0794601 0.535827 -0.187382
--0.440827 -0.279757 -0.037974 0.535827 -0.125334
--0.416563 -0.264359 -0.158082 0.535827 -0.0627915
--0.388639 -0.246638 -0.278989 0.535827 -9.80385e-07
--0.357516 -0.226886 -0.398795 0.535827 0.0627895
--0.323665 -0.205404 -0.515605 0.535827 0.125332
--0.287563 -0.182493 -0.627555 0.535827 0.18738
--0.249685 -0.158455 -0.732849 0.535827 0.248689
--0.210497 -0.133586 -0.829781 0.535827 0.309016
--0.17045 -0.108171 -0.916764 0.535827 0.368124
--0.129971 -0.0824821 -0.992356 0.535827 0.425778
--0.0894588 -0.0567723 -1.05528 0.535827 0.481753
--0.0492792 -0.0312735 -1.10446 0.535827 0.535826
--0.00975915 -0.00619335 -1.139 0.535827 0.587784
-0.0288165 0.0182875 -1.15825 0.535827 0.637423
-0.0662086 0.0420173 -1.16177 0.535827 0.684546
-0.102226 0.0648744 -1.14938 0.535827 0.728968
-0.136726 0.0867688 -1.12112 0.535827 0.770513
-0.169616 0.107642 -1.07728 0.535827 0.809016
-0.200855 0.127466 -1.01839 0.535827 0.844327
-0.230446 0.146245 -0.945209 0.535827 0.876306
-0.258442 0.164013 -0.858709 0.535827 0.904827
-0.284939 0.180828 -0.760072 0.535827 0.929776
-0.31007 0.196777 -0.650662 0.535827 0.951056
-0.334007 0.211967 -0.53201 0.535827 0.968583
-0.35695 0.226527 -0.405788 0.535827 0.982287
-0.379124 0.2406 -0.273785 0.535827 0.992115
-0.400776 0.25434 -0.137878 0.535827 0.998027
-0.404509 0.293893 0 0.587785 1
-0.421488 0.306229 0.138602 0.587785 0.998027
-0.43877 0.318785 0.275248 0.587785 0.992115
-0.456653 0.331777 0.408011 0.587785 0.982287
-0.475417 0.345411 0.535024 0.587785 0.968583
-0.495326 0.359876 0.654508 0.587785 0.951057
-0.516615 0.375342 0.7648 0.587785 0.929777
-0.539484 0.391958 0.864375 0.587785 0.904827
-0.564098 0.409841 0.951874 0.587785 0.876307
-0.590578 0.42908 1.02612 0.587785 0.844328
-0.618999 0.449729 1.08614 0.587785 0.809017
-0.649384 0.471805 1.13119 0.587785 0.770513
-0.681707 0.495289 1.16072 0.587785 0.728969
-0.715886 0.520121 1.17444 0.587785 0.684547
-0.751786 0.546204 1.17231 0.587785 0.637424
-0.789219 0.573401 1.15451 0.587785 0.587785
-0.827945 0.601537 1.12145 0.587785 0.535827
-0.867675 0.630403 1.0738 0.587785 0.481754
-0.908073 0.659753 1.01241 0.587785 0.42578
-0.948761 0.689315 0.93836 0.587785 0.368125
-0.989325 0.718786 0.85291 0.587785 0.309017
-1.02932 0.747843 0.757484 0.587785 0.24869
-1.06827 0.776143 0.653651 0.587785 0.187382
-1.10569 0.80333 0.543099 0.587785 0.125334
-1.14108 0.829041 0.427607 0.587785 0.0627908
-1.17393 0.852909 0.309018 0.587785 3.26795e-07
-1.20374 0.874571 0.189209 0.587785 -0.0627902
-1.23003 0.893672 0.0700628 0.587785 -0.125333
-1.25233 0.909872 -0.0465632 0.587785 -0.187381
-1.2702 0.92285 -0.158866 0.587785 -0.24869
-1.28322 0.932312 -0.265124 0.587785 -0.309017
-1.29103 0.937991 -0.363726 0.587785 -0.368124
-1.29333 0.939659 -0.453194 0.587785 -0.425779
-1.28984 0.937123 -0.532209 0.587785 -0.481753
-1.28036 0.930235 -0.59963 0.587785 -0.535826
-1.26475 0.918893 -0.654508 0.587785 -0.587785
-1.24293 0.903041 -0.696109 0.587785 -0.637424
-1.2149 0.882676 -0.723916 0.587785 -0.684547
-1.18072 0.857843 -0.737643 0.587785 -0.728968
-1.14053 0.828642 -0.737236 0.587785 -0.770513
-1.09453 0.79522 -0.722873 0.587785 -0.809017
-1.04299 0.757778 -0.694962 0.587785 -0.844328
-0.986262 0.716561 -0.654134 0.587785 -0.876306
-0.924741 0.671863 -0.601229 0.587785 -0.904827
-0.858889 0.624019 -0.537287 0.587785 -0.929776
-0.78922 0.573401 -0.463526 0.587785 -0.951056
-0.716295 0.520419 -0.381326 0.587785 -0.968583
-0.640716 0.465507 -0.292204 0.587785 -0.982287
-0.563116 0.409127 -0.197789 0.587785 -0.992115
-0.484155 0.351759 -0.0997967 0.587785 -0.998027
-0.404509 0.293893 -1.04123e-06 0.587785 -1
-0.324864 0.236027 0.0997946 0.587785 -0.998027
-0.245903 0.178659 0.197787 0.587785 -0.992115
-0.168303 0.122279 0.292202 0.587785 -0.982287
-0.0927238 0.0673677 0.381325 0.587785 -0.968583
-0.0197989 0.0143847 0.463525 0.587785 -0.951057
--0.0498702 -0.0362328 0.537285 0.587785 -0.929777
--0.115723 -0.0840773 0.601228 0.587785 -0.904827
--0.177244 -0.128775 0.654133 0.587785 -0.876307
--0.233974 -0.169992 0.694962 0.587785 -0.844328
--0.285509 -0.207435 0.722873 0.587785 -0.809017
--0.33151 -0.240856 0.737236 0.587785 -0.770514
--0.371703 -0.270058 0.737643 0.587785 -0.728969
--0.405881 -0.29489 0.723916 0.587785 -0.684548
--0.433912 -0.315255 0.69611 0.587785 -0.637425
--0.45573 -0.331107 0.654509 0.587785 -0.587786
--0.471342 -0.34245 0.599631 0.587785 -0.535828
--0.480822 -0.349338 0.532211 0.587785 -0.481754
--0.484313 -0.351874 0.453196 0.587785 -0.42578
--0.482018 -0.350206 0.363728 0.587785 -0.368125
--0.474201 -0.344527 0.265126 0.587785 -0.309018
--0.461178 -0.335066 0.158868 0.587785 -0.248691
--0.443315 -0.322087 0.0465656 0.587785 -0.187382
--0.421018 -0.305888 -0.0700603 0.587785 -0.125334
--0.394728 -0.286787 -0.189206 0.587785 -0.0627915
--0.364913 -0.265125 -0.309015 0.587785 -9.80385e-07
--0.332061 -0.241257 -0.427604 0.587785 0.0627895
--0.296673 -0.215546 -0.543097 0.587785 0.125332
--0.259253 -0.188359 -0.653649 0.587785 0.18738
--0.220302 -0.160059 -0.757482 0.587785 0.248689
--0.180309 -0.131002 -0.852908 0.587785 0.309016
--0.139745 -0.101531 -0.938358 0.587785 0.368124
--0.0990568 -0.0719689 -1.01241 0.587785 0.425778
--0.0586589 -0.0426182 -1.0738 0.587785 0.481753
--0.018929 -0.0137527 -1.12145 0.587785 0.535826
-0.0197973 0.0143836 -1.15451 0.587785 0.587784
-0.0572306 0.0415805 -1.17231 0.587785 0.637423
-0.0931308 0.0676635 -1.17444 0.587785 0.684546
-0.12731 0.0924959 -1.16072 0.587785 0.728968
-0.159632 0.11598 -1.13119 0.587785 0.770513
-0.190018 0.138056 -1.08615 0.587785 0.809016
-0.218438 0.158705 -1.02612 0.587785 0.844327
-0.244919 0.177944 -0.951875 0.587785 0.876306
-0.269533 0.195827 -0.864376 0.587785 0.904827
-0.292402 0.212443 -0.764802 0.587785 0.929776
-0.31369 0.227909 -0.654511 0.587785 0.951056
-0.333599 0.242374 -0.535027 0.587785 0.968583
-0.352364 0.256007 -0.408014 0.587785 0.982287
-0.370247 0.269 -0.275251 0.587785 0.992115
-0.387529 0.281556 -0.138605 0.587785 0.998027
-0.385257 0.318712 0 0.637424 1
-0.398065 0.329308 0.139193 0.637424 0.998027
-0.41121 0.340182 0.276443 0.637424 0.992115
-0.42502 0.351607 0.409834 0.637424 0.982287
-0.439808 0.363841 0.537513 0.637424 0.968583
-0.455869 0.377127 0.657711 0.637424 0.951057
-0.473464 0.391684 0.768775 0.637424 0.929777
-0.492825 0.4077 0.869189 0.637424 0.904827
-0.514138 0.425332 0.9576 0.637424 0.876307
-0.537549 0.444699 1.03284 0.637424 0.844328
-0.56315 0.465878 1.09394 0.637424 0.809017
-0.590985 0.488905 1.14013 0.637424 0.770513
-0.62104 0.513769 1.17091 0.637424 0.728969
-0.653244 0.54041 1.18595 0.637424 0.684547
-0.68747 0.568724 1.18522 0.637424 0.637424
-0.723535 0.59856 1.16888 0.637424 0.587785
-0.7612 0.629719 1.13734 0.637424 0.535827
-0.800174 0.661961 1.09125 0.637424 0.481754
-0.840115 0.695004 1.03146 0.637424 0.42578
-0.88064 0.728529 0.959028 0.637424 0.368125
-0.921322 0.762184 0.875195 0.637424 0.309017
-0.961703 0.79559 0.781369 0.637424 0.24869
-1.0013 0.828343 0.6791 0.637424 0.187382
-1.03959 0.860026 0.570055 0.637424 0.125334
-1.07607 0.890206 0.455994 0.637424 0.0627908
-1.11022 0.918452 0.338738 0.637424 3.26795e-07
-1.1415 0.94433 0.220146 0.637424 -0.0627902
-1.16941 0.96742 0.10208 0.637424 -0.125333
-1.19346 0.987314 -0.0136228 0.637424 -0.187381
-1.21318 1.00363 -0.125176 0.637424 -0.24869
-1.22815 1.01601 -0.230876 0.637424 -0.309017
-1.23798 1.02414 -0.329126 0.637424 -0.368124
-1.24233 1.02774 -0.418461 0.637424 -0.425779
-1.24092 1.02657 -0.497573 0.637424 -0.481753
-1.23352 1.02046 -0.565328 0.637424 -0.535826
-1.21999 1.00926 -0.620786 0.637424 -0.587785
-1.20023 0.992915 -0.663213 0.637424 -0.637424
-1.17422 0.971397 -0.692095 0.637424 -0.684547
-1.14201 0.944756 -0.707142 0.637424 -0.728968
-1.10374 0.913096 -0.708296 0.637424 -0.770513
-1.05961 0.876582 -0.695726 0.637424 -0.809017
-1.00987 0.835439 -0.66983 0.637424 -0.844328
-0.954881 0.789946 -0.631224 0.637424 -0.876306
-0.895036 0.740438 -0.580734 0.637424 -0.904827
-0.830801 0.687299 -0.51938 0.637424 -0.929776
-0.762696 0.630957 -0.448361 0.637424 -0.951056
-0.691287 0.571882 -0.369033 0.637424 -0.968583
-0.617183 0.510578 -0.282889 0.637424 -0.982287
-0.541028 0.447577 -0.191533 0.637424 -0.992115
-0.46349 0.383432 -0.0966551 0.637424 -0.998027
-0.385257 0.318713 -1.0085e-06 0.637424 -1
-0.307025 0.253993 0.0966531 0.637424 -0.998027
-0.229487 0.189848 0.191531 0.637424 -0.992115
-0.153332 0.126847 0.282887 0.637424 -0.982287
-0.0792283 0.0655433 0.369031 0.637424 -0.968583
-0.00781899 0.00646843 0.448359 0.637424 -0.951057
--0.0602868 -0.0498735 0.519379 0.637424 -0.929777
--0.124522 -0.103013 0.580733 0.637424 -0.904827
--0.184367 -0.152521 0.631223 0.637424 -0.876307
--0.239358 -0.198014 0.669829 0.637424 -0.844328
--0.289092 -0.239158 0.695725 0.637424 -0.809017
--0.333229 -0.275671 0.708296 0.637424 -0.770514
--0.3715 -0.307331 0.707142 0.637424 -0.728969
--0.403704 -0.333973 0.692095 0.637424 -0.684548
--0.429714 -0.35549 0.663214 0.637424 -0.637425
--0.449477 -0.371839 0.620787 0.637424 -0.587786
--0.46301 -0.383035 0.565329 0.637424 -0.535828
--0.470403 -0.389151 0.497575 0.637424 -0.481754
--0.471813 -0.390318 0.418463 0.637424 -0.42578
--0.467463 -0.386719 0.329128 0.637424 -0.368125
--0.457636 -0.378589 0.230879 0.637424 -0.309018
--0.442667 -0.366206 0.125179 0.637424 -0.248691
--0.422945 -0.34989 0.0136252 0.637424 -0.187382
--0.398897 -0.329996 -0.102077 0.637424 -0.125334
--0.370987 -0.306907 -0.220144 0.637424 -0.0627915
--0.339705 -0.281028 -0.338736 0.637424 -9.80385e-07
--0.305562 -0.252783 -0.455991 0.637424 0.0627895
--0.26908 -0.222602 -0.570053 0.637424 0.125332
--0.230783 -0.19092 -0.679097 0.637424 0.18738
--0.191191 -0.158167 -0.781367 0.637424 0.248689
--0.15081 -0.124761 -0.875193 0.637424 0.309016
--0.110128 -0.0911055 -0.959026 0.637424 0.368124
--0.069603 -0.0575806 -1.03146 0.637424 0.425778
--0.0296611 -0.0245377 -1.09125 0.637424 0.481753
-0.00931271 0.00770414 -1.13734 0.637424 0.535826
-0.0469778 0.0388634 -1.16888 0.637424 0.587784
-0.0830428 0.068699 -1.18522 0.637424 0.637423
-0.117269 0.0970134 -1.18595 0.637424 0.684546
-0.149473 0.123655 -1.17091 0.637424 0.728968
-0.179527 0.148518 -1.14014 0.637424 0.770513
-0.207362 0.171545 -1.09394 0.637424 0.809016
-0.232964 0.192725 -1.03284 0.637424 0.844327
-0.256375 0.212092 -0.957602 0.637424 0.876306
-0.277688 0.229724 -0.869191 0.637424 0.904827
-0.297048 0.24574 -0.768777 0.637424 0.929776
-0.314644 0.260296 -0.657714 0.637424 0.951056
-0.330705 0.273582 -0.537516 0.637424 0.968583
-0.345493 0.285817 -0.409837 0.637424 0.982287
-0.359303 0.297241 -0.276445 0.637424 0.992115
-0.372448 0.308116 -0.139196 0.637424 0.998027
-0.364484 0.342273 0 0.684547 1
-0.373409 0.350654 0.139647 0.684547 0.998027
-0.382696 0.359376 0.277364 0.684547 0.992115
-0.392701 0.36877 0.411253 0.684547 0.982287
-0.403762 0.379157 0.539472 0.684547 0.968583
-0.416196 0.390834 0.660266 0.684547 0.951057
-0.430292 0.404071 0.771991 0.684547 0.929777
-0.4463 0.419103 0.873145 0.684547 0.904827
-0.46443 0.436129 0.962381 0.684547 0.876307
-0.484844 0.455299 1.03854 0.684547 0.844328
-0.507655 0.47672 1.10065 0.684547 0.809017
-0.532918 0.500443 1.14796 0.684547 0.770513
-0.560634 0.52647 1.17994 0.684547 0.728969
-0.590741 0.554743 1.19629 0.684547 0.684547
-0.623123 0.585151 1.19695 0.684547 0.637424
-0.657601 0.617528 1.18209 0.684547 0.587785
-0.69394 0.651653 1.1521 0.684547 0.535827
-0.731849 0.687252 1.10763 0.684547 0.481754
-0.770988 0.724006 1.04949 0.684547 0.42578
-0.810967 0.761549 0.97875 0.684547 0.368125
-0.851356 0.799477 0.896616 0.684547 0.309017
-0.891689 0.837352 0.804483 0.684547 0.24869
-0.93147 0.874708 0.703878 0.684547 0.187382
-0.970181 0.911061 0.596448 0.684547 0.125334
-1.00729 0.945909 0.483931 0.684547 0.0627908
-1.04226 0.978749 0.368125 0.684547 3.26795e-07
-1.07456 1.00908 0.250867 0.684547 -0.0627902
-1.10365 1.0364 0.133996 0.684547 -0.125333
-1.12904 1.06024 0.0193311 0.684547 -0.187381
-1.15025 1.08015 -0.0913634 0.684547 -0.24869
-1.16682 1.09572 -0.196401 0.684547 -0.309017
-1.17837 1.10656 -0.294202 0.684547 -0.368124
-1.18452 1.11234 -0.383316 0.684547 -0.425779
-1.185 1.11279 -0.462446 0.684547 -0.481753
-1.17956 1.10768 -0.530469 0.684547 -0.535826
-1.16804 1.09686 -0.586451 0.684547 -0.587785
-1.15032 1.08022 -0.629663 0.684547 -0.637424
-1.12639 1.05775 -0.65959 0.684547 -0.684547
-1.09628 1.02947 -0.675943 0.684547 -0.728968
-1.06011 0.995514 -0.678656 0.684547 -0.770513
-1.01809 0.95605 -0.667892 0.684547 -0.809017
-0.970468 0.91133 -0.644036 0.684547 -0.844328
-0.917583 0.861668 -0.607691 0.684547 -0.876306
-0.859837 0.80744 -0.559666 0.684547 -0.904827
-0.797691 0.749081 -0.500961 0.684547 -0.929776
-0.731663 0.687077 -0.432753 0.684547 -0.951056
-0.662321 0.62196 -0.356375 0.684547 -0.968583
-0.590275 0.554305 -0.273295 0.684547 -0.982287
-0.516169 0.484715 -0.185089 0.684547 -0.992115
-0.440677 0.413823 -0.0934181 0.684547 -0.998027
-0.364485 0.342274 -9.74782e-07 0.684547 -1
-0.288294 0.270726 0.0934162 0.684547 -0.998027
-0.212801 0.199833 0.185087 0.684547 -0.992115
-0.138696 0.130244 0.273293 0.684547 -0.982287
-0.0666494 0.062588 0.356374 0.684547 -0.968583
--0.00269268 -0.00252859 0.432751 0.684547 -0.951057
--0.0687207 -0.064533 0.500959 0.684547 -0.929777
--0.130867 -0.122892 0.559665 0.684547 -0.904827
--0.188613 -0.17712 0.60769 0.684547 -0.876307
--0.241498 -0.226782 0.644036 0.684547 -0.844328
--0.28912 -0.271502 0.667892 0.684547 -0.809017
--0.331145 -0.310966 0.678656 0.684547 -0.770514
--0.367308 -0.344925 0.675943 0.684547 -0.728969
--0.397416 -0.373198 0.659591 0.684547 -0.684548
--0.42135 -0.395674 0.629663 0.684547 -0.637425
--0.439067 -0.412311 0.586452 0.684547 -0.587786
--0.450594 -0.423136 0.53047 0.684547 -0.535828
--0.456033 -0.428244 0.462447 0.684547 -0.481754
--0.455556 -0.427795 0.383317 0.684547 -0.42578
--0.449397 -0.422012 0.294204 0.684547 -0.368125
--0.437854 -0.411172 0.196403 0.684547 -0.309018
--0.421279 -0.395608 0.0913657 0.684547 -0.248691
--0.400075 -0.375696 -0.0193287 0.684547 -0.187382
--0.374686 -0.351853 -0.133994 0.684547 -0.125334
--0.34559 -0.324531 -0.250864 0.684547 -0.0627915
--0.313294 -0.294203 -0.368123 0.684547 -9.80385e-07
--0.278323 -0.261363 -0.483928 0.684547 0.0627895
--0.241214 -0.226515 -0.596446 0.684547 0.125332
--0.202502 -0.190162 -0.703876 0.684547 0.18738
--0.162721 -0.152806 -0.804481 0.684547 0.248689
--0.122389 -0.114931 -0.896615 0.684547 0.309016
--0.0819993 -0.0770024 -0.978748 0.684547 0.368124
--0.04202 -0.0394594 -1.04949 0.684547 0.425778
--0.00288125 -0.00270568 -1.10763 0.684547 0.481753
-0.0350283 0.0328937 -1.1521 0.684547 0.535826
-0.071367 0.0670181 -1.18209 0.684547 0.587784
-0.105845 0.0993949 -1.19695 0.684547 0.637423
-0.138227 0.129803 -1.19629 0.684547 0.684546
-0.168335 0.158077 -1.17994 0.684547 0.728968
-0.19605 0.184103 -1.14796 0.684547 0.770513
-0.221313 0.207827 -1.10065 0.684547 0.809016
-0.244124 0.229247 -1.03854 0.684547 0.844327
-0.264538 0.248418 -0.962383 0.684547 0.876306
-0.282668 0.265443 -0.873147 0.684547 0.904827
-0.298676 0.280476 -0.771994 0.684547 0.929776
-0.312772 0.293712 -0.660268 0.684547 0.951056
-0.325207 0.305389 -0.539475 0.684547 0.968583
-0.336268 0.315776 -0.411256 0.684547 0.982287
-0.346272 0.325171 -0.277367 0.684547 0.992115
-0.355559 0.333892 -0.139649 0.684547 0.998027
-0.342274 0.364484 0 0.728969 1
-0.347648 0.370207 0.139962 0.728969 0.998027
-0.353403 0.376336 0.278012 0.728969 0.992115
-0.359915 0.38327 0.412266 0.728969 0.982287
-0.367539 0.39139 0.540898 0.728969 0.968583
-0.376613 0.401052 0.662168 0.728969 0.951057
-0.387441 0.412583 0.774446 0.728969 0.929777
-0.400291 0.426267 0.876239 0.728969 0.904827
-0.415389 0.442344 0.966213 0.728969 0.876307
-0.432913 0.461005 1.04321 0.728969 0.844328
-0.452987 0.482382 1.10627 0.728969 0.809017
-0.475682 0.50655 1.15465 0.728969 0.770513
-0.501008 0.533519 1.18781 0.728969 0.728969
-0.528915 0.563238 1.20545 0.728969 0.684547
-0.559295 0.595588 1.20751 0.728969 0.637424
-0.591975 0.630389 1.19414 0.728969 0.587785
-0.626727 0.667397 1.16573 0.728969 0.535827
-0.663266 0.706306 1.12291 0.728969 0.481754
-0.701251 0.746756 1.06649 0.728969 0.42578
-0.740297 0.788336 0.997505 0.728969 0.368125
-0.779972 0.830586 0.917153 0.728969 0.309017
-0.81981 0.873008 0.826803 0.728969 0.24869
-0.859311 0.915073 0.727962 0.728969 0.187382
-0.897955 0.956225 0.622253 0.728969 0.125334
-0.935206 0.995893 0.51139 0.728969 0.0627908
-0.97052 1.0335 0.397148 0.728969 3.26795e-07
-1.00335 1.06846 0.28134 0.728969 -0.0627902
-1.03318 1.10022 0.165781 0.728969 -0.125333
-1.05947 1.12822 0.0522659 0.728969 -0.187381
-1.08176 1.15195 -0.0574603 0.728969 -0.24869
-1.09957 1.17092 -0.161732 0.728969 -0.309017
-1.11251 1.1847 -0.258987 0.728969 -0.368124
-1.1202 1.1929 -0.347791 0.728969 -0.425779
-1.12235 1.19519 -0.426862 0.728969 -0.481753
-1.11871 1.19131 -0.495086 0.728969 -0.535826
-1.1091 1.18107 -0.551537 0.728969 -0.587785
-1.0934 1.16435 -0.595491 0.728969 -0.637424
-1.07158 1.14111 -0.626435 0.728969 -0.684547
-1.04367 1.11139 -0.644077 0.728969 -0.728968
-1.00978 1.07531 -0.648347 0.728969 -0.770513
-0.970108 1.03306 -0.639399 0.728969 -0.809017
-0.924897 0.984915 -0.617607 0.728969 -0.844328
-0.874479 0.931225 -0.583559 0.728969 -0.876306
-0.819245 0.872407 -0.538045 0.728969 -0.904827
-0.759652 0.808947 -0.482047 0.728969 -0.929776
-0.696212 0.74139 -0.416718 0.728969 -0.951056
-0.629485 0.670334 -0.343366 0.728969 -0.968583
-0.560077 0.596421 -0.263431 0.728969 -0.982287
-0.488625 0.520333 -0.178461 0.728969 -0.992115
-0.415796 0.442778 -0.090089 0.728969 -0.998027
-0.342274 0.364485 -9.40098e-07 0.728969 -1
-0.268753 0.286192 0.0900871 0.728969 -0.998027
-0.195924 0.208638 0.17846 0.728969 -0.992115
-0.124472 0.132549 0.263429 0.728969 -0.982287
-0.0550632 0.0586363 0.343364 0.728969 -0.968583
--0.0116635 -0.0124204 0.416716 0.728969 -0.951057
--0.075104 -0.0799776 0.482046 0.728969 -0.929777
--0.134697 -0.143437 0.538044 0.728969 -0.904827
--0.18993 -0.202255 0.583558 0.728969 -0.876307
--0.240349 -0.255946 0.617606 0.728969 -0.844328
--0.28556 -0.304091 0.639399 0.728969 -0.809017
--0.325236 -0.346341 0.648347 0.728969 -0.770514
--0.35912 -0.382424 0.644077 0.728969 -0.728969
--0.387028 -0.412143 0.626436 0.728969 -0.684548
--0.408849 -0.43538 0.595492 0.728969 -0.637425
--0.424549 -0.452098 0.551538 0.728969 -0.587786
--0.434164 -0.462338 0.495087 0.728969 -0.535828
--0.437807 -0.466217 0.426864 0.728969 -0.481754
--0.435657 -0.463928 0.347793 0.728969 -0.42578
--0.427961 -0.455732 0.258989 0.728969 -0.368125
--0.415024 -0.441955 0.161734 0.728969 -0.309018
--0.397208 -0.422984 0.0574626 0.728969 -0.248691
--0.374926 -0.399255 -0.0522635 0.728969 -0.187382
--0.34863 -0.371253 -0.165778 0.728969 -0.125334
--0.318807 -0.339495 -0.281337 0.728969 -0.0627915
--0.285973 -0.304531 -0.397146 0.728969 -9.80385e-07
--0.25066 -0.266925 -0.511388 0.728969 0.0627895
--0.213409 -0.227257 -0.622251 0.728969 0.125332
--0.174765 -0.186105 -0.72796 0.728969 0.18738
--0.135263 -0.144041 -0.826801 0.728969 0.248689
--0.0954258 -0.101618 -0.917151 0.728969 0.309016
--0.0557504 -0.0593681 -0.997504 0.728969 0.368124
--0.0167047 -0.0177887 -1.06649 0.728969 0.425778
-0.0212809 0.0226618 -1.12291 0.728969 0.481753
-0.0578191 0.0615711 -1.16573 0.728969 0.535826
-0.0925713 0.0985784 -1.19414 0.728969 0.587784
-0.125252 0.13338 -1.20751 0.728969 0.637423
-0.155631 0.16573 -1.20545 0.728969 0.684546
-0.183539 0.195449 -1.18781 0.728969 0.728968
-0.208865 0.222418 -1.15465 0.728969 0.770513
-0.23156 0.246586 -1.10628 0.728969 0.809016
-0.251634 0.267963 -1.04321 0.728969 0.844327
-0.269158 0.286624 -0.966215 0.728969 0.876306
-0.284256 0.302701 -0.876241 0.728969 0.904827
-0.297106 0.316385 -0.774448 0.728969 0.929776
-0.307934 0.327916 -0.66217 0.728969 0.951056
-0.317008 0.337579 -0.540901 0.728969 0.968583
-0.324633 0.345698 -0.412269 0.728969 0.982287
-0.331144 0.352632 -0.278015 0.728969 0.992115
-0.336899 0.358761 -0.139965 0.728969 0.998027
-0.318712 0.385257 0 0.770513 1
-0.320911 0.387915 0.14014 0.770513 0.998027
-0.323504 0.391049 0.278386 0.770513 0.992115
-0.326876 0.395125 0.412872 0.770513 0.982287
-0.331397 0.40059 0.541791 0.770513 0.968583
-0.337414 0.407864 0.663417 0.770513 0.951057
-0.345244 0.417328 0.776136 0.770513 0.929777
-0.355165 0.429321 0.878469 0.770513 0.904827
-0.367415 0.444129 0.969091 0.770513 0.876307
-0.382183 0.46198 1.04686 0.770513 0.844328
-0.399604 0.483038 1.11081 0.770513 0.809017
-0.419757 0.507399 1.1602 0.770513 0.770513
-0.442664 0.535089 1.19451 0.770513 0.728969
-0.468285 0.566059 1.21342 0.770513 0.684547
-0.496517 0.600186 1.21687 0.770513 0.637424
-0.527201 0.637276 1.205 0.770513 0.587785
-0.560114 0.677061 1.17821 0.770513 0.535827
-0.594977 0.719204 1.13708 0.770513 0.481754
-0.63146 0.763304 1.08244 0.770513 0.42578
-0.669181 0.808901 1.01528 0.770513 0.368125
-0.707716 0.855481 0.936784 0.770513 0.309017
-0.746602 0.902486 0.848307 0.770513 0.24869
-0.785345 0.949318 0.751327 0.770513 0.187382
-0.823428 0.995353 0.647444 0.770513 0.125334
-0.860317 1.03994 0.538344 0.770513 0.0627908
-0.895471 1.08244 0.42578 0.770513 3.26795e-07
-0.928348 1.12218 0.311535 0.770513 -0.0627902
-0.958418 1.15853 0.197401 0.770513 -0.125333
-0.985164 1.19086 0.0851491 0.770513 -0.187381
-1.0081 1.21858 -0.0235006 0.770513 -0.24869
-1.02677 1.24115 -0.126903 0.770513 -0.309017
-1.04076 1.25806 -0.223517 0.770513 -0.368124
-1.0497 1.26887 -0.311924 0.770513 -0.425779
-1.05328 1.2732 -0.390857 0.770513 -0.481753
-1.05126 1.27075 -0.459214 0.770513 -0.535826
-1.04344 1.2613 -0.516079 0.770513 -0.587785
-1.02971 1.2447 -0.560731 0.770513 -0.637424
-1.01002 1.2209 -0.592662 0.770513 -0.684547
-0.984397 1.18993 -0.611576 0.770513 -0.728968
-0.952947 1.15191 -0.617398 0.770513 -0.770513
-0.915841 1.10706 -0.610275 0.770513 -0.809017
-0.873327 1.05567 -0.590568 0.770513 -0.844328
-0.82572 0.998124 -0.55885 0.770513 -0.876306
-0.773403 0.934884 -0.515894 0.770513 -0.904827
-0.716819 0.866485 -0.462658 0.770513 -0.929776
-0.656467 0.793532 -0.400272 0.770513 -0.951056
-0.592896 0.716687 -0.330017 0.770513 -0.968583
-0.526696 0.636666 -0.253307 0.770513 -0.982287
-0.458495 0.554225 -0.171658 0.770513 -0.992115
-0.388943 0.470152 -0.0866709 0.770513 -0.998027
-0.318713 0.385257 -9.04487e-07 0.770513 -1
-0.248482 0.300363 0.0866691 0.770513 -0.998027
-0.178931 0.21629 0.171656 0.770513 -0.992115
-0.110729 0.133849 0.253305 0.770513 -0.982287
-0.0445299 0.0538274 0.330016 0.770513 -0.968583
--0.0190415 -0.0230172 0.40027 0.770513 -0.951057
--0.0793937 -0.0959704 0.462656 0.770513 -0.929777
--0.135978 -0.164369 0.515893 0.770513 -0.904827
--0.188295 -0.22761 0.55885 0.770513 -0.876307
--0.235902 -0.285156 0.590568 0.770513 -0.844328
--0.278416 -0.336547 0.610275 0.770513 -0.809017
--0.315522 -0.3814 0.617398 0.770513 -0.770514
--0.346972 -0.419417 0.611576 0.770513 -0.728969
--0.372593 -0.450387 0.592662 0.770513 -0.684548
--0.392283 -0.474188 0.560732 0.770513 -0.637425
--0.406014 -0.490786 0.51608 0.770513 -0.587786
--0.413833 -0.500238 0.459216 0.770513 -0.535828
--0.415858 -0.502685 0.390859 0.770513 -0.481754
--0.412274 -0.498353 0.311926 0.770513 -0.42578
--0.403332 -0.487545 0.223519 0.770513 -0.368125
--0.389344 -0.470636 0.126905 0.770513 -0.309018
--0.370676 -0.44807 0.0235028 0.770513 -0.248691
--0.347741 -0.420346 -0.0851468 0.770513 -0.187382
--0.320994 -0.388015 -0.197399 0.770513 -0.125334
--0.290925 -0.351667 -0.311532 0.770513 -0.0627915
--0.258047 -0.311925 -0.425777 0.770513 -9.80385e-07
--0.222893 -0.269432 -0.538342 0.770513 0.0627895
--0.186004 -0.224841 -0.647441 0.770513 0.125332
--0.147921 -0.178806 -0.751325 0.770513 0.18738
--0.109178 -0.131974 -0.848305 0.770513 0.248689
--0.0702926 -0.0849691 -0.936783 0.770513 0.309016
--0.0317578 -0.0383885 -1.01528 0.770513 0.368124
-0.00596342 0.00720853 -1.08244 0.770513 0.425778
-0.0424463 0.0513087 -1.13708 0.770513 0.481753
-0.0773099 0.0934516 -1.17821 0.770513 0.535826
-0.110223 0.133236 -1.205 0.770513 0.587784
-0.140906 0.170326 -1.21687 0.770513 0.637423
-0.169139 0.204454 -1.21342 0.770513 0.684546
-0.19476 0.235424 -1.19451 0.770513 0.728968
-0.217667 0.263114 -1.1602 0.770513 0.770513
-0.23782 0.287475 -1.11081 0.770513 0.809016
-0.255241 0.308533 -1.04686 0.770513 0.844327
-0.270008 0.326384 -0.969093 0.770513 0.876306
-0.282259 0.341192 -0.878471 0.770513 0.904827
-0.29218 0.353185 -0.776139 0.770513 0.929776
-0.30001 0.362649 -0.663419 0.770513 0.951056
-0.306027 0.369923 -0.541793 0.770513 0.968583
-0.310548 0.375388 -0.412875 0.770513 0.982287
-0.31392 0.379464 -0.278388 0.770513 0.992115
-0.316513 0.382598 -0.140143 0.770513 0.998027
-0.293893 0.404508 0 0.809017 1
-0.293332 0.403737 0.140179 0.809017 0.998027
-0.29317 0.403513 0.278484 0.809017 0.992115
-0.293795 0.404373 0.413071 0.809017 0.982287
-0.295581 0.406833 0.542148 0.809017 0.968583
-0.298881 0.411375 0.664011 0.809017 0.951057
-0.304016 0.418443 0.777061 0.809017 0.929777
-0.311271 0.428428 0.879832 0.809017 0.904827
-0.320889 0.441666 0.971013 0.809017 0.876307
-0.333064 0.458423 1.04947 0.809017 0.844328
-0.34794 0.478897 1.11425 0.809017 0.809017
-0.365602 0.503208 1.16461 0.809017 0.770513
-0.386082 0.531396 1.20003 0.809017 0.728969
-0.409346 0.563416 1.22019 0.809017 0.684547
-0.435304 0.599144 1.22503 0.809017 0.637424
-0.463803 0.63837 1.21468 0.809017 0.587785
-0.494632 0.680803 1.18952 0.809017 0.535827
-0.527524 0.726075 1.15014 0.809017 0.481754
-0.562159 0.773745 1.09732 0.809017 0.42578
-0.598165 0.823303 1.03205 0.809017 0.368125
-0.635131 0.874182 0.955491 0.809017 0.309017
-0.672604 0.92576 0.868974 0.809017 0.24869
-0.710103 0.977373 0.773951 0.809017 0.187382
-0.747121 1.02832 0.671995 0.809017 0.125334
-0.783135 1.07789 0.564768 0.809017 0.0627908
-0.817613 1.12535 0.453991 0.809017 3.26795e-07
-0.850025 1.16996 0.341422 0.809017 -0.0627902
-0.879846 1.211 0.228827 0.809017 -0.125333
-0.90657 1.24779 0.117948 0.809017 -0.187381
-0.929715 1.27964 0.0104824 0.809017 -0.24869
-0.94883 1.30595 -0.0919494 0.809017 -0.309017
-0.963506 1.32615 -0.187826 0.809017 -0.368124
-0.97338 1.33974 -0.275749 0.809017 -0.425779
-0.978141 1.34629 -0.354466 0.809017 -0.481753
-0.977537 1.34546 -0.42289 0.809017 -0.535826
-0.97138 1.33699 -0.480111 0.809017 -0.587785
-0.959549 1.32071 -0.525418 0.809017 -0.637424
-0.941991 1.29654 -0.558303 0.809017 -0.684547
-0.918727 1.26452 -0.57847 0.809017 -0.728968
-0.889847 1.22477 -0.58584 0.809017 -0.770513
-0.855517 1.17752 -0.580549 0.809017 -0.809017
-0.815969 1.12308 -0.562947 0.809017 -0.844328
-0.771505 1.06189 -0.53359 0.809017 -0.876306
-0.722493 0.994426 -0.493233 0.809017 -0.904827
-0.669358 0.921292 -0.442811 0.809017 -0.929776
-0.612582 0.843146 -0.38343 0.809017 -0.951056
-0.552693 0.760716 -0.316344 0.809017 -0.968583
-0.490262 0.674788 -0.242933 0.809017 -0.982287
-0.425896 0.586195 -0.164685 0.809017 -0.992115
-0.360223 0.495804 -0.0831673 0.809017 -0.998027
-0.293893 0.404509 -8.67982e-07 0.809017 -1
-0.227564 0.313214 0.0831656 0.809017 -0.998027
-0.161891 0.222824 0.164683 0.809017 -0.992115
-0.0975243 0.134231 0.242931 0.809017 -0.982287
-0.0350939 0.0483026 0.316342 0.809017 -0.968583
--0.0247951 -0.0341275 0.383429 0.809017 -0.951057
--0.0815718 -0.112274 0.44281 0.809017 -0.929777
--0.134707 -0.185408 0.493232 0.809017 -0.904827
--0.183719 -0.252868 0.53359 0.809017 -0.876307
--0.228182 -0.314066 0.562946 0.809017 -0.844328
--0.267731 -0.368499 0.580549 0.809017 -0.809017
--0.302061 -0.415752 0.58584 0.809017 -0.770514
--0.330941 -0.455501 0.578471 0.809017 -0.728969
--0.354205 -0.487522 0.558304 0.809017 -0.684548
--0.371763 -0.511688 0.525419 0.809017 -0.637425
--0.383595 -0.527972 0.480112 0.809017 -0.587786
--0.389751 -0.536447 0.422891 0.809017 -0.535828
--0.390355 -0.537278 0.354468 0.809017 -0.481754
--0.385595 -0.530725 0.275751 0.809017 -0.42578
--0.375721 -0.517136 0.187828 0.809017 -0.368125
--0.361045 -0.496936 0.0919514 0.809017 -0.309018
--0.34193 -0.470626 -0.0104802 0.809017 -0.248691
--0.318785 -0.43877 -0.117946 0.809017 -0.187382
--0.292061 -0.401988 -0.228825 0.809017 -0.125334
--0.26224 -0.360942 -0.34142 0.809017 -0.0627915
--0.229828 -0.316332 -0.453989 0.809017 -9.80385e-07
--0.19535 -0.268876 -0.564766 0.809017 0.0627895
--0.159336 -0.219307 -0.671993 0.809017 0.125332
--0.122318 -0.168357 -0.773949 0.809017 0.18738
--0.0848195 -0.116744 -0.868972 0.809017 0.248689
--0.047346 -0.0651661 -0.95549 0.809017 0.309016
--0.0103804 -0.0142874 -1.03204 0.809017 0.368124
-0.0256261 0.0352713 -1.09731 0.809017 0.425778
-0.0602602 0.082941 -1.15014 0.809017 0.481753
-0.0931523 0.128213 -1.18952 0.809017 0.535826
-0.123982 0.170646 -1.21468 0.809017 0.587784
-0.152481 0.209872 -1.22503 0.809017 0.637423
-0.178439 0.2456 -1.22019 0.809017 0.684546
-0.201703 0.277621 -1.20003 0.809017 0.728968
-0.222183 0.305808 -1.16461 0.809017 0.770513
-0.239846 0.330119 -1.11425 0.809017 0.809016
-0.254721 0.350593 -1.04947 0.809017 0.844327
-0.266896 0.367351 -0.971015 0.809017 0.876306
-0.276514 0.380588 -0.879834 0.809017 0.904827
-0.283769 0.390574 -0.777063 0.809017 0.929776
-0.288904 0.397642 -0.664014 0.809017 0.951056
-0.292204 0.402184 -0.542151 0.809017 0.968583
-0.293991 0.404644 -0.413073 0.809017 0.982287
-0.294616 0.405504 -0.278487 0.809017 0.992115
-0.294453 0.40528 -0.140182 0.809017 0.998027
-0.267913 0.422164 0 0.844328 1
-0.265044 0.417642 0.14008 0.844328 0.998027
-0.262568 0.41374 0.278308 0.844328 0.992115
-0.260872 0.411068 0.412862 0.844328 0.982287
-0.260327 0.41021 0.541971 0.844328 0.968583
-0.261283 0.411716 0.66395 0.844328 0.951057
-0.264059 0.416091 0.777218 0.844328 0.929777
-0.26894 0.423781 0.880326 0.844328 0.904827
-0.276168 0.435172 0.971977 0.844328 0.876307
-0.285941 0.450571 1.05104 0.844328 0.844328
-0.298405 0.470211 1.11658 0.844328 0.809017
-0.313651 0.494234 1.16787 0.844328 0.770513
-0.331715 0.522698 1.20436 0.844328 0.728969
-0.352573 0.555565 1.22576 0.844328 0.684547
-0.376143 0.592706 1.23198 0.844328 0.637424
-0.402284 0.633898 1.22316 0.844328 0.587785
-0.430798 0.678828 1.19966 0.844328 0.535827
-0.46143 0.727097 1.16205 0.844328 0.481754
-0.493876 0.778224 1.11111 0.844328 0.42578
-0.527782 0.831651 1.0478 0.844328 0.368125
-0.562752 0.886755 0.973255 0.844328 0.309017
-0.598352 0.942852 0.888783 0.844328 0.24869
-0.634119 0.999211 0.795811 0.844328 0.187382
-0.669564 1.05506 0.695884 0.844328 0.125334
-0.704182 1.10961 0.590634 0.844328 0.0627908
-0.737462 1.16205 0.481754 0.844328 3.26795e-07
-0.768889 1.21157 0.370973 0.844328 -0.0627902
-0.797956 1.25738 0.260027 0.844328 -0.125333
-0.824172 1.29869 0.150631 0.844328 -0.187381
-0.847069 1.33477 0.044455 0.844328 -0.24869
-0.86621 1.36493 -0.0569047 0.844328 -0.309017
-0.881195 1.38854 -0.151949 0.844328 -0.368124
-0.891672 1.40505 -0.239302 0.844328 -0.425779
-0.897334 1.41397 -0.317726 0.844328 -0.481753
-0.897936 1.41492 -0.386148 0.844328 -0.535826
-0.893289 1.4076 -0.44367 0.844328 -0.587785
-0.883271 1.39181 -0.489587 0.844328 -0.637424
-0.867827 1.36748 -0.523394 0.844328 -0.684547
-0.846969 1.33461 -0.544794 0.844328 -0.728968
-0.82078 1.29334 -0.553704 0.844328 -0.770513
-0.78941 1.24391 -0.55025 0.844328 -0.809017
-0.75308 1.18666 -0.53477 0.844328 -0.844328
-0.712073 1.12205 -0.507804 0.844328 -0.876306
-0.666736 1.05061 -0.470086 0.844328 -0.904827
-0.617473 0.972981 -0.422528 0.844328 -0.929776
-0.564741 0.88989 -0.366211 0.844328 -0.951056
-0.509044 0.802125 -0.302357 0.844328 -0.968583
-0.450925 0.710544 -0.232319 0.844328 -0.982287
-0.39096 0.616054 -0.15755 0.844328 -0.992115
-0.32975 0.519603 -0.0795816 0.844328 -0.998027
-0.267914 0.422165 -8.30621e-07 0.844328 -1
-0.206078 0.324727 0.07958 0.844328 -0.998027
-0.144868 0.228276 0.157548 0.844328 -0.992115
-0.0849031 0.133786 0.232318 0.844328 -0.982287
-0.0267839 0.0422046 0.302356 0.844328 -0.968583
--0.0289133 -0.0455601 0.366209 0.844328 -0.951057
--0.081645 -0.128652 0.422527 0.844328 -0.929777
--0.130908 -0.206277 0.470085 0.844328 -0.904827
--0.176245 -0.277717 0.507803 0.844328 -0.876307
--0.217252 -0.342334 0.534769 0.844328 -0.844328
--0.253582 -0.399582 0.550249 0.844328 -0.809017
--0.284952 -0.449012 0.553704 0.844328 -0.770514
--0.311142 -0.490281 0.544795 0.844328 -0.728969
--0.332 -0.523148 0.523395 0.844328 -0.684548
--0.347444 -0.547484 0.489588 0.844328 -0.637425
--0.357462 -0.563269 0.443671 0.844328 -0.587786
--0.362109 -0.570592 0.386149 0.844328 -0.535828
--0.361507 -0.569644 0.317727 0.844328 -0.481754
--0.355845 -0.560721 0.239303 0.844328 -0.42578
--0.345369 -0.544214 0.151951 0.844328 -0.368125
--0.330383 -0.5206 0.0569067 0.844328 -0.309018
--0.311242 -0.490439 -0.0444529 0.844328 -0.248691
--0.288345 -0.454359 -0.150629 0.844328 -0.187382
--0.262129 -0.413049 -0.260025 0.844328 -0.125334
--0.233062 -0.367247 -0.370971 0.844328 -0.0627915
--0.201636 -0.317727 -0.481752 0.844328 -9.80385e-07
--0.168356 -0.265287 -0.590632 0.844328 0.0627895
--0.133737 -0.210736 -0.695882 0.844328 0.125332
--0.0982925 -0.154884 -0.795809 0.844328 0.18738
--0.0625259 -0.098525 -0.888781 0.844328 0.248689
--0.0269257 -0.042428 -0.973254 0.844328 0.309016
-0.00804413 0.0126755 -1.0478 0.844328 0.368124
-0.0419501 0.0661028 -1.11111 0.844328 0.425778
-0.0743961 0.117229 -1.16205 0.844328 0.481753
-0.105029 0.165499 -1.19966 0.844328 0.535826
-0.133543 0.210429 -1.22316 0.844328 0.587784
-0.159684 0.251621 -1.23198 0.844328 0.637423
-0.183254 0.288762 -1.22576 0.844328 0.684546
-0.204112 0.321629 -1.20436 0.844328 0.728968
-0.222176 0.350093 -1.16787 0.844328 0.770513
-0.237422 0.374117 -1.11659 0.844328 0.809016
-0.249885 0.393756 -1.05104 0.844328 0.844327
-0.259658 0.409156 -0.971978 0.844328 0.876306
-0.266887 0.420546 -0.880329 0.844328 0.904827
-0.271768 0.428237 -0.777221 0.844328 0.929776
-0.274544 0.432612 -0.663953 0.844328 0.951056
-0.2755 0.434118 -0.541974 0.844328 0.968583
-0.274955 0.43326 -0.412864 0.844328 0.982287
-0.273259 0.430588 -0.278311 0.844328 0.992115
-0.270783 0.426686 -0.140083 0.844328 0.998027
-0.240877 0.438153 0 0.876307 1
-0.236178 0.429606 0.139843 0.876307 0.998027
-0.231861 0.421754 0.277858 0.876307 0.992115
-0.228301 0.415279 0.412245 0.876307 0.982287
-0.225858 0.410835 0.541259 0.876307 0.968583
-0.224872 0.40904 0.663234 0.876307 0.951057
-0.225652 0.41046 0.776609 0.876307 0.929777
-0.228478 0.4156 0.879952 0.876307 0.904827
-0.233587 0.424893 0.971981 0.876307 0.876307
-0.241173 0.438692 1.05158 0.876307 0.844328
-0.251381 0.457261 1.11782 0.876307 0.809017
-0.264306 0.480771 1.16997 0.876307 0.770513
-0.279986 0.509293 1.20751 0.876307 0.728969
-0.298407 0.542799 1.23012 0.876307 0.684547
-0.319494 0.581156 1.23772 0.876307 0.637424
-0.343118 0.62413 1.23044 0.876307 0.587785
-0.369098 0.671386 1.20862 0.876307 0.535827
-0.397195 0.722494 1.17283 0.876307 0.481754
-0.427123 0.776933 1.12381 0.876307 0.42578
-0.45855 0.834099 1.06251 0.876307 0.368125
-0.491103 0.893313 0.990059 0.876307 0.309017
-0.524373 0.953831 0.907715 0.876307 0.24869
-0.557922 1.01486 0.816886 0.876307 0.187382
-0.591286 1.07554 0.719086 0.876307 0.125334
-0.623989 1.13503 0.615917 0.876307 0.0627908
-0.655543 1.19243 0.509042 0.876307 3.26795e-07
-0.68546 1.24685 0.400158 0.876307 -0.0627902
-0.71326 1.29741 0.29097 0.876307 -0.125333
-0.738474 1.34328 0.183165 0.876307 -0.187381
-0.760657 1.38363 0.0783838 0.876307 -0.24869
-0.779392 1.41771 -0.0218038 0.876307 -0.309017
-0.794297 1.44482 -0.115923 0.876307 -0.368124
-0.805033 1.46435 -0.202618 0.876307 -0.425779
-0.811308 1.47576 -0.280672 0.876307 -0.481753
-0.812884 1.47863 -0.349024 0.876307 -0.535826
-0.809579 1.47262 -0.406791 0.876307 -0.587785
-0.801271 1.45751 -0.453273 0.876307 -0.637424
-0.787904 1.43319 -0.487968 0.876307 -0.684547
-0.769484 1.39969 -0.510581 0.876307 -0.728968
-0.746084 1.35712 -0.521021 0.876307 -0.770513
-0.717842 1.30575 -0.519407 0.876307 -0.809017
-0.684959 1.24594 -0.506065 0.876307 -0.844328
-0.647701 1.17816 -0.481516 0.876307 -0.876306
-0.606388 1.10302 -0.446474 0.876307 -0.904827
-0.561399 1.02118 -0.401828 0.876307 -0.929776
-0.51316 0.933435 -0.34863 0.876307 -0.951056
-0.462142 0.840633 -0.288073 0.876307 -0.968583
-0.408854 0.743703 -0.221476 0.876307 -0.982287
-0.353836 0.643625 -0.150259 0.876307 -0.992115
-0.29765 0.541424 -0.0759174 0.876307 -0.998027
-0.240878 0.438154 -7.9244e-07 0.876307 -1
-0.184105 0.334885 0.0759158 0.876307 -0.998027
-0.127919 0.232684 0.150257 0.876307 -0.992115
-0.0729008 0.132606 0.221475 0.876307 -0.982287
-0.0196126 0.0356752 0.288072 0.876307 -0.968583
--0.0314054 -0.0571262 0.348628 0.876307 -0.951057
--0.0796445 -0.144873 0.401827 0.876307 -0.929777
--0.124634 -0.226708 0.446473 0.876307 -0.904827
--0.165946 -0.301855 0.481516 0.876307 -0.876307
--0.203205 -0.369628 0.506065 0.876307 -0.844328
--0.236087 -0.429441 0.519407 0.876307 -0.809017
--0.26433 -0.480813 0.521021 0.876307 -0.770514
--0.28773 -0.523378 0.510581 0.876307 -0.728969
--0.30615 -0.556884 0.487969 0.876307 -0.684548
--0.319517 -0.5812 0.453273 0.876307 -0.637425
--0.327825 -0.596311 0.406792 0.876307 -0.587786
--0.33113 -0.602323 0.349026 0.876307 -0.535828
--0.329554 -0.599457 0.280673 0.876307 -0.481754
--0.323279 -0.588042 0.20262 0.876307 -0.42578
--0.312543 -0.568513 0.115925 0.876307 -0.368125
--0.297638 -0.541401 0.0218059 0.876307 -0.309018
--0.278903 -0.507323 -0.0783817 0.876307 -0.248691
--0.256721 -0.466973 -0.183163 0.876307 -0.187382
--0.231506 -0.421108 -0.290968 0.876307 -0.125334
--0.203707 -0.370541 -0.400156 0.876307 -0.0627915
--0.173789 -0.316122 -0.50904 0.876307 -9.80385e-07
--0.142235 -0.258725 -0.615915 0.876307 0.0627895
--0.109533 -0.199239 -0.719084 0.876307 0.125332
--0.0761684 -0.13855 -0.816884 0.876307 0.18738
--0.0426202 -0.0775259 -0.907713 0.876307 0.248689
--0.00935013 -0.0170078 -0.990057 0.876307 0.309016
-0.0232031 0.0422063 -1.06251 0.876307 0.368124
-0.0546305 0.0993725 -1.12381 0.876307 0.425778
-0.0845588 0.153812 -1.17282 0.876307 0.481753
-0.112656 0.20492 -1.20862 0.876307 0.535826
-0.138635 0.252176 -1.23044 0.876307 0.587784
-0.16226 0.29515 -1.23772 0.876307 0.637423
-0.183347 0.333507 -1.23012 0.876307 0.684546
-0.201767 0.367013 -1.20751 0.876307 0.728968
-0.217448 0.395536 -1.16997 0.876307 0.770513
-0.230372 0.419046 -1.11782 0.876307 0.809016
-0.240581 0.437615 -1.05158 0.876307 0.844327
-0.248167 0.451413 -0.971983 0.876307 0.876306
-0.253276 0.460707 -0.879954 0.876307 0.904827
-0.256102 0.465847 -0.776611 0.876307 0.929776
-0.256882 0.467267 -0.663236 0.876307 0.951056
-0.255895 0.465472 -0.541262 0.876307 0.968583
-0.253453 0.461028 -0.412248 0.876307 0.982287
-0.249892 0.454552 -0.27786 0.876307 0.992115
-0.245576 0.4467 -0.139845 0.876307 0.998027
-0.21289 0.452413 0 0.904827 1
-0.206869 0.439618 0.139467 0.904827 0.998027
-0.20121 0.427592 0.277133 0.904827 0.992115
-0.196267 0.417089 0.411222 0.904827 0.982287
-0.192384 0.408836 0.540013 0.904827 0.968583
-0.189881 0.403517 0.661863 0.904827 0.951057
-0.189054 0.401761 0.775233 0.904827 0.929777
-0.190168 0.404128 0.87871 0.904827 0.904827
-0.193451 0.411103 0.971026 0.904827 0.876307
-0.199087 0.423082 1.05108 0.904827 0.844328
-0.207219 0.440363 1.11795 0.904827 0.809017
-0.217939 0.463144 1.17092 0.904827 0.770513
-0.231289 0.491514 1.20946 0.904827 0.728969
-0.247258 0.52545 1.23326 0.904827 0.684547
-0.265784 0.56482 1.24223 0.904827 0.637424
-0.286751 0.609377 1.2365 0.904827 0.587785
-0.309993 0.658767 1.21638 0.904827 0.535827
-0.335291 0.71253 1.18244 0.904827 0.481754
-0.362385 0.770106 1.1354 0.904827 0.42578
-0.390967 0.830846 1.07618 0.904827 0.368125
-0.420692 0.894016 1.00589 0.904827 0.309017
-0.451184 0.958814 0.925751 0.904827 0.24869
-0.482034 1.02437 0.837154 0.904827 0.187382
-0.512815 1.08979 0.741578 0.904827 0.125334
-0.543084 1.15411 0.640592 0.904827 0.0627908
-0.572387 1.21638 0.535827 0.904827 3.26795e-07
-0.600272 1.27564 0.428948 0.904827 -0.0627902
-0.62629 1.33093 0.321626 0.904827 -0.125333
-0.650005 1.38133 0.215518 0.904827 -0.187381
-0.671002 1.42595 0.112235 0.904827 -0.24869
-0.688892 1.46397 0.0133185 0.904827 -0.309017
-0.703317 1.49462 -0.0797826 0.904827 -0.368124
-0.713961 1.51724 -0.165735 0.904827 -0.425779
-0.720548 1.53124 -0.243341 0.904827 -0.481753
-0.722854 1.53614 -0.311557 0.904827 -0.535826
-0.720707 1.53158 -0.36951 0.904827 -0.587785
-0.71399 1.51731 -0.416511 0.904827 -0.637424
-0.702646 1.4932 -0.452061 0.904827 -0.684547
-0.686677 1.45926 -0.475863 0.904827 -0.728968
-0.666145 1.41563 -0.487824 0.904827 -0.770513
-0.641175 1.36257 -0.488053 0.904827 -0.809017
-0.611949 1.30046 -0.476861 0.904827 -0.844328
-0.578708 1.22982 -0.454753 0.904827 -0.876306
-0.541745 1.15127 -0.422422 0.904827 -0.904827
-0.501405 1.06554 -0.380732 0.904827 -0.929776
-0.458081 0.97347 -0.330704 0.904827 -0.951056
-0.412203 0.875975 -0.273504 0.904827 -0.968583
-0.364239 0.774046 -0.210415 0.904827 -0.982287
-0.314684 0.668738 -0.14282 0.904827 -0.992115
-0.264057 0.56115 -0.0721783 0.904827 -0.998027
-0.21289 0.452415 -7.53477e-07 0.904827 -1
-0.161723 0.343679 0.0721768 0.904827 -0.998027
-0.111096 0.236091 0.142818 0.904827 -0.992115
-0.0615417 0.130783 0.210413 0.904827 -0.982287
-0.0135777 0.028854 0.273503 0.904827 -0.968583
--0.0323003 -0.0686416 0.330703 0.904827 -0.951057
--0.075625 -0.160711 0.380731 0.904827 -0.929777
--0.115964 -0.246437 0.422422 0.904827 -0.904827
--0.152927 -0.324987 0.454753 0.904827 -0.876307
--0.186169 -0.395629 0.47686 0.904827 -0.844328
--0.215395 -0.457738 0.488053 0.904827 -0.809017
--0.240365 -0.510802 0.487824 0.904827 -0.770514
--0.260897 -0.554434 0.475864 0.904827 -0.728969
--0.276866 -0.588371 0.452061 0.904827 -0.684548
--0.288211 -0.612479 0.416512 0.904827 -0.637425
--0.294928 -0.626753 0.369511 0.904827 -0.587786
--0.297075 -0.631316 0.311558 0.904827 -0.535828
--0.294769 -0.626415 0.243342 0.904827 -0.481754
--0.288181 -0.612416 0.165737 0.904827 -0.42578
--0.277538 -0.589798 0.0797845 0.904827 -0.368125
--0.263113 -0.559143 -0.0133165 0.904827 -0.309018
--0.245223 -0.521125 -0.112233 0.904827 -0.248691
--0.224226 -0.476504 -0.215516 0.904827 -0.187382
--0.200511 -0.426106 -0.321624 0.904827 -0.125334
--0.174493 -0.370816 -0.428945 0.904827 -0.0627915
--0.146608 -0.311558 -0.535825 0.904827 -9.80385e-07
--0.117305 -0.249285 -0.64059 0.904827 0.0627895
--0.0870364 -0.184962 -0.741576 0.904827 0.125332
--0.0562552 -0.119548 -0.837152 0.904827 0.18738
--0.0254048 -0.0539879 -0.925749 0.904827 0.248689
-0.00508645 0.0108093 -1.00588 0.904827 0.309016
-0.0348122 0.0739797 -1.07618 0.904827 0.368124
-0.0633942 0.134719 -1.1354 0.904827 0.425778
-0.0904876 0.192296 -1.18244 0.904827 0.481753
-0.115786 0.246058 -1.21638 0.904827 0.535826
-0.139028 0.295448 -1.2365 0.904827 0.587784
-0.159995 0.340006 -1.24223 0.904827 0.637423
-0.178521 0.379376 -1.23326 0.904827 0.684546
-0.19449 0.413313 -1.20946 0.904827 0.728968
-0.20784 0.441682 -1.17092 0.904827 0.770513
-0.21856 0.464464 -1.11796 0.904827 0.809016
-0.226692 0.481745 -1.05108 0.904827 0.844327
-0.232329 0.493723 -0.971028 0.904827 0.876306
-0.235611 0.500699 -0.878712 0.904827 0.904827
-0.236725 0.503066 -0.775235 0.904827 0.929776
-0.235899 0.50131 -0.661865 0.904827 0.951056
-0.233396 0.495991 -0.540015 0.904827 0.968583
-0.229512 0.487738 -0.411224 0.904827 0.982287
-0.22457 0.477235 -0.277136 0.904827 0.992115
-0.218911 0.465209 -0.13947 0.904827 0.998027
-0.184062 0.464888 0 0.929776 1
-0.177247 0.447673 0.138954 0.929776 0.998027
-0.170764 0.431301 0.276134 0.929776 0.992115
-0.164943 0.416598 0.409793 0.929776 0.982287
-0.160098 0.404361 0.538233 0.929776 0.968583
-0.156526 0.395339 0.659839 0.929776 0.951057
-0.154501 0.390224 0.773092 0.929776 0.929777
-0.154267 0.389633 0.8766 0.929776 0.904827
-0.156036 0.394101 0.969113 0.929776 0.876307
-0.159981 0.404066 1.04954 0.929776 0.844328
-0.166235 0.419862 1.11698 0.929776 0.809017
-0.174886 0.441712 1.17072 0.929776 0.770513
-0.185977 0.469724 1.21022 0.929776 0.728969
-0.199502 0.503885 1.23519 0.929776 0.684547
-0.215408 0.544058 1.24552 0.929776 0.637424
-0.233593 0.589989 1.24134 0.929776 0.587785
-0.25391 0.641303 1.22295 0.929776 0.535827
-0.276165 0.697512 1.19088 0.929776 0.481754
-0.300122 0.758021 1.14586 0.929776 0.42578
-0.325506 0.822134 1.08879 0.929776 0.368125
-0.352007 0.889067 1.02072 0.929776 0.309017
-0.379283 0.957958 0.942874 0.929776 0.24869
-0.406967 1.02788 0.856596 0.929776 0.187382
-0.434672 1.09786 0.763338 0.929776 0.125334
-0.461997 1.16687 0.664635 0.929776 0.0627908
-0.488531 1.23389 0.562084 0.929776 3.26795e-07
-0.513864 1.29787 0.457314 0.929776 -0.0627902
-0.537588 1.35779 0.351965 0.929776 -0.125333
-0.559309 1.41265 0.247659 0.929776 -0.187381
-0.578649 1.4615 0.145976 0.929776 -0.24869
-0.595252 1.50343 0.0484277 0.929776 -0.309017
-0.608795 1.53764 -0.0435633 0.929776 -0.368124
-0.618986 1.56338 -0.128688 0.929776 -0.425779
-0.625576 1.58002 -0.205769 0.929776 -0.481753
-0.628358 1.58705 -0.273782 0.929776 -0.535826
-0.627172 1.58406 -0.331865 0.929776 -0.587785
-0.621911 1.57077 -0.379338 0.929776 -0.637424
-0.612519 1.54705 -0.415707 0.929776 -0.684547
-0.598994 1.51289 -0.440676 0.929776 -0.728968
-0.58139 1.46842 -0.454145 0.929776 -0.770513
-0.559814 1.41393 -0.456216 0.929776 -0.809017
-0.534429 1.34981 -0.447186 0.929776 -0.844328
-0.505447 1.27661 -0.427542 0.929776 -0.876306
-0.473131 1.19499 -0.397953 0.929776 -0.904827
-0.437789 1.10573 -0.359259 0.929776 -0.929776
-0.399771 1.00971 -0.312453 0.929776 -0.951056
-0.359464 0.907902 -0.258665 0.929776 -0.968583
-0.317286 0.801372 -0.199145 0.929776 -0.982287
-0.273681 0.691239 -0.13524 0.929776 -0.992115
-0.229114 0.578676 -0.0683679 0.929776 -0.998027
-0.184063 0.464889 -7.13771e-07 0.929776 -1
-0.139012 0.351103 0.0683665 0.929776 -0.998027
-0.0944447 0.23854 0.135238 0.929776 -0.992115
-0.0508399 0.128407 0.199144 0.929776 -0.982287
-0.0086616 0.0218767 0.258664 0.929776 -0.968583
--0.0316459 -0.0799282 0.312452 0.929776 -0.951057
--0.0696639 -0.175951 0.359259 0.929776 -0.929777
--0.105006 -0.265214 0.397953 0.929776 -0.904827
--0.137322 -0.346835 0.427541 0.929776 -0.876307
--0.166304 -0.420035 0.447185 0.929776 -0.844328
--0.191689 -0.484151 0.456216 0.929776 -0.809017
--0.213265 -0.538645 0.454146 0.929776 -0.770514
--0.230869 -0.583109 0.440676 0.929776 -0.728969
--0.244394 -0.617269 0.415708 0.929776 -0.684548
--0.253787 -0.640991 0.379339 0.929776 -0.637425
--0.259048 -0.654279 0.331866 0.929776 -0.587786
--0.260233 -0.657273 0.273783 0.929776 -0.535828
--0.257451 -0.650248 0.205771 0.929776 -0.481754
--0.250862 -0.633603 0.12869 0.929776 -0.42578
--0.24067 -0.607863 0.0435651 0.929776 -0.368125
--0.227128 -0.573658 -0.0484258 0.929776 -0.309018
--0.210524 -0.531723 -0.145974 0.929776 -0.248691
--0.191185 -0.482878 -0.247657 0.929776 -0.187382
--0.169464 -0.428017 -0.351963 0.929776 -0.125334
--0.14574 -0.368096 -0.457312 0.929776 -0.0627915
--0.120407 -0.304113 -0.562082 0.929776 -9.80385e-07
--0.0938726 -0.237095 -0.664633 0.929776 0.0627895
--0.066548 -0.168081 -0.763336 0.929776 0.125332
--0.0388428 -0.0981057 -0.856594 0.929776 0.18738
--0.0111586 -0.0281833 -0.942872 0.929776 0.248689
-0.0161175 0.040708 -1.02072 0.929776 0.309016
-0.0426182 0.107641 -1.08879 0.929776 0.368124
-0.0680024 0.171754 -1.14586 0.929776 0.425778
-0.0919595 0.232263 -1.19088 0.929776 0.481753
-0.114214 0.288472 -1.22295 0.929776 0.535826
-0.134531 0.339787 -1.24134 0.929776 0.587784
-0.152716 0.385718 -1.24552 0.929776 0.637423
-0.168622 0.425891 -1.23519 0.929776 0.684546
-0.182147 0.460051 -1.21022 0.929776 0.728968
-0.193238 0.488064 -1.17072 0.929776 0.770513
-0.201889 0.509914 -1.11699 0.929776 0.809016
-0.208144 0.52571 -1.04955 0.929776 0.844327
-0.212089 0.535675 -0.969115 0.929776 0.876306
-0.213858 0.540143 -0.876602 0.929776 0.904827
-0.213624 0.539553 -0.773094 0.929776 0.929776
-0.211599 0.534438 -0.659841 0.929776 0.951056
-0.208027 0.525416 -0.538236 0.929776 0.968583
-0.203182 0.513178 -0.409795 0.929776 0.982287
-0.197361 0.498476 -0.276137 0.929776 0.992115
-0.190878 0.482103 -0.138957 0.929776 0.998027
-0.154509 0.475528 0 0.951056 1
-0.147441 0.453777 0.138304 0.951056 0.998027
-0.140671 0.43294 0.274863 0.951056 0.992115
-0.134489 0.413916 0.407959 0.951056 0.982287
-0.129177 0.397567 0.535923 0.951056 0.968583
-0.125 0.384711 0.657164 0.951056 0.951057
-0.122202 0.376098 0.770188 0.951056 0.929777
-0.121001 0.372402 0.873625 0.951056 0.904827
-0.121587 0.374206 0.966243 0.951056 0.876307
-0.124116 0.381991 1.04697 0.951056 0.844328
-0.128709 0.396126 1.11491 0.951056 0.809017
-0.135446 0.41686 1.16936 0.951056 0.770513
-0.144368 0.444319 1.20979 0.951056 0.728969
-0.155474 0.478498 1.2359 0.951056 0.684547
-0.168719 0.519262 1.24758 0.951056 0.637424
-0.184017 0.566346 1.24495 0.951056 0.587785
-0.201242 0.619358 1.2283 0.951056 0.535827
-0.220225 0.677783 1.19816 0.951056 0.481754
-0.240763 0.740991 1.1552 0.951056 0.42578
-0.262615 0.808244 1.10032 0.951056 0.368125
-0.28551 0.878709 1.03455 0.951056 0.309017
-0.309151 0.951468 0.959066 0.951056 0.24869
-0.333216 1.02553 0.875193 0.951056 0.187382
-0.357366 1.09986 0.784345 0.951056 0.125334
-0.38125 1.17337 0.688023 0.951056 0.0627908
-0.404509 1.24495 0.587786 0.951056 3.26795e-07
-0.42678 1.31349 0.485229 0.951056 -0.0627902
-0.447708 1.3779 0.381957 0.951056 -0.125333
-0.466945 1.43711 0.279555 0.951056 -0.187381
-0.484158 1.49008 0.179572 0.951056 -0.24869
-0.499036 1.53587 0.0834892 0.951056 -0.309017
-0.511291 1.57359 -0.00730092 0.951056 -0.368124
-0.520668 1.60245 -0.0915139 0.951056 -0.425779
-0.526946 1.62177 -0.167995 0.951056 -0.481753
-0.52994 1.63099 -0.235737 0.951056 -0.535826
-0.529509 1.62966 -0.293892 0.951056 -0.587785
-0.525556 1.61749 -0.341791 0.951056 -0.637424
-0.518028 1.59433 -0.378943 0.951056 -0.684547
-0.506923 1.56015 -0.405054 0.951056 -0.728968
-0.492283 1.51509 -0.420019 0.951056 -0.770513
-0.474201 1.45944 -0.42393 0.951056 -0.809017
-0.452815 1.39362 -0.41707 0.951056 -0.844328
-0.428308 1.31819 -0.399908 0.951056 -0.876306
-0.400907 1.23386 -0.373092 0.951056 -0.904827
-0.370878 1.14145 -0.337433 0.951056 -0.929776
-0.338526 1.04188 -0.293893 0.951056 -0.951056
-0.304185 0.936185 -0.243571 0.951056 -0.968583
-0.268219 0.825492 -0.18768 0.951056 -0.982287
-0.231013 0.710985 -0.127526 0.951056 -0.992115
-0.192972 0.593905 -0.06449 0.951056 -0.998027
-0.154509 0.475529 -6.7336e-07 0.951056 -1
-0.116046 0.357154 0.0644887 0.951056 -0.998027
-0.0780047 0.240074 0.127525 0.951056 -0.992115
-0.0407991 0.125567 0.187678 0.951056 -0.982287
-0.0048328 0.0148738 0.24357 0.951056 -0.968583
--0.0295081 -0.0908166 0.293892 0.951056 -0.951057
--0.0618605 -0.190387 0.337432 0.951056 -0.929777
--0.0918887 -0.282804 0.373091 0.951056 -0.904827
--0.11929 -0.367136 0.399908 0.951056 -0.876307
--0.143797 -0.442561 0.417069 0.951056 -0.844328
--0.165183 -0.508382 0.423929 0.951056 -0.809017
--0.183266 -0.564034 0.420019 0.951056 -0.770514
--0.197905 -0.60909 0.405054 0.951056 -0.728969
--0.209011 -0.643269 0.378944 0.951056 -0.684548
--0.216538 -0.666436 0.341791 0.951056 -0.637425
--0.220492 -0.678603 0.293894 0.951056 -0.587786
--0.220923 -0.679929 0.235738 0.951056 -0.535828
--0.217928 -0.670714 0.167997 0.951056 -0.481754
--0.211651 -0.651395 0.0915156 0.951056 -0.42578
--0.202274 -0.622535 0.00730275 0.951056 -0.368125
--0.190019 -0.584817 -0.0834872 0.951056 -0.309018
--0.175141 -0.539029 -0.17957 0.951056 -0.248691
--0.157928 -0.486053 -0.279553 0.951056 -0.187382
--0.138692 -0.426848 -0.381954 0.951056 -0.125334
--0.117764 -0.362439 -0.485227 0.951056 -0.0627915
--0.095492 -0.293894 -0.587784 0.951056 -9.80385e-07
--0.0722337 -0.222312 -0.68802 0.951056 0.0627895
--0.0483497 -0.148805 -0.784343 0.951056 0.125332
--0.0241992 -0.0744775 -0.875191 0.951056 0.18738
--0.000134092 -0.000412692 -0.959064 0.951056 0.248689
-0.0235067 0.0723461 -1.03454 0.951056 0.309016
-0.0464021 0.142811 -1.10032 0.951056 0.368124
-0.068254 0.210064 -1.1552 0.951056 0.425778
-0.0887915 0.273272 -1.19816 0.951056 0.481753
-0.107775 0.331697 -1.2283 0.951056 0.535826
-0.125 0.384709 -1.24495 0.951056 0.587784
-0.140298 0.431794 -1.24758 0.951056 0.637423
-0.153543 0.472558 -1.2359 0.951056 0.684546
-0.164649 0.506737 -1.20979 0.951056 0.728968
-0.173571 0.534196 -1.16936 0.951056 0.770513
-0.180308 0.55493 -1.11491 0.951056 0.809016
-0.184901 0.569065 -1.04697 0.951056 0.844327
-0.18743 0.57685 -0.966245 0.951056 0.876306
-0.188016 0.578655 -0.873627 0.951056 0.904827
-0.186816 0.574959 -0.770191 0.951056 0.929776
-0.184017 0.566346 -0.657166 0.951056 0.951056
-0.17984 0.55349 -0.535926 0.951056 0.968583
-0.174528 0.537141 -0.407962 0.951056 0.982287
-0.168346 0.518116 -0.274866 0.951056 0.992115
-0.161576 0.49728 -0.138307 0.951056 0.998027
-0.124345 0.484292 0 0.968583 1
-0.11758 0.457943 0.137517 0.968583 0.998027
-0.111067 0.432578 0.273321 0.968583 0.992115
-0.105055 0.409163 0.405723 0.968583 0.982287
-0.0997828 0.388628 0.533084 0.968583 0.968583
-0.0954756 0.371852 0.65384 0.968583 0.951057
-0.0923416 0.359646 0.766524 0.968583 0.929777
-0.0905677 0.352737 0.869788 0.968583 0.904827
-0.0903157 0.351756 0.96242 0.968583 0.876307
-0.0917198 0.357225 1.04337 0.968583 0.844328
-0.0948833 0.369546 1.11174 0.968583 0.809017
-0.0998772 0.388996 1.16684 0.968583 0.770513
-0.106738 0.415717 1.20816 0.968583 0.728969
-0.115467 0.449714 1.23539 0.968583 0.684547
-0.12603 0.490853 1.24841 0.968583 0.637424
-0.138356 0.538861 1.24733 0.968583 0.587785
-0.152341 0.59333 1.23245 0.968583 0.535827
-0.167847 0.65372 1.20424 0.968583 0.481754
-0.184702 0.719367 1.1634 0.968583 0.42578
-0.202708 0.789496 1.11077 0.968583 0.368125
-0.221639 0.863225 1.04735 0.968583 0.309017
-0.241244 0.939584 0.974312 0.968583 0.24869
-0.261257 1.01753 0.892927 0.968583 0.187382
-0.281393 1.09595 0.804578 0.968583 0.125334
-0.301357 1.17371 0.710731 0.968583 0.0627908
-0.320849 1.24962 0.612907 0.968583 3.26795e-07
-0.339565 1.32252 0.512665 0.968583 -0.0627902
-0.357206 1.39122 0.411571 0.968583 -0.125333
-0.373479 1.4546 0.311176 0.968583 -0.187381
-0.388106 1.51157 0.212992 0.968583 -0.24869
-0.400824 1.5611 0.118468 0.968583 -0.309017
-0.411391 1.60226 0.0289686 0.968583 -0.368124
-0.419592 1.6342 -0.0542497 0.968583 -0.425779
-0.425238 1.65619 -0.130055 0.968583 -0.481753
-0.428176 1.66763 -0.197459 0.968583 -0.535826
-0.428284 1.66805 -0.25563 0.968583 -0.587785
-0.425478 1.65713 -0.303906 0.968583 -0.637424
-0.419713 1.63467 -0.341806 0.968583 -0.684547
-0.410984 1.60068 -0.369032 0.968583 -0.728968
-0.399325 1.55527 -0.385478 0.968583 -0.770513
-0.384811 1.49874 -0.391224 0.968583 -0.809017
-0.367555 1.43153 -0.386542 0.968583 -0.844328
-0.347707 1.35423 -0.37188 0.968583 -0.876306
-0.325457 1.26757 -0.347862 0.968583 -0.904827
-0.301025 1.17241 -0.315273 0.968583 -0.929776
-0.274661 1.06973 -0.275043 0.968583 -0.951056
-0.246645 0.960616 -0.228237 0.968583 -0.968583
-0.217277 0.846239 -0.176029 0.968583 -0.982287
-0.18688 0.727849 -0.119687 0.968583 -0.992115
-0.155788 0.606753 -0.0605486 0.968583 -0.998027
-0.124345 0.484293 -6.32285e-07 0.968583 -1
-0.0929031 0.361833 0.0605473 0.968583 -0.998027
-0.0618107 0.240736 0.119685 0.968583 -0.992115
-0.0314133 0.122347 0.176028 0.968583 -0.982287
-0.00204611 0.00796906 0.228236 0.968583 -0.968583
--0.0259702 -0.101147 0.275042 0.968583 -0.951057
--0.0523339 -0.203827 0.315272 0.968583 -0.929777
--0.0767665 -0.298986 0.347862 0.968583 -0.904827
--0.0990169 -0.385645 0.37188 0.968583 -0.876307
--0.118864 -0.462944 0.386542 0.968583 -0.844328
--0.136121 -0.530154 0.391224 0.968583 -0.809017
--0.150635 -0.586684 0.385478 0.968583 -0.770514
--0.162294 -0.632093 0.369033 0.968583 -0.728969
--0.171023 -0.66609 0.341806 0.968583 -0.684548
--0.176788 -0.688542 0.303907 0.968583 -0.637425
--0.179594 -0.69947 0.255631 0.968583 -0.587786
--0.179486 -0.699051 0.19746 0.968583 -0.535828
--0.176548 -0.68761 0.130057 0.968583 -0.481754
--0.170902 -0.665617 0.0542513 0.968583 -0.42578
--0.162701 -0.633678 -0.0289668 0.968583 -0.368125
--0.152134 -0.592522 -0.118466 0.968583 -0.309018
--0.139416 -0.54299 -0.21299 0.968583 -0.248691
--0.124789 -0.486022 -0.311174 0.968583 -0.187382
--0.108516 -0.422641 -0.411569 0.968583 -0.125334
--0.090875 -0.353934 -0.512663 0.968583 -0.0627915
--0.072159 -0.28104 -0.612905 0.968583 -9.80385e-07
--0.0526675 -0.205126 -0.710729 0.968583 0.0627895
--0.0327033 -0.127371 -0.804576 0.968583 0.125332
--0.0125674 -0.0489469 -0.892925 0.968583 0.18738
-0.00744527 0.0289974 -0.97431 0.968583 0.248689
-0.0270511 0.105357 -1.04735 0.968583 0.309016
-0.0459815 0.179086 -1.11076 0.968583 0.368124
-0.0639875 0.249215 -1.1634 0.968583 0.425778
-0.080843 0.314862 -1.20424 0.968583 0.481753
-0.0963485 0.375252 -1.23245 0.968583 0.535826
-0.110334 0.429721 -1.24733 0.968583 0.587784
-0.12266 0.477729 -1.24841 0.968583 0.637423
-0.133223 0.518869 -1.23539 0.968583 0.684546
-0.141952 0.552866 -1.20816 0.968583 0.728968
-0.148813 0.579587 -1.16684 0.968583 0.770513
-0.153807 0.599037 -1.11174 0.968583 0.809016
-0.15697 0.611358 -1.04337 0.968583 0.844327
-0.158374 0.616827 -0.962422 0.968583 0.876306
-0.158123 0.615846 -0.86979 0.968583 0.904827
-0.156349 0.608937 -0.766527 0.968583 0.929776
-0.153215 0.596731 -0.653842 0.968583 0.951056
-0.148907 0.579956 -0.533086 0.968583 0.968583
-0.143635 0.559421 -0.405725 0.968583 0.982287
-0.137623 0.536006 -0.273324 0.968583 0.992115
-0.13111 0.510641 -0.13752 0.968583 0.998027
-0.0936908 0.491144 0 0.982287 1
-0.0877865 0.460192 0.136595 0.982287 0.998027
-0.0820825 0.430291 0.271509 0.982287 0.992115
-0.0767756 0.402471 0.403086 0.982287 0.982287
-0.0720553 0.377726 0.529718 0.982287 0.968583
-0.0681007 0.356996 0.649871 0.982287 0.951057
-0.0650773 0.341147 0.762104 0.982287 0.929777
-0.0631336 0.330957 0.865092 0.982287 0.904827
-0.0623986 0.327104 0.957647 0.982287 0.876307
-0.0629796 0.33015 1.03873 0.982287 0.844328
-0.0649596 0.34053 1.10747 0.982287 0.809017
-0.0683962 0.358545 1.16317 0.982287 0.770513
-0.0733199 0.384356 1.20534 0.982287 0.728969
-0.0797335 0.417977 1.23365 0.982287 0.684547
-0.0876116 0.459275 1.24801 0.982287 0.637424
-0.096901 0.507972 1.24849 0.982287 0.587785
-0.107521 0.563644 1.23538 0.982287 0.535827
-0.119364 0.625728 1.20914 0.982287 0.481754
-0.132298 0.693532 1.17045 0.982287 0.42578
-0.146169 0.766241 1.12011 0.982287 0.368125
-0.160798 0.842933 1.05912 0.982287 0.309017
-0.175993 0.922588 0.988596 0.982287 0.24869
-0.191544 1.00411 0.909779 0.982287 0.187382
-0.207228 1.08633 0.824017 0.982287 0.125334
-0.222816 1.16804 0.732737 0.982287 0.0627908
-0.238071 1.24801 0.637424 0.982287 3.26795e-07
-0.252756 1.32499 0.539596 0.982287 -0.0627902
-0.266636 1.39775 0.440779 0.982287 -0.125333
-0.279483 1.4651 0.342489 0.982287 -0.187381
-0.291076 1.52587 0.246201 0.982287 -0.24869
-0.30121 1.579 0.15333 0.982287 -0.309017
-0.309695 1.62348 0.0652096 0.982287 -0.368124
-0.316361 1.65842 -0.0169318 0.982287 -0.425779
-0.32106 1.68305 -0.0919866 0.982287 -0.481753
-0.323669 1.69673 -0.158986 0.982287 -0.535826
-0.324092 1.69895 -0.217115 0.982287 -0.587785
-0.322263 1.68936 -0.265722 0.982287 -0.637424
-0.318145 1.66777 -0.304331 0.982287 -0.684547
-0.311732 1.63415 -0.332646 0.982287 -0.728968
-0.303048 1.58863 -0.350556 0.982287 -0.770513
-0.292151 1.53151 -0.358133 0.982287 -0.809017
-0.279128 1.46324 -0.355633 0.982287 -0.844328
-0.264094 1.38443 -0.343485 0.982287 -0.876306
-0.247196 1.29585 -0.322289 0.982287 -0.904827
-0.228604 1.19838 -0.292802 0.982287 -0.929776
-0.208513 1.09306 -0.255922 0.982287 -0.951056
-0.187138 0.981011 -0.212677 0.982287 -0.968583
-0.164714 0.863462 -0.164204 0.982287 -0.982287
-0.141491 0.741718 -0.111729 0.982287 -0.992115
-0.117727 0.617144 -0.0565473 0.982287 -0.998027
-0.093691 0.491145 -5.90586e-07 0.982287 -1
-0.0696554 0.365146 0.0565462 0.982287 -0.998027
-0.0458915 0.240572 0.111728 0.982287 -0.992115
-0.0226676 0.118827 0.164203 0.982287 -0.982287
-0.000243811 0.0012781 0.212676 0.982287 -0.968583
--0.0211308 -0.110771 0.255921 0.982287 -0.951057
--0.0412221 -0.216094 0.292801 0.982287 -0.929777
--0.0598143 -0.313557 0.322289 0.982287 -0.904827
--0.0767124 -0.40214 0.343484 0.982287 -0.876307
--0.0917456 -0.480947 0.355632 0.982287 -0.844328
--0.104769 -0.549218 0.358133 0.982287 -0.809017
--0.115666 -0.606343 0.350556 0.982287 -0.770514
--0.12435 -0.651864 0.332647 0.982287 -0.728969
--0.130763 -0.685485 0.304331 0.982287 -0.684548
--0.134882 -0.707074 0.265722 0.982287 -0.637425
--0.136711 -0.716661 0.217116 0.982287 -0.587786
--0.136287 -0.714441 0.158987 0.982287 -0.535828
--0.133678 -0.700765 0.0919881 0.982287 -0.481754
--0.128979 -0.676133 0.0169335 0.982287 -0.42578
--0.122314 -0.64119 -0.0652078 0.982287 -0.368125
--0.113829 -0.596711 -0.153328 0.982287 -0.309018
--0.103695 -0.543586 -0.246199 0.982287 -0.248691
--0.0921014 -0.482812 -0.342487 0.982287 -0.187382
--0.0792548 -0.415468 -0.440777 0.982287 -0.125334
--0.0653745 -0.342705 -0.539594 0.982287 -0.0627915
--0.0506895 -0.265723 -0.637422 0.982287 -9.80385e-07
--0.0354346 -0.185754 -0.732736 0.982287 0.0627895
--0.0198471 -0.104042 -0.824015 0.982287 0.125332
--0.00416276 -0.0218219 -0.909777 0.982287 0.18738
-0.0113879 0.0596972 -0.988594 0.982287 0.248689
-0.0265829 0.139352 -1.05912 0.982287 0.309016
-0.0412127 0.216044 -1.12011 0.982287 0.368124
-0.0550829 0.288754 -1.17045 0.982287 0.425778
-0.0680172 0.356558 -1.20914 0.982287 0.481753
-0.0798604 0.418642 -1.23538 0.982287 0.535826
-0.0904804 0.474314 -1.24849 0.982287 0.587784
-0.0997698 0.523011 -1.24801 0.982287 0.637423
-0.107648 0.56431 -1.23366 0.982287 0.684546
-0.114062 0.597931 -1.20534 0.982287 0.728968
-0.118985 0.623742 -1.16318 0.982287 0.770513
-0.122422 0.641757 -1.10747 0.982287 0.809016
-0.124402 0.652137 -1.03873 0.982287 0.844327
-0.124983 0.655183 -0.957649 0.982287 0.876306
-0.124248 0.65133 -0.865095 0.982287 0.904827
-0.122304 0.641141 -0.762106 0.982287 0.929776
-0.119281 0.625292 -0.649873 0.982287 0.951056
-0.115326 0.604561 -0.529721 0.982287 0.968583
-0.110606 0.579817 -0.403089 0.982287 0.982287
-0.105299 0.551997 -0.271512 0.982287 0.992115
-0.0995952 0.522096 -0.136598 0.982287 0.998027
-0.0626668 0.496057 0 0.992115 1
-0.0581818 0.460555 0.135538 0.992115 0.998027
-0.0538373 0.426165 0.269429 0.992115 0.992115
-0.0497714 0.39398 0.400052 0.992115 0.982287
-0.0461172 0.365054 0.52583 0.992115 0.968583
-0.0430004 0.340382 0.645261 0.992115 0.951057
-0.0405373 0.320885 0.756931 0.992115 0.929777
-0.0388324 0.307389 0.859543 0.992115 0.904827
-0.0379767 0.300616 0.951929 0.992115 0.876307
-0.0380459 0.301163 1.03307 0.992115 0.844328
-0.039099 0.3095 1.10211 0.992115 0.809017
-0.0411772 0.32595 1.15836 0.992115 0.770513
-0.0443028 0.350692 1.20133 0.992115 0.728969
-0.0484791 0.383751 1.23071 0.992115 0.684547
-0.0536894 0.424994 1.24637 0.992115 0.637424
-0.0598979 0.474139 1.24841 0.992115 0.587785
-0.0670493 0.530748 1.23708 0.992115 0.535827
-0.0750702 0.59424 1.21285 0.992115 0.481754
-0.0838696 0.663895 1.17634 0.992115 0.42578
-0.0933404 0.738864 1.12836 0.992115 0.368125
-0.103361 0.818186 1.06985 0.992115 0.309017
-0.113797 0.900796 1.0019 0.992115 0.24869
-0.124504 0.985546 0.925733 0.992115 0.187382
-0.135327 1.07122 0.842643 0.992115 0.125334
-0.146107 1.15655 0.754021 0.992115 0.0627908
-0.156681 1.24025 0.661312 0.992115 3.26795e-07
-0.166883 1.32102 0.565993 0.992115 -0.0627902
-0.176552 1.39755 0.469553 0.992115 -0.125333
-0.185527 1.4686 0.373464 0.992115 -0.187381
-0.193657 1.53295 0.279167 0.992115 -0.24869
-0.200798 1.58947 0.188041 0.992115 -0.309017
-0.206817 1.63712 0.101386 0.992115 -0.368124
-0.211597 1.67496 0.0204027 0.992115 -0.425779
-0.215034 1.70216 -0.0538274 0.992115 -0.481753
-0.217042 1.71806 -0.120356 0.992115 -0.535826
-0.217554 1.72211 -0.178385 0.992115 -0.587785
-0.216522 1.71395 -0.227275 0.992115 -0.637424
-0.213921 1.69336 -0.266555 0.992115 -0.684547
-0.209745 1.6603 -0.295932 0.992115 -0.728968
-0.20401 1.6149 -0.315289 0.992115 -0.770513
-0.196755 1.55747 -0.324689 0.992115 -0.809017
-0.188038 1.48847 -0.324372 0.992115 -0.844328
-0.17794 1.40854 -0.314751 0.992115 -0.876306
-0.16656 1.31845 -0.296398 0.992115 -0.904827
-0.154014 1.21914 -0.270042 0.992115 -0.929776
-0.140437 1.11167 -0.236548 0.992115 -0.951056
-0.125977 0.99721 -0.196908 0.992115 -0.968583
-0.110795 0.877032 -0.152217 0.992115 -0.982287
-0.0950626 0.752496 -0.103661 0.992115 -0.992115
-0.0789583 0.625018 -0.0524903 0.992115 -0.998027
-0.0626669 0.496059 -5.48303e-07 0.992115 -1
-0.0463756 0.367099 0.0524892 0.992115 -0.998027
-0.0302713 0.239621 0.10366 0.992115 -0.992115
-0.0145386 0.115085 0.152216 0.992115 -0.982287
--0.000643349 -0.00509262 0.196907 0.992115 -0.968583
--0.0151033 -0.119555 0.236547 0.992115 -0.951057
--0.0286803 -0.227028 0.270041 0.992115 -0.929777
--0.041226 -0.326336 0.296397 0.992115 -0.904827
--0.0526065 -0.416422 0.31475 0.992115 -0.876307
--0.0627046 -0.496356 0.324372 0.992115 -0.844328
--0.0714211 -0.565355 0.324689 0.992115 -0.809017
--0.0786764 -0.622786 0.315289 0.992115 -0.770514
--0.0844112 -0.668182 0.295932 0.992115 -0.728969
--0.0885875 -0.70124 0.266556 0.992115 -0.684548
--0.0911887 -0.721831 0.227276 0.992115 -0.637425
--0.0922201 -0.729995 0.178386 0.992115 -0.587786
--0.0917081 -0.725943 0.120358 0.992115 -0.535828
--0.0897002 -0.710048 0.0538289 0.992115 -0.481754
--0.0862634 -0.682844 -0.0204011 0.992115 -0.42578
--0.0814838 -0.645009 -0.101384 0.992115 -0.368125
--0.0754643 -0.59736 -0.188039 0.992115 -0.309018
--0.0683237 -0.540837 -0.279165 0.992115 -0.248691
--0.060194 -0.476484 -0.373462 0.992115 -0.187382
--0.0512187 -0.405437 -0.469551 0.992115 -0.125334
--0.0415501 -0.328902 -0.565991 0.992115 -0.0627915
--0.0313475 -0.24814 -0.66131 0.992115 -9.80385e-07
--0.0207738 -0.164441 -0.754019 0.992115 0.0627895
--0.00999361 -0.0791074 -0.842641 0.992115 0.125332
-0.00082959 0.00656686 -0.925731 0.992115 0.18738
-0.0115361 0.0913171 -1.0019 0.992115 0.248689
-0.0219722 0.173927 -1.06985 0.992115 0.309016
-0.0319929 0.253249 -1.12836 0.992115 0.368124
-0.0414638 0.328219 -1.17634 0.992115 0.425778
-0.0502632 0.397873 -1.21285 0.992115 0.481753
-0.0582841 0.461365 -1.23708 0.992115 0.535826
-0.0654355 0.517974 -1.24841 0.992115 0.587784
-0.071644 0.567119 -1.24637 0.992115 0.637423
-0.0768543 0.608363 -1.23071 0.992115 0.684546
-0.0810306 0.641422 -1.20133 0.992115 0.728968
-0.0841563 0.666164 -1.15836 0.992115 0.770513
-0.0862345 0.682615 -1.10211 0.992115 0.809016
-0.0872877 0.690951 -1.03307 0.992115 0.844327
-0.0873569 0.691499 -0.951931 0.992115 0.876306
-0.0865012 0.684726 -0.859545 0.992115 0.904827
-0.0847963 0.67123 -0.756934 0.992115 0.929776
-0.0823332 0.651733 -0.645263 0.992115 0.951056
-0.0792164 0.627061 -0.525833 0.992115 0.968583
-0.0755622 0.598135 -0.400054 0.992115 0.982287
-0.0714963 0.56595 -0.269432 0.992115 0.992115
-0.0671519 0.53156 -0.135541 0.992115 0.998027
-0.0313954 0.499013 0 0.998027 1
-0.0288823 0.459068 0.134347 0.998027 0.998027
-0.0264427 0.420293 0.267084 0.998027 0.992115
-0.0241491 0.383838 0.396623 0.998027 0.982287
-0.0220712 0.350811 0.521423 0.998027 0.968583
-0.020275 0.32226 0.640014 0.998027 0.951057
-0.0188213 0.299155 0.751012 0.998027 0.929777
-0.0177652 0.282369 0.853146 0.998027 0.904827
-0.0171545 0.272662 0.945272 0.998027 0.876307
-0.0170291 0.270669 1.02639 0.998027 0.844328
-0.0174203 0.276887 1.09566 0.998027 0.809017
-0.01835 0.291664 1.1524 0.998027 0.770513
-0.0198304 0.315194 1.19613 0.998027 0.728969
-0.0218637 0.347512 1.22654 0.998027 0.684547
-0.0244418 0.38849 1.24351 0.998027 0.637424
-0.0275467 0.437839 1.2471 0.998027 0.587785
-0.03115 0.495113 1.23757 0.998027 0.535827
-0.0352142 0.559711 1.21536 0.998027 0.481754
-0.0396925 0.63089 1.18108 0.998027 0.42578
-0.0445296 0.707774 1.13549 0.998027 0.368125
-0.0496627 0.789363 1.07952 0.998027 0.309017
-0.0550226 0.874554 1.01422 0.998027 0.24869
-0.060534 0.962155 0.940773 0.998027 0.187382
-0.0661175 1.0509 0.860437 0.998027 0.125334
-0.0716904 1.13948 0.774561 0.998027 0.0627908
-0.0771679 1.22654 0.684547 0.998027 3.26795e-07
-0.0824649 1.31073 0.591833 0.998027 -0.0627902
-0.0874965 1.39071 0.497863 0.998027 -0.125333
-0.0921804 1.46516 0.404071 0.998027 -0.187381
-0.0964373 1.53282 0.311858 0.998027 -0.24869
-0.100193 1.59251 0.222566 0.998027 -0.309017
-0.103378 1.64313 0.137463 0.998027 -0.368124
-0.105931 1.68371 0.0577171 0.998027 -0.425779
-0.107798 1.71339 -0.0156151 0.998027 -0.481753
-0.108935 1.73146 -0.0816081 0.998027 -0.535826
-0.109306 1.73736 -0.13948 0.998027 -0.587785
-0.108886 1.73068 -0.188604 0.998027 -0.637424
-0.107661 1.71121 -0.228517 0.998027 -0.684547
-0.105627 1.67889 -0.258925 0.998027 -0.728968
-0.102794 1.63385 -0.27971 0.998027 -0.770513
-0.0991794 1.5764 -0.290924 0.998027 -0.809017
-0.094814 1.50702 -0.292792 0.998027 -0.844328
-0.0897385 1.42635 -0.285706 0.998027 -0.876306
-0.0840037 1.33519 -0.270214 0.998027 -0.904827
-0.0776696 1.23452 -0.247015 0.998027 -0.929776
-0.0708049 1.12541 -0.216941 0.998027 -0.951056
-0.063486 1.00908 -0.180944 0.998027 -0.968583
-0.0557956 0.886841 -0.14008 0.998027 -0.982287
-0.0478218 0.760102 -0.0954911 0.998027 -0.992115
-0.0396568 0.630324 -0.0483814 0.998027 -0.998027
-0.0313955 0.499015 -5.0548e-07 0.998027 -1
-0.0231342 0.367706 0.0483804 0.998027 -0.998027
-0.0149692 0.237927 0.0954902 0.998027 -0.992115
-0.00699538 0.111188 0.14008 0.998027 -0.982287
--0.000695021 -0.011047 0.180943 0.998027 -0.968583
--0.00801393 -0.127377 0.21694 0.998027 -0.951057
--0.0148786 -0.236487 0.247015 0.998027 -0.929777
--0.0212127 -0.337165 0.270214 0.998027 -0.904827
--0.0269476 -0.428318 0.285705 0.998027 -0.876307
--0.0320231 -0.50899 0.292792 0.998027 -0.844328
--0.0363885 -0.578376 0.290924 0.998027 -0.809017
--0.040003 -0.635826 0.27971 0.998027 -0.770514
--0.0428365 -0.680863 0.258926 0.998027 -0.728969
--0.0448698 -0.713181 0.228517 0.998027 -0.684548
--0.0460949 -0.732653 0.188605 0.998027 -0.637425
--0.0465149 -0.739329 0.139481 0.998027 -0.587786
--0.0461441 -0.733435 0.0816093 0.998027 -0.535828
--0.0450074 -0.715368 0.0156165 0.998027 -0.481754
--0.04314 -0.685688 -0.0577155 0.998027 -0.42578
--0.0405869 -0.645108 -0.137461 0.998027 -0.368125
--0.0374019 -0.594482 -0.222565 0.998027 -0.309018
--0.0336465 -0.534793 -0.311856 0.998027 -0.248691
--0.0293896 -0.467133 -0.404069 0.998027 -0.187382
--0.0247058 -0.392685 -0.497861 0.998027 -0.125334
--0.0196741 -0.31271 -0.591831 0.998027 -0.0627915
--0.0143772 -0.228518 -0.684546 0.998027 -9.80385e-07
--0.00889967 -0.141456 -0.774559 0.998027 0.0627895
--0.00332679 -0.0528776 -0.860435 0.998027 0.125332
-0.00225673 0.0358695 -0.940772 0.998027 0.18738
-0.00776815 0.123471 -1.01422 0.998027 0.248689
-0.013128 0.208662 -1.07952 0.998027 0.309016
-0.0182612 0.290251 -1.13549 0.998027 0.368124
-0.0230983 0.367135 -1.18108 0.998027 0.425778
-0.0275765 0.438314 -1.21536 0.998027 0.481753
-0.0316407 0.502913 -1.23757 0.998027 0.535826
-0.0352441 0.560186 -1.2471 0.998027 0.587784
-0.0383489 0.609536 -1.24351 0.998027 0.637423
-0.0409271 0.650514 -1.22654 0.998027 0.684546
-0.0429604 0.682832 -1.19614 0.998027 0.728968
-0.0444408 0.706363 -1.1524 0.998027 0.770513
-0.0453705 0.72114 -1.09566 0.998027 0.809016
-0.0457617 0.727357 -1.02639 0.998027 0.844327
-0.0456363 0.725365 -0.945273 0.998027 0.876306
-0.0450256 0.715658 -0.853148 0.998027 0.904827
-0.0439695 0.698872 -0.751014 0.998027 0.929776
-0.0425159 0.675767 -0.640016 0.998027 0.951056
-0.0407196 0.647217 -0.521426 0.998027 0.968583
-0.0386417 0.61419 -0.396625 0.998027 0.982287
-0.0363481 0.577734 -0.267086 0.998027 0.992115
-0.0339086 0.538959 -0.13435 0.998027 0.998027
-1.63397e-07 0.5 0 1 1
-1.48945e-07 0.455776 0.133024 1 0.998027
-1.34892e-07 0.412774 0.264474 1 0.992115
-1.21632e-07 0.372195 0.392802 1 0.982287
-1.09541e-07 0.335199 0.516502 1 0.968583
-9.898e-08 0.302881 0.634135 1 0.951057
-9.02789e-08 0.276256 0.744351 1 0.929777
-8.37368e-08 0.256236 0.845906 1 0.904827
-7.96142e-08 0.243621 0.937681 1 0.876307
-7.81293e-08 0.239078 1.0187 1 0.844328
-7.94532e-08 0.243129 1.08813 1 0.809017
-8.37069e-08 0.256145 1.14531 1 0.770513
-9.0959e-08 0.278337 1.18976 1 0.728969
-1.01224e-07 0.309747 1.22117 1 0.684547
-1.14461e-07 0.350253 1.23942 1 0.637424
-1.30575e-07 0.399563 1.24456 1 0.587785
-1.49417e-07 0.457221 1.23684 1 0.535827
-1.70787e-07 0.522612 1.21667 1 0.481754
-1.94435e-07 0.594974 1.18464 1 0.42578
-2.20065e-07 0.673403 1.1415 1 0.368125
-2.47342e-07 0.756871 1.08813 1 0.309017
-2.75893e-07 0.84424 1.02554 1 0.24869
-3.05317e-07 0.934278 0.954886 1 0.187382
-3.35187e-07 1.02568 0.877382 1 0.125334
-3.65058e-07 1.11709 0.794336 1 0.0627908
-3.94476e-07 1.20711 0.707107 1 3.26795e-07
-4.22982e-07 1.29434 0.617088 1 -0.0627902
-4.50121e-07 1.37738 0.525681 1 -0.125333
-4.75449e-07 1.45488 0.434279 1 -0.187381
-4.9854e-07 1.52554 0.344241 1 -0.24869
-5.18991e-07 1.58813 0.256872 1 -0.309017
-5.36433e-07 1.6415 0.173404 1 -0.368124
-5.50533e-07 1.68464 0.0949745 1 -0.425779
-5.61e-07 1.71667 0.0226127 1 -0.481753
-5.6759e-07 1.73684 -0.0427791 1 -0.535826
-5.70113e-07 1.74456 -0.100437 1 -0.587785
-5.68433e-07 1.73942 -0.149747 1 -0.637424
-5.6247e-07 1.72117 -0.190253 1 -0.684547
-5.52205e-07 1.68976 -0.221664 1 -0.728968
-5.37679e-07 1.64531 -0.243855 1 -0.770513
-5.18991e-07 1.58813 -0.256872 1 -0.809017
-4.96302e-07 1.5187 -0.260923 1 -0.844328
-4.69827e-07 1.43768 -0.256379 1 -0.876306
-4.39836e-07 1.34591 -0.243764 1 -0.904827
-4.06648e-07 1.24435 -0.223745 1 -0.929776
-3.7063e-07 1.13414 -0.197119 1 -0.951056
-3.32188e-07 1.0165 -0.164801 1 -0.968583
-2.91764e-07 0.892803 -0.127805 1 -0.982287
-2.49827e-07 0.764476 -0.0872268 1 -0.992115
-2.06869e-07 0.633025 -0.0442248 1 -0.998027
-1.63398e-07 0.500001 -4.62158e-07 1 -1
-1.19926e-07 0.366978 0.0442239 1 -0.998027
-7.69691e-08 0.235527 0.0872259 1 -0.992115
-3.50322e-08 0.107199 0.127804 1 -0.982287
--5.39218e-09 -0.0165002 0.164801 1 -0.968583
--4.38342e-08 -0.134134 0.197119 1 -0.951057
--7.98523e-08 -0.24435 0.223744 1 -0.929777
--1.1304e-07 -0.345905 0.243764 1 -0.904827
--1.43032e-07 -0.43768 0.256379 1 -0.876307
--1.69507e-07 -0.518695 0.260923 1 -0.844328
--1.92196e-07 -0.588125 0.256872 1 -0.809017
--2.10883e-07 -0.645308 0.243856 1 -0.770514
--2.2541e-07 -0.689759 0.221664 1 -0.728969
--2.35675e-07 -0.72117 0.190253 1 -0.684548
--2.41638e-07 -0.739417 0.149748 1 -0.637425
--2.43318e-07 -0.74456 0.100438 1 -0.587786
--2.40795e-07 -0.73684 0.0427804 1 -0.535828
--2.34205e-07 -0.716673 -0.0226112 1 -0.481754
--2.23739e-07 -0.684645 -0.0949729 1 -0.42578
--2.09639e-07 -0.6415 -0.173402 1 -0.368125
--1.92197e-07 -0.588126 -0.25687 1 -0.309018
--1.71745e-07 -0.525544 -0.344239 1 -0.248691
--1.48655e-07 -0.454887 -0.434277 1 -0.187382
--1.23327e-07 -0.377383 -0.525679 1 -0.125334
--9.61878e-08 -0.294337 -0.617086 1 -0.0627915
--6.76819e-08 -0.207108 -0.707105 1 -9.80385e-07
--3.82641e-08 -0.117089 -0.794334 1 0.0627895
--8.39286e-09 -0.0256823 -0.87738 1 0.125332
-2.14769e-08 0.0657198 -0.954884 1 0.18738
-5.09009e-08 0.155758 -1.02554 1 0.248689
-7.94526e-08 0.243127 -1.08812 1 0.309016
-1.0673e-07 0.326595 -1.1415 1 0.368124
-1.3236e-07 0.405024 -1.18464 1 0.425778
-1.56007e-07 0.477386 -1.21667 1 0.481753
-1.77377e-07 0.542778 -1.23684 1 0.535826
-1.96219e-07 0.600436 -1.24456 1 0.587784
-2.12334e-07 0.649746 -1.23942 1 0.637423
-2.25571e-07 0.690252 -1.22117 1 0.684546
-2.35836e-07 0.721663 -1.18976 1 0.728968
-2.43088e-07 0.743855 -1.14531 1 0.770513
-2.47342e-07 0.756871 -1.08813 1 0.809016
-2.48666e-07 0.760922 -1.0187 1 0.844327
-2.47181e-07 0.756379 -0.937683 1 0.876306
-2.43058e-07 0.743764 -0.845908 1 0.904827
-2.36516e-07 0.723745 -0.744353 1 0.929776
-2.27815e-07 0.697119 -0.634137 1 0.951056
-2.17254e-07 0.664802 -0.516504 1 0.968583
-2.05164e-07 0.627805 -0.392805 1 0.982287
-1.91903e-07 0.587227 -0.264477 1 0.992115
-1.7785e-07 0.544225 -0.133026 1 0.998027
--0.0313951 0.499013 0 0.998027 1
--0.0283572 0.450728 0.131569 0.998027 0.998027
--0.0253992 0.403711 0.261604 0.998027 0.992115
--0.0225995 0.35921 0.388594 0.998027 0.982287
--0.0200336 0.318427 0.51107 0.998027 0.968583
--0.0177734 0.282501 0.62763 0.998027 0.951057
--0.015885 0.252486 0.736956 0.998027 0.929777
--0.0144283 0.229333 0.837832 0.998027 0.904827
--0.0134556 0.213872 0.929165 0.998027 0.876307
--0.0130106 0.206799 1.01 0.998027 0.844328
--0.013128 0.208664 1.07952 0.998027 0.809017
--0.0138321 0.219856 1.13708 0.998027 0.770513
--0.0151371 0.240599 1.18221 0.998027 0.728969
--0.0170465 0.270948 1.21459 0.998027 0.684547
--0.0195526 0.310782 1.2341 0.998027 0.637424
--0.0226371 0.359809 1.24079 0.998027 0.587785
--0.0262709 0.417566 1.23489 0.998027 0.535827
--0.0304146 0.483429 1.21678 0.998027 0.481754
--0.0350191 0.556616 1.18704 0.998027 0.42578
--0.0400264 0.636204 1.14638 0.998027 0.368125
--0.04537 0.72114 1.09566 0.998027 0.309017
--0.0509767 0.810255 1.03585 0.998027 0.24869
--0.0567667 0.902286 0.968055 0.998027 0.187382
--0.0626559 0.995893 0.893461 0.998027 0.125334
--0.0685563 1.08968 0.813327 0.998027 0.0627908
--0.0743779 1.18221 0.728969 0.998027 3.26795e-07
--0.0800298 1.27204 0.641734 0.998027 -0.0627902
--0.085422 1.35775 0.552981 0.998027 -0.125333
--0.0904664 1.43793 0.464058 0.998027 -0.187381
--0.0950784 1.51124 0.376284 0.998027 -0.24869
--0.0991783 1.5764 0.290924 0.998027 -0.309017
--0.102693 1.63226 0.209173 0.998027 -0.368124
--0.105555 1.67776 0.132138 0.998027 -0.425779
--0.107708 1.71198 0.0608181 0.998027 -0.481753
--0.109103 1.73414 -0.00390795 0.998027 -0.535826
--0.109701 1.74365 -0.0612948 0.998027 -0.587785
--0.109475 1.74007 -0.110742 0.998027 -0.637424
--0.10841 1.72314 -0.151801 0.998027 -0.684547
--0.106501 1.69279 -0.184183 0.998027 -0.728968
--0.103755 1.64914 -0.20776 0.998027 -0.770513
--0.100192 1.59251 -0.222566 0.998027 -0.809017
--0.0958423 1.52338 -0.228796 0.998027 -0.844328
--0.0907489 1.44242 -0.226799 0.998027 -0.876306
--0.0849643 1.35048 -0.217073 0.998027 -0.904827
--0.0785513 1.24854 -0.200254 0.998027 -0.929776
--0.0715817 1.13777 -0.177103 0.998027 -0.951056
--0.0641354 1.01941 -0.148496 0.998027 -0.968583
--0.0562992 0.894855 -0.115404 0.998027 -0.982287
--0.0481654 0.765571 -0.0788764 0.998027 -0.992115
--0.0398309 0.633097 -0.0400246 0.998027 -0.998027
--0.0313952 0.499015 -4.1838e-07 0.998027 -1
--0.0229595 0.364933 0.0400238 0.998027 -0.998027
--0.014625 0.232458 0.0788756 0.998027 -0.992115
--0.00649118 0.103175 0.115403 0.998027 -0.982287
-0.00134508 -0.0213796 0.148496 0.998027 -0.968583
-0.0087914 -0.139736 0.177103 0.998027 -0.951057
-0.015761 -0.250515 0.200253 0.998027 -0.929777
-0.022174 -0.352448 0.217073 0.998027 -0.904827
-0.0279586 -0.444392 0.226799 0.998027 -0.876307
-0.033052 -0.52535 0.228796 0.998027 -0.844328
-0.0374014 -0.594481 0.222566 0.998027 -0.809017
-0.0409645 -0.651115 0.20776 0.998027 -0.770514
-0.0437104 -0.694761 0.184184 0.998027 -0.728969
-0.0456198 -0.72511 0.151802 0.998027 -0.684548
-0.0466851 -0.742042 0.110743 0.998027 -0.637425
-0.0469106 -0.745626 0.0612959 0.998027 -0.587786
-0.0463123 -0.736118 0.00390922 0.998027 -0.535828
-0.0449177 -0.713951 -0.0608167 0.998027 -0.481754
-0.042765 -0.679733 -0.132137 0.998027 -0.42578
-0.0399025 -0.634236 -0.209172 0.998027 -0.368125
-0.0363882 -0.578377 -0.290922 0.998027 -0.309018
-0.0322883 -0.513211 -0.376282 0.998027 -0.248691
-0.0276763 -0.439905 -0.464057 0.998027 -0.187382
-0.022632 -0.359726 -0.552979 0.998027 -0.125334
-0.0172398 -0.27402 -0.641732 0.998027 -0.0627915
-0.0115878 -0.184184 -0.728967 0.998027 -9.80385e-07
-0.00576627 -0.0916527 -0.813325 0.998027 0.0627895
--0.000134134 0.002132 -0.893459 0.998027 0.125332
--0.00602332 0.0957384 -0.968054 0.998027 0.18738
--0.0118134 0.18777 -1.03585 0.998027 0.248689
--0.01742 0.276885 -1.09566 0.998027 0.309016
--0.0227637 0.361821 -1.14638 0.998027 0.368124
--0.0277709 0.441409 -1.18704 0.998027 0.425778
--0.0323755 0.514597 -1.21678 0.998027 0.481753
--0.0365192 0.580459 -1.23489 0.998027 0.535826
--0.040153 0.638217 -1.24079 0.998027 0.587784
--0.0432375 0.687244 -1.2341 0.998027 0.637423
--0.0457436 0.727078 -1.21459 0.998027 0.684546
--0.047653 0.757427 -1.18221 0.998027 0.728968
--0.0489581 0.778171 -1.13708 0.998027 0.770513
--0.0496622 0.789363 -1.07952 0.998027 0.809016
--0.0497795 0.791227 -1.01 0.998027 0.844327
--0.0493346 0.784155 -0.929167 0.998027 0.876306
--0.0483619 0.768694 -0.837834 0.998027 0.904827
--0.0469052 0.745541 -0.736958 0.998027 0.929776
--0.0450168 0.715526 -0.627633 0.998027 0.951056
--0.0427566 0.6796 -0.511073 0.998027 0.968583
--0.0401908 0.638818 -0.388596 0.998027 0.982287
--0.037391 0.594316 -0.261607 0.998027 0.992115
--0.034433 0.5473 -0.131572 0.998027 0.998027
--0.0626664 0.496057 0 0.992115 1
--0.0560878 0.443982 0.129984 0.992115 0.998027
--0.0496744 0.393214 0.258475 0.992115 0.992115
--0.0435887 0.345041 0.384002 0.992115 0.982287
--0.0379875 0.300703 0.505134 0.992115 0.968583
--0.0330193 0.261375 0.620506 0.992115 0.951057
--0.0288214 0.228146 0.728833 0.992115 0.929777
--0.0255181 0.201997 0.828931 0.992115 0.904827
--0.0232179 0.183789 0.919733 0.992115 0.876307
--0.022012 0.174243 1.0003 0.992115 0.844328
--0.0219723 0.173929 1.06985 0.992115 0.809017
--0.0231504 0.183255 1.12774 0.992115 0.770513
--0.0255765 0.202459 1.17349 0.992115 0.728969
--0.0292583 0.231604 1.20681 0.992115 0.684547
--0.0341814 0.270575 1.22757 0.992115 0.637424
--0.0403089 0.319079 1.2358 0.992115 0.587785
--0.0475818 0.37665 1.23171 0.992115 0.535827
--0.0559201 0.442654 1.21569 0.992115 0.481754
--0.0652235 0.516299 1.18827 0.992115 0.42578
--0.0753734 0.596644 1.15013 0.992115 0.368125
--0.0862341 0.682615 1.10211 0.992115 0.309017
--0.0976552 0.773023 1.04513 0.992115 0.24869
--0.109474 0.866576 0.98027 0.992115 0.187382
--0.121517 0.961907 0.908658 0.992115 0.125334
--0.133604 1.05759 0.831516 0.992115 0.0627908
--0.145551 1.15215 0.750111 0.992115 3.26795e-07
--0.15717 1.24413 0.665747 0.992115 -0.0627902
--0.168277 1.33205 0.579735 0.992115 -0.125333
--0.178691 1.41449 0.49338 0.992115 -0.187381
--0.188238 1.49006 0.407956 0.992115 -0.24869
--0.196754 1.55747 0.324689 0.992115 -0.309017
--0.204087 1.61552 0.244737 0.992115 -0.368124
--0.210101 1.66312 0.169172 0.992115 -0.425779
--0.214677 1.69935 0.0989635 0.992115 -0.481753
--0.217714 1.72339 0.0349671 0.992115 -0.535826
--0.219133 1.73462 -0.0220922 0.992115 -0.587785
--0.218878 1.7326 -0.0716276 0.992115 -0.637424
--0.216914 1.71706 -0.113199 0.992115 -0.684547
--0.213233 1.68791 -0.146521 0.992115 -0.728968
--0.207847 1.64528 -0.171459 0.992115 -0.770513
--0.200797 1.58947 -0.188041 0.992115 -0.809017
--0.192144 1.52098 -0.196443 0.992115 -0.844328
--0.181975 1.44048 -0.196996 0.992115 -0.876306
--0.170396 1.34882 -0.190168 0.992115 -0.904827
--0.157535 1.24702 -0.176565 0.992115 -0.929776
--0.143539 1.13623 -0.156913 0.992115 -0.951056
--0.12857 1.01774 -0.132045 0.992115 -0.968583
--0.112806 0.892956 -0.102889 0.992115 -0.982287
--0.096435 0.763364 -0.0704481 0.992115 -0.992115
--0.079654 0.630528 -0.0357849 0.992115 -0.998027
--0.0626666 0.496059 -3.74189e-07 0.992115 -1
--0.0456793 0.36159 0.0357841 0.992115 -0.998027
--0.0288983 0.228754 0.0704474 0.992115 -0.992115
--0.012527 0.0991615 0.102888 0.992115 -0.982287
-0.00323721 -0.0256253 0.132044 0.992115 -0.968583
-0.0182058 -0.144114 0.156912 0.992115 -0.951057
-0.0322018 -0.254904 0.176565 0.992115 -0.929777
-0.0450625 -0.356707 0.190168 0.992115 -0.904827
-0.0566414 -0.448364 0.196995 0.992115 -0.876307
-0.066811 -0.528865 0.196443 0.992115 -0.844328
-0.0754638 -0.597359 0.188041 0.992115 -0.809017
-0.0825141 -0.653169 0.17146 0.992115 -0.770514
-0.0878997 -0.695799 0.146521 0.992115 -0.728969
-0.0915815 -0.724944 0.1132 0.992115 -0.684548
-0.0935452 -0.740489 0.0716285 0.992115 -0.637425
-0.0938005 -0.742509 0.0220933 0.992115 -0.587786
-0.092381 -0.731273 -0.0349658 0.992115 -0.535828
-0.0893438 -0.707231 -0.0989621 0.992115 -0.481754
-0.0847681 -0.671011 -0.16917 0.992115 -0.42578
-0.0787541 -0.623405 -0.244735 0.992115 -0.368125
-0.071421 -0.565357 -0.324687 0.992115 -0.309018
-0.0629053 -0.497948 -0.407954 0.992115 -0.248691
-0.0533584 -0.422377 -0.493378 0.992115 -0.187382
-0.0429445 -0.339942 -0.579733 0.992115 -0.125334
-0.0318373 -0.252019 -0.665745 0.992115 -0.0627915
-0.0202179 -0.160041 -0.75011 0.992115 -9.80385e-07
-0.00827131 -0.0654744 -0.831514 0.992115 0.0627895
--0.0038159 0.030206 -0.908657 0.992115 0.125332
--0.0158589 0.125537 -0.980268 0.992115 0.18738
--0.0276775 0.21909 -1.04513 0.992115 0.248689
--0.0390985 0.309498 -1.10211 0.992115 0.309016
--0.0499593 0.395469 -1.15013 0.992115 0.368124
--0.0601092 0.475814 -1.18827 0.992115 0.425778
--0.0694126 0.549459 -1.21569 0.992115 0.481753
--0.0777509 0.615464 -1.23171 0.992115 0.535826
--0.0850239 0.673035 -1.2358 0.992115 0.587784
--0.0911513 0.721539 -1.22757 0.992115 0.637423
--0.0960745 0.76051 -1.20681 0.992115 0.684546
--0.0997563 0.789655 -1.17349 0.992115 0.728968
--0.102182 0.808859 -1.12774 0.992115 0.770513
--0.103361 0.818186 -1.06985 0.992115 0.809016
--0.103321 0.817872 -1.0003 0.992115 0.844327
--0.102115 0.808326 -0.919735 0.992115 0.876306
--0.0998148 0.790118 -0.828933 0.992115 0.904827
--0.0965115 0.76397 -0.728836 0.992115 0.929776
--0.0923137 0.73074 -0.620509 0.992115 0.951056
--0.0873455 0.691413 -0.505137 0.992115 0.968583
--0.0817443 0.647075 -0.384004 0.992115 0.982287
--0.0756587 0.598902 -0.258478 0.992115 0.992115
--0.0692453 0.548134 -0.129987 0.992115 0.998027
--0.0936905 0.491144 0 0.982287 1
--0.0830947 0.435599 0.128271 0.982287 0.998027
--0.0727547 0.381394 0.255092 0.982287 0.992115
--0.0629219 0.329849 0.379031 0.982287 0.982287
--0.0538389 0.282234 0.4987 0.982287 0.968583
--0.0457357 0.239755 0.61277 0.982287 0.951057
--0.0388251 0.203529 0.719992 0.982287 0.929777
--0.0332997 0.174564 0.819212 0.982287 0.904827
--0.0293281 0.153743 0.909392 0.982287 0.876307
--0.0270518 0.141811 0.98962 0.982287 0.844328
--0.0265832 0.139354 1.05912 0.982287 0.809017
--0.028003 0.146797 1.11728 0.982287 0.770513
--0.031359 0.16439 1.16362 0.982287 0.728969
--0.0366647 0.192204 1.19785 0.982287 0.684547
--0.0438993 0.230129 1.21982 0.982287 0.637424
--0.0530073 0.277875 1.22958 0.982287 0.587785
--0.0638995 0.334973 1.22732 0.982287 0.535827
--0.0764539 0.400786 1.2134 0.982287 0.481754
--0.0905177 0.474511 1.18832 0.982287 0.42578
--0.105909 0.555198 1.15275 0.982287 0.368125
--0.122422 0.641758 1.10747 0.982287 0.309017
--0.139824 0.732983 1.05339 0.982287 0.24869
--0.157866 0.827566 0.991517 0.982287 0.187382
--0.176284 0.924115 0.922959 0.982287 0.125334
--0.1948 1.02118 0.848884 0.982287 0.0627908
--0.213132 1.11728 0.770514 0.982287 3.26795e-07
--0.230991 1.2109 0.689103 0.982287 -0.0627902
--0.248095 1.30056 0.605917 0.982287 -0.125333
--0.264166 1.38481 0.522214 0.982287 -0.187381
--0.278934 1.46223 0.439225 0.982287 -0.24869
--0.29215 1.53151 0.358134 0.982287 -0.309017
--0.303579 1.59142 0.280059 0.982287 -0.368124
--0.31301 1.64086 0.206038 0.982287 -0.425779
--0.320261 1.67887 0.137011 0.982287 -0.481753
--0.325176 1.70464 0.0738076 0.982287 -0.535826
--0.327633 1.71752 0.0171322 0.982287 -0.587785
--0.327544 1.71705 -0.0324427 0.982287 -0.637424
--0.324854 1.70295 -0.0744861 0.982287 -0.684547
--0.319548 1.67513 -0.108714 0.982287 -0.728968
--0.311647 1.63372 -0.13499 0.982287 -0.770513
--0.301209 1.579 -0.15333 0.982287 -0.809017
--0.288329 1.51148 -0.163897 0.982287 -0.844328
--0.273135 1.43183 -0.166997 0.982287 -0.876306
--0.255793 1.34091 -0.163075 0.982287 -0.904827
--0.236494 1.23975 -0.152702 0.982287 -0.929776
--0.215464 1.1295 -0.136567 0.982287 -0.951056
--0.19295 1.01148 -0.115463 0.982287 -0.968583
--0.169221 0.887091 -0.090272 0.982287 -0.982287
--0.144566 0.757845 -0.0619503 0.982287 -0.992115
--0.119286 0.625321 -0.0315098 0.982287 -0.998027
--0.0936907 0.491145 -3.29628e-07 0.982287 -1
--0.0680954 0.356969 0.0315092 0.982287 -0.998027
--0.0428151 0.224445 0.0619497 0.982287 -0.992115
--0.0181601 0.0951986 0.0902714 0.982287 -0.982287
-0.00556841 -0.0291907 0.115462 0.982287 -0.968583
-0.0280827 -0.147215 0.136567 0.982287 -0.951057
-0.0491131 -0.25746 0.152702 0.982287 -0.929777
-0.0684112 -0.358625 0.163075 0.982287 -0.904827
-0.0857542 -0.44954 0.166997 0.982287 -0.876307
-0.100948 -0.529187 0.163897 0.982287 -0.844328
-0.113828 -0.596709 0.15333 0.982287 -0.809017
-0.124266 -0.651427 0.13499 0.982287 -0.770514
-0.132167 -0.692846 0.108714 0.982287 -0.728969
-0.137473 -0.72066 0.0744869 0.982287 -0.684548
-0.140163 -0.73476 0.0324436 0.982287 -0.637425
-0.140253 -0.735231 -0.0171311 0.982287 -0.587786
-0.137796 -0.722351 -0.0738063 0.982287 -0.535828
-0.13288 -0.696584 -0.13701 0.982287 -0.481754
-0.12563 -0.658574 -0.206036 0.982287 -0.42578
-0.116198 -0.609131 -0.280057 0.982287 -0.368125
-0.104769 -0.54922 -0.358132 0.982287 -0.309018
-0.0915538 -0.479943 -0.439223 0.982287 -0.248691
-0.0767849 -0.402521 -0.522212 0.982287 -0.187382
-0.0607148 -0.318279 -0.605915 0.982287 -0.125334
-0.0436108 -0.228616 -0.689101 0.982287 -0.0627915
-0.0257509 -0.134991 -0.770512 0.982287 -9.80385e-07
-0.00741972 -0.0388956 -0.848882 0.982287 0.0627895
--0.0110966 0.0581705 -0.922957 0.982287 0.125332
--0.0295143 0.15472 -0.991516 0.982287 0.18738
--0.0475569 0.249302 -1.05339 0.982287 0.248689
--0.0649591 0.340528 -1.10747 0.982287 0.309016
--0.0814712 0.427088 -1.15275 0.982287 0.368124
--0.096863 0.507774 -1.18832 0.982287 0.425778
--0.110927 0.5815 -1.2134 0.982287 0.481753
--0.123481 0.647313 -1.22732 0.982287 0.535826
--0.134373 0.704412 -1.22958 0.982287 0.587784
--0.143481 0.752158 -1.21982 0.982287 0.637423
--0.150716 0.790083 -1.19785 0.982287 0.684546
--0.156022 0.817897 -1.16362 0.982287 0.728968
--0.159378 0.83549 -1.11728 0.982287 0.770513
--0.160798 0.842933 -1.05912 0.982287 0.809016
--0.160329 0.840477 -0.989622 0.982287 0.844327
--0.158053 0.828544 -0.909394 0.982287 0.876306
--0.154081 0.807724 -0.819214 0.982287 0.904827
--0.148556 0.778759 -0.719994 0.982287 0.929776
--0.141645 0.742533 -0.612772 0.982287 0.951056
--0.133542 0.700054 -0.498703 0.982287 0.968583
--0.124459 0.65244 -0.379034 0.982287 0.982287
--0.114626 0.600894 -0.255094 0.982287 0.992115
--0.104286 0.54669 -0.128274 0.982287 0.998027
--0.124345 0.484292 0 0.968583 1
--0.109287 0.425646 0.126432 0.968583 0.998027
--0.0945801 0.368366 0.251456 0.968583 0.992115
--0.0805684 0.313794 0.373686 0.968583 0.982287
--0.0675848 0.263226 0.491774 0.968583 0.968583
--0.0559445 0.21789 0.604429 0.968583 0.951057
--0.0459399 0.178924 0.710439 0.968583 0.929777
--0.0378352 0.147359 0.808685 0.968583 0.904827
--0.0318622 0.124095 0.898155 0.968583 0.876307
--0.028216 0.109894 0.977961 0.968583 0.844328
--0.0270514 0.105358 1.04735 0.968583 0.809017
--0.0284806 0.110925 1.10571 0.968583 0.770513
--0.0325704 0.126854 1.1526 0.968583 0.728969
--0.0393413 0.153224 1.1877 0.968583 0.684547
--0.0487665 0.189933 1.21088 0.968583 0.637424
--0.0607723 0.236693 1.22216 0.968583 0.587785
--0.0752388 0.293036 1.22172 0.968583 0.535827
--0.0920013 0.358322 1.20991 0.968583 0.481754
--0.110853 0.431746 1.18721 0.968583 0.42578
--0.131549 0.51235 1.15423 0.968583 0.368125
--0.153806 0.599037 1.11174 0.968583 0.309017
--0.177313 0.690591 1.0606 0.968583 0.24869
--0.201731 0.785691 1.00179 0.968583 0.187382
--0.226698 0.882932 0.936348 0.968583 0.125334
--0.251839 0.98085 0.865414 0.968583 0.0627908
--0.276768 1.07794 0.790155 0.968583 3.26795e-07
--0.301096 1.17269 0.711778 0.968583 -0.0627902
--0.324435 1.26359 0.631501 0.968583 -0.125333
--0.346406 1.34916 0.550533 0.968583 -0.187381
--0.366646 1.42799 0.470061 0.968583 -0.24869
--0.38481 1.49874 0.391225 0.968583 -0.309017
--0.40058 1.56016 0.315104 0.968583 -0.368124
--0.41367 1.61114 0.242701 0.968583 -0.425779
--0.423828 1.6507 0.174924 0.968583 -0.481753
--0.430842 1.67802 0.112575 0.968583 -0.535826
--0.434544 1.69244 0.0563397 0.968583 -0.587785
--0.434812 1.69348 0.00677422 0.968583 -0.637424
--0.431572 1.68087 -0.0356993 0.968583 -0.684547
--0.424801 1.6545 -0.0707993 0.968583 -0.728968
--0.414526 1.61447 -0.0983871 0.968583 -0.770513
--0.400823 1.5611 -0.118468 0.968583 -0.809017
--0.383819 1.49488 -0.131189 0.968583 -0.844328
--0.363689 1.41648 -0.136835 0.968583 -0.876306
--0.340652 1.32675 -0.135822 0.968583 -0.904827
--0.314972 1.22674 -0.128689 0.968583 -0.929776
--0.286948 1.11759 -0.116087 0.968583 -0.951056
--0.256917 1.00063 -0.098767 0.968583 -0.968583
--0.225244 0.877269 -0.0775662 0.968583 -0.982287
--0.192317 0.749027 -0.0533914 0.968583 -0.992115
--0.158544 0.61749 -0.0272037 0.968583 -0.998027
--0.124345 0.484293 -2.84743e-07 0.968583 -1
--0.090146 0.351096 0.0272031 0.968583 -0.998027
--0.056373 0.219559 0.0533909 0.968583 -0.992115
--0.0234461 0.0913167 0.0775657 0.968583 -0.982287
-0.00822726 -0.0320431 0.0987665 0.968583 -0.968583
-0.0382581 -0.149006 0.116086 0.968583 -0.951057
-0.0662815 -0.25815 0.128688 0.968583 -0.929777
-0.0919621 -0.358169 0.135821 0.968583 -0.904827
-0.114999 -0.447891 0.136835 0.968583 -0.876307
-0.135129 -0.526294 0.131189 0.968583 -0.844328
-0.152133 -0.59252 0.118468 0.968583 -0.809017
-0.165836 -0.64589 0.0983875 0.968583 -0.770514
-0.176112 -0.685911 0.0707999 0.968583 -0.728969
-0.182883 -0.712282 0.0357001 0.968583 -0.684548
-0.186122 -0.724899 -0.00677327 0.968583 -0.637425
-0.185854 -0.723856 -0.0563386 0.968583 -0.587786
-0.182152 -0.709437 -0.112574 0.968583 -0.535828
-0.175138 -0.68212 -0.174922 0.968583 -0.481754
-0.164981 -0.642559 -0.242699 0.968583 -0.42578
-0.151891 -0.591578 -0.315103 0.968583 -0.368125
-0.136121 -0.530156 -0.391223 0.968583 -0.309018
-0.117957 -0.459411 -0.470059 0.968583 -0.248691
-0.097717 -0.380583 -0.550532 0.968583 -0.187382
-0.0757456 -0.29501 -0.631499 0.968583 -0.125334
-0.0524068 -0.204111 -0.711777 0.968583 -0.0627915
-0.0280792 -0.109362 -0.790154 0.968583 -9.80385e-07
-0.00315008 -0.0122688 -0.865412 0.968583 0.0627895
--0.021991 0.0856496 -0.936347 0.968583 0.125332
--0.0469583 0.182891 -1.00178 0.968583 0.18738
--0.0713756 0.27799 -1.0606 0.968583 0.248689
--0.0948826 0.369544 -1.11174 0.968583 0.309016
--0.11714 0.456232 -1.15423 0.968583 0.368124
--0.137836 0.536836 -1.18721 0.968583 0.425778
--0.156688 0.61026 -1.20991 0.968583 0.481753
--0.17345 0.675546 -1.22172 0.968583 0.535826
--0.187917 0.731889 -1.22216 0.968583 0.587784
--0.199923 0.778649 -1.21088 0.968583 0.637423
--0.209348 0.815358 -1.1877 0.968583 0.684546
--0.216119 0.841729 -1.1526 0.968583 0.728968
--0.220209 0.857658 -1.10572 0.968583 0.770513
--0.221638 0.863225 -1.04735 0.968583 0.809016
--0.220474 0.858689 -0.977963 0.968583 0.844327
--0.216827 0.844488 -0.898156 0.968583 0.876306
--0.210854 0.821225 -0.808687 0.968583 0.904827
--0.20275 0.78966 -0.710441 0.968583 0.929776
--0.192745 0.750694 -0.604431 0.968583 0.951056
--0.181105 0.705358 -0.491776 0.968583 0.968583
--0.168121 0.654791 -0.373689 0.968583 0.982287
--0.15411 0.600219 -0.251459 0.968583 0.992115
--0.139403 0.542939 -0.126434 0.968583 0.998027
--0.154508 0.475528 0 0.951057 1
--0.13458 0.414195 0.124468 0.951057 0.998027
--0.115101 0.354245 0.247573 0.951057 0.992115
--0.0965124 0.297035 0.367973 0.951057 0.982287
--0.079241 0.243879 0.484362 0.951057 0.968583
--0.0636907 0.19602 0.595491 0.951057 0.951057
--0.0502363 0.154611 0.700186 0.951057 0.929777
--0.0392169 0.120697 0.797359 0.951057 0.904827
--0.0309302 0.0951934 0.88603 0.951057 0.876307
--0.025627 0.0788719 0.965337 0.951057 0.844328
--0.0235071 0.0723477 1.03455 0.951057 0.809017
--0.0247156 0.076067 1.09306 0.951057 0.770513
--0.02934 0.0902993 1.14044 0.951057 0.728969
--0.0374085 0.115132 1.17637 0.951057 0.684547
--0.0488893 0.150466 1.20073 0.951057 0.637424
--0.0636906 0.19602 1.21353 0.951057 0.587785
--0.0816617 0.251329 1.21492 0.951057 0.535827
--0.102595 0.315755 1.20523 0.951057 0.481754
--0.126229 0.388493 1.18492 0.951057 0.42578
--0.152252 0.468584 1.15457 0.951057 0.368125
--0.180308 0.554931 1.11491 0.951057 0.309017
--0.209999 0.646311 1.06677 0.951057 0.24869
--0.240895 0.741401 1.01107 0.951057 0.187382
--0.272539 0.83879 0.948814 0.951057 0.125334
--0.304452 0.937008 0.88109 0.951057 0.0627908
--0.336144 1.03455 0.809017 0.951057 3.26795e-07
--0.367118 1.12988 0.733752 0.951057 -0.0627902
--0.396884 1.22148 0.656462 0.951057 -0.125333
--0.424957 1.30789 0.578309 0.951057 -0.187381
--0.450875 1.38765 0.500433 0.951057 -0.24869
--0.4742 1.45944 0.42393 0.951057 -0.309017
--0.494525 1.52199 0.349839 0.951057 -0.368124
--0.511485 1.57419 0.279124 0.951057 -0.425779
--0.524758 1.61504 0.212664 0.951057 -0.481753
--0.534075 1.64371 0.151232 0.951057 -0.535826
--0.539218 1.65955 0.0954916 0.951057 -0.587785
--0.540032 1.66205 0.0459845 0.951057 -0.637424
--0.536421 1.65094 0.00312268 0.951057 -0.684547
--0.528353 1.6261 -0.0328151 0.951057 -0.728968
--0.515859 1.58765 -0.0616871 0.951057 -0.770513
--0.499035 1.53587 -0.0834888 0.951057 -0.809017
--0.47804 1.47126 -0.0983511 0.951057 -0.844328
--0.453094 1.39448 -0.106537 0.951057 -0.876306
--0.424473 1.3064 -0.108434 0.951057 -0.904827
--0.39251 1.20802 -0.104548 0.951057 -0.929776
--0.357583 1.10053 -0.0954917 0.951057 -0.951056
--0.320118 0.985223 -0.0819736 0.951057 -0.968583
--0.280575 0.863522 -0.0647838 0.951057 -0.982287
--0.239446 0.73694 -0.0447798 0.951057 -0.992115
--0.197247 0.607065 -0.0228707 0.951057 -0.998027
--0.154509 0.47553 -2.39576e-07 0.951057 -1
--0.111771 0.343995 0.0228702 0.951057 -0.998027
--0.0695714 0.214119 0.0447794 0.951057 -0.992115
--0.0284427 0.0875376 0.0647834 0.951057 -0.982287
-0.0111004 -0.0341636 0.0819733 0.951057 -0.968583
-0.0485658 -0.14947 0.0954915 0.951057 -0.951057
-0.0834923 -0.256963 0.104548 0.951057 -0.929777
-0.115456 -0.355337 0.108434 0.951057 -0.904827
-0.144077 -0.443423 0.106537 0.951057 -0.876307
-0.169023 -0.5202 0.0983514 0.951057 -0.844328
-0.190018 -0.584816 0.0834892 0.951057 -0.809017
-0.206842 -0.636594 0.0616877 0.951057 -0.770514
-0.219336 -0.675047 0.0328158 0.951057 -0.728969
-0.227405 -0.69988 -0.00312186 0.951057 -0.684548
-0.231016 -0.710994 -0.0459835 0.951057 -0.637425
-0.230202 -0.708489 -0.0954905 0.951057 -0.587786
-0.225058 -0.692659 -0.151231 0.951057 -0.535828
-0.215742 -0.663986 -0.212662 0.951057 -0.481754
-0.202469 -0.623135 -0.279123 0.951057 -0.42578
-0.185509 -0.570938 -0.349837 0.951057 -0.368125
-0.165184 -0.508384 -0.423928 0.951057 -0.309018
-0.141859 -0.436599 -0.500431 0.951057 -0.248691
-0.115941 -0.356831 -0.578308 0.951057 -0.187382
-0.0878677 -0.270429 -0.65646 0.951057 -0.125334
-0.0581025 -0.178821 -0.73375 0.951057 -0.0627915
-0.0271276 -0.0834904 -0.809016 0.951057 -9.80385e-07
--0.00456403 0.0140466 -0.881088 0.951057 0.0627895
--0.036477 0.112265 -0.948813 0.951057 0.125332
--0.0681206 0.209654 -1.01106 0.951057 0.18738
--0.099017 0.304743 -1.06677 0.951057 0.248689
--0.128708 0.396124 -1.11491 0.951057 0.309016
--0.156764 0.482471 -1.15457 0.951057 0.368124
--0.182787 0.562562 -1.18492 0.951057 0.425778
--0.206421 0.6353 -1.20523 0.951057 0.481753
--0.227355 0.699726 -1.21492 0.951057 0.535826
--0.245326 0.755036 -1.21353 0.951057 0.587784
--0.260127 0.80059 -1.20073 0.951057 0.637423
--0.271608 0.835924 -1.17637 0.951057 0.684546
--0.279677 0.860757 -1.14044 0.951057 0.728968
--0.284301 0.874989 -1.09306 0.951057 0.770513
--0.285509 0.878709 -1.03455 0.951057 0.809016
--0.28339 0.872185 -0.965338 0.951057 0.844327
--0.278087 0.855864 -0.886032 0.951057 0.876306
--0.2698 0.83036 -0.797361 0.951057 0.904827
--0.258781 0.796446 -0.700188 0.951057 0.929776
--0.245326 0.755038 -0.595494 0.951057 0.951056
--0.229776 0.707179 -0.484364 0.951057 0.968583
--0.212505 0.654023 -0.367975 0.951057 0.982287
--0.193916 0.596813 -0.247575 0.951057 0.992115
--0.174437 0.536863 -0.12447 0.951057 0.998027
--0.184062 0.464888 0 0.929777 1
--0.158894 0.401322 0.122381 0.929777 0.998027
--0.134277 0.339146 0.243445 0.929777 0.992115
--0.110752 0.279728 0.361896 0.929777 0.982287
--0.0888414 0.224388 0.476472 0.929777 0.968583
--0.0690409 0.174377 0.585966 0.929777 0.951057
--0.0518103 0.130858 0.689241 0.929777 0.929777
--0.037566 0.094881 0.785246 0.929777 0.904827
--0.0266738 0.0673704 0.873032 0.929777 0.876307
--0.0194424 0.0491059 0.95176 0.929777 0.844328
--0.016118 0.0407095 1.02072 0.929777 0.809017
--0.0168803 0.0426348 1.07933 0.929777 0.770513
--0.0218387 0.0551583 1.12715 0.929777 0.728969
--0.0310302 0.0783735 1.16389 0.929777 0.684547
--0.0444186 0.112189 1.1894 0.929777 0.637424
--0.0618945 0.156328 1.2037 0.929777 0.587785
--0.0832763 0.210332 1.20692 0.929777 0.535827
--0.108313 0.273568 1.19936 0.929777 0.481754
--0.136689 0.345237 1.18146 0.929777 0.42578
--0.168025 0.424384 1.15377 0.929777 0.368125
--0.201889 0.509915 1.11698 0.929777 0.309017
--0.237799 0.600613 1.07188 0.929777 0.24869
--0.275231 0.695155 1.01935 0.929777 0.187382
--0.313629 0.792136 0.960343 0.929777 0.125334
--0.35241 0.890087 0.895896 0.929777 0.0627908
--0.390978 0.9875 0.827081 0.929777 3.26795e-07
--0.42873 1.08285 0.755001 0.929777 -0.0627902
--0.465065 1.17462 0.680775 0.929777 -0.125333
--0.499396 1.26133 0.605514 0.929777 -0.187381
--0.531157 1.34155 0.530311 0.929777 -0.24869
--0.559813 1.41393 0.456216 0.929777 -0.309017
--0.584871 1.47722 0.384228 0.929777 -0.368124
--0.605883 1.53029 0.315272 0.929777 -0.425779
--0.622455 1.57214 0.250194 0.929777 -0.481753
--0.634259 1.60196 0.189739 0.929777 -0.535826
--0.641028 1.61905 0.134549 0.929777 -0.587785
--0.642569 1.62295 0.0851493 0.929777 -0.637424
--0.638765 1.61334 0.0419416 0.929777 -0.684547
--0.629574 1.59012 0.0052014 0.929777 -0.728968
--0.615031 1.55339 -0.0249264 0.929777 -0.770513
--0.595251 1.50344 -0.0484274 0.929777 -0.809017
--0.570425 1.44073 -0.0654164 0.929777 -0.844328
--0.540816 1.36595 -0.0761337 0.929777 -0.876306
--0.50676 1.27993 -0.0809391 0.929777 -0.904827
--0.468656 1.18369 -0.0803041 0.929777 -0.929776
--0.426965 1.07839 -0.0748026 0.929777 -0.951056
--0.382199 0.965326 -0.0650994 0.929777 -0.968583
--0.334917 0.845905 -0.0519375 0.929777 -0.982287
--0.285714 0.721633 -0.036124 0.929777 -0.992115
--0.235215 0.594086 -0.0185151 0.929777 -0.998027
--0.184063 0.46489 -1.94173e-07 0.929777 -1
--0.13291 0.335693 0.0185147 0.929777 -0.998027
--0.0824109 0.208146 0.0361236 0.929777 -0.992115
--0.0332081 0.0838741 0.0519372 0.929777 -0.982287
-0.0140742 -0.0355473 0.0650991 0.929777 -0.968583
-0.0588401 -0.148613 0.0748024 0.929777 -0.951057
-0.100531 -0.253914 0.080304 0.929777 -0.929777
-0.138635 -0.350153 0.0809391 0.929777 -0.904827
-0.172691 -0.436169 0.0761339 0.929777 -0.876307
-0.2023 -0.510953 0.0654167 0.929777 -0.844328
-0.227127 -0.573657 0.0484278 0.929777 -0.809017
-0.246907 -0.623616 0.0249269 0.929777 -0.770514
-0.261449 -0.660347 -0.0052007 0.929777 -0.728969
-0.270641 -0.683562 -0.0419408 0.929777 -0.684548
-0.274445 -0.69317 -0.0851483 0.929777 -0.637425
-0.272904 -0.689276 -0.134548 0.929777 -0.587786
-0.266135 -0.67218 -0.189738 0.929777 -0.535828
-0.254332 -0.642369 -0.250192 0.929777 -0.481754
-0.237759 -0.600511 -0.315271 0.929777 -0.42578
-0.216747 -0.547442 -0.384226 0.929777 -0.368125
-0.19169 -0.484153 -0.456215 0.929777 -0.309018
-0.163033 -0.411775 -0.530309 0.929777 -0.248691
-0.131272 -0.331556 -0.605513 0.929777 -0.187382
-0.0969416 -0.244847 -0.680773 0.929777 -0.125334
-0.0606067 -0.153075 -0.755 0.929777 -0.0627915
-0.0228551 -0.0577253 -0.827079 0.929777 -9.80385e-07
--0.0157132 0.0396871 -0.895895 0.929777 0.0627895
--0.0544947 0.137638 -0.960342 0.929777 0.125332
--0.0928923 0.234619 -1.01935 0.929777 0.18738
--0.130324 0.329162 -1.07188 0.929777 0.248689
--0.166234 0.41986 -1.11698 0.929777 0.309016
--0.200098 0.505391 -1.15377 0.929777 0.368124
--0.231435 0.584538 -1.18146 0.929777 0.425778
--0.25981 0.656207 -1.19936 0.929777 0.481753
--0.284847 0.719443 -1.20692 0.929777 0.535826
--0.306229 0.773448 -1.2037 0.929777 0.587784
--0.323705 0.817587 -1.1894 0.929777 0.637423
--0.337094 0.851403 -1.16389 0.929777 0.684546
--0.346285 0.874618 -1.12715 0.929777 0.728968
--0.351244 0.887142 -1.07933 0.929777 0.770513
--0.352006 0.889067 -1.02072 0.929777 0.809016
--0.348682 0.880671 -0.951762 0.929777 0.844327
--0.341451 0.862407 -0.873033 0.929777 0.876306
--0.330558 0.834896 -0.785248 0.929777 0.904827
--0.316314 0.79892 -0.689243 0.929777 0.929776
--0.299084 0.7554 -0.585968 0.929777 0.951056
--0.279283 0.70539 -0.476475 0.929777 0.968583
--0.257373 0.65005 -0.361899 0.929777 0.982287
--0.233847 0.590631 -0.243448 0.929777 0.992115
--0.20923 0.528456 -0.122383 0.929777 0.998027
--0.212889 0.452414 0 0.904827 1
--0.182158 0.387105 0.120173 0.904827 0.998027
--0.15208 0.323187 0.239077 0.904827 0.992115
--0.1233 0.262025 0.355462 0.904827 0.982287
--0.0964375 0.20494 0.468112 0.904827 0.968583
--0.0720828 0.153184 0.575863 0.904827 0.951057
--0.0507822 0.107918 0.677616 0.904827 0.929777
--0.0330312 0.070195 0.772359 0.904827 0.904827
--0.0192653 0.0409408 0.859172 0.904827 0.876307
--0.00985245 0.0209376 0.937244 0.904827 0.844328
--0.00508709 0.0108106 1.00589 0.904827 0.809017
--0.0051845 0.0110176 1.06453 0.904827 0.770513
--0.010277 0.0218398 1.11275 0.904827 0.728969
--0.0204115 0.0433767 1.15026 0.904827 0.684547
--0.0355479 0.0755433 1.1769 0.904827 0.637424
--0.0555597 0.11807 1.19268 0.904827 0.587785
--0.080235 0.170508 1.19772 0.904827 0.535827
--0.10928 0.232232 1.1923 0.904827 0.481754
--0.142323 0.302452 1.17683 0.904827 0.42578
--0.178919 0.380224 1.15184 0.904827 0.368125
--0.21856 0.464464 1.11795 0.904827 0.309017
--0.260677 0.553966 1.07594 0.904827 0.24869
--0.304652 0.64742 1.02662 0.904827 0.187382
--0.349831 0.743429 0.970925 0.904827 0.125334
--0.395526 0.840536 0.909819 0.904827 0.0627908
--0.441033 0.937244 0.844328 0.904827 3.26795e-07
--0.48564 1.03204 0.775505 0.904827 -0.0627902
--0.528637 1.12341 0.704416 0.904827 -0.125333
--0.569332 1.20989 0.632122 0.904827 -0.187381
--0.607054 1.29006 0.559666 0.904827 -0.24869
--0.641174 1.36257 0.488053 0.904827 -0.309017
--0.671105 1.42617 0.418238 0.904827 -0.368124
--0.696317 1.47975 0.351109 0.904827 -0.425779
--0.716347 1.52232 0.287477 0.904827 -0.481753
--0.7308 1.55303 0.228059 0.904827 -0.535826
--0.739364 1.57123 0.173474 0.904827 -0.587785
--0.741807 1.57642 0.12423 0.904827 -0.637424
--0.737987 1.5683 0.0807192 0.904827 -0.684547
--0.727852 1.54677 0.0432128 0.904827 -0.728968
--0.711443 1.5119 0.011859 0.904827 -0.770513
--0.688891 1.46397 -0.0133181 0.904827 -0.809017
--0.660418 1.40346 -0.0324171 0.904827 -0.844328
--0.626332 1.33103 -0.0456556 0.904827 -0.876306
--0.587026 1.24749 -0.0533644 0.904827 -0.904827
--0.542968 1.15387 -0.055981 0.904827 -0.929776
--0.494697 1.05129 -0.0540396 0.904827 -0.951056
--0.442816 0.941033 -0.0481609 0.904827 -0.968583
--0.38798 0.824499 -0.0390399 0.904827 -0.982287
--0.330887 0.703172 -0.0274325 0.904827 -0.992115
--0.272272 0.578609 -0.0141413 0.904827 -0.998027
--0.21289 0.452415 -1.48578e-07 0.904827 -1
--0.153508 0.326221 0.014141 0.904827 -0.998027
--0.0948928 0.201658 0.0274323 0.904827 -0.992115
--0.0378005 0.0803303 0.0390397 0.904827 -0.982287
-0.017036 -0.0362034 0.0481607 0.904827 -0.968583
-0.0689173 -0.146457 0.0540395 0.904827 -0.951057
-0.117188 -0.249037 0.055981 0.904827 -0.929777
-0.161246 -0.342666 0.0533645 0.904827 -0.904827
-0.200553 -0.426196 0.0456558 0.904827 -0.876307
-0.234638 -0.498632 0.0324175 0.904827 -0.844328
-0.263112 -0.559142 0.0133186 0.904827 -0.809017
-0.285664 -0.607067 -0.0118584 0.904827 -0.770514
-0.302073 -0.641939 -0.0432121 0.904827 -0.728969
-0.312208 -0.663476 -0.0807183 0.904827 -0.684548
-0.316028 -0.671594 -0.124229 0.904827 -0.637425
-0.313585 -0.666402 -0.173473 0.904827 -0.587786
-0.305021 -0.648204 -0.228058 0.904827 -0.535828
-0.290568 -0.617489 -0.287476 0.904827 -0.481754
-0.270539 -0.574925 -0.351108 0.904827 -0.42578
-0.245326 -0.521346 -0.418236 0.904827 -0.368125
-0.215396 -0.45774 -0.488051 0.904827 -0.309018
-0.181276 -0.385232 -0.559664 0.904827 -0.248691
-0.143554 -0.305067 -0.63212 0.904827 -0.187382
-0.102859 -0.218587 -0.704414 0.904827 -0.125334
-0.0598618 -0.127213 -0.775504 0.904827 -0.0627915
-0.0152551 -0.0324187 -0.844327 0.904827 -9.80385e-07
--0.030252 0.0642889 -0.909818 0.904827 0.0627895
--0.0759471 0.161396 -0.970924 0.904827 0.125332
--0.121126 0.257405 -1.02662 0.904827 0.18738
--0.165101 0.350859 -1.07594 0.904827 0.248689
--0.207218 0.440361 -1.11795 0.904827 0.309016
--0.246859 0.524602 -1.15183 0.904827 0.368124
--0.283455 0.602374 -1.17683 0.904827 0.425778
--0.316498 0.672594 -1.1923 0.904827 0.481753
--0.345543 0.734318 -1.19772 0.904827 0.535826
--0.370219 0.786756 -1.19268 0.904827 0.587784
--0.390231 0.829283 -1.1769 0.904827 0.637423
--0.405367 0.86145 -1.15026 0.904827 0.684546
--0.415502 0.882987 -1.11275 0.904827 0.728968
--0.420594 0.893809 -1.06453 0.904827 0.770513
--0.420692 0.894017 -1.00589 0.904827 0.809016
--0.415927 0.88389 -0.937246 0.904827 0.844327
--0.406514 0.863887 -0.859173 0.904827 0.876306
--0.392748 0.834633 -0.772361 0.904827 0.904827
--0.374997 0.79691 -0.677619 0.904827 0.929776
--0.353697 0.751644 -0.575865 0.904827 0.951056
--0.329342 0.699888 -0.468115 0.904827 0.968583
--0.30248 0.642803 -0.355465 0.904827 0.982287
--0.273699 0.581641 -0.239079 0.904827 0.992115
--0.243622 0.517723 -0.120175 0.904827 0.998027
--0.240877 0.438153 0 0.876307 1
--0.204304 0.371627 0.117846 0.876307 0.998027
--0.168489 0.306481 0.234473 0.876307 0.992115
--0.13418 0.244073 0.348678 0.876307 0.982287
--0.102097 0.185714 0.45929 0.876307 0.968583
--0.0729236 0.132648 0.565191 0.876307 0.951057
--0.0472949 0.0860291 0.665323 0.876307 0.929777
--0.0257865 0.0469055 0.758709 0.876307 0.904827
--0.00890486 0.0161979 0.844463 0.876307 0.876307
-0.00292155 -0.00531428 0.921803 0.876307 0.844328
-0.00934941 -0.0170065 0.990059 0.876307 0.809017
-0.0101267 -0.0184204 1.04868 0.876307 0.770513
-0.0050972 -0.00927179 1.09726 0.876307 0.728969
--0.00579638 0.0105436 1.13549 0.876307 0.684547
--0.0225111 0.0409475 1.16324 0.876307 0.637424
--0.0449037 0.0816796 1.18048 0.876307 0.587785
--0.0727328 0.132301 1.18734 0.876307 0.535827
--0.105662 0.192199 1.18407 0.876307 0.481754
--0.143264 0.260597 1.17105 0.876307 0.42578
--0.18503 0.336569 1.14876 0.876307 0.368125
--0.230372 0.419046 1.11782 0.876307 0.309017
--0.278638 0.506841 1.07893 0.876307 0.24869
--0.329117 0.598662 1.03289 0.876307 0.187382
--0.381052 0.693132 0.980548 0.876307 0.125334
--0.433654 0.788814 0.922844 0.876307 0.0627908
--0.486109 0.88423 0.860742 0.876307 3.26795e-07
--0.537596 0.977885 0.795244 0.876307 -0.0627902
--0.587298 1.06829 0.727362 0.876307 -0.125333
--0.634414 1.154 0.658106 0.876307 -0.187381
--0.678171 1.23359 0.588468 0.876307 -0.24869
--0.71784 1.30575 0.519407 0.876307 -0.309017
--0.752746 1.36924 0.451835 0.876307 -0.368124
--0.782275 1.42295 0.3866 0.876307 -0.425779
--0.805889 1.46591 0.324476 0.876307 -0.481753
--0.823134 1.49728 0.266154 0.876307 -0.535826
--0.833644 1.51639 0.212228 0.876307 -0.587785
--0.837152 1.52278 0.163188 0.876307 -0.637424
--0.83349 1.51612 0.119417 0.876307 -0.684547
--0.822597 1.4963 0.0811815 0.876307 -0.728968
--0.804514 1.46341 0.0486327 0.876307 -0.770513
--0.779391 1.41771 0.0218043 0.876307 -0.809017
--0.747479 1.35966 0.000614128 0.876307 -0.844328
--0.709132 1.28991 -0.0151323 0.876307 -0.876306
--0.664797 1.20926 -0.0257371 0.876307 -0.904827
--0.615011 1.1187 -0.0316027 0.876307 -0.929776
--0.560392 1.01935 -0.0332233 0.876307 -0.951056
--0.501631 0.912464 -0.0311749 0.876307 -0.968583
--0.439478 0.799408 -0.0261038 0.876307 -0.982287
--0.374736 0.681643 -0.018714 0.876307 -0.992115
--0.308247 0.5607 -0.00975349 0.876307 -0.998027
--0.240877 0.438155 -1.02837e-07 0.876307 -1
--0.173508 0.31561 0.0097533 0.876307 -0.998027
--0.107019 0.194666 0.0187138 0.876307 -0.992115
--0.0422769 0.0769015 0.0261037 0.876307 -0.982287
-0.019876 -0.0361544 0.0311748 0.876307 -0.968583
-0.0786378 -0.143042 0.0332233 0.876307 -0.951057
-0.133257 -0.242393 0.0316028 0.876307 -0.929777
-0.183043 -0.332954 0.0257373 0.876307 -0.904827
-0.227378 -0.413599 0.0151326 0.876307 -0.876307
-0.265725 -0.483353 -0.000613745 0.876307 -0.844328
-0.297637 -0.5414 -0.0218038 0.876307 -0.809017
-0.322761 -0.5871 -0.0486321 0.876307 -0.770514
-0.340843 -0.619992 -0.0811808 0.876307 -0.728969
-0.351737 -0.639808 -0.119416 0.876307 -0.684548
-0.355399 -0.646468 -0.163187 0.876307 -0.637425
-0.351891 -0.640088 -0.212227 0.876307 -0.587786
-0.341381 -0.620969 -0.266153 0.876307 -0.535828
-0.324136 -0.589602 -0.324475 0.876307 -0.481754
-0.300522 -0.546648 -0.386598 0.876307 -0.42578
-0.270993 -0.492935 -0.451834 0.876307 -0.368125
-0.236088 -0.429443 -0.519406 0.876307 -0.309018
-0.196419 -0.357284 -0.588466 0.876307 -0.248691
-0.152661 -0.27769 -0.658104 0.876307 -0.187382
-0.105546 -0.191987 -0.72736 0.876307 -0.125334
-0.055844 -0.10158 -0.795243 0.876307 -0.0627915
-0.00435663 -0.0079247 -0.860741 0.876307 -9.80385e-07
--0.0480986 0.0874911 -0.922842 0.876307 0.0627895
--0.1007 0.183173 -0.980547 0.876307 0.125332
--0.152636 0.277643 -1.03289 0.876307 0.18738
--0.203114 0.369464 -1.07893 0.876307 0.248689
--0.25138 0.457259 -1.11782 0.876307 0.309016
--0.296722 0.539737 -1.14876 0.876307 0.368124
--0.338488 0.615708 -1.17105 0.876307 0.425778
--0.376091 0.684107 -1.18407 0.876307 0.481753
--0.40902 0.744005 -1.18734 0.876307 0.535826
--0.436849 0.794626 -1.18048 0.876307 0.587784
--0.459242 0.835359 -1.16324 0.876307 0.637423
--0.475957 0.865763 -1.13549 0.876307 0.684546
--0.48685 0.885578 -1.09726 0.876307 0.728968
--0.49188 0.894727 -1.04868 0.876307 0.770513
--0.491103 0.893314 -0.99006 0.876307 0.809016
--0.484675 0.881622 -0.921805 0.876307 0.844327
--0.472849 0.86011 -0.844465 0.876307 0.876306
--0.455967 0.829402 -0.758711 0.876307 0.904827
--0.434459 0.790279 -0.665325 0.876307 0.929776
--0.40883 0.74366 -0.565193 0.876307 0.951056
--0.379657 0.690594 -0.459293 0.876307 0.968583
--0.347574 0.632235 -0.34868 0.876307 0.982287
--0.313265 0.569827 -0.234475 0.876307 0.992115
--0.27745 0.504681 -0.117849 0.876307 0.998027
--0.267913 0.422164 0 0.844328 1
--0.225272 0.354972 0.115403 0.844328 0.998027
--0.183494 0.289141 0.229638 0.844328 0.992115
--0.143431 0.226011 0.341549 0.844328 0.982287
--0.105903 0.166876 0.450015 0.844328 0.968583
--0.0716883 0.112963 0.553961 0.844328 0.951057
--0.0415117 0.0654121 0.652373 0.844328 0.929777
--0.0160293 0.0252581 0.744311 0.844328 0.904827
-0.00418125 -0.0065886 0.828922 0.844328 0.876307
-0.0186303 -0.0293566 0.905452 0.844328 0.844328
-0.0269249 -0.0424268 0.973255 0.844328 0.809017
-0.0287757 -0.0453432 1.0318 0.844328 0.770513
-0.0240019 -0.037821 1.08068 0.844328 0.728969
-0.0125351 -0.0197522 1.1196 0.844328 0.684547
--0.00557948 0.00879186 1.14843 0.844328 0.637424
--0.030183 0.0475609 1.16712 0.844328 0.587785
--0.061005 0.0961286 1.17579 0.844328 0.535827
--0.0976671 0.153899 1.17467 0.844328 0.481754
--0.139689 0.220114 1.1641 0.844328 0.42578
--0.186494 0.293868 1.14455 0.844328 0.368125
--0.237422 0.374117 1.11659 0.844328 0.309017
--0.291733 0.459698 1.08086 0.844328 0.24869
--0.348625 0.549345 1.03813 0.844328 0.187382
--0.407242 0.641711 0.989204 0.844328 0.125334
--0.46669 0.735386 0.934957 0.844328 0.0627908
--0.526049 0.828922 0.876307 0.844328 3.26795e-07
--0.58439 0.920852 0.814198 0.844328 -0.0627902
--0.640786 1.00972 0.74959 0.844328 -0.125333
--0.694329 1.09409 0.68344 0.844328 -0.187381
--0.744146 1.17259 0.616689 0.844328 -0.24869
--0.789409 1.24391 0.55025 0.844328 -0.309017
--0.82935 1.30685 0.484986 0.844328 -0.368124
--0.863275 1.36031 0.421709 0.844328 -0.425779
--0.890572 1.40332 0.361155 0.844328 -0.481753
--0.910725 1.43507 0.303987 0.844328 -0.535826
--0.923317 1.45492 0.250772 0.844328 -0.587785
--0.928042 1.46236 0.201985 0.844328 -0.637424
--0.924708 1.45711 0.157997 0.844328 -0.684547
--0.913242 1.43904 0.11907 0.844328 -0.728968
--0.893687 1.40823 0.0853584 0.844328 -0.770513
--0.866209 1.36493 0.0569051 0.844328 -0.809017
--0.83109 1.30959 0.0336448 0.844328 -0.844328
--0.788724 1.24283 0.0154058 0.844328 -0.876306
--0.739616 1.16545 0.00191556 0.844328 -0.904827
--0.684368 1.07839 -0.00719319 0.844328 -0.929776
--0.623676 0.982757 -0.0123742 0.844328 -0.951056
--0.558316 0.879767 -0.0141581 0.844328 -0.968583
--0.489136 0.770756 -0.013142 0.844328 -0.982287
--0.417039 0.657149 -0.00997702 0.844328 -0.992115
--0.342972 0.540439 -0.00535608 0.844328 -0.998027
--0.267914 0.422165 -5.69938e-08 0.844328 -1
--0.192855 0.303892 0.00535597 0.844328 -0.998027
--0.118789 0.187182 0.00997694 0.844328 -0.992115
--0.0466918 0.0735746 0.0131419 0.844328 -0.982287
-0.0224885 -0.0354363 0.0141581 0.844328 -0.968583
-0.0878481 -0.138427 0.0123742 0.844328 -0.951057
-0.14854 -0.234062 0.00719333 0.844328 -0.929777
-0.203788 -0.32112 -0.00191532 0.844328 -0.904827
-0.252897 -0.398502 -0.0154055 0.844328 -0.876307
-0.295263 -0.46526 -0.0336444 0.844328 -0.844328
-0.330382 -0.520599 -0.0569046 0.844328 -0.809017
-0.35786 -0.563898 -0.0853578 0.844328 -0.770514
-0.377415 -0.594711 -0.119069 0.844328 -0.728969
-0.388882 -0.61278 -0.157996 0.844328 -0.684548
-0.392216 -0.618033 -0.201985 0.844328 -0.637425
-0.387491 -0.610588 -0.250771 0.844328 -0.587786
-0.374899 -0.590746 -0.303985 0.844328 -0.535828
-0.354746 -0.558992 -0.361154 0.844328 -0.481754
-0.327449 -0.515978 -0.421707 0.844328 -0.42578
-0.293524 -0.462521 -0.484985 0.844328 -0.368125
-0.253583 -0.399584 -0.550248 0.844328 -0.309018
-0.208321 -0.328261 -0.616688 0.844328 -0.248691
-0.158504 -0.249762 -0.683438 0.844328 -0.187382
-0.10496 -0.165391 -0.749588 0.844328 -0.125334
-0.0485647 -0.0765259 -0.814197 0.844328 -0.0627915
--0.00977584 0.0154043 -0.876306 0.844328 -9.80385e-07
--0.0691352 0.10894 -0.934956 0.844328 0.0627895
--0.128583 0.202615 -0.989203 0.844328 0.125332
--0.1872 0.294981 -1.03813 0.844328 0.18738
--0.244092 0.384628 -1.08086 0.844328 0.248689
--0.298403 0.470209 -1.11658 0.844328 0.309016
--0.349331 0.550458 -1.14455 0.844328 0.368124
--0.396137 0.624212 -1.1641 0.844328 0.425778
--0.438159 0.690428 -1.17467 0.844328 0.481753
--0.474821 0.748198 -1.17579 0.844328 0.535826
--0.505643 0.796766 -1.16712 0.844328 0.587784
--0.530246 0.835536 -1.14843 0.844328 0.637423
--0.548361 0.86408 -1.1196 0.844328 0.684546
--0.559828 0.882149 -1.08068 0.844328 0.728968
--0.564602 0.889671 -1.0318 0.844328 0.770513
--0.562751 0.886755 -0.973256 0.844328 0.809016
--0.554457 0.873685 -0.905454 0.844328 0.844327
--0.540008 0.850917 -0.828924 0.844328 0.876306
--0.519798 0.819071 -0.744313 0.844328 0.904827
--0.494315 0.778917 -0.652375 0.844328 0.929776
--0.464139 0.731366 -0.553963 0.844328 0.951056
--0.429925 0.677453 -0.450017 0.844328 0.968583
--0.392396 0.618318 -0.341551 0.844328 0.982287
--0.352333 0.555188 -0.22964 0.844328 0.992115
--0.310556 0.489358 -0.115406 0.844328 0.998027
--0.293892 0.404509 0 0.809017 1
--0.245008 0.337226 0.112847 0.809017 0.998027
--0.197094 0.271276 0.224576 0.809017 0.992115
--0.151101 0.207973 0.334083 0.809017 0.982287
--0.107951 0.148582 0.440296 0.809017 0.968583
--0.0685184 0.0943075 0.542185 0.809017 0.951057
--0.033615 0.0462672 0.638779 0.809017 0.929777
--0.00397793 0.00547515 0.729178 0.809017 0.904827
-0.0197436 -0.0271748 0.812563 0.809017 0.876307
-0.0369989 -0.0509246 0.888208 0.809017 0.844328
-0.0473451 -0.065165 0.955491 0.809017 0.809017
-0.0504553 -0.0694458 1.0139 0.809017 0.770513
-0.0461236 -0.0634838 1.06303 0.809017 0.728969
-0.0342698 -0.0471684 1.10261 0.809017 0.684547
-0.0149406 -0.020564 1.13248 0.809017 0.637424
--0.0116902 0.0160902 1.15261 0.809017 0.587785
--0.0453242 0.0623834 1.16308 0.809017 0.535827
--0.0855422 0.117739 1.16411 0.809017 0.481754
--0.131811 0.181423 1.15601 0.809017 0.42578
--0.183491 0.252554 1.13921 0.809017 0.368125
--0.239846 0.330119 1.11425 0.809017 0.309017
--0.300053 0.412988 1.08173 0.809017 0.24869
--0.36322 0.49993 1.04235 0.809017 0.187382
--0.428393 0.589633 0.996884 0.809017 0.125334
--0.494575 0.680725 0.946149 0.809017 0.0627908
--0.560741 0.771794 0.891007 0.809017 3.26795e-07
--0.625854 0.861415 0.832348 0.809017 -0.0627902
--0.688881 0.948164 0.771078 0.809017 -0.125333
--0.748809 1.03065 0.708099 0.809017 -0.187381
--0.804662 1.10752 0.644303 0.809017 -0.24869
--0.855515 1.17752 0.580549 0.809017 -0.309017
--0.900513 1.23945 0.517659 0.809017 -0.368124
--0.938878 1.29226 0.456401 0.809017 -0.425779
--0.969925 1.33499 0.397478 0.809017 -0.481753
--0.993076 1.36685 0.341519 0.809017 -0.535826
--1.00787 1.38721 0.289069 0.809017 -0.587785
--1.01395 1.39558 0.240583 0.809017 -0.637424
--1.0111 1.39167 0.196421 0.809017 -0.684547
--0.99925 1.37535 0.156841 0.809017 -0.728968
--0.978432 1.3467 0.122 0.809017 -0.770513
--0.94883 1.30595 0.0919498 0.809017 -0.809017
--0.910754 1.25355 0.0666422 0.809017 -0.844328
--0.86464 1.19008 0.0459287 0.809017 -0.876306
--0.811045 1.11631 0.0295664 0.809017 -0.904827
--0.750638 1.03317 0.0172234 0.809017 -0.929776
--0.684189 0.941706 0.00848715 0.809017 -0.951056
--0.61256 0.843117 0.00287264 0.809017 -0.968583
--0.53669 0.738691 -0.000167151 0.809017 -0.982287
--0.457582 0.629808 -0.00123018 0.809017 -0.992115
--0.376288 0.517917 -0.000953374 0.809017 -0.998027
--0.293893 0.40451 -1.10947e-08 0.809017 -1
--0.211498 0.291103 0.000953359 0.809017 -0.998027
--0.130204 0.179211 0.00123018 0.809017 -0.992115
--0.0510966 0.0703285 0.000167192 0.809017 -0.982287
-0.0247734 -0.0340977 -0.00287255 0.809017 -0.968583
-0.0964026 -0.132687 -0.008487 0.809017 -0.951057
-0.162852 -0.224146 -0.0172232 0.809017 -0.929777
-0.223259 -0.30729 -0.0295661 0.809017 -0.904827
-0.276854 -0.381057 -0.0459284 0.809017 -0.876307
-0.322968 -0.444528 -0.0666418 0.809017 -0.844328
-0.361044 -0.496935 -0.0919493 0.809017 -0.809017
-0.390647 -0.53768 -0.121999 0.809017 -0.770514
-0.411465 -0.566333 -0.156841 0.809017 -0.728969
-0.423319 -0.582649 -0.19642 0.809017 -0.684548
-0.426162 -0.586562 -0.240582 0.809017 -0.637425
-0.42008 -0.578192 -0.289068 0.809017 -0.587786
-0.405292 -0.557837 -0.341518 0.809017 -0.535828
-0.382141 -0.525972 -0.397477 0.809017 -0.481754
-0.351093 -0.483239 -0.4564 0.809017 -0.42578
-0.312729 -0.430435 -0.517658 0.809017 -0.368125
-0.267732 -0.368501 -0.580547 0.809017 -0.309018
-0.216878 -0.298507 -0.644301 0.809017 -0.248691
-0.161025 -0.221632 -0.708098 0.809017 -0.187382
-0.101097 -0.139148 -0.771077 0.809017 -0.125334
-0.0380704 -0.0523994 -0.832347 0.809017 -0.0627915
--0.0270425 0.0372209 -0.891006 0.809017 -9.80385e-07
--0.0932086 0.128291 -0.946148 0.809017 0.0627895
--0.159391 0.219383 -0.996883 0.809017 0.125332
--0.224563 0.309085 -1.04235 0.809017 0.18738
--0.28773 0.396027 -1.08172 0.809017 0.248689
--0.347938 0.478896 -1.11425 0.809017 0.309016
--0.404293 0.556462 -1.13921 0.809017 0.368124
--0.455973 0.627593 -1.15601 0.809017 0.425778
--0.502242 0.691277 -1.16411 0.809017 0.481753
--0.54246 0.746633 -1.16308 0.809017 0.535826
--0.576094 0.792926 -1.15261 0.809017 0.587784
--0.602725 0.829581 -1.13248 0.809017 0.637423
--0.622054 0.856185 -1.10261 0.809017 0.684546
--0.633908 0.872501 -1.06303 0.809017 0.728968
--0.63824 0.878463 -1.0139 0.809017 0.770513
--0.63513 0.874183 -0.955492 0.809017 0.809016
--0.624784 0.859942 -0.88821 0.809017 0.844327
--0.607529 0.836193 -0.812564 0.809017 0.876306
--0.583808 0.803543 -0.72918 0.809017 0.904827
--0.554171 0.762751 -0.638781 0.809017 0.929776
--0.519267 0.714711 -0.542187 0.809017 0.951056
--0.479835 0.660436 -0.440298 0.809017 0.968583
--0.436685 0.601046 -0.334085 0.809017 0.982287
--0.390692 0.537742 -0.224578 0.809017 0.992115
--0.342777 0.471793 -0.112849 0.809017 0.998027
--0.318712 0.385257 0 0.770514 1
--0.263466 0.318476 0.110179 0.770514 0.998027
--0.209294 0.252993 0.219292 0.770514 0.992115
--0.157249 0.190081 0.326287 0.770514 0.982287
--0.108351 0.130975 0.430142 0.770514 0.968583
--0.0635698 0.0768427 0.529874 0.770514 0.951057
--0.0238035 0.0287735 0.624555 0.770514 0.929777
-0.0101306 -0.0122458 0.713325 0.770514 0.904827
-0.0375122 -0.0453445 0.795401 0.770514 0.876307
-0.05773 -0.0697837 0.870087 0.770514 0.844328
-0.0702917 -0.0849681 0.936784 0.770514 0.809017
-0.0748322 -0.0904567 0.994996 0.770514 0.770513
-0.0711208 -0.0859703 1.04434 0.770514 0.728969
-0.0590647 -0.0713971 1.08453 0.770514 0.684547
-0.0387116 -0.0467943 1.11542 0.770514 0.637424
-0.0102491 -0.012389 1.13696 0.770514 0.587785
--0.0259976 0.0314257 1.14923 0.770514 0.535827
--0.06957 0.0840958 1.1524 0.770514 0.481754
--0.119884 0.144915 1.14678 0.770514 0.42578
--0.176237 0.213034 1.13275 0.770514 0.368125
--0.23782 0.287476 1.11081 0.770514 0.309017
--0.303732 0.367149 1.08152 0.770514 0.24869
--0.372987 0.450865 1.04554 0.770514 0.187382
--0.444539 0.537356 1.00358 0.770514 0.125334
--0.517291 0.625298 0.956406 0.770514 0.0627908
--0.590113 0.713325 0.904827 0.770514 3.26795e-07
--0.661865 0.800058 0.849677 0.770514 -0.0627902
--0.731407 0.88412 0.791805 0.770514 -0.125333
--0.797625 0.964164 0.73206 0.770514 -0.187381
--0.859442 1.03889 0.67128 0.770514 -0.24869
--0.91584 1.10706 0.610275 0.770514 -0.309017
--0.965873 1.16754 0.549821 0.770514 -0.368124
--1.00868 1.21929 0.490644 0.770514 -0.425779
--1.04352 1.2614 0.433409 0.770514 -0.481753
--1.06973 1.29308 0.378714 0.770514 -0.535826
--1.08681 1.31373 0.32708 0.770514 -0.587785
--1.09437 1.32287 0.278944 0.770514 -0.637424
--1.09218 1.32021 0.234651 0.770514 -0.684547
--1.08012 1.30564 0.194458 0.770514 -0.728968
--1.05825 1.27921 0.158521 0.770514 -0.770513
--1.02677 1.24115 0.126904 0.770514 -0.809017
--0.986003 1.19187 0.0995739 0.770514 -0.844328
--0.936434 1.13196 0.0764064 0.770514 -0.876306
--0.878669 1.06213 0.057188 0.770514 -0.904827
--0.81344 0.983281 0.041623 0.770514 -0.929776
--0.74159 0.896429 0.0293401 0.770514 -0.951056
--0.664063 0.802715 0.0199006 0.770514 -0.968583
--0.581887 0.703381 0.0128078 0.770514 -0.982287
--0.496162 0.599758 0.00751788 0.770514 -0.992115
--0.408041 0.493237 0.00345027 0.770514 -0.998027
--0.318713 0.385258 3.48154e-08 0.770514 -1
--0.229384 0.277278 -0.00345019 0.770514 -0.998027
--0.141263 0.170758 -0.00751778 0.770514 -0.992115
--0.0555383 0.0671343 -0.0128077 0.770514 -0.982287
-0.0266375 -0.0321993 -0.0199004 0.770514 -0.968583
-0.104165 -0.125914 -0.0293399 0.770514 -0.951057
-0.176015 -0.212766 -0.0416227 0.770514 -0.929777
-0.241245 -0.291615 -0.0571876 0.770514 -0.904827
-0.299009 -0.361441 -0.0764059 0.770514 -0.876307
-0.348578 -0.421359 -0.0995734 0.770514 -0.844328
-0.389343 -0.470636 -0.126903 0.770514 -0.809017
-0.420828 -0.508694 -0.15852 0.770514 -0.770514
-0.442695 -0.535127 -0.194457 0.770514 -0.728969
-0.454752 -0.549701 -0.234651 0.770514 -0.684548
-0.456949 -0.552357 -0.278943 0.770514 -0.637425
-0.449387 -0.543216 -0.327079 0.770514 -0.587786
-0.432307 -0.52257 -0.378713 0.770514 -0.535828
-0.406093 -0.490882 -0.433408 0.770514 -0.481754
-0.37126 -0.448777 -0.490642 0.770514 -0.42578
-0.32845 -0.397028 -0.54982 0.770514 -0.368125
-0.278417 -0.336549 -0.610274 0.770514 -0.309018
-0.22202 -0.268376 -0.671278 0.770514 -0.248691
-0.160203 -0.193652 -0.732059 0.770514 -0.187382
-0.093985 -0.113608 -0.791804 0.770514 -0.125334
-0.0244426 -0.0295461 -0.849676 0.770514 -0.0627915
--0.0473088 0.0571865 -0.904826 0.770514 -9.80385e-07
--0.120131 0.145214 -0.956405 0.770514 0.0627895
--0.192883 0.233155 -1.00358 0.770514 0.125332
--0.264435 0.319647 -1.04554 0.770514 0.18738
--0.333691 0.403363 -1.08152 0.770514 0.248689
--0.399602 0.483036 -1.11081 0.770514 0.309016
--0.461186 0.557478 -1.13275 0.770514 0.368124
--0.517539 0.625598 -1.14678 0.770514 0.425778
--0.567853 0.686417 -1.1524 0.770514 0.481753
--0.611425 0.739087 -1.14923 0.770514 0.535826
--0.647672 0.782902 -1.13696 0.770514 0.587784
--0.676135 0.817307 -1.11542 0.770514 0.637423
--0.696488 0.84191 -1.08453 0.770514 0.684546
--0.708544 0.856484 -1.04434 0.770514 0.728968
--0.712256 0.86097 -0.994997 0.770514 0.770513
--0.707715 0.855482 -0.936785 0.770514 0.809016
--0.695154 0.840298 -0.870089 0.770514 0.844327
--0.674936 0.815859 -0.795403 0.770514 0.876306
--0.647555 0.78276 -0.713327 0.770514 0.904827
--0.613621 0.741741 -0.624557 0.770514 0.929776
--0.573855 0.693672 -0.529876 0.770514 0.951056
--0.529073 0.63954 -0.430144 0.770514 0.968583
--0.480176 0.580434 -0.32629 0.770514 0.982287
--0.428131 0.517522 -0.219294 0.770514 0.992115
--0.373958 0.452039 -0.110181 0.770514 0.998027
--0.342273 0.364484 0 0.728969 1
--0.280604 0.298813 0.107402 0.728969 0.998027
--0.220109 0.234392 0.213792 0.728969 0.992115
--0.161943 0.172452 0.31817 0.728969 0.982287
--0.107224 0.114182 0.419564 0.728969 0.968583
--0.0570111 0.0607107 0.517039 0.728969 0.951057
--0.0122902 0.0130878 0.609714 0.728969 0.929777
-0.0260432 -0.0277333 0.696769 0.728969 0.904827
-0.0571995 -0.0609113 0.777455 0.728969 0.876307
-0.0805071 -0.0857315 0.851108 0.728969 0.844328
-0.0954249 -0.101617 0.917153 0.728969 0.809017
-0.10155 -0.10814 0.975112 0.728969 0.770513
-0.0986274 -0.105028 1.02461 0.728969 0.728969
-0.0865507 -0.0921673 1.06538 0.728969 0.684547
-0.0653679 -0.0696098 1.09726 0.728969 0.637424
-0.0352795 -0.0375689 1.12019 0.728969 0.587785
--0.0033638 0.00358209 1.13424 0.728969 0.535827
--0.050066 0.053315 1.13956 0.728969 0.481754
--0.104194 0.110955 1.13642 0.728969 0.42578
--0.164984 0.175691 1.12517 0.728969 0.368125
--0.23156 0.246586 1.10627 0.728969 0.309017
--0.302939 0.322597 1.08025 0.728969 0.24869
--0.378051 0.402584 1.0477 0.728969 0.187382
--0.455757 0.485333 1.00928 0.728969 0.125334
--0.534863 0.569572 0.96572 0.728969 0.0627908
--0.614139 0.653993 0.917755 0.728969 3.26795e-07
--0.692343 0.737271 0.866168 0.728969 -0.0627902
--0.768234 0.818087 0.811751 0.728969 -0.125333
--0.840597 0.895145 0.755299 0.728969 -0.187381
--0.908258 0.967197 0.697594 0.728969 -0.24869
--0.970107 1.03306 0.639399 0.728969 -0.309017
--1.02511 1.09163 0.58144 0.728969 -0.368124
--1.07234 1.14192 0.524402 0.728969 -0.425779
--1.11096 1.18305 0.468912 0.728969 -0.481753
--1.14027 1.21427 0.415536 0.728969 -0.535826
--1.15972 1.23497 0.364769 0.728969 -0.587785
--1.16887 1.24472 0.317029 0.728969 -0.637424
--1.16746 1.24322 0.27265 0.728969 -0.684547
--1.15539 1.23036 0.231882 0.728969 -0.728968
--1.13269 1.20619 0.194886 0.728969 -0.770513
--1.09957 1.17092 0.161733 0.728969 -0.809017
--1.0564 1.12495 0.132407 0.728969 -0.844328
--1.00369 1.06882 0.106809 0.728969 -0.876306
--0.942101 1.00324 0.0847532 0.728969 -0.904827
--0.872419 0.929032 0.0659815 0.728969 -0.929776
--0.795559 0.847185 0.0501641 0.728969 -0.951056
--0.712544 0.758783 0.0369088 0.728969 -0.968583
--0.62449 0.665015 0.0257702 0.728969 -0.982287
--0.532587 0.567148 0.0162585 0.728969 -0.992115
--0.438085 0.466514 0.00785051 0.728969 -0.998027
--0.342274 0.364486 8.06911e-08 0.728969 -1
--0.246464 0.262457 -0.00785034 0.728969 -0.998027
--0.151962 0.161823 -0.0162583 0.728969 -0.992115
--0.0600589 0.0639563 -0.02577 0.728969 -0.982287
-0.0279959 -0.0298126 -0.0369086 0.728969 -0.968583
-0.111011 -0.118215 -0.0501638 0.728969 -0.951057
-0.18787 -0.200062 -0.0659812 0.728969 -0.929777
-0.257553 -0.274266 -0.0847528 0.728969 -0.904827
-0.319144 -0.339854 -0.106808 0.728969 -0.876307
-0.371853 -0.395984 -0.132407 0.728969 -0.844328
-0.415023 -0.441955 -0.161732 0.728969 -0.809017
-0.448138 -0.477219 -0.194885 0.728969 -0.770514
-0.470838 -0.501392 -0.231881 0.728969 -0.728969
-0.482915 -0.514253 -0.272649 0.728969 -0.684548
-0.484321 -0.51575 -0.317028 0.728969 -0.637425
-0.475169 -0.506004 -0.364768 0.728969 -0.587786
-0.455725 -0.485299 -0.415535 0.728969 -0.535828
-0.426411 -0.454082 -0.46891 0.728969 -0.481754
-0.387791 -0.412956 -0.5244 0.728969 -0.42578
-0.340566 -0.362667 -0.581439 0.728969 -0.368125
-0.285562 -0.304092 -0.639398 0.728969 -0.309018
-0.223713 -0.23823 -0.697593 0.728969 -0.248691
-0.156051 -0.166178 -0.755298 0.728969 -0.187382
-0.0836889 -0.0891197 -0.81175 0.728969 -0.125334
-0.00779789 -0.00830391 -0.866167 0.728969 -0.0627915
--0.0704057 0.0749745 -0.917754 0.728969 -9.80385e-07
--0.149682 0.159396 -0.965719 0.728969 0.0627895
--0.228788 0.243635 -1.00928 0.728969 0.125332
--0.306494 0.326383 -1.0477 0.728969 0.18738
--0.381607 0.40637 -1.08025 0.728969 0.248689
--0.452986 0.482381 -1.10627 0.728969 0.309016
--0.519561 0.553277 -1.12517 0.728969 0.368124
--0.580352 0.618013 -1.13642 0.728969 0.425778
--0.63448 0.675653 -1.13956 0.728969 0.481753
--0.681182 0.725386 -1.13424 0.728969 0.535826
--0.719826 0.766537 -1.12019 0.728969 0.587784
--0.749914 0.798578 -1.09726 0.728969 0.637423
--0.771097 0.821136 -1.06538 0.728969 0.684546
--0.783174 0.833996 -1.02461 0.728969 0.728968
--0.786097 0.837109 -0.975113 0.728969 0.770513
--0.779972 0.830586 -0.917154 0.728969 0.809016
--0.765054 0.814701 -0.851109 0.728969 0.844327
--0.741747 0.789881 -0.777456 0.728969 0.876306
--0.710591 0.756703 -0.69677 0.728969 0.904827
--0.672257 0.715882 -0.609716 0.728969 0.929776
--0.627537 0.668259 -0.517041 0.728969 0.951056
--0.577324 0.614788 -0.419566 0.728969 0.968583
--0.522605 0.556518 -0.318172 0.728969 0.982287
--0.464439 0.494578 -0.213794 0.728969 0.992115
--0.403944 0.430157 -0.107404 0.728969 0.998027
--0.364484 0.342274 0 0.684547 1
--0.296386 0.278325 0.104519 0.684547 0.998027
--0.229561 0.215572 0.208081 0.684547 0.992115
--0.165262 0.155191 0.309738 0.684547 0.982287
--0.104699 0.0983187 0.408571 0.684547 0.968583
--0.0490217 0.0460345 0.503695 0.684547 0.951057
-0.000699729 -0.00065709 0.594272 0.684547 0.929777
-0.0434939 -0.0408436 0.679524 0.684547 0.904827
-0.0785031 -0.0737194 0.758741 0.684547 0.876307
-0.104997 -0.0985992 0.831288 0.684547 0.844328
-0.122388 -0.11493 0.896616 0.684547 0.809017
-0.130235 -0.122298 0.954266 0.684547 0.770513
-0.128257 -0.120441 1.00387 0.684547 0.728969
-0.116336 -0.109247 1.04518 0.684547 0.684547
-0.0945199 -0.0887602 1.07801 0.684547 0.637424
-0.0630199 -0.0591797 1.10231 0.684547 0.587785
-0.0222109 -0.0208575 1.11813 0.684547 0.535827
--0.0273755 0.0257073 1.12559 0.684547 0.481754
--0.0850589 0.0798757 1.12493 0.684547 0.42578
--0.15002 0.140878 1.11648 0.684547 0.368125
--0.221313 0.207827 1.10065 0.684547 0.309017
--0.297883 0.279731 1.07791 0.684547 0.24869
--0.378575 0.355506 1.04882 0.684547 0.187382
--0.462163 0.434 1.01399 0.684547 0.125334
--0.547357 0.514003 0.97408 0.684547 0.0627908
--0.632835 0.594272 0.929777 0.684547 3.26795e-07
--0.717254 0.673547 0.881804 0.684547 -0.0627902
--0.799275 0.75057 0.830896 0.684547 -0.125333
--0.877588 0.824111 0.777792 0.684547 -0.187381
--0.950926 0.89298 0.723221 0.684547 -0.24869
--1.01809 0.95605 0.667892 0.684547 -0.309017
--1.07796 1.01227 0.612486 0.684547 -0.368124
--1.12953 1.0607 0.557642 0.684547 -0.425779
--1.17191 1.1005 0.503952 0.684547 -0.481753
--1.20433 1.13094 0.451947 0.684547 -0.535826
--1.22619 1.15147 0.402098 0.684547 -0.587785
--1.23702 1.16164 0.354801 0.684547 -0.637424
--1.23654 1.16119 0.31038 0.684547 -0.684547
--1.22462 1.15 0.269078 0.684547 -0.728968
--1.20131 1.12811 0.231058 0.684547 -0.770513
--1.16682 1.09572 0.196402 0.684547 -0.809017
--1.12155 1.0532 0.16511 0.684547 -0.844328
--1.06603 1.00107 0.137105 0.684547 -0.876306
--1.00098 0.939983 0.112235 0.684547 -0.904827
--0.927242 0.870739 0.090275 0.684547 -0.929776
--0.845798 0.794258 0.0709386 0.684547 -0.951056
--0.757743 0.711569 0.0538807 0.684547 -0.968583
--0.664276 0.623797 0.0387071 0.684547 -0.982287
--0.566675 0.532144 0.0249831 0.684547 -0.992115
--0.466283 0.437869 0.012243 0.684547 -0.998027
--0.364485 0.342275 1.26487e-07 0.684547 -1
--0.262687 0.24668 -0.0122427 0.684547 -0.998027
--0.162295 0.152406 -0.0249828 0.684547 -0.992115
--0.0646946 0.0607524 -0.0387068 0.684547 -0.982287
-0.0287729 -0.0270196 -0.0538803 0.684547 -0.968583
-0.116828 -0.109709 -0.0709382 0.684547 -0.951057
-0.198272 -0.18619 -0.0902745 0.684547 -0.929777
-0.27201 -0.255435 -0.112234 0.684547 -0.904827
-0.337061 -0.316521 -0.137105 0.684547 -0.876307
-0.392576 -0.368654 -0.165109 0.684547 -0.844328
-0.437853 -0.411172 -0.196401 0.684547 -0.809017
-0.472341 -0.443558 -0.231057 0.684547 -0.770514
-0.495655 -0.465451 -0.269077 0.684547 -0.728969
-0.507576 -0.476646 -0.310379 0.684547 -0.684548
-0.508056 -0.477097 -0.3548 0.684547 -0.637425
-0.497222 -0.466923 -0.402097 0.684547 -0.587786
-0.475364 -0.446397 -0.451946 0.684547 -0.535828
-0.442941 -0.41595 -0.50395 0.684547 -0.481754
-0.400565 -0.376156 -0.557641 0.684547 -0.42578
-0.348994 -0.327728 -0.612485 0.684547 -0.368125
-0.289122 -0.271504 -0.667891 0.684547 -0.309018
-0.221959 -0.208434 -0.723219 0.684547 -0.248691
-0.148622 -0.139565 -0.777791 0.684547 -0.187382
-0.0703088 -0.0660244 -0.830895 0.684547 -0.125334
--0.011713 0.0109993 -0.881803 0.684547 -0.0627915
--0.0961315 0.0902736 -0.929776 0.684547 -9.80385e-07
--0.181609 0.170542 -0.974079 0.684547 0.0627895
--0.266804 0.250546 -1.01399 0.684547 0.125332
--0.350391 0.32904 -1.04882 0.684547 0.18738
--0.431084 0.404815 -1.07791 0.684547 0.248689
--0.507653 0.476719 -1.10065 0.684547 0.309016
--0.578947 0.543668 -1.11648 0.684547 0.368124
--0.643908 0.604671 -1.12493 0.684547 0.425778
--0.701592 0.658839 -1.12559 0.684547 0.481753
--0.751178 0.705404 -1.11813 0.684547 0.535826
--0.791987 0.743726 -1.10231 0.684547 0.587784
--0.823488 0.773307 -1.07801 0.684547 0.637423
--0.845304 0.793794 -1.04518 0.684547 0.684546
--0.857225 0.804989 -1.00387 0.684547 0.728968
--0.859203 0.806846 -0.954267 0.684547 0.770513
--0.851356 0.799477 -0.896617 0.684547 0.809016
--0.833966 0.783147 -0.83129 0.684547 0.844327
--0.807472 0.758267 -0.758743 0.684547 0.876306
--0.772463 0.725392 -0.679526 0.684547 0.904827
--0.729669 0.685205 -0.594274 0.684547 0.929776
--0.679948 0.638514 -0.503697 0.684547 0.951056
--0.624271 0.58623 -0.408573 0.684547 0.968583
--0.563708 0.529358 -0.309741 0.684547 0.982287
--0.499409 0.468976 -0.208083 0.684547 0.992115
--0.432584 0.406224 -0.104522 0.684547 0.998027
--0.385256 0.318712 0 0.637424 1
--0.310783 0.257103 0.101534 0.637424 0.998027
--0.237678 0.196625 0.202164 0.637424 0.992115
--0.167288 0.138392 0.301001 0.637424 0.982287
--0.100913 0.0834823 0.397176 0.637424 0.968583
--0.0397894 0.0329167 0.489853 0.637424 0.951057
-0.0149319 -0.0123528 0.578243 0.637424 0.929777
-0.062206 -0.0514613 0.66161 0.637424 0.904827
-0.101109 -0.083645 0.739279 0.637424 0.876307
-0.130856 -0.108253 0.810648 0.637424 0.844328
-0.150809 -0.12476 0.875195 0.637424 0.809017
-0.160494 -0.132772 0.932478 0.637424 0.770513
-0.159605 -0.132037 0.982147 0.637424 0.728969
-0.148011 -0.122446 1.02394 0.637424 0.684547
-0.125758 -0.104036 1.0577 0.637424 0.637424
-0.0930671 -0.0769919 1.08335 0.637424 0.587785
-0.0503364 -0.0416419 1.10091 0.637424 0.535827
--0.00186959 0.00154666 1.11051 0.637424 0.481754
--0.0628262 0.0519744 1.11234 0.637424 0.42578
--0.13166 0.108919 1.10669 0.637424 0.368125
--0.207363 0.171546 1.09394 0.637424 0.309017
--0.288806 0.238921 1.07451 0.637424 0.24869
--0.374759 0.310028 1.04891 0.637424 0.187382
--0.46391 0.38378 1.0177 0.637424 0.125334
--0.554881 0.459038 0.981479 0.637424 0.0627908
--0.646258 0.534632 0.940881 0.637424 3.26795e-07
--0.736605 0.609373 0.896569 0.637424 -0.0627902
--0.82449 0.682079 0.849221 0.637424 -0.125333
--0.908511 0.751586 0.799518 0.637424 -0.187381
--0.987311 0.816775 0.748133 0.637424 -0.24869
--1.05961 0.876582 0.695726 0.637424 -0.309017
--1.1242 0.93002 0.642927 0.637424 -0.368124
--1.18001 0.97619 0.590332 0.637424 -0.425779
--1.22608 1.0143 0.538494 0.637424 -0.481753
--1.26159 1.04368 0.487913 0.637424 -0.535826
--1.28589 1.06378 0.43903 0.637424 -0.587785
--1.29848 1.0742 0.392223 0.637424 -0.637424
--1.29905 1.07467 0.347803 0.637424 -0.684547
--1.28746 1.06508 0.306008 0.637424 -0.728968
--1.26375 1.04546 0.267002 0.637424 -0.770513
--1.22815 1.01601 0.230877 0.637424 -0.809017
--1.18107 0.97707 0.19765 0.637424 -0.844328
--1.1231 0.92911 0.167267 0.637424 -0.876306
--1.05498 0.872755 0.139606 0.637424 -0.904827
--0.977608 0.808749 0.114479 0.637424 -0.929776
--0.892033 0.737954 0.091643 0.637424 -0.951056
--0.799418 0.661337 0.0707993 0.637424 -0.968583
--0.70104 0.579951 0.0516058 0.637424 -0.982287
--0.59826 0.494924 0.033683 0.637424 -0.992115
--0.492508 0.407438 0.0166234 0.637424 -0.998027
--0.385258 0.318713 1.72158e-07 0.637424 -1
--0.278007 0.229988 -0.0166231 0.637424 -0.998027
--0.172255 0.142502 -0.0336827 0.637424 -0.992115
--0.0694748 0.0574746 -0.0516054 0.637424 -0.982287
-0.0289035 -0.0239111 -0.0707989 0.637424 -0.968583
-0.121518 -0.100528 -0.0916426 0.637424 -0.951057
-0.207094 -0.171323 -0.114479 0.637424 -0.929777
-0.284464 -0.235329 -0.139605 0.637424 -0.904827
-0.352586 -0.291685 -0.167266 0.637424 -0.876307
-0.410559 -0.339644 -0.197649 0.637424 -0.844328
-0.457635 -0.378589 -0.230876 0.637424 -0.809017
-0.493232 -0.408037 -0.267001 0.637424 -0.770514
-0.516942 -0.427652 -0.306007 0.637424 -0.728969
-0.528536 -0.437243 -0.347802 0.637424 -0.684548
-0.527969 -0.436774 -0.392222 0.637424 -0.637425
-0.515378 -0.426358 -0.439029 0.637424 -0.587786
-0.491079 -0.406257 -0.487912 0.637424 -0.535828
-0.455567 -0.376878 -0.538493 0.637424 -0.481754
-0.409498 -0.338766 -0.590331 0.637424 -0.42578
-0.353688 -0.292596 -0.642926 0.637424 -0.368125
-0.289094 -0.239159 -0.695725 0.637424 -0.309018
-0.216799 -0.179352 -0.748132 0.637424 -0.248691
-0.138 -0.114163 -0.799517 0.637424 -0.187382
-0.0539793 -0.0446556 -0.84922 0.637424 -0.125334
--0.0339063 0.0280498 -0.896568 0.637424 -0.0627915
--0.124253 0.102791 -0.94088 0.637424 -9.80385e-07
--0.21563 0.178384 -0.981479 0.637424 0.0627895
--0.306601 0.253643 -1.0177 0.637424 0.125332
--0.395752 0.327395 -1.04891 0.637424 0.18738
--0.481705 0.398502 -1.07451 0.637424 0.248689
--0.563149 0.465878 -1.09394 0.637424 0.309016
--0.638851 0.528504 -1.10669 0.637424 0.368124
--0.707685 0.585449 -1.11234 0.637424 0.425778
--0.768642 0.635877 -1.11051 0.637424 0.481753
--0.820848 0.679065 -1.10091 0.637424 0.535826
--0.863579 0.714416 -1.08335 0.637424 0.587784
--0.89627 0.74146 -1.0577 0.637424 0.637423
--0.918524 0.75987 -1.02394 0.637424 0.684546
--0.930118 0.769462 -0.982148 0.637424 0.728968
--0.931007 0.770197 -0.932479 0.637424 0.770513
--0.921322 0.762185 -0.875196 0.637424 0.809016
--0.901369 0.745678 -0.81065 0.637424 0.844327
--0.871623 0.72107 -0.73928 0.637424 0.876306
--0.83272 0.688886 -0.661611 0.637424 0.904827
--0.785446 0.649778 -0.578245 0.637424 0.929776
--0.730725 0.604509 -0.489855 0.637424 0.951056
--0.669602 0.553943 -0.397178 0.637424 0.968583
--0.603227 0.499033 -0.301003 0.637424 0.982287
--0.532836 0.440801 -0.202166 0.637424 0.992115
--0.459731 0.380323 -0.101536 0.637424 0.998027
--0.404508 0.293893 0 0.587786 1
--0.323772 0.235234 0.0984474 0.587786 0.998027
--0.244495 0.177636 0.196048 0.587786 0.992115
--0.168111 0.12214 0.291967 0.587786 0.982287
--0.0960097 0.0697552 0.385388 0.587786 0.968583
--0.0295087 0.0214393 0.475528 0.587786 0.951057
-0.030165 -0.0219162 0.561644 0.587786 0.929777
-0.0818954 -0.0595006 0.643042 0.587786 0.904827
-0.124696 -0.0905973 0.719087 0.587786 0.876307
-0.157727 -0.114596 0.789209 0.587786 0.844328
-0.180308 -0.131001 0.85291 0.587786 0.809017
-0.191928 -0.139444 0.90977 0.587786 0.770513
-0.192257 -0.139683 0.95945 0.587786 0.728969
-0.181152 -0.131615 1.0017 0.587786 0.684547
-0.158655 -0.11527 1.03635 0.587786 0.637424
-0.125 -0.0908178 1.06331 0.587786 0.587785
-0.0806023 -0.058561 1.08261 0.587786 0.535827
-0.0260583 -0.0189325 1.09433 0.587786 0.481754
--0.0378662 0.0275115 1.09864 0.587786 0.42578
--0.110248 0.0800997 1.09581 0.587786 0.368125
--0.190018 0.138056 1.08614 0.587786 0.309017
--0.275983 0.200513 1.07005 0.587786 0.24869
--0.366837 0.266523 1.04797 0.587786 0.187382
--0.46119 0.335074 1.02041 0.587786 0.125334
--0.557581 0.405107 0.98791 0.587786 0.0627908
--0.654508 0.475528 0.951057 0.587786 3.26795e-07
--0.750449 0.545233 0.91045 0.587786 -0.0627902
--0.843884 0.613118 0.866708 0.587786 -0.125333
--0.933322 0.678099 0.820454 0.587786 -0.187381
--1.01732 0.739131 0.772307 0.587786 -0.24869
--1.09453 0.795221 0.722873 0.587786 -0.309017
--1.16366 0.845447 0.672733 0.587786 -0.368124
--1.22356 0.888972 0.62244 0.587786 -0.425779
--1.27323 0.925055 0.572506 0.587786 -0.481753
--1.31178 0.953067 0.523397 0.587786 -0.535826
--1.33852 0.972496 0.475528 0.587786 -0.587785
--1.35293 0.982961 0.429258 0.587786 -0.637424
--1.35465 0.984214 0.384883 0.587786 -0.684547
--1.34355 0.976146 0.342636 0.587786 -0.728968
--1.31966 0.958788 0.302683 0.587786 -0.770513
--1.28322 0.932313 0.265124 0.587786 -0.809017
--1.23466 0.897033 0.229995 0.587786 -0.844328
--1.17459 0.853391 0.197263 0.587786 -0.876306
--1.1038 0.80196 0.166839 0.587786 -0.904827
--1.02324 0.743432 0.138571 0.587786 -0.929776
--0.934018 0.678604 0.112257 0.587786 -0.951056
--0.837353 0.608373 0.0876482 0.587786 -0.968583
--0.734597 0.533717 0.0644536 0.587786 -0.982287
--0.62719 0.455681 0.0423497 0.587786 -0.992115
--0.516641 0.375362 0.0209874 0.587786 -0.998027
--0.40451 0.293894 2.1766e-07 0.587786 -1
--0.292378 0.212425 -0.020987 0.587786 -0.998027
--0.181829 0.132107 -0.0423493 0.587786 -0.992115
--0.0744216 0.0540705 -0.0644531 0.587786 -0.982287
-0.0283342 -0.020586 -0.0876477 0.587786 -0.968583
-0.124999 -0.0908171 -0.112257 0.587786 -0.951057
-0.214226 -0.155645 -0.13857 0.587786 -0.929777
-0.294784 -0.214174 -0.166838 0.587786 -0.904827
-0.365573 -0.265604 -0.197263 0.587786 -0.876307
-0.42564 -0.309246 -0.229994 0.587786 -0.844328
-0.4742 -0.344527 -0.265124 0.587786 -0.809017
-0.510639 -0.371002 -0.302682 0.587786 -0.770514
-0.534531 -0.38836 -0.342635 0.587786 -0.728969
-0.545636 -0.396428 -0.384882 0.587786 -0.684548
-0.543912 -0.395176 -0.429257 0.587786 -0.637425
-0.529509 -0.384711 -0.475527 0.587786 -0.587786
-0.502767 -0.365282 -0.523396 0.587786 -0.535828
-0.464212 -0.33727 -0.572505 0.587786 -0.481754
-0.414548 -0.301187 -0.622439 0.587786 -0.42578
-0.354641 -0.257662 -0.672732 0.587786 -0.368125
-0.285511 -0.207436 -0.722872 0.587786 -0.309018
-0.20831 -0.151346 -0.772306 0.587786 -0.248691
-0.124307 -0.0903148 -0.820453 0.587786 -0.187382
-0.0348689 -0.0253338 -0.866707 0.587786 -0.125334
--0.0585661 0.0425508 -0.910449 0.587786 -0.0627915
--0.154507 0.112256 -0.951056 0.587786 -9.80385e-07
--0.251434 0.182678 -0.987909 0.587786 0.0627895
--0.347825 0.25271 -1.02041 0.587786 0.125332
--0.442178 0.321261 -1.04797 0.587786 0.18738
--0.533032 0.387271 -1.07005 0.587786 0.248689
--0.618997 0.449728 -1.08614 0.587786 0.309016
--0.698767 0.507685 -1.09581 0.587786 0.368124
--0.771149 0.560273 -1.09864 0.587786 0.425778
--0.835074 0.606717 -1.09433 0.587786 0.481753
--0.889618 0.646346 -1.08261 0.587786 0.535826
--0.934016 0.678603 -1.06331 0.587786 0.587784
--0.967671 0.703055 -1.03635 0.587786 0.637423
--0.990168 0.7194 -1.0017 0.587786 0.684546
--1.00127 0.727469 -0.959451 0.587786 0.728968
--1.00094 0.727229 -0.909771 0.587786 0.770513
--0.989325 0.718787 -0.852911 0.587786 0.809016
--0.966745 0.702382 -0.78921 0.587786 0.844327
--0.933714 0.678384 -0.719088 0.587786 0.876306
--0.890913 0.647287 -0.643044 0.587786 0.904827
--0.839183 0.609703 -0.561646 0.587786 0.929776
--0.779509 0.566347 -0.47553 0.587786 0.951056
--0.713008 0.518031 -0.38539 0.587786 0.968583
--0.640907 0.465647 -0.291969 0.587786 0.982287
--0.564524 0.410151 -0.19605 0.587786 0.992115
--0.485246 0.352552 -0.0984495 0.587786 0.998027
--0.422164 0.267914 0 0.535827 1
--0.335334 0.21281 0.0952642 0.535827 0.998027
--0.250049 0.158686 0.189739 0.535827 0.992115
--0.167827 0.106506 0.282645 0.535827 0.982287
--0.0901382 0.0572035 0.37322 0.535827 0.968583
--0.0183783 0.0116632 0.460734 0.535827 0.951057
-0.0461531 -0.0292897 0.54449 0.535827 0.929777
-0.102273 -0.0649048 0.62384 0.535827 0.904827
-0.148937 -0.0945186 0.698185 0.535827 0.876307
-0.185253 -0.117565 0.76699 0.535827 0.844328
-0.210496 -0.133585 0.829783 0.535827 0.809017
-0.224125 -0.142234 0.886164 0.535827 0.770513
-0.225787 -0.143289 0.935807 0.535827 0.728969
-0.215323 -0.136648 0.978465 0.535827 0.684547
-0.192775 -0.122339 1.01397 0.535827 0.637424
-0.158383 -0.100513 1.04223 0.535827 0.587785
-0.112582 -0.071447 1.06324 0.535827 0.535827
-0.0559966 -0.0355366 1.07707 0.535827 0.481754
--0.0105707 0.00670838 1.08387 0.535827 0.42578
--0.0861493 0.0546721 1.08384 0.535827 0.368125
--0.169617 0.107642 1.07728 0.535827 0.309017
--0.259716 0.164821 1.06453 0.535827 0.24869
--0.355075 0.225338 1.04599 0.535827 0.187382
--0.454228 0.288262 1.0221 0.535827 0.125334
--0.555638 0.352619 0.993366 0.535827 0.0627908
--0.657723 0.417404 0.960294 0.535827 3.26795e-07
--0.758879 0.4816 0.923432 0.535827 -0.0627902
--0.857504 0.544189 0.883339 0.535827 -0.125333
--0.952027 0.604176 0.840581 0.535827 -0.187381
--1.04093 0.660595 0.795719 0.535827 -0.24869
--1.12277 0.712534 0.749307 0.535827 -0.309017
--1.19621 0.759141 0.701876 0.535827 -0.368124
--1.26004 0.799646 0.653933 0.535827 -0.425779
--1.31317 0.833364 0.605952 0.535827 -0.481753
--1.35469 0.859713 0.558364 0.535827 -0.535826
--1.38385 0.878222 0.511558 0.535827 -0.587785
--1.40011 0.888536 0.46587 0.535827 -0.637424
--1.40308 0.890424 0.421583 0.535827 -0.684547
--1.39262 0.883784 0.378926 0.535827 -0.728968
--1.36876 0.86864 0.338065 0.535827 -0.770513
--1.33174 0.84515 0.29911 0.535827 -0.809017
--1.28202 0.813595 0.262112 0.535827 -0.844328
--1.22023 0.774382 0.227065 0.535827 -0.876306
--1.1472 0.728033 0.193907 0.535827 -0.904827
--1.06391 0.67518 0.162525 0.535827 -0.929776
--0.971535 0.616555 0.13276 0.535827 -0.951056
--0.871353 0.552978 0.10441 0.535827 -0.968583
--0.764781 0.485345 0.0772378 0.535827 -0.982287
--0.653327 0.414614 0.0509746 0.535827 -0.992115
--0.538576 0.341791 0.0253307 0.535827 -0.998027
--0.422165 0.267914 2.62946e-07 0.535827 -1
--0.305754 0.194037 -0.0253302 0.535827 -0.998027
--0.191003 0.121214 -0.0509741 0.535827 -0.992115
--0.0795492 0.0504835 -0.0772372 0.535827 -0.982287
-0.0270235 -0.0171496 -0.10441 0.535827 -0.968583
-0.127205 -0.0807268 -0.13276 0.535827 -0.951057
-0.219583 -0.139352 -0.162525 0.535827 -0.929777
-0.302866 -0.192205 -0.193906 0.535827 -0.904827
-0.3759 -0.238554 -0.227064 0.535827 -0.876307
-0.437691 -0.277767 -0.262112 0.535827 -0.844328
-0.487413 -0.309322 -0.299109 0.535827 -0.809017
-0.524428 -0.332813 -0.338064 0.535827 -0.770514
-0.54829 -0.347956 -0.378925 0.535827 -0.728969
-0.558755 -0.354597 -0.421583 0.535827 -0.684548
-0.555779 -0.352709 -0.465869 0.535827 -0.637425
-0.539528 -0.342395 -0.511557 0.535827 -0.587786
-0.510363 -0.323886 -0.558363 0.535827 -0.535828
-0.468843 -0.297537 -0.605951 0.535827 -0.481754
-0.415712 -0.263819 -0.653932 0.535827 -0.42578
-0.351888 -0.223315 -0.701875 0.535827 -0.368125
-0.278446 -0.176707 -0.749306 0.535827 -0.309018
-0.196604 -0.124769 -0.795718 0.535827 -0.248691
-0.107702 -0.0683496 -0.84058 0.535827 -0.187382
-0.0131787 -0.00836345 -0.883338 0.535827 -0.125334
--0.0854465 0.0542261 -0.923431 0.535827 -0.0627915
--0.186602 0.118421 -0.960293 0.535827 -9.80385e-07
--0.288687 0.183207 -0.993365 0.535827 0.0627895
--0.390098 0.247564 -1.0221 0.535827 0.125332
--0.489251 0.310488 -1.04599 0.535827 0.18738
--0.58461 0.371005 -1.06453 0.535827 0.248689
--0.674709 0.428184 -1.07728 0.535827 0.309016
--0.758177 0.481154 -1.08384 0.535827 0.368124
--0.833755 0.529118 -1.08387 0.535827 0.425778
--0.900323 0.571363 -1.07707 0.535827 0.481753
--0.956909 0.607274 -1.06324 0.535827 0.535826
--1.00271 0.63634 -1.04223 0.535827 0.587784
--1.0371 0.658166 -1.01397 0.535827 0.637423
--1.05965 0.672475 -0.978465 0.535827 0.684546
--1.07011 0.679116 -0.935808 0.535827 0.728968
--1.06845 0.678062 -0.886165 0.535827 0.770513
--1.05482 0.669413 -0.829784 0.535827 0.809016
--1.02958 0.653393 -0.766991 0.535827 0.844327
--0.993266 0.630346 -0.698187 0.535827 0.876306
--0.946602 0.600733 -0.623841 0.535827 0.904827
--0.890482 0.565118 -0.544492 0.535827 0.929776
--0.825951 0.524165 -0.460736 0.535827 0.951056
--0.754191 0.478625 -0.373222 0.535827 0.968583
--0.676502 0.429322 -0.282647 0.535827 0.982287
--0.59428 0.377142 -0.189741 0.535827 0.992115
--0.508995 0.323019 -0.0952662 0.535827 0.998027
--0.438153 0.240877 0 0.481754 1
--0.345457 0.189917 0.091987 0.481754 0.998027
--0.254385 0.13985 0.183242 0.481754 0.992115
--0.166534 0.0915529 0.273043 0.481754 0.982287
--0.0834492 0.0458766 0.360684 0.481754 0.968583
--0.00659921 0.00362795 0.445485 0.481754 0.951057
-0.0626486 -0.0344414 0.526799 0.481754 0.929777
-0.12305 -0.0676474 0.604022 0.481754 0.904827
-0.173504 -0.0953846 0.676594 0.481754 0.876307
-0.21307 -0.117136 0.744014 0.481754 0.844328
-0.240985 -0.132483 0.805837 0.481754 0.809017
-0.256675 -0.141109 0.861683 0.481754 0.770513
-0.259765 -0.142807 0.91124 0.481754 0.728969
-0.250084 -0.137485 0.954266 0.481754 0.684547
-0.227671 -0.125164 0.990591 0.481754 0.637424
-0.192772 -0.105978 1.02012 0.481754 0.587785
-0.145839 -0.0801756 1.04282 0.481754 0.535827
-0.0875195 -0.0481143 1.05875 0.481754 0.481754
-0.018652 -0.0102541 1.06802 0.481754 0.42578
--0.0597511 0.0328485 1.07081 0.481754 0.368125
--0.146518 0.0805489 1.06735 0.481754 0.309017
--0.240334 0.132125 1.05796 0.481754 0.24869
--0.339766 0.186788 1.04298 0.481754 0.187382
--0.443281 0.243696 1.02279 0.481754 0.125334
--0.549272 0.301965 0.997841 0.481754 0.0627908
--0.656081 0.360684 0.968583 0.481754 3.26795e-07
--0.762031 0.418931 0.935503 0.481754 -0.0627902
--0.865445 0.475783 0.899099 0.481754 -0.125333
--0.964676 0.530336 0.859878 0.481754 -0.187381
--1.05814 0.581716 0.818346 0.481754 -0.24869
--1.14431 0.629092 0.775001 0.481754 -0.309017
--1.2218 0.671694 0.730326 0.481754 -0.368124
--1.28933 0.708818 0.684781 0.481754 -0.425779
--1.34577 0.739844 0.6388 0.481754 -0.481753
--1.39015 0.764243 0.592781 0.481754 -0.535826
--1.42169 0.781584 0.547082 0.481754 -0.587785
--1.43981 0.791544 0.502021 0.481754 -0.637424
--1.44412 0.793911 0.457868 0.481754 -0.684547
--1.43444 0.788589 0.414842 0.481754 -0.728968
--1.41081 0.775599 0.373113 0.481754 -0.770513
--1.37348 0.755079 0.332801 0.481754 -0.809017
--1.32292 0.727283 0.293972 0.481754 -0.844328
--1.25979 0.692575 0.256643 0.481754 -0.876306
--1.18494 0.651425 0.220784 0.481754 -0.904827
--1.09941 0.604404 0.186319 0.481754 -0.929776
--1.0044 0.552172 0.153133 0.481754 -0.951056
--0.901252 0.495468 0.12107 0.481754 -0.968583
--0.791445 0.435101 0.0899457 0.481754 -0.982287
--0.67655 0.371937 0.0595492 0.481754 -0.992115
--0.558218 0.306883 0.029649 0.481754 -0.998027
--0.438154 0.240878 3.07973e-07 0.481754 -1
--0.318091 0.174872 -0.0296484 0.481754 -0.998027
--0.199759 0.109819 -0.0595486 0.481754 -0.992115
--0.0848635 0.0466542 -0.0899451 0.481754 -0.982287
-0.024943 -0.0137126 -0.121069 0.481754 -0.968583
-0.128087 -0.0704166 -0.153132 0.481754 -0.951057
-0.223098 -0.122649 -0.186319 0.481754 -0.929777
-0.308628 -0.16967 -0.220783 0.481754 -0.904827
-0.383479 -0.21082 -0.256642 0.481754 -0.876307
-0.446613 -0.245528 -0.293971 0.481754 -0.844328
-0.497175 -0.273325 -0.3328 0.481754 -0.809017
-0.534501 -0.293845 -0.373112 0.481754 -0.770514
-0.55813 -0.306835 -0.414841 0.481754 -0.728969
-0.567811 -0.312157 -0.457867 0.481754 -0.684548
-0.563505 -0.30979 -0.50202 0.481754 -0.637425
-0.545389 -0.29983 -0.547081 0.481754 -0.587786
-0.513846 -0.282489 -0.59278 0.481754 -0.535828
-0.469465 -0.258091 -0.638799 0.481754 -0.481754
-0.413028 -0.227065 -0.68478 0.481754 -0.42578
-0.3455 -0.18994 -0.730325 0.481754 -0.368125
-0.268008 -0.147339 -0.775 0.481754 -0.309018
-0.181831 -0.0999626 -0.818345 0.481754 -0.248691
-0.088372 -0.048583 -0.859877 0.481754 -0.187382
--0.0108594 0.00597002 -0.899098 0.481754 -0.125334
--0.114273 0.0628222 -0.935502 0.481754 -0.0627915
--0.220223 0.121069 -0.968583 0.481754 -9.80385e-07
--0.327033 0.179788 -0.997841 0.481754 0.0627895
--0.433023 0.238057 -1.02279 0.481754 0.125332
--0.536538 0.294965 -1.04298 0.481754 0.18738
--0.63597 0.349628 -1.05796 0.481754 0.248689
--0.729787 0.401204 -1.06735 0.481754 0.309016
--0.816554 0.448905 -1.07081 0.481754 0.368124
--0.894957 0.492007 -1.06802 0.481754 0.425778
--0.963825 0.529868 -1.05875 0.481754 0.481753
--1.02214 0.561929 -1.04282 0.481754 0.535826
--1.06908 0.587731 -1.02012 0.481754 0.587784
--1.10398 0.606917 -0.990592 0.481754 0.637423
--1.12639 0.619239 -0.954267 0.481754 0.684546
--1.13607 0.624561 -0.911241 0.481754 0.728968
--1.13298 0.622863 -0.861684 0.481754 0.770513
--1.11729 0.614237 -0.805838 0.481754 0.809016
--1.08938 0.598891 -0.744016 0.481754 0.844327
--1.04981 0.577139 -0.676596 0.481754 0.876306
--0.999358 0.549402 -0.604023 0.481754 0.904827
--0.938956 0.516196 -0.526801 0.481754 0.929776
--0.869709 0.478127 -0.445487 0.481754 0.951056
--0.792859 0.435878 -0.360686 0.481754 0.968583
--0.709774 0.390202 -0.273045 0.481754 0.982287
--0.621923 0.341906 -0.183244 0.481754 0.992115
--0.530851 0.291838 -0.0919889 0.481754 0.998027
--0.452413 0.21289 0 0.42578 1
--0.354133 0.166643 0.0886189 0.42578 0.998027
--0.25755 0.121194 0.176565 0.42578 0.992115
--0.164332 0.0773289 0.263172 0.42578 0.982287
--0.0760948 0.0358075 0.347792 0.42578 0.968583
-0.00562739 -0.00264805 0.429796 0.42578 0.951057
-0.0794048 -0.0373651 0.508588 0.42578 0.929777
-0.143936 -0.0677312 0.583607 0.42578 0.904827
-0.198069 -0.0932041 0.654336 0.42578 0.876307
-0.240818 -0.113321 0.720304 0.42578 0.844328
-0.271385 -0.127704 0.781096 0.42578 0.809017
-0.289165 -0.136071 0.836352 0.42578 0.770513
-0.293762 -0.138234 0.885774 0.42578 0.728969
-0.284994 -0.134108 0.929126 0.42578 0.684547
-0.262896 -0.12371 0.966236 0.42578 0.637424
-0.227718 -0.107156 0.997 0.42578 0.587785
-0.179926 -0.0846669 1.02138 0.42578 0.535827
-0.120191 -0.0565578 1.03939 0.42578 0.481754
-0.0493808 -0.0232369 1.05112 0.42578 0.42578
--0.0314548 0.0148015 1.05671 0.42578 0.368125
--0.121099 0.0569851 1.05637 0.42578 0.309017
--0.218188 0.102672 1.05035 0.42578 0.24869
--0.321232 0.15116 1.03893 0.42578 0.187382
--0.428637 0.201701 1.02247 0.42578 0.125334
--0.538732 0.253508 1.00133 0.42578 0.0627908
--0.649795 0.305771 0.975917 0.42578 3.26795e-07
--0.760079 0.357667 0.94665 0.42578 -0.0627902
--0.867841 0.408375 0.913971 0.42578 -0.125333
--0.971366 0.457091 0.878327 0.42578 -0.187381
--1.069 0.503034 0.840165 0.42578 -0.24869
--1.15917 0.545465 0.799931 0.42578 -0.309017
--1.24041 0.583695 0.758055 0.42578 -0.368124
--1.3114 0.617099 0.714954 0.42578 -0.425779
--1.37095 0.645122 0.671018 0.42578 -0.481753
--1.41806 0.667291 0.626612 0.42578 -0.535826
--1.45192 0.683221 0.582067 0.42578 -0.587785
--1.47189 0.692621 0.537677 0.42578 -0.637424
--1.47759 0.695303 0.4937 0.42578 -0.684547
--1.46882 0.691177 0.450348 0.42578 -0.728968
--1.44562 0.68026 0.407793 0.42578 -0.770513
--1.40825 0.662673 0.366163 0.42578 -0.809017
--1.35717 0.638637 0.325541 0.42578 -0.844328
--1.29308 0.608476 0.285967 0.42578 -0.876306
--1.21685 0.572605 0.247443 0.42578 -0.904827
--1.12955 0.531529 0.20993 0.42578 -0.929776
--1.03244 0.485832 0.173354 0.42578 -0.951056
--0.926907 0.43617 0.13761 0.42578 -0.968583
--0.814467 0.38326 0.102565 0.42578 -0.982287
--0.696755 0.327869 0.0680651 0.42578 -0.992115
--0.575482 0.270802 0.033938 0.42578 -0.998027
--0.452415 0.212891 3.52696e-07 0.42578 -1
--0.329347 0.154979 -0.0339373 0.42578 -0.998027
--0.208074 0.0979124 -0.0680643 0.42578 -0.992115
--0.0903619 0.0425211 -0.102564 0.42578 -0.982287
-0.0220779 -0.0103891 -0.137609 0.42578 -0.968583
-0.127615 -0.0600512 -0.173353 0.42578 -0.951057
-0.224726 -0.105748 -0.209929 0.42578 -0.929777
-0.312017 -0.146824 -0.247442 0.42578 -0.904827
-0.388247 -0.182695 -0.285966 0.42578 -0.876307
-0.452343 -0.212857 -0.32554 0.42578 -0.844328
-0.503421 -0.236892 -0.366162 0.42578 -0.809017
-0.540797 -0.25448 -0.407793 0.42578 -0.770514
-0.563997 -0.265397 -0.450347 0.42578 -0.728969
-0.572765 -0.269523 -0.493699 0.42578 -0.684548
-0.567067 -0.266842 -0.537677 0.42578 -0.637425
-0.547089 -0.257441 -0.582066 0.42578 -0.587786
-0.513237 -0.241511 -0.626611 0.42578 -0.535828
-0.466126 -0.219343 -0.671017 0.42578 -0.481754
-0.406575 -0.19132 -0.714953 0.42578 -0.42578
-0.335588 -0.157916 -0.758054 0.42578 -0.368125
-0.254345 -0.119686 -0.79993 0.42578 -0.309018
-0.164175 -0.0772548 -0.840164 0.42578 -0.248691
-0.0665411 -0.0313119 -0.878326 0.42578 -0.187382
--0.0369841 0.0174034 -0.913971 0.42578 -0.125334
--0.144745 0.0681121 -0.94665 0.42578 -0.0627915
--0.25503 0.120008 -0.975916 0.42578 -9.80385e-07
--0.366093 0.17227 -1.00133 0.42578 0.0627895
--0.476188 0.224077 -1.02247 0.42578 0.125332
--0.583593 0.274618 -1.03893 0.42578 0.18738
--0.686636 0.323107 -1.05035 0.42578 0.248689
--0.783726 0.368794 -1.05637 0.42578 0.309016
--0.87337 0.410977 -1.05671 0.42578 0.368124
--0.954206 0.449016 -1.05112 0.42578 0.425778
--1.02502 0.482337 -1.03939 0.42578 0.481753
--1.08475 0.510446 -1.02138 0.42578 0.535826
--1.13254 0.532936 -0.997 0.42578 0.587784
--1.16772 0.549489 -0.966237 0.42578 0.637423
--1.18982 0.559888 -0.929126 0.42578 0.684546
--1.19859 0.564014 -0.885775 0.42578 0.728968
--1.19399 0.561851 -0.836353 0.42578 0.770513
--1.17621 0.553484 -0.781097 0.42578 0.809016
--1.14565 0.539101 -0.720306 0.42578 0.844327
--1.1029 0.518984 -0.654337 0.42578 0.876306
--1.04876 0.493512 -0.583609 0.42578 0.904827
--0.984233 0.463146 -0.50859 0.42578 0.929776
--0.910456 0.428429 -0.429798 0.42578 0.951056
--0.828734 0.389973 -0.347794 0.42578 0.968583
--0.740497 0.348452 -0.263174 0.42578 0.982287
--0.647279 0.304587 -0.176567 0.42578 0.992115
--0.550695 0.259138 -0.0886208 0.42578 0.998027
--0.464888 0.184063 0 0.368125 1
--0.36136 0.143073 0.0851634 0.368125 0.998027
--0.259594 0.102781 0.169713 0.368125 0.992115
--0.161323 0.0638726 0.253042 0.368125 0.982287
--0.0682265 0.0270128 0.334557 0.368125 0.968583
-0.0181025 -0.0071673 0.413683 0.368125 0.951057
-0.0961779 -0.0380796 0.489875 0.368125 0.929777
-0.164647 -0.0651883 0.562617 0.368125 0.904827
-0.22231 -0.0880189 0.631432 0.368125 0.876307
-0.268144 -0.106166 0.695884 0.368125 0.844328
-0.301313 -0.119298 0.755584 0.368125 0.809017
-0.321188 -0.127168 0.810196 0.368125 0.770513
-0.327353 -0.129609 0.859434 0.368125 0.728969
-0.319614 -0.126544 0.903068 0.368125 0.684547
-0.298001 -0.117987 0.940928 0.368125 0.637424
-0.26277 -0.104038 0.972897 0.368125 0.587785
-0.214396 -0.0848855 0.99892 0.368125 0.535827
-0.15357 -0.0608029 1.019 0.368125 0.481754
-0.0811859 -0.0321438 1.03318 0.368125 0.42578
--0.00167432 0.000662909 1.04158 0.368125 0.368125
--0.093755 0.0371203 1.04435 0.368125 0.309017
--0.193648 0.0766708 1.0417 0.368125 0.24869
--0.299814 0.118705 1.03387 0.368125 0.187382
--0.410606 0.162571 1.02114 0.368125 0.125334
--0.524299 0.207585 1.00383 0.368125 0.0627908
--0.639111 0.253042 0.982287 0.368125 3.26795e-07
--0.753234 0.298227 0.956864 0.368125 -0.0627902
--0.864867 0.342426 0.927942 0.368125 -0.125333
--0.972235 0.384936 0.895909 0.368125 -0.187381
--1.07363 0.425079 0.861155 0.368125 -0.24869
--1.16741 0.462212 0.824071 0.368125 -0.309017
--1.25208 0.495734 0.785036 0.368125 -0.368124
--1.32624 0.525098 0.74442 0.368125 -0.425779
--1.38869 0.549823 0.702574 0.368125 -0.481753
--1.43837 0.569494 0.659825 0.368125 -0.535826
--1.47444 0.583775 0.616477 0.368125 -0.587785
--1.49626 0.592412 0.572803 0.368125 -0.637424
--1.5034 0.595238 0.529045 0.368125 -0.684547
--1.49566 0.592174 0.48541 0.368125 -0.728968
--1.47307 0.583232 0.442071 0.368125 -0.770513
--1.4359 0.568514 0.399164 0.368125 -0.809017
--1.38463 0.548214 0.356788 0.368125 -0.844328
--1.31995 0.522607 0.315009 0.368125 -0.876306
--1.24278 0.492054 0.273858 0.368125 -0.904827
--1.15423 0.456991 0.233333 0.368125 -0.929776
--1.05556 0.417925 0.193404 0.368125 -0.951056
--0.948206 0.375422 0.154013 0.368125 -0.968583
--0.833746 0.330104 0.115083 0.368125 -0.982287
--0.713856 0.282636 0.0765137 0.368125 -0.992115
--0.590297 0.233715 0.0381936 0.368125 -0.998027
--0.464889 0.184063 3.97071e-07 0.368125 -1
--0.339482 0.134411 -0.0381928 0.368125 -0.998027
--0.215923 0.0854902 -0.0765129 0.368125 -0.992115
--0.0960325 0.038022 -0.115082 0.368125 -0.982287
-0.0184273 -0.00729588 -0.154013 0.368125 -0.968583
-0.125777 -0.0497988 -0.193403 0.368125 -0.951057
-0.224448 -0.0888656 -0.233332 0.368125 -0.929777
-0.313007 -0.123928 -0.273857 0.368125 -0.904827
-0.390174 -0.154481 -0.315008 0.368125 -0.876307
-0.45485 -0.180088 -0.356787 0.368125 -0.844328
-0.506124 -0.200389 -0.399163 0.368125 -0.809017
-0.543296 -0.215106 -0.44207 0.368125 -0.770514
-0.565881 -0.224048 -0.485409 0.368125 -0.728969
-0.57362 -0.227113 -0.529044 0.368125 -0.684548
-0.566483 -0.224287 -0.572802 0.368125 -0.637425
-0.544668 -0.21565 -0.616476 0.368125 -0.587786
-0.508599 -0.201369 -0.659824 0.368125 -0.535828
-0.458916 -0.181698 -0.702573 0.368125 -0.481754
-0.39647 -0.156974 -0.744419 0.368125 -0.42578
-0.322303 -0.127609 -0.785035 0.368125 -0.368125
-0.237638 -0.0940876 -0.82407 0.368125 -0.309018
-0.143852 -0.0569551 -0.861155 0.368125 -0.248691
-0.0424613 -0.0168116 -0.895908 0.368125 -0.187382
--0.064907 0.0256985 -0.927941 0.368125 -0.125334
--0.176539 0.069897 -0.956863 0.368125 -0.0627915
--0.290663 0.115082 -0.982287 0.368125 -9.80385e-07
--0.405475 0.160539 -1.00383 0.368125 0.0627895
--0.519167 0.205553 -1.02114 0.368125 0.125332
--0.62996 0.249419 -1.03387 0.368125 0.18738
--0.736126 0.291453 -1.0417 0.368125 0.248689
--0.836019 0.331004 -1.04435 0.368125 0.309016
--0.9281 0.367461 -1.04158 0.368125 0.368124
--1.01096 0.400268 -1.03318 0.368125 0.425778
--1.08335 0.428927 -1.019 0.368125 0.481753
--1.14417 0.45301 -0.998921 0.368125 0.535826
--1.19254 0.472163 -0.972898 0.368125 0.587784
--1.22778 0.486112 -0.940928 0.368125 0.637423
--1.24939 0.494669 -0.903069 0.368125 0.684546
--1.25713 0.497734 -0.859435 0.368125 0.728968
--1.25096 0.495293 -0.810197 0.368125 0.770513
--1.23109 0.487424 -0.755585 0.368125 0.809016
--1.19792 0.474291 -0.695885 0.368125 0.844327
--1.15209 0.456144 -0.631433 0.368125 0.876306
--1.09442 0.433314 -0.562619 0.368125 0.904827
--1.02596 0.406205 -0.489877 0.368125 0.929776
--0.94788 0.375293 -0.413685 0.368125 0.951056
--0.861552 0.341113 -0.334558 0.368125 0.968583
--0.768455 0.304253 -0.253044 0.368125 0.982287
--0.670185 0.265345 -0.169715 0.368125 0.992115
--0.568418 0.225053 -0.0851652 0.368125 0.998027
--0.475528 0.154509 0 0.309018 1
--0.367139 0.119291 0.0816239 0.309018 0.998027
--0.260569 0.0846641 0.162694 0.309018 0.992115
--0.15761 0.0512106 0.242662 0.309018 0.982287
--0.0599939 0.0194932 0.320991 0.309018 0.968583
-0.0306312 -0.00995269 0.397162 0.309018 0.951057
-0.11273 -0.0366283 0.470679 0.309018 0.929777
-0.184904 -0.0600792 0.541072 0.309018 0.904827
-0.245914 -0.0799026 0.607905 0.309018 0.876307
-0.294699 -0.0957537 0.670776 0.309018 0.844328
-0.330394 -0.107352 0.729327 0.309018 0.809017
-0.352346 -0.114484 0.78324 0.309018 0.770513
-0.36012 -0.11701 0.832245 0.309018 0.728969
-0.353511 -0.114863 0.87612 0.309018 0.684547
-0.332545 -0.108051 0.914691 0.309018 0.637424
-0.29748 -0.0966573 0.947835 0.309018 0.587785
-0.248801 -0.0808406 0.975479 0.309018 0.535827
-0.187214 -0.0608296 0.9976 0.309018 0.481754
-0.113633 -0.0369217 1.01422 0.309018 0.42578
-0.0291691 -0.00947762 1.02542 0.309018 0.368125
--0.0648899 0.021084 1.0313 0.309018 0.309017
--0.167098 0.0542935 1.03202 0.309018 0.24869
--0.275874 0.089637 1.02778 0.309018 0.187382
--0.389527 0.126565 1.0188 0.309018 0.125334
--0.506281 0.164501 1.00535 0.309018 0.0627908
--0.624306 0.20285 0.987688 0.309018 3.26795e-07
--0.741744 0.241008 0.966133 0.309018 -0.0627902
--0.856739 0.278372 0.940996 0.309018 -0.125333
--0.967467 0.31435 0.912606 0.309018 -0.187381
--1.07217 0.348368 0.881295 0.309018 -0.24869
--1.16916 0.379883 0.847398 0.309018 -0.309017
--1.25689 0.408388 0.811243 0.309018 -0.368124
--1.33393 0.43342 0.773152 0.309018 -0.425779
--1.39902 0.45457 0.733436 0.309018 -0.481753
--1.45109 0.471489 0.692387 0.309018 -0.535826
--1.48926 0.483892 0.650279 0.309018 -0.587785
--1.51287 0.491563 0.607363 0.309018 -0.637424
--1.52148 0.494359 0.563868 0.309018 -0.684547
--1.51487 0.492211 0.519993 0.309018 -0.728968
--1.49307 0.485129 0.475913 0.309018 -0.770513
--1.45635 0.473198 0.431771 0.309018 -0.809017
--1.40519 0.456576 0.387684 0.309018 -0.844328
--1.34032 0.435497 0.343741 0.309018 -0.876306
--1.26266 0.410262 0.300003 0.309018 -0.904827
--1.17333 0.381237 0.256506 0.309018 -0.929776
--1.07364 0.348847 0.213263 0.309018 -0.951056
--0.965063 0.313569 0.170265 0.309018 -0.968583
--0.849204 0.275924 0.127487 0.309018 -0.982287
--0.727782 0.236471 0.0848869 0.309018 -0.992115
--0.602603 0.195798 0.0424114 0.309018 -0.998027
--0.475529 0.154509 4.41055e-07 0.309018 -1
--0.348456 0.113221 -0.0424105 0.309018 -0.998027
--0.223276 0.0725471 -0.084886 0.309018 -0.992115
--0.101854 0.0330946 -0.127486 0.309018 -0.982287
-0.0140042 -0.00455025 -0.170265 0.309018 -0.968583
-0.12258 -0.0398288 -0.213262 0.309018 -0.951057
-0.222267 -0.0722191 -0.256505 0.309018 -0.929777
-0.311597 -0.101244 -0.300002 0.309018 -0.904827
-0.389263 -0.126479 -0.34374 0.309018 -0.876307
-0.454137 -0.147558 -0.387683 0.309018 -0.844328
-0.505293 -0.16418 -0.43177 0.309018 -0.809017
-0.542015 -0.176112 -0.475912 0.309018 -0.770514
-0.563811 -0.183194 -0.519993 0.309018 -0.728969
-0.57042 -0.185341 -0.563867 0.309018 -0.684548
-0.561816 -0.182546 -0.607362 0.309018 -0.637425
-0.538209 -0.174875 -0.650278 0.309018 -0.587786
-0.500037 -0.162472 -0.692386 0.309018 -0.535828
-0.447965 -0.145553 -0.733435 0.309018 -0.481754
-0.382871 -0.124403 -0.773151 0.309018 -0.42578
-0.305831 -0.0993707 -0.811242 0.309018 -0.368125
-0.218104 -0.0708665 -0.847397 0.309018 -0.309018
-0.121111 -0.0393516 -0.881295 0.309018 -0.248691
-0.0164132 -0.00533299 -0.912606 0.309018 -0.187382
--0.0943152 0.0306449 -0.940996 0.309018 -0.125334
--0.20931 0.0680092 -0.966132 0.309018 -0.0627915
--0.326748 0.106167 -0.987688 0.309018 -9.80385e-07
--0.444773 0.144516 -1.00535 0.309018 0.0627895
--0.561527 0.182452 -1.0188 0.309018 0.125332
--0.67518 0.21938 -1.02778 0.309018 0.18738
--0.783956 0.254723 -1.03202 0.309018 0.248689
--0.886164 0.287933 -1.0313 0.309018 0.309016
--0.980224 0.318495 -1.02542 0.309018 0.368124
--1.06469 0.345939 -1.01422 0.309018 0.425778
--1.13827 0.369847 -0.9976 0.309018 0.481753
--1.19986 0.389858 -0.97548 0.309018 0.535826
--1.24854 0.405675 -0.947835 0.309018 0.587784
--1.2836 0.417068 -0.914691 0.309018 0.637423
--1.30457 0.42388 -0.876121 0.309018 0.684546
--1.31118 0.426028 -0.832246 0.309018 0.728968
--1.3034 0.423502 -0.783241 0.309018 0.770513
--1.28145 0.41637 -0.729328 0.309018 0.809016
--1.24576 0.404772 -0.670777 0.309018 0.844327
--1.19697 0.388921 -0.607906 0.309018 0.876306
--1.13596 0.369097 -0.541074 0.309018 0.904827
--1.06379 0.345646 -0.470681 0.309018 0.929776
--0.981689 0.318971 -0.397164 0.309018 0.951056
--0.891064 0.289525 -0.320993 0.309018 0.968583
--0.793449 0.257808 -0.242663 0.309018 0.982287
--0.69049 0.224354 -0.162696 0.309018 0.992115
--0.58392 0.189727 -0.0816256 0.309018 0.998027
--0.484292 0.124345 0 0.24869 1
--0.371476 0.095379 0.0780038 0.24869 0.998027
--0.260529 0.0668927 0.155514 0.24869 0.992115
--0.153291 0.0393586 0.232042 0.24869 0.982287
--0.0515425 0.0132339 0.307109 0.24869 0.968583
-0.0430245 -0.0110469 0.380249 0.24869 0.951057
-0.128832 -0.0330785 0.451018 0.24869 0.929777
-0.204442 -0.0524918 0.518993 0.24869 0.904827
-0.268579 -0.0689594 0.583777 0.24869 0.876307
-0.320151 -0.0822009 0.645007 0.24869 0.844328
-0.358267 -0.0919876 0.70235 0.24869 0.809017
-0.382252 -0.0981459 0.755511 0.24869 0.770513
-0.391656 -0.100561 0.804235 0.24869 0.728969
-0.386264 -0.099176 0.848307 0.24869 0.684547
-0.366096 -0.0939977 0.887551 0.24869 0.637424
-0.331411 -0.085092 0.921837 0.24869 0.587785
-0.2827 -0.0725852 0.951075 0.24869 0.535827
-0.220682 -0.0566616 0.975219 0.24869 0.481754
-0.146288 -0.0375604 0.994263 0.24869 0.42578
-0.0606502 -0.0155724 1.00824 0.24869 0.368125
--0.0349159 0.00896491 1.01723 0.24869 0.309017
--0.138934 0.0356723 1.02133 0.24869 0.24869
--0.249789 0.0641351 1.02068 0.24869 0.187382
--0.365752 0.0939094 1.01546 0.24869 0.125334
--0.485009 0.124529 1.00587 0.24869 0.0627908
--0.605687 0.155514 0.992115 0.24869 3.26795e-07
--0.725886 0.186376 0.974449 0.24869 -0.0627902
--0.843707 0.216628 0.953122 0.24869 -0.125333
--0.957284 0.245789 0.928403 0.24869 -0.187381
--1.06481 0.273398 0.900566 0.24869 -0.24869
--1.16457 0.299013 0.869888 0.24869 -0.309017
--1.25497 0.322223 0.836648 0.24869 -0.368124
--1.33455 0.342656 0.801121 0.24869 -0.425779
--1.40202 0.35998 0.763574 0.24869 -0.481753
--1.45628 0.37391 0.724265 0.24869 -0.535826
--1.49642 0.384215 0.683439 0.24869 -0.587785
--1.52175 0.390721 0.641324 0.24869 -0.637424
--1.53183 0.393309 0.598135 0.24869 -0.684547
--1.52644 0.391925 0.554063 0.24869 -0.728968
--1.5056 0.386573 0.509285 0.24869 -0.770513
--1.46956 0.37732 0.463951 0.24869 -0.809017
--1.41883 0.364294 0.418197 0.24869 -0.844328
--1.35413 0.347682 0.372133 0.24869 -0.876306
--1.2764 0.327725 0.325851 0.24869 -0.904827
--1.18679 0.304718 0.279425 0.24869 -0.929776
--1.08664 0.279001 0.232912 0.24869 -0.951056
--0.977422 0.25096 0.186349 0.24869 -0.968583
--0.860788 0.221013 0.139766 0.24869 -0.982287
--0.738485 0.189611 0.0931762 0.24869 -0.992115
--0.612354 0.157226 0.0465874 0.24869 -0.998027
--0.484293 0.124346 4.84603e-07 0.24869 -1
--0.356232 0.091465 -0.0465864 0.24869 -0.998027
--0.230101 0.0590799 -0.0931753 0.24869 -0.992115
--0.107798 0.0276779 -0.139765 0.24869 -0.982287
-0.00883614 -0.00226874 -0.186348 0.24869 -0.968583
-0.11805 -0.0303102 -0.232911 0.24869 -0.951057
-0.218209 -0.0560266 -0.279425 0.24869 -0.929777
-0.307817 -0.0790341 -0.32585 0.24869 -0.904827
-0.385544 -0.098991 -0.372132 0.24869 -0.876307
-0.450244 -0.115603 -0.418196 0.24869 -0.844328
-0.500976 -0.128629 -0.463951 0.24869 -0.809017
-0.537013 -0.137882 -0.509284 0.24869 -0.770514
-0.557859 -0.143234 -0.554062 0.24869 -0.728969
-0.563252 -0.144619 -0.598134 0.24869 -0.684548
-0.55317 -0.14203 -0.641323 0.24869 -0.637425
-0.527834 -0.135525 -0.683438 0.24869 -0.587786
-0.487697 -0.125219 -0.724264 0.24869 -0.535828
-0.433442 -0.111289 -0.763574 0.24869 -0.481754
-0.365973 -0.0939661 -0.801121 0.24869 -0.42578
-0.286393 -0.0735335 -0.836648 0.24869 -0.368125
-0.195994 -0.0503228 -0.869887 0.24869 -0.309018
-0.0962311 -0.024708 -0.900565 0.24869 -0.248691
--0.0112966 0.00290047 -0.928403 0.24869 -0.187382
--0.124874 0.0320622 -0.953122 0.24869 -0.125334
--0.242695 0.0623136 -0.974448 0.24869 -0.0627915
--0.362894 0.0931755 -0.992114 0.24869 -9.80385e-07
--0.483572 0.12416 -1.00587 0.24869 0.0627895
--0.602828 0.15478 -1.01546 0.24869 0.125332
--0.718792 0.184555 -1.02068 0.24869 0.18738
--0.829647 0.213018 -1.02133 0.24869 0.248689
--0.933665 0.239725 -1.01723 0.24869 0.309016
--1.02923 0.264262 -1.00824 0.24869 0.368124
--1.11487 0.28625 -0.994264 0.24869 0.425778
--1.18926 0.305352 -0.97522 0.24869 0.481753
--1.25128 0.321275 -0.951076 0.24869 0.535826
--1.29999 0.333782 -0.921837 0.24869 0.587784
--1.33468 0.342688 -0.887552 0.24869 0.637423
--1.35485 0.347866 -0.848307 0.24869 0.684546
--1.36024 0.349251 -0.804236 0.24869 0.728968
--1.35084 0.346836 -0.755512 0.24869 0.770513
--1.32685 0.340678 -0.702351 0.24869 0.809016
--1.28873 0.330892 -0.645008 0.24869 0.844327
--1.23716 0.31765 -0.583779 0.24869 0.876306
--1.17303 0.301183 -0.518994 0.24869 0.904827
--1.09742 0.281769 -0.45102 0.24869 0.929776
--1.01161 0.259738 -0.380251 0.24869 0.951056
--0.917043 0.235457 -0.30711 0.24869 0.968583
--0.815294 0.209332 -0.232044 0.24869 0.982287
--0.708056 0.181798 -0.155516 0.24869 0.992115
--0.59711 0.153312 -0.0780055 0.24869 0.998027
--0.491144 0.093691 0 0.187382 1
--0.374381 0.0714173 0.0743068 0.187382 0.998027
--0.259529 0.049508 0.148181 0.187382 0.992115
--0.148466 0.0283216 0.221193 0.187382 0.982287
--0.0430127 0.00820514 0.292923 0.187382 0.968583
-0.0551018 -0.0105113 0.362961 0.187382 0.951057
-0.144264 -0.0275199 0.430912 0.187382 0.929777
-0.223003 -0.0425402 0.496401 0.187382 0.904827
-0.290014 -0.0553233 0.559074 0.187382 0.876307
-0.344179 -0.0656559 0.618601 0.187382 0.844328
-0.384585 -0.0733638 0.674679 0.187382 0.809017
-0.410538 -0.0783145 0.727037 0.187382 0.770513
-0.421574 -0.0804198 0.775432 0.187382 0.728969
-0.417467 -0.0796364 0.819656 0.187382 0.684547
-0.398235 -0.0759676 0.859535 0.187382 0.637424
-0.364134 -0.0694625 0.894929 0.187382 0.587785
-0.315661 -0.0602157 0.925733 0.187382 0.535827
-0.253541 -0.0483657 0.951876 0.187382 0.481754
-0.178719 -0.0340926 0.973323 0.187382 0.42578
-0.0923443 -0.0176157 0.990072 0.187382 0.368125
--0.00424895 0.000810532 1.00215 0.187382 0.309017
--0.10956 0.0208998 1.00962 0.187382 0.24869
--0.221948 0.042339 1.01257 0.187382 0.187382
--0.339655 0.0647929 1.01112 0.187382 0.125334
--0.460835 0.0879093 1.00539 0.187382 0.0627908
--0.583585 0.111325 0.995562 0.187382 3.26795e-07
--0.705969 0.134671 0.981803 0.187382 -0.0627902
--0.826056 0.157579 0.964308 0.187382 -0.125333
--0.941946 0.179686 0.943284 0.187382 -0.187381
--1.0518 0.200642 0.918948 0.187382 -0.24869
--1.15387 0.220114 0.89152 0.187382 -0.309017
--1.24653 0.237789 0.861228 0.187382 -0.368124
--1.32829 0.253386 0.8283 0.187382 -0.425779
--1.39784 0.266654 0.792959 0.187382 -0.481753
--1.45405 0.277376 0.755429 0.187382 -0.535826
--1.49599 0.285377 0.715924 0.187382 -0.587785
--1.52298 0.290524 0.674652 0.187382 -0.637424
--1.53453 0.292728 0.631811 0.187382 -0.684547
--1.53042 0.291945 0.587586 0.187382 -0.728968
--1.51067 0.288177 0.542154 0.187382 -0.770513
--1.47554 0.281476 0.495674 0.187382 -0.809017
--1.42553 0.271936 0.448297 0.187382 -0.844328
--1.36137 0.259696 0.400158 0.187382 -0.876306
--1.28401 0.244939 0.351378 0.187382 -0.904827
--1.19461 0.227885 0.302069 0.187382 -0.929776
--1.09452 0.208792 0.25233 0.187382 -0.951056
--0.985254 0.187948 0.202249 0.187382 -0.968583
--0.868466 0.165669 0.151907 0.187382 -0.982287
--0.745932 0.142295 0.101374 0.187382 -0.992115
--0.619516 0.118179 0.0507174 0.187382 -0.998027
--0.491145 0.0936912 5.27672e-07 0.187382 -1
--0.362774 0.069203 -0.0507164 0.187382 -0.998027
--0.236358 0.0450879 -0.101373 0.187382 -0.992115
--0.113824 0.0217131 -0.151905 0.187382 -0.982287
-0.00296473 -0.000565554 -0.202248 0.187382 -0.968583
-0.112233 -0.0214096 -0.252329 0.187382 -0.951057
-0.212323 -0.0405029 -0.302068 0.187382 -0.929777
-0.301721 -0.0575566 -0.351377 0.187382 -0.904827
-0.379081 -0.0723139 -0.400157 0.187382 -0.876307
-0.443244 -0.0845536 -0.448296 0.187382 -0.844328
-0.493256 -0.094094 -0.495673 0.187382 -0.809017
-0.528387 -0.100795 -0.542153 0.187382 -0.770514
-0.548135 -0.104563 -0.587586 0.187382 -0.728969
-0.552242 -0.105346 -0.63181 0.187382 -0.684548
-0.54069 -0.103143 -0.674651 0.187382 -0.637425
-0.513708 -0.0979954 -0.715923 0.187382 -0.587786
-0.471764 -0.089994 -0.755428 0.187382 -0.535828
-0.415556 -0.0792719 -0.792959 0.187382 -0.481754
-0.346007 -0.0660047 -0.828299 0.187382 -0.42578
-0.264245 -0.0504077 -0.861228 0.187382 -0.368125
-0.171587 -0.032732 -0.89152 0.187382 -0.309018
-0.0695157 -0.0132609 -0.918947 0.187382 -0.248691
--0.0403384 0.00769499 -0.943284 0.187382 -0.187382
--0.156228 0.0298022 -0.964307 0.187382 -0.125334
--0.276316 0.0527102 -0.981802 0.187382 -0.0627915
--0.3987 0.0760563 -0.995562 0.187382 -9.80385e-07
--0.521449 0.0994721 -1.00539 0.187382 0.0627895
--0.64263 0.122589 -1.01112 0.187382 0.125332
--0.760337 0.145042 -1.01257 0.187382 0.18738
--0.872725 0.166482 -1.00962 0.187382 0.248689
--0.978036 0.186571 -1.00215 0.187382 0.309016
--1.07463 0.204997 -0.990072 0.187382 0.368124
--1.161 0.221474 -0.973324 0.187382 0.425778
--1.23583 0.235747 -0.951877 0.187382 0.481753
--1.29795 0.247597 -0.925733 0.187382 0.535826
--1.34642 0.256844 -0.89493 0.187382 0.587784
--1.38052 0.263349 -0.859536 0.187382 0.637423
--1.39975 0.267018 -0.819657 0.187382 0.684546
--1.40386 0.267802 -0.775433 0.187382 0.728968
--1.39283 0.265697 -0.727038 0.187382 0.770513
--1.36687 0.260746 -0.67468 0.187382 0.809016
--1.32647 0.253038 -0.618602 0.187382 0.844327
--1.2723 0.242705 -0.559075 0.187382 0.876306
--1.20529 0.229922 -0.496403 0.187382 0.904827
--1.12655 0.214902 -0.430914 0.187382 0.929776
--1.03739 0.197894 -0.362963 0.187382 0.951056
--0.939277 0.179177 -0.292925 0.187382 0.968583
--0.833823 0.159061 -0.221195 0.187382 0.982287
--0.722761 0.137874 -0.148182 0.187382 0.992115
--0.607908 0.115965 -0.0743083 0.187382 0.998027
--0.496057 0.0626669 0 0.125334 1
--0.375869 0.0474836 0.0705364 0.125334 0.998027
--0.257623 0.0325455 0.140701 0.125334 0.992115
--0.143229 0.0180942 0.210126 0.125334 0.982287
--0.034538 0.00436318 0.278449 0.125334 0.968583
-0.0666918 -0.00842517 0.345315 0.125334 0.951057
-0.158819 -0.0200636 0.410381 0.125334 0.929777
-0.240347 -0.0303631 0.47332 0.125334 0.904827
-0.309949 -0.0391558 0.533819 0.125334 0.876307
-0.366484 -0.0462979 0.591584 0.125334 0.844328
-0.409021 -0.0516717 0.646343 0.125334 0.809017
-0.436852 -0.0551876 0.697845 0.125334 0.770513
-0.449501 -0.0567855 0.745863 0.125334 0.728969
-0.446734 -0.0564359 0.790197 0.125334 0.684547
-0.428562 -0.0541402 0.830671 0.125334 0.637424
-0.39524 -0.0499306 0.867138 0.125334 0.587785
-0.347266 -0.0438701 0.899477 0.125334 0.535827
-0.28537 -0.0360508 0.927593 0.125334 0.481754
-0.210505 -0.0265931 0.951423 0.125334 0.42578
-0.123831 -0.0156436 0.970925 0.125334 0.368125
-0.026696 -0.00337251 0.986087 0.125334 0.309017
--0.0793837 0.0100285 0.996922 0.125334 0.24869
--0.192748 0.0243499 1.00346 0.125334 0.187382
--0.311619 0.0393669 1.00577 0.125334 0.125334
--0.43413 0.0548436 1.00393 0.125334 0.0627908
--0.558352 0.0705367 0.998027 0.125334 3.26795e-07
--0.682329 0.0861986 0.988188 0.125334 -0.0627902
--0.804103 0.101582 0.974542 0.125334 -0.125333
--0.92175 0.116445 0.957234 0.125334 -0.187381
--1.03341 0.13055 0.936422 0.125334 -0.24869
--1.1373 0.143676 0.912272 0.125334 -0.309017
--1.23179 0.155612 0.884959 0.125334 -0.368124
--1.31535 0.166169 0.854661 0.125334 -0.425779
--1.38666 0.175177 0.821562 0.125334 -0.481753
--1.44458 0.182493 0.785847 0.125334 -0.535826
--1.48815 0.187998 0.747703 0.125334 -0.587785
--1.51668 0.191602 0.707314 0.125334 -0.637424
--1.52967 0.193243 0.664864 0.125334 -0.684547
--1.5269 0.192894 0.62053 0.125334 -0.728968
--1.50838 0.190554 0.574488 0.125334 -0.770513
--1.47437 0.186257 0.526908 0.125334 -0.809017
--1.42536 0.180066 0.477955 0.125334 -0.844328
--1.36209 0.172072 0.427787 0.125334 -0.876306
--1.28551 0.162399 0.376558 0.125334 -0.904827
--1.1968 0.151192 0.324415 0.125334 -0.929776
--1.09731 0.138623 0.2715 0.125334 -0.951056
--0.988562 0.124885 0.21795 0.125334 -0.968583
--0.872233 0.110189 0.163897 0.125334 -0.982287
--0.750108 0.0947612 0.109471 0.125334 -0.992115
--0.62407 0.0788387 0.0547974 0.125334 -0.998027
--0.496059 0.0626671 5.70221e-07 0.125334 -1
--0.368048 0.0464954 -0.0547963 0.125334 -0.998027
--0.242009 0.030573 -0.10947 0.125334 -0.992115
--0.119885 0.015145 -0.163896 0.125334 -0.982287
--0.00355455 0.000449046 -0.217949 0.125334 -0.968583
-0.105192 -0.0132888 -0.271499 0.125334 -0.951057
-0.204683 -0.0258576 -0.324414 0.125334 -0.929777
-0.293395 -0.0370646 -0.376557 0.125334 -0.904827
-0.36997 -0.0467383 -0.427786 0.125334 -0.876307
-0.433242 -0.0547315 -0.477954 0.125334 -0.844328
-0.482254 -0.0609231 -0.526907 0.125334 -0.809017
-0.51627 -0.0652203 -0.574487 0.125334 -0.770514
-0.53479 -0.06756 -0.620529 0.125334 -0.728969
-0.537557 -0.0679096 -0.664863 0.125334 -0.684548
-0.524561 -0.0662678 -0.707314 0.125334 -0.637425
-0.496037 -0.0626643 -0.747702 0.125334 -0.587786
-0.452462 -0.0571595 -0.785846 0.125334 -0.535828
-0.394551 -0.0498436 -0.821561 0.125334 -0.481754
-0.32324 -0.0408349 -0.85466 0.125334 -0.42578
-0.239674 -0.030278 -0.884958 0.125334 -0.368125
-0.14519 -0.0183419 -0.912272 0.125334 -0.309018
-0.0412946 -0.00521674 -0.936422 0.125334 -0.248691
--0.0703623 0.00888886 -0.957234 0.125334 -0.187382
--0.188009 0.0237512 -0.974541 0.125334 -0.125334
--0.309783 0.0391349 -0.988187 0.125334 -0.0627915
--0.43376 0.0547969 -0.998027 0.125334 -9.80385e-07
--0.557982 0.0704899 -1.00393 0.125334 0.0627895
--0.680493 0.0859667 -1.00577 0.125334 0.125332
--0.799364 0.100984 -1.00346 0.125334 0.18738
--0.912729 0.115305 -0.996922 0.125334 0.248689
--1.01881 0.128706 -0.986088 0.125334 0.309016
--1.11594 0.140977 -0.970925 0.125334 0.368124
--1.20262 0.151927 -0.951423 0.125334 0.425778
--1.27748 0.161384 -0.927594 0.125334 0.481753
--1.33938 0.169204 -0.899477 0.125334 0.535826
--1.38735 0.175264 -0.867139 0.125334 0.587784
--1.42068 0.179474 -0.830672 0.125334 0.637423
--1.43885 0.18177 -0.790198 0.125334 0.684546
--1.44162 0.182119 -0.745864 0.125334 0.728968
--1.42897 0.180521 -0.697846 0.125334 0.770513
--1.40114 0.177006 -0.646344 0.125334 0.809016
--1.3586 0.171632 -0.591585 0.125334 0.844327
--1.30206 0.16449 -0.53382 0.125334 0.876306
--1.23246 0.155697 -0.473321 0.125334 0.904827
--1.15094 0.145398 -0.410383 0.125334 0.929776
--1.05881 0.133759 -0.345316 0.125334 0.951056
--0.957579 0.120971 -0.27845 0.125334 0.968583
--0.848888 0.10724 -0.210128 0.125334 0.982287
--0.734494 0.0927886 -0.140703 0.125334 0.992115
--0.616248 0.0778506 -0.0705378 0.125334 0.998027
--0.499013 0.0313956 0 0.0627912 1
--0.375958 0.0236535 0.0666964 0.0627912 0.998027
--0.254866 0.016035 0.133083 0.0627912 0.992115
--0.137671 0.0086616 0.198852 0.0627912 0.982287
--0.0262439 0.00165114 0.2637 0.0627912 0.968583
-0.077635 -0.00488443 0.327327 0.0627912 0.951057
-0.172305 -0.0108406 0.389445 0.0627912 0.929777
-0.256252 -0.0161222 0.449772 0.0627912 0.904827
-0.32813 -0.0206444 0.508037 0.0627912 0.876307
-0.386785 -0.0243347 0.563984 0.0627912 0.844328
-0.431271 -0.0271336 0.617369 0.0627912 0.809017
-0.460869 -0.0289957 0.667964 0.0627912 0.770513
-0.475093 -0.0298906 0.715558 0.0627912 0.728969
-0.4737 -0.029803 0.759958 0.0627912 0.684547
-0.456697 -0.0287332 0.800988 0.0627912 0.637424
-0.424336 -0.0266972 0.838491 0.0627912 0.587785
-0.377114 -0.0237262 0.872333 0.0627912 0.535827
-0.315761 -0.0198662 0.902395 0.0627912 0.481754
-0.241235 -0.0151774 0.928583 0.0627912 0.42578
-0.154699 -0.00973291 0.95082 0.0627912 0.368125
-0.0575082 -0.00361815 0.96905 0.0627912 0.309017
--0.0488113 0.00307098 0.983238 0.0627912 0.24869
--0.16259 0.0102294 0.993366 0.0627912 0.187382
--0.282038 0.0177445 0.999437 0.0627912 0.125334
--0.405276 0.0254981 1.00147 0.0627912 0.0627908
--0.530362 0.0333679 0.999507 0.0627912 3.26795e-07
--0.655324 0.0412299 0.993597 0.0627912 -0.0627902
--0.778191 0.0489601 0.983814 0.0627912 -0.125333
--0.897023 0.0564365 0.970239 0.0627912 -0.187381
--1.00994 0.0635409 0.952973 0.0627912 -0.24869
--1.11516 0.0701608 0.932124 0.0627912 -0.309017
--1.21102 0.0761917 0.907815 0.0627912 -0.368124
--1.29599 0.0815377 0.880178 0.0627912 -0.425779
--1.36873 0.0861141 0.849353 0.0627912 -0.481753
--1.42808 0.089848 0.81549 0.0627912 -0.535826
--1.47309 0.0926797 0.778744 0.0627912 -0.587785
--1.50303 0.0945638 0.739279 0.0627912 -0.637424
--1.51743 0.0954697 0.69726 0.0627912 -0.684547
--1.51604 0.0953821 0.652861 0.0627912 -0.728968
--1.49886 0.0943013 0.606255 0.0627912 -0.770513
--1.46615 0.0922434 0.557622 0.0627912 -0.809017
--1.41841 0.0892395 0.507141 0.0627912 -0.844328
--1.35636 0.085336 0.454995 0.0627912 -0.876306
--1.28098 0.080593 0.401367 0.0627912 -0.904827
--1.19341 0.075084 0.346441 0.0627912 -0.929776
--1.09504 0.0688946 0.290402 0.0627912 -0.951056
--0.987376 0.0621211 0.233435 0.0627912 -0.968583
--0.872106 0.0548688 0.175726 0.0627912 -0.982287
--0.75102 0.0472507 0.11746 0.0627912 -0.992115
--0.626007 0.0393854 0.0588233 0.0627912 -0.998027
--0.499015 0.0313957 6.12207e-07 0.0627912 -1
--0.372022 0.0234059 -0.0588221 0.0627912 -0.998027
--0.247009 0.0155406 -0.117459 0.0627912 -0.992115
--0.125924 0.00792252 -0.175725 0.0627912 -0.982287
--0.0106526 0.000670213 -0.233434 0.0627912 -0.968583
-0.0970088 -0.00610334 -0.290401 0.0627912 -0.951057
-0.195385 -0.0122927 -0.34644 0.0627912 -0.929777
-0.282947 -0.0178017 -0.401366 0.0627912 -0.904827
-0.358334 -0.0225447 -0.454994 0.0627912 -0.876307
-0.42038 -0.0264483 -0.50714 0.0627912 -0.844328
-0.468124 -0.0294522 -0.557621 0.0627912 -0.809017
-0.500834 -0.0315101 -0.606254 0.0627912 -0.770514
-0.518012 -0.0325909 -0.65286 0.0627912 -0.728969
-0.519405 -0.0326785 -0.697259 0.0627912 -0.684548
-0.505007 -0.0317727 -0.739278 0.0627912 -0.637425
-0.475061 -0.0298886 -0.778744 0.0627912 -0.587786
-0.430052 -0.0270569 -0.815489 0.0627912 -0.535828
-0.370705 -0.023323 -0.849353 0.0627912 -0.481754
-0.297967 -0.0187467 -0.880177 0.0627912 -0.42578
-0.212995 -0.0134006 -0.907815 0.0627912 -0.368125
-0.117139 -0.00736982 -0.932124 0.0627912 -0.309018
-0.0119182 -0.00074984 -0.952973 0.0627912 -0.248691
--0.101001 0.00635451 -0.970239 0.0627912 -0.187382
--0.219833 0.0138309 -0.983813 0.0627912 -0.125334
--0.3427 0.0215611 -0.993597 0.0627912 -0.0627915
--0.467662 0.0294231 -0.999506 0.0627912 -9.80385e-07
--0.592748 0.0372929 -1.00147 0.0627912 0.0627895
--0.715986 0.0450465 -0.999437 0.0627912 0.125332
--0.835434 0.0525616 -0.993366 0.0627912 0.18738
--0.949213 0.05972 -0.983238 0.0627912 0.248689
--1.05553 0.0664092 -0.96905 0.0627912 0.309016
--1.15272 0.0725239 -0.95082 0.0627912 0.368124
--1.23926 0.0779684 -0.928584 0.0627912 0.425778
--1.31379 0.0826573 -0.902396 0.0627912 0.481753
--1.37514 0.0865173 -0.872333 0.0627912 0.535826
--1.42236 0.0894884 -0.838492 0.0627912 0.587784
--1.45472 0.0915244 -0.800988 0.0627912 0.637423
--1.47173 0.0925941 -0.759959 0.0627912 0.684546
--1.47312 0.0926818 -0.715559 0.0627912 0.728968
--1.4589 0.0917869 -0.667965 0.0627912 0.770513
--1.4293 0.0899248 -0.61737 0.0627912 0.809016
--1.38481 0.0871259 -0.563985 0.0627912 0.844327
--1.32616 0.0834356 -0.508038 0.0627912 0.876306
--1.25428 0.0789134 -0.449773 0.0627912 0.904827
--1.17033 0.0736319 -0.389446 0.0627912 0.929776
--1.07566 0.0676757 -0.327329 0.0627912 0.951056
--0.971785 0.0611402 -0.263701 0.0627912 0.968583
--0.860358 0.0541297 -0.198853 0.0627912 0.982287
--0.743163 0.0467564 -0.133084 0.0627912 0.992115
--0.622072 0.0391378 -0.0666978 0.0627912 0.998027
--0.5 3.26795e-07 0 6.5359e-07 1
--0.374667 2.44878e-07 0.0627905 6.5359e-07 0.998027
--0.25131 1.64254e-07 0.125333 6.5359e-07 0.992115
--0.131876 8.61925e-08 0.187381 6.5359e-07 0.982287
--0.0182465 1.19257e-08 0.24869 6.5359e-07 0.968583
-0.087785 -5.73754e-08 0.309017 6.5359e-07 0.951057
-0.184547 -1.20618e-07 0.368125 6.5359e-07 0.929777
-0.270513 -1.76805e-07 0.425779 6.5359e-07 0.904827
-0.344328 -2.25049e-07 0.481754 6.5359e-07 0.876307
-0.404827 -2.64591e-07 0.535827 6.5359e-07 0.844328
-0.451056 -2.94806e-07 0.587785 6.5359e-07 0.809017
-0.482287 -3.15218e-07 0.637424 6.5359e-07 0.770513
-0.498026 -3.25505e-07 0.684547 6.5359e-07 0.728969
-0.498027 -3.25505e-07 0.728969 6.5359e-07 0.684547
-0.482287 -3.15218e-07 0.770513 6.5359e-07 0.637424
-0.451056 -2.94806e-07 0.809017 6.5359e-07 0.587785
-0.404827 -2.64591e-07 0.844328 6.5359e-07 0.535827
-0.344328 -2.25049e-07 0.876307 6.5359e-07 0.481754
-0.270513 -1.76805e-07 0.904827 6.5359e-07 0.42578
-0.184547 -1.20618e-07 0.929777 6.5359e-07 0.368125
-0.0877854 -5.73756e-08 0.951057 6.5359e-07 0.309017
--0.0182462 1.19255e-08 0.968583 6.5359e-07 0.24869
--0.131875 8.61923e-08 0.982287 6.5359e-07 0.187382
--0.25131 1.64254e-07 0.992115 6.5359e-07 0.125334
--0.374666 2.44878e-07 0.998027 6.5359e-07 0.0627908
--0.5 3.26795e-07 1 6.5359e-07 3.26795e-07
--0.625333 4.08711e-07 0.998027 6.5359e-07 -0.0627902
--0.74869 4.89336e-07 0.992115 6.5359e-07 -0.125333
--0.868124 5.67397e-07 0.982287 6.5359e-07 -0.187381
--0.981753 6.41664e-07 0.968583 6.5359e-07 -0.24869
--1.08778 7.10965e-07 0.951056 6.5359e-07 -0.309017
--1.18455 7.74208e-07 0.929776 6.5359e-07 -0.368124
--1.27051 8.30394e-07 0.904827 6.5359e-07 -0.425779
--1.34433 8.78639e-07 0.876307 6.5359e-07 -0.481753
--1.40483 9.18181e-07 0.844328 6.5359e-07 -0.535826
--1.45106 9.48396e-07 0.809017 6.5359e-07 -0.587785
--1.48229 9.68808e-07 0.770513 6.5359e-07 -0.637424
--1.49803 9.79095e-07 0.728969 6.5359e-07 -0.684547
--1.49803 9.79095e-07 0.684547 6.5359e-07 -0.728968
--1.48229 9.68808e-07 0.637424 6.5359e-07 -0.770513
--1.45106 9.48396e-07 0.587785 6.5359e-07 -0.809017
--1.40483 9.18181e-07 0.535827 6.5359e-07 -0.844328
--1.34433 8.7864e-07 0.481754 6.5359e-07 -0.876306
--1.27051 8.30395e-07 0.42578 6.5359e-07 -0.904827
--1.18455 7.74209e-07 0.368125 6.5359e-07 -0.929776
--1.08779 7.10966e-07 0.309017 6.5359e-07 -0.951056
--0.981755 6.41665e-07 0.24869 6.5359e-07 -0.968583
--0.868126 5.67398e-07 0.187382 6.5359e-07 -0.982287
--0.748691 4.89337e-07 0.125334 6.5359e-07 -0.992115
--0.625335 4.08712e-07 0.0627911 6.5359e-07 -0.998027
--0.500001 3.26796e-07 6.53589e-07 6.5359e-07 -1
--0.374668 2.44879e-07 -0.0627898 6.5359e-07 -0.998027
--0.251311 1.64255e-07 -0.125332 6.5359e-07 -0.992115
--0.131877 8.61932e-08 -0.187381 6.5359e-07 -0.982287
--0.0182475 1.19264e-08 -0.248689 6.5359e-07 -0.968583
-0.0877842 -5.73749e-08 -0.309016 6.5359e-07 -0.951057
-0.184546 -1.20617e-07 -0.368124 6.5359e-07 -0.929777
-0.270512 -1.76804e-07 -0.425778 6.5359e-07 -0.904827
-0.344327 -2.25049e-07 -0.481753 6.5359e-07 -0.876307
-0.404827 -2.64591e-07 -0.535826 6.5359e-07 -0.844328
-0.451056 -2.94806e-07 -0.587784 6.5359e-07 -0.809017
-0.482287 -3.15218e-07 -0.637423 6.5359e-07 -0.770514
-0.498027 -3.25505e-07 -0.684546 6.5359e-07 -0.728969
-0.498027 -3.25505e-07 -0.728968 6.5359e-07 -0.684548
-0.482288 -3.15218e-07 -0.770512 6.5359e-07 -0.637425
-0.451057 -2.94806e-07 -0.809016 6.5359e-07 -0.587786
-0.404828 -2.64591e-07 -0.844327 6.5359e-07 -0.535828
-0.344329 -2.2505e-07 -0.876306 6.5359e-07 -0.481754
-0.270515 -1.76806e-07 -0.904826 6.5359e-07 -0.42578
-0.184549 -1.20619e-07 -0.929776 6.5359e-07 -0.368125
-0.087787 -5.73767e-08 -0.951056 6.5359e-07 -0.309018
--0.0182444 1.19243e-08 -0.968583 6.5359e-07 -0.248691
--0.131873 8.61911e-08 -0.982287 6.5359e-07 -0.187382
--0.251308 1.64252e-07 -0.992115 6.5359e-07 -0.125334
--0.374665 2.44877e-07 -0.998027 6.5359e-07 -0.0627915
--0.499998 3.26793e-07 -1 6.5359e-07 -9.80385e-07
--0.625331 4.0871e-07 -0.998027 6.5359e-07 0.0627895
--0.748688 4.89335e-07 -0.992115 6.5359e-07 0.125332
--0.868122 5.67396e-07 -0.982288 6.5359e-07 0.18738
--0.981752 6.41663e-07 -0.968584 6.5359e-07 0.248689
--1.08778 7.10964e-07 -0.951057 6.5359e-07 0.309016
--1.18455 7.74207e-07 -0.929777 6.5359e-07 0.368124
--1.27051 8.30393e-07 -0.904828 6.5359e-07 0.425778
--1.34433 8.78638e-07 -0.876307 6.5359e-07 0.481753
--1.40483 9.1818e-07 -0.844329 6.5359e-07 0.535826
--1.45106 9.48395e-07 -0.809018 6.5359e-07 0.587784
--1.48229 9.68807e-07 -0.770514 6.5359e-07 0.637423
--1.49803 9.79095e-07 -0.72897 6.5359e-07 0.684546
--1.49803 9.79095e-07 -0.684548 6.5359e-07 0.728968
--1.48229 9.68808e-07 -0.637425 6.5359e-07 0.770513
--1.45106 9.48396e-07 -0.587787 6.5359e-07 0.809016
--1.40483 9.18181e-07 -0.535828 6.5359e-07 0.844327
--1.34433 8.7864e-07 -0.481755 6.5359e-07 0.876306
--1.27051 8.30395e-07 -0.425781 6.5359e-07 0.904827
--1.18455 7.74209e-07 -0.368126 6.5359e-07 0.929776
--1.08779 7.10967e-07 -0.309018 6.5359e-07 0.951056
--0.981756 6.41666e-07 -0.248691 6.5359e-07 0.968583
--0.868127 5.67399e-07 -0.187383 6.5359e-07 0.982287
--0.748692 4.89338e-07 -0.125335 6.5359e-07 0.992115
--0.625336 4.08713e-07 -0.0627919 6.5359e-07 0.998027
--0.499013 -0.0313949 0 -0.0627899 1
--0.372021 -0.0234053 0.0588228 -0.0627899 0.998027
--0.247008 -0.0155402 0.11746 -0.0627899 0.992115
--0.125922 -0.00792229 0.175726 -0.0627899 0.982287
--0.0106516 -0.000670136 0.233435 -0.0627899 0.968583
-0.0970097 0.00610327 0.290402 -0.0627899 0.951057
-0.195386 0.0122925 0.346441 -0.0627899 0.929777
-0.282947 0.0178014 0.401367 -0.0627899 0.904827
-0.358335 0.0225443 0.454995 -0.0627899 0.876307
-0.42038 0.0264478 0.507141 -0.0627899 0.844328
-0.468124 0.0294516 0.557622 -0.0627899 0.809017
-0.500834 0.0315095 0.606255 -0.0627899 0.770513
-0.518012 0.0325902 0.652861 -0.0627899 0.728969
-0.519405 0.0326778 0.69726 -0.0627899 0.684547
-0.505006 0.031772 0.739279 -0.0627899 0.637424
-0.47506 0.0298879 0.778745 -0.0627899 0.587785
-0.430051 0.0270562 0.81549 -0.0627899 0.535827
-0.370704 0.0233225 0.849353 -0.0627899 0.481754
-0.297965 0.0187462 0.880178 -0.0627899 0.42578
-0.212993 0.0134003 0.907816 -0.0627899 0.368125
-0.117137 0.00736957 0.932125 -0.0627899 0.309017
-0.0119165 0.000749714 0.952973 -0.0627899 0.24869
--0.101003 -0.00635449 0.97024 -0.0627899 0.187382
--0.219835 -0.0138307 0.983814 -0.0627899 0.125334
--0.342702 -0.0215608 0.993597 -0.0627899 0.0627908
--0.467664 -0.0294226 0.999507 -0.0627899 3.26795e-07
--0.59275 -0.0372923 1.00147 -0.0627899 -0.0627902
--0.715988 -0.0450457 0.999437 -0.0627899 -0.125333
--0.835436 -0.0525606 0.993366 -0.0627899 -0.187381
--0.949215 -0.0597189 0.983237 -0.0627899 -0.24869
--1.05553 -0.0664079 0.96905 -0.0627899 -0.309017
--1.15272 -0.0725225 0.95082 -0.0627899 -0.368124
--1.23926 -0.0779669 0.928583 -0.0627899 -0.425779
--1.31379 -0.0826557 0.902395 -0.0627899 -0.481753
--1.37514 -0.0865156 0.872333 -0.0627899 -0.535826
--1.42236 -0.0894866 0.838491 -0.0627899 -0.587785
--1.45472 -0.0915225 0.800987 -0.0627899 -0.637424
--1.47173 -0.0925922 0.759958 -0.0627899 -0.684547
--1.47312 -0.0926799 0.715558 -0.0627899 -0.728968
--1.4589 -0.091785 0.667964 -0.0627899 -0.770513
--1.4293 -0.0899229 0.617369 -0.0627899 -0.809017
--1.38481 -0.0871241 0.563984 -0.0627899 -0.844328
--1.32616 -0.0834339 0.508037 -0.0627899 -0.876306
--1.25428 -0.0789118 0.449772 -0.0627899 -0.904827
--1.17033 -0.0736303 0.389445 -0.0627899 -0.929776
--1.07566 -0.0676743 0.327328 -0.0627899 -0.951056
--0.971784 -0.0611388 0.2637 -0.0627899 -0.968583
--0.860357 -0.0541285 0.198852 -0.0627899 -0.982287
--0.743162 -0.0467553 0.133084 -0.0627899 -0.992115
--0.62207 -0.0391369 0.066697 -0.0627899 -0.998027
--0.499015 -0.031395 6.94326e-07 -0.0627899 -1
--0.375959 -0.0236531 -0.0666956 -0.0627899 -0.998027
--0.254867 -0.0160347 -0.133082 -0.0627899 -0.992115
--0.137672 -0.00866149 -0.198851 -0.0627899 -0.982287
--0.0262448 -0.00165117 -0.263699 -0.0627899 -0.968583
-0.0776342 0.00488428 -0.327326 -0.0627899 -0.951057
-0.172305 0.0108404 -0.389444 -0.0627899 -0.929777
-0.256252 0.0161218 -0.449771 -0.0627899 -0.904827
-0.32813 0.0206439 -0.508036 -0.0627899 -0.876307
-0.386785 0.0243342 -0.563983 -0.0627899 -0.844328
-0.431272 0.027133 -0.617368 -0.0627899 -0.809017
-0.460869 0.0289951 -0.667963 -0.0627899 -0.770514
-0.475093 0.02989 -0.715557 -0.0627899 -0.728969
-0.473701 0.0298024 -0.759957 -0.0627899 -0.684548
-0.456698 0.0287327 -0.800987 -0.0627899 -0.637425
-0.424337 0.0266968 -0.83849 -0.0627899 -0.587786
-0.377115 0.0237258 -0.872332 -0.0627899 -0.535828
-0.315763 0.0198659 -0.902395 -0.0627899 -0.481754
-0.241236 0.0151771 -0.928582 -0.0627899 -0.42578
-0.1547 0.0097328 -0.950819 -0.0627899 -0.368125
-0.0575099 0.00361818 -0.96905 -0.0627899 -0.309018
--0.0488095 -0.0030708 -0.983237 -0.0627899 -0.248691
--0.162588 -0.0102291 -0.993365 -0.0627899 -0.187382
--0.282036 -0.017744 -0.999437 -0.0627899 -0.125334
--0.405274 -0.0254974 -1.00147 -0.0627899 -0.0627915
--0.53036 -0.0333671 -0.999507 -0.0627899 -9.80385e-07
--0.655322 -0.0412289 -0.993598 -0.0627899 0.0627895
--0.778189 -0.048959 -0.983814 -0.0627899 0.125332
--0.897022 -0.0564352 -0.97024 -0.0627899 0.18738
--1.00994 -0.0635394 -0.952973 -0.0627899 0.248689
--1.11516 -0.0701593 -0.932125 -0.0627899 0.309016
--1.21102 -0.07619 -0.907816 -0.0627899 0.368124
--1.29599 -0.0815359 -0.880179 -0.0627899 0.425778
--1.36873 -0.0861122 -0.849354 -0.0627899 0.481753
--1.42808 -0.089846 -0.815491 -0.0627899 0.535826
--1.47309 -0.0926777 -0.778745 -0.0627899 0.587784
--1.50303 -0.0945618 -0.73928 -0.0627899 0.637423
--1.51743 -0.0954677 -0.697261 -0.0627899 0.684546
--1.51604 -0.0953801 -0.652862 -0.0627899 0.728968
--1.49886 -0.0942994 -0.606256 -0.0627899 0.770513
--1.46615 -0.0922415 -0.557623 -0.0627899 0.809016
--1.41841 -0.0892377 -0.507142 -0.0627899 0.844327
--1.35636 -0.0853342 -0.454996 -0.0627899 0.876306
--1.28098 -0.0805913 -0.401368 -0.0627899 0.904827
--1.19341 -0.0750825 -0.346442 -0.0627899 0.929776
--1.09504 -0.0688933 -0.290403 -0.0627899 0.951056
--0.987377 -0.0621199 -0.233436 -0.0627899 0.968583
--0.872107 -0.0548677 -0.175727 -0.0627899 0.982287
--0.751022 -0.0472498 -0.117461 -0.0627899 0.992115
--0.626009 -0.0393847 -0.058824 -0.0627899 0.998027
--0.496057 -0.0626663 0 -0.125333 1
--0.368046 -0.0464948 0.0547969 -0.125333 0.998027
--0.242008 -0.0305725 0.109471 -0.125333 0.992115
--0.119883 -0.0151447 0.163897 -0.125333 0.982287
--0.00355352 -0.000448911 0.21795 -0.125333 0.968583
-0.105192 0.0132888 0.2715 -0.125333 0.951057
-0.204684 0.0258575 0.324415 -0.125333 0.929777
-0.293396 0.0370643 0.376558 -0.125333 0.904827
-0.369971 0.0467379 0.427787 -0.125333 0.876307
-0.433243 0.054731 0.477955 -0.125333 0.844328
-0.482254 0.0609225 0.526908 -0.125333 0.809017
-0.51627 0.0652197 0.574488 -0.125333 0.770513
-0.53479 0.0675593 0.62053 -0.125333 0.728969
-0.537557 0.0679089 0.664864 -0.125333 0.684547
-0.524561 0.066267 0.707315 -0.125333 0.637424
-0.496036 0.0626636 0.747703 -0.125333 0.587785
-0.452461 0.0571588 0.785847 -0.125333 0.535827
-0.39455 0.0498429 0.821562 -0.125333 0.481754
-0.323238 0.0408343 0.854661 -0.125333 0.42578
-0.239673 0.0302775 0.884959 -0.125333 0.368125
-0.145189 0.0183415 0.912273 -0.125333 0.309017
-0.0412928 0.00521647 0.936422 -0.125333 0.24869
--0.0703641 -0.008889 0.957234 -0.125333 0.187382
--0.188011 -0.0237512 0.974542 -0.125333 0.125334
--0.309785 -0.0391347 0.988188 -0.125333 0.0627908
--0.433762 -0.0547965 0.998027 -0.125333 3.26795e-07
--0.557984 -0.0704894 1.00393 -0.125333 -0.0627902
--0.680495 -0.085966 1.00577 -0.125333 -0.125333
--0.799366 -0.100983 1.00346 -0.125333 -0.187381
--0.912731 -0.115304 0.996921 -0.125333 -0.24869
--1.01881 -0.128705 0.986087 -0.125333 -0.309017
--1.11595 -0.140976 0.970925 -0.125333 -0.368124
--1.20262 -0.151925 0.951422 -0.125333 -0.425779
--1.27748 -0.161383 0.927593 -0.125333 -0.481753
--1.33938 -0.169202 0.899476 -0.125333 -0.535826
--1.38735 -0.175263 0.867138 -0.125333 -0.587785
--1.42068 -0.179472 0.830671 -0.125333 -0.637424
--1.43885 -0.181768 0.790197 -0.125333 -0.684547
--1.44162 -0.182118 0.745863 -0.125333 -0.728968
--1.42897 -0.18052 0.697845 -0.125333 -0.770513
--1.40114 -0.177004 0.646343 -0.125333 -0.809017
--1.3586 -0.17163 0.591584 -0.125333 -0.844328
--1.30206 -0.164488 0.533819 -0.125333 -0.876306
--1.23246 -0.155695 0.47332 -0.125333 -0.904827
--1.15094 -0.145396 0.410382 -0.125333 -0.929776
--1.05881 -0.133758 0.345315 -0.125333 -0.951056
--0.957578 -0.12097 0.278449 -0.125333 -0.968583
--0.848887 -0.107239 0.210127 -0.125333 -0.982287
--0.734493 -0.0927875 0.140702 -0.125333 -0.992115
--0.616247 -0.0778496 0.070537 -0.125333 -0.998027
--0.496059 -0.0626664 7.34378e-07 -0.125333 -1
--0.375871 -0.0474832 -0.0705356 -0.125333 -0.998027
--0.257624 -0.0325453 -0.1407 -0.125333 -0.992115
--0.14323 -0.0180941 -0.210125 -0.125333 -0.982287
--0.0345389 -0.00436326 -0.278448 -0.125333 -0.968583
-0.066691 0.00842499 -0.345314 -0.125333 -0.951057
-0.158818 0.0200633 -0.41038 -0.125333 -0.929777
-0.240347 0.0303627 -0.473319 -0.125333 -0.904827
-0.309948 0.0391554 -0.533818 -0.125333 -0.876307
-0.366484 0.0462974 -0.591583 -0.125333 -0.844328
-0.409021 0.0516711 -0.646342 -0.125333 -0.809017
-0.436853 0.055187 -0.697844 -0.125333 -0.770514
-0.449502 0.056785 -0.745862 -0.125333 -0.728969
-0.446735 0.0564354 -0.790196 -0.125333 -0.684548
-0.428562 0.0541397 -0.83067 -0.125333 -0.637425
-0.395241 0.0499302 -0.867137 -0.125333 -0.587786
-0.347267 0.0438698 -0.899476 -0.125333 -0.535828
-0.285371 0.0360506 -0.927593 -0.125333 -0.481754
-0.210507 0.026593 -0.951422 -0.125333 -0.42578
-0.123833 0.0156436 -0.970924 -0.125333 -0.368125
-0.0266977 0.00337269 -0.986087 -0.125333 -0.309018
--0.0793819 -0.0100282 -0.996921 -0.125333 -0.248691
--0.192746 -0.0243494 -1.00346 -0.125333 -0.187382
--0.311617 -0.0393662 -1.00577 -0.125333 -0.125334
--0.434128 -0.0548428 -1.00393 -0.125333 -0.0627915
--0.558351 -0.0705357 -0.998027 -0.125333 -9.80385e-07
--0.682327 -0.0861975 -0.988188 -0.125333 0.0627895
--0.804101 -0.101581 -0.974542 -0.125333 0.125332
--0.921748 -0.116443 -0.957235 -0.125333 0.18738
--1.03341 -0.130549 -0.936423 -0.125333 0.248689
--1.1373 -0.143674 -0.912273 -0.125333 0.309016
--1.23179 -0.15561 -0.884959 -0.125333 0.368124
--1.31535 -0.166167 -0.854661 -0.125333 0.425778
--1.38666 -0.175175 -0.821563 -0.125333 0.481753
--1.44457 -0.182491 -0.785848 -0.125333 0.535826
--1.48815 -0.187996 -0.747704 -0.125333 0.587784
--1.51667 -0.1916 -0.707316 -0.125333 0.637423
--1.52967 -0.193241 -0.664865 -0.125333 0.684546
--1.5269 -0.192892 -0.620531 -0.125333 0.728968
--1.50838 -0.190552 -0.574489 -0.125333 0.770513
--1.47437 -0.186255 -0.526909 -0.125333 0.809016
--1.42536 -0.180064 -0.477956 -0.125333 0.844327
--1.36209 -0.172071 -0.427789 -0.125333 0.876306
--1.28551 -0.162397 -0.376559 -0.125333 0.904827
--1.1968 -0.15119 -0.324416 -0.125333 0.929776
--1.09731 -0.138622 -0.271501 -0.125333 0.951056
--0.988564 -0.124884 -0.217951 -0.125333 0.968583
--0.872234 -0.110188 -0.163898 -0.125333 0.982287
--0.75011 -0.0947604 -0.109472 -0.125333 0.992115
--0.624071 -0.0788381 -0.054798 -0.125333 0.998027
--0.491144 -0.0936903 0 -0.187381 1
--0.362772 -0.0692023 0.050717 -0.187381 0.998027
--0.236357 -0.0450873 0.101373 -0.187381 0.992115
--0.113823 -0.0217128 0.151906 -0.187381 0.982287
-0.00296578 0.00056575 0.202249 -0.187381 0.968583
-0.112234 0.0214096 0.25233 -0.187381 0.951057
-0.212324 0.0405028 0.302069 -0.187381 0.929777
-0.301722 0.0575564 0.351378 -0.187381 0.904827
-0.379082 0.0723135 0.400158 -0.187381 0.876307
-0.443244 0.0845531 0.448297 -0.187381 0.844328
-0.493257 0.0940934 0.495675 -0.187381 0.809017
-0.528387 0.100795 0.542154 -0.187381 0.770513
-0.548135 0.104562 0.587587 -0.187381 0.728969
-0.552241 0.105345 0.631811 -0.187381 0.684547
-0.54069 0.103142 0.674653 -0.187381 0.637424
-0.513708 0.0979946 0.715924 -0.187381 0.587785
-0.471763 0.0899932 0.755429 -0.187381 0.535827
-0.415555 0.0792711 0.79296 -0.187381 0.481754
-0.346006 0.066004 0.8283 -0.187381 0.42578
-0.264244 0.050407 0.861229 -0.187381 0.368125
-0.171585 0.0327315 0.89152 -0.187381 0.309017
-0.069514 0.0132605 0.918948 -0.187381 0.24869
--0.0403402 -0.00769527 0.943284 -0.187381 0.187382
--0.15623 -0.0298024 0.964308 -0.187381 0.125334
--0.276318 -0.0527102 0.981803 -0.187381 0.0627908
--0.398702 -0.0760562 0.995562 -0.187381 3.26795e-07
--0.521451 -0.0994718 1.00539 -0.187381 -0.0627902
--0.642632 -0.122588 1.01112 -0.187381 -0.125333
--0.760339 -0.145042 1.01257 -0.187381 -0.187381
--0.872727 -0.166481 1.00962 -0.187381 -0.24869
--0.978038 -0.18657 1.00215 -0.187381 -0.309017
--1.07463 -0.204996 0.990072 -0.187381 -0.368124
--1.16101 -0.221473 0.973323 -0.187381 -0.425779
--1.23583 -0.235746 0.951876 -0.187381 -0.481753
--1.29795 -0.247596 0.925732 -0.187381 -0.535826
--1.34642 -0.256843 0.894929 -0.187381 -0.587785
--1.38052 -0.263348 0.859535 -0.187381 -0.637424
--1.39976 -0.267017 0.819656 -0.187381 -0.684547
--1.40386 -0.2678 0.775432 -0.187381 -0.728968
--1.39283 -0.265695 0.727037 -0.187381 -0.770513
--1.36687 -0.260744 0.674679 -0.187381 -0.809017
--1.32647 -0.253036 0.618601 -0.187381 -0.844328
--1.2723 -0.242704 0.559074 -0.187381 -0.876306
--1.20529 -0.229921 0.496402 -0.187381 -0.904827
--1.12655 -0.214901 0.430913 -0.187381 -0.929776
--1.03739 -0.197892 0.362961 -0.187381 -0.951056
--0.939276 -0.179176 0.292924 -0.187381 -0.968583
--0.833822 -0.15906 0.221194 -0.187381 -0.982287
--0.72276 -0.137873 0.148181 -0.187381 -0.992115
--0.607907 -0.115964 0.0743075 -0.187381 -0.998027
--0.491145 -0.0936905 7.73705e-07 -0.187381 -1
--0.374382 -0.071417 -0.0743059 -0.187381 -0.998027
--0.25953 -0.0495078 -0.14818 -0.187381 -0.992115
--0.148467 -0.0283215 -0.221192 -0.187381 -0.982287
--0.0430136 -0.00820525 -0.292922 -0.187381 -0.968583
-0.055101 0.010511 -0.36296 -0.187381 -0.951057
-0.144263 0.0275196 -0.430911 -0.187381 -0.929777
-0.223002 0.0425398 -0.4964 -0.187381 -0.904827
-0.290014 0.0553229 -0.559073 -0.187381 -0.876307
-0.344179 0.0656554 -0.6186 -0.187381 -0.844328
-0.384585 0.0733633 -0.674678 -0.187381 -0.809017
-0.410538 0.078314 -0.727036 -0.187381 -0.770514
-0.421574 0.0804193 -0.775431 -0.187381 -0.728969
-0.417468 0.079636 -0.819655 -0.187381 -0.684548
-0.398236 0.0759673 -0.859534 -0.187381 -0.637425
-0.364135 0.0694623 -0.894928 -0.187381 -0.587786
-0.315662 0.0602156 -0.925732 -0.187381 -0.535828
-0.253542 0.0483656 -0.951875 -0.187381 -0.481754
-0.178721 0.0340927 -0.973323 -0.187381 -0.42578
-0.0923459 0.0176158 -0.990071 -0.187381 -0.368125
--0.00424725 -0.000810203 -1.00215 -0.187381 -0.309018
--0.109559 -0.0208993 -1.00962 -0.187381 -0.248691
--0.221946 -0.0423384 -1.01257 -0.187381 -0.187382
--0.339653 -0.0647921 -1.01112 -0.187381 -0.125334
--0.460834 -0.0879084 -1.00539 -0.187381 -0.0627915
--0.583583 -0.111324 -0.995562 -0.187381 -9.80385e-07
--0.705967 -0.13467 -0.981803 -0.187381 0.0627895
--0.826055 -0.157578 -0.964308 -0.187381 0.125332
--0.941945 -0.179685 -0.943285 -0.187381 0.18738
--1.0518 -0.200641 -0.918948 -0.187381 0.248689
--1.15387 -0.220112 -0.891521 -0.187381 0.309016
--1.24653 -0.237787 -0.861229 -0.187381 0.368124
--1.32829 -0.253384 -0.828301 -0.187381 0.425778
--1.39784 -0.266651 -0.79296 -0.187381 0.481753
--1.45405 -0.277374 -0.75543 -0.187381 0.535826
--1.49599 -0.285375 -0.715925 -0.187381 0.587784
--1.52298 -0.290522 -0.674653 -0.187381 0.637423
--1.53453 -0.292726 -0.631812 -0.187381 0.684546
--1.53042 -0.291943 -0.587588 -0.187381 0.728968
--1.51067 -0.288175 -0.542155 -0.187381 0.770513
--1.47554 -0.281474 -0.495676 -0.187381 0.809016
--1.42553 -0.271934 -0.448298 -0.187381 0.844327
--1.36137 -0.259694 -0.400159 -0.187381 0.876306
--1.28401 -0.244937 -0.351379 -0.187381 0.904827
--1.19461 -0.227884 -0.30207 -0.187381 0.929776
--1.09452 -0.208791 -0.252331 -0.187381 0.951056
--0.985256 -0.187947 -0.20225 -0.187381 0.968583
--0.868467 -0.165668 -0.151907 -0.187381 0.982287
--0.745933 -0.142294 -0.101374 -0.187381 0.992115
--0.619518 -0.118179 -0.050718 -0.187381 0.998027
--0.484292 -0.124345 0 -0.248689 1
--0.356231 -0.0914642 0.046587 -0.248689 0.998027
--0.230099 -0.0590793 0.0931759 -0.248689 0.992115
--0.107797 -0.0276774 0.139766 -0.248689 0.982287
-0.00883721 0.002269 0.186349 -0.248689 0.968583
-0.118051 0.0303103 0.232911 -0.248689 0.951057
-0.218209 0.0560265 0.279425 -0.248689 0.929777
-0.307817 0.0790338 0.325851 -0.248689 0.904827
-0.385544 0.0989906 0.372133 -0.248689 0.876307
-0.450245 0.115603 0.418197 -0.248689 0.844328
-0.500976 0.128629 0.463952 -0.248689 0.809017
-0.537013 0.137881 0.509285 -0.248689 0.770513
-0.557859 0.143233 0.554064 -0.248689 0.728969
-0.563251 0.144618 0.598135 -0.248689 0.684547
-0.55317 0.142029 0.641325 -0.248689 0.637424
-0.527833 0.135524 0.683439 -0.248689 0.587785
-0.487696 0.125219 0.724265 -0.248689 0.535827
-0.433441 0.111289 0.763575 -0.248689 0.481754
-0.365972 0.0939653 0.801121 -0.248689 0.42578
-0.286392 0.0735327 0.836649 -0.248689 0.368125
-0.195992 0.0503221 0.869888 -0.248689 0.309017
-0.0962294 0.0247074 0.900566 -0.248689 0.24869
--0.0112983 -0.00290091 0.928403 -0.248689 0.187382
--0.124876 -0.0320625 0.953122 -0.248689 0.125334
--0.242697 -0.0623138 0.974449 -0.248689 0.0627908
--0.362896 -0.0931755 0.992115 -0.248689 3.26795e-07
--0.483574 -0.12416 1.00587 -0.248689 -0.0627902
--0.60283 -0.15478 1.01546 -0.248689 -0.125333
--0.718794 -0.184554 1.02068 -0.248689 -0.187381
--0.829649 -0.213017 1.02133 -0.248689 -0.24869
--0.933667 -0.239724 1.01723 -0.248689 -0.309017
--1.02923 -0.264261 1.00824 -0.248689 -0.368124
--1.11487 -0.286249 0.994263 -0.248689 -0.425779
--1.18927 -0.30535 0.975219 -0.248689 -0.481753
--1.25128 -0.321274 0.951075 -0.248689 -0.535826
--1.29999 -0.333781 0.921837 -0.248689 -0.587785
--1.33468 -0.342686 0.887551 -0.248689 -0.637424
--1.35485 -0.347865 0.848306 -0.248689 -0.684547
--1.36024 -0.349249 0.804235 -0.248689 -0.728968
--1.35084 -0.346835 0.755511 -0.248689 -0.770513
--1.32685 -0.340677 0.70235 -0.248689 -0.809017
--1.28873 -0.33089 0.645007 -0.248689 -0.844328
--1.23716 -0.317649 0.583778 -0.248689 -0.876306
--1.17303 -0.301181 0.518993 -0.248689 -0.904827
--1.09742 -0.281768 0.451019 -0.248689 -0.929776
--1.01161 -0.259736 0.38025 -0.248689 -0.951056
--0.917042 -0.235456 0.307109 -0.248689 -0.968583
--0.815293 -0.209331 0.232043 -0.248689 -0.982287
--0.708055 -0.181797 0.155515 -0.248689 -0.992115
--0.597109 -0.153311 0.0780046 -0.248689 -0.998027
--0.484293 -0.124345 8.12269e-07 -0.248689 -1
--0.371477 -0.0953788 -0.0780029 -0.248689 -0.998027
--0.26053 -0.0668926 -0.155513 -0.248689 -0.992115
--0.153292 -0.0393587 -0.232041 -0.248689 -0.982287
--0.0515434 -0.0132341 -0.307108 -0.248689 -0.968583
-0.0430238 0.0110466 -0.380248 -0.248689 -0.951057
-0.128831 0.0330782 -0.451017 -0.248689 -0.929777
-0.204441 0.0524915 -0.518992 -0.248689 -0.904827
-0.268578 0.068959 -0.583776 -0.248689 -0.876307
-0.320151 0.0822005 -0.645006 -0.248689 -0.844328
-0.358267 0.0919871 -0.702348 -0.248689 -0.809017
-0.382253 0.0981455 -0.75551 -0.248689 -0.770514
-0.391657 0.10056 -0.804234 -0.248689 -0.728969
-0.386265 0.0991756 -0.848306 -0.248689 -0.684548
-0.366097 0.0939974 -0.88755 -0.248689 -0.637425
-0.331412 0.0850918 -0.921836 -0.248689 -0.587786
-0.282701 0.0725852 -0.951074 -0.248689 -0.535828
-0.220683 0.0566616 -0.975219 -0.248689 -0.481754
-0.146289 0.0375606 -0.994263 -0.248689 -0.42578
-0.0606518 0.0155727 -1.00824 -0.248689 -0.368125
--0.0349143 -0.00896443 -1.01723 -0.248689 -0.309018
--0.138932 -0.0356717 -1.02133 -0.248689 -0.248691
--0.249787 -0.0641343 -1.02068 -0.248689 -0.187382
--0.36575 -0.0939085 -1.01546 -0.248689 -0.125334
--0.485007 -0.124528 -1.00587 -0.248689 -0.0627915
--0.605685 -0.155513 -0.992115 -0.248689 -9.80385e-07
--0.725884 -0.186375 -0.974449 -0.248689 0.0627895
--0.843705 -0.216626 -0.953123 -0.248689 0.125332
--0.957283 -0.245788 -0.928404 -0.248689 0.18738
--1.06481 -0.273396 -0.900567 -0.248689 0.248689
--1.16457 -0.299011 -0.869889 -0.248689 0.309016
--1.25497 -0.322221 -0.836649 -0.248689 0.368124
--1.33455 -0.342654 -0.801122 -0.248689 0.425778
--1.40202 -0.359977 -0.763575 -0.248689 0.481753
--1.45628 -0.373908 -0.724266 -0.248689 0.535826
--1.49642 -0.384213 -0.68344 -0.248689 0.587784
--1.52175 -0.390719 -0.641325 -0.248689 0.637423
--1.53183 -0.393307 -0.598136 -0.248689 0.684546
--1.52644 -0.391923 -0.554065 -0.248689 0.728968
--1.5056 -0.386571 -0.509286 -0.248689 0.770513
--1.46956 -0.377318 -0.463953 -0.248689 0.809016
--1.41883 -0.364292 -0.418198 -0.248689 0.844327
--1.35413 -0.34768 -0.372134 -0.248689 0.876306
--1.2764 -0.327723 -0.325852 -0.248689 0.904827
--1.18679 -0.304716 -0.279426 -0.248689 0.929776
--1.08664 -0.279 -0.232912 -0.248689 0.951056
--0.977423 -0.250959 -0.18635 -0.248689 0.968583
--0.860789 -0.221012 -0.139767 -0.248689 0.982287
--0.738487 -0.189611 -0.0931769 -0.248689 0.992115
--0.612355 -0.157226 -0.046588 -0.248689 0.998027
--0.475528 -0.154508 0 -0.309016 1
--0.348455 -0.11322 0.0424111 -0.309016 0.998027
--0.223275 -0.0725464 0.0848866 -0.309016 0.992115
--0.101853 -0.0330941 0.127487 -0.309016 0.982287
-0.0140053 0.00455057 0.170265 -0.309016 0.968583
-0.122581 0.0398289 0.213263 -0.309016 0.951057
-0.222268 0.0722191 0.256506 -0.309016 0.929777
-0.311598 0.101244 0.300003 -0.309016 0.904827
-0.389263 0.126479 0.343741 -0.309016 0.876307
-0.454138 0.147558 0.387684 -0.309016 0.844328
-0.505294 0.164179 0.431771 -0.309016 0.809017
-0.542015 0.176111 0.475913 -0.309016 0.770513
-0.563811 0.183193 0.519994 -0.309016 0.728969
-0.57042 0.18534 0.563868 -0.309016 0.684547
-0.561816 0.182545 0.607364 -0.309016 0.637424
-0.538208 0.174874 0.650279 -0.309016 0.587785
-0.500036 0.162471 0.692387 -0.309016 0.535827
-0.447964 0.145552 0.733436 -0.309016 0.481754
-0.38287 0.124402 0.773152 -0.309016 0.42578
-0.30583 0.0993699 0.811243 -0.309016 0.368125
-0.218103 0.0708657 0.847398 -0.309016 0.309017
-0.12111 0.0393509 0.881295 -0.309016 0.24869
-0.0164115 0.00533242 0.912606 -0.309016 0.187382
--0.094317 -0.0306454 0.940996 -0.309016 0.125334
--0.209312 -0.0680095 0.966133 -0.309016 0.0627908
--0.32675 -0.106167 0.987688 -0.309016 3.26795e-07
--0.444775 -0.144516 1.00535 -0.309016 -0.0627902
--0.561529 -0.182452 1.0188 -0.309016 -0.125333
--0.675182 -0.219379 1.02778 -0.309016 -0.187381
--0.783958 -0.254723 1.03202 -0.309016 -0.24869
--0.886166 -0.287932 1.0313 -0.309016 -0.309017
--0.980226 -0.318494 1.02542 -0.309016 -0.368124
--1.06469 -0.345938 1.01422 -0.309016 -0.425779
--1.13827 -0.369846 0.9976 -0.309016 -0.481753
--1.19986 -0.389857 0.975479 -0.309016 -0.535826
--1.24854 -0.405673 0.947835 -0.309016 -0.587785
--1.2836 -0.417067 0.91469 -0.309016 -0.637424
--1.30457 -0.423879 0.87612 -0.309016 -0.684547
--1.31118 -0.426026 0.832245 -0.309016 -0.728968
--1.3034 -0.4235 0.78324 -0.309016 -0.770513
--1.28145 -0.416368 0.729327 -0.309016 -0.809017
--1.24576 -0.40477 0.670776 -0.309016 -0.844328
--1.19697 -0.388919 0.607905 -0.309016 -0.876306
--1.13596 -0.369096 0.541072 -0.309016 -0.904827
--1.06379 -0.345645 0.47068 -0.309016 -0.929776
--0.981689 -0.318969 0.397163 -0.309016 -0.951056
--0.891064 -0.289524 0.320992 -0.309016 -0.968583
--0.793448 -0.257806 0.242662 -0.309016 -0.982287
--0.690489 -0.224353 0.162695 -0.309016 -0.992115
--0.583919 -0.189726 0.0816247 -0.309016 -0.998027
--0.475529 -0.154509 8.50031e-07 -0.309016 -1
--0.36714 -0.119291 -0.081623 -0.309016 -0.998027
--0.26057 -0.0846641 -0.162693 -0.309016 -0.992115
--0.157611 -0.0512107 -0.242661 -0.309016 -0.982287
--0.0599947 -0.0194934 -0.32099 -0.309016 -0.968583
-0.0306305 0.00995244 -0.397161 -0.309016 -0.951057
-0.11273 0.036628 -0.470678 -0.309016 -0.929777
-0.184904 0.0600789 -0.541071 -0.309016 -0.904827
-0.245914 0.0799022 -0.607903 -0.309016 -0.876307
-0.294699 0.0957534 -0.670775 -0.309016 -0.844328
-0.330395 0.107351 -0.729326 -0.309016 -0.809017
-0.352346 0.114484 -0.783239 -0.309016 -0.770514
-0.36012 0.11701 -0.832244 -0.309016 -0.728969
-0.353512 0.114863 -0.876119 -0.309016 -0.684548
-0.332546 0.108051 -0.91469 -0.309016 -0.637425
-0.297481 0.0966573 -0.947834 -0.309016 -0.587786
-0.248802 0.0808406 -0.975478 -0.309016 -0.535828
-0.187215 0.0608297 -0.997599 -0.309016 -0.481754
-0.113634 0.036922 -1.01422 -0.309016 -0.42578
-0.0291706 0.00947809 -1.02542 -0.309016 -0.368125
--0.0648882 -0.0210834 -1.0313 -0.309016 -0.309018
--0.167096 -0.0542927 -1.03202 -0.309016 -0.248691
--0.275872 -0.0896361 -1.02778 -0.309016 -0.187382
--0.389525 -0.126564 -1.0188 -0.309016 -0.125334
--0.506279 -0.1645 -1.00535 -0.309016 -0.0627915
--0.624304 -0.202848 -0.987689 -0.309016 -9.80385e-07
--0.741742 -0.241006 -0.966133 -0.309016 0.0627895
--0.856737 -0.27837 -0.940997 -0.309016 0.125332
--0.967466 -0.314348 -0.912607 -0.309016 0.18738
--1.07216 -0.348367 -0.881296 -0.309016 0.248689
--1.16916 -0.379881 -0.847398 -0.309016 0.309016
--1.25688 -0.408386 -0.811244 -0.309016 0.368124
--1.33393 -0.433417 -0.773153 -0.309016 0.425778
--1.39902 -0.454568 -0.733437 -0.309016 0.481753
--1.45109 -0.471487 -0.692388 -0.309016 0.535826
--1.48926 -0.48389 -0.65028 -0.309016 0.587784
--1.51287 -0.491561 -0.607365 -0.309016 0.637423
--1.52148 -0.494357 -0.563869 -0.309016 0.684546
--1.51487 -0.492209 -0.519995 -0.309016 0.728968
--1.49307 -0.485128 -0.475914 -0.309016 0.770513
--1.45635 -0.473196 -0.431772 -0.309016 0.809016
--1.4052 -0.456575 -0.387685 -0.309016 0.844327
--1.34032 -0.435496 -0.343742 -0.309016 0.876306
--1.26266 -0.410261 -0.300004 -0.309016 0.904827
--1.17333 -0.381236 -0.256507 -0.309016 0.929776
--1.07364 -0.348846 -0.213264 -0.309016 0.951056
--0.965064 -0.313568 -0.170266 -0.309016 0.968583
--0.849206 -0.275923 -0.127488 -0.309016 0.982287
--0.727784 -0.236471 -0.0848875 -0.309016 0.992115
--0.602604 -0.195798 -0.0424119 -0.309016 0.998027
--0.464888 -0.184062 0 -0.368124 1
--0.339481 -0.13441 0.0381933 -0.368124 0.998027
--0.215922 -0.0854894 0.0765135 -0.368124 0.992115
--0.0960313 -0.0380214 0.115083 -0.368124 0.982287
-0.0184283 0.00729628 0.154013 -0.368124 0.968583
-0.125778 0.049799 0.193404 -0.368124 0.951057
-0.224449 0.0888656 0.233333 -0.368124 0.929777
-0.313008 0.123928 0.273858 -0.368124 0.904827
-0.390175 0.154481 0.315009 -0.368124 0.876307
-0.45485 0.180088 0.356788 -0.368124 0.844328
-0.506124 0.200388 0.399164 -0.368124 0.809017
-0.543296 0.215106 0.442071 -0.368124 0.770513
-0.565881 0.224048 0.485411 -0.368124 0.728969
-0.57362 0.227112 0.529045 -0.368124 0.684547
-0.566483 0.224286 0.572803 -0.368124 0.637424
-0.544668 0.215649 0.616477 -0.368124 0.587785
-0.508598 0.201368 0.659825 -0.368124 0.535827
-0.458916 0.181697 0.702574 -0.368124 0.481754
-0.396469 0.156973 0.74442 -0.368124 0.42578
-0.322302 0.127608 0.785036 -0.368124 0.368125
-0.237636 0.0940867 0.824071 -0.368124 0.309017
-0.14385 0.0569543 0.861155 -0.368124 0.24869
-0.0424597 0.0168109 0.895909 -0.368124 0.187382
--0.0649087 -0.0256991 0.927942 -0.368124 0.125334
--0.176541 -0.0698975 0.956864 -0.368124 0.0627908
--0.290665 -0.115082 0.982287 -0.368124 3.26795e-07
--0.405477 -0.160539 1.00383 -0.368124 -0.0627902
--0.51917 -0.205553 1.02114 -0.368124 -0.125333
--0.629962 -0.249419 1.03387 -0.368124 -0.187381
--0.736128 -0.291453 1.0417 -0.368124 -0.24869
--0.836021 -0.331004 1.04435 -0.368124 -0.309017
--0.928102 -0.367461 1.04158 -0.368124 -0.368124
--1.01096 -0.400268 1.03318 -0.368124 -0.425779
--1.08335 -0.428927 1.019 -0.368124 -0.481753
--1.14417 -0.453009 0.99892 -0.368124 -0.535826
--1.19255 -0.472162 0.972897 -0.368124 -0.587785
--1.22778 -0.486111 0.940928 -0.368124 -0.637424
--1.24939 -0.494668 0.903068 -0.368124 -0.684547
--1.25713 -0.497732 0.859434 -0.368124 -0.728968
--1.25097 -0.495291 0.810196 -0.368124 -0.770513
--1.23109 -0.487422 0.755584 -0.368124 -0.809017
--1.19792 -0.47429 0.695884 -0.368124 -0.844328
--1.15209 -0.456143 0.631432 -0.368124 -0.876306
--1.09442 -0.433312 0.562618 -0.368124 -0.904827
--1.02596 -0.406204 0.489876 -0.368124 -0.929776
--0.94788 -0.375292 0.413684 -0.368124 -0.951056
--0.861551 -0.341112 0.334557 -0.368124 -0.968583
--0.768454 -0.304252 0.253043 -0.368124 -0.982287
--0.670184 -0.265344 0.169714 -0.368124 -0.992115
--0.568418 -0.225052 0.0851643 -0.368124 -0.998027
--0.464889 -0.184062 8.86954e-07 -0.368124 -1
--0.361361 -0.143073 -0.0851625 -0.368124 -0.998027
--0.259595 -0.102781 -0.169712 -0.368124 -0.992115
--0.161324 -0.0638727 -0.253041 -0.368124 -0.982287
--0.0682273 -0.027013 -0.334555 -0.368124 -0.968583
-0.0181019 0.00716704 -0.413682 -0.368124 -0.951057
-0.0961775 0.0380793 -0.489874 -0.368124 -0.929777
-0.164646 0.065188 -0.562616 -0.368124 -0.904827
-0.22231 0.0880186 -0.631431 -0.368124 -0.876307
-0.268144 0.106165 -0.695882 -0.368124 -0.844328
-0.301313 0.119298 -0.755583 -0.368124 -0.809017
-0.321189 0.127167 -0.810195 -0.368124 -0.770514
-0.327354 0.129608 -0.859433 -0.368124 -0.728969
-0.319615 0.126544 -0.903067 -0.368124 -0.684548
-0.298002 0.117987 -0.940927 -0.368124 -0.637425
-0.262771 0.104038 -0.972897 -0.368124 -0.587786
-0.214397 0.0848857 -0.99892 -0.368124 -0.535828
-0.153572 0.0608032 -1.019 -0.368124 -0.481754
-0.0811874 0.0321443 -1.03318 -0.368124 -0.42578
--0.00167277 -0.000662295 -1.04158 -0.368124 -0.368125
--0.0937535 -0.0371195 -1.04435 -0.368124 -0.309018
--0.193646 -0.0766698 -1.0417 -0.368124 -0.248691
--0.299812 -0.118704 -1.03387 -0.368124 -0.187382
--0.410605 -0.16257 -1.02114 -0.368124 -0.125334
--0.524297 -0.207584 -1.00383 -0.368124 -0.0627915
--0.639109 -0.253041 -0.982288 -0.368124 -9.80385e-07
--0.753233 -0.298225 -0.956864 -0.368124 0.0627895
--0.864866 -0.342424 -0.927942 -0.368124 0.125332
--0.972234 -0.384934 -0.895909 -0.368124 0.18738
--1.07363 -0.425077 -0.861156 -0.368124 0.248689
--1.16741 -0.46221 -0.824072 -0.368124 0.309016
--1.25208 -0.495731 -0.785037 -0.368124 0.368124
--1.32624 -0.525096 -0.744421 -0.368124 0.425778
--1.38869 -0.549821 -0.702575 -0.368124 0.481753
--1.43837 -0.569491 -0.659826 -0.368124 0.535826
--1.47444 -0.583773 -0.616478 -0.368124 0.587784
--1.49626 -0.59241 -0.572804 -0.368124 0.637423
--1.5034 -0.595236 -0.529046 -0.368124 0.684546
--1.49566 -0.592172 -0.485412 -0.368124 0.728968
--1.47307 -0.58323 -0.442072 -0.368124 0.770513
--1.4359 -0.568513 -0.399165 -0.368124 0.809016
--1.38463 -0.548212 -0.356789 -0.368124 0.844327
--1.31995 -0.522605 -0.31501 -0.368124 0.876306
--1.24279 -0.492053 -0.273859 -0.368124 0.904827
--1.15423 -0.45699 -0.233334 -0.368124 0.929776
--1.05556 -0.417924 -0.193404 -0.368124 0.951056
--0.948207 -0.375421 -0.154014 -0.368124 0.968583
--0.833748 -0.330103 -0.115084 -0.368124 0.982287
--0.713857 -0.282635 -0.0765143 -0.368124 0.992115
--0.590298 -0.233715 -0.0381941 -0.368124 0.998027
--0.452414 -0.212889 0 -0.425779 1
--0.329346 -0.154978 0.0339378 -0.425779 0.998027
--0.208073 -0.0979116 0.0680649 -0.425779 0.992115
--0.0903608 -0.0425205 0.102565 -0.425779 0.982287
-0.022079 0.0103896 0.137609 -0.425779 0.968583
-0.127616 0.0600515 0.173354 -0.425779 0.951057
-0.224727 0.105748 0.20993 -0.425779 0.929777
-0.312018 0.146824 0.247443 -0.425779 0.904827
-0.388248 0.182695 0.285967 -0.425779 0.876307
-0.452344 0.212856 0.325541 -0.425779 0.844328
-0.503422 0.236892 0.366163 -0.425779 0.809017
-0.540797 0.254479 0.407794 -0.425779 0.770513
-0.563997 0.265396 0.450349 -0.425779 0.728969
-0.572765 0.269522 0.4937 -0.425779 0.684547
-0.567067 0.266841 0.537678 -0.425779 0.637424
-0.547089 0.25744 0.582067 -0.425779 0.587785
-0.513236 0.24151 0.626612 -0.425779 0.535827
-0.466126 0.219342 0.671018 -0.425779 0.481754
-0.406574 0.191319 0.714954 -0.425779 0.42578
-0.335587 0.157915 0.758055 -0.425779 0.368125
-0.254343 0.119685 0.799931 -0.425779 0.309017
-0.164173 0.0772539 0.840165 -0.425779 0.24869
-0.0665396 0.0313111 0.878327 -0.425779 0.187382
--0.0369858 -0.0174041 0.913971 -0.425779 0.125334
--0.144747 -0.0681127 0.94665 -0.425779 0.0627908
--0.255031 -0.120008 0.975917 -0.425779 3.26795e-07
--0.366095 -0.172271 1.00133 -0.425779 -0.0627902
--0.47619 -0.224078 1.02247 -0.425779 -0.125333
--0.583595 -0.274618 1.03893 -0.425779 -0.187381
--0.686639 -0.323107 1.05035 -0.425779 -0.24869
--0.783728 -0.368794 1.05637 -0.425779 -0.309017
--0.873372 -0.410977 1.05671 -0.425779 -0.368124
--0.954208 -0.449015 1.05112 -0.425779 -0.425779
--1.02502 -0.482336 1.03939 -0.425779 -0.481753
--1.08475 -0.510445 1.02138 -0.425779 -0.535826
--1.13255 -0.532935 0.997 -0.425779 -0.587785
--1.16772 -0.549488 0.966236 -0.425779 -0.637424
--1.18982 -0.559887 0.929125 -0.425779 -0.684547
--1.19859 -0.564013 0.885774 -0.425779 -0.728968
--1.19399 -0.561849 0.836352 -0.425779 -0.770513
--1.17621 -0.553483 0.781096 -0.425779 -0.809017
--1.14565 -0.539099 0.720305 -0.425779 -0.844328
--1.1029 -0.518983 0.654336 -0.425779 -0.876306
--1.04876 -0.49351 0.583608 -0.425779 -0.904827
--0.984233 -0.463144 0.508589 -0.425779 -0.929776
--0.910456 -0.428427 0.429797 -0.425779 -0.951056
--0.828734 -0.389972 0.347793 -0.425779 -0.968583
--0.740496 -0.34845 0.263173 -0.425779 -0.982287
--0.647278 -0.304585 0.176566 -0.425779 -0.992115
--0.550695 -0.259137 0.0886198 -0.425779 -0.998027
--0.452415 -0.21289 9.23001e-07 -0.425779 -1
--0.354135 -0.166643 -0.0886179 -0.425779 -0.998027
--0.257551 -0.121194 -0.176564 -0.425779 -0.992115
--0.164333 -0.0773291 -0.263171 -0.425779 -0.982287
--0.0760955 -0.0358078 -0.347791 -0.425779 -0.968583
-0.00562684 0.00264778 -0.429795 -0.425779 -0.951057
-0.0794044 0.0373648 -0.508587 -0.425779 -0.929777
-0.143936 0.0677309 -0.583606 -0.425779 -0.904827
-0.198069 0.0932038 -0.654335 -0.425779 -0.876307
-0.240819 0.11332 -0.720303 -0.425779 -0.844328
-0.271385 0.127704 -0.781095 -0.425779 -0.809017
-0.289166 0.136071 -0.836351 -0.425779 -0.770514
-0.293763 0.138234 -0.885773 -0.425779 -0.728969
-0.284995 0.134108 -0.929125 -0.425779 -0.684548
-0.262897 0.12371 -0.966235 -0.425779 -0.637425
-0.227719 0.107156 -0.996999 -0.425779 -0.587786
-0.179927 0.0846672 -1.02138 -0.425779 -0.535828
-0.120193 0.0565582 -1.03939 -0.425779 -0.481754
-0.0493823 0.0232375 -1.05112 -0.425779 -0.42578
--0.0314533 -0.0148008 -1.05671 -0.425779 -0.368125
--0.121098 -0.0569842 -1.05637 -0.425779 -0.309018
--0.218187 -0.102671 -1.05035 -0.425779 -0.248691
--0.32123 -0.151159 -1.03893 -0.425779 -0.187382
--0.428635 -0.2017 -1.02247 -0.425779 -0.125334
--0.53873 -0.253507 -1.00133 -0.425779 -0.0627915
--0.649794 -0.305769 -0.975917 -0.425779 -9.80385e-07
--0.760078 -0.357665 -0.946651 -0.425779 0.0627895
--0.867839 -0.408373 -0.913972 -0.425779 0.125332
--0.971365 -0.457089 -0.878328 -0.425779 0.18738
--1.069 -0.503032 -0.840166 -0.425779 0.248689
--1.15917 -0.545462 -0.799932 -0.425779 0.309016
--1.24041 -0.583693 -0.758056 -0.425779 0.368124
--1.3114 -0.617097 -0.714955 -0.425779 0.425778
--1.37095 -0.64512 -0.671019 -0.425779 0.481753
--1.41806 -0.667288 -0.626613 -0.425779 0.535826
--1.45192 -0.683218 -0.582068 -0.425779 0.587784
--1.47189 -0.692619 -0.537679 -0.425779 0.637423
--1.47759 -0.695301 -0.493701 -0.425779 0.684546
--1.46882 -0.691175 -0.450349 -0.425779 0.728968
--1.44563 -0.680258 -0.407795 -0.425779 0.770513
--1.40825 -0.662671 -0.366164 -0.425779 0.809016
--1.35717 -0.638636 -0.325542 -0.425779 0.844327
--1.29308 -0.608474 -0.285968 -0.425779 0.876306
--1.21685 -0.572604 -0.247444 -0.425779 0.904827
--1.12956 -0.531528 -0.209931 -0.425779 0.929776
--1.03245 -0.485831 -0.173354 -0.425779 0.951056
--0.926909 -0.436169 -0.13761 -0.425779 0.968583
--0.814469 -0.383259 -0.102566 -0.425779 0.982287
--0.696757 -0.327868 -0.0680656 -0.425779 0.992115
--0.575484 -0.270802 -0.0339385 -0.425779 0.998027
--0.438154 -0.240877 0 -0.481753 1
--0.31809 -0.174871 0.0296488 -0.481753 0.998027
--0.199758 -0.109818 0.0595491 -0.481753 0.992115
--0.0848625 -0.0466535 0.0899457 -0.481753 0.982287
-0.0249441 0.0137131 0.12107 -0.481753 0.968583
-0.128088 0.0704169 0.153133 -0.481753 0.951057
-0.223099 0.122649 0.18632 -0.481753 0.929777
-0.308629 0.16967 0.220784 -0.481753 0.904827
-0.38348 0.210819 0.256643 -0.481753 0.876307
-0.446614 0.245528 0.293972 -0.481753 0.844328
-0.497176 0.273324 0.332801 -0.481753 0.809017
-0.534501 0.293844 0.373114 -0.481753 0.770513
-0.55813 0.306834 0.414842 -0.481753 0.728969
-0.567811 0.312156 0.457868 -0.481753 0.684547
-0.563505 0.309789 0.502022 -0.481753 0.637424
-0.545389 0.299829 0.547082 -0.481753 0.587785
-0.513845 0.282488 0.592781 -0.481753 0.535827
-0.469464 0.25809 0.6388 -0.481753 0.481754
-0.413028 0.227063 0.684782 -0.481753 0.42578
-0.345499 0.189939 0.730326 -0.481753 0.368125
-0.268007 0.147338 0.775001 -0.481753 0.309017
-0.18183 0.0999616 0.818346 -0.481753 0.24869
-0.0883706 0.0485821 0.859878 -0.481753 0.187382
--0.010861 -0.00597087 0.899099 -0.481753 0.125334
--0.114275 -0.062823 0.935503 -0.481753 0.0627908
--0.220225 -0.121069 0.968583 -0.481753 3.26795e-07
--0.327034 -0.179788 0.997841 -0.481753 -0.0627902
--0.433025 -0.238057 1.02279 -0.481753 -0.125333
--0.53654 -0.294965 1.04298 -0.481753 -0.187381
--0.635972 -0.349628 1.05796 -0.481753 -0.24869
--0.729789 -0.401204 1.06735 -0.481753 -0.309017
--0.816556 -0.448904 1.07081 -0.481753 -0.368124
--0.894959 -0.492007 1.06802 -0.481753 -0.425779
--0.963827 -0.529867 1.05875 -0.481753 -0.481753
--1.02215 -0.561928 1.04282 -0.481753 -0.535826
--1.06908 -0.58773 1.02012 -0.481753 -0.587785
--1.10398 -0.606916 0.990591 -0.481753 -0.637424
--1.12639 -0.619238 0.954266 -0.481753 -0.684547
--1.13607 -0.62456 0.91124 -0.481753 -0.728968
--1.13298 -0.622862 0.861683 -0.481753 -0.770513
--1.11729 -0.614236 0.805837 -0.481753 -0.809017
--1.08938 -0.598889 0.744014 -0.481753 -0.844328
--1.04981 -0.577138 0.676595 -0.481753 -0.876306
--0.999358 -0.549401 0.604022 -0.481753 -0.904827
--0.938957 -0.516195 0.5268 -0.481753 -0.929776
--0.869709 -0.478126 0.445485 -0.481753 -0.951056
--0.792859 -0.435877 0.360685 -0.481753 -0.968583
--0.709774 -0.390201 0.273044 -0.481753 -0.982287
--0.621923 -0.341904 0.183243 -0.481753 -0.992115
--0.530851 -0.291837 0.0919878 -0.481753 -0.998027
--0.438154 -0.240877 9.58138e-07 -0.481753 -1
--0.345458 -0.189917 -0.0919859 -0.481753 -0.998027
--0.254386 -0.13985 -0.183241 -0.481753 -0.992115
--0.166535 -0.0915531 -0.273042 -0.481753 -0.982287
--0.0834499 -0.0458769 -0.360683 -0.481753 -0.968583
--0.00659972 -0.00362822 -0.445484 -0.481753 -0.951057
-0.0626483 0.0344411 -0.526798 -0.481753 -0.929777
-0.12305 0.0676471 -0.60402 -0.481753 -0.904827
-0.173504 0.0953843 -0.676593 -0.481753 -0.876307
-0.21307 0.117136 -0.744013 -0.481753 -0.844328
-0.240985 0.132483 -0.805836 -0.481753 -0.809017
-0.256676 0.141108 -0.861682 -0.481753 -0.770514
-0.259766 0.142807 -0.911239 -0.481753 -0.728969
-0.250085 0.137485 -0.954265 -0.481753 -0.684548
-0.227672 0.125164 -0.99059 -0.481753 -0.637425
-0.192774 0.105978 -1.02012 -0.481753 -0.587786
-0.14584 0.0801761 -1.04282 -0.481753 -0.535828
-0.0875208 0.0481149 -1.05875 -0.481753 -0.481754
-0.0186534 0.0102548 -1.06802 -0.481753 -0.42578
--0.0597496 -0.0328476 -1.07081 -0.481753 -0.368125
--0.146516 -0.0805478 -1.06735 -0.481753 -0.309018
--0.240333 -0.132124 -1.05796 -0.481753 -0.248691
--0.339765 -0.186787 -1.04298 -0.481753 -0.187382
--0.44328 -0.243695 -1.02279 -0.481753 -0.125334
--0.54927 -0.301963 -0.997841 -0.481753 -0.0627915
--0.65608 -0.360683 -0.968584 -0.481753 -9.80385e-07
--0.76203 -0.418929 -0.935503 -0.481753 0.0627895
--0.865444 -0.475781 -0.8991 -0.481753 0.125332
--0.964676 -0.530334 -0.859879 -0.481753 0.18738
--1.05813 -0.581714 -0.818347 -0.481753 0.248689
--1.14431 -0.62909 -0.775002 -0.481753 0.309016
--1.2218 -0.671691 -0.730327 -0.481753 0.368124
--1.28933 -0.708816 -0.684783 -0.481753 0.425778
--1.34577 -0.739842 -0.638801 -0.481753 0.481753
--1.39015 -0.764241 -0.592782 -0.481753 0.535826
--1.4217 -0.781582 -0.547083 -0.481753 0.587784
--1.43981 -0.791542 -0.502022 -0.481753 0.637423
--1.44412 -0.793909 -0.457869 -0.481753 0.684546
--1.43444 -0.788587 -0.414843 -0.481753 0.728968
--1.41081 -0.775597 -0.373114 -0.481753 0.770513
--1.37348 -0.755078 -0.332802 -0.481753 0.809016
--1.32292 -0.727281 -0.293973 -0.481753 0.844327
--1.25979 -0.692573 -0.256644 -0.481753 0.876306
--1.18494 -0.651424 -0.220785 -0.481753 0.904827
--1.09941 -0.604403 -0.18632 -0.481753 0.929776
--1.0044 -0.552171 -0.153133 -0.481753 0.951056
--0.901253 -0.495467 -0.12107 -0.481753 0.968583
--0.791447 -0.435101 -0.0899463 -0.481753 0.982287
--0.676552 -0.371937 -0.0595497 -0.481753 0.992115
--0.55822 -0.306883 -0.0296494 -0.481753 0.998027
--0.422164 -0.267913 0 -0.535826 1
--0.305753 -0.194036 0.0253305 -0.535826 0.998027
--0.191002 -0.121213 0.0509745 -0.535826 0.992115
--0.0795481 -0.0504827 0.0772378 -0.535826 0.982287
-0.0270245 0.0171503 0.104411 -0.535826 0.968583
-0.127206 0.0807272 0.13276 -0.535826 0.951057
-0.219584 0.139352 0.162525 -0.535826 0.929777
-0.302867 0.192205 0.193907 -0.535826 0.904827
-0.375901 0.238554 0.227065 -0.535826 0.876307
-0.437692 0.277767 0.262113 -0.535826 0.844328
-0.487414 0.309322 0.29911 -0.535826 0.809017
-0.524429 0.332812 0.338065 -0.535826 0.770513
-0.548291 0.347955 0.378926 -0.535826 0.728969
-0.558755 0.354596 0.421584 -0.535826 0.684547
-0.55578 0.352708 0.46587 -0.535826 0.637424
-0.539527 0.342394 0.511558 -0.535826 0.587785
-0.510362 0.323885 0.558364 -0.535826 0.535827
-0.468842 0.297536 0.605952 -0.535826 0.481754
-0.415712 0.263818 0.653934 -0.535826 0.42578
-0.351887 0.223314 0.701876 -0.535826 0.368125
-0.278445 0.176706 0.749307 -0.535826 0.309017
-0.196603 0.124768 0.795719 -0.535826 0.24869
-0.1077 0.0683485 0.840581 -0.535826 0.187382
-0.0131772 0.00836249 0.883339 -0.535826 0.125334
--0.0854481 -0.0542269 0.923432 -0.535826 0.0627908
--0.186604 -0.118422 0.960294 -0.535826 3.26795e-07
--0.288689 -0.183207 0.993366 -0.535826 -0.0627902
--0.3901 -0.247564 1.0221 -0.535826 -0.125333
--0.489253 -0.310489 1.04599 -0.535826 -0.187381
--0.584612 -0.371005 1.06453 -0.535826 -0.24869
--0.674711 -0.428184 1.07728 -0.535826 -0.309017
--0.758179 -0.481154 1.08384 -0.535826 -0.368124
--0.833757 -0.529118 1.08387 -0.535826 -0.425779
--0.900325 -0.571363 1.07707 -0.535826 -0.481753
--0.956911 -0.607273 1.06324 -0.535826 -0.535826
--1.00271 -0.636339 1.04223 -0.535826 -0.587785
--1.0371 -0.658165 1.01397 -0.535826 -0.637424
--1.05965 -0.672474 0.978465 -0.535826 -0.684547
--1.07012 -0.679115 0.935807 -0.535826 -0.728968
--1.06845 -0.678061 0.886164 -0.535826 -0.770513
--1.05483 -0.669411 0.829783 -0.535826 -0.809017
--1.02958 -0.653391 0.76699 -0.535826 -0.844328
--0.993267 -0.630345 0.698185 -0.535826 -0.876306
--0.946603 -0.600731 0.62384 -0.535826 -0.904827
--0.890482 -0.565116 0.544491 -0.535826 -0.929776
--0.825951 -0.524164 0.460735 -0.535826 -0.951056
--0.754191 -0.478623 0.373221 -0.535826 -0.968583
--0.676502 -0.429321 0.282645 -0.535826 -0.982287
--0.59428 -0.377141 0.18974 -0.535826 -0.992115
--0.508995 -0.323017 0.0952651 -0.535826 -0.998027
--0.422165 -0.267914 9.92329e-07 -0.535826 -1
--0.335335 -0.21281 -0.0952631 -0.535826 -0.998027
--0.25005 -0.158686 -0.189738 -0.535826 -0.992115
--0.167828 -0.106507 -0.282643 -0.535826 -0.982287
--0.0901389 -0.0572038 -0.373219 -0.535826 -0.968583
--0.0183787 -0.0116635 -0.460733 -0.535826 -0.951057
-0.0461528 0.0292894 -0.544489 -0.535826 -0.929777
-0.102273 0.0649046 -0.623838 -0.535826 -0.904827
-0.148937 0.0945184 -0.698184 -0.535826 -0.876307
-0.185253 0.117565 -0.766989 -0.535826 -0.844328
-0.210497 0.133585 -0.829782 -0.535826 -0.809017
-0.224126 0.142234 -0.886163 -0.535826 -0.770514
-0.225787 0.143289 -0.935806 -0.535826 -0.728969
-0.215324 0.136648 -0.978464 -0.535826 -0.684548
-0.192776 0.122339 -1.01397 -0.535826 -0.637425
-0.158384 0.100514 -1.04223 -0.535826 -0.587786
-0.112584 0.0714476 -1.06324 -0.535826 -0.535828
-0.0559979 0.0355373 -1.07707 -0.535826 -0.481754
--0.0105694 -0.00670752 -1.08387 -0.535826 -0.42578
--0.0861479 -0.0546711 -1.08384 -0.535826 -0.368125
--0.169615 -0.107641 -1.07728 -0.535826 -0.309018
--0.259715 -0.16482 -1.06453 -0.535826 -0.248691
--0.355073 -0.225336 -1.04599 -0.535826 -0.187382
--0.454226 -0.28826 -1.0221 -0.535826 -0.125334
--0.555637 -0.352617 -0.993366 -0.535826 -0.0627915
--0.657722 -0.417403 -0.960294 -0.535826 -9.80385e-07
--0.758878 -0.481598 -0.923433 -0.535826 0.0627895
--0.857504 -0.544187 -0.88334 -0.535826 0.125332
--0.952027 -0.604173 -0.840582 -0.535826 0.18738
--1.04093 -0.660593 -0.79572 -0.535826 0.248689
--1.12277 -0.712531 -0.749308 -0.535826 0.309016
--1.19621 -0.759139 -0.701877 -0.535826 0.368124
--1.26004 -0.799644 -0.653935 -0.535826 0.425778
--1.31317 -0.833361 -0.605953 -0.535826 0.481753
--1.35469 -0.859711 -0.558365 -0.535826 0.535826
--1.38386 -0.87822 -0.511559 -0.535826 0.587784
--1.40011 -0.888534 -0.465871 -0.535826 0.637423
--1.40308 -0.890422 -0.421585 -0.535826 0.684546
--1.39262 -0.883782 -0.378927 -0.535826 0.728968
--1.36876 -0.868639 -0.338066 -0.535826 0.770513
--1.33174 -0.845149 -0.299111 -0.535826 0.809016
--1.28202 -0.813594 -0.262113 -0.535826 0.844327
--1.22023 -0.774381 -0.227066 -0.535826 0.876306
--1.1472 -0.728032 -0.193908 -0.535826 0.904827
--1.06391 -0.675179 -0.162526 -0.535826 0.929776
--0.971536 -0.616555 -0.132761 -0.535826 0.951056
--0.871355 -0.552978 -0.104411 -0.535826 0.968583
--0.764782 -0.485345 -0.0772383 -0.535826 0.982287
--0.653329 -0.414614 -0.0509751 -0.535826 0.992115
--0.538578 -0.341791 -0.0253311 -0.535826 0.998027
--0.404509 -0.293892 0 -0.587785 1
--0.292377 -0.212424 0.0209873 -0.587785 0.998027
--0.181828 -0.132106 0.0423497 -0.587785 0.992115
--0.0744206 -0.0540696 0.0644536 -0.587785 0.982287
-0.0283352 0.0205867 0.0876483 -0.587785 0.968583
-0.125 0.0908176 0.112257 -0.587785 0.951057
-0.214227 0.155645 0.138571 -0.587785 0.929777
-0.294785 0.214174 0.166839 -0.587785 0.904827
-0.365573 0.265604 0.197264 -0.587785 0.876307
-0.425641 0.309246 0.229995 -0.587785 0.844328
-0.474201 0.344526 0.265125 -0.587785 0.809017
-0.51064 0.371001 0.302683 -0.587785 0.770513
-0.534531 0.388359 0.342636 -0.587785 0.728969
-0.545636 0.396427 0.384883 -0.587785 0.684547
-0.543912 0.395175 0.429259 -0.587785 0.637424
-0.529509 0.38471 0.475529 -0.587785 0.587785
-0.502767 0.365281 0.523397 -0.587785 0.535827
-0.464212 0.337269 0.572506 -0.587785 0.481754
-0.414547 0.301186 0.62244 -0.587785 0.42578
-0.354641 0.257661 0.672733 -0.587785 0.368125
-0.28551 0.207435 0.722873 -0.587785 0.309017
-0.208309 0.151345 0.772307 -0.587785 0.24869
-0.124306 0.0903136 0.820454 -0.587785 0.187382
-0.0348676 0.0253327 0.866708 -0.587785 0.125334
--0.0585677 -0.0425518 0.91045 -0.587785 0.0627908
--0.154508 -0.112257 0.951056 -0.587785 3.26795e-07
--0.251436 -0.182678 0.98791 -0.587785 -0.0627902
--0.347827 -0.252711 1.02041 -0.587785 -0.125333
--0.442179 -0.321262 1.04797 -0.587785 -0.187381
--0.533034 -0.387271 1.07005 -0.587785 -0.24869
--0.618999 -0.449728 1.08614 -0.587785 -0.309017
--0.698769 -0.507685 1.09581 -0.587785 -0.368124
--0.771151 -0.560273 1.09864 -0.587785 -0.425779
--0.835076 -0.606717 1.09433 -0.587785 -0.481753
--0.88962 -0.646346 1.08261 -0.587785 -0.535826
--0.934018 -0.678602 1.06331 -0.587785 -0.587785
--0.967673 -0.703055 1.03635 -0.587785 -0.637424
--0.99017 -0.719399 1.0017 -0.587785 -0.684547
--1.00128 -0.727468 0.95945 -0.587785 -0.728968
--1.00095 -0.727228 0.90977 -0.587785 -0.770513
--0.989326 -0.718786 0.85291 -0.587785 -0.809017
--0.966746 -0.702381 0.789209 -0.587785 -0.844328
--0.933715 -0.678382 0.719087 -0.587785 -0.876306
--0.890914 -0.647286 0.643042 -0.587785 -0.904827
--0.839183 -0.609701 0.561645 -0.587785 -0.929776
--0.77951 -0.566346 0.475529 -0.587785 -0.951056
--0.713009 -0.51803 0.385389 -0.587785 -0.968583
--0.640907 -0.465645 0.291968 -0.587785 -0.982287
--0.564524 -0.41015 0.196049 -0.587785 -0.992115
--0.485246 -0.352551 0.0984484 -0.587785 -0.998027
--0.40451 -0.293893 1.02554e-06 -0.587785 -1
--0.323773 -0.235235 -0.0984464 -0.587785 -0.998027
--0.244496 -0.177636 -0.196047 -0.587785 -0.992115
--0.168112 -0.12214 -0.291966 -0.587785 -0.982287
--0.0960103 -0.0697555 -0.385387 -0.587785 -0.968583
--0.0295091 -0.0214396 -0.475527 -0.587785 -0.951057
-0.0301647 0.0219159 -0.561643 -0.587785 -0.929777
-0.0818953 0.0595004 -0.643041 -0.587785 -0.904827
-0.124696 0.0905971 -0.719086 -0.587785 -0.876307
-0.157728 0.114596 -0.789207 -0.587785 -0.844328
-0.180308 0.131001 -0.852909 -0.587785 -0.809017
-0.191928 0.139444 -0.909769 -0.587785 -0.770514
-0.192258 0.139683 -0.959449 -0.587785 -0.728969
-0.181153 0.131615 -1.0017 -0.587785 -0.684548
-0.158656 0.11527 -1.03634 -0.587785 -0.637425
-0.125001 0.0908183 -1.06331 -0.587785 -0.587786
-0.0806034 0.0585617 -1.08261 -0.587785 -0.535828
-0.0260596 0.0189333 -1.09433 -0.587785 -0.481754
--0.037865 -0.0275105 -1.09864 -0.587785 -0.42578
--0.110246 -0.0800986 -1.09581 -0.587785 -0.368125
--0.190017 -0.138055 -1.08614 -0.587785 -0.309018
--0.275981 -0.200512 -1.07005 -0.587785 -0.248691
--0.366836 -0.266522 -1.04797 -0.587785 -0.187382
--0.461188 -0.335072 -1.02041 -0.587785 -0.125334
--0.55758 -0.405105 -0.987911 -0.587785 -0.0627915
--0.654507 -0.475526 -0.951057 -0.587785 -9.80385e-07
--0.750448 -0.545231 -0.910451 -0.587785 0.0627895
--0.843883 -0.613116 -0.866709 -0.587785 0.125332
--0.933322 -0.678097 -0.820455 -0.587785 0.18738
--1.01732 -0.739128 -0.772308 -0.587785 0.248689
--1.09453 -0.795218 -0.722874 -0.587785 0.309016
--1.16366 -0.845445 -0.672735 -0.587785 0.368124
--1.22356 -0.88897 -0.622441 -0.587785 0.425778
--1.27323 -0.925053 -0.572507 -0.587785 0.481753
--1.31178 -0.953065 -0.523398 -0.587785 0.535826
--1.33853 -0.972494 -0.47553 -0.587785 0.587784
--1.35293 -0.982959 -0.429259 -0.587785 0.637423
--1.35465 -0.984212 -0.384884 -0.587785 0.684546
--1.34355 -0.976144 -0.342637 -0.587785 0.728968
--1.31966 -0.958786 -0.302684 -0.587785 0.770513
--1.28322 -0.932312 -0.265125 -0.587785 0.809016
--1.23466 -0.897031 -0.229996 -0.587785 0.844327
--1.17459 -0.85339 -0.197264 -0.587785 0.876306
--1.1038 -0.801959 -0.166839 -0.587785 0.904827
--1.02325 -0.743431 -0.138571 -0.587785 0.929776
--0.934019 -0.678604 -0.112258 -0.587785 0.951056
--0.837355 -0.608373 -0.0876488 -0.587785 0.968583
--0.734599 -0.533717 -0.0644541 -0.587785 0.982287
--0.627192 -0.455681 -0.0423501 -0.587785 0.992115
--0.516643 -0.375362 -0.0209877 -0.587785 0.998027
--0.385257 -0.318712 0 -0.637423 1
--0.278007 -0.229987 0.0166233 -0.637423 0.998027
--0.172254 -0.142501 0.033683 -0.637423 0.992115
--0.0694739 -0.0574737 0.0516059 -0.637423 0.982287
-0.0289045 0.0239119 0.0707995 -0.637423 0.968583
-0.121519 0.100529 0.0916432 -0.637423 0.951057
-0.207095 0.171323 0.11448 -0.637423 0.929777
-0.284465 0.235329 0.139606 -0.637423 0.904827
-0.352587 0.291685 0.167267 -0.637423 0.876307
-0.41056 0.339644 0.19765 -0.637423 0.844328
-0.457636 0.378589 0.230877 -0.637423 0.809017
-0.493233 0.408037 0.267002 -0.637423 0.770513
-0.516942 0.427651 0.306008 -0.637423 0.728969
-0.528536 0.437243 0.347803 -0.637423 0.684547
-0.527969 0.436773 0.392223 -0.637423 0.637424
-0.515378 0.426357 0.43903 -0.637423 0.587785
-0.491079 0.406256 0.487913 -0.637423 0.535827
-0.455566 0.376877 0.538494 -0.637423 0.481754
-0.409497 0.338765 0.590333 -0.637423 0.42578
-0.353687 0.292595 0.642927 -0.637423 0.368125
-0.289093 0.239158 0.695726 -0.637423 0.309017
-0.216798 0.179351 0.748133 -0.637423 0.24869
-0.137999 0.114162 0.799517 -0.637423 0.187382
-0.053978 0.0446544 0.849221 -0.637423 0.125334
--0.0339077 -0.0280509 0.896569 -0.637423 0.0627908
--0.124254 -0.102792 0.940881 -0.637423 3.26795e-07
--0.215631 -0.178385 0.981479 -0.637423 -0.0627902
--0.306603 -0.253644 1.0177 -0.637423 -0.125333
--0.395754 -0.327395 1.04891 -0.637423 -0.187381
--0.481707 -0.398502 1.07451 -0.637423 -0.24869
--0.563151 -0.465878 1.09394 -0.637423 -0.309017
--0.638853 -0.528505 1.10669 -0.637423 -0.368124
--0.707687 -0.585449 1.11234 -0.637423 -0.425779
--0.768644 -0.635877 1.11051 -0.637423 -0.481753
--0.82085 -0.679065 1.10091 -0.637423 -0.535826
--0.863581 -0.714415 1.08335 -0.637423 -0.587785
--0.896272 -0.741459 1.0577 -0.637423 -0.637424
--0.918526 -0.759869 1.02394 -0.637423 -0.684547
--0.93012 -0.769461 0.982147 -0.637423 -0.728968
--0.931009 -0.770196 0.932478 -0.637423 -0.770513
--0.921323 -0.762184 0.875195 -0.637423 -0.809017
--0.90137 -0.745677 0.810649 -0.637423 -0.844328
--0.871624 -0.721069 0.739279 -0.637423 -0.876306
--0.832721 -0.688885 0.66161 -0.637423 -0.904827
--0.785447 -0.649777 0.578244 -0.637423 -0.929776
--0.730725 -0.604507 0.489854 -0.637423 -0.951056
--0.669602 -0.553942 0.397177 -0.637423 -0.968583
--0.603227 -0.499032 0.301002 -0.637423 -0.982287
--0.532836 -0.4408 0.202165 -0.637423 -0.992115
--0.459731 -0.380322 0.101535 -0.637423 -0.998027
--0.385258 -0.318712 1.05774e-06 -0.637423 -1
--0.310784 -0.257103 -0.101532 -0.637423 -0.998027
--0.237679 -0.196625 -0.202163 -0.637423 -0.992115
--0.167288 -0.138393 -0.301 -0.637423 -0.982287
--0.100913 -0.0834825 -0.397175 -0.637423 -0.968583
--0.0397898 -0.0329169 -0.489852 -0.637423 -0.951057
-0.0149317 0.0123526 -0.578242 -0.637423 -0.929777
-0.062206 0.0514612 -0.661608 -0.637423 -0.904827
-0.101109 0.0836449 -0.739278 -0.637423 -0.876307
-0.130856 0.108253 -0.810647 -0.637423 -0.844328
-0.150809 0.12476 -0.875194 -0.637423 -0.809017
-0.160495 0.132773 -0.932477 -0.637423 -0.770514
-0.159606 0.132038 -0.982146 -0.637423 -0.728969
-0.148012 0.122446 -1.02394 -0.637423 -0.684548
-0.125759 0.104036 -1.0577 -0.637423 -0.637425
-0.0930682 0.0769926 -1.08335 -0.637423 -0.587786
-0.0503375 0.0416427 -1.10091 -0.637423 -0.535828
--0.00186844 -0.0015457 -1.11051 -0.637423 -0.481754
--0.062825 -0.0519733 -1.11234 -0.637423 -0.42578
--0.131659 -0.108918 -1.10669 -0.637423 -0.368125
--0.207362 -0.171544 -1.09394 -0.637423 -0.309018
--0.288805 -0.23892 -1.07451 -0.637423 -0.248691
--0.374758 -0.310026 -1.04891 -0.637423 -0.187382
--0.463909 -0.383778 -1.0177 -0.637423 -0.125334
--0.554881 -0.459036 -0.98148 -0.637423 -0.0627915
--0.646257 -0.53463 -0.940882 -0.637423 -9.80385e-07
--0.736604 -0.609371 -0.89657 -0.637423 0.0627895
--0.82449 -0.682076 -0.849222 -0.637423 0.125332
--0.908511 -0.751584 -0.799519 -0.637423 0.18738
--0.987311 -0.816773 -0.748134 -0.637423 0.248689
--1.05961 -0.87658 -0.695727 -0.637423 0.309016
--1.1242 -0.930017 -0.642928 -0.637423 0.368124
--1.18001 -0.976188 -0.590334 -0.637423 0.425778
--1.22608 -1.0143 -0.538496 -0.637423 0.481753
--1.26159 -1.04368 -0.487914 -0.637423 0.535826
--1.28589 -1.06378 -0.439031 -0.637423 0.587784
--1.29848 -1.0742 -0.392224 -0.637423 0.637423
--1.29905 -1.07467 -0.347804 -0.637423 0.684546
--1.28746 -1.06507 -0.306009 -0.637423 0.728968
--1.26375 -1.04546 -0.267003 -0.637423 0.770513
--1.22815 -1.01601 -0.230878 -0.637423 0.809016
--1.18107 -0.977068 -0.197651 -0.637423 0.844327
--1.1231 -0.929109 -0.167268 -0.637423 0.876306
--1.05498 -0.872754 -0.139606 -0.637423 0.904827
--0.97761 -0.808748 -0.11448 -0.637423 0.929776
--0.892034 -0.737954 -0.0916437 -0.637423 0.951056
--0.79942 -0.661337 -0.0707999 -0.637423 0.968583
--0.701042 -0.579951 -0.0516063 -0.637423 0.982287
--0.598262 -0.494924 -0.0336834 -0.637423 0.992115
--0.492509 -0.407438 -0.0166237 -0.637423 0.998027
--0.364485 -0.342273 0 -0.684547 1
--0.262687 -0.246679 0.012243 -0.684547 0.998027
--0.162295 -0.152405 0.0249831 -0.684547 0.992115
--0.0646937 -0.0607514 0.0387072 -0.684547 0.982287
-0.0287738 0.0270204 0.0538809 -0.684547 0.968583
-0.116829 0.109709 0.0709388 -0.684547 0.951057
-0.198273 0.186191 0.0902752 -0.684547 0.929777
-0.272011 0.255435 0.112235 -0.684547 0.904827
-0.337062 0.316522 0.137106 -0.684547 0.876307
-0.392577 0.368654 0.16511 -0.684547 0.844328
-0.437854 0.411171 0.196402 -0.684547 0.809017
-0.472342 0.443558 0.231058 -0.684547 0.770513
-0.495655 0.465451 0.269078 -0.684547 0.728969
-0.507576 0.476645 0.31038 -0.684547 0.684547
-0.508057 0.477096 0.354801 -0.684547 0.637424
-0.497222 0.466922 0.402098 -0.684547 0.587785
-0.475364 0.446396 0.451947 -0.684547 0.535827
-0.442941 0.415948 0.503952 -0.684547 0.481754
-0.400564 0.376154 0.557642 -0.684547 0.42578
-0.348994 0.327726 0.612486 -0.684547 0.368125
-0.289121 0.271502 0.667892 -0.684547 0.309017
-0.221958 0.208433 0.723221 -0.684547 0.24869
-0.148621 0.139564 0.777792 -0.684547 0.187382
-0.0703076 0.0660231 0.830896 -0.684547 0.125334
--0.0117144 -0.0110005 0.881803 -0.684547 0.0627908
--0.096133 -0.0902747 0.929776 -0.684547 3.26795e-07
--0.181611 -0.170543 0.97408 -0.684547 -0.0627902
--0.266806 -0.250547 1.01399 -0.684547 -0.125333
--0.350393 -0.32904 1.04882 -0.684547 -0.187381
--0.431086 -0.404816 1.07791 -0.684547 -0.24869
--0.507655 -0.476719 1.10065 -0.684547 -0.309017
--0.578949 -0.543668 1.11648 -0.684547 -0.368124
--0.64391 -0.604671 1.12493 -0.684547 -0.425779
--0.701594 -0.658839 1.12559 -0.684547 -0.481753
--0.75118 -0.705404 1.11813 -0.684547 -0.535826
--0.791989 -0.743726 1.10231 -0.684547 -0.587785
--0.823489 -0.773307 1.07801 -0.684547 -0.637424
--0.845306 -0.793794 1.04518 -0.684547 -0.684547
--0.857227 -0.804988 1.00387 -0.684547 -0.728968
--0.859204 -0.806845 0.954266 -0.684547 -0.770513
--0.851358 -0.799477 0.896616 -0.684547 -0.809017
--0.833967 -0.783146 0.831289 -0.684547 -0.844328
--0.807473 -0.758266 0.758741 -0.684547 -0.876306
--0.772464 -0.725391 0.679525 -0.684547 -0.904827
--0.72967 -0.685204 0.594273 -0.684547 -0.929776
--0.679948 -0.638513 0.503696 -0.684547 -0.951056
--0.624271 -0.586229 0.408572 -0.684547 -0.968583
--0.563708 -0.529356 0.309739 -0.684547 -0.982287
--0.499409 -0.468975 0.208082 -0.684547 -0.992115
--0.432584 -0.406222 0.10452 -0.684547 -0.998027
--0.364485 -0.342274 1.0889e-06 -0.684547 -1
--0.296387 -0.278326 -0.104518 -0.684547 -0.998027
--0.229562 -0.215573 -0.20808 -0.684547 -0.992115
--0.165262 -0.155191 -0.309737 -0.684547 -0.982287
--0.104699 -0.0983189 -0.40857 -0.684547 -0.968583
--0.0490221 -0.0460347 -0.503694 -0.684547 -0.951057
-0.00069953 0.000656901 -0.594271 -0.684547 -0.929777
-0.0434939 0.0408434 -0.679523 -0.684547 -0.904827
-0.0785032 0.0737193 -0.75874 -0.684547 -0.876307
-0.104998 0.0985993 -0.831287 -0.684547 -0.844328
-0.122388 0.11493 -0.896615 -0.684547 -0.809017
-0.130235 0.122299 -0.954265 -0.684547 -0.770514
-0.128258 0.120442 -1.00387 -0.684547 -0.728969
-0.116337 0.109248 -1.04518 -0.684547 -0.684548
-0.0945208 0.0887608 -1.07801 -0.684547 -0.637425
-0.0630209 0.0591805 -1.10231 -0.684547 -0.587786
-0.022212 0.0208584 -1.11812 -0.684547 -0.535828
--0.0273744 -0.0257063 -1.12559 -0.684547 -0.481754
--0.0850578 -0.0798745 -1.12493 -0.684547 -0.42578
--0.150019 -0.140877 -1.11648 -0.684547 -0.368125
--0.221312 -0.207826 -1.10065 -0.684547 -0.309018
--0.297882 -0.279729 -1.07791 -0.684547 -0.248691
--0.378574 -0.355504 -1.04882 -0.684547 -0.187382
--0.462162 -0.433998 -1.01399 -0.684547 -0.125334
--0.547357 -0.514001 -0.974081 -0.684547 -0.0627915
--0.632834 -0.59427 -0.929777 -0.684547 -9.80385e-07
--0.717253 -0.673544 -0.881805 -0.684547 0.0627895
--0.799275 -0.750568 -0.830897 -0.684547 0.125332
--0.877588 -0.824109 -0.777793 -0.684547 0.18738
--0.950926 -0.892978 -0.723222 -0.684547 0.248689
--1.01809 -0.956048 -0.667893 -0.684547 0.309016
--1.07796 -1.01227 -0.612487 -0.684547 0.368124
--1.12953 -1.0607 -0.557643 -0.684547 0.425778
--1.17191 -1.10049 -0.503953 -0.684547 0.481753
--1.20433 -1.13094 -0.451949 -0.684547 0.535826
--1.22619 -1.15147 -0.402099 -0.684547 0.587784
--1.23703 -1.16164 -0.354802 -0.684547 0.637423
--1.23655 -1.16119 -0.310381 -0.684547 0.684546
--1.22463 -1.15 -0.269079 -0.684547 0.728968
--1.20131 -1.12811 -0.231059 -0.684547 0.770513
--1.16682 -1.09572 -0.196403 -0.684547 0.809016
--1.12155 -1.0532 -0.165111 -0.684547 0.844327
--1.06603 -1.00107 -0.137106 -0.684547 0.876306
--1.00098 -0.939983 -0.112236 -0.684547 0.904827
--0.927244 -0.870739 -0.0902757 -0.684547 0.929776
--0.8458 -0.794257 -0.0709392 -0.684547 0.951056
--0.757745 -0.711569 -0.0538812 -0.684547 0.968583
--0.664277 -0.623797 -0.0387075 -0.684547 0.982287
--0.566677 -0.532144 -0.0249834 -0.684547 0.992115
--0.466285 -0.43787 -0.0122432 -0.684547 0.998027
--0.342274 -0.364484 0 -0.728968 1
--0.246463 -0.262456 0.00785052 -0.728968 0.998027
--0.151961 -0.161822 0.0162586 -0.728968 0.992115
--0.0600581 -0.0639553 0.0257703 -0.728968 0.982287
-0.0279968 0.0298135 0.0369091 -0.728968 0.968583
-0.111012 0.118215 0.0501644 -0.728968 0.951057
-0.187871 0.200062 0.0659819 -0.728968 0.929777
-0.257554 0.274266 0.0847535 -0.728968 0.904827
-0.319145 0.339854 0.106809 -0.728968 0.876307
-0.371854 0.395984 0.132408 -0.728968 0.844328
-0.415023 0.441954 0.161733 -0.728968 0.809017
-0.448139 0.477219 0.194886 -0.728968 0.770513
-0.470839 0.501391 0.231882 -0.728968 0.728969
-0.482915 0.514252 0.272651 -0.728968 0.684547
-0.484322 0.515749 0.317029 -0.728968 0.637424
-0.475169 0.506003 0.364769 -0.728968 0.587785
-0.455725 0.485298 0.415536 -0.728968 0.535827
-0.426411 0.454081 0.468912 -0.728968 0.481754
-0.387791 0.412955 0.524402 -0.728968 0.42578
-0.340566 0.362665 0.58144 -0.728968 0.368125
-0.285561 0.304091 0.639399 -0.728968 0.309017
-0.223712 0.238229 0.697594 -0.728968 0.24869
-0.156051 0.166177 0.755299 -0.728968 0.187382
-0.0836878 0.0891183 0.811751 -0.728968 0.125334
-0.00779671 0.00830263 0.866168 -0.728968 0.0627908
--0.070407 -0.0749757 0.917755 -0.728968 3.26795e-07
--0.149684 -0.159397 0.965719 -0.728968 -0.0627902
--0.228789 -0.243636 1.00928 -0.728968 -0.125333
--0.306496 -0.326384 1.0477 -0.728968 -0.187381
--0.381608 -0.406371 1.08025 -0.728968 -0.24869
--0.452987 -0.482382 1.10627 -0.728968 -0.309017
--0.519563 -0.553278 1.12517 -0.728968 -0.368124
--0.580354 -0.618013 1.13642 -0.728968 -0.425779
--0.634482 -0.675653 1.13956 -0.728968 -0.481753
--0.681184 -0.725386 1.13424 -0.728968 -0.535826
--0.719827 -0.766537 1.12019 -0.728968 -0.587785
--0.749916 -0.798578 1.09726 -0.728968 -0.637424
--0.771099 -0.821136 1.06538 -0.728968 -0.684547
--0.783176 -0.833996 1.02461 -0.728968 -0.728968
--0.786099 -0.837109 0.975112 -0.728968 -0.770513
--0.779973 -0.830586 0.917153 -0.728968 -0.809017
--0.765056 -0.8147 0.851108 -0.728968 -0.844328
--0.741748 -0.78988 0.777455 -0.728968 -0.876306
--0.710592 -0.756702 0.696769 -0.728968 -0.904827
--0.672258 -0.715881 0.609715 -0.728968 -0.929776
--0.627537 -0.668258 0.51704 -0.728968 -0.951056
--0.577324 -0.614787 0.419565 -0.728968 -0.968583
--0.522605 -0.556517 0.318171 -0.728968 -0.982287
--0.464439 -0.494577 0.213793 -0.728968 -0.992115
--0.403944 -0.430156 0.107403 -0.728968 -0.998027
--0.342274 -0.364485 1.11898e-06 -0.728968 -1
--0.280605 -0.298813 -0.107401 -0.728968 -0.998027
--0.22011 -0.234393 -0.213791 -0.728968 -0.992115
--0.161944 -0.172453 -0.318169 -0.728968 -0.982287
--0.107225 -0.114182 -0.419562 -0.728968 -0.968583
--0.0570115 -0.0607109 -0.517038 -0.728968 -0.951057
--0.0122904 -0.0130879 -0.609713 -0.728968 -0.929777
-0.0260432 0.0277332 -0.696767 -0.728968 -0.904827
-0.0571996 0.0609113 -0.777454 -0.728968 -0.876307
-0.0805074 0.0857316 -0.851107 -0.728968 -0.844328
-0.0954253 0.101617 -0.917152 -0.728968 -0.809017
-0.101551 0.108141 -0.975111 -0.728968 -0.770514
-0.0986281 0.105028 -1.02461 -0.728968 -0.728969
-0.0865515 0.0921678 -1.06538 -0.728968 -0.684548
-0.0653688 0.0696106 -1.09725 -0.728968 -0.637425
-0.0352804 0.0375697 -1.12019 -0.728968 -0.587786
--0.00336285 -0.00358107 -1.13424 -0.728968 -0.535828
--0.0500651 -0.0533138 -1.13956 -0.728968 -0.481754
--0.104193 -0.110954 -1.13642 -0.728968 -0.42578
--0.164983 -0.175689 -1.12517 -0.728968 -0.368125
--0.231559 -0.246585 -1.10627 -0.728968 -0.309018
--0.302938 -0.322595 -1.08025 -0.728968 -0.248691
--0.378051 -0.402582 -1.0477 -0.728968 -0.187382
--0.455757 -0.485331 -1.00929 -0.728968 -0.125334
--0.534862 -0.56957 -0.96572 -0.728968 -0.0627915
--0.614139 -0.653991 -0.917756 -0.728968 -9.80385e-07
--0.692343 -0.737269 -0.866169 -0.728968 0.0627895
--0.768234 -0.818085 -0.811752 -0.728968 0.125332
--0.840597 -0.895143 -0.7553 -0.728968 0.18738
--0.908258 -0.967195 -0.697596 -0.728968 0.248689
--0.970107 -1.03306 -0.6394 -0.728968 0.309016
--1.02511 -1.09163 -0.581442 -0.728968 0.368124
--1.07234 -1.14192 -0.524403 -0.728968 0.425778
--1.11096 -1.18305 -0.468913 -0.728968 0.481753
--1.14027 -1.21427 -0.415537 -0.728968 0.535826
--1.15972 -1.23497 -0.36477 -0.728968 0.587784
--1.16887 -1.24472 -0.31703 -0.728968 0.637423
--1.16746 -1.24322 -0.272651 -0.728968 0.684546
--1.15539 -1.23036 -0.231883 -0.728968 0.728968
--1.13269 -1.20619 -0.194887 -0.728968 0.770513
--1.09957 -1.17092 -0.161734 -0.728968 0.809016
--1.0564 -1.12495 -0.132408 -0.728968 0.844327
--1.00369 -1.06882 -0.106809 -0.728968 0.876306
--0.942103 -1.00324 -0.084754 -0.728968 0.904827
--0.872421 -0.929032 -0.0659822 -0.728968 0.929776
--0.795561 -0.847185 -0.0501647 -0.728968 0.951056
--0.712546 -0.758783 -0.0369093 -0.728968 0.968583
--0.624491 -0.665015 -0.0257706 -0.728968 0.982287
--0.532588 -0.567148 -0.0162588 -0.728968 0.992115
--0.438087 -0.466514 -0.00785068 -0.728968 0.998027
--0.318712 -0.385256 0 -0.770513 1
--0.229384 -0.277277 0.00345032 -0.770513 0.998027
--0.141262 -0.170757 0.00751801 -0.770513 0.992115
--0.0555375 -0.0671332 0.012808 -0.770513 0.982287
-0.0266384 0.0322002 0.0199008 -0.770513 0.968583
-0.104166 0.125915 0.0293404 -0.770513 0.951057
-0.176016 0.212767 0.0416234 -0.770513 0.929777
-0.241246 0.291615 0.0571884 -0.770513 0.904827
-0.29901 0.361441 0.0764068 -0.770513 0.876307
-0.348579 0.421359 0.0995743 -0.770513 0.844328
-0.389344 0.470636 0.126904 -0.770513 0.809017
-0.420829 0.508694 0.158521 -0.770513 0.770513
-0.442696 0.535127 0.194458 -0.770513 0.728969
-0.454752 0.5497 0.234652 -0.770513 0.684547
-0.45695 0.552356 0.278944 -0.770513 0.637424
-0.449387 0.543215 0.327081 -0.770513 0.587785
-0.432307 0.522569 0.378714 -0.770513 0.535827
-0.406093 0.490881 0.433409 -0.770513 0.481754
-0.37126 0.448776 0.490644 -0.770513 0.42578
-0.32845 0.397027 0.549821 -0.770513 0.368125
-0.278417 0.336548 0.610275 -0.770513 0.309017
-0.222019 0.268375 0.67128 -0.770513 0.24869
-0.160202 0.19365 0.73206 -0.770513 0.187382
-0.0939841 0.113607 0.791805 -0.770513 0.125334
-0.0244415 0.0295447 0.849677 -0.770513 0.0627908
--0.04731 -0.0571878 0.904827 -0.770513 3.26795e-07
--0.120133 -0.145215 0.956406 -0.770513 -0.0627902
--0.192884 -0.233157 1.00358 -0.770513 -0.125333
--0.264436 -0.319648 1.04554 -0.770513 -0.187381
--0.333692 -0.403364 1.08152 -0.770513 -0.24869
--0.399604 -0.483037 1.11081 -0.770513 -0.309017
--0.461188 -0.557479 1.13275 -0.770513 -0.368124
--0.517541 -0.625598 1.14678 -0.770513 -0.425779
--0.567855 -0.686417 1.1524 -0.770513 -0.481753
--0.611427 -0.739087 1.14923 -0.770513 -0.535826
--0.647674 -0.782902 1.13696 -0.770513 -0.587785
--0.676136 -0.817307 1.11542 -0.770513 -0.637424
--0.69649 -0.84191 1.08453 -0.770513 -0.684547
--0.708546 -0.856483 1.04434 -0.770513 -0.728968
--0.712257 -0.86097 0.994996 -0.770513 -0.770513
--0.707717 -0.855481 0.936784 -0.770513 -0.809017
--0.695155 -0.840297 0.870088 -0.770513 -0.844328
--0.674938 -0.815858 0.795402 -0.770513 -0.876306
--0.647556 -0.782759 0.713326 -0.770513 -0.904827
--0.613622 -0.74174 0.624556 -0.770513 -0.929776
--0.573855 -0.693671 0.529874 -0.770513 -0.951056
--0.529074 -0.639539 0.430143 -0.770513 -0.968583
--0.480176 -0.580433 0.326288 -0.770513 -0.982287
--0.428131 -0.517521 0.219293 -0.770513 -0.992115
--0.373958 -0.452037 0.11018 -0.770513 -0.998027
--0.318713 -0.385257 1.14796e-06 -0.770513 -1
--0.263467 -0.318477 -0.110178 -0.770513 -0.998027
--0.209294 -0.252993 -0.219291 -0.770513 -0.992115
--0.157249 -0.190081 -0.326286 -0.770513 -0.982287
--0.108352 -0.130975 -0.430141 -0.770513 -0.968583
--0.0635701 -0.0768429 -0.529872 -0.770513 -0.951057
--0.0238037 -0.0287736 -0.624554 -0.770513 -0.929777
-0.0101306 0.0122457 -0.713324 -0.770513 -0.904827
-0.0375124 0.0453446 -0.7954 -0.770513 -0.876307
-0.0577303 0.0697839 -0.870086 -0.770513 -0.844328
-0.0702921 0.0849684 -0.936783 -0.770513 -0.809017
-0.0748327 0.0904571 -0.994995 -0.770513 -0.770514
-0.0711214 0.0859709 -1.04434 -0.770513 -0.728969
-0.0590654 0.0713977 -1.08453 -0.770513 -0.684548
-0.0387124 0.0467951 -1.11542 -0.770513 -0.637425
-0.0102499 0.01239 -1.13696 -0.770513 -0.587786
--0.0259967 -0.0314246 -1.14923 -0.770513 -0.535828
--0.0695691 -0.0840945 -1.1524 -0.770513 -0.481754
--0.119883 -0.144913 -1.14678 -0.770513 -0.42578
--0.176236 -0.213032 -1.13275 -0.770513 -0.368125
--0.237819 -0.287474 -1.11081 -0.770513 -0.309018
--0.303731 -0.367147 -1.08152 -0.770513 -0.248691
--0.372987 -0.450863 -1.04554 -0.770513 -0.187382
--0.444539 -0.537354 -1.00358 -0.770513 -0.125334
--0.517291 -0.625296 -0.956407 -0.770513 -0.0627915
--0.590113 -0.713323 -0.904828 -0.770513 -9.80385e-07
--0.661865 -0.800056 -0.849678 -0.770513 0.0627895
--0.731407 -0.884118 -0.791806 -0.770513 0.125332
--0.797625 -0.964162 -0.732062 -0.770513 0.18738
--0.859443 -1.03889 -0.671281 -0.770513 0.248689
--0.915841 -1.10706 -0.610276 -0.770513 0.309016
--0.965874 -1.16754 -0.549822 -0.770513 0.368124
--1.00868 -1.21929 -0.490645 -0.770513 0.425778
--1.04352 -1.26139 -0.43341 -0.770513 0.481753
--1.06973 -1.29308 -0.378716 -0.770513 0.535826
--1.08681 -1.31373 -0.327082 -0.770513 0.587784
--1.09437 -1.32287 -0.278945 -0.770513 0.637423
--1.09218 -1.32021 -0.234653 -0.770513 0.684546
--1.08012 -1.30564 -0.194459 -0.770513 0.728968
--1.05825 -1.27921 -0.158522 -0.770513 0.770513
--1.02677 -1.24115 -0.126905 -0.770513 0.809016
--0.986005 -1.19187 -0.0995749 -0.770513 0.844327
--0.936436 -1.13195 -0.0764072 -0.770513 0.876306
--0.878671 -1.06213 -0.0571887 -0.770513 0.904827
--0.813442 -0.983281 -0.0416237 -0.770513 0.929776
--0.741592 -0.896429 -0.0293406 -0.770513 0.951056
--0.664065 -0.802715 -0.019901 -0.770513 0.968583
--0.581889 -0.703382 -0.0128082 -0.770513 0.982287
--0.496164 -0.599758 -0.00751811 -0.770513 0.992115
--0.408043 -0.493238 -0.0034504 -0.770513 0.998027
--0.293893 -0.404508 0 -0.809016 1
--0.211498 -0.291101 -0.000953275 -0.809016 0.998027
--0.130204 -0.17921 -0.00123 -0.809016 0.992115
--0.0510959 -0.0703273 -0.000166902 -0.809016 0.982287
-0.0247742 0.0340988 0.00287295 -0.809016 0.968583
-0.0964034 0.132688 0.00848751 -0.809016 0.951057
-0.162852 0.224147 0.0172238 -0.809016 0.929777
-0.22326 0.30729 0.0295668 -0.809016 0.904827
-0.276855 0.381057 0.0459292 -0.809016 0.876307
-0.322969 0.444528 0.0666427 -0.809016 0.844328
-0.361045 0.496935 0.0919503 -0.809016 0.809017
-0.390648 0.537679 0.122 -0.809016 0.770513
-0.411465 0.566333 0.156842 -0.809016 0.728969
-0.423319 0.582648 0.196422 -0.809016 0.684547
-0.426162 0.586561 0.240584 -0.809016 0.637424
-0.420081 0.578191 0.289069 -0.809016 0.587785
-0.405292 0.557836 0.341519 -0.809016 0.535827
-0.382141 0.525971 0.397478 -0.809016 0.481754
-0.351093 0.483238 0.456401 -0.809016 0.42578
-0.312729 0.430434 0.517659 -0.809016 0.368125
-0.267731 0.3685 0.580549 -0.809016 0.309017
-0.216877 0.298506 0.644302 -0.809016 0.24869
-0.161024 0.221631 0.708099 -0.809016 0.187382
-0.101096 0.139147 0.771078 -0.809016 0.125334
-0.0380695 0.052398 0.832348 -0.809016 0.0627908
--0.0270436 -0.0372223 0.891006 -0.809016 3.26795e-07
--0.0932098 -0.128292 0.946148 -0.809016 -0.0627902
--0.159392 -0.219384 0.996883 -0.809016 -0.125333
--0.224565 -0.309086 1.04235 -0.809016 -0.187381
--0.287732 -0.396028 1.08173 -0.809016 -0.24869
--0.34794 -0.478897 1.11425 -0.809016 -0.309017
--0.404295 -0.556463 1.13921 -0.809016 -0.368124
--0.455975 -0.627594 1.15601 -0.809016 -0.425779
--0.502244 -0.691278 1.16411 -0.809016 -0.481753
--0.542462 -0.746633 1.16308 -0.809016 -0.535826
--0.576096 -0.792926 1.15261 -0.809016 -0.587785
--0.602727 -0.829581 1.13248 -0.809016 -0.637424
--0.622056 -0.856185 1.10261 -0.809016 -0.684547
--0.63391 -0.872501 1.06303 -0.809016 -0.728968
--0.638242 -0.878463 1.0139 -0.809016 -0.770513
--0.635132 -0.874182 0.955491 -0.809016 -0.809017
--0.624785 -0.859942 0.888208 -0.809016 -0.844328
--0.60753 -0.836192 0.812563 -0.809016 -0.876306
--0.583809 -0.803542 0.729178 -0.809016 -0.904827
--0.554171 -0.76275 0.63878 -0.809016 -0.929776
--0.519268 -0.71471 0.542186 -0.809016 -0.951056
--0.479835 -0.660436 0.440297 -0.809016 -0.968583
--0.436686 -0.601045 0.334084 -0.809016 -0.982287
--0.390693 -0.537741 0.224577 -0.809016 -0.992115
--0.342778 -0.471792 0.112848 -0.809016 -0.998027
--0.293893 -0.404509 1.1758e-06 -0.809016 -1
--0.245009 -0.337226 -0.112846 -0.809016 -0.998027
--0.197094 -0.271277 -0.224574 -0.809016 -0.992115
--0.151101 -0.207973 -0.334082 -0.809016 -0.982287
--0.107951 -0.148582 -0.440295 -0.809016 -0.968583
--0.0685187 -0.0943077 -0.542184 -0.809016 -0.951057
--0.0336152 -0.0462672 -0.638778 -0.809016 -0.929777
--0.00397793 -0.00547515 -0.729177 -0.809016 -0.904827
-0.0197437 0.0271749 -0.812561 -0.809016 -0.876307
-0.0369991 0.0509249 -0.888207 -0.809016 -0.844328
-0.0473455 0.0651654 -0.95549 -0.809016 -0.809017
-0.0504558 0.0694463 -1.0139 -0.809016 -0.770514
-0.0461242 0.0634844 -1.06303 -0.809016 -0.728969
-0.0342705 0.0471691 -1.10261 -0.809016 -0.684548
-0.0149413 0.0205649 -1.13248 -0.809016 -0.637425
--0.0116895 -0.0160891 -1.15261 -0.809016 -0.587786
--0.0453234 -0.0623822 -1.16308 -0.809016 -0.535828
--0.0855415 -0.117738 -1.16411 -0.809016 -0.481754
--0.13181 -0.181421 -1.15601 -0.809016 -0.42578
--0.18349 -0.252552 -1.13922 -0.809016 -0.368125
--0.239845 -0.330118 -1.11425 -0.809016 -0.309018
--0.300053 -0.412987 -1.08173 -0.809016 -0.248691
--0.36322 -0.499928 -1.04235 -0.809016 -0.187382
--0.428393 -0.589631 -0.996884 -0.809016 -0.125334
--0.494575 -0.680722 -0.946149 -0.809016 -0.0627915
--0.560741 -0.771792 -0.891008 -0.809016 -9.80385e-07
--0.625854 -0.861413 -0.832349 -0.809016 0.0627895
--0.688881 -0.948162 -0.771079 -0.809016 0.125332
--0.748809 -1.03065 -0.708101 -0.809016 0.18738
--0.804662 -1.10752 -0.644304 -0.809016 0.248689
--0.855516 -1.17752 -0.58055 -0.809016 0.309016
--0.900514 -1.23945 -0.517661 -0.809016 0.368124
--0.938879 -1.29225 -0.456403 -0.809016 0.425778
--0.969927 -1.33499 -0.39748 -0.809016 0.481753
--0.993078 -1.36685 -0.34152 -0.809016 0.535826
--1.00787 -1.38721 -0.28907 -0.809016 0.587784
--1.01395 -1.39558 -0.240585 -0.809016 0.637423
--1.01111 -1.39166 -0.196422 -0.809016 0.684546
--0.999252 -1.37535 -0.156842 -0.809016 0.728968
--0.978434 -1.3467 -0.122001 -0.809016 0.770513
--0.948832 -1.30595 -0.0919509 -0.809016 0.809016
--0.910756 -1.25355 -0.0666432 -0.809016 0.844327
--0.864642 -1.19008 -0.0459296 -0.809016 0.876306
--0.811047 -1.11631 -0.0295671 -0.809016 0.904827
--0.75064 -1.03317 -0.017224 -0.809016 0.929776
--0.684191 -0.941706 -0.00848766 -0.809016 0.951056
--0.612562 -0.843117 -0.00287304 -0.809016 0.968583
--0.536692 -0.738691 0.000166861 -0.809016 0.982287
--0.457584 -0.629809 0.00122999 -0.809016 0.992115
--0.37629 -0.517918 0.00095329 -0.809016 0.998027
--0.267914 -0.422164 0 -0.844327 1
--0.192855 -0.30389 -0.00535593 -0.844327 0.998027
--0.118789 -0.18718 -0.0099768 -0.844327 0.992115
--0.0466912 -0.0735734 -0.0131417 -0.844327 0.982287
-0.0224893 0.0354374 -0.0141578 -0.844327 0.968583
-0.087849 0.138428 -0.0123738 -0.844327 0.951057
-0.148541 0.234063 -0.00719275 -0.844327 0.929777
-0.203789 0.32112 0.00191602 -0.844327 0.904827
-0.252898 0.398503 0.0154063 -0.844327 0.876307
-0.295264 0.46526 0.0336453 -0.844327 0.844328
-0.330383 0.520599 0.0569056 -0.844327 0.809017
-0.357861 0.563898 0.0853588 -0.844327 0.770513
-0.377416 0.594711 0.119071 -0.844327 0.728969
-0.388883 0.61278 0.157997 -0.844327 0.684547
-0.392216 0.618033 0.201986 -0.844327 0.637424
-0.387491 0.610587 0.250772 -0.844327 0.587785
-0.374899 0.590746 0.303987 -0.844327 0.535827
-0.354747 0.558991 0.361156 -0.844327 0.481754
-0.327449 0.515977 0.421709 -0.844327 0.42578
-0.293524 0.46252 0.484986 -0.844327 0.368125
-0.253583 0.399582 0.55025 -0.844327 0.309017
-0.20832 0.32826 0.616689 -0.844327 0.24869
-0.158503 0.249761 0.68344 -0.844327 0.187382
-0.10496 0.16539 0.749589 -0.844327 0.125334
-0.048564 0.0765244 0.814198 -0.844327 0.0627908
--0.00977678 -0.0154057 0.876307 -0.844327 3.26795e-07
--0.0691363 -0.108941 0.934957 -0.844327 -0.0627902
--0.128584 -0.202616 0.989204 -0.844327 -0.125333
--0.187202 -0.294982 1.03813 -0.844327 -0.187381
--0.244094 -0.384629 1.08086 -0.844327 -0.24869
--0.298405 -0.47021 1.11658 -0.844327 -0.309017
--0.349333 -0.550459 1.14455 -0.844327 -0.368124
--0.396138 -0.624213 1.1641 -0.844327 -0.425779
--0.43816 -0.690429 1.17467 -0.844327 -0.481753
--0.474822 -0.748199 1.17579 -0.844327 -0.535826
--0.505645 -0.796767 1.16712 -0.844327 -0.587785
--0.530248 -0.835536 1.14843 -0.844327 -0.637424
--0.548363 -0.86408 1.1196 -0.844327 -0.684547
--0.55983 -0.882149 1.08068 -0.844327 -0.728968
--0.564604 -0.889671 1.0318 -0.844327 -0.770513
--0.562753 -0.886755 0.973255 -0.844327 -0.809017
--0.554458 -0.873685 0.905453 -0.844327 -0.844328
--0.540009 -0.850917 0.828923 -0.844327 -0.876306
--0.519799 -0.81907 0.744311 -0.844327 -0.904827
--0.494316 -0.778916 0.652374 -0.844327 -0.929776
--0.46414 -0.731366 0.553962 -0.844327 -0.951056
--0.429925 -0.677453 0.450016 -0.844327 -0.968583
--0.392397 -0.618317 0.34155 -0.844327 -0.982287
--0.352333 -0.555187 0.229639 -0.844327 -0.992115
--0.310556 -0.489357 0.115405 -0.844327 -0.998027
--0.267914 -0.422164 1.20248e-06 -0.844327 -1
--0.225273 -0.354972 -0.115402 -0.844327 -0.998027
--0.183495 -0.289142 -0.229636 -0.844327 -0.992115
--0.143432 -0.226012 -0.341548 -0.844327 -0.982287
--0.105903 -0.166876 -0.450014 -0.844327 -0.968583
--0.0716886 -0.112963 -0.55396 -0.844327 -0.951057
--0.0415119 -0.0654121 -0.652372 -0.844327 -0.929777
--0.0160293 -0.0252581 -0.74431 -0.844327 -0.904827
-0.00418136 0.00658876 -0.828921 -0.844327 -0.876307
-0.0186305 0.0293569 -0.905451 -0.844327 -0.844328
-0.0269252 0.0424273 -0.973254 -0.844327 -0.809017
-0.0287761 0.0453438 -1.0318 -0.844327 -0.770514
-0.0240024 0.0378217 -1.08068 -0.844327 -0.728969
-0.0125357 0.0197531 -1.1196 -0.844327 -0.684548
--0.00557886 -0.00879087 -1.14843 -0.844327 -0.637425
--0.0301824 -0.0475597 -1.16712 -0.844327 -0.587786
--0.0610043 -0.0961273 -1.17579 -0.844327 -0.535828
--0.0976665 -0.153897 -1.17467 -0.844327 -0.481754
--0.139688 -0.220113 -1.1641 -0.844327 -0.42578
--0.186494 -0.293867 -1.14455 -0.844327 -0.368125
--0.237421 -0.374116 -1.11659 -0.844327 -0.309018
--0.291733 -0.459696 -1.08086 -0.844327 -0.248691
--0.348625 -0.549343 -1.03813 -0.844327 -0.187382
--0.407242 -0.641709 -0.989205 -0.844327 -0.125334
--0.46669 -0.735384 -0.934958 -0.844327 -0.0627915
--0.52605 -0.82892 -0.876308 -0.844327 -9.80385e-07
--0.58439 -0.92085 -0.814199 -0.844327 0.0627895
--0.640786 -1.00972 -0.749591 -0.844327 0.125332
--0.69433 -1.09409 -0.683441 -0.844327 0.18738
--0.744147 -1.17259 -0.616691 -0.844327 0.248689
--0.78941 -1.24391 -0.550251 -0.844327 0.309016
--0.829351 -1.30685 -0.484988 -0.844327 0.368124
--0.863276 -1.3603 -0.42171 -0.844327 0.425778
--0.890574 -1.40332 -0.361157 -0.844327 0.481753
--0.910726 -1.43507 -0.303988 -0.844327 0.535826
--0.923319 -1.45491 -0.250773 -0.844327 0.587784
--0.928044 -1.46236 -0.201987 -0.844327 0.637423
--0.92471 -1.45711 -0.157998 -0.844327 0.684546
--0.913244 -1.43904 -0.119071 -0.844327 0.728968
--0.893689 -1.40823 -0.0853595 -0.844327 0.770513
--0.866211 -1.36493 -0.0569061 -0.844327 0.809016
--0.831092 -1.30959 -0.0336457 -0.844327 0.844327
--0.788727 -1.24283 -0.0154066 -0.844327 0.876306
--0.739618 -1.16545 -0.00191625 -0.844327 0.904827
--0.68437 -1.07839 0.00719261 -0.844327 0.929776
--0.623678 -0.982757 0.0123737 -0.844327 0.951056
--0.558318 -0.879767 0.0141578 -0.844327 0.968583
--0.489138 -0.770756 0.0131417 -0.844327 0.982287
--0.417041 -0.657149 0.00997688 -0.844327 0.992115
--0.342974 -0.540439 0.00535604 -0.844327 0.998027
--0.240877 -0.438153 0 -0.876306 1
--0.173507 -0.315608 -0.0097533 -0.876306 0.998027
--0.107018 -0.194665 -0.0187137 -0.876306 0.992115
--0.0422763 -0.0769002 -0.0261035 -0.876306 0.982287
-0.0198767 0.0361555 -0.0311745 -0.876306 0.968583
-0.0786386 0.143043 -0.0332228 -0.876306 0.951057
-0.133258 0.242394 -0.0316022 -0.876306 0.929777
-0.183044 0.332955 -0.0257366 -0.876306 0.904827
-0.227379 0.4136 -0.0151318 -0.876306 0.876307
-0.265726 0.483354 0.000614624 -0.876306 0.844328
-0.297638 0.541401 0.0218048 -0.876306 0.809017
-0.322762 0.5871 0.0486332 -0.876306 0.770513
-0.340844 0.619992 0.081182 -0.876306 0.728969
-0.351738 0.639808 0.119417 -0.876306 0.684547
-0.355399 0.646468 0.163189 -0.876306 0.637424
-0.351891 0.640087 0.212228 -0.876306 0.587785
-0.341381 0.620969 0.266154 -0.876306 0.535827
-0.324136 0.589601 0.324476 -0.876306 0.481754
-0.300522 0.546647 0.3866 -0.876306 0.42578
-0.270993 0.492934 0.451835 -0.876306 0.368125
-0.236088 0.429442 0.519407 -0.876306 0.309017
-0.196418 0.357283 0.588468 -0.876306 0.24869
-0.152661 0.277689 0.658105 -0.876306 0.187382
-0.105545 0.191986 0.727361 -0.876306 0.125334
-0.0558434 0.101579 0.795244 -0.876306 0.0627908
-0.00435583 0.00792321 0.860742 -0.876306 3.26795e-07
--0.0480995 -0.0874926 0.922843 -0.876306 -0.0627902
--0.100701 -0.183174 0.980548 -0.876306 -0.125333
--0.152637 -0.277645 1.03289 -0.876306 -0.187381
--0.203116 -0.369465 1.07893 -0.876306 -0.24869
--0.251381 -0.45726 1.11782 -0.876306 -0.309017
--0.296724 -0.539738 1.14876 -0.876306 -0.368124
--0.33849 -0.615709 1.17105 -0.876306 -0.425779
--0.376092 -0.684108 1.18407 -0.876306 -0.481753
--0.409021 -0.744006 1.18734 -0.876306 -0.535826
--0.436851 -0.794627 1.18048 -0.876306 -0.587785
--0.459243 -0.835359 1.16324 -0.876306 -0.637424
--0.475958 -0.865763 1.13549 -0.876306 -0.684547
--0.486852 -0.885579 1.09726 -0.876306 -0.728968
--0.491881 -0.894727 1.04868 -0.876306 -0.770513
--0.491104 -0.893313 0.990059 -0.876306 -0.809017
--0.484676 -0.881621 0.921803 -0.876306 -0.844328
--0.47285 -0.860109 0.844464 -0.876306 -0.876306
--0.455968 -0.829402 0.75871 -0.876306 -0.904827
--0.43446 -0.790278 0.665324 -0.876306 -0.929776
--0.408831 -0.74366 0.565192 -0.876306 -0.951056
--0.379658 -0.690593 0.459291 -0.876306 -0.968583
--0.347574 -0.632234 0.348679 -0.876306 -0.982287
--0.313265 -0.569826 0.234474 -0.876306 -0.992115
--0.277451 -0.50468 0.117847 -0.876306 -0.998027
--0.240878 -0.438154 1.22798e-06 -0.876306 -1
--0.204304 -0.371628 -0.117845 -0.876306 -0.998027
--0.16849 -0.306482 -0.234472 -0.876306 -0.992115
--0.134181 -0.244073 -0.348676 -0.876306 -0.982287
--0.102097 -0.185714 -0.459289 -0.876306 -0.968583
--0.0729238 -0.132648 -0.56519 -0.876306 -0.951057
--0.047295 -0.0860291 -0.665322 -0.876306 -0.929777
--0.0257865 -0.0469054 -0.758708 -0.876306 -0.904827
--0.00890477 -0.0161977 -0.844462 -0.876306 -0.876307
-0.00292175 0.00531463 -0.921802 -0.876306 -0.844328
-0.00934971 0.017007 -0.990058 -0.876306 -0.809017
-0.0101271 0.018421 -1.04868 -0.876306 -0.770514
-0.00509764 0.00927256 -1.09725 -0.876306 -0.728969
--0.00579589 -0.0105427 -1.13549 -0.876306 -0.684548
--0.0225105 -0.0409464 -1.16324 -0.876306 -0.637425
--0.0449032 -0.0816784 -1.18048 -0.876306 -0.587786
--0.0727323 -0.132299 -1.18734 -0.876306 -0.535828
--0.105661 -0.192197 -1.18407 -0.876306 -0.481754
--0.143264 -0.260596 -1.17105 -0.876306 -0.42578
--0.18503 -0.336567 -1.14876 -0.876306 -0.368125
--0.230372 -0.419044 -1.11782 -0.876306 -0.309018
--0.278638 -0.506839 -1.07893 -0.876306 -0.248691
--0.329117 -0.59866 -1.03289 -0.876306 -0.187382
--0.381052 -0.69313 -0.980549 -0.876306 -0.125334
--0.433654 -0.788812 -0.922844 -0.876306 -0.0627915
--0.486109 -0.884227 -0.860743 -0.876306 -9.80385e-07
--0.537597 -0.977883 -0.795245 -0.876306 0.0627895
--0.587299 -1.06829 -0.727363 -0.876306 0.125332
--0.634414 -1.15399 -0.658107 -0.876306 0.18738
--0.678172 -1.23359 -0.588469 -0.876306 0.248689
--0.717842 -1.30575 -0.519409 -0.876306 0.309016
--0.752747 -1.36924 -0.451836 -0.876306 0.368124
--0.782276 -1.42295 -0.386601 -0.876306 0.425778
--0.80589 -1.46591 -0.324478 -0.876306 0.481753
--0.823135 -1.49727 -0.266156 -0.876306 0.535826
--0.833646 -1.51639 -0.212229 -0.876306 0.587784
--0.837154 -1.52277 -0.16319 -0.876306 0.637423
--0.833493 -1.51611 -0.119418 -0.876306 0.684546
--0.822599 -1.4963 -0.0811827 -0.876306 0.728968
--0.804516 -1.46341 -0.0486338 -0.876306 0.770513
--0.779393 -1.41771 -0.0218053 -0.876306 0.809016
--0.747482 -1.35966 -0.000615007 -0.876306 0.844327
--0.709134 -1.28991 0.0151316 -0.876306 0.876306
--0.664799 -1.20926 0.0257365 -0.876306 0.904827
--0.615013 -1.1187 0.0316021 -0.876306 0.929776
--0.560394 -1.01935 0.0332228 -0.876306 0.951056
--0.501632 -0.912464 0.0311746 -0.876306 0.968583
--0.439479 -0.799408 0.0261036 -0.876306 0.982287
--0.374738 -0.681644 0.0187139 -0.876306 0.992115
--0.308248 -0.560701 0.0097535 -0.876306 0.998027
--0.21289 -0.452413 0 -0.904827 1
--0.153508 -0.32622 -0.0141411 -0.904827 0.998027
--0.0948925 -0.201656 -0.0274322 -0.904827 0.992115
--0.0378 -0.080329 -0.0390395 -0.904827 0.982287
-0.0170366 0.0362046 -0.0481605 -0.904827 0.968583
-0.068918 0.146458 -0.0540391 -0.904827 0.951057
-0.117189 0.249038 -0.0559805 -0.904827 0.929777
-0.161247 0.342667 -0.0533639 -0.904827 0.904827
-0.200554 0.426197 -0.045655 -0.904827 0.876307
-0.234639 0.498633 -0.0324166 -0.904827 0.844328
-0.263113 0.559142 -0.0133176 -0.904827 0.809017
-0.285665 0.607067 0.0118595 -0.904827 0.770513
-0.302074 0.641939 0.0432132 -0.904827 0.728969
-0.312209 0.663476 0.0807195 -0.904827 0.684547
-0.316029 0.671593 0.12423 -0.904827 0.637424
-0.313586 0.666402 0.173474 -0.904827 0.587785
-0.305022 0.648204 0.228059 -0.904827 0.535827
-0.290569 0.617488 0.287477 -0.904827 0.481754
-0.270539 0.574924 0.351109 -0.904827 0.42578
-0.245327 0.521344 0.418238 -0.904827 0.368125
-0.215396 0.457738 0.488053 -0.904827 0.309017
-0.181276 0.385231 0.559665 -0.904827 0.24869
-0.143553 0.305066 0.632122 -0.904827 0.187382
-0.102859 0.218586 0.704415 -0.904827 0.125334
-0.0598613 0.127211 0.775505 -0.904827 0.0627908
-0.0152544 0.0324172 0.844328 -0.904827 3.26795e-07
--0.0302528 -0.0642904 0.909819 -0.904827 -0.0627902
--0.0759481 -0.161398 0.970925 -0.904827 -0.125333
--0.121127 -0.257407 1.02662 -0.904827 -0.187381
--0.165103 -0.35086 1.07594 -0.904827 -0.24869
--0.207219 -0.440363 1.11795 -0.904827 -0.309017
--0.24686 -0.524603 1.15183 -0.904827 -0.368124
--0.283457 -0.602375 1.17683 -0.904827 -0.425779
--0.3165 -0.672595 1.1923 -0.904827 -0.481753
--0.345545 -0.734319 1.19772 -0.904827 -0.535826
--0.37022 -0.786757 1.19268 -0.904827 -0.587785
--0.390232 -0.829284 1.1769 -0.904827 -0.637424
--0.405369 -0.86145 1.15026 -0.904827 -0.684547
--0.415503 -0.882987 1.11275 -0.904827 -0.728968
--0.420596 -0.89381 1.06453 -0.904827 -0.770513
--0.420693 -0.894017 1.00589 -0.904827 -0.809017
--0.415928 -0.88389 0.937245 -0.904827 -0.844328
--0.406515 -0.863887 0.859172 -0.904827 -0.876306
--0.392749 -0.834633 0.77236 -0.904827 -0.904827
--0.374998 -0.79691 0.677617 -0.904827 -0.929776
--0.353698 -0.751644 0.575864 -0.904827 -0.951056
--0.329343 -0.699887 0.468113 -0.904827 -0.968583
--0.30248 -0.642802 0.355463 -0.904827 -0.982287
--0.2737 -0.58164 0.239078 -0.904827 -0.992115
--0.243622 -0.517722 0.120174 -0.904827 -0.998027
--0.21289 -0.452414 1.25227e-06 -0.904827 -1
--0.182159 -0.387106 -0.120171 -0.904827 -0.998027
--0.152081 -0.323188 -0.239076 -0.904827 -0.992115
--0.1233 -0.262026 -0.355461 -0.904827 -0.982287
--0.096438 -0.204941 -0.468111 -0.904827 -0.968583
--0.0720831 -0.153184 -0.575861 -0.904827 -0.951057
--0.0507824 -0.107918 -0.677615 -0.904827 -0.929777
--0.0330313 -0.0701948 -0.772358 -0.904827 -0.904827
--0.0192652 -0.0409405 -0.85917 -0.904827 -0.876307
--0.00985229 -0.0209371 -0.937243 -0.904827 -0.844328
--0.00508685 -0.0108101 -1.00588 -0.904827 -0.809017
--0.00518419 -0.0110169 -1.06453 -0.904827 -0.770514
--0.0102767 -0.021839 -1.11275 -0.904827 -0.728969
--0.0204111 -0.0433757 -1.15026 -0.904827 -0.684548
--0.0355475 -0.0755422 -1.1769 -0.904827 -0.637425
--0.0555593 -0.118069 -1.19268 -0.904827 -0.587786
--0.0802346 -0.170507 -1.19772 -0.904827 -0.535828
--0.10928 -0.23223 -1.1923 -0.904827 -0.481754
--0.142323 -0.30245 -1.17683 -0.904827 -0.42578
--0.178919 -0.380222 -1.15184 -0.904827 -0.368125
--0.21856 -0.464462 -1.11796 -0.904827 -0.309018
--0.260677 -0.553965 -1.07594 -0.904827 -0.248691
--0.304652 -0.647418 -1.02662 -0.904827 -0.187382
--0.349831 -0.743427 -0.970926 -0.904827 -0.125334
--0.395526 -0.840534 -0.90982 -0.904827 -0.0627915
--0.441034 -0.937242 -0.844329 -0.904827 -9.80385e-07
--0.48564 -1.03204 -0.775506 -0.904827 0.0627895
--0.528638 -1.12341 -0.704417 -0.904827 0.125332
--0.569333 -1.20989 -0.632123 -0.904827 0.18738
--0.607056 -1.29006 -0.559667 -0.904827 0.248689
--0.641175 -1.36256 -0.488054 -0.904827 0.309016
--0.671106 -1.42617 -0.418239 -0.904827 0.368124
--0.696319 -1.47975 -0.351111 -0.904827 0.425778
--0.716348 -1.52231 -0.287478 -0.904827 0.481753
--0.730802 -1.55303 -0.228061 -0.904827 0.535826
--0.739366 -1.57123 -0.173476 -0.904827 0.587784
--0.741809 -1.57642 -0.124231 -0.904827 0.637423
--0.737989 -1.5683 -0.0807204 -0.904827 0.684546
--0.727854 -1.54677 -0.0432139 -0.904827 0.728968
--0.711445 -1.5119 -0.0118601 -0.904827 0.770513
--0.688893 -1.46397 0.0133172 -0.904827 0.809016
--0.66042 -1.40346 0.0324163 -0.904827 0.844327
--0.626334 -1.33103 0.0456548 -0.904827 0.876306
--0.587028 -1.2475 0.0533638 -0.904827 0.904827
--0.54297 -1.15387 0.0559805 -0.904827 0.929776
--0.494699 -1.05129 0.0540392 -0.904827 0.951056
--0.442818 -0.941034 0.0481606 -0.904827 0.968583
--0.387981 -0.8245 0.0390398 -0.904827 0.982287
--0.330889 -0.703173 0.0274325 -0.904827 0.992115
--0.272274 -0.57861 0.0141413 -0.904827 0.998027
--0.184063 -0.464888 0 -0.929776 1
--0.13291 -0.335692 -0.0185148 -0.929776 0.998027
--0.0824107 -0.208145 -0.0361236 -0.929776 0.992115
--0.0332077 -0.0838728 -0.0519371 -0.929776 0.982287
-0.0140747 0.0355486 -0.0650989 -0.929776 0.968583
-0.0588408 0.148614 -0.0748021 -0.929776 0.951057
-0.100532 0.253915 -0.0803035 -0.929776 0.929777
-0.138636 0.350154 -0.0809385 -0.929776 0.904827
-0.172692 0.43617 -0.0761332 -0.929776 0.876307
-0.202301 0.510953 -0.0654159 -0.929776 0.844328
-0.227128 0.573658 -0.0484268 -0.929776 0.809017
-0.246908 0.623616 -0.0249259 -0.929776 0.770513
-0.26145 0.660347 0.00520184 -0.929776 0.728969
-0.270642 0.683562 0.041942 -0.929776 0.684547
-0.274446 0.69317 0.0851496 -0.929776 0.637424
-0.272904 0.689276 0.13455 -0.929776 0.587785
-0.266135 0.672179 0.189739 -0.929776 0.535827
-0.254332 0.642368 0.250194 -0.929776 0.481754
-0.237759 0.60051 0.315272 -0.929776 0.42578
-0.216748 0.547441 0.384228 -0.929776 0.368125
-0.19169 0.484152 0.456216 -0.929776 0.309017
-0.163033 0.411773 0.530311 -0.929776 0.24869
-0.131272 0.331555 0.605514 -0.929776 0.187382
-0.0969414 0.244845 0.680774 -0.929776 0.125334
-0.0606064 0.153074 0.755001 -0.929776 0.0627908
-0.0228545 0.0577238 0.82708 -0.929776 3.26795e-07
--0.0157139 -0.0396887 0.895896 -0.929776 -0.0627902
--0.0544955 -0.13764 0.960343 -0.929776 -0.125333
--0.0928932 -0.234621 1.01935 -0.929776 -0.187381
--0.130325 -0.329164 1.07188 -0.929776 -0.24869
--0.166235 -0.419861 1.11698 -0.929776 -0.309017
--0.2001 -0.505393 1.15377 -0.929776 -0.368124
--0.231436 -0.584539 1.18146 -0.929776 -0.425779
--0.259812 -0.656208 1.19936 -0.929776 -0.481753
--0.284849 -0.719444 1.20692 -0.929776 -0.535826
--0.306231 -0.773449 1.2037 -0.929776 -0.587785
--0.323707 -0.817588 1.1894 -0.929776 -0.637424
--0.337095 -0.851403 1.16389 -0.929776 -0.684547
--0.346287 -0.874618 1.12715 -0.929776 -0.728968
--0.351245 -0.887142 1.07933 -0.929776 -0.770513
--0.352008 -0.889067 1.02072 -0.929776 -0.809017
--0.348683 -0.880671 0.951761 -0.929776 -0.844328
--0.341452 -0.862407 0.873032 -0.929776 -0.876306
--0.33056 -0.834896 0.785247 -0.929776 -0.904827
--0.316315 -0.798919 0.689242 -0.929776 -0.929776
--0.299085 -0.7554 0.585967 -0.929776 -0.951056
--0.279284 -0.705389 0.476473 -0.929776 -0.968583
--0.257373 -0.650049 0.361897 -0.929776 -0.982287
--0.233848 -0.590631 0.243446 -0.929776 -0.992115
--0.209231 -0.528455 0.122382 -0.929776 -0.998027
--0.184063 -0.464889 1.27532e-06 -0.929776 -1
--0.158895 -0.401323 -0.122379 -0.929776 -0.998027
--0.134278 -0.339147 -0.243444 -0.929776 -0.992115
--0.110753 -0.279729 -0.361895 -0.929776 -0.982287
--0.0888418 -0.224388 -0.476471 -0.929776 -0.968583
--0.0690411 -0.174378 -0.585965 -0.929776 -0.951057
--0.0518104 -0.130858 -0.68924 -0.929776 -0.929777
--0.0375661 -0.0948808 -0.785245 -0.929776 -0.904827
--0.0266738 -0.0673701 -0.873031 -0.929776 -0.876307
--0.0194422 -0.0491054 -0.951759 -0.929776 -0.844328
--0.0161178 -0.0407089 -1.02072 -0.929776 -0.809017
--0.0168801 -0.0426341 -1.07933 -0.929776 -0.770514
--0.0218384 -0.0551574 -1.12715 -0.929776 -0.728969
--0.0310299 -0.0783724 -1.16389 -0.929776 -0.684548
--0.0444183 -0.112188 -1.1894 -0.929776 -0.637425
--0.0618942 -0.156326 -1.2037 -0.929776 -0.587786
--0.083276 -0.210331 -1.20692 -0.929776 -0.535828
--0.108313 -0.273567 -1.19936 -0.929776 -0.481754
--0.136689 -0.345235 -1.18146 -0.929776 -0.42578
--0.168025 -0.424382 -1.15377 -0.929776 -0.368125
--0.201889 -0.509913 -1.11699 -0.929776 -0.309018
--0.237799 -0.600611 -1.07188 -0.929776 -0.248691
--0.275231 -0.695153 -1.01935 -0.929776 -0.187382
--0.313629 -0.792134 -0.960344 -0.929776 -0.125334
--0.352411 -0.890085 -0.895897 -0.929776 -0.0627915
--0.390979 -0.987498 -0.827082 -0.929776 -9.80385e-07
--0.428731 -1.08285 -0.755002 -0.929776 0.0627895
--0.465066 -1.17462 -0.680776 -0.929776 0.125332
--0.499397 -1.26133 -0.605516 -0.929776 0.18738
--0.531158 -1.34155 -0.530312 -0.929776 0.248689
--0.559815 -1.41393 -0.456218 -0.929776 0.309016
--0.584873 -1.47722 -0.384229 -0.929776 0.368124
--0.605884 -1.53028 -0.315274 -0.929776 0.425778
--0.622457 -1.57214 -0.250195 -0.929776 0.481753
--0.634261 -1.60196 -0.189741 -0.929776 0.535826
--0.64103 -1.61905 -0.134551 -0.929776 0.587784
--0.642571 -1.62295 -0.0851506 -0.929776 0.637423
--0.638767 -1.61334 -0.0419428 -0.929776 0.684546
--0.629576 -1.59012 -0.00520254 -0.929776 0.728968
--0.615033 -1.55339 0.0249253 -0.929776 0.770513
--0.595254 -1.50343 0.0484264 -0.929776 0.809016
--0.570427 -1.44073 0.0654156 -0.929776 0.844327
--0.540818 -1.36595 0.076133 -0.929776 0.876306
--0.506762 -1.27993 0.0809385 -0.929776 0.904827
--0.468658 -1.18369 0.0803036 -0.929776 0.929776
--0.426967 -1.07839 0.0748022 -0.929776 0.951056
--0.382201 -0.965327 0.0650991 -0.929776 0.968583
--0.334919 -0.845906 0.0519374 -0.929776 0.982287
--0.285716 -0.721634 0.036124 -0.929776 0.992115
--0.235216 -0.594087 0.0185152 -0.929776 0.998027
--0.154509 -0.475528 0 -0.951056 1
--0.111771 -0.343993 -0.0228704 -0.951056 0.998027
--0.0695713 -0.214118 -0.0447794 -0.951056 0.992115
--0.0284423 -0.0875362 -0.0647833 -0.951056 0.982287
-0.0111009 0.0341649 -0.0819731 -0.951056 0.968583
-0.0485664 0.149472 -0.0954912 -0.951056 0.951057
-0.083493 0.256964 -0.104547 -0.951056 0.929777
-0.115457 0.355338 -0.108433 -0.951056 0.904827
-0.144077 0.443424 -0.106536 -0.951056 0.876307
-0.169024 0.520201 -0.0983506 -0.951056 0.844328
-0.190019 0.584816 -0.0834883 -0.951056 0.809017
-0.206843 0.636595 -0.0616866 -0.951056 0.770513
-0.219337 0.675048 -0.0328147 -0.951056 0.728969
-0.227405 0.69988 0.00312307 -0.951056 0.684547
-0.231017 0.710994 0.0459848 -0.951056 0.637424
-0.230203 0.708489 0.0954919 -0.951056 0.587785
-0.225059 0.692658 0.151232 -0.951056 0.535827
-0.215743 0.663985 0.212664 -0.951056 0.481754
-0.202469 0.623134 0.279124 -0.951056 0.42578
-0.185509 0.570937 0.349839 -0.951056 0.368125
-0.165184 0.508383 0.42393 -0.951056 0.309017
-0.14186 0.436598 0.500433 -0.951056 0.24869
-0.115941 0.35683 0.578309 -0.951056 0.187382
-0.0878676 0.270428 0.656461 -0.951056 0.125334
-0.0581022 0.17882 0.733751 -0.951056 0.0627908
-0.0271273 0.0834889 0.809017 -0.951056 3.26795e-07
--0.00456455 -0.0140482 0.881089 -0.951056 -0.0627902
--0.0364776 -0.112266 0.948814 -0.951056 -0.125333
--0.0681214 -0.209656 1.01107 -0.951056 -0.187381
--0.0990179 -0.304745 1.06677 -0.951056 -0.24869
--0.128709 -0.396126 1.11491 -0.951056 -0.309017
--0.156765 -0.482472 1.15457 -0.951056 -0.368124
--0.182788 -0.562563 1.18492 -0.951056 -0.425779
--0.206423 -0.635301 1.20523 -0.951056 -0.481753
--0.227356 -0.699727 1.21492 -0.951056 -0.535826
--0.245327 -0.755037 1.21353 -0.951056 -0.587785
--0.260128 -0.800591 1.20073 -0.951056 -0.637424
--0.271609 -0.835925 1.17637 -0.951056 -0.684547
--0.279678 -0.860757 1.14044 -0.951056 -0.728968
--0.284302 -0.87499 1.09306 -0.951056 -0.770513
--0.285511 -0.878709 1.03455 -0.951056 -0.809017
--0.283391 -0.872185 0.965337 -0.951056 -0.844328
--0.278088 -0.855864 0.886031 -0.951056 -0.876306
--0.269801 -0.83036 0.79736 -0.951056 -0.904827
--0.258782 -0.796446 0.700186 -0.951056 -0.929776
--0.245327 -0.755037 0.595492 -0.951056 -0.951056
--0.229777 -0.707178 0.484363 -0.951056 -0.968583
--0.212505 -0.654022 0.367974 -0.951056 -0.982287
--0.193917 -0.596813 0.247574 -0.951056 -0.992115
--0.174438 -0.536862 0.124469 -0.951056 -0.998027
--0.154509 -0.475529 1.29711e-06 -0.951056 -1
--0.134581 -0.414196 -0.124466 -0.951056 -0.998027
--0.115102 -0.354245 -0.247572 -0.951056 -0.992115
--0.0965129 -0.297035 -0.367971 -0.951056 -0.982287
--0.0792414 -0.243879 -0.484361 -0.951056 -0.968583
--0.0636909 -0.19602 -0.59549 -0.951056 -0.951057
--0.0502364 -0.154611 -0.700184 -0.951056 -0.929777
--0.039217 -0.120697 -0.797358 -0.951056 -0.904827
--0.0309302 -0.095193 -0.886029 -0.951056 -0.876307
--0.025627 -0.0788714 -0.965336 -0.951056 -0.844328
--0.023507 -0.072347 -1.03454 -0.951056 -0.809017
--0.0247155 -0.0760662 -1.09306 -0.951056 -0.770514
--0.0293398 -0.0902983 -1.14043 -0.951056 -0.728969
--0.0374083 -0.115131 -1.17637 -0.951056 -0.684548
--0.0488891 -0.150465 -1.20073 -0.951056 -0.637425
--0.0636905 -0.196018 -1.21353 -0.951056 -0.587786
--0.0816616 -0.251328 -1.21492 -0.951056 -0.535828
--0.102595 -0.315753 -1.20523 -0.951056 -0.481754
--0.126229 -0.388491 -1.18492 -0.951056 -0.42578
--0.152252 -0.468582 -1.15457 -0.951056 -0.368125
--0.180308 -0.554929 -1.11491 -0.951056 -0.309018
--0.209999 -0.646309 -1.06677 -0.951056 -0.248691
--0.240896 -0.741399 -1.01107 -0.951056 -0.187382
--0.27254 -0.838788 -0.948815 -0.951056 -0.125334
--0.304453 -0.937006 -0.881091 -0.951056 -0.0627915
--0.336144 -1.03454 -0.809018 -0.951056 -9.80385e-07
--0.367119 -1.12987 -0.733753 -0.951056 0.0627895
--0.396885 -1.22148 -0.656463 -0.951056 0.125332
--0.424959 -1.30788 -0.578311 -0.951056 0.18738
--0.450877 -1.38765 -0.500434 -0.951056 0.248689
--0.474201 -1.45944 -0.423931 -0.951056 0.309016
--0.494527 -1.52199 -0.34984 -0.951056 0.368124
--0.511487 -1.57419 -0.279126 -0.951056 0.425778
--0.52476 -1.61504 -0.212665 -0.951056 0.481753
--0.534077 -1.64371 -0.151233 -0.951056 0.535826
--0.53922 -1.65954 -0.095493 -0.951056 0.587784
--0.540035 -1.66205 -0.0459857 -0.951056 0.637423
--0.536423 -1.65094 -0.00312389 -0.951056 0.684546
--0.528355 -1.6261 0.032814 -0.951056 0.728968
--0.515861 -1.58765 0.0616861 -0.951056 0.770513
--0.499037 -1.53587 0.0834879 -0.951056 0.809016
--0.478042 -1.47126 0.0983503 -0.951056 0.844327
--0.453096 -1.39448 0.106536 -0.951056 0.876306
--0.424475 -1.3064 0.108433 -0.951056 0.904827
--0.392512 -1.20802 0.104547 -0.951056 0.929776
--0.357585 -1.10053 0.0954914 -0.951056 0.951056
--0.32012 -0.985224 0.0819734 -0.951056 0.968583
--0.280576 -0.863523 0.0647837 -0.951056 0.982287
--0.239447 -0.736941 0.0447798 -0.951056 0.992115
--0.197248 -0.607066 0.0228708 -0.951056 0.998027
--0.124345 -0.484291 0 -0.968583 1
--0.0901461 -0.351094 -0.0272033 -0.968583 0.998027
--0.0563729 -0.219557 -0.053391 -0.968583 0.992115
--0.0234459 -0.0913153 -0.0775656 -0.968583 0.982287
-0.00822764 0.0320444 -0.0987664 -0.968583 0.968583
-0.0382586 0.149007 -0.116086 -0.968583 0.951057
-0.0662822 0.258151 -0.128688 -0.968583 0.929777
-0.0919629 0.35817 -0.135821 -0.968583 0.904827
-0.115 0.447892 -0.136834 -0.968583 0.876307
-0.13513 0.526295 -0.131188 -0.968583 0.844328
-0.152134 0.592521 -0.118467 -0.968583 0.809017
-0.165837 0.645891 -0.0983865 -0.968583 0.770513
-0.176113 0.685911 -0.0707988 -0.968583 0.728969
-0.182884 0.712282 -0.0356989 -0.968583 0.684547
-0.186123 0.724899 0.00677456 -0.968583 0.637424
-0.185855 0.723855 0.05634 -0.968583 0.587785
-0.182153 0.709437 0.112575 -0.968583 0.535827
-0.175139 0.682119 0.174924 -0.968583 0.481754
-0.164981 0.642558 0.242701 -0.968583 0.42578
-0.151892 0.591577 0.315104 -0.968583 0.368125
-0.136121 0.530155 0.391225 -0.968583 0.309017
-0.117957 0.45941 0.470061 -0.968583 0.24869
-0.0977172 0.380582 0.550533 -0.968583 0.187382
-0.0757457 0.295009 0.631501 -0.968583 0.125334
-0.0524067 0.20411 0.711778 -0.968583 0.0627908
-0.028079 0.10936 0.790155 -0.968583 3.26795e-07
-0.00314969 0.0122672 0.865413 -0.968583 -0.0627902
--0.0219916 -0.0856511 0.936348 -0.968583 -0.125333
--0.0469589 -0.182892 1.00179 -0.968583 -0.187381
--0.0713764 -0.277992 1.0606 -0.968583 -0.24869
--0.0948835 -0.369546 1.11174 -0.968583 -0.309017
--0.117141 -0.456233 1.15423 -0.968583 -0.368124
--0.137837 -0.536837 1.18721 -0.968583 -0.425779
--0.156689 -0.610261 1.20991 -0.968583 -0.481753
--0.173452 -0.675547 1.22172 -0.968583 -0.535826
--0.187918 -0.73189 1.22216 -0.968583 -0.587785
--0.199924 -0.77865 1.21088 -0.968583 -0.637424
--0.209349 -0.815359 1.1877 -0.968583 -0.684547
--0.21612 -0.84173 1.1526 -0.968583 -0.728968
--0.22021 -0.857659 1.10571 -0.968583 -0.770513
--0.221639 -0.863225 1.04735 -0.968583 -0.809017
--0.220475 -0.85869 0.977962 -0.968583 -0.844328
--0.216829 -0.844488 0.898155 -0.968583 -0.876306
--0.210856 -0.821225 0.808685 -0.968583 -0.904827
--0.202751 -0.789659 0.71044 -0.968583 -0.929776
--0.192746 -0.750694 0.60443 -0.968583 -0.951056
--0.181106 -0.705358 0.491775 -0.968583 -0.968583
--0.168122 -0.65479 0.373688 -0.968583 -0.982287
--0.15411 -0.600218 0.251458 -0.968583 -0.992115
--0.139403 -0.542938 0.126433 -0.968583 -0.998027
--0.124346 -0.484292 1.31762e-06 -0.968583 -1
--0.109288 -0.425646 -0.126431 -0.968583 -0.998027
--0.0945807 -0.368366 -0.251455 -0.968583 -0.992115
--0.0805689 -0.313794 -0.373685 -0.968583 -0.982287
--0.0675852 -0.263226 -0.491772 -0.968583 -0.968583
--0.0559448 -0.21789 -0.604428 -0.968583 -0.951057
--0.0459401 -0.178924 -0.710438 -0.968583 -0.929777
--0.0378354 -0.147358 -0.808683 -0.968583 -0.904827
--0.0318623 -0.124095 -0.898153 -0.968583 -0.876307
--0.028216 -0.109894 -0.97796 -0.968583 -0.844328
--0.0270514 -0.105358 -1.04735 -0.968583 -0.809017
--0.0284805 -0.110924 -1.10571 -0.968583 -0.770514
--0.0325703 -0.126853 -1.1526 -0.968583 -0.728969
--0.0393412 -0.153223 -1.1877 -0.968583 -0.684548
--0.0487664 -0.189932 -1.21088 -0.968583 -0.637425
--0.0607723 -0.236692 -1.22216 -0.968583 -0.587786
--0.0752388 -0.293035 -1.22172 -0.968583 -0.535828
--0.0920014 -0.358321 -1.20991 -0.968583 -0.481754
--0.110853 -0.431744 -1.18721 -0.968583 -0.42578
--0.131549 -0.512348 -1.15423 -0.968583 -0.368125
--0.153807 -0.599036 -1.11174 -0.968583 -0.309018
--0.177314 -0.690589 -1.0606 -0.968583 -0.248691
--0.201731 -0.785689 -1.00179 -0.968583 -0.187382
--0.226699 -0.88293 -0.936349 -0.968583 -0.125334
--0.25184 -0.980848 -0.865415 -0.968583 -0.0627915
--0.276769 -1.07794 -0.790156 -0.968583 -9.80385e-07
--0.301097 -1.17269 -0.71178 -0.968583 0.0627895
--0.324436 -1.26359 -0.631502 -0.968583 0.125332
--0.346408 -1.34916 -0.550535 -0.968583 0.18738
--0.366647 -1.42799 -0.470062 -0.968583 0.248689
--0.384812 -1.49874 -0.391226 -0.968583 0.309016
--0.400582 -1.56016 -0.315106 -0.968583 0.368124
--0.413672 -1.61114 -0.242702 -0.968583 0.425778
--0.42383 -1.6507 -0.174925 -0.968583 0.481753
--0.430844 -1.67802 -0.112577 -0.968583 0.535826
--0.434546 -1.69244 -0.0563411 -0.968583 0.587784
--0.434814 -1.69348 -0.00677552 -0.968583 0.637423
--0.431575 -1.68087 0.0356981 -0.968583 0.684546
--0.424804 -1.65449 0.0707982 -0.968583 0.728968
--0.414528 -1.61447 0.098386 -0.968583 0.770513
--0.400825 -1.5611 0.118467 -0.968583 0.809016
--0.383821 -1.49488 0.131188 -0.968583 0.844327
--0.363691 -1.41648 0.136834 -0.968583 0.876306
--0.340654 -1.32676 0.135821 -0.968583 0.904827
--0.314974 -1.22674 0.128688 -0.968583 0.929776
--0.28695 -1.11759 0.116086 -0.968583 0.951056
--0.256919 -1.00063 0.0987668 -0.968583 0.968583
--0.225246 -0.87727 0.0775661 -0.968583 0.982287
--0.192319 -0.749028 0.0533915 -0.968583 0.992115
--0.158545 -0.617491 0.0272039 -0.968583 0.998027
--0.0936911 -0.491144 0 -0.982287 1
--0.0680956 -0.356968 -0.0315094 -0.982287 0.998027
--0.0428151 -0.224444 -0.0619498 -0.982287 0.992115
--0.0181599 -0.0951972 -0.0902714 -0.982287 0.982287
-0.00556871 0.029192 -0.115462 -0.982287 0.968583
-0.0280832 0.147216 -0.136566 -0.982287 0.951057
-0.0491136 0.257461 -0.152702 -0.982287 0.929777
-0.0684119 0.358626 -0.163075 -0.982287 0.904827
-0.0857549 0.449541 -0.166997 -0.982287 0.876307
-0.100948 0.529188 -0.163896 -0.982287 0.844328
-0.113829 0.59671 -0.153329 -0.982287 0.809017
-0.124267 0.651428 -0.134989 -0.982287 0.770513
-0.132168 0.692846 -0.108713 -0.982287 0.728969
-0.137474 0.72066 -0.0744857 -0.982287 0.684547
-0.140164 0.73476 -0.0324423 -0.982287 0.637424
-0.140253 0.735231 0.0171325 -0.982287 0.587785
-0.137796 0.72235 0.0738078 -0.982287 0.535827
-0.132881 0.696584 0.137011 -0.982287 0.481754
-0.12563 0.658574 0.206038 -0.982287 0.42578
-0.116198 0.60913 0.280059 -0.982287 0.368125
-0.10477 0.549219 0.358133 -0.982287 0.309017
-0.0915542 0.479941 0.439225 -0.982287 0.24869
-0.0767852 0.40252 0.522214 -0.982287 0.187382
-0.060715 0.318277 0.605917 -0.982287 0.125334
-0.0436108 0.228615 0.689102 -0.982287 0.0627908
-0.0257508 0.13499 0.770513 -0.982287 3.26795e-07
-0.00741947 0.038894 0.848883 -0.982287 -0.0627902
--0.011097 -0.058172 0.922958 -0.982287 -0.125333
--0.0295148 -0.154721 0.991517 -0.982287 -0.187381
--0.0475575 -0.249304 1.05339 -0.982287 -0.24869
--0.0649598 -0.340529 1.10747 -0.982287 -0.309017
--0.0814721 -0.427089 1.15275 -0.982287 -0.368124
--0.0968639 -0.507776 1.18832 -0.982287 -0.425779
--0.110928 -0.581501 1.2134 -0.982287 -0.481753
--0.123482 -0.647314 1.22732 -0.982287 -0.535826
--0.134375 -0.704413 1.22958 -0.982287 -0.587785
--0.143483 -0.752159 1.21982 -0.982287 -0.637424
--0.150717 -0.790084 1.19785 -0.982287 -0.684547
--0.156023 -0.817898 1.16362 -0.982287 -0.728968
--0.159379 -0.835491 1.11728 -0.982287 -0.770513
--0.160799 -0.842934 1.05912 -0.982287 -0.809017
--0.16033 -0.840477 0.989621 -0.982287 -0.844328
--0.158054 -0.828544 0.909393 -0.982287 -0.876306
--0.154082 -0.807724 0.819213 -0.982287 -0.904827
--0.148557 -0.778759 0.719992 -0.982287 -0.929776
--0.141646 -0.742533 0.612771 -0.982287 -0.951056
--0.133543 -0.700054 0.498701 -0.982287 -0.968583
--0.12446 -0.652439 0.379032 -0.982287 -0.982287
--0.114627 -0.600894 0.255093 -0.982287 -0.992115
--0.104287 -0.546689 0.128273 -0.982287 -0.998027
--0.0936912 -0.491144 1.33683e-06 -0.982287 -1
--0.0830954 -0.435599 -0.12827 -0.982287 -0.998027
--0.0727553 -0.381395 -0.25509 -0.982287 -0.992115
--0.0629224 -0.329849 -0.37903 -0.982287 -0.982287
--0.0538393 -0.282234 -0.498699 -0.982287 -0.968583
--0.045736 -0.239755 -0.612769 -0.982287 -0.951057
--0.0388254 -0.203529 -0.71999 -0.982287 -0.929777
--0.0332999 -0.174563 -0.819211 -0.982287 -0.904827
--0.0293282 -0.153743 -0.909391 -0.982287 -0.876307
--0.0270519 -0.14181 -0.989619 -0.982287 -0.844328
--0.0265832 -0.139353 -1.05912 -0.982287 -0.809017
--0.028003 -0.146796 -1.11728 -0.982287 -0.770514
--0.031359 -0.164389 -1.16362 -0.982287 -0.728969
--0.0366648 -0.192202 -1.19785 -0.982287 -0.684548
--0.0438994 -0.230127 -1.21982 -0.982287 -0.637425
--0.0530074 -0.277873 -1.22958 -0.982287 -0.587786
--0.0638996 -0.334972 -1.22732 -0.982287 -0.535828
--0.0764541 -0.400784 -1.2134 -0.982287 -0.481754
--0.090518 -0.47451 -1.18833 -0.982287 -0.42578
--0.10591 -0.555196 -1.15275 -0.982287 -0.368125
--0.122422 -0.641756 -1.10747 -0.982287 -0.309018
--0.139824 -0.732981 -1.05339 -0.982287 -0.248691
--0.157867 -0.827564 -0.991518 -0.982287 -0.187382
--0.176285 -0.924113 -0.92296 -0.982287 -0.125334
--0.194801 -1.02118 -0.848885 -0.982287 -0.0627915
--0.213133 -1.11728 -0.770515 -0.982287 -9.80385e-07
--0.230993 -1.2109 -0.689104 -0.982287 0.0627895
--0.248097 -1.30056 -0.605918 -0.982287 0.125332
--0.264167 -1.38481 -0.522216 -0.982287 0.18738
--0.278936 -1.46223 -0.439227 -0.982287 0.248689
--0.292152 -1.5315 -0.358135 -0.982287 0.309016
--0.30358 -1.59142 -0.28006 -0.982287 0.368124
--0.313012 -1.64086 -0.206039 -0.982287 0.425778
--0.320263 -1.67887 -0.137013 -0.982287 0.481753
--0.325179 -1.70464 -0.073809 -0.982287 0.535826
--0.327636 -1.71752 -0.0171336 -0.982287 0.587784
--0.327546 -1.71705 0.0324414 -0.982287 0.637423
--0.324856 -1.70295 0.0744849 -0.982287 0.684546
--0.31955 -1.67513 0.108712 -0.982287 0.728968
--0.31165 -1.63372 0.134989 -0.982287 0.770513
--0.301212 -1.579 0.153329 -0.982287 0.809016
--0.288331 -1.51148 0.163896 -0.982287 0.844327
--0.273138 -1.43183 0.166997 -0.982287 0.876306
--0.255794 -1.34091 0.163075 -0.982287 0.904827
--0.236496 -1.23975 0.152702 -0.982287 0.929776
--0.215466 -1.12951 0.136567 -0.982287 0.951056
--0.192951 -1.01148 0.115463 -0.982287 0.968583
--0.169223 -0.887092 0.090272 -0.982287 0.982287
--0.144568 -0.757846 0.0619505 -0.982287 0.992115
--0.119287 -0.625322 0.0315101 -0.982287 0.998027
--0.0626671 -0.496057 0 -0.992115 1
--0.0456796 -0.361588 -0.0357844 -0.992115 0.998027
--0.0288984 -0.228752 -0.0704476 -0.992115 0.992115
--0.0125269 -0.0991601 -0.102888 -0.992115 0.982287
-0.00323742 0.0256266 -0.132044 -0.992115 0.968583
-0.0182061 0.144115 -0.156912 -0.992115 0.951057
-0.0322023 0.254905 -0.176564 -0.992115 0.929777
-0.0450631 0.356708 -0.190167 -0.992115 0.904827
-0.0566422 0.448365 -0.196995 -0.992115 0.876307
-0.0668118 0.528866 -0.196443 -0.992115 0.844328
-0.0754646 0.597359 -0.18804 -0.992115 0.809017
-0.0825151 0.653169 -0.171459 -0.992115 0.770513
-0.0879006 0.6958 -0.14652 -0.992115 0.728969
-0.0915825 0.724945 -0.113199 -0.992115 0.684547
-0.0935462 0.740489 -0.0716272 -0.992115 0.637424
-0.0938014 0.742509 -0.0220919 -0.992115 0.587785
-0.0923819 0.731273 0.0349672 -0.992115 0.535827
-0.0893447 0.707231 0.0989636 -0.992115 0.481754
-0.084769 0.67101 0.169172 -0.992115 0.42578
-0.0787548 0.623404 0.244737 -0.992115 0.368125
-0.0714216 0.565356 0.324689 -0.992115 0.309017
-0.0629058 0.497947 0.407956 -0.992115 0.24869
-0.0533589 0.422376 0.493379 -0.992115 0.187382
-0.0429448 0.339941 0.579735 -0.992115 0.125334
-0.0318375 0.252018 0.665746 -0.992115 0.0627908
-0.0202179 0.16004 0.750111 -0.992115 3.26795e-07
-0.0082712 0.0654728 0.831515 -0.992115 -0.0627902
--0.00381614 -0.0302076 0.908658 -0.992115 -0.125333
--0.0158593 -0.125538 0.980269 -0.992115 -0.187381
--0.0276779 -0.219092 1.04513 -0.992115 -0.24869
--0.0390992 -0.309499 1.10211 -0.992115 -0.309017
--0.04996 -0.395471 1.15013 -0.992115 -0.368124
--0.06011 -0.475816 1.18827 -0.992115 -0.425779
--0.0694136 -0.549461 1.21569 -0.992115 -0.481753
--0.0777519 -0.615465 1.23171 -0.992115 -0.535826
--0.0850249 -0.673036 1.2358 -0.992115 -0.587785
--0.0911524 -0.72154 1.22757 -0.992115 -0.637424
--0.0960756 -0.760511 1.20681 -0.992115 -0.684547
--0.0997575 -0.789656 1.17349 -0.992115 -0.728968
--0.102184 -0.80886 1.12774 -0.992115 -0.770513
--0.103362 -0.818186 1.06985 -0.992115 -0.809017
--0.103322 -0.817872 1.0003 -0.992115 -0.844328
--0.102116 -0.808326 0.919733 -0.992115 -0.876306
--0.0998159 -0.790118 0.828932 -0.992115 -0.904827
--0.0965126 -0.76397 0.728834 -0.992115 -0.929776
--0.0923147 -0.73074 0.620507 -0.992115 -0.951056
--0.0873464 -0.691412 0.505135 -0.992115 -0.968583
--0.0817451 -0.647074 0.384003 -0.992115 -0.982287
--0.0756594 -0.598901 0.258477 -0.992115 -0.992115
--0.0692459 -0.548134 0.129986 -0.992115 -0.998027
--0.0626672 -0.496058 1.35472e-06 -0.992115 -1
--0.0560884 -0.443982 -0.129983 -0.992115 -0.998027
--0.0496749 -0.393214 -0.258474 -0.992115 -0.992115
--0.0435892 -0.345041 -0.384 -0.992115 -0.982287
--0.0379879 -0.300703 -0.505133 -0.992115 -0.968583
--0.0330196 -0.261375 -0.620505 -0.992115 -0.951057
--0.0288217 -0.228145 -0.728832 -0.992115 -0.929777
--0.0255183 -0.201997 -0.82893 -0.992115 -0.904827
--0.0232181 -0.183789 -0.919732 -0.992115 -0.876307
--0.0220121 -0.174243 -1.0003 -0.992115 -0.844328
--0.0219724 -0.173928 -1.06985 -0.992115 -0.809017
--0.0231506 -0.183254 -1.12774 -0.992115 -0.770514
--0.0255766 -0.202458 -1.17349 -0.992115 -0.728969
--0.0292585 -0.231603 -1.20681 -0.992115 -0.684548
--0.0341816 -0.270573 -1.22757 -0.992115 -0.637425
--0.0403091 -0.319077 -1.2358 -0.992115 -0.587786
--0.0475821 -0.376648 -1.23171 -0.992115 -0.535828
--0.0559204 -0.442652 -1.21569 -0.992115 -0.481754
--0.065224 -0.516297 -1.18827 -0.992115 -0.42578
--0.075374 -0.596642 -1.15014 -0.992115 -0.368125
--0.0862348 -0.682613 -1.10211 -0.992115 -0.309018
--0.097656 -0.773021 -1.04514 -0.992115 -0.248691
--0.109475 -0.866574 -0.980271 -0.992115 -0.187382
--0.121518 -0.961905 -0.908659 -0.992115 -0.125334
--0.133605 -1.05759 -0.831517 -0.992115 -0.0627915
--0.145552 -1.15215 -0.750113 -0.992115 -9.80385e-07
--0.157171 -1.24413 -0.665748 -0.992115 0.0627895
--0.168279 -1.33205 -0.579736 -0.992115 0.125332
--0.178693 -1.41449 -0.493381 -0.992115 0.18738
--0.18824 -1.49006 -0.407957 -0.992115 0.248689
--0.196756 -1.55747 -0.324691 -0.992115 0.309016
--0.204089 -1.61552 -0.244738 -0.992115 0.368124
--0.210103 -1.66312 -0.169173 -0.992115 0.425778
--0.214679 -1.69934 -0.098965 -0.992115 0.481753
--0.217716 -1.72339 -0.0349685 -0.992115 0.535826
--0.219136 -1.73462 0.0220908 -0.992115 0.587784
--0.21888 -1.7326 0.0716263 -0.992115 0.637423
--0.216917 -1.71706 0.113198 -0.992115 0.684546
--0.213235 -1.68792 0.146519 -0.992115 0.728968
--0.207849 -1.64528 0.171458 -0.992115 0.770513
--0.200799 -1.58948 0.18804 -0.992115 0.809016
--0.192146 -1.52098 0.196443 -0.992115 0.844327
--0.181977 -1.44048 0.196995 -0.992115 0.876306
--0.170398 -1.34882 0.190168 -0.992115 0.904827
--0.157537 -1.24702 0.176565 -0.992115 0.929776
--0.143541 -1.13623 0.156912 -0.992115 0.951056
--0.128572 -1.01774 0.132045 -0.992115 0.968583
--0.112808 -0.892957 0.102889 -0.992115 0.982287
--0.0964361 -0.763365 0.0704483 -0.992115 0.992115
--0.079655 -0.630529 0.0357852 -0.992115 0.998027
--0.0313957 -0.499013 0 -0.998027 1
--0.0229599 -0.364931 -0.0400241 -0.998027 0.998027
--0.0146252 -0.232457 -0.0788758 -0.998027 0.992115
--0.00649122 -0.103173 -0.115403 -0.998027 0.982287
-0.0013452 0.021381 -0.148496 -0.998027 0.968583
-0.00879167 0.139737 -0.177103 -0.998027 0.951057
-0.0157614 0.250517 -0.200253 -0.998027 0.929777
-0.0221746 0.352449 -0.217072 -0.998027 0.904827
-0.0279593 0.444393 -0.226798 -0.998027 0.876307
-0.0330528 0.52535 -0.228795 -0.998027 0.844328
-0.0374022 0.594482 -0.222565 -0.998027 0.809017
-0.0409654 0.651116 -0.207759 -0.998027 0.770513
-0.0437113 0.694761 -0.184182 -0.998027 0.728969
-0.0456207 0.72511 -0.151801 -0.998027 0.684547
-0.046686 0.742042 -0.110741 -0.998027 0.637424
-0.0469116 0.745626 -0.0612945 -0.998027 0.587785
-0.0463133 0.736117 -0.00390778 -0.998027 0.535827
-0.0449186 0.71395 0.0608182 -0.998027 0.481754
-0.0427658 0.679733 0.132138 -0.998027 0.42578
-0.0399033 0.634235 0.209173 -0.998027 0.368125
-0.0363889 0.578377 0.290924 -0.998027 0.309017
-0.0322889 0.51321 0.376284 -0.998027 0.24869
-0.0276768 0.439903 0.464058 -0.998027 0.187382
-0.0226323 0.359725 0.552981 -0.998027 0.125334
-0.0172401 0.274019 0.641734 -0.998027 0.0627908
-0.011588 0.184183 0.728969 -0.998027 3.26795e-07
-0.00576629 0.0916512 0.813327 -0.998027 -0.0627902
--0.000134234 -0.00213356 0.89346 -0.998027 -0.125333
--0.00602354 -0.09574 0.968055 -0.998027 -0.187381
--0.0118137 -0.187771 1.03585 -0.998027 -0.24869
--0.0174205 -0.276887 1.09566 -0.998027 -0.309017
--0.0227643 -0.361822 1.14638 -0.998027 -0.368124
--0.0277716 -0.441411 1.18704 -0.998027 -0.425779
--0.0323763 -0.514598 1.21678 -0.998027 -0.481753
--0.0365201 -0.580461 1.23489 -0.998027 -0.535826
--0.0401539 -0.638218 1.24079 -0.998027 -0.587785
--0.0432385 -0.687245 1.2341 -0.998027 -0.637424
--0.0457447 -0.72708 1.21459 -0.998027 -0.684547
--0.0476541 -0.757428 1.18221 -0.998027 -0.728968
--0.0489592 -0.778172 1.13708 -0.998027 -0.770513
--0.0496633 -0.789363 1.07952 -0.998027 -0.809017
--0.0497806 -0.791228 1.01 -0.998027 -0.844328
--0.0493356 -0.784156 0.929166 -0.998027 -0.876306
--0.0483629 -0.768695 0.837833 -0.998027 -0.904827
--0.0469062 -0.745541 0.736957 -0.998027 -0.929776
--0.0450178 -0.715526 0.627631 -0.998027 -0.951056
--0.0427575 -0.6796 0.511071 -0.998027 -0.968583
--0.0401916 -0.638817 0.388595 -0.998027 -0.982287
--0.0373918 -0.594316 0.261605 -0.998027 -0.992115
--0.0344337 -0.547299 0.13157 -0.998027 -0.998027
--0.0313958 -0.499014 1.37127e-06 -0.998027 -1
--0.0283579 -0.450728 -0.131567 -0.998027 -0.998027
--0.0253998 -0.403712 -0.261602 -0.998027 -0.992115
--0.0225999 -0.35921 -0.388592 -0.998027 -0.982287
--0.0200341 -0.318427 -0.511069 -0.998027 -0.968583
--0.0177737 -0.282501 -0.627629 -0.998027 -0.951057
--0.0158853 -0.252486 -0.736955 -0.998027 -0.929777
--0.0144286 -0.229332 -0.837831 -0.998027 -0.904827
--0.0134559 -0.213871 -0.929164 -0.998027 -0.876307
--0.0130109 -0.206799 -1.01 -0.998027 -0.844328
--0.0131282 -0.208663 -1.07952 -0.998027 -0.809017
--0.0138323 -0.219855 -1.13708 -0.998027 -0.770514
--0.0151374 -0.240598 -1.18221 -0.998027 -0.728969
--0.0170468 -0.270946 -1.21459 -0.998027 -0.684548
--0.0195529 -0.31078 -1.2341 -0.998027 -0.637425
--0.0226375 -0.359807 -1.24079 -0.998027 -0.587786
--0.0262713 -0.417565 -1.23489 -0.998027 -0.535828
--0.0304151 -0.483427 -1.21678 -0.998027 -0.481754
--0.0350198 -0.556615 -1.18704 -0.998027 -0.42578
--0.0400271 -0.636203 -1.14638 -0.998027 -0.368125
--0.0453709 -0.721138 -1.09566 -0.998027 -0.309018
--0.0509776 -0.810254 -1.03585 -0.998027 -0.248691
--0.0567678 -0.902285 -0.968056 -0.998027 -0.187382
--0.0626571 -0.995891 -0.893462 -0.998027 -0.125334
--0.0685577 -1.08968 -0.813328 -0.998027 -0.0627915
--0.0743794 -1.18221 -0.72897 -0.998027 -9.80385e-07
--0.0800314 -1.27204 -0.641735 -0.998027 0.0627895
--0.0854237 -1.35775 -0.552982 -0.998027 0.125332
--0.0904682 -1.43793 -0.46406 -0.998027 0.18738
--0.0950803 -1.51123 -0.376286 -0.998027 0.248689
--0.0991803 -1.5764 -0.290926 -0.998027 0.309016
--0.102695 -1.63226 -0.209175 -0.998027 0.368124
--0.105557 -1.67776 -0.13214 -0.998027 0.425778
--0.10771 -1.71198 -0.0608196 -0.998027 0.481753
--0.109105 -1.73414 0.0039065 -0.998027 0.535826
--0.109703 -1.74365 0.0612934 -0.998027 0.587784
--0.109478 -1.74007 0.110741 -0.998027 0.637423
--0.108412 -1.72314 0.1518 -0.998027 0.684546
--0.106503 -1.69279 0.184182 -0.998027 0.728968
--0.103757 -1.64914 0.207759 -0.998027 0.770513
--0.100194 -1.59251 0.222565 -0.998027 0.809016
--0.0958443 -1.52338 0.228795 -0.998027 0.844327
--0.0907509 -1.44242 0.226799 -0.998027 0.876306
--0.0849662 -1.35048 0.217073 -0.998027 0.904827
--0.078553 -1.24855 0.200254 -0.998027 0.929776
--0.0715833 -1.13777 0.177103 -0.998027 0.951056
--0.0641368 -1.01941 0.148496 -0.998027 0.968583
--0.0563004 -0.894856 0.115404 -0.998027 0.982287
--0.0481665 -0.765573 0.0788766 -0.998027 0.992115
--0.0398318 -0.633098 0.0400249 -0.998027 0.998027
--4.90192e-07 -0.5 0 -1 1
--3.59778e-07 -0.366976 -0.0442243 -1 0.998027
--2.30906e-07 -0.235526 -0.0872262 -1 0.992115
--1.05095e-07 -0.107198 -0.127805 -1 0.982287
-1.61779e-08 0.0165016 -0.164801 -1 0.968583
-1.31504e-07 0.134135 -0.197119 -1 0.951057
-2.39558e-07 0.244351 -0.223744 -1 0.929777
-3.39121e-07 0.345907 -0.243763 -1 0.904827
-4.29096e-07 0.437681 -0.256378 -1 0.876307
-5.08522e-07 0.518696 -0.260922 -1 0.844328
-5.76589e-07 0.588125 -0.256871 -1 0.809017
-6.32651e-07 0.645309 -0.243855 -1 0.770513
-6.7623e-07 0.689759 -0.221663 -1 0.728969
-7.07024e-07 0.72117 -0.190252 -1 0.684547
-7.24913e-07 0.739417 -0.149746 -1 0.637424
-7.29955e-07 0.74456 -0.100437 -1 0.587785
-7.22386e-07 0.736839 -0.0427789 -1 0.535827
-7.02615e-07 0.716672 0.0226127 -1 0.481754
-6.71215e-07 0.684645 0.0949745 -1 0.42578
-6.28916e-07 0.641499 0.173404 -1 0.368125
-5.76589e-07 0.588126 0.256872 -1 0.309017
-5.15234e-07 0.525543 0.344241 -1 0.24869
-4.45963e-07 0.454885 0.434279 -1 0.187382
-3.69979e-07 0.377381 0.525681 -1 0.125334
-2.88562e-07 0.294336 0.617087 -1 0.0627908
-2.03044e-07 0.207107 0.707107 -1 3.26795e-07
-1.14791e-07 0.117088 0.794335 -1 -0.0627902
-2.51771e-08 0.0256808 0.877381 -1 -0.125333
--6.44322e-08 -0.0657213 0.954885 -1 -0.187381
--1.52704e-07 -0.15576 1.02554 -1 -0.24869
--2.38359e-07 -0.243128 1.08813 -1 -0.309017
--3.2019e-07 -0.326597 1.1415 -1 -0.368124
--3.97081e-07 -0.405026 1.18464 -1 -0.425779
--4.68024e-07 -0.477388 1.21667 -1 -0.481753
--5.32133e-07 -0.54278 1.23684 -1 -0.535826
--5.8866e-07 -0.600437 1.24456 -1 -0.587785
--6.37002e-07 -0.649747 1.23942 -1 -0.637424
--6.76714e-07 -0.690253 1.22117 -1 -0.684547
--7.07508e-07 -0.721664 1.18976 -1 -0.728968
--7.29265e-07 -0.743856 1.14531 -1 -0.770513
--7.42026e-07 -0.756872 1.08813 -1 -0.809017
--7.45997e-07 -0.760923 1.0187 -1 -0.844328
--7.41543e-07 -0.756379 0.937682 -1 -0.876306
--7.29175e-07 -0.743764 0.845907 -1 -0.904827
--7.09549e-07 -0.723745 0.744352 -1 -0.929776
--6.83445e-07 -0.69712 0.634136 -1 -0.951056
--6.51761e-07 -0.664802 0.516503 -1 -0.968583
--6.15491e-07 -0.627805 0.392803 -1 -0.982287
--5.75708e-07 -0.587227 0.264476 -1 -0.992115
--5.3355e-07 -0.544225 0.133025 -1 -0.998027
--4.90193e-07 -0.5 1.38647e-06 -1 -1
--4.46836e-07 -0.455776 -0.133022 -1 -0.998027
--4.04677e-07 -0.412774 -0.264473 -1 -0.992115
--3.64895e-07 -0.372195 -0.392801 -1 -0.982287
--3.28624e-07 -0.335199 -0.5165 -1 -0.968583
--2.9694e-07 -0.302881 -0.634134 -1 -0.951057
--2.70837e-07 -0.276255 -0.74435 -1 -0.929777
--2.5121e-07 -0.256236 -0.845905 -1 -0.904827
--2.38842e-07 -0.243621 -0.93768 -1 -0.876307
--2.34387e-07 -0.239077 -1.0187 -1 -0.844328
--2.38359e-07 -0.243128 -1.08812 -1 -0.809017
--2.5112e-07 -0.256144 -1.14531 -1 -0.770514
--2.72876e-07 -0.278336 -1.18976 -1 -0.728969
--3.0367e-07 -0.309746 -1.22117 -1 -0.684548
--3.43382e-07 -0.350252 -1.23942 -1 -0.637425
--3.91724e-07 -0.399562 -1.24456 -1 -0.587786
--4.48251e-07 -0.457219 -1.23684 -1 -0.535828
--5.1236e-07 -0.522611 -1.21667 -1 -0.481754
--5.83302e-07 -0.594973 -1.18465 -1 -0.42578
--6.60193e-07 -0.673402 -1.1415 -1 -0.368125
--7.42024e-07 -0.75687 -1.08813 -1 -0.309018
--8.27679e-07 -0.844239 -1.02554 -1 -0.248691
--9.15951e-07 -0.934277 -0.954887 -1 -0.187382
--1.00556e-06 -1.02568 -0.877383 -1 -0.125334
--1.09517e-06 -1.11709 -0.794337 -1 -0.0627915
--1.18343e-06 -1.20711 -0.707109 -1 -9.80385e-07
--1.26895e-06 -1.29433 -0.617089 -1 0.0627895
--1.35036e-06 -1.37738 -0.525683 -1 0.125332
--1.42635e-06 -1.45488 -0.434281 -1 0.18738
--1.49562e-06 -1.52554 -0.344242 -1 0.248689
--1.55697e-06 -1.58812 -0.256874 -1 0.309016
--1.6093e-06 -1.6415 -0.173405 -1 0.368124
--1.6516e-06 -1.68464 -0.0949761 -1 0.425778
--1.683e-06 -1.71667 -0.0226142 -1 0.481753
--1.70277e-06 -1.73684 0.0427777 -1 0.535826
--1.71034e-06 -1.74456 0.100436 -1 0.587784
--1.7053e-06 -1.73942 0.149745 -1 0.637423
--1.68741e-06 -1.72117 0.190252 -1 0.684546
--1.65662e-06 -1.68976 0.221662 -1 0.728968
--1.61304e-06 -1.64531 0.243854 -1 0.770513
--1.55698e-06 -1.58813 0.256871 -1 0.809016
--1.48891e-06 -1.5187 0.260922 -1 0.844327
--1.40948e-06 -1.43768 0.256378 -1 0.876306
--1.31951e-06 -1.34591 0.243764 -1 0.904827
--1.21995e-06 -1.24435 0.223745 -1 0.929776
--1.11189e-06 -1.13414 0.197119 -1 0.951056
--9.96565e-07 -1.0165 0.164801 -1 0.968583
--8.75292e-07 -0.892805 0.127805 -1 0.982287
--7.49482e-07 -0.764477 0.0872271 -1 0.992115
--6.20609e-07 -0.633026 0.0442252 -1 0.998027
-0.0313948 -0.499013 0 -0.998027 1
-0.0231336 -0.367704 -0.0483809 -0.998027 0.998027
-0.0149688 -0.237926 -0.0954905 -0.998027 0.992115
-0.00699515 -0.111186 -0.14008 -0.998027 0.982287
--0.000695093 0.0110484 -0.180943 -0.998027 0.968583
--0.00801385 0.127379 -0.21694 -0.998027 0.951057
--0.0148784 0.236488 -0.247014 -0.998027 0.929777
--0.0212123 0.337166 -0.270214 -0.998027 0.904827
--0.0269471 0.428319 -0.285705 -0.998027 0.876307
--0.0320225 0.508991 -0.292791 -0.998027 0.844328
--0.0363878 0.578376 -0.290923 -0.998027 0.809017
--0.0400022 0.635827 -0.279709 -0.998027 0.770513
--0.0428356 0.680864 -0.258925 -0.998027 0.728969
--0.0448689 0.713182 -0.228516 -0.998027 0.684547
--0.0460939 0.732653 -0.188603 -0.998027 0.637424
--0.0465139 0.739329 -0.13948 -0.998027 0.587785
--0.0461431 0.733435 -0.0816079 -0.998027 0.535827
--0.0450064 0.715368 -0.015615 -0.998027 0.481754
--0.0431391 0.685688 0.0577171 -0.998027 0.42578
--0.0405861 0.645107 0.137463 -0.998027 0.368125
--0.037401 0.594482 0.222566 -0.998027 0.309017
--0.0336458 0.534793 0.311858 -0.998027 0.24869
--0.029389 0.467132 0.404071 -0.998027 0.187382
--0.0247052 0.392684 0.497862 -0.998027 0.125334
--0.0196736 0.312709 0.591832 -0.998027 0.0627908
--0.0143768 0.228517 0.684547 -0.998027 3.26795e-07
--0.0088994 0.141454 0.77456 -0.998027 -0.0627902
--0.00332663 0.0528761 0.860436 -0.998027 -0.125333
-0.00225678 -0.035871 0.940773 -0.998027 -0.187381
-0.00776809 -0.123472 1.01422 -0.998027 -0.24869
-0.0131278 -0.208664 1.07952 -0.998027 -0.309017
-0.0182609 -0.290253 1.13549 -0.998027 -0.368124
-0.0230979 -0.367136 1.18108 -0.998027 -0.425779
-0.027576 -0.438316 1.21536 -0.998027 -0.481753
-0.0316402 -0.502914 1.23757 -0.998027 -0.535826
-0.0352435 -0.560188 1.2471 -0.998027 -0.587785
-0.0383482 -0.609537 1.24351 -0.998027 -0.637424
-0.0409263 -0.650515 1.22654 -0.998027 -0.684547
-0.0429595 -0.682833 1.19614 -0.998027 -0.728968
-0.0444399 -0.706364 1.1524 -0.998027 -0.770513
-0.0453696 -0.721141 1.09566 -0.998027 -0.809017
-0.0457608 -0.727358 1.02639 -0.998027 -0.844328
-0.0456354 -0.725365 0.945272 -0.998027 -0.876306
-0.0450247 -0.715658 0.853147 -0.998027 -0.904827
-0.0439686 -0.698872 0.751013 -0.998027 -0.929776
-0.042515 -0.675767 0.640015 -0.998027 -0.951056
-0.0407188 -0.647217 0.521424 -0.998027 -0.968583
-0.0386409 -0.61419 0.396624 -0.998027 -0.982287
-0.0363474 -0.577734 0.267085 -0.998027 -0.992115
-0.0339079 -0.538959 0.134348 -0.998027 -0.998027
-0.0313948 -0.499014 1.40031e-06 -0.998027 -1
-0.0288817 -0.459069 -0.134346 -0.998027 -0.998027
-0.0264422 -0.420293 -0.267082 -0.998027 -0.992115
-0.0241486 -0.383838 -0.396621 -0.998027 -0.982287
-0.0220708 -0.350811 -0.521422 -0.998027 -0.968583
-0.0202745 -0.32226 -0.640012 -0.998027 -0.951057
-0.0188209 -0.299155 -0.751011 -0.998027 -0.929777
-0.0177648 -0.282369 -0.853145 -0.998027 -0.904827
-0.0171541 -0.272662 -0.94527 -0.998027 -0.876307
-0.0170287 -0.270669 -1.02639 -0.998027 -0.844328
-0.0174199 -0.276886 -1.09566 -0.998027 -0.809017
-0.0183496 -0.291663 -1.1524 -0.998027 -0.770514
-0.0198299 -0.315193 -1.19613 -0.998027 -0.728969
-0.0218632 -0.347511 -1.22654 -0.998027 -0.684548
-0.0244413 -0.388489 -1.24351 -0.998027 -0.637425
-0.027546 -0.437838 -1.2471 -0.998027 -0.587786
-0.0311493 -0.495111 -1.23757 -0.998027 -0.535828
-0.0352134 -0.55971 -1.21536 -0.998027 -0.481754
-0.0396915 -0.630889 -1.18108 -0.998027 -0.42578
-0.0445285 -0.707772 -1.13549 -0.998027 -0.368125
-0.0496616 -0.789361 -1.07952 -0.998027 -0.309018
-0.0550213 -0.874553 -1.01423 -0.998027 -0.248691
-0.0605326 -0.962154 -0.940775 -0.998027 -0.187382
-0.066116 -1.0509 -0.860438 -0.998027 -0.125334
-0.0716888 -1.13948 -0.774562 -0.998027 -0.0627915
-0.0771663 -1.22654 -0.684549 -0.998027 -9.80385e-07
-0.0824631 -1.31073 -0.591834 -0.998027 0.0627895
-0.0874946 -1.39071 -0.497864 -0.998027 0.125332
-0.0921784 -1.46516 -0.404073 -0.998027 0.18738
-0.0964352 -1.53282 -0.311859 -0.998027 0.248689
-0.10019 -1.59251 -0.222568 -0.998027 0.309016
-0.103376 -1.64313 -0.137464 -0.998027 0.368124
-0.105929 -1.68371 -0.0577187 -0.998027 0.425778
-0.107796 -1.71339 0.0156136 -0.998027 0.481753
-0.108933 -1.73146 0.0816066 -0.998027 0.535826
-0.109303 -1.73736 0.139479 -0.998027 0.587784
-0.108883 -1.73068 0.188603 -0.998027 0.637423
-0.107658 -1.71121 0.228516 -0.998027 0.684546
-0.105625 -1.67889 0.258924 -0.998027 0.728968
-0.102792 -1.63385 0.279709 -0.998027 0.770513
-0.0991774 -1.5764 0.290923 -0.998027 0.809016
-0.0948121 -1.50702 0.292791 -0.998027 0.844327
-0.0897367 -1.42635 0.285705 -0.998027 0.876306
-0.084002 -1.33519 0.270214 -0.998027 0.904827
-0.077668 -1.23452 0.247015 -0.998027 0.929776
-0.0708035 -1.12541 0.216941 -0.998027 0.951056
-0.0634848 -1.00908 0.180944 -0.998027 0.968583
-0.0557945 -0.886843 0.140081 -0.998027 0.982287
-0.0478209 -0.760104 0.0954914 -0.998027 0.992115
-0.0396561 -0.630325 0.0483818 -0.998027 0.998027
-0.0626661 -0.496057 0 -0.992115 1
-0.0463749 -0.367098 -0.0524897 -0.992115 0.998027
-0.0302708 -0.23962 -0.103661 -0.992115 0.992115
-0.0145383 -0.115083 -0.152217 -0.992115 0.982287
--0.000643513 0.00509397 -0.196907 -0.992115 0.968583
--0.0151033 0.119556 -0.236547 -0.992115 0.951057
--0.0286802 0.227029 -0.270041 -0.992115 0.929777
--0.0412257 0.326338 -0.296397 -0.992115 0.904827
--0.0526061 0.416423 -0.31475 -0.992115 0.876307
--0.062704 0.496358 -0.324372 -0.992115 0.844328
--0.0714205 0.565356 -0.324688 -0.992115 0.809017
--0.0786757 0.622787 -0.315288 -0.992115 0.770513
--0.0844104 0.668183 -0.295931 -0.992115 0.728969
--0.0885866 0.701241 -0.266555 -0.992115 0.684547
--0.0911878 0.721832 -0.227275 -0.992115 0.637424
--0.0922192 0.729996 -0.178385 -0.992115 0.587785
--0.0917072 0.725943 -0.120356 -0.992115 0.535827
--0.0896992 0.710048 -0.0538274 -0.992115 0.481754
--0.0862625 0.682843 0.0204027 -0.992115 0.42578
--0.0814829 0.645008 0.101386 -0.992115 0.368125
--0.0754635 0.59736 0.188041 -0.992115 0.309017
--0.0683229 0.540836 0.279167 -0.992115 0.24869
--0.0601933 0.476483 0.373464 -0.992115 0.187382
--0.051218 0.405436 0.469552 -0.992115 0.125334
--0.0415496 0.328901 0.565993 -0.992115 0.0627908
--0.031347 0.248139 0.661312 -0.992115 3.26795e-07
--0.0207734 0.16444 0.754021 -0.992115 -0.0627902
--0.00999333 0.079106 0.842642 -0.992115 -0.125333
-0.000829769 -0.00656835 0.925732 -0.992115 -0.187381
-0.0115361 -0.0913187 1.0019 -0.992115 -0.24869
-0.0219722 -0.173929 1.06985 -0.992115 -0.309017
-0.0319928 -0.253251 1.12836 -0.992115 -0.368124
-0.0414635 -0.32822 1.17634 -0.992115 -0.425779
-0.0502628 -0.397875 1.21285 -0.992115 -0.481753
-0.0582837 -0.461366 1.23708 -0.992115 -0.535826
-0.065435 -0.517976 1.24841 -0.992115 -0.587785
-0.0716434 -0.567121 1.24637 -0.992115 -0.637424
-0.0768537 -0.608365 1.23071 -0.992115 -0.684547
-0.0810299 -0.641423 1.20133 -0.992115 -0.728968
-0.0841556 -0.666165 1.15836 -0.992115 -0.770513
-0.0862337 -0.682616 1.10211 -0.992115 -0.809017
-0.0872869 -0.690952 1.03307 -0.992115 -0.844328
-0.087356 -0.6915 0.95193 -0.992115 -0.876306
-0.0865003 -0.684726 0.859544 -0.992115 -0.904827
-0.0847954 -0.671231 0.756932 -0.992115 -0.929776
-0.0823324 -0.651733 0.645262 -0.992115 -0.951056
-0.0792156 -0.627061 0.525831 -0.992115 -0.968583
-0.0755614 -0.598135 0.400053 -0.992115 -0.982287
-0.0714955 -0.56595 0.269431 -0.992115 -0.992115
-0.0671511 -0.53156 0.135539 -0.992115 -0.998027
-0.0626662 -0.496058 1.41276e-06 -0.992115 -1
-0.0581812 -0.460555 -0.135537 -0.992115 -0.998027
-0.0538368 -0.426165 -0.269428 -0.992115 -0.992115
-0.0497709 -0.393981 -0.40005 -0.992115 -0.982287
-0.0461167 -0.365054 -0.525829 -0.992115 -0.968583
-0.0429999 -0.340382 -0.645259 -0.992115 -0.951057
-0.0405368 -0.320885 -0.75693 -0.992115 -0.929777
-0.0388319 -0.307389 -0.859542 -0.992115 -0.904827
-0.0379762 -0.300615 -0.951928 -0.992115 -0.876307
-0.0380454 -0.301163 -1.03307 -0.992115 -0.844328
-0.0390985 -0.309499 -1.10211 -0.992115 -0.809017
-0.0411766 -0.325949 -1.15836 -0.992115 -0.770514
-0.0443022 -0.350691 -1.20133 -0.992115 -0.728969
-0.0484784 -0.383749 -1.23071 -0.992115 -0.684548
-0.0536887 -0.424993 -1.24637 -0.992115 -0.637425
-0.0598971 -0.474138 -1.24841 -0.992115 -0.587786
-0.0670484 -0.530747 -1.23709 -0.992115 -0.535828
-0.0750692 -0.594239 -1.21285 -0.992115 -0.481754
-0.0838685 -0.663893 -1.17634 -0.992115 -0.42578
-0.0933393 -0.738862 -1.12836 -0.992115 -0.368125
-0.10336 -0.818184 -1.06985 -0.992115 -0.309018
-0.113796 -0.900794 -1.00191 -0.992115 -0.248691
-0.124502 -0.985545 -0.925734 -0.992115 -0.187382
-0.135325 -1.07122 -0.842644 -0.992115 -0.125334
-0.146105 -1.15655 -0.754022 -0.992115 -0.0627915
-0.156679 -1.24025 -0.661314 -0.992115 -9.80385e-07
-0.166882 -1.32101 -0.565995 -0.992115 0.0627895
-0.17655 -1.39755 -0.469554 -0.992115 0.125332
-0.185525 -1.4686 -0.373466 -0.992115 0.18738
-0.193655 -1.53295 -0.279169 -0.992115 0.248689
-0.200796 -1.58947 -0.188043 -0.992115 0.309016
-0.206815 -1.63712 -0.101388 -0.992115 0.368124
-0.211595 -1.67496 -0.0204043 -0.992115 0.425778
-0.215031 -1.70216 0.0538259 -0.992115 0.481753
-0.217039 -1.71806 0.120355 -0.992115 0.535826
-0.217551 -1.72211 0.178384 -0.992115 0.587784
-0.21652 -1.71395 0.227274 -0.992115 0.637423
-0.213919 -1.69336 0.266554 -0.992115 0.684546
-0.209743 -1.6603 0.295931 -0.992115 0.728968
-0.204008 -1.6149 0.315288 -0.992115 0.770513
-0.196753 -1.55747 0.324688 -0.992115 0.809016
-0.188036 -1.48847 0.324372 -0.992115 0.844327
-0.177939 -1.40854 0.31475 -0.992115 0.876306
-0.166558 -1.31845 0.296398 -0.992115 0.904827
-0.154013 -1.21915 0.270041 -0.992115 0.929776
-0.140436 -1.11167 0.236548 -0.992115 0.951056
-0.125976 -0.997211 0.196908 -0.992115 0.968583
-0.110794 -0.877034 0.152218 -0.992115 0.982287
-0.0950618 -0.752497 0.103662 -0.992115 0.992115
-0.0789577 -0.625019 0.0524907 -0.992115 0.998027
-0.0936902 -0.491144 0 -0.982287 1
-0.0696546 -0.365144 -0.0565467 -0.982287 0.998027
-0.045891 -0.24057 -0.111728 -0.982287 0.992115
-0.0226672 -0.118826 -0.164203 -0.982287 0.982287
-0.000243555 -0.00127677 -0.212676 -0.982287 0.968583
--0.0211309 0.110773 -0.255921 -0.982287 0.951057
--0.0412221 0.216095 -0.292801 -0.982287 0.929777
--0.0598141 0.313558 -0.322288 -0.982287 0.904827
--0.0767121 0.402141 -0.343484 -0.982287 0.876307
--0.0917452 0.480948 -0.355632 -0.982287 0.844328
--0.104769 0.549219 -0.358133 -0.982287 0.809017
--0.115666 0.606344 -0.350555 -0.982287 0.770513
--0.124349 0.651864 -0.332646 -0.982287 0.728969
--0.130763 0.685486 -0.30433 -0.982287 0.684547
--0.134881 0.707074 -0.265721 -0.982287 0.637424
--0.13671 0.716662 -0.217114 -0.982287 0.587785
--0.136286 0.714442 -0.158986 -0.982287 0.535827
--0.133677 0.700765 -0.0919866 -0.982287 0.481754
--0.128979 0.676133 -0.0169319 -0.982287 0.42578
--0.122313 0.64119 0.0652095 -0.982287 0.368125
--0.113828 0.59671 0.15333 -0.982287 0.309017
--0.103694 0.543586 0.246201 -0.982287 0.24869
--0.0921006 0.482811 0.342489 -0.982287 0.187382
--0.0792541 0.415467 0.440779 -0.982287 0.125334
--0.0653739 0.342704 0.539595 -0.982287 0.0627908
--0.0506889 0.265722 0.637424 -0.982287 3.26795e-07
--0.0354341 0.185753 0.732737 -0.982287 -0.0627902
--0.0198467 0.104041 0.824016 -0.982287 -0.125333
--0.00416245 0.0218205 0.909778 -0.982287 -0.187381
-0.0113881 -0.0596987 0.988596 -0.982287 -0.24869
-0.026583 -0.139354 1.05912 -0.982287 -0.309017
-0.0412128 -0.216046 1.12011 -0.982287 -0.368124
-0.0550828 -0.288756 1.17045 -0.982287 -0.425779
-0.068017 -0.35656 1.20914 -0.982287 -0.481753
-0.0798601 -0.418644 1.23538 -0.982287 -0.535826
-0.09048 -0.474315 1.24849 -0.982287 -0.587785
-0.0997694 -0.523012 1.24801 -0.982287 -0.637424
-0.107647 -0.564311 1.23366 -0.982287 -0.684547
-0.114061 -0.597932 1.20534 -0.982287 -0.728968
-0.118985 -0.623743 1.16318 -0.982287 -0.770513
-0.122421 -0.641758 1.10747 -0.982287 -0.809017
-0.124401 -0.652138 1.03873 -0.982287 -0.844328
-0.124982 -0.655184 0.957648 -0.982287 -0.876306
-0.124247 -0.651331 0.865093 -0.982287 -0.904827
-0.122304 -0.641141 0.762105 -0.982287 -0.929776
-0.11928 -0.625292 0.649872 -0.982287 -0.951056
-0.115326 -0.604562 0.52972 -0.982287 -0.968583
-0.110605 -0.579817 0.403087 -0.982287 -0.982287
-0.105298 -0.551997 0.271511 -0.982287 -0.992115
-0.0995945 -0.522095 0.136596 -0.982287 -0.998027
-0.0936902 -0.491144 1.42381e-06 -0.982287 -1
-0.0877859 -0.460193 -0.136594 -0.982287 -0.998027
-0.082082 -0.430291 -0.271508 -0.982287 -0.992115
-0.076775 -0.402471 -0.403085 -0.982287 -0.982287
-0.0720548 -0.377726 -0.529717 -0.982287 -0.968583
-0.0681002 -0.356996 -0.64987 -0.982287 -0.951057
-0.0650768 -0.341146 -0.762103 -0.982287 -0.929777
-0.063133 -0.330957 -0.865091 -0.982287 -0.904827
-0.0623981 -0.327104 -0.957646 -0.982287 -0.876307
-0.062979 -0.330149 -1.03873 -0.982287 -0.844328
-0.064959 -0.340529 -1.10747 -0.982287 -0.809017
-0.0683956 -0.358544 -1.16317 -0.982287 -0.770514
-0.0733192 -0.384355 -1.20534 -0.982287 -0.728969
-0.0797327 -0.417976 -1.23365 -0.982287 -0.684548
-0.0876108 -0.459274 -1.24801 -0.982287 -0.637425
-0.0969001 -0.507971 -1.24849 -0.982287 -0.587786
-0.10752 -0.563642 -1.23538 -0.982287 -0.535828
-0.119363 -0.625726 -1.20915 -0.982287 -0.481754
-0.132297 -0.69353 -1.17045 -0.982287 -0.42578
-0.146167 -0.76624 -1.12012 -0.982287 -0.368125
-0.160797 -0.842932 -1.05912 -0.982287 -0.309018
-0.175992 -0.922587 -0.988597 -0.982287 -0.248691
-0.191542 -1.00411 -0.90978 -0.982287 -0.187382
-0.207227 -1.08633 -0.824018 -0.982287 -0.125334
-0.222814 -1.16804 -0.732739 -0.982287 -0.0627915
-0.238069 -1.24801 -0.637426 -0.982287 -9.80385e-07
-0.252754 -1.32499 -0.539597 -0.982287 0.0627895
-0.266634 -1.39775 -0.440781 -0.982287 0.125332
-0.279481 -1.4651 -0.342491 -0.982287 0.18738
-0.291074 -1.52587 -0.246203 -0.982287 0.248689
-0.301208 -1.579 -0.153332 -0.982287 0.309016
-0.309693 -1.62348 -0.0652113 -0.982287 0.368124
-0.316359 -1.65842 0.0169302 -0.982287 0.425778
-0.321058 -1.68305 0.0919851 -0.982287 0.481753
-0.323667 -1.69673 0.158985 -0.982287 0.535826
-0.32409 -1.69895 0.217113 -0.982287 0.587784
-0.322261 -1.68936 0.26572 -0.982287 0.637423
-0.318143 -1.66777 0.30433 -0.982287 0.684546
-0.31173 -1.63415 0.332645 -0.982287 0.728968
-0.303046 -1.58863 0.350555 -0.982287 0.770513
-0.292149 -1.53151 0.358133 -0.982287 0.809016
-0.279126 -1.46324 0.355632 -0.982287 0.844327
-0.264093 -1.38443 0.343484 -0.982287 0.876306
-0.247195 -1.29585 0.322289 -0.982287 0.904827
-0.228603 -1.19838 0.292801 -0.982287 0.929776
-0.208512 -1.09306 0.255922 -0.982287 0.951056
-0.187137 -0.981013 0.212677 -0.982287 0.968583
-0.164714 -0.863464 0.164204 -0.982287 0.982287
-0.14149 -0.74172 0.111729 -0.982287 0.992115
-0.117726 -0.617146 0.0565478 -0.982287 0.998027
-0.124344 -0.484292 0 -0.968583 1
-0.0929022 -0.361832 -0.0605479 -0.968583 0.998027
-0.06181 -0.240735 -0.119686 -0.968583 0.992115
-0.0314128 -0.122345 -0.176028 -0.968583 0.982287
-0.00204576 -0.00796775 -0.228236 -0.968583 0.968583
--0.0259704 0.101148 -0.275042 -0.968583 0.951057
--0.0523339 0.203828 -0.315272 -0.968583 0.929777
--0.0767665 0.298987 -0.347861 -0.968583 0.904827
--0.0990166 0.385646 -0.371879 -0.968583 0.876307
--0.118864 0.462945 -0.386541 -0.968583 0.844328
--0.13612 0.530155 -0.391224 -0.968583 0.809017
--0.150634 0.586685 -0.385477 -0.968583 0.770513
--0.162293 0.632094 -0.369032 -0.968583 0.728969
--0.171022 0.666091 -0.341805 -0.968583 0.684547
--0.176787 0.688543 -0.303906 -0.968583 0.637424
--0.179593 0.69947 -0.255629 -0.968583 0.587785
--0.179485 0.699051 -0.197459 -0.968583 0.535827
--0.176547 0.68761 -0.130055 -0.968583 0.481754
--0.170901 0.665617 -0.0542497 -0.968583 0.42578
--0.1627 0.633678 0.0289685 -0.968583 0.368125
--0.152133 0.592521 0.118468 -0.968583 0.309017
--0.139415 0.542989 0.212991 -0.968583 0.24869
--0.124788 0.486021 0.311175 -0.968583 0.187382
--0.108515 0.42264 0.411571 -0.968583 0.125334
--0.0908743 0.353934 0.512665 -0.968583 0.0627908
--0.0721583 0.281039 0.612907 -0.968583 3.26795e-07
--0.0526669 0.205125 0.71073 -0.968583 -0.0627902
--0.0327028 0.127369 0.804577 -0.968583 -0.125333
--0.012567 0.0489455 0.892926 -0.968583 -0.187381
-0.0074456 -0.0289988 0.974311 -0.968583 -0.24869
-0.0270513 -0.105358 1.04735 -0.968583 -0.309017
-0.0459817 -0.179087 1.11076 -0.968583 -0.368124
-0.0639875 -0.249216 1.1634 -0.968583 -0.425779
-0.0808429 -0.314864 1.20424 -0.968583 -0.481753
-0.0963483 -0.375254 1.23245 -0.968583 -0.535826
-0.110333 -0.429722 1.24733 -0.968583 -0.587785
-0.12266 -0.477731 1.24841 -0.968583 -0.637424
-0.133223 -0.51887 1.23539 -0.968583 -0.684547
-0.141952 -0.552867 1.20816 -0.968583 -0.728968
-0.148812 -0.579588 1.16684 -0.968583 -0.770513
-0.153806 -0.599038 1.11174 -0.968583 -0.809017
-0.15697 -0.611359 1.04337 -0.968583 -0.844328
-0.158374 -0.616828 0.962421 -0.968583 -0.876306
-0.158122 -0.615846 0.869789 -0.968583 -0.904827
-0.156348 -0.608938 0.766525 -0.968583 -0.929776
-0.153214 -0.596732 0.653841 -0.968583 -0.951056
-0.148907 -0.579956 0.533085 -0.968583 -0.968583
-0.143634 -0.559421 0.405724 -0.968583 -0.982287
-0.137622 -0.536006 0.273322 -0.968583 -0.992115
-0.13111 -0.510641 0.137519 -0.968583 -0.998027
-0.124345 -0.484292 1.43346e-06 -0.968583 -1
-0.117579 -0.457943 -0.137516 -0.968583 -0.998027
-0.111067 -0.432578 -0.27332 -0.968583 -0.992115
-0.105055 -0.409163 -0.405721 -0.968583 -0.982287
-0.0997823 -0.388628 -0.533082 -0.968583 -0.968583
-0.095475 -0.371852 -0.653839 -0.968583 -0.951057
-0.092341 -0.359646 -0.766523 -0.968583 -0.929777
-0.0905671 -0.352737 -0.869787 -0.968583 -0.904827
-0.0903151 -0.351756 -0.962419 -0.968583 -0.876307
-0.0917191 -0.357224 -1.04336 -0.968583 -0.844328
-0.0948826 -0.369545 -1.11174 -0.968583 -0.809017
-0.0998765 -0.388995 -1.16684 -0.968583 -0.770514
-0.106737 -0.415716 -1.20816 -0.968583 -0.728969
-0.115466 -0.449713 -1.23539 -0.968583 -0.684548
-0.126029 -0.490852 -1.24841 -0.968583 -0.637425
-0.138355 -0.53886 -1.24733 -0.968583 -0.587786
-0.15234 -0.593329 -1.23245 -0.968583 -0.535828
-0.167846 -0.653718 -1.20425 -0.968583 -0.481754
-0.184701 -0.719366 -1.1634 -0.968583 -0.42578
-0.202707 -0.789494 -1.11077 -0.968583 -0.368125
-0.221637 -0.863224 -1.04735 -0.968583 -0.309018
-0.241243 -0.939583 -0.974313 -0.968583 -0.248691
-0.261255 -1.01753 -0.892928 -0.968583 -0.187382
-0.281391 -1.09595 -0.804579 -0.968583 -0.125334
-0.301355 -1.17371 -0.710732 -0.968583 -0.0627915
-0.320847 -1.24962 -0.612909 -0.968583 -9.80385e-07
-0.339563 -1.32252 -0.512667 -0.968583 0.0627895
-0.357204 -1.39122 -0.411573 -0.968583 0.125332
-0.373477 -1.4546 -0.311177 -0.968583 0.18738
-0.388104 -1.51157 -0.212994 -0.968583 0.248689
-0.400822 -1.5611 -0.11847 -0.968583 0.309016
-0.411389 -1.60226 -0.0289703 -0.968583 0.368124
-0.419589 -1.6342 0.054248 -0.968583 0.425778
-0.425236 -1.65619 0.130054 -0.968583 0.481753
-0.428174 -1.66763 0.197457 -0.968583 0.535826
-0.428282 -1.66805 0.255628 -0.968583 0.587784
-0.425476 -1.65713 0.303905 -0.968583 0.637423
-0.419711 -1.63467 0.341805 -0.968583 0.684546
-0.410982 -1.60068 0.369031 -0.968583 0.728968
-0.399324 -1.55527 0.385477 -0.968583 0.770513
-0.384809 -1.49874 0.391224 -0.968583 0.809016
-0.367553 -1.43153 0.386541 -0.968583 0.844327
-0.347706 -1.35423 0.37188 -0.968583 0.876306
-0.325456 -1.26757 0.347862 -0.968583 0.904827
-0.301023 -1.17241 0.315273 -0.968583 0.929776
-0.27466 -1.06973 0.275043 -0.968583 0.951056
-0.246644 -0.960618 0.228237 -0.968583 0.968583
-0.217277 -0.846241 0.176029 -0.968583 0.982287
-0.18688 -0.727851 0.119687 -0.968583 0.992115
-0.155787 -0.606754 0.0605491 -0.968583 0.998027
-0.154508 -0.475528 0 -0.951057 1
-0.116046 -0.357153 -0.0644893 -0.951057 0.998027
-0.078004 -0.240072 -0.127525 -0.951057 0.992115
-0.0407985 -0.125565 -0.187679 -0.951057 0.982287
-0.00483237 -0.0148725 -0.24357 -0.951057 0.968583
--0.0295084 0.0908179 -0.293892 -0.951057 0.951057
--0.0618606 0.190388 -0.337432 -0.951057 0.929777
--0.0918887 0.282805 -0.373091 -0.951057 0.904827
--0.11929 0.367137 -0.399907 -0.951057 0.876307
--0.143797 0.442562 -0.417069 -0.951057 0.844328
--0.165183 0.508383 -0.423929 -0.951057 0.809017
--0.183265 0.564035 -0.420018 -0.951057 0.770513
--0.197905 0.609091 -0.405053 -0.951057 0.728969
--0.20901 0.64327 -0.378943 -0.951057 0.684547
--0.216538 0.666436 -0.34179 -0.951057 0.637424
--0.220491 0.678603 -0.293892 -0.951057 0.587785
--0.220922 0.679929 -0.235737 -0.951057 0.535827
--0.217928 0.670714 -0.167995 -0.951057 0.481754
--0.21165 0.651395 -0.091514 -0.951057 0.42578
--0.202273 0.622535 -0.00730108 -0.951057 0.368125
--0.190018 0.584817 0.0834889 -0.951057 0.309017
--0.17514 0.539029 0.179572 -0.951057 0.24869
--0.157927 0.486052 0.279555 -0.951057 0.187382
--0.138691 0.426848 0.381956 -0.951057 0.125334
--0.117763 0.362438 0.485229 -0.951057 0.0627908
--0.0954912 0.293893 0.587785 -0.951057 3.26795e-07
--0.072233 0.222311 0.688022 -0.951057 -0.0627902
--0.0483491 0.148804 0.784345 -0.951057 -0.125333
--0.0241987 0.0744762 0.875193 -0.951057 -0.187381
--0.000133649 0.00041133 0.959066 -0.951057 -0.24869
-0.0235071 -0.0723475 1.03455 -0.951057 -0.309017
-0.0464024 -0.142812 1.10032 -0.951057 -0.368124
-0.0682542 -0.210066 1.1552 -0.951057 -0.425779
-0.0887916 -0.273274 1.19816 -0.951057 -0.481753
-0.107775 -0.331699 1.2283 -0.951057 -0.535826
-0.125 -0.384711 1.24495 -0.951057 -0.587785
-0.140298 -0.431795 1.24758 -0.951057 -0.637424
-0.153543 -0.472559 1.2359 -0.951057 -0.684547
-0.164649 -0.506738 1.20979 -0.951057 -0.728968
-0.17357 -0.534197 1.16936 -0.951057 -0.770513
-0.180307 -0.554931 1.11491 -0.951057 -0.809017
-0.1849 -0.569066 1.04697 -0.951057 -0.844328
-0.18743 -0.576851 0.966244 -0.951057 -0.876306
-0.188016 -0.578655 0.873626 -0.951057 -0.904827
-0.186815 -0.57496 0.770189 -0.951057 -0.929776
-0.184017 -0.566347 0.657165 -0.951057 -0.951056
-0.179839 -0.55349 0.535924 -0.951057 -0.968583
-0.174527 -0.537142 0.40796 -0.951057 -0.982287
-0.168346 -0.518117 0.274865 -0.951057 -0.992115
-0.161575 -0.49728 0.138305 -0.951057 -0.998027
-0.154508 -0.475529 1.4417e-06 -0.951057 -1
-0.147441 -0.453778 -0.138303 -0.951057 -0.998027
-0.14067 -0.432941 -0.274862 -0.951057 -0.992115
-0.134489 -0.413916 -0.407958 -0.951057 -0.982287
-0.129177 -0.397567 -0.535922 -0.951057 -0.968583
-0.125 -0.38471 -0.657162 -0.951057 -0.951057
-0.122201 -0.376097 -0.770187 -0.951057 -0.929777
-0.121 -0.372401 -0.873624 -0.951057 -0.904827
-0.121586 -0.374206 -0.966242 -0.951057 -0.876307
-0.124116 -0.38199 -1.04697 -0.951057 -0.844328
-0.128708 -0.396125 -1.11491 -0.951057 -0.809017
-0.135445 -0.41686 -1.16935 -0.951057 -0.770514
-0.144367 -0.444318 -1.20979 -0.951057 -0.728969
-0.155473 -0.478497 -1.2359 -0.951057 -0.684548
-0.168718 -0.519261 -1.24758 -0.951057 -0.637425
-0.184016 -0.566345 -1.24495 -0.951057 -0.587786
-0.201241 -0.619357 -1.2283 -0.951057 -0.535828
-0.220224 -0.677782 -1.19816 -0.951057 -0.481754
-0.240761 -0.74099 -1.1552 -0.951057 -0.42578
-0.262613 -0.808243 -1.10032 -0.951057 -0.368125
-0.285508 -0.878708 -1.03455 -0.951057 -0.309018
-0.309149 -0.951467 -0.959067 -0.951057 -0.248691
-0.333214 -1.02553 -0.875195 -0.951057 -0.187382
-0.357365 -1.09986 -0.784347 -0.951057 -0.125334
-0.381248 -1.17337 -0.688024 -0.951057 -0.0627915
-0.404507 -1.24495 -0.587787 -0.951057 -9.80385e-07
-0.426778 -1.31349 -0.485231 -0.951057 0.0627895
-0.447706 -1.3779 -0.381958 -0.951057 0.125332
-0.466943 -1.43711 -0.279557 -0.951057 0.18738
-0.484156 -1.49008 -0.179574 -0.951057 0.248689
-0.499034 -1.53587 -0.0834909 -0.951057 0.309016
-0.511289 -1.57359 0.00729925 -0.951057 0.368124
-0.520666 -1.60245 0.0915123 -0.951057 0.425778
-0.526943 -1.62177 0.167994 -0.951057 0.481753
-0.529938 -1.63099 0.235735 -0.951057 0.535826
-0.529507 -1.62966 0.293891 -0.951057 0.587784
-0.525554 -1.61749 0.341789 -0.951057 0.637423
-0.518026 -1.59433 0.378942 -0.951057 0.684546
-0.506921 -1.56015 0.405053 -0.951057 0.728968
-0.492282 -1.51509 0.420018 -0.951057 0.770513
-0.474199 -1.45944 0.423929 -0.951057 0.809016
-0.452813 -1.39362 0.417069 -0.951057 0.844327
-0.428306 -1.3182 0.399908 -0.951057 0.876306
-0.400905 -1.23386 0.373092 -0.951057 0.904827
-0.370877 -1.14145 0.337432 -0.951057 0.929776
-0.338525 -1.04188 0.293893 -0.951057 0.951056
-0.304184 -0.936187 0.243571 -0.951057 0.968583
-0.268218 -0.825494 0.18768 -0.951057 0.982287
-0.231013 -0.710987 0.127526 -0.951057 0.992115
-0.192971 -0.593907 0.0644906 -0.951057 0.998027
-0.184062 -0.464888 0 -0.929777 1
-0.139011 -0.351102 -0.0683671 -0.929777 0.998027
-0.0944439 -0.238539 -0.135239 -0.929777 0.992115
-0.0508393 -0.128406 -0.199145 -0.929777 0.982287
-0.00866108 -0.0218755 -0.258664 -0.929777 0.968583
--0.0316462 0.0799295 -0.312452 -0.929777 0.951057
--0.0696642 0.175952 -0.359259 -0.929777 0.929777
--0.105006 0.265216 -0.397953 -0.929777 0.904827
--0.137322 0.346836 -0.427541 -0.929777 0.876307
--0.166304 0.420036 -0.447185 -0.929777 0.844328
--0.191689 0.484152 -0.456216 -0.929777 0.809017
--0.213264 0.538646 -0.454145 -0.929777 0.770513
--0.230869 0.58311 -0.440675 -0.929777 0.728969
--0.244394 0.61727 -0.415707 -0.929777 0.684547
--0.253786 0.640992 -0.379338 -0.929777 0.637424
--0.259047 0.65428 -0.331865 -0.929777 0.587785
--0.260232 0.657274 -0.273782 -0.929777 0.535827
--0.257451 0.650248 -0.205769 -0.929777 0.481754
--0.250861 0.633604 -0.128688 -0.929777 0.42578
--0.240669 0.607863 -0.0435634 -0.929777 0.368125
--0.227127 0.573658 0.0484275 -0.929777 0.309017
--0.210523 0.531723 0.145976 -0.929777 0.24869
--0.191184 0.482877 0.247659 -0.929777 0.187382
--0.169463 0.428017 0.351965 -0.929777 0.125334
--0.145739 0.368095 0.457314 -0.929777 0.0627908
--0.120406 0.304112 0.562083 -0.929777 3.26795e-07
--0.0938718 0.237094 0.664635 -0.929777 -0.0627902
--0.0665473 0.16808 0.763338 -0.929777 -0.125333
--0.0388422 0.0981045 0.856596 -0.929777 -0.187381
--0.011158 0.028182 0.942873 -0.929777 -0.24869
-0.0161179 -0.0407094 1.02072 -0.929777 -0.309017
-0.0426186 -0.107643 1.08879 -0.929777 -0.368124
-0.0680027 -0.171756 1.14586 -0.929777 -0.425779
-0.0919597 -0.232264 1.19088 -0.929777 -0.481753
-0.114214 -0.288474 1.22295 -0.929777 -0.535826
-0.134531 -0.339788 1.24134 -0.929777 -0.587785
-0.152716 -0.385719 1.24552 -0.929777 -0.637424
-0.168622 -0.425892 1.23519 -0.929777 -0.684547
-0.182147 -0.460053 1.21022 -0.929777 -0.728968
-0.193238 -0.488065 1.17072 -0.929777 -0.770513
-0.201889 -0.509915 1.11699 -0.929777 -0.809017
-0.208143 -0.525711 1.04954 -0.929777 -0.844328
-0.212089 -0.535676 0.969114 -0.929777 -0.876306
-0.213857 -0.540144 0.876601 -0.929777 -0.904827
-0.213624 -0.539554 0.773093 -0.929777 -0.929776
-0.211598 -0.534438 0.65984 -0.929777 -0.951056
-0.208026 -0.525416 0.538235 -0.929777 -0.968583
-0.203181 -0.513179 0.409794 -0.929777 -0.982287
-0.19736 -0.498476 0.276136 -0.929777 -0.992115
-0.190878 -0.482103 0.138956 -0.929777 -0.998027
-0.184062 -0.464889 1.44851e-06 -0.929777 -1
-0.177246 -0.447674 -0.138953 -0.929777 -0.998027
-0.170764 -0.431301 -0.276133 -0.929777 -0.992115
-0.164942 -0.416598 -0.409791 -0.929777 -0.982287
-0.160097 -0.404361 -0.538232 -0.929777 -0.968583
-0.156525 -0.395339 -0.659838 -0.929777 -0.951057
-0.1545 -0.390223 -0.773091 -0.929777 -0.929777
-0.154266 -0.389633 -0.876599 -0.929777 -0.904827
-0.156035 -0.394101 -0.969112 -0.929777 -0.876307
-0.15998 -0.404065 -1.04954 -0.929777 -0.844328
-0.166234 -0.419861 -1.11698 -0.929777 -0.809017
-0.174885 -0.441712 -1.17072 -0.929777 -0.770514
-0.185976 -0.469724 -1.21022 -0.929777 -0.728969
-0.199501 -0.503884 -1.23519 -0.929777 -0.684548
-0.215407 -0.544057 -1.24552 -0.929777 -0.637425
-0.233592 -0.589988 -1.24134 -0.929777 -0.587786
-0.253909 -0.641302 -1.22295 -0.929777 -0.535828
-0.276163 -0.697511 -1.19089 -0.929777 -0.481754
-0.30012 -0.75802 -1.14587 -0.929777 -0.42578
-0.325504 -0.822133 -1.08879 -0.929777 -0.368125
-0.352005 -0.889066 -1.02072 -0.929777 -0.309018
-0.379281 -0.957957 -0.942875 -0.929777 -0.248691
-0.406965 -1.02788 -0.856598 -0.929777 -0.187382
-0.43467 -1.09786 -0.76334 -0.929777 -0.125334
-0.461995 -1.16687 -0.664637 -0.929777 -0.0627915
-0.488529 -1.23389 -0.562085 -0.929777 -9.80385e-07
-0.513862 -1.29787 -0.457316 -0.929777 0.0627895
-0.537586 -1.35779 -0.351967 -0.929777 0.125332
-0.559307 -1.41265 -0.247661 -0.929777 0.18738
-0.578647 -1.4615 -0.145978 -0.929777 0.248689
-0.59525 -1.50343 -0.0484295 -0.929777 0.309016
-0.608792 -1.53764 0.0435616 -0.929777 0.368124
-0.618984 -1.56338 0.128686 -0.929777 0.425778
-0.625574 -1.58002 0.205768 -0.929777 0.481753
-0.628356 -1.58705 0.27378 -0.929777 0.535826
-0.627171 -1.58406 0.331864 -0.929777 0.587784
-0.62191 -1.57077 0.379337 -0.929777 0.637423
-0.612517 -1.54705 0.415706 -0.929777 0.684546
-0.598993 -1.51289 0.440675 -0.929777 0.728968
-0.581388 -1.46842 0.454145 -0.929777 0.770513
-0.559813 -1.41393 0.456216 -0.929777 0.809016
-0.534428 -1.34981 0.447185 -0.929777 0.844327
-0.505446 -1.27661 0.427542 -0.929777 0.876306
-0.47313 -1.19499 0.397953 -0.929777 0.904827
-0.437789 -1.10573 0.359259 -0.929777 0.929776
-0.399771 -1.00971 0.312453 -0.929777 0.951056
-0.359463 -0.907904 0.258666 -0.929777 0.968583
-0.317285 -0.801373 0.199146 -0.929777 0.982287
-0.273681 -0.69124 0.13524 -0.929777 0.992115
-0.229114 -0.578677 0.0683685 -0.929777 0.998027
-0.212889 -0.452414 0 -0.904828 1
-0.161722 -0.343678 -0.0721774 -0.904828 0.998027
-0.111095 -0.23609 -0.142819 -0.904828 0.992115
-0.061541 -0.130782 -0.210414 -0.904828 0.982287
-0.013577 -0.0288528 -0.273503 -0.904828 0.968583
--0.0323008 0.0686428 -0.330704 -0.904828 0.951057
--0.0756253 0.160712 -0.380731 -0.904828 0.929777
--0.115965 0.246438 -0.422421 -0.904828 0.904827
--0.152928 0.324988 -0.454753 -0.904828 0.876307
--0.186169 0.395631 -0.47686 -0.904828 0.844328
--0.215395 0.457739 -0.488052 -0.904828 0.809017
--0.240365 0.510803 -0.487823 -0.904828 0.770513
--0.260896 0.554435 -0.475863 -0.904828 0.728969
--0.276866 0.588371 -0.45206 -0.904828 0.684547
--0.28821 0.612479 -0.41651 -0.904828 0.637424
--0.294927 0.626754 -0.36951 -0.904828 0.587785
--0.297074 0.631317 -0.311557 -0.904828 0.535827
--0.294768 0.626416 -0.243341 -0.904828 0.481754
--0.288181 0.612417 -0.165735 -0.904828 0.42578
--0.277537 0.589798 -0.0797828 -0.904828 0.368125
--0.263112 0.559143 0.0133183 -0.904828 0.309017
--0.245222 0.521125 0.112235 -0.904828 0.24869
--0.224225 0.476504 0.215518 -0.904828 0.187382
--0.20051 0.426106 0.321626 -0.904828 0.125334
--0.174492 0.370815 0.428947 -0.904828 0.0627908
--0.146607 0.311557 0.535827 -0.904828 3.26795e-07
--0.117304 0.249284 0.640592 -0.904828 -0.0627902
--0.0870357 0.184961 0.741577 -0.904828 -0.125333
--0.0562545 0.119547 0.837153 -0.904828 -0.187381
--0.0254042 0.0539867 0.925751 -0.904828 -0.24869
-0.00508703 -0.0108105 1.00588 -0.904828 -0.309017
-0.0348127 -0.073981 1.07618 -0.904828 -0.368124
-0.0633946 -0.134721 1.1354 -0.904828 -0.425779
-0.0904879 -0.192297 1.18244 -0.904828 -0.481753
-0.115787 -0.24606 1.21638 -0.904828 -0.535826
-0.139028 -0.29545 1.2365 -0.904828 -0.587785
-0.159995 -0.340007 1.24223 -0.904828 -0.637424
-0.178521 -0.379377 1.23326 -0.904828 -0.684547
-0.19449 -0.413314 1.20946 -0.904828 -0.728968
-0.20784 -0.441684 1.17092 -0.904828 -0.770513
-0.21856 -0.464465 1.11796 -0.904828 -0.809017
-0.226692 -0.481746 1.05108 -0.904828 -0.844328
-0.232328 -0.493724 0.971027 -0.904828 -0.876306
-0.235611 -0.5007 0.878711 -0.904828 -0.904827
-0.236725 -0.503067 0.775234 -0.904828 -0.929776
-0.235898 -0.50131 0.661864 -0.904828 -0.951056
-0.233395 -0.495991 0.540014 -0.904828 -0.968583
-0.229512 -0.487738 0.411223 -0.904828 -0.982287
-0.224569 -0.477236 0.277134 -0.904828 -0.992115
-0.21891 -0.465209 0.139469 -0.904828 -0.998027
-0.212889 -0.452414 1.4539e-06 -0.904828 -1
-0.206868 -0.439619 -0.139466 -0.904828 -0.998027
-0.201209 -0.427592 -0.277131 -0.904828 -0.992115
-0.196267 -0.417089 -0.41122 -0.904828 -0.982287
-0.192383 -0.408836 -0.540011 -0.904828 -0.968583
-0.18988 -0.403517 -0.661862 -0.904828 -0.951057
-0.189054 -0.40176 -0.775232 -0.904828 -0.929777
-0.190168 -0.404128 -0.878709 -0.904828 -0.904827
-0.19345 -0.411103 -0.971025 -0.904828 -0.876307
-0.199086 -0.423081 -1.05108 -0.904828 -0.844328
-0.207218 -0.440362 -1.11795 -0.904828 -0.809017
-0.217938 -0.463143 -1.17092 -0.904828 -0.770514
-0.231288 -0.491513 -1.20946 -0.904828 -0.728969
-0.247257 -0.52545 -1.23326 -0.904828 -0.684548
-0.265783 -0.564819 -1.24223 -0.904828 -0.637425
-0.28675 -0.609377 -1.2365 -0.904828 -0.587786
-0.309991 -0.658767 -1.21638 -0.904828 -0.535828
-0.33529 -0.712529 -1.18244 -0.904828 -0.481754
-0.362383 -0.770106 -1.1354 -0.904828 -0.42578
-0.390965 -0.830845 -1.07618 -0.904828 -0.368125
-0.420691 -0.894016 -1.00589 -0.904828 -0.309018
-0.451182 -0.958813 -0.925752 -0.904828 -0.248691
-0.482032 -1.02437 -0.837155 -0.904828 -0.187382
-0.512813 -1.08979 -0.741579 -0.904828 -0.125334
-0.543082 -1.15411 -0.640594 -0.904828 -0.0627915
-0.572385 -1.21638 -0.535829 -0.904828 -9.80385e-07
-0.60027 -1.27564 -0.428949 -0.904828 0.0627895
-0.626287 -1.33093 -0.321628 -0.904828 0.125332
-0.650003 -1.38133 -0.21552 -0.904828 0.18738
-0.671 -1.42595 -0.112237 -0.904828 0.248689
-0.68889 -1.46397 -0.0133203 -0.904828 0.309016
-0.703315 -1.49463 0.079781 -0.904828 0.368124
-0.713959 -1.51724 0.165733 -0.904828 0.425778
-0.720546 -1.53124 0.243339 -0.904828 0.481753
-0.722853 -1.53614 0.311555 -0.904828 0.535826
-0.720705 -1.53158 0.369509 -0.904828 0.587784
-0.713989 -1.51731 0.41651 -0.904828 0.637423
-0.702644 -1.4932 0.45206 -0.904828 0.684546
-0.686675 -1.45926 0.475862 -0.904828 0.728968
-0.666144 -1.41563 0.487823 -0.904828 0.770513
-0.641174 -1.36257 0.488052 -0.904828 0.809016
-0.611948 -1.30046 0.47686 -0.904828 0.844327
-0.578707 -1.22982 0.454753 -0.904828 0.876306
-0.541744 -1.15127 0.422422 -0.904828 0.904827
-0.501404 -1.06554 0.380732 -0.904828 0.929776
-0.45808 -0.973472 0.330705 -0.904828 0.951056
-0.412202 -0.875977 0.273504 -0.904828 0.968583
-0.364238 -0.774048 0.210415 -0.904828 0.982287
-0.314684 -0.668739 0.14282 -0.904828 0.992115
-0.264057 -0.561152 0.0721789 -0.904828 0.998027
-0.240876 -0.438154 0 -0.876307 1
-0.184104 -0.334884 -0.0759165 -0.876307 0.998027
-0.127918 -0.232683 -0.150258 -0.876307 0.992115
-0.0728999 -0.132605 -0.221475 -0.876307 0.982287
-0.0196119 -0.035674 -0.288072 -0.876307 0.968583
--0.031406 0.0571274 -0.348629 -0.876307 0.951057
--0.0796449 0.144874 -0.401827 -0.876307 0.929777
--0.124634 0.226709 -0.446473 -0.876307 0.904827
--0.165946 0.301856 -0.481515 -0.876307 0.876307
--0.203205 0.369629 -0.506064 -0.876307 0.844328
--0.236087 0.429442 -0.519407 -0.876307 0.809017
--0.264329 0.480815 -0.52102 -0.876307 0.770513
--0.287729 0.523379 -0.51058 -0.876307 0.728969
--0.30615 0.556885 -0.487968 -0.876307 0.684547
--0.319517 0.5812 -0.453272 -0.876307 0.637424
--0.327824 0.596312 -0.406791 -0.876307 0.587785
--0.331129 0.602324 -0.349024 -0.876307 0.535827
--0.329554 0.599457 -0.280672 -0.876307 0.481754
--0.323278 0.588042 -0.202618 -0.876307 0.42578
--0.312542 0.568514 -0.115923 -0.876307 0.368125
--0.297637 0.541401 -0.0218041 -0.876307 0.309017
--0.278903 0.507323 0.0783834 -0.876307 0.24869
--0.25672 0.466972 0.183165 -0.876307 0.187382
--0.231505 0.421108 0.29097 -0.876307 0.125334
--0.203706 0.370541 0.400157 -0.876307 0.0627908
--0.173788 0.316121 0.509041 -0.876307 3.26795e-07
--0.142234 0.258724 0.615916 -0.876307 -0.0627902
--0.109532 0.199238 0.719085 -0.876307 -0.125333
--0.0761676 0.138549 0.816885 -0.876307 -0.187381
--0.0426195 0.0775248 0.907714 -0.876307 -0.24869
--0.00934946 0.0170066 0.990058 -0.876307 -0.309017
-0.0232038 -0.0422076 1.06251 -0.876307 -0.368124
-0.0546311 -0.0993738 1.12381 -0.876307 -0.425779
-0.0845592 -0.153813 1.17282 -0.876307 -0.481753
-0.112656 -0.204921 1.20862 -0.876307 -0.535826
-0.138635 -0.252177 1.23044 -0.876307 -0.587785
-0.16226 -0.295151 1.23772 -0.876307 -0.637424
-0.183347 -0.333508 1.23012 -0.876307 -0.684547
-0.201767 -0.367014 1.20751 -0.876307 -0.728968
-0.217448 -0.395537 1.16997 -0.876307 -0.770513
-0.230372 -0.419047 1.11782 -0.876307 -0.809017
-0.240581 -0.437616 1.05158 -0.876307 -0.844328
-0.248167 -0.451414 0.971982 -0.876307 -0.876306
-0.253275 -0.460707 0.879953 -0.876307 -0.904827
-0.256101 -0.465847 0.77661 -0.876307 -0.929776
-0.256882 -0.467268 0.663235 -0.876307 -0.951056
-0.255895 -0.465473 0.54126 -0.876307 -0.968583
-0.253452 -0.461029 0.412246 -0.876307 -0.982287
-0.249892 -0.454553 0.277859 -0.876307 -0.992115
-0.245575 -0.446701 0.139844 -0.876307 -0.998027
-0.240876 -0.438154 1.45785e-06 -0.876307 -1
-0.236178 -0.429607 -0.139841 -0.876307 -0.998027
-0.231861 -0.421754 -0.277856 -0.876307 -0.992115
-0.228301 -0.415279 -0.412244 -0.876307 -0.982287
-0.225858 -0.410835 -0.541258 -0.876307 -0.968583
-0.224871 -0.40904 -0.663233 -0.876307 -0.951057
-0.225652 -0.41046 -0.776608 -0.876307 -0.929777
-0.228477 -0.4156 -0.879951 -0.876307 -0.904827
-0.233586 -0.424893 -0.97198 -0.876307 -0.876307
-0.241172 -0.438691 -1.05158 -0.876307 -0.844328
-0.25138 -0.45726 -1.11782 -0.876307 -0.809017
-0.264305 -0.48077 -1.16997 -0.876307 -0.770514
-0.279985 -0.509293 -1.20751 -0.876307 -0.728969
-0.298405 -0.542799 -1.23012 -0.876307 -0.684548
-0.319492 -0.581155 -1.23772 -0.876307 -0.637425
-0.343117 -0.624129 -1.23044 -0.876307 -0.587786
-0.369096 -0.671385 -1.20862 -0.876307 -0.535828
-0.397193 -0.722493 -1.17283 -0.876307 -0.481754
-0.427121 -0.776932 -1.12381 -0.876307 -0.42578
-0.458548 -0.834098 -1.06251 -0.876307 -0.368125
-0.491101 -0.893313 -0.99006 -0.876307 -0.309018
-0.524372 -0.953831 -0.907716 -0.876307 -0.248691
-0.55792 -1.01485 -0.816887 -0.876307 -0.187382
-0.591284 -1.07554 -0.719087 -0.876307 -0.125334
-0.623987 -1.13503 -0.615919 -0.876307 -0.0627915
-0.655541 -1.19243 -0.509044 -0.876307 -9.80385e-07
-0.685458 -1.24685 -0.40016 -0.876307 0.0627895
-0.713258 -1.29741 -0.290972 -0.876307 0.125332
-0.738472 -1.34328 -0.183167 -0.876307 0.18738
-0.760655 -1.38363 -0.0783856 -0.876307 0.248689
-0.77939 -1.41771 0.0218021 -0.876307 0.309016
-0.794295 -1.44482 0.115922 -0.876307 0.368124
-0.805031 -1.46435 0.202617 -0.876307 0.425778
-0.811306 -1.47576 0.28067 -0.876307 0.481753
-0.812882 -1.47863 0.349023 -0.876307 0.535826
-0.809577 -1.47262 0.40679 -0.876307 0.587784
-0.80127 -1.45751 0.453271 -0.876307 0.637423
-0.787903 -1.43319 0.487967 -0.876307 0.684546
-0.769483 -1.39969 0.51058 -0.876307 0.728968
-0.746083 -1.35712 0.52102 -0.876307 0.770513
-0.717841 -1.30575 0.519407 -0.876307 0.809016
-0.684958 -1.24594 0.506065 -0.876307 0.844327
-0.6477 -1.17816 0.481516 -0.876307 0.876306
-0.606388 -1.10302 0.446474 -0.876307 0.904827
-0.561399 -1.02118 0.401828 -0.876307 0.929776
-0.51316 -0.933436 0.34863 -0.876307 0.951056
-0.462142 -0.840635 0.288073 -0.876307 0.968583
-0.408854 -0.743704 0.221477 -0.876307 0.982287
-0.353836 -0.643626 0.150259 -0.876307 0.992115
-0.29765 -0.541425 0.0759181 -0.876307 0.998027
-0.267913 -0.422164 0 -0.844329 1
-0.206077 -0.324726 -0.0795807 -0.844329 0.998027
-0.144867 -0.228275 -0.157549 -0.844329 0.992115
-0.0849022 -0.133785 -0.232318 -0.844329 0.982287
-0.0267831 -0.0422035 -0.302356 -0.844329 0.968583
--0.0289139 0.0455612 -0.36621 -0.844329 0.951057
--0.0816455 0.128653 -0.422527 -0.844329 0.929777
--0.130908 0.206279 -0.470085 -0.844329 0.904827
--0.176245 0.277718 -0.507803 -0.844329 0.876307
--0.217252 0.342335 -0.534769 -0.844329 0.844328
--0.253582 0.399583 -0.550249 -0.844329 0.809017
--0.284952 0.449014 -0.553703 -0.844329 0.770513
--0.311141 0.490282 -0.544794 -0.844329 0.728969
--0.331999 0.523149 -0.523394 -0.844329 0.684547
--0.347444 0.547485 -0.489587 -0.844329 0.637424
--0.357461 0.56327 -0.44367 -0.844329 0.587785
--0.362108 0.570592 -0.386147 -0.844329 0.535827
--0.361507 0.569645 -0.317726 -0.844329 0.481754
--0.355844 0.560722 -0.239302 -0.844329 0.42578
--0.345368 0.544214 -0.15195 -0.844329 0.368125
--0.330382 0.5206 -0.056905 -0.844329 0.309017
--0.311241 0.490439 0.0444547 -0.844329 0.24869
--0.288344 0.454359 0.150631 -0.844329 0.187382
--0.262128 0.413049 0.260026 -0.844329 0.125334
--0.233061 0.367247 0.370973 -0.844329 0.0627908
--0.201635 0.317727 0.481754 -0.844329 3.26795e-07
--0.168355 0.265286 0.590633 -0.844329 -0.0627902
--0.133736 0.210735 0.695883 -0.844329 -0.125333
--0.0982916 0.154883 0.79581 -0.844329 -0.187381
--0.0625251 0.098524 0.888782 -0.844329 -0.24869
--0.0269249 0.042427 0.973255 -0.844329 -0.309017
-0.00804483 -0.0126767 1.0478 -0.844329 -0.368124
-0.0419508 -0.066104 1.11111 -0.844329 -0.425779
-0.0743967 -0.117231 1.16205 -0.844329 -0.481753
-0.105029 -0.1655 1.19966 -0.844329 -0.535826
-0.133543 -0.210431 1.22316 -0.844329 -0.587785
-0.159684 -0.251622 1.23198 -0.844329 -0.637424
-0.183254 -0.288763 1.22576 -0.844329 -0.684547
-0.204112 -0.32163 1.20436 -0.844329 -0.728968
-0.222176 -0.350094 1.16787 -0.844329 -0.770513
-0.237422 -0.374118 1.11659 -0.844329 -0.809017
-0.249885 -0.393757 1.05104 -0.844329 -0.844328
-0.259658 -0.409157 0.971978 -0.844329 -0.876306
-0.266887 -0.420547 0.880328 -0.844329 -0.904827
-0.271767 -0.428238 0.77722 -0.844329 -0.929776
-0.274543 -0.432612 0.663951 -0.844329 -0.951056
-0.275499 -0.434119 0.541972 -0.844329 -0.968583
-0.274955 -0.433261 0.412863 -0.844329 -0.982287
-0.273259 -0.430588 0.27831 -0.844329 -0.992115
-0.270783 -0.426687 0.140081 -0.844329 -0.998027
-0.267913 -0.422164 1.46036e-06 -0.844329 -1
-0.265043 -0.417642 -0.140078 -0.844329 -0.998027
-0.262567 -0.41374 -0.278307 -0.844329 -0.992115
-0.260871 -0.411068 -0.41286 -0.844329 -0.982287
-0.260327 -0.41021 -0.54197 -0.844329 -0.968583
-0.261282 -0.411716 -0.663949 -0.844329 -0.951057
-0.264058 -0.416091 -0.777217 -0.844329 -0.929777
-0.268939 -0.423781 -0.880325 -0.844329 -0.904827
-0.276167 -0.435171 -0.971976 -0.844329 -0.876307
-0.28594 -0.450571 -1.05104 -0.844329 -0.844328
-0.298404 -0.47021 -1.11658 -0.844329 -0.809017
-0.31365 -0.494234 -1.16787 -0.844329 -0.770514
-0.331713 -0.522698 -1.20436 -0.844329 -0.728969
-0.352571 -0.555565 -1.22576 -0.844329 -0.684548
-0.376141 -0.592705 -1.23198 -0.844329 -0.637425
-0.402282 -0.633897 -1.22316 -0.844329 -0.587786
-0.430796 -0.678827 -1.19966 -0.844329 -0.535828
-0.461429 -0.727097 -1.16205 -0.844329 -0.481754
-0.493874 -0.778223 -1.11111 -0.844329 -0.42578
-0.52778 -0.831651 -1.0478 -0.844329 -0.368125
-0.56275 -0.886754 -0.973257 -0.844329 -0.309018
-0.59835 -0.942851 -0.888784 -0.844329 -0.248691
-0.634117 -0.999211 -0.795812 -0.844329 -0.187382
-0.669562 -1.05506 -0.695885 -0.844329 -0.125334
-0.70418 -1.10961 -0.590635 -0.844329 -0.0627915
-0.73746 -1.16205 -0.481756 -0.844329 -9.80385e-07
-0.768887 -1.21157 -0.370975 -0.844329 0.0627895
-0.797954 -1.25738 -0.260029 -0.844329 0.125332
-0.82417 -1.29869 -0.150633 -0.844329 0.18738
-0.847067 -1.33477 -0.0444568 -0.844329 0.248689
-0.866208 -1.36493 0.0569029 -0.844329 0.309016
-0.881194 -1.38854 0.151948 -0.844329 0.368124
-0.89167 -1.40505 0.2393 -0.844329 0.425778
-0.897332 -1.41397 0.317724 -0.844329 0.481753
-0.897934 -1.41492 0.386146 -0.844329 0.535826
-0.893287 -1.4076 0.443669 -0.844329 0.587784
-0.88327 -1.39181 0.489586 -0.844329 0.637423
-0.867826 -1.36748 0.523393 -0.844329 0.684546
-0.846968 -1.33461 0.544794 -0.844329 0.728968
-0.820778 -1.29334 0.553703 -0.844329 0.770513
-0.789409 -1.24391 0.550249 -0.844329 0.809016
-0.753079 -1.18666 0.534769 -0.844329 0.844327
-0.712072 -1.12205 0.507804 -0.844329 0.876306
-0.666735 -1.05061 0.470086 -0.844329 0.904827
-0.617472 -0.972983 0.422529 -0.844329 0.929776
-0.564741 -0.889891 0.366211 -0.844329 0.951056
-0.509044 -0.802127 0.302358 -0.844329 0.968583
-0.450925 -0.710546 0.23232 -0.844329 0.982287
-0.39096 -0.616056 0.15755 -0.844329 0.992115
-0.32975 -0.519605 0.0795824 -0.844329 0.998027
-0.293892 -0.404509 0 -0.809018 1
-0.227563 -0.313214 -0.0831663 -0.809018 0.998027
-0.16189 -0.222823 -0.164684 -0.809018 0.992115
-0.0975234 -0.13423 -0.242932 -0.809018 0.982287
-0.0350931 -0.0483016 -0.316343 -0.809018 0.968583
--0.0247958 0.0341286 -0.383429 -0.809018 0.951057
--0.0815724 0.112275 -0.44281 -0.809018 0.929777
--0.134707 0.185409 -0.493232 -0.809018 0.904827
--0.183719 0.252869 -0.53359 -0.809018 0.876307
--0.228183 0.314067 -0.562946 -0.809018 0.844328
--0.267731 0.368501 -0.580548 -0.809018 0.809017
--0.302061 0.415753 -0.585839 -0.809018 0.770513
--0.330941 0.455502 -0.57847 -0.809018 0.728969
--0.354205 0.487523 -0.558303 -0.809018 0.684547
--0.371763 0.511689 -0.525418 -0.809018 0.637424
--0.383594 0.527973 -0.480111 -0.809018 0.587785
--0.389751 0.536447 -0.42289 -0.809018 0.535827
--0.390355 0.537278 -0.354466 -0.809018 0.481754
--0.385594 0.530726 -0.275749 -0.809018 0.42578
--0.375721 0.517136 -0.187826 -0.809018 0.368125
--0.361045 0.496936 -0.0919497 -0.809018 0.309017
--0.341929 0.470626 0.010482 -0.809018 0.24869
--0.318785 0.43877 0.117948 -0.809018 0.187382
--0.29206 0.401988 0.228826 -0.809018 0.125334
--0.262239 0.360942 0.341422 -0.809018 0.0627908
--0.229828 0.316331 0.45399 -0.809018 3.26795e-07
--0.195349 0.268876 0.564767 -0.809018 -0.0627902
--0.159335 0.219307 0.671995 -0.809018 -0.125333
--0.122317 0.168356 0.77395 -0.809018 -0.187381
--0.0848186 0.116743 0.868973 -0.809018 -0.24869
--0.0473452 0.0651652 0.955491 -0.809018 -0.309017
--0.0103796 0.0142863 1.03205 -0.809018 -0.368124
-0.0256269 -0.0352724 1.09732 -0.809018 -0.425779
-0.0602609 -0.0829422 1.15014 -0.809018 -0.481753
-0.0931529 -0.128214 1.18952 -0.809018 -0.535826
-0.123982 -0.170647 1.21468 -0.809018 -0.587785
-0.152481 -0.209873 1.22503 -0.809018 -0.637424
-0.178439 -0.245601 1.22019 -0.809018 -0.684547
-0.201704 -0.277622 1.20003 -0.809018 -0.728968
-0.222183 -0.305809 1.16461 -0.809018 -0.770513
-0.239846 -0.33012 1.11425 -0.809018 -0.809017
-0.254721 -0.350594 1.04947 -0.809018 -0.844328
-0.266896 -0.367352 0.971014 -0.809018 -0.876306
-0.276514 -0.380589 0.879833 -0.809018 -0.904827
-0.283769 -0.390575 0.777062 -0.809018 -0.929776
-0.288904 -0.397643 0.664012 -0.809018 -0.951056
-0.292204 -0.402185 0.54215 -0.809018 -0.968583
-0.293991 -0.404644 0.413072 -0.809018 -0.982287
-0.294615 -0.405504 0.278486 -0.809018 -0.992115
-0.294453 -0.40528 0.14018 -0.809018 -0.998027
-0.293892 -0.404509 1.46143e-06 -0.809018 -1
-0.293332 -0.403738 -0.140178 -0.809018 -0.998027
-0.293169 -0.403514 -0.278483 -0.809018 -0.992115
-0.293794 -0.404373 -0.413069 -0.809018 -0.982287
-0.295581 -0.406833 -0.542147 -0.809018 -0.968583
-0.298881 -0.411375 -0.66401 -0.809018 -0.951057
-0.304016 -0.418442 -0.77706 -0.809018 -0.929777
-0.31127 -0.428428 -0.879831 -0.809018 -0.904827
-0.320888 -0.441665 -0.971012 -0.809018 -0.876307
-0.333063 -0.458423 -1.04947 -0.809018 -0.844328
-0.347938 -0.478897 -1.11425 -0.809018 -0.809017
-0.365601 -0.503208 -1.16461 -0.809018 -0.770514
-0.38608 -0.531395 -1.20003 -0.809018 -0.728969
-0.409345 -0.563416 -1.22019 -0.809018 -0.684548
-0.435302 -0.599144 -1.22503 -0.809018 -0.637425
-0.463801 -0.638369 -1.21468 -0.809018 -0.587786
-0.494631 -0.680802 -1.18952 -0.809018 -0.535828
-0.527523 -0.726074 -1.15014 -0.809018 -0.481754
-0.562157 -0.773744 -1.09732 -0.809018 -0.42578
-0.598163 -0.823303 -1.03205 -0.809018 -0.368125
-0.635129 -0.874182 -0.955493 -0.809018 -0.309018
-0.672602 -0.92576 -0.868975 -0.809018 -0.248691
-0.710101 -0.977373 -0.773952 -0.809018 -0.187382
-0.747119 -1.02832 -0.671997 -0.809018 -0.125334
-0.783133 -1.07789 -0.56477 -0.809018 -0.0627915
-0.817611 -1.12535 -0.453993 -0.809018 -9.80385e-07
-0.850023 -1.16996 -0.341424 -0.809018 0.0627895
-0.879844 -1.211 -0.228829 -0.809018 0.125332
-0.906568 -1.24779 -0.11795 -0.809018 0.18738
-0.929713 -1.27964 -0.0104842 -0.809018 0.248689
-0.948829 -1.30595 0.0919476 -0.809018 0.309016
-0.963505 -1.32615 0.187824 -0.809018 0.368124
-0.973378 -1.33974 0.275747 -0.809018 0.425778
-0.978139 -1.3463 0.354465 -0.809018 0.481753
-0.977535 -1.34547 0.422888 -0.809018 0.535826
-0.971379 -1.33699 0.48011 -0.809018 0.587784
-0.959547 -1.32071 0.525417 -0.809018 0.637423
-0.94199 -1.29654 0.558302 -0.809018 0.684546
-0.918726 -1.26452 0.57847 -0.809018 0.728968
-0.889846 -1.22477 0.585839 -0.809018 0.770513
-0.855516 -1.17752 0.580548 -0.809018 0.809016
-0.815968 -1.12309 0.562946 -0.809018 0.844327
-0.771505 -1.06189 0.53359 -0.809018 0.876306
-0.722493 -0.994428 0.493233 -0.809018 0.904827
-0.669358 -0.921294 0.442812 -0.809018 0.929776
-0.612581 -0.843148 0.383431 -0.809018 0.951056
-0.552693 -0.760718 0.316344 -0.809018 0.968583
-0.490262 -0.67479 0.242933 -0.809018 0.982287
-0.425896 -0.586196 0.164686 -0.809018 0.992115
-0.360223 -0.495806 0.0831681 -0.809018 0.998027
-0.318712 -0.385257 0 -0.770514 1
-0.248481 -0.300363 -0.0866699 -0.770514 0.998027
-0.17893 -0.216289 -0.171657 -0.770514 0.992115
-0.110728 -0.133848 -0.253306 -0.770514 0.982287
-0.044529 -0.0538264 -0.330016 -0.770514 0.968583
--0.0190423 0.0230182 -0.400271 -0.770514 0.951057
--0.0793944 0.0959715 -0.462657 -0.770514 0.929777
--0.135979 0.16437 -0.515893 -0.770514 0.904827
--0.188296 0.227611 -0.55885 -0.770514 0.876307
--0.235902 0.285158 -0.590568 -0.770514 0.844328
--0.278416 0.336548 -0.610274 -0.770514 0.809017
--0.315522 0.381402 -0.617398 -0.770514 0.770513
--0.346972 0.419419 -0.611575 -0.770514 0.728969
--0.372593 0.450388 -0.592661 -0.770514 0.684547
--0.392282 0.474189 -0.560731 -0.770514 0.637424
--0.406014 0.490787 -0.516079 -0.770514 0.587785
--0.413833 0.500239 -0.459214 -0.770514 0.535827
--0.415857 0.502686 -0.390857 -0.770514 0.481754
--0.412273 0.498354 -0.311924 -0.770514 0.42578
--0.403331 0.487545 -0.223517 -0.770514 0.368125
--0.389344 0.470637 -0.126904 -0.770514 0.309017
--0.370675 0.44807 -0.023501 -0.770514 0.24869
--0.34774 0.420346 0.0851486 -0.770514 0.187382
--0.320993 0.388015 0.197401 -0.770514 0.125334
--0.290924 0.351667 0.311534 -0.770514 0.0627908
--0.258046 0.311925 0.425779 -0.770514 3.26795e-07
--0.222892 0.269431 0.538344 -0.770514 -0.0627902
--0.186003 0.22484 0.647443 -0.770514 -0.125333
--0.147921 0.178806 0.751326 -0.770514 -0.187381
--0.109177 0.131973 0.848306 -0.770514 -0.24869
--0.0702917 0.0849682 0.936784 -0.770514 -0.309017
--0.0317569 0.0383876 1.01528 -0.770514 -0.368124
-0.00596425 -0.00720955 1.08244 -0.770514 -0.425779
-0.042447 -0.0513098 1.13708 -0.770514 -0.481753
-0.0773106 -0.0934527 1.17821 -0.770514 -0.535826
-0.110223 -0.133237 1.205 -0.770514 -0.587785
-0.140907 -0.170327 1.21687 -0.770514 -0.637424
-0.16914 -0.204455 1.21342 -0.770514 -0.684547
-0.19476 -0.235425 1.19451 -0.770514 -0.728968
-0.217667 -0.263115 1.1602 -0.770514 -0.770513
-0.23782 -0.287476 1.11081 -0.770514 -0.809017
-0.255241 -0.308534 1.04686 -0.770514 -0.844328
-0.270009 -0.326385 0.969092 -0.770514 -0.876306
-0.282259 -0.341193 0.87847 -0.770514 -0.904827
-0.29218 -0.353186 0.776138 -0.770514 -0.929776
-0.30001 -0.36265 0.663418 -0.770514 -0.951056
-0.306027 -0.369923 0.541792 -0.770514 -0.968583
-0.310548 -0.375388 0.412873 -0.770514 -0.982287
-0.31392 -0.379464 0.278387 -0.770514 -0.992115
-0.316512 -0.382599 0.140141 -0.770514 -0.998027
-0.318712 -0.385257 1.46106e-06 -0.770514 -1
-0.320911 -0.387915 -0.140138 -0.770514 -0.998027
-0.323504 -0.391049 -0.278384 -0.770514 -0.992115
-0.326875 -0.395125 -0.412871 -0.770514 -0.982287
-0.331396 -0.40059 -0.541789 -0.770514 -0.968583
-0.337413 -0.407864 -0.663416 -0.770514 -0.951057
-0.345243 -0.417328 -0.776135 -0.770514 -0.929777
-0.355164 -0.429321 -0.878468 -0.770514 -0.904827
-0.367414 -0.444129 -0.969091 -0.770514 -0.876307
-0.382182 -0.461979 -1.04686 -0.770514 -0.844328
-0.399602 -0.483037 -1.11081 -0.770514 -0.809017
-0.419756 -0.507399 -1.1602 -0.770514 -0.770514
-0.442663 -0.535088 -1.19451 -0.770514 -0.728969
-0.468283 -0.566058 -1.21342 -0.770514 -0.684548
-0.496516 -0.600186 -1.21687 -0.770514 -0.637425
-0.527199 -0.637276 -1.205 -0.770514 -0.587786
-0.560112 -0.67706 -1.17821 -0.770514 -0.535828
-0.594975 -0.719203 -1.13708 -0.770514 -0.481754
-0.631458 -0.763303 -1.08244 -0.770514 -0.42578
-0.669179 -0.808901 -1.01528 -0.770514 -0.368125
-0.707714 -0.855481 -0.936786 -0.770514 -0.309018
-0.7466 -0.902486 -0.848308 -0.770514 -0.248691
-0.785343 -0.949319 -0.751329 -0.770514 -0.187382
-0.823426 -0.995353 -0.647445 -0.770514 -0.125334
-0.860315 -1.03994 -0.538346 -0.770514 -0.0627915
-0.895469 -1.08244 -0.425782 -0.770514 -9.80385e-07
-0.928346 -1.12218 -0.311537 -0.770514 0.0627895
-0.958416 -1.15853 -0.197403 -0.770514 0.125332
-0.985162 -1.19086 -0.0851509 -0.770514 0.18738
-1.0081 -1.21858 0.0234987 -0.770514 0.248689
-1.02677 -1.24115 0.126902 -0.770514 0.309016
-1.04075 -1.25806 0.223515 -0.770514 0.368124
-1.0497 -1.26887 0.311923 -0.770514 0.425778
-1.05328 -1.2732 0.390856 -0.770514 0.481753
-1.05126 -1.27075 0.459213 -0.770514 0.535826
-1.04344 -1.2613 0.516077 -0.770514 0.587784
-1.02971 -1.2447 0.56073 -0.770514 0.637423
-1.01002 -1.2209 0.592661 -0.770514 0.684546
-0.984396 -1.18993 0.611575 -0.770514 0.728968
-0.952946 -1.15192 0.617398 -0.770514 0.770513
-0.91584 -1.10706 0.610275 -0.770514 0.809016
-0.873326 -1.05567 0.590568 -0.770514 0.844327
-0.82572 -0.998126 0.55885 -0.770514 0.876306
-0.773403 -0.934886 0.515894 -0.770514 0.904827
-0.716819 -0.866487 0.462658 -0.770514 0.929776
-0.656467 -0.793534 0.400272 -0.770514 0.951056
-0.592895 -0.716689 0.330018 -0.770514 0.968583
-0.526696 -0.636668 0.253307 -0.770514 0.982287
-0.458495 -0.554226 0.171659 -0.770514 0.992115
-0.388944 -0.470153 0.0866717 -0.770514 0.998027
-0.342273 -0.364485 0 -0.728969 1
-0.268751 -0.286192 -0.090088 -0.728969 0.998027
-0.195923 -0.208637 -0.17846 -0.728969 0.992115
-0.124471 -0.132548 -0.26343 -0.728969 0.982287
-0.0550623 -0.0586355 -0.343365 -0.728969 0.968583
--0.0116644 0.0124213 -0.416717 -0.728969 0.951057
--0.0751047 0.0799786 -0.482046 -0.728969 0.929777
--0.134697 0.143438 -0.538044 -0.728969 0.904827
--0.189931 0.202256 -0.583558 -0.728969 0.876307
--0.24035 0.255947 -0.617606 -0.728969 0.844328
--0.285561 0.304092 -0.639398 -0.728969 0.809017
--0.325236 0.346342 -0.648347 -0.728969 0.770513
--0.35912 0.382425 -0.644077 -0.728969 0.728969
--0.387028 0.412144 -0.626435 -0.728969 0.684547
--0.408849 0.435381 -0.59549 -0.728969 0.637424
--0.424548 0.452099 -0.551537 -0.728969 0.587785
--0.434164 0.462339 -0.495086 -0.728969 0.535827
--0.437807 0.466218 -0.426862 -0.728969 0.481754
--0.435657 0.463929 -0.347792 -0.728969 0.42578
--0.42796 0.455732 -0.258987 -0.728969 0.368125
--0.415023 0.441955 -0.161732 -0.728969 0.309017
--0.397207 0.422984 -0.0574608 -0.728969 0.24869
--0.374925 0.399256 0.0522654 -0.728969 0.187382
--0.348629 0.371253 0.16578 -0.728969 0.125334
--0.318807 0.339495 0.281339 -0.728969 0.0627908
--0.285972 0.30453 0.397148 -0.728969 3.26795e-07
--0.250659 0.266925 0.511389 -0.728969 -0.0627902
--0.213408 0.227257 0.622252 -0.728969 -0.125333
--0.174764 0.186105 0.727961 -0.728969 -0.187381
--0.135262 0.14404 0.826802 -0.728969 -0.24869
--0.0954249 0.101617 0.917153 -0.728969 -0.309017
--0.0557495 0.0593673 0.997505 -0.728969 -0.368124
--0.0167038 0.0177878 1.06649 -0.728969 -0.425779
-0.0212817 -0.0226628 1.12291 -0.728969 -0.481753
-0.0578199 -0.0615721 1.16573 -0.728969 -0.535826
-0.0925721 -0.0985795 1.19414 -0.728969 -0.587785
-0.125252 -0.133381 1.20751 -0.728969 -0.637424
-0.155632 -0.165731 1.20545 -0.728969 -0.684547
-0.183539 -0.19545 1.18781 -0.728969 -0.728968
-0.208865 -0.222419 1.15465 -0.728969 -0.770513
-0.23156 -0.246587 1.10627 -0.728969 -0.809017
-0.251634 -0.267964 1.04321 -0.728969 -0.844328
-0.269158 -0.286625 0.966214 -0.728969 -0.876306
-0.284256 -0.302702 0.87624 -0.728969 -0.904827
-0.297106 -0.316386 0.774447 -0.728969 -0.929776
-0.307934 -0.327917 0.662169 -0.728969 -0.951056
-0.317007 -0.337579 0.5409 -0.728969 -0.968583
-0.324632 -0.345699 0.412267 -0.728969 -0.982287
-0.331143 -0.352633 0.278013 -0.728969 -0.992115
-0.336899 -0.358762 0.139964 -0.728969 -0.998027
-0.342273 -0.364485 1.45924e-06 -0.728969 -1
-0.347647 -0.370207 -0.139961 -0.728969 -0.998027
-0.353403 -0.376336 -0.278011 -0.728969 -0.992115
-0.359914 -0.38327 -0.412265 -0.728969 -0.982287
-0.367539 -0.39139 -0.540897 -0.728969 -0.968583
-0.376612 -0.401052 -0.662167 -0.728969 -0.951057
-0.38744 -0.412583 -0.774445 -0.728969 -0.929777
-0.40029 -0.426267 -0.876238 -0.728969 -0.904827
-0.415388 -0.442344 -0.966212 -0.728969 -0.876307
-0.432911 -0.461005 -1.04321 -0.728969 -0.844328
-0.452986 -0.482382 -1.10627 -0.728969 -0.809017
-0.475681 -0.506549 -1.15465 -0.728969 -0.770514
-0.501006 -0.533519 -1.18781 -0.728969 -0.728969
-0.528914 -0.563237 -1.20545 -0.728969 -0.684548
-0.559293 -0.595588 -1.20751 -0.728969 -0.637425
-0.591973 -0.630389 -1.19414 -0.728969 -0.587786
-0.626726 -0.667397 -1.16573 -0.728969 -0.535828
-0.663264 -0.706306 -1.12291 -0.728969 -0.481754
-0.701249 -0.746756 -1.06649 -0.728969 -0.42578
-0.740295 -0.788336 -0.997506 -0.728969 -0.368125
-0.77997 -0.830586 -0.917154 -0.728969 -0.309018
-0.819808 -0.873009 -0.826804 -0.728969 -0.248691
-0.859309 -0.915073 -0.727963 -0.728969 -0.187382
-0.897954 -0.956226 -0.622255 -0.728969 -0.125334
-0.935204 -0.995894 -0.511392 -0.728969 -0.0627915
-0.970518 -1.0335 -0.39715 -0.728969 -9.80385e-07
-1.00335 -1.06846 -0.281341 -0.728969 0.0627895
-1.03317 -1.10022 -0.165782 -0.728969 0.125332
-1.05947 -1.12822 -0.0522677 -0.728969 0.18738
-1.08175 -1.15195 0.0574585 -0.728969 0.248689
-1.09957 -1.17092 0.16173 -0.728969 0.309016
-1.11251 -1.1847 0.258985 -0.728969 0.368124
-1.1202 -1.1929 0.34779 -0.728969 0.425778
-1.12235 -1.19519 0.426861 -0.728969 0.481753
-1.11871 -1.19131 0.495084 -0.728969 0.535826
-1.10909 -1.18107 0.551536 -0.728969 0.587784
-1.0934 -1.16435 0.59549 -0.728969 0.637423
-1.07157 -1.14111 0.626434 -0.728969 0.684546
-1.04367 -1.1114 0.644076 -0.728969 0.728968
-1.00978 -1.07531 0.648347 -0.728969 0.770513
-0.970108 -1.03306 0.639399 -0.728969 0.809016
-0.924897 -0.984917 0.617607 -0.728969 0.844327
-0.874478 -0.931227 0.583559 -0.728969 0.876306
-0.819245 -0.872409 0.538045 -0.728969 0.904827
-0.759652 -0.808949 0.482047 -0.728969 0.929776
-0.696212 -0.741392 0.416718 -0.728969 0.951056
-0.629485 -0.670335 0.343366 -0.728969 0.968583
-0.560077 -0.596422 0.263431 -0.728969 0.982287
-0.488625 -0.520334 0.178462 -0.728969 0.992115
-0.415796 -0.442779 0.0900898 -0.728969 0.998027
-0.364484 -0.342274 0 -0.684548 1
-0.288293 -0.270725 -0.0934171 -0.684548 0.998027
-0.2128 -0.199833 -0.185088 -0.684548 0.992115
-0.138694 -0.130243 -0.273294 -0.684548 0.982287
-0.0666484 -0.0625872 -0.356374 -0.684548 0.968583
--0.00269359 0.00252945 -0.432752 -0.684548 0.951057
--0.0687215 0.0645339 -0.50096 -0.684548 0.929777
--0.130868 0.122893 -0.559665 -0.684548 0.904827
--0.188614 0.177121 -0.60769 -0.684548 0.876307
--0.241499 0.226783 -0.644035 -0.684548 0.844328
--0.289121 0.271503 -0.667891 -0.684548 0.809017
--0.331145 0.310967 -0.678656 -0.684548 0.770513
--0.367308 0.344926 -0.675943 -0.684548 0.728969
--0.397416 0.373199 -0.65959 -0.684548 0.684547
--0.42135 0.395675 -0.629662 -0.684548 0.637424
--0.439066 0.412312 -0.58645 -0.684548 0.587785
--0.450594 0.423137 -0.530469 -0.684548 0.535827
--0.456033 0.428245 -0.462446 -0.684548 0.481754
--0.455555 0.427796 -0.383316 -0.684548 0.42578
--0.449396 0.422012 -0.294202 -0.684548 0.368125
--0.437853 0.411173 -0.196401 -0.684548 0.309017
--0.421279 0.395608 -0.0913638 -0.684548 0.24869
--0.400075 0.375696 0.0193306 -0.684548 0.187382
--0.374685 0.351853 0.133996 -0.684548 0.125334
--0.345589 0.324531 0.250866 -0.684548 0.0627908
--0.313293 0.294203 0.368124 -0.684548 3.26795e-07
--0.278322 0.261363 0.48393 -0.684548 -0.0627902
--0.241213 0.226514 0.596448 -0.684548 -0.125333
--0.202501 0.190162 0.703877 -0.684548 -0.187381
--0.16272 0.152805 0.804482 -0.684548 -0.24869
--0.122388 0.11493 0.896616 -0.684548 -0.309017
--0.0819983 0.0770017 0.978749 -0.684548 -0.368124
--0.042019 0.0394586 1.04949 -0.684548 -0.425779
--0.00288032 0.00270481 1.10763 -0.684548 -0.481753
-0.0350292 -0.0328947 1.1521 -0.684548 -0.535826
-0.0713678 -0.067019 1.18209 -0.684548 -0.587785
-0.105846 -0.0993959 1.19695 -0.684548 -0.637424
-0.138227 -0.129804 1.19629 -0.684548 -0.684547
-0.168335 -0.158078 1.17994 -0.684548 -0.728968
-0.19605 -0.184104 1.14796 -0.684548 -0.770513
-0.221314 -0.207828 1.10065 -0.684548 -0.809017
-0.244124 -0.229248 1.03854 -0.684548 -0.844328
-0.264539 -0.248419 0.962382 -0.684548 -0.876306
-0.282669 -0.265444 0.873146 -0.684548 -0.904827
-0.298677 -0.280477 0.771993 -0.684548 -0.929776
-0.312772 -0.293713 0.660267 -0.684548 -0.951056
-0.325207 -0.30539 0.539473 -0.684548 -0.968583
-0.336268 -0.315777 0.411255 -0.684548 -0.982287
-0.346272 -0.325172 0.277366 -0.684548 -0.992115
-0.355559 -0.333893 0.139648 -0.684548 -0.998027
-0.364484 -0.342274 1.45599e-06 -0.684548 -1
-0.373408 -0.350655 -0.139645 -0.684548 -0.998027
-0.382696 -0.359376 -0.277363 -0.684548 -0.992115
-0.3927 -0.368771 -0.411252 -0.684548 -0.982287
-0.403761 -0.379158 -0.539471 -0.684548 -0.968583
-0.416195 -0.390834 -0.660264 -0.684548 -0.951057
-0.430291 -0.404071 -0.77199 -0.684548 -0.929777
-0.446299 -0.419103 -0.873144 -0.684548 -0.904827
-0.464429 -0.436129 -0.962381 -0.684548 -0.876307
-0.484843 -0.455299 -1.03854 -0.684548 -0.844328
-0.507654 -0.47672 -1.10065 -0.684548 -0.809017
-0.532917 -0.500443 -1.14796 -0.684548 -0.770514
-0.560632 -0.52647 -1.17994 -0.684548 -0.728969
-0.59074 -0.554743 -1.19629 -0.684548 -0.684548
-0.623122 -0.585151 -1.19695 -0.684548 -0.637425
-0.657599 -0.617528 -1.18209 -0.684548 -0.587786
-0.693938 -0.651653 -1.15211 -0.684548 -0.535828
-0.731847 -0.687252 -1.10763 -0.684548 -0.481754
-0.770986 -0.724006 -1.0495 -0.684548 -0.42578
-0.810965 -0.761549 -0.978751 -0.684548 -0.368125
-0.851355 -0.799477 -0.896618 -0.684548 -0.309018
-0.891687 -0.837352 -0.804484 -0.684548 -0.248691
-0.931468 -0.874709 -0.70388 -0.684548 -0.187382
-0.97018 -0.911061 -0.59645 -0.684548 -0.125334
-1.00729 -0.94591 -0.483932 -0.684548 -0.0627915
-1.04226 -0.97875 -0.368127 -0.684548 -9.80385e-07
-1.07456 -1.00908 -0.250869 -0.684548 0.0627895
-1.10365 -1.0364 -0.133998 -0.684548 0.125332
-1.12904 -1.06024 -0.0193329 -0.684548 0.18738
-1.15025 -1.08016 0.0913616 -0.684548 0.248689
-1.16682 -1.09572 0.196399 -0.684548 0.309016
-1.17836 -1.10656 0.2942 -0.684548 0.368124
-1.18452 -1.11234 0.383314 -0.684548 0.425778
-1.185 -1.11279 0.462444 -0.684548 0.481753
-1.17956 -1.10768 0.530467 -0.684548 0.535826
-1.16803 -1.09686 0.586449 -0.684548 0.587784
-1.15032 -1.08022 0.629661 -0.684548 0.637423
-1.12638 -1.05775 0.65959 -0.684548 0.684546
-1.09628 -1.02947 0.675942 -0.684548 0.728968
-1.06011 -0.995516 0.678656 -0.684548 0.770513
-1.01809 -0.956052 0.667892 -0.684548 0.809016
-0.970468 -0.911332 0.644036 -0.684548 0.844327
-0.917583 -0.86167 0.607691 -0.684548 0.876306
-0.859837 -0.807442 0.559666 -0.684548 0.904827
-0.797691 -0.749083 0.500961 -0.684548 0.929776
-0.731663 -0.687079 0.432753 -0.684548 0.951056
-0.662321 -0.621962 0.356376 -0.684548 0.968583
-0.590275 -0.554306 0.273295 -0.684548 0.982287
-0.51617 -0.484717 0.185089 -0.684548 0.992115
-0.440677 -0.413824 0.093419 -0.684548 0.998027
-0.385256 -0.318712 0 -0.637425 1
-0.307023 -0.253992 -0.096654 -0.637425 0.998027
-0.229486 -0.189848 -0.191532 -0.637425 0.992115
-0.153331 -0.126847 -0.282888 -0.637425 0.982287
-0.0792272 -0.0655426 -0.369032 -0.637425 0.968583
-0.00781803 -0.00646765 -0.44836 -0.637425 0.951057
--0.0602876 0.0498744 -0.519379 -0.637425 0.929777
--0.124522 0.103014 -0.580733 -0.637425 0.904827
--0.184367 0.152522 -0.631223 -0.637425 0.876307
--0.239359 0.198015 -0.669829 -0.637425 0.844328
--0.289092 0.239159 -0.695725 -0.637425 0.809017
--0.33323 0.275672 -0.708295 -0.637425 0.770513
--0.3715 0.307332 -0.707142 -0.637425 0.728969
--0.403704 0.333974 -0.692094 -0.637425 0.684547
--0.429714 0.355491 -0.663213 -0.637425 0.637424
--0.449477 0.37184 -0.620786 -0.637425 0.587785
--0.46301 0.383036 -0.565328 -0.637425 0.535827
--0.470403 0.389152 -0.497573 -0.637425 0.481754
--0.471813 0.390319 -0.418462 -0.637425 0.42578
--0.467463 0.38672 -0.329126 -0.637425 0.368125
--0.457635 0.37859 -0.230877 -0.637425 0.309017
--0.442667 0.366207 -0.125177 -0.637425 0.24869
--0.422944 0.349891 -0.0136233 -0.637425 0.187382
--0.398896 0.329996 0.102079 -0.637425 0.125334
--0.370986 0.306907 0.220146 -0.637425 0.0627908
--0.339704 0.281028 0.338738 -0.637425 3.26795e-07
--0.305561 0.252783 0.455993 -0.637425 -0.0627902
--0.269079 0.222602 0.570054 -0.637425 -0.125333
--0.230782 0.19092 0.679099 -0.637425 -0.187381
--0.191189 0.158166 0.781368 -0.637425 -0.24869
--0.150809 0.12476 0.875195 -0.637425 -0.309017
--0.110127 0.0911049 0.959028 -0.637425 -0.368124
--0.069602 0.0575799 1.03146 -0.637425 -0.425779
--0.0296601 0.024537 1.09125 -0.637425 -0.481753
-0.00931367 -0.00770496 1.13734 -0.637425 -0.535826
-0.0469787 -0.0388642 1.16888 -0.637425 -0.587785
-0.0830437 -0.0686999 1.18522 -0.637425 -0.637424
-0.11727 -0.0970143 1.18595 -0.637425 -0.684547
-0.149474 -0.123656 1.17091 -0.637425 -0.728968
-0.179528 -0.148519 1.14014 -0.637425 -0.770513
-0.207363 -0.171546 1.09394 -0.637425 -0.809017
-0.232965 -0.192726 1.03284 -0.637425 -0.844328
-0.256375 -0.212093 0.957601 -0.637425 -0.876306
-0.277689 -0.229725 0.86919 -0.637425 -0.904827
-0.297049 -0.245741 0.768776 -0.637425 -0.929776
-0.314644 -0.260297 0.657713 -0.637425 -0.951056
-0.330705 -0.273583 0.537515 -0.637425 -0.968583
-0.345493 -0.285818 0.409836 -0.637425 -0.982287
-0.359303 -0.297242 0.276444 -0.637425 -0.992115
-0.372448 -0.308116 0.139195 -0.637425 -0.998027
-0.385256 -0.318712 1.4513e-06 -0.637425 -1
-0.398064 -0.329308 -0.139192 -0.637425 -0.998027
-0.411209 -0.340183 -0.276441 -0.637425 -0.992115
-0.425019 -0.351607 -0.409833 -0.637425 -0.982287
-0.439808 -0.363841 -0.537512 -0.637425 -0.968583
-0.455868 -0.377128 -0.65771 -0.637425 -0.951057
-0.473463 -0.391684 -0.768774 -0.637425 -0.929777
-0.492823 -0.4077 -0.869188 -0.637425 -0.904827
-0.514137 -0.425332 -0.957599 -0.637425 -0.876307
-0.537547 -0.444699 -1.03284 -0.637425 -0.844328
-0.563149 -0.465878 -1.09394 -0.637425 -0.809017
-0.590984 -0.488905 -1.14013 -0.637425 -0.770514
-0.621038 -0.513769 -1.17091 -0.637425 -0.728969
-0.653242 -0.54041 -1.18595 -0.637425 -0.684548
-0.687468 -0.568724 -1.18522 -0.637425 -0.637425
-0.723533 -0.59856 -1.16888 -0.637425 -0.587786
-0.761198 -0.629719 -1.13734 -0.637425 -0.535828
-0.800172 -0.661961 -1.09125 -0.637425 -0.481754
-0.840114 -0.695004 -1.03146 -0.637425 -0.42578
-0.880638 -0.728529 -0.959029 -0.637425 -0.368125
-0.921321 -0.762184 -0.875196 -0.637425 -0.309018
-0.961701 -0.79559 -0.781371 -0.637425 -0.248691
-1.00129 -0.828344 -0.679101 -0.637425 -0.187382
-1.03959 -0.860026 -0.570057 -0.637425 -0.125334
-1.07607 -0.890207 -0.455995 -0.637425 -0.0627915
-1.11022 -0.918453 -0.33874 -0.637425 -9.80385e-07
-1.1415 -0.944331 -0.220148 -0.637425 0.0627895
-1.16941 -0.967421 -0.102082 -0.637425 0.125332
-1.19346 -0.987315 0.0136209 -0.637425 0.18738
-1.21318 -1.00363 0.125175 -0.637425 0.248689
-1.22815 -1.01601 0.230875 -0.637425 0.309016
-1.23798 -1.02414 0.329124 -0.637425 0.368124
-1.24233 -1.02774 0.41846 -0.637425 0.425778
-1.24092 -1.02658 0.497572 -0.637425 0.481753
-1.23352 -1.02046 0.565327 -0.637425 0.535826
-1.21999 -1.00927 0.620785 -0.637425 0.587784
-1.20023 -0.992917 0.663212 -0.637425 0.637423
-1.17422 -0.971399 0.692094 -0.637425 0.684546
-1.14201 -0.944758 0.707141 -0.637425 0.728968
-1.10374 -0.913098 0.708295 -0.637425 0.770513
-1.05961 -0.876584 0.695725 -0.637425 0.809016
-1.00987 -0.835441 0.66983 -0.637425 0.844327
-0.954881 -0.789948 0.631224 -0.637425 0.876306
-0.895036 -0.74044 0.580734 -0.637425 0.904827
-0.830802 -0.6873 0.51938 -0.637425 0.929776
-0.762696 -0.630958 0.448361 -0.637425 0.951056
-0.691287 -0.571884 0.369033 -0.637425 0.968583
-0.617183 -0.510579 0.28289 -0.637425 0.982287
-0.541028 -0.447578 0.191534 -0.637425 0.992115
-0.463491 -0.383434 0.096656 -0.637425 0.998027
-0.404508 -0.293893 0 -0.587786 1
-0.324863 -0.236027 -0.0997956 -0.587786 0.998027
-0.245902 -0.178659 -0.197788 -0.587786 0.992115
-0.168302 -0.122279 -0.292203 -0.587786 0.982287
-0.0927227 -0.0673671 -0.381325 -0.587786 0.968583
-0.0197979 -0.014384 -0.463525 -0.587786 0.951057
--0.0498711 0.0362336 -0.537286 -0.587786 0.929777
--0.115723 0.0840782 -0.601228 -0.587786 0.904827
--0.177245 0.128776 -0.654133 -0.587786 0.876307
--0.233975 0.169993 -0.694962 -0.587786 0.844328
--0.28551 0.207436 -0.722872 -0.587786 0.809017
--0.331511 0.240857 -0.737235 -0.587786 0.770513
--0.371703 0.270059 -0.737643 -0.587786 0.728969
--0.405882 0.294891 -0.723916 -0.587786 0.684547
--0.433912 0.315256 -0.696108 -0.587786 0.637424
--0.45573 0.331108 -0.654508 -0.587786 0.587785
--0.471342 0.342451 -0.59963 -0.587786 0.535827
--0.480822 0.349338 -0.53221 -0.587786 0.481754
--0.484312 0.351874 -0.453194 -0.587786 0.42578
--0.482018 0.350207 -0.363726 -0.587786 0.368125
--0.4742 0.344528 -0.265124 -0.587786 0.309017
--0.461178 0.335066 -0.158866 -0.587786 0.24869
--0.443315 0.322088 -0.0465637 -0.587786 0.187382
--0.421017 0.305888 0.0700622 -0.587786 0.125334
--0.394727 0.286787 0.189208 -0.587786 0.0627908
--0.364912 0.265125 0.309017 -0.587786 3.26795e-07
--0.332061 0.241257 0.427606 -0.587786 -0.0627902
--0.296672 0.215546 0.543098 -0.587786 -0.125333
--0.259252 0.188358 0.653651 -0.587786 -0.187381
--0.220301 0.160058 0.757483 -0.587786 -0.24869
--0.180308 0.131001 0.852909 -0.587786 -0.309017
--0.139744 0.10153 0.93836 -0.587786 -0.368124
--0.0990557 0.0719684 1.01241 -0.587786 -0.425779
--0.0586579 0.0426176 1.0738 -0.587786 -0.481753
--0.018928 0.013752 1.12145 -0.587786 -0.535826
-0.0197983 -0.0143843 1.15451 -0.587786 -0.587785
-0.0572316 -0.0415813 1.17231 -0.587786 -0.637424
-0.0931317 -0.0676643 1.17444 -0.587786 -0.684547
-0.127311 -0.0924967 1.16072 -0.587786 -0.728968
-0.159633 -0.115981 1.13119 -0.587786 -0.770513
-0.190018 -0.138057 1.08614 -0.587786 -0.809017
-0.218439 -0.158706 1.02612 -0.587786 -0.844328
-0.244919 -0.177945 0.951874 -0.587786 -0.876306
-0.269533 -0.195828 0.864376 -0.587786 -0.904827
-0.292402 -0.212443 0.764801 -0.587786 -0.929776
-0.313691 -0.22791 0.65451 -0.587786 -0.951056
-0.3336 -0.242375 0.535026 -0.587786 -0.968583
-0.352364 -0.256008 0.408013 -0.587786 -0.982287
-0.370247 -0.269001 0.27525 -0.587786 -0.992115
-0.387529 -0.281557 0.138604 -0.587786 -0.998027
-0.404508 -0.293893 1.44517e-06 -0.587786 -1
-0.421487 -0.306229 -0.138601 -0.587786 -0.998027
-0.438769 -0.318785 -0.275247 -0.587786 -0.992115
-0.456652 -0.331778 -0.40801 -0.587786 -0.982287
-0.475416 -0.345411 -0.535023 -0.587786 -0.968583
-0.495325 -0.359876 -0.654507 -0.587786 -0.951057
-0.516613 -0.375343 -0.764799 -0.587786 -0.929777
-0.539483 -0.391958 -0.864374 -0.587786 -0.904827
-0.564097 -0.409841 -0.951873 -0.587786 -0.876307
-0.590577 -0.42908 -1.02612 -0.587786 -0.844328
-0.618997 -0.449729 -1.08614 -0.587786 -0.809017
-0.649383 -0.471805 -1.13119 -0.587786 -0.770514
-0.681705 -0.495289 -1.16072 -0.587786 -0.728969
-0.715884 -0.520121 -1.17444 -0.587786 -0.684548
-0.751784 -0.546204 -1.17231 -0.587786 -0.637425
-0.789217 -0.573401 -1.15451 -0.587786 -0.587786
-0.827943 -0.601538 -1.12145 -0.587786 -0.535828
-0.867673 -0.630403 -1.0738 -0.587786 -0.481754
-0.908071 -0.659754 -1.01241 -0.587786 -0.42578
-0.948759 -0.689316 -0.938361 -0.587786 -0.368125
-0.989323 -0.718787 -0.852911 -0.587786 -0.309018
-1.02932 -0.747844 -0.757486 -0.587786 -0.248691
-1.06827 -0.776144 -0.653653 -0.587786 -0.187382
-1.10569 -0.803331 -0.543101 -0.587786 -0.125334
-1.14108 -0.829042 -0.427609 -0.587786 -0.0627915
-1.17393 -0.852911 -0.309019 -0.587786 -9.80385e-07
-1.20374 -0.874573 -0.189211 -0.587786 0.0627895
-1.23003 -0.893674 -0.0700647 -0.587786 0.125332
-1.25233 -0.909874 0.0465613 -0.587786 0.18738
-1.27019 -0.922852 0.158864 -0.587786 0.248689
-1.28322 -0.932314 0.265122 -0.587786 0.309016
-1.29103 -0.937993 0.363724 -0.587786 0.368124
-1.29333 -0.939661 0.453193 -0.587786 0.425778
-1.28984 -0.937125 0.532208 -0.587786 0.481753
-1.28036 -0.930237 0.599628 -0.587786 0.535826
-1.26475 -0.918895 0.654507 -0.587786 0.587784
-1.24293 -0.903043 0.696108 -0.587786 0.637423
-1.2149 -0.882678 0.723915 -0.587786 0.684546
-1.18072 -0.857845 0.737642 -0.587786 0.728968
-1.14053 -0.828644 0.737235 -0.587786 0.770513
-1.09453 -0.795223 0.722873 -0.587786 0.809016
-1.04299 -0.75778 0.694962 -0.587786 0.844327
-0.986262 -0.716563 0.654134 -0.587786 0.876306
-0.924741 -0.671865 0.601229 -0.587786 0.904827
-0.858889 -0.624021 0.537287 -0.587786 0.929776
-0.78922 -0.573403 0.463527 -0.587786 0.951056
-0.716295 -0.52042 0.381327 -0.587786 0.968583
-0.640716 -0.465508 0.292205 -0.587786 0.982287
-0.563116 -0.409129 0.19779 -0.587786 0.992115
-0.484155 -0.35176 0.0997976 -0.587786 0.998027
-0.422164 -0.267914 0 -0.535828 1
-0.341729 -0.216869 -0.102839 -0.535828 0.998027
-0.261962 -0.166246 -0.203848 -0.535828 0.992115
-0.183519 -0.116465 -0.30123 -0.535828 0.982287
-0.107043 -0.067932 -0.393242 -0.535828 0.968583
-0.0331533 -0.0210397 -0.478233 -0.535828 0.951057
--0.0375645 0.0238392 -0.554662 -0.535828 0.929777
--0.104561 0.0663568 -0.62113 -0.535828 0.904827
--0.167333 0.106193 -0.676397 -0.535828 0.876307
--0.225427 0.143061 -0.719408 -0.535828 0.844328
--0.278445 0.176707 -0.749306 -0.535828 0.809017
--0.326049 0.206917 -0.765448 -0.535828 0.770513
--0.367964 0.233518 -0.767416 -0.535828 0.728969
--0.403981 0.256375 -0.755022 -0.535828 0.684547
--0.433958 0.275399 -0.728317 -0.535828 0.637424
--0.45782 0.290542 -0.687585 -0.535828 0.587785
--0.47556 0.301801 -0.633339 -0.535828 0.535827
--0.487238 0.309211 -0.566321 -0.535828 0.481754
--0.492974 0.312852 -0.48748 -0.535828 0.42578
--0.492953 0.312838 -0.397967 -0.535828 0.368125
--0.487414 0.309323 -0.29911 -0.535828 0.309017
--0.476648 0.302491 -0.192399 -0.535828 0.24869
--0.460992 0.292555 -0.0794582 -0.535828 0.187382
--0.440827 0.279758 0.0379759 -0.535828 0.125334
--0.416562 0.264359 0.158084 -0.535828 0.0627908
--0.388639 0.246638 0.278991 -0.535828 3.26795e-07
--0.357515 0.226887 0.398797 -0.535828 -0.0627902
--0.323664 0.205404 0.515606 -0.535828 -0.125333
--0.287562 0.182493 0.627557 -0.535828 -0.187381
--0.249684 0.158455 0.732851 -0.535828 -0.24869
--0.210496 0.133585 0.829783 -0.535828 -0.309017
--0.170449 0.108171 0.916766 -0.535828 -0.368124
--0.12997 0.0824816 0.992358 -0.535828 -0.425779
--0.0894577 0.0567718 1.05528 -0.535828 -0.481753
--0.0492781 0.0312729 1.10446 -0.535828 -0.535826
--0.00975811 0.0061927 1.139 -0.535828 -0.587785
-0.0288175 -0.0182882 1.15825 -0.535828 -0.637424
-0.0662096 -0.042018 1.16177 -0.535828 -0.684547
-0.102227 -0.0648752 1.14938 -0.535828 -0.728968
-0.136727 -0.0867696 1.12112 -0.535828 -0.770513
-0.169617 -0.107643 1.07728 -0.535828 -0.809017
-0.200855 -0.127467 1.01839 -0.535828 -0.844328
-0.230447 -0.146246 0.945209 -0.535828 -0.876306
-0.258443 -0.164013 0.858709 -0.535828 -0.904827
-0.284939 -0.180829 0.760071 -0.535828 -0.929776
-0.310071 -0.196777 0.650661 -0.535828 -0.951056
-0.334007 -0.211968 0.532009 -0.535828 -0.968583
-0.35695 -0.226528 0.405787 -0.535828 -0.982287
-0.379124 -0.2406 0.273784 -0.535828 -0.992115
-0.400776 -0.254341 0.137876 -0.535828 -0.998027
-0.422163 -0.267914 1.43762e-06 -0.535828 -1
-0.443551 -0.281486 -0.137873 -0.535828 -0.998027
-0.465202 -0.295227 -0.273781 -0.535828 -0.992115
-0.487377 -0.3093 -0.405784 -0.535828 -0.982287
-0.51032 -0.32386 -0.532006 -0.535828 -0.968583
-0.534256 -0.33905 -0.650658 -0.535828 -0.951057
-0.559387 -0.354999 -0.760069 -0.535828 -0.929777
-0.585884 -0.371814 -0.858707 -0.535828 -0.904827
-0.61388 -0.389581 -0.945207 -0.535828 -0.876307
-0.643471 -0.40836 -1.01839 -0.535828 -0.844328
-0.67471 -0.428185 -1.07728 -0.535828 -0.809017
-0.7076 -0.449058 -1.12112 -0.535828 -0.770514
-0.7421 -0.470952 -1.14938 -0.535828 -0.728969
-0.778117 -0.493809 -1.16177 -0.535828 -0.684548
-0.815509 -0.517539 -1.15825 -0.535828 -0.637425
-0.854085 -0.54202 -1.139 -0.535828 -0.587786
-0.893605 -0.5671 -1.10446 -0.535828 -0.535828
-0.933784 -0.592599 -1.05529 -0.535828 -0.481754
-0.974296 -0.618309 -0.992359 -0.535828 -0.42578
-1.01478 -0.643998 -0.916767 -0.535828 -0.368125
-1.05482 -0.669413 -0.829785 -0.535828 -0.309018
-1.09401 -0.694282 -0.732853 -0.535828 -0.248691
-1.13189 -0.71832 -0.627559 -0.535828 -0.187382
-1.16799 -0.741231 -0.515609 -0.535828 -0.125334
-1.20184 -0.762714 -0.3988 -0.535828 -0.0627915
-1.23297 -0.782466 -0.278994 -0.535828 -9.80385e-07
-1.26089 -0.800187 -0.158086 -0.535828 0.0627895
-1.28515 -0.815585 -0.0379784 -0.535828 0.125332
-1.30532 -0.828383 0.0794558 -0.535828 0.18738
-1.32097 -0.838318 0.192396 -0.535828 0.248689
-1.33174 -0.845151 0.299108 -0.535828 0.309016
-1.33728 -0.848666 0.397965 -0.535828 0.368124
-1.3373 -0.84868 0.487478 -0.535828 0.425778
-1.33157 -0.845039 0.566319 -0.535828 0.481753
-1.31989 -0.837629 0.633338 -0.535828 0.535826
-1.30215 -0.82637 0.687584 -0.535828 0.587784
-1.27829 -0.811227 0.728317 -0.535828 0.637423
-1.24831 -0.792203 0.755022 -0.535828 0.684546
-1.21229 -0.769346 0.767416 -0.535828 0.728968
-1.17038 -0.742746 0.765448 -0.535828 0.770513
-1.12277 -0.712535 0.749307 -0.535828 0.809016
-1.06976 -0.678889 0.719409 -0.535828 0.844327
-1.01166 -0.642022 0.676398 -0.535828 0.876306
-0.94889 -0.602185 0.621131 -0.535828 0.904827
-0.881893 -0.559668 0.554664 -0.535828 0.929776
-0.811176 -0.514789 0.478235 -0.535828 0.951056
-0.737285 -0.467897 0.393244 -0.535828 0.968583
-0.66081 -0.419364 0.301232 -0.535828 0.982287
-0.582367 -0.369582 0.20385 -0.535828 0.992115
-0.5026 -0.31896 0.102841 -0.535828 0.998027
-0.438153 -0.240877 0 -0.481755 1
-0.357544 -0.196562 -0.10578 -0.481755 0.998027
-0.277577 -0.152599 -0.209708 -0.481755 0.992115
-0.198883 -0.109337 -0.309959 -0.481755 0.982287
-0.122083 -0.067116 -0.404772 -0.481755 0.968583
-0.0477717 -0.0262628 -0.492469 -0.481755 0.951057
--0.0234845 0.0129108 -0.571492 -0.481755 0.929777
--0.0911549 0.050113 -0.640419 -0.481755 0.904827
--0.154751 0.0850753 -0.697994 -0.481755 0.876307
--0.213831 0.117555 -0.743145 -0.481755 0.844328
--0.268007 0.147339 -0.775001 -0.481755 0.809017
--0.316945 0.174243 -0.792905 -0.481755 0.770513
--0.360372 0.198117 -0.796431 -0.481755 0.728969
--0.398076 0.218845 -0.785384 -0.481755 0.684547
--0.429908 0.236345 -0.759808 -0.481755 0.637424
--0.455783 0.25057 -0.719983 -0.481755 0.587785
--0.47568 0.261508 -0.666424 -0.481755 0.535827
--0.489638 0.269181 -0.599873 -0.481755 0.481754
--0.497759 0.273646 -0.521284 -0.481755 0.42578
--0.500201 0.274989 -0.431815 -0.481755 0.368125
--0.497176 0.273325 -0.332801 -0.481755 0.309017
--0.488944 0.2688 -0.225742 -0.481755 0.24869
--0.475813 0.261581 -0.112274 -0.481755 0.187382
--0.458126 0.251858 0.0058521 -0.481755 0.125334
--0.436261 0.239837 0.126803 -0.481755 0.0627908
--0.410622 0.225742 0.24869 -0.481755 3.26795e-07
--0.381634 0.209806 0.369595 -0.481755 -0.0627902
--0.349733 0.192268 0.487606 -0.481755 -0.125333
--0.315363 0.173373 0.600844 -0.481755 -0.187381
--0.278968 0.153365 0.707495 -0.481755 -0.24869
--0.240985 0.132483 0.805837 -0.481755 -0.309017
--0.201836 0.11096 0.894267 -0.481755 -0.368124
--0.161925 0.0890192 0.971327 -0.481755 -0.425779
--0.121631 0.0668674 1.03573 -0.481755 -0.481753
--0.0813038 0.0446973 1.08638 -0.481755 -0.535826
--0.041258 0.0226819 1.12237 -0.481755 -0.587785
--0.00177092 0.000973575 1.14305 -0.481755 -0.637424
-0.0369212 -0.0202977 1.14796 -0.481755 -0.684547
-0.0746251 -0.0410256 1.13691 -0.481755 -0.728968
-0.111192 -0.0611285 1.10995 -0.481755 -0.770513
-0.146518 -0.0805492 1.06735 -0.481755 -0.809017
-0.180544 -0.0992554 1.00966 -0.481755 -0.844328
-0.213256 -0.117239 0.93761 -0.481755 -0.876306
-0.244679 -0.134514 0.852194 -0.481755 -0.904827
-0.27488 -0.151117 0.754591 -0.481755 -0.929776
-0.303962 -0.167105 0.646169 -0.481755 -0.951056
-0.332059 -0.182552 0.528466 -0.481755 -0.968583
-0.359333 -0.197546 0.40316 -0.481755 -0.982287
-0.38597 -0.212189 0.272047 -0.481755 -0.992115
-0.412171 -0.226594 0.137012 -0.481755 -0.998027
-0.438153 -0.240877 1.42865e-06 -0.481755 -1
-0.464134 -0.255161 -0.13701 -0.481755 -0.998027
-0.490336 -0.269565 -0.272045 -0.481755 -0.992115
-0.516972 -0.284209 -0.403158 -0.481755 -0.982287
-0.544246 -0.299203 -0.528464 -0.481755 -0.968583
-0.572343 -0.314649 -0.646167 -0.481755 -0.951057
-0.601425 -0.330637 -0.754589 -0.481755 -0.929777
-0.631626 -0.347241 -0.852192 -0.481755 -0.904827
-0.66305 -0.364516 -0.937608 -0.481755 -0.876307
-0.695761 -0.382499 -1.00965 -0.481755 -0.844328
-0.729787 -0.401205 -1.06735 -0.481755 -0.809017
-0.765113 -0.420626 -1.10995 -0.481755 -0.770514
-0.80168 -0.440729 -1.13691 -0.481755 -0.728969
-0.839384 -0.461457 -1.14796 -0.481755 -0.684548
-0.878076 -0.482728 -1.14305 -0.481755 -0.637425
-0.917563 -0.504436 -1.12237 -0.481755 -0.587786
-0.957609 -0.526452 -1.08638 -0.481755 -0.535828
-0.997936 -0.548622 -1.03573 -0.481755 -0.481754
-1.03823 -0.570773 -0.971329 -0.481755 -0.42578
-1.07814 -0.592715 -0.894268 -0.481755 -0.368125
-1.11729 -0.614237 -0.805839 -0.481755 -0.309018
-1.15527 -0.635119 -0.707497 -0.481755 -0.248691
-1.19167 -0.655127 -0.600846 -0.481755 -0.187382
-1.22604 -0.674022 -0.487608 -0.481755 -0.125334
-1.25794 -0.69156 -0.369597 -0.481755 -0.0627915
-1.28693 -0.707497 -0.248692 -0.481755 -9.80385e-07
-1.31257 -0.721592 -0.126806 -0.481755 0.0627895
-1.33443 -0.733612 -0.00585459 -0.481755 0.125332
-1.35212 -0.743336 0.112272 -0.481755 0.18738
-1.36525 -0.750555 0.225739 -0.481755 0.248689
-1.37348 -0.75508 0.332798 -0.481755 0.309016
-1.37651 -0.756743 0.431813 -0.481755 0.368124
-1.37407 -0.755401 0.521283 -0.481755 0.425778
-1.36594 -0.750936 0.599871 -0.481755 0.481753
-1.35199 -0.743263 0.666423 -0.481755 0.535826
-1.33209 -0.732325 0.719982 -0.481755 0.587784
-1.30621 -0.7181 0.759807 -0.481755 0.637423
-1.27438 -0.7006 0.785384 -0.481755 0.684546
-1.23668 -0.679872 0.796431 -0.481755 0.728968
-1.19325 -0.655998 0.792906 -0.481755 0.770513
-1.14431 -0.629094 0.775001 -0.481755 0.809016
-1.09014 -0.599311 0.743146 -0.481755 0.844327
-1.03106 -0.566831 0.697995 -0.481755 0.876306
-0.967462 -0.531868 0.64042 -0.481755 0.904827
-0.899792 -0.494666 0.571493 -0.481755 0.929776
-0.828536 -0.455493 0.492471 -0.481755 0.951056
-0.754224 -0.41464 0.404773 -0.481755 0.968583
-0.677424 -0.372418 0.309961 -0.481755 0.982287
-0.598731 -0.329156 0.20971 -0.481755 0.992115
-0.518763 -0.285193 0.105782 -0.481755 0.998027
-0.452413 -0.21289 0 -0.42578 1
-0.372228 -0.175158 -0.108617 -0.42578 0.998027
-0.292653 -0.137712 -0.21536 -0.42578 0.992115
-0.214288 -0.100836 -0.318383 -0.42578 0.982287
-0.137722 -0.0648071 -0.415901 -0.42578 0.968583
-0.063522 -0.0298913 -0.506219 -0.42578 0.951057
--0.00777111 0.00365682 -0.587757 -0.42578 0.929777
--0.0756505 0.0355985 -0.659075 -0.42578 0.904827
--0.139648 0.0657133 -0.718902 -0.42578 0.876307
--0.199337 0.0938014 -0.766148 -0.42578 0.844328
--0.254343 0.119685 -0.79993 -0.42578 0.809017
--0.304341 0.143212 -0.81958 -0.42578 0.770513
--0.349059 0.164255 -0.824661 -0.42578 0.728969
--0.388284 0.182713 -0.814971 -0.42578 0.684547
--0.421863 0.198514 -0.790548 -0.42578 0.637424
--0.449699 0.211613 -0.75167 -0.42578 0.587785
--0.471755 0.221992 -0.698851 -0.42578 0.535827
--0.488052 0.22966 -0.632833 -0.42578 0.481754
--0.498667 0.234655 -0.554575 -0.42578 0.42578
--0.50373 0.237038 -0.465236 -0.42578 0.368125
--0.503422 0.236893 -0.366163 -0.42578 0.309017
--0.49797 0.234327 -0.258861 -0.42578 0.24869
--0.487642 0.229468 -0.144979 -0.42578 0.187382
--0.472746 0.222458 -0.0262775 -0.42578 0.125334
--0.453618 0.213457 0.095398 -0.42578 0.0627908
--0.430622 0.202636 0.218143 -0.42578 3.26795e-07
--0.404141 0.190175 0.340028 -0.42578 -0.0627902
--0.374572 0.176261 0.459124 -0.42578 -0.125333
--0.34232 0.161084 0.573538 -0.42578 -0.187381
--0.30779 0.144836 0.681441 -0.42578 -0.24869
--0.271385 0.127704 0.781096 -0.42578 -0.309017
--0.233495 0.109875 0.870885 -0.42578 -0.368124
--0.194495 0.0915229 0.949339 -0.42578 -0.425779
--0.154741 0.072816 1.01515 -0.42578 -0.481753
--0.114561 0.0539087 1.06722 -0.42578 -0.535826
--0.0742558 0.0349422 1.10463 -0.42578 -0.587785
--0.0340912 0.0160422 1.12671 -0.42578 -0.637424
-0.0057008 -0.0026826 1.13301 -0.42578 -0.684547
-0.0449266 -0.0211409 1.12332 -0.42578 -0.728968
-0.0834312 -0.0392599 1.09768 -0.42578 -0.770513
-0.1211 -0.0569853 1.05637 -0.42578 -0.809017
-0.157856 -0.0742816 0.999924 -0.42578 -0.844328
-0.193663 -0.0911311 0.929086 -0.42578 -0.876306
-0.228521 -0.107534 0.844839 -0.42578 -0.904827
-0.262464 -0.123506 0.748366 -0.42578 -0.929776
-0.295558 -0.13908 0.641041 -0.42578 -0.951056
-0.327901 -0.154299 0.524403 -0.42578 -0.968583
-0.35961 -0.16922 0.400136 -0.42578 -0.982287
-0.390826 -0.183909 0.270043 -0.42578 -0.992115
-0.421705 -0.19844 0.136014 -0.42578 -0.998027
-0.452413 -0.21289 1.41827e-06 -0.42578 -1
-0.483121 -0.22734 -0.136011 -0.42578 -0.998027
-0.514 -0.241871 -0.27004 -0.42578 -0.992115
-0.545216 -0.25656 -0.400134 -0.42578 -0.982287
-0.576925 -0.271481 -0.5244 -0.42578 -0.968583
-0.609267 -0.2867 -0.641038 -0.42578 -0.951057
-0.642362 -0.302274 -0.748364 -0.42578 -0.929777
-0.676305 -0.318246 -0.844837 -0.42578 -0.904827
-0.711163 -0.334649 -0.929084 -0.42578 -0.876307
-0.74697 -0.351498 -0.999922 -0.42578 -0.844328
-0.783726 -0.368795 -1.05637 -0.42578 -0.809017
-0.821394 -0.38652 -1.09768 -0.42578 -0.770514
-0.859899 -0.404639 -1.12332 -0.42578 -0.728969
-0.899125 -0.423097 -1.13301 -0.42578 -0.684548
-0.938917 -0.441822 -1.12671 -0.42578 -0.637425
-0.979082 -0.460722 -1.10463 -0.42578 -0.587786
-1.01939 -0.479689 -1.06722 -0.42578 -0.535828
-1.05957 -0.498596 -1.01516 -0.42578 -0.481754
-1.09932 -0.517303 -0.94934 -0.42578 -0.42578
-1.13832 -0.535655 -0.870887 -0.42578 -0.368125
-1.17621 -0.553485 -0.781098 -0.42578 -0.309018
-1.21262 -0.570616 -0.681443 -0.42578 -0.248691
-1.24715 -0.586864 -0.57354 -0.42578 -0.187382
-1.2794 -0.602041 -0.459126 -0.42578 -0.125334
-1.30897 -0.615955 -0.34003 -0.42578 -0.0627915
-1.33545 -0.628416 -0.218146 -0.42578 -9.80385e-07
-1.35844 -0.639237 -0.0954005 -0.42578 0.0627895
-1.37757 -0.648238 0.026275 -0.42578 0.125332
-1.39247 -0.655248 0.144977 -0.42578 0.18738
-1.4028 -0.660108 0.258859 -0.42578 0.248689
-1.40825 -0.662673 0.366161 -0.42578 0.309016
-1.40856 -0.662818 0.465234 -0.42578 0.368124
-1.40349 -0.660436 0.554573 -0.42578 0.425778
-1.39288 -0.655441 0.632832 -0.42578 0.481753
-1.37658 -0.647772 0.69885 -0.42578 0.535826
-1.35453 -0.637394 0.751669 -0.42578 0.587784
-1.32669 -0.624295 0.790547 -0.42578 0.637423
-1.29311 -0.608494 0.814971 -0.42578 0.684546
-1.25389 -0.590036 0.824661 -0.42578 0.728968
-1.20917 -0.568993 0.819581 -0.42578 0.770513
-1.15917 -0.545466 0.799931 -0.42578 0.809016
-1.10417 -0.519582 0.766149 -0.42578 0.844327
-1.04448 -0.491494 0.718903 -0.42578 0.876306
-0.980478 -0.46138 0.659077 -0.42578 0.904827
-0.912599 -0.429438 0.587758 -0.42578 0.929776
-0.841306 -0.39589 0.506221 -0.42578 0.951056
-0.767106 -0.360974 0.415903 -0.42578 0.968583
-0.69054 -0.324945 0.318385 -0.42578 0.982287
-0.612176 -0.288069 0.215362 -0.42578 0.992115
-0.5326 -0.250623 0.10862 -0.42578 0.998027
-0.464888 -0.184063 0 -0.368126 1
-0.385705 -0.152712 -0.111347 -0.368126 0.998027
-0.307093 -0.121587 -0.2208 -0.368126 0.992115
-0.229616 -0.0909116 -0.326492 -0.368126 0.982287
-0.153825 -0.0609039 -0.42662 -0.368126 0.968583
-0.0802549 -0.0317753 -0.51947 -0.368126 0.951057
-0.00941336 -0.00372703 -0.603442 -0.368126 0.929777
--0.0582204 0.0230512 -0.677082 -0.368126 0.904827
--0.122202 0.0483835 -0.7391 -0.368126 0.876307
--0.182128 0.0721099 -0.788396 -0.368126 0.844328
--0.237636 0.0940872 -0.82407 -0.368126 0.809017
--0.288413 0.114191 -0.845446 -0.368126 0.770513
--0.334193 0.132317 -0.852077 -0.368126 0.728969
--0.374763 0.14838 -0.843753 -0.368126 0.684547
--0.409964 0.162317 -0.820508 -0.368126 0.637424
--0.439689 0.174086 -0.782616 -0.368126 0.587785
--0.463884 0.183665 -0.730588 -0.368126 0.535827
--0.482551 0.191056 -0.665169 -0.368126 0.481754
--0.495738 0.196277 -0.587317 -0.368126 0.42578
--0.503547 0.199369 -0.498199 -0.368126 0.368125
--0.506124 0.20039 -0.399164 -0.368126 0.309017
--0.503658 0.199413 -0.291726 -0.368126 0.24869
--0.496378 0.196531 -0.177542 -0.368126 0.187382
--0.484545 0.191846 -0.0583811 -0.368126 0.125334
--0.468453 0.185474 0.0638983 -0.368126 0.0627908
--0.448419 0.177542 0.187381 -0.368126 3.26795e-07
--0.424781 0.168183 0.310125 -0.368126 -0.0627902
--0.39789 0.157536 0.430189 -0.368126 -0.125333
--0.368106 0.145744 0.545666 -0.368126 -0.187381
--0.335793 0.13295 0.654715 -0.368126 -0.24869
--0.301313 0.119299 0.755584 -0.368126 -0.309017
--0.26502 0.104929 0.846645 -0.368126 -0.368124
--0.227256 0.0899773 0.926413 -0.368126 -0.425779
--0.188348 0.0745724 0.993576 -0.368126 -0.481753
--0.148601 0.0588355 1.04701 -0.368126 -0.535826
--0.108297 0.042878 1.08581 -0.368126 -0.587785
--0.0676902 0.0268005 1.10927 -0.368126 -0.637424
--0.027005 0.0106921 1.11694 -0.368126 -0.684547
-0.0135654 -0.00537095 1.10862 -0.368126 -0.728968
-0.0538611 -0.0213252 1.08433 -0.368126 -0.770513
-0.0937554 -0.0371205 1.04435 -0.368126 -0.809017
-0.133155 -0.0527201 0.989205 -0.368126 -0.844328
-0.172 -0.0680999 0.919645 -0.368126 -0.876306
-0.210262 -0.0832488 0.836649 -0.368126 -0.904827
-0.247941 -0.0981671 0.741403 -0.368126 -0.929776
-0.285066 -0.112866 0.635279 -0.368126 -0.951056
-0.32169 -0.127367 0.519822 -0.368126 -0.968583
-0.357887 -0.141698 0.396717 -0.368126 -0.982287
-0.393747 -0.155896 0.267771 -0.368126 -0.992115
-0.429377 -0.170003 0.13488 -0.368126 -0.998027
-0.464888 -0.184063 1.4065e-06 -0.368126 -1
-0.500399 -0.198123 -0.134878 -0.368126 -0.998027
-0.536028 -0.212229 -0.267769 -0.368126 -0.992115
-0.571888 -0.226427 -0.396714 -0.368126 -0.982287
-0.608085 -0.240759 -0.519819 -0.368126 -0.968583
-0.644709 -0.255259 -0.635277 -0.368126 -0.951057
-0.681834 -0.269958 -0.741401 -0.368126 -0.929777
-0.719513 -0.284877 -0.836648 -0.368126 -0.904827
-0.757775 -0.300025 -0.919643 -0.368126 -0.876307
-0.79662 -0.315405 -0.989203 -0.368126 -0.844328
-0.83602 -0.331005 -1.04435 -0.368126 -0.809017
-0.875914 -0.3468 -1.08433 -0.368126 -0.770514
-0.91621 -0.362754 -1.10862 -0.368126 -0.728969
-0.95678 -0.378817 -1.11694 -0.368126 -0.684548
-0.997465 -0.394926 -1.10927 -0.368126 -0.637425
-1.03807 -0.411003 -1.08581 -0.368126 -0.587786
-1.07838 -0.426961 -1.04701 -0.368126 -0.535828
-1.11812 -0.442698 -0.993577 -0.368126 -0.481754
-1.15703 -0.458103 -0.926415 -0.368126 -0.42578
-1.19479 -0.473054 -0.846646 -0.368126 -0.368125
-1.23109 -0.487424 -0.755586 -0.368126 -0.309018
-1.26557 -0.501076 -0.654717 -0.368126 -0.248691
-1.29788 -0.51387 -0.545669 -0.368126 -0.187382
-1.32767 -0.525662 -0.430191 -0.368126 -0.125334
-1.35456 -0.536309 -0.310127 -0.368126 -0.0627915
-1.37819 -0.545668 -0.187384 -0.368126 -9.80385e-07
-1.39823 -0.5536 -0.0639009 -0.368126 0.0627895
-1.41432 -0.559971 0.0583786 -0.368126 0.125332
-1.42615 -0.564656 0.177539 -0.368126 0.18738
-1.43343 -0.567539 0.291724 -0.368126 0.248689
-1.4359 -0.568515 0.399161 -0.368126 0.309016
-1.43332 -0.567495 0.498197 -0.368126 0.368124
-1.42551 -0.564403 0.587316 -0.368126 0.425778
-1.41233 -0.559182 0.665167 -0.368126 0.481753
-1.39366 -0.551791 0.730587 -0.368126 0.535826
-1.36947 -0.542212 0.782615 -0.368126 0.587784
-1.33974 -0.530443 0.820507 -0.368126 0.637423
-1.30454 -0.516506 0.843753 -0.368126 0.684546
-1.26397 -0.500443 0.852077 -0.368126 0.728968
-1.21819 -0.482317 0.845447 -0.368126 0.770513
-1.16741 -0.462213 0.824071 -0.368126 0.809016
-1.11191 -0.440236 0.788397 -0.368126 0.844327
-1.05198 -0.41651 0.739102 -0.368126 0.876306
-0.987998 -0.391177 0.677083 -0.368126 0.904827
-0.920364 -0.364399 0.603443 -0.368126 0.929776
-0.849523 -0.336351 0.519471 -0.368126 0.951056
-0.775952 -0.307222 0.426622 -0.368126 0.968583
-0.700162 -0.277215 0.326494 -0.368126 0.982287
-0.622685 -0.246539 0.220802 -0.368126 0.992115
-0.544073 -0.215414 0.11135 -0.368126 0.998027
-0.475528 -0.154509 0 -0.309018 1
-0.397899 -0.129286 -0.113967 -0.309018 0.998027
-0.320797 -0.104234 -0.226022 -0.309018 0.992115
-0.244743 -0.0795222 -0.334279 -0.309018 0.982287
-0.170247 -0.055317 -0.436919 -0.309018 0.968583
-0.0978041 -0.0317786 -0.532207 -0.309018 0.951057
-0.0278856 -0.0090606 -0.618531 -0.309018 0.929777
--0.0390622 0.0126921 -0.69442 -0.309018 0.904827
--0.102624 0.0333446 -0.758569 -0.309018 0.876307
--0.162418 0.052773 -0.809865 -0.309018 0.844328
--0.218103 0.0708662 -0.847397 -0.309018 0.809017
--0.269377 0.0875264 -0.870478 -0.309018 0.770513
--0.315984 0.10267 -0.878652 -0.309018 0.728969
--0.357711 0.116228 -0.871703 -0.309018 0.684547
--0.394394 0.128147 -0.849658 -0.309018 0.637424
--0.425916 0.138389 -0.812789 -0.309018 0.587785
--0.452208 0.146932 -0.761605 -0.309018 0.535827
--0.473246 0.153768 -0.696848 -0.309018 0.481754
--0.489054 0.158904 -0.61948 -0.309018 0.42578
--0.499701 0.162363 -0.53067 -0.309018 0.368125
--0.505294 0.164181 -0.43177 -0.309018 0.309017
--0.505982 0.164404 -0.324303 -0.309018 0.24869
--0.50195 0.163094 -0.209929 -0.309018 0.187382
--0.493412 0.16032 -0.0904271 -0.309018 0.125334
--0.480612 0.156161 0.0323356 -0.309018 0.0627908
--0.463819 0.150705 0.156434 -0.309018 3.26795e-07
--0.443319 0.144044 0.279916 -0.309018 -0.0627902
--0.419412 0.136276 0.400829 -0.309018 -0.125333
--0.392412 0.127503 0.517256 -0.309018 -0.187381
--0.362633 0.117827 0.627342 -0.309018 -0.24869
--0.330394 0.107352 0.729327 -0.309018 -0.309017
--0.296009 0.0961795 0.821568 -0.309018 -0.368124
--0.259783 0.0844089 0.902573 -0.309018 -0.425779
--0.22201 0.0721358 0.971017 -0.309018 -0.481753
--0.18297 0.0594509 1.02577 -0.309018 -0.535826
--0.142923 0.0464387 1.06591 -0.309018 -0.587785
--0.102108 0.0331771 1.09073 -0.309018 -0.637424
--0.0607418 0.0197363 1.09978 -0.309018 -0.684547
--0.0190145 0.00617823 1.09283 -0.309018 -0.728968
-0.0229087 -0.00744352 1.06991 -0.309018 -0.770513
-0.0648902 -0.0210842 1.0313 -0.309018 -0.809017
-0.106819 -0.0347078 0.97751 -0.309018 -0.844328
-0.148612 -0.0482871 0.909297 -0.309018 -0.876306
-0.190209 -0.0618029 0.827634 -0.309018 -0.904827
-0.231577 -0.0752442 0.733708 -0.309018 -0.929776
-0.272703 -0.0886071 0.628891 -0.309018 -0.951056
-0.313596 -0.101894 0.514727 -0.309018 -0.968583
-0.354281 -0.115113 0.392907 -0.309018 -0.982287
-0.394796 -0.128278 0.265236 -0.309018 -0.992115
-0.435192 -0.141403 0.133614 -0.309018 -0.998027
-0.475528 -0.154509 1.39333e-06 -0.309018 -1
-0.515863 -0.167615 -0.133611 -0.309018 -0.998027
-0.556259 -0.18074 -0.265233 -0.309018 -0.992115
-0.596775 -0.193905 -0.392904 -0.309018 -0.982287
-0.637459 -0.207124 -0.514725 -0.309018 -0.968583
-0.678352 -0.220411 -0.628888 -0.309018 -0.951057
-0.719478 -0.233774 -0.733706 -0.309018 -0.929777
-0.760846 -0.247215 -0.827633 -0.309018 -0.904827
-0.802444 -0.260731 -0.909295 -0.309018 -0.876307
-0.844236 -0.27431 -0.977508 -0.309018 -0.844328
-0.886165 -0.287934 -1.0313 -0.309018 -0.809017
-0.928147 -0.301574 -1.06991 -0.309018 -0.770514
-0.97007 -0.315196 -1.09283 -0.309018 -0.728969
-1.0118 -0.328754 -1.09978 -0.309018 -0.684548
-1.05316 -0.342195 -1.09073 -0.309018 -0.637425
-1.09398 -0.355457 -1.06591 -0.309018 -0.587786
-1.13403 -0.368469 -1.02577 -0.309018 -0.535828
-1.17307 -0.381154 -0.971019 -0.309018 -0.481754
-1.21084 -0.393427 -0.902575 -0.309018 -0.42578
-1.24706 -0.405197 -0.82157 -0.309018 -0.368125
-1.28145 -0.41637 -0.729329 -0.309018 -0.309018
-1.31369 -0.426845 -0.627344 -0.309018 -0.248691
-1.34347 -0.436521 -0.517258 -0.309018 -0.187382
-1.37047 -0.445294 -0.400831 -0.309018 -0.125334
-1.39437 -0.453062 -0.279918 -0.309018 -0.0627915
-1.41487 -0.459723 -0.156437 -0.309018 -9.80385e-07
-1.43167 -0.465179 -0.0323382 -0.309018 0.0627895
-1.44447 -0.469338 0.0904246 -0.309018 0.125332
-1.45301 -0.472112 0.209926 -0.309018 0.18738
-1.45704 -0.473422 0.3243 -0.309018 0.248689
-1.45635 -0.473199 0.431768 -0.309018 0.309016
-1.45076 -0.471381 0.530668 -0.309018 0.368124
-1.44011 -0.467922 0.619479 -0.309018 0.425778
-1.4243 -0.462786 0.696846 -0.309018 0.481753
-1.40326 -0.45595 0.761604 -0.309018 0.535826
-1.37697 -0.447408 0.812788 -0.309018 0.587784
-1.34545 -0.437165 0.849658 -0.309018 0.637423
-1.30877 -0.425246 0.871703 -0.309018 0.684546
-1.26704 -0.411688 0.878652 -0.309018 0.728968
-1.22043 -0.396545 0.870478 -0.309018 0.770513
-1.16916 -0.379885 0.847398 -0.309018 0.809016
-1.11348 -0.361792 0.809866 -0.309018 0.844327
-1.05368 -0.342363 0.758571 -0.309018 0.876306
-0.99012 -0.321711 0.694421 -0.309018 0.904827
-0.923172 -0.299958 0.618533 -0.309018 0.929776
-0.853253 -0.27724 0.532209 -0.309018 0.951056
-0.78081 -0.253702 0.436921 -0.309018 0.968583
-0.706315 -0.229497 0.334281 -0.309018 0.982287
-0.630261 -0.204785 0.226024 -0.309018 0.992115
-0.553159 -0.179733 0.11397 -0.309018 0.998027
-0.484291 -0.124346 0 -0.248691 1
-0.408738 -0.104947 -0.116475 -0.248691 0.998027
-0.333663 -0.0856706 -0.23102 -0.248691 0.992115
-0.259539 -0.0666387 -0.341736 -0.248691 0.982287
-0.186831 -0.0479703 -0.446786 -0.248691 0.968583
-0.115988 -0.0297809 -0.54442 -0.248691 0.951057
-0.0474426 -0.0121812 -0.633011 -0.248691 0.929777
--0.0183964 0.00472343 -0.711073 -0.248691 0.904827
--0.0811456 0.0208348 -0.77729 -0.248691 0.876307
--0.140451 0.0360619 -0.830535 -0.248691 0.844328
--0.195993 0.0503226 -0.869888 -0.248691 0.809017
--0.247484 0.0635434 -0.894651 -0.248691 0.770513
--0.294677 0.0756607 -0.90436 -0.248691 0.728969
--0.337364 0.0866208 -0.898792 -0.248691 0.684547
--0.375375 0.0963805 -0.87797 -0.248691 0.637424
--0.408584 0.104907 -0.84216 -0.248691 0.587785
--0.436904 0.112178 -0.791869 -0.248691 0.535827
--0.460289 0.118183 -0.727839 -0.248691 0.481754
--0.478735 0.122919 -0.651032 -0.248691 0.42578
--0.492274 0.126395 -0.562617 -0.248691 0.368125
--0.500977 0.12863 -0.463951 -0.248691 0.309017
--0.504947 0.129649 -0.356559 -0.248691 0.24869
--0.504322 0.129488 -0.242108 -0.248691 0.187382
--0.499266 0.128191 -0.122384 -0.248691 0.125334
--0.489973 0.125804 0.000740985 -0.248691 0.0627908
--0.476654 0.122385 0.125333 -0.248691 3.26795e-07
--0.459543 0.117991 0.249431 -0.248691 -0.0627902
--0.438887 0.112688 0.371074 -0.248691 -0.125333
--0.414944 0.10654 0.488335 -0.248691 -0.187381
--0.387981 0.0996171 0.59935 -0.248691 -0.24869
--0.358267 0.0919878 0.702349 -0.248691 -0.309017
--0.326072 0.0837214 0.795681 -0.248691 -0.368124
--0.291661 0.0748861 0.877842 -0.248691 -0.425779
--0.255293 0.0655485 0.947501 -0.248691 -0.481753
--0.217219 0.0557727 1.00351 -0.248691 -0.535826
--0.177675 0.0456195 1.04495 -0.248691 -0.587785
--0.136884 0.035146 1.07111 -0.248691 -0.637424
--0.0950511 0.0244051 1.08152 -0.248691 -0.684547
--0.0523645 0.013445 1.07595 -0.248691 -0.728968
--0.0089925 0.00230889 1.05443 -0.248691 -0.770513
-0.0349163 -0.00896503 1.01723 -0.248691 -0.809017
-0.0792334 -0.0203438 0.96485 -0.248691 -0.844328
-0.12385 -0.0317995 0.898051 -0.248691 -0.876306
-0.168678 -0.0433093 0.817803 -0.248691 -0.904827
-0.213645 -0.054855 0.725289 -0.248691 -0.929776
-0.258698 -0.0664226 0.621882 -0.248691 -0.951056
-0.303797 -0.0780021 0.509125 -0.248691 -0.968583
-0.348917 -0.0895871 0.388708 -0.248691 -0.982287
-0.394043 -0.101173 0.262439 -0.248691 -0.992115
-0.439168 -0.11276 0.132216 -0.248691 -0.998027
-0.484291 -0.124345 1.37879e-06 -0.248691 -1
-0.529414 -0.135931 -0.132213 -0.248691 -0.998027
-0.574539 -0.147517 -0.262436 -0.248691 -0.992115
-0.619665 -0.159104 -0.388706 -0.248691 -0.982287
-0.664785 -0.170689 -0.509123 -0.248691 -0.968583
-0.709884 -0.182268 -0.621879 -0.248691 -0.951057
-0.754937 -0.193836 -0.725287 -0.248691 -0.929777
-0.799904 -0.205382 -0.817801 -0.248691 -0.904827
-0.844732 -0.216891 -0.898049 -0.248691 -0.876307
-0.889348 -0.228347 -0.964849 -0.248691 -0.844328
-0.933666 -0.239726 -1.01723 -0.248691 -0.809017
-0.977574 -0.251 -1.05443 -0.248691 -0.770514
-1.02095 -0.262136 -1.07595 -0.248691 -0.728969
-1.06363 -0.273096 -1.08152 -0.248691 -0.684548
-1.10547 -0.283837 -1.07111 -0.248691 -0.637425
-1.14626 -0.29431 -1.04495 -0.248691 -0.587786
-1.1858 -0.304464 -1.00352 -0.248691 -0.535828
-1.22388 -0.314239 -0.947502 -0.248691 -0.481754
-1.26024 -0.323577 -0.877844 -0.248691 -0.42578
-1.29465 -0.332412 -0.795683 -0.248691 -0.368125
-1.32685 -0.340679 -0.702351 -0.248691 -0.309018
-1.35656 -0.348308 -0.599353 -0.248691 -0.248691
-1.38353 -0.355231 -0.488337 -0.248691 -0.187382
-1.40747 -0.361378 -0.371076 -0.248691 -0.125334
-1.42813 -0.366682 -0.249433 -0.248691 -0.0627915
-1.44524 -0.371076 -0.125336 -0.248691 -9.80385e-07
-1.45856 -0.374495 -0.000743568 -0.248691 0.0627895
-1.46785 -0.376882 0.122381 -0.248691 0.125332
-1.4729 -0.37818 0.242106 -0.248691 0.18738
-1.47353 -0.37834 0.356557 -0.248691 0.248689
-1.46956 -0.377321 0.463949 -0.248691 0.309016
-1.46086 -0.375086 0.562615 -0.248691 0.368124
-1.44732 -0.37161 0.651031 -0.248691 0.425778
-1.42887 -0.366874 0.727838 -0.248691 0.481753
-1.40549 -0.36087 0.791868 -0.248691 0.535826
-1.37717 -0.353598 0.842159 -0.248691 0.587784
-1.34396 -0.345072 0.87797 -0.248691 0.637423
-1.30595 -0.335312 0.898792 -0.248691 0.684546
-1.26326 -0.324352 0.90436 -0.248691 0.728968
-1.21607 -0.312235 0.894651 -0.248691 0.770513
-1.16458 -0.299014 0.869888 -0.248691 0.809016
-1.10904 -0.284753 0.830536 -0.248691 0.844327
-1.04973 -0.269526 0.777291 -0.248691 0.876306
-0.986981 -0.253415 0.711074 -0.248691 0.904827
-0.921142 -0.23651 0.633012 -0.248691 0.929776
-0.852596 -0.218911 0.544422 -0.248691 0.951056
-0.781753 -0.200721 0.446788 -0.248691 0.968583
-0.709045 -0.182053 0.341739 -0.248691 0.982287
-0.634921 -0.163021 0.231023 -0.248691 0.992115
-0.559846 -0.143745 0.116478 -0.248691 0.998027
-0.491144 -0.0936913 0 -0.187383 1
-0.418153 -0.0797675 -0.118868 -0.187383 0.998027
-0.345587 -0.0659248 -0.235791 -0.187383 0.992115
-0.273868 -0.0522435 -0.348856 -0.187383 0.982287
-0.203409 -0.0388025 -0.456212 -0.187383 0.968583
-0.134611 -0.0256787 -0.556095 -0.187383 0.951057
-0.0678636 -0.0129458 -0.646865 -0.187383 0.929777
-0.00353453 -0.000674252 -0.727024 -0.187383 0.904827
--0.0580279 0.0110695 -0.795243 -0.187383 0.876307
--0.1165 0.0222238 -0.850385 -0.187383 0.844328
--0.171585 0.0327319 -0.89152 -0.187383 0.809017
--0.223015 0.0425428 -0.91794 -0.187383 0.770513
--0.270553 0.0516112 -0.929175 -0.187383 0.728969
--0.313994 0.0598981 -0.924995 -0.187383 0.684547
--0.353167 0.0673707 -0.905416 -0.187383 0.637424
--0.387934 0.0740029 -0.8707 -0.187383 0.587785
--0.418192 0.0797749 -0.821353 -0.187383 0.535827
--0.443872 0.0846737 -0.758113 -0.187383 0.481754
--0.464939 0.0886926 -0.681942 -0.187383 0.42578
--0.481391 0.0918309 -0.594009 -0.187383 0.368125
--0.493257 0.0940944 -0.495674 -0.187383 0.309017
--0.500595 0.0954942 -0.388464 -0.187383 0.24869
--0.503492 0.096047 -0.274049 -0.187383 0.187382
--0.502062 0.0957741 -0.15422 -0.187383 0.125334
--0.49644 0.0947017 -0.0308544 -0.187383 0.0627908
--0.486784 0.0928597 0.0941083 -0.187383 3.26795e-07
--0.473268 0.0902814 0.2187 -0.187383 -0.0627902
--0.456083 0.0870032 0.340952 -0.187383 -0.125333
--0.435432 0.0830637 0.458932 -0.187383 -0.187381
--0.411527 0.0785034 0.570767 -0.187383 -0.24869
--0.384585 0.073364 0.674679 -0.187383 -0.309017
--0.35483 0.0676879 0.769009 -0.187383 -0.368124
--0.322484 0.0615176 0.852245 -0.187383 -0.425779
--0.28777 0.0548954 0.923049 -0.187383 -0.481753
--0.250904 0.0478629 0.98027 -0.187383 -0.535826
--0.212099 0.0404604 1.02297 -0.187383 -0.587785
--0.171558 0.0327267 1.05044 -0.187383 -0.637424
--0.129476 0.024699 1.0622 -0.187383 -0.684547
--0.0860347 0.0164121 1.05802 -0.187383 -0.728968
--0.0414067 0.00789881 1.03792 -0.187383 -0.770513
-0.0042493 -0.000810604 1.00215 -0.187383 -0.809017
-0.0507873 -0.00968827 0.951238 -0.187383 -0.844328
-0.0980743 -0.0187088 0.885919 -0.187383 -0.876306
-0.14599 -0.0278492 0.807164 -0.187383 -0.904827
-0.194425 -0.0370888 0.716154 -0.187383 -0.929776
-0.243283 -0.046409 0.614259 -0.187383 -0.951056
-0.292477 -0.0557933 0.503021 -0.187383 -0.968583
-0.341928 -0.0652267 0.384126 -0.187383 -0.982287
-0.391566 -0.0746956 0.259382 -0.187383 -0.992115
-0.441324 -0.0841877 0.130687 -0.187383 -0.998027
-0.491143 -0.0936912 1.36289e-06 -0.187383 -1
-0.540962 -0.103195 -0.130685 -0.187383 -0.998027
-0.59072 -0.112687 -0.25938 -0.187383 -0.992115
-0.640358 -0.122156 -0.384124 -0.187383 -0.982287
-0.689809 -0.131589 -0.503018 -0.187383 -0.968583
-0.739003 -0.140973 -0.614257 -0.187383 -0.951057
-0.787861 -0.150294 -0.716152 -0.187383 -0.929777
-0.836296 -0.159533 -0.807162 -0.187383 -0.904827
-0.884212 -0.168674 -0.885917 -0.187383 -0.876307
-0.931499 -0.177694 -0.951237 -0.187383 -0.844328
-0.978037 -0.186572 -1.00215 -0.187383 -0.809017
-1.02369 -0.195281 -1.03791 -0.187383 -0.770514
-1.06832 -0.203794 -1.05802 -0.187383 -0.728969
-1.11176 -0.212081 -1.0622 -0.187383 -0.684548
-1.15384 -0.220109 -1.05044 -0.187383 -0.637425
-1.19439 -0.227843 -1.02297 -0.187383 -0.587786
-1.23319 -0.235245 -0.980271 -0.187383 -0.535828
-1.27006 -0.242278 -0.92305 -0.187383 -0.481754
-1.30477 -0.2489 -0.852247 -0.187383 -0.42578
-1.33712 -0.25507 -0.769011 -0.187383 -0.368125
-1.36687 -0.260746 -0.674681 -0.187383 -0.309018
-1.39381 -0.265886 -0.57077 -0.187383 -0.248691
-1.41772 -0.270446 -0.458935 -0.187383 -0.187382
-1.43837 -0.274386 -0.340955 -0.187383 -0.125334
-1.45556 -0.277664 -0.218702 -0.187383 -0.0627915
-1.46907 -0.280242 -0.0941109 -0.187383 -9.80385e-07
-1.47873 -0.282084 0.0308518 -0.187383 0.0627895
-1.48435 -0.283157 0.154217 -0.187383 0.125332
-1.48578 -0.28343 0.274047 -0.187383 0.18738
-1.48288 -0.282877 0.388461 -0.187383 0.248689
-1.47554 -0.281477 0.495672 -0.187383 0.309016
-1.46368 -0.279214 0.594007 -0.187383 0.368124
-1.44723 -0.276075 0.68194 -0.187383 0.425778
-1.42616 -0.272056 0.758111 -0.187383 0.481753
-1.40048 -0.267158 0.821352 -0.187383 0.535826
-1.37022 -0.261386 0.870699 -0.187383 0.587784
-1.33545 -0.254753 0.905415 -0.187383 0.637423
-1.29628 -0.247281 0.924995 -0.187383 0.684546
-1.25284 -0.238994 0.929175 -0.187383 0.728968
-1.2053 -0.229926 0.917941 -0.187383 0.770513
-1.15387 -0.220115 0.89152 -0.187383 0.809016
-1.09879 -0.209607 0.850386 -0.187383 0.844327
-1.04032 -0.198452 0.795245 -0.187383 0.876306
-0.978754 -0.186709 0.727025 -0.187383 0.904827
-0.914425 -0.174437 0.646867 -0.187383 0.929776
-0.847677 -0.161704 0.556097 -0.187383 0.951056
-0.77888 -0.14858 0.456214 -0.187383 0.968583
-0.70842 -0.135139 0.348859 -0.187383 0.982287
-0.636701 -0.121458 0.235794 -0.187383 0.992115
-0.564136 -0.107615 0.11887 -0.187383 0.998027
-0.496057 -0.0626673 0 -0.125335 1
-0.426077 -0.0538266 -0.121143 -0.125335 0.998027
-0.356465 -0.0450325 -0.240329 -0.125335 0.992115
-0.287588 -0.0363312 -0.355632 -0.125335 0.982287
-0.219804 -0.027768 -0.465187 -0.125335 0.968583
-0.153465 -0.0193874 -0.567222 -0.125335 0.951057
-0.0889118 -0.0112323 -0.660081 -0.125335 0.929777
-0.0264692 -0.00334387 -0.742257 -0.125335 0.904827
--0.0335526 0.00423872 -0.812412 -0.125335 0.876307
--0.0908623 0.0114787 -0.869396 -0.125335 0.844328
--0.145189 0.0183419 -0.912272 -0.125335 0.809017
--0.196285 0.0247968 -0.940324 -0.125335 0.770513
--0.243925 0.0308152 -0.953074 -0.125335 0.728969
--0.287909 0.0363717 -0.950285 -0.125335 0.684547
--0.328064 0.0414446 -0.931968 -0.125335 0.637424
--0.364243 0.0460151 -0.898381 -0.125335 0.587785
--0.396327 0.0500682 -0.850025 -0.125335 0.535827
--0.424222 0.0535922 -0.787638 -0.125335 0.481754
--0.447863 0.0565789 -0.712178 -0.125335 0.42578
--0.467212 0.0590232 -0.624815 -0.125335 0.368125
--0.482254 0.0609235 -0.526908 -0.125335 0.309017
--0.493003 0.0622814 -0.419985 -0.125335 0.24869
--0.499494 0.0631014 -0.30572 -0.125335 0.187382
--0.501784 0.0633907 -0.185904 -0.125335 0.125334
--0.499953 0.0631595 -0.0624193 -0.125335 0.0627908
--0.4941 0.0624199 0.0627905 -0.125335 3.26795e-07
--0.484338 0.0611867 0.187752 -0.125335 -0.0627902
--0.4708 0.0594764 0.310494 -0.125335 -0.125333
--0.453629 0.0573072 0.429076 -0.125335 -0.187381
--0.432981 0.0546987 0.541621 -0.125335 -0.24869
--0.409021 0.0516719 0.646343 -0.125335 -0.309017
--0.381923 0.0482486 0.741577 -0.125335 -0.368124
--0.351864 0.0444512 0.825807 -0.125335 -0.425779
--0.319026 0.0403027 0.897686 -0.125335 -0.481753
--0.283593 0.0358265 0.956058 -0.125335 -0.535826
--0.24575 0.0310457 0.999979 -0.125335 -0.587785
--0.205679 0.0259836 1.02873 -0.125335 -0.637424
--0.163563 0.0206631 1.04183 -0.125335 -0.684547
--0.119579 0.0151065 1.03904 -0.125335 -0.728968
--0.0739002 0.00933586 1.02037 -0.125335 -0.770513
--0.0266956 0.00337248 0.986088 -0.125335 -0.809017
-0.0218714 -0.00276303 0.936687 -0.125335 -0.844328
-0.0716434 -0.00905076 0.872912 -0.125335 -0.876306
-0.122468 -0.0154715 0.795729 -0.125335 -0.904827
-0.1742 -0.0220068 0.706312 -0.125335 -0.929776
-0.226698 -0.0286389 0.60603 -0.125335 -0.951056
-0.279826 -0.0353506 0.49642 -0.125335 -0.968583
-0.333453 -0.0421253 0.379165 -0.125335 -0.982287
-0.38745 -0.0489468 0.25607 -0.125335 -0.992115
-0.441692 -0.0557993 0.12903 -0.125335 -0.998027
-0.496057 -0.0626672 1.34564e-06 -0.125335 -1
-0.550421 -0.0695351 -0.129027 -0.125335 -0.998027
-0.604664 -0.0763876 -0.256068 -0.125335 -0.992115
-0.658661 -0.0832091 -0.379163 -0.125335 -0.982287
-0.712287 -0.0899837 -0.496417 -0.125335 -0.968583
-0.765415 -0.0966954 -0.606028 -0.125335 -0.951057
-0.817913 -0.103328 -0.70631 -0.125335 -0.929777
-0.869645 -0.109863 -0.795727 -0.125335 -0.904827
-0.92047 -0.116284 -0.872911 -0.125335 -0.876307
-0.970242 -0.122571 -0.936686 -0.125335 -0.844328
-1.01881 -0.128707 -0.986087 -0.125335 -0.809017
-1.06601 -0.13467 -1.02037 -0.125335 -0.770514
-1.11169 -0.140441 -1.03904 -0.125335 -0.728969
-1.15568 -0.145997 -1.04183 -0.125335 -0.684548
-1.19779 -0.151318 -1.02873 -0.125335 -0.637425
-1.23786 -0.15638 -0.999979 -0.125335 -0.587786
-1.27571 -0.161161 -0.956059 -0.125335 -0.535828
-1.31114 -0.165637 -0.897687 -0.125335 -0.481754
-1.34398 -0.169786 -0.825809 -0.125335 -0.42578
-1.37404 -0.173583 -0.741579 -0.125335 -0.368125
-1.40114 -0.177006 -0.646345 -0.125335 -0.309018
-1.42509 -0.180033 -0.541623 -0.125335 -0.248691
-1.44574 -0.182642 -0.429079 -0.125335 -0.187382
-1.46291 -0.184811 -0.310497 -0.125335 -0.125334
-1.47645 -0.186521 -0.187755 -0.125335 -0.0627915
-1.48621 -0.187754 -0.0627931 -0.125335 -9.80385e-07
-1.49207 -0.188494 0.0624167 -0.125335 0.0627895
-1.4939 -0.188725 0.185901 -0.125335 0.125332
-1.49161 -0.188436 0.305717 -0.125335 0.18738
-1.48512 -0.187616 0.419983 -0.125335 0.248689
-1.47437 -0.186258 0.526906 -0.125335 0.309016
-1.45933 -0.184358 0.624813 -0.125335 0.368124
-1.43998 -0.181913 0.712176 -0.125335 0.425778
-1.41634 -0.178927 0.787636 -0.125335 0.481753
-1.38844 -0.175403 0.850024 -0.125335 0.535826
-1.35636 -0.17135 0.89838 -0.125335 0.587784
-1.32018 -0.166779 0.931967 -0.125335 0.637423
-1.28002 -0.161706 0.950284 -0.125335 0.684546
-1.23604 -0.15615 0.953074 -0.125335 0.728968
-1.1884 -0.150131 0.940325 -0.125335 0.770513
-1.1373 -0.143676 0.912273 -0.125335 0.809016
-1.08298 -0.136813 0.869397 -0.125335 0.844327
-1.02567 -0.129573 0.812413 -0.125335 0.876306
-0.965647 -0.121991 0.742259 -0.125335 0.904827
-0.903204 -0.114102 0.660083 -0.125335 0.929776
-0.838651 -0.105947 0.567224 -0.125335 0.951056
-0.772312 -0.0975667 0.46519 -0.125335 0.968583
-0.704528 -0.0890035 0.355635 -0.125335 0.982287
-0.635651 -0.0803022 0.240332 -0.125335 0.992115
-0.566039 -0.0715081 0.121146 -0.125335 0.998027
-0.499013 -0.0313959 0 -0.0627918 1
-0.432449 -0.0272079 -0.123299 -0.0627918 0.998027
-0.366193 -0.0230394 -0.24463 -0.0627918 0.992115
-0.300554 -0.0189096 -0.362057 -0.0627918 0.982287
-0.235834 -0.0148377 -0.473704 -0.0627918 0.968583
-0.172332 -0.0108424 -0.577788 -0.0627918 0.951057
-0.110336 -0.00694192 -0.672646 -0.0627918 0.929777
-0.0501289 -0.00315391 -0.756759 -0.0627918 0.904827
--0.00802152 0.000504682 -0.828779 -0.0627918 0.876307
--0.0638579 0.00401768 -0.887549 -0.0627918 0.844328
--0.117138 0.00736982 -0.932124 -0.0627918 0.809017
--0.167633 0.0105468 -0.96178 -0.0627918 0.770513
--0.215133 0.0135353 -0.976032 -0.0627918 0.728969
--0.259445 0.0163232 -0.974636 -0.0627918 0.684547
--0.300394 0.0188996 -0.9576 -0.0627918 0.637424
--0.337824 0.0212545 -0.925175 -0.0627918 0.587785
--0.371598 0.0233795 -0.877859 -0.0627918 0.535827
--0.401602 0.0252672 -0.816386 -0.0627918 0.481754
--0.427738 0.0269115 -0.741711 -0.0627918 0.42578
--0.449931 0.0283078 -0.655004 -0.0627918 0.368125
--0.468125 0.0294525 -0.557622 -0.0627918 0.309017
--0.482284 0.0303434 -0.451092 -0.0627918 0.24869
--0.492392 0.0309793 -0.337088 -0.0627918 0.187382
--0.498451 0.0313605 -0.217404 -0.0627918 0.125334
--0.500482 0.0314883 -0.0939226 -0.0627918 0.0627908
--0.498521 0.0313649 0.0314108 -0.0627918 3.26795e-07
--0.492623 0.0309939 0.15662 -0.0627918 -0.0627902
--0.482859 0.0303795 0.27973 -0.0627918 -0.125333
--0.469311 0.0295272 0.398797 -0.0627918 -0.187381
--0.452079 0.028443 0.51194 -0.0627918 -0.24869
--0.431271 0.0271339 0.617369 -0.0627918 -0.309017
--0.40701 0.0256075 0.713414 -0.0627918 -0.368124
--0.379428 0.0238721 0.798554 -0.0627918 -0.425779
--0.348664 0.0219365 0.871437 -0.0627918 -0.481753
--0.314867 0.0198102 0.930902 -0.0627918 -0.535826
--0.278194 0.0175028 0.975999 -0.0627918 -0.587785
--0.238806 0.0150247 1.00601 -0.0627918 -0.637424
--0.196871 0.0123863 1.02043 -0.0627918 -0.684547
--0.152559 0.00959837 1.01904 -0.0627918 -0.728968
--0.106045 0.00667193 1.00183 -0.0627918 -0.770513
--0.0575079 0.00361816 0.969051 -0.0627918 -0.809017
--0.00712684 0.000448392 0.921212 -0.0627918 -0.844328
-0.0449163 -0.00282595 0.859044 -0.0627918 -0.876306
-0.0984386 -0.00619336 0.783508 -0.0627918 -0.904827
-0.153256 -0.00964226 0.695773 -0.0627918 -0.929776
-0.209185 -0.013161 0.597203 -0.0627918 -0.951056
-0.266039 -0.0167381 0.489329 -0.0627918 -0.968583
-0.323634 -0.0203617 0.37383 -0.0627918 -0.982287
-0.381785 -0.0240204 0.252505 -0.0627918 -0.992115
-0.440306 -0.0277023 0.127245 -0.0627918 -0.998027
-0.499013 -0.0313959 1.32706e-06 -0.0627918 -1
-0.557719 -0.0350894 -0.127242 -0.0627918 -0.998027
-0.616241 -0.0387714 -0.252503 -0.0627918 -0.992115
-0.674391 -0.04243 -0.373827 -0.0627918 -0.982287
-0.731987 -0.0460536 -0.489326 -0.0627918 -0.968583
-0.788841 -0.0496307 -0.597201 -0.0627918 -0.951057
-0.844769 -0.0531495 -0.695772 -0.0627918 -0.929777
-0.899587 -0.0565984 -0.783506 -0.0627918 -0.904827
-0.953109 -0.0599658 -0.859043 -0.0627918 -0.876307
-1.00515 -0.0632401 -0.921211 -0.0627918 -0.844328
-1.05553 -0.0664099 -0.96905 -0.0627918 -0.809017
-1.10407 -0.0694637 -1.00182 -0.0627918 -0.770514
-1.15058 -0.0723901 -1.01904 -0.0627918 -0.728969
-1.1949 -0.0751781 -1.02043 -0.0627918 -0.684548
-1.23683 -0.0778165 -1.00601 -0.0627918 -0.637425
-1.27622 -0.0802946 -0.976 -0.0627918 -0.587786
-1.31289 -0.0826019 -0.930903 -0.0627918 -0.535828
-1.34669 -0.0847283 -0.871438 -0.0627918 -0.481754
-1.37745 -0.0866638 -0.798556 -0.0627918 -0.42578
-1.40504 -0.0883992 -0.713416 -0.0627918 -0.368125
-1.4293 -0.0899256 -0.617371 -0.0627918 -0.309018
-1.45011 -0.0912348 -0.511942 -0.0627918 -0.248691
-1.46734 -0.092319 -0.3988 -0.0627918 -0.187382
-1.48089 -0.0931713 -0.279733 -0.0627918 -0.125334
-1.49065 -0.0937857 -0.156623 -0.0627918 -0.0627915
-1.49655 -0.0941567 -0.0314134 -0.0627918 -9.80385e-07
-1.49851 -0.0942801 0.09392 -0.0627918 0.0627895
-1.49648 -0.0941524 0.217401 -0.0627918 0.125332
-1.49042 -0.0937712 0.337086 -0.0627918 0.18738
-1.48031 -0.0931352 0.45109 -0.0627918 0.248689
-1.46615 -0.0922444 0.557619 -0.0627918 0.309016
-1.44796 -0.0910997 0.655002 -0.0627918 0.368124
-1.42576 -0.0897034 0.74171 -0.0627918 0.425778
-1.39963 -0.088059 0.816384 -0.0627918 0.481753
-1.36963 -0.0861713 0.877858 -0.0627918 0.535826
-1.33585 -0.0840464 0.925174 -0.0627918 0.587784
-1.29842 -0.0816914 0.957599 -0.0627918 0.637423
-1.25747 -0.0791151 0.974636 -0.0627918 0.684546
-1.21316 -0.0763272 0.976032 -0.0627918 0.728968
-1.16566 -0.0733387 0.961781 -0.0627918 0.770513
-1.11517 -0.0701617 0.932125 -0.0627918 0.809016
-1.06189 -0.0668096 0.88755 -0.0627918 0.844327
-1.00605 -0.0632966 0.82878 -0.0627918 0.876306
-0.947899 -0.059638 0.75676 -0.0627918 0.904827
-0.887691 -0.05585 0.672648 -0.0627918 0.929776
-0.825696 -0.0519495 0.577791 -0.0627918 0.951056
-0.762194 -0.0479542 0.473706 -0.0627918 0.968583
-0.697474 -0.0438823 0.362059 -0.0627918 0.982287
-0.631835 -0.0397525 0.244633 -0.0627918 0.992115
-0.56558 -0.035584 0.123302 -0.0627918 0.998027
diff --git a/data/points/KleinBottle5D.off b/data/points/KleinBottle5D.off
deleted file mode 100644
index b578593c..00000000
--- a/data/points/KleinBottle5D.off
+++ /dev/null
@@ -1,15879 +0,0 @@
-nOFF
-5
-15876 0 0
-3 0 0 0 1
-3.05 0 0.09983 0 0.9988
-3.1 0 0.1987 0 0.995
-3.149 0 0.2955 0 0.9888
-3.199 0 0.3894 0 0.9801
-3.247 0 0.4794 0 0.9689
-3.296 0 0.5646 0 0.9553
-3.343 0 0.6442 0 0.9394
-3.389 0 0.7174 0 0.9211
-3.435 0 0.7833 0 0.9004
-3.479 0 0.8415 0 0.8776
-3.523 0 0.8912 0 0.8525
-3.565 0 0.932 0 0.8253
-3.605 0 0.9636 0 0.7961
-3.644 0 0.9854 0 0.7648
-3.682 0 0.9975 0 0.7317
-3.717 0 0.9996 0 0.6967
-3.751 0 0.9917 0 0.66
-3.783 0 0.9738 0 0.6216
-3.813 0 0.9463 0 0.5817
-3.841 0 0.9093 0 0.5403
-3.867 0 0.8632 0 0.4976
-3.891 0 0.8085 0 0.4536
-3.913 0 0.7457 0 0.4085
-3.932 0 0.6755 0 0.3624
-3.949 0 0.5985 0 0.3153
-3.964 0 0.5155 0 0.2675
-3.976 0 0.4274 0 0.219
-3.985 0 0.335 0 0.17
-3.993 0 0.2392 0 0.1205
-3.997 0 0.1411 0 0.07074
-4 0 0.04158 0 0.02079
-4 0 -0.05837 0 -0.0292
-3.997 0 -0.1577 0 -0.07912
-3.992 0 -0.2555 0 -0.1288
-3.984 0 -0.3508 0 -0.1782
-3.974 0 -0.4425 0 -0.2272
-3.961 0 -0.5298 0 -0.2756
-3.946 0 -0.6119 0 -0.3233
-3.929 0 -0.6878 0 -0.3702
-3.909 0 -0.7568 0 -0.4161
-3.887 0 -0.8183 0 -0.4611
-3.863 0 -0.8716 0 -0.5048
-3.837 0 -0.9162 0 -0.5474
-3.808 0 -0.9516 0 -0.5885
-3.778 0 -0.9775 0 -0.6282
-3.746 0 -0.9937 0 -0.6663
-3.711 0 -0.9999 0 -0.7027
-3.675 0 -0.9962 0 -0.7374
-3.638 0 -0.9825 0 -0.7702
-3.598 0 -0.9589 0 -0.8011
-3.558 0 -0.9258 0 -0.8301
-3.516 0 -0.8835 0 -0.8569
-3.472 0 -0.8323 0 -0.8816
-3.427 0 -0.7728 0 -0.9041
-3.382 0 -0.7055 0 -0.9243
-3.335 0 -0.6313 0 -0.9422
-3.287 0 -0.5507 0 -0.9578
-3.239 0 -0.4646 0 -0.971
-3.19 0 -0.3739 0 -0.9817
-3.141 0 -0.2794 0 -0.99
-3.091 0 -0.1822 0 -0.9958
-3.042 0 -0.08309 0 -0.9991
-2.992 0 0.01681 0 -1
-2.942 0 0.1165 0 -0.9983
-2.892 0 0.2151 0 -0.9941
-2.842 0 0.3115 0 -0.9875
-2.793 0 0.4048 0 -0.9784
-2.744 0 0.4941 0 -0.9668
-2.696 0 0.5784 0 -0.9528
-2.649 0 0.657 0 -0.9365
-2.603 0 0.729 0 -0.9178
-2.557 0 0.7937 0 -0.8968
-2.513 0 0.8504 0 -0.8735
-2.47 0 0.8987 0 -0.8481
-2.428 0 0.938 0 -0.8206
-2.388 0 0.9679 0 -0.791
-2.349 0 0.9882 0 -0.7594
-2.312 0 0.9985 0 -0.7259
-2.277 0 0.9989 0 -0.6907
-2.243 0 0.9894 0 -0.6536
-2.211 0 0.9699 0 -0.615
-2.182 0 0.9407 0 -0.5748
-2.154 0 0.9022 0 -0.5332
-2.128 0 0.8546 0 -0.4903
-2.105 0 0.7985 0 -0.4461
-2.084 0 0.7344 0 -0.4008
-2.065 0 0.663 0 -0.3545
-2.048 0 0.5849 0 -0.3073
-2.034 0 0.501 0 -0.2594
-2.022 0 0.4121 0 -0.2108
-2.013 0 0.3191 0 -0.1617
-2.006 0 0.2229 0 -0.1122
-2.002 0 0.1245 0 -0.06235
-2 0 0.02478 0 -0.01239
-2.001 0 -0.07515 0 0.0376
-2.004 0 -0.1743 0 0.0875
-2.009 0 -0.2718 0 0.1372
-2.018 0 -0.3665 0 0.1865
-2.028 0 -0.4575 0 0.2354
-2.041 0 -0.544 0 0.2837
-2.056 0 -0.6251 0 0.3312
-2.074 0 -0.6999 0 0.378
-2.094 0 -0.7677 0 0.4238
-2.117 0 -0.8278 0 0.4685
-2.141 0 -0.8797 0 0.5121
-2.168 0 -0.9228 0 0.5544
-2.196 0 -0.9566 0 0.5953
-2.227 0 -0.9809 0 0.6347
-2.26 0 -0.9954 0 0.6725
-2.294 0 -1 0 0.7087
-2.331 0 -0.9946 0 0.743
-2.369 0 -0.9792 0 0.7756
-2.408 0 -0.954 0 0.8061
-2.449 0 -0.9193 0 0.8347
-2.492 0 -0.8755 0 0.8612
-2.535 0 -0.8228 0 0.8855
-2.58 0 -0.762 0 0.9076
-2.626 0 -0.6935 0 0.9275
-2.673 0 -0.6181 0 0.945
-2.721 0 -0.5366 0 0.9602
-2.769 0 -0.4496 0 0.9729
-2.818 0 -0.3582 0 0.9833
-2.867 0 -0.2632 0 0.9911
-2.917 0 -0.1656 0 0.9965
-2.967 0 -0.06632 0 0.9994
-2.996 0.1499 0 0.04998 1
-3.044 0.1523 0.1011 0.04998 0.9988
-3.091 0.1547 0.2011 0.04998 0.995
-3.138 0.157 0.2992 0.04998 0.9888
-3.185 0.1594 0.3943 0.04998 0.9801
-3.231 0.1617 0.4855 0.04998 0.9689
-3.277 0.164 0.5719 0.04998 0.9553
-3.323 0.1663 0.6526 0.04998 0.9394
-3.367 0.1685 0.7269 0.04998 0.9211
-3.411 0.1707 0.794 0.04998 0.9004
-3.454 0.1728 0.8532 0.04998 0.8776
-3.496 0.1749 0.904 0.04998 0.8525
-3.537 0.177 0.9459 0.04998 0.8253
-3.576 0.179 0.9784 0.04998 0.7961
-3.615 0.1809 1.001 0.04998 0.7648
-3.652 0.1827 1.014 0.04998 0.7317
-3.688 0.1845 1.017 0.04998 0.6967
-3.722 0.1862 1.01 0.04998 0.66
-3.754 0.1879 0.9931 0.04998 0.6216
-3.785 0.1894 0.9663 0.04998 0.5817
-3.814 0.1908 0.93 0.04998 0.5403
-3.841 0.1922 0.8846 0.04998 0.4976
-3.866 0.1935 0.8305 0.04998 0.4536
-3.889 0.1946 0.7683 0.04998 0.4085
-3.91 0.1957 0.6986 0.04998 0.3624
-3.929 0.1966 0.622 0.04998 0.3153
-3.945 0.1974 0.5394 0.04998 0.2675
-3.96 0.1982 0.4516 0.04998 0.219
-3.972 0.1988 0.3595 0.04998 0.17
-3.981 0.1992 0.264 0.04998 0.1205
-3.989 0.1996 0.166 0.04998 0.07074
-3.993 0.1998 0.06656 0.04998 0.02079
-3.996 0.2 -0.03337 0.04998 -0.0292
-3.995 0.1999 -0.1328 0.04998 -0.07912
-3.993 0.1998 -0.2307 0.04998 -0.1288
-3.987 0.1995 -0.3261 0.04998 -0.1782
-3.98 0.1991 -0.418 0.04998 -0.2272
-3.969 0.1986 -0.5056 0.04998 -0.2756
-3.956 0.198 -0.588 0.04998 -0.3233
-3.941 0.1972 -0.6643 0.04998 -0.3702
-3.923 0.1963 -0.7338 0.04998 -0.4161
-3.903 0.1953 -0.7958 0.04998 -0.4611
-3.88 0.1942 -0.8497 0.04998 -0.5048
-3.855 0.1929 -0.895 0.04998 -0.5474
-3.827 0.1915 -0.9311 0.04998 -0.5885
-3.798 0.19 -0.9578 0.04998 -0.6282
-3.766 0.1884 -0.9747 0.04998 -0.6663
-3.732 0.1867 -0.9818 0.04998 -0.7027
-3.696 0.1849 -0.979 0.04998 -0.7374
-3.658 0.183 -0.9662 0.04998 -0.7702
-3.618 0.181 -0.9437 0.04998 -0.8011
-3.576 0.179 -0.9116 0.04998 -0.8301
-3.533 0.1768 -0.8703 0.04998 -0.8569
-3.488 0.1746 -0.8202 0.04998 -0.8816
-3.442 0.1723 -0.7618 0.04998 -0.9041
-3.395 0.1699 -0.6958 0.04998 -0.9243
-3.346 0.1675 -0.6227 0.04998 -0.9422
-3.297 0.165 -0.5433 0.04998 -0.9578
-3.247 0.1625 -0.4585 0.04998 -0.971
-3.196 0.1599 -0.369 0.04998 -0.9817
-3.144 0.1573 -0.2758 0.04998 -0.99
-3.092 0.1547 -0.1798 0.04998 -0.9958
-3.04 0.1521 -0.08202 0.04998 -0.9991
-2.987 0.1495 0.0166 0.04998 -1
-2.935 0.1469 0.1151 0.04998 -0.9983
-2.883 0.1443 0.2123 0.04998 -0.9941
-2.831 0.1417 0.3075 0.04998 -0.9875
-2.78 0.1391 0.3996 0.04998 -0.9784
-2.729 0.1366 0.4876 0.04998 -0.9668
-2.679 0.134 0.5707 0.04998 -0.9528
-2.63 0.1316 0.648 0.04998 -0.9365
-2.582 0.1292 0.7188 0.04998 -0.9178
-2.535 0.1268 0.7824 0.04998 -0.8968
-2.489 0.1246 0.838 0.04998 -0.8735
-2.445 0.1223 0.8852 0.04998 -0.8481
-2.402 0.1202 0.9234 0.04998 -0.8206
-2.361 0.1182 0.9523 0.04998 -0.791
-2.322 0.1162 0.9716 0.04998 -0.7594
-2.285 0.1143 0.981 0.04998 -0.7259
-2.249 0.1126 0.9806 0.04998 -0.6907
-2.216 0.1109 0.9701 0.04998 -0.6536
-2.185 0.1093 0.9499 0.04998 -0.615
-2.156 0.1079 0.92 0.04998 -0.5748
-2.129 0.1065 0.8807 0.04998 -0.5332
-2.105 0.1053 0.8325 0.04998 -0.4903
-2.083 0.1042 0.7759 0.04998 -0.4461
-2.063 0.1032 0.7113 0.04998 -0.4008
-2.046 0.1024 0.6394 0.04998 -0.3545
-2.032 0.1017 0.5609 0.04998 -0.3073
-2.019 0.1011 0.4767 0.04998 -0.2594
-2.01 0.1006 0.3876 0.04998 -0.2108
-2.003 0.1002 0.2943 0.04998 -0.1617
-1.999 0.1 0.198 0.04998 -0.1122
-1.997 0.09992 0.09947 0.04998 -0.06235
-1.997 0.09995 -0.0002278 0.04998 -0.01239
-2 0.1001 -0.1001 0.04998 0.0376
-2.006 0.1004 -0.1992 0.04998 0.0875
-2.014 0.1008 -0.2964 0.04998 0.1372
-2.024 0.1013 -0.3909 0.04998 0.1865
-2.037 0.1019 -0.4817 0.04998 0.2354
-2.052 0.1027 -0.5678 0.04998 0.2837
-2.07 0.1036 -0.6485 0.04998 0.3312
-2.089 0.1046 -0.7228 0.04998 0.378
-2.111 0.1056 -0.7901 0.04998 0.4238
-2.135 0.1068 -0.8497 0.04998 0.4685
-2.161 0.1081 -0.9009 0.04998 0.5121
-2.188 0.1095 -0.9433 0.04998 0.5544
-2.218 0.111 -0.9764 0.04998 0.5953
-2.249 0.1126 -0.9999 0.04998 0.6347
-2.282 0.1142 -1.014 0.04998 0.6725
-2.317 0.1159 -1.017 0.04998 0.7087
-2.353 0.1177 -1.011 0.04998 0.743
-2.39 0.1196 -0.9947 0.04998 0.7756
-2.429 0.1216 -0.9685 0.04998 0.8061
-2.469 0.1236 -0.9328 0.04998 0.8347
-2.511 0.1256 -0.8879 0.04998 0.8612
-2.553 0.1278 -0.8342 0.04998 0.8855
-2.596 0.1299 -0.7722 0.04998 0.9076
-2.64 0.1321 -0.7027 0.04998 0.9275
-2.685 0.1344 -0.6261 0.04998 0.945
-2.731 0.1366 -0.5434 0.04998 0.9602
-2.777 0.139 -0.4553 0.04998 0.9729
-2.823 0.1413 -0.3627 0.04998 0.9833
-2.87 0.1436 -0.2665 0.04998 0.9911
-2.917 0.146 -0.1676 0.04998 0.9965
-2.965 0.1484 -0.06713 0.04998 0.9994
-2.985 0.2995 0 0.09983 1
-3.03 0.304 0.1022 0.09983 0.9988
-3.074 0.3085 0.2034 0.09983 0.995
-3.119 0.3129 0.3026 0.09983 0.9888
-3.163 0.3174 0.3989 0.09983 0.9801
-3.207 0.3218 0.4912 0.09983 0.9689
-3.251 0.3261 0.5787 0.09983 0.9553
-3.294 0.3305 0.6606 0.09983 0.9394
-3.336 0.3347 0.7359 0.09983 0.9211
-3.378 0.339 0.8041 0.09983 0.9004
-3.42 0.3431 0.8644 0.09983 0.8776
-3.46 0.3472 0.9162 0.09983 0.8525
-3.5 0.3511 0.9591 0.09983 0.8253
-3.539 0.355 0.9926 0.09983 0.7961
-3.576 0.3588 1.016 0.09983 0.7648
-3.613 0.3625 1.03 0.09983 0.7317
-3.648 0.366 1.034 0.09983 0.6967
-3.682 0.3695 1.028 0.09983 0.66
-3.715 0.3727 1.012 0.09983 0.6216
-3.746 0.3759 0.9858 0.09983 0.5817
-3.776 0.3789 0.9502 0.09983 0.5403
-3.804 0.3817 0.9055 0.09983 0.4976
-3.83 0.3843 0.852 0.09983 0.4536
-3.855 0.3868 0.7904 0.09983 0.4085
-3.878 0.3891 0.7212 0.09983 0.3624
-3.898 0.3911 0.6452 0.09983 0.3153
-3.917 0.393 0.563 0.09983 0.2675
-3.933 0.3947 0.4756 0.09983 0.219
-3.948 0.3961 0.3838 0.09983 0.17
-3.96 0.3973 0.2886 0.09983 0.1205
-3.969 0.3983 0.1908 0.09983 0.07074
-3.976 0.399 0.0915 0.09983 0.02079
-3.981 0.3995 -0.008343 0.09983 -0.0292
-3.984 0.3997 -0.1077 0.09983 -0.07912
-3.983 0.3997 -0.2057 0.09983 -0.1288
-3.98 0.3994 -0.3012 0.09983 -0.1782
-3.975 0.3988 -0.3933 0.09983 -0.2272
-3.967 0.398 -0.4811 0.09983 -0.2756
-3.956 0.3969 -0.5638 0.09983 -0.3233
-3.942 0.3956 -0.6405 0.09983 -0.3702
-3.926 0.3939 -0.7104 0.09983 -0.4161
-3.908 0.3921 -0.7729 0.09983 -0.4611
-3.886 0.3899 -0.8273 0.09983 -0.5048
-3.862 0.3875 -0.8732 0.09983 -0.5474
-3.836 0.3849 -0.91 0.09983 -0.5885
-3.807 0.382 -0.9374 0.09983 -0.6282
-3.775 0.3788 -0.9552 0.09983 -0.6663
-3.742 0.3754 -0.9631 0.09983 -0.7027
-3.706 0.3718 -0.9612 0.09983 -0.7374
-3.668 0.368 -0.9493 0.09983 -0.7702
-3.627 0.364 -0.9278 0.09983 -0.8011
-3.585 0.3597 -0.8968 0.09983 -0.8301
-3.541 0.3553 -0.8566 0.09983 -0.8569
-3.495 0.3507 -0.8076 0.09983 -0.8816
-3.448 0.346 -0.7504 0.09983 -0.9041
-3.399 0.3411 -0.6856 0.09983 -0.9243
-3.349 0.3361 -0.6137 0.09983 -0.9422
-3.298 0.3309 -0.5356 0.09983 -0.9578
-3.246 0.3257 -0.4521 0.09983 -0.971
-3.193 0.3204 -0.3639 0.09983 -0.9817
-3.139 0.315 -0.272 0.09983 -0.99
-3.085 0.3095 -0.1774 0.09983 -0.9958
-3.03 0.3041 -0.08091 0.09983 -0.9991
-2.976 0.2986 0.01637 0.09983 -1
-2.921 0.2931 0.1135 0.09983 -0.9983
-2.867 0.2876 0.2094 0.09983 -0.9941
-2.813 0.2822 0.3033 0.09983 -0.9875
-2.759 0.2769 0.394 0.09983 -0.9784
-2.706 0.2716 0.4807 0.09983 -0.9668
-2.655 0.2663 0.5625 0.09983 -0.9528
-2.604 0.2612 0.6386 0.09983 -0.9365
-2.554 0.2563 0.7082 0.09983 -0.9178
-2.506 0.2514 0.7706 0.09983 -0.8968
-2.459 0.2467 0.825 0.09983 -0.8735
-2.414 0.2422 0.8711 0.09983 -0.8481
-2.37 0.2378 0.9083 0.09983 -0.8206
-2.329 0.2337 0.9361 0.09983 -0.791
-2.289 0.2297 0.9544 0.09983 -0.7594
-2.252 0.2259 0.9629 0.09983 -0.7259
-2.217 0.2224 0.9615 0.09983 -0.6907
-2.184 0.2191 0.9503 0.09983 -0.6536
-2.153 0.216 0.9293 0.09983 -0.615
-2.125 0.2132 0.8987 0.09983 -0.5748
-2.099 0.2106 0.8588 0.09983 -0.5332
-2.076 0.2083 0.81 0.09983 -0.4903
-2.056 0.2063 0.7528 0.09983 -0.4461
-2.038 0.2045 0.6877 0.09983 -0.4008
-2.023 0.203 0.6154 0.09983 -0.3545
-2.01 0.2017 0.5366 0.09983 -0.3073
-2 0.2007 0.4521 0.09983 -0.2594
-1.993 0.2 0.3627 0.09983 -0.2108
-1.988 0.1995 0.2694 0.09983 -0.1617
-1.986 0.1993 0.1729 0.09983 -0.1122
-1.987 0.1994 0.07442 0.09983 -0.06235
-1.99 0.1997 -0.02523 0.09983 -0.01239
-1.996 0.2002 -0.125 0.09983 0.0376
-2.004 0.201 -0.2239 0.09983 0.0875
-2.014 0.2021 -0.3209 0.09983 0.1372
-2.027 0.2034 -0.4151 0.09983 0.1865
-2.042 0.2049 -0.5055 0.09983 0.2354
-2.059 0.2066 -0.5913 0.09983 0.2837
-2.078 0.2085 -0.6714 0.09983 0.3312
-2.1 0.2107 -0.7453 0.09983 0.378
-2.123 0.213 -0.812 0.09983 0.4238
-2.148 0.2155 -0.8709 0.09983 0.4685
-2.175 0.2182 -0.9215 0.09983 0.5121
-2.204 0.2211 -0.9632 0.09983 0.5544
-2.234 0.2242 -0.9956 0.09983 0.5953
-2.266 0.2273 -1.018 0.09983 0.6347
-2.299 0.2307 -1.031 0.09983 0.6725
-2.334 0.2341 -1.034 0.09983 0.7087
-2.369 0.2377 -1.027 0.09983 0.743
-2.406 0.2414 -1.01 0.09983 0.7756
-2.444 0.2453 -0.9824 0.09983 0.8061
-2.483 0.2492 -0.9457 0.09983 0.8347
-2.523 0.2532 -0.8998 0.09983 0.8612
-2.564 0.2573 -0.845 0.09983 0.8855
-2.606 0.2614 -0.782 0.09983 0.9076
-2.648 0.2657 -0.7113 0.09983 0.9275
-2.691 0.27 -0.6337 0.09983 0.945
-2.734 0.2743 -0.5499 0.09983 0.9602
-2.778 0.2787 -0.4606 0.09983 0.9729
-2.822 0.2831 -0.3669 0.09983 0.9833
-2.866 0.2876 -0.2695 0.09983 0.9911
-2.911 0.292 -0.1695 0.09983 0.9965
-2.955 0.2965 -0.0679 0.09983 0.9994
-2.966 0.4483 0 0.1494 1
-3.008 0.4546 0.1033 0.1494 0.9988
-3.05 0.461 0.2056 0.1494 0.995
-3.092 0.4673 0.3059 0.1494 0.9888
-3.133 0.4736 0.4032 0.1494 0.9801
-3.175 0.4798 0.4966 0.1494 0.9689
-3.216 0.486 0.5852 0.1494 0.9553
-3.257 0.4922 0.6681 0.1494 0.9394
-3.297 0.4983 0.7445 0.1494 0.9211
-3.337 0.5044 0.8137 0.1494 0.9004
-3.377 0.5103 0.875 0.1494 0.8776
-3.416 0.5162 0.9279 0.1494 0.8525
-3.454 0.522 0.9717 0.1494 0.8253
-3.492 0.5277 1.006 0.1494 0.7961
-3.528 0.5333 1.031 0.1494 0.7648
-3.565 0.5387 1.046 0.1494 0.7317
-3.6 0.544 1.051 0.1494 0.6967
-3.634 0.5492 1.045 0.1494 0.66
-3.667 0.5541 1.03 0.1494 0.6216
-3.698 0.5589 1.005 0.1494 0.5817
-3.729 0.5635 0.9698 0.1494 0.5403
-3.758 0.5679 0.9258 0.1494 0.4976
-3.785 0.5721 0.873 0.1494 0.4536
-3.811 0.576 0.812 0.1494 0.4085
-3.835 0.5796 0.7434 0.1494 0.3624
-3.858 0.583 0.6679 0.1494 0.3153
-3.878 0.5861 0.5863 0.1494 0.2675
-3.897 0.5889 0.4993 0.1494 0.219
-3.913 0.5914 0.4079 0.1494 0.17
-3.927 0.5936 0.313 0.1494 0.1205
-3.939 0.5954 0.2155 0.1494 0.07074
-3.949 0.5968 0.1164 0.1494 0.02079
-3.956 0.5979 0.01669 0.1494 -0.0292
-3.961 0.5986 -0.08261 0.1494 -0.07912
-3.963 0.599 -0.1805 0.1494 -0.1288
-3.963 0.5989 -0.2761 0.1494 -0.1782
-3.959 0.5984 -0.3683 0.1494 -0.2272
-3.953 0.5975 -0.4563 0.1494 -0.2756
-3.945 0.5962 -0.5392 0.1494 -0.3233
-3.933 0.5944 -0.6162 0.1494 -0.3702
-3.919 0.5923 -0.6865 0.1494 -0.4161
-3.902 0.5897 -0.7495 0.1494 -0.4611
-3.882 0.5867 -0.8044 0.1494 -0.5048
-3.859 0.5833 -0.8509 0.1494 -0.5474
-3.834 0.5795 -0.8883 0.1494 -0.5885
-3.806 0.5752 -0.9165 0.1494 -0.6282
-3.775 0.5706 -0.935 0.1494 -0.6663
-3.742 0.5655 -0.9438 0.1494 -0.7027
-3.706 0.5601 -0.9428 0.1494 -0.7374
-3.668 0.5544 -0.9319 0.1494 -0.7702
-3.627 0.5482 -0.9114 0.1494 -0.8011
-3.585 0.5418 -0.8814 0.1494 -0.8301
-3.54 0.535 -0.8423 0.1494 -0.8569
-3.493 0.528 -0.7946 0.1494 -0.8816
-3.445 0.5207 -0.7386 0.1494 -0.9041
-3.395 0.5131 -0.675 0.1494 -0.9243
-3.343 0.5053 -0.6044 0.1494 -0.9422
-3.291 0.4973 -0.5276 0.1494 -0.9578
-3.237 0.4892 -0.4454 0.1494 -0.971
-3.182 0.4809 -0.3586 0.1494 -0.9817
-3.126 0.4725 -0.2681 0.1494 -0.99
-3.07 0.464 -0.1748 0.1494 -0.9958
-3.013 0.4554 -0.07974 0.1494 -0.9991
-2.957 0.4469 0.01614 0.1494 -1
-2.9 0.4383 0.1118 0.1494 -0.9983
-2.844 0.4298 0.2064 0.1494 -0.9941
-2.788 0.4213 0.2988 0.1494 -0.9875
-2.732 0.4129 0.3882 0.1494 -0.9784
-2.678 0.4047 0.4736 0.1494 -0.9668
-2.624 0.3966 0.5541 0.1494 -0.9528
-2.572 0.3887 0.6289 0.1494 -0.9365
-2.521 0.381 0.6972 0.1494 -0.9178
-2.471 0.3735 0.7583 0.1494 -0.8968
-2.423 0.3663 0.8116 0.1494 -0.8735
-2.377 0.3593 0.8565 0.1494 -0.8481
-2.333 0.3526 0.8925 0.1494 -0.8206
-2.291 0.3463 0.9194 0.1494 -0.791
-2.252 0.3403 0.9366 0.1494 -0.7594
-2.214 0.3346 0.9442 0.1494 -0.7259
-2.179 0.3294 0.9419 0.1494 -0.6907
-2.147 0.3245 0.9299 0.1494 -0.6536
-2.117 0.3199 0.9081 0.1494 -0.615
-2.09 0.3158 0.8768 0.1494 -0.5748
-2.065 0.3121 0.8362 0.1494 -0.5332
-2.044 0.3089 0.7869 0.1494 -0.4903
-2.025 0.306 0.7292 0.1494 -0.4461
-2.009 0.3036 0.6637 0.1494 -0.4008
-1.995 0.3016 0.591 0.1494 -0.3545
-1.985 0.3 0.512 0.1494 -0.3073
-1.977 0.2988 0.4272 0.1494 -0.2594
-1.972 0.298 0.3377 0.1494 -0.2108
-1.97 0.2977 0.2443 0.1494 -0.1617
-1.97 0.2977 0.1478 0.1494 -0.1122
-1.973 0.2982 0.04932 0.1494 -0.06235
-1.979 0.299 -0.05022 0.1494 -0.01239
-1.987 0.3002 -0.1498 0.1494 0.0376
-1.997 0.3018 -0.2485 0.1494 0.0875
-2.01 0.3037 -0.3452 0.1494 0.1372
-2.025 0.306 -0.4391 0.1494 0.1865
-2.042 0.3086 -0.5291 0.1494 0.2354
-2.061 0.3115 -0.6143 0.1494 0.2837
-2.082 0.3147 -0.694 0.1494 0.3312
-2.105 0.3182 -0.7673 0.1494 0.378
-2.13 0.3219 -0.8334 0.1494 0.4238
-2.157 0.3259 -0.8917 0.1494 0.4685
-2.185 0.3302 -0.9416 0.1494 0.5121
-2.214 0.3346 -0.9825 0.1494 0.5544
-2.245 0.3393 -1.014 0.1494 0.5953
-2.277 0.3441 -1.036 0.1494 0.6347
-2.31 0.3492 -1.048 0.1494 0.6725
-2.345 0.3544 -1.05 0.1494 0.7087
-2.38 0.3597 -1.042 0.1494 0.743
-2.416 0.3652 -1.024 0.1494 0.7756
-2.454 0.3708 -0.9957 0.1494 0.8061
-2.491 0.3765 -0.958 0.1494 0.8347
-2.53 0.3824 -0.9111 0.1494 0.8612
-2.569 0.3883 -0.8553 0.1494 0.8855
-2.609 0.3943 -0.7913 0.1494 0.9076
-2.649 0.4004 -0.7196 0.1494 0.9275
-2.69 0.4065 -0.6409 0.1494 0.945
-2.731 0.4127 -0.556 0.1494 0.9602
-2.772 0.4189 -0.4657 0.1494 0.9729
-2.813 0.4252 -0.3709 0.1494 0.9833
-2.855 0.4315 -0.2724 0.1494 0.9911
-2.897 0.4378 -0.1714 0.1494 0.9965
-2.939 0.4441 -0.06862 0.1494 0.9994
-2.94 0.596 0 0.1987 1
-2.979 0.6039 0.1043 0.1987 0.9988
-3.018 0.6118 0.2076 0.1987 0.995
-3.057 0.6197 0.309 0.1987 0.9888
-3.096 0.6276 0.4073 0.1987 0.9801
-3.135 0.6354 0.5017 0.1987 0.9689
-3.173 0.6432 0.5913 0.1987 0.9553
-3.212 0.651 0.6752 0.1987 0.9394
-3.25 0.6588 0.7526 0.1987 0.9211
-3.288 0.6665 0.8228 0.1987 0.9004
-3.325 0.6741 0.8851 0.1987 0.8776
-3.363 0.6817 0.9389 0.1987 0.8525
-3.4 0.6891 0.9838 0.1987 0.8253
-3.436 0.6965 1.019 0.1987 0.7961
-3.472 0.7038 1.045 0.1987 0.7648
-3.507 0.711 1.061 0.1987 0.7317
-3.542 0.718 1.066 0.1987 0.6967
-3.576 0.7249 1.062 0.1987 0.66
-3.609 0.7315 1.047 0.1987 0.6216
-3.641 0.738 1.023 0.1987 0.5817
-3.672 0.7443 0.9888 0.1987 0.5403
-3.702 0.7504 0.9455 0.1987 0.4976
-3.73 0.7561 0.8934 0.1987 0.4536
-3.757 0.7617 0.8331 0.1987 0.4085
-3.783 0.7669 0.7651 0.1987 0.3624
-3.807 0.7717 0.6902 0.1987 0.3153
-3.829 0.7763 0.6091 0.1987 0.2675
-3.85 0.7804 0.5227 0.1987 0.219
-3.868 0.7842 0.4317 0.1987 0.17
-3.885 0.7875 0.3372 0.1987 0.1205
-3.899 0.7904 0.24 0.1987 0.07074
-3.911 0.7928 0.1412 0.1987 0.02079
-3.921 0.7948 0.04171 0.1987 -0.0292
-3.928 0.7962 -0.05744 0.1987 -0.07912
-3.932 0.7971 -0.1553 0.1987 -0.1288
-3.934 0.7975 -0.2508 0.1987 -0.1782
-3.933 0.7973 -0.3431 0.1987 -0.2272
-3.929 0.7965 -0.4312 0.1987 -0.2756
-3.923 0.7952 -0.5143 0.1987 -0.3233
-3.913 0.7933 -0.5916 0.1987 -0.3702
-3.901 0.7908 -0.6622 0.1987 -0.4161
-3.886 0.7876 -0.7256 0.1987 -0.4611
-3.867 0.7839 -0.781 0.1987 -0.5048
-3.846 0.7796 -0.828 0.1987 -0.5474
-3.822 0.7747 -0.8661 0.1987 -0.5885
-3.795 0.7692 -0.895 0.1987 -0.6282
-3.765 0.7631 -0.9143 0.1987 -0.6663
-3.732 0.7565 -0.9239 0.1987 -0.7027
-3.696 0.7493 -0.9238 0.1987 -0.7374
-3.658 0.7416 -0.9139 0.1987 -0.7702
-3.618 0.7333 -0.8944 0.1987 -0.8011
-3.575 0.7246 -0.8655 0.1987 -0.8301
-3.529 0.7154 -0.8276 0.1987 -0.8569
-3.482 0.7058 -0.781 0.1987 -0.8816
-3.433 0.6958 -0.7262 0.1987 -0.9041
-3.381 0.6854 -0.6639 0.1987 -0.9243
-3.329 0.6747 -0.5947 0.1987 -0.9422
-3.274 0.6638 -0.5192 0.1987 -0.9578
-3.219 0.6525 -0.4384 0.1987 -0.971
-3.162 0.6411 -0.353 0.1987 -0.9817
-3.105 0.6294 -0.2639 0.1987 -0.99
-3.047 0.6177 -0.1721 0.1987 -0.9958
-2.989 0.6059 -0.07852 0.1987 -0.9991
-2.93 0.594 0.01589 0.1987 -1
-2.872 0.5822 0.1101 0.1987 -0.9983
-2.814 0.5704 0.2032 0.1987 -0.9941
-2.756 0.5586 0.2942 0.1987 -0.9875
-2.699 0.5471 0.3822 0.1987 -0.9784
-2.643 0.5357 0.4661 0.1987 -0.9668
-2.588 0.5245 0.5452 0.1987 -0.9528
-2.534 0.5136 0.6187 0.1987 -0.9365
-2.482 0.503 0.6857 0.1987 -0.9178
-2.431 0.4928 0.7455 0.1987 -0.8968
-2.382 0.4829 0.7976 0.1987 -0.8735
-2.336 0.4734 0.8413 0.1987 -0.8481
-2.291 0.4644 0.8763 0.1987 -0.8206
-2.249 0.4559 0.902 0.1987 -0.791
-2.209 0.4478 0.9183 0.1987 -0.7594
-2.172 0.4402 0.9249 0.1987 -0.7259
-2.137 0.4332 0.9218 0.1987 -0.6907
-2.105 0.4268 0.9089 0.1987 -0.6536
-2.076 0.4209 0.8863 0.1987 -0.615
-2.05 0.4156 0.8543 0.1987 -0.5748
-2.027 0.4109 0.8132 0.1987 -0.5332
-2.007 0.4068 0.7633 0.1987 -0.4903
-1.989 0.4033 0.7051 0.1987 -0.4461
-1.975 0.4003 0.6393 0.1987 -0.4008
-1.963 0.398 0.5663 0.1987 -0.3545
-1.955 0.3963 0.487 0.1987 -0.3073
-1.949 0.3952 0.4021 0.1987 -0.2594
-1.947 0.3946 0.3125 0.1987 -0.2108
-1.947 0.3946 0.219 0.1987 -0.1617
-1.949 0.3952 0.1226 0.1987 -0.1122
-1.955 0.3962 0.02419 0.1987 -0.06235
-1.963 0.3979 -0.07517 0.1987 -0.01239
-1.973 0.4 -0.1745 0.1987 0.0376
-1.986 0.4025 -0.2729 0.1987 0.0875
-2.001 0.4056 -0.3693 0.1987 0.1372
-2.018 0.4091 -0.4627 0.1987 0.1865
-2.037 0.413 -0.5523 0.1987 0.2354
-2.058 0.4172 -0.637 0.1987 0.2837
-2.081 0.4219 -0.7161 0.1987 0.3312
-2.106 0.4269 -0.7888 0.1987 0.378
-2.132 0.4322 -0.8543 0.1987 0.4238
-2.16 0.4378 -0.9119 0.1987 0.4685
-2.189 0.4437 -0.9611 0.1987 0.5121
-2.219 0.4498 -1.001 0.1987 0.5544
-2.25 0.4561 -1.032 0.1987 0.5953
-2.283 0.4627 -1.053 0.1987 0.6347
-2.316 0.4695 -1.064 0.1987 0.6725
-2.35 0.4764 -1.065 0.1987 0.7087
-2.385 0.4834 -1.056 0.1987 0.743
-2.42 0.4906 -1.037 0.1987 0.7756
-2.457 0.498 -1.008 0.1987 0.8061
-2.493 0.5054 -0.9697 0.1987 0.8347
-2.53 0.5129 -0.9218 0.1987 0.8612
-2.568 0.5205 -0.8651 0.1987 0.8855
-2.605 0.5281 -0.8001 0.1987 0.9076
-2.643 0.5359 -0.7274 0.1987 0.9275
-2.682 0.5436 -0.6477 0.1987 0.945
-2.72 0.5514 -0.5618 0.1987 0.9602
-2.759 0.5592 -0.4705 0.1987 0.9729
-2.798 0.5671 -0.3746 0.1987 0.9833
-2.836 0.575 -0.2752 0.1987 0.9911
-2.875 0.5829 -0.1731 0.1987 0.9965
-2.914 0.5908 -0.0693 0.1987 0.9994
-2.907 0.7422 0 0.2474 1
-2.943 0.7514 0.1053 0.2474 0.9988
-2.979 0.7606 0.2096 0.2474 0.995
-3.015 0.7698 0.3118 0.2474 0.9888
-3.051 0.779 0.4111 0.2474 0.9801
-3.087 0.7882 0.5065 0.2474 0.9689
-3.123 0.7973 0.5971 0.2474 0.9553
-3.159 0.8065 0.6819 0.2474 0.9394
-3.194 0.8157 0.7603 0.2474 0.9211
-3.23 0.8248 0.8314 0.2474 0.9004
-3.266 0.8339 0.8947 0.2474 0.8776
-3.302 0.843 0.9494 0.2474 0.8525
-3.337 0.8521 0.9952 0.2474 0.8253
-3.372 0.861 1.031 0.2474 0.7961
-3.407 0.87 1.058 0.2474 0.7648
-3.442 0.8788 1.075 0.2474 0.7317
-3.476 0.8875 1.081 0.2474 0.6967
-3.509 0.896 1.078 0.2474 0.66
-3.542 0.9045 1.064 0.2474 0.6216
-3.574 0.9127 1.04 0.2474 0.5817
-3.606 0.9207 1.007 0.2474 0.5403
-3.636 0.9285 0.9646 0.2474 0.4976
-3.666 0.936 0.9133 0.2474 0.4536
-3.694 0.9433 0.8537 0.2474 0.4085
-3.721 0.9502 0.7864 0.2474 0.3624
-3.747 0.9567 0.7121 0.2474 0.3153
-3.771 0.9628 0.6316 0.2474 0.2675
-3.793 0.9685 0.5457 0.2474 0.219
-3.814 0.9738 0.4552 0.2474 0.17
-3.832 0.9785 0.3611 0.2474 0.1205
-3.849 0.9827 0.2644 0.2474 0.07074
-3.863 0.9863 0.1659 0.2474 0.02079
-3.875 0.9894 0.0667 0.2474 -0.0292
-3.884 0.9918 -0.03223 0.2474 -0.07912
-3.891 0.9935 -0.1299 0.2474 -0.1288
-3.895 0.9946 -0.2254 0.2474 -0.1782
-3.896 0.9949 -0.3177 0.2474 -0.2272
-3.895 0.9945 -0.4059 0.2474 -0.2756
-3.89 0.9934 -0.4891 0.2474 -0.3233
-3.883 0.9915 -0.5666 0.2474 -0.3702
-3.872 0.9888 -0.6375 0.2474 -0.4161
-3.859 0.9853 -0.7013 0.2474 -0.4611
-3.842 0.981 -0.7572 0.2474 -0.5048
-3.822 0.9759 -0.8047 0.2474 -0.5474
-3.799 0.97 -0.8434 0.2474 -0.5885
-3.773 0.9634 -0.8729 0.2474 -0.6282
-3.744 0.9559 -0.893 0.2474 -0.6663
-3.712 0.9477 -0.9034 0.2474 -0.7027
-3.676 0.9387 -0.9042 0.2474 -0.7374
-3.639 0.9291 -0.8953 0.2474 -0.7702
-3.598 0.9187 -0.8768 0.2474 -0.8011
-3.555 0.9077 -0.8491 0.2474 -0.8301
-3.509 0.896 -0.8123 0.2474 -0.8569
-3.461 0.8838 -0.7669 0.2474 -0.8816
-3.411 0.871 -0.7135 0.2474 -0.9041
-3.359 0.8577 -0.6525 0.2474 -0.9243
-3.305 0.8439 -0.5846 0.2474 -0.9422
-3.25 0.8298 -0.5105 0.2474 -0.9578
-3.193 0.8153 -0.4311 0.2474 -0.971
-3.135 0.8005 -0.3472 0.2474 -0.9817
-3.076 0.7855 -0.2596 0.2474 -0.99
-3.017 0.7703 -0.1693 0.2474 -0.9958
-2.957 0.755 -0.07726 0.2474 -0.9991
-2.897 0.7396 0.01563 0.2474 -1
-2.837 0.7243 0.1084 0.2474 -0.9983
-2.777 0.709 0.2 0.2474 -0.9941
-2.717 0.6939 0.2894 0.2474 -0.9875
-2.659 0.6789 0.3759 0.2474 -0.9784
-2.601 0.6642 0.4584 0.2474 -0.9668
-2.545 0.6499 0.5361 0.2474 -0.9528
-2.49 0.6358 0.6081 0.2474 -0.9365
-2.437 0.6222 0.6738 0.2474 -0.9178
-2.385 0.6091 0.7323 0.2474 -0.8968
-2.336 0.5965 0.7831 0.2474 -0.8735
-2.289 0.5844 0.8256 0.2474 -0.8481
-2.244 0.573 0.8594 0.2474 -0.8206
-2.202 0.5622 0.8841 0.2474 -0.791
-2.162 0.552 0.8993 0.2474 -0.7594
-2.125 0.5426 0.905 0.2474 -0.7259
-2.091 0.5339 0.901 0.2474 -0.6907
-2.06 0.5259 0.8873 0.2474 -0.6536
-2.032 0.5187 0.864 0.2474 -0.615
-2.006 0.5123 0.8314 0.2474 -0.5748
-1.984 0.5067 0.7897 0.2474 -0.5332
-1.966 0.5019 0.7393 0.2474 -0.4903
-1.95 0.4979 0.6807 0.2474 -0.4461
-1.937 0.4947 0.6144 0.2474 -0.4008
-1.928 0.4922 0.5412 0.2474 -0.3545
-1.921 0.4906 0.4617 0.2474 -0.3073
-1.918 0.4897 0.3767 0.2474 -0.2594
-1.917 0.4895 0.287 0.2474 -0.2108
-1.919 0.4901 0.1936 0.2474 -0.1617
-1.925 0.4914 0.09726 0.2474 -0.1122
-1.932 0.4934 -0.0009488 0.2474 -0.06235
-1.942 0.496 -0.1001 0.2474 -0.01239
-1.955 0.4992 -0.1992 0.2474 0.0376
-1.97 0.5031 -0.2972 0.2474 0.0875
-1.987 0.5074 -0.3931 0.2474 0.1372
-2.007 0.5123 -0.4861 0.2474 0.1865
-2.028 0.5177 -0.5751 0.2474 0.2354
-2.051 0.5236 -0.6593 0.2474 0.2837
-2.075 0.5299 -0.7378 0.2474 0.3312
-2.101 0.5365 -0.8098 0.2474 0.378
-2.129 0.5435 -0.8746 0.2474 0.4238
-2.157 0.5509 -0.9315 0.2474 0.4685
-2.187 0.5585 -0.9799 0.2474 0.5121
-2.218 0.5664 -1.019 0.2474 0.5544
-2.25 0.5745 -1.049 0.2474 0.5953
-2.282 0.5828 -1.07 0.2474 0.6347
-2.316 0.5912 -1.08 0.2474 0.6725
-2.349 0.5999 -1.08 0.2474 0.7087
-2.384 0.6086 -1.07 0.2474 0.743
-2.418 0.6175 -1.05 0.2474 0.7756
-2.453 0.6264 -1.02 0.2474 0.8061
-2.488 0.6354 -0.9808 0.2474 0.8347
-2.524 0.6444 -0.932 0.2474 0.8612
-2.559 0.6535 -0.8743 0.2474 0.8855
-2.595 0.6627 -0.8084 0.2474 0.9076
-2.631 0.6718 -0.7347 0.2474 0.9275
-2.667 0.681 -0.6541 0.2474 0.945
-2.703 0.6902 -0.5672 0.2474 0.9602
-2.739 0.6994 -0.4749 0.2474 0.9729
-2.775 0.7085 -0.3781 0.2474 0.9833
-2.811 0.7177 -0.2777 0.2474 0.9911
-2.847 0.7269 -0.1747 0.2474 0.9965
-2.883 0.7361 -0.06994 0.2474 0.9994
-2.866 0.8866 0 0.2955 1
-2.899 0.8968 0.1062 0.2955 0.9988
-2.932 0.907 0.2114 0.2955 0.995
-2.965 0.9172 0.3145 0.2955 0.9888
-2.998 0.9274 0.4147 0.2955 0.9801
-3.031 0.9377 0.511 0.2955 0.9689
-3.065 0.948 0.6025 0.2955 0.9553
-3.098 0.9583 0.6882 0.2955 0.9394
-3.131 0.9687 0.7675 0.2955 0.9211
-3.165 0.9791 0.8395 0.2955 0.9004
-3.199 0.9895 0.9037 0.2955 0.8776
-3.233 0.9999 0.9593 0.2955 0.8525
-3.266 1.01 1.006 0.2955 0.8253
-3.3 1.021 1.043 0.2955 0.7961
-3.334 1.031 1.071 0.2955 0.7648
-3.367 1.042 1.088 0.2955 0.7317
-3.401 1.052 1.096 0.2955 0.6967
-3.434 1.062 1.093 0.2955 0.66
-3.467 1.072 1.08 0.2955 0.6216
-3.499 1.082 1.057 0.2955 0.5817
-3.531 1.092 1.025 0.2955 0.5403
-3.562 1.102 0.9831 0.2955 0.4976
-3.592 1.111 0.9326 0.2955 0.4536
-3.622 1.12 0.8737 0.2955 0.4085
-3.65 1.129 0.8072 0.2955 0.3624
-3.677 1.137 0.7336 0.2955 0.3153
-3.703 1.145 0.6537 0.2955 0.2675
-3.727 1.153 0.5684 0.2955 0.219
-3.749 1.16 0.4785 0.2955 0.17
-3.77 1.166 0.3849 0.2955 0.1205
-3.788 1.172 0.2886 0.2955 0.07074
-3.804 1.177 0.1905 0.2955 0.02079
-3.819 1.181 0.09166 0.2955 -0.0292
-3.83 1.185 -0.007005 0.2955 -0.07912
-3.839 1.188 -0.1045 0.2955 -0.1288
-3.846 1.19 -0.1998 0.2955 -0.1782
-3.849 1.191 -0.292 0.2955 -0.2272
-3.85 1.191 -0.3802 0.2955 -0.2756
-3.847 1.19 -0.4636 0.2955 -0.3233
-3.842 1.188 -0.5412 0.2955 -0.3702
-3.833 1.186 -0.6124 0.2955 -0.4161
-3.821 1.182 -0.6765 0.2955 -0.4611
-3.806 1.177 -0.7328 0.2955 -0.5048
-3.787 1.172 -0.7808 0.2955 -0.5474
-3.766 1.165 -0.8201 0.2955 -0.5885
-3.741 1.157 -0.8503 0.2955 -0.6282
-3.712 1.148 -0.8711 0.2955 -0.6663
-3.681 1.139 -0.8824 0.2955 -0.7027
-3.646 1.128 -0.884 0.2955 -0.7374
-3.609 1.116 -0.8761 0.2955 -0.7702
-3.568 1.104 -0.8587 0.2955 -0.8011
-3.525 1.09 -0.8321 0.2955 -0.8301
-3.479 1.076 -0.7965 0.2955 -0.8569
-3.431 1.061 -0.7524 0.2955 -0.8816
-3.38 1.046 -0.7002 0.2955 -0.9041
-3.327 1.029 -0.6406 0.2955 -0.9243
-3.273 1.012 -0.5741 0.2955 -0.9422
-3.216 0.9949 -0.5015 0.2955 -0.9578
-3.158 0.977 -0.4236 0.2955 -0.971
-3.099 0.9587 -0.3412 0.2955 -0.9817
-3.039 0.9401 -0.2552 0.2955 -0.99
-2.978 0.9213 -0.1664 0.2955 -0.9958
-2.917 0.9024 -0.07594 0.2955 -0.9991
-2.856 0.8834 0.01537 0.2955 -1
-2.794 0.8644 0.1065 0.2955 -0.9983
-2.733 0.8454 0.1965 0.2955 -0.9941
-2.673 0.8267 0.2845 0.2955 -0.9875
-2.613 0.8082 0.3694 0.2955 -0.9784
-2.554 0.7901 0.4504 0.2955 -0.9668
-2.497 0.7723 0.5266 0.2955 -0.9528
-2.441 0.755 0.5972 0.2955 -0.9365
-2.387 0.7383 0.6614 0.2955 -0.9178
-2.335 0.7222 0.7186 0.2955 -0.8968
-2.285 0.7068 0.7681 0.2955 -0.8735
-2.237 0.6921 0.8094 0.2955 -0.8481
-2.192 0.6781 0.8421 0.2955 -0.8206
-2.15 0.665 0.8656 0.2955 -0.791
-2.11 0.6528 0.8798 0.2955 -0.7594
-2.074 0.6415 0.8846 0.2955 -0.7259
-2.04 0.6311 0.8797 0.2955 -0.6907
-2.01 0.6217 0.8652 0.2955 -0.6536
-1.983 0.6133 0.8412 0.2955 -0.615
-1.959 0.6059 0.8079 0.2955 -0.5748
-1.938 0.5995 0.7656 0.2955 -0.5332
-1.921 0.5941 0.7148 0.2955 -0.4903
-1.907 0.5898 0.6558 0.2955 -0.4461
-1.896 0.5864 0.5892 0.2955 -0.4008
-1.888 0.5841 0.5158 0.2955 -0.3545
-1.884 0.5827 0.4361 0.2955 -0.3073
-1.882 0.5822 0.3511 0.2955 -0.2594
-1.884 0.5827 0.2614 0.2955 -0.2108
-1.888 0.5841 0.168 0.2955 -0.1617
-1.896 0.5864 0.07189 0.2955 -0.1122
-1.905 0.5894 -0.02609 0.2955 -0.06235
-1.918 0.5933 -0.1249 0.2955 -0.01239
-1.933 0.5979 -0.2236 0.2955 0.0376
-1.95 0.6032 -0.3212 0.2955 0.0875
-1.969 0.6091 -0.4167 0.2955 0.1372
-1.99 0.6157 -0.5092 0.2955 0.1865
-2.013 0.6228 -0.5976 0.2955 0.2354
-2.038 0.6304 -0.6812 0.2955 0.2837
-2.064 0.6385 -0.7591 0.2955 0.3312
-2.091 0.6469 -0.8304 0.2955 0.378
-2.12 0.6558 -0.8944 0.2955 0.4238
-2.15 0.665 -0.9506 0.2955 0.4685
-2.18 0.6744 -0.9982 0.2955 0.5121
-2.212 0.6841 -1.037 0.2955 0.5544
-2.244 0.694 -1.066 0.2955 0.5953
-2.276 0.7041 -1.085 0.2955 0.6347
-2.309 0.7143 -1.095 0.2955 0.6725
-2.342 0.7246 -1.094 0.2955 0.7087
-2.376 0.7349 -1.083 0.2955 0.743
-2.41 0.7453 -1.063 0.2955 0.7756
-2.443 0.7558 -1.032 0.2955 0.8061
-2.477 0.7662 -0.9913 0.2955 0.8347
-2.511 0.7767 -0.9416 0.2955 0.8612
-2.545 0.7871 -0.883 0.2955 0.8855
-2.578 0.7976 -0.8162 0.2955 0.9076
-2.612 0.8079 -0.7416 0.2955 0.9275
-2.645 0.8183 -0.6601 0.2955 0.945
-2.679 0.8286 -0.5723 0.2955 0.9602
-2.712 0.8389 -0.4791 0.2955 0.9729
-2.745 0.8492 -0.3814 0.2955 0.9833
-2.778 0.8594 -0.2801 0.2955 0.9911
-2.811 0.8696 -0.1762 0.2955 0.9965
-2.844 0.8798 -0.07054 0.2955 0.9994
-2.818 1.029 0 0.3429 1
-2.848 1.04 0.107 0.3429 0.9988
-2.878 1.051 0.213 0.3429 0.995
-2.908 1.062 0.317 0.3429 0.9888
-2.938 1.073 0.4181 0.3429 0.9801
-2.969 1.084 0.5152 0.3429 0.9689
-2.999 1.095 0.6075 0.3429 0.9553
-3.03 1.106 0.6941 0.3429 0.9394
-3.061 1.117 0.7742 0.3429 0.9211
-3.092 1.129 0.8471 0.3429 0.9004
-3.124 1.14 0.9121 0.3429 0.8776
-3.156 1.152 0.9686 0.3429 0.8525
-3.188 1.164 1.016 0.3429 0.8253
-3.22 1.176 1.054 0.3429 0.7961
-3.253 1.187 1.083 0.3429 0.7648
-3.286 1.199 1.101 0.3429 0.7317
-3.318 1.211 1.109 0.3429 0.6967
-3.351 1.223 1.107 0.3429 0.66
-3.383 1.235 1.095 0.3429 0.6216
-3.416 1.247 1.073 0.3429 0.5817
-3.448 1.259 1.042 0.3429 0.5403
-3.479 1.27 1.001 0.3429 0.4976
-3.51 1.281 0.9513 0.3429 0.4536
-3.54 1.292 0.8932 0.3429 0.4085
-3.57 1.303 0.8274 0.3429 0.3624
-3.598 1.313 0.7546 0.3429 0.3153
-3.625 1.323 0.6754 0.3429 0.2675
-3.651 1.333 0.5907 0.3429 0.219
-3.675 1.341 0.5014 0.3429 0.17
-3.697 1.35 0.4084 0.3429 0.1205
-3.718 1.357 0.3126 0.3429 0.07074
-3.736 1.364 0.215 0.3429 0.02079
-3.752 1.37 0.1166 0.3429 -0.0292
-3.766 1.375 0.01823 0.3429 -0.07912
-3.777 1.379 -0.07898 0.3429 -0.1288
-3.786 1.382 -0.1741 0.3429 -0.1782
-3.791 1.384 -0.2662 0.3429 -0.2272
-3.794 1.385 -0.3544 0.3429 -0.2756
-3.794 1.385 -0.4378 0.3429 -0.3233
-3.79 1.383 -0.5155 0.3429 -0.3702
-3.783 1.381 -0.5869 0.3429 -0.4161
-3.773 1.377 -0.6513 0.3429 -0.4611
-3.759 1.372 -0.708 0.3429 -0.5048
-3.742 1.366 -0.7565 0.3429 -0.5474
-3.722 1.359 -0.7963 0.3429 -0.5885
-3.698 1.35 -0.8271 0.3429 -0.6282
-3.67 1.34 -0.8487 0.3429 -0.6663
-3.64 1.329 -0.8608 0.3429 -0.7027
-3.606 1.316 -0.8633 0.3429 -0.7374
-3.569 1.303 -0.8564 0.3429 -0.7702
-3.529 1.288 -0.8401 0.3429 -0.8011
-3.485 1.272 -0.8146 0.3429 -0.8301
-3.439 1.256 -0.7802 0.3429 -0.8569
-3.391 1.238 -0.7374 0.3429 -0.8816
-3.34 1.219 -0.6866 0.3429 -0.9041
-3.287 1.2 -0.6283 0.3429 -0.9243
-3.231 1.179 -0.5633 0.3429 -0.9422
-3.174 1.159 -0.4922 0.3429 -0.9578
-3.115 1.137 -0.4159 0.3429 -0.971
-3.055 1.115 -0.335 0.3429 -0.9817
-2.994 1.093 -0.2506 0.3429 -0.99
-2.933 1.07 -0.1635 0.3429 -0.9958
-2.87 1.048 -0.07458 0.3429 -0.9991
-2.808 1.025 0.01509 0.3429 -1
-2.745 1.002 0.1046 0.3429 -0.9983
-2.683 0.9793 0.193 0.3429 -0.9941
-2.621 0.9568 0.2793 0.3429 -0.9875
-2.561 0.9347 0.3626 0.3429 -0.9784
-2.501 0.9129 0.4421 0.3429 -0.9668
-2.443 0.8917 0.5168 0.3429 -0.9528
-2.386 0.871 0.5859 0.3429 -0.9365
-2.332 0.8511 0.6487 0.3429 -0.9178
-2.279 0.8319 0.7045 0.3429 -0.8968
-2.229 0.8136 0.7527 0.3429 -0.8735
-2.181 0.7961 0.7927 0.3429 -0.8481
-2.136 0.7797 0.8242 0.3429 -0.8206
-2.094 0.7643 0.8466 0.3429 -0.791
-2.055 0.75 0.8598 0.3429 -0.7594
-2.019 0.7368 0.8635 0.3429 -0.7259
-1.986 0.7249 0.8578 0.3429 -0.6907
-1.956 0.7141 0.8425 0.3429 -0.6536
-1.93 0.7045 0.8178 0.3429 -0.615
-1.907 0.6962 0.7839 0.3429 -0.5748
-1.888 0.6892 0.7411 0.3429 -0.5332
-1.872 0.6834 0.6898 0.3429 -0.4903
-1.86 0.6788 0.6305 0.3429 -0.4461
-1.851 0.6755 0.5637 0.3429 -0.4008
-1.845 0.6734 0.49 0.3429 -0.3545
-1.842 0.6725 0.4103 0.3429 -0.3073
-1.843 0.6727 0.3252 0.3429 -0.2594
-1.846 0.674 0.2356 0.3429 -0.2108
-1.853 0.6764 0.1424 0.3429 -0.1617
-1.862 0.6799 0.04648 0.3429 -0.1122
-1.875 0.6843 -0.05122 0.3429 -0.06235
-1.889 0.6896 -0.1497 0.3429 -0.01239
-1.906 0.6958 -0.248 0.3429 0.0376
-1.925 0.7027 -0.3451 0.3429 0.0875
-1.946 0.7104 -0.4401 0.3429 0.1372
-1.969 0.7188 -0.5319 0.3429 0.1865
-1.994 0.7278 -0.6198 0.3429 0.2354
-2.02 0.7374 -0.7027 0.3429 0.2837
-2.048 0.7474 -0.7798 0.3429 0.3312
-2.076 0.7579 -0.8504 0.3429 0.378
-2.106 0.7687 -0.9137 0.3429 0.4238
-2.136 0.7798 -0.969 0.3429 0.4685
-2.167 0.7912 -1.016 0.3429 0.5121
-2.199 0.8028 -1.054 0.3429 0.5544
-2.231 0.8145 -1.082 0.3429 0.5953
-2.264 0.8263 -1.1 0.3429 0.6347
-2.296 0.8382 -1.109 0.3429 0.6725
-2.329 0.8502 -1.108 0.3429 0.7087
-2.362 0.8621 -1.096 0.3429 0.743
-2.394 0.874 -1.074 0.3429 0.7756
-2.427 0.8859 -1.042 0.3429 0.8061
-2.459 0.8976 -1.001 0.3429 0.8347
-2.491 0.9093 -0.9506 0.3429 0.8612
-2.523 0.9209 -0.8912 0.3429 0.8855
-2.554 0.9324 -0.8234 0.3429 0.9076
-2.586 0.9439 -0.748 0.3429 0.9275
-2.617 0.9552 -0.6656 0.3429 0.945
-2.647 0.9664 -0.577 0.3429 0.9602
-2.678 0.9775 -0.483 0.3429 0.9729
-2.708 0.9886 -0.3845 0.3429 0.9833
-2.738 0.9996 -0.2823 0.3429 0.9911
-2.768 1.011 -0.1775 0.3429 0.9965
-2.798 1.021 -0.07109 0.3429 0.9994
-2.763 1.168 0 0.3894 1
-2.79 1.18 0.1078 0.3894 0.9988
-2.817 1.191 0.2145 0.3894 0.995
-2.844 1.202 0.3193 0.3894 0.9888
-2.871 1.214 0.4211 0.3894 0.9801
-2.899 1.226 0.519 0.3894 0.9689
-2.927 1.237 0.6121 0.3894 0.9553
-2.955 1.249 0.6995 0.3894 0.9394
-2.983 1.261 0.7804 0.3894 0.9211
-3.012 1.274 0.8541 0.3894 0.9004
-3.042 1.286 0.9199 0.3894 0.8776
-3.072 1.299 0.9773 0.3894 0.8525
-3.102 1.312 1.026 0.3894 0.8253
-3.133 1.325 1.065 0.3894 0.7961
-3.164 1.338 1.094 0.3894 0.7648
-3.196 1.351 1.113 0.3894 0.7317
-3.228 1.365 1.122 0.3894 0.6967
-3.26 1.378 1.121 0.3894 0.66
-3.292 1.392 1.11 0.3894 0.6216
-3.324 1.405 1.089 0.3894 0.5817
-3.356 1.419 1.058 0.3894 0.5403
-3.388 1.433 1.018 0.3894 0.4976
-3.42 1.446 0.9694 0.3894 0.4536
-3.451 1.459 0.9122 0.3894 0.4085
-3.481 1.472 0.8472 0.3894 0.3624
-3.51 1.484 0.7751 0.3894 0.3153
-3.539 1.496 0.6967 0.3894 0.2675
-3.566 1.508 0.6127 0.3894 0.219
-3.591 1.518 0.5241 0.3894 0.17
-3.616 1.529 0.4317 0.3894 0.1205
-3.638 1.538 0.3365 0.3894 0.07074
-3.658 1.547 0.2394 0.3894 0.02079
-3.676 1.554 0.1414 0.3894 -0.0292
-3.692 1.561 0.04345 0.3894 -0.07912
-3.705 1.566 -0.05343 0.3894 -0.1288
-3.716 1.571 -0.1483 0.3894 -0.1782
-3.723 1.574 -0.2402 0.3894 -0.2272
-3.728 1.576 -0.3283 0.3894 -0.2756
-3.729 1.577 -0.4117 0.3894 -0.3233
-3.728 1.576 -0.4895 0.3894 -0.3702
-3.722 1.574 -0.5611 0.3894 -0.4161
-3.714 1.57 -0.6257 0.3894 -0.4611
-3.702 1.565 -0.6827 0.3894 -0.5048
-3.686 1.559 -0.7316 0.3894 -0.5474
-3.667 1.55 -0.772 0.3894 -0.5885
-3.644 1.541 -0.8035 0.3894 -0.6282
-3.618 1.53 -0.8257 0.3894 -0.6663
-3.588 1.517 -0.8386 0.3894 -0.7027
-3.555 1.503 -0.8421 0.3894 -0.7374
-3.519 1.488 -0.8362 0.3894 -0.7702
-3.479 1.471 -0.8209 0.3894 -0.8011
-3.436 1.453 -0.7966 0.3894 -0.8301
-3.39 1.433 -0.7634 0.3894 -0.8569
-3.342 1.413 -0.7219 0.3894 -0.8816
-3.29 1.391 -0.6725 0.3894 -0.9041
-3.237 1.369 -0.6157 0.3894 -0.9243
-3.181 1.345 -0.5521 0.3894 -0.9422
-3.123 1.321 -0.4826 0.3894 -0.9578
-3.064 1.296 -0.4078 0.3894 -0.971
-3.003 1.27 -0.3286 0.3894 -0.9817
-2.942 1.244 -0.2458 0.3894 -0.99
-2.879 1.217 -0.1604 0.3894 -0.9958
-2.816 1.191 -0.07317 0.3894 -0.9991
-2.753 1.164 0.01481 0.3894 -1
-2.689 1.137 0.1026 0.3894 -0.9983
-2.626 1.11 0.1893 0.3894 -0.9941
-2.564 1.084 0.274 0.3894 -0.9875
-2.502 1.058 0.3557 0.3894 -0.9784
-2.442 1.032 0.4335 0.3894 -0.9668
-2.383 1.008 0.5066 0.3894 -0.9528
-2.326 0.9835 0.5742 0.3894 -0.9365
-2.271 0.9603 0.6355 0.3894 -0.9178
-2.218 0.938 0.6899 0.3894 -0.8968
-2.168 0.9167 0.7368 0.3894 -0.8735
-2.12 0.8965 0.7755 0.3894 -0.8481
-2.076 0.8775 0.8058 0.3894 -0.8206
-2.034 0.8599 0.8271 0.3894 -0.791
-1.995 0.8435 0.8392 0.3894 -0.7594
-1.96 0.8285 0.842 0.3894 -0.7259
-1.928 0.815 0.8354 0.3894 -0.6907
-1.899 0.8029 0.8193 0.3894 -0.6536
-1.874 0.7923 0.7939 0.3894 -0.615
-1.852 0.7832 0.7594 0.3894 -0.5748
-1.834 0.7756 0.7161 0.3894 -0.5332
-1.82 0.7695 0.6644 0.3894 -0.4903
-1.809 0.7649 0.6048 0.3894 -0.4461
-1.802 0.7618 0.5377 0.3894 -0.4008
-1.798 0.7601 0.464 0.3894 -0.3545
-1.797 0.7598 0.3842 0.3894 -0.3073
-1.8 0.7609 0.2992 0.3894 -0.2594
-1.805 0.7633 0.2097 0.3894 -0.2108
-1.814 0.7669 0.1167 0.3894 -0.1617
-1.825 0.7718 0.02103 0.3894 -0.1122
-1.839 0.7777 -0.07631 0.3894 -0.06235
-1.856 0.7847 -0.1744 0.3894 -0.01239
-1.875 0.7927 -0.2722 0.3894 0.0376
-1.896 0.8015 -0.3688 0.3894 0.0875
-1.919 0.8112 -0.4631 0.3894 0.1372
-1.943 0.8216 -0.5544 0.3894 0.1865
-1.97 0.8327 -0.6415 0.3894 0.2354
-1.997 0.8444 -0.7237 0.3894 0.2837
-2.026 0.8565 -0.8001 0.3894 0.3312
-2.056 0.8691 -0.8699 0.3894 0.378
-2.086 0.882 -0.9323 0.3894 0.4238
-2.117 0.8951 -0.9868 0.3894 0.4685
-2.149 0.9085 -1.033 0.3894 0.5121
-2.181 0.922 -1.07 0.3894 0.5544
-2.213 0.9356 -1.097 0.3894 0.5953
-2.245 0.9492 -1.115 0.3894 0.6347
-2.277 0.9628 -1.123 0.3894 0.6725
-2.309 0.9763 -1.12 0.3894 0.7087
-2.341 0.9898 -1.108 0.3894 0.743
-2.373 1.003 -1.085 0.3894 0.7756
-2.404 1.016 -1.053 0.3894 0.8061
-2.434 1.029 -1.01 0.3894 0.8347
-2.465 1.042 -0.959 0.3894 0.8612
-2.494 1.055 -0.8987 0.3894 0.8855
-2.524 1.067 -0.8302 0.3894 0.9076
-2.553 1.079 -0.754 0.3894 0.9275
-2.581 1.091 -0.6708 0.3894 0.945
-2.609 1.103 -0.5814 0.3894 0.9602
-2.637 1.115 -0.4866 0.3894 0.9729
-2.664 1.126 -0.3873 0.3894 0.9833
-2.691 1.138 -0.2844 0.3894 0.9911
-2.718 1.149 -0.1788 0.3894 0.9965
-2.745 1.161 -0.07159 0.3894 0.9994
-2.701 1.305 0 0.435 1
-2.725 1.316 0.1085 0.435 0.9988
-2.749 1.328 0.2159 0.435 0.995
-2.773 1.34 0.3214 0.435 0.9888
-2.797 1.351 0.4239 0.435 0.9801
-2.822 1.363 0.5225 0.435 0.9689
-2.847 1.375 0.6163 0.435 0.9553
-2.873 1.388 0.7045 0.435 0.9394
-2.899 1.4 0.7862 0.435 0.9211
-2.926 1.413 0.8606 0.435 0.9004
-2.953 1.427 0.9272 0.435 0.8776
-2.981 1.44 0.9854 0.435 0.8525
-3.01 1.454 1.035 0.435 0.8253
-3.039 1.468 1.074 0.435 0.7961
-3.069 1.482 1.104 0.435 0.7648
-3.099 1.497 1.124 0.435 0.7317
-3.13 1.512 1.134 0.435 0.6967
-3.162 1.527 1.134 0.435 0.66
-3.193 1.543 1.124 0.435 0.6216
-3.225 1.558 1.104 0.435 0.5817
-3.257 1.573 1.074 0.435 0.5403
-3.289 1.589 1.035 0.435 0.4976
-3.321 1.604 0.987 0.435 0.4536
-3.353 1.62 0.9306 0.435 0.4085
-3.384 1.635 0.8664 0.435 0.3624
-3.414 1.649 0.7951 0.435 0.3153
-3.444 1.663 0.7175 0.435 0.2675
-3.472 1.677 0.6343 0.435 0.219
-3.499 1.69 0.5464 0.435 0.17
-3.525 1.703 0.4547 0.435 0.1205
-3.549 1.714 0.3601 0.435 0.07074
-3.571 1.725 0.2636 0.435 0.02079
-3.59 1.734 0.1661 0.435 -0.0292
-3.608 1.743 0.06864 0.435 -0.07912
-3.623 1.75 -0.02785 0.435 -0.1288
-3.636 1.756 -0.1224 0.435 -0.1782
-3.645 1.761 -0.2141 0.435 -0.2272
-3.652 1.764 -0.302 0.435 -0.2756
-3.655 1.766 -0.3853 0.435 -0.3233
-3.655 1.766 -0.4632 0.435 -0.3702
-3.652 1.764 -0.5349 0.435 -0.4161
-3.645 1.761 -0.5997 0.435 -0.4611
-3.634 1.755 -0.657 0.435 -0.5048
-3.62 1.749 -0.7064 0.435 -0.5474
-3.602 1.74 -0.7472 0.435 -0.5885
-3.581 1.73 -0.7793 0.435 -0.6282
-3.556 1.718 -0.8023 0.435 -0.6663
-3.527 1.704 -0.816 0.435 -0.7027
-3.494 1.688 -0.8204 0.435 -0.7374
-3.459 1.671 -0.8154 0.435 -0.7702
-3.419 1.652 -0.8012 0.435 -0.8011
-3.377 1.631 -0.7781 0.435 -0.8301
-3.331 1.609 -0.7462 0.435 -0.8569
-3.283 1.586 -0.706 0.435 -0.8816
-3.232 1.561 -0.6579 0.435 -0.9041
-3.178 1.535 -0.6026 0.435 -0.9243
-3.122 1.508 -0.5406 0.435 -0.9422
-3.064 1.48 -0.4727 0.435 -0.9578
-3.005 1.451 -0.3995 0.435 -0.971
-2.944 1.422 -0.322 0.435 -0.9817
-2.881 1.392 -0.2409 0.435 -0.99
-2.818 1.361 -0.1572 0.435 -0.9958
-2.755 1.331 -0.07172 0.435 -0.9991
-2.691 1.3 0.01451 0.435 -1
-2.627 1.269 0.1006 0.435 -0.9983
-2.563 1.238 0.1856 0.435 -0.9941
-2.5 1.208 0.2685 0.435 -0.9875
-2.438 1.178 0.3485 0.435 -0.9784
-2.378 1.149 0.4246 0.435 -0.9668
-2.319 1.12 0.4961 0.435 -0.9528
-2.261 1.092 0.5622 0.435 -0.9365
-2.206 1.066 0.622 0.435 -0.9178
-2.153 1.04 0.6749 0.435 -0.8968
-2.103 1.016 0.7204 0.435 -0.8735
-2.056 0.993 0.7578 0.435 -0.8481
-2.011 0.9715 0.7868 0.435 -0.8206
-1.97 0.9515 0.807 0.435 -0.791
-1.932 0.9331 0.8181 0.435 -0.7594
-1.897 0.9164 0.8199 0.435 -0.7259
-1.866 0.9013 0.8124 0.435 -0.6907
-1.838 0.888 0.7956 0.435 -0.6536
-1.814 0.8764 0.7695 0.435 -0.615
-1.794 0.8667 0.7345 0.435 -0.5748
-1.778 0.8586 0.6907 0.435 -0.5332
-1.765 0.8524 0.6386 0.435 -0.4903
-1.755 0.8479 0.5787 0.435 -0.4461
-1.75 0.8452 0.5115 0.435 -0.4008
-1.747 0.8441 0.4376 0.435 -0.3545
-1.749 0.8447 0.3579 0.435 -0.3073
-1.753 0.8468 0.2729 0.435 -0.2594
-1.761 0.8504 0.1836 0.435 -0.2108
-1.771 0.8555 0.09088 0.435 -0.1617
-1.784 0.8619 -0.004427 0.435 -0.1122
-1.8 0.8696 -0.1014 0.435 -0.06235
-1.819 0.8785 -0.1989 0.435 -0.01239
-1.839 0.8885 -0.2962 0.435 0.0376
-1.862 0.8994 -0.3922 0.435 0.0875
-1.886 0.9113 -0.4859 0.435 0.1372
-1.913 0.9239 -0.5764 0.435 0.1865
-1.94 0.9372 -0.6628 0.435 0.2354
-1.969 0.9511 -0.7443 0.435 0.2837
-1.999 0.9655 -0.8198 0.435 0.3312
-2.029 0.9803 -0.8888 0.435 0.378
-2.061 0.9953 -0.9504 0.435 0.4238
-2.092 1.011 -1.004 0.435 0.4685
-2.124 1.026 -1.049 0.435 0.5121
-2.156 1.042 -1.085 0.435 0.5544
-2.188 1.057 -1.112 0.435 0.5953
-2.22 1.072 -1.129 0.435 0.6347
-2.252 1.088 -1.135 0.435 0.6725
-2.283 1.103 -1.132 0.435 0.7087
-2.314 1.118 -1.119 0.435 0.743
-2.344 1.132 -1.095 0.435 0.7756
-2.374 1.147 -1.062 0.435 0.8061
-2.403 1.161 -1.019 0.435 0.8347
-2.431 1.174 -0.9668 0.435 0.8612
-2.459 1.188 -0.9057 0.435 0.8855
-2.486 1.201 -0.8364 0.435 0.9076
-2.512 1.214 -0.7595 0.435 0.9275
-2.538 1.226 -0.6755 0.435 0.945
-2.564 1.238 -0.5854 0.435 0.9602
-2.589 1.251 -0.4899 0.435 0.9729
-2.613 1.262 -0.3898 0.435 0.9833
-2.638 1.274 -0.2862 0.435 0.9911
-2.662 1.286 -0.18 0.435 0.9965
-2.686 1.297 -0.07205 0.435 0.9994
-2.633 1.438 0 0.4794 1
-2.654 1.45 0.1091 0.4794 0.9988
-2.675 1.461 0.2172 0.4794 0.995
-2.696 1.473 0.3233 0.4794 0.9888
-2.717 1.484 0.4265 0.4794 0.9801
-2.739 1.496 0.5257 0.4794 0.9689
-2.761 1.509 0.6202 0.4794 0.9553
-2.784 1.521 0.709 0.4794 0.9394
-2.808 1.534 0.7914 0.4794 0.9211
-2.833 1.547 0.8666 0.4794 0.9004
-2.858 1.561 0.9339 0.4794 0.8776
-2.884 1.575 0.9928 0.4794 0.8525
-2.911 1.59 1.043 0.4794 0.8253
-2.938 1.605 1.083 0.4794 0.7961
-2.967 1.621 1.114 0.4794 0.7648
-2.996 1.637 1.135 0.4794 0.7317
-3.026 1.653 1.146 0.4794 0.6967
-3.056 1.67 1.147 0.4794 0.66
-3.087 1.687 1.137 0.4794 0.6216
-3.119 1.704 1.118 0.4794 0.5817
-3.151 1.721 1.089 0.4794 0.5403
-3.183 1.739 1.051 0.4794 0.4976
-3.215 1.756 1.004 0.4794 0.4536
-3.247 1.774 0.9483 0.4794 0.4085
-3.279 1.791 0.8851 0.4794 0.3624
-3.31 1.808 0.8146 0.4794 0.3153
-3.34 1.825 0.7379 0.4794 0.2675
-3.37 1.841 0.6555 0.4794 0.219
-3.398 1.856 0.5684 0.4794 0.17
-3.425 1.871 0.4774 0.4794 0.1205
-3.45 1.885 0.3835 0.4794 0.07074
-3.474 1.898 0.2876 0.4794 0.02079
-3.495 1.91 0.1907 0.4794 -0.0292
-3.515 1.92 0.09379 0.4794 -0.07912
-3.531 1.929 -0.002255 0.4794 -0.1288
-3.546 1.937 -0.09644 0.4794 -0.1782
-3.557 1.943 -0.1878 0.4794 -0.2272
-3.565 1.948 -0.2755 0.4794 -0.2756
-3.57 1.95 -0.3587 0.4794 -0.3233
-3.572 1.951 -0.4366 0.4794 -0.3702
-3.57 1.95 -0.5083 0.4794 -0.4161
-3.565 1.948 -0.5733 0.4794 -0.4611
-3.556 1.943 -0.6309 0.4794 -0.5048
-3.543 1.936 -0.6806 0.4794 -0.5474
-3.527 1.927 -0.722 0.4794 -0.5885
-3.507 1.916 -0.7546 0.4794 -0.6282
-3.483 1.903 -0.7783 0.4794 -0.6663
-3.455 1.887 -0.7928 0.4794 -0.7027
-3.423 1.87 -0.7981 0.4794 -0.7374
-3.388 1.851 -0.7941 0.4794 -0.7702
-3.35 1.83 -0.781 0.4794 -0.8011
-3.308 1.807 -0.7591 0.4794 -0.8301
-3.263 1.783 -0.7285 0.4794 -0.8569
-3.215 1.756 -0.6896 0.4794 -0.8816
-3.164 1.728 -0.643 0.4794 -0.9041
-3.11 1.699 -0.5892 0.4794 -0.9243
-3.055 1.669 -0.5288 0.4794 -0.9422
-2.997 1.637 -0.4624 0.4794 -0.9578
-2.937 1.605 -0.391 0.4794 -0.971
-2.876 1.571 -0.3151 0.4794 -0.9817
-2.813 1.537 -0.2358 0.4794 -0.99
-2.75 1.502 -0.1539 0.4794 -0.9958
-2.686 1.467 -0.07022 0.4794 -0.9991
-2.622 1.432 0.01421 0.4794 -1
-2.558 1.397 0.09848 0.4794 -0.9983
-2.494 1.363 0.1817 0.4794 -0.9941
-2.431 1.328 0.2628 0.4794 -0.9875
-2.369 1.294 0.3411 0.4794 -0.9784
-2.308 1.261 0.4155 0.4794 -0.9668
-2.249 1.229 0.4854 0.4794 -0.9528
-2.192 1.197 0.5498 0.4794 -0.9365
-2.137 1.167 0.6081 0.4794 -0.9178
-2.084 1.139 0.6595 0.4794 -0.8968
-2.034 1.111 0.7036 0.4794 -0.8735
-1.987 1.086 0.7397 0.4794 -0.8481
-1.943 1.062 0.7674 0.4794 -0.8206
-1.902 1.039 0.7865 0.4794 -0.791
-1.865 1.019 0.7965 0.4794 -0.7594
-1.831 1 0.7973 0.4794 -0.7259
-1.801 0.9839 0.789 0.4794 -0.6907
-1.774 0.9694 0.7714 0.4794 -0.6536
-1.752 0.9569 0.7447 0.4794 -0.615
-1.733 0.9466 0.709 0.4794 -0.5748
-1.718 0.9383 0.6648 0.4794 -0.5332
-1.706 0.932 0.6124 0.4794 -0.4903
-1.698 0.9278 0.5522 0.4794 -0.4461
-1.694 0.9256 0.4849 0.4794 -0.4008
-1.694 0.9253 0.411 0.4794 -0.3545
-1.697 0.9269 0.3313 0.4794 -0.3073
-1.703 0.9302 0.2465 0.4794 -0.2594
-1.712 0.9353 0.1575 0.4794 -0.2108
-1.724 0.942 0.06503 0.4794 -0.1617
-1.739 0.9502 -0.02988 0.4794 -0.1122
-1.757 0.9599 -0.1263 0.4794 -0.06235
-1.777 0.9709 -0.2234 0.4794 -0.01239
-1.799 0.983 -0.32 0.4794 0.0376
-1.824 0.9962 -0.4154 0.4794 0.0875
-1.849 1.01 -0.5084 0.4794 0.1372
-1.877 1.025 -0.5981 0.4794 0.1865
-1.906 1.041 -0.6838 0.4794 0.2354
-1.935 1.057 -0.7644 0.4794 0.2837
-1.966 1.074 -0.8391 0.4794 0.3312
-1.997 1.091 -0.9072 0.4794 0.378
-2.029 1.109 -0.9679 0.4794 0.4238
-2.061 1.126 -1.021 0.4794 0.4685
-2.093 1.144 -1.065 0.4794 0.5121
-2.125 1.161 -1.1 0.4794 0.5544
-2.157 1.178 -1.126 0.4794 0.5953
-2.189 1.196 -1.142 0.4794 0.6347
-2.22 1.213 -1.148 0.4794 0.6725
-2.25 1.229 -1.143 0.4794 0.7087
-2.28 1.245 -1.129 0.4794 0.743
-2.309 1.261 -1.105 0.4794 0.7756
-2.337 1.277 -1.071 0.4794 0.8061
-2.364 1.292 -1.027 0.4794 0.8347
-2.391 1.306 -0.974 0.4794 0.8612
-2.416 1.32 -0.9122 0.4794 0.8855
-2.441 1.334 -0.8421 0.4794 0.9076
-2.465 1.347 -0.7645 0.4794 0.9275
-2.489 1.36 -0.6798 0.4794 0.945
-2.512 1.372 -0.589 0.4794 0.9602
-2.534 1.384 -0.4928 0.4794 0.9729
-2.556 1.396 -0.3922 0.4794 0.9833
-2.577 1.408 -0.2879 0.4794 0.9911
-2.598 1.419 -0.181 0.4794 0.9965
-2.619 1.431 -0.07247 0.4794 0.9994
-2.558 1.568 0 0.5227 1
-2.575 1.579 0.1097 0.5227 0.9988
-2.593 1.59 0.2183 0.5227 0.995
-2.612 1.601 0.325 0.5227 0.9888
-2.63 1.613 0.4287 0.5227 0.9801
-2.65 1.624 0.5286 0.5227 0.9689
-2.669 1.637 0.6237 0.5227 0.9553
-2.69 1.649 0.7131 0.5227 0.9394
-2.711 1.662 0.7961 0.5227 0.9211
-2.733 1.676 0.872 0.5227 0.9004
-2.756 1.69 0.94 0.5227 0.8776
-2.78 1.705 0.9997 0.5227 0.8525
-2.805 1.72 1.05 0.5227 0.8253
-2.831 1.736 1.092 0.5227 0.7961
-2.858 1.752 1.123 0.5227 0.7648
-2.886 1.769 1.145 0.5227 0.7317
-2.915 1.787 1.157 0.5227 0.6967
-2.944 1.805 1.158 0.5227 0.66
-2.975 1.824 1.15 0.5227 0.6216
-3.006 1.843 1.132 0.5227 0.5817
-3.037 1.862 1.104 0.5227 0.5403
-3.069 1.882 1.066 0.5227 0.4976
-3.102 1.902 1.02 0.5227 0.4536
-3.134 1.921 0.9655 0.5227 0.4085
-3.166 1.941 0.9032 0.5227 0.3624
-3.198 1.961 0.8337 0.5227 0.3153
-3.229 1.98 0.7578 0.5227 0.2675
-3.259 1.998 0.6763 0.5227 0.219
-3.289 2.016 0.59 0.5227 0.17
-3.317 2.033 0.4998 0.5227 0.1205
-3.343 2.05 0.4067 0.5227 0.07074
-3.368 2.065 0.3115 0.5227 0.02079
-3.391 2.079 0.2153 0.5227 -0.0292
-3.412 2.092 0.1189 0.5227 -0.07912
-3.43 2.103 0.02334 0.5227 -0.1288
-3.446 2.113 -0.0704 0.5227 -0.1782
-3.459 2.121 -0.1614 0.5227 -0.2272
-3.469 2.127 -0.2489 0.5227 -0.2756
-3.476 2.131 -0.3319 0.5227 -0.3233
-3.479 2.133 -0.4097 0.5227 -0.3702
-3.479 2.133 -0.4814 0.5227 -0.4161
-3.475 2.131 -0.5466 0.5227 -0.4611
-3.468 2.126 -0.6044 0.5227 -0.5048
-3.456 2.119 -0.6545 0.5227 -0.5474
-3.441 2.11 -0.6963 0.5227 -0.5885
-3.422 2.098 -0.7295 0.5227 -0.6282
-3.399 2.084 -0.7539 0.5227 -0.6663
-3.373 2.068 -0.7692 0.5227 -0.7027
-3.342 2.049 -0.7753 0.5227 -0.7374
-3.308 2.028 -0.7724 0.5227 -0.7702
-3.271 2.005 -0.7604 0.5227 -0.8011
-3.229 1.98 -0.7396 0.5227 -0.8301
-3.185 1.953 -0.7103 0.5227 -0.8569
-3.138 1.924 -0.6728 0.5227 -0.8816
-3.087 1.893 -0.6277 0.5227 -0.9041
-3.034 1.86 -0.5754 0.5227 -0.9243
-2.979 1.826 -0.5166 0.5227 -0.9422
-2.921 1.791 -0.4519 0.5227 -0.9578
-2.861 1.754 -0.3822 0.5227 -0.971
-2.8 1.717 -0.3081 0.5227 -0.9817
-2.738 1.679 -0.2306 0.5227 -0.99
-2.675 1.64 -0.1505 0.5227 -0.9958
-2.611 1.601 -0.06868 0.5227 -0.9991
-2.547 1.561 0.0139 0.5227 -1
-2.483 1.522 0.09632 0.5227 -0.9983
-2.419 1.483 0.1777 0.5227 -0.9941
-2.356 1.444 0.257 0.5227 -0.9875
-2.294 1.407 0.3335 0.5227 -0.9784
-2.234 1.369 0.4062 0.5227 -0.9668
-2.175 1.333 0.4743 0.5227 -0.9528
-2.118 1.298 0.537 0.5227 -0.9365
-2.063 1.265 0.5937 0.5227 -0.9178
-2.011 1.233 0.6437 0.5227 -0.8968
-1.961 1.202 0.6863 0.5227 -0.8735
-1.915 1.174 0.7211 0.5227 -0.8481
-1.871 1.147 0.7475 0.5227 -0.8206
-1.831 1.123 0.7654 0.5227 -0.791
-1.795 1.101 0.7744 0.5227 -0.7594
-1.762 1.08 0.7743 0.5227 -0.7259
-1.733 1.062 0.765 0.5227 -0.6907
-1.708 1.047 0.7467 0.5227 -0.6536
-1.686 1.034 0.7193 0.5227 -0.615
-1.668 1.023 0.6832 0.5227 -0.5748
-1.655 1.014 0.6385 0.5227 -0.5332
-1.645 1.008 0.5858 0.5227 -0.4903
-1.638 1.005 0.5255 0.5227 -0.4461
-1.636 1.003 0.458 0.5227 -0.4008
-1.637 1.004 0.3841 0.5227 -0.3545
-1.641 1.006 0.3045 0.5227 -0.3073
-1.649 1.011 0.2199 0.5227 -0.2594
-1.66 1.018 0.1312 0.5227 -0.2108
-1.674 1.026 0.03913 0.5227 -0.1617
-1.691 1.037 -0.05532 0.5227 -0.1122
-1.71 1.048 -0.1512 0.5227 -0.06235
-1.731 1.062 -0.2477 0.5227 -0.01239
-1.755 1.076 -0.3437 0.5227 0.0376
-1.781 1.092 -0.4383 0.5227 0.0875
-1.808 1.108 -0.5305 0.5227 0.1372
-1.836 1.126 -0.6195 0.5227 0.1865
-1.866 1.144 -0.7043 0.5227 0.2354
-1.897 1.163 -0.784 0.5227 0.2837
-1.928 1.182 -0.8578 0.5227 0.3312
-1.96 1.202 -0.925 0.5227 0.378
-1.992 1.221 -0.9848 0.5227 0.4238
-2.024 1.241 -1.037 0.5227 0.4685
-2.056 1.261 -1.08 0.5227 0.5121
-2.088 1.28 -1.114 0.5227 0.5544
-2.12 1.3 -1.139 0.5227 0.5953
-2.151 1.319 -1.154 0.5227 0.6347
-2.181 1.337 -1.159 0.5227 0.6725
-2.21 1.355 -1.154 0.5227 0.7087
-2.239 1.373 -1.139 0.5227 0.743
-2.266 1.389 -1.114 0.5227 0.7756
-2.293 1.406 -1.079 0.5227 0.8061
-2.319 1.422 -1.034 0.5227 0.8347
-2.343 1.437 -0.9806 0.5227 0.8612
-2.367 1.451 -0.9181 0.5227 0.8855
-2.39 1.465 -0.8473 0.5227 0.9076
-2.411 1.478 -0.769 0.5227 0.9275
-2.432 1.491 -0.6837 0.5227 0.945
-2.453 1.504 -0.5923 0.5227 0.9602
-2.472 1.516 -0.4955 0.5227 0.9729
-2.491 1.527 -0.3942 0.5227 0.9833
-2.51 1.539 -0.2894 0.5227 0.9911
-2.528 1.55 -0.1819 0.5227 0.9965
-2.546 1.561 -0.07284 0.5227 0.9994
-2.476 1.694 0 0.5646 1
-2.491 1.704 0.1101 0.5646 0.9988
-2.506 1.715 0.2193 0.5646 0.995
-2.522 1.725 0.3265 0.5646 0.9888
-2.538 1.736 0.4307 0.5646 0.9801
-2.554 1.747 0.5311 0.5646 0.9689
-2.571 1.759 0.6268 0.5646 0.9553
-2.589 1.771 0.7168 0.5646 0.9394
-2.608 1.784 0.8004 0.5646 0.9211
-2.628 1.798 0.8769 0.5646 0.9004
-2.649 1.812 0.9456 0.5646 0.8776
-2.671 1.827 1.006 0.5646 0.8525
-2.694 1.843 1.057 0.5646 0.8253
-2.718 1.86 1.099 0.5646 0.7961
-2.744 1.877 1.132 0.5646 0.7648
-2.77 1.895 1.154 0.5646 0.7317
-2.798 1.914 1.167 0.5646 0.6967
-2.827 1.934 1.169 0.5646 0.66
-2.856 1.954 1.162 0.5646 0.6216
-2.887 1.975 1.144 0.5646 0.5817
-2.918 1.996 1.117 0.5646 0.5403
-2.949 2.018 1.081 0.5646 0.4976
-2.982 2.04 1.036 0.5646 0.4536
-3.014 2.062 0.9821 0.5646 0.4085
-3.046 2.084 0.9207 0.5646 0.3624
-3.078 2.106 0.8522 0.5646 0.3153
-3.11 2.128 0.7772 0.5646 0.2675
-3.141 2.149 0.6966 0.5646 0.219
-3.171 2.17 0.6112 0.5646 0.17
-3.2 2.189 0.5219 0.5646 0.1205
-3.228 2.208 0.4296 0.5646 0.07074
-3.254 2.226 0.3352 0.5646 0.02079
-3.278 2.243 0.2396 0.5646 -0.0292
-3.3 2.258 0.1439 0.5646 -0.07912
-3.32 2.271 0.04893 0.5646 -0.1288
-3.337 2.283 -0.04433 0.5646 -0.1782
-3.352 2.293 -0.135 0.5646 -0.2272
-3.363 2.301 -0.2221 0.5646 -0.2756
-3.371 2.306 -0.3049 0.5646 -0.3233
-3.376 2.31 -0.3825 0.5646 -0.3702
-3.378 2.311 -0.4543 0.5646 -0.4161
-3.375 2.309 -0.5195 0.5646 -0.4611
-3.369 2.305 -0.5776 0.5646 -0.5048
-3.359 2.298 -0.6279 0.5646 -0.5474
-3.346 2.289 -0.6702 0.5646 -0.5885
-3.328 2.277 -0.7039 0.5646 -0.6282
-3.306 2.262 -0.7289 0.5646 -0.6663
-3.281 2.245 -0.745 0.5646 -0.7027
-3.252 2.225 -0.7521 0.5646 -0.7374
-3.218 2.202 -0.7501 0.5646 -0.7702
-3.182 2.177 -0.7392 0.5646 -0.8011
-3.142 2.149 -0.7197 0.5646 -0.8301
-3.098 2.119 -0.6917 0.5646 -0.8569
-3.051 2.087 -0.6556 0.5646 -0.8816
-3.001 2.053 -0.612 0.5646 -0.9041
-2.949 2.018 -0.5612 0.5646 -0.9243
-2.894 1.98 -0.5041 0.5646 -0.9422
-2.837 1.941 -0.4411 0.5646 -0.9578
-2.778 1.901 -0.3731 0.5646 -0.971
-2.717 1.859 -0.3009 0.5646 -0.9817
-2.655 1.817 -0.2252 0.5646 -0.99
-2.593 1.774 -0.147 0.5646 -0.9958
-2.529 1.73 -0.06709 0.5646 -0.9991
-2.465 1.687 0.01358 0.5646 -1
-2.402 1.643 0.09409 0.5646 -0.9983
-2.338 1.6 0.1735 0.5646 -0.9941
-2.276 1.557 0.251 0.5646 -0.9875
-2.214 1.515 0.3256 0.5646 -0.9784
-2.154 1.474 0.3965 0.5646 -0.9668
-2.096 1.434 0.4629 0.5646 -0.9528
-2.039 1.395 0.524 0.5646 -0.9365
-1.985 1.358 0.579 0.5646 -0.9178
-1.934 1.323 0.6274 0.5646 -0.8968
-1.885 1.289 0.6686 0.5646 -0.8735
-1.839 1.258 0.702 0.5646 -0.8481
-1.797 1.229 0.7272 0.5646 -0.8206
-1.757 1.202 0.7439 0.5646 -0.791
-1.722 1.178 0.7518 0.5646 -0.7594
-1.69 1.156 0.7507 0.5646 -0.7259
-1.662 1.137 0.7406 0.5646 -0.6907
-1.638 1.121 0.7215 0.5646 -0.6536
-1.618 1.107 0.6935 0.5646 -0.615
-1.601 1.096 0.6569 0.5646 -0.5748
-1.589 1.087 0.6119 0.5646 -0.5332
-1.58 1.081 0.5589 0.5646 -0.4903
-1.576 1.078 0.4983 0.5646 -0.4461
-1.575 1.077 0.4309 0.5646 -0.4008
-1.577 1.079 0.357 0.5646 -0.3545
-1.583 1.083 0.2776 0.5646 -0.3073
-1.592 1.089 0.1932 0.5646 -0.2594
-1.605 1.098 0.1048 0.5646 -0.2108
-1.62 1.108 0.01321 0.5646 -0.1617
-1.638 1.121 -0.08072 0.5646 -0.1122
-1.659 1.135 -0.176 0.5646 -0.06235
-1.682 1.15 -0.2718 0.5646 -0.01239
-1.706 1.167 -0.3671 0.5646 0.0376
-1.733 1.186 -0.4609 0.5646 0.0875
-1.761 1.205 -0.5523 0.5646 0.1372
-1.791 1.225 -0.6404 0.5646 0.1865
-1.821 1.246 -0.7243 0.5646 0.2354
-1.853 1.267 -0.8031 0.5646 0.2837
-1.885 1.289 -0.876 0.5646 0.3312
-1.917 1.311 -0.9422 0.5646 0.378
-1.949 1.333 -1.001 0.5646 0.4238
-1.981 1.356 -1.052 0.5646 0.4685
-2.013 1.377 -1.094 0.5646 0.5121
-2.045 1.399 -1.128 0.5646 0.5544
-2.076 1.42 -1.151 0.5646 0.5953
-2.106 1.441 -1.165 0.5646 0.6347
-2.135 1.461 -1.17 0.5646 0.6725
-2.164 1.48 -1.164 0.5646 0.7087
-2.191 1.499 -1.148 0.5646 0.743
-2.217 1.517 -1.122 0.5646 0.7756
-2.242 1.534 -1.086 0.5646 0.8061
-2.266 1.55 -1.041 0.5646 0.8347
-2.289 1.566 -0.9866 0.5646 0.8612
-2.31 1.581 -0.9234 0.5646 0.8855
-2.331 1.595 -0.852 0.5646 0.9076
-2.35 1.608 -0.773 0.5646 0.9275
-2.369 1.621 -0.6872 0.5646 0.945
-2.387 1.633 -0.5952 0.5646 0.9602
-2.403 1.644 -0.4979 0.5646 0.9729
-2.42 1.655 -0.3961 0.5646 0.9833
-2.436 1.666 -0.2907 0.5646 0.9911
-2.451 1.677 -0.1828 0.5646 0.9965
-2.466 1.687 -0.07316 0.5646 0.9994
-2.388 1.816 0 0.6052 1
-2.401 1.825 0.1106 0.6052 0.9988
-2.413 1.834 0.2201 0.6052 0.995
-2.426 1.844 0.3278 0.6052 0.9888
-2.439 1.854 0.4325 0.6052 0.9801
-2.453 1.865 0.5333 0.6052 0.9689
-2.468 1.876 0.6294 0.6052 0.9553
-2.483 1.888 0.72 0.6052 0.9394
-2.5 1.9 0.8041 0.6052 0.9211
-2.517 1.914 0.8812 0.6052 0.9004
-2.536 1.928 0.9505 0.6052 0.8776
-2.556 1.943 1.011 0.6052 0.8525
-2.577 1.959 1.064 0.6052 0.8253
-2.6 1.976 1.106 0.6052 0.7961
-2.624 1.995 1.14 0.6052 0.7648
-2.649 2.014 1.163 0.6052 0.7317
-2.675 2.034 1.176 0.6052 0.6967
-2.703 2.055 1.18 0.6052 0.66
-2.732 2.077 1.173 0.6052 0.6216
-2.761 2.099 1.156 0.6052 0.5817
-2.792 2.122 1.13 0.6052 0.5403
-2.823 2.146 1.095 0.6052 0.4976
-2.855 2.17 1.051 0.6052 0.4536
-2.887 2.195 0.9981 0.6052 0.4085
-2.92 2.22 0.9377 0.6052 0.3624
-2.952 2.244 0.8702 0.6052 0.3153
-2.984 2.269 0.7962 0.6052 0.2675
-3.016 2.293 0.7166 0.6052 0.219
-3.047 2.316 0.6321 0.6052 0.17
-3.076 2.339 0.5437 0.6052 0.1205
-3.105 2.36 0.4522 0.6052 0.07074
-3.132 2.381 0.3586 0.6052 0.02079
-3.157 2.4 0.2639 0.6052 -0.0292
-3.18 2.418 0.1688 0.6052 -0.07912
-3.201 2.434 0.07448 0.6052 -0.1288
-3.22 2.448 -0.01822 0.6052 -0.1782
-3.235 2.46 -0.1084 0.6052 -0.2272
-3.248 2.469 -0.1952 0.6052 -0.2756
-3.258 2.477 -0.2777 0.6052 -0.3233
-3.264 2.481 -0.3551 0.6052 -0.3702
-3.267 2.483 -0.4268 0.6052 -0.4161
-3.266 2.483 -0.4921 0.6052 -0.4611
-3.261 2.479 -0.5503 0.6052 -0.5048
-3.253 2.473 -0.601 0.6052 -0.5474
-3.24 2.463 -0.6436 0.6052 -0.5885
-3.224 2.451 -0.6779 0.6052 -0.6282
-3.203 2.435 -0.7036 0.6052 -0.6663
-3.179 2.417 -0.7204 0.6052 -0.7027
-3.151 2.395 -0.7283 0.6052 -0.7374
-3.119 2.371 -0.7274 0.6052 -0.7702
-3.083 2.344 -0.7176 0.6052 -0.8011
-3.044 2.314 -0.6993 0.6052 -0.8301
-3.002 2.282 -0.6726 0.6052 -0.8569
-2.956 2.247 -0.638 0.6052 -0.8816
-2.907 2.21 -0.5958 0.6052 -0.9041
-2.856 2.171 -0.5467 0.6052 -0.9243
-2.801 2.13 -0.4913 0.6052 -0.9422
-2.745 2.087 -0.4301 0.6052 -0.9578
-2.687 2.043 -0.3639 0.6052 -0.971
-2.627 1.997 -0.2935 0.6052 -0.9817
-2.566 1.95 -0.2197 0.6052 -0.99
-2.504 1.903 -0.1434 0.6052 -0.9958
-2.441 1.855 -0.06546 0.6052 -0.9991
-2.378 1.807 0.01325 0.6052 -1
-2.315 1.76 0.09181 0.6052 -0.9983
-2.252 1.712 0.1693 0.6052 -0.9941
-2.19 1.665 0.2449 0.6052 -0.9875
-2.129 1.619 0.3176 0.6052 -0.9784
-2.07 1.574 0.3867 0.6052 -0.9668
-2.012 1.53 0.4512 0.6052 -0.9528
-1.957 1.487 0.5106 0.6052 -0.9365
-1.903 1.447 0.564 0.6052 -0.9178
-1.853 1.408 0.6108 0.6052 -0.8968
-1.805 1.372 0.6505 0.6052 -0.8735
-1.76 1.338 0.6825 0.6052 -0.8481
-1.719 1.307 0.7064 0.6052 -0.8206
-1.681 1.278 0.7219 0.6052 -0.791
-1.646 1.251 0.7287 0.6052 -0.7594
-1.616 1.228 0.7267 0.6052 -0.7259
-1.589 1.208 0.7157 0.6052 -0.6907
-1.566 1.19 0.6959 0.6052 -0.6536
-1.547 1.176 0.6673 0.6052 -0.615
-1.532 1.164 0.6302 0.6052 -0.5748
-1.521 1.156 0.5848 0.6052 -0.5332
-1.513 1.151 0.5316 0.6052 -0.4903
-1.51 1.148 0.4709 0.6052 -0.4461
-1.51 1.148 0.4034 0.6052 -0.4008
-1.514 1.151 0.3297 0.6052 -0.3545
-1.522 1.157 0.2504 0.6052 -0.3073
-1.532 1.165 0.1664 0.6052 -0.2594
-1.546 1.175 0.07841 0.6052 -0.2108
-1.563 1.188 -0.01271 0.6052 -0.1617
-1.582 1.203 -0.1061 0.6052 -0.1122
-1.604 1.219 -0.2007 0.6052 -0.06235
-1.628 1.237 -0.2958 0.6052 -0.01239
-1.653 1.257 -0.3903 0.6052 0.0376
-1.681 1.278 -0.4833 0.6052 0.0875
-1.71 1.3 -0.5738 0.6052 0.1372
-1.74 1.323 -0.661 0.6052 0.1865
-1.771 1.347 -0.7439 0.6052 0.2354
-1.803 1.371 -0.8217 0.6052 0.2837
-1.835 1.395 -0.8936 0.6052 0.3312
-1.868 1.42 -0.9589 0.6052 0.378
-1.9 1.444 -1.017 0.6052 0.4238
-1.932 1.469 -1.067 0.6052 0.4685
-1.964 1.493 -1.108 0.6052 0.5121
-1.995 1.517 -1.14 0.6052 0.5544
-2.025 1.54 -1.163 0.6052 0.5953
-2.055 1.562 -1.176 0.6052 0.6347
-2.083 1.583 -1.18 0.6052 0.6725
-2.11 1.604 -1.173 0.6052 0.7087
-2.136 1.624 -1.156 0.6052 0.743
-2.161 1.643 -1.129 0.6052 0.7756
-2.184 1.661 -1.093 0.6052 0.8061
-2.206 1.677 -1.047 0.6052 0.8347
-2.227 1.693 -0.9919 0.6052 0.8612
-2.247 1.708 -0.9281 0.6052 0.8855
-2.265 1.722 -0.8561 0.6052 0.9076
-2.282 1.735 -0.7766 0.6052 0.9275
-2.299 1.747 -0.6902 0.6052 0.945
-2.314 1.759 -0.5977 0.6052 0.9602
-2.328 1.77 -0.4999 0.6052 0.9729
-2.342 1.78 -0.3976 0.6052 0.9833
-2.355 1.79 -0.2919 0.6052 0.9911
-2.368 1.8 -0.1835 0.6052 0.9965
-2.38 1.809 -0.07344 0.6052 0.9994
-2.295 1.933 0 0.6442 1
-2.304 1.941 0.1109 0.6442 0.9988
-2.314 1.949 0.2209 0.6442 0.995
-2.324 1.958 0.3288 0.6442 0.9888
-2.335 1.967 0.4339 0.6442 0.9801
-2.347 1.976 0.5352 0.6442 0.9689
-2.359 1.987 0.6317 0.6442 0.9553
-2.372 1.998 0.7227 0.6442 0.9394
-2.386 2.01 0.8074 0.6442 0.9211
-2.402 2.023 0.885 0.6442 0.9004
-2.418 2.037 0.9548 0.6442 0.8776
-2.436 2.052 1.016 0.6442 0.8525
-2.456 2.068 1.069 0.6442 0.8253
-2.477 2.086 1.113 0.6442 0.7961
-2.499 2.105 1.147 0.6442 0.7648
-2.523 2.125 1.171 0.6442 0.7317
-2.548 2.146 1.185 0.6442 0.6967
-2.574 2.168 1.189 0.6442 0.66
-2.602 2.192 1.183 0.6442 0.6216
-2.631 2.216 1.168 0.6442 0.5817
-2.661 2.241 1.143 0.6442 0.5403
-2.691 2.267 1.108 0.6442 0.4976
-2.723 2.293 1.065 0.6442 0.4536
-2.755 2.32 1.013 0.6442 0.4085
-2.787 2.347 0.9541 0.6442 0.3624
-2.819 2.375 0.8876 0.6442 0.3153
-2.852 2.402 0.8146 0.6442 0.2675
-2.883 2.429 0.736 0.6442 0.219
-2.915 2.455 0.6526 0.6442 0.17
-2.945 2.481 0.5651 0.6442 0.1205
-2.974 2.505 0.4746 0.6442 0.07074
-3.002 2.528 0.3819 0.6442 0.02079
-3.028 2.55 0.2879 0.6442 -0.0292
-3.052 2.571 0.1936 0.6442 -0.07912
-3.074 2.589 0.09999 0.6442 -0.1288
-3.093 2.606 0.00789 0.6442 -0.1782
-3.11 2.62 -0.08176 0.6442 -0.2272
-3.124 2.631 -0.1681 0.6442 -0.2756
-3.135 2.64 -0.2503 0.6442 -0.3233
-3.142 2.647 -0.3275 0.6442 -0.3702
-3.146 2.65 -0.3991 0.6442 -0.4161
-3.147 2.65 -0.4644 0.6442 -0.4611
-3.143 2.648 -0.5227 0.6442 -0.5048
-3.136 2.641 -0.5737 0.6442 -0.5474
-3.125 2.632 -0.6167 0.6442 -0.5885
-3.11 2.619 -0.6515 0.6442 -0.6282
-3.091 2.603 -0.6777 0.6442 -0.6663
-3.068 2.584 -0.6953 0.6442 -0.7027
-3.041 2.561 -0.7042 0.6442 -0.7374
-3.01 2.536 -0.7042 0.6442 -0.7702
-2.976 2.507 -0.6956 0.6442 -0.8011
-2.938 2.475 -0.6785 0.6442 -0.8301
-2.897 2.44 -0.6531 0.6442 -0.8569
-2.852 2.402 -0.62 0.6442 -0.8816
-2.804 2.362 -0.5794 0.6442 -0.9041
-2.754 2.319 -0.5319 0.6442 -0.9243
-2.701 2.275 -0.4781 0.6442 -0.9422
-2.645 2.228 -0.4187 0.6442 -0.9578
-2.588 2.18 -0.3544 0.6442 -0.971
-2.529 2.13 -0.2859 0.6442 -0.9817
-2.469 2.08 -0.2141 0.6442 -0.99
-2.408 2.028 -0.1398 0.6442 -0.9958
-2.346 1.976 -0.06379 0.6442 -0.9991
-2.284 1.924 0.01291 0.6442 -1
-2.222 1.872 0.08947 0.6442 -0.9983
-2.16 1.82 0.165 0.6442 -0.9941
-2.099 1.768 0.2386 0.6442 -0.9875
-2.04 1.718 0.3094 0.6442 -0.9784
-1.981 1.669 0.3765 0.6442 -0.9668
-1.925 1.621 0.4393 0.6442 -0.9528
-1.87 1.575 0.4969 0.6442 -0.9365
-1.818 1.531 0.5486 0.6442 -0.9178
-1.768 1.49 0.5938 0.6442 -0.8968
-1.722 1.45 0.632 0.6442 -0.8735
-1.678 1.413 0.6625 0.6442 -0.8481
-1.638 1.38 0.6851 0.6442 -0.8206
-1.601 1.349 0.6994 0.6442 -0.791
-1.568 1.321 0.7052 0.6442 -0.7594
-1.539 1.296 0.7022 0.6442 -0.7259
-1.513 1.274 0.6904 0.6442 -0.6907
-1.491 1.256 0.6699 0.6442 -0.6536
-1.474 1.241 0.6407 0.6442 -0.615
-1.46 1.23 0.6031 0.6442 -0.5748
-1.45 1.221 0.5574 0.6442 -0.5332
-1.444 1.216 0.5039 0.6442 -0.4903
-1.442 1.215 0.4432 0.6442 -0.4461
-1.444 1.216 0.3757 0.6442 -0.4008
-1.449 1.22 0.3021 0.6442 -0.3545
-1.457 1.228 0.2232 0.6442 -0.3073
-1.469 1.238 0.1395 0.6442 -0.2594
-1.484 1.25 0.05194 0.6442 -0.2108
-1.502 1.265 -0.03863 0.6442 -0.1617
-1.522 1.282 -0.1314 0.6442 -0.1122
-1.545 1.301 -0.2253 0.6442 -0.06235
-1.57 1.322 -0.3196 0.6442 -0.01239
-1.596 1.345 -0.4133 0.6442 0.0376
-1.625 1.368 -0.5053 0.6442 0.0875
-1.654 1.393 -0.5949 0.6442 0.1372
-1.685 1.419 -0.6811 0.6442 0.1865
-1.716 1.446 -0.7631 0.6442 0.2354
-1.748 1.473 -0.8399 0.6442 0.2837
-1.781 1.5 -0.9107 0.6442 0.3312
-1.813 1.527 -0.9749 0.6442 0.378
-1.845 1.554 -1.032 0.6442 0.4238
-1.877 1.581 -1.081 0.6442 0.4685
-1.908 1.607 -1.121 0.6442 0.5121
-1.939 1.633 -1.152 0.6442 0.5544
-1.968 1.658 -1.174 0.6442 0.5953
-1.997 1.682 -1.186 0.6442 0.6347
-2.024 1.705 -1.189 0.6442 0.6725
-2.05 1.727 -1.181 0.6442 0.7087
-2.075 1.747 -1.164 0.6442 0.743
-2.098 1.767 -1.136 0.6442 0.7756
-2.12 1.785 -1.099 0.6442 0.8061
-2.14 1.802 -1.052 0.6442 0.8347
-2.159 1.818 -0.9967 0.6442 0.8612
-2.177 1.833 -0.9323 0.6442 0.8855
-2.193 1.847 -0.8597 0.6442 0.9076
-2.208 1.86 -0.7797 0.6442 0.9275
-2.222 1.871 -0.6928 0.6442 0.945
-2.234 1.882 -0.5999 0.6442 0.9602
-2.246 1.892 -0.5016 0.6442 0.9729
-2.258 1.902 -0.399 0.6442 0.9833
-2.268 1.91 -0.2928 0.6442 0.9911
-2.278 1.919 -0.1841 0.6442 0.9965
-2.288 1.927 -0.07368 0.6442 0.9994
-2.195 2.045 0 0.6816 1
-2.202 2.052 0.1112 0.6816 0.9988
-2.21 2.059 0.2214 0.6816 0.995
-2.218 2.066 0.3297 0.6816 0.9888
-2.226 2.074 0.4351 0.6816 0.9801
-2.235 2.082 0.5367 0.6816 0.9689
-2.245 2.091 0.6336 0.6816 0.9553
-2.256 2.102 0.725 0.6816 0.9394
-2.268 2.113 0.8101 0.6816 0.9211
-2.281 2.125 0.8882 0.6816 0.9004
-2.296 2.139 0.9586 0.6816 0.8776
-2.312 2.154 1.021 0.6816 0.8525
-2.33 2.17 1.074 0.6816 0.8253
-2.349 2.188 1.118 0.6816 0.7961
-2.37 2.207 1.153 0.6816 0.7648
-2.392 2.228 1.178 0.6816 0.7317
-2.416 2.25 1.193 0.6816 0.6967
-2.441 2.274 1.198 0.6816 0.66
-2.467 2.299 1.193 0.6816 0.6216
-2.495 2.325 1.178 0.6816 0.5817
-2.524 2.352 1.154 0.6816 0.5403
-2.554 2.38 1.121 0.6816 0.4976
-2.585 2.408 1.079 0.6816 0.4536
-2.617 2.438 1.028 0.6816 0.4085
-2.649 2.467 0.9699 0.6816 0.3624
-2.681 2.497 0.9045 0.6816 0.3153
-2.713 2.527 0.8326 0.6816 0.2675
-2.745 2.557 0.7551 0.6816 0.219
-2.776 2.586 0.6727 0.6816 0.17
-2.807 2.615 0.5862 0.6816 0.1205
-2.836 2.642 0.4967 0.6816 0.07074
-2.865 2.669 0.4049 0.6816 0.02079
-2.891 2.693 0.3118 0.6816 -0.0292
-2.916 2.717 0.2183 0.6816 -0.07912
-2.939 2.738 0.1254 0.6816 -0.1288
-2.959 2.757 0.034 0.6816 -0.1782
-2.977 2.773 -0.05508 0.6816 -0.2272
-2.992 2.787 -0.1409 0.6816 -0.2756
-3.003 2.798 -0.2227 0.6816 -0.3233
-3.012 2.806 -0.2997 0.6816 -0.3702
-3.017 2.811 -0.3712 0.6816 -0.4161
-3.019 2.812 -0.4364 0.6816 -0.4611
-3.016 2.81 -0.4948 0.6816 -0.5048
-3.01 2.804 -0.546 0.6816 -0.5474
-3.001 2.795 -0.5893 0.6816 -0.5885
-2.987 2.782 -0.6246 0.6816 -0.6282
-2.969 2.766 -0.6515 0.6816 -0.6663
-2.947 2.746 -0.6698 0.6816 -0.7027
-2.922 2.722 -0.6795 0.6816 -0.7374
-2.893 2.695 -0.6806 0.6816 -0.7702
-2.86 2.664 -0.6731 0.6816 -0.8011
-2.823 2.63 -0.6572 0.6816 -0.8301
-2.783 2.592 -0.6332 0.6816 -0.8569
-2.739 2.552 -0.6015 0.6816 -0.8816
-2.693 2.509 -0.5625 0.6816 -0.9041
-2.644 2.463 -0.5167 0.6816 -0.9243
-2.592 2.415 -0.4647 0.6816 -0.9422
-2.538 2.365 -0.4071 0.6816 -0.9578
-2.482 2.313 -0.3447 0.6816 -0.971
-2.425 2.259 -0.2781 0.6816 -0.9817
-2.366 2.204 -0.2083 0.6816 -0.99
-2.306 2.148 -0.136 0.6816 -0.9958
-2.246 2.092 -0.06209 0.6816 -0.9991
-2.185 2.035 0.01257 0.6816 -1
-2.124 1.979 0.08707 0.6816 -0.9983
-2.064 1.923 0.1605 0.6816 -0.9941
-2.004 1.867 0.2321 0.6816 -0.9875
-1.946 1.813 0.3009 0.6816 -0.9784
-1.889 1.759 0.3662 0.6816 -0.9668
-1.833 1.708 0.4271 0.6816 -0.9528
-1.78 1.658 0.4828 0.6816 -0.9365
-1.729 1.611 0.5328 0.6816 -0.9178
-1.681 1.566 0.5764 0.6816 -0.8968
-1.636 1.524 0.613 0.6816 -0.8735
-1.593 1.484 0.6422 0.6816 -0.8481
-1.555 1.448 0.6635 0.6816 -0.8206
-1.519 1.415 0.6765 0.6816 -0.791
-1.487 1.386 0.6812 0.6816 -0.7594
-1.459 1.359 0.6772 0.6816 -0.7259
-1.435 1.337 0.6646 0.6816 -0.6907
-1.415 1.318 0.6434 0.6816 -0.6536
-1.398 1.303 0.6137 0.6816 -0.615
-1.386 1.291 0.5756 0.6816 -0.5748
-1.377 1.283 0.5296 0.6816 -0.5332
-1.373 1.279 0.476 0.6816 -0.4903
-1.372 1.278 0.4152 0.6816 -0.4461
-1.374 1.28 0.3478 0.6816 -0.4008
-1.381 1.286 0.2744 0.6816 -0.3545
-1.39 1.295 0.1957 0.6816 -0.3073
-1.403 1.307 0.1125 0.6816 -0.2594
-1.419 1.322 0.02544 0.6816 -0.2108
-1.438 1.339 -0.06453 0.6816 -0.1617
-1.459 1.359 -0.1566 0.6816 -0.1122
-1.482 1.381 -0.2498 0.6816 -0.06235
-1.508 1.405 -0.3432 0.6816 -0.01239
-1.535 1.43 -0.4359 0.6816 0.0376
-1.564 1.457 -0.5271 0.6816 0.0875
-1.593 1.484 -0.6157 0.6816 0.1372
-1.624 1.513 -0.7009 0.6816 0.1865
-1.656 1.543 -0.7817 0.6816 0.2354
-1.688 1.573 -0.8574 0.6816 0.2837
-1.72 1.603 -0.9272 0.6816 0.3312
-1.752 1.632 -0.9903 0.6816 0.378
-1.784 1.662 -1.046 0.6816 0.4238
-1.815 1.691 -1.094 0.6816 0.4685
-1.846 1.72 -1.133 0.6816 0.5121
-1.876 1.747 -1.163 0.6816 0.5544
-1.904 1.774 -1.184 0.6816 0.5953
-1.932 1.8 -1.196 0.6816 0.6347
-1.958 1.824 -1.197 0.6816 0.6725
-1.983 1.847 -1.189 0.6816 0.7087
-2.006 1.869 -1.171 0.6816 0.743
-2.028 1.889 -1.142 0.6816 0.7756
-2.048 1.908 -1.104 0.6816 0.8061
-2.067 1.925 -1.057 0.6816 0.8347
-2.084 1.941 -1.001 0.6816 0.8612
-2.099 1.956 -0.9358 0.6816 0.8855
-2.113 1.969 -0.8628 0.6816 0.9076
-2.126 1.981 -0.7823 0.6816 0.9275
-2.138 1.992 -0.695 0.6816 0.945
-2.149 2.002 -0.6016 0.6816 0.9602
-2.158 2.011 -0.503 0.6816 0.9729
-2.167 2.019 -0.4001 0.6816 0.9833
-2.175 2.026 -0.2936 0.6816 0.9911
-2.183 2.034 -0.1845 0.6816 0.9965
-2.19 2.04 -0.07387 0.6816 0.9994
-2.09 2.152 0 0.7174 1
-2.095 2.157 0.1114 0.7174 0.9988
-2.1 2.163 0.2219 0.7174 0.995
-2.106 2.168 0.3304 0.7174 0.9888
-2.112 2.175 0.436 0.7174 0.9801
-2.119 2.182 0.5379 0.7174 0.9689
-2.127 2.19 0.6352 0.7174 0.9553
-2.135 2.199 0.7269 0.7174 0.9394
-2.145 2.209 0.8124 0.7174 0.9211
-2.157 2.221 0.8909 0.7174 0.9004
-2.169 2.234 0.9617 0.7174 0.8776
-2.184 2.248 1.024 0.7174 0.8525
-2.2 2.265 1.078 0.7174 0.8253
-2.217 2.283 1.123 0.7174 0.7961
-2.236 2.302 1.159 0.7174 0.7648
-2.257 2.324 1.184 0.7174 0.7317
-2.279 2.347 1.2 0.7174 0.6967
-2.303 2.371 1.206 0.7174 0.66
-2.329 2.398 1.202 0.7174 0.6216
-2.355 2.425 1.188 0.7174 0.5817
-2.383 2.454 1.165 0.7174 0.5403
-2.413 2.484 1.133 0.7174 0.4976
-2.443 2.515 1.092 0.7174 0.4536
-2.474 2.547 1.042 0.7174 0.4085
-2.505 2.579 0.9851 0.7174 0.3624
-2.537 2.612 0.9208 0.7174 0.3153
-2.569 2.645 0.85 0.7174 0.2675
-2.6 2.677 0.7736 0.7174 0.219
-2.632 2.71 0.6923 0.7174 0.17
-2.662 2.741 0.6069 0.7174 0.1205
-2.692 2.772 0.5184 0.7174 0.07074
-2.72 2.801 0.4276 0.7174 0.02079
-2.747 2.829 0.3355 0.7174 -0.0292
-2.773 2.855 0.2429 0.7174 -0.07912
-2.796 2.879 0.1508 0.7174 -0.1288
-2.817 2.9 0.06009 0.7174 -0.1782
-2.835 2.919 -0.02835 0.7174 -0.2272
-2.851 2.935 -0.1137 0.7174 -0.2756
-2.863 2.948 -0.1951 0.7174 -0.3233
-2.873 2.958 -0.2717 0.7174 -0.3702
-2.879 2.964 -0.343 0.7174 -0.4161
-2.882 2.967 -0.4081 0.7174 -0.4611
-2.881 2.966 -0.4666 0.7174 -0.5048
-2.876 2.961 -0.5179 0.7174 -0.5474
-2.867 2.952 -0.5616 0.7174 -0.5885
-2.855 2.939 -0.5974 0.7174 -0.6282
-2.838 2.922 -0.6249 0.7174 -0.6663
-2.818 2.901 -0.6439 0.7174 -0.7027
-2.794 2.877 -0.6545 0.7174 -0.7374
-2.766 2.848 -0.6565 0.7174 -0.7702
-2.734 2.815 -0.6502 0.7174 -0.8011
-2.699 2.779 -0.6356 0.7174 -0.8301
-2.661 2.739 -0.613 0.7174 -0.8569
-2.619 2.696 -0.5828 0.7174 -0.8816
-2.574 2.65 -0.5453 0.7174 -0.9041
-2.526 2.601 -0.5012 0.7174 -0.9243
-2.476 2.55 -0.451 0.7174 -0.9422
-2.424 2.496 -0.3953 0.7174 -0.9578
-2.37 2.44 -0.3348 0.7174 -0.971
-2.314 2.382 -0.2702 0.7174 -0.9817
-2.256 2.323 -0.2024 0.7174 -0.99
-2.198 2.263 -0.1322 0.7174 -0.9958
-2.139 2.203 -0.06034 0.7174 -0.9991
-2.08 2.142 0.01221 0.7174 -1
-2.021 2.081 0.08462 0.7174 -0.9983
-1.962 2.02 0.156 0.7174 -0.9941
-1.904 1.961 0.2255 0.7174 -0.9875
-1.848 1.902 0.2923 0.7174 -0.9784
-1.792 1.845 0.3556 0.7174 -0.9668
-1.738 1.79 0.4146 0.7174 -0.9528
-1.687 1.737 0.4685 0.7174 -0.9365
-1.637 1.686 0.5168 0.7174 -0.9178
-1.591 1.638 0.5587 0.7174 -0.8968
-1.547 1.593 0.5937 0.7174 -0.8735
-1.506 1.551 0.6214 0.7174 -0.8481
-1.469 1.512 0.6414 0.7174 -0.8206
-1.435 1.477 0.6532 0.7174 -0.791
-1.405 1.446 0.6568 0.7174 -0.7594
-1.378 1.419 0.6519 0.7174 -0.7259
-1.355 1.395 0.6385 0.7174 -0.6907
-1.336 1.376 0.6165 0.7174 -0.6536
-1.321 1.36 0.5863 0.7174 -0.615
-1.31 1.349 0.5478 0.7174 -0.5748
-1.302 1.341 0.5015 0.7174 -0.5332
-1.299 1.337 0.4477 0.7174 -0.4903
-1.299 1.338 0.3869 0.7174 -0.4461
-1.303 1.342 0.3197 0.7174 -0.4008
-1.31 1.349 0.2465 0.7174 -0.3545
-1.321 1.36 0.1682 0.7174 -0.3073
-1.334 1.374 0.08538 0.7174 -0.2594
-1.351 1.391 -0.001082 0.7174 -0.2108
-1.37 1.411 -0.09039 0.7174 -0.1617
-1.392 1.433 -0.1817 0.7174 -0.1122
-1.416 1.458 -0.274 0.7174 -0.06235
-1.442 1.484 -0.3666 0.7174 -0.01239
-1.469 1.513 -0.4584 0.7174 0.0376
-1.498 1.543 -0.5485 0.7174 0.0875
-1.528 1.574 -0.636 0.7174 0.1372
-1.559 1.605 -0.7201 0.7174 0.1865
-1.591 1.638 -0.7999 0.7174 0.2354
-1.622 1.67 -0.8745 0.7174 0.2837
-1.654 1.703 -0.9432 0.7174 0.3312
-1.686 1.736 -1.005 0.7174 0.378
-1.717 1.768 -1.06 0.7174 0.4238
-1.748 1.8 -1.107 0.7174 0.4685
-1.778 1.83 -1.145 0.7174 0.5121
-1.806 1.86 -1.174 0.7174 0.5544
-1.834 1.888 -1.194 0.7174 0.5953
-1.86 1.916 -1.204 0.7174 0.6347
-1.885 1.941 -1.205 0.7174 0.6725
-1.909 1.965 -1.196 0.7174 0.7087
-1.93 1.988 -1.177 0.7174 0.743
-1.951 2.009 -1.148 0.7174 0.7756
-1.969 2.028 -1.109 0.7174 0.8061
-1.986 2.045 -1.061 0.7174 0.8347
-2.001 2.061 -1.004 0.7174 0.8612
-2.015 2.075 -0.9388 0.7174 0.8855
-2.027 2.088 -0.8653 0.7174 0.9076
-2.038 2.099 -0.7844 0.7174 0.9275
-2.048 2.109 -0.6967 0.7174 0.945
-2.056 2.117 -0.603 0.7174 0.9602
-2.064 2.125 -0.5041 0.7174 0.9729
-2.07 2.132 -0.4009 0.7174 0.9833
-2.076 2.138 -0.2942 0.7174 0.9911
-2.082 2.143 -0.1849 0.7174 0.9965
-2.087 2.149 -0.07401 0.7174 0.9994
-1.98 2.254 0 0.7513 1
-1.983 2.257 0.1116 0.7513 0.9988
-1.986 2.261 0.2222 0.7513 0.995
-1.989 2.265 0.3308 0.7513 0.9888
-1.993 2.269 0.4367 0.7513 0.9801
-1.998 2.275 0.5388 0.7513 0.9689
-2.004 2.281 0.6363 0.7513 0.9553
-2.011 2.289 0.7283 0.7513 0.9394
-2.019 2.298 0.8141 0.7513 0.9211
-2.028 2.309 0.893 0.7513 0.9004
-2.039 2.321 0.9643 0.7513 0.8776
-2.052 2.336 1.027 0.7513 0.8525
-2.066 2.352 1.082 0.7513 0.8253
-2.082 2.37 1.127 0.7513 0.7961
-2.099 2.39 1.163 0.7513 0.7648
-2.118 2.411 1.19 0.7513 0.7317
-2.139 2.435 1.206 0.7513 0.6967
-2.162 2.461 1.213 0.7513 0.66
-2.186 2.488 1.21 0.7513 0.6216
-2.212 2.517 1.198 0.7513 0.5817
-2.238 2.548 1.175 0.7513 0.5403
-2.267 2.58 1.144 0.7513 0.4976
-2.296 2.613 1.104 0.7513 0.4536
-2.326 2.648 1.056 0.7513 0.4085
-2.357 2.683 0.9997 0.7513 0.3624
-2.388 2.718 0.9365 0.7513 0.3153
-2.419 2.754 0.8669 0.7513 0.2675
-2.45 2.789 0.7917 0.7513 0.219
-2.481 2.825 0.7115 0.7513 0.17
-2.512 2.859 0.6273 0.7513 0.1205
-2.541 2.893 0.5399 0.7513 0.07074
-2.57 2.925 0.4501 0.7513 0.02079
-2.597 2.956 0.359 0.7513 -0.0292
-2.622 2.985 0.2673 0.7513 -0.07912
-2.646 3.012 0.1761 0.7513 -0.1288
-2.667 3.036 0.08614 0.7513 -0.1782
-2.686 3.057 -0.001616 0.7513 -0.2272
-2.702 3.076 -0.08635 0.7513 -0.2756
-2.715 3.091 -0.1672 0.7513 -0.3233
-2.726 3.103 -0.2436 0.7513 -0.3702
-2.733 3.111 -0.3146 0.7513 -0.4161
-2.736 3.115 -0.3796 0.7513 -0.4611
-2.736 3.115 -0.4381 0.7513 -0.5048
-2.732 3.11 -0.4896 0.7513 -0.5474
-2.725 3.102 -0.5336 0.7513 -0.5885
-2.714 3.089 -0.5698 0.7513 -0.6282
-2.699 3.072 -0.5978 0.7513 -0.6663
-2.68 3.051 -0.6176 0.7513 -0.7027
-2.657 3.025 -0.629 0.7513 -0.7374
-2.631 2.995 -0.6321 0.7513 -0.7702
-2.601 2.961 -0.6269 0.7513 -0.8011
-2.567 2.922 -0.6135 0.7513 -0.8301
-2.53 2.88 -0.5923 0.7513 -0.8569
-2.49 2.835 -0.5636 0.7513 -0.8816
-2.447 2.786 -0.5278 0.7513 -0.9041
-2.401 2.734 -0.4854 0.7513 -0.9243
-2.353 2.679 -0.437 0.7513 -0.9422
-2.303 2.621 -0.3832 0.7513 -0.9578
-2.25 2.562 -0.3246 0.7513 -0.971
-2.196 2.5 -0.2621 0.7513 -0.9817
-2.141 2.437 -0.1964 0.7513 -0.99
-2.085 2.373 -0.1282 0.7513 -0.9958
-2.028 2.308 -0.05855 0.7513 -0.9991
-1.97 2.243 0.01185 0.7513 -1
-1.913 2.178 0.08211 0.7513 -0.9983
-1.856 2.113 0.1514 0.7513 -0.9941
-1.8 2.049 0.2188 0.7513 -0.9875
-1.745 1.987 0.2835 0.7513 -0.9784
-1.692 1.926 0.3448 0.7513 -0.9668
-1.64 1.867 0.4018 0.7513 -0.9528
-1.59 1.81 0.4539 0.7513 -0.9365
-1.543 1.756 0.5004 0.7513 -0.9178
-1.498 1.705 0.5406 0.7513 -0.8968
-1.456 1.657 0.5741 0.7513 -0.8735
-1.417 1.613 0.6003 0.7513 -0.8481
-1.381 1.572 0.6189 0.7513 -0.8206
-1.349 1.535 0.6295 0.7513 -0.791
-1.32 1.502 0.632 0.7513 -0.7594
-1.295 1.474 0.6261 0.7513 -0.7259
-1.273 1.449 0.6119 0.7513 -0.6907
-1.256 1.429 0.5893 0.7513 -0.6536
-1.242 1.414 0.5585 0.7513 -0.615
-1.232 1.402 0.5196 0.7513 -0.5748
-1.226 1.395 0.4731 0.7513 -0.5332
-1.223 1.393 0.4192 0.7513 -0.4903
-1.225 1.394 0.3584 0.7513 -0.4461
-1.229 1.399 0.2913 0.7513 -0.4008
-1.237 1.408 0.2184 0.7513 -0.3545
-1.249 1.421 0.1405 0.7513 -0.3073
-1.263 1.438 0.05824 0.7513 -0.2594
-1.28 1.457 -0.0276 0.7513 -0.2108
-1.3 1.48 -0.1162 0.7513 -0.1617
-1.322 1.505 -0.2067 0.7513 -0.1122
-1.346 1.532 -0.2981 0.7513 -0.06235
-1.372 1.562 -0.3897 0.7513 -0.01239
-1.4 1.593 -0.4805 0.7513 0.0376
-1.428 1.626 -0.5696 0.7513 0.0875
-1.458 1.66 -0.656 0.7513 0.1372
-1.489 1.695 -0.739 0.7513 0.1865
-1.52 1.73 -0.8176 0.7513 0.2354
-1.551 1.766 -0.891 0.7513 0.2837
-1.583 1.802 -0.9585 0.7513 0.3312
-1.614 1.837 -1.019 0.7513 0.378
-1.644 1.872 -1.073 0.7513 0.4238
-1.674 1.906 -1.118 0.7513 0.4685
-1.703 1.938 -1.156 0.7513 0.5121
-1.731 1.97 -1.184 0.7513 0.5544
-1.757 2 -1.203 0.7513 0.5953
-1.782 2.029 -1.212 0.7513 0.6347
-1.806 2.056 -1.212 0.7513 0.6725
-1.828 2.081 -1.202 0.7513 0.7087
-1.848 2.104 -1.182 0.7513 0.743
-1.867 2.125 -1.152 0.7513 0.7756
-1.884 2.144 -1.113 0.7513 0.8061
-1.899 2.162 -1.065 0.7513 0.8347
-1.913 2.177 -1.007 0.7513 0.8612
-1.925 2.191 -0.9412 0.7513 0.8855
-1.935 2.203 -0.8673 0.7513 0.9076
-1.944 2.213 -0.786 0.7513 0.9275
-1.952 2.221 -0.698 0.7513 0.945
-1.958 2.229 -0.604 0.7513 0.9602
-1.963 2.235 -0.5049 0.7513 0.9729
-1.968 2.24 -0.4015 0.7513 0.9833
-1.972 2.244 -0.2946 0.7513 0.9911
-1.975 2.248 -0.1851 0.7513 0.9965
-1.978 2.252 -0.0741 0.7513 0.9994
-1.865 2.35 0 0.7833 1
-1.866 2.351 0.1116 0.7833 0.9988
-1.867 2.353 0.2223 0.7833 0.995
-1.869 2.355 0.3311 0.7833 0.9888
-1.871 2.357 0.4371 0.7833 0.9801
-1.874 2.361 0.5393 0.7833 0.9689
-1.878 2.366 0.637 0.7833 0.9553
-1.883 2.372 0.7292 0.7833 0.9394
-1.889 2.38 0.8153 0.7833 0.9211
-1.896 2.39 0.8945 0.7833 0.9004
-1.906 2.401 0.9662 0.7833 0.8776
-1.916 2.415 1.03 0.7833 0.8525
-1.929 2.431 1.085 0.7833 0.8253
-1.943 2.449 1.131 0.7833 0.7961
-1.959 2.469 1.168 0.7833 0.7648
-1.977 2.491 1.195 0.7833 0.7317
-1.996 2.515 1.212 0.7833 0.6967
-2.017 2.542 1.22 0.7833 0.66
-2.04 2.571 1.218 0.7833 0.6216
-2.064 2.601 1.206 0.7833 0.5817
-2.09 2.634 1.185 0.7833 0.5403
-2.117 2.668 1.155 0.7833 0.4976
-2.145 2.703 1.116 0.7833 0.4536
-2.174 2.74 1.068 0.7833 0.4085
-2.204 2.777 1.014 0.7833 0.3624
-2.234 2.815 0.9517 0.7833 0.3153
-2.265 2.854 0.8833 0.7833 0.2675
-2.295 2.893 0.8092 0.7833 0.219
-2.326 2.931 0.7303 0.7833 0.17
-2.356 2.969 0.6472 0.7833 0.1205
-2.385 3.005 0.5609 0.7833 0.07074
-2.413 3.041 0.4723 0.7833 0.02079
-2.44 3.075 0.3822 0.7833 -0.0292
-2.465 3.107 0.2916 0.7833 -0.07912
-2.489 3.137 0.2012 0.7833 -0.1288
-2.51 3.164 0.1121 0.7833 -0.1782
-2.53 3.188 0.02512 0.7833 -0.2272
-2.546 3.209 -0.05897 0.7833 -0.2756
-2.56 3.226 -0.1393 0.7833 -0.3233
-2.571 3.24 -0.2152 0.7833 -0.3702
-2.578 3.249 -0.2859 0.7833 -0.4161
-2.583 3.255 -0.3508 0.7833 -0.4611
-2.584 3.256 -0.4093 0.7833 -0.5048
-2.581 3.252 -0.4609 0.7833 -0.5474
-2.575 3.244 -0.5052 0.7833 -0.5885
-2.565 3.232 -0.5418 0.7833 -0.6282
-2.551 3.215 -0.5704 0.7833 -0.6663
-2.533 3.193 -0.5909 0.7833 -0.7027
-2.512 3.166 -0.6032 0.7833 -0.7374
-2.487 3.135 -0.6072 0.7833 -0.7702
-2.459 3.099 -0.6031 0.7833 -0.8011
-2.427 3.059 -0.5911 0.7833 -0.8301
-2.392 3.015 -0.5713 0.7833 -0.8569
-2.354 2.966 -0.5441 0.7833 -0.8816
-2.313 2.915 -0.5099 0.7833 -0.9041
-2.269 2.86 -0.4693 0.7833 -0.9243
-2.223 2.801 -0.4227 0.7833 -0.9422
-2.175 2.74 -0.3708 0.7833 -0.9578
-2.124 2.677 -0.3143 0.7833 -0.971
-2.073 2.612 -0.2538 0.7833 -0.9817
-2.019 2.545 -0.1902 0.7833 -0.99
-1.965 2.477 -0.1242 0.7833 -0.9958
-1.911 2.408 -0.05673 0.7833 -0.9991
-1.856 2.338 0.01148 0.7833 -1
-1.801 2.269 0.07956 0.7833 -0.9983
-1.746 2.2 0.1466 0.7833 -0.9941
-1.692 2.133 0.2119 0.7833 -0.9875
-1.64 2.066 0.2746 0.7833 -0.9784
-1.588 2.001 0.3338 0.7833 -0.9668
-1.539 1.939 0.3888 0.7833 -0.9528
-1.491 1.879 0.439 0.7833 -0.9365
-1.445 1.821 0.4837 0.7833 -0.9178
-1.403 1.767 0.5222 0.7833 -0.8968
-1.362 1.717 0.554 0.7833 -0.8735
-1.325 1.67 0.5788 0.7833 -0.8481
-1.291 1.627 0.596 0.7833 -0.8206
-1.261 1.589 0.6054 0.7833 -0.791
-1.233 1.554 0.6068 0.7833 -0.7594
-1.21 1.525 0.6 0.7833 -0.7259
-1.19 1.5 0.5849 0.7833 -0.6907
-1.174 1.479 0.5617 0.7833 -0.6536
-1.161 1.463 0.5304 0.7833 -0.615
-1.152 1.452 0.4912 0.7833 -0.5748
-1.147 1.446 0.4444 0.7833 -0.5332
-1.146 1.444 0.3904 0.7833 -0.4903
-1.148 1.447 0.3297 0.7833 -0.4461
-1.153 1.454 0.2628 0.7833 -0.4008
-1.162 1.465 0.1903 0.7833 -0.3545
-1.174 1.479 0.1128 0.7833 -0.3073
-1.189 1.498 0.03106 0.7833 -0.2594
-1.206 1.52 -0.0541 0.7833 -0.2108
-1.226 1.545 -0.1419 0.7833 -0.1617
-1.248 1.573 -0.2315 0.7833 -0.1122
-1.273 1.604 -0.3221 0.7833 -0.06235
-1.298 1.636 -0.4126 0.7833 -0.01239
-1.326 1.671 -0.5023 0.7833 0.0376
-1.354 1.707 -0.5903 0.7833 0.0875
-1.384 1.744 -0.6756 0.7833 0.1372
-1.414 1.782 -0.7573 0.7833 0.1865
-1.445 1.82 -0.8347 0.7833 0.2354
-1.475 1.859 -0.907 0.7833 0.2837
-1.506 1.897 -0.9733 0.7833 0.3312
-1.536 1.935 -1.033 0.7833 0.378
-1.565 1.973 -1.085 0.7833 0.4238
-1.594 2.009 -1.13 0.7833 0.4685
-1.622 2.044 -1.166 0.7833 0.5121
-1.648 2.077 -1.193 0.7833 0.5544
-1.674 2.109 -1.211 0.7833 0.5953
-1.698 2.139 -1.219 0.7833 0.6347
-1.72 2.167 -1.218 0.7833 0.6725
-1.74 2.193 -1.207 0.7833 0.7087
-1.759 2.217 -1.187 0.7833 0.743
-1.776 2.238 -1.156 0.7833 0.7756
-1.792 2.258 -1.116 0.7833 0.8061
-1.805 2.275 -1.067 0.7833 0.8347
-1.817 2.29 -1.009 0.7833 0.8612
-1.827 2.303 -0.943 0.7833 0.8855
-1.836 2.314 -0.8687 0.7833 0.9076
-1.843 2.323 -0.7871 0.7833 0.9275
-1.849 2.33 -0.6989 0.7833 0.945
-1.854 2.336 -0.6047 0.7833 0.9602
-1.857 2.34 -0.5054 0.7833 0.9729
-1.86 2.344 -0.4018 0.7833 0.9833
-1.862 2.346 -0.2948 0.7833 0.9911
-1.863 2.348 -0.1853 0.7833 0.9965
-1.864 2.349 -0.07415 0.7833 0.9994
-1.745 2.44 0 0.8134 1
-1.744 2.439 0.1116 0.8134 0.9988
-1.744 2.439 0.2223 0.8134 0.995
-1.744 2.438 0.3311 0.8134 0.9888
-1.744 2.439 0.4372 0.8134 0.9801
-1.745 2.441 0.5395 0.8134 0.9689
-1.748 2.444 0.6373 0.8134 0.9553
-1.751 2.449 0.7297 0.8134 0.9394
-1.756 2.455 0.816 0.8134 0.9211
-1.762 2.463 0.8955 0.8134 0.9004
-1.769 2.474 0.9676 0.8134 0.8776
-1.778 2.487 1.032 0.8134 0.8525
-1.789 2.502 1.087 0.8134 0.8253
-1.802 2.52 1.134 0.8134 0.7961
-1.816 2.54 1.171 0.8134 0.7648
-1.832 2.562 1.199 0.8134 0.7317
-1.85 2.587 1.217 0.8134 0.6967
-1.87 2.615 1.225 0.8134 0.66
-1.891 2.645 1.224 0.8134 0.6216
-1.914 2.677 1.214 0.8134 0.5817
-1.938 2.711 1.193 0.8134 0.5403
-1.964 2.747 1.164 0.8134 0.4976
-1.991 2.784 1.127 0.8134 0.4536
-2.019 2.823 1.081 0.8134 0.4085
-2.047 2.863 1.027 0.8134 0.3624
-2.077 2.904 0.9662 0.8134 0.3153
-2.106 2.945 0.8991 0.8134 0.2675
-2.136 2.987 0.8263 0.8134 0.219
-2.166 3.028 0.7486 0.8134 0.17
-2.195 3.069 0.6668 0.8134 0.1205
-2.223 3.109 0.5817 0.8134 0.07074
-2.251 3.148 0.4942 0.8134 0.02079
-2.278 3.185 0.4052 0.8134 -0.0292
-2.303 3.22 0.3156 0.8134 -0.07912
-2.326 3.253 0.2263 0.8134 -0.1288
-2.347 3.283 0.1381 0.8134 -0.1782
-2.367 3.309 0.05185 0.8134 -0.2272
-2.383 3.333 -0.03155 0.8134 -0.2756
-2.397 3.352 -0.1113 0.8134 -0.3233
-2.409 3.368 -0.1868 0.8134 -0.3702
-2.417 3.38 -0.2572 0.8134 -0.4161
-2.422 3.387 -0.3219 0.8134 -0.4611
-2.423 3.389 -0.3803 0.8134 -0.5048
-2.422 3.386 -0.432 0.8134 -0.5474
-2.416 3.379 -0.4765 0.8134 -0.5885
-2.408 3.367 -0.5135 0.8134 -0.6282
-2.395 3.349 -0.5426 0.8134 -0.6663
-2.379 3.327 -0.5638 0.8134 -0.7027
-2.359 3.299 -0.577 0.8134 -0.7374
-2.336 3.267 -0.582 0.8134 -0.7702
-2.31 3.23 -0.5791 0.8134 -0.8011
-2.28 3.188 -0.5683 0.8134 -0.8301
-2.247 3.142 -0.5499 0.8134 -0.8569
-2.211 3.091 -0.5243 0.8134 -0.8816
-2.172 3.037 -0.4918 0.8134 -0.9041
-2.13 2.979 -0.4529 0.8134 -0.9243
-2.086 2.917 -0.4082 0.8134 -0.9422
-2.04 2.853 -0.3582 0.8134 -0.9578
-1.992 2.786 -0.3037 0.8134 -0.971
-1.943 2.717 -0.2454 0.8134 -0.9817
-1.892 2.646 -0.1839 0.8134 -0.99
-1.841 2.574 -0.1202 0.8134 -0.9958
-1.789 2.501 -0.05487 0.8134 -0.9991
-1.736 2.428 0.01111 0.8134 -1
-1.684 2.355 0.07695 0.8134 -0.9983
-1.632 2.282 0.1418 0.8134 -0.9941
-1.581 2.21 0.2049 0.8134 -0.9875
-1.53 2.14 0.2654 0.8134 -0.9784
-1.481 2.072 0.3225 0.8134 -0.9668
-1.434 2.005 0.3756 0.8134 -0.9528
-1.389 1.942 0.4238 0.8134 -0.9365
-1.346 1.882 0.4666 0.8134 -0.9178
-1.305 1.825 0.5034 0.8134 -0.8968
-1.267 1.772 0.5337 0.8134 -0.8735
-1.232 1.723 0.5569 0.8134 -0.8481
-1.2 1.678 0.5728 0.8134 -0.8206
-1.171 1.638 0.5809 0.8134 -0.791
-1.146 1.602 0.5812 0.8134 -0.7594
-1.124 1.571 0.5735 0.8134 -0.7259
-1.105 1.546 0.5576 0.8134 -0.6907
-1.09 1.525 0.5337 0.8134 -0.6536
-1.079 1.509 0.5019 0.8134 -0.615
-1.072 1.498 0.4624 0.8134 -0.5748
-1.067 1.493 0.4154 0.8134 -0.5332
-1.067 1.492 0.3614 0.8134 -0.4903
-1.07 1.496 0.3008 0.8134 -0.4461
-1.076 1.504 0.2341 0.8134 -0.4008
-1.085 1.517 0.1619 0.8134 -0.3545
-1.097 1.534 0.08496 0.8134 -0.3073
-1.112 1.555 0.003869 0.8134 -0.2594
-1.13 1.58 -0.08057 0.8134 -0.2108
-1.15 1.608 -0.1675 0.8134 -0.1617
-1.172 1.639 -0.2562 0.8134 -0.1122
-1.196 1.672 -0.3458 0.8134 -0.06235
-1.221 1.708 -0.4353 0.8134 -0.01239
-1.248 1.745 -0.5238 0.8134 0.0376
-1.276 1.785 -0.6106 0.8134 0.0875
-1.305 1.825 -0.6947 0.8134 0.1372
-1.334 1.866 -0.7752 0.8134 0.1865
-1.364 1.907 -0.8514 0.8134 0.2354
-1.394 1.949 -0.9223 0.8134 0.2837
-1.423 1.99 -0.9874 0.8134 0.3312
-1.452 2.031 -1.046 0.8134 0.378
-1.481 2.071 -1.097 0.8134 0.4238
-1.508 2.109 -1.14 0.8134 0.4685
-1.535 2.146 -1.175 0.8134 0.5121
-1.56 2.181 -1.201 0.8134 0.5544
-1.584 2.215 -1.218 0.8134 0.5953
-1.606 2.246 -1.226 0.8134 0.6347
-1.627 2.275 -1.224 0.8134 0.6725
-1.646 2.302 -1.212 0.8134 0.7087
-1.663 2.326 -1.191 0.8134 0.743
-1.679 2.348 -1.159 0.8134 0.7756
-1.693 2.367 -1.119 0.8134 0.8061
-1.705 2.384 -1.069 0.8134 0.8347
-1.715 2.398 -1.011 0.8134 0.8612
-1.724 2.41 -0.9442 0.8134 0.8855
-1.731 2.42 -0.8696 0.8134 0.9076
-1.736 2.428 -0.7877 0.8134 0.9275
-1.74 2.434 -0.6993 0.8134 0.945
-1.743 2.438 -0.605 0.8134 0.9602
-1.745 2.44 -0.5055 0.8134 0.9729
-1.746 2.442 -0.4019 0.8134 0.9833
-1.746 2.442 -0.2948 0.8134 0.9911
-1.746 2.442 -0.1853 0.8134 0.9965
-1.746 2.441 -0.07415 0.8134 0.9994
-1.621 2.524 0 0.8415 1
-1.619 2.521 0.1116 0.8415 0.9988
-1.617 2.518 0.2222 0.8415 0.995
-1.615 2.516 0.331 0.8415 0.9888
-1.614 2.514 0.437 0.8415 0.9801
-1.614 2.514 0.5393 0.8415 0.9689
-1.615 2.515 0.6372 0.8415 0.9553
-1.617 2.518 0.7297 0.8415 0.9394
-1.62 2.523 0.8162 0.8415 0.9211
-1.624 2.53 0.896 0.8415 0.9004
-1.63 2.539 0.9683 0.8415 0.8776
-1.638 2.551 1.033 0.8415 0.8525
-1.647 2.565 1.089 0.8415 0.8253
-1.658 2.583 1.136 0.8415 0.7961
-1.671 2.603 1.174 0.8415 0.7648
-1.686 2.625 1.202 0.8415 0.7317
-1.702 2.651 1.221 0.8415 0.6967
-1.72 2.679 1.23 0.8415 0.66
-1.74 2.71 1.23 0.8415 0.6216
-1.761 2.743 1.22 0.8415 0.5817
-1.784 2.779 1.201 0.8415 0.5403
-1.809 2.817 1.173 0.8415 0.4976
-1.834 2.856 1.137 0.8415 0.4536
-1.861 2.898 1.092 0.8415 0.4085
-1.888 2.94 1.04 0.8415 0.3624
-1.916 2.984 0.9802 0.8415 0.3153
-1.944 3.028 0.9143 0.8415 0.2675
-1.973 3.073 0.8428 0.8415 0.219
-2.001 3.117 0.7664 0.8415 0.17
-2.03 3.161 0.6859 0.8415 0.1205
-2.057 3.204 0.6021 0.8415 0.07074
-2.084 3.246 0.5158 0.8415 0.02079
-2.11 3.286 0.428 0.8415 -0.0292
-2.134 3.324 0.3395 0.8415 -0.07912
-2.157 3.36 0.2512 0.8415 -0.1288
-2.178 3.393 0.1639 0.8415 -0.1782
-2.197 3.422 0.07854 0.8415 -0.2272
-2.214 3.448 -0.004115 0.8415 -0.2756
-2.228 3.47 -0.08328 0.8415 -0.3233
-2.24 3.488 -0.1582 0.8415 -0.3702
-2.248 3.501 -0.2282 0.8415 -0.4161
-2.254 3.51 -0.2927 0.8415 -0.4611
-2.256 3.513 -0.351 0.8415 -0.5048
-2.255 3.512 -0.4028 0.8415 -0.5474
-2.251 3.505 -0.4475 0.8415 -0.5885
-2.243 3.493 -0.4848 0.8415 -0.6282
-2.232 3.476 -0.5145 0.8415 -0.6663
-2.217 3.453 -0.5364 0.8415 -0.7027
-2.199 3.425 -0.5504 0.8415 -0.7374
-2.178 3.392 -0.5564 0.8415 -0.7702
-2.153 3.353 -0.5546 0.8415 -0.8011
-2.125 3.31 -0.5451 0.8415 -0.8301
-2.094 3.261 -0.5282 0.8415 -0.8569
-2.06 3.209 -0.5041 0.8415 -0.8816
-2.024 3.152 -0.4733 0.8415 -0.9041
-1.985 3.091 -0.4362 0.8415 -0.9243
-1.943 3.026 -0.3934 0.8415 -0.9422
-1.9 2.959 -0.3454 0.8415 -0.9578
-1.855 2.889 -0.293 0.8415 -0.971
-1.808 2.816 -0.2368 0.8415 -0.9817
-1.76 2.741 -0.1776 0.8415 -0.99
-1.711 2.665 -0.116 0.8415 -0.9958
-1.662 2.589 -0.05298 0.8415 -0.9991
-1.613 2.511 0.01072 0.8415 -1
-1.563 2.434 0.0743 0.8415 -0.9983
-1.514 2.358 0.1369 0.8415 -0.9941
-1.465 2.282 0.1978 0.8415 -0.9875
-1.418 2.208 0.2561 0.8415 -0.9784
-1.372 2.136 0.3111 0.8415 -0.9668
-1.327 2.067 0.3621 0.8415 -0.9528
-1.284 2 0.4084 0.8415 -0.9365
-1.244 1.937 0.4493 0.8415 -0.9178
-1.205 1.877 0.4844 0.8415 -0.8968
-1.17 1.822 0.513 0.8415 -0.8735
-1.137 1.771 0.5347 0.8415 -0.8481
-1.107 1.724 0.5492 0.8415 -0.8206
-1.08 1.682 0.5561 0.8415 -0.791
-1.056 1.645 0.5553 0.8415 -0.7594
-1.036 1.614 0.5466 0.8415 -0.7259
-1.019 1.587 0.5299 0.8415 -0.6907
-1.006 1.566 0.5054 0.8415 -0.6536
-0.9958 1.551 0.4731 0.8415 -0.615
-0.9892 1.541 0.4333 0.8415 -0.5748
-0.9861 1.536 0.3861 0.8415 -0.5332
-0.9863 1.536 0.3321 0.8415 -0.4903
-0.9897 1.541 0.2717 0.8415 -0.4461
-0.9963 1.552 0.2053 0.8415 -0.4008
-1.006 1.566 0.1335 0.8415 -0.3545
-1.018 1.586 0.05709 0.8415 -0.3073
-1.033 1.609 -0.02333 0.8415 -0.2594
-1.051 1.636 -0.107 0.8415 -0.2108
-1.07 1.667 -0.1931 0.8415 -0.1617
-1.092 1.701 -0.2808 0.8415 -0.1122
-1.115 1.737 -0.3693 0.8415 -0.06235
-1.14 1.776 -0.4576 0.8415 -0.01239
-1.167 1.817 -0.545 0.8415 0.0376
-1.194 1.859 -0.6306 0.8415 0.0875
-1.222 1.903 -0.7134 0.8415 0.1372
-1.25 1.947 -0.7926 0.8415 0.1865
-1.279 1.991 -0.8675 0.8415 0.2354
-1.307 2.036 -0.9372 0.8415 0.2837
-1.335 2.08 -1.001 0.8415 0.3312
-1.363 2.123 -1.058 0.8415 0.378
-1.39 2.165 -1.108 0.8415 0.4238
-1.416 2.206 -1.15 0.8415 0.4685
-1.442 2.245 -1.184 0.8415 0.5121
-1.465 2.282 -1.209 0.8415 0.5544
-1.488 2.317 -1.225 0.8415 0.5953
-1.509 2.349 -1.231 0.8415 0.6347
-1.528 2.379 -1.228 0.8415 0.6725
-1.545 2.407 -1.216 0.8415 0.7087
-1.561 2.431 -1.194 0.8415 0.743
-1.575 2.453 -1.162 0.8415 0.7756
-1.587 2.472 -1.121 0.8415 0.8061
-1.598 2.489 -1.071 0.8415 0.8347
-1.607 2.502 -1.012 0.8415 0.8612
-1.614 2.513 -0.9448 0.8415 0.8855
-1.619 2.522 -0.8699 0.8415 0.9076
-1.623 2.528 -0.7879 0.8415 0.9275
-1.626 2.532 -0.6993 0.8415 0.945
-1.627 2.535 -0.6048 0.8415 0.9602
-1.628 2.535 -0.5054 0.8415 0.9729
-1.627 2.534 -0.4017 0.8415 0.9833
-1.626 2.533 -0.2947 0.8415 0.9911
-1.624 2.53 -0.1852 0.8415 0.9965
-1.622 2.527 -0.07411 0.8415 0.9994
-1.493 2.602 0 0.8674 1
-1.489 2.596 0.1114 0.8674 0.9988
-1.486 2.591 0.222 0.8674 0.995
-1.483 2.586 0.3306 0.8674 0.9888
-1.481 2.582 0.4365 0.8674 0.9801
-1.48 2.58 0.5389 0.8674 0.9689
-1.479 2.579 0.6367 0.8674 0.9553
-1.48 2.58 0.7293 0.8674 0.9394
-1.481 2.583 0.8159 0.8674 0.9211
-1.485 2.588 0.8958 0.8674 0.9004
-1.489 2.596 0.9684 0.8674 0.8776
-1.496 2.607 1.033 0.8674 0.8525
-1.503 2.621 1.09 0.8674 0.8253
-1.513 2.638 1.137 0.8674 0.7961
-1.524 2.657 1.176 0.8674 0.7648
-1.537 2.68 1.205 0.8674 0.7317
-1.552 2.706 1.225 0.8674 0.6967
-1.569 2.735 1.235 0.8674 0.66
-1.587 2.767 1.235 0.8674 0.6216
-1.607 2.801 1.227 0.8674 0.5817
-1.628 2.839 1.209 0.8674 0.5403
-1.651 2.878 1.182 0.8674 0.4976
-1.675 2.92 1.146 0.8674 0.4536
-1.7 2.963 1.103 0.8674 0.4085
-1.726 3.008 1.052 0.8674 0.3624
-1.752 3.054 0.9935 0.8674 0.3153
-1.779 3.101 0.929 0.8674 0.2675
-1.806 3.149 0.8589 0.8674 0.219
-1.833 3.196 0.7838 0.8674 0.17
-1.86 3.243 0.7046 0.8674 0.1205
-1.887 3.29 0.6221 0.8674 0.07074
-1.913 3.335 0.5371 0.8674 0.02079
-1.938 3.378 0.4505 0.8674 -0.0292
-1.961 3.419 0.3631 0.8674 -0.07912
-1.983 3.458 0.2759 0.8674 -0.1288
-2.004 3.493 0.1896 0.8674 -0.1782
-2.022 3.526 0.1052 0.8674 -0.2272
-2.039 3.554 0.02332 0.8674 -0.2756
-2.053 3.579 -0.05516 0.8674 -0.3233
-2.064 3.599 -0.1295 0.8674 -0.3702
-2.073 3.614 -0.1991 0.8674 -0.4161
-2.079 3.624 -0.2633 0.8674 -0.4611
-2.082 3.629 -0.3215 0.8674 -0.5048
-2.082 3.629 -0.3733 0.8674 -0.5474
-2.078 3.623 -0.4182 0.8674 -0.5885
-2.072 3.611 -0.4559 0.8674 -0.6282
-2.062 3.594 -0.4861 0.8674 -0.6663
-2.048 3.571 -0.5087 0.8674 -0.7027
-2.032 3.542 -0.5235 0.8674 -0.7374
-2.012 3.508 -0.5305 0.8674 -0.7702
-1.99 3.468 -0.5298 0.8674 -0.8011
-1.964 3.423 -0.5216 0.8674 -0.8301
-1.935 3.373 -0.5061 0.8674 -0.8569
-1.904 3.318 -0.4836 0.8674 -0.8816
-1.869 3.259 -0.4545 0.8674 -0.9041
-1.833 3.195 -0.4192 0.8674 -0.9243
-1.794 3.128 -0.3783 0.8674 -0.9422
-1.754 3.057 -0.3324 0.8674 -0.9578
-1.712 2.984 -0.2821 0.8674 -0.971
-1.668 2.908 -0.2281 0.8674 -0.9817
-1.623 2.83 -0.1711 0.8674 -0.99
-1.578 2.75 -0.1118 0.8674 -0.9958
-1.531 2.67 -0.05106 0.8674 -0.9991
-1.485 2.589 0.01034 0.8674 -1
-1.439 2.508 0.07159 0.8674 -0.9983
-1.392 2.428 0.1319 0.8674 -0.9941
-1.347 2.348 0.1905 0.8674 -0.9875
-1.303 2.271 0.2466 0.8674 -0.9784
-1.259 2.196 0.2995 0.8674 -0.9668
-1.218 2.123 0.3484 0.8674 -0.9528
-1.178 2.053 0.3927 0.8674 -0.9365
-1.14 1.987 0.4317 0.8674 -0.9178
-1.104 1.925 0.465 0.8674 -0.8968
-1.071 1.867 0.4919 0.8674 -0.8735
-1.04 1.814 0.5121 0.8674 -0.8481
-1.013 1.765 0.5252 0.8674 -0.8206
-0.9879 1.722 0.5309 0.8674 -0.791
-0.9661 1.684 0.529 0.8674 -0.7594
-0.9476 1.652 0.5193 0.8674 -0.7259
-0.9322 1.625 0.5019 0.8674 -0.6907
-0.9201 1.604 0.4768 0.8674 -0.6536
-0.9113 1.589 0.444 0.8674 -0.615
-0.9058 1.579 0.4039 0.8674 -0.5748
-0.9035 1.575 0.3567 0.8674 -0.5332
-0.9043 1.577 0.3027 0.8674 -0.4903
-0.9082 1.583 0.2424 0.8674 -0.4461
-0.9151 1.595 0.1763 0.8674 -0.4008
-0.9248 1.612 0.105 0.8674 -0.3545
-0.9371 1.634 0.02919 0.8674 -0.3073
-0.9519 1.66 -0.05051 0.8674 -0.2594
-0.969 1.689 -0.1333 0.8674 -0.2108
-0.9882 1.723 -0.2185 0.8674 -0.1617
-1.009 1.759 -0.3052 0.8674 -0.1122
-1.032 1.799 -0.3925 0.8674 -0.06235
-1.056 1.841 -0.4797 0.8674 -0.01239
-1.081 1.885 -0.5659 0.8674 0.0376
-1.107 1.93 -0.6501 0.8674 0.0875
-1.134 1.977 -0.7316 0.8674 0.1372
-1.161 2.024 -0.8095 0.8674 0.1865
-1.188 2.072 -0.883 0.8674 0.2354
-1.216 2.119 -0.9514 0.8674 0.2837
-1.242 2.166 -1.014 0.8674 0.3312
-1.269 2.212 -1.07 0.8674 0.378
-1.294 2.256 -1.118 0.8674 0.4238
-1.319 2.299 -1.159 0.8674 0.4685
-1.342 2.34 -1.192 0.8674 0.5121
-1.365 2.379 -1.216 0.8674 0.5544
-1.385 2.415 -1.231 0.8674 0.5953
-1.405 2.449 -1.236 0.8674 0.6347
-1.422 2.48 -1.232 0.8674 0.6725
-1.438 2.507 -1.219 0.8674 0.7087
-1.453 2.532 -1.196 0.8674 0.743
-1.465 2.554 -1.164 0.8674 0.7756
-1.476 2.573 -1.122 0.8674 0.8061
-1.485 2.589 -1.072 0.8674 0.8347
-1.492 2.601 -1.012 0.8674 0.8612
-1.498 2.611 -0.9449 0.8674 0.8855
-1.502 2.618 -0.8698 0.8674 0.9076
-1.505 2.623 -0.7875 0.8674 0.9275
-1.506 2.626 -0.6988 0.8674 0.945
-1.506 2.626 -0.6044 0.8674 0.9602
-1.505 2.624 -0.5049 0.8674 0.9729
-1.504 2.621 -0.4013 0.8674 0.9833
-1.501 2.617 -0.2943 0.8674 0.9911
-1.498 2.612 -0.1849 0.8674 0.9965
-1.495 2.606 -0.07402 0.8674 0.9994
-1.361 2.674 0 0.8912 1
-1.356 2.665 0.1112 0.8912 0.9988
-1.352 2.657 0.2216 0.8912 0.995
-1.349 2.65 0.33 0.8912 0.9888
-1.345 2.643 0.4358 0.8912 0.9801
-1.343 2.638 0.538 0.8912 0.9689
-1.341 2.635 0.6358 0.8912 0.9553
-1.341 2.634 0.7284 0.8912 0.9394
-1.341 2.635 0.8151 0.8912 0.9211
-1.343 2.639 0.8952 0.8912 0.9004
-1.347 2.646 0.968 0.8912 0.8776
-1.352 2.656 1.033 0.8912 0.8525
-1.358 2.668 1.09 0.8912 0.8253
-1.366 2.685 1.138 0.8912 0.7961
-1.376 2.704 1.177 0.8912 0.7648
-1.388 2.727 1.207 0.8912 0.7317
-1.401 2.753 1.227 0.8912 0.6967
-1.416 2.782 1.238 0.8912 0.66
-1.433 2.815 1.24 0.8912 0.6216
-1.451 2.851 1.232 0.8912 0.5817
-1.471 2.889 1.215 0.8912 0.5403
-1.492 2.931 1.189 0.8912 0.4976
-1.514 2.974 1.155 0.8912 0.4536
-1.537 3.02 1.113 0.8912 0.4085
-1.561 3.067 1.063 0.8912 0.3624
-1.586 3.116 1.006 0.8912 0.3153
-1.611 3.166 0.9431 0.8912 0.2675
-1.637 3.216 0.8743 0.8912 0.219
-1.662 3.266 0.8007 0.8912 0.17
-1.688 3.316 0.7228 0.8912 0.1205
-1.713 3.366 0.6417 0.8912 0.07074
-1.738 3.414 0.558 0.8912 0.02079
-1.761 3.46 0.4727 0.8912 -0.0292
-1.784 3.504 0.3866 0.8912 -0.07912
-1.805 3.546 0.3005 0.8912 -0.1288
-1.824 3.585 0.2153 0.8912 -0.1782
-1.842 3.62 0.1318 0.8912 -0.2272
-1.858 3.651 0.05075 0.8912 -0.2756
-1.872 3.678 -0.027 0.8912 -0.3233
-1.883 3.7 -0.1008 0.8912 -0.3702
-1.892 3.717 -0.1699 0.8912 -0.4161
-1.898 3.729 -0.2338 0.8912 -0.4611
-1.901 3.735 -0.2919 0.8912 -0.5048
-1.902 3.736 -0.3436 0.8912 -0.5474
-1.899 3.731 -0.3887 0.8912 -0.5885
-1.893 3.72 -0.4267 0.8912 -0.6282
-1.885 3.703 -0.4574 0.8912 -0.6663
-1.873 3.68 -0.4806 0.8912 -0.7027
-1.858 3.651 -0.4962 0.8912 -0.7374
-1.84 3.616 -0.5042 0.8912 -0.7702
-1.82 3.575 -0.5047 0.8912 -0.8011
-1.796 3.529 -0.4978 0.8912 -0.8301
-1.77 3.477 -0.4837 0.8912 -0.8569
-1.741 3.42 -0.4628 0.8912 -0.8816
-1.709 3.358 -0.4354 0.8912 -0.9041
-1.676 3.292 -0.402 0.8912 -0.9243
-1.64 3.222 -0.3631 0.8912 -0.9422
-1.603 3.149 -0.3192 0.8912 -0.9578
-1.563 3.072 -0.271 0.8912 -0.971
-1.523 2.992 -0.2192 0.8912 -0.9817
-1.482 2.911 -0.1644 0.8912 -0.99
-1.439 2.828 -0.1075 0.8912 -0.9958
-1.397 2.744 -0.0491 0.8912 -0.9991
-1.354 2.659 0.00994 0.8912 -1
-1.311 2.575 0.06885 0.8912 -0.9983
-1.268 2.491 0.1268 0.8912 -0.9941
-1.226 2.409 0.1831 0.8912 -0.9875
-1.185 2.328 0.237 0.8912 -0.9784
-1.145 2.249 0.2877 0.8912 -0.9668
-1.106 2.174 0.3345 0.8912 -0.9528
-1.069 2.101 0.3767 0.8912 -0.9365
-1.034 2.032 0.4139 0.8912 -0.9178
-1.001 1.968 0.4453 0.8912 -0.8968
-0.9709 1.908 0.4706 0.8912 -0.8735
-0.9428 1.852 0.4892 0.8912 -0.8481
-0.9174 1.802 0.5009 0.8912 -0.8206
-0.8947 1.758 0.5054 0.8912 -0.791
-0.8749 1.719 0.5024 0.8912 -0.7594
-0.8581 1.686 0.4918 0.8912 -0.7259
-0.8443 1.659 0.4736 0.8912 -0.6907
-0.8336 1.638 0.4479 0.8912 -0.6536
-0.8259 1.623 0.4147 0.8912 -0.615
-0.8213 1.614 0.3743 0.8912 -0.5748
-0.8198 1.611 0.3269 0.8912 -0.5332
-0.8211 1.613 0.273 0.8912 -0.4903
-0.8254 1.622 0.2129 0.8912 -0.4461
-0.8324 1.635 0.1472 0.8912 -0.4008
-0.842 1.654 0.07646 0.8912 -0.3545
-0.8541 1.678 0.001266 0.8912 -0.3073
-0.8685 1.706 -0.07766 0.8912 -0.2594
-0.8851 1.739 -0.1596 0.8912 -0.2108
-0.9035 1.775 -0.2438 0.8912 -0.1617
-0.9237 1.815 -0.3294 0.8912 -0.1122
-0.9453 1.857 -0.4156 0.8912 -0.06235
-0.9682 1.902 -0.5015 0.8912 -0.01239
-0.9922 1.949 -0.5864 0.8912 0.0376
-1.017 1.998 -0.6693 0.8912 0.0875
-1.042 2.048 -0.7494 0.8912 0.1372
-1.068 2.098 -0.8259 0.8912 0.1865
-1.093 2.148 -0.8981 0.8912 0.2354
-1.119 2.198 -0.965 0.8912 0.2837
-1.144 2.248 -1.026 0.8912 0.3312
-1.169 2.296 -1.081 0.8912 0.378
-1.193 2.343 -1.128 0.8912 0.4238
-1.215 2.388 -1.168 0.8912 0.4685
-1.237 2.431 -1.199 0.8912 0.5121
-1.258 2.471 -1.222 0.8912 0.5544
-1.277 2.509 -1.236 0.8912 0.5953
-1.295 2.543 -1.24 0.8912 0.6347
-1.311 2.575 -1.235 0.8912 0.6725
-1.325 2.603 -1.221 0.8912 0.7087
-1.338 2.628 -1.198 0.8912 0.743
-1.349 2.65 -1.165 0.8912 0.7756
-1.358 2.668 -1.123 0.8912 0.8061
-1.366 2.683 -1.072 0.8912 0.8347
-1.372 2.695 -1.012 0.8912 0.8612
-1.376 2.704 -0.9443 0.8912 0.8855
-1.379 2.71 -0.869 0.8912 0.9076
-1.381 2.713 -0.7867 0.8912 0.9275
-1.381 2.713 -0.6979 0.8912 0.945
-1.38 2.711 -0.6035 0.8912 0.9602
-1.378 2.708 -0.5041 0.8912 0.9729
-1.375 2.702 -0.4006 0.8912 0.9833
-1.372 2.695 -0.2938 0.8912 0.9911
-1.368 2.688 -0.1846 0.8912 0.9965
-1.364 2.679 -0.07388 0.8912 0.9994
-1.225 2.738 0 0.9128 1
-1.22 2.727 0.111 0.9128 0.9988
-1.216 2.716 0.221 0.9128 0.995
-1.211 2.706 0.3293 0.9128 0.9888
-1.207 2.697 0.4348 0.9128 0.9801
-1.204 2.69 0.5369 0.9128 0.9689
-1.201 2.684 0.6346 0.9128 0.9553
-1.2 2.681 0.7271 0.9128 0.9394
-1.2 2.68 0.8138 0.9128 0.9211
-1.201 2.683 0.8939 0.9128 0.9004
-1.203 2.688 0.9669 0.9128 0.8776
-1.207 2.696 1.032 0.9128 0.8525
-1.212 2.708 1.089 0.9128 0.8253
-1.219 2.724 1.138 0.9128 0.7961
-1.227 2.743 1.177 0.9128 0.7648
-1.238 2.765 1.208 0.9128 0.7317
-1.249 2.792 1.229 0.9128 0.6967
-1.263 2.822 1.241 0.9128 0.66
-1.278 2.855 1.243 0.9128 0.6216
-1.294 2.892 1.236 0.9128 0.5817
-1.312 2.931 1.221 0.9128 0.5403
-1.331 2.974 1.196 0.9128 0.4976
-1.351 3.02 1.163 0.9128 0.4536
-1.373 3.067 1.122 0.9128 0.4085
-1.395 3.117 1.074 0.9128 0.3624
-1.418 3.168 1.018 0.9128 0.3153
-1.441 3.22 0.9566 0.9128 0.2675
-1.465 3.274 0.8893 0.9128 0.219
-1.489 3.327 0.817 0.9128 0.17
-1.513 3.38 0.7406 0.9128 0.1205
-1.536 3.432 0.6609 0.9128 0.07074
-1.559 3.483 0.5786 0.9128 0.02079
-1.581 3.533 0.4946 0.9128 -0.0292
-1.602 3.58 0.4098 0.9128 -0.07912
-1.622 3.625 0.3249 0.9128 -0.1288
-1.641 3.666 0.2408 0.9128 -0.1782
-1.658 3.704 0.1583 0.9128 -0.2272
-1.673 3.738 0.07814 0.9128 -0.2756
-1.686 3.767 0.001164 0.9128 -0.3233
-1.697 3.791 -0.07197 0.9128 -0.3702
-1.705 3.81 -0.1406 0.9128 -0.4161
-1.711 3.824 -0.2041 0.9128 -0.4611
-1.715 3.832 -0.262 0.9128 -0.5048
-1.716 3.834 -0.3137 0.9128 -0.5474
-1.714 3.83 -0.3589 0.9128 -0.5885
-1.709 3.82 -0.3972 0.9128 -0.6282
-1.702 3.803 -0.4284 0.9128 -0.6663
-1.691 3.78 -0.4522 0.9128 -0.7027
-1.678 3.75 -0.4686 0.9128 -0.7374
-1.662 3.714 -0.4776 0.9128 -0.7702
-1.644 3.673 -0.4793 0.9128 -0.8011
-1.622 3.625 -0.4736 0.9128 -0.8301
-1.598 3.572 -0.461 0.9128 -0.8569
-1.572 3.513 -0.4417 0.9128 -0.8816
-1.544 3.449 -0.4161 0.9128 -0.9041
-1.513 3.381 -0.3845 0.9128 -0.9243
-1.481 3.308 -0.3476 0.9128 -0.9422
-1.446 3.232 -0.3058 0.9128 -0.9578
-1.411 3.152 -0.2598 0.9128 -0.971
-1.374 3.07 -0.2102 0.9128 -0.9817
-1.336 2.985 -0.1577 0.9128 -0.99
-1.297 2.899 -0.1031 0.9128 -0.9958
-1.258 2.811 -0.04711 0.9128 -0.9991
-1.219 2.724 0.009538 0.9128 -1
-1.18 2.636 0.06606 0.9128 -0.9983
-1.141 2.549 0.1217 0.9128 -0.9941
-1.102 2.463 0.1757 0.9128 -0.9875
-1.065 2.379 0.2272 0.9128 -0.9784
-1.028 2.297 0.2757 0.9128 -0.9668
-0.9929 2.219 0.3203 0.9128 -0.9528
-0.9593 2.143 0.3606 0.9128 -0.9365
-0.9274 2.072 0.3958 0.9128 -0.9178
-0.8975 2.005 0.4254 0.9128 -0.8968
-0.8697 1.943 0.4489 0.9128 -0.8735
-0.8442 1.886 0.466 0.9128 -0.8481
-0.8212 1.835 0.4763 0.9128 -0.8206
-0.8007 1.789 0.4795 0.9128 -0.791
-0.7829 1.749 0.4754 0.9128 -0.7594
-0.7679 1.716 0.4639 0.9128 -0.7259
-0.7556 1.688 0.445 0.9128 -0.6907
-0.7462 1.667 0.4187 0.9128 -0.6536
-0.7397 1.653 0.3851 0.9128 -0.615
-0.736 1.645 0.3444 0.9128 -0.5748
-0.735 1.642 0.297 0.9128 -0.5332
-0.7368 1.646 0.2432 0.9128 -0.4903
-0.7413 1.656 0.1834 0.9128 -0.4461
-0.7483 1.672 0.1181 0.9128 -0.4008
-0.7576 1.693 0.04784 0.9128 -0.3545
-0.7693 1.719 -0.02666 0.9128 -0.3073
-0.7831 1.75 -0.1048 0.9128 -0.2594
-0.7988 1.785 -0.1858 0.9128 -0.2108
-0.8163 1.824 -0.2689 0.9128 -0.1617
-0.8353 1.866 -0.3534 0.9128 -0.1122
-0.8557 1.912 -0.4383 0.9128 -0.06235
-0.8772 1.96 -0.523 0.9128 -0.01239
-0.8996 2.01 -0.6065 0.9128 0.0376
-0.9227 2.062 -0.688 0.9128 0.0875
-0.9463 2.114 -0.7668 0.9128 0.1372
-0.9701 2.168 -0.8418 0.9128 0.1865
-0.9939 2.221 -0.9125 0.9128 0.2354
-1.018 2.274 -0.978 0.9128 0.2837
-1.041 2.326 -1.038 0.9128 0.3312
-1.064 2.377 -1.091 0.9128 0.378
-1.086 2.426 -1.137 0.9128 0.4238
-1.107 2.473 -1.175 0.9128 0.4685
-1.126 2.517 -1.205 0.9128 0.5121
-1.145 2.559 -1.227 0.9128 0.5544
-1.163 2.598 -1.24 0.9128 0.5953
-1.178 2.633 -1.243 0.9128 0.6347
-1.193 2.666 -1.238 0.9128 0.6725
-1.206 2.694 -1.223 0.9128 0.7087
-1.217 2.719 -1.199 0.9128 0.743
-1.227 2.741 -1.165 0.9128 0.7756
-1.235 2.759 -1.122 0.9128 0.8061
-1.241 2.773 -1.071 0.9128 0.8347
-1.246 2.784 -1.011 0.9128 0.8612
-1.249 2.791 -0.9432 0.9128 0.8855
-1.251 2.795 -0.8677 0.9128 0.9076
-1.251 2.796 -0.7853 0.9128 0.9275
-1.251 2.795 -0.6966 0.9128 0.945
-1.249 2.791 -0.6022 0.9128 0.9602
-1.246 2.784 -0.503 0.9128 0.9729
-1.243 2.777 -0.3997 0.9128 0.9833
-1.238 2.767 -0.2931 0.9128 0.9911
-1.234 2.757 -0.1842 0.9128 0.9965
-1.229 2.746 -0.0737 0.9128 0.9994
-1.087 2.796 0 0.932 1
-1.082 2.782 0.1106 0.932 0.9988
-1.076 2.768 0.2203 0.932 0.995
-1.071 2.756 0.3283 0.932 0.9888
-1.067 2.744 0.4336 0.932 0.9801
-1.063 2.734 0.5354 0.932 0.9689
-1.06 2.726 0.6329 0.932 0.9553
-1.058 2.721 0.7253 0.932 0.9394
-1.057 2.718 0.8119 0.932 0.9211
-1.057 2.718 0.8921 0.932 0.9004
-1.058 2.722 0.9652 0.932 0.8776
-1.061 2.729 1.031 0.932 0.8525
-1.065 2.74 1.088 0.932 0.8253
-1.071 2.755 1.137 0.932 0.7961
-1.078 2.773 1.177 0.932 0.7648
-1.087 2.796 1.208 0.932 0.7317
-1.097 2.822 1.23 0.932 0.6967
-1.109 2.852 1.243 0.932 0.66
-1.122 2.886 1.246 0.932 0.6216
-1.137 2.924 1.24 0.932 0.5817
-1.153 2.965 1.226 0.932 0.5403
-1.17 3.009 1.202 0.932 0.4976
-1.188 3.056 1.17 0.932 0.4536
-1.207 3.106 1.131 0.932 0.4085
-1.228 3.158 1.084 0.932 0.3624
-1.248 3.211 1.03 0.932 0.3153
-1.27 3.266 0.9695 0.932 0.2675
-1.291 3.322 0.9037 0.932 0.219
-1.313 3.378 0.8329 0.932 0.17
-1.335 3.434 0.758 0.932 0.1205
-1.357 3.489 0.6797 0.932 0.07074
-1.378 3.543 0.5988 0.932 0.02079
-1.398 3.596 0.5162 0.932 -0.0292
-1.417 3.646 0.4327 0.932 -0.07912
-1.436 3.693 0.349 0.932 -0.1288
-1.453 3.738 0.2661 0.932 -0.1782
-1.469 3.778 0.1846 0.932 -0.2272
-1.483 3.814 0.1055 0.932 -0.2756
-1.495 3.846 0.02933 0.932 -0.3233
-1.506 3.873 -0.04311 0.932 -0.3702
-1.514 3.894 -0.1112 0.932 -0.4161
-1.52 3.909 -0.1743 0.932 -0.4611
-1.524 3.919 -0.2319 0.932 -0.5048
-1.525 3.922 -0.2836 0.932 -0.5474
-1.524 3.919 -0.3289 0.932 -0.5885
-1.52 3.909 -0.3675 0.932 -0.6282
-1.513 3.893 -0.3991 0.932 -0.6663
-1.504 3.87 -0.4235 0.932 -0.7027
-1.493 3.84 -0.4408 0.932 -0.7374
-1.479 3.804 -0.4507 0.932 -0.7702
-1.462 3.761 -0.4535 0.932 -0.8011
-1.443 3.712 -0.4492 0.932 -0.8301
-1.422 3.658 -0.4381 0.932 -0.8569
-1.399 3.597 -0.4204 0.932 -0.8816
-1.373 3.532 -0.3965 0.932 -0.9041
-1.346 3.461 -0.3668 0.932 -0.9243
-1.316 3.386 -0.3319 0.932 -0.9422
-1.286 3.307 -0.2922 0.932 -0.9578
-1.254 3.225 -0.2484 0.932 -0.971
-1.221 3.139 -0.2011 0.932 -0.9817
-1.186 3.052 -0.1509 0.932 -0.99
-1.152 2.962 -0.0987 0.932 -0.9958
-1.117 2.872 -0.0451 0.932 -0.9991
-1.081 2.781 0.00913 0.932 -1
-1.046 2.69 0.06323 0.932 -0.9983
-1.011 2.6 0.1165 0.932 -0.9941
-0.9762 2.511 0.1681 0.932 -0.9875
-0.9424 2.424 0.2173 0.932 -0.9784
-0.9096 2.34 0.2635 0.932 -0.9668
-0.8779 2.258 0.306 0.932 -0.9528
-0.8477 2.181 0.3442 0.932 -0.9365
-0.8192 2.107 0.3774 0.932 -0.9178
-0.7923 2.038 0.4052 0.932 -0.8968
-0.7675 1.974 0.427 0.932 -0.8735
-0.7447 1.916 0.4426 0.932 -0.8481
-0.7242 1.863 0.4514 0.932 -0.8206
-0.706 1.816 0.4534 0.932 -0.791
-0.6903 1.776 0.4482 0.932 -0.7594
-0.6771 1.742 0.4358 0.932 -0.7259
-0.6664 1.714 0.4161 0.932 -0.6907
-0.6583 1.693 0.3892 0.932 -0.6536
-0.6528 1.679 0.3552 0.932 -0.615
-0.6499 1.672 0.3144 0.932 -0.5748
-0.6495 1.671 0.2669 0.932 -0.5332
-0.6516 1.676 0.2132 0.932 -0.4903
-0.656 1.687 0.1537 0.932 -0.4461
-0.6628 1.705 0.08882 0.932 -0.4008
-0.6718 1.728 0.0192 0.932 -0.3545
-0.6828 1.756 -0.05456 0.932 -0.3073
-0.6957 1.79 -0.1318 0.932 -0.2594
-0.7104 1.827 -0.2118 0.932 -0.2108
-0.7267 1.869 -0.2939 0.932 -0.1617
-0.7443 1.914 -0.3771 0.932 -0.1122
-0.7631 1.963 -0.4608 0.932 -0.06235
-0.783 2.014 -0.5442 0.932 -0.01239
-0.8036 2.067 -0.6263 0.932 0.0376
-0.8248 2.122 -0.7064 0.932 0.0875
-0.8464 2.177 -0.7836 0.932 0.1372
-0.8682 2.233 -0.8572 0.932 0.1865
-0.89 2.289 -0.9264 0.932 0.2354
-0.9116 2.345 -0.9904 0.932 0.2837
-0.9328 2.399 -1.049 0.932 0.3312
-0.9534 2.452 -1.1 0.932 0.378
-0.9733 2.503 -1.145 0.932 0.4238
-0.9922 2.552 -1.182 0.932 0.4685
-1.01 2.598 -1.211 0.932 0.5121
-1.027 2.642 -1.232 0.932 0.5544
-1.042 2.681 -1.243 0.932 0.5953
-1.057 2.718 -1.246 0.932 0.6347
-1.069 2.751 -1.239 0.932 0.6725
-1.081 2.78 -1.224 0.932 0.7087
-1.09 2.805 -1.199 0.932 0.743
-1.099 2.826 -1.165 0.932 0.7756
-1.105 2.843 -1.121 0.932 0.8061
-1.11 2.856 -1.07 0.932 0.8347
-1.114 2.866 -1.01 0.932 0.8612
-1.116 2.872 -0.9414 0.932 0.8855
-1.117 2.874 -0.8659 0.932 0.9076
-1.117 2.873 -0.7835 0.932 0.9275
-1.116 2.87 -0.6948 0.932 0.945
-1.113 2.864 -0.6006 0.932 0.9602
-1.11 2.855 -0.5016 0.932 0.9729
-1.106 2.845 -0.3985 0.932 0.9833
-1.101 2.832 -0.2922 0.932 0.9911
-1.096 2.819 -0.1836 0.932 0.9965
-1.091 2.805 -0.07347 0.932 0.9994
-0.946 2.847 0 0.949 1
-0.9403 2.83 0.1102 0.949 0.9988
-0.9348 2.813 0.2195 0.949 0.995
-0.9297 2.798 0.3271 0.949 0.9888
-0.9249 2.784 0.432 0.949 0.9801
-0.9208 2.771 0.5336 0.949 0.9689
-0.9174 2.761 0.6308 0.949 0.9553
-0.9148 2.753 0.7231 0.949 0.9394
-0.9132 2.748 0.8096 0.949 0.9211
-0.9127 2.747 0.8897 0.949 0.9004
-0.9133 2.749 0.9629 0.949 0.8776
-0.9152 2.754 1.029 0.949 0.8525
-0.9184 2.764 1.086 0.949 0.8253
-0.923 2.778 1.136 0.949 0.7961
-0.9289 2.796 1.176 0.949 0.7648
-0.9362 2.818 1.208 0.949 0.7317
-0.945 2.844 1.23 0.949 0.6967
-0.9551 2.875 1.244 0.949 0.66
-0.9666 2.909 1.248 0.949 0.6216
-0.9794 2.948 1.243 0.949 0.5817
-0.9934 2.99 1.23 0.949 0.5403
-1.009 3.035 1.208 0.949 0.4976
-1.025 3.084 1.177 0.949 0.4536
-1.042 3.135 1.139 0.949 0.4085
-1.06 3.189 1.093 0.949 0.3624
-1.078 3.245 1.041 0.949 0.3153
-1.097 3.302 0.9818 0.949 0.2675
-1.117 3.361 0.9175 0.949 0.219
-1.136 3.419 0.8482 0.949 0.17
-1.156 3.478 0.7749 0.949 0.1205
-1.175 3.536 0.6981 0.949 0.07074
-1.194 3.593 0.6187 0.949 0.02079
-1.212 3.649 0.5375 0.949 -0.0292
-1.23 3.702 0.4553 0.949 -0.07912
-1.247 3.752 0.373 0.949 -0.1288
-1.262 3.799 0.2913 0.949 -0.1782
-1.277 3.842 0.2109 0.949 -0.2272
-1.29 3.881 0.1328 0.949 -0.2756
-1.301 3.915 0.05748 0.949 -0.3233
-1.31 3.944 -0.01422 0.949 -0.3702
-1.318 3.967 -0.08171 0.949 -0.4161
-1.324 3.984 -0.1444 0.949 -0.4611
-1.328 3.995 -0.2018 0.949 -0.5048
-1.329 4 -0.2533 0.949 -0.5474
-1.328 3.998 -0.2987 0.949 -0.5885
-1.325 3.989 -0.3375 0.949 -0.6282
-1.32 3.973 -0.3695 0.949 -0.6663
-1.312 3.95 -0.3946 0.949 -0.7027
-1.302 3.92 -0.4126 0.949 -0.7374
-1.29 3.883 -0.4236 0.949 -0.7702
-1.276 3.84 -0.4275 0.949 -0.8011
-1.259 3.79 -0.4245 0.949 -0.8301
-1.241 3.734 -0.4148 0.949 -0.8569
-1.22 3.672 -0.3988 0.949 -0.8816
-1.198 3.605 -0.3766 0.949 -0.9041
-1.174 3.532 -0.3489 0.949 -0.9243
-1.148 3.455 -0.3159 0.949 -0.9422
-1.121 3.374 -0.2784 0.949 -0.9578
-1.093 3.289 -0.2368 0.949 -0.971
-1.064 3.201 -0.1918 0.949 -0.9817
-1.034 3.111 -0.144 0.949 -0.99
-1.003 3.018 -0.09421 0.949 -0.9958
-0.9719 2.925 -0.04305 0.949 -0.9991
-0.9407 2.831 0.008716 0.949 -1
-0.9095 2.737 0.06036 0.949 -0.9983
-0.8786 2.644 0.1111 0.949 -0.9941
-0.8482 2.553 0.1604 0.949 -0.9875
-0.8184 2.463 0.2073 0.949 -0.9784
-0.7895 2.376 0.2512 0.949 -0.9668
-0.7616 2.292 0.2915 0.949 -0.9528
-0.7351 2.212 0.3275 0.949 -0.9365
-0.7099 2.137 0.3588 0.949 -0.9178
-0.6864 2.066 0.3847 0.949 -0.8968
-0.6646 2 0.4049 0.949 -0.8735
-0.6447 1.94 0.4188 0.949 -0.8481
-0.6268 1.886 0.4263 0.949 -0.8206
-0.6109 1.839 0.427 0.949 -0.791
-0.5973 1.798 0.4207 0.949 -0.7594
-0.5859 1.763 0.4074 0.949 -0.7259
-0.5767 1.736 0.387 0.949 -0.6907
-0.5699 1.715 0.3595 0.949 -0.6536
-0.5654 1.702 0.3252 0.949 -0.615
-0.5632 1.695 0.2841 0.949 -0.5748
-0.5632 1.695 0.2366 0.949 -0.5332
-0.5654 1.702 0.1831 0.949 -0.4903
-0.5698 1.715 0.1239 0.949 -0.4461
-0.5762 1.734 0.05952 0.949 -0.4008
-0.5845 1.759 -0.009453 0.949 -0.3545
-0.5947 1.79 -0.08243 0.949 -0.3073
-0.6066 1.826 -0.1588 0.949 -0.2594
-0.62 1.866 -0.2377 0.949 -0.2108
-0.6347 1.91 -0.3186 0.949 -0.1617
-0.6507 1.958 -0.4007 0.949 -0.1122
-0.6678 2.01 -0.483 0.949 -0.06235
-0.6857 2.064 -0.565 0.949 -0.01239
-0.7043 2.12 -0.6456 0.949 0.0376
-0.7234 2.177 -0.7242 0.949 0.0875
-0.7428 2.236 -0.8 0.949 0.1372
-0.7624 2.294 -0.872 0.949 0.1865
-0.7818 2.353 -0.9397 0.949 0.2354
-0.8011 2.411 -1.002 0.949 0.2837
-0.82 2.468 -1.059 0.949 0.3312
-0.8383 2.523 -1.109 0.949 0.378
-0.856 2.576 -1.153 0.949 0.4238
-0.8728 2.627 -1.188 0.949 0.4685
-0.8886 2.674 -1.216 0.949 0.5121
-0.9034 2.719 -1.235 0.949 0.5544
-0.917 2.76 -1.246 0.949 0.5953
-0.9293 2.797 -1.248 0.949 0.6347
-0.9404 2.83 -1.24 0.949 0.6725
-0.95 2.859 -1.224 0.949 0.7087
-0.9583 2.884 -1.198 0.949 0.743
-0.9652 2.905 -1.163 0.949 0.7756
-0.9707 2.921 -1.12 0.949 0.8061
-0.9748 2.934 -1.068 0.949 0.8347
-0.9775 2.942 -1.007 0.949 0.8612
-0.979 2.946 -0.9391 0.949 0.8855
-0.9792 2.947 -0.8635 0.949 0.9076
-0.9783 2.944 -0.7812 0.949 0.9275
-0.9764 2.938 -0.6926 0.949 0.945
-0.9735 2.93 -0.5986 0.949 0.9602
-0.9698 2.919 -0.4999 0.949 0.9729
-0.9655 2.906 -0.3971 0.949 0.9833
-0.9606 2.891 -0.2912 0.949 0.9911
-0.9553 2.875 -0.1829 0.949 0.9965
-0.9497 2.858 -0.0732 0.949 0.9994
-0.8025 2.891 0 0.9636 1
-0.797 2.871 0.1097 0.9636 0.9988
-0.7916 2.851 0.2186 0.9636 0.995
-0.7865 2.833 0.3257 0.9636 0.9888
-0.7818 2.816 0.4302 0.9636 0.9801
-0.7776 2.801 0.5314 0.9636 0.9689
-0.774 2.788 0.6283 0.9636 0.9553
-0.7712 2.778 0.7204 0.9636 0.9394
-0.7693 2.771 0.8067 0.9636 0.9211
-0.7683 2.768 0.8868 0.9636 0.9004
-0.7684 2.768 0.96 0.9636 0.8776
-0.7695 2.772 1.026 0.9636 0.8525
-0.7719 2.78 1.084 0.9636 0.8253
-0.7754 2.793 1.133 0.9636 0.7961
-0.7802 2.81 1.174 0.9636 0.7648
-0.7862 2.832 1.207 0.9636 0.7317
-0.7934 2.858 1.23 0.9636 0.6967
-0.8019 2.889 1.244 0.9636 0.66
-0.8117 2.924 1.249 0.9636 0.6216
-0.8225 2.963 1.246 0.9636 0.5817
-0.8345 3.006 1.233 0.9636 0.5403
-0.8475 3.053 1.212 0.9636 0.4976
-0.8614 3.103 1.183 0.9636 0.4536
-0.8762 3.156 1.146 0.9636 0.4085
-0.8916 3.212 1.102 0.9636 0.3624
-0.9077 3.27 1.051 0.9636 0.3153
-0.9242 3.329 0.9935 0.9636 0.2675
-0.9411 3.39 0.9307 0.9636 0.219
-0.9581 3.451 0.8631 0.9636 0.17
-0.9752 3.513 0.7912 0.9636 0.1205
-0.9921 3.574 0.716 0.9636 0.07074
-1.009 3.633 0.6382 0.9636 0.02079
-1.025 3.691 0.5585 0.9636 -0.0292
-1.04 3.747 0.4777 0.9636 -0.07912
-1.055 3.8 0.3967 0.9636 -0.1288
-1.069 3.85 0.3162 0.9636 -0.1782
-1.082 3.896 0.2371 0.9636 -0.2272
-1.093 3.937 0.16 0.9636 -0.2756
-1.103 3.973 0.0856 0.9636 -0.3233
-1.112 4.004 0.01467 0.9636 -0.3702
-1.119 4.029 -0.05218 0.9636 -0.4161
-1.124 4.049 -0.1144 0.9636 -0.4611
-1.127 4.061 -0.1714 0.9636 -0.5048
-1.129 4.067 -0.2229 0.9636 -0.5474
-1.129 4.066 -0.2683 0.9636 -0.5885
-1.126 4.058 -0.3073 0.9636 -0.6282
-1.122 4.042 -0.3398 0.9636 -0.6663
-1.116 4.02 -0.3654 0.9636 -0.7027
-1.108 3.99 -0.3842 0.9636 -0.7374
-1.097 3.953 -0.3961 0.9636 -0.7702
-1.085 3.909 -0.4012 0.9636 -0.8011
-1.071 3.858 -0.3995 0.9636 -0.8301
-1.055 3.801 -0.3913 0.9636 -0.8569
-1.038 3.738 -0.3769 0.9636 -0.8816
-1.019 3.669 -0.3565 0.9636 -0.9041
-0.998 3.595 -0.3307 0.9636 -0.9243
-0.976 3.516 -0.2998 0.9636 -0.9422
-0.9529 3.432 -0.2644 0.9636 -0.9578
-0.9287 3.345 -0.2251 0.9636 -0.971
-0.9036 3.255 -0.1824 0.9636 -0.9817
-0.8778 3.162 -0.137 0.9636 -0.99
-0.8515 3.067 -0.08966 0.9636 -0.9958
-0.8248 2.971 -0.04098 0.9636 -0.9991
-0.798 2.874 0.008297 0.9636 -1
-0.7712 2.778 0.05746 0.9636 -0.9983
-0.7446 2.682 0.1058 0.9636 -0.9941
-0.7185 2.588 0.1525 0.9636 -0.9875
-0.6929 2.496 0.1971 0.9636 -0.9784
-0.6681 2.407 0.2387 0.9636 -0.9668
-0.6442 2.321 0.2768 0.9636 -0.9528
-0.6214 2.238 0.3107 0.9636 -0.9365
-0.5999 2.161 0.34 0.9636 -0.9178
-0.5798 2.088 0.364 0.9636 -0.8968
-0.5612 2.021 0.3824 0.9636 -0.8735
-0.5442 1.96 0.3948 0.9636 -0.8481
-0.5289 1.905 0.4008 0.9636 -0.8206
-0.5155 1.857 0.4003 0.9636 -0.791
-0.504 1.815 0.3929 0.9636 -0.7594
-0.4944 1.781 0.3787 0.9636 -0.7259
-0.4868 1.753 0.3576 0.9636 -0.6907
-0.4812 1.733 0.3296 0.9636 -0.6536
-0.4776 1.72 0.2949 0.9636 -0.615
-0.476 1.714 0.2537 0.9636 -0.5748
-0.4763 1.716 0.2062 0.9636 -0.5332
-0.4785 1.724 0.1529 0.9636 -0.4903
-0.4826 1.739 0.09403 0.9636 -0.4461
-0.4885 1.76 0.03019 0.9636 -0.4008
-0.496 1.787 -0.0381 0.9636 -0.3545
-0.5052 1.82 -0.1103 0.9636 -0.3073
-0.5157 1.858 -0.1856 0.9636 -0.2594
-0.5276 1.901 -0.2635 0.9636 -0.2108
-0.5407 1.948 -0.3432 0.9636 -0.1617
-0.5548 1.998 -0.4239 0.9636 -0.1122
-0.5698 2.053 -0.5049 0.9636 -0.06235
-0.5856 2.109 -0.5854 0.9636 -0.01239
-0.6019 2.168 -0.6646 0.9636 0.0376
-0.6186 2.228 -0.7416 0.9636 0.0875
-0.6356 2.289 -0.8158 0.9636 0.1372
-0.6526 2.351 -0.8863 0.9636 0.1865
-0.6696 2.412 -0.9524 0.9636 0.2354
-0.6864 2.472 -1.013 0.9636 0.2837
-0.7028 2.531 -1.069 0.9636 0.3312
-0.7186 2.589 -1.117 0.9636 0.378
-0.7339 2.644 -1.159 0.9636 0.4238
-0.7484 2.696 -1.194 0.9636 0.4685
-0.762 2.745 -1.22 0.9636 0.5121
-0.7746 2.79 -1.238 0.9636 0.5544
-0.7863 2.832 -1.248 0.9636 0.5953
-0.7967 2.87 -1.249 0.9636 0.6347
-0.806 2.903 -1.24 0.9636 0.6725
-0.8141 2.933 -1.223 0.9636 0.7087
-0.821 2.957 -1.197 0.9636 0.743
-0.8266 2.977 -1.162 0.9636 0.7756
-0.8309 2.993 -1.118 0.9636 0.8061
-0.8341 3.004 -1.065 0.9636 0.8347
-0.836 3.011 -1.005 0.9636 0.8612
-0.8368 3.014 -0.9362 0.9636 0.8855
-0.8365 3.013 -0.8606 0.9636 0.9076
-0.8352 3.008 -0.7784 0.9636 0.9275
-0.8329 3 -0.69 0.9636 0.945
-0.8299 2.989 -0.5963 0.9636 0.9602
-0.8261 2.976 -0.4978 0.9636 0.9729
-0.8217 2.96 -0.3954 0.9636 0.9833
-0.8168 2.942 -0.2899 0.9636 0.9911
-0.8116 2.924 -0.1821 0.9636 0.9965
-0.8062 2.904 -0.07288 0.9636 0.9994
-0.657 2.927 0 0.9757 1
-0.6519 2.904 0.1092 0.9757 0.9988
-0.6469 2.882 0.2175 0.9757 0.995
-0.6421 2.861 0.3241 0.9757 0.9888
-0.6377 2.841 0.4282 0.9757 0.9801
-0.6337 2.823 0.5289 0.9757 0.9689
-0.6303 2.808 0.6255 0.9757 0.9553
-0.6275 2.796 0.7172 0.9757 0.9394
-0.6254 2.786 0.8034 0.9757 0.9211
-0.6242 2.781 0.8834 0.9757 0.9004
-0.6238 2.779 0.9565 0.9757 0.8776
-0.6244 2.782 1.022 0.9757 0.8525
-0.626 2.789 1.08 0.9757 0.8253
-0.6286 2.801 1.13 0.9757 0.7961
-0.6323 2.817 1.172 0.9757 0.7648
-0.6371 2.838 1.205 0.9757 0.7317
-0.6429 2.864 1.229 0.9757 0.6967
-0.6498 2.895 1.244 0.9757 0.66
-0.6577 2.93 1.25 0.9757 0.6216
-0.6666 2.97 1.247 0.9757 0.5817
-0.6765 3.014 1.236 0.9757 0.5403
-0.6872 3.062 1.216 0.9757 0.4976
-0.6988 3.113 1.188 0.9757 0.4536
-0.711 3.168 1.153 0.9757 0.4085
-0.7239 3.225 1.11 0.9757 0.3624
-0.7374 3.285 1.06 0.9757 0.3153
-0.7512 3.347 1.005 0.9757 0.2675
-0.7654 3.41 0.9434 0.9757 0.219
-0.7797 3.474 0.8773 0.9757 0.17
-0.794 3.537 0.8071 0.9757 0.1205
-0.8083 3.601 0.7335 0.9757 0.07074
-0.8223 3.663 0.6572 0.9757 0.02079
-0.8359 3.724 0.5791 0.9757 -0.0292
-0.8491 3.783 0.4998 0.9757 -0.07912
-0.8615 3.838 0.4202 0.9757 -0.1288
-0.8733 3.891 0.341 0.9757 -0.1782
-0.8841 3.939 0.2631 0.9757 -0.2272
-0.8939 3.982 0.1871 0.9757 -0.2756
-0.9026 4.021 0.1137 0.9757 -0.3233
-0.91 4.054 0.04356 0.9757 -0.3702
-0.9161 4.081 -0.02262 0.9757 -0.4161
-0.9207 4.102 -0.08432 0.9757 -0.4611
-0.9239 4.116 -0.141 0.9757 -0.5048
-0.9255 4.123 -0.1923 0.9757 -0.5474
-0.9255 4.123 -0.2377 0.9757 -0.5885
-0.9238 4.116 -0.2769 0.9757 -0.6282
-0.9205 4.101 -0.3098 0.9757 -0.6663
-0.9155 4.079 -0.336 0.9757 -0.7027
-0.9088 4.049 -0.3556 0.9757 -0.7374
-0.9005 4.012 -0.3685 0.9757 -0.7702
-0.8906 3.968 -0.3747 0.9757 -0.8011
-0.8791 3.916 -0.3743 0.9757 -0.8301
-0.8661 3.859 -0.3676 0.9757 -0.8569
-0.8516 3.794 -0.3548 0.9757 -0.8816
-0.8359 3.724 -0.3362 0.9757 -0.9041
-0.8188 3.648 -0.3123 0.9757 -0.9243
-0.8007 3.567 -0.2835 0.9757 -0.9422
-0.7815 3.482 -0.2503 0.9757 -0.9578
-0.7615 3.393 -0.2132 0.9757 -0.971
-0.7407 3.3 -0.1729 0.9757 -0.9817
-0.7194 3.205 -0.13 0.9757 -0.99
-0.6976 3.108 -0.08506 0.9757 -0.9958
-0.6755 3.01 -0.03888 0.9757 -0.9991
-0.6533 2.911 0.007873 0.9757 -1
-0.6311 2.812 0.05451 0.9757 -0.9983
-0.6091 2.714 0.1003 0.9757 -0.9941
-0.5874 2.617 0.1446 0.9757 -0.9875
-0.5662 2.523 0.1868 0.9757 -0.9784
-0.5457 2.431 0.2261 0.9757 -0.9668
-0.526 2.343 0.2619 0.9757 -0.9528
-0.5071 2.259 0.2937 0.9757 -0.9365
-0.4894 2.18 0.3209 0.9757 -0.9178
-0.4727 2.106 0.3431 0.9757 -0.8968
-0.4574 2.038 0.3598 0.9757 -0.8735
-0.4434 1.976 0.3705 0.9757 -0.8481
-0.4309 1.92 0.3751 0.9757 -0.8206
-0.4199 1.871 0.3733 0.9757 -0.791
-0.4105 1.829 0.3649 0.9757 -0.7594
-0.4028 1.794 0.3498 0.9757 -0.7259
-0.3967 1.767 0.328 0.9757 -0.6907
-0.3922 1.747 0.2995 0.9757 -0.6536
-0.3895 1.735 0.2645 0.9757 -0.615
-0.3884 1.73 0.2231 0.9757 -0.5748
-0.3889 1.733 0.1757 0.9757 -0.5332
-0.391 1.742 0.1225 0.9757 -0.4903
-0.3947 1.759 0.06411 0.9757 -0.4461
-0.3999 1.781 0.0008393 0.9757 -0.4008
-0.4064 1.811 -0.06673 0.9757 -0.3545
-0.4143 1.846 -0.138 0.9757 -0.3073
-0.4233 1.886 -0.2124 0.9757 -0.2594
-0.4335 1.931 -0.2891 0.9757 -0.2108
-0.4446 1.981 -0.3676 0.9757 -0.1617
-0.4566 2.034 -0.4469 0.9757 -0.1122
-0.4693 2.091 -0.5265 0.9757 -0.06235
-0.4827 2.15 -0.6055 0.9757 -0.01239
-0.4964 2.212 -0.6831 0.9757 0.0376
-0.5106 2.275 -0.7586 0.9757 0.0875
-0.5248 2.338 -0.8312 0.9757 0.1372
-0.5392 2.402 -0.9 0.9757 0.1865
-0.5535 2.466 -0.9645 0.9757 0.2354
-0.5675 2.528 -1.024 0.9757 0.2837
-0.5812 2.59 -1.078 0.9757 0.3312
-0.5945 2.649 -1.125 0.9757 0.378
-0.6072 2.705 -1.165 0.9757 0.4238
-0.6193 2.759 -1.198 0.9757 0.4685
-0.6306 2.809 -1.224 0.9757 0.5121
-0.641 2.856 -1.24 0.9757 0.5544
-0.6506 2.898 -1.249 0.9757 0.5953
-0.6591 2.937 -1.249 0.9757 0.6347
-0.6667 2.97 -1.24 0.9757 0.6725
-0.6732 2.999 -1.222 0.9757 0.7087
-0.6787 3.024 -1.195 0.9757 0.743
-0.6831 3.043 -1.159 0.9757 0.7756
-0.6864 3.058 -1.115 0.9757 0.8061
-0.6887 3.068 -1.062 0.9757 0.8347
-0.6899 3.074 -1.001 0.9757 0.8612
-0.6902 3.075 -0.9327 0.9757 0.8855
-0.6895 3.072 -0.8572 0.9757 0.9076
-0.688 3.065 -0.7751 0.9757 0.9275
-0.6857 3.055 -0.687 0.9757 0.945
-0.6827 3.041 -0.5935 0.9757 0.9602
-0.679 3.025 -0.4954 0.9757 0.9729
-0.6749 3.007 -0.3935 0.9757 0.9833
-0.6703 2.987 -0.2885 0.9757 0.9911
-0.6655 2.965 -0.1812 0.9757 0.9965
-0.6604 2.942 -0.07251 0.9757 0.9994
-0.5099 2.956 0 0.9854 1
-0.5055 2.931 0.1086 0.9854 0.9988
-0.5011 2.905 0.2163 0.9854 0.995
-0.497 2.881 0.3223 0.9854 0.9888
-0.4931 2.859 0.4258 0.9854 0.9801
-0.4896 2.838 0.5261 0.9854 0.9689
-0.4865 2.821 0.6222 0.9854 0.9553
-0.4839 2.806 0.7136 0.9854 0.9394
-0.482 2.794 0.7995 0.9854 0.9211
-0.4807 2.787 0.8793 0.9854 0.9004
-0.4801 2.783 0.9524 0.9854 0.8776
-0.4803 2.785 1.018 0.9854 0.8525
-0.4812 2.79 1.077 0.9854 0.8253
-0.4831 2.801 1.127 0.9854 0.7961
-0.4857 2.816 1.169 0.9854 0.7648
-0.4893 2.837 1.202 0.9854 0.7317
-0.4937 2.862 1.227 0.9854 0.6967
-0.499 2.893 1.242 0.9854 0.66
-0.5051 2.929 1.249 0.9854 0.6216
-0.512 2.969 1.248 0.9854 0.5817
-0.5197 3.013 1.238 0.9854 0.5403
-0.5281 3.062 1.219 0.9854 0.4976
-0.5372 3.115 1.193 0.9854 0.4536
-0.5469 3.171 1.158 0.9854 0.4085
-0.5571 3.23 1.117 0.9854 0.3624
-0.5677 3.292 1.069 0.9854 0.3153
-0.5787 3.355 1.015 0.9854 0.2675
-0.5899 3.42 0.9555 0.9854 0.219
-0.6013 3.486 0.8911 0.9854 0.17
-0.6128 3.553 0.8225 0.9854 0.1205
-0.6241 3.619 0.7505 0.9854 0.07074
-0.6353 3.684 0.6759 0.9854 0.02079
-0.6462 3.747 0.5993 0.9854 -0.0292
-0.6568 3.808 0.5215 0.9854 -0.07912
-0.6668 3.866 0.4434 0.9854 -0.1288
-0.6762 3.921 0.3656 0.9854 -0.1782
-0.685 3.971 0.2889 0.9854 -0.2272
-0.6929 4.017 0.214 0.9854 -0.2756
-0.6999 4.058 0.1416 0.9854 -0.3233
-0.706 4.093 0.07242 0.9854 -0.3702
-0.711 4.122 0.006951 0.9854 -0.4161
-0.7149 4.145 -0.0542 0.9854 -0.4611
-0.7176 4.16 -0.1105 0.9854 -0.5048
-0.719 4.169 -0.1616 0.9854 -0.5474
-0.7192 4.17 -0.207 0.9854 -0.5885
-0.7181 4.163 -0.2464 0.9854 -0.6282
-0.7156 4.149 -0.2796 0.9854 -0.6663
-0.7119 4.127 -0.3064 0.9854 -0.7027
-0.7068 4.098 -0.3268 0.9854 -0.7374
-0.7004 4.061 -0.3406 0.9854 -0.7702
-0.6927 4.016 -0.3479 0.9854 -0.8011
-0.6838 3.964 -0.3488 0.9854 -0.8301
-0.6737 3.906 -0.3436 0.9854 -0.8569
-0.6624 3.84 -0.3325 0.9854 -0.8816
-0.6501 3.769 -0.3157 0.9854 -0.9041
-0.6368 3.692 -0.2938 0.9854 -0.9243
-0.6226 3.61 -0.267 0.9854 -0.9422
-0.6076 3.523 -0.236 0.9854 -0.9578
-0.5919 3.432 -0.2012 0.9854 -0.971
-0.5756 3.337 -0.1633 0.9854 -0.9817
-0.5588 3.24 -0.1228 0.9854 -0.99
-0.5417 3.141 -0.0804 0.9854 -0.9958
-0.5244 3.04 -0.03676 0.9854 -0.9991
-0.507 2.939 0.007444 0.9854 -1
-0.4896 2.838 0.05154 0.9854 -0.9983
-0.4723 2.738 0.09483 0.9854 -0.9941
-0.4553 2.64 0.1367 0.9854 -0.9875
-0.4387 2.543 0.1764 0.9854 -0.9784
-0.4226 2.45 0.2133 0.9854 -0.9668
-0.4071 2.36 0.2469 0.9854 -0.9528
-0.3924 2.275 0.2765 0.9854 -0.9365
-0.3785 2.194 0.3017 0.9854 -0.9178
-0.3655 2.119 0.322 0.9854 -0.8968
-0.3535 2.05 0.3369 0.9854 -0.8735
-0.3426 1.986 0.346 0.9854 -0.8481
-0.3329 1.93 0.3492 0.9854 -0.8206
-0.3244 1.881 0.3461 0.9854 -0.791
-0.3171 1.839 0.3366 0.9854 -0.7594
-0.3112 1.804 0.3207 0.9854 -0.7259
-0.3065 1.777 0.2981 0.9854 -0.6907
-0.3032 1.758 0.2692 0.9854 -0.6536
-0.3012 1.746 0.2338 0.9854 -0.615
-0.3005 1.742 0.1924 0.9854 -0.5748
-0.3011 1.746 0.145 0.9854 -0.5332
-0.303 1.757 0.09215 0.9854 -0.4903
-0.3061 1.775 0.03415 0.9854 -0.4461
-0.3104 1.8 -0.02851 0.9854 -0.4008
-0.3158 1.831 -0.09531 0.9854 -0.3545
-0.3221 1.868 -0.1657 0.9854 -0.3073
-0.3295 1.91 -0.239 0.9854 -0.2594
-0.3377 1.958 -0.3145 0.9854 -0.2108
-0.3467 2.01 -0.3917 0.9854 -0.1617
-0.3563 2.066 -0.4697 0.9854 -0.1122
-0.3665 2.125 -0.5478 0.9854 -0.06235
-0.3772 2.187 -0.6252 0.9854 -0.01239
-0.3882 2.251 -0.7012 0.9854 0.0376
-0.3995 2.316 -0.7751 0.9854 0.0875
-0.4109 2.382 -0.846 0.9854 0.1372
-0.4223 2.449 -0.9132 0.9854 0.1865
-0.4337 2.514 -0.9761 0.9854 0.2354
-0.4448 2.579 -1.034 0.9854 0.2837
-0.4557 2.642 -1.086 0.9854 0.3312
-0.4662 2.703 -1.132 0.9854 0.378
-0.4762 2.761 -1.171 0.9854 0.4238
-0.4857 2.816 -1.202 0.9854 0.4685
-0.4946 2.867 -1.226 0.9854 0.5121
-0.5027 2.915 -1.242 0.9854 0.5544
-0.5102 2.958 -1.249 0.9854 0.5953
-0.5169 2.997 -1.248 0.9854 0.6347
-0.5227 3.03 -1.238 0.9854 0.6725
-0.5277 3.059 -1.219 0.9854 0.7087
-0.5318 3.083 -1.192 0.9854 0.743
-0.5351 3.102 -1.156 0.9854 0.7756
-0.5374 3.116 -1.111 0.9854 0.8061
-0.539 3.125 -1.058 0.9854 0.8347
-0.5397 3.129 -0.997 0.9854 0.8612
-0.5396 3.129 -0.9286 0.9854 0.8855
-0.5388 3.124 -0.8532 0.9854 0.9076
-0.5372 3.115 -0.7713 0.9854 0.9275
-0.5351 3.102 -0.6835 0.9854 0.945
-0.5323 3.086 -0.5904 0.9854 0.9602
-0.5291 3.068 -0.4928 0.9854 0.9729
-0.5254 3.046 -0.3913 0.9854 0.9833
-0.5215 3.023 -0.2869 0.9854 0.9911
-0.5172 2.999 -0.1802 0.9854 0.9965
-0.5129 2.973 -0.0721 0.9854 0.9994
-0.3615 2.978 0 0.9927 1
-0.358 2.95 0.1079 0.9927 0.9988
-0.3546 2.922 0.2149 0.9927 0.995
-0.3514 2.895 0.3203 0.9927 0.9888
-0.3483 2.869 0.4232 0.9927 0.9801
-0.3455 2.846 0.5229 0.9927 0.9689
-0.343 2.826 0.6186 0.9927 0.9553
-0.341 2.809 0.7096 0.9927 0.9394
-0.3393 2.795 0.7952 0.9927 0.9211
-0.3381 2.786 0.8748 0.9927 0.9004
-0.3375 2.78 0.9478 0.9927 0.8776
-0.3374 2.78 1.014 0.9927 0.8525
-0.338 2.784 1.072 0.9927 0.8253
-0.3391 2.794 1.123 0.9927 0.7961
-0.3409 2.808 1.165 0.9927 0.7648
-0.3433 2.828 1.199 0.9927 0.7317
-0.3463 2.853 1.224 0.9927 0.6967
-0.35 2.884 1.24 0.9927 0.66
-0.3543 2.919 1.248 0.9927 0.6216
-0.3593 2.96 1.248 0.9927 0.5817
-0.3647 3.005 1.239 0.9927 0.5403
-0.3708 3.054 1.221 0.9927 0.4976
-0.3773 3.108 1.196 0.9927 0.4536
-0.3842 3.165 1.163 0.9927 0.4085
-0.3916 3.226 1.124 0.9927 0.3624
-0.3993 3.289 1.077 0.9927 0.3153
-0.4072 3.355 1.025 0.9927 0.2675
-0.4154 3.422 0.9669 0.9927 0.219
-0.4236 3.49 0.9042 0.9927 0.17
-0.4319 3.558 0.8374 0.9927 0.1205
-0.4402 3.626 0.7671 0.9927 0.07074
-0.4484 3.694 0.6941 0.9927 0.02079
-0.4563 3.759 0.6192 0.9927 -0.0292
-0.464 3.823 0.543 0.9927 -0.07912
-0.4714 3.883 0.4663 0.9927 -0.1288
-0.4783 3.94 0.39 0.9927 -0.1782
-0.4847 3.993 0.3146 0.9927 -0.2272
-0.4906 4.041 0.2409 0.9927 -0.2756
-0.4958 4.084 0.1695 0.9927 -0.3233
-0.5003 4.121 0.1012 0.9927 -0.3702
-0.504 4.152 0.03652 0.9927 -0.4161
-0.5069 4.176 -0.02404 0.9927 -0.4611
-0.509 4.193 -0.07995 0.9927 -0.5048
-0.5102 4.203 -0.1308 0.9927 -0.5474
-0.5105 4.205 -0.1761 0.9927 -0.5885
-0.5098 4.2 -0.2157 0.9927 -0.6282
-0.5082 4.186 -0.2493 0.9927 -0.6663
-0.5056 4.165 -0.2766 0.9927 -0.7027
-0.502 4.136 -0.2977 0.9927 -0.7374
-0.4975 4.099 -0.3124 0.9927 -0.7702
-0.4921 4.054 -0.3209 0.9927 -0.8011
-0.4858 4.002 -0.3232 0.9927 -0.8301
-0.4786 3.943 -0.3194 0.9927 -0.8569
-0.4706 3.877 -0.3099 0.9927 -0.8816
-0.4618 3.804 -0.295 0.9927 -0.9041
-0.4523 3.726 -0.275 0.9927 -0.9243
-0.4422 3.643 -0.2504 0.9927 -0.9422
-0.4314 3.554 -0.2216 0.9927 -0.9578
-0.4202 3.462 -0.1891 0.9927 -0.971
-0.4086 3.366 -0.1536 0.9927 -0.9817
-0.3966 3.267 -0.1156 0.9927 -0.99
-0.3843 3.166 -0.0757 0.9927 -0.9958
-0.3719 3.064 -0.03462 0.9927 -0.9991
-0.3594 2.961 0.00701 0.9927 -1
-0.3469 2.858 0.04853 0.9927 -0.9983
-0.3346 2.756 0.08927 0.9927 -0.9941
-0.3224 2.656 0.1286 0.9927 -0.9875
-0.3105 2.558 0.1658 0.9927 -0.9784
-0.299 2.463 0.2004 0.9927 -0.9668
-0.2879 2.372 0.2317 0.9927 -0.9528
-0.2774 2.285 0.2591 0.9927 -0.9365
-0.2674 2.203 0.2823 0.9927 -0.9178
-0.2582 2.127 0.3006 0.9927 -0.8968
-0.2496 2.057 0.3137 0.9927 -0.8735
-0.2419 1.993 0.3213 0.9927 -0.8481
-0.235 1.936 0.3231 0.9927 -0.8206
-0.229 1.886 0.3187 0.9927 -0.791
-0.2239 1.844 0.3082 0.9927 -0.7594
-0.2197 1.81 0.2913 0.9927 -0.7259
-0.2165 1.783 0.2681 0.9927 -0.6907
-0.2142 1.765 0.2387 0.9927 -0.6536
-0.2129 1.754 0.2031 0.9927 -0.615
-0.2125 1.751 0.1615 0.9927 -0.5748
-0.2131 1.756 0.1143 0.9927 -0.5332
-0.2146 1.768 0.06169 0.9927 -0.4903
-0.217 1.787 0.004168 0.9927 -0.4461
-0.2202 1.814 -0.05785 0.9927 -0.4008
-0.2242 1.847 -0.1238 0.9927 -0.3545
-0.2289 1.886 -0.1932 0.9927 -0.3073
-0.2344 1.931 -0.2654 0.9927 -0.2594
-0.2404 1.98 -0.3398 0.9927 -0.2108
-0.247 2.035 -0.4156 0.9927 -0.1617
-0.2541 2.093 -0.4921 0.9927 -0.1122
-0.2615 2.155 -0.5687 0.9927 -0.06235
-0.2693 2.219 -0.6445 0.9927 -0.01239
-0.2774 2.285 -0.7189 0.9927 0.0376
-0.2856 2.353 -0.7911 0.9927 0.0875
-0.2939 2.421 -0.8603 0.9927 0.1372
-0.3022 2.489 -0.9258 0.9927 0.1865
-0.3104 2.557 -0.987 0.9927 0.2354
-0.3185 2.624 -1.043 0.9927 0.2837
-0.3264 2.689 -1.094 0.9927 0.3312
-0.3339 2.751 -1.138 0.9927 0.378
-0.3412 2.81 -1.175 0.9927 0.4238
-0.348 2.867 -1.205 0.9927 0.4685
-0.3543 2.919 -1.228 0.9927 0.5121
-0.3602 2.967 -1.243 0.9927 0.5544
-0.3655 3.011 -1.249 0.9927 0.5953
-0.3702 3.05 -1.247 0.9927 0.6347
-0.3743 3.084 -1.236 0.9927 0.6725
-0.3778 3.112 -1.216 0.9927 0.7087
-0.3806 3.136 -1.188 0.9927 0.743
-0.3828 3.154 -1.152 0.9927 0.7756
-0.3844 3.167 -1.106 0.9927 0.8061
-0.3853 3.174 -1.053 0.9927 0.8347
-0.3856 3.177 -0.9923 0.9927 0.8612
-0.3854 3.175 -0.924 0.9927 0.8855
-0.3845 3.168 -0.8487 0.9927 0.9076
-0.3832 3.157 -0.767 0.9927 0.9275
-0.3814 3.142 -0.6796 0.9927 0.945
-0.3792 3.124 -0.5869 0.9927 0.9602
-0.3766 3.102 -0.4898 0.9927 0.9729
-0.3737 3.079 -0.3889 0.9927 0.9833
-0.3706 3.053 -0.2851 0.9927 0.9911
-0.3672 3.025 -0.1791 0.9927 0.9965
-0.3638 2.997 -0.07164 0.9927 0.9994
-0.2122 2.992 0 0.9975 1
-0.21 2.961 0.1071 0.9975 0.9988
-0.2078 2.93 0.2134 0.9975 0.995
-0.2057 2.901 0.3181 0.9975 0.9888
-0.2037 2.873 0.4204 0.9975 0.9801
-0.2019 2.847 0.5194 0.9975 0.9689
-0.2003 2.824 0.6146 0.9975 0.9553
-0.1989 2.805 0.7051 0.9975 0.9394
-0.1978 2.789 0.7903 0.9975 0.9211
-0.197 2.777 0.8696 0.9975 0.9004
-0.1965 2.77 0.9425 0.9975 0.8776
-0.1963 2.768 1.008 0.9975 0.8525
-0.1965 2.771 1.067 0.9975 0.8253
-0.1971 2.779 1.118 0.9975 0.7961
-0.198 2.793 1.16 0.9975 0.7648
-0.1994 2.812 1.194 0.9975 0.7317
-0.2011 2.836 1.22 0.9975 0.6967
-0.2033 2.867 1.238 0.9975 0.66
-0.2058 2.902 1.246 0.9975 0.6216
-0.2087 2.943 1.247 0.9975 0.5817
-0.2119 2.988 1.239 0.9975 0.5403
-0.2155 3.039 1.223 0.9975 0.4976
-0.2194 3.093 1.199 0.9975 0.4536
-0.2235 3.152 1.168 0.9975 0.4085
-0.2279 3.213 1.13 0.9975 0.3624
-0.2325 3.278 1.085 0.9975 0.3153
-0.2372 3.345 1.034 0.9975 0.2675
-0.2421 3.414 0.9778 0.9975 0.219
-0.2471 3.484 0.9168 0.9975 0.17
-0.2521 3.554 0.8517 0.9975 0.1205
-0.257 3.625 0.7832 0.9975 0.07074
-0.262 3.694 0.7119 0.9975 0.02079
-0.2668 3.762 0.6386 0.9975 -0.0292
-0.2714 3.827 0.5641 0.9975 -0.07912
-0.2759 3.89 0.489 0.9975 -0.1288
-0.2801 3.949 0.4141 0.9975 -0.1782
-0.284 4.004 0.34 0.9975 -0.2272
-0.2875 4.054 0.2676 0.9975 -0.2756
-0.2907 4.099 0.1973 0.9975 -0.3233
-0.2935 4.138 0.13 0.9975 -0.3702
-0.2958 4.171 0.06607 0.9975 -0.4161
-0.2976 4.197 0.006136 0.9975 -0.4611
-0.2989 4.215 -0.04933 0.9975 -0.5048
-0.2997 4.226 -0.09989 0.9975 -0.5474
-0.2999 4.23 -0.1452 0.9975 -0.5885
-0.2996 4.225 -0.1849 0.9975 -0.6282
-0.2987 4.212 -0.2188 0.9975 -0.6663
-0.2972 4.192 -0.2467 0.9975 -0.7027
-0.2952 4.163 -0.2685 0.9975 -0.7374
-0.2926 4.126 -0.2841 0.9975 -0.7702
-0.2894 4.081 -0.2937 0.9975 -0.8011
-0.2857 4.029 -0.2973 0.9975 -0.8301
-0.2815 3.969 -0.295 0.9975 -0.8569
-0.2768 3.903 -0.2872 0.9975 -0.8816
-0.2716 3.83 -0.2741 0.9975 -0.9041
-0.266 3.751 -0.2561 0.9975 -0.9243
-0.26 3.666 -0.2335 0.9975 -0.9422
-0.2536 3.577 -0.207 0.9975 -0.9578
-0.247 3.483 -0.1769 0.9975 -0.971
-0.2401 3.386 -0.1438 0.9975 -0.9817
-0.233 3.285 -0.1083 0.9975 -0.99
-0.2257 3.183 -0.07094 0.9975 -0.9958
-0.2184 3.079 -0.03245 0.9975 -0.9991
-0.211 2.975 0.006572 0.9975 -1
-0.2036 2.871 0.04549 0.9975 -0.9983
-0.1962 2.767 0.08365 0.9975 -0.9941
-0.189 2.666 0.1204 0.9975 -0.9875
-0.182 2.566 0.1552 0.9975 -0.9784
-0.1752 2.47 0.1874 0.9975 -0.9668
-0.1686 2.378 0.2163 0.9975 -0.9528
-0.1624 2.29 0.2416 0.9975 -0.9365
-0.1565 2.207 0.2627 0.9975 -0.9178
-0.151 2.13 0.2791 0.9975 -0.8968
-0.146 2.059 0.2904 0.9975 -0.8735
-0.1415 1.995 0.2964 0.9975 -0.8481
-0.1374 1.938 0.2967 0.9975 -0.8206
-0.1339 1.888 0.2911 0.9975 -0.791
-0.1309 1.846 0.2795 0.9975 -0.7594
-0.1285 1.812 0.2618 0.9975 -0.7259
-0.1266 1.785 0.238 0.9975 -0.6907
-0.1253 1.767 0.208 0.9975 -0.6536
-0.1246 1.758 0.1722 0.9975 -0.615
-0.1245 1.756 0.1306 0.9975 -0.5748
-0.1249 1.762 0.08345 0.9975 -0.5332
-0.1259 1.775 0.0312 0.9975 -0.4903
-0.1274 1.796 -0.02582 0.9975 -0.4461
-0.1294 1.824 -0.08714 0.9975 -0.4008
-0.1318 1.859 -0.1523 0.9975 -0.3545
-0.1348 1.9 -0.2207 0.9975 -0.3073
-0.1381 1.947 -0.2917 0.9975 -0.2594
-0.1417 1.999 -0.3648 0.9975 -0.2108
-0.1457 2.055 -0.4392 0.9975 -0.1617
-0.15 2.116 -0.5143 0.9975 -0.1122
-0.1546 2.179 -0.5893 0.9975 -0.06235
-0.1593 2.246 -0.6635 0.9975 -0.01239
-0.1641 2.314 -0.7361 0.9975 0.0376
-0.1691 2.384 -0.8066 0.9975 0.0875
-0.174 2.454 -0.874 0.9975 0.1372
-0.179 2.525 -0.9378 0.9975 0.1865
-0.184 2.594 -0.9973 0.9975 0.2354
-0.1888 2.663 -1.052 0.9975 0.2837
-0.1935 2.729 -1.101 0.9975 0.3312
-0.198 2.793 -1.143 0.9975 0.378
-0.2023 2.853 -1.179 0.9975 0.4238
-0.2064 2.911 -1.208 0.9975 0.4685
-0.2102 2.964 -1.229 0.9975 0.5121
-0.2136 3.012 -1.242 0.9975 0.5544
-0.2167 3.056 -1.248 0.9975 0.5953
-0.2195 3.095 -1.244 0.9975 0.6347
-0.2219 3.129 -1.233 0.9975 0.6725
-0.2239 3.157 -1.213 0.9975 0.7087
-0.2255 3.18 -1.184 0.9975 0.743
-0.2268 3.198 -1.147 0.9975 0.7756
-0.2276 3.209 -1.101 0.9975 0.8061
-0.228 3.216 -1.048 0.9975 0.8347
-0.2281 3.217 -0.987 0.9975 0.8612
-0.2278 3.213 -0.9187 0.9975 0.8855
-0.2272 3.204 -0.8437 0.9975 0.9076
-0.2263 3.191 -0.7623 0.9975 0.9275
-0.2251 3.174 -0.6752 0.9975 0.945
-0.2236 3.153 -0.5831 0.9975 0.9602
-0.2219 3.13 -0.4865 0.9975 0.9729
-0.2201 3.103 -0.3863 0.9975 0.9833
-0.218 3.075 -0.2831 0.9975 0.9911
-0.2159 3.044 -0.1778 0.9975 0.9965
-0.2137 3.013 -0.07114 0.9975 0.9994
-0.06238 2.999 0 0.9998 1
-0.06167 2.965 0.1063 0.9998 0.9988
-0.06098 2.932 0.2118 0.9998 0.995
-0.0603 2.899 0.3157 0.9998 0.9888
-0.05967 2.869 0.4172 0.9998 0.9801
-0.05908 2.841 0.5156 0.9998 0.9689
-0.05856 2.815 0.6102 0.9998 0.9553
-0.0581 2.794 0.7002 0.9998 0.9394
-0.05773 2.776 0.785 0.9998 0.9211
-0.05745 2.762 0.864 0.9998 0.9004
-0.05726 2.753 0.9366 0.9998 0.8776
-0.05718 2.749 1.002 0.9998 0.8525
-0.05721 2.751 1.061 0.9998 0.8253
-0.05736 2.758 1.112 0.9998 0.7961
-0.05762 2.77 1.155 0.9998 0.7648
-0.058 2.788 1.19 0.9998 0.7317
-0.0585 2.812 1.216 0.9998 0.6967
-0.05912 2.842 1.234 0.9998 0.66
-0.05985 2.878 1.244 0.9998 0.6216
-0.0607 2.918 1.245 0.9998 0.5817
-0.06165 2.964 1.238 0.9998 0.5403
-0.06271 3.015 1.224 0.9998 0.4976
-0.06386 3.07 1.201 0.9998 0.4536
-0.06509 3.13 1.171 0.9998 0.4085
-0.0664 3.193 1.135 0.9998 0.3624
-0.06777 3.259 1.092 0.9998 0.3153
-0.0692 3.327 1.043 0.9998 0.2675
-0.07066 3.397 0.9881 0.9998 0.219
-0.07215 3.469 0.9289 0.9998 0.17
-0.07365 3.541 0.8655 0.9998 0.1205
-0.07515 3.613 0.7988 0.9998 0.07074
-0.07663 3.684 0.7293 0.9998 0.02079
-0.07808 3.754 0.6577 0.9998 -0.0292
-0.07949 3.822 0.5848 0.9998 -0.07912
-0.08084 3.886 0.5113 0.9998 -0.1288
-0.08211 3.948 0.4379 0.9998 -0.1782
-0.08329 4.005 0.3653 0.9998 -0.2272
-0.08437 4.057 0.2941 0.9998 -0.2756
-0.08535 4.103 0.225 0.9998 -0.3233
-0.08619 4.144 0.1587 0.9998 -0.3702
-0.08691 4.178 0.09557 0.9998 -0.4161
-0.08747 4.206 0.03631 0.9998 -0.4611
-0.08789 4.226 -0.01867 0.9998 -0.5048
-0.08815 4.238 -0.06894 0.9998 -0.5474
-0.08824 4.243 -0.1141 0.9998 -0.5885
-0.08817 4.239 -0.1539 0.9998 -0.6282
-0.08792 4.227 -0.1881 0.9998 -0.6663
-0.0875 4.207 -0.2165 0.9998 -0.7027
-0.08691 4.179 -0.239 0.9998 -0.7374
-0.08615 4.142 -0.2556 0.9998 -0.7702
-0.08523 4.098 -0.2663 0.9998 -0.8011
-0.08414 4.045 -0.2712 0.9998 -0.8301
-0.0829 3.986 -0.2705 0.9998 -0.8569
-0.08151 3.919 -0.2643 0.9998 -0.8816
-0.07998 3.845 -0.253 0.9998 -0.9041
-0.07832 3.766 -0.237 0.9998 -0.9243
-0.07655 3.68 -0.2166 0.9998 -0.9422
-0.07467 3.59 -0.1923 0.9998 -0.9578
-0.0727 3.495 -0.1645 0.9998 -0.971
-0.07065 3.397 -0.1339 0.9998 -0.9817
-0.06855 3.296 -0.1009 0.9998 -0.99
-0.06639 3.192 -0.06614 0.9998 -0.9958
-0.06421 3.087 -0.03027 0.9998 -0.9991
-0.06201 2.982 0.00613 0.9998 -1
-0.05982 2.876 0.04242 0.9998 -0.9983
-0.05765 2.772 0.07798 0.9998 -0.9941
-0.05551 2.669 0.1122 0.9998 -0.9875
-0.05342 2.568 0.1445 0.9998 -0.9784
-0.0514 2.471 0.1742 0.9998 -0.9668
-0.04946 2.378 0.2009 0.9998 -0.9528
-0.04761 2.289 0.2239 0.9998 -0.9365
-0.04588 2.206 0.2429 0.9998 -0.9178
-0.04426 2.128 0.2574 0.9998 -0.8968
-0.04278 2.057 0.267 0.9998 -0.8735
-0.04144 1.992 0.2713 0.9998 -0.8481
-0.04024 1.935 0.2702 0.9998 -0.8206
-0.03921 1.885 0.2634 0.9998 -0.791
-0.03834 1.843 0.2507 0.9998 -0.7594
-0.03764 1.81 0.2321 0.9998 -0.7259
-0.03711 1.784 0.2076 0.9998 -0.6907
-0.03675 1.767 0.1773 0.9998 -0.6536
-0.03656 1.758 0.1412 0.9998 -0.615
-0.03654 1.757 0.09952 0.9998 -0.5748
-0.03669 1.764 0.05258 0.9998 -0.5332
-0.037 1.779 0.0006879 0.9998 -0.4903
-0.03747 1.801 -0.05578 0.9998 -0.4461
-0.03809 1.831 -0.1164 0.9998 -0.4008
-0.03885 1.868 -0.1806 0.9998 -0.3545
-0.03974 1.91 -0.248 0.9998 -0.3073
-0.04075 1.959 -0.3178 0.9998 -0.2594
-0.04187 2.013 -0.3896 0.9998 -0.2108
-0.04308 2.071 -0.4625 0.9998 -0.1617
-0.04438 2.134 -0.5361 0.9998 -0.1122
-0.04575 2.199 -0.6094 0.9998 -0.06235
-0.04717 2.268 -0.682 0.9998 -0.01239
-0.04863 2.338 -0.7529 0.9998 0.0376
-0.05012 2.41 -0.8216 0.9998 0.0875
-0.05162 2.482 -0.8873 0.9998 0.1372
-0.05312 2.554 -0.9493 0.9998 0.1865
-0.0546 2.625 -1.007 0.9998 0.2354
-0.05605 2.695 -1.06 0.9998 0.2837
-0.05746 2.763 -1.107 0.9998 0.3312
-0.05881 2.828 -1.148 0.9998 0.378
-0.0601 2.889 -1.182 0.9998 0.4238
-0.0613 2.947 -1.21 0.9998 0.4685
-0.06242 3.001 -1.229 0.9998 0.5121
-0.06345 3.05 -1.242 0.9998 0.5544
-0.06437 3.095 -1.246 0.9998 0.5953
-0.06518 3.134 -1.242 0.9998 0.6347
-0.06587 3.167 -1.229 0.9998 0.6725
-0.06645 3.195 -1.208 0.9998 0.7087
-0.06691 3.217 -1.179 0.9998 0.743
-0.06725 3.233 -1.141 0.9998 0.7756
-0.06748 3.244 -1.096 0.9998 0.8061
-0.06758 3.249 -1.042 0.9998 0.8347
-0.06757 3.249 -0.9811 0.9998 0.8612
-0.06745 3.243 -0.9129 0.9998 0.8855
-0.06724 3.233 -0.8381 0.9998 0.9076
-0.06692 3.217 -0.7571 0.9998 0.9275
-0.06652 3.198 -0.6705 0.9998 0.945
-0.06604 3.175 -0.5789 0.9998 0.9602
-0.06549 3.149 -0.4829 0.9998 0.9729
-0.06489 3.12 -0.3834 0.9998 0.9833
-0.06424 3.089 -0.281 0.9998 0.9911
-0.06356 3.056 -0.1765 0.9998 0.9965
-0.06286 3.022 -0.0706 0.9998 0.9994
--0.0876 2.999 0 0.9996 1
--0.08652 2.962 0.1054 0.9996 0.9988
--0.08547 2.926 0.21 0.9996 0.995
--0.08445 2.891 0.3131 0.9996 0.9888
--0.08348 2.858 0.4138 0.9996 0.9801
--0.08259 2.827 0.5115 0.9996 0.9689
--0.08178 2.8 0.6054 0.9996 0.9553
--0.08108 2.776 0.6948 0.9996 0.9394
--0.08049 2.756 0.7791 0.9996 0.9211
--0.08004 2.74 0.8578 0.9996 0.9004
--0.07973 2.729 0.9302 0.9996 0.8776
--0.07956 2.724 0.9959 0.9996 0.8525
--0.07956 2.724 1.054 0.9996 0.8253
--0.07973 2.729 1.105 0.9996 0.7961
--0.08006 2.741 1.149 0.9996 0.7648
--0.08057 2.758 1.184 0.9996 0.7317
--0.08125 2.782 1.211 0.9996 0.6967
--0.08211 2.811 1.23 0.9996 0.66
--0.08314 2.846 1.24 0.9996 0.6216
--0.08432 2.887 1.243 0.9996 0.5817
--0.08567 2.933 1.237 0.9996 0.5403
--0.08716 2.984 1.224 0.9996 0.4976
--0.08879 3.04 1.203 0.9996 0.4536
--0.09055 3.1 1.174 0.9996 0.4085
--0.09241 3.163 1.139 0.9996 0.3624
--0.09437 3.23 1.098 0.9996 0.3153
--0.0964 3.3 1.05 0.9996 0.2675
--0.0985 3.372 0.9977 0.9996 0.219
--0.1006 3.445 0.9403 0.9996 0.17
--0.1028 3.519 0.8788 0.9996 0.1205
--0.1049 3.592 0.8139 0.9996 0.07074
--0.1071 3.665 0.7462 0.9996 0.02079
--0.1092 3.737 0.6764 0.9996 -0.0292
--0.1112 3.806 0.6052 0.9996 -0.07912
--0.1131 3.873 0.5333 0.9996 -0.1288
--0.115 3.936 0.4615 0.9996 -0.1782
--0.1167 3.994 0.3903 0.9996 -0.2272
--0.1183 4.048 0.3204 0.9996 -0.2756
--0.1197 4.096 0.2525 0.9996 -0.3233
--0.1209 4.139 0.1872 0.9996 -0.3702
--0.1219 4.175 0.125 0.9996 -0.4161
--0.1228 4.203 0.06646 0.9996 -0.4611
--0.1234 4.225 0.012 0.9996 -0.5048
--0.1238 4.238 -0.03794 0.9996 -0.5474
--0.124 4.244 -0.08301 0.9996 -0.5885
--0.1239 4.242 -0.1229 0.9996 -0.6282
--0.1236 4.231 -0.1574 0.9996 -0.6663
--0.123 4.211 -0.1863 0.9996 -0.7027
--0.1222 4.183 -0.2095 0.9996 -0.7374
--0.1212 4.147 -0.227 0.9996 -0.7702
--0.1199 4.103 -0.2388 0.9996 -0.8011
--0.1183 4.051 -0.245 0.9996 -0.8301
--0.1166 3.991 -0.2457 0.9996 -0.8569
--0.1146 3.924 -0.2412 0.9996 -0.8816
--0.1125 3.85 -0.2318 0.9996 -0.9041
--0.1101 3.77 -0.2178 0.9996 -0.9243
--0.1076 3.685 -0.1995 0.9996 -0.9422
--0.105 3.594 -0.1774 0.9996 -0.9578
--0.1022 3.498 -0.1521 0.9996 -0.971
--0.0993 3.399 -0.1239 0.9996 -0.9817
--0.09632 3.297 -0.09344 0.9996 -0.99
--0.09327 3.193 -0.0613 0.9996 -0.9958
--0.09018 3.087 -0.02806 0.9996 -0.9991
--0.08708 2.981 0.005683 0.9996 -1
--0.08397 2.874 0.03933 0.9996 -0.9983
--0.08089 2.769 0.07226 0.9996 -0.9941
--0.07786 2.665 0.1039 0.9996 -0.9875
--0.07491 2.564 0.1336 0.9996 -0.9784
--0.07205 2.466 0.1609 0.9996 -0.9668
--0.06931 2.373 0.1853 0.9996 -0.9528
--0.0667 2.283 0.2061 0.9996 -0.9365
--0.06425 2.199 0.223 0.9996 -0.9178
--0.06197 2.121 0.2355 0.9996 -0.8968
--0.05988 2.05 0.2433 0.9996 -0.8735
--0.058 1.985 0.2461 0.9996 -0.8481
--0.05632 1.928 0.2435 0.9996 -0.8206
--0.05488 1.879 0.2354 0.9996 -0.791
--0.05366 1.837 0.2217 0.9996 -0.7594
--0.05269 1.804 0.2023 0.9996 -0.7259
--0.05196 1.779 0.1772 0.9996 -0.6907
--0.05148 1.762 0.1464 0.9996 -0.6536
--0.05124 1.754 0.1101 0.9996 -0.615
--0.05125 1.754 0.06842 0.9996 -0.5748
--0.05149 1.763 0.02168 0.9996 -0.5332
--0.05197 1.779 -0.02983 0.9996 -0.4903
--0.05267 1.803 -0.08571 0.9996 -0.4461
--0.05358 1.834 -0.1456 0.9996 -0.4008
--0.05469 1.872 -0.2089 0.9996 -0.3545
--0.05599 1.917 -0.2751 0.9996 -0.3073
--0.05746 1.967 -0.3437 0.9996 -0.2594
--0.05908 2.022 -0.4141 0.9996 -0.2108
--0.06084 2.083 -0.4856 0.9996 -0.1617
--0.06271 2.147 -0.5575 0.9996 -0.1122
--0.06469 2.214 -0.6293 0.9996 -0.06235
--0.06674 2.285 -0.7 0.9996 -0.01239
--0.06884 2.357 -0.7692 0.9996 0.0376
--0.07098 2.43 -0.8361 0.9996 0.0875
--0.07314 2.504 -0.8999 0.9996 0.1372
--0.07529 2.577 -0.9601 0.9996 0.1865
--0.07741 2.65 -1.016 0.9996 0.2354
--0.07949 2.721 -1.067 0.9996 0.2837
--0.0815 2.79 -1.112 0.9996 0.3312
--0.08342 2.856 -1.152 0.9996 0.378
--0.08525 2.918 -1.185 0.9996 0.4238
--0.08697 2.977 -1.211 0.9996 0.4685
--0.08855 3.031 -1.229 0.9996 0.5121
--0.09 3.081 -1.24 0.9996 0.5544
--0.09129 3.125 -1.243 0.9996 0.5953
--0.09242 3.164 -1.238 0.9996 0.6347
--0.09339 3.197 -1.224 0.9996 0.6725
--0.09419 3.224 -1.203 0.9996 0.7087
--0.09482 3.246 -1.173 0.9996 0.743
--0.09527 3.261 -1.135 0.9996 0.7756
--0.09554 3.271 -1.089 0.9996 0.8061
--0.09565 3.274 -1.036 0.9996 0.8347
--0.0956 3.272 -0.9746 0.9996 0.8612
--0.09538 3.265 -0.9066 0.9996 0.8855
--0.09502 3.253 -0.832 0.9996 0.9076
--0.09452 3.236 -0.7514 0.9996 0.9275
--0.09389 3.214 -0.6653 0.9996 0.945
--0.09315 3.189 -0.5743 0.9996 0.9602
--0.09232 3.16 -0.479 0.9996 0.9729
--0.0914 3.129 -0.3803 0.9996 0.9833
--0.09041 3.095 -0.2787 0.9996 0.9911
--0.08938 3.06 -0.175 0.9996 0.9965
--0.08831 3.023 -0.07001 0.9996 0.9994
--0.2374 2.991 0 0.9969 1
--0.2342 2.951 0.1045 0.9969 0.9988
--0.2312 2.913 0.2081 0.9969 0.995
--0.2282 2.875 0.3103 0.9969 0.9888
--0.2254 2.84 0.4102 0.9969 0.9801
--0.2228 2.807 0.507 0.9969 0.9689
--0.2204 2.777 0.6002 0.9969 0.9553
--0.2183 2.751 0.689 0.9969 0.9394
--0.2166 2.729 0.7728 0.9969 0.9211
--0.2152 2.711 0.851 0.9969 0.9004
--0.2142 2.699 0.9231 0.9969 0.8776
--0.2136 2.692 0.9887 0.9969 0.8525
--0.2135 2.69 1.047 0.9969 0.8253
--0.2139 2.694 1.098 0.9969 0.7961
--0.2147 2.705 1.142 0.9969 0.7648
--0.216 2.721 1.178 0.9969 0.7317
--0.2178 2.744 1.205 0.9969 0.6967
--0.2201 2.773 1.225 0.9969 0.66
--0.2228 2.807 1.236 0.9969 0.6216
--0.226 2.848 1.24 0.9969 0.5817
--0.2297 2.894 1.235 0.9969 0.5403
--0.2338 2.945 1.223 0.9969 0.4976
--0.2382 3.001 1.203 0.9969 0.4536
--0.243 3.062 1.176 0.9969 0.4085
--0.2481 3.126 1.143 0.9969 0.3624
--0.2535 3.194 1.103 0.9969 0.3153
--0.2591 3.265 1.058 0.9969 0.2675
--0.2649 3.338 1.007 0.9969 0.219
--0.2708 3.412 0.9512 0.9969 0.17
--0.2768 3.487 0.8915 0.9969 0.1205
--0.2827 3.562 0.8285 0.9969 0.07074
--0.2886 3.636 0.7626 0.9969 0.02079
--0.2944 3.709 0.6946 0.9969 -0.0292
--0.3001 3.78 0.6252 0.9969 -0.07912
--0.3055 3.849 0.555 0.9969 -0.1288
--0.3106 3.913 0.4848 0.9969 -0.1782
--0.3154 3.973 0.4151 0.9969 -0.2272
--0.3198 4.029 0.3466 0.9969 -0.2756
--0.3237 4.079 0.2799 0.9969 -0.3233
--0.3272 4.123 0.2157 0.9969 -0.3702
--0.3302 4.16 0.1544 0.9969 -0.4161
--0.3326 4.19 0.09656 0.9969 -0.4611
--0.3344 4.213 0.04265 0.9969 -0.5048
--0.3355 4.228 -0.006929 0.9969 -0.5474
--0.3361 4.234 -0.05184 0.9969 -0.5885
--0.3359 4.233 -0.09178 0.9969 -0.6282
--0.3351 4.223 -0.1265 0.9969 -0.6663
--0.3337 4.204 -0.1559 0.9969 -0.7027
--0.3315 4.177 -0.1798 0.9969 -0.7374
--0.3287 4.141 -0.1982 0.9969 -0.7702
--0.3252 4.098 -0.2111 0.9969 -0.8011
--0.3211 4.046 -0.2186 0.9969 -0.8301
--0.3164 3.986 -0.2208 0.9969 -0.8569
--0.3111 3.919 -0.218 0.9969 -0.8816
--0.3052 3.846 -0.2104 0.9969 -0.9041
--0.2989 3.765 -0.1984 0.9969 -0.9243
--0.292 3.679 -0.1823 0.9969 -0.9422
--0.2848 3.588 -0.1625 0.9969 -0.9578
--0.2772 3.493 -0.1395 0.9969 -0.971
--0.2693 3.393 -0.1138 0.9969 -0.9817
--0.2612 3.291 -0.08594 0.9969 -0.99
--0.2529 3.186 -0.05642 0.9969 -0.9958
--0.2444 3.08 -0.02584 0.9969 -0.9991
--0.2359 2.973 0.005234 0.9969 -1
--0.2275 2.866 0.03621 0.9969 -0.9983
--0.2191 2.76 0.0665 0.9969 -0.9941
--0.2108 2.656 0.09553 0.9969 -0.9875
--0.2027 2.554 0.1227 0.9969 -0.9784
--0.1949 2.456 0.1476 0.9969 -0.9668
--0.1874 2.362 0.1695 0.9969 -0.9528
--0.1803 2.272 0.1881 0.9969 -0.9365
--0.1737 2.188 0.2029 0.9969 -0.9178
--0.1675 2.11 0.2135 0.9969 -0.8968
--0.1618 2.039 0.2195 0.9969 -0.8735
--0.1567 1.974 0.2206 0.9969 -0.8481
--0.1522 1.917 0.2166 0.9969 -0.8206
--0.1483 1.868 0.2073 0.9969 -0.791
--0.145 1.827 0.1926 0.9969 -0.7594
--0.1424 1.794 0.1724 0.9969 -0.7259
--0.1405 1.77 0.1466 0.9969 -0.6907
--0.1392 1.754 0.1154 0.9969 -0.6536
--0.1387 1.747 0.07892 0.9969 -0.615
--0.1388 1.748 0.03728 0.9969 -0.5748
--0.1395 1.758 -0.00924 0.9969 -0.5332
--0.1409 1.775 -0.06032 0.9969 -0.4903
--0.1429 1.801 -0.1156 0.9969 -0.4461
--0.1455 1.833 -0.1746 0.9969 -0.4008
--0.1486 1.873 -0.237 0.9969 -0.3545
--0.1523 1.919 -0.3021 0.9969 -0.3073
--0.1564 1.97 -0.3694 0.9969 -0.2594
--0.1609 2.028 -0.4384 0.9969 -0.2108
--0.1658 2.089 -0.5084 0.9969 -0.1617
--0.1711 2.155 -0.5787 0.9969 -0.1122
--0.1765 2.224 -0.6487 0.9969 -0.06235
--0.1822 2.296 -0.7177 0.9969 -0.01239
--0.1881 2.37 -0.785 0.9969 0.0376
--0.194 2.444 -0.85 0.9969 0.0875
--0.2 2.52 -0.912 0.9969 0.1372
--0.2059 2.594 -0.9703 0.9969 0.1865
--0.2118 2.668 -1.024 0.9969 0.2354
--0.2175 2.74 -1.074 0.9969 0.2837
--0.223 2.81 -1.117 0.9969 0.3312
--0.2283 2.877 -1.155 0.9969 0.378
--0.2334 2.94 -1.186 0.9969 0.4238
--0.238 2.999 -1.211 0.9969 0.4685
--0.2424 3.054 -1.228 0.9969 0.5121
--0.2463 3.103 -1.237 0.9969 0.5544
--0.2498 3.148 -1.239 0.9969 0.5953
--0.2529 3.186 -1.233 0.9969 0.6347
--0.2555 3.219 -1.219 0.9969 0.6725
--0.2576 3.246 -1.197 0.9969 0.7087
--0.2592 3.266 -1.166 0.9969 0.743
--0.2604 3.281 -1.128 0.9969 0.7756
--0.261 3.289 -1.082 0.9969 0.8061
--0.2612 3.291 -1.028 0.9969 0.8347
--0.261 3.288 -0.9674 0.9969 0.8612
--0.2602 3.279 -0.8996 0.9969 0.8855
--0.2591 3.265 -0.8254 0.9969 0.9076
--0.2576 3.246 -0.7452 0.9969 0.9275
--0.2557 3.222 -0.6597 0.9969 0.945
--0.2535 3.194 -0.5693 0.9969 0.9602
--0.2511 3.164 -0.4748 0.9969 0.9729
--0.2484 3.13 -0.3769 0.9969 0.9833
--0.2455 3.094 -0.2762 0.9969 0.9911
--0.2425 3.056 -0.1734 0.9969 0.9965
--0.2394 3.017 -0.06937 0.9969 0.9994
--0.3865 2.975 0 0.9917 1
--0.3811 2.933 0.1034 0.9917 0.9988
--0.3758 2.892 0.2061 0.9917 0.995
--0.3706 2.853 0.3073 0.9917 0.9888
--0.3657 2.815 0.4063 0.9917 0.9801
--0.3612 2.78 0.5023 0.9917 0.9689
--0.357 2.748 0.5947 0.9917 0.9553
--0.3533 2.719 0.6828 0.9917 0.9394
--0.3502 2.695 0.766 0.9917 0.9211
--0.3477 2.676 0.8438 0.9917 0.9004
--0.3458 2.662 0.9155 0.9917 0.8776
--0.3447 2.653 0.9809 0.9917 0.8525
--0.3443 2.65 1.039 0.9917 0.8253
--0.3447 2.653 1.091 0.9917 0.7961
--0.3459 2.662 1.134 0.9917 0.7648
--0.3479 2.678 1.17 0.9917 0.7317
--0.3508 2.7 1.199 0.9917 0.6967
--0.3544 2.728 1.219 0.9917 0.66
--0.3589 2.762 1.231 0.9917 0.6216
--0.3641 2.802 1.236 0.9917 0.5817
--0.3701 2.848 1.232 0.9917 0.5403
--0.3767 2.9 1.221 0.9917 0.4976
--0.3841 2.956 1.203 0.9917 0.4536
--0.392 3.017 1.178 0.9917 0.4085
--0.4004 3.082 1.146 0.9917 0.3624
--0.4093 3.15 1.108 0.9917 0.3153
--0.4186 3.222 1.064 0.9917 0.2675
--0.4281 3.295 1.015 0.9917 0.219
--0.4379 3.37 0.9614 0.9917 0.17
--0.4478 3.446 0.9037 0.9917 0.1205
--0.4577 3.523 0.8425 0.9917 0.07074
--0.4675 3.598 0.7786 0.9917 0.02079
--0.4772 3.673 0.7124 0.9917 -0.0292
--0.4866 3.745 0.6448 0.9917 -0.07912
--0.4956 3.814 0.5764 0.9917 -0.1288
--0.5042 3.88 0.5077 0.9917 -0.1782
--0.5122 3.942 0.4396 0.9917 -0.2272
--0.5196 3.999 0.3725 0.9917 -0.2756
--0.5262 4.05 0.3071 0.9917 -0.3233
--0.5321 4.095 0.244 0.9917 -0.3702
--0.5371 4.134 0.1837 0.9917 -0.4161
--0.5412 4.165 0.1266 0.9917 -0.4611
--0.5443 4.189 0.07329 0.9917 -0.5048
--0.5464 4.205 0.02409 0.9917 -0.5474
--0.5474 4.213 -0.02063 0.9917 -0.5885
--0.5473 4.213 -0.0606 0.9917 -0.6282
--0.5461 4.203 -0.09559 0.9917 -0.6663
--0.5438 4.186 -0.1254 0.9917 -0.7027
--0.5404 4.159 -0.15 0.9917 -0.7374
--0.5359 4.124 -0.1693 0.9917 -0.7702
--0.5302 4.081 -0.1833 0.9917 -0.8011
--0.5236 4.03 -0.192 0.9917 -0.8301
--0.5159 3.971 -0.1958 0.9917 -0.8569
--0.5072 3.904 -0.1947 0.9917 -0.8816
--0.4977 3.83 -0.1889 0.9917 -0.9041
--0.4873 3.75 -0.1789 0.9917 -0.9243
--0.4761 3.665 -0.165 0.9917 -0.9422
--0.4643 3.573 -0.1475 0.9917 -0.9578
--0.4519 3.478 -0.1269 0.9917 -0.971
--0.4389 3.378 -0.1037 0.9917 -0.9817
--0.4256 3.276 -0.07839 0.9917 -0.99
--0.4119 3.171 -0.05151 0.9917 -0.9958
--0.3981 3.064 -0.0236 0.9917 -0.9991
--0.3842 2.957 0.004781 0.9917 -1
--0.3703 2.85 0.03307 0.9917 -0.9983
--0.3565 2.744 0.06069 0.9917 -0.9941
--0.343 2.64 0.0871 0.9917 -0.9875
--0.3298 2.538 0.1118 0.9917 -0.9784
--0.317 2.44 0.1341 0.9917 -0.9668
--0.3047 2.345 0.1537 0.9917 -0.9528
--0.2931 2.256 0.1701 0.9917 -0.9365
--0.2822 2.172 0.1827 0.9917 -0.9178
--0.2721 2.094 0.1914 0.9917 -0.8968
--0.2628 2.023 0.1956 0.9917 -0.8735
--0.2545 1.959 0.1951 0.9917 -0.8481
--0.2471 1.902 0.1897 0.9917 -0.8206
--0.2408 1.853 0.1791 0.9917 -0.791
--0.2356 1.813 0.1634 0.9917 -0.7594
--0.2314 1.781 0.1423 0.9917 -0.7259
--0.2283 1.757 0.116 0.9917 -0.6907
--0.2264 1.743 0.08439 0.9917 -0.6536
--0.2256 1.736 0.04771 0.9917 -0.615
--0.2259 1.739 0.006111 0.9917 -0.5748
--0.2273 1.749 -0.04015 0.9917 -0.5332
--0.2297 1.768 -0.09078 0.9917 -0.4903
--0.2331 1.794 -0.1454 0.9917 -0.4461
--0.2375 1.828 -0.2036 0.9917 -0.4008
--0.2428 1.869 -0.2649 0.9917 -0.3545
--0.249 1.916 -0.3289 0.9917 -0.3073
--0.2559 1.97 -0.3949 0.9917 -0.2594
--0.2635 2.028 -0.4624 0.9917 -0.2108
--0.2717 2.091 -0.5308 0.9917 -0.1617
--0.2805 2.159 -0.5994 0.9917 -0.1122
--0.2896 2.229 -0.6677 0.9917 -0.06235
--0.2991 2.302 -0.7349 0.9917 -0.01239
--0.3088 2.377 -0.8003 0.9917 0.0376
--0.3187 2.453 -0.8635 0.9917 0.0875
--0.3286 2.529 -0.9235 0.9917 0.1372
--0.3385 2.605 -0.98 0.9917 0.1865
--0.3482 2.68 -1.032 0.9917 0.2354
--0.3577 2.753 -1.079 0.9917 0.2837
--0.3668 2.823 -1.121 0.9917 0.3312
--0.3756 2.89 -1.157 0.9917 0.378
--0.3838 2.954 -1.187 0.9917 0.4238
--0.3915 3.014 -1.21 0.9917 0.4685
--0.3986 3.068 -1.226 0.9917 0.5121
--0.4051 3.118 -1.234 0.9917 0.5544
--0.4108 3.162 -1.235 0.9917 0.5953
--0.4158 3.2 -1.228 0.9917 0.6347
--0.42 3.232 -1.213 0.9917 0.6725
--0.4233 3.258 -1.19 0.9917 0.7087
--0.4259 3.278 -1.159 0.9917 0.743
--0.4276 3.291 -1.12 0.9917 0.7756
--0.4286 3.298 -1.074 0.9917 0.8061
--0.4287 3.299 -1.02 0.9917 0.8347
--0.4281 3.295 -0.9596 0.9917 0.8612
--0.4267 3.284 -0.8921 0.9917 0.8855
--0.4246 3.268 -0.8183 0.9917 0.9076
--0.4219 3.247 -0.7386 0.9917 0.9275
--0.4186 3.221 -0.6537 0.9917 0.945
--0.4147 3.192 -0.564 0.9917 0.9602
--0.4104 3.159 -0.4704 0.9917 0.9729
--0.4057 3.123 -0.3733 0.9917 0.9833
--0.4007 3.084 -0.2735 0.9917 0.9911
--0.3955 3.044 -0.1717 0.9917 0.9965
--0.3901 3.003 -0.0687 0.9917 0.9994
--0.5347 2.952 0 0.984 1
--0.5268 2.908 0.1024 0.984 0.9988
--0.519 2.865 0.204 0.984 0.995
--0.5114 2.823 0.3041 0.984 0.9888
--0.5042 2.783 0.4021 0.984 0.9801
--0.4974 2.746 0.4972 0.984 0.9689
--0.4913 2.712 0.5888 0.984 0.9553
--0.4858 2.682 0.6761 0.984 0.9394
--0.4811 2.656 0.7587 0.984 0.9211
--0.4773 2.635 0.836 0.984 0.9004
--0.4744 2.619 0.9074 0.984 0.8776
--0.4725 2.609 0.9724 0.984 0.8525
--0.4717 2.604 1.031 0.984 0.8253
--0.4721 2.606 1.082 0.984 0.7961
--0.4735 2.614 1.126 0.984 0.7648
--0.4762 2.629 1.163 0.984 0.7317
--0.4799 2.649 1.191 0.984 0.6967
--0.4849 2.677 1.212 0.984 0.66
--0.491 2.711 1.225 0.984 0.6216
--0.4982 2.75 1.231 0.984 0.5817
--0.5065 2.796 1.229 0.984 0.5403
--0.5157 2.847 1.219 0.984 0.4976
--0.526 2.903 1.202 0.984 0.4536
--0.537 2.964 1.179 0.984 0.4085
--0.5488 3.03 1.148 0.984 0.3624
--0.5613 3.099 1.112 0.984 0.3153
--0.5743 3.17 1.07 0.984 0.2675
--0.5877 3.245 1.023 0.984 0.219
--0.6015 3.321 0.9711 0.984 0.17
--0.6154 3.397 0.9153 0.984 0.1205
--0.6294 3.475 0.8561 0.984 0.07074
--0.6433 3.551 0.794 0.984 0.02079
--0.6569 3.627 0.7298 0.984 -0.0292
--0.6702 3.7 0.664 0.984 -0.07912
--0.683 3.77 0.5973 0.984 -0.1288
--0.6952 3.838 0.5304 0.984 -0.1782
--0.7065 3.9 0.4638 0.984 -0.2272
--0.7171 3.958 0.3982 0.984 -0.2756
--0.7266 4.011 0.3341 0.984 -0.3233
--0.735 4.057 0.2722 0.984 -0.3702
--0.7422 4.097 0.2128 0.984 -0.4161
--0.7481 4.13 0.1566 0.984 -0.4611
--0.7526 4.155 0.1039 0.984 -0.5048
--0.7557 4.172 0.0551 0.984 -0.5474
--0.7573 4.181 0.01058 0.984 -0.5885
--0.7574 4.181 -0.02939 0.984 -0.6282
--0.7559 4.173 -0.06459 0.984 -0.6663
--0.7528 4.156 -0.09486 0.984 -0.7027
--0.7482 4.13 -0.1201 0.984 -0.7374
--0.742 4.096 -0.1402 0.984 -0.7702
--0.7343 4.054 -0.1553 0.984 -0.8011
--0.7251 4.003 -0.1654 0.984 -0.8301
--0.7145 3.944 -0.1706 0.984 -0.8569
--0.7025 3.878 -0.1712 0.984 -0.8816
--0.6893 3.805 -0.1673 0.984 -0.9041
--0.6749 3.726 -0.1593 0.984 -0.9243
--0.6594 3.64 -0.1475 0.984 -0.9422
--0.6429 3.549 -0.1323 0.984 -0.9578
--0.6256 3.454 -0.1142 0.984 -0.971
--0.6076 3.354 -0.0935 0.984 -0.9817
--0.5891 3.252 -0.07079 0.984 -0.99
--0.5701 3.147 -0.04656 0.984 -0.9958
--0.5509 3.041 -0.02135 0.984 -0.9991
--0.5315 2.934 0.004325 0.984 -1
--0.5121 2.827 0.0299 0.984 -0.9983
--0.4929 2.721 0.05485 0.984 -0.9941
--0.4741 2.617 0.07862 0.984 -0.9875
--0.4557 2.516 0.1007 0.984 -0.9784
--0.4379 2.418 0.1206 0.984 -0.9668
--0.4209 2.324 0.1378 0.984 -0.9528
--0.4048 2.235 0.1519 0.984 -0.9365
--0.3896 2.151 0.1624 0.984 -0.9178
--0.3756 2.073 0.1691 0.984 -0.8968
--0.3628 2.003 0.1715 0.984 -0.8735
--0.3512 1.939 0.1694 0.984 -0.8481
--0.3411 1.883 0.1626 0.984 -0.8206
--0.3324 1.835 0.1508 0.984 -0.791
--0.3252 1.795 0.134 0.984 -0.7594
--0.3195 1.764 0.1122 0.984 -0.7259
--0.3154 1.741 0.08524 0.984 -0.6907
--0.3129 1.727 0.0533 0.984 -0.6536
--0.312 1.722 0.01647 0.984 -0.615
--0.3125 1.725 -0.02506 0.984 -0.5748
--0.3147 1.737 -0.07104 0.984 -0.5332
--0.3182 1.757 -0.1212 0.984 -0.4903
--0.3232 1.784 -0.1751 0.984 -0.4461
--0.3296 1.819 -0.2325 0.984 -0.4008
--0.3372 1.861 -0.2927 0.984 -0.3545
--0.346 1.91 -0.3555 0.984 -0.3073
--0.3558 1.964 -0.4201 0.984 -0.2594
--0.3667 2.024 -0.4861 0.984 -0.2108
--0.3783 2.089 -0.5529 0.984 -0.1617
--0.3907 2.157 -0.6198 0.984 -0.1122
--0.4037 2.228 -0.6863 0.984 -0.06235
--0.4171 2.303 -0.7516 0.984 -0.01239
--0.4308 2.378 -0.8152 0.984 0.0376
--0.4448 2.455 -0.8763 0.984 0.0875
--0.4587 2.532 -0.9345 0.984 0.1372
--0.4726 2.609 -0.989 0.984 0.1865
--0.4863 2.685 -1.039 0.984 0.2354
--0.4996 2.758 -1.085 0.984 0.2837
--0.5124 2.829 -1.125 0.984 0.3312
--0.5247 2.897 -1.159 0.984 0.378
--0.5363 2.96 -1.187 0.984 0.4238
--0.5471 3.02 -1.209 0.984 0.4685
--0.557 3.075 -1.223 0.984 0.5121
--0.5659 3.124 -1.23 0.984 0.5544
--0.5738 3.168 -1.23 0.984 0.5953
--0.5806 3.205 -1.222 0.984 0.6347
--0.5864 3.237 -1.206 0.984 0.6725
--0.5909 3.262 -1.183 0.984 0.7087
--0.5943 3.281 -1.151 0.984 0.743
--0.5966 3.293 -1.112 0.984 0.7756
--0.5977 3.299 -1.066 0.984 0.8061
--0.5976 3.299 -1.012 0.984 0.8347
--0.5964 3.293 -0.9513 0.984 0.8612
--0.5942 3.28 -0.884 0.984 0.8855
--0.591 3.263 -0.8106 0.984 0.9076
--0.5869 3.24 -0.7315 0.984 0.9275
--0.5819 3.213 -0.6473 0.984 0.945
--0.5762 3.181 -0.5584 0.984 0.9602
--0.5699 3.146 -0.4656 0.984 0.9729
--0.5629 3.108 -0.3694 0.984 0.9833
--0.5556 3.067 -0.2707 0.984 0.9911
--0.5479 3.025 -0.1699 0.984 0.9965
--0.54 2.981 -0.06798 0.984 0.9994
--0.6816 2.922 0 0.9738 1
--0.6709 2.876 0.1012 0.9738 0.9988
--0.6603 2.83 0.2017 0.9738 0.995
--0.6501 2.787 0.3008 0.9738 0.9888
--0.6404 2.745 0.3977 0.9738 0.9801
--0.6312 2.706 0.4918 0.9738 0.9689
--0.6229 2.67 0.5825 0.9738 0.9553
--0.6154 2.638 0.6691 0.9738 0.9394
--0.6089 2.61 0.751 0.9738 0.9211
--0.6036 2.587 0.8276 0.9738 0.9004
--0.5996 2.57 0.8986 0.9738 0.8776
--0.5968 2.558 0.9634 0.9738 0.8525
--0.5955 2.552 1.022 0.9738 0.8253
--0.5956 2.553 1.073 0.9738 0.7961
--0.5972 2.56 1.117 0.9738 0.7648
--0.6003 2.573 1.154 0.9738 0.7317
--0.605 2.593 1.183 0.9738 0.6967
--0.6112 2.62 1.205 0.9738 0.66
--0.6189 2.653 1.219 0.9738 0.6216
--0.6281 2.692 1.225 0.9738 0.5817
--0.6386 2.737 1.224 0.9738 0.5403
--0.6505 2.788 1.216 0.9738 0.4976
--0.6636 2.844 1.201 0.9738 0.4536
--0.6778 2.905 1.179 0.9738 0.4085
--0.693 2.97 1.15 0.9738 0.3624
--0.7091 3.039 1.115 0.9738 0.3153
--0.7259 3.112 1.075 0.9738 0.2675
--0.7433 3.186 1.03 0.9738 0.219
--0.7612 3.263 0.9802 0.9738 0.17
--0.7792 3.34 0.9263 0.9738 0.1205
--0.7974 3.418 0.8691 0.9738 0.07074
--0.8154 3.495 0.809 0.9738 0.02079
--0.8332 3.571 0.7467 0.9738 -0.0292
--0.8505 3.645 0.6828 0.9738 -0.07912
--0.8671 3.717 0.618 0.9738 -0.1288
--0.883 3.785 0.5527 0.9738 -0.1782
--0.8979 3.849 0.4878 0.9738 -0.2272
--0.9117 3.908 0.4236 0.9738 -0.2756
--0.9241 3.961 0.3609 0.9738 -0.3233
--0.9352 4.009 0.3002 0.9738 -0.3702
--0.9447 4.049 0.2418 0.9738 -0.4161
--0.9526 4.083 0.1864 0.9738 -0.4611
--0.9586 4.109 0.1344 0.9738 -0.5048
--0.9629 4.127 0.08607 0.9738 -0.5474
--0.9652 4.137 0.04179 0.9738 -0.5885
--0.9655 4.138 0.001843 0.9738 -0.6282
--0.9638 4.131 -0.03356 0.9738 -0.6663
--0.96 4.115 -0.06425 0.9738 -0.7027
--0.9543 4.09 -0.09012 0.9738 -0.7374
--0.9465 4.057 -0.1111 0.9738 -0.7702
--0.9368 4.015 -0.1273 0.9738 -0.8011
--0.9251 3.965 -0.1386 0.9738 -0.8301
--0.9116 3.908 -0.1454 0.9738 -0.8569
--0.8964 3.842 -0.1476 0.9738 -0.8816
--0.8795 3.77 -0.1456 0.9738 -0.9041
--0.8611 3.691 -0.1396 0.9738 -0.9243
--0.8413 3.606 -0.13 0.9738 -0.9422
--0.8202 3.516 -0.1171 0.9738 -0.9578
--0.7981 3.421 -0.1014 0.9738 -0.971
--0.775 3.322 -0.08324 0.9738 -0.9817
--0.7513 3.22 -0.06314 0.9738 -0.99
--0.7269 3.116 -0.04159 0.9738 -0.9958
--0.7023 3.01 -0.01908 0.9738 -0.9991
--0.6774 2.904 0.003866 0.9738 -1
--0.6526 2.797 0.02672 0.9738 -0.9983
--0.628 2.692 0.04897 0.9738 -0.9941
--0.6039 2.588 0.07009 0.9738 -0.9875
--0.5803 2.487 0.08959 0.9738 -0.9784
--0.5576 2.39 0.107 0.9738 -0.9668
--0.5358 2.297 0.1218 0.9738 -0.9528
--0.5151 2.208 0.1336 0.9738 -0.9365
--0.4958 2.125 0.142 0.9738 -0.9178
--0.4779 2.048 0.1467 0.9738 -0.8968
--0.4615 1.978 0.1473 0.9738 -0.8735
--0.4468 1.915 0.1436 0.9738 -0.8481
--0.4339 1.86 0.1354 0.9738 -0.8206
--0.4229 1.813 0.1224 0.9738 -0.791
--0.4139 1.774 0.1046 0.9738 -0.7594
--0.4068 1.743 0.08196 0.9738 -0.7259
--0.4017 1.722 0.05446 0.9738 -0.6907
--0.3986 1.709 0.02217 0.9738 -0.6536
--0.3976 1.704 -0.01478 0.9738 -0.615
--0.3986 1.709 -0.05621 0.9738 -0.5748
--0.4016 1.721 -0.1019 0.9738 -0.5332
--0.4064 1.742 -0.1515 0.9738 -0.4903
--0.4131 1.771 -0.2047 0.9738 -0.4461
--0.4215 1.807 -0.2611 0.9738 -0.4008
--0.4316 1.85 -0.3203 0.9738 -0.3545
--0.4431 1.899 -0.3818 0.9738 -0.3073
--0.456 1.955 -0.4451 0.9738 -0.2594
--0.4702 2.015 -0.5095 0.9738 -0.2108
--0.4854 2.081 -0.5747 0.9738 -0.1617
--0.5016 2.15 -0.6398 0.9738 -0.1122
--0.5185 2.222 -0.7044 0.9738 -0.06235
--0.536 2.297 -0.7679 0.9738 -0.01239
--0.5538 2.374 -0.8295 0.9738 0.0376
--0.5719 2.451 -0.8887 0.9738 0.0875
--0.5901 2.529 -0.9449 0.9738 0.1372
--0.6081 2.606 -0.9974 0.9738 0.1865
--0.6258 2.682 -1.046 0.9738 0.2354
--0.643 2.756 -1.089 0.9738 0.2837
--0.6596 2.827 -1.128 0.9738 0.3312
--0.6754 2.895 -1.16 0.9738 0.378
--0.6903 2.959 -1.187 0.9738 0.4238
--0.7042 3.018 -1.207 0.9738 0.4685
--0.7169 3.073 -1.22 0.9738 0.5121
--0.7283 3.122 -1.226 0.9738 0.5544
--0.7384 3.165 -1.224 0.9738 0.5953
--0.747 3.202 -1.215 0.9738 0.6347
--0.7542 3.233 -1.198 0.9738 0.6725
--0.7599 3.257 -1.174 0.9738 0.7087
--0.7641 3.275 -1.142 0.9738 0.743
--0.7667 3.286 -1.103 0.9738 0.7756
--0.7678 3.291 -1.057 0.9738 0.8061
--0.7674 3.289 -1.003 0.9738 0.8347
--0.7656 3.282 -0.9423 0.9738 0.8612
--0.7624 3.268 -0.8754 0.9738 0.8855
--0.7579 3.249 -0.8025 0.9738 0.9076
--0.7522 3.224 -0.724 0.9738 0.9275
--0.7454 3.195 -0.6404 0.9738 0.945
--0.7376 3.162 -0.5524 0.9738 0.9602
--0.729 3.125 -0.4605 0.9738 0.9729
--0.7196 3.085 -0.3654 0.9738 0.9833
--0.7097 3.042 -0.2676 0.9738 0.9911
--0.6993 2.998 -0.168 0.9738 0.9965
--0.6887 2.952 -0.06722 0.9738 0.9994
--0.8268 2.884 0 0.9613 1
--0.8131 2.836 0.1 0.9613 0.9988
--0.7996 2.789 0.1993 0.9613 0.995
--0.7865 2.743 0.2972 0.9613 0.9888
--0.774 2.7 0.393 0.9613 0.9801
--0.7623 2.659 0.4861 0.9613 0.9689
--0.7515 2.621 0.5758 0.9613 0.9553
--0.7419 2.588 0.6616 0.9613 0.9394
--0.7335 2.558 0.7427 0.9613 0.9211
--0.7265 2.534 0.8188 0.9613 0.9004
--0.7211 2.515 0.8893 0.9613 0.8776
--0.7173 2.502 0.9538 0.9613 0.8525
--0.7153 2.495 1.012 0.9613 0.8253
--0.7151 2.494 1.063 0.9613 0.7961
--0.7167 2.5 1.108 0.9613 0.7648
--0.7203 2.512 1.145 0.9613 0.7317
--0.7258 2.531 1.174 0.9613 0.6967
--0.7331 2.557 1.197 0.9613 0.66
--0.7424 2.589 1.212 0.9613 0.6216
--0.7534 2.628 1.219 0.9613 0.5817
--0.7662 2.673 1.219 0.9613 0.5403
--0.7807 2.723 1.212 0.9613 0.4976
--0.7966 2.779 1.198 0.9613 0.4536
--0.814 2.839 1.178 0.9613 0.4085
--0.8327 2.904 1.151 0.9613 0.3624
--0.8525 2.973 1.118 0.9613 0.3153
--0.8731 3.046 1.08 0.9613 0.2675
--0.8945 3.12 1.036 0.9613 0.219
--0.9165 3.197 0.9886 0.9613 0.17
--0.9388 3.274 0.9368 0.9613 0.1205
--0.9612 3.353 0.8816 0.9613 0.07074
--0.9834 3.43 0.8235 0.9613 0.02079
--1.005 3.507 0.7631 0.9613 -0.0292
--1.027 3.582 0.7012 0.9613 -0.07912
--1.047 3.654 0.6382 0.9613 -0.1288
--1.067 3.722 0.5747 0.9613 -0.1782
--1.086 3.787 0.5114 0.9613 -0.2272
--1.103 3.847 0.4488 0.9613 -0.2756
--1.118 3.901 0.3875 0.9613 -0.3233
--1.132 3.949 0.328 0.9613 -0.3702
--1.144 3.991 0.2707 0.9613 -0.4161
--1.154 4.025 0.2162 0.9613 -0.4611
--1.162 4.052 0.1648 0.9613 -0.5048
--1.167 4.071 0.117 0.9613 -0.5474
--1.17 4.082 0.07297 0.9613 -0.5885
--1.171 4.084 0.03307 0.9613 -0.6282
--1.169 4.078 -0.002502 0.9613 -0.6663
--1.165 4.063 -0.03359 0.9613 -0.7027
--1.158 4.039 -0.06009 0.9613 -0.7374
--1.149 4.007 -0.08194 0.9613 -0.7702
--1.137 3.966 -0.09916 0.9613 -0.8011
--1.123 3.917 -0.1118 0.9613 -0.8301
--1.107 3.86 -0.12 0.9613 -0.8569
--1.088 3.796 -0.1239 0.9613 -0.8816
--1.068 3.724 -0.1238 0.9613 -0.9041
--1.045 3.646 -0.1198 0.9613 -0.9243
--1.021 3.562 -0.1124 0.9613 -0.9422
--0.9957 3.473 -0.1018 0.9613 -0.9578
--0.9687 3.379 -0.08854 0.9613 -0.971
--0.9406 3.281 -0.07294 0.9613 -0.9817
--0.9117 3.18 -0.05546 0.9613 -0.99
--0.882 3.077 -0.03659 0.9613 -0.9958
--0.852 2.972 -0.0168 0.9613 -0.9991
--0.8217 2.866 0.003405 0.9613 -1
--0.7914 2.761 0.02352 0.9613 -0.9983
--0.7615 2.656 0.04306 0.9613 -0.9941
--0.732 2.553 0.06152 0.9613 -0.9875
--0.7033 2.453 0.07842 0.9613 -0.9784
--0.6756 2.357 0.09329 0.9613 -0.9668
--0.6491 2.264 0.1057 0.9613 -0.9528
--0.624 2.177 0.1153 0.9613 -0.9365
--0.6005 2.094 0.1215 0.9613 -0.9178
--0.5787 2.019 0.1243 0.9613 -0.8968
--0.5589 1.949 0.1231 0.9613 -0.8735
--0.5411 1.887 0.1177 0.9613 -0.8481
--0.5255 1.833 0.1081 0.9613 -0.8206
--0.5123 1.787 0.09389 0.9613 -0.791
--0.5014 1.749 0.07511 0.9613 -0.7594
--0.4929 1.719 0.05169 0.9613 -0.7259
--0.487 1.699 0.02364 0.9613 -0.6907
--0.4835 1.686 -0.008968 0.9613 -0.6536
--0.4825 1.683 -0.04602 0.9613 -0.615
--0.484 1.688 -0.08733 0.9613 -0.5748
--0.4879 1.702 -0.1327 0.9613 -0.5332
--0.4941 1.724 -0.1817 0.9613 -0.4903
--0.5026 1.753 -0.2342 0.9613 -0.4461
--0.5132 1.79 -0.2897 0.9613 -0.4008
--0.5258 1.834 -0.3478 0.9613 -0.3545
--0.5402 1.884 -0.4079 0.9613 -0.3073
--0.5563 1.94 -0.4698 0.9613 -0.2594
--0.5739 2.002 -0.5326 0.9613 -0.2108
--0.5929 2.068 -0.5961 0.9613 -0.1617
--0.6129 2.138 -0.6594 0.9613 -0.1122
--0.6338 2.211 -0.7222 0.9613 -0.06235
--0.6555 2.286 -0.7836 0.9613 -0.01239
--0.6776 2.363 -0.8433 0.9613 0.0376
--0.6999 2.441 -0.9005 0.9613 0.0875
--0.7223 2.519 -0.9546 0.9613 0.1372
--0.7445 2.597 -1.005 0.9613 0.1865
--0.7663 2.673 -1.052 0.9613 0.2354
--0.7875 2.747 -1.093 0.9613 0.2837
--0.8078 2.818 -1.13 0.9613 0.3312
--0.8273 2.886 -1.161 0.9613 0.378
--0.8455 2.949 -1.185 0.9613 0.4238
--0.8624 3.008 -1.204 0.9613 0.4685
--0.8779 3.062 -1.215 0.9613 0.5121
--0.8918 3.111 -1.22 0.9613 0.5544
--0.904 3.153 -1.217 0.9613 0.5953
--0.9145 3.19 -1.208 0.9613 0.6347
--0.9231 3.22 -1.19 0.9613 0.6725
--0.9298 3.243 -1.165 0.9613 0.7087
--0.9347 3.26 -1.133 0.9613 0.743
--0.9376 3.27 -1.093 0.9613 0.7756
--0.9386 3.274 -1.047 0.9613 0.8061
--0.9378 3.271 -0.9931 0.9613 0.8347
--0.9351 3.262 -0.9328 0.9613 0.8612
--0.9308 3.247 -0.8662 0.9613 0.8855
--0.9249 3.226 -0.7938 0.9613 0.9076
--0.9174 3.2 -0.716 0.9613 0.9275
--0.9086 3.169 -0.6332 0.9613 0.945
--0.8985 3.134 -0.5461 0.9613 0.9602
--0.8874 3.095 -0.4552 0.9613 0.9729
--0.8754 3.053 -0.3611 0.9613 0.9833
--0.8627 3.009 -0.2645 0.9613 0.9911
--0.8494 2.963 -0.166 0.9613 0.9965
--0.8359 2.916 -0.06641 0.9613 0.9994
--0.9699 2.839 0 0.9463 1
--0.953 2.79 0.09873 0.9463 0.9988
--0.9364 2.741 0.1968 0.9463 0.995
--0.9203 2.694 0.2935 0.9463 0.9888
--0.9048 2.649 0.3881 0.9463 0.9801
--0.8903 2.606 0.4801 0.9463 0.9689
--0.877 2.567 0.5688 0.9463 0.9553
--0.8649 2.532 0.6536 0.9463 0.9394
--0.8545 2.501 0.734 0.9463 0.9211
--0.8457 2.475 0.8095 0.9463 0.9004
--0.8387 2.455 0.8794 0.9463 0.8776
--0.8338 2.441 0.9436 0.9463 0.8525
--0.831 2.432 1.001 0.9463 0.8253
--0.8303 2.43 1.053 0.9463 0.7961
--0.8319 2.435 1.097 0.9463 0.7648
--0.8357 2.446 1.135 0.9463 0.7317
--0.8419 2.464 1.165 0.9463 0.6967
--0.8504 2.489 1.188 0.9463 0.66
--0.8611 2.52 1.204 0.9463 0.6216
--0.874 2.558 1.212 0.9463 0.5817
--0.889 2.602 1.213 0.9463 0.5403
--0.906 2.652 1.208 0.9463 0.4976
--0.9249 2.707 1.195 0.9463 0.4536
--0.9454 2.767 1.176 0.9463 0.4085
--0.9675 2.832 1.151 0.9463 0.3624
--0.9909 2.901 1.12 0.9463 0.3153
--1.016 2.972 1.084 0.9463 0.2675
--1.041 3.047 1.042 0.9463 0.219
--1.067 3.123 0.9964 0.9463 0.17
--1.094 3.201 0.9467 0.9463 0.1205
--1.12 3.279 0.8935 0.9463 0.07074
--1.147 3.357 0.8374 0.9463 0.02079
--1.173 3.434 0.7791 0.9463 -0.0292
--1.199 3.509 0.7191 0.9463 -0.07912
--1.224 3.581 0.658 0.9463 -0.1288
--1.247 3.651 0.5963 0.9463 -0.1782
--1.269 3.716 0.5347 0.9463 -0.2272
--1.29 3.776 0.4737 0.9463 -0.2756
--1.309 3.831 0.4138 0.9463 -0.3233
--1.325 3.88 0.3556 0.9463 -0.3702
--1.34 3.922 0.2994 0.9463 -0.4161
--1.352 3.957 0.2458 0.9463 -0.4611
--1.361 3.985 0.1952 0.9463 -0.5048
--1.368 4.005 0.1478 0.9463 -0.5474
--1.372 4.016 0.1041 0.9463 -0.5885
--1.373 4.02 0.06428 0.9463 -0.6282
--1.371 4.014 0.02855 0.9463 -0.6663
--1.367 4 -0.002915 0.9463 -0.7027
--1.359 3.977 -0.03002 0.9463 -0.7374
--1.348 3.946 -0.05271 0.9463 -0.7702
--1.335 3.906 -0.07098 0.9463 -0.8011
--1.318 3.859 -0.0849 0.9463 -0.8301
--1.299 3.803 -0.09457 0.9463 -0.8569
--1.277 3.739 -0.1002 0.9463 -0.8816
--1.253 3.669 -0.1019 0.9463 -0.9041
--1.227 3.592 -0.09995 0.9463 -0.9243
--1.199 3.509 -0.09471 0.9463 -0.9422
--1.169 3.421 -0.08649 0.9463 -0.9578
--1.137 3.328 -0.07564 0.9463 -0.971
--1.104 3.232 -0.06258 0.9463 -0.9817
--1.07 3.132 -0.04774 0.9463 -0.99
--1.035 3.029 -0.03156 0.9463 -0.9958
--0.9995 2.926 -0.01451 0.9463 -0.9991
--0.9639 2.821 0.002942 0.9463 -1
--0.9282 2.717 0.02031 0.9463 -0.9983
--0.893 2.614 0.03712 0.9463 -0.9941
--0.8583 2.512 0.05291 0.9463 -0.9875
--0.8245 2.413 0.0672 0.9463 -0.9784
--0.7919 2.318 0.07956 0.9463 -0.9668
--0.7607 2.227 0.08956 0.9463 -0.9528
--0.7311 2.14 0.09683 0.9463 -0.9365
--0.7035 2.059 0.101 0.9463 -0.9178
--0.6779 1.984 0.1017 0.9463 -0.8968
--0.6547 1.916 0.09872 0.9463 -0.8735
--0.6339 1.855 0.09179 0.9463 -0.8481
--0.6157 1.802 0.0807 0.9463 -0.8206
--0.6003 1.757 0.06533 0.9463 -0.791
--0.5877 1.72 0.04557 0.9463 -0.7594
--0.5779 1.692 0.0214 0.9463 -0.7259
--0.5712 1.672 -0.007185 0.9463 -0.6907
--0.5674 1.661 -0.0401 0.9463 -0.6536
--0.5665 1.658 -0.07723 0.9463 -0.615
--0.5686 1.664 -0.1184 0.9463 -0.5748
--0.5735 1.679 -0.1634 0.9463 -0.5332
--0.5812 1.701 -0.2118 0.9463 -0.4903
--0.5916 1.732 -0.2635 0.9463 -0.4461
--0.6045 1.769 -0.318 0.9463 -0.4008
--0.6197 1.814 -0.3749 0.9463 -0.3545
--0.6371 1.865 -0.4338 0.9463 -0.3073
--0.6565 1.922 -0.4941 0.9463 -0.2594
--0.6777 1.984 -0.5554 0.9463 -0.2108
--0.7004 2.05 -0.6171 0.9463 -0.1617
--0.7244 2.12 -0.6786 0.9463 -0.1122
--0.7495 2.194 -0.7394 0.9463 -0.06235
--0.7753 2.269 -0.7989 0.9463 -0.01239
--0.8017 2.347 -0.8566 0.9463 0.0376
--0.8284 2.425 -0.9117 0.9463 0.0875
--0.8551 2.503 -0.9638 0.9463 0.1372
--0.8815 2.58 -1.012 0.9463 0.1865
--0.9074 2.656 -1.057 0.9463 0.2354
--0.9326 2.73 -1.096 0.9463 0.2837
--0.9568 2.801 -1.131 0.9463 0.3312
--0.9798 2.868 -1.16 0.9463 0.378
--1.001 2.931 -1.183 0.9463 0.4238
--1.021 2.99 -1.2 0.9463 0.4685
--1.04 3.043 -1.21 0.9463 0.5121
--1.056 3.091 -1.214 0.9463 0.5544
--1.07 3.133 -1.21 0.9463 0.5953
--1.083 3.169 -1.199 0.9463 0.6347
--1.092 3.198 -1.181 0.9463 0.6725
--1.1 3.22 -1.156 0.9463 0.7087
--1.106 3.236 -1.123 0.9463 0.743
--1.109 3.245 -1.083 0.9463 0.7756
--1.109 3.248 -1.036 0.9463 0.8061
--1.108 3.243 -0.9827 0.9463 0.8347
--1.105 3.233 -0.9227 0.9463 0.8612
--1.099 3.217 -0.8565 0.9463 0.8855
--1.091 3.194 -0.7847 0.9463 0.9076
--1.082 3.167 -0.7075 0.9463 0.9275
--1.071 3.135 -0.6256 0.9463 0.945
--1.058 3.098 -0.5394 0.9463 0.9602
--1.045 3.058 -0.4495 0.9463 0.9729
--1.03 3.014 -0.3565 0.9463 0.9833
--1.014 2.968 -0.2611 0.9463 0.9911
--0.9978 2.921 -0.1639 0.9463 0.9965
--0.9811 2.872 -0.06557 0.9463 0.9994
--1.111 2.787 0 0.929 1
--1.09 2.736 0.09739 0.929 0.9988
--1.07 2.686 0.1941 0.929 0.995
--1.051 2.638 0.2895 0.929 0.9888
--1.032 2.591 0.383 0.929 0.9801
--1.015 2.547 0.4738 0.929 0.9689
--0.9989 2.507 0.5615 0.929 0.9553
--0.9844 2.47 0.6453 0.929 0.9394
--0.9716 2.438 0.7249 0.929 0.9211
--0.9609 2.411 0.7996 0.929 0.9004
--0.9523 2.39 0.869 0.929 0.8776
--0.9461 2.374 0.9327 0.929 0.8525
--0.9423 2.365 0.9904 0.929 0.8253
--0.941 2.361 1.042 0.929 0.7961
--0.9424 2.365 1.086 0.929 0.7648
--0.9465 2.375 1.124 0.929 0.7317
--0.9533 2.392 1.155 0.929 0.6967
--0.9628 2.416 1.178 0.929 0.66
--0.9749 2.446 1.195 0.929 0.6216
--0.9896 2.483 1.204 0.929 0.5817
--1.007 2.526 1.207 0.929 0.5403
--1.026 2.575 1.202 0.929 0.4976
--1.048 2.63 1.191 0.929 0.4536
--1.072 2.689 1.174 0.929 0.4085
--1.097 2.753 1.15 0.929 0.3624
--1.124 2.821 1.121 0.929 0.3153
--1.153 2.893 1.087 0.929 0.2675
--1.182 2.967 1.047 0.929 0.219
--1.213 3.043 1.004 0.929 0.17
--1.243 3.12 0.9559 0.929 0.1205
--1.275 3.198 0.9048 0.929 0.07074
--1.305 3.276 0.8509 0.929 0.02079
--1.336 3.353 0.7946 0.929 -0.0292
--1.366 3.428 0.7366 0.929 -0.07912
--1.395 3.5 0.6774 0.929 -0.1288
--1.422 3.57 0.6176 0.929 -0.1782
--1.448 3.635 0.5577 0.929 -0.2272
--1.473 3.695 0.4983 0.929 -0.2756
--1.495 3.751 0.4399 0.929 -0.3233
--1.514 3.8 0.3829 0.929 -0.3702
--1.531 3.843 0.3279 0.929 -0.4161
--1.546 3.879 0.2753 0.929 -0.4611
--1.557 3.907 0.2254 0.929 -0.5048
--1.565 3.928 0.1786 0.929 -0.5474
--1.57 3.94 0.1352 0.929 -0.5885
--1.572 3.944 0.09545 0.929 -0.6282
--1.57 3.94 0.05959 0.929 -0.6663
--1.565 3.927 0.02776 0.929 -0.7027
--1.556 3.905 6.64e-05 0.929 -0.7374
--1.544 3.875 -0.02344 0.929 -0.7702
--1.529 3.836 -0.04276 0.929 -0.8011
--1.51 3.789 -0.05794 0.929 -0.8301
--1.488 3.735 -0.06909 0.929 -0.8569
--1.464 3.673 -0.07634 0.929 -0.8816
--1.436 3.604 -0.07991 0.929 -0.9041
--1.406 3.528 -0.08003 0.929 -0.9243
--1.374 3.447 -0.07698 0.929 -0.9422
--1.339 3.36 -0.07108 0.929 -0.9578
--1.303 3.269 -0.06269 0.929 -0.971
--1.265 3.174 -0.05219 0.929 -0.9817
--1.225 3.075 -0.03999 0.929 -0.99
--1.185 2.975 -0.02652 0.929 -0.9958
--1.145 2.872 -0.01221 0.929 -0.9991
--1.104 2.77 0.002477 0.929 -1
--1.063 2.667 0.01709 0.929 -0.9983
--1.022 2.565 0.03117 0.929 -0.9941
--0.9823 2.465 0.04426 0.929 -0.9875
--0.9435 2.368 0.05594 0.929 -0.9784
--0.9061 2.274 0.06577 0.929 -0.9668
--0.8703 2.184 0.07336 0.929 -0.9528
--0.8364 2.099 0.07834 0.929 -0.9365
--0.8047 2.019 0.08035 0.929 -0.9178
--0.7754 1.946 0.07911 0.929 -0.8968
--0.7488 1.879 0.07432 0.929 -0.8735
--0.7251 1.82 0.06578 0.929 -0.8481
--0.7044 1.768 0.05329 0.929 -0.8206
--0.6869 1.724 0.03673 0.929 -0.791
--0.6726 1.688 0.016 0.929 -0.7594
--0.6617 1.661 -0.008915 0.929 -0.7259
--0.6542 1.642 -0.03801 0.929 -0.6907
--0.6502 1.632 -0.07121 0.929 -0.6536
--0.6496 1.63 -0.1084 0.929 -0.615
--0.6523 1.637 -0.1494 0.929 -0.5748
--0.6584 1.652 -0.194 0.929 -0.5332
--0.6676 1.675 -0.2418 0.929 -0.4903
--0.68 1.706 -0.2927 0.929 -0.4461
--0.6952 1.745 -0.3462 0.929 -0.4008
--0.7132 1.79 -0.4019 0.929 -0.3545
--0.7336 1.841 -0.4594 0.929 -0.3073
--0.7564 1.898 -0.5182 0.929 -0.2594
--0.7812 1.96 -0.5778 0.929 -0.2108
--0.8078 2.027 -0.6377 0.929 -0.1617
--0.8358 2.097 -0.6974 0.929 -0.1122
--0.8651 2.171 -0.7563 0.929 -0.06235
--0.8952 2.247 -0.8137 0.929 -0.01239
--0.926 2.324 -0.8693 0.929 0.0376
--0.957 2.402 -0.9224 0.929 0.0875
--0.988 2.479 -0.9724 0.929 0.1372
--1.019 2.557 -1.019 0.929 0.1865
--1.049 2.632 -1.061 0.929 0.2354
--1.078 2.705 -1.099 0.929 0.2837
--1.106 2.776 -1.132 0.929 0.3312
--1.133 2.842 -1.159 0.929 0.378
--1.158 2.905 -1.181 0.929 0.4238
--1.181 2.963 -1.196 0.929 0.4685
--1.202 3.016 -1.205 0.929 0.5121
--1.22 3.063 -1.207 0.929 0.5544
--1.237 3.104 -1.202 0.929 0.5953
--1.251 3.138 -1.19 0.929 0.6347
--1.262 3.166 -1.171 0.929 0.6725
--1.27 3.188 -1.145 0.929 0.7087
--1.276 3.203 -1.112 0.929 0.743
--1.279 3.211 -1.072 0.929 0.7756
--1.28 3.212 -1.025 0.929 0.8061
--1.278 3.207 -0.9717 0.929 0.8347
--1.273 3.195 -0.912 0.929 0.8612
--1.266 3.177 -0.8463 0.929 0.8855
--1.257 3.154 -0.775 0.929 0.9076
--1.245 3.125 -0.6986 0.929 0.9275
--1.232 3.092 -0.6176 0.929 0.945
--1.217 3.054 -0.5324 0.929 0.9602
--1.2 3.012 -0.4436 0.929 0.9729
--1.182 2.967 -0.3518 0.929 0.9833
--1.164 2.92 -0.2576 0.929 0.9911
--1.144 2.871 -0.1617 0.929 0.9965
--1.124 2.821 -0.06468 0.929 0.9994
--1.248 2.728 0 0.9093 1
--1.225 2.676 0.096 0.9093 0.9988
--1.201 2.625 0.1913 0.9093 0.995
--1.179 2.575 0.2854 0.9093 0.9888
--1.157 2.528 0.3776 0.9093 0.9801
--1.136 2.483 0.4672 0.9093 0.9689
--1.117 2.441 0.5537 0.9093 0.9553
--1.1 2.403 0.6366 0.9093 0.9394
--1.085 2.37 0.7153 0.9093 0.9211
--1.072 2.342 0.7892 0.9093 0.9004
--1.062 2.32 0.8581 0.9093 0.8776
--1.054 2.303 0.9213 0.9093 0.8525
--1.049 2.292 0.9787 0.9093 0.8253
--1.047 2.288 1.03 0.9093 0.7961
--1.048 2.29 1.075 0.9093 0.7648
--1.052 2.3 1.113 0.9093 0.7317
--1.06 2.316 1.144 0.9093 0.6967
--1.07 2.338 1.168 0.9093 0.66
--1.084 2.368 1.185 0.9093 0.6216
--1.1 2.403 1.196 0.9093 0.5817
--1.119 2.446 1.199 0.9093 0.5403
--1.141 2.494 1.196 0.9093 0.4976
--1.166 2.547 1.187 0.9093 0.4536
--1.193 2.606 1.171 0.9093 0.4085
--1.221 2.669 1.149 0.9093 0.3624
--1.252 2.736 1.122 0.9093 0.3153
--1.285 2.807 1.089 0.9093 0.2675
--1.318 2.88 1.052 0.9093 0.219
--1.353 2.956 1.01 0.9093 0.17
--1.388 3.033 0.9646 0.9093 0.1205
--1.423 3.11 0.9156 0.9093 0.07074
--1.459 3.187 0.8638 0.9093 0.02079
--1.494 3.264 0.8096 0.9093 -0.0292
--1.528 3.338 0.7536 0.9093 -0.07912
--1.561 3.411 0.6964 0.9093 -0.1288
--1.593 3.48 0.6385 0.9093 -0.1782
--1.622 3.545 0.5804 0.9093 -0.2272
--1.65 3.606 0.5226 0.9093 -0.2756
--1.675 3.661 0.4657 0.9093 -0.3233
--1.698 3.711 0.4101 0.9093 -0.3702
--1.718 3.754 0.3562 0.9093 -0.4161
--1.735 3.79 0.3046 0.9093 -0.4611
--1.748 3.819 0.2555 0.9093 -0.5048
--1.757 3.84 0.2092 0.9093 -0.5474
--1.763 3.853 0.1662 0.9093 -0.5885
--1.766 3.858 0.1266 0.9093 -0.6282
--1.764 3.855 0.0906 0.9093 -0.6663
--1.759 3.843 0.05842 0.9093 -0.7027
--1.749 3.822 0.03015 0.9093 -0.7374
--1.736 3.793 0.005839 0.9093 -0.7702
--1.719 3.756 -0.01451 0.9093 -0.8011
--1.698 3.71 -0.03095 0.9093 -0.8301
--1.674 3.657 -0.04355 0.9093 -0.8569
--1.646 3.597 -0.05248 0.9093 -0.8816
--1.615 3.529 -0.0579 0.9093 -0.9041
--1.581 3.455 -0.06005 0.9093 -0.9243
--1.545 3.375 -0.05919 0.9093 -0.9422
--1.506 3.29 -0.05563 0.9093 -0.9578
--1.465 3.201 -0.0497 0.9093 -0.971
--1.422 3.108 -0.04177 0.9093 -0.9817
--1.378 3.011 -0.03222 0.9093 -0.99
--1.333 2.912 -0.02146 0.9093 -0.9958
--1.287 2.812 -0.009904 0.9093 -0.9991
--1.241 2.711 0.00201 0.9093 -1
--1.195 2.61 0.01385 0.9093 -0.9983
--1.149 2.51 0.02519 0.9093 -0.9941
--1.104 2.412 0.03559 0.9093 -0.9875
--1.06 2.316 0.04464 0.9093 -0.9784
--1.018 2.224 0.05194 0.9093 -0.9668
--0.9776 2.136 0.05711 0.9093 -0.9528
--0.9395 2.053 0.0598 0.9093 -0.9365
--0.9039 1.975 0.05967 0.9093 -0.9178
--0.871 1.903 0.05645 0.9093 -0.8968
--0.8412 1.838 0.04988 0.9093 -0.8735
--0.8146 1.78 0.03973 0.9093 -0.8481
--0.7915 1.729 0.02585 0.9093 -0.8206
--0.7719 1.687 0.008109 0.9093 -0.791
--0.7561 1.652 -0.01357 0.9093 -0.7594
--0.7441 1.626 -0.03922 0.9093 -0.7259
--0.736 1.608 -0.06881 0.9093 -0.6907
--0.7318 1.599 -0.1023 0.9093 -0.6536
--0.7315 1.598 -0.1395 0.9093 -0.615
--0.735 1.606 -0.1803 0.9093 -0.5748
--0.7423 1.622 -0.2244 0.9093 -0.5332
--0.7532 1.646 -0.2717 0.9093 -0.4903
--0.7676 1.677 -0.3217 0.9093 -0.4461
--0.7853 1.716 -0.3741 0.9093 -0.4008
--0.806 1.761 -0.4286 0.9093 -0.3545
--0.8297 1.813 -0.4847 0.9093 -0.3073
--0.8558 1.87 -0.542 0.9093 -0.2594
--0.8843 1.932 -0.5999 0.9093 -0.2108
--0.9148 1.999 -0.658 0.9093 -0.1617
--0.947 2.069 -0.7157 0.9093 -0.1122
--0.9805 2.142 -0.7726 0.9093 -0.06235
--1.015 2.218 -0.828 0.9093 -0.01239
--1.05 2.294 -0.8815 0.9093 0.0376
--1.086 2.372 -0.9324 0.9093 0.0875
--1.121 2.449 -0.9803 0.9093 0.1372
--1.156 2.526 -1.025 0.9093 0.1865
--1.19 2.6 -1.065 0.9093 0.2354
--1.223 2.673 -1.101 0.9093 0.2837
--1.255 2.743 -1.132 0.9093 0.3312
--1.285 2.809 -1.157 0.9093 0.378
--1.314 2.87 -1.177 0.9093 0.4238
--1.34 2.927 -1.191 0.9093 0.4685
--1.363 2.979 -1.198 0.9093 0.5121
--1.384 3.025 -1.199 0.9093 0.5544
--1.403 3.065 -1.193 0.9093 0.5953
--1.418 3.099 -1.18 0.9093 0.6347
--1.431 3.126 -1.161 0.9093 0.6725
--1.44 3.146 -1.134 0.9093 0.7087
--1.446 3.16 -1.101 0.9093 0.743
--1.449 3.167 -1.06 0.9093 0.7756
--1.449 3.167 -1.013 0.9093 0.8061
--1.447 3.161 -0.9601 0.9093 0.8347
--1.441 3.148 -0.9007 0.9093 0.8612
--1.432 3.129 -0.8355 0.9093 0.8855
--1.421 3.105 -0.7649 0.9093 0.9076
--1.407 3.075 -0.6893 0.9093 0.9275
--1.391 3.04 -0.6092 0.9093 0.945
--1.374 3.001 -0.525 0.9093 0.9602
--1.354 2.958 -0.4374 0.9093 0.9729
--1.333 2.912 -0.3468 0.9093 0.9833
--1.311 2.864 -0.254 0.9093 0.9911
--1.288 2.814 -0.1594 0.9093 0.9965
--1.264 2.762 -0.06375 0.9093 0.9994
--1.383 2.662 0 0.8874 1
--1.356 2.609 0.09454 0.8874 0.9988
--1.329 2.557 0.1885 0.8874 0.995
--1.303 2.507 0.2811 0.8874 0.9888
--1.277 2.458 0.372 0.8874 0.9801
--1.253 2.412 0.4603 0.8874 0.9689
--1.231 2.37 0.5457 0.8874 0.9553
--1.211 2.331 0.6275 0.8874 0.9394
--1.194 2.297 0.7052 0.8874 0.9211
--1.179 2.268 0.7784 0.8874 0.9004
--1.166 2.245 0.8466 0.8874 0.8776
--1.157 2.227 0.9094 0.8874 0.8525
--1.151 2.215 0.9664 0.8874 0.8253
--1.148 2.21 1.017 0.8874 0.7961
--1.149 2.211 1.062 0.8874 0.7648
--1.153 2.22 1.1 0.8874 0.7317
--1.161 2.234 1.132 0.8874 0.6967
--1.172 2.256 1.157 0.8874 0.66
--1.187 2.284 1.175 0.8874 0.6216
--1.205 2.319 1.186 0.8874 0.5817
--1.226 2.36 1.191 0.8874 0.5403
--1.251 2.407 1.189 0.8874 0.4976
--1.278 2.459 1.181 0.8874 0.4536
--1.308 2.517 1.167 0.8874 0.4085
--1.34 2.579 1.147 0.8874 0.3624
--1.375 2.645 1.122 0.8874 0.3153
--1.411 2.715 1.091 0.8874 0.2675
--1.448 2.787 1.056 0.8874 0.219
--1.487 2.862 1.016 0.8874 0.17
--1.527 2.938 0.9727 0.8874 0.1205
--1.566 3.015 0.9258 0.8874 0.07074
--1.606 3.091 0.8761 0.8874 0.02079
--1.645 3.167 0.824 0.8874 -0.0292
--1.684 3.241 0.7701 0.8874 -0.07912
--1.721 3.313 0.7149 0.8874 -0.1288
--1.757 3.381 0.6589 0.8874 -0.1782
--1.791 3.446 0.6026 0.8874 -0.2272
--1.822 3.507 0.5466 0.8874 -0.2756
--1.851 3.562 0.4912 0.8874 -0.3233
--1.877 3.612 0.437 0.8874 -0.3702
--1.899 3.655 0.3843 0.8874 -0.4161
--1.918 3.691 0.3337 0.8874 -0.4611
--1.933 3.721 0.2854 0.8874 -0.5048
--1.945 3.742 0.2397 0.8874 -0.5474
--1.952 3.756 0.1971 0.8874 -0.5885
--1.955 3.762 0.1576 0.8874 -0.6282
--1.953 3.759 0.1215 0.8874 -0.6663
--1.948 3.748 0.08905 0.8874 -0.7027
--1.937 3.729 0.06022 0.8874 -0.7374
--1.923 3.701 0.03512 0.8874 -0.7702
--1.904 3.665 0.01375 0.8874 -0.8011
--1.882 3.621 -0.003929 0.8874 -0.8301
--1.855 3.57 -0.01799 0.8874 -0.8569
--1.824 3.511 -0.02858 0.8874 -0.8816
--1.79 3.445 -0.03585 0.8874 -0.9041
--1.753 3.373 -0.04003 0.8874 -0.9243
--1.712 3.295 -0.04137 0.8874 -0.9422
--1.669 3.212 -0.04015 0.8874 -0.9578
--1.624 3.125 -0.03668 0.8874 -0.971
--1.576 3.033 -0.03132 0.8874 -0.9817
--1.527 2.939 -0.02443 0.8874 -0.99
--1.477 2.842 -0.01638 0.8874 -0.9958
--1.426 2.744 -0.007592 0.8874 -0.9991
--1.375 2.645 0.001542 0.8874 -1
--1.323 2.547 0.01061 0.8874 -0.9983
--1.273 2.449 0.01919 0.8874 -0.9941
--1.223 2.353 0.02689 0.8874 -0.9875
--1.174 2.26 0.03332 0.8874 -0.9784
--1.127 2.17 0.03808 0.8874 -0.9668
--1.083 2.084 0.04083 0.8874 -0.9528
--1.04 2.002 0.04122 0.8874 -0.9365
--1.001 1.926 0.03896 0.8874 -0.9178
--0.9645 1.856 0.03376 0.8874 -0.8968
--0.9316 1.793 0.0254 0.8874 -0.8735
--0.9022 1.736 0.01366 0.8874 -0.8481
--0.8768 1.687 -0.001607 0.8874 -0.8206
--0.8553 1.646 -0.02052 0.8874 -0.791
--0.8381 1.613 -0.04314 0.8874 -0.7594
--0.8251 1.588 -0.0695 0.8874 -0.7259
--0.8165 1.571 -0.09957 0.8874 -0.6907
--0.8122 1.563 -0.1333 0.8874 -0.6536
--0.8123 1.563 -0.1705 0.8874 -0.615
--0.8166 1.572 -0.2111 0.8874 -0.5748
--0.8252 1.588 -0.2548 0.8874 -0.5332
--0.8378 1.612 -0.3013 0.8874 -0.4903
--0.8543 1.644 -0.3505 0.8874 -0.4461
--0.8745 1.683 -0.4018 0.8874 -0.4008
--0.8982 1.729 -0.4551 0.8874 -0.3545
--0.925 1.78 -0.5097 0.8874 -0.3073
--0.9546 1.837 -0.5654 0.8874 -0.2594
--0.9868 1.899 -0.6216 0.8874 -0.2108
--1.021 1.966 -0.6778 0.8874 -0.1617
--1.058 2.035 -0.7336 0.8874 -0.1122
--1.095 2.108 -0.7884 0.8874 -0.06235
--1.134 2.183 -0.8418 0.8874 -0.01239
--1.174 2.259 -0.8931 0.8874 0.0376
--1.213 2.335 -0.9419 0.8874 0.0875
--1.253 2.412 -0.9877 0.8874 0.1372
--1.292 2.487 -1.03 0.8874 0.1865
--1.331 2.561 -1.068 0.8874 0.2354
--1.368 2.633 -1.102 0.8874 0.2837
--1.404 2.702 -1.131 0.8874 0.3312
--1.437 2.766 -1.155 0.8874 0.378
--1.469 2.827 -1.173 0.8874 0.4238
--1.498 2.883 -1.185 0.8874 0.4685
--1.524 2.934 -1.191 0.8874 0.5121
--1.548 2.979 -1.19 0.8874 0.5544
--1.568 3.018 -1.183 0.8874 0.5953
--1.585 3.05 -1.17 0.8874 0.6347
--1.598 3.076 -1.149 0.8874 0.6725
--1.608 3.096 -1.122 0.8874 0.7087
--1.615 3.108 -1.088 0.8874 0.743
--1.618 3.114 -1.048 0.8874 0.7756
--1.618 3.113 -1.001 0.8874 0.8061
--1.614 3.106 -0.9479 0.8874 0.8347
--1.607 3.092 -0.8889 0.8874 0.8612
--1.596 3.072 -0.8242 0.8874 0.8855
--1.583 3.047 -0.7543 0.8874 0.9076
--1.567 3.016 -0.6796 0.8874 0.9275
--1.549 2.98 -0.6004 0.8874 0.945
--1.528 2.94 -0.5174 0.8874 0.9602
--1.505 2.897 -0.4309 0.8874 0.9729
--1.481 2.85 -0.3417 0.8874 0.9833
--1.455 2.801 -0.2501 0.8874 0.9911
--1.429 2.749 -0.157 0.8874 0.9965
--1.401 2.697 -0.06279 0.8874 0.9994
--1.515 2.59 0 0.8632 1
--1.483 2.536 0.09303 0.8632 0.9988
--1.453 2.484 0.1854 0.8632 0.995
--1.423 2.433 0.2767 0.8632 0.9888
--1.394 2.383 0.3661 0.8632 0.9801
--1.367 2.337 0.4532 0.8632 0.9689
--1.342 2.294 0.5373 0.8632 0.9553
--1.319 2.255 0.618 0.8632 0.9394
--1.298 2.22 0.6947 0.8632 0.9211
--1.281 2.19 0.7671 0.8632 0.9004
--1.266 2.165 0.8346 0.8632 0.8776
--1.256 2.147 0.8968 0.8632 0.8525
--1.248 2.134 0.9535 0.8632 0.8253
--1.245 2.128 1.004 0.8632 0.7961
--1.245 2.128 1.049 0.8632 0.7648
--1.249 2.136 1.088 0.8632 0.7317
--1.257 2.149 1.12 0.8632 0.6967
--1.269 2.17 1.145 0.8632 0.66
--1.285 2.197 1.164 0.8632 0.6216
--1.304 2.23 1.176 0.8632 0.5817
--1.328 2.27 1.182 0.8632 0.5403
--1.354 2.316 1.182 0.8632 0.4976
--1.384 2.367 1.175 0.8632 0.4536
--1.417 2.423 1.163 0.8632 0.4085
--1.453 2.484 1.145 0.8632 0.3624
--1.491 2.549 1.121 0.8632 0.3153
--1.531 2.617 1.092 0.8632 0.2675
--1.572 2.689 1.059 0.8632 0.219
--1.615 2.762 1.021 0.8632 0.17
--1.659 2.837 0.9801 0.8632 0.1205
--1.703 2.912 0.9355 0.8632 0.07074
--1.747 2.988 0.8879 0.8632 0.02079
--1.791 3.063 0.838 0.8632 -0.0292
--1.834 3.136 0.7862 0.8632 -0.07912
--1.876 3.207 0.733 0.8632 -0.1288
--1.915 3.275 0.679 0.8632 -0.1782
--1.953 3.339 0.6246 0.8632 -0.2272
--1.988 3.399 0.5702 0.8632 -0.2756
--2.02 3.454 0.5164 0.8632 -0.3233
--2.049 3.504 0.4636 0.8632 -0.3702
--2.074 3.547 0.4122 0.8632 -0.4161
--2.096 3.583 0.3626 0.8632 -0.4611
--2.113 3.613 0.3151 0.8632 -0.5048
--2.126 3.635 0.2701 0.8632 -0.5474
--2.134 3.649 0.2278 0.8632 -0.5885
--2.138 3.656 0.1885 0.8632 -0.6282
--2.137 3.654 0.1524 0.8632 -0.6663
--2.131 3.644 0.1196 0.8632 -0.7027
--2.12 3.626 0.09025 0.8632 -0.7374
--2.105 3.599 0.06437 0.8632 -0.7702
--2.085 3.565 0.042 0.8632 -0.8011
--2.06 3.522 0.02309 0.8632 -0.8301
--2.031 3.473 0.007576 0.8632 -0.8569
--1.998 3.416 -0.004662 0.8632 -0.8816
--1.96 3.352 -0.01379 0.8632 -0.9041
--1.919 3.282 -0.01999 0.8632 -0.9243
--1.875 3.206 -0.02352 0.8632 -0.9422
--1.828 3.125 -0.02464 0.8632 -0.9578
--1.778 3.04 -0.02364 0.8632 -0.971
--1.726 2.951 -0.02085 0.8632 -0.9817
--1.672 2.859 -0.01662 0.8632 -0.99
--1.617 2.765 -0.0113 0.8632 -0.9958
--1.561 2.67 -0.005275 0.8632 -0.9991
--1.505 2.573 0.001073 0.8632 -1
--1.449 2.477 0.007356 0.8632 -0.9983
--1.393 2.382 0.01319 0.8632 -0.9941
--1.338 2.289 0.01818 0.8632 -0.9875
--1.285 2.198 0.02197 0.8632 -0.9784
--1.234 2.11 0.02419 0.8632 -0.9668
--1.185 2.026 0.02452 0.8632 -0.9528
--1.139 1.947 0.02262 0.8632 -0.9365
--1.096 1.873 0.01822 0.8632 -0.9178
--1.056 1.805 0.01105 0.8632 -0.8968
--1.02 1.744 0.0009026 0.8632 -0.8735
--0.9879 1.689 -0.01242 0.8632 -0.8481
--0.9602 1.642 -0.02906 0.8632 -0.8206
--0.937 1.602 -0.04913 0.8632 -0.791
--0.9184 1.57 -0.07268 0.8632 -0.7594
--0.9045 1.547 -0.09974 0.8632 -0.7259
--0.8954 1.531 -0.1303 0.8632 -0.6907
--0.8912 1.524 -0.1642 0.8632 -0.6536
--0.8917 1.525 -0.2014 0.8632 -0.615
--0.897 1.534 -0.2417 0.8632 -0.5748
--0.907 1.551 -0.2849 0.8632 -0.5332
--0.9214 1.575 -0.3308 0.8632 -0.4903
--0.9401 1.607 -0.379 0.8632 -0.4461
--0.9628 1.646 -0.4293 0.8632 -0.4008
--0.9893 1.692 -0.4812 0.8632 -0.3545
--1.019 1.743 -0.5344 0.8632 -0.3073
--1.053 1.8 -0.5884 0.8632 -0.2594
--1.089 1.861 -0.6429 0.8632 -0.2108
--1.127 1.927 -0.6972 0.8632 -0.1617
--1.167 1.996 -0.751 0.8632 -0.1122
--1.209 2.068 -0.8038 0.8632 -0.06235
--1.253 2.142 -0.855 0.8632 -0.01239
--1.296 2.217 -0.9042 0.8632 0.0376
--1.341 2.292 -0.9508 0.8632 0.0875
--1.385 2.368 -0.9944 0.8632 0.1372
--1.428 2.442 -1.035 0.8632 0.1865
--1.471 2.515 -1.071 0.8632 0.2354
--1.512 2.585 -1.102 0.8632 0.2837
--1.551 2.652 -1.129 0.8632 0.3312
--1.588 2.716 -1.151 0.8632 0.378
--1.623 2.775 -1.168 0.8632 0.4238
--1.655 2.83 -1.178 0.8632 0.4685
--1.684 2.879 -1.183 0.8632 0.5121
--1.71 2.923 -1.181 0.8632 0.5544
--1.732 2.961 -1.173 0.8632 0.5953
--1.75 2.992 -1.158 0.8632 0.6347
--1.765 3.017 -1.137 0.8632 0.6725
--1.775 3.035 -1.11 0.8632 0.7087
--1.782 3.047 -1.075 0.8632 0.743
--1.785 3.052 -1.035 0.8632 0.7756
--1.784 3.05 -0.988 0.8632 0.8061
--1.779 3.041 -0.9351 0.8632 0.8347
--1.77 3.027 -0.8765 0.8632 0.8612
--1.758 3.006 -0.8124 0.8632 0.8855
--1.743 2.98 -0.7433 0.8632 0.9076
--1.724 2.948 -0.6694 0.8632 0.9275
--1.703 2.912 -0.5913 0.8632 0.945
--1.679 2.871 -0.5094 0.8632 0.9602
--1.653 2.827 -0.4242 0.8632 0.9729
--1.626 2.78 -0.3363 0.8632 0.9833
--1.596 2.73 -0.2462 0.8632 0.9911
--1.566 2.678 -0.1545 0.8632 0.9965
--1.535 2.625 -0.06178 0.8632 0.9994
--1.642 2.511 0 0.8369 1
--1.607 2.457 0.09146 0.8369 0.9988
--1.572 2.404 0.1823 0.8369 0.995
--1.539 2.353 0.272 0.8369 0.9888
--1.506 2.303 0.36 0.8369 0.9801
--1.476 2.256 0.4457 0.8369 0.9689
--1.447 2.213 0.5286 0.8369 0.9553
--1.421 2.173 0.6081 0.8369 0.9394
--1.398 2.138 0.6838 0.8369 0.9211
--1.378 2.107 0.7552 0.8369 0.9004
--1.362 2.082 0.822 0.8369 0.8776
--1.349 2.063 0.8837 0.8369 0.8525
--1.34 2.049 0.9401 0.8369 0.8253
--1.336 2.042 0.9907 0.8369 0.7961
--1.335 2.042 1.035 0.8369 0.7648
--1.339 2.048 1.074 0.8369 0.7317
--1.348 2.06 1.107 0.8369 0.6967
--1.36 2.08 1.133 0.8369 0.66
--1.377 2.106 1.152 0.8369 0.6216
--1.398 2.138 1.166 0.8369 0.5817
--1.423 2.176 1.173 0.8369 0.5403
--1.452 2.221 1.174 0.8369 0.4976
--1.485 2.27 1.169 0.8369 0.4536
--1.521 2.325 1.158 0.8369 0.4085
--1.56 2.385 1.141 0.8369 0.3624
--1.601 2.448 1.119 0.8369 0.3153
--1.645 2.515 1.093 0.8369 0.2675
--1.69 2.585 1.062 0.8369 0.219
--1.737 2.656 1.026 0.8369 0.17
--1.785 2.73 0.987 0.8369 0.1205
--1.834 2.804 0.9445 0.8369 0.07074
--1.882 2.878 0.8992 0.8369 0.02079
--1.93 2.952 0.8514 0.8369 -0.0292
--1.978 3.024 0.8018 0.8369 -0.07912
--2.023 3.094 0.7507 0.8369 -0.1288
--2.067 3.161 0.6986 0.8369 -0.1782
--2.109 3.224 0.6461 0.8369 -0.2272
--2.147 3.283 0.5935 0.8369 -0.2756
--2.183 3.338 0.5413 0.8369 -0.3233
--2.215 3.387 0.4899 0.8369 -0.3702
--2.243 3.43 0.4398 0.8369 -0.4161
--2.267 3.466 0.3912 0.8369 -0.4611
--2.286 3.496 0.3446 0.8369 -0.5048
--2.301 3.518 0.3003 0.8369 -0.5474
--2.311 3.533 0.2584 0.8369 -0.5885
--2.315 3.54 0.2193 0.8369 -0.6282
--2.315 3.539 0.1832 0.8369 -0.6663
--2.309 3.53 0.1501 0.8369 -0.7027
--2.298 3.513 0.1202 0.8369 -0.7374
--2.281 3.488 0.09359 0.8369 -0.7702
--2.26 3.455 0.07022 0.8369 -0.8011
--2.233 3.414 0.05009 0.8369 -0.8301
--2.202 3.366 0.03314 0.8369 -0.8569
--2.166 3.311 0.01926 0.8369 -0.8816
--2.125 3.25 0.00829 0.8369 -0.9041
--2.081 3.182 5.697e-05 0.8369 -0.9243
--2.033 3.109 -0.005662 0.8369 -0.9422
--1.982 3.031 -0.009116 0.8369 -0.9578
--1.928 2.948 -0.01058 0.8369 -0.971
--1.872 2.862 -0.01037 0.8369 -0.9817
--1.813 2.773 -0.008799 0.8369 -0.99
--1.754 2.681 -0.006209 0.8369 -0.9958
--1.693 2.588 -0.002954 0.8369 -0.9991
--1.632 2.495 0.000604 0.8369 -1
--1.571 2.402 0.004101 0.8369 -0.9983
--1.51 2.309 0.007172 0.8369 -0.9941
--1.451 2.219 0.009459 0.8369 -0.9875
--1.393 2.13 0.01061 0.8369 -0.9784
--1.338 2.045 0.01029 0.8369 -0.9668
--1.285 1.964 0.00819 0.8369 -0.9528
--1.234 1.887 0.004004 0.8369 -0.9365
--1.188 1.816 -0.002534 0.8369 -0.9178
--1.145 1.75 -0.01166 0.8369 -0.8968
--1.106 1.691 -0.02359 0.8369 -0.8735
--1.071 1.638 -0.03849 0.8369 -0.8481
--1.042 1.593 -0.0565 0.8369 -0.8206
--1.017 1.555 -0.07771 0.8369 -0.791
--0.9969 1.524 -0.1022 0.8369 -0.7594
--0.9822 1.502 -0.1299 0.8369 -0.7259
--0.9728 1.487 -0.1609 0.8369 -0.6907
--0.9687 1.481 -0.195 0.8369 -0.6536
--0.9698 1.483 -0.2322 0.8369 -0.615
--0.9761 1.492 -0.2722 0.8369 -0.5748
--0.9874 1.51 -0.3149 0.8369 -0.5332
--1.004 1.535 -0.3601 0.8369 -0.4903
--1.025 1.567 -0.4074 0.8369 -0.4461
--1.05 1.605 -0.4565 0.8369 -0.4008
--1.079 1.65 -0.5071 0.8369 -0.3545
--1.113 1.701 -0.5588 0.8369 -0.3073
--1.149 1.757 -0.6111 0.8369 -0.2594
--1.189 1.818 -0.6638 0.8369 -0.2108
--1.231 1.883 -0.7162 0.8369 -0.1617
--1.276 1.951 -0.768 0.8369 -0.1122
--1.322 2.022 -0.8187 0.8369 -0.06235
--1.37 2.094 -0.8677 0.8369 -0.01239
--1.418 2.168 -0.9147 0.8369 0.0376
--1.467 2.242 -0.9591 0.8369 0.0875
--1.515 2.316 -1.001 0.8369 0.1372
--1.563 2.389 -1.039 0.8369 0.1865
--1.609 2.461 -1.073 0.8369 0.2354
--1.654 2.529 -1.102 0.8369 0.2837
--1.697 2.595 -1.127 0.8369 0.3312
--1.738 2.657 -1.147 0.8369 0.378
--1.776 2.715 -1.162 0.8369 0.4238
--1.811 2.768 -1.171 0.8369 0.4685
--1.842 2.816 -1.174 0.8369 0.5121
--1.87 2.859 -1.171 0.8369 0.5544
--1.893 2.895 -1.162 0.8369 0.5953
--1.913 2.925 -1.146 0.8369 0.6347
--1.929 2.949 -1.125 0.8369 0.6725
--1.94 2.966 -1.096 0.8369 0.7087
--1.947 2.976 -1.062 0.8369 0.743
--1.949 2.98 -1.021 0.8369 0.7756
--1.947 2.977 -0.9743 0.8369 0.8061
--1.941 2.968 -0.9217 0.8369 0.8347
--1.931 2.953 -0.8636 0.8369 0.8612
--1.917 2.931 -0.8001 0.8369 0.8855
--1.9 2.904 -0.7317 0.8369 0.9076
--1.879 2.872 -0.6588 0.8369 0.9275
--1.855 2.836 -0.5817 0.8369 0.945
--1.828 2.794 -0.501 0.8369 0.9602
--1.798 2.75 -0.4172 0.8369 0.9729
--1.767 2.702 -0.3306 0.8369 0.9833
--1.734 2.652 -0.242 0.8369 0.9911
--1.7 2.6 -0.1519 0.8369 0.9965
--1.665 2.546 -0.06074 0.8369 0.9994
--1.766 2.425 0 0.8085 1
--1.726 2.372 0.08983 0.8085 0.9988
--1.688 2.319 0.1791 0.8085 0.995
--1.65 2.267 0.2672 0.8085 0.9888
--1.614 2.218 0.3537 0.8085 0.9801
--1.58 2.171 0.438 0.8085 0.9689
--1.548 2.127 0.5195 0.8085 0.9553
--1.519 2.087 0.5978 0.8085 0.9394
--1.493 2.051 0.6724 0.8085 0.9211
--1.471 2.021 0.743 0.8085 0.9004
--1.452 1.995 0.809 0.8085 0.8776
--1.438 1.975 0.8701 0.8085 0.8525
--1.427 1.961 0.926 0.8085 0.8253
--1.422 1.953 0.9764 0.8085 0.7961
--1.421 1.952 1.021 0.8085 0.7648
--1.424 1.957 1.06 0.8085 0.7317
--1.433 1.968 1.093 0.8085 0.6967
--1.446 1.986 1.119 0.8085 0.66
--1.464 2.011 1.14 0.8085 0.6216
--1.486 2.042 1.154 0.8085 0.5817
--1.513 2.079 1.162 0.8085 0.5403
--1.544 2.122 1.165 0.8085 0.4976
--1.579 2.17 1.161 0.8085 0.4536
--1.618 2.223 1.152 0.8085 0.4085
--1.66 2.281 1.137 0.8085 0.3624
--1.705 2.342 1.117 0.8085 0.3153
--1.752 2.407 1.093 0.8085 0.2675
--1.802 2.475 1.063 0.8085 0.219
--1.853 2.546 1.03 0.8085 0.17
--1.905 2.617 0.9932 0.8085 0.1205
--1.958 2.69 0.953 0.8085 0.07074
--2.011 2.762 0.9099 0.8085 0.02079
--2.063 2.834 0.8643 0.8085 -0.0292
--2.114 2.905 0.8169 0.8085 -0.07912
--2.164 2.973 0.7679 0.8085 -0.1288
--2.212 3.039 0.7178 0.8085 -0.1782
--2.258 3.101 0.6672 0.8085 -0.2272
--2.3 3.16 0.6164 0.8085 -0.2756
--2.339 3.213 0.5658 0.8085 -0.3233
--2.374 3.262 0.5159 0.8085 -0.3702
--2.405 3.304 0.4671 0.8085 -0.4161
--2.432 3.341 0.4197 0.8085 -0.4611
--2.453 3.37 0.374 0.8085 -0.5048
--2.469 3.393 0.3303 0.8085 -0.5474
--2.48 3.408 0.2889 0.8085 -0.5885
--2.486 3.415 0.25 0.8085 -0.6282
--2.486 3.415 0.2138 0.8085 -0.6663
--2.48 3.407 0.1805 0.8085 -0.7027
--2.468 3.391 0.1501 0.8085 -0.7374
--2.451 3.367 0.1227 0.8085 -0.7702
--2.428 3.336 0.0984 0.8085 -0.8011
--2.4 3.297 0.07707 0.8085 -0.8301
--2.366 3.251 0.05869 0.8085 -0.8569
--2.328 3.198 0.04316 0.8085 -0.8816
--2.285 3.139 0.03036 0.8085 -0.9041
--2.237 3.074 0.02011 0.8085 -0.9243
--2.186 3.003 0.0122 0.8085 -0.9422
--2.131 2.928 0.006414 0.8085 -0.9578
--2.073 2.848 0.002479 0.8085 -0.971
--2.012 2.765 0.0001171 0.8085 -0.9817
--1.95 2.679 -0.0009746 0.8085 -0.99
--1.885 2.59 -0.001114 0.8085 -0.9958
--1.82 2.501 -0.000632 0.8085 -0.9991
--1.754 2.41 0.0001341 0.8085 -1
--1.689 2.32 0.0008428 0.8085 -0.9983
--1.624 2.231 0.001153 0.8085 -0.9941
--1.56 2.143 0.0007298 0.8085 -0.9875
--1.498 2.058 -0.0007542 0.8085 -0.9784
--1.438 1.976 -0.003612 0.8085 -0.9668
--1.381 1.897 -0.00814 0.8085 -0.9528
--1.327 1.823 -0.01461 0.8085 -0.9365
--1.277 1.755 -0.02328 0.8085 -0.9178
--1.231 1.691 -0.03437 0.8085 -0.8968
--1.19 1.634 -0.04807 0.8085 -0.8735
--1.153 1.584 -0.06454 0.8085 -0.8481
--1.121 1.54 -0.08391 0.8085 -0.8206
--1.095 1.504 -0.1062 0.8085 -0.791
--1.074 1.475 -0.1316 0.8085 -0.7594
--1.058 1.454 -0.16 0.8085 -0.7259
--1.049 1.44 -0.1914 0.8085 -0.6907
--1.045 1.435 -0.2257 0.8085 -0.6536
--1.046 1.437 -0.2628 0.8085 -0.615
--1.054 1.448 -0.3025 0.8085 -0.5748
--1.067 1.465 -0.3447 0.8085 -0.5332
--1.085 1.49 -0.3891 0.8085 -0.4903
--1.108 1.522 -0.4354 0.8085 -0.4461
--1.136 1.56 -0.4834 0.8085 -0.4008
--1.168 1.605 -0.5326 0.8085 -0.3545
--1.205 1.655 -0.5828 0.8085 -0.3073
--1.245 1.71 -0.6334 0.8085 -0.2594
--1.288 1.77 -0.6842 0.8085 -0.2108
--1.335 1.834 -0.7347 0.8085 -0.1617
--1.383 1.9 -0.7845 0.8085 -0.1122
--1.434 1.97 -0.833 0.8085 -0.06235
--1.486 2.041 -0.8799 0.8085 -0.01239
--1.538 2.113 -0.9247 0.8085 0.0376
--1.591 2.186 -0.9669 0.8085 0.0875
--1.644 2.258 -1.006 0.8085 0.1372
--1.695 2.329 -1.042 0.8085 0.1865
--1.746 2.399 -1.074 0.8085 0.2354
--1.795 2.466 -1.101 0.8085 0.2837
--1.841 2.53 -1.124 0.8085 0.3312
--1.885 2.59 -1.143 0.8085 0.378
--1.926 2.646 -1.155 0.8085 0.4238
--1.964 2.698 -1.163 0.8085 0.4685
--1.998 2.744 -1.165 0.8085 0.5121
--2.027 2.785 -1.16 0.8085 0.5544
--2.053 2.82 -1.15 0.8085 0.5953
--2.074 2.849 -1.134 0.8085 0.6347
--2.09 2.871 -1.111 0.8085 0.6725
--2.102 2.887 -1.082 0.8085 0.7087
--2.108 2.897 -1.048 0.8085 0.743
--2.111 2.9 -1.007 0.8085 0.7756
--2.108 2.896 -0.9601 0.8085 0.8061
--2.101 2.886 -0.9078 0.8085 0.8347
--2.089 2.87 -0.8501 0.8085 0.8612
--2.073 2.848 -0.7873 0.8085 0.8855
--2.053 2.821 -0.7197 0.8085 0.9076
--2.029 2.788 -0.6478 0.8085 0.9275
--2.002 2.751 -0.5719 0.8085 0.945
--1.972 2.71 -0.4924 0.8085 0.9602
--1.94 2.665 -0.4099 0.8085 0.9729
--1.905 2.617 -0.3248 0.8085 0.9833
--1.868 2.566 -0.2377 0.8085 0.9911
--1.83 2.514 -0.1492 0.8085 0.9965
--1.791 2.461 -0.05965 0.8085 0.9994
--1.885 2.334 0 0.7781 1
--1.841 2.281 0.08814 0.7781 0.9988
--1.799 2.228 0.1757 0.7781 0.995
--1.758 2.177 0.2623 0.7781 0.9888
--1.718 2.127 0.3472 0.7781 0.9801
--1.68 2.081 0.4299 0.7781 0.9689
--1.645 2.037 0.5101 0.7781 0.9553
--1.612 1.997 0.5872 0.7781 0.9394
--1.583 1.961 0.6607 0.7781 0.9211
--1.558 1.93 0.7302 0.7781 0.9004
--1.537 1.904 0.7954 0.7781 0.8776
--1.521 1.884 0.8559 0.7781 0.8525
--1.509 1.869 0.9113 0.7781 0.8253
--1.502 1.861 0.9615 0.7781 0.7961
--1.5 1.859 1.006 0.7781 0.7648
--1.504 1.863 1.045 0.7781 0.7317
--1.512 1.873 1.078 0.7781 0.6967
--1.526 1.89 1.105 0.7781 0.66
--1.545 1.913 1.127 0.7781 0.6216
--1.568 1.943 1.142 0.7781 0.5817
--1.597 1.978 1.151 0.7781 0.5403
--1.63 2.019 1.155 0.7781 0.4976
--1.668 2.066 1.153 0.7781 0.4536
--1.709 2.117 1.145 0.7781 0.4085
--1.754 2.173 1.132 0.7781 0.3624
--1.802 2.232 1.114 0.7781 0.3153
--1.853 2.296 1.092 0.7781 0.2675
--1.907 2.362 1.065 0.7781 0.219
--1.962 2.43 1.034 0.7781 0.17
--2.018 2.499 0.9989 0.7781 0.1205
--2.075 2.57 0.9609 0.7781 0.07074
--2.132 2.64 0.92 0.7781 0.02079
--2.188 2.711 0.8767 0.7781 -0.0292
--2.244 2.779 0.8314 0.7781 -0.07912
--2.298 2.846 0.7846 0.7781 -0.1288
--2.35 2.911 0.7366 0.7781 -0.1782
--2.399 2.972 0.6879 0.7781 -0.2272
--2.445 3.029 0.6389 0.7781 -0.2756
--2.488 3.081 0.59 0.7781 -0.3233
--2.526 3.129 0.5416 0.7781 -0.3702
--2.56 3.171 0.4941 0.7781 -0.4161
--2.589 3.206 0.4478 0.7781 -0.4611
--2.612 3.236 0.403 0.7781 -0.5048
--2.63 3.258 0.3601 0.7781 -0.5474
--2.643 3.274 0.3192 0.7781 -0.5885
--2.649 3.282 0.2805 0.7781 -0.6282
--2.65 3.282 0.2444 0.7781 -0.6663
--2.644 3.275 0.2108 0.7781 -0.7027
--2.632 3.26 0.1799 0.7781 -0.7374
--2.614 3.238 0.1518 0.7781 -0.7702
--2.59 3.208 0.1265 0.7781 -0.8011
--2.56 3.171 0.104 0.7781 -0.8301
--2.525 3.127 0.0842 0.7781 -0.8569
--2.484 3.077 0.06704 0.7781 -0.8816
--2.438 3.02 0.05241 0.7781 -0.9041
--2.388 2.958 0.04015 0.7781 -0.9243
--2.333 2.89 0.03006 0.7781 -0.9422
--2.275 2.817 0.02194 0.7781 -0.9578
--2.213 2.741 0.01554 0.7781 -0.971
--2.148 2.661 0.01061 0.7781 -0.9817
--2.081 2.578 0.006851 0.7781 -0.99
--2.013 2.493 0.003981 0.7781 -0.9958
--1.943 2.407 0.001691 0.7781 -0.9991
--1.873 2.32 -0.0003358 0.7781 -1
--1.803 2.233 -0.002416 0.7781 -0.9983
--1.733 2.147 -0.004866 0.7781 -0.9941
--1.665 2.063 -0.008 0.7781 -0.9875
--1.599 1.981 -0.01212 0.7781 -0.9784
--1.535 1.902 -0.01752 0.7781 -0.9668
--1.474 1.826 -0.02447 0.7781 -0.9528
--1.417 1.755 -0.03322 0.7781 -0.9365
--1.364 1.689 -0.04402 0.7781 -0.9178
--1.315 1.629 -0.05706 0.7781 -0.8968
--1.271 1.574 -0.07252 0.7781 -0.8735
--1.232 1.526 -0.09055 0.7781 -0.8481
--1.198 1.484 -0.1113 0.7781 -0.8206
--1.17 1.449 -0.1347 0.7781 -0.791
--1.148 1.422 -0.161 0.7781 -0.7594
--1.132 1.402 -0.19 0.7781 -0.7259
--1.122 1.39 -0.2218 0.7781 -0.6907
--1.119 1.386 -0.2563 0.7781 -0.6536
--1.121 1.389 -0.2933 0.7781 -0.615
--1.13 1.399 -0.3327 0.7781 -0.5748
--1.144 1.417 -0.3743 0.7781 -0.5332
--1.164 1.442 -0.4179 0.7781 -0.4903
--1.19 1.473 -0.4632 0.7781 -0.4461
--1.22 1.511 -0.51 0.7781 -0.4008
--1.256 1.555 -0.5578 0.7781 -0.3545
--1.295 1.604 -0.6064 0.7781 -0.3073
--1.339 1.658 -0.6554 0.7781 -0.2594
--1.386 1.717 -0.7043 0.7781 -0.2108
--1.436 1.779 -0.7528 0.7781 -0.1617
--1.489 1.844 -0.8005 0.7781 -0.1122
--1.544 1.912 -0.8469 0.7781 -0.06235
--1.6 1.981 -0.8915 0.7781 -0.01239
--1.656 2.052 -0.934 0.7781 0.0376
--1.714 2.122 -0.974 0.7781 0.0875
--1.77 2.193 -1.011 0.7781 0.1372
--1.826 2.262 -1.044 0.7781 0.1865
--1.881 2.329 -1.074 0.7781 0.2354
--1.933 2.394 -1.1 0.7781 0.2837
--1.983 2.456 -1.121 0.7781 0.3312
--2.03 2.515 -1.137 0.7781 0.378
--2.074 2.569 -1.148 0.7781 0.4238
--2.114 2.619 -1.154 0.7781 0.4685
--2.15 2.664 -1.154 0.7781 0.5121
--2.182 2.703 -1.149 0.7781 0.5544
--2.209 2.736 -1.137 0.7781 0.5953
--2.231 2.764 -1.12 0.7781 0.6347
--2.248 2.785 -1.097 0.7781 0.6725
--2.26 2.8 -1.068 0.7781 0.7087
--2.267 2.808 -1.033 0.7781 0.743
--2.269 2.81 -0.9918 0.7781 0.7756
--2.265 2.805 -0.9452 0.7781 0.8061
--2.256 2.795 -0.8933 0.7781 0.8347
--2.243 2.778 -0.8361 0.7781 0.8612
--2.225 2.756 -0.774 0.7781 0.8855
--2.203 2.728 -0.7073 0.7781 0.9076
--2.176 2.696 -0.6364 0.7781 0.9275
--2.146 2.658 -0.5616 0.7781 0.945
--2.113 2.617 -0.4835 0.7781 0.9602
--2.077 2.572 -0.4024 0.7781 0.9729
--2.038 2.525 -0.3188 0.7781 0.9833
--1.998 2.474 -0.2333 0.7781 0.9911
--1.956 2.423 -0.1464 0.7781 0.9965
--1.913 2.37 -0.05853 0.7781 0.9994
--1.999 2.237 0 0.7457 1
--1.952 2.184 0.0864 0.7457 0.9988
--1.905 2.132 0.1723 0.7457 0.995
--1.86 2.081 0.2571 0.7457 0.9888
--1.816 2.033 0.3404 0.7457 0.9801
--1.775 1.986 0.4217 0.7457 0.9689
--1.736 1.943 0.5004 0.7457 0.9553
--1.7 1.903 0.5761 0.7457 0.9394
--1.669 1.867 0.6485 0.7457 0.9211
--1.641 1.836 0.717 0.7457 0.9004
--1.618 1.81 0.7813 0.7457 0.8776
--1.599 1.79 0.8411 0.7457 0.8525
--1.586 1.775 0.8961 0.7457 0.8253
--1.578 1.766 0.946 0.7457 0.7961
--1.575 1.763 0.9906 0.7457 0.7648
--1.578 1.766 1.03 0.7457 0.7317
--1.586 1.775 1.063 0.7457 0.6967
--1.6 1.791 1.091 0.7457 0.66
--1.62 1.813 1.113 0.7457 0.6216
--1.645 1.841 1.129 0.7457 0.5817
--1.675 1.875 1.14 0.7457 0.5403
--1.71 1.914 1.144 0.7457 0.4976
--1.75 1.958 1.144 0.7457 0.4536
--1.794 2.008 1.138 0.7457 0.4085
--1.842 2.061 1.127 0.7457 0.3624
--1.893 2.119 1.111 0.7457 0.3153
--1.948 2.18 1.09 0.7457 0.2675
--2.004 2.243 1.065 0.7457 0.219
--2.063 2.309 1.036 0.7457 0.17
--2.124 2.377 1.004 0.7457 0.1205
--2.184 2.445 0.9681 0.7457 0.07074
--2.246 2.513 0.9296 0.7457 0.02079
--2.306 2.581 0.8885 0.7457 -0.0292
--2.366 2.648 0.8455 0.7457 -0.07912
--2.424 2.713 0.8008 0.7457 -0.1288
--2.48 2.776 0.7549 0.7457 -0.1782
--2.533 2.835 0.7081 0.7457 -0.2272
--2.583 2.891 0.661 0.7457 -0.2756
--2.628 2.942 0.6138 0.7457 -0.3233
--2.67 2.988 0.567 0.7457 -0.3702
--2.707 3.029 0.5208 0.7457 -0.4161
--2.738 3.064 0.4757 0.7457 -0.4611
--2.764 3.093 0.4319 0.7457 -0.5048
--2.784 3.116 0.3896 0.7457 -0.5474
--2.798 3.131 0.3492 0.7457 -0.5885
--2.805 3.139 0.3109 0.7457 -0.6282
--2.806 3.141 0.2747 0.7457 -0.6663
--2.801 3.134 0.241 0.7457 -0.7027
--2.788 3.121 0.2096 0.7457 -0.7374
--2.77 3.1 0.1808 0.7457 -0.7702
--2.745 3.072 0.1546 0.7457 -0.8011
--2.714 3.037 0.1308 0.7457 -0.8301
--2.676 2.995 0.1097 0.7457 -0.8569
--2.633 2.947 0.09088 0.7457 -0.8816
--2.585 2.893 0.07443 0.7457 -0.9041
--2.532 2.834 0.06016 0.7457 -0.9243
--2.474 2.769 0.0479 0.7457 -0.9422
--2.412 2.7 0.03745 0.7457 -0.9578
--2.346 2.626 0.02859 0.7457 -0.971
--2.278 2.55 0.02109 0.7457 -0.9817
--2.207 2.47 0.01467 0.7457 -0.99
--2.135 2.389 0.009075 0.7457 -0.9958
--2.061 2.306 0.004012 0.7457 -0.9991
--1.986 2.223 -0.0008056 0.7457 -1
--1.912 2.14 -0.005673 0.7457 -0.9983
--1.839 2.058 -0.01088 0.7457 -0.9941
--1.766 1.977 -0.01672 0.7457 -0.9875
--1.696 1.899 -0.02348 0.7457 -0.9784
--1.629 1.823 -0.03141 0.7457 -0.9668
--1.564 1.751 -0.04078 0.7457 -0.9528
--1.504 1.683 -0.05181 0.7457 -0.9365
--1.447 1.62 -0.06473 0.7457 -0.9178
--1.396 1.562 -0.07971 0.7457 -0.8968
--1.349 1.51 -0.09693 0.7457 -0.8735
--1.308 1.464 -0.1165 0.7457 -0.8481
--1.273 1.425 -0.1385 0.7457 -0.8206
--1.244 1.392 -0.1631 0.7457 -0.791
--1.221 1.366 -0.1902 0.7457 -0.7594
--1.204 1.348 -0.2199 0.7457 -0.7259
--1.194 1.337 -0.252 0.7457 -0.6907
--1.191 1.333 -0.2866 0.7457 -0.6536
--1.194 1.337 -0.3235 0.7457 -0.615
--1.204 1.348 -0.3626 0.7457 -0.5748
--1.22 1.365 -0.4037 0.7457 -0.5332
--1.242 1.39 -0.4465 0.7457 -0.4903
--1.27 1.421 -0.4907 0.7457 -0.4461
--1.303 1.458 -0.5363 0.7457 -0.4008
--1.341 1.501 -0.5827 0.7457 -0.3545
--1.384 1.549 -0.6297 0.7457 -0.3073
--1.431 1.602 -0.6769 0.7457 -0.2594
--1.482 1.659 -0.7239 0.7457 -0.2108
--1.536 1.719 -0.7704 0.7457 -0.1617
--1.593 1.783 -0.816 0.7457 -0.1122
--1.652 1.848 -0.8602 0.7457 -0.06235
--1.712 1.916 -0.9026 0.7457 -0.01239
--1.773 1.984 -0.9428 0.7457 0.0376
--1.834 2.052 -0.9805 0.7457 0.0875
--1.895 2.12 -1.015 0.7457 0.1372
--1.954 2.187 -1.046 0.7457 0.1865
--2.013 2.252 -1.074 0.7457 0.2354
--2.069 2.315 -1.097 0.7457 0.2837
--2.122 2.375 -1.117 0.7457 0.3312
--2.172 2.431 -1.131 0.7457 0.378
--2.219 2.484 -1.14 0.7457 0.4238
--2.262 2.531 -1.145 0.7457 0.4685
--2.3 2.574 -1.143 0.7457 0.5121
--2.334 2.612 -1.137 0.7457 0.5544
--2.362 2.643 -1.124 0.7457 0.5953
--2.385 2.669 -1.106 0.7457 0.6347
--2.403 2.689 -1.082 0.7457 0.6725
--2.415 2.703 -1.052 0.7457 0.7087
--2.422 2.71 -1.017 0.7457 0.743
--2.423 2.711 -0.9762 0.7457 0.7756
--2.418 2.706 -0.9298 0.7457 0.8061
--2.408 2.695 -0.8782 0.7457 0.8347
--2.393 2.678 -0.8216 0.7457 0.8612
--2.373 2.656 -0.7602 0.7457 0.8855
--2.348 2.628 -0.6944 0.7457 0.9076
--2.319 2.595 -0.6246 0.7457 0.9275
--2.286 2.558 -0.551 0.7457 0.945
--2.249 2.517 -0.4742 0.7457 0.9602
--2.209 2.473 -0.3946 0.7457 0.9729
--2.167 2.425 -0.3126 0.7457 0.9833
--2.123 2.376 -0.2287 0.7457 0.9911
--2.077 2.325 -0.1435 0.7457 0.9965
--2.03 2.272 -0.05738 0.7457 0.9994
--2.108 2.134 0 0.7115 1
--2.057 2.083 0.08461 0.7115 0.9988
--2.006 2.031 0.1687 0.7115 0.995
--1.957 1.981 0.2518 0.7115 0.9888
--1.909 1.933 0.3334 0.7115 0.9801
--1.864 1.888 0.4131 0.7115 0.9689
--1.822 1.845 0.4904 0.7115 0.9553
--1.783 1.806 0.5648 0.7115 0.9394
--1.749 1.77 0.6359 0.7115 0.9211
--1.718 1.74 0.7033 0.7115 0.9004
--1.692 1.714 0.7668 0.7115 0.8776
--1.672 1.693 0.8259 0.7115 0.8525
--1.657 1.677 0.8803 0.7115 0.8253
--1.647 1.668 0.9299 0.7115 0.7961
--1.644 1.664 0.9743 0.7115 0.7648
--1.646 1.667 1.014 0.7115 0.7317
--1.654 1.675 1.047 0.7115 0.6967
--1.669 1.69 1.076 0.7115 0.66
--1.689 1.71 1.098 0.7115 0.6216
--1.715 1.736 1.115 0.7115 0.5817
--1.747 1.768 1.127 0.7115 0.5403
--1.783 1.806 1.133 0.7115 0.4976
--1.825 1.848 1.134 0.7115 0.4536
--1.872 1.895 1.13 0.7115 0.4085
--1.923 1.947 1.12 0.7115 0.3624
--1.977 2.002 1.106 0.7115 0.3153
--2.035 2.06 1.088 0.7115 0.2675
--2.095 2.122 1.065 0.7115 0.219
--2.158 2.185 1.038 0.7115 0.17
--2.222 2.25 1.008 0.7115 0.1205
--2.287 2.315 0.9748 0.7115 0.07074
--2.352 2.381 0.9385 0.7115 0.02079
--2.417 2.447 0.8998 0.7115 -0.0292
--2.48 2.511 0.859 0.7115 -0.07912
--2.542 2.574 0.8165 0.7115 -0.1288
--2.602 2.635 0.7727 0.7115 -0.1782
--2.659 2.692 0.7279 0.7115 -0.2272
--2.712 2.746 0.6827 0.7115 -0.2756
--2.761 2.796 0.6372 0.7115 -0.3233
--2.806 2.841 0.592 0.7115 -0.3702
--2.845 2.881 0.5472 0.7115 -0.4161
--2.879 2.915 0.5033 0.7115 -0.4611
--2.907 2.943 0.4604 0.7115 -0.5048
--2.929 2.965 0.419 0.7115 -0.5474
--2.944 2.981 0.3791 0.7115 -0.5885
--2.953 2.99 0.341 0.7115 -0.6282
--2.954 2.991 0.3049 0.7115 -0.6663
--2.949 2.986 0.271 0.7115 -0.7027
--2.937 2.974 0.2392 0.7115 -0.7374
--2.918 2.954 0.2097 0.7115 -0.7702
--2.892 2.928 0.1825 0.7115 -0.8011
--2.86 2.895 0.1576 0.7115 -0.8301
--2.821 2.856 0.135 0.7115 -0.8569
--2.776 2.81 0.1147 0.7115 -0.8816
--2.725 2.759 0.09641 0.7115 -0.9041
--2.669 2.702 0.08014 0.7115 -0.9243
--2.608 2.641 0.06571 0.7115 -0.9422
--2.543 2.575 0.05294 0.7115 -0.9578
--2.474 2.505 0.04163 0.7115 -0.971
--2.402 2.432 0.03156 0.7115 -0.9817
--2.328 2.357 0.02248 0.7115 -0.99
--2.251 2.279 0.01416 0.7115 -0.9958
--2.173 2.2 0.006332 0.7115 -0.9991
--2.095 2.121 -0.001275 0.7115 -1
--2.017 2.042 -0.008926 0.7115 -0.9983
--1.939 1.964 -0.01689 0.7115 -0.9941
--1.863 1.887 -0.02544 0.7115 -0.9875
--1.79 1.812 -0.03482 0.7115 -0.9784
--1.719 1.74 -0.04528 0.7115 -0.9668
--1.651 1.671 -0.05706 0.7115 -0.9528
--1.587 1.607 -0.07037 0.7115 -0.9365
--1.528 1.547 -0.0854 0.7115 -0.9178
--1.474 1.492 -0.1023 0.7115 -0.8968
--1.425 1.443 -0.1213 0.7115 -0.8735
--1.382 1.399 -0.1424 0.7115 -0.8481
--1.345 1.362 -0.1657 0.7115 -0.8206
--1.315 1.331 -0.1914 0.7115 -0.791
--1.291 1.307 -0.2193 0.7115 -0.7594
--1.274 1.29 -0.2496 0.7115 -0.7259
--1.265 1.28 -0.2821 0.7115 -0.6907
--1.262 1.277 -0.3169 0.7115 -0.6536
--1.266 1.281 -0.3536 0.7115 -0.615
--1.276 1.292 -0.3923 0.7115 -0.5748
--1.294 1.31 -0.4328 0.7115 -0.5332
--1.318 1.334 -0.4747 0.7115 -0.4903
--1.348 1.365 -0.5179 0.7115 -0.4461
--1.384 1.401 -0.5622 0.7115 -0.4008
--1.425 1.443 -0.6072 0.7115 -0.3545
--1.471 1.489 -0.6525 0.7115 -0.3073
--1.522 1.541 -0.6979 0.7115 -0.2594
--1.576 1.596 -0.7431 0.7115 -0.2108
--1.634 1.654 -0.7875 0.7115 -0.1617
--1.694 1.716 -0.8309 0.7115 -0.1122
--1.757 1.779 -0.8729 0.7115 -0.06235
--1.821 1.844 -0.9131 0.7115 -0.01239
--1.886 1.91 -0.951 0.7115 0.0376
--1.951 1.976 -0.9864 0.7115 0.0875
--2.016 2.041 -1.019 0.7115 0.1372
--2.08 2.106 -1.048 0.7115 0.1865
--2.141 2.168 -1.073 0.7115 0.2354
--2.201 2.229 -1.095 0.7115 0.2837
--2.258 2.286 -1.112 0.7115 0.3312
--2.311 2.34 -1.124 0.7115 0.378
--2.361 2.39 -1.132 0.7115 0.4238
--2.406 2.436 -1.134 0.7115 0.4685
--2.446 2.476 -1.132 0.7115 0.5121
--2.481 2.512 -1.124 0.7115 0.5544
--2.511 2.542 -1.11 0.7115 0.5953
--2.535 2.566 -1.091 0.7115 0.6347
--2.553 2.585 -1.067 0.7115 0.6725
--2.565 2.597 -1.037 0.7115 0.7087
--2.572 2.604 -1.001 0.7115 0.743
--2.572 2.604 -0.96 0.7115 0.7756
--2.566 2.598 -0.9138 0.7115 0.8061
--2.555 2.587 -0.8626 0.7115 0.8347
--2.538 2.57 -0.8065 0.7115 0.8612
--2.516 2.547 -0.7459 0.7115 0.8855
--2.488 2.519 -0.6811 0.7115 0.9076
--2.457 2.487 -0.6124 0.7115 0.9275
--2.42 2.45 -0.5401 0.7115 0.945
--2.38 2.41 -0.4647 0.7115 0.9602
--2.337 2.366 -0.3866 0.7115 0.9729
--2.291 2.32 -0.3062 0.7115 0.9833
--2.243 2.271 -0.224 0.7115 0.9911
--2.193 2.22 -0.1405 0.7115 0.9965
--2.142 2.169 -0.05618 0.7115 0.9994
--2.212 2.026 0 0.6755 1
--2.157 1.976 0.08276 0.6755 0.9988
--2.102 1.926 0.165 0.6755 0.995
--2.049 1.877 0.2464 0.6755 0.9888
--1.998 1.83 0.3263 0.6755 0.9801
--1.949 1.785 0.4043 0.6755 0.9689
--1.903 1.743 0.48 0.6755 0.9553
--1.861 1.705 0.553 0.6755 0.9394
--1.823 1.67 0.6229 0.6755 0.9211
--1.79 1.64 0.6892 0.6755 0.9004
--1.762 1.614 0.7518 0.6755 0.8776
--1.739 1.593 0.8101 0.6755 0.8525
--1.722 1.578 0.864 0.6755 0.8253
--1.712 1.568 0.9132 0.6755 0.7961
--1.707 1.564 0.9575 0.6755 0.7648
--1.709 1.565 0.9968 0.6755 0.7317
--1.717 1.573 1.031 0.6755 0.6967
--1.731 1.586 1.06 0.6755 0.66
--1.752 1.605 1.083 0.6755 0.6216
--1.779 1.63 1.101 0.6755 0.5817
--1.812 1.66 1.114 0.6755 0.5403
--1.851 1.695 1.121 0.6755 0.4976
--1.895 1.736 1.124 0.6755 0.4536
--1.944 1.78 1.121 0.6755 0.4085
--1.997 1.829 1.113 0.6755 0.3624
--2.054 1.882 1.101 0.6755 0.3153
--2.115 1.938 1.085 0.6755 0.2675
--2.179 1.996 1.064 0.6755 0.219
--2.245 2.057 1.04 0.6755 0.17
--2.313 2.119 1.012 0.6755 0.1205
--2.382 2.182 0.9808 0.6755 0.07074
--2.451 2.245 0.9469 0.6755 0.02079
--2.519 2.308 0.9105 0.6755 -0.0292
--2.587 2.37 0.872 0.6755 -0.07912
--2.653 2.43 0.8317 0.6755 -0.1288
--2.716 2.488 0.79 0.6755 -0.1782
--2.777 2.543 0.7473 0.6755 -0.2272
--2.833 2.595 0.704 0.6755 -0.2756
--2.886 2.643 0.6603 0.6755 -0.3233
--2.933 2.687 0.6166 0.6755 -0.3702
--2.975 2.725 0.5733 0.6755 -0.4161
--3.012 2.759 0.5305 0.6755 -0.4611
--3.042 2.786 0.4887 0.6755 -0.5048
--3.065 2.808 0.448 0.6755 -0.5474
--3.082 2.823 0.4087 0.6755 -0.5885
--3.092 2.832 0.371 0.6755 -0.6282
--3.094 2.834 0.335 0.6755 -0.6663
--3.09 2.83 0.3008 0.6755 -0.7027
--3.077 2.819 0.2686 0.6755 -0.7374
--3.058 2.801 0.2384 0.6755 -0.7702
--3.031 2.777 0.2103 0.6755 -0.8011
--2.997 2.746 0.1843 0.6755 -0.8301
--2.957 2.709 0.1603 0.6755 -0.8569
--2.91 2.666 0.1384 0.6755 -0.8816
--2.857 2.617 0.1183 0.6755 -0.9041
--2.799 2.564 0.1001 0.6755 -0.9243
--2.736 2.506 0.08348 0.6755 -0.9422
--2.667 2.443 0.0684 0.6755 -0.9578
--2.595 2.377 0.05464 0.6755 -0.971
--2.52 2.308 0.042 0.6755 -0.9817
--2.442 2.237 0.03028 0.6755 -0.99
--2.362 2.163 0.01924 0.6755 -0.9958
--2.28 2.089 0.008647 0.6755 -0.9991
--2.198 2.014 -0.001743 0.6755 -1
--2.116 1.939 -0.01217 0.6755 -0.9983
--2.035 1.864 -0.02289 0.6755 -0.9941
--1.956 1.792 -0.03414 0.6755 -0.9875
--1.879 1.721 -0.04614 0.6755 -0.9784
--1.804 1.653 -0.05913 0.6755 -0.9668
--1.734 1.588 -0.07331 0.6755 -0.9528
--1.667 1.527 -0.08888 0.6755 -0.9365
--1.605 1.47 -0.106 0.6755 -0.9178
--1.548 1.418 -0.1249 0.6755 -0.8968
--1.498 1.372 -0.1455 0.6755 -0.8735
--1.453 1.331 -0.1682 0.6755 -0.8481
--1.415 1.296 -0.1928 0.6755 -0.8206
--1.383 1.267 -0.2195 0.6755 -0.791
--1.359 1.245 -0.2483 0.6755 -0.7594
--1.342 1.229 -0.2792 0.6755 -0.7259
--1.332 1.22 -0.3121 0.6755 -0.6907
--1.33 1.218 -0.3469 0.6755 -0.6536
--1.335 1.223 -0.3835 0.6755 -0.615
--1.347 1.234 -0.4218 0.6755 -0.5748
--1.366 1.251 -0.4616 0.6755 -0.5332
--1.392 1.275 -0.5027 0.6755 -0.4903
--1.424 1.305 -0.5448 0.6755 -0.4461
--1.463 1.34 -0.5878 0.6755 -0.4008
--1.507 1.38 -0.6313 0.6755 -0.3545
--1.556 1.425 -0.675 0.6755 -0.3073
--1.61 1.475 -0.7186 0.6755 -0.2594
--1.668 1.528 -0.7618 0.6755 -0.2108
--1.729 1.584 -0.8041 0.6755 -0.1617
--1.793 1.643 -0.8454 0.6755 -0.1122
--1.86 1.704 -0.8851 0.6755 -0.06235
--1.928 1.766 -0.923 0.6755 -0.01239
--1.997 1.829 -0.9586 0.6755 0.0376
--2.066 1.892 -0.9916 0.6755 0.0875
--2.134 1.955 -1.022 0.6755 0.1372
--2.202 2.017 -1.048 0.6755 0.1865
--2.267 2.077 -1.072 0.6755 0.2354
--2.33 2.134 -1.091 0.6755 0.2837
--2.39 2.189 -1.106 0.6755 0.3312
--2.446 2.24 -1.117 0.6755 0.378
--2.498 2.288 -1.122 0.6755 0.4238
--2.545 2.331 -1.123 0.6755 0.4685
--2.587 2.37 -1.119 0.6755 0.5121
--2.624 2.404 -1.11 0.6755 0.5544
--2.655 2.432 -1.096 0.6755 0.5953
--2.68 2.455 -1.076 0.6755 0.6347
--2.699 2.472 -1.05 0.6755 0.6725
--2.711 2.483 -1.02 0.6755 0.7087
--2.717 2.489 -0.9841 0.6755 0.743
--2.716 2.488 -0.9432 0.6755 0.7756
--2.71 2.482 -0.8972 0.6755 0.8061
--2.697 2.47 -0.8464 0.6755 0.8347
--2.678 2.453 -0.791 0.6755 0.8612
--2.654 2.431 -0.7312 0.6755 0.8855
--2.624 2.403 -0.6673 0.6755 0.9076
--2.589 2.371 -0.5998 0.6755 0.9275
--2.55 2.335 -0.5288 0.6755 0.945
--2.506 2.296 -0.4549 0.6755 0.9602
--2.459 2.253 -0.3783 0.6755 0.9729
--2.41 2.207 -0.2996 0.6755 0.9833
--2.358 2.16 -0.2192 0.6755 0.9911
--2.304 2.11 -0.1375 0.6755 0.9965
--2.249 2.06 -0.05496 0.6755 0.9994
--2.311 1.913 0 0.6378 1
--2.251 1.864 0.08086 0.6378 0.9988
--2.193 1.816 0.1613 0.6378 0.995
--2.136 1.768 0.2408 0.6378 0.9888
--2.08 1.723 0.3189 0.6378 0.9801
--2.028 1.679 0.3953 0.6378 0.9689
--1.979 1.638 0.4694 0.6378 0.9553
--1.933 1.601 0.541 0.6378 0.9394
--1.893 1.567 0.6095 0.6378 0.9211
--1.857 1.537 0.6747 0.6378 0.9004
--1.826 1.512 0.7363 0.6378 0.8776
--1.801 1.492 0.7938 0.6378 0.8525
--1.783 1.476 0.8471 0.6378 0.8253
--1.77 1.466 0.896 0.6378 0.7961
--1.765 1.461 0.9401 0.6378 0.7648
--1.766 1.462 0.9794 0.6378 0.7317
--1.774 1.469 1.014 0.6378 0.6967
--1.788 1.481 1.043 0.6378 0.66
--1.81 1.498 1.067 0.6378 0.6216
--1.837 1.521 1.086 0.6378 0.5817
--1.871 1.55 1.1 0.6378 0.5403
--1.912 1.583 1.109 0.6378 0.4976
--1.957 1.621 1.112 0.6378 0.4536
--2.009 1.663 1.111 0.6378 0.4085
--2.065 1.709 1.106 0.6378 0.3624
--2.125 1.759 1.096 0.6378 0.3153
--2.189 1.812 1.081 0.6378 0.2675
--2.256 1.868 1.063 0.6378 0.219
--2.325 1.925 1.041 0.6378 0.17
--2.396 1.984 1.015 0.6378 0.1205
--2.469 2.044 0.9863 0.6378 0.07074
--2.542 2.104 0.9547 0.6378 0.02079
--2.614 2.164 0.9206 0.6378 -0.0292
--2.685 2.223 0.8844 0.6378 -0.07912
--2.755 2.281 0.8463 0.6378 -0.1288
--2.822 2.336 0.8068 0.6378 -0.1782
--2.886 2.389 0.7662 0.6378 -0.2272
--2.946 2.439 0.7248 0.6378 -0.2756
--3.001 2.485 0.6829 0.6378 -0.3233
--3.052 2.527 0.6409 0.6378 -0.3702
--3.096 2.564 0.599 0.6378 -0.4161
--3.135 2.596 0.5575 0.6378 -0.4611
--3.168 2.623 0.5167 0.6378 -0.5048
--3.193 2.644 0.4768 0.6378 -0.5474
--3.211 2.659 0.4381 0.6378 -0.5885
--3.222 2.668 0.4007 0.6378 -0.6282
--3.225 2.671 0.3648 0.6378 -0.6663
--3.221 2.667 0.3304 0.6378 -0.7027
--3.209 2.657 0.2978 0.6378 -0.7374
--3.189 2.641 0.267 0.6378 -0.7702
--3.162 2.618 0.238 0.6378 -0.8011
--3.127 2.589 0.2109 0.6378 -0.8301
--3.085 2.555 0.1855 0.6378 -0.8569
--3.037 2.515 0.162 0.6378 -0.8816
--2.982 2.469 0.1402 0.6378 -0.9041
--2.922 2.419 0.1199 0.6378 -0.9243
--2.856 2.364 0.1012 0.6378 -0.9422
--2.785 2.306 0.08381 0.6378 -0.9578
--2.71 2.244 0.06761 0.6378 -0.971
--2.631 2.179 0.05243 0.6378 -0.9817
--2.55 2.111 0.03806 0.6378 -0.99
--2.467 2.042 0.02431 0.6378 -0.9958
--2.382 1.972 0.01096 0.6378 -0.9991
--2.296 1.901 -0.002211 0.6378 -1
--2.211 1.831 -0.01541 0.6378 -0.9983
--2.127 1.761 -0.02888 0.6378 -0.9941
--2.044 1.692 -0.04281 0.6378 -0.9875
--1.963 1.626 -0.05743 0.6378 -0.9784
--1.886 1.562 -0.07294 0.6378 -0.9668
--1.812 1.501 -0.08951 0.6378 -0.9528
--1.743 1.443 -0.1073 0.6378 -0.9365
--1.679 1.39 -0.1266 0.6378 -0.9178
--1.62 1.341 -0.1473 0.6378 -0.8968
--1.567 1.298 -0.1697 0.6378 -0.8735
--1.521 1.26 -0.1939 0.6378 -0.8481
--1.482 1.227 -0.2198 0.6378 -0.8206
--1.45 1.2 -0.2476 0.6378 -0.791
--1.425 1.18 -0.2772 0.6378 -0.7594
--1.408 1.165 -0.3086 0.6378 -0.7259
--1.398 1.158 -0.3418 0.6378 -0.6907
--1.396 1.156 -0.3767 0.6378 -0.6536
--1.402 1.161 -0.4131 0.6378 -0.615
--1.415 1.172 -0.451 0.6378 -0.5748
--1.436 1.189 -0.4901 0.6378 -0.5332
--1.464 1.212 -0.5303 0.6378 -0.4903
--1.498 1.241 -0.5714 0.6378 -0.4461
--1.539 1.275 -0.613 0.6378 -0.4008
--1.586 1.313 -0.655 0.6378 -0.3545
--1.638 1.357 -0.697 0.6378 -0.3073
--1.696 1.404 -0.7388 0.6378 -0.2594
--1.757 1.455 -0.78 0.6378 -0.2108
--1.822 1.509 -0.8203 0.6378 -0.1617
--1.89 1.565 -0.8593 0.6378 -0.1122
--1.96 1.623 -0.8968 0.6378 -0.06235
--2.032 1.682 -0.9323 0.6378 -0.01239
--2.104 1.742 -0.9656 0.6378 0.0376
--2.177 1.803 -0.9963 0.6378 0.0875
--2.249 1.862 -1.024 0.6378 0.1372
--2.32 1.921 -1.049 0.6378 0.1865
--2.389 1.978 -1.069 0.6378 0.2354
--2.455 2.032 -1.087 0.6378 0.2837
--2.517 2.084 -1.1 0.6378 0.3312
--2.576 2.133 -1.108 0.6378 0.378
--2.631 2.178 -1.112 0.6378 0.4238
--2.68 2.219 -1.112 0.6378 0.4685
--2.724 2.255 -1.106 0.6378 0.5121
--2.762 2.287 -1.096 0.6378 0.5544
--2.794 2.314 -1.08 0.6378 0.5953
--2.82 2.335 -1.06 0.6378 0.6347
--2.839 2.351 -1.034 0.6378 0.6725
--2.851 2.361 -1.003 0.6378 0.7087
--2.857 2.365 -0.9667 0.6378 0.743
--2.855 2.364 -0.9258 0.6378 0.7756
--2.848 2.358 -0.8801 0.6378 0.8061
--2.833 2.346 -0.8297 0.6378 0.8347
--2.812 2.329 -0.7749 0.6378 0.8612
--2.786 2.307 -0.716 0.6378 0.8855
--2.753 2.28 -0.6532 0.6378 0.9076
--2.716 2.249 -0.5868 0.6378 0.9275
--2.673 2.213 -0.5172 0.6378 0.945
--2.627 2.175 -0.4447 0.6378 0.9602
--2.576 2.133 -0.3698 0.6378 0.9729
--2.523 2.089 -0.2928 0.6378 0.9833
--2.467 2.043 -0.2142 0.6378 0.9911
--2.409 1.995 -0.1343 0.6378 0.9965
--2.35 1.946 -0.05369 0.6378 0.9994
--2.403 1.795 0 0.5985 1
--2.34 1.748 0.07891 0.5985 0.9988
--2.278 1.701 0.1574 0.5985 0.995
--2.217 1.656 0.235 0.5985 0.9888
--2.158 1.612 0.3113 0.5985 0.9801
--2.101 1.57 0.386 0.5985 0.9689
--2.049 1.531 0.4585 0.5985 0.9553
--2 1.494 0.5285 0.5985 0.9394
--1.956 1.461 0.5958 0.5985 0.9211
--1.918 1.433 0.6598 0.5985 0.9004
--1.885 1.408 0.7203 0.5985 0.8776
--1.858 1.388 0.777 0.5985 0.8525
--1.837 1.373 0.8297 0.5985 0.8253
--1.824 1.362 0.8781 0.5985 0.7961
--1.817 1.357 0.9221 0.5985 0.7648
--1.817 1.358 0.9614 0.5985 0.7317
--1.825 1.363 0.9959 0.5985 0.6967
--1.839 1.374 1.026 0.5985 0.66
--1.861 1.39 1.05 0.5985 0.6216
--1.889 1.411 1.07 0.5985 0.5817
--1.925 1.438 1.085 0.5985 0.5403
--1.966 1.469 1.095 0.5985 0.4976
--2.014 1.504 1.101 0.5985 0.4536
--2.067 1.544 1.101 0.5985 0.4085
--2.125 1.588 1.097 0.5985 0.3624
--2.188 1.635 1.089 0.5985 0.3153
--2.255 1.684 1.077 0.5985 0.2675
--2.325 1.737 1.061 0.5985 0.219
--2.398 1.791 1.041 0.5985 0.17
--2.472 1.847 1.018 0.5985 0.1205
--2.548 1.904 0.9911 0.5985 0.07074
--2.624 1.96 0.9619 0.5985 0.02079
--2.7 2.017 0.9302 0.5985 -0.0292
--2.775 2.073 0.8963 0.5985 -0.07912
--2.848 2.128 0.8605 0.5985 -0.1288
--2.919 2.18 0.8232 0.5985 -0.1782
--2.986 2.231 0.7846 0.5985 -0.2272
--3.049 2.278 0.7452 0.5985 -0.2756
--3.108 2.321 0.7051 0.5985 -0.3233
--3.161 2.361 0.6647 0.5985 -0.3702
--3.209 2.397 0.6243 0.5985 -0.4161
--3.25 2.428 0.5841 0.5985 -0.4611
--3.284 2.453 0.5443 0.5985 -0.5048
--3.311 2.474 0.5053 0.5985 -0.5474
--3.331 2.488 0.4672 0.5985 -0.5885
--3.343 2.497 0.4301 0.5985 -0.6282
--3.347 2.5 0.3943 0.5985 -0.6663
--3.343 2.498 0.3599 0.5985 -0.7027
--3.331 2.489 0.3269 0.5985 -0.7374
--3.311 2.474 0.2954 0.5985 -0.7702
--3.284 2.453 0.2656 0.5985 -0.8011
--3.248 2.426 0.2373 0.5985 -0.8301
--3.205 2.394 0.2106 0.5985 -0.8569
--3.155 2.357 0.1855 0.5985 -0.8816
--3.099 2.315 0.1619 0.5985 -0.9041
--3.036 2.268 0.1397 0.5985 -0.9243
--2.968 2.217 0.1188 0.5985 -0.9422
--2.895 2.162 0.09917 0.5985 -0.9578
--2.817 2.104 0.08054 0.5985 -0.971
--2.736 2.044 0.06282 0.5985 -0.9817
--2.652 1.981 0.04581 0.5985 -0.99
--2.565 1.916 0.02936 0.5985 -0.9958
--2.477 1.85 0.01326 0.5985 -0.9991
--2.389 1.784 -0.002677 0.5985 -1
--2.3 1.718 -0.01865 0.5985 -0.9983
--2.213 1.653 -0.03484 0.5985 -0.9941
--2.127 1.589 -0.05146 0.5985 -0.9875
--2.043 1.526 -0.06869 0.5985 -0.9784
--1.963 1.467 -0.0867 0.5985 -0.9668
--1.887 1.41 -0.1057 0.5985 -0.9528
--1.815 1.356 -0.1257 0.5985 -0.9365
--1.749 1.306 -0.147 0.5985 -0.9178
--1.688 1.261 -0.1697 0.5985 -0.8968
--1.634 1.221 -0.1938 0.5985 -0.8735
--1.586 1.185 -0.2194 0.5985 -0.8481
--1.546 1.155 -0.2466 0.5985 -0.8206
--1.513 1.13 -0.2754 0.5985 -0.791
--1.488 1.111 -0.3058 0.5985 -0.7594
--1.471 1.099 -0.3378 0.5985 -0.7259
--1.461 1.092 -0.3713 0.5985 -0.6907
--1.46 1.091 -0.4062 0.5985 -0.6536
--1.467 1.096 -0.4425 0.5985 -0.615
--1.482 1.107 -0.4799 0.5985 -0.5748
--1.504 1.123 -0.5184 0.5985 -0.5332
--1.534 1.146 -0.5576 0.5985 -0.4903
--1.57 1.173 -0.5976 0.5985 -0.4461
--1.614 1.205 -0.6379 0.5985 -0.4008
--1.663 1.242 -0.6783 0.5985 -0.3545
--1.718 1.284 -0.7186 0.5985 -0.3073
--1.779 1.329 -0.7585 0.5985 -0.2594
--1.843 1.377 -0.7977 0.5985 -0.2108
--1.912 1.428 -0.8359 0.5985 -0.1617
--1.983 1.481 -0.8727 0.5985 -0.1122
--2.057 1.536 -0.9079 0.5985 -0.06235
--2.132 1.593 -0.9411 0.5985 -0.01239
--2.208 1.65 -0.972 0.5985 0.0376
--2.284 1.706 -1 0.5985 0.0875
--2.36 1.763 -1.026 0.5985 0.1372
--2.434 1.818 -1.048 0.5985 0.1865
--2.506 1.872 -1.067 0.5985 0.2354
--2.575 1.923 -1.082 0.5985 0.2837
--2.64 1.972 -1.093 0.5985 0.3312
--2.702 2.018 -1.099 0.5985 0.378
--2.758 2.06 -1.102 0.5985 0.4238
--2.81 2.099 -1.099 0.5985 0.4685
--2.855 2.133 -1.093 0.5985 0.5121
--2.895 2.162 -1.081 0.5985 0.5544
--2.928 2.187 -1.064 0.5985 0.5953
--2.954 2.207 -1.043 0.5985 0.6347
--2.973 2.221 -1.016 0.5985 0.6725
--2.985 2.23 -0.9849 0.5985 0.7087
--2.99 2.234 -0.9487 0.5985 0.743
--2.988 2.232 -0.9078 0.5985 0.7756
--2.979 2.226 -0.8624 0.5985 0.8061
--2.963 2.214 -0.8125 0.5985 0.8347
--2.941 2.197 -0.7584 0.5985 0.8612
--2.912 2.175 -0.7004 0.5985 0.8855
--2.877 2.149 -0.6386 0.5985 0.9076
--2.836 2.119 -0.5735 0.5985 0.9275
--2.791 2.085 -0.5053 0.5985 0.945
--2.741 2.047 -0.4344 0.5985 0.9602
--2.687 2.007 -0.3611 0.5985 0.9729
--2.63 1.964 -0.2858 0.5985 0.9833
--2.57 1.92 -0.209 0.5985 0.9911
--2.508 1.874 -0.1311 0.5985 0.9965
--2.445 1.827 -0.0524 0.5985 0.9994
--2.49 1.673 0 0.5577 1
--2.423 1.628 0.07691 0.5577 0.9988
--2.357 1.583 0.1534 0.5577 0.995
--2.292 1.54 0.2291 0.5577 0.9888
--2.229 1.498 0.3036 0.5577 0.9801
--2.169 1.458 0.3764 0.5577 0.9689
--2.113 1.42 0.4473 0.5577 0.9553
--2.062 1.385 0.5158 0.5577 0.9394
--2.015 1.354 0.5816 0.5577 0.9211
--1.973 1.326 0.6444 0.5577 0.9004
--1.938 1.302 0.7039 0.5577 0.8776
--1.909 1.283 0.7598 0.5577 0.8525
--1.887 1.268 0.8118 0.5577 0.8253
--1.872 1.257 0.8598 0.5577 0.7961
--1.864 1.252 0.9035 0.5577 0.7648
--1.863 1.252 0.9428 0.5577 0.7317
--1.87 1.256 0.9776 0.5577 0.6967
--1.885 1.266 1.008 0.5577 0.66
--1.906 1.281 1.033 0.5577 0.6216
--1.936 1.3 1.054 0.5577 0.5817
--1.972 1.325 1.07 0.5577 0.5403
--2.015 1.354 1.081 0.5577 0.4976
--2.064 1.387 1.088 0.5577 0.4536
--2.119 1.424 1.09 0.5577 0.4085
--2.179 1.464 1.088 0.5577 0.3624
--2.245 1.508 1.082 0.5577 0.3153
--2.314 1.555 1.072 0.5577 0.2675
--2.387 1.604 1.058 0.5577 0.219
--2.463 1.655 1.04 0.5577 0.17
--2.54 1.707 1.019 0.5577 0.1205
--2.619 1.76 0.9953 0.5577 0.07074
--2.699 1.813 0.9685 0.5577 0.02079
--2.778 1.867 0.9391 0.5577 -0.0292
--2.857 1.919 0.9076 0.5577 -0.07912
--2.933 1.971 0.8741 0.5577 -0.1288
--3.007 2.02 0.839 0.5577 -0.1782
--3.077 2.067 0.8026 0.5577 -0.2272
--3.143 2.112 0.7651 0.5577 -0.2756
--3.205 2.153 0.7268 0.5577 -0.3233
--3.261 2.191 0.6881 0.5577 -0.3702
--3.311 2.225 0.6492 0.5577 -0.4161
--3.355 2.254 0.6103 0.5577 -0.4611
--3.391 2.278 0.5717 0.5577 -0.5048
--3.42 2.298 0.5335 0.5577 -0.5474
--3.441 2.312 0.496 0.5577 -0.5885
--3.455 2.321 0.4593 0.5577 -0.6282
--3.46 2.324 0.4237 0.5577 -0.6663
--3.456 2.322 0.3891 0.5577 -0.7027
--3.445 2.314 0.3557 0.5577 -0.7374
--3.425 2.301 0.3237 0.5577 -0.7702
--3.396 2.282 0.293 0.5577 -0.8011
--3.36 2.258 0.2636 0.5577 -0.8301
--3.316 2.228 0.2356 0.5577 -0.8569
--3.265 2.194 0.2089 0.5577 -0.8816
--3.207 2.155 0.1836 0.5577 -0.9041
--3.143 2.111 0.1594 0.5577 -0.9243
--3.072 2.064 0.1364 0.5577 -0.9422
--2.997 2.014 0.1145 0.5577 -0.9578
--2.917 1.96 0.09343 0.5577 -0.971
--2.833 1.903 0.07317 0.5577 -0.9817
--2.746 1.845 0.05354 0.5577 -0.99
--2.657 1.785 0.03439 0.5577 -0.9958
--2.566 1.724 0.01555 0.5577 -0.9991
--2.475 1.663 -0.003141 0.5577 -1
--2.383 1.601 -0.02186 0.5577 -0.9983
--2.293 1.541 -0.04079 0.5577 -0.9941
--2.205 1.481 -0.06008 0.5577 -0.9875
--2.119 1.423 -0.0799 0.5577 -0.9784
--2.036 1.368 -0.1004 0.5577 -0.9668
--1.957 1.315 -0.1217 0.5577 -0.9528
--1.884 1.266 -0.144 0.5577 -0.9365
--1.815 1.22 -0.1674 0.5577 -0.9178
--1.753 1.178 -0.1919 0.5577 -0.8968
--1.697 1.14 -0.2177 0.5577 -0.8735
--1.648 1.107 -0.2449 0.5577 -0.8481
--1.607 1.08 -0.2733 0.5577 -0.8206
--1.574 1.057 -0.3031 0.5577 -0.791
--1.548 1.04 -0.3343 0.5577 -0.7594
--1.531 1.029 -0.3668 0.5577 -0.7259
--1.522 1.023 -0.4006 0.5577 -0.6907
--1.521 1.022 -0.4355 0.5577 -0.6536
--1.529 1.027 -0.4716 0.5577 -0.615
--1.545 1.038 -0.5085 0.5577 -0.5748
--1.569 1.054 -0.5463 0.5577 -0.5332
--1.601 1.075 -0.5846 0.5577 -0.4903
--1.64 1.102 -0.6234 0.5577 -0.4461
--1.685 1.132 -0.6623 0.5577 -0.4008
--1.738 1.167 -0.7012 0.5577 -0.3545
--1.795 1.206 -0.7398 0.5577 -0.3073
--1.859 1.249 -0.7778 0.5577 -0.2594
--1.926 1.294 -0.8149 0.5577 -0.2108
--1.998 1.342 -0.851 0.5577 -0.1617
--2.073 1.393 -0.8856 0.5577 -0.1122
--2.15 1.444 -0.9184 0.5577 -0.06235
--2.229 1.497 -0.9493 0.5577 -0.01239
--2.308 1.551 -0.9778 0.5577 0.0376
--2.388 1.604 -1.004 0.5577 0.0875
--2.466 1.657 -1.027 0.5577 0.1372
--2.543 1.709 -1.047 0.5577 0.1865
--2.618 1.759 -1.063 0.5577 0.2354
--2.69 1.807 -1.076 0.5577 0.2837
--2.758 1.853 -1.085 0.5577 0.3312
--2.822 1.896 -1.09 0.5577 0.378
--2.881 1.935 -1.09 0.5577 0.4238
--2.934 1.971 -1.086 0.5577 0.4685
--2.981 2.003 -1.078 0.5577 0.5121
--3.021 2.03 -1.065 0.5577 0.5544
--3.055 2.053 -1.047 0.5577 0.5953
--3.082 2.071 -1.025 0.5577 0.6347
--3.101 2.084 -0.9981 0.5577 0.6725
--3.113 2.092 -0.9664 0.5577 0.7087
--3.118 2.095 -0.9301 0.5577 0.743
--3.115 2.093 -0.8893 0.5577 0.7756
--3.104 2.086 -0.8441 0.5577 0.8061
--3.087 2.074 -0.7948 0.5577 0.8347
--3.062 2.057 -0.7414 0.5577 0.8612
--3.031 2.036 -0.6843 0.5577 0.8855
--2.994 2.011 -0.6237 0.5577 0.9076
--2.95 1.982 -0.5598 0.5577 0.9275
--2.902 1.95 -0.493 0.5577 0.945
--2.849 1.914 -0.4237 0.5577 0.9602
--2.791 1.875 -0.3521 0.5577 0.9729
--2.731 1.835 -0.2787 0.5577 0.9833
--2.667 1.792 -0.2038 0.5577 0.9911
--2.602 1.748 -0.1278 0.5577 0.9965
--2.535 1.703 -0.05107 0.5577 0.9994
--2.571 1.547 0 0.5155 1
--2.5 1.504 0.07486 0.5155 0.9988
--2.43 1.462 0.1493 0.5155 0.995
--2.361 1.42 0.223 0.5155 0.9888
--2.295 1.38 0.2956 0.5155 0.9801
--2.232 1.342 0.3666 0.5155 0.9689
--2.172 1.307 0.4358 0.5155 0.9553
--2.117 1.274 0.5027 0.5155 0.9394
--2.068 1.244 0.5671 0.5155 0.9211
--2.024 1.217 0.6287 0.5155 0.9004
--1.986 1.195 0.687 0.5155 0.8776
--1.955 1.176 0.742 0.5155 0.8525
--1.931 1.161 0.7934 0.5155 0.8253
--1.914 1.151 0.8409 0.5155 0.7961
--1.905 1.146 0.8843 0.5155 0.7648
--1.903 1.145 0.9236 0.5155 0.7317
--1.91 1.149 0.9586 0.5155 0.6967
--1.924 1.158 0.9892 0.5155 0.66
--1.946 1.171 1.015 0.5155 0.6216
--1.976 1.189 1.037 0.5155 0.5817
--2.013 1.211 1.054 0.5155 0.5403
--2.057 1.237 1.067 0.5155 0.4976
--2.107 1.268 1.075 0.5155 0.4536
--2.164 1.302 1.079 0.5155 0.4085
--2.227 1.34 1.079 0.5155 0.3624
--2.294 1.38 1.074 0.5155 0.3153
--2.366 1.423 1.066 0.5155 0.2675
--2.441 1.469 1.054 0.5155 0.219
--2.52 1.516 1.039 0.5155 0.17
--2.601 1.565 1.021 0.5155 0.1205
--2.683 1.614 0.9989 0.5155 0.07074
--2.766 1.664 0.9745 0.5155 0.02079
--2.848 1.713 0.9475 0.5155 -0.0292
--2.929 1.762 0.9183 0.5155 -0.07912
--3.009 1.81 0.8872 0.5155 -0.1288
--3.086 1.856 0.8543 0.5155 -0.1782
--3.159 1.901 0.82 0.5155 -0.2272
--3.228 1.942 0.7845 0.5155 -0.2756
--3.293 1.981 0.7481 0.5155 -0.3233
--3.351 2.016 0.7111 0.5155 -0.3702
--3.404 2.048 0.6737 0.5155 -0.4161
--3.45 2.075 0.6361 0.5155 -0.4611
--3.488 2.098 0.5986 0.5155 -0.5048
--3.519 2.117 0.5613 0.5155 -0.5474
--3.542 2.131 0.5245 0.5155 -0.5885
--3.556 2.139 0.4882 0.5155 -0.6282
--3.562 2.143 0.4527 0.5155 -0.6663
--3.559 2.141 0.4181 0.5155 -0.7027
--3.548 2.134 0.3844 0.5155 -0.7374
--3.528 2.122 0.3517 0.5155 -0.7702
--3.5 2.105 0.3202 0.5155 -0.8011
--3.463 2.083 0.2897 0.5155 -0.8301
--3.418 2.056 0.2604 0.5155 -0.8569
--3.366 2.025 0.2322 0.5155 -0.8816
--3.307 1.989 0.2051 0.5155 -0.9041
--3.241 1.95 0.179 0.5155 -0.9243
--3.169 1.906 0.1539 0.5155 -0.9422
--3.091 1.86 0.1297 0.5155 -0.9578
--3.009 1.81 0.1063 0.5155 -0.971
--2.923 1.758 0.08347 0.5155 -0.9817
--2.834 1.705 0.06123 0.5155 -0.99
--2.742 1.65 0.0394 0.5155 -0.9958
--2.649 1.594 0.01784 0.5155 -0.9991
--2.555 1.537 -0.003603 0.5155 -1
--2.461 1.481 -0.02507 0.5155 -0.9983
--2.368 1.425 -0.04671 0.5155 -0.9941
--2.277 1.37 -0.06866 0.5155 -0.9875
--2.189 1.317 -0.09107 0.5155 -0.9784
--2.104 1.266 -0.1141 0.5155 -0.9668
--2.023 1.217 -0.1377 0.5155 -0.9528
--1.948 1.172 -0.1623 0.5155 -0.9365
--1.878 1.13 -0.1877 0.5155 -0.9178
--1.814 1.091 -0.2141 0.5155 -0.8968
--1.757 1.057 -0.2416 0.5155 -0.8735
--1.707 1.027 -0.2701 0.5155 -0.8481
--1.665 1.002 -0.2998 0.5155 -0.8206
--1.631 0.9814 -0.3306 0.5155 -0.791
--1.606 0.9659 -0.3626 0.5155 -0.7594
--1.589 0.9557 -0.3956 0.5155 -0.7259
--1.58 0.9506 -0.4296 0.5155 -0.6907
--1.58 0.9507 -0.4646 0.5155 -0.6536
--1.589 0.956 -0.5003 0.5155 -0.615
--1.606 0.9664 -0.5368 0.5155 -0.5748
--1.632 0.9817 -0.5738 0.5155 -0.5332
--1.665 1.002 -0.6112 0.5155 -0.4903
--1.706 1.026 -0.6488 0.5155 -0.4461
--1.754 1.055 -0.6863 0.5155 -0.4008
--1.809 1.088 -0.7236 0.5155 -0.3545
--1.87 1.125 -0.7605 0.5155 -0.3073
--1.936 1.164 -0.7966 0.5155 -0.2594
--2.006 1.207 -0.8317 0.5155 -0.2108
--2.081 1.252 -0.8655 0.5155 -0.1617
--2.159 1.299 -0.8979 0.5155 -0.1122
--2.239 1.347 -0.9284 0.5155 -0.06235
--2.321 1.396 -0.9569 0.5155 -0.01239
--2.404 1.446 -0.983 0.5155 0.0376
--2.486 1.496 -1.006 0.5155 0.0875
--2.568 1.545 -1.027 0.5155 0.1372
--2.648 1.593 -1.045 0.5155 0.1865
--2.726 1.64 -1.059 0.5155 0.2354
--2.8 1.684 -1.07 0.5155 0.2837
--2.87 1.727 -1.076 0.5155 0.3312
--2.936 1.766 -1.079 0.5155 0.378
--2.997 1.803 -1.078 0.5155 0.4238
--3.052 1.836 -1.073 0.5155 0.4685
--3.1 1.865 -1.063 0.5155 0.5121
--3.142 1.89 -1.049 0.5155 0.5544
--3.176 1.911 -1.03 0.5155 0.5953
--3.203 1.927 -1.007 0.5155 0.6347
--3.223 1.939 -0.9794 0.5155 0.6725
--3.235 1.946 -0.9473 0.5155 0.7087
--3.238 1.948 -0.9109 0.5155 0.743
--3.234 1.946 -0.8702 0.5155 0.7756
--3.223 1.939 -0.8254 0.5155 0.8061
--3.203 1.927 -0.7765 0.5155 0.8347
--3.177 1.911 -0.7239 0.5155 0.8612
--3.144 1.891 -0.6678 0.5155 0.8855
--3.104 1.867 -0.6083 0.5155 0.9076
--3.058 1.839 -0.5458 0.5155 0.9275
--3.006 1.808 -0.4805 0.5155 0.945
--2.95 1.774 -0.4128 0.5155 0.9602
--2.889 1.738 -0.3429 0.5155 0.9729
--2.825 1.699 -0.2714 0.5155 0.9833
--2.758 1.659 -0.1984 0.5155 0.9911
--2.688 1.617 -0.1244 0.5155 0.9965
--2.618 1.575 -0.04971 0.5155 0.9994
--2.645 1.416 0 0.472 1
--2.57 1.376 0.07277 0.472 0.9988
--2.496 1.337 0.1452 0.472 0.995
--2.424 1.298 0.2169 0.472 0.9888
--2.354 1.261 0.2875 0.472 0.9801
--2.288 1.225 0.3566 0.472 0.9689
--2.225 1.192 0.424 0.472 0.9553
--2.167 1.161 0.4893 0.472 0.9394
--2.115 1.132 0.5523 0.472 0.9211
--2.068 1.107 0.6125 0.472 0.9004
--2.028 1.086 0.6698 0.472 0.8776
--1.995 1.068 0.7238 0.472 0.8525
--1.969 1.054 0.7745 0.472 0.8253
--1.951 1.044 0.8215 0.472 0.7961
--1.94 1.039 0.8646 0.472 0.7648
--1.938 1.038 0.9039 0.472 0.7317
--1.944 1.041 0.939 0.472 0.6967
--1.958 1.048 0.97 0.472 0.66
--1.98 1.06 0.9967 0.472 0.6216
--2.01 1.076 1.019 0.472 0.5817
--2.048 1.096 1.037 0.472 0.5403
--2.093 1.121 1.051 0.472 0.4976
--2.145 1.148 1.061 0.472 0.4536
--2.203 1.18 1.067 0.472 0.4085
--2.267 1.214 1.068 0.472 0.3624
--2.337 1.251 1.066 0.472 0.3153
--2.411 1.291 1.06 0.472 0.2675
--2.489 1.332 1.05 0.472 0.219
--2.57 1.376 1.037 0.472 0.17
--2.653 1.421 1.021 0.472 0.1205
--2.738 1.466 1.002 0.472 0.07074
--2.824 1.512 0.9799 0.472 0.02079
--2.909 1.558 0.9553 0.472 -0.0292
--2.993 1.603 0.9285 0.472 -0.07912
--3.076 1.647 0.8997 0.472 -0.1288
--3.156 1.69 0.8691 0.472 -0.1782
--3.232 1.731 0.8369 0.472 -0.2272
--3.304 1.769 0.8035 0.472 -0.2756
--3.371 1.805 0.769 0.472 -0.3233
--3.432 1.838 0.7337 0.472 -0.3702
--3.487 1.867 0.6978 0.472 -0.4161
--3.535 1.893 0.6616 0.472 -0.4611
--3.575 1.914 0.6252 0.472 -0.5048
--3.608 1.932 0.5888 0.472 -0.5474
--3.632 1.945 0.5526 0.472 -0.5885
--3.648 1.953 0.5168 0.472 -0.6282
--3.654 1.957 0.4815 0.472 -0.6663
--3.652 1.956 0.4468 0.472 -0.7027
--3.641 1.95 0.4128 0.472 -0.7374
--3.622 1.939 0.3795 0.472 -0.7702
--3.593 1.924 0.3472 0.472 -0.8011
--3.556 1.904 0.3156 0.472 -0.8301
--3.511 1.88 0.285 0.472 -0.8569
--3.458 1.851 0.2553 0.472 -0.8816
--3.397 1.819 0.2265 0.472 -0.9041
--3.33 1.783 0.1985 0.472 -0.9243
--3.256 1.744 0.1713 0.472 -0.9422
--3.177 1.701 0.1448 0.472 -0.9578
--3.093 1.656 0.119 0.472 -0.971
--3.005 1.609 0.09372 0.472 -0.9817
--2.914 1.56 0.06889 0.472 -0.99
--2.82 1.51 0.04439 0.472 -0.9958
--2.725 1.459 0.02011 0.472 -0.9991
--2.629 1.407 -0.004063 0.472 -1
--2.533 1.356 -0.02826 0.472 -0.9983
--2.438 1.305 -0.0526 0.472 -0.9941
--2.345 1.255 -0.0772 0.472 -0.9875
--2.254 1.207 -0.1022 0.472 -0.9784
--2.167 1.161 -0.1276 0.472 -0.9668
--2.085 1.116 -0.1537 0.472 -0.9528
--2.008 1.075 -0.1804 0.472 -0.9365
--1.936 1.037 -0.2078 0.472 -0.9178
--1.871 1.002 -0.2361 0.472 -0.8968
--1.813 0.9708 -0.2652 0.472 -0.8735
--1.763 0.9438 -0.2952 0.472 -0.8481
--1.72 0.921 -0.3261 0.472 -0.8206
--1.686 0.9027 -0.3579 0.472 -0.791
--1.66 0.8889 -0.3906 0.472 -0.7594
--1.643 0.8799 -0.4241 0.472 -0.7259
--1.635 0.8757 -0.4584 0.472 -0.6907
--1.636 0.8762 -0.4933 0.472 -0.6536
--1.646 0.8815 -0.5288 0.472 -0.615
--1.665 0.8914 -0.5648 0.472 -0.5748
--1.692 0.9059 -0.601 0.472 -0.5332
--1.727 0.9247 -0.6374 0.472 -0.4903
--1.77 0.9477 -0.6738 0.472 -0.4461
--1.82 0.9746 -0.7099 0.472 -0.4008
--1.877 1.005 -0.7456 0.472 -0.3545
--1.94 1.039 -0.7807 0.472 -0.3073
--2.009 1.076 -0.8148 0.472 -0.2594
--2.083 1.115 -0.8479 0.472 -0.2108
--2.16 1.157 -0.8795 0.472 -0.1617
--2.241 1.2 -0.9096 0.472 -0.1122
--2.324 1.244 -0.9378 0.472 -0.06235
--2.409 1.29 -0.9638 0.472 -0.01239
--2.495 1.336 -0.9875 0.472 0.0376
--2.58 1.381 -1.009 0.472 0.0875
--2.665 1.427 -1.027 0.472 0.1372
--2.747 1.471 -1.042 0.472 0.1865
--2.827 1.514 -1.054 0.472 0.2354
--2.904 1.555 -1.062 0.472 0.2837
--2.977 1.594 -1.067 0.472 0.3312
--3.045 1.63 -1.068 0.472 0.378
--3.107 1.664 -1.065 0.472 0.4238
--3.163 1.694 -1.058 0.472 0.4685
--3.213 1.72 -1.047 0.472 0.5121
--3.255 1.743 -1.032 0.472 0.5544
--3.29 1.762 -1.012 0.472 0.5953
--3.318 1.776 -0.9882 0.472 0.6347
--3.337 1.787 -0.9601 0.472 0.6725
--3.348 1.793 -0.9277 0.472 0.7087
--3.352 1.795 -0.8911 0.472 0.743
--3.347 1.792 -0.8506 0.472 0.7756
--3.334 1.785 -0.8061 0.472 0.8061
--3.313 1.774 -0.7578 0.472 0.8347
--3.284 1.759 -0.706 0.472 0.8612
--3.249 1.739 -0.6509 0.472 0.8855
--3.206 1.717 -0.5926 0.472 0.9076
--3.158 1.691 -0.5314 0.472 0.9275
--3.103 1.662 -0.4676 0.472 0.945
--3.044 1.63 -0.4016 0.472 0.9602
--2.98 1.595 -0.3335 0.472 0.9729
--2.912 1.559 -0.2639 0.472 0.9833
--2.841 1.521 -0.1929 0.472 0.9911
--2.769 1.482 -0.1209 0.472 0.9965
--2.694 1.443 -0.04832 0.472 0.9994
--2.712 1.282 0 0.4274 1
--2.634 1.245 0.07063 0.4274 0.9988
--2.557 1.209 0.1409 0.4274 0.995
--2.481 1.173 0.2105 0.4274 0.9888
--2.408 1.138 0.2791 0.4274 0.9801
--2.338 1.105 0.3464 0.4274 0.9689
--2.273 1.074 0.412 0.4274 0.9553
--2.212 1.046 0.4757 0.4274 0.9394
--2.157 1.019 0.5371 0.4274 0.9211
--2.107 0.9962 0.596 0.4274 0.9004
--2.065 0.9761 0.6521 0.4274 0.8776
--2.03 0.9594 0.7052 0.4274 0.8525
--2.002 0.9463 0.7551 0.4274 0.8253
--1.982 0.937 0.8015 0.4274 0.7961
--1.97 0.9315 0.8444 0.4274 0.7648
--1.967 0.93 0.8835 0.4274 0.7317
--1.973 0.9325 0.9189 0.4274 0.6967
--1.986 0.9389 0.9502 0.4274 0.66
--2.008 0.9494 0.9776 0.4274 0.6216
--2.039 0.9637 1.001 0.4274 0.5817
--2.077 0.9817 1.02 0.4274 0.5403
--2.123 1.003 1.035 0.4274 0.4976
--2.175 1.028 1.047 0.4274 0.4536
--2.235 1.057 1.054 0.4274 0.4085
--2.301 1.088 1.057 0.4274 0.3624
--2.372 1.121 1.057 0.4274 0.3153
--2.448 1.157 1.053 0.4274 0.2675
--2.528 1.195 1.046 0.4274 0.219
--2.612 1.235 1.035 0.4274 0.17
--2.698 1.275 1.021 0.4274 0.1205
--2.785 1.317 1.004 0.4274 0.07074
--2.873 1.358 0.9846 0.4274 0.02079
--2.962 1.4 0.9625 0.4274 -0.0292
--3.049 1.441 0.9381 0.4274 -0.07912
--3.134 1.482 0.9116 0.4274 -0.1288
--3.216 1.521 0.8833 0.4274 -0.1782
--3.295 1.558 0.8533 0.4274 -0.2272
--3.37 1.593 0.8219 0.4274 -0.2756
--3.439 1.626 0.7893 0.4274 -0.3233
--3.503 1.656 0.7558 0.4274 -0.3702
--3.56 1.683 0.7215 0.4274 -0.4161
--3.61 1.706 0.6866 0.4274 -0.4611
--3.652 1.726 0.6514 0.4274 -0.5048
--3.686 1.743 0.6159 0.4274 -0.5474
--3.712 1.755 0.5805 0.4274 -0.5885
--3.729 1.763 0.5451 0.4274 -0.6282
--3.736 1.766 0.51 0.4274 -0.6663
--3.735 1.766 0.4752 0.4274 -0.7027
--3.725 1.761 0.4409 0.4274 -0.7374
--3.705 1.752 0.4071 0.4274 -0.7702
--3.677 1.738 0.3739 0.4274 -0.8011
--3.639 1.72 0.3414 0.4274 -0.8301
--3.594 1.699 0.3095 0.4274 -0.8569
--3.54 1.673 0.2783 0.4274 -0.8816
--3.479 1.644 0.2478 0.4274 -0.9041
--3.41 1.612 0.2179 0.4274 -0.9243
--3.335 1.577 0.1886 0.4274 -0.9422
--3.255 1.539 0.1599 0.4274 -0.9578
--3.169 1.498 0.1317 0.4274 -0.971
--3.08 1.456 0.1039 0.4274 -0.9817
--2.987 1.412 0.0765 0.4274 -0.99
--2.891 1.367 0.04935 0.4274 -0.9958
--2.794 1.321 0.02237 0.4274 -0.9991
--2.696 1.274 -0.004521 0.4274 -1
--2.598 1.228 -0.03143 0.4274 -0.9983
--2.501 1.182 -0.05846 0.4274 -0.9941
--2.406 1.137 -0.08569 0.4274 -0.9875
--2.314 1.094 -0.1132 0.4274 -0.9784
--2.226 1.052 -0.1411 0.4274 -0.9668
--2.142 1.013 -0.1695 0.4274 -0.9528
--2.063 0.9753 -0.1984 0.4274 -0.9365
--1.991 0.941 -0.2279 0.4274 -0.9178
--1.924 0.9098 -0.258 0.4274 -0.8968
--1.866 0.8819 -0.2887 0.4274 -0.8735
--1.815 0.8578 -0.3202 0.4274 -0.8481
--1.772 0.8375 -0.3523 0.4274 -0.8206
--1.737 0.8212 -0.385 0.4274 -0.791
--1.712 0.8092 -0.4184 0.4274 -0.7594
--1.695 0.8014 -0.4524 0.4274 -0.7259
--1.688 0.7979 -0.4869 0.4274 -0.6907
--1.69 0.7987 -0.5218 0.4274 -0.6536
--1.701 0.8039 -0.557 0.4274 -0.615
--1.72 0.8133 -0.5924 0.4274 -0.5748
--1.749 0.8267 -0.6279 0.4274 -0.5332
--1.786 0.8442 -0.6633 0.4274 -0.4903
--1.831 0.8654 -0.6984 0.4274 -0.4461
--1.883 0.8901 -0.7331 0.4274 -0.4008
--1.942 0.9182 -0.7672 0.4274 -0.3545
--2.008 0.9492 -0.8004 0.4274 -0.3073
--2.079 0.9828 -0.8326 0.4274 -0.2594
--2.155 1.019 -0.8635 0.4274 -0.2108
--2.235 1.057 -0.893 0.4274 -0.1617
--2.319 1.096 -0.9208 0.4274 -0.1122
--2.405 1.137 -0.9466 0.4274 -0.06235
--2.492 1.178 -0.9702 0.4274 -0.01239
--2.581 1.22 -0.9915 0.4274 0.0376
--2.669 1.262 -1.01 0.4274 0.0875
--2.756 1.303 -1.026 0.4274 0.1372
--2.841 1.343 -1.039 0.4274 0.1865
--2.923 1.382 -1.049 0.4274 0.2354
--3.002 1.419 -1.055 0.4274 0.2837
--3.077 1.454 -1.058 0.4274 0.3312
--3.146 1.487 -1.057 0.4274 0.378
--3.21 1.517 -1.052 0.4274 0.4238
--3.268 1.545 -1.043 0.4274 0.4685
--3.318 1.569 -1.031 0.4274 0.5121
--3.361 1.589 -1.014 0.4274 0.5544
--3.397 1.606 -0.9935 0.4274 0.5953
--3.425 1.619 -0.9688 0.4274 0.6347
--3.444 1.628 -0.9401 0.4274 0.6725
--3.455 1.633 -0.9074 0.4274 0.7087
--3.457 1.634 -0.8708 0.4274 0.743
--3.451 1.631 -0.8304 0.4274 0.7756
--3.437 1.625 -0.7863 0.4274 0.8061
--3.414 1.614 -0.7387 0.4274 0.8347
--3.384 1.6 -0.6877 0.4274 0.8612
--3.346 1.582 -0.6335 0.4274 0.8855
--3.301 1.561 -0.5765 0.4274 0.9076
--3.25 1.536 -0.5167 0.4274 0.9275
--3.193 1.509 -0.4545 0.4274 0.945
--3.13 1.48 -0.3901 0.4274 0.9602
--3.063 1.448 -0.3239 0.4274 0.9729
--2.992 1.414 -0.2562 0.4274 0.9833
--2.918 1.379 -0.1872 0.4274 0.9911
--2.842 1.343 -0.1173 0.4274 0.9965
--2.764 1.307 -0.0469 0.4274 0.9994
--2.773 1.145 0 0.3817 1
--2.691 1.111 0.06845 0.3817 0.9988
--2.611 1.078 0.1366 0.3817 0.995
--2.532 1.045 0.2041 0.3817 0.9888
--2.456 1.014 0.2706 0.3817 0.9801
--2.383 0.9839 0.3359 0.3817 0.9689
--2.314 0.9555 0.3997 0.3817 0.9553
--2.25 0.9293 0.4617 0.3817 0.9394
--2.193 0.9053 0.5215 0.3817 0.9211
--2.141 0.884 0.579 0.3817 0.9004
--2.096 0.8656 0.634 0.3817 0.8776
--2.059 0.8502 0.6861 0.3817 0.8525
--2.029 0.838 0.7352 0.3817 0.8253
--2.008 0.8292 0.7811 0.3817 0.7961
--1.995 0.8239 0.8236 0.3817 0.7648
--1.991 0.8222 0.8627 0.3817 0.7317
--1.996 0.824 0.8981 0.3817 0.6967
--2.009 0.8295 0.9299 0.3817 0.66
--2.031 0.8386 0.9578 0.3817 0.6216
--2.061 0.8511 0.982 0.3817 0.5817
--2.1 0.8671 1.002 0.3817 0.5403
--2.146 0.8862 1.019 0.3817 0.4976
--2.2 0.9085 1.031 0.3817 0.4536
--2.261 0.9336 1.04 0.3817 0.4085
--2.328 0.9613 1.046 0.3817 0.3624
--2.401 0.9914 1.047 0.3817 0.3153
--2.479 1.024 1.045 0.3817 0.2675
--2.561 1.057 1.04 0.3817 0.219
--2.646 1.093 1.032 0.3817 0.17
--2.735 1.129 1.02 0.3817 0.1205
--2.824 1.166 1.006 0.3817 0.07074
--2.915 1.204 0.9888 0.3817 0.02079
--3.006 1.241 0.9691 0.3817 -0.0292
--3.095 1.278 0.9471 0.3817 -0.07912
--3.183 1.314 0.923 0.3817 -0.1288
--3.268 1.349 0.8969 0.3817 -0.1782
--3.349 1.383 0.8691 0.3817 -0.2272
--3.426 1.415 0.8398 0.3817 -0.2756
--3.498 1.444 0.8092 0.3817 -0.3233
--3.564 1.471 0.7774 0.3817 -0.3702
--3.623 1.496 0.7447 0.3817 -0.4161
--3.674 1.517 0.7112 0.3817 -0.4611
--3.718 1.535 0.6772 0.3817 -0.5048
--3.754 1.55 0.6427 0.3817 -0.5474
--3.781 1.561 0.6079 0.3817 -0.5885
--3.799 1.569 0.573 0.3817 -0.6282
--3.808 1.572 0.5381 0.3817 -0.6663
--3.807 1.572 0.5033 0.3817 -0.7027
--3.798 1.568 0.4688 0.3817 -0.7374
--3.778 1.56 0.4344 0.3817 -0.7702
--3.75 1.548 0.4005 0.3817 -0.8011
--3.713 1.533 0.3669 0.3817 -0.8301
--3.667 1.514 0.3338 0.3817 -0.8569
--3.612 1.492 0.3011 0.3817 -0.8816
--3.55 1.466 0.2689 0.3817 -0.9041
--3.481 1.437 0.2371 0.3817 -0.9243
--3.405 1.406 0.2058 0.3817 -0.9422
--3.324 1.372 0.1749 0.3817 -0.9578
--3.237 1.337 0.1443 0.3817 -0.971
--3.146 1.299 0.114 0.3817 -0.9817
--3.052 1.26 0.08406 0.3817 -0.99
--2.955 1.22 0.05428 0.3817 -0.9958
--2.856 1.179 0.02462 0.3817 -0.9991
--2.756 1.138 -0.004976 0.3817 -1
--2.657 1.097 -0.03458 0.3817 -0.9983
--2.558 1.056 -0.06428 0.3817 -0.9941
--2.462 1.017 -0.09412 0.3817 -0.9875
--2.369 0.9781 -0.1242 0.3817 -0.9784
--2.279 0.941 -0.1545 0.3817 -0.9668
--2.194 0.9059 -0.1852 0.3817 -0.9528
--2.114 0.873 -0.2163 0.3817 -0.9365
--2.041 0.8426 -0.2477 0.3817 -0.9178
--1.974 0.815 -0.2797 0.3817 -0.8968
--1.914 0.7905 -0.312 0.3817 -0.8735
--1.863 0.7692 -0.3449 0.3817 -0.8481
--1.82 0.7514 -0.3782 0.3817 -0.8206
--1.785 0.7372 -0.4119 0.3817 -0.791
--1.76 0.7267 -0.4459 0.3817 -0.7594
--1.744 0.7201 -0.4804 0.3817 -0.7259
--1.737 0.7173 -0.515 0.3817 -0.6907
--1.74 0.7184 -0.5499 0.3817 -0.6536
--1.752 0.7233 -0.5848 0.3817 -0.615
--1.773 0.732 -0.6196 0.3817 -0.5748
--1.803 0.7444 -0.6543 0.3817 -0.5332
--1.841 0.7603 -0.6887 0.3817 -0.4903
--1.888 0.7796 -0.7225 0.3817 -0.4461
--1.942 0.802 -0.7558 0.3817 -0.4008
--2.004 0.8274 -0.7882 0.3817 -0.3545
--2.071 0.8554 -0.8196 0.3817 -0.3073
--2.145 0.8857 -0.8498 0.3817 -0.2594
--2.223 0.9181 -0.8787 0.3817 -0.2108
--2.306 0.9522 -0.9059 0.3817 -0.1617
--2.392 0.9878 -0.9313 0.3817 -0.1122
--2.481 1.024 -0.9548 0.3817 -0.06235
--2.571 1.061 -0.976 0.3817 -0.01239
--2.661 1.099 -0.9948 0.3817 0.0376
--2.752 1.136 -1.011 0.3817 0.0875
--2.841 1.173 -1.024 0.3817 0.1372
--2.929 1.209 -1.035 0.3817 0.1865
--3.013 1.244 -1.042 0.3817 0.2354
--3.094 1.277 -1.046 0.3817 0.2837
--3.17 1.309 -1.047 0.3817 0.3312
--3.241 1.338 -1.044 0.3817 0.378
--3.306 1.365 -1.038 0.3817 0.4238
--3.365 1.389 -1.028 0.3817 0.4685
--3.416 1.411 -1.014 0.3817 0.5121
--3.46 1.429 -0.9959 0.3817 0.5544
--3.496 1.443 -0.9743 0.3817 0.5953
--3.523 1.455 -0.9488 0.3817 0.6347
--3.542 1.463 -0.9196 0.3817 0.6725
--3.553 1.467 -0.8866 0.3817 0.7087
--3.554 1.468 -0.8499 0.3817 0.743
--3.547 1.465 -0.8097 0.3817 0.7756
--3.531 1.458 -0.766 0.3817 0.8061
--3.507 1.448 -0.719 0.3817 0.8347
--3.475 1.435 -0.6689 0.3817 0.8612
--3.435 1.419 -0.6158 0.3817 0.8855
--3.388 1.399 -0.56 0.3817 0.9076
--3.334 1.377 -0.5017 0.3817 0.9275
--3.275 1.352 -0.4411 0.3817 0.945
--3.209 1.325 -0.3785 0.3817 0.9602
--3.139 1.296 -0.3141 0.3817 0.9729
--3.065 1.266 -0.2484 0.3817 0.9833
--2.988 1.234 -0.1815 0.3817 0.9911
--2.908 1.201 -0.1137 0.3817 0.9965
--2.827 1.167 -0.04545 0.3817 0.9994
--2.827 1.005 0 0.335 1
--2.742 0.9749 0.06622 0.335 0.9988
--2.658 0.9451 0.1321 0.335 0.995
--2.576 0.9159 0.1975 0.335 0.9888
--2.497 0.8877 0.262 0.335 0.9801
--2.421 0.8608 0.3253 0.335 0.9689
--2.35 0.8354 0.3872 0.335 0.9553
--2.283 0.8118 0.4474 0.335 0.9394
--2.223 0.7903 0.5057 0.335 0.9211
--2.169 0.7711 0.5618 0.335 0.9004
--2.122 0.7545 0.6155 0.335 0.8776
--2.083 0.7405 0.6666 0.335 0.8525
--2.052 0.7294 0.7148 0.335 0.8253
--2.029 0.7213 0.7602 0.335 0.7961
--2.015 0.7163 0.8023 0.335 0.7648
--2.01 0.7145 0.8413 0.335 0.7317
--2.013 0.7158 0.8768 0.335 0.6967
--2.026 0.7204 0.9089 0.335 0.66
--2.048 0.7281 0.9375 0.335 0.6216
--2.078 0.7389 0.9624 0.335 0.5817
--2.117 0.7527 0.9838 0.335 0.5403
--2.164 0.7694 1.002 0.335 0.4976
--2.219 0.7888 1.016 0.335 0.4536
--2.28 0.8108 1.026 0.335 0.4085
--2.349 0.8351 1.033 0.335 0.3624
--2.423 0.8614 1.037 0.335 0.3153
--2.502 0.8897 1.037 0.335 0.2675
--2.586 0.9194 1.034 0.335 0.219
--2.673 0.9505 1.028 0.335 0.17
--2.764 0.9825 1.019 0.335 0.1205
--2.855 1.015 1.007 0.335 0.07074
--2.948 1.048 0.9923 0.335 0.02079
--3.041 1.081 0.9751 0.335 -0.0292
--3.133 1.114 0.9555 0.335 -0.07912
--3.223 1.146 0.9338 0.335 -0.1288
--3.31 1.177 0.91 0.335 -0.1782
--3.394 1.206 0.8845 0.335 -0.2272
--3.473 1.235 0.8572 0.335 -0.2756
--3.546 1.261 0.8285 0.335 -0.3233
--3.614 1.285 0.7985 0.335 -0.3702
--3.675 1.307 0.7674 0.335 -0.4161
--3.729 1.326 0.7354 0.335 -0.4611
--3.774 1.342 0.7025 0.335 -0.5048
--3.811 1.355 0.669 0.335 -0.5474
--3.84 1.365 0.635 0.335 -0.5885
--3.859 1.372 0.6006 0.335 -0.6282
--3.869 1.375 0.566 0.335 -0.6663
--3.869 1.376 0.5312 0.335 -0.7027
--3.86 1.372 0.4963 0.335 -0.7374
--3.841 1.366 0.4615 0.335 -0.7702
--3.813 1.356 0.4268 0.335 -0.8011
--3.776 1.342 0.3922 0.335 -0.8301
--3.73 1.326 0.3578 0.335 -0.8569
--3.675 1.307 0.3237 0.335 -0.8816
--3.613 1.284 0.2898 0.335 -0.9041
--3.543 1.26 0.2562 0.335 -0.9243
--3.466 1.232 0.2228 0.335 -0.9422
--3.384 1.203 0.1897 0.335 -0.9578
--3.296 1.172 0.1568 0.335 -0.971
--3.204 1.139 0.1241 0.335 -0.9817
--3.109 1.105 0.09158 0.335 -0.99
--3.01 1.07 0.05917 0.335 -0.9958
--2.91 1.035 0.02685 0.335 -0.9991
--2.81 0.9989 -0.005427 0.335 -1
--2.709 0.9632 -0.03772 0.335 -0.9983
--2.61 0.9278 -0.07006 0.335 -0.9941
--2.512 0.8931 -0.1025 0.335 -0.9875
--2.418 0.8595 -0.1351 0.335 -0.9784
--2.327 0.8273 -0.1678 0.335 -0.9668
--2.241 0.7967 -0.2008 0.335 -0.9528
--2.16 0.7681 -0.234 0.335 -0.9365
--2.086 0.7417 -0.2675 0.335 -0.9178
--2.019 0.7178 -0.3012 0.335 -0.8968
--1.959 0.6965 -0.3352 0.335 -0.8735
--1.907 0.6781 -0.3694 0.335 -0.8481
--1.864 0.6628 -0.4038 0.335 -0.8206
--1.83 0.6506 -0.4384 0.335 -0.791
--1.805 0.6417 -0.4732 0.335 -0.7594
--1.789 0.6362 -0.508 0.335 -0.7259
--1.783 0.634 -0.5429 0.335 -0.6907
--1.787 0.6353 -0.5776 0.335 -0.6536
--1.8 0.6399 -0.6122 0.335 -0.615
--1.822 0.6478 -0.6465 0.335 -0.5748
--1.854 0.659 -0.6803 0.335 -0.5332
--1.894 0.6732 -0.7136 0.335 -0.4903
--1.942 0.6904 -0.7463 0.335 -0.4461
--1.998 0.7104 -0.778 0.335 -0.4008
--2.061 0.7329 -0.8088 0.335 -0.3545
--2.131 0.7577 -0.8383 0.335 -0.3073
--2.207 0.7846 -0.8666 0.335 -0.2594
--2.287 0.8133 -0.8933 0.335 -0.2108
--2.372 0.8434 -0.9182 0.335 -0.1617
--2.461 0.8748 -0.9413 0.335 -0.1122
--2.551 0.9071 -0.9624 0.335 -0.06235
--2.644 0.9399 -0.9812 0.335 -0.01239
--2.736 0.9729 -0.9975 0.335 0.0376
--2.829 1.006 -1.011 0.335 0.0875
--2.92 1.038 -1.022 0.335 0.1372
--3.01 1.07 -1.03 0.335 0.1865
--3.096 1.101 -1.036 0.335 0.2354
--3.178 1.13 -1.037 0.335 0.2837
--3.256 1.158 -1.036 0.335 0.3312
--3.328 1.183 -1.031 0.335 0.378
--3.394 1.207 -1.023 0.335 0.4238
--3.454 1.228 -1.011 0.335 0.4685
--3.506 1.246 -0.996 0.335 0.5121
--3.55 1.262 -0.977 0.335 0.5544
--3.586 1.275 -0.9544 0.335 0.5953
--3.614 1.285 -0.9282 0.335 0.6347
--3.632 1.291 -0.8985 0.335 0.6725
--3.642 1.295 -0.8652 0.335 0.7087
--3.643 1.295 -0.8285 0.335 0.743
--3.635 1.292 -0.7885 0.335 0.7756
--3.618 1.286 -0.7453 0.335 0.8061
--3.592 1.277 -0.6989 0.335 0.8347
--3.558 1.265 -0.6497 0.335 0.8612
--3.516 1.25 -0.5977 0.335 0.8855
--3.467 1.233 -0.5432 0.335 0.9076
--3.411 1.213 -0.4863 0.335 0.9275
--3.348 1.19 -0.4274 0.335 0.945
--3.28 1.166 -0.3665 0.335 0.9602
--3.207 1.14 -0.3041 0.335 0.9729
--3.13 1.113 -0.2404 0.335 0.9833
--3.05 1.084 -0.1756 0.335 0.9911
--2.967 1.055 -0.11 0.335 0.9965
--2.883 1.025 -0.04397 0.335 0.9994
--2.873 0.8624 0 0.2875 1
--2.786 0.8361 0.06395 0.2875 0.9988
--2.699 0.8101 0.1276 0.2875 0.995
--2.614 0.7846 0.1908 0.2875 0.9888
--2.532 0.76 0.2531 0.2875 0.9801
--2.453 0.7364 0.3144 0.2875 0.9689
--2.379 0.7142 0.3744 0.2875 0.9553
--2.311 0.6935 0.4329 0.2875 0.9394
--2.248 0.6747 0.4895 0.2875 0.9211
--2.192 0.6578 0.5442 0.2875 0.9004
--2.143 0.6431 0.5966 0.2875 0.8776
--2.102 0.6308 0.6466 0.2875 0.8525
--2.069 0.6209 0.6941 0.2875 0.8253
--2.044 0.6136 0.7388 0.2875 0.7961
--2.029 0.6091 0.7805 0.2875 0.7648
--2.023 0.6072 0.8193 0.2875 0.7317
--2.026 0.6081 0.855 0.2875 0.6967
--2.038 0.6118 0.8874 0.2875 0.66
--2.06 0.6182 0.9165 0.2875 0.6216
--2.09 0.6273 0.9423 0.2875 0.5817
--2.129 0.6389 0.9646 0.2875 0.5403
--2.176 0.6531 0.9836 0.2875 0.4976
--2.231 0.6697 0.9992 0.2875 0.4536
--2.294 0.6885 1.011 0.2875 0.4085
--2.363 0.7092 1.02 0.2875 0.3624
--2.438 0.7318 1.026 0.2875 0.3153
--2.519 0.7561 1.028 0.2875 0.2675
--2.604 0.7816 1.027 0.2875 0.219
--2.693 0.8083 1.024 0.2875 0.17
--2.785 0.8358 1.017 0.2875 0.1205
--2.878 0.864 1.007 0.2875 0.07074
--2.973 0.8924 0.9952 0.2875 0.02079
--3.068 0.9208 0.9805 0.2875 -0.0292
--3.162 0.9489 0.9634 0.2875 -0.07912
--3.254 0.9765 0.944 0.2875 -0.1288
--3.343 1.003 0.9226 0.2875 -0.1782
--3.428 1.029 0.8992 0.2875 -0.2272
--3.509 1.053 0.8741 0.2875 -0.2756
--3.585 1.076 0.8474 0.2875 -0.3233
--3.654 1.097 0.8192 0.2875 -0.3702
--3.717 1.116 0.7897 0.2875 -0.4161
--3.772 1.132 0.7591 0.2875 -0.4611
--3.819 1.146 0.7274 0.2875 -0.5048
--3.858 1.158 0.6949 0.2875 -0.5474
--3.888 1.167 0.6617 0.2875 -0.5885
--3.908 1.173 0.6278 0.2875 -0.6282
--3.919 1.176 0.5934 0.2875 -0.6663
--3.92 1.177 0.5587 0.2875 -0.7027
--3.911 1.174 0.5236 0.2875 -0.7374
--3.893 1.169 0.4883 0.2875 -0.7702
--3.865 1.16 0.4528 0.2875 -0.8011
--3.828 1.149 0.4173 0.2875 -0.8301
--3.782 1.135 0.3817 0.2875 -0.8569
--3.728 1.119 0.3461 0.2875 -0.8816
--3.665 1.1 0.3106 0.2875 -0.9041
--3.595 1.079 0.2751 0.2875 -0.9243
--3.518 1.056 0.2397 0.2875 -0.9422
--3.435 1.031 0.2044 0.2875 -0.9578
--3.347 1.005 0.1692 0.2875 -0.971
--3.254 0.9767 0.1341 0.2875 -0.9817
--3.158 0.9478 0.09903 0.2875 -0.99
--3.059 0.9181 0.06403 0.2875 -0.9958
--2.958 0.8878 0.02907 0.2875 -0.9991
--2.856 0.8573 -0.005875 0.2875 -1
--2.755 0.8268 -0.04082 0.2875 -0.9983
--2.654 0.7967 -0.07579 0.2875 -0.9941
--2.556 0.7672 -0.1108 0.2875 -0.9875
--2.461 0.7386 -0.1459 0.2875 -0.9784
--2.37 0.7112 -0.181 0.2875 -0.9668
--2.283 0.6852 -0.2163 0.2875 -0.9528
--2.202 0.6609 -0.2516 0.2875 -0.9365
--2.127 0.6385 -0.287 0.2875 -0.9178
--2.06 0.6182 -0.3225 0.2875 -0.8968
--2 0.6002 -0.3581 0.2875 -0.8735
--1.948 0.5847 -0.3937 0.2875 -0.8481
--1.905 0.5718 -0.4292 0.2875 -0.8206
--1.871 0.5616 -0.4647 0.2875 -0.791
--1.846 0.5542 -0.5002 0.2875 -0.7594
--1.831 0.5497 -0.5354 0.2875 -0.7259
--1.826 0.5481 -0.5704 0.2875 -0.6907
--1.831 0.5494 -0.605 0.2875 -0.6536
--1.845 0.5536 -0.6393 0.2875 -0.615
--1.868 0.5607 -0.6729 0.2875 -0.5748
--1.901 0.5705 -0.7059 0.2875 -0.5332
--1.942 0.583 -0.7382 0.2875 -0.4903
--1.992 0.5979 -0.7695 0.2875 -0.4461
--2.05 0.6153 -0.7998 0.2875 -0.4008
--2.115 0.6348 -0.8288 0.2875 -0.3545
--2.187 0.6563 -0.8565 0.2875 -0.3073
--2.264 0.6796 -0.8827 0.2875 -0.2594
--2.347 0.7044 -0.9073 0.2875 -0.2108
--2.434 0.7305 -0.93 0.2875 -0.1617
--2.524 0.7575 -0.9508 0.2875 -0.1122
--2.617 0.7854 -0.9694 0.2875 -0.06235
--2.711 0.8136 -0.9857 0.2875 -0.01239
--2.806 0.8421 -0.9996 0.2875 0.0376
--2.9 0.8704 -1.011 0.2875 0.0875
--2.993 0.8984 -1.02 0.2875 0.1372
--3.084 0.9256 -1.025 0.2875 0.1865
--3.172 0.952 -1.028 0.2875 0.2354
--3.255 0.9771 -1.028 0.2875 0.2837
--3.334 1.001 -1.024 0.2875 0.3312
--3.408 1.023 -1.018 0.2875 0.378
--3.475 1.043 -1.008 0.2875 0.4238
--3.535 1.061 -0.9943 0.2875 0.4685
--3.587 1.077 -0.9776 0.2875 0.5121
--3.632 1.09 -0.9575 0.2875 0.5544
--3.668 1.101 -0.934 0.2875 0.5953
--3.695 1.109 -0.9071 0.2875 0.6347
--3.714 1.115 -0.8768 0.2875 0.6725
--3.723 1.117 -0.8433 0.2875 0.7087
--3.723 1.117 -0.8066 0.2875 0.743
--3.713 1.115 -0.7668 0.2875 0.7756
--3.695 1.109 -0.724 0.2875 0.8061
--3.668 1.101 -0.6784 0.2875 0.8347
--3.632 1.09 -0.6301 0.2875 0.8612
--3.588 1.077 -0.5792 0.2875 0.8855
--3.537 1.062 -0.526 0.2875 0.9076
--3.479 1.044 -0.4707 0.2875 0.9275
--3.414 1.025 -0.4134 0.2875 0.945
--3.343 1.003 -0.3544 0.2875 0.9602
--3.267 0.9807 -0.294 0.2875 0.9729
--3.187 0.9567 -0.2323 0.2875 0.9833
--3.104 0.9318 -0.1696 0.2875 0.9911
--3.019 0.9061 -0.1063 0.2875 0.9965
--2.932 0.8799 -0.04246 0.2875 0.9994
--2.913 0.7177 0 0.2392 1
--2.822 0.6955 0.06165 0.2392 0.9988
--2.733 0.6734 0.123 0.2392 0.995
--2.646 0.6519 0.184 0.2392 0.9888
--2.561 0.631 0.2441 0.2392 0.9801
--2.48 0.611 0.3034 0.2392 0.9689
--2.403 0.5922 0.3614 0.2392 0.9553
--2.332 0.5746 0.418 0.2392 0.9394
--2.267 0.5586 0.473 0.2392 0.9211
--2.209 0.5442 0.5262 0.2392 0.9004
--2.158 0.5317 0.5773 0.2392 0.8776
--2.115 0.5212 0.6263 0.2392 0.8525
--2.081 0.5127 0.6728 0.2392 0.8253
--2.055 0.5063 0.7169 0.2392 0.7961
--2.038 0.5023 0.7583 0.2392 0.7648
--2.031 0.5005 0.7969 0.2392 0.7317
--2.033 0.501 0.8326 0.2392 0.6967
--2.045 0.5039 0.8653 0.2392 0.66
--2.066 0.509 0.895 0.2392 0.6216
--2.096 0.5164 0.9215 0.2392 0.5817
--2.135 0.526 0.9449 0.2392 0.5403
--2.182 0.5377 0.9651 0.2392 0.4976
--2.238 0.5514 0.9821 0.2392 0.4536
--2.301 0.567 0.996 0.2392 0.4085
--2.371 0.5842 1.007 0.2392 0.3624
--2.447 0.603 1.014 0.2392 0.3153
--2.529 0.6231 1.019 0.2392 0.2675
--2.615 0.6444 1.02 0.2392 0.219
--2.705 0.6666 1.019 0.2392 0.17
--2.798 0.6895 1.014 0.2392 0.1205
--2.894 0.713 1.007 0.2392 0.07074
--2.99 0.7367 0.9975 0.2392 0.02079
--3.086 0.7604 0.9853 0.2392 -0.0292
--3.182 0.784 0.9706 0.2392 -0.07912
--3.275 0.807 0.9536 0.2392 -0.1288
--3.366 0.8294 0.9345 0.2392 -0.1782
--3.453 0.8509 0.9134 0.2392 -0.2272
--3.536 0.8713 0.8904 0.2392 -0.2756
--3.613 0.8903 0.8657 0.2392 -0.3233
--3.684 0.9079 0.8393 0.2392 -0.3702
--3.749 0.9237 0.8115 0.2392 -0.4161
--3.805 0.9377 0.7823 0.2392 -0.4611
--3.854 0.9496 0.7519 0.2392 -0.5048
--3.894 0.9595 0.7204 0.2392 -0.5474
--3.925 0.9671 0.6879 0.2392 -0.5885
--3.946 0.9723 0.6546 0.2392 -0.6282
--3.958 0.9753 0.6205 0.2392 -0.6663
--3.96 0.9757 0.5858 0.2392 -0.7027
--3.952 0.9738 0.5505 0.2392 -0.7374
--3.934 0.9695 0.5147 0.2392 -0.7702
--3.907 0.9628 0.4786 0.2392 -0.8011
--3.871 0.9537 0.4421 0.2392 -0.8301
--3.825 0.9424 0.4053 0.2392 -0.8569
--3.77 0.929 0.3683 0.2392 -0.8816
--3.708 0.9136 0.3311 0.2392 -0.9041
--3.638 0.8963 0.2939 0.2392 -0.9243
--3.561 0.8773 0.2565 0.2392 -0.9422
--3.477 0.8568 0.219 0.2392 -0.9578
--3.389 0.835 0.1815 0.2392 -0.971
--3.296 0.812 0.144 0.2392 -0.9817
--3.199 0.7882 0.1064 0.2392 -0.99
--3.099 0.7636 0.06885 0.2392 -0.9958
--2.998 0.7387 0.03127 0.2392 -0.9991
--2.896 0.7135 -0.00632 0.2392 -1
--2.794 0.6884 -0.0439 0.2392 -0.9983
--2.693 0.6635 -0.08148 0.2392 -0.9941
--2.594 0.6392 -0.1191 0.2392 -0.9875
--2.498 0.6156 -0.1566 0.2392 -0.9784
--2.407 0.593 -0.1941 0.2392 -0.9668
--2.32 0.5716 -0.2316 0.2392 -0.9528
--2.239 0.5516 -0.2691 0.2392 -0.9365
--2.164 0.5332 -0.3064 0.2392 -0.9178
--2.096 0.5165 -0.3437 0.2392 -0.8968
--2.036 0.5017 -0.3808 0.2392 -0.8735
--1.985 0.489 -0.4177 0.2392 -0.8481
--1.942 0.4785 -0.4544 0.2392 -0.8206
--1.908 0.4702 -0.4908 0.2392 -0.791
--1.884 0.4643 -0.5268 0.2392 -0.7594
--1.87 0.4608 -0.5624 0.2392 -0.7259
--1.865 0.4596 -0.5975 0.2392 -0.6907
--1.871 0.461 -0.6321 0.2392 -0.6536
--1.886 0.4647 -0.6659 0.2392 -0.615
--1.91 0.4707 -0.699 0.2392 -0.5748
--1.944 0.4791 -0.7311 0.2392 -0.5332
--1.987 0.4896 -0.7622 0.2392 -0.4903
--2.039 0.5023 -0.7922 0.2392 -0.4461
--2.098 0.5169 -0.821 0.2392 -0.4008
--2.164 0.5333 -0.8483 0.2392 -0.3545
--2.238 0.5514 -0.8742 0.2392 -0.3073
--2.317 0.5709 -0.8984 0.2392 -0.2594
--2.401 0.5917 -0.9207 0.2392 -0.2108
--2.49 0.6135 -0.9412 0.2392 -0.1617
--2.582 0.6362 -0.9596 0.2392 -0.1122
--2.676 0.6594 -0.9758 0.2392 -0.06235
--2.772 0.683 -0.9897 0.2392 -0.01239
--2.868 0.7068 -1.001 0.2392 0.0376
--2.964 0.7304 -1.01 0.2392 0.0875
--3.059 0.7537 -1.016 0.2392 0.1372
--3.151 0.7765 -1.019 0.2392 0.1865
--3.24 0.7984 -1.02 0.2392 0.2354
--3.325 0.8193 -1.017 0.2392 0.2837
--3.405 0.839 -1.012 0.2392 0.3312
--3.479 0.8573 -1.003 0.2392 0.378
--3.547 0.874 -0.9917 0.2392 0.4238
--3.607 0.8889 -0.9768 0.2392 0.4685
--3.66 0.9019 -0.9587 0.2392 0.5121
--3.705 0.9129 -0.9374 0.2392 0.5544
--3.741 0.9218 -0.9129 0.2392 0.5953
--3.768 0.9284 -0.8853 0.2392 0.6347
--3.786 0.9328 -0.8546 0.2392 0.6725
--3.794 0.9349 -0.8209 0.2392 0.7087
--3.793 0.9347 -0.7842 0.2392 0.743
--3.783 0.9321 -0.7447 0.2392 0.7756
--3.763 0.9273 -0.7024 0.2392 0.8061
--3.735 0.9202 -0.6575 0.2392 0.8347
--3.697 0.911 -0.6101 0.2392 0.8612
--3.652 0.8998 -0.5604 0.2392 0.8855
--3.598 0.8866 -0.5085 0.2392 0.9076
--3.538 0.8717 -0.4547 0.2392 0.9275
--3.47 0.8551 -0.3992 0.2392 0.945
--3.397 0.8371 -0.342 0.2392 0.9602
--3.319 0.8179 -0.2836 0.2392 0.9729
--3.237 0.7976 -0.224 0.2392 0.9833
--3.151 0.7764 -0.1635 0.2392 0.9911
--3.063 0.7547 -0.1024 0.2392 0.9965
--2.973 0.7325 -0.04093 0.2392 0.9994
--2.945 0.5713 0 0.1904 1
--2.852 0.5533 0.0593 0.1904 0.9988
--2.76 0.5354 0.1184 0.1904 0.995
--2.67 0.518 0.177 0.1904 0.9888
--2.583 0.5011 0.235 0.1904 0.9801
--2.5 0.4849 0.2921 0.1904 0.9689
--2.421 0.4696 0.3482 0.1904 0.9553
--2.348 0.4554 0.4029 0.1904 0.9394
--2.281 0.4424 0.4562 0.1904 0.9211
--2.22 0.4307 0.5079 0.1904 0.9004
--2.168 0.4205 0.5577 0.1904 0.8776
--2.123 0.4119 0.6055 0.1904 0.8525
--2.087 0.4049 0.6512 0.1904 0.8253
--2.06 0.3996 0.6946 0.1904 0.7961
--2.043 0.3962 0.7355 0.1904 0.7648
--2.034 0.3946 0.7739 0.1904 0.7317
--2.036 0.3949 0.8097 0.1904 0.6967
--2.047 0.397 0.8427 0.1904 0.66
--2.067 0.4009 0.8729 0.1904 0.6216
--2.097 0.4067 0.9002 0.1904 0.5817
--2.136 0.4142 0.9246 0.1904 0.5403
--2.183 0.4234 0.946 0.1904 0.4976
--2.239 0.4343 0.9645 0.1904 0.4536
--2.302 0.4465 0.9799 0.1904 0.4085
--2.373 0.4602 0.9924 0.1904 0.3624
--2.449 0.4751 1.002 0.1904 0.3153
--2.532 0.4911 1.008 0.1904 0.2675
--2.619 0.508 1.012 0.1904 0.219
--2.71 0.5257 1.013 0.1904 0.17
--2.805 0.544 1.011 0.1904 0.1205
--2.901 0.5627 1.006 0.1904 0.07074
--2.998 0.5816 0.9992 0.1904 0.02079
--3.096 0.6005 0.9894 0.1904 -0.0292
--3.193 0.6193 0.9772 0.1904 -0.07912
--3.288 0.6378 0.9627 0.1904 -0.1288
--3.38 0.6557 0.9459 0.1904 -0.1782
--3.469 0.6729 0.9271 0.1904 -0.2272
--3.553 0.6892 0.9062 0.1904 -0.2756
--3.632 0.7045 0.8834 0.1904 -0.3233
--3.704 0.7186 0.8589 0.1904 -0.3702
--3.77 0.7313 0.8327 0.1904 -0.4161
--3.828 0.7425 0.805 0.1904 -0.4611
--3.878 0.7522 0.7759 0.1904 -0.5048
--3.919 0.7602 0.7454 0.1904 -0.5474
--3.951 0.7664 0.7138 0.1904 -0.5885
--3.973 0.7707 0.681 0.1904 -0.6282
--3.986 0.7732 0.6472 0.1904 -0.6663
--3.989 0.7738 0.6126 0.1904 -0.7027
--3.982 0.7724 0.5771 0.1904 -0.7374
--3.965 0.7691 0.5409 0.1904 -0.7702
--3.938 0.7639 0.504 0.1904 -0.8011
--3.902 0.7569 0.4666 0.1904 -0.8301
--3.857 0.7481 0.4286 0.1904 -0.8569
--3.803 0.7376 0.3903 0.1904 -0.8816
--3.74 0.7255 0.3515 0.1904 -0.9041
--3.67 0.712 0.3124 0.1904 -0.9243
--3.593 0.697 0.2731 0.1904 -0.9422
--3.51 0.6809 0.2335 0.1904 -0.9578
--3.422 0.6637 0.1937 0.1904 -0.971
--3.328 0.6456 0.1538 0.1904 -0.9817
--3.231 0.6268 0.1137 0.1904 -0.99
--3.132 0.6075 0.07362 0.1904 -0.9958
--3.03 0.5878 0.03344 0.1904 -0.9991
--2.928 0.5679 -0.00676 0.1904 -1
--2.826 0.5481 -0.04696 0.1904 -0.9983
--2.725 0.5285 -0.08712 0.1904 -0.9941
--2.626 0.5093 -0.1272 0.1904 -0.9875
--2.53 0.4908 -0.1672 0.1904 -0.9784
--2.438 0.473 -0.2071 0.1904 -0.9668
--2.351 0.4561 -0.2468 0.1904 -0.9528
--2.27 0.4403 -0.2863 0.1904 -0.9365
--2.195 0.4259 -0.3256 0.1904 -0.9178
--2.128 0.4128 -0.3646 0.1904 -0.8968
--2.068 0.4012 -0.4032 0.1904 -0.8735
--2.017 0.3913 -0.4414 0.1904 -0.8481
--1.975 0.3831 -0.4792 0.1904 -0.8206
--1.942 0.3767 -0.5165 0.1904 -0.791
--1.918 0.3721 -0.5531 0.1904 -0.7594
--1.905 0.3695 -0.5891 0.1904 -0.7259
--1.901 0.3687 -0.6243 0.1904 -0.6907
--1.907 0.37 -0.6587 0.1904 -0.6536
--1.923 0.3731 -0.6921 0.1904 -0.615
--1.949 0.378 -0.7245 0.1904 -0.5748
--1.984 0.3849 -0.7558 0.1904 -0.5332
--2.028 0.3934 -0.7858 0.1904 -0.4903
--2.081 0.4036 -0.8145 0.1904 -0.4461
--2.141 0.4154 -0.8417 0.1904 -0.4008
--2.209 0.4286 -0.8674 0.1904 -0.3545
--2.284 0.4431 -0.8913 0.1904 -0.3073
--2.365 0.4587 -0.9134 0.1904 -0.2594
--2.451 0.4753 -0.9336 0.1904 -0.2108
--2.541 0.4928 -0.9518 0.1904 -0.1617
--2.634 0.5109 -0.9678 0.1904 -0.1122
--2.73 0.5295 -0.9816 0.1904 -0.06235
--2.827 0.5484 -0.993 0.1904 -0.01239
--2.925 0.5673 -1.002 0.1904 0.0376
--3.022 0.5862 -1.008 0.1904 0.0875
--3.118 0.6047 -1.012 0.1904 0.1372
--3.211 0.6228 -1.013 0.1904 0.1865
--3.301 0.6403 -1.011 0.1904 0.2354
--3.387 0.6569 -1.007 0.1904 0.2837
--3.467 0.6726 -0.999 0.1904 0.3312
--3.542 0.6871 -0.9885 0.1904 0.378
--3.61 0.7003 -0.975 0.1904 0.4238
--3.671 0.7121 -0.9586 0.1904 0.4685
--3.724 0.7224 -0.9391 0.1904 0.5121
--3.769 0.731 -0.9167 0.1904 0.5544
--3.804 0.738 -0.8913 0.1904 0.5953
--3.831 0.7431 -0.863 0.1904 0.6347
--3.848 0.7465 -0.8319 0.1904 0.6725
--3.856 0.748 -0.798 0.1904 0.7087
--3.854 0.7476 -0.7613 0.1904 0.743
--3.843 0.7454 -0.722 0.1904 0.7756
--3.822 0.7413 -0.6803 0.1904 0.8061
--3.792 0.7355 -0.6361 0.1904 0.8347
--3.753 0.728 -0.5897 0.1904 0.8612
--3.706 0.7188 -0.5412 0.1904 0.8855
--3.65 0.7081 -0.4907 0.1904 0.9076
--3.588 0.6959 -0.4385 0.1904 0.9275
--3.518 0.6825 -0.3847 0.1904 0.945
--3.443 0.6679 -0.3295 0.1904 0.9602
--3.363 0.6523 -0.273 0.1904 0.9729
--3.278 0.6359 -0.2156 0.1904 0.9833
--3.19 0.6187 -0.1574 0.1904 0.9911
--3.099 0.6011 -0.09855 0.1904 0.9965
--3.007 0.5832 -0.03937 0.1904 0.9994
--2.97 0.4234 0 0.1411 1
--2.875 0.4098 0.05692 0.1411 0.9988
--2.781 0.3964 0.1136 0.1411 0.995
--2.689 0.3833 0.17 0.1411 0.9888
--2.599 0.3705 0.2257 0.1411 0.9801
--2.514 0.3583 0.2807 0.1411 0.9689
--2.433 0.3468 0.3347 0.1411 0.9553
--2.358 0.3361 0.3876 0.1411 0.9394
--2.289 0.3263 0.4392 0.1411 0.9211
--2.227 0.3174 0.4893 0.1411 0.9004
--2.173 0.3097 0.5377 0.1411 0.8776
--2.127 0.3031 0.5844 0.1411 0.8525
--2.089 0.2978 0.6292 0.1411 0.8253
--2.061 0.2938 0.6718 0.1411 0.7961
--2.042 0.2911 0.7123 0.1411 0.7648
--2.033 0.2898 0.7505 0.1411 0.7317
--2.033 0.2898 0.7863 0.1411 0.6967
--2.043 0.2913 0.8195 0.1411 0.66
--2.063 0.2941 0.8503 0.1411 0.6216
--2.092 0.2983 0.8783 0.1411 0.5817
--2.131 0.3038 0.9037 0.1411 0.5403
--2.178 0.3105 0.9263 0.1411 0.4976
--2.234 0.3184 0.9462 0.1411 0.4536
--2.298 0.3275 0.9632 0.1411 0.4085
--2.368 0.3376 0.9775 0.1411 0.3624
--2.445 0.3486 0.9889 0.1411 0.3153
--2.528 0.3604 0.9976 0.1411 0.2675
--2.616 0.3729 1.004 0.1411 0.219
--2.708 0.386 1.007 0.1411 0.17
--2.803 0.3996 1.007 0.1411 0.1205
--2.9 0.4135 1.005 0.1411 0.07074
--2.999 0.4275 1 0.1411 0.02079
--3.098 0.4416 0.9929 0.1411 -0.0292
--3.196 0.4555 0.9832 0.1411 -0.07912
--3.292 0.4692 0.9711 0.1411 -0.1288
--3.385 0.4826 0.9567 0.1411 -0.1782
--3.475 0.4954 0.9401 0.1411 -0.2272
--3.561 0.5075 0.9214 0.1411 -0.2756
--3.64 0.5189 0.9006 0.1411 -0.3233
--3.714 0.5294 0.878 0.1411 -0.3702
--3.781 0.539 0.8535 0.1411 -0.4161
--3.84 0.5474 0.8273 0.1411 -0.4611
--3.891 0.5547 0.7994 0.1411 -0.5048
--3.933 0.5607 0.77 0.1411 -0.5474
--3.966 0.5654 0.7392 0.1411 -0.5885
--3.99 0.5687 0.707 0.1411 -0.6282
--4.003 0.5707 0.6735 0.1411 -0.6663
--4.007 0.5712 0.639 0.1411 -0.7027
--4.001 0.5703 0.6033 0.1411 -0.7374
--3.985 0.568 0.5667 0.1411 -0.7702
--3.959 0.5643 0.5291 0.1411 -0.8011
--3.923 0.5593 0.4908 0.1411 -0.8301
--3.879 0.5529 0.4517 0.1411 -0.8569
--3.825 0.5452 0.412 0.1411 -0.8816
--3.763 0.5364 0.3716 0.1411 -0.9041
--3.693 0.5265 0.3308 0.1411 -0.9243
--3.617 0.5156 0.2895 0.1411 -0.9422
--3.534 0.5037 0.2478 0.1411 -0.9578
--3.446 0.4911 0.2058 0.1411 -0.971
--3.353 0.4779 0.1635 0.1411 -0.9817
--3.256 0.4641 0.121 0.1411 -0.99
--3.156 0.4499 0.07835 0.1411 -0.9958
--3.055 0.4355 0.0356 0.1411 -0.9991
--2.953 0.4209 -0.007197 0.1411 -1
--2.851 0.4064 -0.04998 0.1411 -0.9983
--2.75 0.392 -0.09271 0.1411 -0.9941
--2.651 0.3779 -0.1353 0.1411 -0.9875
--2.556 0.3643 -0.1777 0.1411 -0.9784
--2.464 0.3513 -0.2199 0.1411 -0.9668
--2.378 0.3389 -0.2619 0.1411 -0.9528
--2.297 0.3274 -0.3034 0.1411 -0.9365
--2.222 0.3168 -0.3446 0.1411 -0.9178
--2.155 0.3072 -0.3853 0.1411 -0.8968
--2.096 0.2988 -0.4254 0.1411 -0.8735
--2.045 0.2916 -0.4649 0.1411 -0.8481
--2.004 0.2856 -0.5038 0.1411 -0.8206
--1.971 0.281 -0.5419 0.1411 -0.791
--1.949 0.2778 -0.5791 0.1411 -0.7594
--1.936 0.2759 -0.6154 0.1411 -0.7259
--1.933 0.2755 -0.6507 0.1411 -0.6907
--1.94 0.2765 -0.6849 0.1411 -0.6536
--1.957 0.279 -0.7179 0.1411 -0.615
--1.984 0.2828 -0.7497 0.1411 -0.5748
--2.02 0.2879 -0.78 0.1411 -0.5332
--2.065 0.2944 -0.8089 0.1411 -0.4903
--2.119 0.302 -0.8363 0.1411 -0.4461
--2.181 0.3108 -0.8619 0.1411 -0.4008
--2.25 0.3207 -0.8858 0.1411 -0.3545
--2.326 0.3315 -0.9078 0.1411 -0.3073
--2.408 0.3432 -0.9279 0.1411 -0.2594
--2.495 0.3556 -0.9459 0.1411 -0.2108
--2.586 0.3686 -0.9618 0.1411 -0.1617
--2.68 0.3821 -0.9754 0.1411 -0.1122
--2.777 0.3959 -0.9868 0.1411 -0.06235
--2.875 0.4099 -0.9957 0.1411 -0.01239
--2.974 0.424 -1.002 0.1411 0.0376
--3.072 0.438 -1.006 0.1411 0.0875
--3.169 0.4517 -1.007 0.1411 0.1372
--3.263 0.4651 -1.006 0.1411 0.1865
--3.354 0.4781 -1.002 0.1411 0.2354
--3.44 0.4904 -0.995 0.1411 0.2837
--3.521 0.5019 -0.9854 0.1411 0.3312
--3.596 0.5126 -0.973 0.1411 0.378
--3.665 0.5224 -0.9578 0.1411 0.4238
--3.726 0.5311 -0.9398 0.1411 0.4685
--3.779 0.5386 -0.919 0.1411 0.5121
--3.823 0.5449 -0.8955 0.1411 0.5544
--3.858 0.55 -0.8692 0.1411 0.5953
--3.885 0.5537 -0.8402 0.1411 0.6347
--3.901 0.5561 -0.8086 0.1411 0.6725
--3.908 0.5571 -0.7745 0.1411 0.7087
--3.905 0.5567 -0.7379 0.1411 0.743
--3.893 0.5549 -0.6989 0.1411 0.7756
--3.871 0.5517 -0.6577 0.1411 0.8061
--3.839 0.5473 -0.6143 0.1411 0.8347
--3.799 0.5415 -0.5689 0.1411 0.8612
--3.75 0.5345 -0.5216 0.1411 0.8855
--3.693 0.5264 -0.4726 0.1411 0.9076
--3.629 0.5173 -0.422 0.1411 0.9275
--3.557 0.5071 -0.37 0.1411 0.945
--3.48 0.4961 -0.3167 0.1411 0.9602
--3.398 0.4843 -0.2623 0.1411 0.9729
--3.311 0.472 -0.207 0.1411 0.9833
--3.221 0.4591 -0.1511 0.1411 0.9911
--3.128 0.4458 -0.0946 0.1411 0.9965
--3.033 0.4324 -0.03779 0.1411 0.9994
--2.987 0.2744 0 0.09146 1
--2.89 0.2655 0.0545 0.09146 0.9988
--2.794 0.2567 0.1088 0.09146 0.995
--2.7 0.248 0.1628 0.09146 0.9888
--2.609 0.2396 0.2163 0.09146 0.9801
--2.522 0.2316 0.2691 0.09146 0.9689
--2.439 0.224 0.3211 0.09146 0.9553
--2.362 0.217 0.372 0.09146 0.9394
--2.292 0.2105 0.4219 0.09146 0.9211
--2.228 0.2046 0.4704 0.09146 0.9004
--2.172 0.1995 0.5174 0.09146 0.8776
--2.125 0.1952 0.5629 0.09146 0.8525
--2.086 0.1916 0.6067 0.09146 0.8253
--2.057 0.1889 0.6487 0.09146 0.7961
--2.037 0.1871 0.6887 0.09146 0.7648
--2.026 0.1861 0.7266 0.09146 0.7317
--2.026 0.1861 0.7624 0.09146 0.6967
--2.035 0.1869 0.7959 0.09146 0.66
--2.054 0.1887 0.8271 0.09146 0.6216
--2.083 0.1913 0.8559 0.09146 0.5817
--2.121 0.1948 0.8822 0.09146 0.5403
--2.168 0.1992 0.906 0.09146 0.4976
--2.224 0.2043 0.9273 0.09146 0.4536
--2.287 0.2101 0.9459 0.09146 0.4085
--2.358 0.2166 0.962 0.09146 0.3624
--2.435 0.2237 0.9754 0.09146 0.3153
--2.519 0.2313 0.9861 0.09146 0.2675
--2.607 0.2394 0.9943 0.09146 0.219
--2.699 0.2479 0.9998 0.09146 0.17
--2.795 0.2567 1.003 0.09146 0.1205
--2.893 0.2657 1.003 0.09146 0.07074
--2.992 0.2748 1.001 0.09146 0.02079
--3.091 0.2839 0.9959 0.09146 -0.0292
--3.19 0.293 0.9886 0.09146 -0.07912
--3.287 0.3019 0.9789 0.09146 -0.1288
--3.381 0.3106 0.9669 0.09146 -0.1782
--3.472 0.3189 0.9526 0.09146 -0.2272
--3.558 0.3268 0.936 0.09146 -0.2756
--3.639 0.3343 0.9173 0.09146 -0.3233
--3.714 0.3411 0.8965 0.09146 -0.3702
--3.782 0.3473 0.8737 0.09146 -0.4161
--3.842 0.3529 0.849 0.09146 -0.4611
--3.894 0.3576 0.8224 0.09146 -0.5048
--3.937 0.3616 0.7941 0.09146 -0.5474
--3.971 0.3647 0.7641 0.09146 -0.5885
--3.995 0.367 0.7325 0.09146 -0.6282
--4.01 0.3683 0.6994 0.09146 -0.6663
--4.015 0.3687 0.665 0.09146 -0.7027
--4.009 0.3682 0.6292 0.09146 -0.7374
--3.994 0.3668 0.5921 0.09146 -0.7702
--3.969 0.3645 0.5539 0.09146 -0.8011
--3.934 0.3613 0.5147 0.09146 -0.8301
--3.89 0.3573 0.4745 0.09146 -0.8569
--3.837 0.3524 0.4334 0.09146 -0.8816
--3.776 0.3468 0.3916 0.09146 -0.9041
--3.707 0.3405 0.349 0.09146 -0.9243
--3.631 0.3335 0.3057 0.09146 -0.9422
--3.548 0.3259 0.262 0.09146 -0.9578
--3.461 0.3178 0.2177 0.09146 -0.971
--3.368 0.3094 0.1731 0.09146 -0.9817
--3.272 0.3005 0.1282 0.09146 -0.99
--3.173 0.2914 0.08303 0.09146 -0.9958
--3.072 0.2822 0.03773 0.09146 -0.9991
--2.97 0.2728 -0.007629 0.09146 -1
--2.869 0.2635 -0.05298 0.09146 -0.9983
--2.768 0.2543 -0.09823 0.09146 -0.9941
--2.67 0.2453 -0.1433 0.09146 -0.9875
--2.575 0.2365 -0.1882 0.09146 -0.9784
--2.484 0.2282 -0.2327 0.09146 -0.9668
--2.398 0.2203 -0.2767 0.09146 -0.9528
--2.318 0.2129 -0.3203 0.09146 -0.9365
--2.244 0.2061 -0.3634 0.09146 -0.9178
--2.178 0.2 -0.4057 0.09146 -0.8968
--2.119 0.1947 -0.4473 0.09146 -0.8735
--2.069 0.1901 -0.4881 0.09146 -0.8481
--2.028 0.1863 -0.528 0.09146 -0.8206
--1.997 0.1834 -0.5669 0.09146 -0.791
--1.975 0.1814 -0.6047 0.09146 -0.7594
--1.963 0.1803 -0.6413 0.09146 -0.7259
--1.961 0.1801 -0.6767 0.09146 -0.6907
--1.969 0.1808 -0.7107 0.09146 -0.6536
--1.987 0.1825 -0.7433 0.09146 -0.615
--2.014 0.185 -0.7744 0.09146 -0.5748
--2.051 0.1884 -0.8038 0.09146 -0.5332
--2.098 0.1927 -0.8315 0.09146 -0.4903
--2.152 0.1977 -0.8575 0.09146 -0.4461
--2.215 0.2035 -0.8816 0.09146 -0.4008
--2.285 0.2099 -0.9037 0.09146 -0.3545
--2.362 0.217 -0.9238 0.09146 -0.3073
--2.445 0.2246 -0.9418 0.09146 -0.2594
--2.533 0.2326 -0.9576 0.09146 -0.2108
--2.625 0.2411 -0.9712 0.09146 -0.1617
--2.72 0.2499 -0.9824 0.09146 -0.1122
--2.818 0.2588 -0.9913 0.09146 -0.06235
--2.917 0.2679 -0.9977 0.09146 -0.01239
--3.017 0.2771 -1.002 0.09146 0.0376
--3.115 0.2862 -1.003 0.09146 0.0875
--3.213 0.2951 -1.002 0.09146 0.1372
--3.307 0.3038 -0.9982 0.09146 0.1865
--3.398 0.3121 -0.9918 0.09146 0.2354
--3.485 0.3201 -0.9828 0.09146 0.2837
--3.566 0.3276 -0.9712 0.09146 0.3312
--3.641 0.3345 -0.9569 0.09146 0.378
--3.71 0.3407 -0.94 0.09146 0.4238
--3.771 0.3463 -0.9204 0.09146 0.4685
--3.823 0.3512 -0.8983 0.09146 0.5121
--3.867 0.3552 -0.8736 0.09146 0.5544
--3.902 0.3584 -0.8465 0.09146 0.5953
--3.928 0.3608 -0.8169 0.09146 0.6347
--3.944 0.3622 -0.7849 0.09146 0.6725
--3.95 0.3628 -0.7506 0.09146 0.7087
--3.946 0.3625 -0.7141 0.09146 0.743
--3.933 0.3612 -0.6754 0.09146 0.7756
--3.909 0.3591 -0.6348 0.09146 0.8061
--3.877 0.3561 -0.5922 0.09146 0.8347
--3.835 0.3523 -0.5478 0.09146 0.8612
--3.785 0.3476 -0.5018 0.09146 0.8855
--3.726 0.3423 -0.4542 0.09146 0.9076
--3.66 0.3362 -0.4052 0.09146 0.9275
--3.587 0.3295 -0.355 0.09146 0.945
--3.508 0.3222 -0.3037 0.09146 0.9602
--3.424 0.3145 -0.2514 0.09146 0.9729
--3.335 0.3064 -0.1984 0.09146 0.9833
--3.243 0.2979 -0.1447 0.09146 0.9911
--3.148 0.2892 -0.09058 0.09146 0.9965
--3.052 0.2803 -0.03618 0.09146 0.9994
--2.997 0.1247 0 0.04158 1
--2.899 0.1206 0.05204 0.04158 0.9988
--2.801 0.1166 0.1039 0.04158 0.995
--2.705 0.1126 0.1556 0.04158 0.9888
--2.613 0.1087 0.2067 0.04158 0.9801
--2.524 0.105 0.2573 0.04158 0.9689
--2.44 0.1015 0.3072 0.04158 0.9553
--2.361 0.09826 0.3562 0.04158 0.9394
--2.289 0.09526 0.4043 0.04158 0.9211
--2.224 0.09255 0.4512 0.04158 0.9004
--2.167 0.09018 0.4968 0.04158 0.8776
--2.118 0.08814 0.5411 0.04158 0.8525
--2.078 0.08648 0.5839 0.04158 0.8253
--2.047 0.08521 0.6251 0.04158 0.7961
--2.026 0.08433 0.6646 0.04158 0.7648
--2.015 0.08386 0.7022 0.04158 0.7317
--2.014 0.08381 0.738 0.04158 0.6967
--2.022 0.08417 0.7717 0.04158 0.66
--2.041 0.08493 0.8034 0.04158 0.6216
--2.069 0.08611 0.8329 0.04158 0.5817
--2.107 0.08767 0.8602 0.04158 0.5403
--2.153 0.08961 0.8852 0.04158 0.4976
--2.208 0.0919 0.9078 0.04158 0.4536
--2.271 0.09453 0.9281 0.04158 0.4085
--2.342 0.09747 0.9459 0.04158 0.3624
--2.419 0.1007 0.9612 0.04158 0.3153
--2.502 0.1041 0.9741 0.04158 0.2675
--2.591 0.1078 0.9844 0.04158 0.219
--2.683 0.1117 0.9922 0.04158 0.17
--2.779 0.1157 0.9975 0.04158 0.1205
--2.877 0.1197 1 0.04158 0.07074
--2.977 0.1239 1 0.04158 0.02079
--3.076 0.128 0.9981 0.04158 -0.0292
--3.176 0.1322 0.9934 0.04158 -0.07912
--3.273 0.1362 0.9861 0.04158 -0.1288
--3.368 0.1402 0.9765 0.04158 -0.1782
--3.46 0.144 0.9644 0.04158 -0.2272
--3.547 0.1476 0.95 0.04158 -0.2756
--3.628 0.151 0.9334 0.04158 -0.3233
--3.704 0.1541 0.9145 0.04158 -0.3702
--3.772 0.157 0.8934 0.04158 -0.4161
--3.833 0.1595 0.8702 0.04158 -0.4611
--3.886 0.1617 0.8449 0.04158 -0.5048
--3.93 0.1636 0.8177 0.04158 -0.5474
--3.965 0.165 0.7885 0.04158 -0.5885
--3.99 0.1661 0.7576 0.04158 -0.6282
--4.006 0.1667 0.7249 0.04158 -0.6663
--4.011 0.1669 0.6905 0.04158 -0.7027
--4.007 0.1667 0.6546 0.04158 -0.7374
--3.992 0.1661 0.6172 0.04158 -0.7702
--3.968 0.1651 0.5784 0.04158 -0.8011
--3.934 0.1637 0.5383 0.04158 -0.8301
--3.891 0.1619 0.497 0.04158 -0.8569
--3.839 0.1597 0.4546 0.04158 -0.8816
--3.778 0.1572 0.4112 0.04158 -0.9041
--3.71 0.1544 0.3669 0.04158 -0.9243
--3.635 0.1513 0.3218 0.04158 -0.9422
--3.553 0.1479 0.276 0.04158 -0.9578
--3.466 0.1443 0.2295 0.04158 -0.971
--3.375 0.1404 0.1826 0.04158 -0.9817
--3.279 0.1365 0.1353 0.04158 -0.99
--3.181 0.1324 0.08766 0.04158 -0.9958
--3.081 0.1282 0.03984 0.04158 -0.9991
--2.98 0.124 -0.008056 0.04158 -1
--2.88 0.1198 -0.05594 0.04158 -0.9983
--2.78 0.1157 -0.1037 0.04158 -0.9941
--2.683 0.1117 -0.1512 0.04158 -0.9875
--2.589 0.1077 -0.1984 0.04158 -0.9784
--2.499 0.104 -0.2452 0.04158 -0.9668
--2.413 0.1004 -0.2914 0.04158 -0.9528
--2.334 0.09713 -0.337 0.04158 -0.9365
--2.261 0.09409 -0.3819 0.04158 -0.9178
--2.195 0.09137 -0.4259 0.04158 -0.8968
--2.138 0.08897 -0.469 0.04158 -0.8735
--2.089 0.08692 -0.511 0.04158 -0.8481
--2.049 0.08525 -0.5519 0.04158 -0.8206
--2.018 0.08397 -0.5916 0.04158 -0.791
--1.997 0.0831 -0.6299 0.04158 -0.7594
--1.986 0.08264 -0.6669 0.04158 -0.7259
--1.985 0.08259 -0.7023 0.04158 -0.6907
--1.993 0.08296 -0.7361 0.04158 -0.6536
--2.012 0.08374 -0.7682 0.04158 -0.615
--2.041 0.08493 -0.7985 0.04158 -0.5748
--2.079 0.08651 -0.827 0.04158 -0.5332
--2.126 0.08846 -0.8536 0.04158 -0.4903
--2.181 0.09077 -0.8782 0.04158 -0.4461
--2.245 0.09342 -0.9007 0.04158 -0.4008
--2.316 0.09637 -0.9211 0.04158 -0.3545
--2.393 0.0996 -0.9392 0.04158 -0.3073
--2.477 0.1031 -0.9551 0.04158 -0.2594
--2.565 0.1068 -0.9687 0.04158 -0.2108
--2.658 0.1106 -0.98 0.04158 -0.1617
--2.754 0.1146 -0.9888 0.04158 -0.1122
--2.852 0.1187 -0.9953 0.04158 -0.06235
--2.952 0.1228 -0.9992 0.04158 -0.01239
--3.052 0.127 -1.001 0.04158 0.0376
--3.151 0.1311 -0.9996 0.04158 0.0875
--3.248 0.1352 -0.996 0.04158 0.1372
--3.343 0.1391 -0.9899 0.04158 0.1865
--3.434 0.1429 -0.9812 0.04158 0.2354
--3.521 0.1465 -0.97 0.04158 0.2837
--3.602 0.1499 -0.9563 0.04158 0.3312
--3.677 0.153 -0.9402 0.04158 0.378
--3.745 0.1559 -0.9215 0.04158 0.4238
--3.806 0.1584 -0.9005 0.04158 0.4685
--3.858 0.1606 -0.877 0.04158 0.5121
--3.902 0.1624 -0.8513 0.04158 0.5544
--3.936 0.1638 -0.8232 0.04158 0.5953
--3.961 0.1649 -0.793 0.04158 0.6347
--3.976 0.1655 -0.7606 0.04158 0.6725
--3.982 0.1657 -0.7262 0.04158 0.7087
--3.977 0.1655 -0.6898 0.04158 0.743
--3.962 0.1649 -0.6515 0.04158 0.7756
--3.938 0.1639 -0.6114 0.04158 0.8061
--3.904 0.1625 -0.5697 0.04158 0.8347
--3.861 0.1607 -0.5264 0.04158 0.8612
--3.81 0.1585 -0.4816 0.04158 0.8855
--3.75 0.1561 -0.4355 0.04158 0.9076
--3.682 0.1532 -0.3882 0.04158 0.9275
--3.608 0.1502 -0.3398 0.04158 0.945
--3.528 0.1468 -0.2905 0.04158 0.9602
--3.442 0.1432 -0.2404 0.04158 0.9729
--3.351 0.1395 -0.1896 0.04158 0.9833
--3.258 0.1356 -0.1382 0.04158 0.9911
--3.161 0.1316 -0.08652 0.04158 0.9965
--3.063 0.1275 -0.03455 0.04158 0.9994
--3 -0.02522 0 -0.008407 1
--2.9 -0.02438 0.04956 -0.008407 0.9988
--2.801 -0.02355 0.099 -0.008407 0.995
--2.704 -0.02273 0.1482 -0.008407 0.9888
--2.61 -0.02194 0.197 -0.008407 0.9801
--2.519 -0.02118 0.2454 -0.008407 0.9689
--2.434 -0.02046 0.2931 -0.008407 0.9553
--2.354 -0.01979 0.3402 -0.008407 0.9394
--2.281 -0.01918 0.3864 -0.008407 0.9211
--2.215 -0.01862 0.4317 -0.008407 0.9004
--2.156 -0.01813 0.4759 -0.008407 0.8776
--2.107 -0.01771 0.5189 -0.008407 0.8525
--2.066 -0.01737 0.5607 -0.008407 0.8253
--2.034 -0.0171 0.6011 -0.008407 0.7961
--2.012 -0.01691 0.6401 -0.008407 0.7648
--2 -0.01681 0.6774 -0.008407 0.7317
--1.997 -0.01679 0.7131 -0.008407 0.6967
--2.005 -0.01686 0.7471 -0.008407 0.66
--2.023 -0.01701 0.7792 -0.008407 0.6216
--2.05 -0.01724 0.8094 -0.008407 0.5817
--2.087 -0.01755 0.8376 -0.008407 0.5403
--2.133 -0.01793 0.8638 -0.008407 0.4976
--2.188 -0.01839 0.8878 -0.008407 0.4536
--2.25 -0.01892 0.9096 -0.008407 0.4085
--2.321 -0.01951 0.9292 -0.008407 0.3624
--2.397 -0.02016 0.9465 -0.008407 0.3153
--2.48 -0.02085 0.9614 -0.008407 0.2675
--2.568 -0.02159 0.9739 -0.008407 0.219
--2.661 -0.02237 0.984 -0.008407 0.17
--2.756 -0.02318 0.9917 -0.008407 0.1205
--2.855 -0.024 0.9969 -0.008407 0.07074
--2.954 -0.02484 0.9996 -0.008407 0.02079
--3.054 -0.02568 0.9998 -0.008407 -0.0292
--3.153 -0.02651 0.9975 -0.008407 -0.07912
--3.251 -0.02734 0.9927 -0.008407 -0.1288
--3.347 -0.02814 0.9855 -0.008407 -0.1782
--3.438 -0.02891 0.9757 -0.008407 -0.2272
--3.526 -0.02964 0.9635 -0.008407 -0.2756
--3.608 -0.03033 0.9489 -0.008407 -0.3233
--3.684 -0.03097 0.9318 -0.008407 -0.3702
--3.753 -0.03155 0.9125 -0.008407 -0.4161
--3.814 -0.03207 0.8908 -0.008407 -0.4611
--3.868 -0.03252 0.8669 -0.008407 -0.5048
--3.913 -0.03289 0.8407 -0.008407 -0.5474
--3.948 -0.03319 0.8125 -0.008407 -0.5885
--3.974 -0.03341 0.7822 -0.008407 -0.6282
--3.99 -0.03355 0.7499 -0.008407 -0.6663
--3.997 -0.0336 0.7157 -0.008407 -0.7027
--3.993 -0.03357 0.6796 -0.008407 -0.7374
--3.98 -0.03346 0.6419 -0.008407 -0.7702
--3.956 -0.03326 0.6025 -0.008407 -0.8011
--3.923 -0.03299 0.5616 -0.008407 -0.8301
--3.881 -0.03263 0.5192 -0.008407 -0.8569
--3.83 -0.0322 0.4755 -0.008407 -0.8816
--3.771 -0.0317 0.4306 -0.008407 -0.9041
--3.704 -0.03114 0.3846 -0.008407 -0.9243
--3.63 -0.03052 0.3376 -0.008407 -0.9422
--3.549 -0.02984 0.2898 -0.008407 -0.9578
--3.463 -0.02912 0.2412 -0.008407 -0.971
--3.373 -0.02836 0.192 -0.008407 -0.9817
--3.279 -0.02757 0.1423 -0.008407 -0.99
--3.182 -0.02675 0.09223 -0.008407 -0.9958
--3.083 -0.02592 0.04193 -0.008407 -0.9991
--2.983 -0.02508 -0.008478 -0.008407 -1
--2.884 -0.02424 -0.05886 -0.008407 -0.9983
--2.785 -0.02342 -0.1091 -0.008407 -0.9941
--2.689 -0.02261 -0.1591 -0.008407 -0.9875
--2.596 -0.02183 -0.2086 -0.008407 -0.9784
--2.507 -0.02108 -0.2576 -0.008407 -0.9668
--2.423 -0.02037 -0.306 -0.008407 -0.9528
--2.344 -0.01971 -0.3535 -0.008407 -0.9365
--2.273 -0.01911 -0.4002 -0.008407 -0.9178
--2.208 -0.01856 -0.4459 -0.008407 -0.8968
--2.152 -0.01809 -0.4904 -0.008407 -0.8735
--2.103 -0.01768 -0.5336 -0.008407 -0.8481
--2.064 -0.01736 -0.5755 -0.008407 -0.8206
--2.035 -0.01711 -0.6159 -0.008407 -0.791
--2.015 -0.01694 -0.6548 -0.008407 -0.7594
--2.004 -0.01685 -0.692 -0.008407 -0.7259
--2.004 -0.01685 -0.7274 -0.008407 -0.6907
--2.014 -0.01693 -0.761 -0.008407 -0.6536
--2.033 -0.0171 -0.7926 -0.008407 -0.615
--2.063 -0.01734 -0.8222 -0.008407 -0.5748
--2.101 -0.01767 -0.8498 -0.008407 -0.5332
--2.149 -0.01807 -0.8752 -0.008407 -0.4903
--2.205 -0.01854 -0.8983 -0.008407 -0.4461
--2.269 -0.01908 -0.9192 -0.008407 -0.4008
--2.341 -0.01968 -0.9378 -0.008407 -0.3545
--2.419 -0.02034 -0.9541 -0.008407 -0.3073
--2.503 -0.02104 -0.9679 -0.008407 -0.2594
--2.592 -0.02179 -0.9793 -0.008407 -0.2108
--2.685 -0.02257 -0.9882 -0.008407 -0.1617
--2.781 -0.02338 -0.9946 -0.008407 -0.1122
--2.88 -0.02421 -0.9986 -0.008407 -0.06235
--2.979 -0.02505 -1 -0.008407 -0.01239
--3.079 -0.02589 -0.999 -0.008407 0.0376
--3.178 -0.02672 -0.9954 -0.008407 0.0875
--3.276 -0.02754 -0.9894 -0.008407 0.1372
--3.37 -0.02834 -0.9809 -0.008407 0.1865
--3.461 -0.0291 -0.97 -0.008407 0.2354
--3.548 -0.02983 -0.9566 -0.008407 0.2837
--3.629 -0.03051 -0.9409 -0.008407 0.3312
--3.704 -0.03114 -0.9229 -0.008407 0.378
--3.771 -0.03171 -0.9025 -0.008407 0.4238
--3.831 -0.03221 -0.88 -0.008407 0.4685
--3.883 -0.03265 -0.8552 -0.008407 0.5121
--3.926 -0.03301 -0.8284 -0.008407 0.5544
--3.96 -0.03329 -0.7995 -0.008407 0.5953
--3.984 -0.0335 -0.7686 -0.008407 0.6347
--3.998 -0.03362 -0.7359 -0.008407 0.6725
--4.003 -0.03365 -0.7013 -0.008407 0.7087
--3.997 -0.03361 -0.6651 -0.008407 0.743
--3.982 -0.03348 -0.6271 -0.008407 0.7756
--3.956 -0.03326 -0.5877 -0.008407 0.8061
--3.921 -0.03297 -0.5468 -0.008407 0.8347
--3.877 -0.0326 -0.5046 -0.008407 0.8612
--3.825 -0.03216 -0.4611 -0.008407 0.8855
--3.764 -0.03164 -0.4166 -0.008407 0.9076
--3.695 -0.03107 -0.371 -0.008407 0.9275
--3.619 -0.03043 -0.3245 -0.008407 0.945
--3.538 -0.02974 -0.2772 -0.008407 0.9602
--3.45 -0.02901 -0.2292 -0.008407 0.9729
--3.359 -0.02824 -0.1807 -0.008407 0.9833
--3.264 -0.02744 -0.1317 -0.008407 0.9911
--3.166 -0.02662 -0.08239 -0.008407 0.9965
--3.066 -0.02578 -0.0329 -0.008407 0.9994
--2.995 -0.1751 0 -0.05837 1
--2.894 -0.1692 0.04704 -0.05837 0.9988
--2.794 -0.1634 0.09399 -0.05837 0.995
--2.696 -0.1576 0.1407 -0.05837 0.9888
--2.601 -0.1521 0.1872 -0.05837 0.9801
--2.509 -0.1467 0.2333 -0.05837 0.9689
--2.423 -0.1417 0.2789 -0.05837 0.9553
--2.342 -0.1369 0.3239 -0.05837 0.9394
--2.268 -0.1326 0.3683 -0.05837 0.9211
--2.201 -0.1287 0.4119 -0.05837 0.9004
--2.141 -0.1252 0.4547 -0.05837 0.8776
--2.09 -0.1222 0.4964 -0.05837 0.8525
--2.048 -0.1198 0.5372 -0.05837 0.8253
--2.016 -0.1179 0.5768 -0.05837 0.7961
--1.993 -0.1165 0.6152 -0.05837 0.7648
--1.98 -0.1158 0.6522 -0.05837 0.7317
--1.977 -0.1156 0.6879 -0.05837 0.6967
--1.983 -0.116 0.722 -0.05837 0.66
--2 -0.117 0.7546 -0.05837 0.6216
--2.027 -0.1185 0.7854 -0.05837 0.5817
--2.063 -0.1206 0.8146 -0.05837 0.5403
--2.108 -0.1233 0.8418 -0.05837 0.4976
--2.162 -0.1264 0.8672 -0.05837 0.4536
--2.224 -0.1301 0.8906 -0.05837 0.4085
--2.294 -0.1341 0.9119 -0.05837 0.3624
--2.37 -0.1386 0.9311 -0.05837 0.3153
--2.452 -0.1434 0.9481 -0.05837 0.2675
--2.54 -0.1485 0.9628 -0.05837 0.219
--2.632 -0.1539 0.9752 -0.05837 0.17
--2.727 -0.1595 0.9853 -0.05837 0.1205
--2.825 -0.1652 0.9929 -0.05837 0.07074
--2.924 -0.171 0.9981 -0.05837 0.02079
--3.024 -0.1768 1.001 -0.05837 -0.0292
--3.123 -0.1826 1.001 -0.05837 -0.07912
--3.221 -0.1883 0.9987 -0.05837 -0.1288
--3.316 -0.1939 0.9938 -0.05837 -0.1782
--3.408 -0.1993 0.9864 -0.05837 -0.2272
--3.496 -0.2044 0.9763 -0.05837 -0.2756
--3.578 -0.2092 0.9638 -0.05837 -0.3233
--3.654 -0.2137 0.9486 -0.05837 -0.3702
--3.724 -0.2177 0.931 -0.05837 -0.4161
--3.786 -0.2214 0.9109 -0.05837 -0.4611
--3.839 -0.2245 0.8883 -0.05837 -0.5048
--3.885 -0.2272 0.8633 -0.05837 -0.5474
--3.921 -0.2293 0.8359 -0.05837 -0.5885
--3.948 -0.2308 0.8063 -0.05837 -0.6282
--3.965 -0.2318 0.7744 -0.05837 -0.6663
--3.972 -0.2323 0.7404 -0.05837 -0.7027
--3.969 -0.2321 0.7043 -0.05837 -0.7374
--3.957 -0.2314 0.6662 -0.05837 -0.7702
--3.934 -0.2301 0.6262 -0.05837 -0.8011
--3.902 -0.2282 0.5845 -0.05837 -0.8301
--3.861 -0.2258 0.5411 -0.05837 -0.8569
--3.812 -0.2229 0.4961 -0.05837 -0.8816
--3.754 -0.2195 0.4498 -0.05837 -0.9041
--3.688 -0.2156 0.4021 -0.05837 -0.9243
--3.615 -0.2114 0.3533 -0.05837 -0.9422
--3.536 -0.2068 0.3034 -0.05837 -0.9578
--3.452 -0.2018 0.2527 -0.05837 -0.971
--3.362 -0.1966 0.2013 -0.05837 -0.9817
--3.27 -0.1912 0.1492 -0.05837 -0.99
--3.174 -0.1856 0.09674 -0.05837 -0.9958
--3.077 -0.1799 0.04399 -0.05837 -0.9991
--2.978 -0.1742 -0.008895 -0.05837 -1
--2.88 -0.1684 -0.06175 -0.05837 -0.9983
--2.783 -0.1628 -0.1144 -0.05837 -0.9941
--2.689 -0.1572 -0.1668 -0.05837 -0.9875
--2.597 -0.1519 -0.2186 -0.05837 -0.9784
--2.509 -0.1467 -0.2699 -0.05837 -0.9668
--2.427 -0.1419 -0.3203 -0.05837 -0.9528
--2.35 -0.1374 -0.3698 -0.05837 -0.9365
--2.279 -0.1333 -0.4183 -0.05837 -0.9178
--2.216 -0.1296 -0.4655 -0.05837 -0.8968
--2.16 -0.1263 -0.5114 -0.05837 -0.8735
--2.114 -0.1236 -0.5559 -0.05837 -0.8481
--2.076 -0.1214 -0.5987 -0.05837 -0.8206
--2.047 -0.1197 -0.6399 -0.05837 -0.791
--2.028 -0.1186 -0.6792 -0.05837 -0.7594
--2.019 -0.118 -0.7166 -0.05837 -0.7259
--2.019 -0.1181 -0.752 -0.05837 -0.6907
--2.03 -0.1187 -0.7854 -0.05837 -0.6536
--2.05 -0.1199 -0.8165 -0.05837 -0.615
--2.08 -0.1216 -0.8454 -0.05837 -0.5748
--2.119 -0.1239 -0.872 -0.05837 -0.5332
--2.168 -0.1267 -0.8962 -0.05837 -0.4903
--2.224 -0.1301 -0.9179 -0.05837 -0.4461
--2.289 -0.1338 -0.9372 -0.05837 -0.4008
--2.361 -0.138 -0.954 -0.05837 -0.3545
--2.439 -0.1426 -0.9683 -0.05837 -0.3073
--2.523 -0.1475 -0.98 -0.05837 -0.2594
--2.612 -0.1527 -0.9891 -0.05837 -0.2108
--2.705 -0.1582 -0.9957 -0.05837 -0.1617
--2.801 -0.1638 -0.9998 -0.05837 -0.1122
--2.9 -0.1696 -1.001 -0.05837 -0.06235
--2.999 -0.1754 -1 -0.05837 -0.01239
--3.099 -0.1812 -0.9967 -0.05837 0.0376
--3.198 -0.187 -0.9906 -0.05837 0.0875
--3.295 -0.1927 -0.9822 -0.05837 0.1372
--3.389 -0.1982 -0.9713 -0.05837 0.1865
--3.48 -0.2035 -0.9581 -0.05837 0.2354
--3.566 -0.2085 -0.9426 -0.05837 0.2837
--3.646 -0.2132 -0.9249 -0.05837 0.3312
--3.72 -0.2175 -0.905 -0.05837 0.378
--3.787 -0.2215 -0.883 -0.05837 0.4238
--3.847 -0.2249 -0.8589 -0.05837 0.4685
--3.898 -0.2279 -0.8329 -0.05837 0.5121
--3.94 -0.2304 -0.805 -0.05837 0.5544
--3.973 -0.2323 -0.7752 -0.05837 0.5953
--3.996 -0.2337 -0.7438 -0.05837 0.6347
--4.01 -0.2345 -0.7107 -0.05837 0.6725
--4.013 -0.2347 -0.676 -0.05837 0.7087
--4.007 -0.2343 -0.6399 -0.05837 0.743
--3.99 -0.2333 -0.6024 -0.05837 0.7756
--3.964 -0.2318 -0.5636 -0.05837 0.8061
--3.928 -0.2297 -0.5236 -0.05837 0.8347
--3.883 -0.2271 -0.4825 -0.05837 0.8612
--3.83 -0.2239 -0.4404 -0.05837 0.8855
--3.767 -0.2203 -0.3973 -0.05837 0.9076
--3.698 -0.2162 -0.3535 -0.05837 0.9275
--3.621 -0.2117 -0.3089 -0.05837 0.945
--3.538 -0.2069 -0.2636 -0.05837 0.9602
--3.45 -0.2018 -0.2178 -0.05837 0.9729
--3.358 -0.1963 -0.1716 -0.05837 0.9833
--3.261 -0.1907 -0.125 -0.05837 0.9911
--3.163 -0.1849 -0.07822 -0.05837 0.9965
--3.062 -0.179 -0.03123 -0.05837 0.9994
--2.982 -0.3246 0 -0.1082 1
--2.881 -0.3135 0.0445 -0.1082 0.9988
--2.78 -0.3025 0.08892 -0.1082 0.995
--2.681 -0.2918 0.1332 -0.1082 0.9888
--2.585 -0.2813 0.1773 -0.1082 0.9801
--2.493 -0.2713 0.2211 -0.1082 0.9689
--2.406 -0.2619 0.2645 -0.1082 0.9553
--2.324 -0.253 0.3075 -0.1082 0.9394
--2.249 -0.2448 0.35 -0.1082 0.9211
--2.181 -0.2374 0.3919 -0.1082 0.9004
--2.121 -0.2309 0.4331 -0.1082 0.8776
--2.07 -0.2252 0.4736 -0.1082 0.8525
--2.027 -0.2206 0.5133 -0.1082 0.8253
--1.993 -0.2169 0.5521 -0.1082 0.7961
--1.969 -0.2143 0.5899 -0.1082 0.7648
--1.955 -0.2128 0.6266 -0.1082 0.7317
--1.952 -0.2124 0.6621 -0.1082 0.6967
--1.958 -0.213 0.6965 -0.1082 0.66
--1.973 -0.2148 0.7294 -0.1082 0.6216
--1.999 -0.2176 0.761 -0.1082 0.5817
--2.034 -0.2214 0.791 -0.1082 0.5403
--2.079 -0.2262 0.8194 -0.1082 0.4976
--2.132 -0.232 0.8461 -0.1082 0.4536
--2.193 -0.2387 0.871 -0.1082 0.4085
--2.262 -0.2461 0.8941 -0.1082 0.3624
--2.337 -0.2544 0.9152 -0.1082 0.3153
--2.419 -0.2632 0.9342 -0.1082 0.2675
--2.506 -0.2727 0.9511 -0.1082 0.219
--2.597 -0.2826 0.9659 -0.1082 0.17
--2.691 -0.2929 0.9783 -0.1082 0.1205
--2.789 -0.3035 0.9884 -0.1082 0.07074
--2.887 -0.3142 0.9961 -0.1082 0.02079
--2.986 -0.325 1.001 -0.1082 -0.0292
--3.085 -0.3358 1.004 -0.1082 -0.07912
--3.183 -0.3464 1.004 -0.1082 -0.1288
--3.278 -0.3567 1.002 -0.1082 -0.1782
--3.369 -0.3667 0.9964 -0.1082 -0.2272
--3.457 -0.3762 0.9886 -0.1082 -0.2756
--3.539 -0.3851 0.9781 -0.1082 -0.3233
--3.615 -0.3934 0.9649 -0.1082 -0.3702
--3.685 -0.401 0.949 -0.1082 -0.4161
--3.747 -0.4078 0.9304 -0.1082 -0.4611
--3.801 -0.4137 0.9092 -0.1082 -0.5048
--3.847 -0.4187 0.8853 -0.1082 -0.5474
--3.883 -0.4227 0.8589 -0.1082 -0.5885
--3.911 -0.4256 0.8299 -0.1082 -0.6282
--3.929 -0.4276 0.7984 -0.1082 -0.6663
--3.937 -0.4284 0.7646 -0.1082 -0.7027
--3.935 -0.4282 0.7284 -0.1082 -0.7374
--3.923 -0.427 0.6901 -0.1082 -0.7702
--3.902 -0.4247 0.6495 -0.1082 -0.8011
--3.871 -0.4213 0.607 -0.1082 -0.8301
--3.832 -0.417 0.5626 -0.1082 -0.8569
--3.783 -0.4117 0.5164 -0.1082 -0.8816
--3.726 -0.4056 0.4686 -0.1082 -0.9041
--3.662 -0.3986 0.4193 -0.1082 -0.9243
--3.591 -0.3908 0.3687 -0.1082 -0.9422
--3.514 -0.3824 0.3169 -0.1082 -0.9578
--3.431 -0.3734 0.2641 -0.1082 -0.971
--3.343 -0.3639 0.2104 -0.1082 -0.9817
--3.252 -0.3539 0.1561 -0.1082 -0.99
--3.158 -0.3437 0.1012 -0.1082 -0.9958
--3.063 -0.3333 0.04602 -0.1082 -0.9991
--2.966 -0.3228 -0.009306 -0.1082 -1
--2.87 -0.3123 -0.0646 -0.1082 -0.9983
--2.775 -0.302 -0.1197 -0.1082 -0.9941
--2.682 -0.2919 -0.1744 -0.1082 -0.9875
--2.592 -0.2821 -0.2285 -0.1082 -0.9784
--2.506 -0.2727 -0.2819 -0.1082 -0.9668
--2.425 -0.2639 -0.3344 -0.1082 -0.9528
--2.349 -0.2557 -0.3859 -0.1082 -0.9365
--2.28 -0.2482 -0.4361 -0.1082 -0.9178
--2.218 -0.2414 -0.4849 -0.1082 -0.8968
--2.164 -0.2356 -0.5321 -0.1082 -0.8735
--2.119 -0.2306 -0.5777 -0.1082 -0.8481
--2.082 -0.2266 -0.6215 -0.1082 -0.8206
--2.055 -0.2236 -0.6634 -0.1082 -0.791
--2.037 -0.2216 -0.7032 -0.1082 -0.7594
--2.028 -0.2207 -0.7409 -0.1082 -0.7259
--2.03 -0.2209 -0.7762 -0.1082 -0.6907
--2.041 -0.2221 -0.8093 -0.1082 -0.6536
--2.062 -0.2244 -0.8399 -0.1082 -0.615
--2.093 -0.2277 -0.868 -0.1082 -0.5748
--2.132 -0.2321 -0.8936 -0.1082 -0.5332
--2.181 -0.2374 -0.9166 -0.1082 -0.4903
--2.238 -0.2436 -0.9369 -0.1082 -0.4461
--2.303 -0.2506 -0.9546 -0.1082 -0.4008
--2.375 -0.2584 -0.9696 -0.1082 -0.3545
--2.453 -0.267 -0.9819 -0.1082 -0.3073
--2.537 -0.2761 -0.9915 -0.1082 -0.2594
--2.626 -0.2858 -0.9984 -0.1082 -0.2108
--2.719 -0.2959 -1.003 -0.1082 -0.1617
--2.815 -0.3063 -1.004 -0.1082 -0.1122
--2.913 -0.317 -1.003 -0.1082 -0.06235
--3.012 -0.3278 -0.9998 -0.1082 -0.01239
--3.111 -0.3386 -0.9938 -0.1082 0.0376
--3.209 -0.3493 -0.9853 -0.1082 0.0875
--3.306 -0.3598 -0.9744 -0.1082 0.1372
--3.399 -0.3699 -0.9612 -0.1082 0.1865
--3.489 -0.3797 -0.9457 -0.1082 0.2354
--3.574 -0.389 -0.928 -0.1082 0.2837
--3.654 -0.3976 -0.9083 -0.1082 0.3312
--3.727 -0.4056 -0.8865 -0.1082 0.378
--3.793 -0.4128 -0.8628 -0.1082 0.4238
--3.852 -0.4192 -0.8373 -0.1082 0.4685
--3.902 -0.4247 -0.81 -0.1082 0.5121
--3.943 -0.4292 -0.7811 -0.1082 0.5544
--3.975 -0.4326 -0.7505 -0.1082 0.5953
--3.998 -0.4351 -0.7185 -0.1082 0.6347
--4.01 -0.4365 -0.6851 -0.1082 0.6725
--4.013 -0.4368 -0.6503 -0.1082 0.7087
--4.006 -0.436 -0.6144 -0.1082 0.743
--3.988 -0.4341 -0.5773 -0.1082 0.7756
--3.961 -0.4311 -0.5392 -0.1082 0.8061
--3.925 -0.4271 -0.5001 -0.1082 0.8347
--3.879 -0.4221 -0.4601 -0.1082 0.8612
--3.824 -0.4162 -0.4193 -0.1082 0.8855
--3.761 -0.4094 -0.3779 -0.1082 0.9076
--3.691 -0.4017 -0.3358 -0.1082 0.9275
--3.614 -0.3933 -0.2931 -0.1082 0.945
--3.53 -0.3842 -0.2499 -0.1082 0.9602
--3.441 -0.3745 -0.2064 -0.1082 0.9729
--3.348 -0.3644 -0.1625 -0.1082 0.9833
--3.251 -0.3538 -0.1183 -0.1082 0.9911
--3.151 -0.343 -0.074 -0.1082 0.9965
--3.05 -0.3319 -0.02954 -0.1082 0.9994
--2.962 -0.4732 0 -0.1577 1
--2.86 -0.4569 0.04192 -0.1577 0.9988
--2.759 -0.4408 0.0838 -0.1577 0.995
--2.66 -0.4249 0.1256 -0.1577 0.9888
--2.564 -0.4095 0.1672 -0.1577 0.9801
--2.471 -0.3948 0.2087 -0.1577 0.9689
--2.384 -0.3808 0.2499 -0.1577 0.9553
--2.301 -0.3677 0.2909 -0.1577 0.9394
--2.226 -0.3556 0.3314 -0.1577 0.9211
--2.157 -0.3446 0.3716 -0.1577 0.9004
--2.097 -0.3349 0.4113 -0.1577 0.8776
--2.044 -0.3266 0.4505 -0.1577 0.8525
--2.001 -0.3196 0.4891 -0.1577 0.8253
--1.967 -0.3142 0.5271 -0.1577 0.7961
--1.942 -0.3102 0.5642 -0.1577 0.7648
--1.927 -0.3079 0.6006 -0.1577 0.7317
--1.922 -0.3071 0.636 -0.1577 0.6967
--1.928 -0.3079 0.6705 -0.1577 0.66
--1.943 -0.3103 0.7038 -0.1577 0.6216
--1.967 -0.3143 0.736 -0.1577 0.5817
--2.002 -0.3197 0.7669 -0.1577 0.5403
--2.045 -0.3267 0.7964 -0.1577 0.4976
--2.097 -0.335 0.8244 -0.1577 0.4536
--2.157 -0.3446 0.8509 -0.1577 0.4085
--2.225 -0.3554 0.8757 -0.1577 0.3624
--2.299 -0.3673 0.8987 -0.1577 0.3153
--2.38 -0.3801 0.9198 -0.1577 0.2675
--2.465 -0.3939 0.9388 -0.1577 0.219
--2.556 -0.4083 0.9559 -0.1577 0.17
--2.649 -0.4232 0.9707 -0.1577 0.1205
--2.746 -0.4386 0.9832 -0.1577 0.07074
--2.843 -0.4542 0.9934 -0.1577 0.02079
--2.942 -0.4699 1.001 -0.1577 -0.0292
--3.04 -0.4856 1.006 -0.1577 -0.07912
--3.137 -0.501 1.009 -0.1577 -0.1288
--3.231 -0.5161 1.009 -0.1577 -0.1782
--3.322 -0.5307 1.006 -0.1577 -0.2272
--3.409 -0.5446 1 -0.1577 -0.2756
--3.491 -0.5576 0.9917 -0.1577 -0.3233
--3.567 -0.5698 0.9805 -0.1577 -0.3702
--3.636 -0.5809 0.9663 -0.1577 -0.4161
--3.699 -0.5908 0.9493 -0.1577 -0.4611
--3.753 -0.5995 0.9295 -0.1577 -0.5048
--3.799 -0.6069 0.9068 -0.1577 -0.5474
--3.836 -0.6128 0.8813 -0.1577 -0.5885
--3.864 -0.6172 0.853 -0.1577 -0.6282
--3.882 -0.6202 0.822 -0.1577 -0.6663
--3.891 -0.6216 0.7884 -0.1577 -0.7027
--3.89 -0.6215 0.7522 -0.1577 -0.7374
--3.88 -0.6198 0.7135 -0.1577 -0.7702
--3.86 -0.6166 0.6725 -0.1577 -0.8011
--3.83 -0.6119 0.6292 -0.1577 -0.8301
--3.792 -0.6057 0.5838 -0.1577 -0.8569
--3.745 -0.5982 0.5364 -0.1577 -0.8816
--3.69 -0.5894 0.4872 -0.1577 -0.9041
--3.627 -0.5794 0.4363 -0.1577 -0.9243
--3.558 -0.5683 0.3839 -0.1577 -0.9422
--3.482 -0.5562 0.3301 -0.1577 -0.9578
--3.401 -0.5433 0.2753 -0.1577 -0.971
--3.316 -0.5297 0.2194 -0.1577 -0.9817
--3.226 -0.5154 0.1628 -0.1577 -0.99
--3.135 -0.5007 0.1056 -0.1577 -0.9958
--3.041 -0.4858 0.04802 -0.1577 -0.9991
--2.947 -0.4707 -0.009711 -0.1577 -1
--2.852 -0.4556 -0.06741 -0.1577 -0.9983
--2.759 -0.4408 -0.1249 -0.1577 -0.9941
--2.668 -0.4262 -0.1819 -0.1577 -0.9875
--2.58 -0.4122 -0.2383 -0.1577 -0.9784
--2.496 -0.3987 -0.2938 -0.1577 -0.9668
--2.417 -0.3861 -0.3484 -0.1577 -0.9528
--2.343 -0.3743 -0.4017 -0.1577 -0.9365
--2.276 -0.3636 -0.4536 -0.1577 -0.9178
--2.216 -0.354 -0.5039 -0.1577 -0.8968
--2.163 -0.3456 -0.5525 -0.1577 -0.8735
--2.119 -0.3385 -0.5993 -0.1577 -0.8481
--2.084 -0.3329 -0.644 -0.1577 -0.8206
--2.057 -0.3287 -0.6865 -0.1577 -0.791
--2.041 -0.326 -0.7268 -0.1577 -0.7594
--2.033 -0.3248 -0.7646 -0.1577 -0.7259
--2.036 -0.3252 -0.8 -0.1577 -0.6907
--2.048 -0.3271 -0.8327 -0.1577 -0.6536
--2.069 -0.3306 -0.8628 -0.1577 -0.615
--2.1 -0.3355 -0.8901 -0.1577 -0.5748
--2.14 -0.3419 -0.9147 -0.1577 -0.5332
--2.189 -0.3497 -0.9365 -0.1577 -0.4903
--2.246 -0.3588 -0.9554 -0.1577 -0.4461
--2.311 -0.3692 -0.9714 -0.1577 -0.4008
--2.383 -0.3807 -0.9846 -0.1577 -0.3545
--2.461 -0.3931 -0.9949 -0.1577 -0.3073
--2.545 -0.4065 -1.002 -0.1577 -0.2594
--2.633 -0.4206 -1.007 -0.1577 -0.2108
--2.725 -0.4354 -1.009 -0.1577 -0.1617
--2.821 -0.4506 -1.008 -0.1577 -0.1122
--2.918 -0.4661 -1.005 -0.1577 -0.06235
--3.016 -0.4818 -0.9987 -0.1577 -0.01239
--3.114 -0.4975 -0.9902 -0.1577 0.0376
--3.212 -0.5131 -0.9792 -0.1577 0.0875
--3.307 -0.5283 -0.9659 -0.1577 0.1372
--3.4 -0.5431 -0.9504 -0.1577 0.1865
--3.489 -0.5573 -0.9327 -0.1577 0.2354
--3.573 -0.5708 -0.9129 -0.1577 0.2837
--3.651 -0.5833 -0.8911 -0.1577 0.3312
--3.724 -0.5948 -0.8675 -0.1577 0.378
--3.789 -0.6053 -0.8422 -0.1577 0.4238
--3.846 -0.6144 -0.8152 -0.1577 0.4685
--3.896 -0.6223 -0.7866 -0.1577 0.5121
--3.936 -0.6287 -0.7566 -0.1577 0.5544
--3.967 -0.6337 -0.7253 -0.1577 0.5953
--3.988 -0.6371 -0.6927 -0.1577 0.6347
--4 -0.639 -0.659 -0.1577 0.6725
--4.002 -0.6393 -0.6242 -0.1577 0.7087
--3.994 -0.638 -0.5885 -0.1577 0.743
--3.976 -0.6351 -0.5518 -0.1577 0.7756
--3.948 -0.6306 -0.5144 -0.1577 0.8061
--3.91 -0.6247 -0.4762 -0.1577 0.8347
--3.864 -0.6172 -0.4374 -0.1577 0.8612
--3.809 -0.6084 -0.398 -0.1577 0.8855
--3.745 -0.5983 -0.3582 -0.1577 0.9076
--3.674 -0.587 -0.3178 -0.1577 0.9275
--3.596 -0.5745 -0.2771 -0.1577 0.945
--3.512 -0.5611 -0.2361 -0.1577 0.9602
--3.423 -0.5468 -0.1948 -0.1577 0.9729
--3.329 -0.5318 -0.1532 -0.1577 0.9833
--3.232 -0.5163 -0.1115 -0.1577 0.9911
--3.132 -0.5003 -0.06973 -0.1577 0.9965
--3.03 -0.4841 -0.02783 -0.1577 0.9994
--2.935 -0.6207 0 -0.2069 1
--2.833 -0.5991 0.03932 -0.2069 0.9988
--2.732 -0.5777 0.07863 -0.2069 0.995
--2.632 -0.5567 0.1179 -0.2069 0.9888
--2.536 -0.5363 0.1571 -0.2069 0.9801
--2.443 -0.5167 0.1962 -0.2069 0.9689
--2.356 -0.4982 0.2352 -0.2069 0.9553
--2.273 -0.4808 0.274 -0.2069 0.9394
--2.197 -0.4647 0.3127 -0.2069 0.9211
--2.129 -0.4502 0.3511 -0.2069 0.9004
--2.067 -0.4372 0.3893 -0.2069 0.8776
--2.015 -0.4261 0.4272 -0.2069 0.8525
--1.971 -0.4168 0.4646 -0.2069 0.8253
--1.936 -0.4094 0.5017 -0.2069 0.7961
--1.911 -0.4041 0.5382 -0.2069 0.7648
--1.895 -0.4008 0.5742 -0.2069 0.7317
--1.889 -0.3996 0.6095 -0.2069 0.6967
--1.894 -0.4005 0.6441 -0.2069 0.66
--1.908 -0.4034 0.6778 -0.2069 0.6216
--1.932 -0.4085 0.7106 -0.2069 0.5817
--1.965 -0.4155 0.7423 -0.2069 0.5403
--2.007 -0.4244 0.7729 -0.2069 0.4976
--2.058 -0.4352 0.8023 -0.2069 0.4536
--2.117 -0.4476 0.8302 -0.2069 0.4085
--2.183 -0.4617 0.8567 -0.2069 0.3624
--2.256 -0.4771 0.8816 -0.2069 0.3153
--2.335 -0.4939 0.9047 -0.2069 0.2675
--2.42 -0.5118 0.926 -0.2069 0.219
--2.509 -0.5306 0.9453 -0.2069 0.17
--2.601 -0.5501 0.9624 -0.2069 0.1205
--2.696 -0.5702 0.9774 -0.2069 0.07074
--2.793 -0.5906 0.99 -0.2069 0.02079
--2.89 -0.6112 1 -0.2069 -0.0292
--2.987 -0.6317 1.008 -0.2069 -0.07912
--3.083 -0.6519 1.013 -0.2069 -0.1288
--3.176 -0.6717 1.015 -0.2069 -0.1782
--3.267 -0.6908 1.015 -0.2069 -0.2272
--3.353 -0.709 1.011 -0.2069 -0.2756
--3.434 -0.7262 1.005 -0.2069 -0.3233
--3.51 -0.7422 0.9955 -0.2069 -0.3702
--3.579 -0.7569 0.9831 -0.2069 -0.4161
--3.641 -0.77 0.9677 -0.2069 -0.4611
--3.695 -0.7815 0.9492 -0.2069 -0.5048
--3.741 -0.7912 0.9277 -0.2069 -0.5474
--3.779 -0.7991 0.9031 -0.2069 -0.5885
--3.807 -0.8051 0.8755 -0.2069 -0.6282
--3.826 -0.8091 0.845 -0.2069 -0.6663
--3.836 -0.8112 0.8116 -0.2069 -0.7027
--3.836 -0.8112 0.7754 -0.2069 -0.7374
--3.826 -0.8091 0.7365 -0.2069 -0.7702
--3.807 -0.8052 0.695 -0.2069 -0.8011
--3.779 -0.7992 0.651 -0.2069 -0.8301
--3.742 -0.7914 0.6046 -0.2069 -0.8569
--3.697 -0.7818 0.556 -0.2069 -0.8816
--3.644 -0.7705 0.5054 -0.2069 -0.9041
--3.583 -0.7577 0.453 -0.2069 -0.9243
--3.515 -0.7434 0.3988 -0.2069 -0.9422
--3.442 -0.7278 0.3432 -0.2069 -0.9578
--3.363 -0.7112 0.2863 -0.2069 -0.971
--3.28 -0.6935 0.2283 -0.2069 -0.9817
--3.193 -0.6752 0.1694 -0.2069 -0.99
--3.103 -0.6562 0.1099 -0.2069 -0.9958
--3.012 -0.6369 0.05 -0.2069 -0.9991
--2.92 -0.6174 -0.01011 -0.2069 -1
--2.828 -0.598 -0.07018 -0.2069 -0.9983
--2.737 -0.5788 -0.13 -0.2069 -0.9941
--2.648 -0.56 -0.1893 -0.2069 -0.9875
--2.562 -0.5418 -0.2479 -0.2069 -0.9784
--2.48 -0.5245 -0.3056 -0.2069 -0.9668
--2.403 -0.5082 -0.3621 -0.2069 -0.9528
--2.331 -0.4931 -0.4172 -0.2069 -0.9365
--2.266 -0.4792 -0.4708 -0.2069 -0.9178
--2.208 -0.4669 -0.5227 -0.2069 -0.8968
--2.157 -0.4562 -0.5726 -0.2069 -0.8735
--2.115 -0.4472 -0.6204 -0.2069 -0.8481
--2.081 -0.44 -0.666 -0.2069 -0.8206
--2.056 -0.4347 -0.7092 -0.2069 -0.791
--2.04 -0.4314 -0.7499 -0.2069 -0.7594
--2.033 -0.43 -0.7879 -0.2069 -0.7259
--2.037 -0.4307 -0.8232 -0.2069 -0.6907
--2.049 -0.4334 -0.8556 -0.2069 -0.6536
--2.072 -0.4381 -0.8851 -0.2069 -0.615
--2.103 -0.4447 -0.9117 -0.2069 -0.5748
--2.143 -0.4533 -0.9352 -0.2069 -0.5332
--2.192 -0.4636 -0.9557 -0.2069 -0.4903
--2.249 -0.4757 -0.9732 -0.2069 -0.4461
--2.314 -0.4893 -0.9876 -0.2069 -0.4008
--2.385 -0.5044 -0.9989 -0.2069 -0.3545
--2.463 -0.5208 -1.007 -0.2069 -0.3073
--2.546 -0.5384 -1.013 -0.2069 -0.2594
--2.634 -0.5569 -1.015 -0.2069 -0.2108
--2.725 -0.5763 -1.015 -0.2069 -0.1617
--2.819 -0.5962 -1.011 -0.2069 -0.1122
--2.916 -0.6166 -1.006 -0.2069 -0.06235
--3.013 -0.6371 -0.9971 -0.2069 -0.01239
--3.11 -0.6577 -0.9861 -0.2069 0.0376
--3.206 -0.678 -0.9726 -0.2069 0.0875
--3.3 -0.6979 -0.9569 -0.2069 0.1372
--3.392 -0.7173 -0.939 -0.2069 0.1865
--3.479 -0.7358 -0.919 -0.2069 0.2354
--3.562 -0.7533 -0.8971 -0.2069 0.2837
--3.639 -0.7696 -0.8734 -0.2069 0.3312
--3.71 -0.7847 -0.848 -0.2069 0.378
--3.774 -0.7982 -0.821 -0.2069 0.4238
--3.831 -0.8101 -0.7926 -0.2069 0.4685
--3.878 -0.8202 -0.7628 -0.2069 0.5121
--3.918 -0.8285 -0.7318 -0.2069 0.5544
--3.948 -0.8349 -0.6997 -0.2069 0.5953
--3.968 -0.8392 -0.6665 -0.2069 0.6347
--3.979 -0.8415 -0.6325 -0.2069 0.6725
--3.98 -0.8417 -0.5977 -0.2069 0.7087
--3.971 -0.8398 -0.5622 -0.2069 0.743
--3.952 -0.8358 -0.526 -0.2069 0.7756
--3.924 -0.8298 -0.4893 -0.2069 0.8061
--3.886 -0.8217 -0.4521 -0.2069 0.8347
--3.839 -0.8118 -0.4145 -0.2069 0.8612
--3.783 -0.8 -0.3765 -0.2069 0.8855
--3.719 -0.7865 -0.3382 -0.2069 0.9076
--3.648 -0.7715 -0.2997 -0.2069 0.9275
--3.57 -0.7549 -0.261 -0.2069 0.945
--3.486 -0.7371 -0.2221 -0.2069 0.9602
--3.396 -0.7182 -0.1831 -0.2069 0.9729
--3.302 -0.6983 -0.1439 -0.2069 0.9833
--3.205 -0.6777 -0.1047 -0.2069 0.9911
--3.105 -0.6566 -0.06541 -0.2069 0.9965
--3.003 -0.6351 -0.0261 -0.2069 0.9994
--2.9 -0.7666 0 -0.2555 1
--2.798 -0.7397 0.0367 -0.2555 0.9988
--2.697 -0.713 0.0734 -0.2555 0.995
--2.598 -0.6868 0.1101 -0.2555 0.9888
--2.502 -0.6614 0.1468 -0.2555 0.9801
--2.41 -0.637 0.1836 -0.2555 0.9689
--2.322 -0.6138 0.2203 -0.2555 0.9553
--2.24 -0.5921 0.257 -0.2555 0.9394
--2.164 -0.572 0.2937 -0.2555 0.9211
--2.095 -0.5538 0.3304 -0.2555 0.9004
--2.034 -0.5376 0.367 -0.2555 0.8776
--1.981 -0.5236 0.4035 -0.2555 0.8525
--1.936 -0.5118 0.4398 -0.2555 0.8253
--1.901 -0.5025 0.476 -0.2555 0.7961
--1.875 -0.4957 0.5119 -0.2555 0.7648
--1.859 -0.4914 0.5474 -0.2555 0.7317
--1.853 -0.4897 0.5826 -0.2555 0.6967
--1.856 -0.4906 0.6172 -0.2555 0.66
--1.869 -0.494 0.6513 -0.2555 0.6216
--1.892 -0.5 0.6847 -0.2555 0.5817
--1.924 -0.5085 0.7173 -0.2555 0.5403
--1.965 -0.5193 0.749 -0.2555 0.4976
--2.014 -0.5324 0.7796 -0.2555 0.4536
--2.072 -0.5476 0.8091 -0.2555 0.4085
--2.137 -0.5648 0.8372 -0.2555 0.3624
--2.208 -0.5837 0.864 -0.2555 0.3153
--2.286 -0.6043 0.8891 -0.2555 0.2675
--2.369 -0.6262 0.9125 -0.2555 0.219
--2.456 -0.6493 0.9341 -0.2555 0.17
--2.547 -0.6733 0.9536 -0.2555 0.1205
--2.641 -0.698 0.971 -0.2555 0.07074
--2.736 -0.7232 0.9861 -0.2555 0.02079
--2.832 -0.7485 0.9988 -0.2555 -0.0292
--2.927 -0.7738 1.009 -0.2555 -0.07912
--3.022 -0.7987 1.016 -0.2555 -0.1288
--3.114 -0.8231 1.021 -0.2555 -0.1782
--3.203 -0.8467 1.023 -0.2555 -0.2272
--3.289 -0.8692 1.022 -0.2555 -0.2756
--3.369 -0.8905 1.017 -0.2555 -0.3233
--3.444 -0.9103 1.01 -0.2555 -0.3702
--3.513 -0.9285 0.9992 -0.2555 -0.4161
--3.574 -0.9448 0.9854 -0.2555 -0.4611
--3.628 -0.9591 0.9683 -0.2555 -0.5048
--3.675 -0.9712 0.948 -0.2555 -0.5474
--3.712 -0.9812 0.9244 -0.2555 -0.5885
--3.741 -0.9887 0.8975 -0.2555 -0.6282
--3.76 -0.9939 0.8675 -0.2555 -0.6663
--3.77 -0.9966 0.8344 -0.2555 -0.7027
--3.771 -0.9968 0.7982 -0.2555 -0.7374
--3.763 -0.9946 0.759 -0.2555 -0.7702
--3.745 -0.9899 0.717 -0.2555 -0.8011
--3.719 -0.9829 0.6723 -0.2555 -0.8301
--3.683 -0.9735 0.625 -0.2555 -0.8569
--3.64 -0.962 0.5753 -0.2555 -0.8816
--3.588 -0.9484 0.5234 -0.2555 -0.9041
--3.529 -0.9328 0.4694 -0.2555 -0.9243
--3.464 -0.9156 0.4135 -0.2555 -0.9422
--3.393 -0.8967 0.356 -0.2555 -0.9578
--3.316 -0.8765 0.2971 -0.2555 -0.971
--3.235 -0.8551 0.237 -0.2555 -0.9817
--3.151 -0.8328 0.1759 -0.2555 -0.99
--3.064 -0.8098 0.1142 -0.2555 -0.9958
--2.975 -0.7863 0.05194 -0.2555 -0.9991
--2.885 -0.7626 -0.0105 -0.2555 -1
--2.796 -0.739 -0.0729 -0.2555 -0.9983
--2.708 -0.7157 -0.135 -0.2555 -0.9941
--2.621 -0.6929 -0.1966 -0.2555 -0.9875
--2.538 -0.6708 -0.2573 -0.2555 -0.9784
--2.459 -0.6498 -0.3171 -0.2555 -0.9668
--2.384 -0.63 -0.3755 -0.2555 -0.9528
--2.314 -0.6117 -0.4325 -0.2555 -0.9365
--2.251 -0.595 -0.4878 -0.2555 -0.9178
--2.195 -0.5801 -0.5411 -0.2555 -0.8968
--2.146 -0.5671 -0.5923 -0.2555 -0.8735
--2.105 -0.5563 -0.6412 -0.2555 -0.8481
--2.072 -0.5477 -0.6877 -0.2555 -0.8206
--2.049 -0.5415 -0.7315 -0.2555 -0.791
--2.034 -0.5376 -0.7725 -0.2555 -0.7594
--2.029 -0.5362 -0.8107 -0.2555 -0.7259
--2.033 -0.5373 -0.8459 -0.2555 -0.6907
--2.046 -0.5408 -0.878 -0.2555 -0.6536
--2.069 -0.5468 -0.9069 -0.2555 -0.615
--2.1 -0.5552 -0.9327 -0.2555 -0.5748
--2.141 -0.5659 -0.9552 -0.2555 -0.5332
--2.19 -0.5788 -0.9744 -0.2555 -0.4903
--2.246 -0.5937 -0.9904 -0.2555 -0.4461
--2.31 -0.6107 -1.003 -0.2555 -0.4008
--2.381 -0.6294 -1.013 -0.2555 -0.3545
--2.458 -0.6497 -1.019 -0.2555 -0.3073
--2.54 -0.6715 -1.022 -0.2555 -0.2594
--2.627 -0.6944 -1.022 -0.2555 -0.2108
--2.717 -0.7183 -1.02 -0.2555 -0.1617
--2.81 -0.7429 -1.014 -0.2555 -0.1122
--2.905 -0.7679 -1.006 -0.2555 -0.06235
--3.001 -0.7933 -0.9948 -0.2555 -0.01239
--3.097 -0.8186 -0.9813 -0.2555 0.0376
--3.192 -0.8436 -0.9654 -0.2555 0.0875
--3.284 -0.8681 -0.9473 -0.2555 0.1372
--3.374 -0.8918 -0.927 -0.2555 0.1865
--3.46 -0.9146 -0.9049 -0.2555 0.2354
--3.541 -0.9361 -0.8808 -0.2555 0.2837
--3.617 -0.9561 -0.8551 -0.2555 0.3312
--3.687 -0.9745 -0.8279 -0.2555 0.378
--3.749 -0.991 -0.7993 -0.2555 0.4238
--3.804 -1.005 -0.7694 -0.2555 0.4685
--3.851 -1.018 -0.7384 -0.2555 0.5121
--3.889 -1.028 -0.7064 -0.2555 0.5544
--3.918 -1.036 -0.6736 -0.2555 0.5953
--3.937 -1.041 -0.6399 -0.2555 0.6347
--3.947 -1.043 -0.6057 -0.2555 0.6725
--3.947 -1.043 -0.5708 -0.2555 0.7087
--3.937 -1.041 -0.5355 -0.2555 0.743
--3.918 -1.036 -0.4998 -0.2555 0.7756
--3.889 -1.028 -0.4639 -0.2555 0.8061
--3.85 -1.018 -0.4276 -0.2555 0.8347
--3.803 -1.005 -0.3912 -0.2555 0.8612
--3.747 -0.9904 -0.3547 -0.2555 0.8855
--3.683 -0.9735 -0.3181 -0.2555 0.9076
--3.612 -0.9547 -0.2814 -0.2555 0.9275
--3.534 -0.934 -0.2447 -0.2555 0.945
--3.45 -0.9118 -0.208 -0.2555 0.9602
--3.36 -0.8882 -0.1712 -0.2555 0.9729
--3.267 -0.8634 -0.1345 -0.2555 0.9833
--3.169 -0.8377 -0.09777 -0.2555 0.9911
--3.07 -0.8113 -0.06106 -0.2555 0.9965
--2.968 -0.7845 -0.02436 -0.2555 0.9994
--2.858 -0.9106 0 -0.3035 1
--2.757 -0.8784 0.03405 -0.3035 0.9988
--2.657 -0.8464 0.06813 -0.3035 0.995
--2.558 -0.815 0.1023 -0.3035 0.9888
--2.463 -0.7846 0.1365 -0.3035 0.9801
--2.371 -0.7553 0.1708 -0.3035 0.9689
--2.284 -0.7275 0.2053 -0.3035 0.9553
--2.202 -0.7014 0.2399 -0.3035 0.9394
--2.126 -0.6773 0.2746 -0.3035 0.9211
--2.057 -0.6554 0.3095 -0.3035 0.9004
--1.996 -0.6359 0.3445 -0.3035 0.8776
--1.943 -0.6189 0.3796 -0.3035 0.8525
--1.898 -0.6047 0.4148 -0.3035 0.8253
--1.863 -0.5934 0.45 -0.3035 0.7961
--1.836 -0.585 0.4852 -0.3035 0.7648
--1.82 -0.5797 0.5203 -0.3035 0.7317
--1.812 -0.5774 0.5553 -0.3035 0.6967
--1.815 -0.5782 0.5901 -0.3035 0.66
--1.827 -0.582 0.6245 -0.3035 0.6216
--1.848 -0.5889 0.6584 -0.3035 0.5817
--1.879 -0.5987 0.6918 -0.3035 0.5403
--1.919 -0.6113 0.7245 -0.3035 0.4976
--1.967 -0.6266 0.7565 -0.3035 0.4536
--2.023 -0.6444 0.7874 -0.3035 0.4085
--2.086 -0.6646 0.8172 -0.3035 0.3624
--2.156 -0.6869 0.8458 -0.3035 0.3153
--2.232 -0.7111 0.8729 -0.3035 0.2675
--2.313 -0.7369 0.8985 -0.3035 0.219
--2.399 -0.7642 0.9223 -0.3035 0.17
--2.488 -0.7926 0.9442 -0.3035 0.1205
--2.58 -0.8218 0.964 -0.3035 0.07074
--2.673 -0.8515 0.9815 -0.3035 0.02079
--2.767 -0.8815 0.9967 -0.3035 -0.0292
--2.861 -0.9115 1.009 -0.3035 -0.07912
--2.954 -0.941 1.019 -0.3035 -0.1288
--3.045 -0.97 1.026 -0.3035 -0.1782
--3.133 -0.998 1.03 -0.3035 -0.2272
--3.217 -1.025 1.031 -0.3035 -0.2756
--3.296 -1.05 1.029 -0.3035 -0.3233
--3.37 -1.074 1.024 -0.3035 -0.3702
--3.438 -1.095 1.015 -0.3035 -0.4161
--3.499 -1.115 1.003 -0.3035 -0.4611
--3.553 -1.132 0.9868 -0.3035 -0.5048
--3.599 -1.146 0.9677 -0.3035 -0.5474
--3.636 -1.158 0.9451 -0.3035 -0.5885
--3.665 -1.168 0.919 -0.3035 -0.6282
--3.685 -1.174 0.8895 -0.3035 -0.6663
--3.696 -1.177 0.8566 -0.3035 -0.7027
--3.698 -1.178 0.8205 -0.3035 -0.7374
--3.69 -1.176 0.7811 -0.3035 -0.7702
--3.674 -1.17 0.7387 -0.3035 -0.8011
--3.649 -1.162 0.6933 -0.3035 -0.8301
--3.615 -1.152 0.6451 -0.3035 -0.8569
--3.573 -1.138 0.5943 -0.3035 -0.8816
--3.523 -1.122 0.541 -0.3035 -0.9041
--3.467 -1.104 0.4855 -0.3035 -0.9243
--3.404 -1.084 0.428 -0.3035 -0.9422
--3.335 -1.062 0.3686 -0.3035 -0.9578
--3.261 -1.039 0.3078 -0.3035 -0.971
--3.183 -1.014 0.2456 -0.3035 -0.9817
--3.101 -0.9879 0.1824 -0.3035 -0.99
--3.017 -0.961 0.1184 -0.3035 -0.9958
--2.931 -0.9336 0.05385 -0.3035 -0.9991
--2.844 -0.906 -0.01089 -0.3035 -1
--2.757 -0.8784 -0.07558 -0.3035 -0.9983
--2.672 -0.8511 -0.14 -0.3035 -0.9941
--2.588 -0.8245 -0.2037 -0.3035 -0.9875
--2.508 -0.7988 -0.2666 -0.3035 -0.9784
--2.431 -0.7743 -0.3284 -0.3035 -0.9668
--2.358 -0.7513 -0.3888 -0.3035 -0.9528
--2.291 -0.7299 -0.4475 -0.3035 -0.9365
--2.23 -0.7105 -0.5044 -0.3035 -0.9178
--2.176 -0.6932 -0.5592 -0.3035 -0.8968
--2.129 -0.6782 -0.6116 -0.3035 -0.8735
--2.09 -0.6658 -0.6616 -0.3035 -0.8481
--2.059 -0.6559 -0.7088 -0.3035 -0.8206
--2.037 -0.6488 -0.7533 -0.3035 -0.791
--2.023 -0.6446 -0.7947 -0.3035 -0.7594
--2.019 -0.6432 -0.833 -0.3035 -0.7259
--2.024 -0.6447 -0.868 -0.3035 -0.6907
--2.038 -0.6492 -0.8998 -0.3035 -0.6536
--2.061 -0.6565 -0.9281 -0.3035 -0.615
--2.092 -0.6666 -0.9531 -0.3035 -0.5748
--2.133 -0.6795 -0.9745 -0.3035 -0.5332
--2.181 -0.6949 -0.9925 -0.3035 -0.4903
--2.238 -0.7129 -1.007 -0.3035 -0.4461
--2.301 -0.7331 -1.018 -0.3035 -0.4008
--2.371 -0.7554 -1.026 -0.3035 -0.3545
--2.447 -0.7796 -1.03 -0.3035 -0.3073
--2.528 -0.8054 -1.031 -0.3035 -0.2594
--2.613 -0.8326 -1.029 -0.3035 -0.2108
--2.702 -0.8609 -1.024 -0.3035 -0.1617
--2.794 -0.8901 -1.016 -0.3035 -0.1122
--2.887 -0.9198 -1.005 -0.3035 -0.06235
--2.981 -0.9498 -0.9919 -0.3035 -0.01239
--3.075 -0.9798 -0.9759 -0.3035 0.0376
--3.168 -1.009 -0.9576 -0.3035 0.0875
--3.259 -1.038 -0.9371 -0.3035 0.1372
--3.347 -1.066 -0.9145 -0.3035 0.1865
--3.431 -1.093 -0.8901 -0.3035 0.2354
--3.511 -1.119 -0.864 -0.3035 0.2837
--3.585 -1.142 -0.8363 -0.3035 0.3312
--3.653 -1.164 -0.8073 -0.3035 0.378
--3.714 -1.183 -0.7771 -0.3035 0.4238
--3.767 -1.2 -0.7458 -0.3035 0.4685
--3.812 -1.215 -0.7136 -0.3035 0.5121
--3.849 -1.226 -0.6807 -0.3035 0.5544
--3.877 -1.235 -0.6471 -0.3035 0.5953
--3.895 -1.241 -0.6129 -0.3035 0.6347
--3.904 -1.244 -0.5784 -0.3035 0.6725
--3.903 -1.243 -0.5436 -0.3035 0.7087
--3.893 -1.24 -0.5085 -0.3035 0.743
--3.873 -1.234 -0.4734 -0.3035 0.7756
--3.843 -1.224 -0.4382 -0.3035 0.8061
--3.805 -1.212 -0.4029 -0.3035 0.8347
--3.757 -1.197 -0.3678 -0.3035 0.8612
--3.701 -1.179 -0.3327 -0.3035 0.8855
--3.637 -1.159 -0.2977 -0.3035 0.9076
--3.566 -1.136 -0.2629 -0.3035 0.9275
--3.488 -1.111 -0.2282 -0.3035 0.945
--3.405 -1.085 -0.1937 -0.3035 0.9602
--3.316 -1.056 -0.1593 -0.3035 0.9729
--3.222 -1.027 -0.125 -0.3035 0.9833
--3.126 -0.9958 -0.09079 -0.3035 0.9911
--3.027 -0.9642 -0.05667 -0.3035 0.9965
--2.926 -0.9321 -0.0226 -0.3035 0.9994
--2.809 -1.052 0 -0.3508 1
--2.709 -1.015 0.03138 -0.3508 0.9988
--2.61 -0.9775 0.06282 -0.3508 0.995
--2.512 -0.941 0.09437 -0.3508 0.9888
--2.417 -0.9055 0.1261 -0.3508 0.9801
--2.326 -0.8714 0.158 -0.3508 0.9689
--2.24 -0.839 0.1901 -0.3508 0.9553
--2.159 -0.8085 0.2226 -0.3508 0.9394
--2.083 -0.7804 0.2553 -0.3508 0.9211
--2.015 -0.7548 0.2884 -0.3508 0.9004
--1.954 -0.7319 0.3218 -0.3508 0.8776
--1.901 -0.7121 0.3555 -0.3508 0.8525
--1.856 -0.6953 0.3895 -0.3508 0.8253
--1.82 -0.6819 0.4237 -0.3508 0.7961
--1.794 -0.6719 0.4582 -0.3508 0.7648
--1.776 -0.6654 0.4929 -0.3508 0.7317
--1.769 -0.6625 0.5277 -0.3508 0.6967
--1.77 -0.6631 0.5625 -0.3508 0.66
--1.781 -0.6672 0.5972 -0.3508 0.6216
--1.802 -0.6749 0.6317 -0.3508 0.5817
--1.831 -0.6859 0.6659 -0.3508 0.5403
--1.869 -0.7002 0.6997 -0.3508 0.4976
--1.916 -0.7176 0.7328 -0.3508 0.4536
--1.97 -0.7379 0.7652 -0.3508 0.4085
--2.031 -0.7609 0.7967 -0.3508 0.3624
--2.099 -0.7864 0.8271 -0.3508 0.3153
--2.174 -0.8142 0.8562 -0.3508 0.2675
--2.253 -0.8438 0.8839 -0.3508 0.219
--2.336 -0.8751 0.91 -0.3508 0.17
--2.423 -0.9077 0.9342 -0.3508 0.1205
--2.513 -0.9413 0.9564 -0.3508 0.07074
--2.604 -0.9755 0.9764 -0.3508 0.02079
--2.696 -1.01 0.994 -0.3508 -0.0292
--2.788 -1.044 1.009 -0.3508 -0.07912
--2.879 -1.079 1.021 -0.3508 -0.1288
--2.968 -1.112 1.031 -0.3508 -0.1782
--3.055 -1.144 1.037 -0.3508 -0.2272
--3.137 -1.175 1.04 -0.3508 -0.2756
--3.215 -1.204 1.04 -0.3508 -0.3233
--3.288 -1.232 1.037 -0.3508 -0.3702
--3.355 -1.257 1.03 -0.3508 -0.4161
--3.415 -1.279 1.019 -0.3508 -0.4611
--3.468 -1.299 1.005 -0.3508 -0.5048
--3.514 -1.316 0.9868 -0.3508 -0.5474
--3.551 -1.33 0.9652 -0.3508 -0.5885
--3.58 -1.341 0.9399 -0.3508 -0.6282
--3.601 -1.349 0.9109 -0.3508 -0.6663
--3.612 -1.353 0.8783 -0.3508 -0.7027
--3.615 -1.354 0.8422 -0.3508 -0.7374
--3.608 -1.352 0.8027 -0.3508 -0.7702
--3.593 -1.346 0.7598 -0.3508 -0.8011
--3.569 -1.337 0.7138 -0.3508 -0.8301
--3.537 -1.325 0.6647 -0.3508 -0.8569
--3.497 -1.31 0.6128 -0.3508 -0.8816
--3.45 -1.292 0.5583 -0.3508 -0.9041
--3.396 -1.272 0.5013 -0.3508 -0.9243
--3.335 -1.249 0.4421 -0.3508 -0.9422
--3.269 -1.224 0.381 -0.3508 -0.9578
--3.198 -1.198 0.3182 -0.3508 -0.971
--3.122 -1.169 0.254 -0.3508 -0.9817
--3.043 -1.14 0.1887 -0.3508 -0.99
--2.962 -1.11 0.1225 -0.3508 -0.9958
--2.879 -1.078 0.05573 -0.3508 -0.9991
--2.795 -1.047 -0.01127 -0.3508 -1
--2.712 -1.016 -0.07821 -0.3508 -0.9983
--2.629 -0.9849 -0.1448 -0.3508 -0.9941
--2.549 -0.9547 -0.2108 -0.3508 -0.9875
--2.471 -0.9255 -0.2758 -0.3508 -0.9784
--2.397 -0.8978 -0.3395 -0.3508 -0.9668
--2.327 -0.8717 -0.4018 -0.3508 -0.9528
--2.263 -0.8475 -0.4623 -0.3508 -0.9365
--2.204 -0.8256 -0.5207 -0.3508 -0.9178
--2.152 -0.8061 -0.5769 -0.3508 -0.8968
--2.107 -0.7892 -0.6306 -0.3508 -0.8735
--2.07 -0.7753 -0.6815 -0.3508 -0.8481
--2.04 -0.7643 -0.7296 -0.3508 -0.8206
--2.02 -0.7565 -0.7746 -0.3508 -0.791
--2.007 -0.7519 -0.8163 -0.3508 -0.7594
--2.004 -0.7507 -0.8547 -0.3508 -0.7259
--2.01 -0.7528 -0.8897 -0.3508 -0.6907
--2.024 -0.7582 -0.921 -0.3508 -0.6536
--2.047 -0.7669 -0.9488 -0.3508 -0.615
--2.079 -0.7788 -0.9729 -0.3508 -0.5748
--2.119 -0.7938 -0.9932 -0.3508 -0.5332
--2.167 -0.8119 -1.01 -0.3508 -0.4903
--2.223 -0.8327 -1.023 -0.3508 -0.4461
--2.286 -0.8561 -1.032 -0.3508 -0.4008
--2.355 -0.882 -1.038 -0.3508 -0.3545
--2.429 -0.91 -1.041 -0.3508 -0.3073
--2.509 -0.9398 -1.04 -0.3508 -0.2594
--2.593 -0.9712 -1.035 -0.3508 -0.2108
--2.68 -1.004 -1.028 -0.3508 -0.1617
--2.77 -1.038 -1.018 -0.3508 -0.1122
--2.861 -1.072 -1.004 -0.3508 -0.06235
--2.953 -1.106 -0.9883 -0.3508 -0.01239
--3.045 -1.141 -0.9699 -0.3508 0.0376
--3.136 -1.175 -0.9491 -0.3508 0.0875
--3.225 -1.208 -0.9262 -0.3508 0.1372
--3.311 -1.24 -0.9014 -0.3508 0.1865
--3.393 -1.271 -0.8748 -0.3508 0.2354
--3.471 -1.3 -0.8466 -0.3508 0.2837
--3.543 -1.327 -0.817 -0.3508 0.3312
--3.609 -1.352 -0.7862 -0.3508 0.378
--3.668 -1.374 -0.7544 -0.3508 0.4238
--3.72 -1.393 -0.7218 -0.3508 0.4685
--3.763 -1.41 -0.6884 -0.3508 0.5121
--3.799 -1.423 -0.6545 -0.3508 0.5544
--3.825 -1.433 -0.6201 -0.3508 0.5953
--3.842 -1.439 -0.5855 -0.3508 0.6347
--3.85 -1.442 -0.5508 -0.3508 0.6725
--3.849 -1.442 -0.516 -0.3508 0.7087
--3.838 -1.437 -0.4812 -0.3508 0.743
--3.817 -1.43 -0.4466 -0.3508 0.7756
--3.787 -1.419 -0.4122 -0.3508 0.8061
--3.748 -1.404 -0.378 -0.3508 0.8347
--3.701 -1.386 -0.3441 -0.3508 0.8612
--3.645 -1.365 -0.3105 -0.3508 0.8855
--3.582 -1.342 -0.2772 -0.3508 0.9076
--3.511 -1.315 -0.2443 -0.3508 0.9275
--3.434 -1.286 -0.2116 -0.3508 0.945
--3.35 -1.255 -0.1793 -0.3508 0.9602
--3.262 -1.222 -0.1472 -0.3508 0.9729
--3.17 -1.187 -0.1154 -0.3508 0.9833
--3.074 -1.152 -0.08375 -0.3508 0.9911
--2.976 -1.115 -0.05224 -0.3508 0.9965
--2.876 -1.077 -0.02083 -0.3508 0.9994
--2.753 -1.191 0 -0.3971 1
--2.654 -1.149 0.0287 -0.3971 0.9988
--2.556 -1.106 0.05747 -0.3971 0.995
--2.46 -1.064 0.08641 -0.3971 0.9888
--2.366 -1.024 0.1156 -0.3971 0.9801
--2.276 -0.9851 0.145 -0.3971 0.9689
--2.191 -0.9481 0.1749 -0.3971 0.9553
--2.11 -0.9133 0.2051 -0.3971 0.9394
--2.036 -0.8811 0.2359 -0.3971 0.9211
--1.968 -0.8518 0.2671 -0.3971 0.9004
--1.908 -0.8256 0.2988 -0.3971 0.8776
--1.855 -0.8028 0.3311 -0.3971 0.8525
--1.811 -0.7835 0.3639 -0.3971 0.8253
--1.775 -0.768 0.3972 -0.3971 0.7961
--1.748 -0.7563 0.431 -0.3971 0.7648
--1.73 -0.7486 0.4652 -0.3971 0.7317
--1.721 -0.7449 0.4998 -0.3971 0.6967
--1.722 -0.7453 0.5346 -0.3971 0.66
--1.732 -0.7496 0.5696 -0.3971 0.6216
--1.751 -0.7579 0.6046 -0.3971 0.5817
--1.779 -0.7701 0.6396 -0.3971 0.5403
--1.816 -0.7859 0.6744 -0.3971 0.4976
--1.861 -0.8052 0.7087 -0.3971 0.4536
--1.913 -0.8279 0.7426 -0.3971 0.4085
--1.973 -0.8537 0.7757 -0.3971 0.3624
--2.039 -0.8823 0.8079 -0.3971 0.3153
--2.111 -0.9134 0.839 -0.3971 0.2675
--2.188 -0.9467 0.8688 -0.3971 0.219
--2.269 -0.9818 0.897 -0.3971 0.17
--2.354 -1.018 0.9236 -0.3971 0.1205
--2.441 -1.056 0.9482 -0.3971 0.07074
--2.53 -1.095 0.9706 -0.3971 0.02079
--2.62 -1.134 0.9906 -0.3971 -0.0292
--2.71 -1.173 1.008 -0.3971 -0.07912
--2.798 -1.211 1.023 -0.3971 -0.1288
--2.885 -1.249 1.035 -0.3971 -0.1782
--2.97 -1.285 1.043 -0.3971 -0.2272
--3.051 -1.32 1.049 -0.3971 -0.2756
--3.127 -1.353 1.051 -0.3971 -0.3233
--3.198 -1.384 1.049 -0.3971 -0.3702
--3.264 -1.413 1.044 -0.3971 -0.4161
--3.323 -1.438 1.035 -0.3971 -0.4611
--3.376 -1.461 1.022 -0.3971 -0.5048
--3.421 -1.48 1.005 -0.3971 -0.5474
--3.458 -1.496 0.9847 -0.3971 -0.5885
--3.487 -1.509 0.9601 -0.3971 -0.6282
--3.507 -1.518 0.9317 -0.3971 -0.6663
--3.519 -1.523 0.8995 -0.3971 -0.7027
--3.523 -1.524 0.8634 -0.3971 -0.7374
--3.517 -1.522 0.8237 -0.3971 -0.7702
--3.504 -1.516 0.7805 -0.3971 -0.8011
--3.481 -1.507 0.7338 -0.3971 -0.8301
--3.451 -1.494 0.6839 -0.3971 -0.8569
--3.413 -1.477 0.631 -0.3971 -0.8816
--3.368 -1.458 0.5752 -0.3971 -0.9041
--3.316 -1.435 0.5168 -0.3971 -0.9243
--3.258 -1.41 0.456 -0.3971 -0.9422
--3.195 -1.382 0.3932 -0.3971 -0.9578
--3.126 -1.353 0.3285 -0.3971 -0.971
--3.054 -1.322 0.2623 -0.3971 -0.9817
--2.978 -1.289 0.1948 -0.3971 -0.99
--2.9 -1.255 0.1265 -0.3971 -0.9958
--2.82 -1.22 0.05757 -0.3971 -0.9991
--2.74 -1.186 -0.01164 -0.3971 -1
--2.659 -1.151 -0.0808 -0.3971 -0.9983
--2.58 -1.116 -0.1496 -0.3971 -0.9941
--2.503 -1.083 -0.2176 -0.3971 -0.9875
--2.428 -1.051 -0.2847 -0.3971 -0.9784
--2.357 -1.02 -0.3504 -0.3971 -0.9668
--2.29 -0.9909 -0.4145 -0.3971 -0.9528
--2.228 -0.9642 -0.4767 -0.3971 -0.9365
--2.172 -0.9399 -0.5367 -0.3971 -0.9178
--2.122 -0.9184 -0.5943 -0.3971 -0.8968
--2.08 -0.8999 -0.6491 -0.3971 -0.8735
--2.044 -0.8846 -0.7011 -0.3971 -0.8481
--2.017 -0.8727 -0.7499 -0.3971 -0.8206
--1.997 -0.8643 -0.7954 -0.3971 -0.791
--1.986 -0.8595 -0.8375 -0.3971 -0.7594
--1.984 -0.8585 -0.876 -0.3971 -0.7259
--1.99 -0.8612 -0.9107 -0.3971 -0.6907
--2.005 -0.8676 -0.9417 -0.3971 -0.6536
--2.028 -0.8778 -0.9688 -0.3971 -0.615
--2.06 -0.8915 -0.992 -0.3971 -0.5748
--2.1 -0.9087 -1.011 -0.3971 -0.5332
--2.147 -0.9293 -1.027 -0.3971 -0.4903
--2.202 -0.953 -1.038 -0.3971 -0.4461
--2.264 -0.9796 -1.046 -0.3971 -0.4008
--2.331 -1.009 -1.05 -0.3971 -0.3545
--2.405 -1.041 -1.05 -0.3971 -0.3073
--2.483 -1.074 -1.047 -0.3971 -0.2594
--2.565 -1.11 -1.041 -0.3971 -0.2108
--2.65 -1.147 -1.031 -0.3971 -0.1617
--2.738 -1.185 -1.018 -0.3971 -0.1122
--2.827 -1.223 -1.003 -0.3971 -0.06235
--2.917 -1.262 -0.9842 -0.3971 -0.01239
--3.007 -1.301 -0.9633 -0.3971 0.0376
--3.095 -1.339 -0.9401 -0.3971 0.0875
--3.182 -1.377 -0.9149 -0.3971 0.1372
--3.265 -1.413 -0.8877 -0.3971 0.1865
--3.345 -1.448 -0.8589 -0.3971 0.2354
--3.421 -1.48 -0.8287 -0.3971 0.2837
--3.491 -1.511 -0.7972 -0.3971 0.3312
--3.555 -1.538 -0.7647 -0.3971 0.378
--3.612 -1.563 -0.7313 -0.3971 0.4238
--3.662 -1.585 -0.6972 -0.3971 0.4685
--3.704 -1.603 -0.6627 -0.3971 0.5121
--3.737 -1.617 -0.6278 -0.3971 0.5544
--3.763 -1.628 -0.5928 -0.3971 0.5953
--3.779 -1.635 -0.5578 -0.3971 0.6347
--3.786 -1.638 -0.5228 -0.3971 0.6725
--3.783 -1.637 -0.4881 -0.3971 0.7087
--3.772 -1.632 -0.4537 -0.3971 0.743
--3.751 -1.623 -0.4196 -0.3971 0.7756
--3.721 -1.61 -0.386 -0.3971 0.8061
--3.682 -1.593 -0.3528 -0.3971 0.8347
--3.635 -1.573 -0.3202 -0.3971 0.8612
--3.579 -1.549 -0.2881 -0.3971 0.8855
--3.516 -1.522 -0.2565 -0.3971 0.9076
--3.446 -1.491 -0.2255 -0.3971 0.9275
--3.37 -1.458 -0.1949 -0.3971 0.945
--3.287 -1.423 -0.1648 -0.3971 0.9602
--3.2 -1.385 -0.1351 -0.3971 0.9729
--3.109 -1.345 -0.1057 -0.3971 0.9833
--3.015 -1.305 -0.07665 -0.3971 0.9911
--2.918 -1.263 -0.04778 -0.3971 0.9965
--2.819 -1.22 -0.01904 -0.3971 0.9994
--2.69 -1.328 0 -0.4425 1
--2.593 -1.28 0.02599 -0.4425 0.9988
--2.496 -1.232 0.05208 -0.4425 0.995
--2.402 -1.185 0.07839 -0.4425 0.9888
--2.31 -1.14 0.105 -0.4425 0.9801
--2.221 -1.096 0.132 -0.4425 0.9689
--2.137 -1.055 0.1595 -0.4425 0.9553
--2.058 -1.015 0.1876 -0.4425 0.9394
--1.984 -0.9793 0.2162 -0.4425 0.9211
--1.918 -0.9463 0.2456 -0.4425 0.9004
--1.858 -0.9167 0.2757 -0.4425 0.8776
--1.805 -0.8909 0.3065 -0.4425 0.8525
--1.761 -0.8691 0.3381 -0.4425 0.8253
--1.725 -0.8515 0.3704 -0.4425 0.7961
--1.698 -0.8381 0.4035 -0.4425 0.7648
--1.68 -0.8292 0.4372 -0.4425 0.7317
--1.671 -0.8247 0.4715 -0.4425 0.6967
--1.671 -0.8247 0.5063 -0.4425 0.66
--1.68 -0.8291 0.5416 -0.4425 0.6216
--1.698 -0.838 0.5771 -0.4425 0.5817
--1.725 -0.8511 0.6129 -0.4425 0.5403
--1.76 -0.8684 0.6486 -0.4425 0.4976
--1.803 -0.8895 0.6842 -0.4425 0.4536
--1.853 -0.9144 0.7195 -0.4425 0.4085
--1.91 -0.9428 0.7542 -0.4425 0.3624
--1.974 -0.9742 0.7882 -0.4425 0.3153
--2.044 -1.009 0.8212 -0.4425 0.2675
--2.118 -1.045 0.8531 -0.4425 0.219
--2.197 -1.084 0.8836 -0.4425 0.17
--2.279 -1.125 0.9124 -0.4425 0.1205
--2.364 -1.166 0.9393 -0.4425 0.07074
--2.45 -1.209 0.9642 -0.4425 0.02079
--2.538 -1.252 0.9867 -0.4425 -0.0292
--2.625 -1.295 1.007 -0.4425 -0.07912
--2.711 -1.338 1.024 -0.4425 -0.1288
--2.796 -1.38 1.038 -0.4425 -0.1782
--2.878 -1.42 1.049 -0.4425 -0.2272
--2.957 -1.459 1.057 -0.4425 -0.2756
--3.032 -1.496 1.061 -0.4425 -0.3233
--3.102 -1.531 1.061 -0.4425 -0.3702
--3.166 -1.562 1.057 -0.4425 -0.4161
--3.224 -1.591 1.05 -0.4425 -0.4611
--3.276 -1.616 1.039 -0.4425 -0.5048
--3.32 -1.638 1.023 -0.4425 -0.5474
--3.357 -1.656 1.004 -0.4425 -0.5885
--3.385 -1.671 0.9798 -0.4425 -0.6282
--3.406 -1.681 0.952 -0.4425 -0.6663
--3.419 -1.687 0.9201 -0.4425 -0.7027
--3.423 -1.689 0.8841 -0.4425 -0.7374
--3.418 -1.687 0.8443 -0.4425 -0.7702
--3.406 -1.681 0.8007 -0.4425 -0.8011
--3.385 -1.67 0.7534 -0.4425 -0.8301
--3.357 -1.656 0.7027 -0.4425 -0.8569
--3.321 -1.639 0.6488 -0.4425 -0.8816
--3.278 -1.618 0.5918 -0.4425 -0.9041
--3.229 -1.593 0.532 -0.4425 -0.9243
--3.173 -1.566 0.4697 -0.4425 -0.9422
--3.113 -1.536 0.4051 -0.4425 -0.9578
--3.047 -1.504 0.3386 -0.4425 -0.971
--2.978 -1.47 0.2704 -0.4425 -0.9817
--2.906 -1.434 0.2009 -0.4425 -0.99
--2.831 -1.397 0.1305 -0.4425 -0.9958
--2.754 -1.359 0.05937 -0.4425 -0.9991
--2.677 -1.321 -0.01201 -0.4425 -1
--2.6 -1.283 -0.08333 -0.4425 -0.9983
--2.524 -1.246 -0.1542 -0.4425 -0.9941
--2.45 -1.209 -0.2244 -0.4425 -0.9875
--2.379 -1.174 -0.2935 -0.4425 -0.9784
--2.311 -1.14 -0.3611 -0.4425 -0.9668
--2.247 -1.109 -0.427 -0.4425 -0.9528
--2.188 -1.08 -0.4909 -0.4425 -0.9365
--2.135 -1.053 -0.5524 -0.4425 -0.9178
--2.087 -1.03 -0.6113 -0.4425 -0.8968
--2.047 -1.01 -0.6673 -0.4425 -0.8735
--2.013 -0.9935 -0.7202 -0.4425 -0.8481
--1.988 -0.9808 -0.7697 -0.4425 -0.8206
--1.97 -0.972 -0.8158 -0.4425 -0.791
--1.96 -0.9671 -0.8581 -0.4425 -0.7594
--1.958 -0.9664 -0.8967 -0.4425 -0.7259
--1.965 -0.9698 -0.9312 -0.4425 -0.6907
--1.98 -0.9773 -0.9618 -0.4425 -0.6536
--2.004 -0.9889 -0.9883 -0.4425 -0.615
--2.035 -1.004 -1.011 -0.4425 -0.5748
--2.075 -1.024 -1.029 -0.4425 -0.5332
--2.122 -1.047 -1.043 -0.4425 -0.4903
--2.175 -1.073 -1.053 -0.4425 -0.4461
--2.236 -1.103 -1.059 -0.4425 -0.4008
--2.302 -1.136 -1.061 -0.4425 -0.3545
--2.373 -1.171 -1.06 -0.4425 -0.3073
--2.45 -1.209 -1.054 -0.4425 -0.2594
--2.53 -1.248 -1.046 -0.4425 -0.2108
--2.613 -1.289 -1.034 -0.4425 -0.1617
--2.698 -1.331 -1.018 -0.4425 -0.1122
--2.785 -1.374 -1 -0.4425 -0.06235
--2.872 -1.417 -0.9794 -0.4425 -0.01239
--2.96 -1.46 -0.9561 -0.4425 0.0376
--3.045 -1.503 -0.9305 -0.4425 0.0875
--3.129 -1.544 -0.9029 -0.4425 0.1372
--3.21 -1.584 -0.8735 -0.4425 0.1865
--3.288 -1.622 -0.8425 -0.4425 0.2354
--3.361 -1.658 -0.8102 -0.4425 0.2837
--3.428 -1.692 -0.7769 -0.4425 0.3312
--3.49 -1.722 -0.7426 -0.4425 0.378
--3.545 -1.749 -0.7077 -0.4425 0.4238
--3.593 -1.773 -0.6723 -0.4425 0.4685
--3.634 -1.793 -0.6366 -0.4425 0.5121
--3.666 -1.809 -0.6008 -0.4425 0.5544
--3.689 -1.821 -0.5652 -0.4425 0.5953
--3.704 -1.828 -0.5297 -0.4425 0.6347
--3.71 -1.831 -0.4946 -0.4425 0.6725
--3.707 -1.829 -0.4599 -0.4425 0.7087
--3.695 -1.823 -0.4258 -0.4425 0.743
--3.674 -1.813 -0.3923 -0.4425 0.7756
--3.644 -1.798 -0.3595 -0.4425 0.8061
--3.605 -1.779 -0.3274 -0.4425 0.8347
--3.558 -1.756 -0.2961 -0.4425 0.8612
--3.504 -1.729 -0.2655 -0.4425 0.8855
--3.441 -1.698 -0.2357 -0.4425 0.9076
--3.372 -1.664 -0.2065 -0.4425 0.9275
--3.297 -1.627 -0.1781 -0.4425 0.945
--3.216 -1.587 -0.1502 -0.4425 0.9602
--3.13 -1.545 -0.1229 -0.4425 0.9729
--3.04 -1.5 -0.09601 -0.4425 0.9833
--2.947 -1.454 -0.06951 -0.4425 0.9911
--2.852 -1.407 -0.04329 -0.4425 0.9965
--2.755 -1.359 -0.01724 -0.4425 0.9994
--2.621 -1.46 0 -0.4868 1
--2.525 -1.407 0.02327 -0.4868 0.9988
--2.431 -1.355 0.04666 -0.4868 0.995
--2.338 -1.303 0.07032 -0.4868 0.9888
--2.248 -1.253 0.09436 -0.4868 0.9801
--2.161 -1.204 0.1189 -0.4868 0.9689
--2.078 -1.158 0.144 -0.4868 0.9553
--2.001 -1.115 0.1699 -0.4868 0.9394
--1.929 -1.075 0.1965 -0.4868 0.9211
--1.863 -1.038 0.224 -0.4868 0.9004
--1.804 -1.005 0.2524 -0.4868 0.8776
--1.752 -0.9765 0.2818 -0.4868 0.8525
--1.709 -0.9521 0.3121 -0.4868 0.8253
--1.673 -0.9323 0.3434 -0.4868 0.7961
--1.646 -0.9172 0.3757 -0.4868 0.7648
--1.627 -0.907 0.4089 -0.4868 0.7317
--1.618 -0.9016 0.4429 -0.4868 0.6967
--1.617 -0.9012 0.4778 -0.4868 0.66
--1.625 -0.9056 0.5133 -0.4868 0.6216
--1.642 -0.9149 0.5493 -0.4868 0.5817
--1.667 -0.9289 0.5858 -0.4868 0.5403
--1.7 -0.9475 0.6225 -0.4868 0.4976
--1.741 -0.9703 0.6593 -0.4868 0.4536
--1.79 -0.9973 0.6959 -0.4868 0.4085
--1.845 -1.028 0.7322 -0.4868 0.3624
--1.906 -1.062 0.768 -0.4868 0.3153
--1.973 -1.1 0.803 -0.4868 0.2675
--2.045 -1.14 0.8369 -0.4868 0.219
--2.121 -1.182 0.8695 -0.4868 0.17
--2.2 -1.226 0.9006 -0.4868 0.1205
--2.282 -1.272 0.93 -0.4868 0.07074
--2.366 -1.318 0.9572 -0.4868 0.02079
--2.45 -1.366 0.9821 -0.4868 -0.0292
--2.535 -1.413 1.004 -0.4868 -0.07912
--2.619 -1.459 1.024 -0.4868 -0.1288
--2.701 -1.505 1.041 -0.4868 -0.1782
--2.781 -1.55 1.054 -0.4868 -0.2272
--2.857 -1.592 1.064 -0.4868 -0.2756
--2.93 -1.633 1.07 -0.4868 -0.3233
--2.998 -1.671 1.072 -0.4868 -0.3702
--3.061 -1.706 1.07 -0.4868 -0.4161
--3.117 -1.737 1.065 -0.4868 -0.4611
--3.168 -1.765 1.055 -0.4868 -0.5048
--3.211 -1.79 1.04 -0.4868 -0.5474
--3.247 -1.81 1.022 -0.4868 -0.5885
--3.276 -1.826 0.9989 -0.4868 -0.6282
--3.297 -1.837 0.9716 -0.4868 -0.6663
--3.31 -1.844 0.9401 -0.4868 -0.7027
--3.314 -1.847 0.9043 -0.4868 -0.7374
--3.311 -1.845 0.8643 -0.4868 -0.7702
--3.3 -1.839 0.8204 -0.4868 -0.8011
--3.281 -1.828 0.7726 -0.4868 -0.8301
--3.254 -1.813 0.7211 -0.4868 -0.8569
--3.221 -1.795 0.6662 -0.4868 -0.8816
--3.18 -1.772 0.608 -0.4868 -0.9041
--3.133 -1.746 0.5468 -0.4868 -0.9243
--3.081 -1.717 0.483 -0.4868 -0.9422
--3.023 -1.685 0.4167 -0.4868 -0.9578
--2.961 -1.65 0.3484 -0.4868 -0.971
--2.895 -1.613 0.2783 -0.4868 -0.9817
--2.826 -1.575 0.2069 -0.4868 -0.99
--2.754 -1.535 0.1343 -0.4868 -0.9958
--2.682 -1.494 0.06114 -0.4868 -0.9991
--2.608 -1.453 -0.01237 -0.4868 -1
--2.535 -1.413 -0.08581 -0.4868 -0.9983
--2.462 -1.372 -0.1588 -0.4868 -0.9941
--2.392 -1.333 -0.231 -0.4868 -0.9875
--2.324 -1.295 -0.3021 -0.4868 -0.9784
--2.259 -1.259 -0.3716 -0.4868 -0.9668
--2.198 -1.225 -0.4392 -0.4868 -0.9528
--2.142 -1.194 -0.5047 -0.4868 -0.9365
--2.091 -1.166 -0.5677 -0.4868 -0.9178
--2.047 -1.141 -0.6279 -0.4868 -0.8968
--2.008 -1.119 -0.685 -0.4868 -0.8735
--1.977 -1.102 -0.7388 -0.4868 -0.8481
--1.953 -1.088 -0.7891 -0.4868 -0.8206
--1.937 -1.079 -0.8356 -0.4868 -0.791
--1.928 -1.074 -0.8782 -0.4868 -0.7594
--1.927 -1.074 -0.9168 -0.4868 -0.7259
--1.935 -1.078 -0.9512 -0.4868 -0.6907
--1.95 -1.087 -0.9813 -0.4868 -0.6536
--1.974 -1.1 -1.007 -0.4868 -0.615
--2.005 -1.117 -1.029 -0.4868 -0.5748
--2.044 -1.139 -1.046 -0.4868 -0.5332
--2.09 -1.164 -1.058 -0.4868 -0.4903
--2.142 -1.194 -1.067 -0.4868 -0.4461
--2.201 -1.227 -1.071 -0.4868 -0.4008
--2.265 -1.262 -1.072 -0.4868 -0.3545
--2.335 -1.301 -1.068 -0.4868 -0.3073
--2.409 -1.343 -1.061 -0.4868 -0.2594
--2.487 -1.386 -1.05 -0.4868 -0.2108
--2.568 -1.431 -1.035 -0.4868 -0.1617
--2.65 -1.477 -1.018 -0.4868 -0.1122
--2.735 -1.524 -0.9973 -0.4868 -0.06235
--2.819 -1.571 -0.974 -0.4868 -0.01239
--2.904 -1.618 -0.9483 -0.4868 0.0376
--2.987 -1.664 -0.9203 -0.4868 0.0875
--3.068 -1.71 -0.8904 -0.4868 0.1372
--3.146 -1.753 -0.8587 -0.4868 0.1865
--3.221 -1.795 -0.8256 -0.4868 0.2354
--3.291 -1.834 -0.7913 -0.4868 0.2837
--3.356 -1.87 -0.756 -0.4868 0.3312
--3.416 -1.903 -0.7201 -0.4868 0.378
--3.469 -1.933 -0.6836 -0.4868 0.4238
--3.515 -1.959 -0.6469 -0.4868 0.4685
--3.553 -1.98 -0.6101 -0.4868 0.5121
--3.584 -1.997 -0.5735 -0.4868 0.5544
--3.606 -2.009 -0.5371 -0.4868 0.5953
--3.62 -2.017 -0.5013 -0.4868 0.6347
--3.625 -2.02 -0.466 -0.4868 0.6725
--3.621 -2.018 -0.4314 -0.4868 0.7087
--3.608 -2.011 -0.3976 -0.4868 0.743
--3.587 -1.999 -0.3647 -0.4868 0.7756
--3.557 -1.982 -0.3328 -0.4868 0.8061
--3.519 -1.961 -0.3018 -0.4868 0.8347
--3.472 -1.935 -0.2718 -0.4868 0.8612
--3.418 -1.905 -0.2428 -0.4868 0.8855
--3.357 -1.871 -0.2147 -0.4868 0.9076
--3.289 -1.833 -0.1875 -0.4868 0.9275
--3.215 -1.792 -0.1611 -0.4868 0.945
--3.136 -1.747 -0.1355 -0.4868 0.9602
--3.051 -1.7 -0.1106 -0.4868 0.9729
--2.963 -1.651 -0.08622 -0.4868 0.9833
--2.872 -1.601 -0.06233 -0.4868 0.9911
--2.779 -1.549 -0.03877 -0.4868 0.9965
--2.684 -1.496 -0.01543 -0.4868 0.9994
--2.544 -1.59 0 -0.5298 1
--2.451 -1.531 0.02053 -0.5298 0.9988
--2.359 -1.474 0.04122 -0.5298 0.995
--2.268 -1.417 0.06221 -0.5298 0.9888
--2.18 -1.362 0.08366 -0.5298 0.9801
--2.096 -1.309 0.1057 -0.5298 0.9689
--2.015 -1.259 0.1285 -0.5298 0.9553
--1.939 -1.211 0.1521 -0.5298 0.9394
--1.868 -1.167 0.1766 -0.5298 0.9211
--1.804 -1.127 0.2022 -0.5298 0.9004
--1.746 -1.091 0.229 -0.5298 0.8776
--1.696 -1.059 0.2568 -0.5298 0.8525
--1.652 -1.032 0.2859 -0.5298 0.8253
--1.617 -1.01 0.3162 -0.5298 0.7961
--1.59 -0.9935 0.3477 -0.5298 0.7648
--1.572 -0.9819 0.3803 -0.5298 0.7317
--1.562 -0.9757 0.4141 -0.5298 0.6967
--1.56 -0.9747 0.4489 -0.5298 0.66
--1.567 -0.9791 0.4846 -0.5298 0.6216
--1.583 -0.9888 0.5211 -0.5298 0.5817
--1.606 -1.004 0.5583 -0.5298 0.5403
--1.638 -1.023 0.5959 -0.5298 0.4976
--1.677 -1.048 0.6339 -0.5298 0.4536
--1.723 -1.076 0.6719 -0.5298 0.4085
--1.776 -1.109 0.7098 -0.5298 0.3624
--1.835 -1.146 0.7473 -0.5298 0.3153
--1.899 -1.186 0.7842 -0.5298 0.2675
--1.968 -1.229 0.8202 -0.5298 0.219
--2.041 -1.275 0.855 -0.5298 0.17
--2.117 -1.323 0.8883 -0.5298 0.1205
--2.196 -1.372 0.92 -0.5298 0.07074
--2.277 -1.422 0.9496 -0.5298 0.02079
--2.358 -1.473 0.977 -0.5298 -0.0292
--2.44 -1.524 1.002 -0.5298 -0.07912
--2.521 -1.575 1.024 -0.5298 -0.1288
--2.6 -1.624 1.043 -0.5298 -0.1782
--2.677 -1.673 1.058 -0.5298 -0.2272
--2.752 -1.719 1.07 -0.5298 -0.2756
--2.822 -1.763 1.078 -0.5298 -0.3233
--2.888 -1.804 1.083 -0.5298 -0.3702
--2.949 -1.842 1.083 -0.5298 -0.4161
--3.004 -1.877 1.079 -0.5298 -0.4611
--3.053 -1.907 1.07 -0.5298 -0.5048
--3.096 -1.934 1.057 -0.5298 -0.5474
--3.131 -1.956 1.039 -0.5298 -0.5885
--3.159 -1.974 1.017 -0.5298 -0.6282
--3.18 -1.987 0.9907 -0.5298 -0.6663
--3.193 -1.995 0.9595 -0.5298 -0.7027
--3.199 -1.998 0.9238 -0.5298 -0.7374
--3.196 -1.997 0.8838 -0.5298 -0.7702
--3.186 -1.991 0.8396 -0.5298 -0.8011
--3.169 -1.98 0.7912 -0.5298 -0.8301
--3.144 -1.964 0.739 -0.5298 -0.8569
--3.112 -1.944 0.6831 -0.5298 -0.8816
--3.074 -1.921 0.6238 -0.5298 -0.9041
--3.03 -1.893 0.5613 -0.5298 -0.9243
--2.981 -1.862 0.496 -0.5298 -0.9422
--2.926 -1.828 0.4281 -0.5298 -0.9578
--2.867 -1.791 0.358 -0.5298 -0.971
--2.805 -1.752 0.2861 -0.5298 -0.9817
--2.739 -1.711 0.2127 -0.5298 -0.99
--2.671 -1.669 0.1381 -0.5298 -0.9958
--2.602 -1.626 0.06287 -0.5298 -0.9991
--2.533 -1.582 -0.01272 -0.5298 -1
--2.463 -1.539 -0.08823 -0.5298 -0.9983
--2.394 -1.496 -0.1633 -0.5298 -0.9941
--2.327 -1.454 -0.2375 -0.5298 -0.9875
--2.263 -1.414 -0.3105 -0.5298 -0.9784
--2.201 -1.375 -0.3818 -0.5298 -0.9668
--2.144 -1.339 -0.4512 -0.5298 -0.9528
--2.091 -1.306 -0.5183 -0.5298 -0.9365
--2.043 -1.276 -0.5827 -0.5298 -0.9178
--2.001 -1.25 -0.6441 -0.5298 -0.8968
--1.965 -1.227 -0.7023 -0.5298 -0.8735
--1.935 -1.209 -0.757 -0.5298 -0.8481
--1.913 -1.195 -0.8079 -0.5298 -0.8206
--1.898 -1.186 -0.8549 -0.5298 -0.791
--1.891 -1.181 -0.8978 -0.5298 -0.7594
--1.891 -1.181 -0.9363 -0.5298 -0.7259
--1.899 -1.186 -0.9705 -0.5298 -0.6907
--1.915 -1.196 -1 -0.5298 -0.6536
--1.938 -1.211 -1.025 -0.5298 -0.615
--1.969 -1.23 -1.046 -0.5298 -0.5748
--2.007 -1.254 -1.062 -0.5298 -0.5332
--2.051 -1.282 -1.073 -0.5298 -0.4903
--2.103 -1.314 -1.08 -0.5298 -0.4461
--2.16 -1.349 -1.083 -0.5298 -0.4008
--2.222 -1.388 -1.082 -0.5298 -0.3545
--2.29 -1.431 -1.076 -0.5298 -0.3073
--2.362 -1.475 -1.066 -0.5298 -0.2594
--2.437 -1.522 -1.053 -0.5298 -0.2108
--2.515 -1.571 -1.037 -0.5298 -0.1617
--2.595 -1.621 -1.017 -0.5298 -0.1122
--2.676 -1.672 -0.9937 -0.5298 -0.06235
--2.758 -1.723 -0.968 -0.5298 -0.01239
--2.839 -1.774 -0.9399 -0.5298 0.0376
--2.919 -1.824 -0.9095 -0.5298 0.0875
--2.997 -1.873 -0.8773 -0.5298 0.1372
--3.073 -1.92 -0.8434 -0.5298 0.1865
--3.144 -1.964 -0.8082 -0.5298 0.2354
--3.212 -2.007 -0.7719 -0.5298 0.2837
--3.274 -2.046 -0.7347 -0.5298 0.3312
--3.331 -2.081 -0.6971 -0.5298 0.378
--3.382 -2.113 -0.6591 -0.5298 0.4238
--3.426 -2.14 -0.6211 -0.5298 0.4685
--3.462 -2.163 -0.5832 -0.5298 0.5121
--3.491 -2.181 -0.5457 -0.5298 0.5544
--3.512 -2.194 -0.5088 -0.5298 0.5953
--3.525 -2.202 -0.4725 -0.5298 0.6347
--3.529 -2.205 -0.4371 -0.5298 0.6725
--3.524 -2.202 -0.4026 -0.5298 0.7087
--3.512 -2.194 -0.3692 -0.5298 0.743
--3.49 -2.18 -0.337 -0.5298 0.7756
--3.46 -2.162 -0.3059 -0.5298 0.8061
--3.423 -2.138 -0.276 -0.5298 0.8347
--3.377 -2.11 -0.2473 -0.5298 0.8612
--3.324 -2.076 -0.2198 -0.5298 0.8855
--3.264 -2.039 -0.1935 -0.5298 0.9076
--3.197 -1.997 -0.1683 -0.5298 0.9275
--3.125 -1.952 -0.144 -0.5298 0.945
--3.047 -1.904 -0.1207 -0.5298 0.9602
--2.965 -1.852 -0.09821 -0.5298 0.9729
--2.879 -1.799 -0.07638 -0.5298 0.9833
--2.79 -1.743 -0.05511 -0.5298 0.9911
--2.699 -1.686 -0.03423 -0.5298 0.9965
--2.606 -1.628 -0.01362 -0.5298 0.9994
--2.462 -1.715 0 -0.5716 1
--2.371 -1.652 0.01778 -0.5716 0.9988
--2.282 -1.589 0.03574 -0.5716 0.995
--2.194 -1.528 0.05406 -0.5716 0.9888
--2.108 -1.468 0.0729 -0.5716 0.9801
--2.026 -1.411 0.09244 -0.5716 0.9689
--1.947 -1.356 0.1128 -0.5716 0.9553
--1.873 -1.305 0.1342 -0.5716 0.9394
--1.804 -1.257 0.1567 -0.5716 0.9211
--1.742 -1.213 0.1804 -0.5716 0.9004
--1.685 -1.174 0.2054 -0.5716 0.8776
--1.635 -1.139 0.2317 -0.5716 0.8525
--1.593 -1.11 0.2595 -0.5716 0.8253
--1.559 -1.086 0.2888 -0.5716 0.7961
--1.532 -1.067 0.3195 -0.5716 0.7648
--1.513 -1.054 0.3516 -0.5716 0.7317
--1.503 -1.047 0.385 -0.5716 0.6967
--1.501 -1.045 0.4197 -0.5716 0.66
--1.507 -1.05 0.4557 -0.5716 0.6216
--1.521 -1.059 0.4926 -0.5716 0.5817
--1.543 -1.075 0.5305 -0.5716 0.5403
--1.573 -1.095 0.569 -0.5716 0.4976
--1.61 -1.121 0.6081 -0.5716 0.4536
--1.654 -1.152 0.6475 -0.5716 0.4085
--1.704 -1.187 0.6869 -0.5716 0.3624
--1.76 -1.226 0.7262 -0.5716 0.3153
--1.821 -1.269 0.7649 -0.5716 0.2675
--1.887 -1.315 0.8029 -0.5716 0.219
--1.957 -1.363 0.8399 -0.5716 0.17
--2.03 -1.414 0.8755 -0.5716 0.1205
--2.106 -1.467 0.9094 -0.5716 0.07074
--2.183 -1.521 0.9414 -0.5716 0.02079
--2.262 -1.575 0.9712 -0.5716 -0.0292
--2.34 -1.63 0.9983 -0.5716 -0.07912
--2.418 -1.684 1.023 -0.5716 -0.1288
--2.494 -1.738 1.044 -0.5716 -0.1782
--2.569 -1.789 1.062 -0.5716 -0.2272
--2.64 -1.839 1.076 -0.5716 -0.2756
--2.708 -1.886 1.086 -0.5716 -0.3233
--2.772 -1.931 1.092 -0.5716 -0.3702
--2.831 -1.972 1.094 -0.5716 -0.4161
--2.884 -2.009 1.092 -0.5716 -0.4611
--2.932 -2.042 1.085 -0.5716 -0.5048
--2.973 -2.071 1.073 -0.5716 -0.5474
--3.008 -2.095 1.056 -0.5716 -0.5885
--3.036 -2.115 1.035 -0.5716 -0.6282
--3.056 -2.129 1.009 -0.5716 -0.6663
--3.07 -2.138 0.9783 -0.5716 -0.7027
--3.076 -2.142 0.9428 -0.5716 -0.7374
--3.074 -2.141 0.9028 -0.5716 -0.7702
--3.065 -2.135 0.8582 -0.5716 -0.8011
--3.049 -2.124 0.8094 -0.5716 -0.8301
--3.027 -2.108 0.7565 -0.5716 -0.8569
--2.997 -2.088 0.6996 -0.5716 -0.8816
--2.962 -2.063 0.6392 -0.5716 -0.9041
--2.92 -2.034 0.5755 -0.5716 -0.9243
--2.874 -2.002 0.5087 -0.5716 -0.9422
--2.822 -1.966 0.4392 -0.5716 -0.9578
--2.767 -1.927 0.3674 -0.5716 -0.971
--2.708 -1.886 0.2937 -0.5716 -0.9817
--2.646 -1.843 0.2183 -0.5716 -0.99
--2.582 -1.798 0.1418 -0.5716 -0.9958
--2.517 -1.753 0.06456 -0.5716 -0.9991
--2.451 -1.707 -0.01306 -0.5716 -1
--2.385 -1.661 -0.0906 -0.5716 -0.9983
--2.32 -1.616 -0.1677 -0.5716 -0.9941
--2.257 -1.572 -0.2438 -0.5716 -0.9875
--2.196 -1.529 -0.3187 -0.5716 -0.9784
--2.138 -1.489 -0.3918 -0.5716 -0.9668
--2.083 -1.451 -0.4629 -0.5716 -0.9528
--2.034 -1.416 -0.5315 -0.5716 -0.9365
--1.989 -1.385 -0.5973 -0.5716 -0.9178
--1.949 -1.358 -0.6599 -0.5716 -0.8968
--1.916 -1.334 -0.7192 -0.5716 -0.8735
--1.888 -1.315 -0.7747 -0.5716 -0.8481
--1.868 -1.301 -0.8263 -0.5716 -0.8206
--1.854 -1.292 -0.8737 -0.5716 -0.791
--1.848 -1.287 -0.9167 -0.5716 -0.7594
--1.849 -1.288 -0.9553 -0.5716 -0.7259
--1.857 -1.294 -0.9892 -0.5716 -0.6907
--1.873 -1.305 -1.018 -0.5716 -0.6536
--1.896 -1.321 -1.043 -0.5716 -0.615
--1.926 -1.342 -1.062 -0.5716 -0.5748
--1.963 -1.368 -1.077 -0.5716 -0.5332
--2.007 -1.398 -1.088 -0.5716 -0.4903
--2.057 -1.432 -1.093 -0.5716 -0.4461
--2.112 -1.471 -1.094 -0.5716 -0.4008
--2.172 -1.513 -1.091 -0.5716 -0.3545
--2.238 -1.559 -1.083 -0.5716 -0.3073
--2.307 -1.607 -1.072 -0.5716 -0.2594
--2.379 -1.657 -1.056 -0.5716 -0.2108
--2.454 -1.71 -1.037 -0.5716 -0.1617
--2.531 -1.763 -1.015 -0.5716 -0.1122
--2.61 -1.818 -0.9895 -0.5716 -0.06235
--2.688 -1.872 -0.9614 -0.5716 -0.01239
--2.766 -1.927 -0.9309 -0.5716 0.0376
--2.843 -1.98 -0.8982 -0.5716 0.0875
--2.918 -2.032 -0.8637 -0.5716 0.1372
--2.99 -2.083 -0.8276 -0.5716 0.1865
--3.059 -2.131 -0.7902 -0.5716 0.2354
--3.123 -2.176 -0.7519 -0.5716 0.2837
--3.183 -2.217 -0.713 -0.5716 0.3312
--3.237 -2.255 -0.6737 -0.5716 0.378
--3.285 -2.288 -0.6342 -0.5716 0.4238
--3.327 -2.317 -0.5949 -0.5716 0.4685
--3.361 -2.341 -0.556 -0.5716 0.5121
--3.389 -2.36 -0.5177 -0.5716 0.5544
--3.408 -2.374 -0.4801 -0.5716 0.5953
--3.42 -2.382 -0.4435 -0.5716 0.6347
--3.423 -2.384 -0.4079 -0.5716 0.6725
--3.418 -2.381 -0.3736 -0.5716 0.7087
--3.405 -2.372 -0.3406 -0.5716 0.743
--3.383 -2.357 -0.309 -0.5716 0.7756
--3.354 -2.336 -0.2788 -0.5716 0.8061
--3.317 -2.31 -0.25 -0.5716 0.8347
--3.272 -2.279 -0.2227 -0.5716 0.8612
--3.22 -2.243 -0.1968 -0.5716 0.8855
--3.161 -2.202 -0.1723 -0.5716 0.9076
--3.097 -2.157 -0.149 -0.5716 0.9275
--3.026 -2.108 -0.1269 -0.5716 0.945
--2.95 -2.055 -0.1059 -0.5716 0.9602
--2.87 -1.999 -0.08578 -0.5716 0.9729
--2.787 -1.941 -0.0665 -0.5716 0.9833
--2.7 -1.881 -0.04785 -0.5716 0.9911
--2.612 -1.819 -0.02967 -0.5716 0.9965
--2.522 -1.757 -0.01179 -0.5716 0.9994
--2.373 -1.836 0 -0.6119 1
--2.285 -1.768 0.01502 -0.6119 0.9988
--2.199 -1.701 0.03024 -0.6119 0.995
--2.113 -1.635 0.04587 -0.6119 0.9888
--2.031 -1.571 0.06211 -0.6119 0.9801
--1.951 -1.509 0.07913 -0.6119 0.9689
--1.875 -1.45 0.09711 -0.6119 0.9553
--1.803 -1.395 0.1162 -0.6119 0.9394
--1.736 -1.343 0.1366 -0.6119 0.9211
--1.675 -1.296 0.1584 -0.6119 0.9004
--1.62 -1.254 0.1816 -0.6119 0.8776
--1.572 -1.216 0.2065 -0.6119 0.8525
--1.531 -1.184 0.233 -0.6119 0.8253
--1.497 -1.158 0.2612 -0.6119 0.7961
--1.471 -1.138 0.291 -0.6119 0.7648
--1.452 -1.123 0.3226 -0.6119 0.7317
--1.441 -1.115 0.3557 -0.6119 0.6967
--1.439 -1.113 0.3903 -0.6119 0.66
--1.444 -1.117 0.4264 -0.6119 0.6216
--1.457 -1.127 0.4638 -0.6119 0.5817
--1.477 -1.143 0.5023 -0.6119 0.5403
--1.505 -1.164 0.5418 -0.6119 0.4976
--1.54 -1.191 0.582 -0.6119 0.4536
--1.581 -1.223 0.6227 -0.6119 0.4085
--1.629 -1.26 0.6636 -0.6119 0.3624
--1.682 -1.301 0.7045 -0.6119 0.3153
--1.741 -1.346 0.7452 -0.6119 0.2675
--1.804 -1.395 0.7852 -0.6119 0.219
--1.87 -1.447 0.8242 -0.6119 0.17
--1.94 -1.501 0.8621 -0.6119 0.1205
--2.012 -1.557 0.8983 -0.6119 0.07074
--2.086 -1.614 0.9327 -0.6119 0.02079
--2.161 -1.672 0.9648 -0.6119 -0.0292
--2.236 -1.73 0.9943 -0.6119 -0.07912
--2.311 -1.787 1.021 -0.6119 -0.1288
--2.384 -1.844 1.045 -0.6119 -0.1782
--2.455 -1.899 1.065 -0.6119 -0.2272
--2.524 -1.952 1.081 -0.6119 -0.2756
--2.589 -2.003 1.093 -0.6119 -0.3233
--2.65 -2.05 1.101 -0.6119 -0.3702
--2.707 -2.094 1.105 -0.6119 -0.4161
--2.758 -2.134 1.104 -0.6119 -0.4611
--2.805 -2.169 1.099 -0.6119 -0.5048
--2.845 -2.2 1.088 -0.6119 -0.5474
--2.878 -2.227 1.073 -0.6119 -0.5885
--2.906 -2.248 1.052 -0.6119 -0.6282
--2.926 -2.263 1.027 -0.6119 -0.6663
--2.939 -2.274 0.9965 -0.6119 -0.7027
--2.946 -2.279 0.9612 -0.6119 -0.7374
--2.945 -2.278 0.9211 -0.6119 -0.7702
--2.938 -2.272 0.8763 -0.6119 -0.8011
--2.923 -2.261 0.827 -0.6119 -0.8301
--2.902 -2.245 0.7734 -0.6119 -0.8569
--2.875 -2.224 0.7157 -0.6119 -0.8816
--2.842 -2.198 0.6543 -0.6119 -0.9041
--2.803 -2.169 0.5893 -0.6119 -0.9243
--2.76 -2.135 0.5211 -0.6119 -0.9422
--2.712 -2.098 0.4501 -0.6119 -0.9578
--2.659 -2.057 0.3766 -0.6119 -0.971
--2.604 -2.014 0.3011 -0.6119 -0.9817
--2.546 -1.969 0.2239 -0.6119 -0.99
--2.486 -1.923 0.1454 -0.6119 -0.9958
--2.424 -1.875 0.06621 -0.6119 -0.9991
--2.362 -1.828 -0.01339 -0.6119 -1
--2.301 -1.78 -0.09292 -0.6119 -0.9983
--2.24 -1.732 -0.1719 -0.6119 -0.9941
--2.18 -1.686 -0.25 -0.6119 -0.9875
--2.123 -1.642 -0.3267 -0.6119 -0.9784
--2.068 -1.6 -0.4016 -0.6119 -0.9668
--2.018 -1.561 -0.4742 -0.6119 -0.9528
--1.971 -1.525 -0.5443 -0.6119 -0.9365
--1.929 -1.492 -0.6115 -0.6119 -0.9178
--1.892 -1.464 -0.6753 -0.6119 -0.8968
--1.861 -1.439 -0.7356 -0.6119 -0.8735
--1.836 -1.42 -0.7919 -0.6119 -0.8481
--1.817 -1.406 -0.8441 -0.6119 -0.8206
--1.805 -1.396 -0.8919 -0.6119 -0.791
--1.8 -1.392 -0.9352 -0.6119 -0.7594
--1.801 -1.393 -0.9737 -0.6119 -0.7259
--1.81 -1.4 -1.007 -0.6119 -0.6907
--1.826 -1.412 -1.036 -0.6119 -0.6536
--1.849 -1.43 -1.06 -0.6119 -0.615
--1.878 -1.453 -1.078 -0.6119 -0.5748
--1.914 -1.481 -1.092 -0.6119 -0.5332
--1.956 -1.513 -1.101 -0.6119 -0.4903
--2.004 -1.55 -1.105 -0.6119 -0.4461
--2.057 -1.592 -1.104 -0.6119 -0.4008
--2.116 -1.637 -1.099 -0.6119 -0.3545
--2.178 -1.685 -1.09 -0.6119 -0.3073
--2.245 -1.737 -1.076 -0.6119 -0.2594
--2.314 -1.79 -1.058 -0.6119 -0.2108
--2.386 -1.846 -1.037 -0.6119 -0.1617
--2.46 -1.903 -1.012 -0.6119 -0.1122
--2.535 -1.961 -0.9847 -0.6119 -0.06235
--2.61 -2.019 -0.9542 -0.6119 -0.01239
--2.685 -2.077 -0.9213 -0.6119 0.0376
--2.758 -2.134 -0.8863 -0.6119 0.0875
--2.83 -2.189 -0.8495 -0.6119 0.1372
--2.898 -2.242 -0.8112 -0.6119 0.1865
--2.964 -2.293 -0.7718 -0.6119 0.2354
--3.025 -2.34 -0.7316 -0.6119 0.2837
--3.082 -2.384 -0.6908 -0.6119 0.3312
--3.133 -2.424 -0.6498 -0.6119 0.378
--3.179 -2.459 -0.6089 -0.6119 0.4238
--3.218 -2.49 -0.5684 -0.6119 0.4685
--3.251 -2.515 -0.5284 -0.6119 0.5121
--3.276 -2.534 -0.4893 -0.6119 0.5544
--3.294 -2.548 -0.4511 -0.6119 0.5953
--3.305 -2.556 -0.4141 -0.6119 0.6347
--3.307 -2.558 -0.3785 -0.6119 0.6725
--3.302 -2.554 -0.3444 -0.6119 0.7087
--3.288 -2.544 -0.3118 -0.6119 0.743
--3.267 -2.527 -0.2808 -0.6119 0.7756
--3.238 -2.505 -0.2515 -0.6119 0.8061
--3.202 -2.477 -0.2239 -0.6119 0.8347
--3.158 -2.443 -0.198 -0.6119 0.8612
--3.108 -2.404 -0.1736 -0.6119 0.8855
--3.051 -2.36 -0.1509 -0.6119 0.9076
--2.988 -2.311 -0.1296 -0.6119 0.9275
--2.919 -2.258 -0.1097 -0.6119 0.945
--2.846 -2.202 -0.09094 -0.6119 0.9602
--2.769 -2.142 -0.0733 -0.6119 0.9729
--2.688 -2.079 -0.05657 -0.6119 0.9833
--2.604 -2.014 -0.04056 -0.6119 0.9911
--2.518 -1.948 -0.02509 -0.6119 0.9965
--2.431 -1.881 -0.009956 -0.6119 0.9994
--2.278 -1.952 0 -0.6506 1
--2.194 -1.88 0.01225 -0.6506 0.9988
--2.11 -1.808 0.02473 -0.6506 0.995
--2.028 -1.738 0.03766 -0.6506 0.9888
--1.949 -1.669 0.05127 -0.6506 0.9801
--1.872 -1.603 0.06576 -0.6506 0.9689
--1.798 -1.541 0.08133 -0.6506 0.9553
--1.729 -1.481 0.09817 -0.6506 0.9394
--1.665 -1.426 0.1164 -0.6506 0.9211
--1.606 -1.376 0.1363 -0.6506 0.9004
--1.553 -1.33 0.1578 -0.6506 0.8776
--1.506 -1.29 0.1811 -0.6506 0.8525
--1.466 -1.256 0.2063 -0.6506 0.8253
--1.432 -1.227 0.2334 -0.6506 0.7961
--1.407 -1.205 0.2624 -0.6506 0.7648
--1.388 -1.189 0.2933 -0.6506 0.7317
--1.377 -1.18 0.3261 -0.6506 0.6967
--1.374 -1.177 0.3607 -0.6506 0.66
--1.378 -1.181 0.3969 -0.6506 0.6216
--1.39 -1.191 0.4347 -0.6506 0.5817
--1.409 -1.207 0.4739 -0.6506 0.5403
--1.435 -1.229 0.5142 -0.6506 0.4976
--1.468 -1.257 0.5555 -0.6506 0.4536
--1.507 -1.291 0.5975 -0.6506 0.4085
--1.552 -1.329 0.6399 -0.6506 0.3624
--1.602 -1.373 0.6825 -0.6506 0.3153
--1.657 -1.42 0.7249 -0.6506 0.2675
--1.717 -1.471 0.7669 -0.6506 0.219
--1.78 -1.525 0.8081 -0.6506 0.17
--1.846 -1.582 0.8481 -0.6506 0.1205
--1.915 -1.641 0.8866 -0.6506 0.07074
--1.985 -1.701 0.9233 -0.6506 0.02079
--2.056 -1.762 0.9578 -0.6506 -0.0292
--2.128 -1.823 0.9897 -0.6506 -0.07912
--2.199 -1.884 1.019 -0.6506 -0.1288
--2.269 -1.944 1.045 -0.6506 -0.1782
--2.337 -2.002 1.067 -0.6506 -0.2272
--2.402 -2.058 1.085 -0.6506 -0.2756
--2.465 -2.112 1.1 -0.6506 -0.3233
--2.523 -2.162 1.11 -0.6506 -0.3702
--2.578 -2.209 1.115 -0.6506 -0.4161
--2.627 -2.251 1.116 -0.6506 -0.4611
--2.672 -2.289 1.112 -0.6506 -0.5048
--2.71 -2.322 1.103 -0.6506 -0.5474
--2.743 -2.35 1.088 -0.6506 -0.5885
--2.77 -2.373 1.069 -0.6506 -0.6282
--2.79 -2.39 1.044 -0.6506 -0.6663
--2.803 -2.402 1.014 -0.6506 -0.7027
--2.81 -2.407 0.979 -0.6506 -0.7374
--2.81 -2.407 0.9389 -0.6506 -0.7702
--2.804 -2.402 0.8939 -0.6506 -0.8011
--2.791 -2.391 0.8442 -0.6506 -0.8301
--2.772 -2.375 0.7899 -0.6506 -0.8569
--2.747 -2.353 0.7314 -0.6506 -0.8816
--2.716 -2.327 0.6689 -0.6506 -0.9041
--2.68 -2.296 0.6027 -0.6506 -0.9243
--2.64 -2.262 0.5331 -0.6506 -0.9422
--2.595 -2.223 0.4606 -0.6506 -0.9578
--2.546 -2.181 0.3855 -0.6506 -0.971
--2.494 -2.137 0.3083 -0.6506 -0.9817
--2.44 -2.091 0.2293 -0.6506 -0.99
--2.384 -2.042 0.149 -0.6506 -0.9958
--2.326 -1.993 0.06782 -0.6506 -0.9991
--2.268 -1.944 -0.01372 -0.6506 -1
--2.211 -1.894 -0.09517 -0.6506 -0.9983
--2.153 -1.845 -0.1761 -0.6506 -0.9941
--2.098 -1.797 -0.256 -0.6506 -0.9875
--2.044 -1.752 -0.3345 -0.6506 -0.9784
--1.994 -1.708 -0.4111 -0.6506 -0.9668
--1.946 -1.667 -0.4853 -0.6506 -0.9528
--1.903 -1.63 -0.5569 -0.6506 -0.9365
--1.864 -1.597 -0.6253 -0.6506 -0.9178
--1.829 -1.567 -0.6903 -0.6506 -0.8968
--1.801 -1.543 -0.7515 -0.6506 -0.8735
--1.778 -1.523 -0.8087 -0.6506 -0.8481
--1.761 -1.508 -0.8614 -0.6506 -0.8206
--1.75 -1.499 -0.9096 -0.6506 -0.791
--1.746 -1.496 -0.953 -0.6506 -0.7594
--1.748 -1.498 -0.9914 -0.6506 -0.7259
--1.757 -1.505 -1.025 -0.6506 -0.6907
--1.773 -1.519 -1.053 -0.6506 -0.6536
--1.795 -1.538 -1.076 -0.6506 -0.615
--1.824 -1.562 -1.094 -0.6506 -0.5748
--1.858 -1.592 -1.106 -0.6506 -0.5332
--1.899 -1.627 -1.114 -0.6506 -0.4903
--1.945 -1.667 -1.116 -0.6506 -0.4461
--1.996 -1.71 -1.114 -0.6506 -0.4008
--2.052 -1.758 -1.107 -0.6506 -0.3545
--2.112 -1.81 -1.095 -0.6506 -0.3073
--2.176 -1.864 -1.08 -0.6506 -0.2594
--2.242 -1.921 -1.06 -0.6506 -0.2108
--2.311 -1.98 -1.036 -0.6506 -0.1617
--2.381 -2.04 -1.009 -0.6506 -0.1122
--2.452 -2.101 -0.9793 -0.6506 -0.06235
--2.524 -2.162 -0.9464 -0.6506 -0.01239
--2.595 -2.223 -0.9112 -0.6506 0.0376
--2.665 -2.283 -0.8739 -0.6506 0.0875
--2.733 -2.341 -0.8348 -0.6506 0.1372
--2.798 -2.397 -0.7944 -0.6506 0.1865
--2.86 -2.45 -0.7529 -0.6506 0.2354
--2.918 -2.5 -0.7107 -0.6506 0.2837
--2.972 -2.546 -0.6682 -0.6506 0.3312
--3.021 -2.588 -0.6256 -0.6506 0.378
--3.064 -2.625 -0.5833 -0.6506 0.4238
--3.101 -2.656 -0.5415 -0.6506 0.4685
--3.131 -2.683 -0.5005 -0.6506 0.5121
--3.155 -2.703 -0.4605 -0.6506 0.5544
--3.171 -2.717 -0.4218 -0.6506 0.5953
--3.18 -2.725 -0.3846 -0.6506 0.6347
--3.182 -2.726 -0.3489 -0.6506 0.6725
--3.176 -2.721 -0.3149 -0.6506 0.7087
--3.163 -2.71 -0.2827 -0.6506 0.743
--3.142 -2.692 -0.2525 -0.6506 0.7756
--3.114 -2.668 -0.2241 -0.6506 0.8061
--3.078 -2.637 -0.1976 -0.6506 0.8347
--3.036 -2.601 -0.1731 -0.6506 0.8612
--2.987 -2.559 -0.1504 -0.6506 0.8855
--2.931 -2.512 -0.1294 -0.6506 0.9076
--2.871 -2.459 -0.1101 -0.6506 0.9275
--2.805 -2.403 -0.09236 -0.6506 0.945
--2.734 -2.342 -0.07596 -0.6506 0.9602
--2.659 -2.278 -0.06078 -0.6506 0.9729
--2.581 -2.212 -0.0466 -0.6506 0.9833
--2.501 -2.142 -0.03325 -0.6506 0.9911
--2.418 -2.072 -0.02049 -0.6506 0.9965
--2.334 -2 -0.008116 -0.6506 0.9994
--2.178 -2.063 0 -0.6878 1
--2.097 -1.987 0.009472 -0.6878 0.9988
--2.017 -1.911 0.0192 -0.6878 0.995
--1.938 -1.836 0.02943 -0.6878 0.9888
--1.862 -1.764 0.0404 -0.6878 0.9801
--1.788 -1.694 0.05235 -0.6878 0.9689
--1.718 -1.627 0.06551 -0.6878 0.9553
--1.651 -1.564 0.08006 -0.6878 0.9394
--1.589 -1.506 0.0962 -0.6878 0.9211
--1.533 -1.452 0.1141 -0.6878 0.9004
--1.482 -1.404 0.1339 -0.6878 0.8776
--1.436 -1.361 0.1556 -0.6878 0.8525
--1.398 -1.324 0.1795 -0.6878 0.8253
--1.365 -1.294 0.2055 -0.6878 0.7961
--1.34 -1.27 0.2337 -0.6878 0.7648
--1.322 -1.252 0.264 -0.6878 0.7317
--1.311 -1.242 0.2964 -0.6878 0.6967
--1.307 -1.238 0.3308 -0.6878 0.66
--1.311 -1.242 0.3672 -0.6878 0.6216
--1.321 -1.252 0.4053 -0.6878 0.5817
--1.338 -1.268 0.4451 -0.6878 0.5403
--1.363 -1.291 0.4863 -0.6878 0.4976
--1.393 -1.32 0.5286 -0.6878 0.4536
--1.43 -1.354 0.5719 -0.6878 0.4085
--1.472 -1.394 0.6158 -0.6878 0.3624
--1.519 -1.439 0.66 -0.6878 0.3153
--1.571 -1.489 0.7043 -0.6878 0.2675
--1.627 -1.542 0.7482 -0.6878 0.219
--1.687 -1.598 0.7914 -0.6878 0.17
--1.75 -1.658 0.8336 -0.6878 0.1205
--1.815 -1.719 0.8744 -0.6878 0.07074
--1.881 -1.782 0.9134 -0.6878 0.02079
--1.949 -1.846 0.9502 -0.6878 -0.0292
--2.016 -1.91 0.9844 -0.6878 -0.07912
--2.084 -1.974 1.016 -0.6878 -0.1288
--2.15 -2.037 1.044 -0.6878 -0.1782
--2.215 -2.098 1.068 -0.6878 -0.2272
--2.277 -2.157 1.089 -0.6878 -0.2756
--2.336 -2.213 1.106 -0.6878 -0.3233
--2.392 -2.266 1.118 -0.6878 -0.3702
--2.444 -2.315 1.125 -0.6878 -0.4161
--2.491 -2.36 1.127 -0.6878 -0.4611
--2.534 -2.4 1.125 -0.6878 -0.5048
--2.571 -2.436 1.117 -0.6878 -0.5474
--2.602 -2.465 1.103 -0.6878 -0.5885
--2.628 -2.49 1.085 -0.6878 -0.6282
--2.648 -2.508 1.061 -0.6878 -0.6663
--2.661 -2.521 1.031 -0.6878 -0.7027
--2.668 -2.528 0.9962 -0.6878 -0.7374
--2.669 -2.529 0.9561 -0.6878 -0.7702
--2.664 -2.524 0.9109 -0.6878 -0.8011
--2.652 -2.513 0.8608 -0.6878 -0.8301
--2.635 -2.496 0.8059 -0.6878 -0.8569
--2.612 -2.475 0.7466 -0.6878 -0.8816
--2.584 -2.448 0.6831 -0.6878 -0.9041
--2.551 -2.417 0.6157 -0.6878 -0.9243
--2.513 -2.381 0.5449 -0.6878 -0.9422
--2.472 -2.342 0.4709 -0.6878 -0.9578
--2.427 -2.299 0.3942 -0.6878 -0.971
--2.379 -2.254 0.3153 -0.6878 -0.9817
--2.328 -2.206 0.2345 -0.6878 -0.99
--2.276 -2.156 0.1524 -0.6878 -0.9958
--2.223 -2.106 0.06938 -0.6878 -0.9991
--2.169 -2.055 -0.01403 -0.6878 -1
--2.115 -2.004 -0.09737 -0.6878 -0.9983
--2.062 -1.953 -0.1801 -0.6878 -0.9941
--2.01 -1.904 -0.2619 -0.6878 -0.9875
--1.96 -1.857 -0.3421 -0.6878 -0.9784
--1.913 -1.813 -0.4203 -0.6878 -0.9668
--1.869 -1.771 -0.4961 -0.6878 -0.9528
--1.829 -1.733 -0.5691 -0.6878 -0.9365
--1.793 -1.699 -0.6388 -0.6878 -0.9178
--1.761 -1.669 -0.7049 -0.6878 -0.8968
--1.735 -1.644 -0.767 -0.6878 -0.8735
--1.714 -1.624 -0.8249 -0.6878 -0.8481
--1.699 -1.61 -0.8782 -0.6878 -0.8206
--1.689 -1.601 -0.9267 -0.6878 -0.791
--1.686 -1.598 -0.9702 -0.6878 -0.7594
--1.689 -1.6 -1.009 -0.6878 -0.7259
--1.698 -1.609 -1.042 -0.6878 -0.6907
--1.714 -1.624 -1.069 -0.6878 -0.6536
--1.736 -1.644 -1.092 -0.6878 -0.615
--1.763 -1.671 -1.108 -0.6878 -0.5748
--1.797 -1.702 -1.12 -0.6878 -0.5332
--1.836 -1.739 -1.126 -0.6878 -0.4903
--1.88 -1.781 -1.127 -0.6878 -0.4461
--1.929 -1.827 -1.123 -0.6878 -0.4008
--1.982 -1.878 -1.114 -0.6878 -0.3545
--2.039 -1.932 -1.101 -0.6878 -0.3073
--2.099 -1.989 -1.083 -0.6878 -0.2594
--2.163 -2.049 -1.061 -0.6878 -0.2108
--2.228 -2.111 -1.035 -0.6878 -0.1617
--2.295 -2.174 -1.006 -0.6878 -0.1122
--2.362 -2.238 -0.9732 -0.6878 -0.06235
--2.43 -2.302 -0.9381 -0.6878 -0.01239
--2.497 -2.366 -0.9005 -0.6878 0.0376
--2.563 -2.428 -0.8609 -0.6878 0.0875
--2.627 -2.489 -0.8196 -0.6878 0.1372
--2.689 -2.548 -0.777 -0.6878 0.1865
--2.748 -2.603 -0.7335 -0.6878 0.2354
--2.802 -2.655 -0.6894 -0.6878 0.2837
--2.853 -2.703 -0.6451 -0.6878 0.3312
--2.899 -2.746 -0.601 -0.6878 0.378
--2.939 -2.784 -0.5572 -0.6878 0.4238
--2.973 -2.817 -0.5142 -0.6878 0.4685
--3.002 -2.844 -0.4723 -0.6878 0.5121
--3.024 -2.865 -0.4315 -0.6878 0.5544
--3.039 -2.879 -0.3923 -0.6878 0.5953
--3.047 -2.887 -0.3547 -0.6878 0.6347
--3.048 -2.888 -0.319 -0.6878 0.6725
--3.042 -2.882 -0.2852 -0.6878 0.7087
--3.028 -2.869 -0.2535 -0.6878 0.743
--3.008 -2.85 -0.2239 -0.6878 0.7756
--2.98 -2.823 -0.1965 -0.6878 0.8061
--2.946 -2.791 -0.1712 -0.6878 0.8347
--2.905 -2.752 -0.1481 -0.6878 0.8612
--2.858 -2.707 -0.127 -0.6878 0.8855
--2.804 -2.657 -0.1079 -0.6878 0.9076
--2.746 -2.602 -0.09059 -0.6878 0.9275
--2.683 -2.541 -0.075 -0.6878 0.945
--2.615 -2.477 -0.06094 -0.6878 0.9602
--2.543 -2.409 -0.04821 -0.6878 0.9729
--2.468 -2.339 -0.03661 -0.6878 0.9833
--2.391 -2.265 -0.02591 -0.6878 0.9911
--2.312 -2.19 -0.01588 -0.6878 0.9965
--2.231 -2.114 -0.006271 -0.6878 0.9994
--2.072 -2.17 0 -0.7232 1
--1.995 -2.089 0.006688 -0.7232 0.9988
--1.919 -2.009 0.01365 -0.7232 0.995
--1.844 -1.931 0.02117 -0.7232 0.9888
--1.771 -1.854 0.02951 -0.7232 0.9801
--1.7 -1.78 0.03892 -0.7232 0.9689
--1.633 -1.71 0.04964 -0.7232 0.9553
--1.57 -1.644 0.0619 -0.7232 0.9394
--1.511 -1.582 0.07591 -0.7232 0.9211
--1.456 -1.525 0.09184 -0.7232 0.9004
--1.407 -1.474 0.1099 -0.7232 0.8776
--1.364 -1.428 0.1301 -0.7232 0.8525
--1.327 -1.389 0.1526 -0.7232 0.8253
--1.296 -1.357 0.1775 -0.7232 0.7961
--1.271 -1.331 0.2047 -0.7232 0.7648
--1.253 -1.312 0.2344 -0.7232 0.7317
--1.242 -1.301 0.2664 -0.7232 0.6967
--1.238 -1.297 0.3007 -0.7232 0.66
--1.241 -1.299 0.3372 -0.7232 0.6216
--1.25 -1.309 0.3757 -0.7232 0.5817
--1.266 -1.326 0.416 -0.7232 0.5403
--1.288 -1.349 0.458 -0.7232 0.4976
--1.316 -1.379 0.5014 -0.7232 0.4536
--1.351 -1.414 0.5459 -0.7232 0.4085
--1.39 -1.455 0.5913 -0.7232 0.3624
--1.434 -1.502 0.6371 -0.7232 0.3153
--1.483 -1.553 0.6832 -0.7232 0.2675
--1.536 -1.608 0.729 -0.7232 0.219
--1.592 -1.667 0.7743 -0.7232 0.17
--1.65 -1.728 0.8186 -0.7232 0.1205
--1.711 -1.792 0.8616 -0.7232 0.07074
--1.774 -1.858 0.9029 -0.7232 0.02079
--1.838 -1.924 0.942 -0.7232 -0.0292
--1.901 -1.991 0.9786 -0.7232 -0.07912
--1.965 -2.057 1.012 -0.7232 -0.1288
--2.027 -2.123 1.043 -0.7232 -0.1782
--2.088 -2.187 1.069 -0.7232 -0.2272
--2.147 -2.248 1.092 -0.7232 -0.2756
--2.203 -2.307 1.111 -0.7232 -0.3233
--2.256 -2.363 1.125 -0.7232 -0.3702
--2.306 -2.414 1.134 -0.7232 -0.4161
--2.351 -2.461 1.138 -0.7232 -0.4611
--2.391 -2.504 1.136 -0.7232 -0.5048
--2.426 -2.541 1.13 -0.7232 -0.5474
--2.457 -2.572 1.118 -0.7232 -0.5885
--2.481 -2.598 1.1 -0.7232 -0.6282
--2.5 -2.618 1.076 -0.7232 -0.6663
--2.514 -2.632 1.047 -0.7232 -0.7027
--2.521 -2.64 1.013 -0.7232 -0.7374
--2.523 -2.641 0.9728 -0.7232 -0.7702
--2.518 -2.637 0.9274 -0.7232 -0.8011
--2.508 -2.627 0.8769 -0.7232 -0.8301
--2.493 -2.61 0.8214 -0.7232 -0.8569
--2.472 -2.589 0.7613 -0.7232 -0.8816
--2.447 -2.562 0.6969 -0.7232 -0.9041
--2.416 -2.53 0.6284 -0.7232 -0.9243
--2.382 -2.494 0.5563 -0.7232 -0.9422
--2.344 -2.454 0.4809 -0.7232 -0.9578
--2.302 -2.41 0.4027 -0.7232 -0.971
--2.258 -2.364 0.3221 -0.7232 -0.9817
--2.211 -2.315 0.2396 -0.7232 -0.99
--2.163 -2.265 0.1557 -0.7232 -0.9958
--2.113 -2.213 0.07091 -0.7232 -0.9991
--2.064 -2.161 -0.01434 -0.7232 -1
--2.014 -2.109 -0.09951 -0.7232 -0.9983
--1.965 -2.057 -0.1841 -0.7232 -0.9941
--1.917 -2.007 -0.2676 -0.7232 -0.9875
--1.871 -1.959 -0.3495 -0.7232 -0.9784
--1.828 -1.914 -0.4293 -0.7232 -0.9668
--1.787 -1.871 -0.5066 -0.7232 -0.9528
--1.75 -1.832 -0.5809 -0.7232 -0.9365
--1.717 -1.798 -0.6518 -0.7232 -0.9178
--1.688 -1.768 -0.719 -0.7232 -0.8968
--1.664 -1.743 -0.782 -0.7232 -0.8735
--1.645 -1.723 -0.8406 -0.7232 -0.8481
--1.632 -1.708 -0.8944 -0.7232 -0.8206
--1.624 -1.7 -0.9432 -0.7232 -0.791
--1.621 -1.698 -0.9868 -0.7232 -0.7594
--1.625 -1.701 -1.025 -0.7232 -0.7259
--1.634 -1.711 -1.058 -0.7232 -0.6907
--1.649 -1.727 -1.085 -0.7232 -0.6536
--1.67 -1.749 -1.106 -0.7232 -0.615
--1.697 -1.777 -1.122 -0.7232 -0.5748
--1.729 -1.81 -1.133 -0.7232 -0.5332
--1.766 -1.849 -1.137 -0.7232 -0.4903
--1.808 -1.893 -1.137 -0.7232 -0.4461
--1.854 -1.942 -1.131 -0.7232 -0.4008
--1.905 -1.995 -1.12 -0.7232 -0.3545
--1.959 -2.051 -1.105 -0.7232 -0.3073
--2.016 -2.111 -1.085 -0.7232 -0.2594
--2.076 -2.174 -1.061 -0.7232 -0.2108
--2.137 -2.238 -1.033 -0.7232 -0.1617
--2.2 -2.304 -1.001 -0.7232 -0.1122
--2.264 -2.371 -0.9666 -0.7232 -0.06235
--2.328 -2.437 -0.9291 -0.7232 -0.01239
--2.391 -2.504 -0.8892 -0.7232 0.0376
--2.453 -2.569 -0.8473 -0.7232 0.0875
--2.514 -2.632 -0.8038 -0.7232 0.1372
--2.572 -2.693 -0.7592 -0.7232 0.1865
--2.626 -2.75 -0.7136 -0.7232 0.2354
--2.678 -2.804 -0.6677 -0.7232 0.2837
--2.725 -2.854 -0.6217 -0.7232 0.3312
--2.768 -2.898 -0.576 -0.7232 0.378
--2.805 -2.938 -0.5309 -0.7232 0.4238
--2.838 -2.971 -0.4867 -0.7232 0.4685
--2.864 -2.999 -0.4437 -0.7232 0.5121
--2.884 -3.02 -0.4023 -0.7232 0.5544
--2.898 -3.034 -0.3625 -0.7232 0.5953
--2.905 -3.042 -0.3247 -0.7232 0.6347
--2.905 -3.042 -0.2889 -0.7232 0.6725
--2.899 -3.035 -0.2554 -0.7232 0.7087
--2.885 -3.021 -0.2242 -0.7232 0.743
--2.865 -3 -0.1953 -0.7232 0.7756
--2.838 -2.972 -0.1688 -0.7232 0.8061
--2.805 -2.937 -0.1447 -0.7232 0.8347
--2.766 -2.896 -0.123 -0.7232 0.8612
--2.721 -2.849 -0.1036 -0.7232 0.8855
--2.67 -2.796 -0.08626 -0.7232 0.9076
--2.614 -2.737 -0.07099 -0.7232 0.9275
--2.553 -2.674 -0.05759 -0.7232 0.945
--2.489 -2.606 -0.04587 -0.7232 0.9602
--2.42 -2.534 -0.03562 -0.7232 0.9729
--2.349 -2.46 -0.0266 -0.7232 0.9833
--2.275 -2.382 -0.01857 -0.7232 0.9911
--2.2 -2.303 -0.01126 -0.7232 0.9965
--2.123 -2.223 -0.004422 -0.7232 0.9994
--1.961 -2.27 0 -0.7568 1
--1.888 -2.186 0.003901 -0.7568 0.9988
--1.816 -2.102 0.008103 -0.7568 0.995
--1.745 -2.02 0.0129 -0.7568 0.9888
--1.675 -1.94 0.01859 -0.7568 0.9801
--1.609 -1.863 0.02545 -0.7568 0.9689
--1.545 -1.789 0.03374 -0.7568 0.9553
--1.485 -1.719 0.04371 -0.7568 0.9394
--1.429 -1.654 0.05557 -0.7568 0.9211
--1.377 -1.594 0.06953 -0.7568 0.9004
--1.33 -1.54 0.08576 -0.7568 0.8776
--1.289 -1.492 0.1044 -0.7568 0.8525
--1.253 -1.451 0.1256 -0.7568 0.8253
--1.224 -1.417 0.1493 -0.7568 0.7961
--1.2 -1.389 0.1757 -0.7568 0.7648
--1.183 -1.369 0.2047 -0.7568 0.7317
--1.172 -1.357 0.2363 -0.7568 0.6967
--1.167 -1.351 0.2705 -0.7568 0.66
--1.169 -1.354 0.307 -0.7568 0.6216
--1.177 -1.363 0.3458 -0.7568 0.5817
--1.192 -1.38 0.3867 -0.7568 0.5403
--1.212 -1.403 0.4295 -0.7568 0.4976
--1.238 -1.433 0.4739 -0.7568 0.4536
--1.269 -1.47 0.5197 -0.7568 0.4085
--1.306 -1.512 0.5664 -0.7568 0.3624
--1.347 -1.56 0.6139 -0.7568 0.3153
--1.392 -1.612 0.6616 -0.7568 0.2675
--1.442 -1.669 0.7094 -0.7568 0.219
--1.494 -1.73 0.7567 -0.7568 0.17
--1.549 -1.793 0.8031 -0.7568 0.1205
--1.606 -1.859 0.8483 -0.7568 0.07074
--1.664 -1.927 0.8918 -0.7568 0.02079
--1.724 -1.996 0.9332 -0.7568 -0.0292
--1.784 -2.065 0.9721 -0.7568 -0.07912
--1.843 -2.134 1.008 -0.7568 -0.1288
--1.902 -2.202 1.041 -0.7568 -0.1782
--1.959 -2.268 1.07 -0.7568 -0.2272
--2.014 -2.332 1.095 -0.7568 -0.2756
--2.067 -2.393 1.115 -0.7568 -0.3233
--2.117 -2.451 1.131 -0.7568 -0.3702
--2.163 -2.505 1.142 -0.7568 -0.4161
--2.206 -2.554 1.147 -0.7568 -0.4611
--2.244 -2.598 1.148 -0.7568 -0.5048
--2.278 -2.637 1.142 -0.7568 -0.5474
--2.307 -2.671 1.131 -0.7568 -0.5885
--2.33 -2.698 1.114 -0.7568 -0.6282
--2.349 -2.719 1.092 -0.7568 -0.6663
--2.362 -2.734 1.063 -0.7568 -0.7027
--2.369 -2.743 1.029 -0.7568 -0.7374
--2.371 -2.746 0.9888 -0.7568 -0.7702
--2.368 -2.742 0.9432 -0.7568 -0.8011
--2.359 -2.732 0.8924 -0.7568 -0.8301
--2.346 -2.716 0.8364 -0.7568 -0.8569
--2.327 -2.694 0.7756 -0.7568 -0.8816
--2.304 -2.668 0.7102 -0.7568 -0.9041
--2.276 -2.636 0.6407 -0.7568 -0.9243
--2.245 -2.599 0.5673 -0.7568 -0.9422
--2.21 -2.559 0.4906 -0.7568 -0.9578
--2.172 -2.515 0.4109 -0.7568 -0.971
--2.131 -2.468 0.3287 -0.7568 -0.9817
--2.089 -2.418 0.2446 -0.7568 -0.99
--2.044 -2.367 0.159 -0.7568 -0.9958
--1.999 -2.314 0.07239 -0.7568 -0.9991
--1.953 -2.261 -0.01464 -0.7568 -1
--1.908 -2.209 -0.1016 -0.7568 -0.9983
--1.863 -2.156 -0.1879 -0.7568 -0.9941
--1.819 -2.106 -0.2731 -0.7568 -0.9875
--1.777 -2.057 -0.3566 -0.7568 -0.9784
--1.737 -2.011 -0.438 -0.7568 -0.9668
--1.7 -1.968 -0.5167 -0.7568 -0.9528
--1.666 -1.929 -0.5924 -0.7568 -0.9365
--1.636 -1.894 -0.6645 -0.7568 -0.9178
--1.61 -1.864 -0.7327 -0.7568 -0.8968
--1.588 -1.838 -0.7965 -0.7568 -0.8735
--1.571 -1.819 -0.8558 -0.7568 -0.8481
--1.559 -1.805 -0.9101 -0.7568 -0.8206
--1.552 -1.797 -0.9592 -0.7568 -0.791
--1.551 -1.795 -1.003 -0.7568 -0.7594
--1.555 -1.8 -1.041 -0.7568 -0.7259
--1.564 -1.811 -1.073 -0.7568 -0.6907
--1.579 -1.828 -1.1 -0.7568 -0.6536
--1.599 -1.851 -1.121 -0.7568 -0.615
--1.624 -1.881 -1.136 -0.7568 -0.5748
--1.655 -1.916 -1.145 -0.7568 -0.5332
--1.69 -1.957 -1.148 -0.7568 -0.4903
--1.73 -2.003 -1.146 -0.7568 -0.4461
--1.774 -2.054 -1.139 -0.7568 -0.4008
--1.821 -2.109 -1.126 -0.7568 -0.3545
--1.872 -2.168 -1.109 -0.7568 -0.3073
--1.926 -2.23 -1.087 -0.7568 -0.2594
--1.982 -2.295 -1.06 -0.7568 -0.2108
--2.04 -2.362 -1.03 -0.7568 -0.1617
--2.099 -2.43 -0.9963 -0.7568 -0.1122
--2.158 -2.499 -0.9593 -0.7568 -0.06235
--2.218 -2.568 -0.9195 -0.7568 -0.01239
--2.277 -2.637 -0.8774 -0.7568 0.0376
--2.336 -2.704 -0.8333 -0.7568 0.0875
--2.392 -2.769 -0.7876 -0.7568 0.1372
--2.446 -2.832 -0.7408 -0.7568 0.1865
--2.497 -2.891 -0.6933 -0.7568 0.2354
--2.545 -2.947 -0.6456 -0.7568 0.2837
--2.589 -2.998 -0.5978 -0.7568 0.3312
--2.629 -3.044 -0.5506 -0.7568 0.378
--2.664 -3.084 -0.5041 -0.7568 0.4238
--2.693 -3.118 -0.4588 -0.7568 0.4685
--2.717 -3.146 -0.4149 -0.7568 0.5121
--2.736 -3.168 -0.3728 -0.7568 0.5544
--2.748 -3.182 -0.3325 -0.7568 0.5953
--2.754 -3.189 -0.2945 -0.7568 0.6347
--2.754 -3.189 -0.2587 -0.7568 0.6725
--2.747 -3.181 -0.2254 -0.7568 0.7087
--2.734 -3.166 -0.1947 -0.7568 0.743
--2.715 -3.143 -0.1665 -0.7568 0.7756
--2.689 -3.113 -0.141 -0.7568 0.8061
--2.657 -3.076 -0.1182 -0.7568 0.8347
--2.62 -3.033 -0.09786 -0.7568 0.8612
--2.576 -2.983 -0.08004 -0.7568 0.8855
--2.528 -2.927 -0.06459 -0.7568 0.9076
--2.475 -2.865 -0.05136 -0.7568 0.9275
--2.417 -2.799 -0.04015 -0.7568 0.945
--2.356 -2.728 -0.03078 -0.7568 0.9602
--2.291 -2.653 -0.023 -0.7568 0.9729
--2.223 -2.574 -0.01656 -0.7568 0.9833
--2.154 -2.493 -0.0112 -0.7568 0.9911
--2.082 -2.411 -0.006637 -0.7568 0.9965
--2.009 -2.326 -0.00257 -0.7568 0.9994
--1.845 -2.366 0 -0.7885 1
--1.776 -2.278 0.00111 -0.7885 0.9988
--1.708 -2.19 0.002546 -0.7885 0.995
--1.641 -2.104 0.004628 -0.7885 0.9888
--1.576 -2.021 0.00767 -0.7885 0.9801
--1.513 -1.94 0.01197 -0.7885 0.9689
--1.453 -1.863 0.01782 -0.7885 0.9553
--1.396 -1.79 0.02548 -0.7885 0.9394
--1.343 -1.723 0.0352 -0.7885 0.9211
--1.295 -1.66 0.04718 -0.7885 0.9004
--1.251 -1.603 0.06162 -0.7885 0.8776
--1.211 -1.553 0.07868 -0.7885 0.8525
--1.178 -1.51 0.09846 -0.7885 0.8253
--1.149 -1.473 0.1211 -0.7885 0.7961
--1.127 -1.444 0.1465 -0.7885 0.7648
--1.11 -1.423 0.1749 -0.7885 0.7317
--1.099 -1.409 0.2061 -0.7885 0.6967
--1.094 -1.403 0.24 -0.7885 0.66
--1.095 -1.405 0.2766 -0.7885 0.6216
--1.103 -1.414 0.3158 -0.7885 0.5817
--1.115 -1.43 0.3572 -0.7885 0.5403
--1.134 -1.454 0.4007 -0.7885 0.4976
--1.158 -1.484 0.4461 -0.7885 0.4536
--1.187 -1.521 0.493 -0.7885 0.4085
--1.22 -1.565 0.5412 -0.7885 0.3624
--1.258 -1.613 0.5902 -0.7885 0.3153
--1.3 -1.667 0.6397 -0.7885 0.2675
--1.346 -1.725 0.6893 -0.7885 0.219
--1.394 -1.787 0.7386 -0.7885 0.17
--1.445 -1.853 0.7871 -0.7885 0.1205
--1.498 -1.92 0.8344 -0.7885 0.07074
--1.552 -1.99 0.8802 -0.7885 0.02079
--1.608 -2.061 0.9238 -0.7885 -0.0292
--1.663 -2.132 0.965 -0.7885 -0.07912
--1.719 -2.204 1.003 -0.7885 -0.1288
--1.773 -2.274 1.038 -0.7885 -0.1782
--1.827 -2.342 1.069 -0.7885 -0.2272
--1.878 -2.408 1.096 -0.7885 -0.2756
--1.928 -2.472 1.119 -0.7885 -0.3233
--1.974 -2.532 1.137 -0.7885 -0.3702
--2.018 -2.587 1.149 -0.7885 -0.4161
--2.058 -2.638 1.156 -0.7885 -0.4611
--2.094 -2.685 1.158 -0.7885 -0.5048
--2.126 -2.725 1.154 -0.7885 -0.5474
--2.153 -2.76 1.144 -0.7885 -0.5885
--2.175 -2.789 1.128 -0.7885 -0.6282
--2.193 -2.812 1.106 -0.7885 -0.6663
--2.206 -2.828 1.078 -0.7885 -0.7027
--2.213 -2.838 1.044 -0.7885 -0.7374
--2.216 -2.841 1.004 -0.7885 -0.7702
--2.213 -2.838 0.9585 -0.7885 -0.8011
--2.206 -2.829 0.9073 -0.7885 -0.8301
--2.194 -2.813 0.8508 -0.7885 -0.8569
--2.178 -2.792 0.7893 -0.7885 -0.8816
--2.157 -2.765 0.7231 -0.7885 -0.9041
--2.132 -2.733 0.6525 -0.7885 -0.9243
--2.103 -2.697 0.578 -0.7885 -0.9422
--2.072 -2.656 0.4999 -0.7885 -0.9578
--2.037 -2.612 0.4188 -0.7885 -0.971
--2 -2.565 0.3352 -0.7885 -0.9817
--1.961 -2.515 0.2494 -0.7885 -0.99
--1.921 -2.463 0.1621 -0.7885 -0.9958
--1.88 -2.41 0.07382 -0.7885 -0.9991
--1.838 -2.357 -0.01493 -0.7885 -1
--1.796 -2.303 -0.1036 -0.7885 -0.9983
--1.755 -2.251 -0.1916 -0.7885 -0.9941
--1.715 -2.199 -0.2784 -0.7885 -0.9875
--1.677 -2.15 -0.3636 -0.7885 -0.9784
--1.641 -2.104 -0.4464 -0.7885 -0.9668
--1.607 -2.061 -0.5266 -0.7885 -0.9528
--1.577 -2.021 -0.6035 -0.7885 -0.9365
--1.549 -1.986 -0.6767 -0.7885 -0.9178
--1.526 -1.956 -0.7459 -0.7885 -0.8968
--1.506 -1.931 -0.8106 -0.7885 -0.8735
--1.491 -1.912 -0.8704 -0.7885 -0.8481
--1.481 -1.899 -0.9252 -0.7885 -0.8206
--1.475 -1.891 -0.9745 -0.7885 -0.791
--1.474 -1.89 -1.018 -0.7885 -0.7594
--1.479 -1.896 -1.056 -0.7885 -0.7259
--1.488 -1.908 -1.088 -0.7885 -0.6907
--1.502 -1.926 -1.114 -0.7885 -0.6536
--1.522 -1.951 -1.134 -0.7885 -0.615
--1.546 -1.982 -1.148 -0.7885 -0.5748
--1.575 -2.019 -1.156 -0.7885 -0.5332
--1.608 -2.062 -1.158 -0.7885 -0.4903
--1.645 -2.109 -1.155 -0.7885 -0.4461
--1.686 -2.162 -1.145 -0.7885 -0.4008
--1.731 -2.219 -1.131 -0.7885 -0.3545
--1.779 -2.28 -1.112 -0.7885 -0.3073
--1.829 -2.345 -1.088 -0.7885 -0.2594
--1.881 -2.412 -1.059 -0.7885 -0.2108
--1.935 -2.481 -1.027 -0.7885 -0.1617
--1.99 -2.551 -0.9907 -0.7885 -0.1122
--2.046 -2.623 -0.9515 -0.7885 -0.06235
--2.101 -2.694 -0.9094 -0.7885 -0.01239
--2.156 -2.765 -0.865 -0.7885 0.0376
--2.21 -2.834 -0.8187 -0.7885 0.0875
--2.262 -2.901 -0.7709 -0.7885 0.1372
--2.313 -2.965 -0.7221 -0.7885 0.1865
--2.36 -3.026 -0.6726 -0.7885 0.2354
--2.404 -3.083 -0.623 -0.7885 0.2837
--2.445 -3.135 -0.5736 -0.7885 0.3312
--2.482 -3.182 -0.5249 -0.7885 0.378
--2.514 -3.223 -0.4771 -0.7885 0.4238
--2.541 -3.258 -0.4307 -0.7885 0.4685
--2.563 -3.286 -0.3859 -0.7885 0.5121
--2.58 -3.307 -0.343 -0.7885 0.5544
--2.591 -3.321 -0.3023 -0.7885 0.5953
--2.596 -3.328 -0.264 -0.7885 0.6347
--2.595 -3.327 -0.2283 -0.7885 0.6725
--2.588 -3.318 -0.1953 -0.7885 0.7087
--2.575 -3.302 -0.165 -0.7885 0.743
--2.556 -3.278 -0.1377 -0.7885 0.7756
--2.532 -3.246 -0.1131 -0.7885 0.8061
--2.502 -3.208 -0.0915 -0.7885 0.8347
--2.466 -3.162 -0.07264 -0.7885 0.8612
--2.425 -3.109 -0.05648 -0.7885 0.8855
--2.379 -3.051 -0.04289 -0.7885 0.9076
--2.329 -2.986 -0.03169 -0.7885 0.9275
--2.275 -2.917 -0.02269 -0.7885 0.945
--2.217 -2.842 -0.01567 -0.7885 0.9602
--2.156 -2.764 -0.01037 -0.7885 0.9729
--2.092 -2.682 -0.006521 -0.7885 0.9833
--2.026 -2.598 -0.003836 -0.7885 0.9911
--1.959 -2.512 -0.002007 -0.7885 0.9965
--1.891 -2.424 -0.0007167 -0.7885 0.9994
--1.724 -2.455 0 -0.8183 1
--1.66 -2.363 -0.001681 -0.8183 0.9988
--1.597 -2.273 -0.003013 -0.8183 0.995
--1.534 -2.184 -0.003651 -0.8183 0.9888
--1.473 -2.097 -0.003258 -0.8183 0.9801
--1.414 -2.013 -0.001513 -0.8183 0.9689
--1.358 -1.933 0.001892 -0.8183 0.9553
--1.305 -1.858 0.007243 -0.8183 0.9394
--1.255 -1.787 0.0148 -0.8183 0.9211
--1.21 -1.722 0.0248 -0.8183 0.9004
--1.168 -1.663 0.03744 -0.8183 0.8776
--1.131 -1.611 0.0529 -0.8183 0.8525
--1.099 -1.565 0.0713 -0.8183 0.8253
--1.073 -1.527 0.09275 -0.8183 0.7961
--1.051 -1.496 0.1173 -0.8183 0.7648
--1.035 -1.473 0.1449 -0.8183 0.7317
--1.024 -1.458 0.1757 -0.8183 0.6967
--1.02 -1.451 0.2094 -0.8183 0.66
--1.02 -1.452 0.2461 -0.8183 0.6216
--1.026 -1.461 0.2855 -0.8183 0.5817
--1.038 -1.477 0.3274 -0.8183 0.5403
--1.054 -1.501 0.3717 -0.8183 0.4976
--1.076 -1.532 0.418 -0.8183 0.4536
--1.102 -1.569 0.4661 -0.8183 0.4085
--1.133 -1.613 0.5156 -0.8183 0.3624
--1.168 -1.662 0.5662 -0.8183 0.3153
--1.206 -1.717 0.6173 -0.8183 0.2675
--1.248 -1.776 0.6688 -0.8183 0.219
--1.292 -1.84 0.72 -0.8183 0.17
--1.339 -1.907 0.7706 -0.8183 0.1205
--1.388 -1.976 0.8201 -0.8183 0.07074
--1.438 -2.047 0.868 -0.8183 0.02079
--1.489 -2.12 0.9139 -0.8183 -0.0292
--1.541 -2.193 0.9573 -0.8183 -0.07912
--1.592 -2.266 0.9978 -0.8183 -0.1288
--1.643 -2.338 1.035 -0.8183 -0.1782
--1.692 -2.409 1.068 -0.8183 -0.2272
--1.74 -2.477 1.097 -0.8183 -0.2756
--1.786 -2.542 1.122 -0.8183 -0.3233
--1.829 -2.604 1.141 -0.8183 -0.3702
--1.87 -2.661 1.156 -0.8183 -0.4161
--1.907 -2.714 1.165 -0.8183 -0.4611
--1.94 -2.762 1.168 -0.8183 -0.5048
--1.97 -2.804 1.165 -0.8183 -0.5474
--1.996 -2.841 1.156 -0.8183 -0.5885
--2.017 -2.871 1.141 -0.8183 -0.6282
--2.034 -2.895 1.12 -0.8183 -0.6663
--2.046 -2.912 1.092 -0.8183 -0.7027
--2.054 -2.923 1.059 -0.8183 -0.7374
--2.057 -2.928 1.019 -0.8183 -0.7702
--2.055 -2.925 0.9732 -0.8183 -0.8011
--2.049 -2.917 0.9217 -0.8183 -0.8301
--2.038 -2.902 0.8648 -0.8183 -0.8569
--2.024 -2.881 0.8026 -0.8183 -0.8816
--2.005 -2.855 0.7355 -0.8183 -0.9041
--1.983 -2.823 0.664 -0.8183 -0.9243
--1.958 -2.787 0.5883 -0.8183 -0.9422
--1.929 -2.746 0.509 -0.8183 -0.9578
--1.898 -2.702 0.4265 -0.8183 -0.971
--1.865 -2.654 0.3414 -0.8183 -0.9817
--1.83 -2.604 0.2541 -0.8183 -0.99
--1.793 -2.553 0.1652 -0.8183 -0.9958
--1.756 -2.499 0.07521 -0.8183 -0.9991
--1.718 -2.446 -0.01521 -0.8183 -1
--1.68 -2.392 -0.1055 -0.8183 -0.9983
--1.643 -2.339 -0.1952 -0.8183 -0.9941
--1.607 -2.288 -0.2836 -0.8183 -0.9875
--1.573 -2.239 -0.3703 -0.8183 -0.9784
--1.54 -2.192 -0.4546 -0.8183 -0.9668
--1.51 -2.149 -0.5361 -0.8183 -0.9528
--1.482 -2.11 -0.6142 -0.8183 -0.9365
--1.458 -2.075 -0.6885 -0.8183 -0.9178
--1.437 -2.045 -0.7586 -0.8183 -0.8968
--1.42 -2.021 -0.8241 -0.8183 -0.8735
--1.406 -2.002 -0.8845 -0.8183 -0.8481
--1.398 -1.989 -0.9397 -0.8183 -0.8206
--1.393 -1.983 -0.9892 -0.8183 -0.791
--1.393 -1.983 -1.033 -0.8183 -0.7594
--1.397 -1.989 -1.071 -0.8183 -0.7259
--1.407 -2.002 -1.102 -0.8183 -0.6907
--1.42 -2.022 -1.128 -0.8183 -0.6536
--1.439 -2.048 -1.147 -0.8183 -0.615
--1.461 -2.08 -1.16 -0.8183 -0.5748
--1.489 -2.119 -1.167 -0.8183 -0.5332
--1.52 -2.163 -1.167 -0.8183 -0.4903
--1.554 -2.213 -1.162 -0.8183 -0.4461
--1.593 -2.267 -1.152 -0.8183 -0.4008
--1.634 -2.326 -1.135 -0.8183 -0.3545
--1.678 -2.389 -1.114 -0.8183 -0.3073
--1.725 -2.455 -1.088 -0.8183 -0.2594
--1.773 -2.524 -1.057 -0.8183 -0.2108
--1.823 -2.595 -1.023 -0.8183 -0.1617
--1.874 -2.668 -0.9845 -0.8183 -0.1122
--1.926 -2.741 -0.943 -0.8183 -0.06235
--1.977 -2.814 -0.8987 -0.8183 -0.01239
--2.028 -2.886 -0.8521 -0.8183 0.0376
--2.077 -2.957 -0.8036 -0.8183 0.0875
--2.126 -3.026 -0.7537 -0.8183 0.1372
--2.172 -3.092 -0.7028 -0.8183 0.1865
--2.215 -3.154 -0.6515 -0.8183 0.2354
--2.256 -3.212 -0.6001 -0.8183 0.2837
--2.293 -3.265 -0.5491 -0.8183 0.3312
--2.327 -3.312 -0.4988 -0.8183 0.378
--2.356 -3.354 -0.4498 -0.8183 0.4238
--2.381 -3.389 -0.4023 -0.8183 0.4685
--2.401 -3.418 -0.3566 -0.8183 0.5121
--2.416 -3.439 -0.3131 -0.8183 0.5544
--2.425 -3.453 -0.2719 -0.8183 0.5953
--2.43 -3.459 -0.2334 -0.8183 0.6347
--2.428 -3.457 -0.1977 -0.8183 0.6725
--2.422 -3.447 -0.165 -0.8183 0.7087
--2.409 -3.429 -0.1353 -0.8183 0.743
--2.391 -3.404 -0.1087 -0.8183 0.7756
--2.368 -3.371 -0.08519 -0.8183 0.8061
--2.339 -3.33 -0.06478 -0.8183 0.8347
--2.306 -3.282 -0.04738 -0.8183 0.8612
--2.267 -3.228 -0.03289 -0.8183 0.8855
--2.224 -3.166 -0.02115 -0.8183 0.9076
--2.177 -3.099 -0.012 -0.8183 0.9275
--2.126 -3.027 -0.00521 -0.8183 0.945
--2.072 -2.95 -0.0005437 -0.8183 0.9602
--2.015 -2.869 0.00227 -0.8183 0.9729
--1.955 -2.784 0.003526 -0.8183 0.9833
--1.894 -2.696 0.003534 -0.8183 0.9911
--1.831 -2.606 0.002625 -0.8183 0.9965
--1.767 -2.516 0.001137 -0.8183 0.9994
--1.6 -2.538 0 -0.846 1
--1.54 -2.444 -0.004471 -0.846 0.9988
--1.481 -2.35 -0.008569 -0.846 0.995
--1.423 -2.258 -0.01193 -0.846 0.9888
--1.367 -2.168 -0.01419 -0.846 0.9801
--1.312 -2.082 -0.015 -0.846 0.9689
--1.26 -1.999 -0.01404 -0.846 0.9553
--1.211 -1.921 -0.011 -0.846 0.9394
--1.164 -1.847 -0.005603 -0.846 0.9211
--1.122 -1.78 0.002405 -0.846 0.9004
--1.083 -1.719 0.01324 -0.846 0.8776
--1.049 -1.664 0.02709 -0.846 0.8525
--1.019 -1.617 0.0441 -0.846 0.8253
--0.9939 -1.577 0.06437 -0.846 0.7961
--0.9736 -1.545 0.08797 -0.846 0.7648
--0.9584 -1.521 0.1149 -0.846 0.7317
--0.9482 -1.504 0.1452 -0.846 0.6967
--0.9431 -1.496 0.1787 -0.846 0.66
--0.9432 -1.496 0.2154 -0.846 0.6216
--0.9483 -1.505 0.255 -0.846 0.5817
--0.9584 -1.521 0.2975 -0.846 0.5403
--0.9732 -1.544 0.3425 -0.846 0.4976
--0.9926 -1.575 0.3897 -0.846 0.4536
--1.016 -1.613 0.4389 -0.846 0.4085
--1.044 -1.657 0.4897 -0.846 0.3624
--1.076 -1.707 0.5418 -0.846 0.3153
--1.111 -1.762 0.5946 -0.846 0.2675
--1.149 -1.823 0.6478 -0.846 0.219
--1.189 -1.887 0.701 -0.846 0.17
--1.232 -1.955 0.7536 -0.846 0.1205
--1.277 -2.026 0.8052 -0.846 0.07074
--1.323 -2.099 0.8553 -0.846 0.02079
--1.369 -2.173 0.9034 -0.846 -0.0292
--1.416 -2.247 0.949 -0.846 -0.07912
--1.463 -2.322 0.9917 -0.846 -0.1288
--1.51 -2.396 1.031 -0.846 -0.1782
--1.555 -2.468 1.066 -0.846 -0.2272
--1.599 -2.538 1.098 -0.846 -0.2756
--1.642 -2.604 1.124 -0.846 -0.3233
--1.681 -2.668 1.146 -0.846 -0.3702
--1.719 -2.727 1.162 -0.846 -0.4161
--1.753 -2.781 1.172 -0.846 -0.4611
--1.784 -2.831 1.177 -0.846 -0.5048
--1.812 -2.875 1.175 -0.846 -0.5474
--1.836 -2.912 1.168 -0.846 -0.5885
--1.856 -2.944 1.154 -0.846 -0.6282
--1.871 -2.969 1.133 -0.846 -0.6663
--1.883 -2.988 1.106 -0.846 -0.7027
--1.891 -3 1.073 -0.846 -0.7374
--1.894 -3.005 1.033 -0.846 -0.7702
--1.893 -3.004 0.9873 -0.846 -0.8011
--1.888 -2.996 0.9356 -0.846 -0.8301
--1.879 -2.982 0.8782 -0.846 -0.8569
--1.867 -2.961 0.8154 -0.846 -0.8816
--1.85 -2.936 0.7475 -0.846 -0.9041
--1.831 -2.905 0.675 -0.846 -0.9243
--1.808 -2.869 0.5983 -0.846 -0.9422
--1.783 -2.828 0.5177 -0.846 -0.9578
--1.755 -2.784 0.4339 -0.846 -0.971
--1.725 -2.737 0.3474 -0.846 -0.9817
--1.694 -2.687 0.2585 -0.846 -0.99
--1.661 -2.635 0.1681 -0.846 -0.9958
--1.628 -2.583 0.07655 -0.846 -0.9991
--1.594 -2.529 -0.01548 -0.846 -1
--1.56 -2.475 -0.1074 -0.846 -0.9983
--1.527 -2.423 -0.1987 -0.846 -0.9941
--1.495 -2.372 -0.2886 -0.846 -0.9875
--1.464 -2.323 -0.3767 -0.846 -0.9784
--1.435 -2.276 -0.4625 -0.846 -0.9668
--1.408 -2.234 -0.5452 -0.846 -0.9528
--1.383 -2.195 -0.6245 -0.846 -0.9365
--1.362 -2.16 -0.6999 -0.846 -0.9178
--1.343 -2.131 -0.7709 -0.846 -0.8968
--1.328 -2.107 -0.8371 -0.846 -0.8735
--1.317 -2.089 -0.8981 -0.846 -0.8481
--1.309 -2.077 -0.9536 -0.846 -0.8206
--1.305 -2.071 -1.003 -0.846 -0.791
--1.306 -2.072 -1.047 -0.846 -0.7594
--1.311 -2.079 -1.085 -0.846 -0.7259
--1.32 -2.094 -1.116 -0.846 -0.6907
--1.333 -2.114 -1.141 -0.846 -0.6536
--1.35 -2.142 -1.159 -0.846 -0.615
--1.371 -2.176 -1.171 -0.846 -0.5748
--1.396 -2.215 -1.177 -0.846 -0.5332
--1.425 -2.261 -1.176 -0.846 -0.4903
--1.457 -2.312 -1.169 -0.846 -0.4461
--1.493 -2.368 -1.157 -0.846 -0.4008
--1.531 -2.429 -1.139 -0.846 -0.3545
--1.572 -2.494 -1.116 -0.846 -0.3073
--1.615 -2.562 -1.088 -0.846 -0.2594
--1.659 -2.632 -1.055 -0.846 -0.2108
--1.705 -2.705 -1.018 -0.846 -0.1617
--1.752 -2.779 -0.9777 -0.846 -0.1122
--1.799 -2.854 -0.934 -0.846 -0.06235
--1.846 -2.928 -0.8875 -0.846 -0.01239
--1.892 -3.002 -0.8386 -0.846 0.0376
--1.938 -3.074 -0.788 -0.846 0.0875
--1.982 -3.144 -0.736 -0.846 0.1372
--2.024 -3.211 -0.6831 -0.846 0.1865
--2.064 -3.274 -0.6299 -0.846 0.2354
--2.101 -3.333 -0.5768 -0.846 0.2837
--2.135 -3.387 -0.5242 -0.846 0.3312
--2.165 -3.435 -0.4725 -0.846 0.378
--2.191 -3.477 -0.4222 -0.846 0.4238
--2.214 -3.512 -0.3736 -0.846 0.4685
--2.232 -3.541 -0.3271 -0.846 0.5121
--2.245 -3.562 -0.2829 -0.846 0.5544
--2.253 -3.575 -0.2414 -0.846 0.5953
--2.257 -3.58 -0.2027 -0.846 0.6347
--2.255 -3.578 -0.1671 -0.846 0.6725
--2.248 -3.567 -0.1346 -0.846 0.7087
--2.236 -3.548 -0.1055 -0.846 0.743
--2.219 -3.521 -0.07966 -0.846 0.7756
--2.197 -3.486 -0.05719 -0.846 0.8061
--2.171 -3.444 -0.03802 -0.846 0.8347
--2.139 -3.394 -0.02209 -0.846 0.8612
--2.103 -3.337 -0.00927 -0.846 0.8855
--2.063 -3.274 0.0005938 -0.846 0.9076
--2.02 -3.204 0.007698 -0.846 0.9275
--1.972 -3.129 0.01227 -0.846 0.945
--1.922 -3.05 0.01458 -0.846 0.9602
--1.869 -2.965 0.01491 -0.846 0.9729
--1.814 -2.878 0.01357 -0.846 0.9833
--1.757 -2.787 0.0109 -0.846 0.9911
--1.698 -2.695 0.007255 -0.846 0.9965
--1.639 -2.601 0.00299 -0.846 0.9994
--1.471 -2.615 0 -0.8716 1
--1.416 -2.518 -0.007258 -0.8716 0.9988
--1.362 -2.421 -0.01412 -0.8716 0.995
--1.309 -2.327 -0.0202 -0.8716 0.9888
--1.257 -2.234 -0.0251 -0.8716 0.9801
--1.207 -2.145 -0.02847 -0.8716 0.9689
--1.159 -2.06 -0.02996 -0.8716 0.9553
--1.113 -1.979 -0.02924 -0.8716 0.9394
--1.071 -1.904 -0.026 -0.8716 0.9211
--1.032 -1.834 -0.01999 -0.8716 0.9004
--0.996 -1.771 -0.01097 -0.8716 0.8776
--0.9643 -1.714 0.001266 -0.8716 0.8525
--0.9366 -1.665 0.01687 -0.8716 0.8253
--0.9132 -1.624 0.03595 -0.8716 0.7961
--0.8943 -1.59 0.05859 -0.8716 0.7648
--0.8799 -1.564 0.08482 -0.8716 0.7317
--0.8702 -1.547 0.1146 -0.8716 0.6967
--0.8652 -1.538 0.1479 -0.8716 0.66
--0.8648 -1.537 0.1845 -0.8716 0.6216
--0.869 -1.545 0.2244 -0.8716 0.5817
--0.8777 -1.56 0.2673 -0.8716 0.5403
--0.8908 -1.584 0.313 -0.8716 0.4976
--0.908 -1.614 0.3611 -0.8716 0.4536
--0.9293 -1.652 0.4114 -0.8716 0.4085
--0.9542 -1.696 0.4635 -0.8716 0.3624
--0.9826 -1.747 0.517 -0.8716 0.3153
--1.014 -1.803 0.5715 -0.8716 0.2675
--1.048 -1.864 0.6265 -0.8716 0.219
--1.085 -1.929 0.6815 -0.8716 0.17
--1.124 -1.998 0.7361 -0.8716 0.1205
--1.164 -2.07 0.7898 -0.8716 0.07074
--1.206 -2.144 0.842 -0.8716 0.02079
--1.248 -2.219 0.8923 -0.8716 -0.0292
--1.291 -2.295 0.9401 -0.8716 -0.07912
--1.333 -2.371 0.985 -0.8716 -0.1288
--1.376 -2.446 1.026 -0.8716 -0.1782
--1.417 -2.519 1.064 -0.8716 -0.2272
--1.457 -2.59 1.097 -0.8716 -0.2756
--1.496 -2.659 1.126 -0.8716 -0.3233
--1.532 -2.723 1.149 -0.8716 -0.3702
--1.566 -2.784 1.167 -0.8716 -0.4161
--1.597 -2.84 1.179 -0.8716 -0.4611
--1.626 -2.891 1.185 -0.8716 -0.5048
--1.651 -2.936 1.185 -0.8716 -0.5474
--1.673 -2.975 1.178 -0.8716 -0.5885
--1.692 -3.008 1.165 -0.8716 -0.6282
--1.707 -3.034 1.145 -0.8716 -0.6663
--1.718 -3.054 1.119 -0.8716 -0.7027
--1.725 -3.067 1.086 -0.8716 -0.7374
--1.729 -3.073 1.047 -0.8716 -0.7702
--1.728 -3.073 1.001 -0.8716 -0.8011
--1.725 -3.066 0.9488 -0.8716 -0.8301
--1.717 -3.053 0.891 -0.8716 -0.8569
--1.706 -3.033 0.8276 -0.8716 -0.8816
--1.692 -3.008 0.759 -0.8716 -0.9041
--1.675 -2.978 0.6856 -0.8716 -0.9243
--1.655 -2.942 0.6079 -0.8716 -0.9422
--1.633 -2.903 0.5262 -0.8716 -0.9578
--1.608 -2.859 0.4411 -0.8716 -0.971
--1.582 -2.812 0.3531 -0.8716 -0.9817
--1.554 -2.763 0.2629 -0.8716 -0.99
--1.525 -2.712 0.1709 -0.8716 -0.9958
--1.496 -2.659 0.07784 -0.8716 -0.9991
--1.466 -2.606 -0.01575 -0.8716 -1
--1.436 -2.553 -0.1092 -0.8716 -0.9983
--1.407 -2.5 -0.202 -0.8716 -0.9941
--1.378 -2.45 -0.2934 -0.8716 -0.9875
--1.351 -2.401 -0.383 -0.8716 -0.9784
--1.325 -2.355 -0.47 -0.8716 -0.9668
--1.301 -2.313 -0.554 -0.8716 -0.9528
--1.28 -2.275 -0.6345 -0.8716 -0.9365
--1.261 -2.241 -0.7108 -0.8716 -0.9178
--1.244 -2.212 -0.7827 -0.8716 -0.8968
--1.231 -2.189 -0.8495 -0.8716 -0.8735
--1.222 -2.172 -0.9111 -0.8716 -0.8481
--1.215 -2.161 -0.9669 -0.8716 -0.8206
--1.213 -2.156 -1.017 -0.8716 -0.791
--1.214 -2.158 -1.06 -0.8716 -0.7594
--1.218 -2.166 -1.098 -0.8716 -0.7259
--1.227 -2.181 -1.129 -0.8716 -0.6907
--1.239 -2.203 -1.153 -0.8716 -0.6536
--1.255 -2.232 -1.17 -0.8716 -0.615
--1.275 -2.267 -1.181 -0.8716 -0.5748
--1.298 -2.308 -1.186 -0.8716 -0.5332
--1.325 -2.355 -1.184 -0.8716 -0.4903
--1.354 -2.408 -1.176 -0.8716 -0.4461
--1.387 -2.465 -1.162 -0.8716 -0.4008
--1.422 -2.527 -1.142 -0.8716 -0.3545
--1.459 -2.593 -1.117 -0.8716 -0.3073
--1.498 -2.663 -1.087 -0.8716 -0.2594
--1.538 -2.735 -1.052 -0.8716 -0.2108
--1.58 -2.809 -1.013 -0.8716 -0.1617
--1.622 -2.884 -0.9703 -0.8716 -0.1122
--1.665 -2.96 -0.9244 -0.8716 -0.06235
--1.708 -3.036 -0.8757 -0.8716 -0.01239
--1.75 -3.111 -0.8247 -0.8716 0.0376
--1.791 -3.184 -0.7719 -0.8716 0.0875
--1.831 -3.255 -0.7179 -0.8716 0.1372
--1.869 -3.323 -0.663 -0.8716 0.1865
--1.905 -3.387 -0.608 -0.8716 0.2354
--1.938 -3.446 -0.5531 -0.8716 0.2837
--1.969 -3.5 -0.4989 -0.8716 0.3312
--1.996 -3.549 -0.4458 -0.8716 0.378
--2.02 -3.591 -0.3943 -0.8716 0.4238
--2.04 -3.626 -0.3447 -0.8716 0.4685
--2.056 -3.655 -0.2973 -0.8716 0.5121
--2.067 -3.675 -0.2526 -0.8716 0.5544
--2.075 -3.688 -0.2107 -0.8716 0.5953
--2.077 -3.693 -0.1718 -0.8716 0.6347
--2.075 -3.689 -0.1363 -0.8716 0.6725
--2.069 -3.678 -0.1042 -0.8716 0.7087
--2.057 -3.657 -0.0756 -0.8716 0.743
--2.041 -3.629 -0.05058 -0.8716 0.7756
--2.021 -3.593 -0.02914 -0.8716 0.8061
--1.996 -3.549 -0.01124 -0.8716 0.8347
--1.967 -3.497 0.003217 -0.8716 0.8612
--1.934 -3.438 0.01435 -0.8716 0.8855
--1.897 -3.373 0.02234 -0.8716 0.9076
--1.857 -3.301 0.02739 -0.8716 0.9275
--1.813 -3.224 0.02975 -0.8716 0.945
--1.767 -3.141 0.02969 -0.8716 0.9602
--1.718 -3.055 0.02753 -0.8716 0.9729
--1.667 -2.964 0.02361 -0.8716 0.9833
--1.615 -2.871 0.01826 -0.8716 0.9911
--1.561 -2.776 0.01188 -0.8716 0.9965
--1.507 -2.679 0.004842 -0.8716 0.9994
--1.338 -2.685 0 -0.895 1
--1.289 -2.585 -0.01004 -0.895 0.9988
--1.239 -2.487 -0.01966 -0.895 0.995
--1.191 -2.39 -0.02845 -0.895 0.9888
--1.144 -2.295 -0.03601 -0.895 0.9801
--1.098 -2.204 -0.04193 -0.895 0.9689
--1.055 -2.116 -0.04587 -0.895 0.9553
--1.013 -2.033 -0.04746 -0.895 0.9394
--0.9747 -1.956 -0.04639 -0.895 0.9211
--0.939 -1.884 -0.04238 -0.895 0.9004
--0.9065 -1.819 -0.03517 -0.895 0.8776
--0.8775 -1.761 -0.02456 -0.895 0.8525
--0.8522 -1.71 -0.01037 -0.895 0.8253
--0.8307 -1.667 0.007514 -0.895 0.7961
--0.8132 -1.632 0.02918 -0.895 0.7648
--0.7999 -1.605 0.05466 -0.895 0.7317
--0.7907 -1.586 0.08394 -0.895 0.6967
--0.7857 -1.576 0.1169 -0.895 0.66
--0.785 -1.575 0.1536 -0.895 0.6216
--0.7884 -1.582 0.1937 -0.895 0.5817
--0.7958 -1.597 0.237 -0.895 0.5403
--0.8072 -1.619 0.2833 -0.895 0.4976
--0.8224 -1.65 0.3323 -0.895 0.4536
--0.8411 -1.688 0.3837 -0.895 0.4085
--0.8632 -1.732 0.4371 -0.895 0.3624
--0.8885 -1.783 0.492 -0.895 0.3153
--0.9165 -1.839 0.548 -0.895 0.2675
--0.9471 -1.9 0.6048 -0.895 0.219
--0.9799 -1.966 0.6617 -0.895 0.17
--1.014 -2.035 0.7182 -0.895 0.1205
--1.051 -2.108 0.7739 -0.895 0.07074
--1.088 -2.182 0.8283 -0.895 0.02079
--1.126 -2.259 0.8807 -0.895 -0.0292
--1.164 -2.335 0.9307 -0.895 -0.07912
--1.202 -2.412 0.9777 -0.895 -0.1288
--1.24 -2.488 1.021 -0.895 -0.1782
--1.277 -2.563 1.061 -0.895 -0.2272
--1.314 -2.635 1.096 -0.895 -0.2756
--1.348 -2.705 1.127 -0.895 -0.3233
--1.381 -2.771 1.152 -0.895 -0.3702
--1.412 -2.833 1.171 -0.895 -0.4161
--1.44 -2.89 1.185 -0.895 -0.4611
--1.466 -2.942 1.193 -0.895 -0.5048
--1.489 -2.988 1.194 -0.895 -0.5474
--1.509 -3.028 1.188 -0.895 -0.5885
--1.526 -3.062 1.176 -0.895 -0.6282
--1.54 -3.09 1.157 -0.895 -0.6663
--1.551 -3.111 1.131 -0.895 -0.7027
--1.558 -3.125 1.099 -0.895 -0.7374
--1.561 -3.132 1.059 -0.895 -0.7702
--1.562 -3.133 1.014 -0.895 -0.8011
--1.559 -3.127 0.9614 -0.895 -0.8301
--1.552 -3.114 0.9033 -0.895 -0.8569
--1.543 -3.096 0.8394 -0.895 -0.8816
--1.531 -3.072 0.7701 -0.895 -0.9041
--1.516 -3.042 0.6958 -0.895 -0.9243
--1.499 -3.008 0.6171 -0.895 -0.9422
--1.48 -2.969 0.5343 -0.895 -0.9578
--1.458 -2.926 0.4479 -0.895 -0.971
--1.435 -2.88 0.3587 -0.895 -0.9817
--1.411 -2.831 0.267 -0.895 -0.99
--1.386 -2.781 0.1736 -0.895 -0.9958
--1.36 -2.729 0.07908 -0.895 -0.9991
--1.334 -2.676 -0.016 -0.895 -1
--1.308 -2.624 -0.111 -0.895 -0.9983
--1.282 -2.572 -0.2052 -0.895 -0.9941
--1.257 -2.522 -0.2981 -0.895 -0.9875
--1.233 -2.474 -0.389 -0.895 -0.9784
--1.211 -2.429 -0.4773 -0.895 -0.9668
--1.19 -2.388 -0.5625 -0.895 -0.9528
--1.171 -2.35 -0.644 -0.895 -0.9365
--1.155 -2.317 -0.7213 -0.895 -0.9178
--1.141 -2.289 -0.794 -0.895 -0.8968
--1.13 -2.267 -0.8615 -0.895 -0.8735
--1.122 -2.251 -0.9235 -0.895 -0.8481
--1.117 -2.24 -0.9796 -0.895 -0.8206
--1.115 -2.237 -1.03 -0.895 -0.791
--1.116 -2.239 -1.073 -0.895 -0.7594
--1.121 -2.249 -1.11 -0.895 -0.7259
--1.129 -2.265 -1.141 -0.895 -0.6907
--1.141 -2.288 -1.164 -0.895 -0.6536
--1.155 -2.318 -1.181 -0.895 -0.615
--1.174 -2.354 -1.191 -0.895 -0.5748
--1.195 -2.397 -1.194 -0.895 -0.5332
--1.219 -2.445 -1.191 -0.895 -0.4903
--1.245 -2.499 -1.181 -0.895 -0.4461
--1.275 -2.558 -1.166 -0.895 -0.4008
--1.306 -2.621 -1.144 -0.895 -0.3545
--1.34 -2.688 -1.117 -0.895 -0.3073
--1.375 -2.759 -1.085 -0.895 -0.2594
--1.411 -2.832 -1.048 -0.895 -0.2108
--1.449 -2.907 -1.007 -0.895 -0.1617
--1.487 -2.983 -0.9623 -0.895 -0.1122
--1.525 -3.06 -0.9142 -0.895 -0.06235
--1.564 -3.137 -0.8633 -0.895 -0.01239
--1.601 -3.213 -0.8102 -0.895 0.0376
--1.638 -3.287 -0.7553 -0.895 0.0875
--1.674 -3.358 -0.6993 -0.895 0.1372
--1.708 -3.427 -0.6425 -0.895 0.1865
--1.74 -3.491 -0.5856 -0.895 0.2354
--1.77 -3.551 -0.5291 -0.895 0.2837
--1.797 -3.605 -0.4734 -0.895 0.3312
--1.821 -3.654 -0.4189 -0.895 0.378
--1.842 -3.696 -0.3662 -0.895 0.4238
--1.86 -3.731 -0.3156 -0.895 0.4685
--1.874 -3.759 -0.2674 -0.895 0.5121
--1.884 -3.779 -0.2221 -0.895 0.5544
--1.89 -3.791 -0.1798 -0.895 0.5953
--1.892 -3.795 -0.1409 -0.895 0.6347
--1.89 -3.791 -0.1054 -0.895 0.6725
--1.883 -3.778 -0.07367 -0.895 0.7087
--1.873 -3.757 -0.04567 -0.895 0.743
--1.858 -3.727 -0.02147 -0.895 0.7756
--1.839 -3.69 -0.001079 -0.895 0.8061
--1.816 -3.644 0.01555 -0.895 0.8347
--1.79 -3.591 0.02852 -0.895 0.8612
--1.759 -3.53 0.03797 -0.895 0.8855
--1.726 -3.463 0.04407 -0.895 0.9076
--1.689 -3.389 0.04706 -0.895 0.9275
--1.65 -3.309 0.0472 -0.895 0.945
--1.607 -3.225 0.04479 -0.895 0.9602
--1.563 -3.136 0.04014 -0.895 0.9729
--1.517 -3.043 0.03363 -0.895 0.9833
--1.469 -2.948 0.02561 -0.895 0.9911
--1.421 -2.85 0.0165 -0.895 0.9965
--1.371 -2.751 0.00669 -0.895 0.9994
--1.202 -2.748 0 -0.9162 1
--1.158 -2.647 -0.01282 -0.9162 0.9988
--1.114 -2.546 -0.02519 -0.9162 0.995
--1.07 -2.447 -0.03669 -0.9162 0.9888
--1.028 -2.35 -0.04688 -0.9162 0.9801
--0.9873 -2.257 -0.05537 -0.9162 0.9689
--0.9482 -2.167 -0.06174 -0.9162 0.9553
--0.9111 -2.083 -0.06565 -0.9162 0.9394
--0.8763 -2.003 -0.06675 -0.9162 0.9211
--0.8442 -1.93 -0.06474 -0.9162 0.9004
--0.815 -1.863 -0.05935 -0.9162 0.8776
--0.7888 -1.803 -0.05037 -0.9162 0.8525
--0.7659 -1.751 -0.03761 -0.9162 0.8253
--0.7464 -1.706 -0.02093 -0.9162 0.7961
--0.7305 -1.67 -0.0002485 -0.9162 0.7648
--0.7183 -1.642 0.02448 -0.9162 0.7317
--0.7097 -1.622 0.05323 -0.9162 0.6967
--0.7049 -1.611 0.08595 -0.9162 0.66
--0.7039 -1.609 0.1225 -0.9162 0.6216
--0.7065 -1.615 0.1628 -0.9162 0.5817
--0.7128 -1.629 0.2065 -0.9162 0.5403
--0.7226 -1.652 0.2535 -0.9162 0.4976
--0.7357 -1.682 0.3033 -0.9162 0.4536
--0.752 -1.719 0.3557 -0.9162 0.4085
--0.7714 -1.763 0.4103 -0.9162 0.3624
--0.7935 -1.814 0.4666 -0.9162 0.3153
--0.8181 -1.87 0.5242 -0.9162 0.2675
--0.845 -1.932 0.5827 -0.9162 0.219
--0.8738 -1.997 0.6414 -0.9162 0.17
--0.9044 -2.067 0.6998 -0.9162 0.1205
--0.9362 -2.14 0.7576 -0.9162 0.07074
--0.9691 -2.215 0.814 -0.9162 0.02079
--1.003 -2.292 0.8685 -0.9162 -0.0292
--1.037 -2.37 0.9206 -0.9162 -0.07912
--1.071 -2.447 0.9698 -0.9162 -0.1288
--1.104 -2.524 1.016 -0.9162 -0.1782
--1.137 -2.599 1.057 -0.9162 -0.2272
--1.169 -2.673 1.094 -0.9162 -0.2756
--1.2 -2.743 1.127 -0.9162 -0.3233
--1.229 -2.81 1.154 -0.9162 -0.3702
--1.257 -2.873 1.175 -0.9162 -0.4161
--1.282 -2.931 1.191 -0.9162 -0.4611
--1.305 -2.984 1.199 -0.9162 -0.5048
--1.326 -3.031 1.202 -0.9162 -0.5474
--1.344 -3.073 1.197 -0.9162 -0.5885
--1.36 -3.108 1.186 -0.9162 -0.6282
--1.372 -3.136 1.168 -0.9162 -0.6663
--1.382 -3.158 1.143 -0.9162 -0.7027
--1.388 -3.174 1.111 -0.9162 -0.7374
--1.392 -3.182 1.071 -0.9162 -0.7702
--1.393 -3.184 1.026 -0.9162 -0.8011
--1.391 -3.179 0.9735 -0.9162 -0.8301
--1.386 -3.167 0.915 -0.9162 -0.8569
--1.378 -3.15 0.8506 -0.9162 -0.8816
--1.368 -3.127 0.7807 -0.9162 -0.9041
--1.355 -3.098 0.7056 -0.9162 -0.9243
--1.341 -3.065 0.6259 -0.9162 -0.9422
--1.324 -3.027 0.542 -0.9162 -0.9578
--1.306 -2.985 0.4545 -0.9162 -0.971
--1.286 -2.94 0.364 -0.9162 -0.9817
--1.265 -2.892 0.271 -0.9162 -0.99
--1.243 -2.842 0.1763 -0.9162 -0.9958
--1.221 -2.791 0.08028 -0.9162 -0.9991
--1.199 -2.74 -0.01624 -0.9162 -1
--1.176 -2.688 -0.1126 -0.9162 -0.9983
--1.154 -2.638 -0.2083 -0.9162 -0.9941
--1.133 -2.589 -0.3025 -0.9162 -0.9875
--1.112 -2.542 -0.3948 -0.9162 -0.9784
--1.093 -2.498 -0.4843 -0.9162 -0.9668
--1.075 -2.457 -0.5706 -0.9162 -0.9528
--1.059 -2.421 -0.6532 -0.9162 -0.9365
--1.045 -2.389 -0.7314 -0.9162 -0.9178
--1.033 -2.362 -0.8048 -0.9162 -0.8968
--1.024 -2.341 -0.8729 -0.9162 -0.8735
--1.017 -2.325 -0.9353 -0.9162 -0.8481
--1.013 -2.316 -0.9918 -0.9162 -0.8206
--1.012 -2.313 -1.042 -0.9162 -0.791
--1.014 -2.317 -1.085 -0.9162 -0.7594
--1.018 -2.328 -1.122 -0.9162 -0.7259
--1.026 -2.345 -1.152 -0.9162 -0.6907
--1.037 -2.369 -1.175 -0.9162 -0.6536
--1.05 -2.4 -1.191 -0.9162 -0.615
--1.066 -2.438 -1.2 -0.9162 -0.5748
--1.085 -2.481 -1.202 -0.9162 -0.5332
--1.107 -2.53 -1.197 -0.9162 -0.4903
--1.131 -2.585 -1.186 -0.9162 -0.4461
--1.157 -2.645 -1.169 -0.9162 -0.4008
--1.185 -2.709 -1.145 -0.9162 -0.3545
--1.215 -2.777 -1.117 -0.9162 -0.3073
--1.246 -2.849 -1.082 -0.9162 -0.2594
--1.279 -2.923 -1.044 -0.9162 -0.2108
--1.312 -2.999 -1.001 -0.9162 -0.1617
--1.346 -3.076 -0.9536 -0.9162 -0.1122
--1.38 -3.154 -0.9034 -0.9162 -0.06235
--1.413 -3.231 -0.8504 -0.9162 -0.01239
--1.447 -3.307 -0.7952 -0.9162 0.0376
--1.479 -3.382 -0.7383 -0.9162 0.0875
--1.511 -3.454 -0.6802 -0.9162 0.1372
--1.541 -3.522 -0.6216 -0.9162 0.1865
--1.569 -3.587 -0.5629 -0.9162 0.2354
--1.595 -3.646 -0.5047 -0.9162 0.2837
--1.619 -3.701 -0.4475 -0.9162 0.3312
--1.64 -3.749 -0.3917 -0.9162 0.378
--1.659 -3.791 -0.3378 -0.9162 0.4238
--1.674 -3.826 -0.2862 -0.9162 0.4685
--1.686 -3.854 -0.2373 -0.9162 0.5121
--1.695 -3.873 -0.1914 -0.9162 0.5544
--1.7 -3.885 -0.1488 -0.9162 0.5953
--1.701 -3.888 -0.1098 -0.9162 0.6347
--1.699 -3.883 -0.07451 -0.9162 0.6725
--1.693 -3.869 -0.04311 -0.9162 0.7087
--1.683 -3.847 -0.01571 -0.9162 0.743
--1.669 -3.816 0.007654 -0.9162 0.7756
--1.652 -3.777 0.02698 -0.9162 0.8061
--1.632 -3.73 0.04233 -0.9162 0.8347
--1.608 -3.675 0.05381 -0.9162 0.8612
--1.58 -3.612 0.06156 -0.9162 0.8855
--1.55 -3.543 0.06578 -0.9162 0.9076
--1.517 -3.468 0.06671 -0.9162 0.9275
--1.481 -3.386 0.06463 -0.9162 0.945
--1.444 -3.3 0.05985 -0.9162 0.9602
--1.404 -3.209 0.05273 -0.9162 0.9729
--1.363 -3.115 0.04363 -0.9162 0.9833
--1.32 -3.017 0.03295 -0.9162 0.9911
--1.276 -2.917 0.02111 -0.9162 0.9965
--1.232 -2.816 0.008534 -0.9162 0.9994
--1.064 -2.805 0 -0.9351 1
--1.024 -2.702 -0.01559 -0.9351 0.9988
--0.9855 -2.599 -0.03071 -0.9351 0.995
--0.9472 -2.498 -0.04491 -0.9351 0.9888
--0.9099 -2.4 -0.05774 -0.9351 0.9801
--0.8738 -2.305 -0.06876 -0.9351 0.9689
--0.8393 -2.214 -0.07758 -0.9351 0.9553
--0.8065 -2.127 -0.0838 -0.9351 0.9394
--0.7758 -2.046 -0.08706 -0.9351 0.9211
--0.7474 -1.971 -0.08706 -0.9351 0.9004
--0.7215 -1.903 -0.0835 -0.9351 0.8776
--0.6983 -1.842 -0.07615 -0.9351 0.8525
--0.6779 -1.788 -0.06482 -0.9351 0.8253
--0.6605 -1.742 -0.04936 -0.9351 0.7961
--0.6463 -1.705 -0.02968 -0.9351 0.7648
--0.6352 -1.675 -0.005726 -0.9351 0.7317
--0.6274 -1.655 0.02249 -0.9351 0.6967
--0.6229 -1.643 0.0549 -0.9351 0.66
--0.6217 -1.64 0.09139 -0.9351 0.6216
--0.6236 -1.645 0.1318 -0.9351 0.5817
--0.6288 -1.658 0.1759 -0.9351 0.5403
--0.637 -1.68 0.2235 -0.9351 0.4976
--0.6482 -1.71 0.2741 -0.9351 0.4536
--0.6621 -1.746 0.3275 -0.9351 0.4085
--0.6788 -1.79 0.3833 -0.9351 0.3624
--0.6978 -1.841 0.441 -0.9351 0.3153
--0.7191 -1.897 0.5001 -0.9351 0.2675
--0.7423 -1.958 0.5602 -0.9351 0.219
--0.7673 -2.024 0.6207 -0.9351 0.17
--0.7938 -2.094 0.681 -0.9351 0.1205
--0.8215 -2.167 0.7407 -0.9351 0.07074
--0.85 -2.242 0.7992 -0.9351 0.02079
--0.8792 -2.319 0.8558 -0.9351 -0.0292
--0.9088 -2.397 0.91 -0.9351 -0.07912
--0.9384 -2.475 0.9613 -0.9351 -0.1288
--0.9677 -2.552 1.009 -0.9351 -0.1782
--0.9965 -2.628 1.053 -0.9351 -0.2272
--1.025 -2.702 1.092 -0.9351 -0.2756
--1.051 -2.773 1.126 -0.9351 -0.3233
--1.077 -2.841 1.155 -0.9351 -0.3702
--1.101 -2.904 1.178 -0.9351 -0.4161
--1.124 -2.963 1.195 -0.9351 -0.4611
--1.144 -3.017 1.206 -0.9351 -0.5048
--1.162 -3.066 1.209 -0.9351 -0.5474
--1.178 -3.108 1.206 -0.9351 -0.5885
--1.192 -3.144 1.196 -0.9351 -0.6282
--1.203 -3.174 1.178 -0.9351 -0.6663
--1.212 -3.197 1.154 -0.9351 -0.7027
--1.218 -3.213 1.122 -0.9351 -0.7374
--1.222 -3.222 1.083 -0.9351 -0.7702
--1.223 -3.225 1.037 -0.9351 -0.8011
--1.221 -3.221 0.9849 -0.9351 -0.8301
--1.217 -3.211 0.9261 -0.9351 -0.8569
--1.211 -3.195 0.8613 -0.9351 -0.8816
--1.203 -3.173 0.7907 -0.9351 -0.9041
--1.192 -3.145 0.7149 -0.9351 -0.9243
--1.18 -3.113 0.6343 -0.9351 -0.9422
--1.166 -3.076 0.5494 -0.9351 -0.9578
--1.151 -3.036 0.4608 -0.9351 -0.971
--1.134 -2.992 0.3691 -0.9351 -0.9817
--1.117 -2.945 0.2749 -0.9351 -0.99
--1.098 -2.897 0.1788 -0.9351 -0.9958
--1.079 -2.847 0.08142 -0.9351 -0.9991
--1.06 -2.797 -0.01647 -0.9351 -1
--1.041 -2.746 -0.1143 -0.9351 -0.9983
--1.023 -2.697 -0.2113 -0.9351 -0.9941
--1.004 -2.649 -0.3068 -0.9351 -0.9875
--0.9871 -2.604 -0.4003 -0.9351 -0.9784
--0.9708 -2.561 -0.491 -0.9351 -0.9668
--0.9559 -2.521 -0.5784 -0.9351 -0.9528
--0.9425 -2.486 -0.6619 -0.9351 -0.9365
--0.9308 -2.455 -0.741 -0.9351 -0.9178
--0.9211 -2.429 -0.8151 -0.9351 -0.8968
--0.9135 -2.409 -0.8837 -0.9351 -0.8735
--0.908 -2.395 -0.9466 -0.9351 -0.8481
--0.905 -2.387 -1.003 -0.9351 -0.8206
--0.9044 -2.385 -1.053 -0.9351 -0.791
--0.9063 -2.39 -1.097 -0.9351 -0.7594
--0.9107 -2.402 -1.133 -0.9351 -0.7259
--0.9177 -2.421 -1.163 -0.9351 -0.6907
--0.9273 -2.446 -1.185 -0.9351 -0.6536
--0.9394 -2.478 -1.2 -0.9351 -0.615
--0.9539 -2.516 -1.208 -0.9351 -0.5748
--0.9707 -2.56 -1.209 -0.9351 -0.5332
--0.9897 -2.611 -1.203 -0.9351 -0.4903
--1.011 -2.666 -1.19 -0.9351 -0.4461
--1.034 -2.727 -1.171 -0.9351 -0.4008
--1.058 -2.792 -1.146 -0.9351 -0.3545
--1.085 -2.861 -1.115 -0.9351 -0.3073
--1.112 -2.933 -1.079 -0.9351 -0.2594
--1.14 -3.007 -1.039 -0.9351 -0.2108
--1.169 -3.084 -0.9934 -0.9351 -0.1617
--1.199 -3.162 -0.9444 -0.9351 -0.1122
--1.228 -3.24 -0.8921 -0.9351 -0.06235
--1.258 -3.317 -0.837 -0.9351 -0.01239
--1.287 -3.394 -0.7797 -0.9351 0.0376
--1.315 -3.468 -0.7208 -0.9351 0.0875
--1.342 -3.54 -0.6608 -0.9351 0.1372
--1.368 -3.609 -0.6003 -0.9351 0.1865
--1.393 -3.674 -0.5399 -0.9351 0.2354
--1.415 -3.733 -0.4801 -0.9351 0.2837
--1.436 -3.787 -0.4214 -0.9351 0.3312
--1.454 -3.836 -0.3643 -0.9351 0.378
--1.47 -3.877 -0.3093 -0.9351 0.4238
--1.483 -3.911 -0.2567 -0.9351 0.4685
--1.493 -3.938 -0.2071 -0.9351 0.5121
--1.5 -3.957 -0.1607 -0.9351 0.5544
--1.504 -3.968 -0.1178 -0.9351 0.5953
--1.505 -3.97 -0.07867 -0.9351 0.6347
--1.503 -3.964 -0.04354 -0.9351 0.6725
--1.497 -3.949 -0.01253 -0.9351 0.7087
--1.488 -3.926 0.01426 -0.9351 0.743
--1.476 -3.894 0.03677 -0.9351 0.7756
--1.461 -3.854 0.05503 -0.9351 0.8061
--1.443 -3.805 0.06909 -0.9351 0.8347
--1.421 -3.749 0.07906 -0.9351 0.8612
--1.397 -3.685 0.08511 -0.9351 0.8855
--1.37 -3.614 0.08744 -0.9351 0.9076
--1.341 -3.537 0.08631 -0.9351 0.9275
--1.31 -3.455 0.08202 -0.9351 0.945
--1.276 -3.366 0.07488 -0.9351 0.9602
--1.241 -3.274 0.06528 -0.9351 0.9729
--1.205 -3.178 0.0536 -0.9351 0.9833
--1.167 -3.078 0.04026 -0.9351 0.9911
--1.129 -2.977 0.0257 -0.9351 0.9965
--1.09 -2.874 0.01037 -0.9351 0.9994
--0.922 -2.855 0 -0.9516 1
--0.8882 -2.75 -0.01834 -0.9516 0.9988
--0.8546 -2.646 -0.0362 -0.9516 0.995
--0.8215 -2.544 -0.05309 -0.9516 0.9888
--0.7893 -2.444 -0.06855 -0.9516 0.9801
--0.7581 -2.347 -0.08212 -0.9516 0.9689
--0.7282 -2.255 -0.09337 -0.9516 0.9553
--0.6999 -2.167 -0.1019 -0.9516 0.9394
--0.6733 -2.085 -0.1073 -0.9516 0.9211
--0.6487 -2.009 -0.1093 -0.9516 0.9004
--0.6262 -1.939 -0.1076 -0.9516 0.8776
--0.606 -1.876 -0.1019 -0.9516 0.8525
--0.5883 -1.822 -0.09199 -0.9516 0.8253
--0.5731 -1.775 -0.07776 -0.9516 0.7961
--0.5606 -1.736 -0.05909 -0.9516 0.7648
--0.5509 -1.706 -0.03592 -0.9516 0.7317
--0.5439 -1.684 -0.00827 -0.9516 0.6967
--0.5397 -1.671 0.02381 -0.9516 0.66
--0.5383 -1.667 0.06021 -0.9516 0.6216
--0.5397 -1.671 0.1007 -0.9516 0.5817
--0.5439 -1.684 0.1452 -0.9516 0.5403
--0.5506 -1.705 0.1933 -0.9516 0.4976
--0.5599 -1.734 0.2447 -0.9516 0.4536
--0.5716 -1.77 0.2991 -0.9516 0.4085
--0.5856 -1.813 0.356 -0.9516 0.3624
--0.6017 -1.863 0.415 -0.9516 0.3153
--0.6196 -1.919 0.4757 -0.9516 0.2675
--0.6393 -1.98 0.5374 -0.9516 0.219
--0.6605 -2.045 0.5996 -0.9516 0.17
--0.683 -2.115 0.6618 -0.9516 0.1205
--0.7065 -2.188 0.7234 -0.9516 0.07074
--0.7308 -2.263 0.7839 -0.9516 0.02079
--0.7557 -2.34 0.8425 -0.9516 -0.0292
--0.7809 -2.418 0.8988 -0.9516 -0.07912
--0.8061 -2.496 0.9521 -0.9516 -0.1288
--0.8312 -2.574 1.002 -0.9516 -0.1782
--0.8558 -2.65 1.048 -0.9516 -0.2272
--0.8798 -2.724 1.089 -0.9516 -0.2756
--0.9029 -2.796 1.125 -0.9516 -0.3233
--0.9249 -2.864 1.156 -0.9516 -0.3702
--0.9456 -2.928 1.181 -0.9516 -0.4161
--0.9648 -2.987 1.199 -0.9516 -0.4611
--0.9824 -3.042 1.211 -0.9516 -0.5048
--0.9983 -3.091 1.216 -0.9516 -0.5474
--1.012 -3.134 1.214 -0.9516 -0.5885
--1.024 -3.171 1.204 -0.9516 -0.6282
--1.034 -3.202 1.188 -0.9516 -0.6663
--1.042 -3.226 1.164 -0.9516 -0.7027
--1.047 -3.243 1.132 -0.9516 -0.7374
--1.051 -3.254 1.094 -0.9516 -0.7702
--1.052 -3.257 1.048 -0.9516 -0.8011
--1.051 -3.255 0.9957 -0.9516 -0.8301
--1.048 -3.246 0.9367 -0.9516 -0.8569
--1.043 -3.231 0.8714 -0.9516 -0.8816
--1.037 -3.21 0.8003 -0.9516 -0.9041
--1.028 -3.184 0.7238 -0.9516 -0.9243
--1.018 -3.153 0.6423 -0.9516 -0.9422
--1.007 -3.117 0.5565 -0.9516 -0.9578
--0.9942 -3.078 0.4669 -0.9516 -0.971
--0.9805 -3.036 0.374 -0.9516 -0.9817
--0.9659 -2.991 0.2785 -0.9516 -0.99
--0.9507 -2.944 0.1812 -0.9516 -0.9958
--0.9351 -2.895 0.08252 -0.9516 -0.9991
--0.9193 -2.847 -0.01669 -0.9516 -1
--0.9036 -2.798 -0.1158 -0.9516 -0.9983
--0.8881 -2.75 -0.2141 -0.9516 -0.9941
--0.8731 -2.703 -0.3109 -0.9516 -0.9875
--0.8588 -2.659 -0.4055 -0.9516 -0.9784
--0.8454 -2.618 -0.4974 -0.9516 -0.9668
--0.8332 -2.58 -0.5858 -0.9516 -0.9528
--0.8222 -2.546 -0.6702 -0.9516 -0.9365
--0.8127 -2.516 -0.7501 -0.9516 -0.9178
--0.8048 -2.492 -0.8249 -0.9516 -0.8968
--0.7987 -2.473 -0.894 -0.9516 -0.8735
--0.7945 -2.46 -0.9573 -0.9516 -0.8481
--0.7923 -2.453 -1.014 -0.9516 -0.8206
--0.7922 -2.453 -1.064 -0.9516 -0.791
--0.7941 -2.459 -1.108 -0.9516 -0.7594
--0.7983 -2.472 -1.144 -0.9516 -0.7259
--0.8046 -2.491 -1.173 -0.9516 -0.6907
--0.813 -2.517 -1.194 -0.9516 -0.6536
--0.8236 -2.55 -1.208 -0.9516 -0.615
--0.8362 -2.589 -1.215 -0.9516 -0.5748
--0.8508 -2.634 -1.215 -0.9516 -0.5332
--0.8673 -2.685 -1.208 -0.9516 -0.4903
--0.8855 -2.742 -1.194 -0.9516 -0.4461
--0.9052 -2.803 -1.173 -0.9516 -0.4008
--0.9264 -2.868 -1.146 -0.9516 -0.3545
--0.9488 -2.938 -1.114 -0.9516 -0.3073
--0.9722 -3.01 -1.076 -0.9516 -0.2594
--0.9964 -3.085 -1.033 -0.9516 -0.2108
--1.021 -3.162 -0.9856 -0.9516 -0.1617
--1.046 -3.24 -0.9346 -0.9516 -0.1122
--1.072 -3.318 -0.8802 -0.9516 -0.06235
--1.097 -3.396 -0.823 -0.9516 -0.01239
--1.121 -3.472 -0.7637 -0.9516 0.0376
--1.145 -3.547 -0.7028 -0.9516 0.0875
--1.169 -3.619 -0.6409 -0.9516 0.1372
--1.191 -3.687 -0.5786 -0.9516 0.1865
--1.211 -3.751 -0.5165 -0.9516 0.2354
--1.231 -3.81 -0.4551 -0.9516 0.2837
--1.248 -3.864 -0.395 -0.9516 0.3312
--1.263 -3.912 -0.3366 -0.9516 0.378
--1.277 -3.953 -0.2805 -0.9516 0.4238
--1.287 -3.986 -0.2271 -0.9516 0.4685
--1.296 -4.013 -0.1767 -0.9516 0.5121
--1.302 -4.031 -0.1298 -0.9516 0.5544
--1.305 -4.041 -0.08666 -0.9516 0.5953
--1.306 -4.042 -0.0475 -0.9516 0.6347
--1.303 -4.035 -0.01253 -0.9516 0.6725
--1.298 -4.019 0.01807 -0.9516 0.7087
--1.29 -3.995 0.04422 -0.9516 0.743
--1.279 -3.962 0.06587 -0.9516 0.7756
--1.266 -3.92 0.08304 -0.9516 0.8061
--1.25 -3.871 0.0958 -0.9516 0.8347
--1.231 -3.813 0.1043 -0.9516 0.8612
--1.21 -3.748 0.1086 -0.9516 0.8855
--1.187 -3.676 0.1091 -0.9516 0.9076
--1.162 -3.598 0.1059 -0.9516 0.9275
--1.135 -3.514 0.09935 -0.9516 0.945
--1.106 -3.424 0.08987 -0.9516 0.9602
--1.076 -3.33 0.07779 -0.9516 0.9729
--1.044 -3.232 0.06354 -0.9516 0.9833
--1.011 -3.132 0.04755 -0.9516 0.9911
--0.9782 -3.029 0.03028 -0.9516 0.9965
--0.9445 -2.924 0.01221 -0.9516 0.9994
--0.7782 -2.897 0 -0.9658 1
--0.7497 -2.791 -0.02109 -0.9658 0.9988
--0.7215 -2.686 -0.04167 -0.9658 0.995
--0.6937 -2.583 -0.06125 -0.9658 0.9888
--0.6667 -2.482 -0.07932 -0.9658 0.9801
--0.6404 -2.385 -0.09542 -0.9658 0.9689
--0.6153 -2.291 -0.1091 -0.9658 0.9553
--0.5914 -2.202 -0.1199 -0.9658 0.9394
--0.569 -2.119 -0.1275 -0.9658 0.9211
--0.5483 -2.041 -0.1315 -0.9658 0.9004
--0.5293 -1.971 -0.1316 -0.9658 0.8776
--0.5122 -1.907 -0.1276 -0.9658 0.8525
--0.4972 -1.851 -0.1191 -0.9658 0.8253
--0.4843 -1.803 -0.1061 -0.9658 0.7961
--0.4736 -1.763 -0.08847 -0.9658 0.7648
--0.4653 -1.732 -0.0661 -0.9658 0.7317
--0.4592 -1.71 -0.03902 -0.9658 0.6967
--0.4555 -1.696 -0.00729 -0.9658 0.66
--0.4541 -1.691 0.02898 -0.9658 0.6216
--0.455 -1.694 0.06962 -0.9658 0.5817
--0.4582 -1.706 0.1144 -0.9658 0.5403
--0.4636 -1.726 0.163 -0.9658 0.4976
--0.4711 -1.754 0.2152 -0.9658 0.4536
--0.4806 -1.789 0.2705 -0.9658 0.4085
--0.492 -1.832 0.3286 -0.9658 0.3624
--0.5052 -1.881 0.3889 -0.9658 0.3153
--0.52 -1.936 0.4509 -0.9658 0.2675
--0.5362 -1.996 0.5142 -0.9658 0.219
--0.5537 -2.061 0.5781 -0.9658 0.17
--0.5722 -2.131 0.6422 -0.9658 0.1205
--0.5917 -2.203 0.7057 -0.9658 0.07074
--0.6118 -2.278 0.7681 -0.9658 0.02079
--0.6324 -2.355 0.8287 -0.9658 -0.0292
--0.6533 -2.432 0.887 -0.9658 -0.07912
--0.6742 -2.51 0.9424 -0.9658 -0.1288
--0.6951 -2.588 0.9943 -0.9658 -0.1782
--0.7155 -2.664 1.042 -0.9658 -0.2272
--0.7355 -2.738 1.085 -0.9658 -0.2756
--0.7547 -2.81 1.123 -0.9658 -0.3233
--0.7731 -2.878 1.156 -0.9658 -0.3702
--0.7904 -2.943 1.182 -0.9658 -0.4161
--0.8065 -3.003 1.202 -0.9658 -0.4611
--0.8213 -3.058 1.215 -0.9658 -0.5048
--0.8346 -3.108 1.222 -0.9658 -0.5474
--0.8464 -3.151 1.221 -0.9658 -0.5885
--0.8566 -3.189 1.212 -0.9658 -0.6282
--0.865 -3.221 1.196 -0.9658 -0.6663
--0.8717 -3.246 1.173 -0.9658 -0.7027
--0.8766 -3.264 1.142 -0.9658 -0.7374
--0.8797 -3.275 1.104 -0.9658 -0.7702
--0.8811 -3.28 1.058 -0.9658 -0.8011
--0.8807 -3.279 1.006 -0.9658 -0.8301
--0.8786 -3.271 0.9467 -0.9658 -0.8569
--0.875 -3.258 0.881 -0.9658 -0.8816
--0.8698 -3.238 0.8094 -0.9658 -0.9041
--0.8631 -3.214 0.7322 -0.9658 -0.9243
--0.8552 -3.184 0.65 -0.9658 -0.9422
--0.8461 -3.15 0.5632 -0.9658 -0.9578
--0.836 -3.113 0.4726 -0.9658 -0.971
--0.8251 -3.072 0.3786 -0.9658 -0.9817
--0.8134 -3.029 0.282 -0.9658 -0.99
--0.8012 -2.983 0.1834 -0.9658 -0.9958
--0.7887 -2.937 0.08356 -0.9658 -0.9991
--0.776 -2.889 -0.0169 -0.9658 -1
--0.7634 -2.842 -0.1172 -0.9658 -0.9983
--0.751 -2.796 -0.2168 -0.9658 -0.9941
--0.7389 -2.751 -0.3148 -0.9658 -0.9875
--0.7275 -2.709 -0.4105 -0.9658 -0.9784
--0.7168 -2.669 -0.5035 -0.9658 -0.9668
--0.707 -2.632 -0.5929 -0.9658 -0.9528
--0.6983 -2.6 -0.6782 -0.9658 -0.9365
--0.6908 -2.572 -0.7587 -0.9658 -0.9178
--0.6847 -2.549 -0.8341 -0.9658 -0.8968
--0.68 -2.532 -0.9038 -0.9658 -0.8735
--0.6768 -2.52 -0.9673 -0.9658 -0.8481
--0.6753 -2.514 -1.024 -0.9658 -0.8206
--0.6755 -2.515 -1.075 -0.9658 -0.791
--0.6775 -2.522 -1.118 -0.9658 -0.7594
--0.6812 -2.536 -1.153 -0.9658 -0.7259
--0.6867 -2.557 -1.182 -0.9658 -0.6907
--0.694 -2.584 -1.203 -0.9658 -0.6536
--0.703 -2.617 -1.216 -0.9658 -0.615
--0.7137 -2.657 -1.222 -0.9658 -0.5748
--0.726 -2.703 -1.22 -0.9658 -0.5332
--0.7398 -2.755 -1.212 -0.9658 -0.4903
--0.7551 -2.811 -1.196 -0.9658 -0.4461
--0.7716 -2.873 -1.174 -0.9658 -0.4008
--0.7893 -2.939 -1.145 -0.9658 -0.3545
--0.808 -3.008 -1.111 -0.9658 -0.3073
--0.8275 -3.081 -1.071 -0.9658 -0.2594
--0.8476 -3.156 -1.026 -0.9658 -0.2108
--0.8683 -3.233 -0.9773 -0.9658 -0.1617
--0.8891 -3.31 -0.9242 -0.9658 -0.1122
--0.9101 -3.388 -0.8677 -0.9658 -0.06235
--0.9309 -3.466 -0.8085 -0.9658 -0.01239
--0.9514 -3.542 -0.7472 -0.9658 0.0376
--0.9713 -3.616 -0.6844 -0.9658 0.0875
--0.9905 -3.688 -0.6207 -0.9658 0.1372
--1.009 -3.756 -0.5566 -0.9658 0.1865
--1.026 -3.819 -0.4928 -0.9658 0.2354
--1.042 -3.878 -0.4299 -0.9658 0.2837
--1.056 -3.931 -0.3684 -0.9658 0.3312
--1.068 -3.978 -0.3088 -0.9658 0.378
--1.079 -4.018 -0.2516 -0.9658 0.4238
--1.088 -4.051 -0.1973 -0.9658 0.4685
--1.095 -4.076 -0.1463 -0.9658 0.5121
--1.099 -4.094 -0.0989 -0.9658 0.5544
--1.102 -4.103 -0.05548 -0.9658 0.5953
--1.102 -4.103 -0.01629 -0.9658 0.6347
--1.1 -4.095 0.01847 -0.9658 0.6725
--1.095 -4.078 0.04865 -0.9658 0.7087
--1.089 -4.053 0.07415 -0.9658 0.743
--1.079 -4.019 0.09493 -0.9658 0.7756
--1.068 -3.976 0.111 -0.9658 0.8061
--1.054 -3.926 0.1224 -0.9658 0.8347
--1.039 -3.867 0.1294 -0.9658 0.8612
--1.021 -3.801 0.132 -0.9658 0.8855
--1.001 -3.728 0.1306 -0.9658 0.9076
--0.9799 -3.649 0.1253 -0.9658 0.9275
--0.957 -3.563 0.1166 -0.9658 0.945
--0.9327 -3.473 0.1048 -0.9658 0.9602
--0.9072 -3.378 0.09026 -0.9658 0.9729
--0.8807 -3.279 0.07344 -0.9658 0.9833
--0.8533 -3.177 0.05481 -0.9658 0.9911
--0.8254 -3.073 0.03484 -0.9658 0.9965
--0.7971 -2.968 0.01403 -0.9658 0.9994
--0.6324 -2.933 0 -0.9775 1
--0.6094 -2.826 -0.02383 -0.9775 0.9988
--0.5866 -2.72 -0.04712 -0.9775 0.995
--0.5641 -2.616 -0.06936 -0.9775 0.9888
--0.5422 -2.514 -0.09004 -0.9775 0.9801
--0.521 -2.416 -0.1087 -0.9775 0.9689
--0.5006 -2.322 -0.1248 -0.9775 0.9553
--0.4813 -2.232 -0.1379 -0.9775 0.9394
--0.4632 -2.148 -0.1476 -0.9775 0.9211
--0.4463 -2.07 -0.1536 -0.9775 0.9004
--0.4309 -1.998 -0.1556 -0.9775 0.8776
--0.417 -1.934 -0.1531 -0.9775 0.8525
--0.4048 -1.877 -0.1461 -0.9775 0.8253
--0.3942 -1.828 -0.1344 -0.9775 0.7961
--0.3855 -1.787 -0.1178 -0.9775 0.7648
--0.3785 -1.755 -0.09624 -0.9775 0.7317
--0.3735 -1.732 -0.06975 -0.9775 0.6967
--0.3703 -1.717 -0.03839 -0.9775 0.66
--0.3689 -1.711 -0.00226 -0.9775 0.6216
--0.3695 -1.713 0.03846 -0.9775 0.5817
--0.3718 -1.724 0.08353 -0.9775 0.5403
--0.3759 -1.743 0.1327 -0.9775 0.4976
--0.3818 -1.77 0.1855 -0.9775 0.4536
--0.3892 -1.805 0.2418 -0.9775 0.4085
--0.3982 -1.847 0.3009 -0.9775 0.3624
--0.4086 -1.895 0.3624 -0.9775 0.3153
--0.4202 -1.949 0.4259 -0.9775 0.2675
--0.4331 -2.008 0.4907 -0.9775 0.219
--0.447 -2.073 0.5563 -0.9775 0.17
--0.4617 -2.141 0.6221 -0.9775 0.1205
--0.4772 -2.213 0.6875 -0.9775 0.07074
--0.4932 -2.287 0.7518 -0.9775 0.02079
--0.5096 -2.363 0.8144 -0.9775 -0.0292
--0.5263 -2.44 0.8747 -0.9775 -0.07912
--0.543 -2.518 0.9321 -0.9775 -0.1288
--0.5596 -2.595 0.986 -0.9775 -0.1782
--0.576 -2.671 1.036 -0.9775 -0.2272
--0.592 -2.745 1.081 -0.9775 -0.2756
--0.6074 -2.817 1.121 -0.9775 -0.3233
--0.6222 -2.885 1.155 -0.9775 -0.3702
--0.6361 -2.95 1.183 -0.9775 -0.4161
--0.6491 -3.01 1.204 -0.9775 -0.4611
--0.661 -3.065 1.219 -0.9775 -0.5048
--0.6718 -3.116 1.227 -0.9775 -0.5474
--0.6814 -3.16 1.227 -0.9775 -0.5885
--0.6897 -3.198 1.219 -0.9775 -0.6282
--0.6966 -3.23 1.204 -0.9775 -0.6663
--0.7022 -3.256 1.182 -0.9775 -0.7027
--0.7063 -3.275 1.151 -0.9775 -0.7374
--0.7091 -3.288 1.113 -0.9775 -0.7702
--0.7104 -3.294 1.068 -0.9775 -0.8011
--0.7104 -3.294 1.015 -0.9775 -0.8301
--0.709 -3.288 0.9561 -0.9775 -0.8569
--0.7064 -3.276 0.8901 -0.9775 -0.8816
--0.7025 -3.258 0.818 -0.9775 -0.9041
--0.6976 -3.235 0.7402 -0.9775 -0.9243
--0.6916 -3.207 0.6572 -0.9775 -0.9422
--0.6846 -3.175 0.5696 -0.9775 -0.9578
--0.6769 -3.139 0.478 -0.9775 -0.971
--0.6685 -3.1 0.383 -0.9775 -0.9817
--0.6595 -3.058 0.2853 -0.9775 -0.99
--0.6502 -3.015 0.1856 -0.9775 -0.9958
--0.6405 -2.97 0.08455 -0.9775 -0.9991
--0.6307 -2.925 -0.0171 -0.9775 -1
--0.621 -2.88 -0.1186 -0.9775 -0.9983
--0.6114 -2.835 -0.2193 -0.9775 -0.9941
--0.6022 -2.793 -0.3184 -0.9775 -0.9875
--0.5934 -2.752 -0.4153 -0.9775 -0.9784
--0.5852 -2.714 -0.5092 -0.9775 -0.9668
--0.5777 -2.679 -0.5995 -0.9775 -0.9528
--0.5711 -2.648 -0.6856 -0.9775 -0.9365
--0.5654 -2.622 -0.7669 -0.9775 -0.9178
--0.5608 -2.601 -0.8429 -0.9775 -0.8968
--0.5574 -2.585 -0.913 -0.9775 -0.8735
--0.5551 -2.574 -0.9768 -0.9775 -0.8481
--0.5542 -2.57 -1.034 -0.9775 -0.8206
--0.5547 -2.572 -1.084 -0.9775 -0.791
--0.5565 -2.581 -1.127 -0.9775 -0.7594
--0.5597 -2.595 -1.162 -0.9775 -0.7259
--0.5643 -2.617 -1.19 -0.9775 -0.6907
--0.5703 -2.645 -1.21 -0.9775 -0.6536
--0.5777 -2.679 -1.223 -0.9775 -0.615
--0.5864 -2.72 -1.228 -0.9775 -0.5748
--0.5964 -2.766 -1.225 -0.9775 -0.5332
--0.6076 -2.818 -1.215 -0.9775 -0.4903
--0.6199 -2.875 -1.198 -0.9775 -0.4461
--0.6333 -2.937 -1.174 -0.9775 -0.4008
--0.6475 -3.003 -1.144 -0.9775 -0.3545
--0.6625 -3.072 -1.108 -0.9775 -0.3073
--0.6781 -3.145 -1.066 -0.9775 -0.2594
--0.6942 -3.219 -1.019 -0.9775 -0.2108
--0.7107 -3.296 -0.9683 -0.9775 -0.1617
--0.7274 -3.373 -0.9132 -0.9775 -0.1122
--0.7441 -3.451 -0.8547 -0.9775 -0.06235
--0.7607 -3.528 -0.7936 -0.9775 -0.01239
--0.777 -3.603 -0.7303 -0.9775 0.0376
--0.7929 -3.677 -0.6656 -0.9775 0.0875
--0.8081 -3.748 -0.6 -0.9775 0.1372
--0.8226 -3.815 -0.5342 -0.9775 0.1865
--0.8361 -3.877 -0.4688 -0.9775 0.2354
--0.8486 -3.935 -0.4044 -0.9775 0.2837
--0.8598 -3.987 -0.3415 -0.9775 0.3312
--0.8698 -4.033 -0.2807 -0.9775 0.378
--0.8782 -4.073 -0.2225 -0.9775 0.4238
--0.8851 -4.105 -0.1674 -0.9775 0.4685
--0.8904 -4.129 -0.1157 -0.9775 0.5121
--0.8939 -4.146 -0.0679 -0.9775 0.5544
--0.8957 -4.154 -0.02426 -0.9775 0.5953
--0.8956 -4.153 0.01493 -0.9775 0.6347
--0.8937 -4.144 0.04947 -0.9775 0.6725
--0.8898 -4.126 0.07921 -0.9775 0.7087
--0.8841 -4.1 0.104 -0.9775 0.743
--0.8766 -4.065 0.1239 -0.9775 0.7756
--0.8672 -4.022 0.1389 -0.9775 0.8061
--0.8561 -3.97 0.149 -0.9775 0.8347
--0.8433 -3.911 0.1545 -0.9775 0.8612
--0.8289 -3.844 0.1554 -0.9775 0.8855
--0.8129 -3.77 0.1521 -0.9775 0.9076
--0.7956 -3.69 0.1448 -0.9775 0.9275
--0.7771 -3.604 0.1338 -0.9775 0.945
--0.7574 -3.512 0.1197 -0.9775 0.9602
--0.7367 -3.416 0.1027 -0.9775 0.9729
--0.7153 -3.317 0.08329 -0.9775 0.9833
--0.6931 -3.214 0.06203 -0.9775 0.9911
--0.6706 -3.11 0.03938 -0.9775 0.9965
--0.6477 -3.003 0.01585 -0.9775 0.9994
--0.485 -2.961 0 -0.9868 1
--0.4675 -2.854 -0.02654 -0.9868 0.9988
--0.4501 -2.747 -0.05254 -0.9868 0.995
--0.433 -2.643 -0.07744 -0.9868 0.9888
--0.4162 -2.541 -0.1007 -0.9868 0.9801
--0.4001 -2.442 -0.1218 -0.9868 0.9689
--0.3845 -2.347 -0.1403 -0.9868 0.9553
--0.3698 -2.257 -0.1558 -0.9868 0.9394
--0.3559 -2.172 -0.1676 -0.9868 0.9211
--0.343 -2.093 -0.1756 -0.9868 0.9004
--0.3312 -2.021 -0.1794 -0.9868 0.8776
--0.3205 -1.956 -0.1786 -0.9868 0.8525
--0.3111 -1.899 -0.1731 -0.9868 0.8253
--0.303 -1.849 -0.1626 -0.9868 0.7961
--0.2962 -1.808 -0.147 -0.9868 0.7648
--0.2908 -1.775 -0.1263 -0.9868 0.7317
--0.2868 -1.75 -0.1004 -0.9868 0.6967
--0.2842 -1.735 -0.06946 -0.9868 0.66
--0.283 -1.728 -0.0335 -0.9868 0.6216
--0.2833 -1.729 0.007266 -0.9868 0.5817
--0.2849 -1.739 0.0526 -0.9868 0.5403
--0.2879 -1.757 0.1022 -0.9868 0.4976
--0.2921 -1.783 0.1558 -0.9868 0.4536
--0.2976 -1.817 0.2129 -0.9868 0.4085
--0.3042 -1.857 0.273 -0.9868 0.3624
--0.312 -1.904 0.3358 -0.9868 0.3153
--0.3207 -1.957 0.4006 -0.9868 0.2675
--0.3302 -2.016 0.4669 -0.9868 0.219
--0.3406 -2.079 0.5342 -0.9868 0.17
--0.3516 -2.146 0.6017 -0.9868 0.1205
--0.3632 -2.217 0.6689 -0.9868 0.07074
--0.3753 -2.29 0.735 -0.9868 0.02079
--0.3876 -2.366 0.7996 -0.9868 -0.0292
--0.4001 -2.442 0.8619 -0.9868 -0.07912
--0.4127 -2.519 0.9212 -0.9868 -0.1288
--0.4253 -2.596 0.977 -0.9868 -0.1782
--0.4376 -2.671 1.029 -0.9868 -0.2272
--0.4497 -2.745 1.076 -0.9868 -0.2756
--0.4614 -2.816 1.117 -0.9868 -0.3233
--0.4725 -2.884 1.153 -0.9868 -0.3702
--0.4831 -2.949 1.183 -0.9868 -0.4161
--0.493 -3.009 1.206 -0.9868 -0.4611
--0.5021 -3.065 1.222 -0.9868 -0.5048
--0.5103 -3.115 1.231 -0.9868 -0.5474
--0.5177 -3.16 1.232 -0.9868 -0.5885
--0.524 -3.199 1.226 -0.9868 -0.6282
--0.5294 -3.231 1.212 -0.9868 -0.6663
--0.5338 -3.258 1.19 -0.9868 -0.7027
--0.5371 -3.278 1.16 -0.9868 -0.7374
--0.5393 -3.292 1.122 -0.9868 -0.7702
--0.5405 -3.299 1.077 -0.9868 -0.8011
--0.5407 -3.301 1.024 -0.9868 -0.8301
--0.5399 -3.296 0.9649 -0.9868 -0.8569
--0.5382 -3.285 0.8986 -0.9868 -0.8816
--0.5355 -3.269 0.826 -0.9868 -0.9041
--0.532 -3.247 0.7477 -0.9868 -0.9243
--0.5277 -3.221 0.664 -0.9868 -0.9422
--0.5228 -3.191 0.5756 -0.9868 -0.9578
--0.5172 -3.157 0.4831 -0.9868 -0.971
--0.5112 -3.12 0.3872 -0.9868 -0.9817
--0.5047 -3.081 0.2885 -0.9868 -0.99
--0.4979 -3.039 0.1876 -0.9868 -0.9958
--0.4909 -2.996 0.08548 -0.9868 -0.9991
--0.4838 -2.953 -0.01729 -0.9868 -1
--0.4768 -2.91 -0.1199 -0.9868 -0.9983
--0.4698 -2.868 -0.2217 -0.9868 -0.9941
--0.4632 -2.827 -0.3219 -0.9868 -0.9875
--0.4568 -2.788 -0.4198 -0.9868 -0.9784
--0.4509 -2.752 -0.5147 -0.9868 -0.9668
--0.4455 -2.719 -0.6058 -0.9868 -0.9528
--0.4408 -2.691 -0.6927 -0.9868 -0.9365
--0.4368 -2.666 -0.7746 -0.9868 -0.9178
--0.4336 -2.646 -0.8511 -0.9868 -0.8968
--0.4312 -2.632 -0.9216 -0.9868 -0.8735
--0.4298 -2.623 -0.9857 -0.9868 -0.8481
--0.4293 -2.62 -1.043 -0.9868 -0.8206
--0.4298 -2.623 -1.093 -0.9868 -0.791
--0.4314 -2.633 -1.136 -0.9868 -0.7594
--0.434 -2.649 -1.171 -0.9868 -0.7259
--0.4376 -2.671 -1.198 -0.9868 -0.6907
--0.4423 -2.7 -1.217 -0.9868 -0.6536
--0.4481 -2.735 -1.229 -0.9868 -0.615
--0.4548 -2.776 -1.233 -0.9868 -0.5748
--0.4624 -2.823 -1.229 -0.9868 -0.5332
--0.471 -2.875 -1.218 -0.9868 -0.4903
--0.4803 -2.932 -1.199 -0.9868 -0.4461
--0.4904 -2.994 -1.174 -0.9868 -0.4008
--0.5012 -3.059 -1.142 -0.9868 -0.3545
--0.5126 -3.129 -1.104 -0.9868 -0.3073
--0.5244 -3.201 -1.06 -0.9868 -0.2594
--0.5366 -3.275 -1.012 -0.9868 -0.2108
--0.549 -3.351 -0.9587 -0.9868 -0.1617
--0.5616 -3.428 -0.9016 -0.9868 -0.1122
--0.5742 -3.505 -0.8412 -0.9868 -0.06235
--0.5866 -3.581 -0.7781 -0.9868 -0.01239
--0.5989 -3.656 -0.7129 -0.9868 0.0376
--0.6108 -3.728 -0.6463 -0.9868 0.0875
--0.6222 -3.798 -0.579 -0.9868 0.1372
--0.633 -3.864 -0.5115 -0.9868 0.1865
--0.6431 -3.926 -0.4445 -0.9868 0.2354
--0.6524 -3.982 -0.3786 -0.9868 0.2837
--0.6608 -4.033 -0.3144 -0.9868 0.3312
--0.6682 -4.078 -0.2525 -0.9868 0.378
--0.6744 -4.117 -0.1933 -0.9868 0.4238
--0.6795 -4.148 -0.1373 -0.9868 0.4685
--0.6833 -4.171 -0.08508 -0.9868 0.5121
--0.6858 -4.186 -0.03686 -0.9868 0.5544
--0.687 -4.193 0.006967 -0.9868 0.5953
--0.6868 -4.192 0.04614 -0.9868 0.6347
--0.6852 -4.182 0.08044 -0.9868 0.6725
--0.6821 -4.163 0.1097 -0.9868 0.7087
--0.6776 -4.136 0.1339 -0.9868 0.743
--0.6718 -4.1 0.1528 -0.9868 0.7756
--0.6645 -4.056 0.1667 -0.9868 0.8061
--0.6559 -4.004 0.1755 -0.9868 0.8347
--0.6461 -3.944 0.1794 -0.9868 0.8612
--0.635 -3.876 0.1786 -0.9868 0.8855
--0.6229 -3.802 0.1734 -0.9868 0.9076
--0.6096 -3.721 0.1641 -0.9868 0.9275
--0.5954 -3.634 0.1509 -0.9868 0.945
--0.5804 -3.543 0.1344 -0.9868 0.9602
--0.5646 -3.446 0.115 -0.9868 0.9729
--0.5482 -3.346 0.0931 -0.9868 0.9833
--0.5314 -3.243 0.06922 -0.9868 0.9911
--0.5141 -3.138 0.04389 -0.9868 0.9965
--0.4967 -3.032 0.01765 -0.9868 0.9994
--0.3365 -2.981 0 -0.9937 1
--0.3244 -2.874 -0.02925 -0.9937 0.9988
--0.3124 -2.768 -0.05792 -0.9937 0.995
--0.3006 -2.663 -0.08546 -0.9937 0.9888
--0.289 -2.561 -0.1113 -0.9937 0.9801
--0.2779 -2.462 -0.1349 -0.9937 0.9689
--0.2672 -2.367 -0.1558 -0.9937 0.9553
--0.257 -2.277 -0.1735 -0.9937 0.9394
--0.2474 -2.192 -0.1876 -0.9937 0.9211
--0.2384 -2.113 -0.1976 -0.9937 0.9004
--0.2303 -2.04 -0.2031 -0.9937 0.8776
--0.2229 -1.975 -0.204 -0.9937 0.8525
--0.2163 -1.917 -0.1999 -0.9937 0.8253
--0.2107 -1.866 -0.1907 -0.9937 0.7961
--0.2059 -1.824 -0.1762 -0.9937 0.7648
--0.2021 -1.791 -0.1563 -0.9937 0.7317
--0.1993 -1.765 -0.1311 -0.9937 0.6967
--0.1974 -1.749 -0.1005 -0.9937 0.66
--0.1965 -1.741 -0.06472 -0.9937 0.6216
--0.1965 -1.741 -0.02393 -0.9937 0.5817
--0.1975 -1.75 0.02165 -0.9937 0.5403
--0.1994 -1.767 0.07171 -0.9937 0.4976
--0.2022 -1.792 0.1259 -0.9937 0.4536
--0.2059 -1.824 0.1838 -0.9937 0.4085
--0.2103 -1.863 0.245 -0.9937 0.3624
--0.2155 -1.909 0.3089 -0.9937 0.3153
--0.2213 -1.961 0.3751 -0.9937 0.2675
--0.2278 -2.018 0.4428 -0.9937 0.219
--0.2348 -2.08 0.5117 -0.9937 0.17
--0.2423 -2.147 0.5809 -0.9937 0.1205
--0.2501 -2.216 0.6498 -0.9937 0.07074
--0.2583 -2.288 0.7178 -0.9937 0.02079
--0.2666 -2.363 0.7843 -0.9937 -0.0292
--0.2752 -2.438 0.8485 -0.9937 -0.07912
--0.2837 -2.514 0.9098 -0.9937 -0.1288
--0.2923 -2.59 0.9675 -0.9937 -0.1782
--0.3007 -2.664 1.021 -0.9937 -0.2272
--0.3089 -2.737 1.07 -0.9937 -0.2756
--0.3169 -2.808 1.113 -0.9937 -0.3233
--0.3246 -2.876 1.151 -0.9937 -0.3702
--0.3318 -2.94 1.182 -0.9937 -0.4161
--0.3386 -3 1.207 -0.9937 -0.4611
--0.3448 -3.055 1.224 -0.9937 -0.5048
--0.3505 -3.106 1.234 -0.9937 -0.5474
--0.3556 -3.151 1.237 -0.9937 -0.5885
--0.3601 -3.19 1.232 -0.9937 -0.6282
--0.3638 -3.224 1.218 -0.9937 -0.6663
--0.3669 -3.251 1.197 -0.9937 -0.7027
--0.3693 -3.272 1.167 -0.9937 -0.7374
--0.371 -3.287 1.13 -0.9937 -0.7702
--0.3719 -3.295 1.085 -0.9937 -0.8011
--0.3722 -3.298 1.033 -0.9937 -0.8301
--0.3718 -3.294 0.973 -0.9937 -0.8569
--0.3708 -3.285 0.9065 -0.9937 -0.8816
--0.3692 -3.271 0.8336 -0.9937 -0.9041
--0.3669 -3.251 0.7547 -0.9937 -0.9243
--0.3642 -3.227 0.6704 -0.9937 -0.9422
--0.361 -3.199 0.5813 -0.9937 -0.9578
--0.3574 -3.167 0.488 -0.9937 -0.971
--0.3535 -3.132 0.3911 -0.9937 -0.9817
--0.3493 -3.095 0.2914 -0.9937 -0.99
--0.3449 -3.055 0.1896 -0.9937 -0.9958
--0.3403 -3.015 0.08637 -0.9937 -0.9991
--0.3357 -2.974 -0.01747 -0.9937 -1
--0.3311 -2.933 -0.1212 -0.9937 -0.9983
--0.3266 -2.893 -0.224 -0.9937 -0.9941
--0.3222 -2.855 -0.3252 -0.9937 -0.9875
--0.3181 -2.818 -0.424 -0.9937 -0.9784
--0.3142 -2.784 -0.5198 -0.9937 -0.9668
--0.3108 -2.753 -0.6118 -0.9937 -0.9528
--0.3077 -2.726 -0.6993 -0.9937 -0.9365
--0.3052 -2.704 -0.7819 -0.9937 -0.9178
--0.3031 -2.686 -0.8588 -0.9937 -0.8968
--0.3017 -2.673 -0.9296 -0.9937 -0.8735
--0.3009 -2.666 -0.9939 -0.9937 -0.8481
--0.3007 -2.664 -1.051 -0.9937 -0.8206
--0.3012 -2.669 -1.101 -0.9937 -0.791
--0.3024 -2.68 -1.144 -0.9937 -0.7594
--0.3043 -2.697 -1.178 -0.9937 -0.7259
--0.307 -2.72 -1.205 -0.9937 -0.6907
--0.3103 -2.749 -1.224 -0.9937 -0.6536
--0.3143 -2.784 -1.234 -0.9937 -0.615
--0.3189 -2.826 -1.237 -0.9937 -0.5748
--0.3242 -2.873 -1.232 -0.9937 -0.5332
--0.3301 -2.925 -1.219 -0.9937 -0.4903
--0.3366 -2.982 -1.199 -0.9937 -0.4461
--0.3435 -3.043 -1.173 -0.9937 -0.4008
--0.3509 -3.109 -1.139 -0.9937 -0.3545
--0.3586 -3.178 -1.099 -0.9937 -0.3073
--0.3667 -3.249 -1.054 -0.9937 -0.2594
--0.375 -3.323 -1.004 -0.9937 -0.2108
--0.3835 -3.398 -0.9485 -0.9937 -0.1617
--0.3921 -3.474 -0.8895 -0.9937 -0.1122
--0.4006 -3.55 -0.8272 -0.9937 -0.06235
--0.4091 -3.625 -0.7622 -0.9937 -0.01239
--0.4174 -3.698 -0.6951 -0.9937 0.0376
--0.4255 -3.77 -0.6267 -0.9937 0.0875
--0.4332 -3.838 -0.5576 -0.9937 0.1372
--0.4405 -3.903 -0.4884 -0.9937 0.1865
--0.4473 -3.964 -0.4199 -0.9937 0.2354
--0.4536 -4.019 -0.3526 -0.9937 0.2837
--0.4592 -4.069 -0.2871 -0.9937 0.3312
--0.4642 -4.113 -0.2241 -0.9937 0.378
--0.4683 -4.15 -0.1639 -0.9937 0.4238
--0.4717 -4.179 -0.1072 -0.9937 0.4685
--0.4742 -4.202 -0.05439 -0.9937 0.5121
--0.4758 -4.216 -0.005803 -0.9937 0.5544
--0.4765 -4.222 0.03819 -0.9937 0.5953
--0.4762 -4.22 0.07732 -0.9937 0.6347
--0.475 -4.209 0.1114 -0.9937 0.6725
--0.4728 -4.189 0.1401 -0.9937 0.7087
--0.4696 -4.161 0.1636 -0.9937 0.743
--0.4655 -4.125 0.1817 -0.9937 0.7756
--0.4605 -4.08 0.1944 -0.9937 0.8061
--0.4545 -4.027 0.2019 -0.9937 0.8347
--0.4477 -3.966 0.2043 -0.9937 0.8612
--0.44 -3.898 0.2018 -0.9937 0.8855
--0.4316 -3.824 0.1947 -0.9937 0.9076
--0.4224 -3.743 0.1833 -0.9937 0.9275
--0.4126 -3.656 0.168 -0.9937 0.945
--0.4022 -3.564 0.1491 -0.9937 0.9602
--0.3913 -3.467 0.1273 -0.9937 0.9729
--0.38 -3.367 0.1028 -0.9937 0.9833
--0.3684 -3.264 0.07636 -0.9937 0.9911
--0.3565 -3.159 0.04838 -0.9937 0.9965
--0.3445 -3.052 0.01945 -0.9937 0.9994
--0.187 -2.994 0 -0.9981 1
--0.1804 -2.887 -0.03193 -0.9981 0.9988
--0.1738 -2.781 -0.06327 -0.9981 0.995
--0.1672 -2.677 -0.09343 -0.9981 0.9888
--0.1609 -2.575 -0.1218 -0.9981 0.9801
--0.1547 -2.476 -0.148 -0.9981 0.9689
--0.1488 -2.381 -0.1712 -0.9981 0.9553
--0.1431 -2.291 -0.1912 -0.9981 0.9394
--0.1378 -2.206 -0.2074 -0.9981 0.9211
--0.1329 -2.127 -0.2193 -0.9981 0.9004
--0.1283 -2.054 -0.2267 -0.9981 0.8776
--0.1242 -1.989 -0.2293 -0.9981 0.8525
--0.1206 -1.93 -0.2267 -0.9981 0.8253
--0.1174 -1.88 -0.2187 -0.9981 0.7961
--0.1148 -1.837 -0.2052 -0.9981 0.7648
--0.1126 -1.803 -0.1862 -0.9981 0.7317
--0.111 -1.777 -0.1616 -0.9981 0.6967
--0.1099 -1.759 -0.1315 -0.9981 0.66
--0.1094 -1.75 -0.0959 -0.9981 0.6216
--0.1093 -1.75 -0.05511 -0.9981 0.5817
--0.1098 -1.758 -0.009325 -0.9981 0.5403
--0.1108 -1.773 0.04115 -0.9981 0.4976
--0.1123 -1.797 0.09594 -0.9981 0.4536
--0.1142 -1.828 0.1546 -0.9981 0.4085
--0.1166 -1.866 0.2168 -0.9981 0.3624
--0.1193 -1.91 0.2819 -0.9981 0.3153
--0.1225 -1.961 0.3493 -0.9981 0.2675
--0.126 -2.017 0.4185 -0.9981 0.219
--0.1298 -2.077 0.4888 -0.9981 0.17
--0.1338 -2.142 0.5597 -0.9981 0.1205
--0.138 -2.21 0.6304 -0.9981 0.07074
--0.1425 -2.281 0.7002 -0.9981 0.02079
--0.147 -2.354 0.7685 -0.9981 -0.0292
--0.1517 -2.428 0.8345 -0.9981 -0.07912
--0.1563 -2.502 0.8977 -0.9981 -0.1288
--0.161 -2.577 0.9573 -0.9981 -0.1782
--0.1656 -2.651 1.013 -0.9981 -0.2272
--0.1701 -2.723 1.063 -0.9981 -0.2756
--0.1745 -2.793 1.109 -0.9981 -0.3233
--0.1786 -2.86 1.148 -0.9981 -0.3702
--0.1826 -2.923 1.181 -0.9981 -0.4161
--0.1863 -2.983 1.207 -0.9981 -0.4611
--0.1898 -3.038 1.226 -0.9981 -0.5048
--0.1929 -3.089 1.237 -0.9981 -0.5474
--0.1958 -3.134 1.241 -0.9981 -0.5885
--0.1982 -3.174 1.236 -0.9981 -0.6282
--0.2004 -3.207 1.224 -0.9981 -0.6663
--0.2021 -3.235 1.203 -0.9981 -0.7027
--0.2035 -3.257 1.174 -0.9981 -0.7374
--0.2045 -3.273 1.138 -0.9981 -0.7702
--0.2051 -3.283 1.093 -0.9981 -0.8011
--0.2053 -3.286 1.04 -0.9981 -0.8301
--0.2052 -3.285 0.9806 -0.9981 -0.8569
--0.2047 -3.277 0.9139 -0.9981 -0.8816
--0.2039 -3.264 0.8406 -0.9981 -0.9041
--0.2028 -3.247 0.7613 -0.9981 -0.9243
--0.2014 -3.224 0.6764 -0.9981 -0.9422
--0.1998 -3.198 0.5866 -0.9981 -0.9578
--0.1979 -3.169 0.4925 -0.9981 -0.971
--0.1959 -3.136 0.3948 -0.9981 -0.9817
--0.1937 -3.101 0.2942 -0.9981 -0.99
--0.1914 -3.064 0.1914 -0.9981 -0.9958
--0.189 -3.026 0.0872 -0.9981 -0.9991
--0.1866 -2.988 -0.01764 -0.9981 -1
--0.1842 -2.949 -0.1223 -0.9981 -0.9983
--0.1819 -2.912 -0.2261 -0.9981 -0.9941
--0.1796 -2.875 -0.3283 -0.9981 -0.9875
--0.1775 -2.841 -0.428 -0.9981 -0.9784
--0.1755 -2.809 -0.5246 -0.9981 -0.9668
--0.1737 -2.781 -0.6173 -0.9981 -0.9528
--0.1722 -2.756 -0.7055 -0.9981 -0.9365
--0.1709 -2.735 -0.7886 -0.9981 -0.9178
--0.1699 -2.719 -0.8659 -0.9981 -0.8968
--0.1692 -2.708 -0.9371 -0.9981 -0.8735
--0.1688 -2.703 -1.002 -0.9981 -0.8481
--0.1688 -2.702 -1.059 -0.9981 -0.8206
--0.1692 -2.708 -1.109 -0.9981 -0.791
--0.1699 -2.72 -1.151 -0.9981 -0.7594
--0.171 -2.738 -1.185 -0.9981 -0.7259
--0.1725 -2.762 -1.211 -0.9981 -0.6907
--0.1744 -2.792 -1.229 -0.9981 -0.6536
--0.1766 -2.828 -1.239 -0.9981 -0.615
--0.1792 -2.869 -1.241 -0.9981 -0.5748
--0.1822 -2.916 -1.234 -0.9981 -0.5332
--0.1854 -2.968 -1.22 -0.9981 -0.4903
--0.189 -3.025 -1.199 -0.9981 -0.4461
--0.1928 -3.086 -1.171 -0.9981 -0.4008
--0.1968 -3.151 -1.135 -0.9981 -0.3545
--0.2011 -3.219 -1.094 -0.9981 -0.3073
--0.2055 -3.29 -1.047 -0.9981 -0.2594
--0.21 -3.362 -0.9946 -0.9981 -0.2108
--0.2147 -3.436 -0.9377 -0.9981 -0.1617
--0.2193 -3.511 -0.8768 -0.9981 -0.1122
--0.224 -3.586 -0.8126 -0.9981 -0.06235
--0.2286 -3.659 -0.7457 -0.9981 -0.01239
--0.2331 -3.732 -0.6768 -0.9981 0.0376
--0.2375 -3.802 -0.6067 -0.9981 0.0875
--0.2417 -3.869 -0.5359 -0.9981 0.1372
--0.2456 -3.932 -0.4651 -0.9981 0.1865
--0.2493 -3.991 -0.3951 -0.9981 0.2354
--0.2527 -4.045 -0.3264 -0.9981 0.2837
--0.2557 -4.094 -0.2597 -0.9981 0.3312
--0.2584 -4.136 -0.1955 -0.9981 0.378
--0.2606 -4.172 -0.1345 -0.9981 0.4238
--0.2624 -4.2 -0.07706 -0.9981 0.4685
--0.2637 -4.221 -0.02367 -0.9981 0.5121
--0.2645 -4.234 0.02526 -0.9981 0.5544
--0.2648 -4.239 0.0694 -0.9981 0.5953
--0.2646 -4.236 0.1085 -0.9981 0.6347
--0.2639 -4.224 0.1422 -0.9981 0.6725
--0.2626 -4.204 0.1705 -0.9981 0.7087
--0.2608 -4.175 0.1932 -0.9981 0.743
--0.2585 -4.138 0.2104 -0.9981 0.7756
--0.2557 -4.092 0.222 -0.9981 0.8061
--0.2523 -4.039 0.2281 -0.9981 0.8347
--0.2485 -3.978 0.229 -0.9981 0.8612
--0.2443 -3.91 0.2248 -0.9981 0.8855
--0.2396 -3.835 0.2158 -0.9981 0.9076
--0.2345 -3.754 0.2024 -0.9981 0.9275
--0.2291 -3.667 0.1849 -0.9981 0.945
--0.2234 -3.575 0.1638 -0.9981 0.9602
--0.2173 -3.479 0.1395 -0.9981 0.9729
--0.2111 -3.379 0.1125 -0.9981 0.9833
--0.2047 -3.276 0.08346 -0.9981 0.9911
--0.1981 -3.171 0.05283 -0.9981 0.9965
--0.1915 -3.065 0.02123 -0.9981 0.9994
--0.03717 -3 0 -0.9999 1
--0.03585 -2.894 -0.0346 -0.9999 0.9988
--0.03455 -2.788 -0.06858 -0.9999 0.995
--0.03326 -2.685 -0.1013 -0.9999 0.9888
--0.032 -2.583 -0.1323 -0.9999 0.9801
--0.03079 -2.485 -0.1609 -0.9999 0.9689
--0.02962 -2.39 -0.1865 -0.9999 0.9553
--0.0285 -2.301 -0.2087 -0.9999 0.9394
--0.02745 -2.216 -0.227 -0.9999 0.9211
--0.02647 -2.137 -0.241 -0.9999 0.9004
--0.02558 -2.064 -0.2502 -0.9999 0.8776
--0.02476 -1.998 -0.2544 -0.9999 0.8525
--0.02404 -1.94 -0.2532 -0.9999 0.8253
--0.0234 -1.889 -0.2465 -0.9999 0.7961
--0.02287 -1.846 -0.2341 -0.9999 0.7648
--0.02244 -1.811 -0.216 -0.9999 0.7317
--0.02211 -1.785 -0.192 -0.9999 0.6967
--0.02188 -1.766 -0.1623 -0.9999 0.66
--0.02176 -1.757 -0.127 -0.9999 0.6216
--0.02174 -1.755 -0.08625 -0.9999 0.5817
--0.02183 -1.762 -0.04029 -0.9999 0.5403
--0.02201 -1.776 0.01056 -0.9999 0.4976
--0.02228 -1.798 0.06593 -0.9999 0.4536
--0.02265 -1.828 0.1254 -0.9999 0.4085
--0.0231 -1.864 0.1885 -0.9999 0.3624
--0.02363 -1.907 0.2546 -0.9999 0.3153
--0.02423 -1.956 0.3233 -0.9999 0.2675
--0.0249 -2.01 0.3939 -0.9999 0.219
--0.02563 -2.069 0.4657 -0.9999 0.17
--0.02641 -2.132 0.5382 -0.9999 0.1205
--0.02724 -2.198 0.6105 -0.9999 0.07074
--0.0281 -2.268 0.6821 -0.9999 0.02079
--0.02898 -2.339 0.7522 -0.9999 -0.0292
--0.02988 -2.412 0.8201 -0.9999 -0.07912
--0.03079 -2.485 0.8851 -0.9999 -0.1288
--0.03169 -2.558 0.9466 -0.9999 -0.1782
--0.03259 -2.63 1.004 -0.9999 -0.2272
--0.03347 -2.701 1.056 -0.9999 -0.2756
--0.03432 -2.77 1.103 -0.9999 -0.3233
--0.03514 -2.836 1.144 -0.9999 -0.3702
--0.03592 -2.899 1.179 -0.9999 -0.4161
--0.03665 -2.958 1.206 -0.9999 -0.4611
--0.03733 -3.013 1.227 -0.9999 -0.5048
--0.03796 -3.063 1.239 -0.9999 -0.5474
--0.03852 -3.109 1.244 -0.9999 -0.5885
--0.03901 -3.148 1.241 -0.9999 -0.6282
--0.03943 -3.183 1.229 -0.9999 -0.6663
--0.03979 -3.211 1.209 -0.9999 -0.7027
--0.04007 -3.234 1.181 -0.9999 -0.7374
--0.04027 -3.251 1.144 -0.9999 -0.7702
--0.04041 -3.261 1.1 -0.9999 -0.8011
--0.04047 -3.267 1.047 -0.9999 -0.8301
--0.04047 -3.266 0.9876 -0.9999 -0.8569
--0.04039 -3.26 0.9207 -0.9999 -0.8816
--0.04026 -3.249 0.8471 -0.9999 -0.9041
--0.04006 -3.234 0.7673 -0.9999 -0.9243
--0.03981 -3.213 0.6819 -0.9999 -0.9422
--0.03952 -3.19 0.5915 -0.9999 -0.9578
--0.03918 -3.162 0.4967 -0.9999 -0.971
--0.0388 -3.132 0.3982 -0.9999 -0.9817
--0.0384 -3.099 0.2968 -0.9999 -0.99
--0.03798 -3.065 0.1931 -0.9999 -0.9958
--0.03754 -3.03 0.08797 -0.9999 -0.9991
--0.03709 -2.994 -0.0178 -0.9999 -1
--0.03665 -2.958 -0.1234 -0.9999 -0.9983
--0.03621 -2.923 -0.2281 -0.9999 -0.9941
--0.03579 -2.889 -0.3312 -0.9999 -0.9875
--0.0354 -2.857 -0.4317 -0.9999 -0.9784
--0.03504 -2.828 -0.529 -0.9999 -0.9668
--0.03471 -2.802 -0.6224 -0.9999 -0.9528
--0.03443 -2.779 -0.7112 -0.9999 -0.9365
--0.0342 -2.76 -0.7948 -0.9999 -0.9178
--0.03402 -2.746 -0.8726 -0.9999 -0.8968
--0.03391 -2.737 -0.9439 -0.9999 -0.8735
--0.03386 -2.733 -1.008 -0.9999 -0.8481
--0.03387 -2.734 -1.066 -0.9999 -0.8206
--0.03396 -2.741 -1.115 -0.9999 -0.791
--0.03412 -2.754 -1.157 -0.9999 -0.7594
--0.03435 -2.773 -1.191 -0.9999 -0.7259
--0.03466 -2.797 -1.216 -0.9999 -0.6907
--0.03503 -2.828 -1.234 -0.9999 -0.6536
--0.03548 -2.864 -1.243 -0.9999 -0.615
--0.036 -2.905 -1.243 -0.9999 -0.5748
--0.03658 -2.952 -1.236 -0.9999 -0.5332
--0.03722 -3.004 -1.221 -0.9999 -0.4903
--0.03792 -3.061 -1.198 -0.9999 -0.4461
--0.03867 -3.121 -1.168 -0.9999 -0.4008
--0.03946 -3.185 -1.131 -0.9999 -0.3545
--0.04029 -3.252 -1.088 -0.9999 -0.3073
--0.04116 -3.322 -1.039 -0.9999 -0.2594
--0.04204 -3.393 -0.9851 -0.9999 -0.2108
--0.04294 -3.466 -0.9263 -0.9999 -0.1617
--0.04385 -3.539 -0.8636 -0.9999 -0.1122
--0.04476 -3.613 -0.7975 -0.9999 -0.06235
--0.04565 -3.685 -0.7288 -0.9999 -0.01239
--0.04653 -3.755 -0.6582 -0.9999 0.0376
--0.04737 -3.824 -0.5862 -0.9999 0.0875
--0.04818 -3.889 -0.5138 -0.9999 0.1372
--0.04895 -3.951 -0.4415 -0.9999 0.1865
--0.04966 -4.008 -0.37 -0.9999 0.2354
--0.05031 -4.061 -0.3 -0.9999 0.2837
--0.05089 -4.107 -0.2321 -0.9999 0.3312
--0.05139 -4.148 -0.1669 -0.9999 0.378
--0.05182 -4.182 -0.105 -0.9999 0.4238
--0.05215 -4.209 -0.04683 -0.9999 0.4685
--0.0524 -4.229 0.007065 -0.9999 0.5121
--0.05254 -4.241 0.05631 -0.9999 0.5544
--0.05259 -4.245 0.1006 -0.9999 0.5953
--0.05254 -4.241 0.1395 -0.9999 0.6347
--0.05238 -4.228 0.173 -0.9999 0.6725
--0.05212 -4.207 0.2007 -0.9999 0.7087
--0.05176 -4.178 0.2227 -0.9999 0.743
--0.05129 -4.14 0.239 -0.9999 0.7756
--0.05073 -4.094 0.2494 -0.9999 0.8061
--0.05006 -4.041 0.2542 -0.9999 0.8347
--0.04931 -3.98 0.2536 -0.9999 0.8612
--0.04846 -3.912 0.2477 -0.9999 0.8855
--0.04754 -3.837 0.2368 -0.9999 0.9076
--0.04653 -3.756 0.2213 -0.9999 0.9275
--0.04546 -3.669 0.2017 -0.9999 0.945
--0.04433 -3.578 0.1783 -0.9999 0.9602
--0.04314 -3.482 0.1516 -0.9999 0.9729
--0.04191 -3.383 0.1221 -0.9999 0.9833
--0.04064 -3.28 0.0905 -0.9999 0.9911
--0.03935 -3.176 0.05726 -0.9999 0.9965
--0.03804 -3.07 0.023 -0.9999 0.9994
-0.1128 -2.998 0 -0.9993 1
-0.1088 -2.893 -0.03724 -0.9993 0.9988
-0.1049 -2.788 -0.07384 -0.9993 0.995
-0.1011 -2.685 -0.1092 -0.9993 0.9888
-0.09727 -2.585 -0.1427 -0.9993 0.9801
-0.0936 -2.487 -0.1737 -0.9993 0.9689
-0.09007 -2.394 -0.2017 -0.9993 0.9553
-0.08672 -2.305 -0.2262 -0.9993 0.9394
-0.08355 -2.22 -0.2466 -0.9993 0.9211
-0.08059 -2.142 -0.2625 -0.9993 0.9004
-0.07787 -2.069 -0.2735 -0.9993 0.8776
-0.0754 -2.004 -0.2793 -0.9993 0.8525
-0.0732 -1.945 -0.2796 -0.9993 0.8253
-0.07128 -1.894 -0.2742 -0.9993 0.7961
-0.06965 -1.851 -0.2629 -0.9993 0.7648
-0.06833 -1.816 -0.2456 -0.9993 0.7317
-0.0673 -1.789 -0.2224 -0.9993 0.6967
-0.06659 -1.77 -0.1931 -0.9993 0.66
-0.06619 -1.759 -0.1581 -0.9993 0.6216
-0.06609 -1.756 -0.1173 -0.9993 0.5817
-0.0663 -1.762 -0.07123 -0.9993 0.5403
-0.0668 -1.775 -0.02003 -0.9993 0.4976
-0.06758 -1.796 0.03587 -0.9993 0.4536
-0.06863 -1.824 0.09606 -0.9993 0.4085
-0.06994 -1.859 0.16 -0.9993 0.3624
-0.07149 -1.9 0.2272 -0.9993 0.3153
-0.07326 -1.947 0.2971 -0.9993 0.2675
-0.07523 -1.999 0.369 -0.9993 0.219
-0.07738 -2.056 0.4423 -0.9993 0.17
-0.07968 -2.118 0.5163 -0.9993 0.1205
-0.08211 -2.182 0.5903 -0.9993 0.07074
-0.08464 -2.249 0.6636 -0.9993 0.02079
-0.08726 -2.319 0.7354 -0.9993 -0.0292
-0.08992 -2.39 0.8051 -0.9993 -0.07912
-0.09261 -2.461 0.872 -0.9993 -0.1288
-0.09531 -2.533 0.9352 -0.9993 -0.1782
-0.09797 -2.604 0.9943 -0.9993 -0.2272
-0.1006 -2.673 1.048 -0.9993 -0.2756
-0.1031 -2.741 1.097 -0.9993 -0.3233
-0.1056 -2.806 1.14 -0.9993 -0.3702
-0.1079 -2.868 1.176 -0.9993 -0.4161
-0.1101 -2.926 1.205 -0.9993 -0.4611
-0.1122 -2.981 1.227 -0.9993 -0.5048
-0.114 -3.031 1.24 -0.9993 -0.5474
-0.1157 -3.076 1.246 -0.9993 -0.5885
-0.1172 -3.115 1.244 -0.9993 -0.6282
-0.1185 -3.15 1.233 -0.9993 -0.6663
-0.1196 -3.179 1.214 -0.9993 -0.7027
-0.1205 -3.202 1.186 -0.9993 -0.7374
-0.1212 -3.22 1.15 -0.9993 -0.7702
-0.1216 -3.232 1.106 -0.9993 -0.8011
-0.1219 -3.238 1.054 -0.9993 -0.8301
-0.1219 -3.239 0.9939 -0.9993 -0.8569
-0.1217 -3.235 0.9269 -0.9993 -0.8816
-0.1214 -3.226 0.8531 -0.9993 -0.9041
-0.1209 -3.212 0.7729 -0.9993 -0.9243
-0.1202 -3.194 0.6871 -0.9993 -0.9422
-0.1194 -3.173 0.5961 -0.9993 -0.9578
-0.1184 -3.148 0.5006 -0.9993 -0.971
-0.1174 -3.12 0.4014 -0.9993 -0.9817
-0.1163 -3.09 0.2991 -0.9993 -0.99
-0.1151 -3.058 0.1947 -0.9993 -0.9958
-0.1138 -3.026 0.08869 -0.9993 -0.9991
-0.1126 -2.992 -0.01794 -0.9993 -1
-0.1113 -2.959 -0.1244 -0.9993 -0.9983
-0.1101 -2.927 -0.23 -0.9993 -0.9941
-0.109 -2.895 -0.3338 -0.9993 -0.9875
-0.1079 -2.866 -0.4351 -0.9993 -0.9784
-0.1068 -2.839 -0.5332 -0.9993 -0.9668
-0.1059 -2.815 -0.6272 -0.9993 -0.9528
-0.1052 -2.795 -0.7165 -0.9993 -0.9365
-0.1045 -2.778 -0.8006 -0.9993 -0.9178
-0.1041 -2.766 -0.8786 -0.9993 -0.8968
-0.1038 -2.759 -0.9502 -0.9993 -0.8735
-0.1037 -2.756 -1.015 -0.9993 -0.8481
-0.1038 -2.759 -1.072 -0.9993 -0.8206
-0.1041 -2.767 -1.122 -0.9993 -0.791
-0.1047 -2.781 -1.163 -0.9993 -0.7594
-0.1054 -2.801 -1.196 -0.9993 -0.7259
-0.1063 -2.826 -1.221 -0.9993 -0.6907
-0.1075 -2.857 -1.238 -0.9993 -0.6536
-0.1089 -2.893 -1.246 -0.9993 -0.615
-0.1104 -2.935 -1.245 -0.9993 -0.5748
-0.1122 -2.981 -1.237 -0.9993 -0.5332
-0.1141 -3.033 -1.22 -0.9993 -0.4903
-0.1162 -3.089 -1.196 -0.9993 -0.4461
-0.1185 -3.148 -1.165 -0.9993 -0.4008
-0.1208 -3.211 -1.126 -0.9993 -0.3545
-0.1233 -3.277 -1.081 -0.9993 -0.3073
-0.1259 -3.346 -1.031 -0.9993 -0.2594
-0.1285 -3.416 -0.9749 -0.9993 -0.2108
-0.1312 -3.487 -0.9144 -0.9993 -0.1617
-0.1339 -3.559 -0.8499 -0.9993 -0.1122
-0.1366 -3.63 -0.782 -0.9993 -0.06235
-0.1392 -3.7 -0.7115 -0.9993 -0.01239
-0.1418 -3.769 -0.6391 -0.9993 0.0376
-0.1443 -3.836 -0.5655 -0.9993 0.0875
-0.1467 -3.899 -0.4914 -0.9993 0.1372
-0.149 -3.959 -0.4175 -0.9993 0.1865
-0.1511 -4.015 -0.3446 -0.9993 0.2354
-0.153 -4.065 -0.2733 -0.9993 0.2837
-0.1547 -4.11 -0.2043 -0.9993 0.3312
-0.1561 -4.149 -0.1381 -0.9993 0.378
-0.1574 -4.182 -0.07537 -0.9993 0.4238
-0.1583 -4.208 -0.01657 -0.9993 0.4685
-0.159 -4.226 0.0378 -0.9993 0.5121
-0.1594 -4.237 0.08732 -0.9993 0.5544
-0.1595 -4.239 0.1317 -0.9993 0.5953
-0.1593 -4.234 0.1705 -0.9993 0.6347
-0.1588 -4.221 0.2036 -0.9993 0.6725
-0.158 -4.199 0.2308 -0.9993 0.7087
-0.1569 -4.169 0.2521 -0.9993 0.743
-0.1554 -4.131 0.2674 -0.9993 0.7756
-0.1537 -4.085 0.2767 -0.9993 0.8061
-0.1517 -4.032 0.2802 -0.9993 0.8347
-0.1494 -3.971 0.278 -0.9993 0.8612
-0.1469 -3.903 0.2704 -0.9993 0.8855
-0.1441 -3.828 0.2577 -0.9993 0.9076
-0.141 -3.748 0.2402 -0.9993 0.9275
-0.1378 -3.662 0.2184 -0.9993 0.945
-0.1344 -3.571 0.1927 -0.9993 0.9602
-0.1308 -3.476 0.1636 -0.9993 0.9729
-0.1271 -3.377 0.1317 -0.9993 0.9833
-0.1233 -3.276 0.09748 -0.9993 0.9911
-0.1194 -3.172 0.06164 -0.9993 0.9965
-0.1154 -3.068 0.02475 -0.9993 0.9994
-0.2625 -2.988 0 -0.9962 1
-0.2534 -2.885 -0.03986 -0.9962 0.9988
-0.2443 -2.781 -0.07906 -0.9962 0.995
-0.2354 -2.68 -0.117 -0.9962 0.9888
-0.2267 -2.581 -0.153 -0.9962 0.9801
-0.2182 -2.484 -0.1864 -0.9962 0.9689
-0.2101 -2.391 -0.2168 -0.9962 0.9553
-0.2023 -2.303 -0.2434 -0.9962 0.9394
-0.195 -2.22 -0.2659 -0.9962 0.9211
-0.1881 -2.142 -0.2838 -0.9962 0.9004
-0.1818 -2.07 -0.2967 -0.9962 0.8776
-0.1761 -2.005 -0.3041 -0.9962 0.8525
-0.171 -1.947 -0.3059 -0.9962 0.8253
-0.1665 -1.896 -0.3017 -0.9962 0.7961
-0.1627 -1.852 -0.2915 -0.9962 0.7648
-0.1596 -1.817 -0.2751 -0.9962 0.7317
-0.1571 -1.789 -0.2525 -0.9962 0.6967
-0.1554 -1.769 -0.2238 -0.9962 0.66
-0.1544 -1.758 -0.189 -0.9962 0.6216
-0.1541 -1.754 -0.1484 -0.9962 0.5817
-0.1545 -1.759 -0.1021 -0.9962 0.5403
-0.1555 -1.77 -0.05061 -0.9962 0.4976
-0.1572 -1.79 0.005798 -0.9962 0.4536
-0.1595 -1.816 0.06666 -0.9962 0.4085
-0.1624 -1.849 0.1315 -0.9962 0.3624
-0.1659 -1.889 0.1997 -0.9962 0.3153
-0.1699 -1.934 0.2707 -0.9962 0.2675
-0.1743 -1.984 0.3439 -0.9962 0.219
-0.1791 -2.039 0.4186 -0.9962 0.17
-0.1843 -2.098 0.4941 -0.9962 0.1205
-0.1898 -2.161 0.5697 -0.9962 0.07074
-0.1955 -2.226 0.6447 -0.9962 0.02079
-0.2015 -2.294 0.7182 -0.9962 -0.0292
-0.2075 -2.362 0.7897 -0.9962 -0.07912
-0.2136 -2.432 0.8583 -0.9962 -0.1288
-0.2197 -2.502 0.9233 -0.9962 -0.1782
-0.2258 -2.571 0.9841 -0.9962 -0.2272
-0.2318 -2.639 1.04 -0.9962 -0.2756
-0.2376 -2.705 1.09 -0.9962 -0.3233
-0.2432 -2.769 1.135 -0.9962 -0.3702
-0.2486 -2.83 1.172 -0.9962 -0.4161
-0.2536 -2.887 1.203 -0.9962 -0.4611
-0.2583 -2.941 1.226 -0.9962 -0.5048
-0.2626 -2.99 1.241 -0.9962 -0.5474
-0.2666 -3.035 1.248 -0.9962 -0.5885
-0.2701 -3.075 1.246 -0.9962 -0.6282
-0.2731 -3.109 1.236 -0.9962 -0.6663
-0.2757 -3.139 1.218 -0.9962 -0.7027
-0.2778 -3.163 1.191 -0.9962 -0.7374
-0.2794 -3.181 1.155 -0.9962 -0.7702
-0.2806 -3.194 1.111 -0.9962 -0.8011
-0.2812 -3.202 1.059 -0.9962 -0.8301
-0.2815 -3.204 0.9997 -0.9962 -0.8569
-0.2812 -3.202 0.9325 -0.9962 -0.8816
-0.2806 -3.195 0.8585 -0.9962 -0.9041
-0.2796 -3.183 0.7781 -0.9962 -0.9243
-0.2782 -3.167 0.6918 -0.9962 -0.9422
-0.2765 -3.148 0.6003 -0.9962 -0.9578
-0.2745 -3.125 0.5042 -0.9962 -0.971
-0.2723 -3.1 0.4043 -0.9962 -0.9817
-0.2699 -3.073 0.3014 -0.9962 -0.99
-0.2674 -3.044 0.1961 -0.9962 -0.9958
-0.2647 -3.014 0.08936 -0.9962 -0.9991
-0.262 -2.983 -0.01808 -0.9962 -1
-0.2594 -2.953 -0.1254 -0.9962 -0.9983
-0.2568 -2.923 -0.2317 -0.9962 -0.9941
-0.2543 -2.895 -0.3363 -0.9962 -0.9875
-0.2519 -2.868 -0.4383 -0.9962 -0.9784
-0.2498 -2.844 -0.537 -0.9962 -0.9668
-0.2479 -2.822 -0.6316 -0.9962 -0.9528
-0.2463 -2.804 -0.7214 -0.9962 -0.9365
-0.245 -2.79 -0.8058 -0.9962 -0.9178
-0.2441 -2.78 -0.8842 -0.9962 -0.8968
-0.2436 -2.774 -0.9559 -0.9962 -0.8735
-0.2436 -2.773 -1.021 -0.9962 -0.8481
-0.2439 -2.777 -1.078 -0.9962 -0.8206
-0.2448 -2.787 -1.127 -0.9962 -0.791
-0.2461 -2.802 -1.168 -0.9962 -0.7594
-0.2479 -2.822 -1.201 -0.9962 -0.7259
-0.2501 -2.848 -1.225 -0.9962 -0.6907
-0.2529 -2.879 -1.241 -0.9962 -0.6536
-0.2561 -2.915 -1.248 -0.9962 -0.615
-0.2597 -2.957 -1.246 -0.9962 -0.5748
-0.2638 -3.003 -1.237 -0.9962 -0.5332
-0.2682 -3.054 -1.219 -0.9962 -0.4903
-0.2731 -3.109 -1.193 -0.9962 -0.4461
-0.2782 -3.167 -1.16 -0.9962 -0.4008
-0.2836 -3.229 -1.12 -0.9962 -0.3545
-0.2893 -3.294 -1.074 -0.9962 -0.3073
-0.2952 -3.361 -1.022 -0.9962 -0.2594
-0.3012 -3.429 -0.9642 -0.9962 -0.2108
-0.3073 -3.499 -0.9019 -0.9962 -0.1617
-0.3134 -3.568 -0.8356 -0.9962 -0.1122
-0.3195 -3.638 -0.7659 -0.9962 -0.06235
-0.3255 -3.706 -0.6937 -0.9962 -0.01239
-0.3314 -3.773 -0.6196 -0.9962 0.0376
-0.3371 -3.838 -0.5443 -0.9962 0.0875
-0.3425 -3.899 -0.4687 -0.9962 0.1372
-0.3475 -3.957 -0.3934 -0.9962 0.1865
-0.3522 -4.01 -0.3191 -0.9962 0.2354
-0.3565 -4.059 -0.2466 -0.9962 0.2837
-0.3603 -4.102 -0.1764 -0.9962 0.3312
-0.3636 -4.139 -0.1093 -0.9962 0.378
-0.3663 -4.17 -0.04573 -0.9962 0.4238
-0.3684 -4.194 0.01369 -0.9962 0.4685
-0.3699 -4.211 0.0685 -0.9962 0.5121
-0.3707 -4.221 0.1183 -0.9962 0.5544
-0.3709 -4.222 0.1627 -0.9962 0.5953
-0.3703 -4.216 0.2014 -0.9962 0.6347
-0.3691 -4.202 0.2341 -0.9962 0.6725
-0.3671 -4.18 0.2608 -0.9962 0.7087
-0.3645 -4.149 0.2813 -0.9962 0.743
-0.3611 -4.111 0.2956 -0.9962 0.7756
-0.3571 -4.065 0.3038 -0.9962 0.8061
-0.3524 -4.012 0.3059 -0.9962 0.8347
-0.347 -3.951 0.3022 -0.9962 0.8612
-0.3411 -3.883 0.2929 -0.9962 0.8855
-0.3346 -3.81 0.2783 -0.9962 0.9076
-0.3276 -3.73 0.2589 -0.9962 0.9275
-0.3201 -3.645 0.2349 -0.9962 0.945
-0.3122 -3.555 0.2069 -0.9962 0.9602
-0.304 -3.461 0.1755 -0.9962 0.9729
-0.2954 -3.363 0.1411 -0.9962 0.9833
-0.2866 -3.263 0.1044 -0.9962 0.9911
-0.2776 -3.161 0.06599 -0.9962 0.9965
-0.2686 -3.057 0.02649 -0.9962 0.9994
-0.4115 -2.972 0 -0.9905 1
-0.3974 -2.869 -0.04245 -0.9905 0.9988
-0.3833 -2.768 -0.08423 -0.9905 0.995
-0.3694 -2.668 -0.1247 -0.9905 0.9888
-0.3559 -2.57 -0.1632 -0.9905 0.9801
-0.3427 -2.475 -0.199 -0.9905 0.9689
-0.3301 -2.384 -0.2317 -0.9905 0.9553
-0.318 -2.296 -0.2605 -0.9905 0.9394
-0.3066 -2.214 -0.2851 -0.9905 0.9211
-0.296 -2.137 -0.305 -0.9905 0.9004
-0.2861 -2.066 -0.3196 -0.9905 0.8776
-0.2772 -2.001 -0.3287 -0.9905 0.8525
-0.2691 -1.944 -0.3319 -0.9905 0.8253
-0.2621 -1.893 -0.3291 -0.9905 0.7961
-0.2561 -1.849 -0.3199 -0.9905 0.7648
-0.2511 -1.814 -0.3044 -0.9905 0.7317
-0.2473 -1.785 -0.2826 -0.9905 0.6967
-0.2445 -1.765 -0.2543 -0.9905 0.66
-0.2428 -1.753 -0.2198 -0.9905 0.6216
-0.2421 -1.748 -0.1793 -0.9905 0.5817
-0.2426 -1.752 -0.133 -0.9905 0.5403
-0.244 -1.762 -0.08116 -0.9905 0.4976
-0.2465 -1.78 -0.02428 -0.9905 0.4536
-0.2499 -1.805 0.03722 -0.9905 0.4085
-0.2543 -1.836 0.1028 -0.9905 0.3624
-0.2594 -1.873 0.172 -0.9905 0.3153
-0.2654 -1.917 0.2442 -0.9905 0.2675
-0.2721 -1.965 0.3186 -0.9905 0.219
-0.2794 -2.018 0.3947 -0.9905 0.17
-0.2873 -2.075 0.4716 -0.9905 0.1205
-0.2956 -2.135 0.5488 -0.9905 0.07074
-0.3044 -2.198 0.6253 -0.9905 0.02079
-0.3134 -2.263 0.7006 -0.9905 -0.0292
-0.3226 -2.33 0.7737 -0.9905 -0.07912
-0.332 -2.397 0.844 -0.9905 -0.1288
-0.3414 -2.465 0.9108 -0.9905 -0.1782
-0.3507 -2.532 0.9733 -0.9905 -0.2272
-0.3598 -2.598 1.031 -0.9905 -0.2756
-0.3688 -2.663 1.083 -0.9905 -0.3233
-0.3774 -2.725 1.129 -0.9905 -0.3702
-0.3857 -2.785 1.168 -0.9905 -0.4161
-0.3935 -2.841 1.2 -0.9905 -0.4611
-0.4008 -2.894 1.224 -0.9905 -0.5048
-0.4075 -2.943 1.241 -0.9905 -0.5474
-0.4136 -2.987 1.249 -0.9905 -0.5885
-0.4191 -3.026 1.248 -0.9905 -0.6282
-0.4239 -3.061 1.239 -0.9905 -0.6663
-0.428 -3.091 1.221 -0.9905 -0.7027
-0.4314 -3.115 1.195 -0.9905 -0.7374
-0.4341 -3.134 1.16 -0.9905 -0.7702
-0.436 -3.149 1.116 -0.9905 -0.8011
-0.4373 -3.157 1.064 -0.9905 -0.8301
-0.4378 -3.161 1.005 -0.9905 -0.8569
-0.4377 -3.161 0.9376 -0.9905 -0.8816
-0.437 -3.155 0.8634 -0.9905 -0.9041
-0.4356 -3.146 0.7827 -0.9905 -0.9243
-0.4338 -3.132 0.696 -0.9905 -0.9422
-0.4314 -3.115 0.6041 -0.9905 -0.9578
-0.4286 -3.095 0.5075 -0.9905 -0.971
-0.4255 -3.073 0.407 -0.9905 -0.9817
-0.4221 -3.048 0.3034 -0.9905 -0.99
-0.4185 -3.022 0.1974 -0.9905 -0.9958
-0.4147 -2.995 0.08996 -0.9905 -0.9991
-0.4109 -2.967 -0.0182 -0.9905 -1
-0.4071 -2.939 -0.1262 -0.9905 -0.9983
-0.4033 -2.912 -0.2333 -0.9905 -0.9941
-0.3998 -2.887 -0.3385 -0.9905 -0.9875
-0.3965 -2.863 -0.4412 -0.9905 -0.9784
-0.3934 -2.841 -0.5404 -0.9905 -0.9668
-0.3908 -2.822 -0.6355 -0.9905 -0.9528
-0.3886 -2.806 -0.7258 -0.9905 -0.9365
-0.3869 -2.794 -0.8105 -0.9905 -0.9178
-0.3858 -2.786 -0.8891 -0.9905 -0.8968
-0.3853 -2.782 -0.961 -0.9905 -0.8735
-0.3854 -2.783 -1.026 -0.9905 -0.8481
-0.3861 -2.788 -1.083 -0.9905 -0.8206
-0.3876 -2.799 -1.132 -0.9905 -0.791
-0.3898 -2.815 -1.172 -0.9905 -0.7594
-0.3927 -2.836 -1.205 -0.9905 -0.7259
-0.3963 -2.862 -1.228 -0.9905 -0.6907
-0.4007 -2.893 -1.243 -0.9905 -0.6536
-0.4057 -2.93 -1.249 -0.9905 -0.615
-0.4114 -2.971 -1.247 -0.9905 -0.5748
-0.4178 -3.017 -1.236 -0.9905 -0.5332
-0.4247 -3.067 -1.217 -0.9905 -0.4903
-0.4322 -3.121 -1.19 -0.9905 -0.4461
-0.4401 -3.178 -1.156 -0.9905 -0.4008
-0.4485 -3.239 -1.114 -0.9905 -0.3545
-0.4573 -3.302 -1.066 -0.9905 -0.3073
-0.4663 -3.367 -1.012 -0.9905 -0.2594
-0.4755 -3.434 -0.9528 -0.9905 -0.2108
-0.4849 -3.501 -0.8888 -0.9905 -0.1617
-0.4942 -3.569 -0.8207 -0.9905 -0.1122
-0.5036 -3.636 -0.7494 -0.9905 -0.06235
-0.5127 -3.702 -0.6755 -0.9905 -0.01239
-0.5217 -3.767 -0.5997 -0.9905 0.0376
-0.5303 -3.829 -0.5228 -0.9905 0.0875
-0.5385 -3.888 -0.4457 -0.9905 0.1372
-0.5462 -3.944 -0.369 -0.9905 0.1865
-0.5533 -3.995 -0.2934 -0.9905 0.2354
-0.5597 -4.042 -0.2196 -0.9905 0.2837
-0.5654 -4.083 -0.1484 -0.9905 0.3312
-0.5704 -4.118 -0.08035 -0.9905 0.378
-0.5744 -4.148 -0.01605 -0.9905 0.4238
-0.5775 -4.17 0.04395 -0.9905 0.4685
-0.5796 -4.186 0.09917 -0.9905 0.5121
-0.5808 -4.194 0.1492 -0.9905 0.5544
-0.5808 -4.194 0.1936 -0.9905 0.5953
-0.5798 -4.187 0.2321 -0.9905 0.6347
-0.5778 -4.172 0.2645 -0.9905 0.6725
-0.5746 -4.149 0.2906 -0.9905 0.7087
-0.5704 -4.119 0.3104 -0.9905 0.743
-0.5651 -4.08 0.3237 -0.9905 0.7756
-0.5587 -4.034 0.3307 -0.9905 0.8061
-0.5513 -3.981 0.3315 -0.9905 0.8347
-0.543 -3.921 0.3263 -0.9905 0.8612
-0.5337 -3.854 0.3153 -0.9905 0.8855
-0.5236 -3.781 0.2989 -0.9905 0.9076
-0.5127 -3.702 0.2774 -0.9905 0.9275
-0.5011 -3.618 0.2513 -0.9905 0.945
-0.4888 -3.529 0.2211 -0.9905 0.9602
-0.4759 -3.437 0.1873 -0.9905 0.9729
-0.4627 -3.341 0.1505 -0.9905 0.9833
-0.449 -3.242 0.1113 -0.9905 0.9911
-0.435 -3.141 0.0703 -0.9905 0.9965
-0.4209 -3.04 0.02822 -0.9905 0.9994
-0.5595 -2.947 0 -0.9825 1
-0.5405 -2.847 -0.04502 -0.9825 0.9988
-0.5216 -2.747 -0.08935 -0.9825 0.995
-0.5029 -2.649 -0.1323 -0.9825 0.9888
-0.4847 -2.553 -0.1732 -0.9825 0.9801
-0.467 -2.46 -0.2115 -0.9825 0.9689
-0.4499 -2.37 -0.2464 -0.9825 0.9553
-0.4336 -2.284 -0.2775 -0.9825 0.9394
-0.4183 -2.203 -0.3042 -0.9825 0.9211
-0.4039 -2.127 -0.3259 -0.9825 0.9004
-0.3906 -2.057 -0.3424 -0.9825 0.8776
-0.3784 -1.993 -0.3531 -0.9825 0.8525
-0.3676 -1.936 -0.3578 -0.9825 0.8253
-0.358 -1.886 -0.3562 -0.9825 0.7961
-0.3498 -1.842 -0.3482 -0.9825 0.7648
-0.343 -1.807 -0.3336 -0.9825 0.7317
-0.3376 -1.778 -0.3124 -0.9825 0.6967
-0.3337 -1.758 -0.2847 -0.9825 0.66
-0.3312 -1.744 -0.2505 -0.9825 0.6216
-0.3301 -1.739 -0.2101 -0.9825 0.5817
-0.3305 -1.741 -0.1637 -0.9825 0.5403
-0.3322 -1.75 -0.1117 -0.9825 0.4976
-0.3353 -1.766 -0.05435 -0.9825 0.4536
-0.3397 -1.789 0.007763 -0.9825 0.4085
-0.3453 -1.819 0.07416 -0.9825 0.3624
-0.352 -1.854 0.1443 -0.9825 0.3153
-0.3598 -1.895 0.2175 -0.9825 0.2675
-0.3685 -1.941 0.2931 -0.9825 0.219
-0.3781 -1.992 0.3705 -0.9825 0.17
-0.3885 -2.046 0.4488 -0.9825 0.1205
-0.3995 -2.104 0.5275 -0.9825 0.07074
-0.411 -2.165 0.6056 -0.9825 0.02079
-0.4229 -2.228 0.6825 -0.9825 -0.0292
-0.4351 -2.292 0.7573 -0.9825 -0.07912
-0.4475 -2.357 0.8293 -0.9825 -0.1288
-0.4599 -2.423 0.8977 -0.9825 -0.1782
-0.4723 -2.488 0.9619 -0.9825 -0.2272
-0.4845 -2.552 1.021 -0.9825 -0.2756
-0.4964 -2.615 1.075 -0.9825 -0.3233
-0.5079 -2.675 1.122 -0.9825 -0.3702
-0.5189 -2.733 1.163 -0.9825 -0.4161
-0.5294 -2.789 1.196 -0.9825 -0.4611
-0.5392 -2.84 1.222 -0.9825 -0.5048
-0.5483 -2.888 1.239 -0.9825 -0.5474
-0.5566 -2.932 1.249 -0.9825 -0.5885
-0.564 -2.971 1.249 -0.9825 -0.6282
-0.5706 -3.006 1.241 -0.9825 -0.6663
-0.5763 -3.036 1.224 -0.9825 -0.7027
-0.581 -3.06 1.198 -0.9825 -0.7374
-0.5848 -3.08 1.163 -0.9825 -0.7702
-0.5876 -3.095 1.12 -0.9825 -0.8011
-0.5895 -3.105 1.069 -0.9825 -0.8301
-0.5906 -3.111 1.009 -0.9825 -0.8569
-0.5907 -3.112 0.9421 -0.9825 -0.8816
-0.5901 -3.108 0.8678 -0.9825 -0.9041
-0.5886 -3.101 0.7868 -0.9825 -0.9243
-0.5865 -3.089 0.6999 -0.9825 -0.9422
-0.5837 -3.075 0.6075 -0.9825 -0.9578
-0.5804 -3.057 0.5104 -0.9825 -0.971
-0.5767 -3.038 0.4094 -0.9825 -0.9817
-0.5725 -3.016 0.3052 -0.9825 -0.99
-0.5681 -2.992 0.1986 -0.9825 -0.9958
-0.5634 -2.968 0.09052 -0.9825 -0.9991
-0.5587 -2.943 -0.01831 -0.9825 -1
-0.5541 -2.919 -0.127 -0.9825 -0.9983
-0.5495 -2.894 -0.2347 -0.9825 -0.9941
-0.5451 -2.872 -0.3406 -0.9825 -0.9875
-0.5411 -2.85 -0.4438 -0.9825 -0.9784
-0.5375 -2.831 -0.5436 -0.9825 -0.9668
-0.5343 -2.815 -0.6391 -0.9825 -0.9528
-0.5318 -2.801 -0.7297 -0.9825 -0.9365
-0.5299 -2.791 -0.8148 -0.9825 -0.9178
-0.5287 -2.785 -0.8935 -0.9825 -0.8968
-0.5283 -2.783 -0.9655 -0.9825 -0.8735
-0.5287 -2.785 -1.03 -0.9825 -0.8481
-0.5301 -2.792 -1.087 -0.9825 -0.8206
-0.5323 -2.804 -1.136 -0.9825 -0.791
-0.5355 -2.821 -1.176 -0.9825 -0.7594
-0.5396 -2.842 -1.208 -0.9825 -0.7259
-0.5446 -2.869 -1.231 -0.9825 -0.6907
-0.5506 -2.9 -1.245 -0.9825 -0.6536
-0.5574 -2.936 -1.25 -0.9825 -0.615
-0.5652 -2.977 -1.246 -0.9825 -0.5748
-0.5738 -3.022 -1.234 -0.9825 -0.5332
-0.5831 -3.071 -1.214 -0.9825 -0.4903
-0.5931 -3.124 -1.186 -0.9825 -0.4461
-0.6038 -3.18 -1.15 -0.9825 -0.4008
-0.615 -3.24 -1.107 -0.9825 -0.3545
-0.6267 -3.301 -1.057 -0.9825 -0.3073
-0.6387 -3.364 -1.002 -0.9825 -0.2594
-0.6509 -3.429 -0.9409 -0.9825 -0.2108
-0.6633 -3.494 -0.8752 -0.9825 -0.1617
-0.6758 -3.56 -0.8054 -0.9825 -0.1122
-0.6881 -3.625 -0.7324 -0.9825 -0.06235
-0.7002 -3.688 -0.6568 -0.9825 -0.01239
-0.712 -3.751 -0.5794 -0.9825 0.0376
-0.7234 -3.81 -0.501 -0.9825 0.0875
-0.7342 -3.867 -0.4224 -0.9825 0.1372
-0.7443 -3.92 -0.3443 -0.9825 0.1865
-0.7536 -3.969 -0.2674 -0.9825 0.2354
-0.762 -4.014 -0.1925 -0.9825 0.2837
-0.7694 -4.053 -0.1203 -0.9825 0.3312
-0.7758 -4.086 -0.05139 -0.9825 0.378
-0.781 -4.114 0.01363 -0.9825 0.4238
-0.7849 -4.135 0.07418 -0.9825 0.4685
-0.7876 -4.149 0.1298 -0.9825 0.5121
-0.7889 -4.155 0.18 -0.9825 0.5544
-0.7888 -4.155 0.2244 -0.9825 0.5953
-0.7872 -4.147 0.2627 -0.9825 0.6347
-0.7843 -4.131 0.2947 -0.9825 0.6725
-0.7798 -4.108 0.3203 -0.9825 0.7087
-0.774 -4.077 0.3392 -0.9825 0.743
-0.7667 -4.039 0.3516 -0.9825 0.7756
-0.758 -3.993 0.3574 -0.9825 0.8061
-0.748 -3.94 0.3569 -0.9825 0.8347
-0.7367 -3.881 0.3501 -0.9825 0.8612
-0.7242 -3.814 0.3375 -0.9825 0.8855
-0.7105 -3.742 0.3192 -0.9825 0.9076
-0.6957 -3.665 0.2957 -0.9825 0.9275
-0.68 -3.582 0.2675 -0.9825 0.945
-0.6635 -3.495 0.2351 -0.9825 0.9602
-0.6462 -3.404 0.199 -0.9825 0.9729
-0.6283 -3.31 0.1597 -0.9825 0.9833
-0.6099 -3.213 0.1181 -0.9825 0.9911
-0.5912 -3.114 0.07456 -0.9825 0.9965
-0.5722 -3.014 0.02992 -0.9825 0.9994
-0.7061 -2.916 0 -0.9719 1
-0.6824 -2.818 -0.04756 -0.9719 0.9988
-0.6588 -2.72 -0.09441 -0.9719 0.995
-0.6355 -2.624 -0.1399 -0.9719 0.9888
-0.6127 -2.53 -0.1832 -0.9719 0.9801
-0.5906 -2.439 -0.2238 -0.9719 0.9689
-0.5693 -2.351 -0.261 -0.9719 0.9553
-0.549 -2.267 -0.2943 -0.9719 0.9394
-0.5297 -2.187 -0.323 -0.9719 0.9211
-0.5117 -2.113 -0.3467 -0.9719 0.9004
-0.495 -2.044 -0.3649 -0.9719 0.8776
-0.4797 -1.981 -0.3772 -0.9719 0.8525
-0.466 -1.924 -0.3834 -0.9719 0.8253
-0.454 -1.874 -0.3831 -0.9719 0.7961
-0.4435 -1.831 -0.3762 -0.9719 0.7648
-0.4349 -1.796 -0.3625 -0.9719 0.7317
-0.428 -1.767 -0.342 -0.9719 0.6967
-0.4228 -1.746 -0.3149 -0.9719 0.66
-0.4195 -1.732 -0.281 -0.9719 0.6216
-0.4179 -1.726 -0.2408 -0.9719 0.5817
-0.4181 -1.727 -0.1944 -0.9719 0.5403
-0.42 -1.734 -0.1421 -0.9719 0.4976
-0.4236 -1.749 -0.08438 -0.9719 0.4536
-0.4288 -1.77 -0.0217 -0.9719 0.4085
-0.4354 -1.798 0.04542 -0.9719 0.3624
-0.4435 -1.831 0.1164 -0.9719 0.3153
-0.4529 -1.87 0.1906 -0.9719 0.2675
-0.4634 -1.914 0.2674 -0.9719 0.219
-0.4751 -1.962 0.346 -0.9719 0.17
-0.4877 -2.014 0.4258 -0.9719 0.1205
-0.5011 -2.069 0.5059 -0.9719 0.07074
-0.5151 -2.127 0.5855 -0.9719 0.02079
-0.5297 -2.187 0.6639 -0.9719 -0.0292
-0.5447 -2.249 0.7404 -0.9719 -0.07912
-0.5599 -2.312 0.814 -0.9719 -0.1288
-0.5752 -2.375 0.8841 -0.9719 -0.1782
-0.5904 -2.438 0.9499 -0.9719 -0.2272
-0.6054 -2.5 1.011 -0.9719 -0.2756
-0.6201 -2.561 1.066 -0.9719 -0.3233
-0.6344 -2.619 1.115 -0.9719 -0.3702
-0.6481 -2.676 1.157 -0.9719 -0.4161
-0.6611 -2.73 1.192 -0.9719 -0.4611
-0.6733 -2.78 1.219 -0.9719 -0.5048
-0.6847 -2.827 1.238 -0.9719 -0.5474
-0.6951 -2.87 1.248 -0.9719 -0.5885
-0.7045 -2.909 1.249 -0.9719 -0.6282
-0.7128 -2.943 1.242 -0.9719 -0.6663
-0.7201 -2.973 1.226 -0.9719 -0.7027
-0.7262 -2.998 1.201 -0.9719 -0.7374
-0.7311 -3.019 1.166 -0.9719 -0.7702
-0.735 -3.035 1.124 -0.9719 -0.8011
-0.7377 -3.046 1.072 -0.9719 -0.8301
-0.7394 -3.053 1.013 -0.9719 -0.8569
-0.7399 -3.055 0.946 -0.9719 -0.8816
-0.7395 -3.054 0.8716 -0.9719 -0.9041
-0.7382 -3.048 0.7905 -0.9719 -0.9243
-0.736 -3.039 0.7033 -0.9719 -0.9422
-0.7331 -3.027 0.6106 -0.9719 -0.9578
-0.7295 -3.012 0.5131 -0.9719 -0.971
-0.7253 -2.995 0.4116 -0.9719 -0.9817
-0.7207 -2.976 0.3069 -0.9719 -0.99
-0.7157 -2.955 0.1997 -0.9719 -0.9958
-0.7105 -2.934 0.09101 -0.9719 -0.9991
-0.7053 -2.912 -0.01841 -0.9719 -1
-0.7 -2.89 -0.1277 -0.9719 -0.9983
-0.6949 -2.869 -0.236 -0.9719 -0.9941
-0.69 -2.849 -0.3424 -0.9719 -0.9875
-0.6855 -2.83 -0.4461 -0.9719 -0.9784
-0.6815 -2.814 -0.5463 -0.9719 -0.9668
-0.6781 -2.8 -0.6423 -0.9719 -0.9528
-0.6754 -2.789 -0.7332 -0.9719 -0.9365
-0.6735 -2.781 -0.8185 -0.9719 -0.9178
-0.6725 -2.777 -0.8974 -0.9719 -0.8968
-0.6724 -2.776 -0.9694 -0.9719 -0.8735
-0.6734 -2.78 -1.034 -0.9719 -0.8481
-0.6754 -2.789 -1.091 -0.9719 -0.8206
-0.6785 -2.801 -1.139 -0.9719 -0.791
-0.6827 -2.819 -1.179 -0.9719 -0.7594
-0.688 -2.841 -1.21 -0.9719 -0.7259
-0.6945 -2.868 -1.232 -0.9719 -0.6907
-0.7022 -2.899 -1.246 -0.9719 -0.6536
-0.7109 -2.935 -1.25 -0.9719 -0.615
-0.7206 -2.975 -1.245 -0.9719 -0.5748
-0.7313 -3.02 -1.232 -0.9719 -0.5332
-0.743 -3.068 -1.211 -0.9719 -0.4903
-0.7555 -3.12 -1.181 -0.9719 -0.4461
-0.7687 -3.174 -1.144 -0.9719 -0.4008
-0.7826 -3.232 -1.099 -0.9719 -0.3545
-0.7971 -3.291 -1.048 -0.9719 -0.3073
-0.8119 -3.352 -0.9909 -0.9719 -0.2594
-0.827 -3.415 -0.9283 -0.9719 -0.2108
-0.8423 -3.478 -0.861 -0.9719 -0.1617
-0.8575 -3.541 -0.7896 -0.9719 -0.1122
-0.8727 -3.603 -0.7149 -0.9719 -0.06235
-0.8875 -3.665 -0.6377 -0.9719 -0.01239
-0.9019 -3.724 -0.5588 -0.9719 0.0376
-0.9158 -3.781 -0.4789 -0.9719 0.0875
-0.9289 -3.836 -0.3989 -0.9719 0.1372
-0.9412 -3.886 -0.3194 -0.9719 0.1865
-0.9525 -3.933 -0.2413 -0.9719 0.2354
-0.9627 -3.975 -0.1653 -0.9719 0.2837
-0.9717 -4.012 -0.09214 -0.9719 0.3312
-0.9793 -4.043 -0.02239 -0.9719 0.378
-0.9854 -4.069 0.0433 -0.9719 0.4238
-0.9901 -4.088 0.1044 -0.9719 0.4685
-0.9931 -4.1 0.1603 -0.9719 0.5121
-0.9944 -4.106 0.2106 -0.9719 0.5544
-0.994 -4.104 0.255 -0.9719 0.5953
-0.9919 -4.095 0.2931 -0.9719 0.6347
-0.9879 -4.079 0.3247 -0.9719 0.6725
-0.9822 -4.056 0.3497 -0.9719 0.7087
-0.9747 -4.025 0.3679 -0.9719 0.743
-0.9654 -3.986 0.3792 -0.9719 0.7756
-0.9545 -3.941 0.3839 -0.9719 0.8061
-0.9418 -3.889 0.382 -0.9719 0.8347
-0.9276 -3.83 0.3738 -0.9719 0.8612
-0.9118 -3.765 0.3594 -0.9719 0.8855
-0.8947 -3.694 0.3393 -0.9719 0.9076
-0.8762 -3.618 0.3139 -0.9719 0.9275
-0.8566 -3.537 0.2836 -0.9719 0.945
-0.8359 -3.452 0.2489 -0.9719 0.9602
-0.8143 -3.362 0.2105 -0.9719 0.9729
-0.792 -3.27 0.1689 -0.9719 0.9833
-0.769 -3.175 0.1248 -0.9719 0.9911
-0.7456 -3.079 0.07878 -0.9719 0.9965
-0.7219 -2.981 0.03161 -0.9719 0.9994
-0.851 -2.877 0 -0.9589 1
-0.8227 -2.781 -0.05007 -0.9589 0.9988
-0.7946 -2.686 -0.09942 -0.9589 0.995
-0.7669 -2.592 -0.1473 -0.9589 0.9888
-0.7397 -2.501 -0.1931 -0.9589 0.9801
-0.7134 -2.412 -0.236 -0.9589 0.9689
-0.688 -2.326 -0.2755 -0.9589 0.9553
-0.6637 -2.244 -0.3109 -0.9589 0.9394
-0.6407 -2.166 -0.3416 -0.9589 0.9211
-0.6192 -2.093 -0.3672 -0.9589 0.9004
-0.5992 -2.026 -0.3872 -0.9589 0.8776
-0.5809 -1.964 -0.4012 -0.9589 0.8525
-0.5644 -1.908 -0.4088 -0.9589 0.8253
-0.5499 -1.859 -0.4098 -0.9589 0.7961
-0.5373 -1.816 -0.4039 -0.9589 0.7648
-0.5267 -1.781 -0.3912 -0.9589 0.7317
-0.5183 -1.752 -0.3715 -0.9589 0.6967
-0.5119 -1.731 -0.3448 -0.9589 0.66
-0.5076 -1.716 -0.3114 -0.9589 0.6216
-0.5055 -1.709 -0.2713 -0.9589 0.5817
-0.5054 -1.708 -0.2249 -0.9589 0.5403
-0.5073 -1.715 -0.1724 -0.9589 0.4976
-0.5112 -1.728 -0.1144 -0.9589 0.4536
-0.517 -1.748 -0.05115 -0.9589 0.4085
-0.5245 -1.773 0.01666 -0.9589 0.3624
-0.5337 -1.804 0.08848 -0.9589 0.3153
-0.5445 -1.841 0.1637 -0.9589 0.2675
-0.5567 -1.882 0.2416 -0.9589 0.219
-0.5702 -1.927 0.3214 -0.9589 0.17
-0.5848 -1.977 0.4024 -0.9589 0.1205
-0.6003 -2.029 0.4839 -0.9589 0.07074
-0.6167 -2.085 0.565 -0.9589 0.02079
-0.6337 -2.142 0.645 -0.9589 -0.0292
-0.6512 -2.201 0.723 -0.9589 -0.07912
-0.669 -2.262 0.7982 -0.9589 -0.1288
-0.6869 -2.322 0.8699 -0.9589 -0.1782
-0.7048 -2.383 0.9373 -0.9589 -0.2272
-0.7225 -2.442 0.9998 -0.9589 -0.2756
-0.7398 -2.501 1.057 -0.9589 -0.3233
-0.7566 -2.558 1.107 -0.9589 -0.3702
-0.7728 -2.613 1.15 -0.9589 -0.4161
-0.7882 -2.665 1.187 -0.9589 -0.4611
-0.8028 -2.714 1.215 -0.9589 -0.5048
-0.8163 -2.76 1.235 -0.9589 -0.5474
-0.8288 -2.802 1.246 -0.9589 -0.5885
-0.8401 -2.84 1.249 -0.9589 -0.6282
-0.8502 -2.874 1.242 -0.9589 -0.6663
-0.8591 -2.904 1.227 -0.9589 -0.7027
-0.8666 -2.93 1.202 -0.9589 -0.7374
-0.8728 -2.951 1.169 -0.9589 -0.7702
-0.8778 -2.967 1.126 -0.9589 -0.8011
-0.8814 -2.98 1.075 -0.9589 -0.8301
-0.8838 -2.988 1.016 -0.9589 -0.8569
-0.885 -2.992 0.9493 -0.9589 -0.8816
-0.8851 -2.992 0.8749 -0.9589 -0.9041
-0.884 -2.988 0.7937 -0.9589 -0.9243
-0.882 -2.982 0.7062 -0.9589 -0.9422
-0.8791 -2.972 0.6132 -0.9589 -0.9578
-0.8755 -2.96 0.5154 -0.9589 -0.971
-0.8712 -2.945 0.4135 -0.9589 -0.9817
-0.8664 -2.929 0.3083 -0.9589 -0.99
-0.8611 -2.911 0.2007 -0.9589 -0.9958
-0.8556 -2.893 0.09145 -0.9589 -0.9991
-0.85 -2.874 -0.0185 -0.9589 -1
-0.8445 -2.855 -0.1283 -0.9589 -0.9983
-0.8391 -2.836 -0.2371 -0.9589 -0.9941
-0.8339 -2.819 -0.344 -0.9589 -0.9875
-0.8293 -2.803 -0.4482 -0.9589 -0.9784
-0.8252 -2.79 -0.5488 -0.9589 -0.9668
-0.8218 -2.778 -0.6451 -0.9589 -0.9528
-0.8192 -2.769 -0.7363 -0.9589 -0.9365
-0.8175 -2.764 -0.8217 -0.9589 -0.9178
-0.8168 -2.761 -0.9007 -0.9589 -0.8968
-0.8172 -2.763 -0.9727 -0.9589 -0.8735
-0.8188 -2.768 -1.037 -0.9589 -0.8481
-0.8216 -2.778 -1.094 -0.9589 -0.8206
-0.8257 -2.791 -1.142 -0.9589 -0.791
-0.8311 -2.81 -1.181 -0.9589 -0.7594
-0.8378 -2.832 -1.212 -0.9589 -0.7259
-0.8457 -2.859 -1.233 -0.9589 -0.6907
-0.855 -2.89 -1.246 -0.9589 -0.6536
-0.8655 -2.926 -1.249 -0.9589 -0.615
-0.8772 -2.966 -1.243 -0.9589 -0.5748
-0.8901 -3.009 -1.229 -0.9589 -0.5332
-0.904 -3.056 -1.206 -0.9589 -0.4903
-0.9188 -3.106 -1.175 -0.9589 -0.4461
-0.9345 -3.159 -1.137 -0.9589 -0.4008
-0.9509 -3.215 -1.091 -0.9589 -0.3545
-0.9679 -3.272 -1.038 -0.9589 -0.3073
-0.9854 -3.331 -0.9794 -0.9589 -0.2594
-1.003 -3.391 -0.9152 -0.9589 -0.2108
-1.021 -3.452 -0.8462 -0.9589 -0.1617
-1.039 -3.512 -0.7733 -0.9589 -0.1122
-1.057 -3.572 -0.697 -0.9589 -0.06235
-1.074 -3.631 -0.6183 -0.9589 -0.01239
-1.091 -3.688 -0.5378 -0.9589 0.0376
-1.107 -3.742 -0.4565 -0.9589 0.0875
-1.122 -3.794 -0.3751 -0.9589 0.1372
-1.136 -3.842 -0.2944 -0.9589 0.1865
-1.15 -3.886 -0.2151 -0.9589 0.2354
-1.161 -3.926 -0.1381 -0.9589 0.2837
-1.172 -3.96 -0.06392 -0.9589 0.3312
-1.18 -3.99 0.006626 -0.9589 0.378
-1.187 -4.013 0.07295 -0.9589 0.4238
-1.192 -4.031 0.1345 -0.9589 0.4685
-1.196 -4.041 0.1907 -0.9589 0.5121
-1.197 -4.046 0.2412 -0.9589 0.5544
-1.196 -4.043 0.2855 -0.9589 0.5953
-1.193 -4.033 0.3234 -0.9589 0.6347
-1.188 -4.017 0.3546 -0.9589 0.6725
-1.181 -3.993 0.3789 -0.9589 0.7087
-1.172 -3.962 0.3963 -0.9589 0.743
-1.161 -3.924 0.4067 -0.9589 0.7756
-1.147 -3.879 0.4102 -0.9589 0.8061
-1.132 -3.827 0.4069 -0.9589 0.8347
-1.115 -3.77 0.3972 -0.9589 0.8612
-1.096 -3.706 0.3812 -0.9589 0.8855
-1.076 -3.637 0.3592 -0.9589 0.9076
-1.054 -3.562 0.3319 -0.9589 0.9275
-1.03 -3.483 0.2995 -0.9589 0.945
-1.006 -3.399 0.2626 -0.9589 0.9602
-0.9798 -3.312 0.2219 -0.9589 0.9729
-0.9532 -3.222 0.178 -0.9589 0.9833
-0.9259 -3.13 0.1314 -0.9589 0.9911
-0.898 -3.036 0.08295 -0.9589 0.9965
-0.8698 -2.94 0.03328 -0.9589 0.9994
-0.9937 -2.831 0 -0.9435 1
-0.9611 -2.738 -0.05255 -0.9435 0.9988
-0.9287 -2.645 -0.1044 -0.9435 0.995
-0.8967 -2.554 -0.1547 -0.9435 0.9888
-0.8654 -2.465 -0.2028 -0.9435 0.9801
-0.835 -2.379 -0.2481 -0.9435 0.9689
-0.8057 -2.295 -0.2898 -0.9435 0.9553
-0.7776 -2.215 -0.3273 -0.9435 0.9394
-0.7511 -2.139 -0.3601 -0.9435 0.9211
-0.7261 -2.068 -0.3876 -0.9435 0.9004
-0.703 -2.002 -0.4093 -0.9435 0.8776
-0.6818 -1.942 -0.4248 -0.9435 0.8525
-0.6626 -1.887 -0.4339 -0.9435 0.8253
-0.6456 -1.839 -0.4362 -0.9435 0.7961
-0.6309 -1.797 -0.4315 -0.9435 0.7648
-0.6184 -1.762 -0.4196 -0.9435 0.7317
-0.6084 -1.733 -0.4007 -0.9435 0.6967
-0.6007 -1.711 -0.3746 -0.9435 0.66
-0.5955 -1.696 -0.3416 -0.9435 0.6216
-0.5926 -1.688 -0.3017 -0.9435 0.5817
-0.5921 -1.687 -0.2553 -0.9435 0.5403
-0.594 -1.692 -0.2027 -0.9435 0.4976
-0.598 -1.703 -0.1443 -0.9435 0.4536
-0.6042 -1.721 -0.08057 -0.9435 0.4085
-0.6125 -1.745 -0.01212 -0.9435 0.3624
-0.6226 -1.774 0.06049 -0.9435 0.3153
-0.6346 -1.808 0.1366 -0.9435 0.2675
-0.6482 -1.846 0.2155 -0.9435 0.219
-0.6632 -1.889 0.2965 -0.9435 0.17
-0.6796 -1.936 0.3789 -0.9435 0.1205
-0.6971 -1.986 0.4617 -0.9435 0.07074
-0.7156 -2.038 0.5442 -0.9435 0.02079
-0.7348 -2.093 0.6256 -0.9435 -0.0292
-0.7545 -2.149 0.7051 -0.9435 -0.07912
-0.7747 -2.207 0.7819 -0.9435 -0.1288
-0.795 -2.265 0.8552 -0.9435 -0.1782
-0.8153 -2.322 0.9242 -0.9435 -0.2272
-0.8354 -2.38 0.9881 -0.9435 -0.2756
-0.8552 -2.436 1.046 -0.9435 -0.3233
-0.8744 -2.491 1.098 -0.9435 -0.3702
-0.8929 -2.544 1.143 -0.9435 -0.4161
-0.9106 -2.594 1.181 -0.9435 -0.4611
-0.9274 -2.642 1.21 -0.9435 -0.5048
-0.943 -2.686 1.231 -0.9435 -0.5474
-0.9575 -2.727 1.244 -0.9435 -0.5885
-0.9707 -2.765 1.247 -0.9435 -0.6282
-0.9825 -2.799 1.242 -0.9435 -0.6663
-0.993 -2.829 1.227 -0.9435 -0.7027
-1.002 -2.854 1.203 -0.9435 -0.7374
-1.01 -2.876 1.17 -0.9435 -0.7702
-1.016 -2.893 1.128 -0.9435 -0.8011
-1.02 -2.906 1.078 -0.9435 -0.8301
-1.024 -2.916 1.019 -0.9435 -0.8569
-1.026 -2.921 0.952 -0.9435 -0.8816
-1.026 -2.923 0.8776 -0.9435 -0.9041
-1.026 -2.922 0.7963 -0.9435 -0.9243
-1.024 -2.917 0.7087 -0.9435 -0.9422
-1.021 -2.91 0.6155 -0.9435 -0.9578
-1.018 -2.9 0.5174 -0.9435 -0.971
-1.014 -2.888 0.4151 -0.9435 -0.9817
-1.009 -2.874 0.3096 -0.9435 -0.99
-1.004 -2.86 0.2015 -0.9435 -0.9958
-0.9984 -2.844 0.09183 -0.9435 -0.9991
-0.9928 -2.828 -0.01858 -0.9435 -1
-0.9872 -2.812 -0.1288 -0.9435 -0.9983
-0.9817 -2.797 -0.2381 -0.9435 -0.9941
-0.9767 -2.782 -0.3454 -0.9435 -0.9875
-0.9721 -2.769 -0.4499 -0.9435 -0.9784
-0.9681 -2.758 -0.5509 -0.9435 -0.9668
-0.9649 -2.749 -0.6474 -0.9435 -0.9528
-0.9627 -2.742 -0.7388 -0.9435 -0.9365
-0.9614 -2.739 -0.8244 -0.9435 -0.9178
-0.9613 -2.738 -0.9034 -0.9435 -0.8968
-0.9624 -2.741 -0.9753 -0.9435 -0.8735
-0.9647 -2.748 -1.04 -0.9435 -0.8481
-0.9685 -2.759 -1.096 -0.9435 -0.8206
-0.9737 -2.774 -1.143 -0.9435 -0.791
-0.9803 -2.792 -1.182 -0.9435 -0.7594
-0.9883 -2.815 -1.212 -0.9435 -0.7259
-0.9978 -2.842 -1.233 -0.9435 -0.6907
-1.009 -2.873 -1.245 -0.9435 -0.6536
-1.021 -2.908 -1.247 -0.9435 -0.615
-1.035 -2.947 -1.241 -0.9435 -0.5748
-1.05 -2.99 -1.225 -0.9435 -0.5332
-1.066 -3.035 -1.201 -0.9435 -0.4903
-1.083 -3.084 -1.169 -0.9435 -0.4461
-1.101 -3.135 -1.129 -0.9435 -0.4008
-1.119 -3.189 -1.082 -0.9435 -0.3545
-1.139 -3.244 -1.027 -0.9435 -0.3073
-1.159 -3.301 -0.9672 -0.9435 -0.2594
-1.179 -3.358 -0.9015 -0.9435 -0.2108
-1.199 -3.416 -0.831 -0.9435 -0.1617
-1.22 -3.474 -0.7565 -0.9435 -0.1122
-1.24 -3.531 -0.6787 -0.9435 -0.06235
-1.259 -3.587 -0.5984 -0.9435 -0.01239
-1.278 -3.641 -0.5165 -0.9435 0.0376
-1.296 -3.693 -0.4338 -0.9435 0.0875
-1.313 -3.741 -0.3511 -0.9435 0.1372
-1.329 -3.787 -0.2691 -0.9435 0.1865
-1.344 -3.828 -0.1887 -0.9435 0.2354
-1.357 -3.866 -0.1107 -0.9435 0.2837
-1.368 -3.898 -0.03565 -0.9435 0.3312
-1.378 -3.925 0.03563 -0.9435 0.378
-1.386 -3.947 0.1026 -0.9435 0.4238
-1.391 -3.962 0.1645 -0.9435 0.4685
-1.394 -3.972 0.221 -0.9435 0.5121
-1.395 -3.975 0.2716 -0.9435 0.5544
-1.394 -3.971 0.3158 -0.9435 0.5953
-1.39 -3.961 0.3534 -0.9435 0.6347
-1.384 -3.943 0.3842 -0.9435 0.6725
-1.376 -3.919 0.4079 -0.9435 0.7087
-1.365 -3.888 0.4244 -0.9435 0.743
-1.352 -3.851 0.4338 -0.9435 0.7756
-1.336 -3.807 0.4362 -0.9435 0.8061
-1.319 -3.756 0.4316 -0.9435 0.8347
-1.299 -3.7 0.4203 -0.9435 0.8612
-1.277 -3.637 0.4026 -0.9435 0.8855
-1.253 -3.57 0.3789 -0.9435 0.9076
-1.228 -3.497 0.3496 -0.9435 0.9275
-1.2 -3.42 0.3152 -0.9435 0.945
-1.172 -3.339 0.2762 -0.9435 0.9602
-1.142 -3.254 0.2332 -0.9435 0.9729
-1.112 -3.166 0.1869 -0.9435 0.9833
-1.08 -3.076 0.138 -0.9435 0.9911
-1.048 -2.985 0.08706 -0.9435 0.9965
-1.015 -2.892 0.03492 -0.9435 0.9994
-1.134 -2.777 0 -0.9258 1
-1.097 -2.687 -0.05499 -0.9258 0.9988
-1.061 -2.598 -0.1092 -0.9258 0.995
-1.025 -2.51 -0.162 -0.9258 0.9888
-0.9895 -2.424 -0.2124 -0.9258 0.9801
-0.9553 -2.34 -0.26 -0.9258 0.9689
-0.9222 -2.259 -0.3039 -0.9258 0.9553
-0.8906 -2.181 -0.3435 -0.9258 0.9394
-0.8605 -2.108 -0.3783 -0.9258 0.9211
-0.8323 -2.039 -0.4076 -0.9258 0.9004
-0.8061 -1.975 -0.4311 -0.9258 0.8776
-0.7821 -1.916 -0.4483 -0.9258 0.8525
-0.7603 -1.862 -0.4588 -0.9258 0.8253
-0.741 -1.815 -0.4623 -0.9258 0.7961
-0.7241 -1.774 -0.4587 -0.9258 0.7648
-0.7098 -1.739 -0.4478 -0.9258 0.7317
-0.6982 -1.71 -0.4296 -0.9258 0.6967
-0.6892 -1.688 -0.4042 -0.9258 0.66
-0.6829 -1.673 -0.3715 -0.9258 0.6216
-0.6793 -1.664 -0.3319 -0.9258 0.5817
-0.6783 -1.661 -0.2855 -0.9258 0.5403
-0.6798 -1.665 -0.2328 -0.9258 0.4976
-0.6839 -1.675 -0.1741 -0.9258 0.4536
-0.6904 -1.691 -0.1099 -0.9258 0.4085
-0.6991 -1.712 -0.04089 -0.9258 0.3624
-0.71 -1.739 0.03247 -0.9258 0.3153
-0.723 -1.771 0.1095 -0.9258 0.2675
-0.7377 -1.807 0.1894 -0.9258 0.219
-0.7541 -1.847 0.2715 -0.9258 0.17
-0.772 -1.891 0.355 -0.9258 0.1205
-0.7912 -1.938 0.4391 -0.9258 0.07074
-0.8115 -1.988 0.523 -0.9258 0.02079
-0.8326 -2.039 0.6059 -0.9258 -0.0292
-0.8544 -2.093 0.6869 -0.9258 -0.07912
-0.8767 -2.147 0.7651 -0.9258 -0.1288
-0.8992 -2.202 0.8399 -0.9258 -0.1782
-0.9217 -2.258 0.9104 -0.9258 -0.2272
-0.944 -2.312 0.9759 -0.9258 -0.2756
-0.966 -2.366 1.036 -0.9258 -0.3233
-0.9875 -2.419 1.089 -0.9258 -0.3702
-1.008 -2.469 1.135 -0.9258 -0.4161
-1.028 -2.518 1.174 -0.9258 -0.4611
-1.047 -2.564 1.205 -0.9258 -0.5048
-1.064 -2.607 1.227 -0.9258 -0.5474
-1.081 -2.647 1.241 -0.9258 -0.5885
-1.096 -2.684 1.245 -0.9258 -0.6282
-1.109 -2.717 1.241 -0.9258 -0.6663
-1.121 -2.747 1.227 -0.9258 -0.7027
-1.132 -2.773 1.204 -0.9258 -0.7374
-1.141 -2.795 1.171 -0.9258 -0.7702
-1.148 -2.813 1.13 -0.9258 -0.8011
-1.154 -2.827 1.079 -0.9258 -0.8301
-1.158 -2.837 1.021 -0.9258 -0.8569
-1.161 -2.844 0.9541 -0.9258 -0.8816
-1.163 -2.848 0.8798 -0.9258 -0.9041
-1.163 -2.848 0.7985 -0.9258 -0.9243
-1.162 -2.846 0.7108 -0.9258 -0.9422
-1.16 -2.841 0.6174 -0.9258 -0.9578
-1.157 -2.833 0.5191 -0.9258 -0.971
-1.153 -2.824 0.4165 -0.9258 -0.9817
-1.149 -2.813 0.3106 -0.9258 -0.99
-1.144 -2.801 0.2022 -0.9258 -0.9958
-1.138 -2.788 0.09216 -0.9258 -0.9991
-1.133 -2.775 -0.01865 -0.9258 -1
-1.128 -2.762 -0.1293 -0.9258 -0.9983
-1.123 -2.75 -0.2389 -0.9258 -0.9941
-1.118 -2.738 -0.3466 -0.9258 -0.9875
-1.114 -2.727 -0.4514 -0.9258 -0.9784
-1.11 -2.719 -0.5527 -0.9258 -0.9668
-1.107 -2.712 -0.6494 -0.9258 -0.9528
-1.106 -2.708 -0.741 -0.9258 -0.9365
-1.105 -2.706 -0.8266 -0.9258 -0.9178
-1.105 -2.708 -0.9056 -0.9258 -0.8968
-1.107 -2.712 -0.9774 -0.9258 -0.8735
-1.111 -2.721 -1.041 -0.9258 -0.8481
-1.116 -2.732 -1.097 -0.9258 -0.8206
-1.122 -2.748 -1.145 -0.9258 -0.791
-1.13 -2.767 -1.183 -0.9258 -0.7594
-1.139 -2.79 -1.212 -0.9258 -0.7259
-1.15 -2.817 -1.232 -0.9258 -0.6907
-1.163 -2.848 -1.243 -0.9258 -0.6536
-1.177 -2.883 -1.245 -0.9258 -0.615
-1.192 -2.921 -1.237 -0.9258 -0.5748
-1.209 -2.962 -1.221 -0.9258 -0.5332
-1.227 -3.006 -1.195 -0.9258 -0.4903
-1.246 -3.053 -1.162 -0.9258 -0.4461
-1.267 -3.102 -1.121 -0.9258 -0.4008
-1.288 -3.154 -1.072 -0.9258 -0.3545
-1.309 -3.207 -1.016 -0.9258 -0.3073
-1.331 -3.261 -0.9545 -0.9258 -0.2594
-1.354 -3.316 -0.8872 -0.9258 -0.2108
-1.376 -3.371 -0.8152 -0.9258 -0.1617
-1.399 -3.426 -0.7392 -0.9258 -0.1122
-1.421 -3.48 -0.6599 -0.9258 -0.06235
-1.442 -3.533 -0.5782 -0.9258 -0.01239
-1.463 -3.584 -0.4949 -0.9258 0.0376
-1.483 -3.633 -0.4108 -0.9258 0.0875
-1.502 -3.679 -0.3268 -0.9258 0.1372
-1.519 -3.722 -0.2437 -0.9258 0.1865
-1.535 -3.761 -0.1622 -0.9258 0.2354
-1.549 -3.795 -0.08321 -0.9258 0.2837
-1.562 -3.825 -0.00736 -0.9258 0.3312
-1.572 -3.85 0.06462 -0.9258 0.378
-1.58 -3.87 0.1321 -0.9258 0.4238
-1.586 -3.884 0.1945 -0.9258 0.4685
-1.589 -3.892 0.2512 -0.9258 0.5121
-1.59 -3.893 0.3018 -0.9258 0.5544
-1.588 -3.889 0.3459 -0.9258 0.5953
-1.583 -3.878 0.3833 -0.9258 0.6347
-1.576 -3.86 0.4135 -0.9258 0.6725
-1.566 -3.836 0.4366 -0.9258 0.7087
-1.554 -3.805 0.4523 -0.9258 0.743
-1.538 -3.768 0.4607 -0.9258 0.7756
-1.521 -3.725 0.4619 -0.9258 0.8061
-1.5 -3.675 0.456 -0.9258 0.8347
-1.478 -3.62 0.4432 -0.9258 0.8612
-1.453 -3.559 0.4239 -0.9258 0.8855
-1.426 -3.493 0.3984 -0.9258 0.9076
-1.397 -3.423 0.3672 -0.9258 0.9275
-1.367 -3.348 0.3307 -0.9258 0.945
-1.335 -3.269 0.2896 -0.9258 0.9602
-1.301 -3.187 0.2444 -0.9258 0.9729
-1.267 -3.102 0.1958 -0.9258 0.9833
-1.231 -3.015 0.1444 -0.9258 0.9911
-1.195 -2.927 0.09112 -0.9258 0.9965
-1.158 -2.837 0.03655 -0.9258 0.9994
-1.271 -2.717 0 -0.9058 1
-1.231 -2.631 -0.05741 -0.9058 0.9988
-1.19 -2.544 -0.114 -0.9058 0.995
-1.151 -2.459 -0.1691 -0.9058 0.9888
-1.112 -2.376 -0.2219 -0.9058 0.9801
-1.074 -2.295 -0.2717 -0.9058 0.9689
-1.037 -2.217 -0.3178 -0.9058 0.9553
-1.002 -2.142 -0.3595 -0.9058 0.9394
-0.9689 -2.071 -0.3962 -0.9058 0.9211
-0.9376 -2.004 -0.4274 -0.9058 0.9004
-0.9085 -1.942 -0.4526 -0.9058 0.8776
-0.8817 -1.885 -0.4714 -0.9058 0.8525
-0.8574 -1.833 -0.4833 -0.9058 0.8253
-0.8358 -1.786 -0.4881 -0.9058 0.7961
-0.8168 -1.746 -0.4857 -0.9058 0.7648
-0.8007 -1.711 -0.4757 -0.9058 0.7317
-0.7875 -1.683 -0.4583 -0.9058 0.6967
-0.7771 -1.661 -0.4334 -0.9058 0.66
-0.7697 -1.645 -0.4012 -0.9058 0.6216
-0.7652 -1.636 -0.3618 -0.9058 0.5817
-0.7636 -1.632 -0.3155 -0.9058 0.5403
-0.7648 -1.635 -0.2627 -0.9058 0.4976
-0.7688 -1.643 -0.2038 -0.9058 0.4536
-0.7753 -1.657 -0.1392 -0.9058 0.4085
-0.7844 -1.677 -0.06963 -0.9058 0.3624
-0.7959 -1.701 0.004425 -0.9058 0.3153
-0.8095 -1.73 0.08225 -0.9058 0.2675
-0.8252 -1.764 0.1631 -0.9058 0.219
-0.8428 -1.801 0.2463 -0.9058 0.17
-0.862 -1.842 0.331 -0.9058 0.1205
-0.8826 -1.886 0.4163 -0.9058 0.07074
-0.9044 -1.933 0.5016 -0.9058 0.02079
-0.9272 -1.982 0.5858 -0.9058 -0.0292
-0.9508 -2.032 0.6682 -0.9058 -0.07912
-0.9749 -2.084 0.7479 -0.9058 -0.1288
-0.9993 -2.136 0.8241 -0.9058 -0.1782
-1.024 -2.188 0.8961 -0.9058 -0.2272
-1.048 -2.24 0.963 -0.9058 -0.2756
-1.072 -2.292 1.024 -0.9058 -0.3233
-1.096 -2.342 1.079 -0.9058 -0.3702
-1.118 -2.39 1.127 -0.9058 -0.4161
-1.14 -2.437 1.167 -0.9058 -0.4611
-1.161 -2.481 1.199 -0.9058 -0.5048
-1.18 -2.523 1.222 -0.9058 -0.5474
-1.199 -2.562 1.237 -0.9058 -0.5885
-1.215 -2.598 1.242 -0.9058 -0.6282
-1.231 -2.631 1.239 -0.9058 -0.6663
-1.244 -2.66 1.226 -0.9058 -0.7027
-1.256 -2.685 1.203 -0.9058 -0.7374
-1.267 -2.708 1.171 -0.9058 -0.7702
-1.275 -2.726 1.13 -0.9058 -0.8011
-1.283 -2.741 1.08 -0.9058 -0.8301
-1.288 -2.753 1.022 -0.9058 -0.8569
-1.292 -2.761 0.9556 -0.9058 -0.8816
-1.294 -2.766 0.8814 -0.9058 -0.9041
-1.295 -2.769 0.8001 -0.9058 -0.9243
-1.295 -2.768 0.7124 -0.9058 -0.9422
-1.294 -2.765 0.6189 -0.9058 -0.9578
-1.291 -2.76 0.5204 -0.9058 -0.971
-1.288 -2.754 0.4177 -0.9058 -0.9817
-1.284 -2.745 0.3115 -0.9058 -0.99
-1.28 -2.736 0.2028 -0.9058 -0.9958
-1.275 -2.726 0.09242 -0.9058 -0.9991
-1.271 -2.716 -0.0187 -0.9058 -1
-1.266 -2.705 -0.1297 -0.9058 -0.9983
-1.261 -2.695 -0.2396 -0.9058 -0.9941
-1.257 -2.686 -0.3475 -0.9058 -0.9875
-1.253 -2.679 -0.4526 -0.9058 -0.9784
-1.25 -2.672 -0.5541 -0.9058 -0.9668
-1.248 -2.668 -0.651 -0.9058 -0.9528
-1.247 -2.666 -0.7426 -0.9058 -0.9365
-1.248 -2.666 -0.8282 -0.9058 -0.9178
-1.249 -2.67 -0.9072 -0.9058 -0.8968
-1.252 -2.676 -0.9788 -0.9058 -0.8735
-1.256 -2.685 -1.043 -0.9058 -0.8481
-1.262 -2.698 -1.098 -0.9058 -0.8206
-1.27 -2.714 -1.145 -0.9058 -0.791
-1.279 -2.734 -1.183 -0.9058 -0.7594
-1.29 -2.757 -1.212 -0.9058 -0.7259
-1.303 -2.784 -1.231 -0.9058 -0.6907
-1.317 -2.815 -1.241 -0.9058 -0.6536
-1.333 -2.848 -1.242 -0.9058 -0.615
-1.35 -2.885 -1.233 -0.9058 -0.5748
-1.369 -2.925 -1.215 -0.9058 -0.5332
-1.389 -2.968 -1.189 -0.9058 -0.4903
-1.41 -3.013 -1.154 -0.9058 -0.4461
-1.432 -3.06 -1.111 -0.9058 -0.4008
-1.455 -3.11 -1.061 -0.9058 -0.3545
-1.479 -3.16 -1.004 -0.9058 -0.3073
-1.503 -3.212 -0.9411 -0.9058 -0.2594
-1.527 -3.264 -0.8724 -0.9058 -0.2108
-1.552 -3.316 -0.7989 -0.9058 -0.1617
-1.576 -3.368 -0.7214 -0.9058 -0.1122
-1.6 -3.42 -0.6407 -0.9058 -0.06235
-1.623 -3.469 -0.5576 -0.9058 -0.01239
-1.646 -3.518 -0.473 -0.9058 0.0376
-1.667 -3.563 -0.3876 -0.9058 0.0875
-1.687 -3.606 -0.3024 -0.9058 0.1372
-1.706 -3.646 -0.2181 -0.9058 0.1865
-1.723 -3.682 -0.1356 -0.9058 0.2354
-1.738 -3.715 -0.0557 -0.9058 0.2837
-1.751 -3.742 0.02093 -0.9058 0.3312
-1.762 -3.765 0.09357 -0.9058 0.378
-1.77 -3.783 0.1615 -0.9058 0.4238
-1.776 -3.795 0.2243 -0.9058 0.4685
-1.779 -3.801 0.2812 -0.9058 0.5121
-1.779 -3.802 0.3318 -0.9058 0.5544
-1.776 -3.796 0.3758 -0.9058 0.5953
-1.771 -3.785 0.4129 -0.9058 0.6347
-1.762 -3.767 0.4426 -0.9058 0.6725
-1.751 -3.743 0.465 -0.9058 0.7087
-1.737 -3.712 0.4799 -0.9058 0.743
-1.72 -3.676 0.4873 -0.9058 0.7756
-1.7 -3.633 0.4873 -0.9058 0.8061
-1.677 -3.585 0.4801 -0.9058 0.8347
-1.652 -3.531 0.4658 -0.9058 0.8612
-1.625 -3.472 0.4449 -0.9058 0.8855
-1.595 -3.409 0.4176 -0.9058 0.9076
-1.563 -3.34 0.3845 -0.9058 0.9275
-1.529 -3.268 0.346 -0.9058 0.945
-1.493 -3.192 0.3027 -0.9058 0.9602
-1.456 -3.113 0.2553 -0.9058 0.9729
-1.418 -3.031 0.2045 -0.9058 0.9833
-1.379 -2.947 0.1508 -0.9058 0.9911
-1.339 -2.861 0.09513 -0.9058 0.9965
-1.298 -2.775 0.03815 -0.9058 0.9994
-1.406 -2.65 0 -0.8835 1
-1.361 -2.567 -0.05978 -0.8835 0.9988
-1.317 -2.484 -0.1188 -0.8835 0.995
-1.274 -2.403 -0.1762 -0.8835 0.9888
-1.232 -2.323 -0.2313 -0.8835 0.9801
-1.19 -2.245 -0.2833 -0.8835 0.9689
-1.151 -2.169 -0.3315 -0.8835 0.9553
-1.112 -2.097 -0.3753 -0.8835 0.9394
-1.076 -2.029 -0.4139 -0.8835 0.9211
-1.042 -1.964 -0.447 -0.8835 0.9004
-1.01 -1.904 -0.4739 -0.8835 0.8776
-0.9805 -1.849 -0.4942 -0.8835 0.8525
-0.9538 -1.798 -0.5076 -0.8835 0.8253
-0.9299 -1.753 -0.5137 -0.8835 0.7961
-0.9089 -1.714 -0.5123 -0.8835 0.7648
-0.891 -1.68 -0.5034 -0.8835 0.7317
-0.8761 -1.652 -0.4867 -0.8835 0.6967
-0.8644 -1.63 -0.4625 -0.8835 0.66
-0.8559 -1.614 -0.4307 -0.8835 0.6216
-0.8504 -1.604 -0.3916 -0.8835 0.5817
-0.8481 -1.599 -0.3454 -0.8835 0.5403
-0.8488 -1.601 -0.2925 -0.8835 0.4976
-0.8525 -1.607 -0.2334 -0.8835 0.4536
-0.859 -1.62 -0.1685 -0.8835 0.4085
-0.8682 -1.637 -0.09833 -0.8835 0.3624
-0.88 -1.659 -0.02362 -0.8835 0.3153
-0.8942 -1.686 0.05499 -0.8835 0.2675
-0.9106 -1.717 0.1368 -0.8835 0.219
-0.929 -1.752 0.221 -0.8835 0.17
-0.9492 -1.79 0.3067 -0.8835 0.1205
-0.971 -1.831 0.3933 -0.8835 0.07074
-0.9941 -1.875 0.4798 -0.8835 0.02079
-1.018 -1.92 0.5653 -0.8835 -0.0292
-1.043 -1.968 0.6491 -0.8835 -0.07912
-1.069 -2.016 0.7302 -0.8835 -0.1288
-1.095 -2.065 0.8078 -0.8835 -0.1782
-1.121 -2.115 0.8812 -0.8835 -0.2272
-1.148 -2.164 0.9495 -0.8835 -0.2756
-1.173 -2.213 1.012 -0.8835 -0.3233
-1.199 -2.26 1.068 -0.8835 -0.3702
-1.223 -2.307 1.117 -0.8835 -0.4161
-1.247 -2.351 1.159 -0.8835 -0.4611
-1.27 -2.394 1.192 -0.8835 -0.5048
-1.291 -2.434 1.216 -0.8835 -0.5474
-1.311 -2.472 1.232 -0.8835 -0.5885
-1.329 -2.507 1.239 -0.8835 -0.6282
-1.346 -2.538 1.236 -0.8835 -0.6663
-1.361 -2.567 1.224 -0.8835 -0.7027
-1.375 -2.593 1.202 -0.8835 -0.7374
-1.387 -2.615 1.171 -0.8835 -0.7702
-1.397 -2.634 1.13 -0.8835 -0.8011
-1.405 -2.65 1.081 -0.8835 -0.8301
-1.412 -2.662 1.023 -0.8835 -0.8569
-1.417 -2.672 0.9565 -0.8835 -0.8816
-1.421 -2.679 0.8825 -0.8835 -0.9041
-1.423 -2.683 0.8013 -0.8835 -0.9243
-1.424 -2.684 0.7136 -0.8835 -0.9422
-1.423 -2.684 0.6201 -0.8835 -0.9578
-1.422 -2.681 0.5214 -0.8835 -0.971
-1.419 -2.676 0.4185 -0.8835 -0.9817
-1.416 -2.671 0.3122 -0.8835 -0.99
-1.413 -2.664 0.2032 -0.8835 -0.9958
-1.409 -2.657 0.09263 -0.8835 -0.9991
-1.405 -2.649 -0.01874 -0.8835 -1
-1.401 -2.641 -0.13 -0.8835 -0.9983
-1.397 -2.634 -0.2401 -0.8835 -0.9941
-1.394 -2.628 -0.3483 -0.8835 -0.9875
-1.391 -2.623 -0.4536 -0.8835 -0.9784
-1.389 -2.619 -0.5551 -0.8835 -0.9668
-1.388 -2.617 -0.6521 -0.8835 -0.9528
-1.388 -2.617 -0.7438 -0.8835 -0.9365
-1.389 -2.619 -0.8294 -0.8835 -0.9178
-1.392 -2.624 -0.9082 -0.8835 -0.8968
-1.396 -2.632 -0.9797 -0.8835 -0.8735
-1.401 -2.642 -1.043 -0.8835 -0.8481
-1.408 -2.656 -1.098 -0.8835 -0.8206
-1.417 -2.673 -1.145 -0.8835 -0.791
-1.428 -2.693 -1.182 -0.8835 -0.7594
-1.44 -2.716 -1.21 -0.8835 -0.7259
-1.455 -2.743 -1.229 -0.8835 -0.6907
-1.47 -2.773 -1.238 -0.8835 -0.6536
-1.488 -2.806 -1.238 -0.8835 -0.615
-1.507 -2.841 -1.228 -0.8835 -0.5748
-1.527 -2.88 -1.209 -0.8835 -0.5332
-1.549 -2.921 -1.182 -0.8835 -0.4903
-1.572 -2.964 -1.146 -0.8835 -0.4461
-1.596 -3.009 -1.102 -0.8835 -0.4008
-1.621 -3.056 -1.05 -0.8835 -0.3545
-1.646 -3.104 -0.9918 -0.8835 -0.3073
-1.672 -3.153 -0.9272 -0.8835 -0.2594
-1.698 -3.203 -0.8571 -0.8835 -0.2108
-1.725 -3.252 -0.7822 -0.8835 -0.1617
-1.751 -3.301 -0.7032 -0.8835 -0.1122
-1.776 -3.349 -0.6211 -0.8835 -0.06235
-1.801 -3.396 -0.5367 -0.8835 -0.01239
-1.825 -3.441 -0.4507 -0.8835 0.0376
-1.848 -3.484 -0.3641 -0.8835 0.0875
-1.869 -3.524 -0.2778 -0.8835 0.1372
-1.888 -3.561 -0.1924 -0.8835 0.1865
-1.906 -3.594 -0.109 -0.8835 0.2354
-1.922 -3.624 -0.02816 -0.8835 0.2837
-1.935 -3.649 0.04922 -0.8835 0.3312
-1.946 -3.67 0.1225 -0.8835 0.378
-1.955 -3.686 0.1909 -0.8835 0.4238
-1.96 -3.696 0.2539 -0.8835 0.4685
-1.963 -3.701 0.311 -0.8835 0.5121
-1.963 -3.701 0.3617 -0.8835 0.5544
-1.959 -3.694 0.4055 -0.8835 0.5953
-1.953 -3.682 0.4422 -0.8835 0.6347
-1.943 -3.664 0.4715 -0.8835 0.6725
-1.93 -3.64 0.4932 -0.8835 0.7087
-1.914 -3.61 0.5072 -0.8835 0.743
-1.895 -3.574 0.5136 -0.8835 0.7756
-1.874 -3.533 0.5125 -0.8835 0.8061
-1.849 -3.486 0.5039 -0.8835 0.8347
-1.821 -3.434 0.4881 -0.8835 0.8612
-1.791 -3.377 0.4656 -0.8835 0.8855
-1.758 -3.315 0.4365 -0.8835 0.9076
-1.723 -3.249 0.4015 -0.8835 0.9275
-1.686 -3.179 0.3611 -0.8835 0.945
-1.647 -3.106 0.3157 -0.8835 0.9602
-1.607 -3.03 0.2662 -0.8835 0.9729
-1.565 -2.951 0.2131 -0.8835 0.9833
-1.522 -2.871 0.1571 -0.8835 0.9911
-1.479 -2.789 0.09907 -0.8835 0.9965
-1.435 -2.706 0.03973 -0.8835 0.9994
-1.536 -2.577 0 -0.8589 1
-1.489 -2.497 -0.06212 -0.8589 0.9988
-1.442 -2.418 -0.1234 -0.8589 0.995
-1.395 -2.34 -0.1831 -0.8589 0.9888
-1.349 -2.263 -0.2405 -0.8589 0.9801
-1.305 -2.189 -0.2947 -0.8589 0.9689
-1.262 -2.117 -0.345 -0.8589 0.9553
-1.221 -2.047 -0.3908 -0.8589 0.9394
-1.181 -1.982 -0.4314 -0.8589 0.9211
-1.144 -1.92 -0.4663 -0.8589 0.9004
-1.11 -1.862 -0.4949 -0.8589 0.8776
-1.078 -1.808 -0.5167 -0.8589 0.8525
-1.049 -1.76 -0.5315 -0.8589 0.8253
-1.023 -1.716 -0.5389 -0.8589 0.7961
-1 -1.678 -0.5387 -0.8589 0.7648
-0.9805 -1.645 -0.5307 -0.8589 0.7317
-0.964 -1.617 -0.5148 -0.8589 0.6967
-0.9509 -1.595 -0.4912 -0.8589 0.66
-0.9412 -1.579 -0.4599 -0.8589 0.6216
-0.9347 -1.568 -0.4211 -0.8589 0.5817
-0.9316 -1.563 -0.375 -0.8589 0.5403
-0.9317 -1.563 -0.3221 -0.8589 0.4976
-0.9349 -1.568 -0.2628 -0.8589 0.4536
-0.9412 -1.579 -0.1976 -0.8589 0.4085
-0.9504 -1.594 -0.127 -0.8589 0.3624
-0.9623 -1.614 -0.05165 -0.8589 0.3153
-0.9768 -1.638 0.02769 -0.8589 0.2675
-0.9937 -1.667 0.1103 -0.8589 0.219
-1.013 -1.699 0.1955 -0.8589 0.17
-1.034 -1.734 0.2823 -0.8589 0.1205
-1.056 -1.772 0.37 -0.8589 0.07074
-1.081 -1.812 0.4577 -0.8589 0.02079
-1.106 -1.855 0.5445 -0.8589 -0.0292
-1.132 -1.899 0.6295 -0.8589 -0.07912
-1.159 -1.945 0.712 -0.8589 -0.1288
-1.187 -1.991 0.791 -0.8589 -0.1782
-1.215 -2.037 0.8658 -0.8589 -0.2272
-1.242 -2.084 0.9355 -0.8589 -0.2756
-1.27 -2.13 0.9994 -0.8589 -0.3233
-1.297 -2.175 1.057 -0.8589 -0.3702
-1.323 -2.219 1.107 -0.8589 -0.4161
-1.348 -2.261 1.15 -0.8589 -0.4611
-1.372 -2.302 1.184 -0.8589 -0.5048
-1.395 -2.34 1.21 -0.8589 -0.5474
-1.417 -2.377 1.227 -0.8589 -0.5885
-1.437 -2.41 1.234 -0.8589 -0.6282
-1.456 -2.441 1.232 -0.8589 -0.6663
-1.472 -2.47 1.221 -0.8589 -0.7027
-1.487 -2.495 1.2 -0.8589 -0.7374
-1.501 -2.517 1.169 -0.8589 -0.7702
-1.512 -2.537 1.129 -0.8589 -0.8011
-1.522 -2.553 1.08 -0.8589 -0.8301
-1.53 -2.567 1.023 -0.8589 -0.8569
-1.537 -2.577 0.9568 -0.8589 -0.8816
-1.541 -2.585 0.883 -0.8589 -0.9041
-1.545 -2.591 0.802 -0.8589 -0.9243
-1.547 -2.594 0.7143 -0.8589 -0.9422
-1.548 -2.596 0.6208 -0.8589 -0.9578
-1.547 -2.595 0.5221 -0.8589 -0.971
-1.546 -2.593 0.4191 -0.8589 -0.9817
-1.544 -2.59 0.3127 -0.8589 -0.99
-1.542 -2.586 0.2036 -0.8589 -0.9958
-1.539 -2.581 0.09278 -0.8589 -0.9991
-1.536 -2.576 -0.01877 -0.8589 -1
-1.533 -2.571 -0.1302 -0.8589 -0.9983
-1.53 -2.566 -0.2405 -0.8589 -0.9941
-1.528 -2.562 -0.3488 -0.8589 -0.9875
-1.526 -2.56 -0.4542 -0.8589 -0.9784
-1.525 -2.558 -0.5559 -0.8589 -0.9668
-1.525 -2.558 -0.6529 -0.8589 -0.9528
-1.526 -2.56 -0.7445 -0.8589 -0.9365
-1.529 -2.564 -0.83 -0.8589 -0.9178
-1.533 -2.571 -0.9087 -0.8589 -0.8968
-1.538 -2.58 -0.9799 -0.8589 -0.8735
-1.545 -2.591 -1.043 -0.8589 -0.8481
-1.554 -2.606 -1.098 -0.8589 -0.8206
-1.564 -2.623 -1.144 -0.8589 -0.791
-1.576 -2.643 -1.181 -0.8589 -0.7594
-1.59 -2.667 -1.208 -0.8589 -0.7259
-1.606 -2.693 -1.226 -0.8589 -0.6907
-1.623 -2.722 -1.234 -0.8589 -0.6536
-1.642 -2.754 -1.233 -0.8589 -0.615
-1.663 -2.789 -1.222 -0.8589 -0.5748
-1.685 -2.826 -1.202 -0.8589 -0.5332
-1.708 -2.865 -1.174 -0.8589 -0.4903
-1.733 -2.906 -1.136 -0.8589 -0.4461
-1.758 -2.949 -1.091 -0.8589 -0.4008
-1.785 -2.994 -1.038 -0.8589 -0.3545
-1.812 -3.039 -0.9786 -0.8589 -0.3073
-1.84 -3.086 -0.9127 -0.8589 -0.2594
-1.867 -3.132 -0.8412 -0.8589 -0.2108
-1.895 -3.178 -0.7649 -0.8589 -0.1617
-1.922 -3.224 -0.6846 -0.8589 -0.1122
-1.949 -3.269 -0.6012 -0.8589 -0.06235
-1.975 -3.313 -0.5154 -0.8589 -0.01239
-2 -3.355 -0.4282 -0.8589 0.0376
-2.024 -3.395 -0.3404 -0.8589 0.0875
-2.046 -3.432 -0.253 -0.8589 0.1372
-2.066 -3.466 -0.1666 -0.8589 0.1865
-2.085 -3.497 -0.08221 -0.8589 0.2354
-2.101 -3.524 -0.0006019 -0.8589 0.2837
-2.114 -3.547 0.07747 -0.8589 0.3312
-2.126 -3.565 0.1513 -0.8589 0.378
-2.134 -3.579 0.2201 -0.8589 0.4238
-2.139 -3.588 0.2834 -0.8589 0.4685
-2.141 -3.592 0.3407 -0.8589 0.5121
-2.14 -3.59 0.3913 -0.8589 0.5544
-2.136 -3.583 0.4349 -0.8589 0.5953
-2.128 -3.57 0.4712 -0.8589 0.6347
-2.118 -3.552 0.5 -0.8589 0.6725
-2.103 -3.528 0.521 -0.8589 0.7087
-2.086 -3.499 0.5342 -0.8589 0.743
-2.065 -3.464 0.5396 -0.8589 0.7756
-2.041 -3.423 0.5373 -0.8589 0.8061
-2.014 -3.378 0.5274 -0.8589 0.8347
-1.984 -3.328 0.5102 -0.8589 0.8612
-1.951 -3.273 0.486 -0.8589 0.8855
-1.916 -3.214 0.4552 -0.8589 0.9076
-1.878 -3.15 0.4184 -0.8589 0.9275
-1.838 -3.083 0.3759 -0.8589 0.945
-1.796 -3.013 0.3285 -0.8589 0.9602
-1.753 -2.94 0.2768 -0.8589 0.9729
-1.708 -2.865 0.2215 -0.8589 0.9833
-1.662 -2.788 0.1633 -0.8589 0.9911
-1.615 -2.709 0.103 -0.8589 0.9965
-1.568 -2.63 0.04128 -0.8589 0.9994
-1.663 -2.497 0 -0.8323 1
-1.613 -2.421 -0.06442 -0.8323 0.9988
-1.562 -2.346 -0.128 -0.8323 0.995
-1.513 -2.271 -0.19 -0.8323 0.9888
-1.464 -2.198 -0.2495 -0.8323 0.9801
-1.417 -2.127 -0.3059 -0.8323 0.9689
-1.371 -2.058 -0.3583 -0.8323 0.9553
-1.327 -1.992 -0.4061 -0.8323 0.9394
-1.285 -1.929 -0.4486 -0.8323 0.9211
-1.246 -1.87 -0.4853 -0.8323 0.9004
-1.209 -1.814 -0.5155 -0.8323 0.8776
-1.174 -1.763 -0.5389 -0.8323 0.8525
-1.143 -1.716 -0.5551 -0.8323 0.8253
-1.115 -1.674 -0.5638 -0.8323 0.7961
-1.09 -1.637 -0.5647 -0.8323 0.7648
-1.069 -1.605 -0.5576 -0.8323 0.7317
-1.051 -1.578 -0.5426 -0.8323 0.6967
-1.036 -1.556 -0.5196 -0.8323 0.66
-1.025 -1.539 -0.4888 -0.8323 0.6216
-1.018 -1.528 -0.4503 -0.8323 0.5817
-1.014 -1.522 -0.4044 -0.8323 0.5403
-1.013 -1.521 -0.3515 -0.8323 0.4976
-1.016 -1.525 -0.2921 -0.8323 0.4536
-1.022 -1.534 -0.2265 -0.8323 0.4085
-1.031 -1.548 -0.1555 -0.8323 0.3624
-1.043 -1.565 -0.07965 -0.8323 0.3153
-1.057 -1.587 0.0003721 -0.8323 0.2675
-1.074 -1.613 0.0838 -0.8323 0.219
-1.094 -1.642 0.1698 -0.8323 0.17
-1.115 -1.674 0.2577 -0.8323 0.1205
-1.139 -1.709 0.3464 -0.8323 0.07074
-1.164 -1.747 0.4353 -0.8323 0.02079
-1.19 -1.786 0.5233 -0.8323 -0.0292
-1.217 -1.827 0.6096 -0.8323 -0.07912
-1.245 -1.87 0.6934 -0.8323 -0.1288
-1.274 -1.913 0.7737 -0.8323 -0.1782
-1.303 -1.956 0.8498 -0.8323 -0.2272
-1.332 -2 0.9208 -0.8323 -0.2756
-1.361 -2.043 0.9861 -0.8323 -0.3233
-1.389 -2.085 1.045 -0.8323 -0.3702
-1.417 -2.127 1.096 -0.8323 -0.4161
-1.444 -2.167 1.14 -0.8323 -0.4611
-1.469 -2.206 1.176 -0.8323 -0.5048
-1.494 -2.243 1.203 -0.8323 -0.5474
-1.517 -2.277 1.221 -0.8323 -0.5885
-1.539 -2.31 1.229 -0.8323 -0.6282
-1.559 -2.34 1.228 -0.8323 -0.6663
-1.577 -2.368 1.217 -0.8323 -0.7027
-1.594 -2.393 1.197 -0.8323 -0.7374
-1.609 -2.415 1.167 -0.8323 -0.7702
-1.622 -2.434 1.128 -0.8323 -0.8011
-1.633 -2.451 1.079 -0.8323 -0.8301
-1.642 -2.466 1.022 -0.8323 -0.8569
-1.65 -2.477 0.9565 -0.8323 -0.8816
-1.656 -2.487 0.883 -0.8323 -0.9041
-1.661 -2.494 0.8021 -0.8323 -0.9243
-1.665 -2.499 0.7146 -0.8323 -0.9422
-1.667 -2.502 0.6212 -0.8323 -0.9578
-1.668 -2.504 0.5225 -0.8323 -0.971
-1.668 -2.504 0.4195 -0.8323 -0.9817
-1.667 -2.503 0.3129 -0.8323 -0.99
-1.666 -2.501 0.2038 -0.8323 -0.9958
-1.665 -2.499 0.09288 -0.8323 -0.9991
-1.663 -2.496 -0.01879 -0.8323 -1
-1.661 -2.494 -0.1303 -0.8323 -0.9983
-1.66 -2.492 -0.2407 -0.8323 -0.9941
-1.659 -2.49 -0.3491 -0.8323 -0.9875
-1.658 -2.49 -0.4546 -0.8323 -0.9784
-1.659 -2.49 -0.5562 -0.8323 -0.9668
-1.66 -2.492 -0.6532 -0.8323 -0.9528
-1.663 -2.496 -0.7448 -0.8323 -0.9365
-1.666 -2.502 -0.8301 -0.8323 -0.9178
-1.672 -2.51 -0.9086 -0.8323 -0.8968
-1.678 -2.52 -0.9795 -0.8323 -0.8735
-1.687 -2.532 -1.042 -0.8323 -0.8481
-1.697 -2.548 -1.097 -0.8323 -0.8206
-1.709 -2.565 -1.142 -0.8323 -0.791
-1.723 -2.586 -1.178 -0.8323 -0.7594
-1.738 -2.609 -1.205 -0.8323 -0.7259
-1.755 -2.635 -1.222 -0.8323 -0.6907
-1.774 -2.663 -1.229 -0.8323 -0.6536
-1.795 -2.694 -1.227 -0.8323 -0.615
-1.817 -2.728 -1.216 -0.8323 -0.5748
-1.84 -2.763 -1.195 -0.8323 -0.5332
-1.865 -2.801 -1.165 -0.8323 -0.4903
-1.892 -2.84 -1.126 -0.8323 -0.4461
-1.919 -2.88 -1.08 -0.8323 -0.4008
-1.947 -2.922 -1.026 -0.8323 -0.3545
-1.975 -2.965 -0.9648 -0.8323 -0.3073
-2.004 -3.009 -0.8976 -0.8323 -0.2594
-2.033 -3.052 -0.8247 -0.8323 -0.2108
-2.062 -3.096 -0.7471 -0.8323 -0.1617
-2.09 -3.138 -0.6655 -0.8323 -0.1122
-2.118 -3.18 -0.5808 -0.8323 -0.06235
-2.145 -3.221 -0.4938 -0.8323 -0.01239
-2.171 -3.26 -0.4054 -0.8323 0.0376
-2.196 -3.296 -0.3165 -0.8323 0.0875
-2.218 -3.33 -0.228 -0.8323 0.1372
-2.239 -3.362 -0.1407 -0.8323 0.1865
-2.258 -3.39 -0.05541 -0.8323 0.2354
-2.274 -3.414 0.02696 -0.8323 0.2837
-2.288 -3.435 0.1057 -0.8323 0.3312
-2.299 -3.451 0.18 -0.8323 0.378
-2.307 -3.463 0.2492 -0.8323 0.4238
-2.312 -3.47 0.3128 -0.8323 0.4685
-2.313 -3.473 0.3701 -0.8323 0.5121
-2.311 -3.47 0.4206 -0.8323 0.5544
-2.306 -3.462 0.4641 -0.8323 0.5953
-2.297 -3.449 0.5 -0.8323 0.6347
-2.285 -3.431 0.5282 -0.8323 0.6725
-2.27 -3.407 0.5485 -0.8323 0.7087
-2.25 -3.379 0.5609 -0.8323 0.743
-2.228 -3.345 0.5652 -0.8323 0.7756
-2.202 -3.306 0.5617 -0.8323 0.8061
-2.173 -3.262 0.5505 -0.8323 0.8347
-2.141 -3.214 0.5319 -0.8323 0.8612
-2.106 -3.161 0.5061 -0.8323 0.8855
-2.068 -3.104 0.4736 -0.8323 0.9076
-2.027 -3.044 0.4349 -0.8323 0.9275
-1.985 -2.98 0.3906 -0.8323 0.945
-1.94 -2.913 0.3411 -0.8323 0.9602
-1.894 -2.843 0.2873 -0.8323 0.9729
-1.846 -2.771 0.2298 -0.8323 0.9833
-1.797 -2.698 0.1694 -0.8323 0.9911
-1.747 -2.623 0.1068 -0.8323 0.9965
-1.697 -2.547 0.04281 -0.8323 0.9994
-1.786 -2.411 0 -0.8035 1
-1.733 -2.339 -0.06668 -0.8035 0.9988
-1.68 -2.267 -0.1325 -0.8035 0.995
-1.627 -2.197 -0.1967 -0.8035 0.9888
-1.576 -2.127 -0.2584 -0.8035 0.9801
-1.526 -2.06 -0.3169 -0.8035 0.9689
-1.478 -1.994 -0.3713 -0.8035 0.9553
-1.431 -1.932 -0.4211 -0.8035 0.9394
-1.387 -1.872 -0.4655 -0.8035 0.9211
-1.345 -1.815 -0.5039 -0.8035 0.9004
-1.306 -1.762 -0.5359 -0.8035 0.8776
-1.269 -1.713 -0.5608 -0.8035 0.8525
-1.236 -1.668 -0.5784 -0.8035 0.8253
-1.206 -1.628 -0.5883 -0.8035 0.7961
-1.179 -1.592 -0.5903 -0.8035 0.7648
-1.156 -1.561 -0.5842 -0.8035 0.7317
-1.137 -1.534 -0.57 -0.8035 0.6967
-1.121 -1.513 -0.5477 -0.8035 0.66
-1.109 -1.496 -0.5174 -0.8035 0.6216
-1.1 -1.485 -0.4792 -0.8035 0.5817
-1.095 -1.478 -0.4336 -0.8035 0.5403
-1.094 -1.476 -0.3807 -0.8035 0.4976
-1.096 -1.479 -0.3212 -0.8035 0.4536
-1.101 -1.486 -0.2554 -0.8035 0.4085
-1.109 -1.498 -0.184 -0.8035 0.3624
-1.121 -1.513 -0.1076 -0.8035 0.3153
-1.136 -1.533 -0.02694 -0.8035 0.2675
-1.153 -1.556 0.05723 -0.8035 0.219
-1.172 -1.582 0.1441 -0.8035 0.17
-1.194 -1.612 0.2329 -0.8035 0.1205
-1.218 -1.644 0.3227 -0.8035 0.07074
-1.243 -1.678 0.4126 -0.8035 0.02079
-1.27 -1.714 0.5018 -0.8035 -0.0292
-1.298 -1.752 0.5893 -0.8035 -0.07912
-1.327 -1.791 0.6743 -0.8035 -0.1288
-1.357 -1.831 0.7559 -0.8035 -0.1782
-1.387 -1.872 0.8333 -0.8035 -0.2272
-1.417 -1.912 0.9056 -0.8035 -0.2756
-1.447 -1.953 0.9721 -0.8035 -0.3233
-1.476 -1.993 1.032 -0.8035 -0.3702
-1.505 -2.032 1.085 -0.8035 -0.4161
-1.533 -2.07 1.13 -0.8035 -0.4611
-1.56 -2.106 1.167 -0.8035 -0.5048
-1.586 -2.141 1.195 -0.8035 -0.5474
-1.611 -2.174 1.214 -0.8035 -0.5885
-1.634 -2.206 1.223 -0.8035 -0.6282
-1.655 -2.235 1.223 -0.8035 -0.6663
-1.675 -2.261 1.213 -0.8035 -0.7027
-1.693 -2.286 1.194 -0.8035 -0.7374
-1.71 -2.308 1.164 -0.8035 -0.7702
-1.724 -2.328 1.126 -0.8035 -0.8011
-1.737 -2.345 1.078 -0.8035 -0.8301
-1.748 -2.36 1.021 -0.8035 -0.8569
-1.758 -2.373 0.9556 -0.8035 -0.8816
-1.766 -2.383 0.8824 -0.8035 -0.9041
-1.772 -2.392 0.8018 -0.8035 -0.9243
-1.777 -2.398 0.7145 -0.8035 -0.9422
-1.78 -2.403 0.6211 -0.8035 -0.9578
-1.783 -2.407 0.5226 -0.8035 -0.971
-1.785 -2.409 0.4196 -0.8035 -0.9817
-1.786 -2.41 0.313 -0.8035 -0.99
-1.786 -2.411 0.2038 -0.8035 -0.9958
-1.786 -2.411 0.09291 -0.8035 -0.9991
-1.786 -2.411 -0.0188 -0.8035 -1
-1.786 -2.41 -0.1304 -0.8035 -0.9983
-1.786 -2.41 -0.2408 -0.8035 -0.9941
-1.786 -2.411 -0.3492 -0.8035 -0.9875
-1.787 -2.413 -0.4546 -0.8035 -0.9784
-1.789 -2.415 -0.5562 -0.8035 -0.9668
-1.792 -2.419 -0.6532 -0.8035 -0.9528
-1.796 -2.425 -0.7446 -0.8035 -0.9365
-1.802 -2.432 -0.8297 -0.8035 -0.9178
-1.809 -2.441 -0.9079 -0.8035 -0.8968
-1.817 -2.452 -0.9785 -0.8035 -0.8735
-1.827 -2.466 -1.041 -0.8035 -0.8481
-1.839 -2.482 -1.095 -0.8035 -0.8206
-1.852 -2.5 -1.14 -0.8035 -0.791
-1.867 -2.52 -1.175 -0.8035 -0.7594
-1.884 -2.543 -1.201 -0.8035 -0.7259
-1.903 -2.568 -1.217 -0.8035 -0.6907
-1.923 -2.596 -1.224 -0.8035 -0.6536
-1.945 -2.626 -1.221 -0.8035 -0.615
-1.969 -2.658 -1.208 -0.8035 -0.5748
-1.994 -2.692 -1.186 -0.8035 -0.5332
-2.02 -2.727 -1.155 -0.8035 -0.4903
-2.048 -2.764 -1.116 -0.8035 -0.4461
-2.076 -2.803 -1.068 -0.8035 -0.4008
-2.105 -2.842 -1.013 -0.8035 -0.3545
-2.135 -2.882 -0.9505 -0.8035 -0.3073
-2.165 -2.923 -0.8819 -0.8035 -0.2594
-2.195 -2.963 -0.8078 -0.8035 -0.2108
-2.225 -3.003 -0.7289 -0.8035 -0.1617
-2.254 -3.043 -0.6461 -0.8035 -0.1122
-2.283 -3.082 -0.5601 -0.8035 -0.06235
-2.311 -3.119 -0.4719 -0.8035 -0.01239
-2.337 -3.155 -0.3824 -0.8035 0.0376
-2.362 -3.188 -0.2924 -0.8035 0.0875
-2.385 -3.22 -0.2029 -0.8035 0.1372
-2.406 -3.248 -0.1146 -0.8035 0.1865
-2.425 -3.273 -0.02858 -0.8035 0.2354
-2.441 -3.295 0.0545 -0.8035 0.2837
-2.455 -3.314 0.1338 -0.8035 0.3312
-2.465 -3.328 0.2086 -0.8035 0.378
-2.473 -3.338 0.2782 -0.8035 0.4238
-2.477 -3.344 0.3419 -0.8035 0.4685
-2.478 -3.345 0.3993 -0.8035 0.5121
-2.475 -3.341 0.4497 -0.8035 0.5544
-2.469 -3.333 0.4929 -0.8035 0.5953
-2.459 -3.32 0.5285 -0.8035 0.6347
-2.446 -3.301 0.5561 -0.8035 0.6725
-2.429 -3.278 0.5757 -0.8035 0.7087
-2.408 -3.25 0.5872 -0.8035 0.743
-2.384 -3.218 0.5905 -0.8035 0.7756
-2.356 -3.18 0.5859 -0.8035 0.8061
-2.325 -3.138 0.5733 -0.8035 0.8347
-2.29 -3.092 0.5532 -0.8035 0.8612
-2.253 -3.041 0.5259 -0.8035 0.8855
-2.213 -2.987 0.4917 -0.8035 0.9076
-2.17 -2.93 0.4512 -0.8035 0.9275
-2.125 -2.869 0.4049 -0.8035 0.945
-2.078 -2.805 0.3535 -0.8035 0.9602
-2.029 -2.739 0.2976 -0.8035 0.9729
-1.979 -2.671 0.238 -0.8035 0.9833
-1.927 -2.601 0.1754 -0.8035 0.9911
-1.874 -2.53 0.1105 -0.8035 0.9965
-1.821 -2.458 0.04431 -0.8035 0.9994
-1.904 -2.318 0 -0.7728 1
-1.848 -2.25 -0.0689 -0.7728 0.9988
-1.793 -2.183 -0.1369 -0.7728 0.995
-1.738 -2.116 -0.2033 -0.7728 0.9888
-1.684 -2.051 -0.2672 -0.7728 0.9801
-1.632 -1.987 -0.3277 -0.7728 0.9689
-1.581 -1.925 -0.3842 -0.7728 0.9553
-1.533 -1.866 -0.4359 -0.7728 0.9394
-1.486 -1.809 -0.4821 -0.7728 0.9211
-1.442 -1.756 -0.5223 -0.7728 0.9004
-1.401 -1.705 -0.5559 -0.7728 0.8776
-1.362 -1.659 -0.5823 -0.7728 0.8525
-1.327 -1.616 -0.6013 -0.7728 0.8253
-1.295 -1.577 -0.6125 -0.7728 0.7961
-1.267 -1.543 -0.6156 -0.7728 0.7648
-1.242 -1.513 -0.6105 -0.7728 0.7317
-1.221 -1.487 -0.5971 -0.7728 0.6967
-1.204 -1.466 -0.5755 -0.7728 0.66
-1.19 -1.449 -0.5457 -0.7728 0.6216
-1.181 -1.437 -0.5079 -0.7728 0.5817
-1.175 -1.43 -0.4624 -0.7728 0.5403
-1.172 -1.427 -0.4097 -0.7728 0.4976
-1.173 -1.429 -0.3501 -0.7728 0.4536
-1.178 -1.434 -0.2841 -0.7728 0.4085
-1.186 -1.444 -0.2123 -0.7728 0.3624
-1.197 -1.458 -0.1355 -0.7728 0.3153
-1.211 -1.475 -0.05425 -0.7728 0.2675
-1.228 -1.495 0.03062 -0.7728 0.219
-1.248 -1.519 0.1183 -0.7728 0.17
-1.27 -1.546 0.208 -0.7728 0.1205
-1.293 -1.575 0.2987 -0.7728 0.07074
-1.319 -1.606 0.3897 -0.7728 0.02079
-1.346 -1.639 0.48 -0.7728 -0.0292
-1.375 -1.674 0.5687 -0.7728 -0.07912
-1.404 -1.71 0.6548 -0.7728 -0.1288
-1.435 -1.747 0.7377 -0.7728 -0.1782
-1.465 -1.784 0.8163 -0.7728 -0.2272
-1.496 -1.822 0.8898 -0.7728 -0.2756
-1.527 -1.859 0.9576 -0.7728 -0.3233
-1.558 -1.896 1.019 -0.7728 -0.3702
-1.588 -1.933 1.073 -0.7728 -0.4161
-1.617 -1.969 1.119 -0.7728 -0.4611
-1.645 -2.003 1.157 -0.7728 -0.5048
-1.672 -2.036 1.186 -0.7728 -0.5474
-1.698 -2.068 1.206 -0.7728 -0.5885
-1.723 -2.098 1.216 -0.7728 -0.6282
-1.746 -2.125 1.217 -0.7728 -0.6663
-1.767 -2.151 1.208 -0.7728 -0.7027
-1.787 -2.175 1.189 -0.7728 -0.7374
-1.805 -2.197 1.161 -0.7728 -0.7702
-1.821 -2.217 1.123 -0.7728 -0.8011
-1.835 -2.234 1.075 -0.7728 -0.8301
-1.848 -2.25 1.019 -0.7728 -0.8569
-1.859 -2.263 0.9542 -0.7728 -0.8816
-1.868 -2.275 0.8813 -0.7728 -0.9041
-1.876 -2.285 0.801 -0.7728 -0.9243
-1.883 -2.293 0.7139 -0.7728 -0.9422
-1.888 -2.299 0.6207 -0.7728 -0.9578
-1.893 -2.305 0.5223 -0.7728 -0.971
-1.896 -2.309 0.4194 -0.7728 -0.9817
-1.899 -2.312 0.3129 -0.7728 -0.99
-1.901 -2.315 0.2038 -0.7728 -0.9958
-1.903 -2.317 0.09289 -0.7728 -0.9991
-1.904 -2.319 -0.01879 -0.7728 -1
-1.906 -2.321 -0.1303 -0.7728 -0.9983
-1.908 -2.323 -0.2407 -0.7728 -0.9941
-1.91 -2.326 -0.3491 -0.7728 -0.9875
-1.913 -2.329 -0.4544 -0.7728 -0.9784
-1.917 -2.334 -0.5559 -0.7728 -0.9668
-1.921 -2.339 -0.6527 -0.7728 -0.9528
-1.927 -2.346 -0.7439 -0.7728 -0.9365
-1.934 -2.355 -0.8288 -0.7728 -0.9178
-1.943 -2.365 -0.9067 -0.7728 -0.8968
-1.953 -2.378 -0.9769 -0.7728 -0.8735
-1.964 -2.392 -1.039 -0.7728 -0.8481
-1.978 -2.408 -1.092 -0.7728 -0.8206
-1.993 -2.426 -1.137 -0.7728 -0.791
-2.009 -2.446 -1.171 -0.7728 -0.7594
-2.028 -2.469 -1.197 -0.7728 -0.7259
-2.048 -2.494 -1.212 -0.7728 -0.6907
-2.07 -2.52 -1.218 -0.7728 -0.6536
-2.093 -2.549 -1.214 -0.7728 -0.615
-2.118 -2.579 -1.2 -0.7728 -0.5748
-2.145 -2.611 -1.177 -0.7728 -0.5332
-2.172 -2.645 -1.145 -0.7728 -0.4903
-2.201 -2.68 -1.104 -0.7728 -0.4461
-2.231 -2.716 -1.055 -0.7728 -0.4008
-2.261 -2.753 -0.999 -0.7728 -0.3545
-2.291 -2.79 -0.9355 -0.7728 -0.3073
-2.322 -2.828 -0.8657 -0.7728 -0.2594
-2.353 -2.865 -0.7904 -0.7728 -0.2108
-2.384 -2.902 -0.7102 -0.7728 -0.1617
-2.414 -2.939 -0.6262 -0.7728 -0.1122
-2.443 -2.974 -0.5391 -0.7728 -0.06235
-2.471 -3.009 -0.4497 -0.7728 -0.01239
-2.498 -3.041 -0.3591 -0.7728 0.0376
-2.523 -3.072 -0.2681 -0.7728 0.0875
-2.546 -3.1 -0.1776 -0.7728 0.1372
-2.567 -3.126 -0.08856 -0.7728 0.1865
-2.586 -3.148 -0.001726 -0.7728 0.2354
-2.602 -3.168 0.08201 -0.7728 0.2837
-2.615 -3.184 0.1619 -0.7728 0.3312
-2.625 -3.196 0.2371 -0.7728 0.378
-2.632 -3.205 0.3069 -0.7728 0.4238
-2.636 -3.209 0.3708 -0.7728 0.4685
-2.636 -3.209 0.4282 -0.7728 0.5121
-2.632 -3.205 0.4786 -0.7728 0.5544
-2.625 -3.196 0.5215 -0.7728 0.5953
-2.614 -3.182 0.5566 -0.7728 0.6347
-2.599 -3.164 0.5837 -0.7728 0.6725
-2.58 -3.141 0.6025 -0.7728 0.7087
-2.558 -3.114 0.6131 -0.7728 0.743
-2.532 -3.083 0.6155 -0.7728 0.7756
-2.502 -3.047 0.6096 -0.7728 0.8061
-2.469 -3.007 0.5958 -0.7728 0.8347
-2.433 -2.963 0.5742 -0.7728 0.8612
-2.394 -2.915 0.5453 -0.7728 0.8855
-2.352 -2.863 0.5095 -0.7728 0.9076
-2.307 -2.809 0.4672 -0.7728 0.9275
-2.259 -2.751 0.4191 -0.7728 0.945
-2.21 -2.691 0.3657 -0.7728 0.9602
-2.159 -2.628 0.3078 -0.7728 0.9729
-2.106 -2.564 0.246 -0.7728 0.9833
-2.052 -2.498 0.1812 -0.7728 0.9911
-1.997 -2.431 0.1142 -0.7728 0.9965
-1.941 -2.363 0.04578 -0.7728 0.9994
-2.018 -2.22 0 -0.7401 1
-1.96 -2.157 -0.07107 -0.7401 0.9988
-1.902 -2.093 -0.1413 -0.7401 0.995
-1.845 -2.031 -0.2098 -0.7401 0.9888
-1.789 -1.969 -0.2757 -0.7401 0.9801
-1.735 -1.909 -0.3383 -0.7401 0.9689
-1.682 -1.851 -0.3968 -0.7401 0.9553
-1.631 -1.795 -0.4504 -0.7401 0.9394
-1.583 -1.742 -0.4984 -0.7401 0.9211
-1.537 -1.691 -0.5403 -0.7401 0.9004
-1.494 -1.644 -0.5755 -0.7401 0.8776
-1.454 -1.6 -0.6035 -0.7401 0.8525
-1.417 -1.559 -0.6238 -0.7401 0.8253
-1.383 -1.522 -0.6363 -0.7401 0.7961
-1.353 -1.489 -0.6405 -0.7401 0.7648
-1.327 -1.46 -0.6364 -0.7401 0.7317
-1.304 -1.435 -0.6238 -0.7401 0.6967
-1.286 -1.415 -0.6028 -0.7401 0.66
-1.271 -1.398 -0.5736 -0.7401 0.6216
-1.26 -1.386 -0.5362 -0.7401 0.5817
-1.253 -1.378 -0.491 -0.7401 0.5403
-1.249 -1.375 -0.4384 -0.7401 0.4976
-1.249 -1.375 -0.3787 -0.7401 0.4536
-1.253 -1.379 -0.3126 -0.7401 0.4085
-1.261 -1.387 -0.2405 -0.7401 0.3624
-1.271 -1.399 -0.1633 -0.7401 0.3153
-1.285 -1.414 -0.08151 -0.7401 0.2675
-1.301 -1.432 0.003996 -0.7401 0.219
-1.32 -1.453 0.09242 -0.7401 0.17
-1.342 -1.477 0.1829 -0.7401 0.1205
-1.366 -1.503 0.2746 -0.7401 0.07074
-1.391 -1.531 0.3665 -0.7401 0.02079
-1.419 -1.561 0.4579 -0.7401 -0.0292
-1.447 -1.593 0.5476 -0.7401 -0.07912
-1.477 -1.626 0.635 -0.7401 -0.1288
-1.508 -1.659 0.7189 -0.7401 -0.1782
-1.539 -1.694 0.7987 -0.7401 -0.2272
-1.571 -1.728 0.8735 -0.7401 -0.2756
-1.602 -1.763 0.9424 -0.7401 -0.3233
-1.633 -1.797 1.005 -0.7401 -0.3702
-1.664 -1.831 1.06 -0.7401 -0.4161
-1.695 -1.865 1.107 -0.7401 -0.4611
-1.724 -1.897 1.146 -0.7401 -0.5048
-1.752 -1.928 1.176 -0.7401 -0.5474
-1.779 -1.958 1.197 -0.7401 -0.5885
-1.805 -1.986 1.209 -0.7401 -0.6282
-1.829 -2.013 1.21 -0.7401 -0.6663
-1.852 -2.038 1.202 -0.7401 -0.7027
-1.873 -2.061 1.184 -0.7401 -0.7374
-1.893 -2.083 1.156 -0.7401 -0.7702
-1.91 -2.102 1.119 -0.7401 -0.8011
-1.927 -2.12 1.072 -0.7401 -0.8301
-1.941 -2.136 1.016 -0.7401 -0.8569
-1.954 -2.15 0.9521 -0.7401 -0.8816
-1.965 -2.162 0.8796 -0.7401 -0.9041
-1.975 -2.173 0.7996 -0.7401 -0.9243
-1.983 -2.183 0.7128 -0.7401 -0.9422
-1.991 -2.191 0.6199 -0.7401 -0.9578
-1.997 -2.197 0.5217 -0.7401 -0.971
-2.002 -2.203 0.419 -0.7401 -0.9817
-2.007 -2.208 0.3126 -0.7401 -0.99
-2.011 -2.213 0.2036 -0.7401 -0.9958
-2.015 -2.217 0.09281 -0.7401 -0.9991
-2.018 -2.221 -0.01878 -0.7401 -1
-2.022 -2.225 -0.1302 -0.7401 -0.9983
-2.026 -2.229 -0.2405 -0.7401 -0.9941
-2.03 -2.234 -0.3487 -0.7401 -0.9875
-2.035 -2.239 -0.4539 -0.7401 -0.9784
-2.04 -2.245 -0.5553 -0.7401 -0.9668
-2.047 -2.252 -0.6518 -0.7401 -0.9528
-2.055 -2.261 -0.7427 -0.7401 -0.9365
-2.063 -2.271 -0.8273 -0.7401 -0.9178
-2.074 -2.282 -0.9049 -0.7401 -0.8968
-2.086 -2.295 -0.9747 -0.7401 -0.8735
-2.099 -2.31 -1.036 -0.7401 -0.8481
-2.114 -2.326 -1.089 -0.7401 -0.8206
-2.13 -2.344 -1.133 -0.7401 -0.791
-2.149 -2.365 -1.167 -0.7401 -0.7594
-2.169 -2.387 -1.191 -0.7401 -0.7259
-2.19 -2.411 -1.206 -0.7401 -0.6907
-2.214 -2.436 -1.211 -0.7401 -0.6536
-2.239 -2.463 -1.206 -0.7401 -0.615
-2.265 -2.492 -1.191 -0.7401 -0.5748
-2.292 -2.523 -1.167 -0.7401 -0.5332
-2.321 -2.554 -1.134 -0.7401 -0.4903
-2.351 -2.587 -1.092 -0.7401 -0.4461
-2.381 -2.62 -1.042 -0.7401 -0.4008
-2.412 -2.655 -0.9846 -0.7401 -0.3545
-2.444 -2.689 -0.92 -0.7401 -0.3073
-2.475 -2.724 -0.849 -0.7401 -0.2594
-2.507 -2.758 -0.7724 -0.7401 -0.2108
-2.538 -2.793 -0.6911 -0.7401 -0.1617
-2.568 -2.826 -0.6059 -0.7401 -0.1122
-2.598 -2.858 -0.5177 -0.7401 -0.06235
-2.626 -2.89 -0.4273 -0.7401 -0.01239
-2.653 -2.919 -0.3356 -0.7401 0.0376
-2.678 -2.947 -0.2437 -0.7401 0.0875
-2.701 -2.972 -0.1523 -0.7401 0.1372
-2.722 -2.995 -0.06241 -0.7401 0.1865
-2.74 -3.015 0.02513 -0.7401 0.2354
-2.755 -3.032 0.1095 -0.7401 0.2837
-2.768 -3.046 0.1898 -0.7401 0.3312
-2.777 -3.056 0.2654 -0.7401 0.378
-2.784 -3.063 0.3355 -0.7401 0.4238
-2.786 -3.066 0.3995 -0.7401 0.4685
-2.785 -3.065 0.4569 -0.7401 0.5121
-2.781 -3.06 0.5071 -0.7401 0.5544
-2.772 -3.051 0.5497 -0.7401 0.5953
-2.76 -3.037 0.5843 -0.7401 0.6347
-2.744 -3.019 0.6108 -0.7401 0.6725
-2.724 -2.997 0.629 -0.7401 0.7087
-2.7 -2.971 0.6387 -0.7401 0.743
-2.672 -2.941 0.64 -0.7401 0.7756
-2.641 -2.906 0.633 -0.7401 0.8061
-2.606 -2.868 0.6179 -0.7401 0.8347
-2.568 -2.826 0.5949 -0.7401 0.8612
-2.527 -2.781 0.5645 -0.7401 0.8855
-2.483 -2.733 0.527 -0.7401 0.9076
-2.436 -2.681 0.4829 -0.7401 0.9275
-2.387 -2.627 0.4329 -0.7401 0.945
-2.335 -2.57 0.3776 -0.7401 0.9602
-2.282 -2.511 0.3177 -0.7401 0.9729
-2.227 -2.451 0.2539 -0.7401 0.9833
-2.171 -2.389 0.187 -0.7401 0.9911
-2.114 -2.326 0.1178 -0.7401 0.9965
-2.056 -2.263 0.04722 -0.7401 0.9994
-2.126 -2.117 0 -0.7055 1
-2.066 -2.057 -0.0732 -0.7055 0.9988
-2.007 -1.998 -0.1455 -0.7055 0.995
-1.948 -1.94 -0.2161 -0.7055 0.9888
-1.891 -1.882 -0.2841 -0.7055 0.9801
-1.834 -1.826 -0.3487 -0.7055 0.9689
-1.78 -1.772 -0.4091 -0.7055 0.9553
-1.727 -1.72 -0.4646 -0.7055 0.9394
-1.677 -1.67 -0.5144 -0.7055 0.9211
-1.629 -1.622 -0.558 -0.7055 0.9004
-1.584 -1.577 -0.5948 -0.7055 0.8776
-1.543 -1.536 -0.6243 -0.7055 0.8525
-1.504 -1.497 -0.646 -0.7055 0.8253
-1.469 -1.462 -0.6596 -0.7055 0.7961
-1.437 -1.431 -0.665 -0.7055 0.7648
-1.41 -1.403 -0.6618 -0.7055 0.7317
-1.386 -1.38 -0.6501 -0.7055 0.6967
-1.366 -1.36 -0.6299 -0.7055 0.66
-1.35 -1.344 -0.6012 -0.7055 0.6216
-1.337 -1.331 -0.5642 -0.7055 0.5817
-1.329 -1.323 -0.5193 -0.7055 0.5403
-1.324 -1.319 -0.4668 -0.7055 0.4976
-1.324 -1.318 -0.4072 -0.7055 0.4536
-1.326 -1.321 -0.3409 -0.7055 0.4085
-1.333 -1.327 -0.2686 -0.7055 0.3624
-1.343 -1.337 -0.191 -0.7055 0.3153
-1.355 -1.349 -0.1087 -0.7055 0.2675
-1.371 -1.365 -0.02263 -0.7055 0.219
-1.39 -1.384 0.06648 -0.7055 0.17
-1.411 -1.405 0.1577 -0.7055 0.1205
-1.434 -1.428 0.2503 -0.7055 0.07074
-1.46 -1.453 0.3431 -0.7055 0.02079
-1.487 -1.48 0.4355 -0.7055 -0.0292
-1.516 -1.509 0.5263 -0.7055 -0.07912
-1.546 -1.539 0.6147 -0.7055 -0.1288
-1.576 -1.569 0.6998 -0.7055 -0.1782
-1.608 -1.601 0.7807 -0.7055 -0.2272
-1.64 -1.632 0.8566 -0.7055 -0.2756
-1.672 -1.664 0.9267 -0.7055 -0.3233
-1.704 -1.696 0.9903 -0.7055 -0.3702
-1.735 -1.727 1.047 -0.7055 -0.4161
-1.766 -1.758 1.095 -0.7055 -0.4611
-1.796 -1.788 1.135 -0.7055 -0.5048
-1.826 -1.818 1.166 -0.7055 -0.5474
-1.854 -1.846 1.188 -0.7055 -0.5885
-1.881 -1.872 1.2 -0.7055 -0.6282
-1.906 -1.898 1.203 -0.7055 -0.6663
-1.93 -1.922 1.196 -0.7055 -0.7027
-1.953 -1.944 1.179 -0.7055 -0.7374
-1.974 -1.965 1.151 -0.7055 -0.7702
-1.993 -1.985 1.115 -0.7055 -0.8011
-2.011 -2.002 1.069 -0.7055 -0.8301
-2.027 -2.018 1.013 -0.7055 -0.8569
-2.042 -2.033 0.9494 -0.7055 -0.8816
-2.055 -2.046 0.8774 -0.7055 -0.9041
-2.067 -2.058 0.7978 -0.7055 -0.9243
-2.077 -2.068 0.7113 -0.7055 -0.9422
-2.087 -2.077 0.6187 -0.7055 -0.9578
-2.095 -2.086 0.5207 -0.7055 -0.971
-2.102 -2.093 0.4183 -0.7055 -0.9817
-2.109 -2.1 0.3121 -0.7055 -0.99
-2.115 -2.106 0.2033 -0.7055 -0.9958
-2.121 -2.112 0.09267 -0.7055 -0.9991
-2.127 -2.118 -0.01875 -0.7055 -1
-2.133 -2.123 -0.13 -0.7055 -0.9983
-2.139 -2.129 -0.2401 -0.7055 -0.9941
-2.145 -2.136 -0.3482 -0.7055 -0.9875
-2.152 -2.143 -0.4532 -0.7055 -0.9784
-2.16 -2.15 -0.5542 -0.7055 -0.9668
-2.168 -2.159 -0.6505 -0.7055 -0.9528
-2.178 -2.168 -0.7411 -0.7055 -0.9365
-2.189 -2.179 -0.8254 -0.7055 -0.9178
-2.201 -2.191 -0.9025 -0.7055 -0.8968
-2.215 -2.205 -0.9718 -0.7055 -0.8735
-2.23 -2.22 -1.033 -0.7055 -0.8481
-2.247 -2.237 -1.085 -0.7055 -0.8206
-2.265 -2.255 -1.128 -0.7055 -0.791
-2.285 -2.275 -1.162 -0.7055 -0.7594
-2.306 -2.296 -1.185 -0.7055 -0.7259
-2.33 -2.319 -1.199 -0.7055 -0.6907
-2.354 -2.344 -1.203 -0.7055 -0.6536
-2.38 -2.37 -1.197 -0.7055 -0.615
-2.408 -2.397 -1.182 -0.7055 -0.5748
-2.436 -2.425 -1.157 -0.7055 -0.5332
-2.466 -2.455 -1.123 -0.7055 -0.4903
-2.496 -2.485 -1.08 -0.7055 -0.4461
-2.527 -2.516 -1.028 -0.7055 -0.4008
-2.559 -2.548 -0.9697 -0.7055 -0.3545
-2.591 -2.58 -0.9038 -0.7055 -0.3073
-2.623 -2.612 -0.8317 -0.7055 -0.2594
-2.655 -2.643 -0.754 -0.7055 -0.2108
-2.686 -2.674 -0.6716 -0.7055 -0.1617
-2.717 -2.705 -0.5853 -0.7055 -0.1122
-2.746 -2.734 -0.496 -0.7055 -0.06235
-2.774 -2.762 -0.4045 -0.7055 -0.01239
-2.801 -2.789 -0.3119 -0.7055 0.0376
-2.826 -2.813 -0.2191 -0.7055 0.0875
-2.848 -2.836 -0.1269 -0.7055 0.1372
-2.869 -2.856 -0.03623 -0.7055 0.1865
-2.886 -2.874 0.05196 -0.7055 0.2354
-2.901 -2.888 0.1369 -0.7055 0.2837
-2.913 -2.9 0.2176 -0.7055 0.3312
-2.922 -2.909 0.2935 -0.7055 0.378
-2.927 -2.914 0.3639 -0.7055 0.4238
-2.929 -2.916 0.428 -0.7055 0.4685
-2.927 -2.914 0.4853 -0.7055 0.5121
-2.921 -2.908 0.5353 -0.7055 0.5544
-2.911 -2.898 0.5775 -0.7055 0.5953
-2.898 -2.885 0.6117 -0.7055 0.6347
-2.88 -2.867 0.6376 -0.7055 0.6725
-2.859 -2.846 0.655 -0.7055 0.7087
-2.833 -2.821 0.6638 -0.7055 0.743
-2.804 -2.792 0.6641 -0.7055 0.7756
-2.772 -2.759 0.656 -0.7055 0.8061
-2.735 -2.723 0.6396 -0.7055 0.8347
-2.696 -2.684 0.6152 -0.7055 0.8612
-2.653 -2.641 0.5832 -0.7055 0.8855
-2.607 -2.596 0.5441 -0.7055 0.9076
-2.558 -2.547 0.4983 -0.7055 0.9275
-2.507 -2.496 0.4465 -0.7055 0.945
-2.454 -2.443 0.3893 -0.7055 0.9602
-2.399 -2.388 0.3274 -0.7055 0.9729
-2.342 -2.332 0.2616 -0.7055 0.9833
-2.284 -2.274 0.1926 -0.7055 0.9911
-2.225 -2.215 0.1214 -0.7055 0.9965
-2.166 -2.156 0.04864 -0.7055 0.9994
-2.229 -2.008 0 -0.6692 1
-2.168 -1.953 -0.07529 -0.6692 0.9988
-2.107 -1.898 -0.1497 -0.6692 0.995
-2.047 -1.843 -0.2223 -0.6692 0.9888
-1.988 -1.79 -0.2923 -0.6692 0.9801
-1.93 -1.738 -0.3589 -0.6692 0.9689
-1.874 -1.688 -0.4212 -0.6692 0.9553
-1.82 -1.639 -0.4785 -0.6692 0.9394
-1.768 -1.592 -0.5301 -0.6692 0.9211
-1.719 -1.548 -0.5754 -0.6692 0.9004
-1.672 -1.506 -0.6137 -0.6692 0.8776
-1.629 -1.467 -0.6446 -0.6692 0.8525
-1.589 -1.431 -0.6677 -0.6692 0.8253
-1.553 -1.398 -0.6826 -0.6692 0.7961
-1.52 -1.369 -0.6891 -0.6692 0.7648
-1.491 -1.343 -0.6869 -0.6692 0.7317
-1.465 -1.32 -0.676 -0.6692 0.6967
-1.444 -1.3 -0.6565 -0.6692 0.66
-1.426 -1.285 -0.6284 -0.6692 0.6216
-1.413 -1.273 -0.5919 -0.6692 0.5817
-1.403 -1.264 -0.5473 -0.6692 0.5403
-1.398 -1.259 -0.4949 -0.6692 0.4976
-1.396 -1.257 -0.4353 -0.6692 0.4536
-1.397 -1.259 -0.369 -0.6692 0.4085
-1.403 -1.263 -0.2965 -0.6692 0.3624
-1.411 -1.271 -0.2186 -0.6692 0.3153
-1.423 -1.282 -0.1359 -0.6692 0.2675
-1.438 -1.296 -0.04925 -0.6692 0.219
-1.456 -1.312 0.04049 -0.6692 0.17
-1.477 -1.33 0.1325 -0.6692 0.1205
-1.5 -1.351 0.2258 -0.6692 0.07074
-1.525 -1.373 0.3195 -0.6692 0.02079
-1.551 -1.397 0.4128 -0.6692 -0.0292
-1.58 -1.423 0.5046 -0.6692 -0.07912
-1.609 -1.449 0.594 -0.6692 -0.1288
-1.64 -1.477 0.6802 -0.6692 -0.1782
-1.671 -1.505 0.7622 -0.6692 -0.2272
-1.703 -1.534 0.8392 -0.6692 -0.2756
-1.736 -1.563 0.9104 -0.6692 -0.3233
-1.768 -1.592 0.975 -0.6692 -0.3702
-1.8 -1.621 1.032 -0.6692 -0.4161
-1.832 -1.65 1.082 -0.6692 -0.4611
-1.862 -1.677 1.123 -0.6692 -0.5048
-1.893 -1.705 1.155 -0.6692 -0.5474
-1.922 -1.731 1.178 -0.6692 -0.5885
-1.95 -1.756 1.191 -0.6692 -0.6282
-1.977 -1.78 1.195 -0.6692 -0.6663
-2.002 -1.803 1.189 -0.6692 -0.7027
-2.026 -1.825 1.172 -0.6692 -0.7374
-2.048 -1.845 1.146 -0.6692 -0.7702
-2.069 -1.864 1.11 -0.6692 -0.8011
-2.089 -1.881 1.064 -0.6692 -0.8301
-2.107 -1.898 1.01 -0.6692 -0.8569
-2.123 -1.912 0.9462 -0.6692 -0.8816
-2.138 -1.926 0.8746 -0.6692 -0.9041
-2.152 -1.939 0.7955 -0.6692 -0.9243
-2.165 -1.95 0.7094 -0.6692 -0.9422
-2.176 -1.96 0.6171 -0.6692 -0.9578
-2.187 -1.97 0.5195 -0.6692 -0.971
-2.197 -1.978 0.4173 -0.6692 -0.9817
-2.206 -1.987 0.3114 -0.6692 -0.99
-2.214 -1.994 0.2028 -0.6692 -0.9958
-2.222 -2.002 0.09247 -0.6692 -0.9991
-2.23 -2.009 -0.01871 -0.6692 -1
-2.239 -2.016 -0.1297 -0.6692 -0.9983
-2.247 -2.024 -0.2396 -0.6692 -0.9941
-2.256 -2.032 -0.3474 -0.6692 -0.9875
-2.265 -2.04 -0.4521 -0.6692 -0.9784
-2.275 -2.049 -0.5529 -0.6692 -0.9668
-2.286 -2.059 -0.6488 -0.6692 -0.9528
-2.297 -2.069 -0.7391 -0.6692 -0.9365
-2.31 -2.081 -0.8229 -0.6692 -0.9178
-2.325 -2.094 -0.8995 -0.6692 -0.8968
-2.34 -2.108 -0.9684 -0.6692 -0.8735
-2.357 -2.123 -1.029 -0.6692 -0.8481
-2.376 -2.14 -1.081 -0.6692 -0.8206
-2.396 -2.158 -1.123 -0.6692 -0.791
-2.417 -2.177 -1.156 -0.6692 -0.7594
-2.44 -2.198 -1.179 -0.6692 -0.7259
-2.465 -2.22 -1.192 -0.6692 -0.6907
-2.491 -2.243 -1.195 -0.6692 -0.6536
-2.518 -2.268 -1.188 -0.6692 -0.615
-2.546 -2.293 -1.172 -0.6692 -0.5748
-2.576 -2.32 -1.145 -0.6692 -0.5332
-2.606 -2.347 -1.11 -0.6692 -0.4903
-2.637 -2.375 -1.066 -0.6692 -0.4461
-2.669 -2.404 -1.014 -0.6692 -0.4008
-2.701 -2.433 -0.9541 -0.6692 -0.3545
-2.733 -2.462 -0.8871 -0.6692 -0.3073
-2.766 -2.491 -0.8139 -0.6692 -0.2594
-2.797 -2.52 -0.7351 -0.6692 -0.2108
-2.829 -2.548 -0.6516 -0.6692 -0.1617
-2.859 -2.575 -0.5643 -0.6692 -0.1122
-2.888 -2.601 -0.4739 -0.6692 -0.06235
-2.916 -2.627 -0.3815 -0.6692 -0.01239
-2.942 -2.65 -0.288 -0.6692 0.0376
-2.967 -2.672 -0.1943 -0.6692 0.0875
-2.989 -2.692 -0.1013 -0.6692 0.1372
-3.008 -2.709 -0.01002 -0.6692 0.1865
-3.025 -2.725 0.07877 -0.6692 0.2354
-3.039 -2.737 0.1642 -0.6692 0.2837
-3.05 -2.747 0.2453 -0.6692 0.3312
-3.058 -2.754 0.3215 -0.6692 0.378
-3.062 -2.758 0.392 -0.6692 0.4238
-3.062 -2.758 0.4562 -0.6692 0.4685
-3.059 -2.755 0.5134 -0.6692 0.5121
-3.052 -2.749 0.5631 -0.6692 0.5544
-3.041 -2.739 0.6051 -0.6692 0.5953
-3.026 -2.726 0.6388 -0.6692 0.6347
-3.008 -2.709 0.664 -0.6692 0.6725
-2.985 -2.688 0.6807 -0.6692 0.7087
-2.958 -2.664 0.6886 -0.6692 0.743
-2.928 -2.637 0.6878 -0.6692 0.7756
-2.894 -2.606 0.6785 -0.6692 0.8061
-2.856 -2.572 0.6609 -0.6692 0.8347
-2.815 -2.535 0.6351 -0.6692 0.8612
-2.771 -2.495 0.6016 -0.6692 0.8855
-2.723 -2.453 0.5609 -0.6692 0.9076
-2.673 -2.408 0.5134 -0.6692 0.9275
-2.621 -2.36 0.4598 -0.6692 0.945
-2.566 -2.311 0.4008 -0.6692 0.9602
-2.509 -2.26 0.3369 -0.6692 0.9729
-2.451 -2.207 0.2691 -0.6692 0.9833
-2.391 -2.154 0.1981 -0.6692 0.9911
-2.331 -2.099 0.1248 -0.6692 0.9965
-2.27 -2.044 0.05002 -0.6692 0.9994
-2.327 -1.894 0 -0.6313 1
-2.264 -1.843 -0.07732 -0.6313 0.9988
-2.202 -1.792 -0.1537 -0.6313 0.995
-2.141 -1.742 -0.2284 -0.6313 0.9888
-2.08 -1.693 -0.3004 -0.6313 0.9801
-2.021 -1.645 -0.3688 -0.6313 0.9689
-1.964 -1.599 -0.433 -0.6313 0.9553
-1.909 -1.554 -0.4921 -0.6313 0.9394
-1.856 -1.51 -0.5455 -0.6313 0.9211
-1.805 -1.469 -0.5924 -0.6313 0.9004
-1.758 -1.431 -0.6323 -0.6313 0.8776
-1.713 -1.394 -0.6646 -0.6313 0.8525
-1.672 -1.361 -0.689 -0.6313 0.8253
-1.634 -1.33 -0.7052 -0.6313 0.7961
-1.6 -1.302 -0.7127 -0.6313 0.7648
-1.569 -1.277 -0.7115 -0.6313 0.7317
-1.543 -1.256 -0.7015 -0.6313 0.6967
-1.52 -1.237 -0.6827 -0.6313 0.66
-1.501 -1.222 -0.6552 -0.6313 0.6216
-1.486 -1.21 -0.6191 -0.6313 0.5817
-1.476 -1.201 -0.5749 -0.6313 0.5403
-1.469 -1.195 -0.5228 -0.6313 0.4976
-1.465 -1.193 -0.4632 -0.6313 0.4536
-1.466 -1.193 -0.3969 -0.6313 0.4085
-1.47 -1.197 -0.3242 -0.6313 0.3624
-1.478 -1.203 -0.246 -0.6313 0.3153
-1.489 -1.212 -0.1629 -0.6313 0.2675
-1.503 -1.223 -0.07583 -0.6313 0.219
-1.52 -1.237 0.01448 -0.6313 0.17
-1.539 -1.253 0.1071 -0.6313 0.1205
-1.561 -1.271 0.2012 -0.6313 0.07074
-1.585 -1.29 0.2957 -0.6313 0.02079
-1.611 -1.312 0.3898 -0.6313 -0.0292
-1.639 -1.334 0.4826 -0.6313 -0.07912
-1.668 -1.358 0.573 -0.6313 -0.1288
-1.699 -1.383 0.6601 -0.6313 -0.1782
-1.73 -1.408 0.7432 -0.6313 -0.2272
-1.762 -1.434 0.8212 -0.6313 -0.2756
-1.794 -1.46 0.8935 -0.6313 -0.3233
-1.827 -1.487 0.9592 -0.6313 -0.3702
-1.859 -1.513 1.018 -0.6313 -0.4161
-1.891 -1.539 1.068 -0.6313 -0.4611
-1.922 -1.565 1.11 -0.6313 -0.5048
-1.953 -1.59 1.144 -0.6313 -0.5474
-1.983 -1.614 1.167 -0.6313 -0.5885
-2.012 -1.638 1.182 -0.6313 -0.6282
-2.04 -1.66 1.186 -0.6313 -0.6663
-2.067 -1.682 1.18 -0.6313 -0.7027
-2.092 -1.703 1.165 -0.6313 -0.7374
-2.116 -1.722 1.139 -0.6313 -0.7702
-2.138 -1.741 1.104 -0.6313 -0.8011
-2.16 -1.758 1.059 -0.6313 -0.8301
-2.18 -1.774 1.005 -0.6313 -0.8569
-2.198 -1.789 0.9423 -0.6313 -0.8816
-2.215 -1.803 0.8713 -0.6313 -0.9041
-2.231 -1.816 0.7926 -0.6313 -0.9243
-2.246 -1.828 0.707 -0.6313 -0.9422
-2.26 -1.839 0.6152 -0.6313 -0.9578
-2.273 -1.85 0.5179 -0.6313 -0.971
-2.285 -1.86 0.4161 -0.6313 -0.9817
-2.296 -1.869 0.3105 -0.6313 -0.99
-2.307 -1.878 0.2023 -0.6313 -0.9958
-2.318 -1.887 0.09222 -0.6313 -0.9991
-2.328 -1.895 -0.01866 -0.6313 -1
-2.339 -1.904 -0.1294 -0.6313 -0.9983
-2.35 -1.913 -0.2389 -0.6313 -0.9941
-2.361 -1.922 -0.3464 -0.6313 -0.9875
-2.373 -1.931 -0.4508 -0.6313 -0.9784
-2.385 -1.941 -0.5512 -0.6313 -0.9668
-2.398 -1.952 -0.6467 -0.6313 -0.9528
-2.412 -1.964 -0.7365 -0.6313 -0.9365
-2.428 -1.976 -0.8199 -0.6313 -0.9178
-2.444 -1.989 -0.8961 -0.6313 -0.8968
-2.461 -2.003 -0.9644 -0.6313 -0.8735
-2.48 -2.019 -1.024 -0.6313 -0.8481
-2.501 -2.035 -1.075 -0.6313 -0.8206
-2.522 -2.053 -1.117 -0.6313 -0.791
-2.545 -2.072 -1.149 -0.6313 -0.7594
-2.57 -2.092 -1.171 -0.6313 -0.7259
-2.596 -2.113 -1.183 -0.6313 -0.6907
-2.623 -2.135 -1.186 -0.6313 -0.6536
-2.651 -2.158 -1.178 -0.6313 -0.615
-2.68 -2.182 -1.16 -0.6313 -0.5748
-2.711 -2.206 -1.133 -0.6313 -0.5332
-2.742 -2.231 -1.097 -0.6313 -0.4903
-2.773 -2.257 -1.052 -0.6313 -0.4461
-2.805 -2.283 -0.9989 -0.6313 -0.4008
-2.838 -2.31 -0.9379 -0.6313 -0.3545
-2.87 -2.336 -0.8699 -0.6313 -0.3073
-2.902 -2.362 -0.7956 -0.6313 -0.2594
-2.934 -2.388 -0.7158 -0.6313 -0.2108
-2.965 -2.413 -0.6312 -0.6313 -0.1617
-2.995 -2.438 -0.5429 -0.6313 -0.1122
-3.024 -2.461 -0.4516 -0.6313 -0.06235
-3.051 -2.483 -0.3583 -0.6313 -0.01239
-3.076 -2.504 -0.2639 -0.6313 0.0376
-3.1 -2.523 -0.1694 -0.6313 0.0875
-3.121 -2.54 -0.07576 -0.6313 0.1372
-3.14 -2.556 0.01619 -0.6313 0.1865
-3.156 -2.569 0.1055 -0.6313 0.2354
-3.169 -2.579 0.1914 -0.6313 0.2837
-3.179 -2.587 0.2729 -0.6313 0.3312
-3.185 -2.592 0.3493 -0.6313 0.378
-3.188 -2.595 0.4199 -0.6313 0.4238
-3.187 -2.594 0.484 -0.6313 0.4685
-3.183 -2.591 0.5411 -0.6313 0.5121
-3.175 -2.584 0.5907 -0.6313 0.5544
-3.162 -2.574 0.6322 -0.6313 0.5953
-3.146 -2.561 0.6654 -0.6313 0.6347
-3.126 -2.544 0.69 -0.6313 0.6725
-3.102 -2.525 0.7059 -0.6313 0.7087
-3.074 -2.502 0.7129 -0.6313 0.743
-3.042 -2.476 0.7111 -0.6313 0.7756
-3.007 -2.447 0.7007 -0.6313 0.8061
-2.968 -2.416 0.6817 -0.6313 0.8347
-2.926 -2.381 0.6546 -0.6313 0.8612
-2.88 -2.344 0.6197 -0.6313 0.8855
-2.831 -2.305 0.5773 -0.6313 0.9076
-2.78 -2.263 0.5282 -0.6313 0.9275
-2.726 -2.219 0.4729 -0.6313 0.945
-2.67 -2.173 0.412 -0.6313 0.9602
-2.612 -2.126 0.3463 -0.6313 0.9729
-2.553 -2.078 0.2765 -0.6313 0.9833
-2.492 -2.028 0.2035 -0.6313 0.9911
-2.43 -1.978 0.1282 -0.6313 0.9965
-2.368 -1.928 0.05138 -0.6313 0.9994
-2.418 -1.775 0 -0.5917 1
-2.355 -1.729 -0.07931 -0.5917 0.9988
-2.292 -1.682 -0.1577 -0.5917 0.995
-2.23 -1.637 -0.2343 -0.5917 0.9888
-2.169 -1.592 -0.3082 -0.5917 0.9801
-2.109 -1.548 -0.3786 -0.5917 0.9689
-2.05 -1.505 -0.4446 -0.5917 0.9553
-1.994 -1.464 -0.5054 -0.5917 0.9394
-1.94 -1.424 -0.5605 -0.5917 0.9211
-1.889 -1.386 -0.609 -0.5917 0.9004
-1.84 -1.351 -0.6504 -0.5917 0.8776
-1.794 -1.317 -0.6842 -0.5917 0.8525
-1.752 -1.286 -0.7099 -0.5917 0.8253
-1.713 -1.257 -0.7273 -0.5917 0.7961
-1.678 -1.231 -0.7359 -0.5917 0.7648
-1.646 -1.208 -0.7357 -0.5917 0.7317
-1.618 -1.188 -0.7266 -0.5917 0.6967
-1.594 -1.17 -0.7085 -0.5917 0.66
-1.574 -1.155 -0.6816 -0.5917 0.6216
-1.558 -1.143 -0.646 -0.5917 0.5817
-1.546 -1.134 -0.6021 -0.5917 0.5403
-1.537 -1.128 -0.5503 -0.5917 0.4976
-1.533 -1.125 -0.4909 -0.5917 0.4536
-1.532 -1.125 -0.4245 -0.5917 0.4085
-1.535 -1.127 -0.3517 -0.5917 0.3624
-1.541 -1.131 -0.2733 -0.5917 0.3153
-1.551 -1.138 -0.1899 -0.5917 0.2675
-1.564 -1.148 -0.1024 -0.5917 0.219
-1.579 -1.159 -0.01154 -0.5917 0.17
-1.598 -1.173 0.0817 -0.5917 0.1205
-1.619 -1.188 0.1764 -0.5917 0.07074
-1.642 -1.205 0.2717 -0.5917 0.02079
-1.667 -1.224 0.3667 -0.5917 -0.0292
-1.694 -1.244 0.4603 -0.5917 -0.07912
-1.723 -1.265 0.5516 -0.5917 -0.1288
-1.753 -1.286 0.6397 -0.5917 -0.1782
-1.783 -1.309 0.7237 -0.5917 -0.2272
-1.815 -1.332 0.8028 -0.5917 -0.2756
-1.847 -1.356 0.8761 -0.5917 -0.3233
-1.879 -1.379 0.9428 -0.5917 -0.3702
-1.912 -1.403 1.002 -0.5917 -0.4161
-1.944 -1.427 1.054 -0.5917 -0.4611
-1.976 -1.45 1.097 -0.5917 -0.5048
-2.007 -1.473 1.131 -0.5917 -0.5474
-2.038 -1.496 1.156 -0.5917 -0.5885
-2.068 -1.518 1.171 -0.5917 -0.6282
-2.097 -1.539 1.176 -0.5917 -0.6663
-2.124 -1.559 1.172 -0.5917 -0.7027
-2.151 -1.579 1.157 -0.5917 -0.7374
-2.176 -1.598 1.132 -0.5917 -0.7702
-2.201 -1.615 1.098 -0.5917 -0.8011
-2.224 -1.632 1.053 -0.5917 -0.8301
-2.245 -1.648 1 -0.5917 -0.8569
-2.266 -1.663 0.9379 -0.5917 -0.8816
-2.285 -1.677 0.8674 -0.5917 -0.9041
-2.303 -1.691 0.7893 -0.5917 -0.9243
-2.32 -1.703 0.7042 -0.5917 -0.9422
-2.336 -1.715 0.6128 -0.5917 -0.9578
-2.352 -1.726 0.516 -0.5917 -0.971
-2.366 -1.737 0.4146 -0.5917 -0.9817
-2.38 -1.747 0.3095 -0.5917 -0.99
-2.394 -1.757 0.2016 -0.5917 -0.9958
-2.407 -1.767 0.09191 -0.5917 -0.9991
-2.421 -1.777 -0.0186 -0.5917 -1
-2.434 -1.787 -0.1289 -0.5917 -0.9983
-2.447 -1.796 -0.2381 -0.5917 -0.9941
-2.461 -1.806 -0.3452 -0.5917 -0.9875
-2.475 -1.817 -0.4491 -0.5917 -0.9784
-2.49 -1.828 -0.5491 -0.5917 -0.9668
-2.506 -1.839 -0.6442 -0.5917 -0.9528
-2.522 -1.851 -0.7335 -0.5917 -0.9365
-2.54 -1.864 -0.8164 -0.5917 -0.9178
-2.558 -1.878 -0.892 -0.5917 -0.8968
-2.578 -1.892 -0.9597 -0.5917 -0.8735
-2.599 -1.908 -1.019 -0.5917 -0.8481
-2.621 -1.924 -1.069 -0.5917 -0.8206
-2.644 -1.941 -1.11 -0.5917 -0.791
-2.669 -1.959 -1.142 -0.5917 -0.7594
-2.695 -1.978 -1.163 -0.5917 -0.7259
-2.722 -1.998 -1.174 -0.5917 -0.6907
-2.75 -2.018 -1.176 -0.5917 -0.6536
-2.779 -2.04 -1.167 -0.5917 -0.615
-2.809 -2.062 -1.149 -0.5917 -0.5748
-2.84 -2.085 -1.121 -0.5917 -0.5332
-2.872 -2.108 -1.083 -0.5917 -0.4903
-2.904 -2.131 -1.037 -0.5917 -0.4461
-2.936 -2.155 -0.9831 -0.5917 -0.4008
-2.968 -2.179 -0.9211 -0.5917 -0.3545
-3.001 -2.202 -0.8521 -0.5917 -0.3073
-3.033 -2.226 -0.7768 -0.5917 -0.2594
-3.064 -2.249 -0.696 -0.5917 -0.2108
-3.094 -2.271 -0.6105 -0.5917 -0.1617
-3.124 -2.293 -0.5212 -0.5917 -0.1122
-3.152 -2.313 -0.429 -0.5917 -0.06235
-3.178 -2.333 -0.3349 -0.5917 -0.01239
-3.203 -2.351 -0.2397 -0.5917 0.0376
-3.225 -2.367 -0.1445 -0.5917 0.0875
-3.245 -2.382 -0.05013 -0.5917 0.1372
-3.263 -2.395 0.0424 -0.5917 0.1865
-3.278 -2.406 0.1322 -0.5917 0.2354
-3.29 -2.415 0.2184 -0.5917 0.2837
-3.298 -2.421 0.3003 -0.5917 0.3312
-3.303 -2.425 0.3769 -0.5917 0.378
-3.305 -2.426 0.4475 -0.5917 0.4238
-3.303 -2.424 0.5116 -0.5917 0.4685
-3.297 -2.42 0.5686 -0.5917 0.5121
-3.288 -2.413 0.6178 -0.5917 0.5544
-3.274 -2.403 0.6589 -0.5917 0.5953
-3.257 -2.39 0.6916 -0.5917 0.6347
-3.235 -2.375 0.7156 -0.5917 0.6725
-3.21 -2.356 0.7306 -0.5917 0.7087
-3.181 -2.335 0.7368 -0.5917 0.743
-3.148 -2.31 0.734 -0.5917 0.7756
-3.111 -2.284 0.7224 -0.5917 0.8061
-3.071 -2.254 0.7022 -0.5917 0.8347
-3.028 -2.222 0.6737 -0.5917 0.8612
-2.981 -2.188 0.6373 -0.5917 0.8855
-2.931 -2.152 0.5934 -0.5917 0.9076
-2.879 -2.113 0.5427 -0.5917 0.9275
-2.824 -2.073 0.4856 -0.5917 0.945
-2.767 -2.031 0.4229 -0.5917 0.9602
-2.708 -1.988 0.3554 -0.5917 0.9729
-2.648 -1.944 0.2837 -0.5917 0.9833
-2.586 -1.898 0.2088 -0.5917 0.9911
-2.524 -1.852 0.1315 -0.5917 0.9965
-2.461 -1.806 0.0527 -0.5917 0.9994
-2.504 -1.652 0 -0.5507 1
-2.44 -1.61 -0.08125 -0.5507 0.9988
-2.377 -1.568 -0.1616 -0.5507 0.995
-2.314 -1.526 -0.2401 -0.5507 0.9888
-2.252 -1.486 -0.3159 -0.5507 0.9801
-2.191 -1.446 -0.3881 -0.5507 0.9689
-2.132 -1.407 -0.4559 -0.5507 0.9553
-2.075 -1.369 -0.5184 -0.5507 0.9394
-2.021 -1.333 -0.5751 -0.5507 0.9211
-1.968 -1.299 -0.6252 -0.5507 0.9004
-1.919 -1.266 -0.6681 -0.5507 0.8776
-1.872 -1.235 -0.7033 -0.5507 0.8525
-1.829 -1.207 -0.7304 -0.5507 0.8253
-1.789 -1.18 -0.7489 -0.5507 0.7961
-1.753 -1.156 -0.7587 -0.5507 0.7648
-1.72 -1.135 -0.7594 -0.5507 0.7317
-1.691 -1.115 -0.7512 -0.5507 0.6967
-1.666 -1.099 -0.7338 -0.5507 0.66
-1.644 -1.085 -0.7075 -0.5507 0.6216
-1.627 -1.073 -0.6725 -0.5507 0.5817
-1.613 -1.064 -0.629 -0.5507 0.5403
-1.604 -1.058 -0.5774 -0.5507 0.4976
-1.598 -1.054 -0.5182 -0.5507 0.4536
-1.595 -1.053 -0.4518 -0.5507 0.4085
-1.597 -1.054 -0.379 -0.5507 0.3624
-1.602 -1.057 -0.3004 -0.5507 0.3153
-1.61 -1.062 -0.2167 -0.5507 0.2675
-1.622 -1.07 -0.1288 -0.5507 0.219
-1.636 -1.079 -0.03755 -0.5507 0.17
-1.653 -1.091 0.05623 -0.5507 0.1205
-1.673 -1.104 0.1516 -0.5507 0.07074
-1.695 -1.118 0.2476 -0.5507 0.02079
-1.719 -1.134 0.3433 -0.5507 -0.0292
-1.745 -1.151 0.4377 -0.5507 -0.07912
-1.773 -1.169 0.5298 -0.5507 -0.1288
-1.802 -1.189 0.6189 -0.5507 -0.1782
-1.832 -1.208 0.7038 -0.5507 -0.2272
-1.863 -1.229 0.7838 -0.5507 -0.2756
-1.894 -1.25 0.8581 -0.5507 -0.3233
-1.926 -1.271 0.9258 -0.5507 -0.3702
-1.959 -1.292 0.9863 -0.5507 -0.4161
-1.991 -1.314 1.039 -0.5507 -0.4611
-2.023 -1.335 1.083 -0.5507 -0.5048
-2.055 -1.356 1.118 -0.5507 -0.5474
-2.086 -1.376 1.144 -0.5507 -0.5885
-2.117 -1.396 1.16 -0.5507 -0.6282
-2.146 -1.416 1.166 -0.5507 -0.6663
-2.175 -1.435 1.162 -0.5507 -0.7027
-2.203 -1.453 1.148 -0.5507 -0.7374
-2.23 -1.471 1.124 -0.5507 -0.7702
-2.256 -1.488 1.09 -0.5507 -0.8011
-2.28 -1.504 1.047 -0.5507 -0.8301
-2.304 -1.52 0.9944 -0.5507 -0.8569
-2.326 -1.535 0.9328 -0.5507 -0.8816
-2.348 -1.549 0.863 -0.5507 -0.9041
-2.368 -1.562 0.7855 -0.5507 -0.9243
-2.388 -1.575 0.7009 -0.5507 -0.9422
-2.406 -1.588 0.6101 -0.5507 -0.9578
-2.424 -1.599 0.5138 -0.5507 -0.971
-2.442 -1.611 0.4128 -0.5507 -0.9817
-2.458 -1.622 0.3082 -0.5507 -0.99
-2.475 -1.633 0.2008 -0.5507 -0.9958
-2.491 -1.643 0.09154 -0.5507 -0.9991
-2.507 -1.654 -0.01852 -0.5507 -1
-2.523 -1.664 -0.1284 -0.5507 -0.9983
-2.539 -1.675 -0.2371 -0.5507 -0.9941
-2.555 -1.686 -0.3437 -0.5507 -0.9875
-2.572 -1.697 -0.4472 -0.5507 -0.9784
-2.59 -1.709 -0.5467 -0.5507 -0.9668
-2.608 -1.721 -0.6413 -0.5507 -0.9528
-2.627 -1.733 -0.7301 -0.5507 -0.9365
-2.647 -1.746 -0.8124 -0.5507 -0.9178
-2.667 -1.76 -0.8874 -0.5507 -0.8968
-2.689 -1.774 -0.9545 -0.5507 -0.8735
-2.712 -1.789 -1.013 -0.5507 -0.8481
-2.736 -1.805 -1.063 -0.5507 -0.8206
-2.761 -1.822 -1.103 -0.5507 -0.791
-2.787 -1.839 -1.133 -0.5507 -0.7594
-2.814 -1.857 -1.154 -0.5507 -0.7259
-2.843 -1.875 -1.165 -0.5507 -0.6907
-2.872 -1.895 -1.165 -0.5507 -0.6536
-2.902 -1.914 -1.156 -0.5507 -0.615
-2.933 -1.935 -1.136 -0.5507 -0.5748
-2.964 -1.955 -1.107 -0.5507 -0.5332
-2.996 -1.976 -1.069 -0.5507 -0.4903
-3.028 -1.998 -1.022 -0.5507 -0.4461
-3.06 -2.019 -0.9668 -0.5507 -0.4008
-3.093 -2.04 -0.9038 -0.5507 -0.3545
-3.125 -2.061 -0.8338 -0.5507 -0.3073
-3.156 -2.082 -0.7575 -0.5507 -0.2594
-3.187 -2.102 -0.6757 -0.5507 -0.2108
-3.217 -2.122 -0.5893 -0.5507 -0.1617
-3.245 -2.141 -0.4991 -0.5507 -0.1122
-3.272 -2.159 -0.4061 -0.5507 -0.06235
-3.298 -2.176 -0.3112 -0.5507 -0.01239
-3.321 -2.191 -0.2153 -0.5507 0.0376
-3.342 -2.205 -0.1194 -0.5507 0.0875
-3.361 -2.218 -0.02447 -0.5507 0.1372
-3.378 -2.228 0.06858 -0.5507 0.1865
-3.391 -2.237 0.1588 -0.5507 0.2354
-3.401 -2.244 0.2454 -0.5507 0.2837
-3.408 -2.249 0.3274 -0.5507 0.3312
-3.412 -2.251 0.4042 -0.5507 0.378
-3.412 -2.251 0.4749 -0.5507 0.4238
-3.409 -2.249 0.5389 -0.5507 0.4685
-3.402 -2.244 0.5956 -0.5507 0.5121
-3.391 -2.237 0.6446 -0.5507 0.5544
-3.376 -2.227 0.6853 -0.5507 0.5953
-3.357 -2.215 0.7174 -0.5507 0.6347
-3.335 -2.2 0.7407 -0.5507 0.6725
-3.308 -2.182 0.755 -0.5507 0.7087
-3.278 -2.162 0.7602 -0.5507 0.743
-3.244 -2.14 0.7564 -0.5507 0.7756
-3.206 -2.115 0.7436 -0.5507 0.8061
-3.165 -2.088 0.7222 -0.5507 0.8347
-3.121 -2.059 0.6924 -0.5507 0.8612
-3.073 -2.027 0.6545 -0.5507 0.8855
-3.023 -1.994 0.6091 -0.5507 0.9076
-2.969 -1.959 0.5568 -0.5507 0.9275
-2.914 -1.922 0.498 -0.5507 0.945
-2.856 -1.884 0.4336 -0.5507 0.9602
-2.797 -1.845 0.3642 -0.5507 0.9729
-2.736 -1.805 0.2907 -0.5507 0.9833
-2.673 -1.764 0.2139 -0.5507 0.9911
-2.61 -1.722 0.1347 -0.5507 0.9965
-2.547 -1.68 0.05398 -0.5507 0.9994
-2.584 -1.525 0 -0.5083 1
-2.519 -1.487 -0.08314 -0.5083 0.9988
-2.456 -1.449 -0.1654 -0.5083 0.995
-2.392 -1.412 -0.2457 -0.5083 0.9888
-2.33 -1.375 -0.3233 -0.5083 0.9801
-2.269 -1.339 -0.3973 -0.5083 0.9689
-2.21 -1.304 -0.4668 -0.5083 0.9553
-2.153 -1.27 -0.5311 -0.5083 0.9394
-2.097 -1.238 -0.5894 -0.5083 0.9211
-2.045 -1.207 -0.6411 -0.5083 0.9004
-1.994 -1.177 -0.6854 -0.5083 0.8776
-1.947 -1.149 -0.722 -0.5083 0.8525
-1.903 -1.123 -0.7504 -0.5083 0.8253
-1.862 -1.099 -0.7701 -0.5083 0.7961
-1.825 -1.077 -0.7809 -0.5083 0.7648
-1.791 -1.057 -0.7827 -0.5083 0.7317
-1.761 -1.039 -0.7753 -0.5083 0.6967
-1.734 -1.024 -0.7587 -0.5083 0.66
-1.712 -1.01 -0.7331 -0.5083 0.6216
-1.693 -0.9993 -0.6986 -0.5083 0.5817
-1.678 -0.9905 -0.6555 -0.5083 0.5403
-1.667 -0.9839 -0.6042 -0.5083 0.4976
-1.66 -0.9796 -0.5452 -0.5083 0.4536
-1.656 -0.9774 -0.4789 -0.5083 0.4085
-1.656 -0.9774 -0.4061 -0.5083 0.3624
-1.659 -0.9794 -0.3273 -0.5083 0.3153
-1.666 -0.9834 -0.2434 -0.5083 0.2675
-1.676 -0.9892 -0.1552 -0.5083 0.219
-1.689 -0.9968 -0.06354 -0.5083 0.17
-1.705 -1.006 0.03073 -0.5083 0.1205
-1.723 -1.017 0.1267 -0.5083 0.07074
-1.744 -1.029 0.2233 -0.5083 0.02079
-1.766 -1.043 0.3196 -0.5083 -0.0292
-1.791 -1.057 0.4148 -0.5083 -0.07912
-1.818 -1.073 0.5078 -0.5083 -0.1288
-1.846 -1.089 0.5976 -0.5083 -0.1782
-1.875 -1.107 0.6834 -0.5083 -0.2272
-1.905 -1.124 0.7644 -0.5083 -0.2756
-1.936 -1.143 0.8395 -0.5083 -0.3233
-1.968 -1.161 0.9082 -0.5083 -0.3702
-2 -1.18 0.9696 -0.5083 -0.4161
-2.032 -1.199 1.023 -0.5083 -0.4611
-2.064 -1.218 1.068 -0.5083 -0.5048
-2.096 -1.237 1.104 -0.5083 -0.5474
-2.128 -1.256 1.131 -0.5083 -0.5885
-2.159 -1.274 1.148 -0.5083 -0.6282
-2.19 -1.292 1.155 -0.5083 -0.6663
-2.219 -1.31 1.152 -0.5083 -0.7027
-2.248 -1.327 1.139 -0.5083 -0.7374
-2.277 -1.344 1.116 -0.5083 -0.7702
-2.304 -1.36 1.083 -0.5083 -0.8011
-2.33 -1.375 1.04 -0.5083 -0.8301
-2.356 -1.39 0.9881 -0.5083 -0.8569
-2.38 -1.405 0.9272 -0.5083 -0.8816
-2.404 -1.419 0.8581 -0.5083 -0.9041
-2.427 -1.432 0.7812 -0.5083 -0.9243
-2.448 -1.445 0.6972 -0.5083 -0.9422
-2.47 -1.458 0.607 -0.5083 -0.9578
-2.49 -1.47 0.5112 -0.5083 -0.971
-2.51 -1.482 0.4108 -0.5083 -0.9817
-2.53 -1.493 0.3067 -0.5083 -0.99
-2.549 -1.504 0.1998 -0.5083 -0.9958
-2.568 -1.516 0.09111 -0.5083 -0.9991
-2.587 -1.527 -0.01843 -0.5083 -1
-2.606 -1.538 -0.1278 -0.5083 -0.9983
-2.625 -1.549 -0.236 -0.5083 -0.9941
-2.644 -1.56 -0.3421 -0.5083 -0.9875
-2.664 -1.572 -0.4451 -0.5083 -0.9784
-2.684 -1.584 -0.544 -0.5083 -0.9668
-2.705 -1.596 -0.638 -0.5083 -0.9528
-2.726 -1.609 -0.7262 -0.5083 -0.9365
-2.748 -1.622 -0.8078 -0.5083 -0.9178
-2.771 -1.636 -0.8822 -0.5083 -0.8968
-2.795 -1.65 -0.9486 -0.5083 -0.8735
-2.82 -1.664 -1.007 -0.5083 -0.8481
-2.846 -1.679 -1.055 -0.5083 -0.8206
-2.872 -1.695 -1.095 -0.5083 -0.791
-2.9 -1.712 -1.125 -0.5083 -0.7594
-2.928 -1.728 -1.144 -0.5083 -0.7259
-2.958 -1.746 -1.154 -0.5083 -0.6907
-2.988 -1.763 -1.154 -0.5083 -0.6536
-3.019 -1.782 -1.143 -0.5083 -0.615
-3.05 -1.8 -1.123 -0.5083 -0.5748
-3.082 -1.819 -1.093 -0.5083 -0.5332
-3.114 -1.838 -1.054 -0.5083 -0.4903
-3.146 -1.857 -1.006 -0.5083 -0.4461
-3.178 -1.876 -0.9498 -0.5083 -0.4008
-3.21 -1.895 -0.8859 -0.5083 -0.3545
-3.241 -1.913 -0.815 -0.5083 -0.3073
-3.272 -1.931 -0.7378 -0.5083 -0.2594
-3.302 -1.949 -0.6551 -0.5083 -0.2108
-3.331 -1.966 -0.5678 -0.5083 -0.1617
-3.359 -1.982 -0.4768 -0.5083 -0.1122
-3.384 -1.998 -0.383 -0.5083 -0.06235
-3.409 -2.012 -0.2873 -0.5083 -0.01239
-3.431 -2.025 -0.1908 -0.5083 0.0376
-3.451 -2.037 -0.09427 -0.5083 0.0875
-3.468 -2.047 0.001205 -0.5083 0.1372
-3.483 -2.056 0.09471 -0.5083 0.1865
-3.495 -2.063 0.1853 -0.5083 0.2354
-3.504 -2.068 0.2722 -0.5083 0.2837
-3.509 -2.071 0.3544 -0.5083 0.3312
-3.512 -2.073 0.4312 -0.5083 0.378
-3.51 -2.072 0.5019 -0.5083 0.4238
-3.505 -2.069 0.5658 -0.5083 0.4685
-3.497 -2.064 0.6223 -0.5083 0.5121
-3.484 -2.056 0.6709 -0.5083 0.5544
-3.468 -2.047 0.7112 -0.5083 0.5953
-3.448 -2.035 0.7427 -0.5083 0.6347
-3.424 -2.021 0.7653 -0.5083 0.6725
-3.397 -2.005 0.7788 -0.5083 0.7087
-3.365 -1.986 0.7831 -0.5083 0.743
-3.33 -1.965 0.7783 -0.5083 0.7756
-3.292 -1.943 0.7644 -0.5083 0.8061
-3.25 -1.918 0.7418 -0.5083 0.8347
-3.204 -1.891 0.7106 -0.5083 0.8612
-3.156 -1.863 0.6714 -0.5083 0.8855
-3.105 -1.833 0.6245 -0.5083 0.9076
-3.052 -1.801 0.5705 -0.5083 0.9275
-2.996 -1.768 0.5101 -0.5083 0.945
-2.937 -1.734 0.444 -0.5083 0.9602
-2.878 -1.698 0.3729 -0.5083 0.9729
-2.816 -1.662 0.2976 -0.5083 0.9833
-2.754 -1.625 0.2189 -0.5083 0.9911
-2.69 -1.588 0.1379 -0.5083 0.9965
-2.626 -1.55 0.05524 -0.5083 0.9994
-2.657 -1.394 0 -0.4646 1
-2.592 -1.36 -0.08498 -0.4646 0.9988
-2.529 -1.327 -0.169 -0.4646 0.995
-2.465 -1.294 -0.2512 -0.4646 0.9888
-2.403 -1.261 -0.3306 -0.4646 0.9801
-2.342 -1.229 -0.4063 -0.4646 0.9689
-2.283 -1.198 -0.4775 -0.4646 0.9553
-2.225 -1.168 -0.5435 -0.4646 0.9394
-2.17 -1.138 -0.6034 -0.4646 0.9211
-2.117 -1.111 -0.6565 -0.4646 0.9004
-2.066 -1.084 -0.7023 -0.4646 0.8776
-2.018 -1.059 -0.7403 -0.4646 0.8525
-1.974 -1.035 -0.7699 -0.4646 0.8253
-1.932 -1.014 -0.7908 -0.4646 0.7961
-1.894 -0.9937 -0.8027 -0.4646 0.7648
-1.859 -0.9754 -0.8054 -0.4646 0.7317
-1.828 -0.9591 -0.7989 -0.4646 0.6967
-1.801 -0.9447 -0.7831 -0.4646 0.66
-1.777 -0.9322 -0.7582 -0.4646 0.6216
-1.757 -0.9217 -0.7242 -0.4646 0.5817
-1.74 -0.9131 -0.6816 -0.4646 0.5403
-1.728 -0.9066 -0.6306 -0.4646 0.4976
-1.719 -0.9019 -0.5718 -0.4646 0.4536
-1.714 -0.8992 -0.5057 -0.4646 0.4085
-1.712 -0.8983 -0.4329 -0.4646 0.3624
-1.714 -0.8992 -0.354 -0.4646 0.3153
-1.719 -0.9018 -0.27 -0.4646 0.2675
-1.727 -0.9061 -0.1815 -0.4646 0.219
-1.738 -0.912 -0.08949 -0.4646 0.17
-1.752 -0.9194 0.005205 -0.4646 0.1205
-1.769 -0.9281 0.1016 -0.4646 0.07074
-1.788 -0.9382 0.1988 -0.4646 0.02079
-1.809 -0.9494 0.2958 -0.4646 -0.0292
-1.833 -0.9616 0.3917 -0.4646 -0.07912
-1.858 -0.9749 0.4854 -0.4646 -0.1288
-1.885 -0.9889 0.576 -0.4646 -0.1782
-1.913 -1.004 0.6627 -0.4646 -0.2272
-1.942 -1.019 0.7444 -0.4646 -0.2756
-1.973 -1.035 0.8205 -0.4646 -0.3233
-2.004 -1.051 0.89 -0.4646 -0.3702
-2.035 -1.068 0.9524 -0.4646 -0.4161
-2.067 -1.084 1.007 -0.4646 -0.4611
-2.099 -1.101 1.053 -0.4646 -0.5048
-2.131 -1.118 1.09 -0.4646 -0.5474
-2.163 -1.135 1.117 -0.4646 -0.5885
-2.195 -1.151 1.135 -0.4646 -0.6282
-2.226 -1.168 1.143 -0.4646 -0.6663
-2.257 -1.184 1.141 -0.4646 -0.7027
-2.287 -1.2 1.129 -0.4646 -0.7374
-2.316 -1.215 1.107 -0.4646 -0.7702
-2.345 -1.23 1.074 -0.4646 -0.8011
-2.373 -1.245 1.032 -0.4646 -0.8301
-2.4 -1.259 0.9811 -0.4646 -0.8569
-2.427 -1.273 0.921 -0.4646 -0.8816
-2.453 -1.287 0.8526 -0.4646 -0.9041
-2.478 -1.3 0.7764 -0.4646 -0.9243
-2.502 -1.313 0.6931 -0.4646 -0.9422
-2.526 -1.325 0.6035 -0.4646 -0.9578
-2.549 -1.338 0.5083 -0.4646 -0.971
-2.572 -1.349 0.4086 -0.4646 -0.9817
-2.594 -1.361 0.3051 -0.4646 -0.99
-2.617 -1.373 0.1988 -0.4646 -0.9958
-2.638 -1.384 0.09062 -0.4646 -0.9991
-2.66 -1.396 -0.01834 -0.4646 -1
-2.682 -1.407 -0.1271 -0.4646 -0.9983
-2.704 -1.419 -0.2348 -0.4646 -0.9941
-2.726 -1.43 -0.3402 -0.4646 -0.9875
-2.749 -1.442 -0.4426 -0.4646 -0.9784
-2.772 -1.454 -0.5409 -0.4646 -0.9668
-2.795 -1.466 -0.6343 -0.4646 -0.9528
-2.819 -1.479 -0.7218 -0.4646 -0.9365
-2.844 -1.492 -0.8028 -0.4646 -0.9178
-2.869 -1.505 -0.8765 -0.4646 -0.8968
-2.895 -1.519 -0.9422 -0.4646 -0.8735
-2.922 -1.533 -0.9994 -0.4646 -0.8481
-2.949 -1.547 -1.048 -0.4646 -0.8206
-2.978 -1.562 -1.086 -0.4646 -0.791
-3.007 -1.577 -1.115 -0.4646 -0.7594
-3.036 -1.593 -1.134 -0.4646 -0.7259
-3.067 -1.609 -1.143 -0.4646 -0.6907
-3.098 -1.625 -1.142 -0.4646 -0.6536
-3.129 -1.642 -1.13 -0.4646 -0.615
-3.161 -1.658 -1.109 -0.4646 -0.5748
-3.193 -1.675 -1.078 -0.4646 -0.5332
-3.225 -1.692 -1.038 -0.4646 -0.4903
-3.257 -1.709 -0.9894 -0.4646 -0.4461
-3.289 -1.725 -0.9323 -0.4646 -0.4008
-3.32 -1.742 -0.8674 -0.4646 -0.3545
-3.351 -1.758 -0.7956 -0.4646 -0.3073
-3.381 -1.774 -0.7175 -0.4646 -0.2594
-3.41 -1.789 -0.634 -0.4646 -0.2108
-3.437 -1.804 -0.5459 -0.4646 -0.1617
-3.464 -1.817 -0.4542 -0.4646 -0.1122
-3.488 -1.83 -0.3596 -0.4646 -0.06235
-3.511 -1.842 -0.2633 -0.4646 -0.01239
-3.532 -1.853 -0.1661 -0.4646 0.0376
-3.55 -1.863 -0.06907 -0.4646 0.0875
-3.566 -1.871 0.02688 -0.4646 0.1372
-3.579 -1.878 0.1208 -0.4646 0.1865
-3.589 -1.883 0.2117 -0.4646 0.2354
-3.596 -1.887 0.2988 -0.4646 0.2837
-3.6 -1.889 0.3812 -0.4646 0.3312
-3.601 -1.889 0.458 -0.4646 0.378
-3.598 -1.888 0.5287 -0.4646 0.4238
-3.592 -1.884 0.5924 -0.4646 0.4685
-3.581 -1.879 0.6486 -0.4646 0.5121
-3.568 -1.872 0.6969 -0.4646 0.5544
-3.55 -1.863 0.7366 -0.4646 0.5953
-3.529 -1.851 0.7676 -0.4646 0.6347
-3.504 -1.838 0.7895 -0.4646 0.6725
-3.475 -1.823 0.8021 -0.4646 0.7087
-3.443 -1.806 0.8056 -0.4646 0.743
-3.407 -1.787 0.7997 -0.4646 0.7756
-3.367 -1.767 0.7847 -0.4646 0.8061
-3.325 -1.744 0.7609 -0.4646 0.8347
-3.279 -1.72 0.7284 -0.4646 0.8612
-3.23 -1.695 0.6878 -0.4646 0.8855
-3.179 -1.668 0.6394 -0.4646 0.9076
-3.125 -1.64 0.5839 -0.4646 0.9275
-3.069 -1.61 0.5219 -0.4646 0.945
-3.01 -1.579 0.4541 -0.4646 0.9602
-2.951 -1.548 0.3813 -0.4646 0.9729
-2.889 -1.516 0.3042 -0.4646 0.9833
-2.827 -1.483 0.2238 -0.4646 0.9911
-2.763 -1.45 0.1409 -0.4646 0.9965
-2.699 -1.416 0.05646 -0.4646 0.9994
-2.723 -1.259 0 -0.4198 1
-2.659 -1.23 -0.08676 -0.4198 0.9988
-2.596 -1.2 -0.1726 -0.4198 0.995
-2.533 -1.171 -0.2565 -0.4198 0.9888
-2.471 -1.143 -0.3376 -0.4198 0.9801
-2.41 -1.115 -0.4151 -0.4198 0.9689
-2.351 -1.087 -0.4879 -0.4198 0.9553
-2.293 -1.061 -0.5555 -0.4198 0.9394
-2.238 -1.035 -0.6169 -0.4198 0.9211
-2.185 -1.01 -0.6715 -0.4198 0.9004
-2.134 -0.9868 -0.7188 -0.4198 0.8776
-2.086 -0.9646 -0.7581 -0.4198 0.8525
-2.041 -0.9437 -0.7889 -0.4198 0.8253
-1.999 -0.9243 -0.811 -0.4198 0.7961
-1.96 -0.9063 -0.824 -0.4198 0.7648
-1.924 -0.8899 -0.8277 -0.4198 0.7317
-1.892 -0.875 -0.8221 -0.4198 0.6967
-1.864 -0.8618 -0.807 -0.4198 0.66
-1.839 -0.8503 -0.7828 -0.4198 0.6216
-1.817 -0.8405 -0.7494 -0.4198 0.5817
-1.8 -0.8323 -0.7072 -0.4198 0.5403
-1.786 -0.8258 -0.6566 -0.4198 0.4976
-1.775 -0.821 -0.5981 -0.4198 0.4536
-1.768 -0.8178 -0.5321 -0.4198 0.4085
-1.765 -0.8163 -0.4594 -0.4198 0.3624
-1.765 -0.8163 -0.3805 -0.4198 0.3153
-1.768 -0.8178 -0.2964 -0.4198 0.2675
-1.775 -0.8207 -0.2077 -0.4198 0.219
-1.784 -0.8251 -0.1154 -0.4198 0.17
-1.796 -0.8307 -0.02032 -0.4198 0.1205
-1.811 -0.8376 0.07654 -0.4198 0.07074
-1.829 -0.8457 0.1742 -0.4198 0.02079
-1.848 -0.8548 0.2718 -0.4198 -0.0292
-1.87 -0.8649 0.3683 -0.4198 -0.07912
-1.894 -0.8758 0.4627 -0.4198 -0.1288
-1.919 -0.8875 0.554 -0.4198 -0.1782
-1.946 -0.9 0.6415 -0.4198 -0.2272
-1.974 -0.913 0.724 -0.4198 -0.2756
-2.003 -0.9265 0.8009 -0.4198 -0.3233
-2.034 -0.9405 0.8713 -0.4198 -0.3702
-2.064 -0.9548 0.9345 -0.4198 -0.4161
-2.096 -0.9693 0.9899 -0.4198 -0.4611
-2.128 -0.984 1.037 -0.4198 -0.5048
-2.16 -0.9988 1.075 -0.4198 -0.5474
-2.192 -1.014 1.103 -0.4198 -0.5885
-2.224 -1.028 1.122 -0.4198 -0.6282
-2.256 -1.043 1.131 -0.4198 -0.6663
-2.287 -1.058 1.129 -0.4198 -0.7027
-2.318 -1.072 1.118 -0.4198 -0.7374
-2.349 -1.086 1.097 -0.4198 -0.7702
-2.379 -1.1 1.065 -0.4198 -0.8011
-2.409 -1.114 1.024 -0.4198 -0.8301
-2.438 -1.128 0.9736 -0.4198 -0.8569
-2.467 -1.141 0.9143 -0.4198 -0.8816
-2.495 -1.154 0.8466 -0.4198 -0.9041
-2.522 -1.166 0.7711 -0.4198 -0.9243
-2.549 -1.179 0.6885 -0.4198 -0.9422
-2.575 -1.191 0.5996 -0.4198 -0.9578
-2.601 -1.203 0.5052 -0.4198 -0.971
-2.627 -1.215 0.4061 -0.4198 -0.9817
-2.652 -1.227 0.3032 -0.4198 -0.99
-2.677 -1.238 0.1976 -0.4198 -0.9958
-2.702 -1.25 0.09008 -0.4198 -0.9991
-2.727 -1.261 -0.01823 -0.4198 -1
-2.752 -1.273 -0.1264 -0.4198 -0.9983
-2.777 -1.284 -0.2333 -0.4198 -0.9941
-2.802 -1.296 -0.3382 -0.4198 -0.9875
-2.827 -1.308 -0.4399 -0.4198 -0.9784
-2.853 -1.319 -0.5375 -0.4198 -0.9668
-2.879 -1.332 -0.6302 -0.4198 -0.9528
-2.906 -1.344 -0.717 -0.4198 -0.9365
-2.933 -1.356 -0.7973 -0.4198 -0.9178
-2.96 -1.369 -0.8702 -0.4198 -0.8968
-2.989 -1.382 -0.9352 -0.4198 -0.8735
-3.017 -1.395 -0.9916 -0.4198 -0.8481
-3.047 -1.409 -1.039 -0.4198 -0.8206
-3.076 -1.423 -1.077 -0.4198 -0.791
-3.107 -1.437 -1.105 -0.4198 -0.7594
-3.138 -1.451 -1.123 -0.4198 -0.7259
-3.169 -1.466 -1.131 -0.4198 -0.6907
-3.201 -1.48 -1.129 -0.4198 -0.6536
-3.233 -1.495 -1.117 -0.4198 -0.615
-3.265 -1.51 -1.095 -0.4198 -0.5748
-3.297 -1.525 -1.063 -0.4198 -0.5332
-3.329 -1.54 -1.022 -0.4198 -0.4903
-3.36 -1.554 -0.9722 -0.4198 -0.4461
-3.392 -1.569 -0.9141 -0.4198 -0.4008
-3.422 -1.583 -0.8484 -0.4198 -0.3545
-3.452 -1.597 -0.7758 -0.4198 -0.3073
-3.481 -1.61 -0.6969 -0.4198 -0.2594
-3.509 -1.623 -0.6126 -0.4198 -0.2108
-3.535 -1.635 -0.5237 -0.4198 -0.1617
-3.56 -1.647 -0.4312 -0.4198 -0.1122
-3.583 -1.657 -0.336 -0.4198 -0.06235
-3.604 -1.667 -0.2391 -0.4198 -0.01239
-3.623 -1.676 -0.1414 -0.4198 0.0376
-3.64 -1.683 -0.04383 -0.4198 0.0875
-3.654 -1.69 0.05254 -0.4198 0.1372
-3.665 -1.695 0.1468 -0.4198 0.1865
-3.674 -1.699 0.238 -0.4198 0.2354
-3.679 -1.701 0.3252 -0.4198 0.2837
-3.681 -1.702 0.4077 -0.4198 0.3312
-3.68 -1.702 0.4846 -0.4198 0.378
-3.676 -1.7 0.5551 -0.4198 0.4238
-3.667 -1.696 0.6186 -0.4198 0.4685
-3.656 -1.691 0.6746 -0.4198 0.5121
-3.641 -1.684 0.7224 -0.4198 0.5544
-3.622 -1.675 0.7616 -0.4198 0.5953
-3.599 -1.665 0.7919 -0.4198 0.6347
-3.573 -1.652 0.8131 -0.4198 0.6725
-3.543 -1.639 0.825 -0.4198 0.7087
-3.51 -1.623 0.8275 -0.4198 0.743
-3.473 -1.606 0.8206 -0.4198 0.7756
-3.433 -1.588 0.8046 -0.4198 0.8061
-3.39 -1.568 0.7795 -0.4198 0.8347
-3.344 -1.547 0.7458 -0.4198 0.8612
-3.295 -1.524 0.7038 -0.4198 0.8855
-3.244 -1.5 0.654 -0.4198 0.9076
-3.19 -1.475 0.597 -0.4198 0.9275
-3.133 -1.449 0.5334 -0.4198 0.945
-3.075 -1.422 0.464 -0.4198 0.9602
-3.015 -1.395 0.3895 -0.4198 0.9729
-2.954 -1.366 0.3107 -0.4198 0.9833
-2.892 -1.337 0.2285 -0.4198 0.9911
-2.829 -1.308 0.1439 -0.4198 0.9965
-2.765 -1.279 0.05764 -0.4198 0.9994
-2.782 -1.122 0 -0.3739 1
-2.719 -1.096 -0.08849 -0.3739 0.9988
-2.656 -1.071 -0.176 -0.3739 0.995
-2.594 -1.046 -0.2617 -0.3739 0.9888
-2.533 -1.021 -0.3445 -0.3739 0.9801
-2.472 -0.9967 -0.4235 -0.3739 0.9689
-2.414 -0.973 -0.498 -0.3739 0.9553
-2.356 -0.9499 -0.5671 -0.3739 0.9394
-2.301 -0.9276 -0.6301 -0.3739 0.9211
-2.248 -0.9062 -0.6862 -0.3739 0.9004
-2.197 -0.8858 -0.7348 -0.3739 0.8776
-2.149 -0.8663 -0.7754 -0.3739 0.8525
-2.104 -0.848 -0.8075 -0.3739 0.8253
-2.061 -0.8309 -0.8307 -0.3739 0.7961
-2.022 -0.815 -0.8447 -0.3739 0.7648
-1.986 -0.8004 -0.8494 -0.3739 0.7317
-1.953 -0.7872 -0.8447 -0.3739 0.6967
-1.923 -0.7753 -0.8305 -0.3739 0.66
-1.897 -0.7648 -0.8069 -0.3739 0.6216
-1.875 -0.7557 -0.7741 -0.3739 0.5817
-1.856 -0.748 -0.7324 -0.3739 0.5403
-1.84 -0.7418 -0.6822 -0.3739 0.4976
-1.828 -0.737 -0.624 -0.3739 0.4536
-1.82 -0.7335 -0.5582 -0.3739 0.4085
-1.815 -0.7314 -0.4856 -0.3739 0.3624
-1.813 -0.7307 -0.4068 -0.3739 0.3153
-1.814 -0.7313 -0.3226 -0.3739 0.2675
-1.819 -0.7331 -0.2338 -0.3739 0.219
-1.826 -0.7361 -0.1412 -0.3739 0.17
-1.836 -0.7402 -0.04584 -0.3739 0.1205
-1.849 -0.7455 0.05141 -0.3739 0.07074
-1.865 -0.7517 0.1496 -0.3739 0.02079
-1.883 -0.7589 0.2476 -0.3739 -0.0292
-1.903 -0.767 0.3447 -0.3739 -0.07912
-1.925 -0.7758 0.4397 -0.3739 -0.1288
-1.948 -0.7854 0.5317 -0.3739 -0.1782
-1.974 -0.7957 0.6199 -0.3739 -0.2272
-2.001 -0.8065 0.7032 -0.3739 -0.2756
-2.029 -0.8179 0.7809 -0.3739 -0.3233
-2.058 -0.8296 0.8521 -0.3739 -0.3702
-2.088 -0.8418 0.9161 -0.3739 -0.4161
-2.119 -0.8542 0.9723 -0.3739 -0.4611
-2.15 -0.8669 1.02 -0.3739 -0.5048
-2.182 -0.8797 1.059 -0.3739 -0.5474
-2.214 -0.8926 1.088 -0.3739 -0.5885
-2.247 -0.9056 1.108 -0.3739 -0.6282
-2.279 -0.9187 1.118 -0.3739 -0.6663
-2.311 -0.9317 1.117 -0.3739 -0.7027
-2.343 -0.9446 1.107 -0.3739 -0.7374
-2.375 -0.9575 1.086 -0.3739 -0.7702
-2.407 -0.9702 1.055 -0.3739 -0.8011
-2.438 -0.9829 1.015 -0.3739 -0.8301
-2.469 -0.9953 0.9655 -0.3739 -0.8569
-2.5 -1.008 0.9069 -0.3739 -0.8816
-2.53 -1.02 0.84 -0.3739 -0.9041
-2.56 -1.032 0.7653 -0.3739 -0.9243
-2.589 -1.044 0.6835 -0.3739 -0.9422
-2.618 -1.055 0.5954 -0.3739 -0.9578
-2.647 -1.067 0.5017 -0.3739 -0.971
-2.675 -1.078 0.4033 -0.3739 -0.9817
-2.703 -1.09 0.3012 -0.3739 -0.99
-2.731 -1.101 0.1962 -0.3739 -0.9958
-2.759 -1.112 0.08949 -0.3739 -0.9991
-2.787 -1.124 -0.01811 -0.3739 -1
-2.815 -1.135 -0.1255 -0.3739 -0.9983
-2.843 -1.146 -0.2318 -0.3739 -0.9941
-2.871 -1.157 -0.3359 -0.3739 -0.9875
-2.899 -1.169 -0.4368 -0.3739 -0.9784
-2.928 -1.18 -0.5337 -0.3739 -0.9668
-2.957 -1.192 -0.6257 -0.3739 -0.9528
-2.986 -1.204 -0.7118 -0.3739 -0.9365
-3.015 -1.215 -0.7913 -0.3739 -0.9178
-3.045 -1.228 -0.8634 -0.3739 -0.8968
-3.075 -1.24 -0.9276 -0.3739 -0.8735
-3.106 -1.252 -0.9832 -0.3739 -0.8481
-3.137 -1.265 -1.03 -0.3739 -0.8206
-3.169 -1.277 -1.067 -0.3739 -0.791
-3.2 -1.29 -1.094 -0.3739 -0.7594
-3.232 -1.303 -1.111 -0.3739 -0.7259
-3.264 -1.316 -1.118 -0.3739 -0.6907
-3.297 -1.329 -1.115 -0.3739 -0.6536
-3.329 -1.342 -1.102 -0.3739 -0.615
-3.361 -1.355 -1.079 -0.3739 -0.5748
-3.393 -1.368 -1.047 -0.3739 -0.5332
-3.425 -1.381 -1.005 -0.3739 -0.4903
-3.456 -1.393 -0.9543 -0.3739 -0.4461
-3.487 -1.406 -0.8954 -0.3739 -0.4008
-3.517 -1.418 -0.8289 -0.3739 -0.3545
-3.546 -1.429 -0.7554 -0.3739 -0.3073
-3.573 -1.44 -0.6758 -0.3739 -0.2594
-3.6 -1.451 -0.5907 -0.3739 -0.2108
-3.625 -1.461 -0.5012 -0.3739 -0.1617
-3.648 -1.47 -0.408 -0.3739 -0.1122
-3.669 -1.479 -0.3122 -0.3739 -0.06235
-3.688 -1.487 -0.2147 -0.3739 -0.01239
-3.706 -1.494 -0.1165 -0.3739 0.0376
-3.72 -1.5 -0.01856 -0.3739 0.0875
-3.732 -1.505 0.07817 -0.3739 0.1372
-3.742 -1.508 0.1727 -0.3739 0.1865
-3.748 -1.511 0.2641 -0.3739 0.2354
-3.752 -1.512 0.3515 -0.3739 0.2837
-3.752 -1.512 0.434 -0.3739 0.3312
-3.749 -1.511 0.5108 -0.3739 0.378
-3.743 -1.509 0.5812 -0.3739 0.4238
-3.733 -1.505 0.6444 -0.3739 0.4685
-3.72 -1.5 0.7 -0.3739 0.5121
-3.703 -1.493 0.7474 -0.3739 0.5544
-3.683 -1.485 0.7861 -0.3739 0.5953
-3.659 -1.475 0.8158 -0.3739 0.6347
-3.632 -1.464 0.8363 -0.3739 0.6725
-3.601 -1.452 0.8473 -0.3739 0.7087
-3.567 -1.438 0.8489 -0.3739 0.743
-3.53 -1.423 0.8411 -0.3739 0.7756
-3.49 -1.407 0.8239 -0.3739 0.8061
-3.446 -1.389 0.7976 -0.3739 0.8347
-3.4 -1.371 0.7626 -0.3739 0.8612
-3.351 -1.351 0.7193 -0.3739 0.8855
-3.299 -1.33 0.6681 -0.3739 0.9076
-3.245 -1.308 0.6096 -0.3739 0.9275
-3.189 -1.286 0.5445 -0.3739 0.945
-3.132 -1.262 0.4735 -0.3739 0.9602
-3.072 -1.238 0.3974 -0.3739 0.9729
-3.012 -1.214 0.317 -0.3739 0.9833
-2.95 -1.189 0.2331 -0.3739 0.9911
-2.887 -1.164 0.1468 -0.3739 0.9965
-2.824 -1.139 0.05879 -0.3739 0.9994
-2.835 -0.9812 0 -0.3271 1
-2.773 -0.9596 -0.09016 -0.3271 0.9988
-2.711 -0.9382 -0.1794 -0.3271 0.995
-2.649 -0.9169 -0.2666 -0.3271 0.9888
-2.589 -0.896 -0.3511 -0.3271 0.9801
-2.529 -0.8754 -0.4318 -0.3271 0.9689
-2.471 -0.8552 -0.5078 -0.3271 0.9553
-2.415 -0.8356 -0.5784 -0.3271 0.9394
-2.36 -0.8167 -0.6429 -0.3271 0.9211
-2.307 -0.7984 -0.7004 -0.3271 0.9004
-2.256 -0.7809 -0.7503 -0.3271 0.8776
-2.208 -0.7643 -0.7922 -0.3271 0.8525
-2.163 -0.7485 -0.8255 -0.3271 0.8253
-2.12 -0.7337 -0.8499 -0.3271 0.7961
-2.08 -0.7199 -0.865 -0.3271 0.7648
-2.043 -0.7072 -0.8707 -0.3271 0.7317
-2.01 -0.6956 -0.8668 -0.3271 0.6967
-1.979 -0.6851 -0.8534 -0.3271 0.66
-1.952 -0.6757 -0.8305 -0.3271 0.6216
-1.929 -0.6675 -0.7983 -0.3271 0.5817
-1.908 -0.6605 -0.7572 -0.3271 0.5403
-1.891 -0.6546 -0.7074 -0.3271 0.4976
-1.878 -0.6499 -0.6495 -0.3271 0.4536
-1.868 -0.6463 -0.584 -0.3271 0.4085
-1.861 -0.6439 -0.5116 -0.3271 0.3624
-1.857 -0.6426 -0.4328 -0.3271 0.3153
-1.856 -0.6424 -0.3486 -0.3271 0.2675
-1.859 -0.6433 -0.2597 -0.3271 0.219
-1.864 -0.6452 -0.1669 -0.3271 0.17
-1.872 -0.648 -0.07132 -0.3271 0.1205
-1.883 -0.6518 0.02624 -0.3271 0.07074
-1.897 -0.6565 0.1248 -0.3271 0.02079
-1.913 -0.6619 0.2233 -0.3271 -0.0292
-1.931 -0.6682 0.3209 -0.3271 -0.07912
-1.951 -0.6752 0.4164 -0.3271 -0.1288
-1.973 -0.6828 0.5091 -0.3271 -0.1782
-1.997 -0.6911 0.5979 -0.3271 -0.2272
-2.022 -0.6999 0.6819 -0.3271 -0.2756
-2.049 -0.7091 0.7603 -0.3271 -0.3233
-2.077 -0.7188 0.8323 -0.3271 -0.3702
-2.106 -0.7289 0.8971 -0.3271 -0.4161
-2.136 -0.7393 0.9541 -0.3271 -0.4611
-2.167 -0.75 1.003 -0.3271 -0.5048
-2.199 -0.7609 1.042 -0.3271 -0.5474
-2.231 -0.772 1.072 -0.3271 -0.5885
-2.263 -0.7832 1.093 -0.3271 -0.6282
-2.296 -0.7945 1.104 -0.3271 -0.6663
-2.329 -0.8059 1.104 -0.3271 -0.7027
-2.362 -0.8173 1.094 -0.3271 -0.7374
-2.395 -0.8287 1.075 -0.3271 -0.7702
-2.428 -0.8401 1.045 -0.3271 -0.8011
-2.46 -0.8515 1.005 -0.3271 -0.8301
-2.493 -0.8628 0.9567 -0.3271 -0.8569
-2.526 -0.8741 0.899 -0.3271 -0.8816
-2.558 -0.8852 0.8329 -0.3271 -0.9041
-2.59 -0.8963 0.7591 -0.3271 -0.9243
-2.622 -0.9074 0.6781 -0.3271 -0.9422
-2.653 -0.9183 0.5907 -0.3271 -0.9578
-2.685 -0.9292 0.4978 -0.3271 -0.971
-2.716 -0.94 0.4003 -0.3271 -0.9817
-2.747 -0.9508 0.2989 -0.3271 -0.99
-2.778 -0.9615 0.1948 -0.3271 -0.9958
-2.809 -0.9723 0.08883 -0.3271 -0.9991
-2.84 -0.983 -0.01798 -0.3271 -1
-2.871 -0.9937 -0.1246 -0.3271 -0.9983
-2.902 -1.004 -0.2301 -0.3271 -0.9941
-2.933 -1.015 -0.3334 -0.3271 -0.9875
-2.964 -1.026 -0.4336 -0.3271 -0.9784
-2.996 -1.037 -0.5296 -0.3271 -0.9668
-3.027 -1.048 -0.6208 -0.3271 -0.9528
-3.059 -1.059 -0.7061 -0.3271 -0.9365
-3.091 -1.07 -0.7847 -0.3271 -0.9178
-3.123 -1.081 -0.8561 -0.3271 -0.8968
-3.155 -1.092 -0.9194 -0.3271 -0.8735
-3.188 -1.103 -0.9741 -0.3271 -0.8481
-3.221 -1.115 -1.02 -0.3271 -0.8206
-3.254 -1.126 -1.056 -0.3271 -0.791
-3.286 -1.137 -1.082 -0.3271 -0.7594
-3.319 -1.149 -1.099 -0.3271 -0.7259
-3.352 -1.16 -1.105 -0.3271 -0.6907
-3.385 -1.172 -1.101 -0.3271 -0.6536
-3.418 -1.183 -1.087 -0.3271 -0.615
-3.45 -1.194 -1.063 -0.3271 -0.5748
-3.482 -1.205 -1.03 -0.3271 -0.5332
-3.513 -1.216 -0.9873 -0.3271 -0.4903
-3.544 -1.227 -0.9358 -0.3271 -0.4461
-3.574 -1.237 -0.8762 -0.3271 -0.4008
-3.603 -1.247 -0.8088 -0.3271 -0.3545
-3.63 -1.256 -0.7346 -0.3271 -0.3073
-3.657 -1.265 -0.6542 -0.3271 -0.2594
-3.681 -1.274 -0.5685 -0.3271 -0.2108
-3.705 -1.282 -0.4783 -0.3271 -0.1617
-3.726 -1.29 -0.3846 -0.3271 -0.1122
-3.746 -1.296 -0.2882 -0.3271 -0.06235
-3.763 -1.302 -0.1902 -0.3271 -0.01239
-3.778 -1.308 -0.0916 -0.3271 0.0376
-3.791 -1.312 0.006726 -0.3271 0.0875
-3.801 -1.315 0.1037 -0.3271 0.1372
-3.808 -1.318 0.1985 -0.3271 0.1865
-3.812 -1.319 0.29 -0.3271 0.2354
-3.814 -1.32 0.3775 -0.3271 0.2837
-3.812 -1.319 0.46 -0.3271 0.3312
-3.807 -1.318 0.5367 -0.3271 0.378
-3.799 -1.315 0.6069 -0.3271 0.4238
-3.788 -1.311 0.6699 -0.3271 0.4685
-3.773 -1.306 0.7251 -0.3271 0.5121
-3.755 -1.3 0.772 -0.3271 0.5544
-3.734 -1.292 0.8101 -0.3271 0.5953
-3.709 -1.284 0.8392 -0.3271 0.6347
-3.681 -1.274 0.8589 -0.3271 0.6725
-3.649 -1.263 0.8692 -0.3271 0.7087
-3.615 -1.251 0.8698 -0.3271 0.743
-3.577 -1.238 0.8609 -0.3271 0.7756
-3.536 -1.224 0.8427 -0.3271 0.8061
-3.492 -1.209 0.8153 -0.3271 0.8347
-3.446 -1.193 0.779 -0.3271 0.8612
-3.397 -1.176 0.7344 -0.3271 0.8855
-3.346 -1.158 0.6818 -0.3271 0.9076
-3.292 -1.139 0.6219 -0.3271 0.9275
-3.237 -1.12 0.5553 -0.3271 0.945
-3.179 -1.1 0.4828 -0.3271 0.9602
-3.121 -1.08 0.4051 -0.3271 0.9729
-3.061 -1.059 0.3231 -0.3271 0.9833
-3 -1.038 0.2376 -0.3271 0.9911
-2.938 -1.017 0.1495 -0.3271 0.9965
-2.876 -0.9955 0.0599 -0.3271 0.9994
-2.881 -0.8382 0 -0.2794 1
-2.819 -0.8205 -0.09178 -0.2794 0.9988
-2.759 -0.8028 -0.1826 -0.2794 0.995
-2.698 -0.7853 -0.2715 -0.2794 0.9888
-2.639 -0.7679 -0.3575 -0.2794 0.9801
-2.58 -0.7509 -0.4397 -0.2794 0.9689
-2.523 -0.7342 -0.5173 -0.2794 0.9553
-2.467 -0.718 -0.5894 -0.2794 0.9394
-2.413 -0.7022 -0.6552 -0.2794 0.9211
-2.361 -0.687 -0.7141 -0.2794 0.9004
-2.311 -0.6724 -0.7654 -0.2794 0.8776
-2.263 -0.6585 -0.8085 -0.2794 0.8525
-2.217 -0.6453 -0.843 -0.2794 0.8253
-2.175 -0.6328 -0.8685 -0.2794 0.7961
-2.135 -0.6212 -0.8847 -0.2794 0.7648
-2.097 -0.6104 -0.8913 -0.2794 0.7317
-2.063 -0.6004 -0.8883 -0.2794 0.6967
-2.032 -0.5913 -0.8757 -0.2794 0.66
-2.004 -0.5832 -0.8536 -0.2794 0.6216
-1.979 -0.5759 -0.822 -0.2794 0.5817
-1.957 -0.5696 -0.7814 -0.2794 0.5403
-1.939 -0.5643 -0.7322 -0.2794 0.4976
-1.924 -0.5598 -0.6746 -0.2794 0.4536
-1.912 -0.5564 -0.6094 -0.2794 0.4085
-1.903 -0.5538 -0.5372 -0.2794 0.3624
-1.897 -0.5521 -0.4586 -0.2794 0.3153
-1.895 -0.5514 -0.3744 -0.2794 0.2675
-1.895 -0.5515 -0.2854 -0.2794 0.219
-1.898 -0.5524 -0.1926 -0.2794 0.17
-1.904 -0.5542 -0.09676 -0.2794 0.1205
-1.913 -0.5568 0.001059 -0.2794 0.07074
-1.925 -0.56 0.09992 -0.2794 0.02079
-1.938 -0.564 0.1988 -0.2794 -0.0292
-1.954 -0.5687 0.2968 -0.2794 -0.07912
-1.972 -0.574 0.3929 -0.2794 -0.1288
-1.993 -0.5799 0.4861 -0.2794 -0.1782
-2.015 -0.5863 0.5755 -0.2794 -0.2272
-2.039 -0.5932 0.6602 -0.2794 -0.2756
-2.064 -0.6006 0.7393 -0.2794 -0.3233
-2.091 -0.6084 0.812 -0.2794 -0.3702
-2.119 -0.6166 0.8775 -0.2794 -0.4161
-2.148 -0.6251 0.9353 -0.2794 -0.4611
-2.178 -0.6338 0.9847 -0.2794 -0.5048
-2.209 -0.6429 1.025 -0.2794 -0.5474
-2.241 -0.6521 1.056 -0.2794 -0.5885
-2.273 -0.6616 1.078 -0.2794 -0.6282
-2.306 -0.6712 1.089 -0.2794 -0.6663
-2.34 -0.6809 1.09 -0.2794 -0.7027
-2.373 -0.6907 1.082 -0.2794 -0.7374
-2.407 -0.7006 1.063 -0.2794 -0.7702
-2.442 -0.7105 1.034 -0.2794 -0.8011
-2.476 -0.7205 0.9952 -0.2794 -0.8301
-2.51 -0.7305 0.9474 -0.2794 -0.8569
-2.545 -0.7405 0.8906 -0.2794 -0.8816
-2.579 -0.7505 0.8253 -0.2794 -0.9041
-2.613 -0.7605 0.7523 -0.2794 -0.9243
-2.648 -0.7705 0.6722 -0.2794 -0.9422
-2.682 -0.7804 0.5857 -0.2794 -0.9578
-2.716 -0.7904 0.4937 -0.2794 -0.971
-2.75 -0.8003 0.397 -0.2794 -0.9817
-2.784 -0.8102 0.2965 -0.2794 -0.99
-2.818 -0.8201 0.1932 -0.2794 -0.9958
-2.852 -0.83 0.08813 -0.2794 -0.9991
-2.886 -0.8399 -0.01783 -0.2794 -1
-2.92 -0.8498 -0.1236 -0.2794 -0.9983
-2.954 -0.8597 -0.2282 -0.2794 -0.9941
-2.988 -0.8696 -0.3307 -0.2794 -0.9875
-3.022 -0.8795 -0.43 -0.2794 -0.9784
-3.056 -0.8895 -0.5252 -0.2794 -0.9668
-3.091 -0.8994 -0.6155 -0.2794 -0.9528
-3.125 -0.9094 -0.6999 -0.2794 -0.9365
-3.159 -0.9194 -0.7777 -0.2794 -0.9178
-3.194 -0.9294 -0.8482 -0.2794 -0.8968
-3.228 -0.9394 -0.9106 -0.2794 -0.8735
-3.262 -0.9494 -0.9645 -0.2794 -0.8481
-3.297 -0.9594 -1.009 -0.2794 -0.8206
-3.331 -0.9693 -1.045 -0.2794 -0.791
-3.365 -0.9793 -1.07 -0.2794 -0.7594
-3.399 -0.9891 -1.086 -0.2794 -0.7259
-3.433 -0.9989 -1.091 -0.2794 -0.6907
-3.466 -1.009 -1.086 -0.2794 -0.6536
-3.499 -1.018 -1.071 -0.2794 -0.615
-3.531 -1.028 -1.047 -0.2794 -0.5748
-3.562 -1.037 -1.013 -0.2794 -0.5332
-3.593 -1.046 -0.969 -0.2794 -0.4903
-3.623 -1.054 -0.9168 -0.2794 -0.4461
-3.652 -1.063 -0.8563 -0.2794 -0.4008
-3.68 -1.071 -0.7883 -0.2794 -0.3545
-3.706 -1.078 -0.7134 -0.2794 -0.3073
-3.731 -1.086 -0.6323 -0.2794 -0.2594
-3.754 -1.092 -0.5459 -0.2794 -0.2108
-3.775 -1.099 -0.4552 -0.2794 -0.1617
-3.795 -1.104 -0.3609 -0.2794 -0.1122
-3.812 -1.109 -0.2641 -0.2794 -0.06235
-3.828 -1.114 -0.1656 -0.2794 -0.01239
-3.841 -1.118 -0.06662 -0.2794 0.0376
-3.851 -1.121 0.032 -0.2794 0.0875
-3.859 -1.123 0.1293 -0.2794 0.1372
-3.864 -1.124 0.2242 -0.2794 0.1865
-3.866 -1.125 0.3158 -0.2794 0.2354
-3.866 -1.125 0.4033 -0.2794 0.2837
-3.862 -1.124 0.4857 -0.2794 0.3312
-3.855 -1.122 0.5622 -0.2794 0.378
-3.846 -1.119 0.6322 -0.2794 0.4238
-3.832 -1.115 0.6949 -0.2794 0.4685
-3.816 -1.111 0.7497 -0.2794 0.5121
-3.797 -1.105 0.7961 -0.2794 0.5544
-3.774 -1.098 0.8337 -0.2794 0.5953
-3.748 -1.091 0.8621 -0.2794 0.6347
-3.719 -1.082 0.881 -0.2794 0.6725
-3.687 -1.073 0.8904 -0.2794 0.7087
-3.651 -1.063 0.8902 -0.2794 0.743
-3.613 -1.051 0.8803 -0.2794 0.7756
-3.572 -1.04 0.861 -0.2794 0.8061
-3.529 -1.027 0.8324 -0.2794 0.8347
-3.482 -1.013 0.795 -0.2794 0.8612
-3.434 -0.9992 0.749 -0.2794 0.8855
-3.383 -0.9844 0.6951 -0.2794 0.9076
-3.33 -0.969 0.6338 -0.2794 0.9275
-3.275 -0.9531 0.5658 -0.2794 0.945
-3.219 -0.9367 0.4918 -0.2794 0.9602
-3.161 -0.9199 0.4125 -0.2794 0.9729
-3.102 -0.9028 0.3289 -0.2794 0.9833
-3.042 -0.8854 0.2419 -0.2794 0.9911
-2.982 -0.8678 0.1522 -0.2794 0.9965
-2.921 -0.85 0.06098 -0.2794 0.9994
-2.919 -0.6932 0 -0.2311 1
-2.859 -0.6791 -0.09334 -0.2311 0.9988
-2.8 -0.665 -0.1857 -0.2311 0.995
-2.741 -0.651 -0.2761 -0.2311 0.9888
-2.683 -0.6372 -0.3637 -0.2311 0.9801
-2.625 -0.6236 -0.4474 -0.2311 0.9689
-2.569 -0.6102 -0.5264 -0.2311 0.9553
-2.515 -0.5972 -0.6 -0.2311 0.9394
-2.461 -0.5846 -0.6672 -0.2311 0.9211
-2.41 -0.5723 -0.7274 -0.2311 0.9004
-2.36 -0.5606 -0.78 -0.2311 0.8776
-2.313 -0.5493 -0.8244 -0.2311 0.8525
-2.268 -0.5386 -0.86 -0.2311 0.8253
-2.225 -0.5284 -0.8866 -0.2311 0.7961
-2.185 -0.5189 -0.9038 -0.2311 0.7648
-2.147 -0.51 -0.9114 -0.2311 0.7317
-2.112 -0.5017 -0.9093 -0.2311 0.6967
-2.081 -0.4942 -0.8975 -0.2311 0.66
-2.052 -0.4873 -0.8761 -0.2311 0.6216
-2.026 -0.4811 -0.8453 -0.2311 0.5817
-2.003 -0.4757 -0.8052 -0.2311 0.5403
-1.983 -0.4709 -0.7564 -0.2311 0.4976
-1.966 -0.467 -0.6993 -0.2311 0.4536
-1.952 -0.4637 -0.6345 -0.2311 0.4085
-1.942 -0.4612 -0.5625 -0.2311 0.3624
-1.934 -0.4593 -0.484 -0.2311 0.3153
-1.929 -0.4582 -0.3999 -0.2311 0.2675
-1.928 -0.4578 -0.311 -0.2311 0.219
-1.929 -0.4581 -0.2181 -0.2311 0.17
-1.932 -0.459 -0.1221 -0.2311 0.1205
-1.939 -0.4605 -0.02412 -0.2311 0.07074
-1.948 -0.4627 0.07501 -0.2311 0.02079
-1.959 -0.4654 0.1743 -0.2311 -0.0292
-1.973 -0.4687 0.2726 -0.2311 -0.07912
-1.989 -0.4725 0.3692 -0.2311 -0.1288
-2.008 -0.4768 0.4629 -0.2311 -0.1782
-2.028 -0.4816 0.5528 -0.2311 -0.2272
-2.05 -0.4869 0.6381 -0.2311 -0.2756
-2.074 -0.4925 0.7178 -0.2311 -0.3233
-2.099 -0.4985 0.7912 -0.2311 -0.3702
-2.126 -0.5049 0.8574 -0.2311 -0.4161
-2.154 -0.5116 0.9159 -0.2311 -0.4611
-2.183 -0.5185 0.9661 -0.2311 -0.5048
-2.214 -0.5258 1.007 -0.2311 -0.5474
-2.245 -0.5333 1.039 -0.2311 -0.5885
-2.278 -0.5409 1.061 -0.2311 -0.6282
-2.311 -0.5488 1.074 -0.2311 -0.6663
-2.344 -0.5568 1.076 -0.2311 -0.7027
-2.379 -0.565 1.068 -0.2311 -0.7374
-2.414 -0.5733 1.05 -0.2311 -0.7702
-2.449 -0.5817 1.022 -0.2311 -0.8011
-2.485 -0.5901 0.9844 -0.2311 -0.8301
-2.521 -0.5987 0.9374 -0.2311 -0.8569
-2.557 -0.6073 0.8815 -0.2311 -0.8816
-2.593 -0.6159 0.8172 -0.2311 -0.9041
-2.63 -0.6246 0.7451 -0.2311 -0.9243
-2.667 -0.6333 0.6659 -0.2311 -0.9422
-2.703 -0.6421 0.5804 -0.2311 -0.9578
-2.74 -0.6508 0.4893 -0.2311 -0.971
-2.777 -0.6596 0.3935 -0.2311 -0.9817
-2.814 -0.6684 0.2939 -0.2311 -0.99
-2.851 -0.6771 0.1916 -0.2311 -0.9958
-2.888 -0.6859 0.08736 -0.2311 -0.9991
-2.925 -0.6947 -0.01768 -0.2311 -1
-2.962 -0.7035 -0.1225 -0.2311 -0.9983
-2.999 -0.7123 -0.2262 -0.2311 -0.9941
-3.036 -0.7211 -0.3278 -0.2311 -0.9875
-3.073 -0.7298 -0.4262 -0.2311 -0.9784
-3.11 -0.7386 -0.5205 -0.2311 -0.9668
-3.147 -0.7473 -0.6098 -0.2311 -0.9528
-3.183 -0.7561 -0.6933 -0.2311 -0.9365
-3.22 -0.7648 -0.7702 -0.2311 -0.9178
-3.257 -0.7735 -0.8398 -0.2311 -0.8968
-3.293 -0.7821 -0.9013 -0.2311 -0.8735
-3.329 -0.7907 -0.9542 -0.2311 -0.8481
-3.365 -0.7992 -0.9981 -0.2311 -0.8206
-3.401 -0.8076 -1.033 -0.2311 -0.791
-3.436 -0.816 -1.057 -0.2311 -0.7594
-3.47 -0.8242 -1.072 -0.2311 -0.7259
-3.505 -0.8324 -1.076 -0.2311 -0.6907
-3.538 -0.8403 -1.071 -0.2311 -0.6536
-3.571 -0.8481 -1.055 -0.2311 -0.615
-3.603 -0.8557 -1.03 -0.2311 -0.5748
-3.634 -0.8631 -0.9945 -0.2311 -0.5332
-3.664 -0.8703 -0.9502 -0.2311 -0.4903
-3.693 -0.8772 -0.8972 -0.2311 -0.4461
-3.721 -0.8838 -0.836 -0.2311 -0.4008
-3.747 -0.89 -0.7672 -0.2311 -0.3545
-3.772 -0.8959 -0.6916 -0.2311 -0.3073
-3.795 -0.9014 -0.61 -0.2311 -0.2594
-3.817 -0.9065 -0.523 -0.2311 -0.2108
-3.836 -0.9111 -0.4317 -0.2311 -0.1617
-3.854 -0.9153 -0.337 -0.2311 -0.1122
-3.869 -0.919 -0.2397 -0.2311 -0.06235
-3.882 -0.9221 -0.1409 -0.2311 -0.01239
-3.893 -0.9246 -0.04161 -0.2311 0.0376
-3.901 -0.9265 0.05726 -0.2311 0.0875
-3.907 -0.9279 0.1547 -0.2311 0.1372
-3.91 -0.9286 0.2497 -0.2311 0.1865
-3.91 -0.9286 0.3414 -0.2311 0.2354
-3.907 -0.9279 0.4288 -0.2311 0.2837
-3.901 -0.9266 0.5111 -0.2311 0.3312
-3.893 -0.9245 0.5874 -0.2311 0.378
-3.881 -0.9218 0.6571 -0.2311 0.4238
-3.866 -0.9182 0.7194 -0.2311 0.4685
-3.848 -0.914 0.7738 -0.2311 0.5121
-3.827 -0.9091 0.8197 -0.2311 0.5544
-3.804 -0.9034 0.8567 -0.2311 0.5953
-3.777 -0.897 0.8844 -0.2311 0.6347
-3.747 -0.8898 0.9026 -0.2311 0.6725
-3.714 -0.882 0.9111 -0.2311 0.7087
-3.678 -0.8736 0.9099 -0.2311 0.743
-3.64 -0.8644 0.8991 -0.2311 0.7756
-3.599 -0.8547 0.8787 -0.2311 0.8061
-3.555 -0.8443 0.849 -0.2311 0.8347
-3.509 -0.8334 0.8104 -0.2311 0.8612
-3.461 -0.822 0.7632 -0.2311 0.8855
-3.411 -0.8101 0.708 -0.2311 0.9076
-3.359 -0.7977 0.6453 -0.2311 0.9275
-3.305 -0.7849 0.5759 -0.2311 0.945
-3.25 -0.7718 0.5004 -0.2311 0.9602
-3.193 -0.7584 0.4197 -0.2311 0.9729
-3.135 -0.7447 0.3346 -0.2311 0.9833
-3.077 -0.7308 0.246 -0.2311 0.9911
-3.018 -0.7168 0.1548 -0.2311 0.9965
-2.958 -0.7026 0.06201 -0.2311 0.9994
-2.95 -0.5465 0 -0.1822 1
-2.892 -0.5358 -0.09484 -0.1822 0.9988
-2.834 -0.5251 -0.1887 -0.1822 0.995
-2.777 -0.5145 -0.2806 -0.1822 0.9888
-2.72 -0.504 -0.3696 -0.1822 0.9801
-2.664 -0.4936 -0.4548 -0.1822 0.9689
-2.61 -0.4835 -0.5352 -0.1822 0.9553
-2.556 -0.4736 -0.6102 -0.1822 0.9394
-2.504 -0.4639 -0.6787 -0.1822 0.9211
-2.453 -0.4545 -0.7403 -0.1822 0.9004
-2.405 -0.4455 -0.7941 -0.1822 0.8776
-2.358 -0.4368 -0.8397 -0.1822 0.8525
-2.313 -0.4285 -0.8765 -0.1822 0.8253
-2.271 -0.4207 -0.9042 -0.1822 0.7961
-2.23 -0.4132 -0.9224 -0.1822 0.7648
-2.193 -0.4062 -0.931 -0.1822 0.7317
-2.158 -0.3997 -0.9298 -0.1822 0.6967
-2.125 -0.3937 -0.9188 -0.1822 0.66
-2.095 -0.3882 -0.8981 -0.1822 0.6216
-2.068 -0.3832 -0.8679 -0.1822 0.5817
-2.044 -0.3787 -0.8285 -0.1822 0.5403
-2.023 -0.3748 -0.7803 -0.1822 0.4976
-2.004 -0.3714 -0.7236 -0.1822 0.4536
-1.989 -0.3685 -0.6591 -0.1822 0.4085
-1.976 -0.3662 -0.5874 -0.1822 0.3624
-1.967 -0.3644 -0.5092 -0.1822 0.3153
-1.96 -0.3631 -0.4252 -0.1822 0.2675
-1.956 -0.3624 -0.3363 -0.1822 0.219
-1.955 -0.3621 -0.2435 -0.1822 0.17
-1.956 -0.3624 -0.1474 -0.1822 0.1205
-1.96 -0.3632 -0.04929 -0.1822 0.07074
-1.967 -0.3644 0.05004 -0.1822 0.02079
-1.976 -0.3661 0.1496 -0.1822 -0.0292
-1.988 -0.3683 0.2483 -0.1822 -0.07912
-2.002 -0.3709 0.3452 -0.1822 -0.1288
-2.018 -0.3738 0.4393 -0.1822 -0.1782
-2.036 -0.3772 0.5297 -0.1822 -0.2272
-2.056 -0.3809 0.6155 -0.1822 -0.2756
-2.078 -0.385 0.6958 -0.1822 -0.3233
-2.102 -0.3894 0.7699 -0.1822 -0.3702
-2.128 -0.3942 0.8368 -0.1822 -0.4161
-2.155 -0.3992 0.896 -0.1822 -0.4611
-2.183 -0.4044 0.9469 -0.1822 -0.5048
-2.213 -0.4099 0.9889 -0.1822 -0.5474
-2.244 -0.4157 1.022 -0.1822 -0.5885
-2.276 -0.4216 1.045 -0.1822 -0.6282
-2.309 -0.4278 1.058 -0.1822 -0.6663
-2.343 -0.4341 1.061 -0.1822 -0.7027
-2.378 -0.4406 1.054 -0.1822 -0.7374
-2.414 -0.4472 1.037 -0.1822 -0.7702
-2.45 -0.4539 1.01 -0.1822 -0.8011
-2.487 -0.4607 0.9729 -0.1822 -0.8301
-2.525 -0.4677 0.9269 -0.1822 -0.8569
-2.562 -0.4747 0.872 -0.1822 -0.8816
-2.601 -0.4818 0.8086 -0.1822 -0.9041
-2.64 -0.489 0.7375 -0.1822 -0.9243
-2.679 -0.4962 0.6593 -0.1822 -0.9422
-2.718 -0.5035 0.5747 -0.1822 -0.9578
-2.757 -0.5108 0.4845 -0.1822 -0.971
-2.797 -0.5182 0.3897 -0.1822 -0.9817
-2.837 -0.5255 0.2912 -0.1822 -0.99
-2.877 -0.5329 0.1898 -0.1822 -0.9958
-2.917 -0.5403 0.08654 -0.1822 -0.9991
-2.957 -0.5477 -0.01751 -0.1822 -1
-2.996 -0.5551 -0.1214 -0.1822 -0.9983
-3.036 -0.5625 -0.2241 -0.1822 -0.9941
-3.076 -0.5699 -0.3247 -0.1822 -0.9875
-3.116 -0.5773 -0.4221 -0.1822 -0.9784
-3.156 -0.5846 -0.5154 -0.1822 -0.9668
-3.195 -0.5919 -0.6038 -0.1822 -0.9528
-3.234 -0.5992 -0.6863 -0.1822 -0.9365
-3.273 -0.6064 -0.7622 -0.1822 -0.9178
-3.312 -0.6135 -0.8308 -0.1822 -0.8968
-3.35 -0.6206 -0.8914 -0.1822 -0.8735
-3.388 -0.6276 -0.9434 -0.1822 -0.8481
-3.425 -0.6345 -0.9863 -0.1822 -0.8206
-3.462 -0.6414 -1.02 -0.1822 -0.791
-3.498 -0.648 -1.044 -0.1822 -0.7594
-3.533 -0.6546 -1.057 -0.1822 -0.7259
-3.568 -0.661 -1.061 -0.1822 -0.6907
-3.602 -0.6673 -1.054 -0.1822 -0.6536
-3.635 -0.6734 -1.038 -0.1822 -0.615
-3.666 -0.6792 -1.012 -0.1822 -0.5748
-3.697 -0.6849 -0.9758 -0.1822 -0.5332
-3.726 -0.6904 -0.9307 -0.1822 -0.4903
-3.754 -0.6955 -0.877 -0.1822 -0.4461
-3.781 -0.7004 -0.8151 -0.1822 -0.4008
-3.806 -0.7051 -0.7457 -0.1822 -0.3545
-3.829 -0.7094 -0.6695 -0.1822 -0.3073
-3.85 -0.7133 -0.5873 -0.1822 -0.2594
-3.87 -0.7169 -0.4998 -0.1822 -0.2108
-3.887 -0.7202 -0.408 -0.1822 -0.1617
-3.903 -0.723 -0.3128 -0.1822 -0.1122
-3.916 -0.7255 -0.2152 -0.1822 -0.06235
-3.927 -0.7275 -0.1161 -0.1822 -0.01239
-3.935 -0.729 -0.01656 -0.1822 0.0376
-3.941 -0.7301 0.08248 -0.1822 0.0875
-3.944 -0.7307 0.18 -0.1822 0.1372
-3.945 -0.7308 0.2751 -0.1822 0.1865
-3.943 -0.7304 0.3667 -0.1822 0.2354
-3.938 -0.7295 0.454 -0.1822 0.2837
-3.93 -0.7281 0.5361 -0.1822 0.3312
-3.919 -0.7261 0.6123 -0.1822 0.378
-3.906 -0.7236 0.6816 -0.1822 0.4238
-3.889 -0.7205 0.7436 -0.1822 0.4685
-3.87 -0.717 0.7974 -0.1822 0.5121
-3.848 -0.7128 0.8428 -0.1822 0.5544
-3.823 -0.7082 0.8791 -0.1822 0.5953
-3.795 -0.703 0.9061 -0.1822 0.6347
-3.764 -0.6973 0.9236 -0.1822 0.6725
-3.731 -0.6911 0.9313 -0.1822 0.7087
-3.695 -0.6845 0.9292 -0.1822 0.743
-3.656 -0.6773 0.9173 -0.1822 0.7756
-3.615 -0.6697 0.8959 -0.1822 0.8061
-3.572 -0.6617 0.8651 -0.1822 0.8347
-3.526 -0.6533 0.8253 -0.1822 0.8612
-3.479 -0.6445 0.7769 -0.1822 0.8855
-3.429 -0.6353 0.7204 -0.1822 0.9076
-3.378 -0.6259 0.6564 -0.1822 0.9275
-3.326 -0.6161 0.5856 -0.1822 0.945
-3.272 -0.6061 0.5088 -0.1822 0.9602
-3.217 -0.5959 0.4266 -0.1822 0.9729
-3.16 -0.5855 0.3401 -0.1822 0.9833
-3.104 -0.575 0.25 -0.1822 0.9911
-3.046 -0.5643 0.1573 -0.1822 0.9965
-2.988 -0.5536 0.06301 -0.1822 0.9994
-2.973 -0.3984 0 -0.1328 1
-2.917 -0.3909 -0.09629 -0.1328 0.9988
-2.862 -0.3834 -0.1916 -0.1328 0.995
-2.806 -0.376 -0.2849 -0.1328 0.9888
-2.751 -0.3686 -0.3753 -0.1328 0.9801
-2.697 -0.3614 -0.4619 -0.1328 0.9689
-2.644 -0.3542 -0.5437 -0.1328 0.9553
-2.592 -0.3473 -0.62 -0.1328 0.9394
-2.541 -0.3404 -0.6899 -0.1328 0.9211
-2.492 -0.3338 -0.7526 -0.1328 0.9004
-2.444 -0.3274 -0.8077 -0.1328 0.8776
-2.398 -0.3212 -0.8545 -0.1328 0.8525
-2.354 -0.3153 -0.8924 -0.1328 0.8253
-2.311 -0.3097 -0.9212 -0.1328 0.7961
-2.271 -0.3043 -0.9404 -0.1328 0.7648
-2.234 -0.2992 -0.9499 -0.1328 0.7317
-2.198 -0.2945 -0.9496 -0.1328 0.6967
-2.165 -0.2901 -0.9395 -0.1328 0.66
-2.135 -0.286 -0.9196 -0.1328 0.6216
-2.107 -0.2822 -0.8901 -0.1328 0.5817
-2.081 -0.2788 -0.8513 -0.1328 0.5403
-2.059 -0.2758 -0.8036 -0.1328 0.4976
-2.039 -0.2731 -0.7474 -0.1328 0.4536
-2.022 -0.2708 -0.6833 -0.1328 0.4085
-2.007 -0.2689 -0.6119 -0.1328 0.3624
-1.995 -0.2673 -0.534 -0.1328 0.3153
-1.987 -0.2662 -0.4502 -0.1328 0.2675
-1.98 -0.2653 -0.3615 -0.1328 0.219
-1.977 -0.2648 -0.2687 -0.1328 0.17
-1.976 -0.2647 -0.1727 -0.1328 0.1205
-1.978 -0.265 -0.07443 -0.1328 0.07074
-1.982 -0.2655 0.02504 -0.1328 0.02079
-1.989 -0.2665 0.1248 -0.1328 -0.0292
-1.998 -0.2677 0.2237 -0.1328 -0.07912
-2.01 -0.2692 0.321 -0.1328 -0.1288
-2.023 -0.2711 0.4155 -0.1328 -0.1782
-2.04 -0.2733 0.5063 -0.1328 -0.2272
-2.058 -0.2757 0.5926 -0.1328 -0.2756
-2.078 -0.2784 0.6735 -0.1328 -0.3233
-2.1 -0.2814 0.7481 -0.1328 -0.3702
-2.124 -0.2846 0.8156 -0.1328 -0.4161
-2.15 -0.288 0.8755 -0.1328 -0.4611
-2.177 -0.2917 0.9271 -0.1328 -0.5048
-2.206 -0.2956 0.9698 -0.1328 -0.5474
-2.237 -0.2997 1.003 -0.1328 -0.5885
-2.268 -0.3039 1.027 -0.1328 -0.6282
-2.302 -0.3084 1.041 -0.1328 -0.6663
-2.336 -0.3129 1.045 -0.1328 -0.7027
-2.371 -0.3177 1.039 -0.1328 -0.7374
-2.408 -0.3226 1.023 -0.1328 -0.7702
-2.445 -0.3276 0.9966 -0.1328 -0.8011
-2.483 -0.3327 0.9609 -0.1328 -0.8301
-2.522 -0.3379 0.9158 -0.1328 -0.8569
-2.562 -0.3432 0.8618 -0.1328 -0.8816
-2.602 -0.3486 0.7995 -0.1328 -0.9041
-2.643 -0.354 0.7294 -0.1328 -0.9243
-2.684 -0.3596 0.6522 -0.1328 -0.9422
-2.725 -0.3652 0.5686 -0.1328 -0.9578
-2.767 -0.3708 0.4795 -0.1328 -0.971
-2.81 -0.3764 0.3857 -0.1328 -0.9817
-2.852 -0.3821 0.2882 -0.1328 -0.99
-2.895 -0.3879 0.1878 -0.1328 -0.9958
-2.938 -0.3936 0.08567 -0.1328 -0.9991
-2.981 -0.3993 -0.01734 -0.1328 -1
-3.023 -0.4051 -0.1202 -0.1328 -0.9983
-3.066 -0.4108 -0.2218 -0.1328 -0.9941
-3.109 -0.4165 -0.3213 -0.1328 -0.9875
-3.151 -0.4222 -0.4177 -0.1328 -0.9784
-3.194 -0.4279 -0.51 -0.1328 -0.9668
-3.235 -0.4335 -0.5974 -0.1328 -0.9528
-3.277 -0.439 -0.6789 -0.1328 -0.9365
-3.318 -0.4446 -0.7538 -0.1328 -0.9178
-3.359 -0.45 -0.8214 -0.1328 -0.8968
-3.399 -0.4554 -0.8809 -0.1328 -0.8735
-3.438 -0.4606 -0.932 -0.1328 -0.8481
-3.477 -0.4658 -0.974 -0.1328 -0.8206
-3.515 -0.4709 -1.006 -0.1328 -0.791
-3.552 -0.4759 -1.029 -0.1328 -0.7594
-3.588 -0.4807 -1.042 -0.1328 -0.7259
-3.623 -0.4854 -1.045 -0.1328 -0.6907
-3.657 -0.4899 -1.038 -0.1328 -0.6536
-3.689 -0.4943 -1.02 -0.1328 -0.615
-3.721 -0.4985 -0.9931 -0.1328 -0.5748
-3.751 -0.5025 -0.9565 -0.1328 -0.5332
-3.779 -0.5063 -0.9107 -0.1328 -0.4903
-3.806 -0.5099 -0.8563 -0.1328 -0.4461
-3.831 -0.5133 -0.7937 -0.1328 -0.4008
-3.854 -0.5164 -0.7237 -0.1328 -0.3545
-3.876 -0.5193 -0.6469 -0.1328 -0.3073
-3.895 -0.5219 -0.5642 -0.1328 -0.2594
-3.913 -0.5243 -0.4763 -0.1328 -0.2108
-3.928 -0.5263 -0.3841 -0.1328 -0.1617
-3.941 -0.5281 -0.2885 -0.1328 -0.1122
-3.952 -0.5295 -0.1906 -0.1328 -0.06235
-3.961 -0.5306 -0.09126 -0.1328 -0.01239
-3.967 -0.5314 0.008488 -0.1328 0.0376
-3.97 -0.5319 0.1077 -0.1328 0.0875
-3.971 -0.532 0.2052 -0.1328 0.1372
-3.969 -0.5318 0.3003 -0.1328 0.1865
-3.965 -0.5312 0.3918 -0.1328 0.2354
-3.958 -0.5302 0.479 -0.1328 0.2837
-3.948 -0.5289 0.5609 -0.1328 0.3312
-3.935 -0.5272 0.6367 -0.1328 0.378
-3.92 -0.5252 0.7057 -0.1328 0.4238
-3.902 -0.5227 0.7672 -0.1328 0.4685
-3.881 -0.52 0.8206 -0.1328 0.5121
-3.857 -0.5168 0.8653 -0.1328 0.5544
-3.831 -0.5133 0.901 -0.1328 0.5953
-3.802 -0.5094 0.9273 -0.1328 0.6347
-3.771 -0.5052 0.944 -0.1328 0.6725
-3.737 -0.5007 0.9508 -0.1328 0.7087
-3.701 -0.4958 0.9478 -0.1328 0.743
-3.662 -0.4907 0.935 -0.1328 0.7756
-3.622 -0.4852 0.9125 -0.1328 0.8061
-3.579 -0.4795 0.8806 -0.1328 0.8347
-3.534 -0.4735 0.8397 -0.1328 0.8612
-3.487 -0.4672 0.7901 -0.1328 0.8855
-3.439 -0.4607 0.7324 -0.1328 0.9076
-3.389 -0.454 0.6671 -0.1328 0.9275
-3.338 -0.4472 0.595 -0.1328 0.945
-3.285 -0.4401 0.5168 -0.1328 0.9602
-3.232 -0.433 0.4333 -0.1328 0.9729
-3.177 -0.4257 0.3453 -0.1328 0.9833
-3.122 -0.4183 0.2538 -0.1328 0.9911
-3.067 -0.4108 0.1597 -0.1328 0.9965
-3.011 -0.4034 0.06397 -0.1328 0.9994
-2.99 -0.2493 0 -0.08309 1
-2.936 -0.2448 -0.09767 -0.08309 0.9988
-2.882 -0.2403 -0.1943 -0.08309 0.995
-2.829 -0.2358 -0.2891 -0.08309 0.9888
-2.776 -0.2314 -0.3808 -0.08309 0.9801
-2.723 -0.2271 -0.4687 -0.08309 0.9689
-2.672 -0.2228 -0.5519 -0.08309 0.9553
-2.622 -0.2186 -0.6294 -0.08309 0.9394
-2.572 -0.2145 -0.7005 -0.08309 0.9211
-2.524 -0.2105 -0.7646 -0.08309 0.9004
-2.477 -0.2066 -0.8208 -0.08309 0.8776
-2.432 -0.2028 -0.8687 -0.08309 0.8525
-2.389 -0.1992 -0.9078 -0.08309 0.8253
-2.347 -0.1957 -0.9376 -0.08309 0.7961
-2.307 -0.1924 -0.9578 -0.08309 0.7648
-2.27 -0.1892 -0.9683 -0.08309 0.7317
-2.234 -0.1863 -0.9689 -0.08309 0.6967
-2.2 -0.1835 -0.9596 -0.08309 0.66
-2.169 -0.1809 -0.9404 -0.08309 0.6216
-2.141 -0.1785 -0.9117 -0.08309 0.5817
-2.114 -0.1763 -0.8735 -0.08309 0.5403
-2.09 -0.1743 -0.8264 -0.08309 0.4976
-2.069 -0.1725 -0.7707 -0.08309 0.4536
-2.05 -0.1709 -0.7071 -0.08309 0.4085
-2.034 -0.1696 -0.6361 -0.08309 0.3624
-2.02 -0.1684 -0.5585 -0.08309 0.3153
-2.009 -0.1675 -0.475 -0.08309 0.2675
-2 -0.1668 -0.3864 -0.08309 0.219
-1.995 -0.1663 -0.2937 -0.08309 0.17
-1.991 -0.166 -0.1978 -0.08309 0.1205
-1.991 -0.166 -0.09952 -0.08309 0.07074
-1.992 -0.1661 2.697e-05 -0.08309 0.02079
-1.997 -0.1665 0.09989 -0.08309 -0.0292
-2.004 -0.1671 0.1991 -0.08309 -0.07912
-2.013 -0.1678 0.2966 -0.08309 -0.1288
-2.024 -0.1688 0.3914 -0.08309 -0.1782
-2.038 -0.17 0.4826 -0.08309 -0.2272
-2.054 -0.1713 0.5693 -0.08309 -0.2756
-2.073 -0.1728 0.6507 -0.08309 -0.3233
-2.093 -0.1745 0.7258 -0.08309 -0.3702
-2.116 -0.1764 0.794 -0.08309 -0.4161
-2.14 -0.1784 0.8545 -0.08309 -0.4611
-2.166 -0.1806 0.9067 -0.08309 -0.5048
-2.194 -0.183 0.9502 -0.08309 -0.5474
-2.224 -0.1854 0.9844 -0.08309 -0.5885
-2.255 -0.1881 1.009 -0.08309 -0.6282
-2.288 -0.1908 1.024 -0.08309 -0.6663
-2.323 -0.1937 1.029 -0.08309 -0.7027
-2.358 -0.1966 1.023 -0.08309 -0.7374
-2.395 -0.1997 1.008 -0.08309 -0.7702
-2.433 -0.2029 0.983 -0.08309 -0.8011
-2.473 -0.2062 0.9482 -0.08309 -0.8301
-2.513 -0.2095 0.9041 -0.08309 -0.8569
-2.554 -0.213 0.8512 -0.08309 -0.8816
-2.596 -0.2165 0.7899 -0.08309 -0.9041
-2.639 -0.22 0.7208 -0.08309 -0.9243
-2.682 -0.2236 0.6446 -0.08309 -0.9422
-2.726 -0.2273 0.5622 -0.08309 -0.9578
-2.771 -0.231 0.4741 -0.08309 -0.971
-2.816 -0.2348 0.3815 -0.08309 -0.9817
-2.861 -0.2385 0.285 -0.08309 -0.99
-2.906 -0.2423 0.1858 -0.08309 -0.9958
-2.952 -0.2461 0.08475 -0.08309 -0.9991
-2.997 -0.2499 -0.01715 -0.08309 -1
-3.043 -0.2537 -0.1189 -0.08309 -0.9983
-3.088 -0.2575 -0.2194 -0.08309 -0.9941
-3.134 -0.2613 -0.3178 -0.08309 -0.9875
-3.179 -0.265 -0.4131 -0.08309 -0.9784
-3.224 -0.2688 -0.5043 -0.08309 -0.9668
-3.268 -0.2725 -0.5906 -0.08309 -0.9528
-3.312 -0.2761 -0.671 -0.08309 -0.9365
-3.355 -0.2797 -0.7449 -0.08309 -0.9178
-3.397 -0.2833 -0.8114 -0.08309 -0.8968
-3.439 -0.2867 -0.8699 -0.08309 -0.8735
-3.48 -0.2901 -0.92 -0.08309 -0.8481
-3.52 -0.2935 -0.961 -0.08309 -0.8206
-3.559 -0.2967 -0.9925 -0.08309 -0.791
-3.596 -0.2999 -1.014 -0.08309 -0.7594
-3.633 -0.3029 -1.026 -0.08309 -0.7259
-3.668 -0.3059 -1.028 -0.08309 -0.6907
-3.702 -0.3087 -1.02 -0.08309 -0.6536
-3.735 -0.3114 -1.002 -0.08309 -0.615
-3.765 -0.3139 -0.9739 -0.08309 -0.5748
-3.795 -0.3164 -0.9366 -0.08309 -0.5332
-3.822 -0.3187 -0.8901 -0.08309 -0.4903
-3.848 -0.3208 -0.835 -0.08309 -0.4461
-3.871 -0.3228 -0.7719 -0.08309 -0.4008
-3.893 -0.3246 -0.7013 -0.08309 -0.3545
-3.913 -0.3262 -0.624 -0.08309 -0.3073
-3.93 -0.3277 -0.5407 -0.08309 -0.2594
-3.946 -0.329 -0.4524 -0.08309 -0.2108
-3.959 -0.3301 -0.3599 -0.08309 -0.1617
-3.97 -0.331 -0.264 -0.08309 -0.1122
-3.978 -0.3317 -0.1658 -0.08309 -0.06235
-3.984 -0.3322 -0.06633 -0.08309 -0.01239
-3.988 -0.3325 0.03353 -0.08309 0.0376
-3.989 -0.3326 0.1328 -0.08309 0.0875
-3.987 -0.3324 0.2303 -0.08309 0.1372
-3.983 -0.3321 0.3253 -0.08309 0.1865
-3.976 -0.3315 0.4167 -0.08309 0.2354
-3.967 -0.3308 0.5037 -0.08309 0.2837
-3.955 -0.3298 0.5853 -0.08309 0.3312
-3.94 -0.3285 0.6608 -0.08309 0.378
-3.923 -0.3271 0.7294 -0.08309 0.4238
-3.904 -0.3255 0.7904 -0.08309 0.4685
-3.881 -0.3236 0.8432 -0.08309 0.5121
-3.857 -0.3215 0.8874 -0.08309 0.5544
-3.829 -0.3193 0.9224 -0.08309 0.5953
-3.8 -0.3168 0.948 -0.08309 0.6347
-3.768 -0.3141 0.9638 -0.08309 0.6725
-3.734 -0.3113 0.9698 -0.08309 0.7087
-3.697 -0.3083 0.9659 -0.08309 0.743
-3.659 -0.3051 0.9521 -0.08309 0.7756
-3.618 -0.3017 0.9286 -0.08309 0.8061
-3.576 -0.2982 0.8956 -0.08309 0.8347
-3.532 -0.2945 0.8536 -0.08309 0.8612
-3.486 -0.2907 0.8028 -0.08309 0.8855
-3.439 -0.2867 0.7439 -0.08309 0.9076
-3.391 -0.2827 0.6774 -0.08309 0.9275
-3.341 -0.2786 0.604 -0.08309 0.945
-3.29 -0.2743 0.5245 -0.08309 0.9602
-3.238 -0.27 0.4397 -0.08309 0.9729
-3.186 -0.2656 0.3503 -0.08309 0.9833
-3.133 -0.2612 0.2575 -0.08309 0.9911
-3.079 -0.2567 0.162 -0.08309 0.9965
-3.025 -0.2523 0.06488 -0.08309 0.9994
-2.998 -0.09954 0 -0.03318 1
-2.947 -0.09782 -0.09899 -0.03318 0.9988
-2.895 -0.09612 -0.197 -0.03318 0.995
-2.844 -0.09442 -0.293 -0.03318 0.9888
-2.793 -0.09273 -0.3861 -0.03318 0.9801
-2.743 -0.09107 -0.4753 -0.03318 0.9689
-2.694 -0.08942 -0.5597 -0.03318 0.9553
-2.645 -0.08781 -0.6384 -0.03318 0.9394
-2.597 -0.08622 -0.7108 -0.03318 0.9211
-2.551 -0.08468 -0.776 -0.03318 0.9004
-2.505 -0.08317 -0.8334 -0.03318 0.8776
-2.461 -0.08171 -0.8824 -0.03318 0.8525
-2.419 -0.08029 -0.9225 -0.03318 0.8253
-2.378 -0.07893 -0.9534 -0.03318 0.7961
-2.338 -0.07762 -0.9746 -0.03318 0.7648
-2.301 -0.07638 -0.986 -0.03318 0.7317
-2.265 -0.07519 -0.9875 -0.03318 0.6967
-2.231 -0.07407 -0.9791 -0.03318 0.66
-2.199 -0.07301 -0.9607 -0.03318 0.6216
-2.17 -0.07203 -0.9327 -0.03318 0.5817
-2.142 -0.07112 -0.8952 -0.03318 0.5403
-2.117 -0.07029 -0.8487 -0.03318 0.4976
-2.094 -0.06953 -0.7936 -0.03318 0.4536
-2.074 -0.06885 -0.7305 -0.03318 0.4085
-2.056 -0.06825 -0.6599 -0.03318 0.3624
-2.04 -0.06773 -0.5826 -0.03318 0.3153
-2.027 -0.06729 -0.4994 -0.03318 0.2675
-2.016 -0.06693 -0.4111 -0.03318 0.219
-2.008 -0.06666 -0.3186 -0.03318 0.17
-2.002 -0.06647 -0.2227 -0.03318 0.1205
-1.999 -0.06637 -0.1246 -0.03318 0.07074
-1.999 -0.06635 -0.02499 -0.03318 0.02079
-2 -0.06641 0.07495 -0.03318 -0.0292
-2.005 -0.06655 0.1743 -0.03318 -0.07912
-2.012 -0.06678 0.272 -0.03318 -0.1288
-2.021 -0.06709 0.3671 -0.03318 -0.1782
-2.033 -0.06747 0.4586 -0.03318 -0.2272
-2.047 -0.06794 0.5457 -0.03318 -0.2756
-2.063 -0.06848 0.6275 -0.03318 -0.3233
-2.081 -0.0691 0.7031 -0.03318 -0.3702
-2.102 -0.06979 0.7718 -0.03318 -0.4161
-2.125 -0.07055 0.8329 -0.03318 -0.4611
-2.15 -0.07138 0.8858 -0.03318 -0.5048
-2.177 -0.07228 0.9299 -0.03318 -0.5474
-2.206 -0.07324 0.9649 -0.03318 -0.5885
-2.237 -0.07426 0.9903 -0.03318 -0.6282
-2.27 -0.07535 1.006 -0.03318 -0.6663
-2.304 -0.07649 1.012 -0.03318 -0.7027
-2.34 -0.07768 1.007 -0.03318 -0.7374
-2.377 -0.07892 0.9929 -0.03318 -0.7702
-2.416 -0.08021 0.9687 -0.03318 -0.8011
-2.456 -0.08155 0.9349 -0.03318 -0.8301
-2.498 -0.08292 0.8919 -0.03318 -0.8569
-2.54 -0.08434 0.84 -0.03318 -0.8816
-2.584 -0.08578 0.7797 -0.03318 -0.9041
-2.629 -0.08726 0.7118 -0.03318 -0.9243
-2.674 -0.08877 0.6367 -0.03318 -0.9422
-2.72 -0.0903 0.5554 -0.03318 -0.9578
-2.767 -0.09186 0.4685 -0.03318 -0.971
-2.814 -0.09343 0.377 -0.03318 -0.9817
-2.862 -0.09501 0.2817 -0.03318 -0.99
-2.91 -0.0966 0.1837 -0.03318 -0.9958
-2.958 -0.0982 0.08377 -0.03318 -0.9991
-3.006 -0.09981 -0.01695 -0.03318 -1
-3.055 -0.1014 -0.1175 -0.03318 -0.9983
-3.103 -0.103 -0.2169 -0.03318 -0.9941
-3.151 -0.1046 -0.3141 -0.03318 -0.9875
-3.198 -0.1062 -0.4082 -0.03318 -0.9784
-3.246 -0.1077 -0.4983 -0.03318 -0.9668
-3.292 -0.1093 -0.5834 -0.03318 -0.9528
-3.338 -0.1108 -0.6627 -0.03318 -0.9365
-3.383 -0.1123 -0.7355 -0.03318 -0.9178
-3.427 -0.1138 -0.8009 -0.03318 -0.8968
-3.471 -0.1152 -0.8584 -0.03318 -0.8735
-3.513 -0.1166 -0.9074 -0.03318 -0.8481
-3.554 -0.118 -0.9474 -0.03318 -0.8206
-3.594 -0.1193 -0.9779 -0.03318 -0.791
-3.632 -0.1206 -0.9988 -0.03318 -0.7594
-3.669 -0.1218 -1.01 -0.03318 -0.7259
-3.704 -0.123 -1.011 -0.03318 -0.6907
-3.738 -0.1241 -1.002 -0.03318 -0.6536
-3.77 -0.1252 -0.9828 -0.03318 -0.615
-3.8 -0.1262 -0.9542 -0.03318 -0.5748
-3.829 -0.1271 -0.9161 -0.03318 -0.5332
-3.855 -0.128 -0.8689 -0.03318 -0.4903
-3.879 -0.1288 -0.8132 -0.03318 -0.4461
-3.902 -0.1295 -0.7495 -0.03318 -0.4008
-3.922 -0.1302 -0.6784 -0.03318 -0.3545
-3.94 -0.1308 -0.6006 -0.03318 -0.3073
-3.955 -0.1313 -0.517 -0.03318 -0.2594
-3.968 -0.1317 -0.4283 -0.03318 -0.2108
-3.979 -0.1321 -0.3354 -0.03318 -0.1617
-3.988 -0.1324 -0.2393 -0.03318 -0.1122
-3.994 -0.1326 -0.141 -0.03318 -0.06235
-3.997 -0.1327 -0.04136 -0.03318 -0.01239
-3.998 -0.1327 0.05856 -0.03318 0.0376
-3.997 -0.1327 0.1578 -0.03318 0.0875
-3.993 -0.1325 0.2553 -0.03318 0.1372
-3.986 -0.1323 0.3501 -0.03318 0.1865
-3.977 -0.132 0.4413 -0.03318 0.2354
-3.966 -0.1316 0.528 -0.03318 0.2837
-3.952 -0.1312 0.6093 -0.03318 0.3312
-3.935 -0.1306 0.6844 -0.03318 0.378
-3.916 -0.13 0.7526 -0.03318 0.4238
-3.895 -0.1293 0.8131 -0.03318 0.4685
-3.871 -0.1285 0.8653 -0.03318 0.5121
-3.845 -0.1277 0.9088 -0.03318 0.5544
-3.817 -0.1267 0.9432 -0.03318 0.5953
-3.787 -0.1257 0.968 -0.03318 0.6347
-3.754 -0.1246 0.983 -0.03318 0.6725
-3.72 -0.1235 0.9881 -0.03318 0.7087
-3.684 -0.1223 0.9833 -0.03318 0.743
-3.645 -0.121 0.9686 -0.03318 0.7756
-3.605 -0.1197 0.9441 -0.03318 0.8061
-3.564 -0.1183 0.9101 -0.03318 0.8347
-3.521 -0.1169 0.8669 -0.03318 0.8612
-3.476 -0.1154 0.815 -0.03318 0.8855
-3.43 -0.1139 0.7549 -0.03318 0.9076
-3.383 -0.1123 0.6872 -0.03318 0.9275
-3.335 -0.1107 0.6126 -0.03318 0.945
-3.286 -0.1091 0.5319 -0.03318 0.9602
-3.237 -0.1075 0.4458 -0.03318 0.9729
-3.186 -0.1058 0.3552 -0.03318 0.9833
-3.135 -0.1041 0.261 -0.03318 0.9911
-3.084 -0.1024 0.1642 -0.03318 0.9965
-3.033 -0.1007 0.06576 -0.03318 0.9994
diff --git a/data/points/alphacomplexdoc.off b/data/points/alphacomplexdoc.off
deleted file mode 100644
index bb790193..00000000
--- a/data/points/alphacomplexdoc.off
+++ /dev/null
@@ -1,10 +0,0 @@
-nOFF
-2 7 0 0
-1.0 1.0
-7.0 0.0
-4.0 6.0
-9.0 6.0
-0.0 14.0
-2.0 19.0
-9.0 17.0
-
diff --git a/data/points/generator/README b/data/points/generator/README
deleted file mode 100644
index 3183a51f..00000000
--- a/data/points/generator/README
+++ /dev/null
@@ -1,15 +0,0 @@
-===================== aurelien_alvarez_surfaces_in_R8 ==========================
-
-This generator is written in Python.
-
-This code generates points on a family of surfaces living in CP^2. You can move
-in the family thanks to the parameter "degre". The parameter "nombrePoints"
-allows to choose the number of points on the chosen surface. Finally, to compute
-the points, we choose a chart in C^2 and take points randomly in the x-variable,
-so that you may also modify the window for x in the complex plane (parameter
-"module_x").
-
-After that, the program computes points in C^2, then maps them in R^8, so that
-the points live on a surface which is compact (which is not the case for the
-intersection of the surface with C^2). We end off with a bunch of points on a
-compact surface in R^8.
diff --git a/data/points/generator/aurelien_alvarez_surfaces_in_R8.py b/data/points/generator/aurelien_alvarez_surfaces_in_R8.py
deleted file mode 100755
index 57773c4c..00000000
--- a/data/points/generator/aurelien_alvarez_surfaces_in_R8.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# This file is part of the Gudhi Library. The Gudhi library
-# (Geometric Understanding in Higher Dimensions) is a generic C++
-# library for computational topology.
-#
-# Author(s): Aurélien Alvarez
-#
-# Copyright (C) 2016 Université d'Orléans (France)
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-import numpy as np
-import random
-from math import factorial
-
-I = complex(0,1)
-
-#################################################
-#################################################
-
-#Surface réelle d'équation x.conj(y)^d + y.conj(z)^d + z.conj(x)^d = 0 dans P2(C)
-#Équation affine (z=1) multipliée par sa conjuguée (d = 2) : x.conj(x)^2.y^4 + 2x^3.conj(x).y^2 + y + conj(x)^2 + x^5 = 0
-def equationAffineSurfaceReelle(x):
- polynome = [0]*(degre**2+1)
- for k in range(degre+1):
- polynome[k*degre] = (-1)**degre*x*factorial(degre)/(factorial(k)*factorial(degre-k))*x**(k*degre)*np.conjugate(x)**(degre-k)
- polynome[-2] += 1
- polynome[-1] += np.conjugate(x)**degre
- return polynome
-
-#################################################
-#################################################
-
-def calculRacines(equation,nombrePoints,module_x):
- racines = [[1,0,0],[0,1,0],[0,0,1]]
- for _ in range(nombrePoints):
- x = module_x*(2*random.random()-1+I*(2*random.random()-1))
- fool = [[[x,y,1],[y,1,x],[1,x,y]] for y in np.roots(equation(x)) if abs(x*np.conjugate(y)**degre+y+np.conjugate(x)**degre) < 0.0001]
- for bar in fool:
- racines += bar
- return racines
-
-#################################################
-#################################################
-
-def plongementDansR8(pointDansCP2):
- z0 = pointDansCP2[0]
- z1 = pointDansCP2[1]
- z2 = pointDansCP2[2]
- a = z0*np.conjugate(z0)
- b = z1*np.conjugate(z1)
- c = z2*np.conjugate(z2)
- normeCarree = a+b+c
- a = a/normeCarree
- b = b/normeCarree
- u = z0*np.conjugate(z1)/normeCarree
- v = z0*np.conjugate(z2)/normeCarree
- w = z1*np.conjugate(z2)/normeCarree
- return [a.real,b.real,u.real,u.imag,v.real,v.imag,w.real,w.imag]
-
-def plongementListeDansR8(listePointsDansCP2):
- listePointsDansR8 = []
- for point in listePointsDansCP2:
- listePointsDansR8 += [plongementDansR8(point)]
- return listePointsDansR8
-
-#################################################
-#################################################
-
-degre = 3
-nombrePoints = 10**4
-module_x = 10
-
-with open("surface.txt","w") as fichier:
- bar = calculRacines(equationAffineSurfaceReelle,nombrePoints,module_x)
- listePoints = plongementListeDansR8(bar)
- fichier.write(str(len(bar)) + "\n")
- for point in listePoints:
- fichier.write(str(point[0]) + " " + str(point[1]) + " " + str(point[2]) + " " + str(point[3]) + " " + str(point[4]) + " " + str(point[5]) + " " + str(point[6]) + " " + str(point[7]) + "\n")
-
diff --git a/data/points/grid_10_10_10_in_0_1.off b/data/points/grid_10_10_10_in_0_1.off
deleted file mode 100644
index ea86cf1b..00000000
--- a/data/points/grid_10_10_10_in_0_1.off
+++ /dev/null
@@ -1,1002 +0,0 @@
-OFF
-1000 0 0
-0 0 0
-0 0 0.1
-0 0 0.2
-0 0 0.3
-0 0 0.4
-0 0 0.5
-0 0 0.6
-0 0 0.7
-0 0 0.8
-0 0 0.9
-0 0.1 0
-0 0.1 0.1
-0 0.1 0.2
-0 0.1 0.3
-0 0.1 0.4
-0 0.1 0.5
-0 0.1 0.6
-0 0.1 0.7
-0 0.1 0.8
-0 0.1 0.9
-0 0.2 0
-0 0.2 0.1
-0 0.2 0.2
-0 0.2 0.3
-0 0.2 0.4
-0 0.2 0.5
-0 0.2 0.6
-0 0.2 0.7
-0 0.2 0.8
-0 0.2 0.9
-0 0.3 0
-0 0.3 0.1
-0 0.3 0.2
-0 0.3 0.3
-0 0.3 0.4
-0 0.3 0.5
-0 0.3 0.6
-0 0.3 0.7
-0 0.3 0.8
-0 0.3 0.9
-0 0.4 0
-0 0.4 0.1
-0 0.4 0.2
-0 0.4 0.3
-0 0.4 0.4
-0 0.4 0.5
-0 0.4 0.6
-0 0.4 0.7
-0 0.4 0.8
-0 0.4 0.9
-0 0.5 0
-0 0.5 0.1
-0 0.5 0.2
-0 0.5 0.3
-0 0.5 0.4
-0 0.5 0.5
-0 0.5 0.6
-0 0.5 0.7
-0 0.5 0.8
-0 0.5 0.9
-0 0.6 0
-0 0.6 0.1
-0 0.6 0.2
-0 0.6 0.3
-0 0.6 0.4
-0 0.6 0.5
-0 0.6 0.6
-0 0.6 0.7
-0 0.6 0.8
-0 0.6 0.9
-0 0.7 0
-0 0.7 0.1
-0 0.7 0.2
-0 0.7 0.3
-0 0.7 0.4
-0 0.7 0.5
-0 0.7 0.6
-0 0.7 0.7
-0 0.7 0.8
-0 0.7 0.9
-0 0.8 0
-0 0.8 0.1
-0 0.8 0.2
-0 0.8 0.3
-0 0.8 0.4
-0 0.8 0.5
-0 0.8 0.6
-0 0.8 0.7
-0 0.8 0.8
-0 0.8 0.9
-0 0.9 0
-0 0.9 0.1
-0 0.9 0.2
-0 0.9 0.3
-0 0.9 0.4
-0 0.9 0.5
-0 0.9 0.6
-0 0.9 0.7
-0 0.9 0.8
-0 0.9 0.9
-0.1 0 0
-0.1 0 0.1
-0.1 0 0.2
-0.1 0 0.3
-0.1 0 0.4
-0.1 0 0.5
-0.1 0 0.6
-0.1 0 0.7
-0.1 0 0.8
-0.1 0 0.9
-0.1 0.1 0
-0.1 0.1 0.1
-0.1 0.1 0.2
-0.1 0.1 0.3
-0.1 0.1 0.4
-0.1 0.1 0.5
-0.1 0.1 0.6
-0.1 0.1 0.7
-0.1 0.1 0.8
-0.1 0.1 0.9
-0.1 0.2 0
-0.1 0.2 0.1
-0.1 0.2 0.2
-0.1 0.2 0.3
-0.1 0.2 0.4
-0.1 0.2 0.5
-0.1 0.2 0.6
-0.1 0.2 0.7
-0.1 0.2 0.8
-0.1 0.2 0.9
-0.1 0.3 0
-0.1 0.3 0.1
-0.1 0.3 0.2
-0.1 0.3 0.3
-0.1 0.3 0.4
-0.1 0.3 0.5
-0.1 0.3 0.6
-0.1 0.3 0.7
-0.1 0.3 0.8
-0.1 0.3 0.9
-0.1 0.4 0
-0.1 0.4 0.1
-0.1 0.4 0.2
-0.1 0.4 0.3
-0.1 0.4 0.4
-0.1 0.4 0.5
-0.1 0.4 0.6
-0.1 0.4 0.7
-0.1 0.4 0.8
-0.1 0.4 0.9
-0.1 0.5 0
-0.1 0.5 0.1
-0.1 0.5 0.2
-0.1 0.5 0.3
-0.1 0.5 0.4
-0.1 0.5 0.5
-0.1 0.5 0.6
-0.1 0.5 0.7
-0.1 0.5 0.8
-0.1 0.5 0.9
-0.1 0.6 0
-0.1 0.6 0.1
-0.1 0.6 0.2
-0.1 0.6 0.3
-0.1 0.6 0.4
-0.1 0.6 0.5
-0.1 0.6 0.6
-0.1 0.6 0.7
-0.1 0.6 0.8
-0.1 0.6 0.9
-0.1 0.7 0
-0.1 0.7 0.1
-0.1 0.7 0.2
-0.1 0.7 0.3
-0.1 0.7 0.4
-0.1 0.7 0.5
-0.1 0.7 0.6
-0.1 0.7 0.7
-0.1 0.7 0.8
-0.1 0.7 0.9
-0.1 0.8 0
-0.1 0.8 0.1
-0.1 0.8 0.2
-0.1 0.8 0.3
-0.1 0.8 0.4
-0.1 0.8 0.5
-0.1 0.8 0.6
-0.1 0.8 0.7
-0.1 0.8 0.8
-0.1 0.8 0.9
-0.1 0.9 0
-0.1 0.9 0.1
-0.1 0.9 0.2
-0.1 0.9 0.3
-0.1 0.9 0.4
-0.1 0.9 0.5
-0.1 0.9 0.6
-0.1 0.9 0.7
-0.1 0.9 0.8
-0.1 0.9 0.9
-0.2 0 0
-0.2 0 0.1
-0.2 0 0.2
-0.2 0 0.3
-0.2 0 0.4
-0.2 0 0.5
-0.2 0 0.6
-0.2 0 0.7
-0.2 0 0.8
-0.2 0 0.9
-0.2 0.1 0
-0.2 0.1 0.1
-0.2 0.1 0.2
-0.2 0.1 0.3
-0.2 0.1 0.4
-0.2 0.1 0.5
-0.2 0.1 0.6
-0.2 0.1 0.7
-0.2 0.1 0.8
-0.2 0.1 0.9
-0.2 0.2 0
-0.2 0.2 0.1
-0.2 0.2 0.2
-0.2 0.2 0.3
-0.2 0.2 0.4
-0.2 0.2 0.5
-0.2 0.2 0.6
-0.2 0.2 0.7
-0.2 0.2 0.8
-0.2 0.2 0.9
-0.2 0.3 0
-0.2 0.3 0.1
-0.2 0.3 0.2
-0.2 0.3 0.3
-0.2 0.3 0.4
-0.2 0.3 0.5
-0.2 0.3 0.6
-0.2 0.3 0.7
-0.2 0.3 0.8
-0.2 0.3 0.9
-0.2 0.4 0
-0.2 0.4 0.1
-0.2 0.4 0.2
-0.2 0.4 0.3
-0.2 0.4 0.4
-0.2 0.4 0.5
-0.2 0.4 0.6
-0.2 0.4 0.7
-0.2 0.4 0.8
-0.2 0.4 0.9
-0.2 0.5 0
-0.2 0.5 0.1
-0.2 0.5 0.2
-0.2 0.5 0.3
-0.2 0.5 0.4
-0.2 0.5 0.5
-0.2 0.5 0.6
-0.2 0.5 0.7
-0.2 0.5 0.8
-0.2 0.5 0.9
-0.2 0.6 0
-0.2 0.6 0.1
-0.2 0.6 0.2
-0.2 0.6 0.3
-0.2 0.6 0.4
-0.2 0.6 0.5
-0.2 0.6 0.6
-0.2 0.6 0.7
-0.2 0.6 0.8
-0.2 0.6 0.9
-0.2 0.7 0
-0.2 0.7 0.1
-0.2 0.7 0.2
-0.2 0.7 0.3
-0.2 0.7 0.4
-0.2 0.7 0.5
-0.2 0.7 0.6
-0.2 0.7 0.7
-0.2 0.7 0.8
-0.2 0.7 0.9
-0.2 0.8 0
-0.2 0.8 0.1
-0.2 0.8 0.2
-0.2 0.8 0.3
-0.2 0.8 0.4
-0.2 0.8 0.5
-0.2 0.8 0.6
-0.2 0.8 0.7
-0.2 0.8 0.8
-0.2 0.8 0.9
-0.2 0.9 0
-0.2 0.9 0.1
-0.2 0.9 0.2
-0.2 0.9 0.3
-0.2 0.9 0.4
-0.2 0.9 0.5
-0.2 0.9 0.6
-0.2 0.9 0.7
-0.2 0.9 0.8
-0.2 0.9 0.9
-0.3 0 0
-0.3 0 0.1
-0.3 0 0.2
-0.3 0 0.3
-0.3 0 0.4
-0.3 0 0.5
-0.3 0 0.6
-0.3 0 0.7
-0.3 0 0.8
-0.3 0 0.9
-0.3 0.1 0
-0.3 0.1 0.1
-0.3 0.1 0.2
-0.3 0.1 0.3
-0.3 0.1 0.4
-0.3 0.1 0.5
-0.3 0.1 0.6
-0.3 0.1 0.7
-0.3 0.1 0.8
-0.3 0.1 0.9
-0.3 0.2 0
-0.3 0.2 0.1
-0.3 0.2 0.2
-0.3 0.2 0.3
-0.3 0.2 0.4
-0.3 0.2 0.5
-0.3 0.2 0.6
-0.3 0.2 0.7
-0.3 0.2 0.8
-0.3 0.2 0.9
-0.3 0.3 0
-0.3 0.3 0.1
-0.3 0.3 0.2
-0.3 0.3 0.3
-0.3 0.3 0.4
-0.3 0.3 0.5
-0.3 0.3 0.6
-0.3 0.3 0.7
-0.3 0.3 0.8
-0.3 0.3 0.9
-0.3 0.4 0
-0.3 0.4 0.1
-0.3 0.4 0.2
-0.3 0.4 0.3
-0.3 0.4 0.4
-0.3 0.4 0.5
-0.3 0.4 0.6
-0.3 0.4 0.7
-0.3 0.4 0.8
-0.3 0.4 0.9
-0.3 0.5 0
-0.3 0.5 0.1
-0.3 0.5 0.2
-0.3 0.5 0.3
-0.3 0.5 0.4
-0.3 0.5 0.5
-0.3 0.5 0.6
-0.3 0.5 0.7
-0.3 0.5 0.8
-0.3 0.5 0.9
-0.3 0.6 0
-0.3 0.6 0.1
-0.3 0.6 0.2
-0.3 0.6 0.3
-0.3 0.6 0.4
-0.3 0.6 0.5
-0.3 0.6 0.6
-0.3 0.6 0.7
-0.3 0.6 0.8
-0.3 0.6 0.9
-0.3 0.7 0
-0.3 0.7 0.1
-0.3 0.7 0.2
-0.3 0.7 0.3
-0.3 0.7 0.4
-0.3 0.7 0.5
-0.3 0.7 0.6
-0.3 0.7 0.7
-0.3 0.7 0.8
-0.3 0.7 0.9
-0.3 0.8 0
-0.3 0.8 0.1
-0.3 0.8 0.2
-0.3 0.8 0.3
-0.3 0.8 0.4
-0.3 0.8 0.5
-0.3 0.8 0.6
-0.3 0.8 0.7
-0.3 0.8 0.8
-0.3 0.8 0.9
-0.3 0.9 0
-0.3 0.9 0.1
-0.3 0.9 0.2
-0.3 0.9 0.3
-0.3 0.9 0.4
-0.3 0.9 0.5
-0.3 0.9 0.6
-0.3 0.9 0.7
-0.3 0.9 0.8
-0.3 0.9 0.9
-0.4 0 0
-0.4 0 0.1
-0.4 0 0.2
-0.4 0 0.3
-0.4 0 0.4
-0.4 0 0.5
-0.4 0 0.6
-0.4 0 0.7
-0.4 0 0.8
-0.4 0 0.9
-0.4 0.1 0
-0.4 0.1 0.1
-0.4 0.1 0.2
-0.4 0.1 0.3
-0.4 0.1 0.4
-0.4 0.1 0.5
-0.4 0.1 0.6
-0.4 0.1 0.7
-0.4 0.1 0.8
-0.4 0.1 0.9
-0.4 0.2 0
-0.4 0.2 0.1
-0.4 0.2 0.2
-0.4 0.2 0.3
-0.4 0.2 0.4
-0.4 0.2 0.5
-0.4 0.2 0.6
-0.4 0.2 0.7
-0.4 0.2 0.8
-0.4 0.2 0.9
-0.4 0.3 0
-0.4 0.3 0.1
-0.4 0.3 0.2
-0.4 0.3 0.3
-0.4 0.3 0.4
-0.4 0.3 0.5
-0.4 0.3 0.6
-0.4 0.3 0.7
-0.4 0.3 0.8
-0.4 0.3 0.9
-0.4 0.4 0
-0.4 0.4 0.1
-0.4 0.4 0.2
-0.4 0.4 0.3
-0.4 0.4 0.4
-0.4 0.4 0.5
-0.4 0.4 0.6
-0.4 0.4 0.7
-0.4 0.4 0.8
-0.4 0.4 0.9
-0.4 0.5 0
-0.4 0.5 0.1
-0.4 0.5 0.2
-0.4 0.5 0.3
-0.4 0.5 0.4
-0.4 0.5 0.5
-0.4 0.5 0.6
-0.4 0.5 0.7
-0.4 0.5 0.8
-0.4 0.5 0.9
-0.4 0.6 0
-0.4 0.6 0.1
-0.4 0.6 0.2
-0.4 0.6 0.3
-0.4 0.6 0.4
-0.4 0.6 0.5
-0.4 0.6 0.6
-0.4 0.6 0.7
-0.4 0.6 0.8
-0.4 0.6 0.9
-0.4 0.7 0
-0.4 0.7 0.1
-0.4 0.7 0.2
-0.4 0.7 0.3
-0.4 0.7 0.4
-0.4 0.7 0.5
-0.4 0.7 0.6
-0.4 0.7 0.7
-0.4 0.7 0.8
-0.4 0.7 0.9
-0.4 0.8 0
-0.4 0.8 0.1
-0.4 0.8 0.2
-0.4 0.8 0.3
-0.4 0.8 0.4
-0.4 0.8 0.5
-0.4 0.8 0.6
-0.4 0.8 0.7
-0.4 0.8 0.8
-0.4 0.8 0.9
-0.4 0.9 0
-0.4 0.9 0.1
-0.4 0.9 0.2
-0.4 0.9 0.3
-0.4 0.9 0.4
-0.4 0.9 0.5
-0.4 0.9 0.6
-0.4 0.9 0.7
-0.4 0.9 0.8
-0.4 0.9 0.9
-0.5 0 0
-0.5 0 0.1
-0.5 0 0.2
-0.5 0 0.3
-0.5 0 0.4
-0.5 0 0.5
-0.5 0 0.6
-0.5 0 0.7
-0.5 0 0.8
-0.5 0 0.9
-0.5 0.1 0
-0.5 0.1 0.1
-0.5 0.1 0.2
-0.5 0.1 0.3
-0.5 0.1 0.4
-0.5 0.1 0.5
-0.5 0.1 0.6
-0.5 0.1 0.7
-0.5 0.1 0.8
-0.5 0.1 0.9
-0.5 0.2 0
-0.5 0.2 0.1
-0.5 0.2 0.2
-0.5 0.2 0.3
-0.5 0.2 0.4
-0.5 0.2 0.5
-0.5 0.2 0.6
-0.5 0.2 0.7
-0.5 0.2 0.8
-0.5 0.2 0.9
-0.5 0.3 0
-0.5 0.3 0.1
-0.5 0.3 0.2
-0.5 0.3 0.3
-0.5 0.3 0.4
-0.5 0.3 0.5
-0.5 0.3 0.6
-0.5 0.3 0.7
-0.5 0.3 0.8
-0.5 0.3 0.9
-0.5 0.4 0
-0.5 0.4 0.1
-0.5 0.4 0.2
-0.5 0.4 0.3
-0.5 0.4 0.4
-0.5 0.4 0.5
-0.5 0.4 0.6
-0.5 0.4 0.7
-0.5 0.4 0.8
-0.5 0.4 0.9
-0.5 0.5 0
-0.5 0.5 0.1
-0.5 0.5 0.2
-0.5 0.5 0.3
-0.5 0.5 0.4
-0.5 0.5 0.5
-0.5 0.5 0.6
-0.5 0.5 0.7
-0.5 0.5 0.8
-0.5 0.5 0.9
-0.5 0.6 0
-0.5 0.6 0.1
-0.5 0.6 0.2
-0.5 0.6 0.3
-0.5 0.6 0.4
-0.5 0.6 0.5
-0.5 0.6 0.6
-0.5 0.6 0.7
-0.5 0.6 0.8
-0.5 0.6 0.9
-0.5 0.7 0
-0.5 0.7 0.1
-0.5 0.7 0.2
-0.5 0.7 0.3
-0.5 0.7 0.4
-0.5 0.7 0.5
-0.5 0.7 0.6
-0.5 0.7 0.7
-0.5 0.7 0.8
-0.5 0.7 0.9
-0.5 0.8 0
-0.5 0.8 0.1
-0.5 0.8 0.2
-0.5 0.8 0.3
-0.5 0.8 0.4
-0.5 0.8 0.5
-0.5 0.8 0.6
-0.5 0.8 0.7
-0.5 0.8 0.8
-0.5 0.8 0.9
-0.5 0.9 0
-0.5 0.9 0.1
-0.5 0.9 0.2
-0.5 0.9 0.3
-0.5 0.9 0.4
-0.5 0.9 0.5
-0.5 0.9 0.6
-0.5 0.9 0.7
-0.5 0.9 0.8
-0.5 0.9 0.9
-0.6 0 0
-0.6 0 0.1
-0.6 0 0.2
-0.6 0 0.3
-0.6 0 0.4
-0.6 0 0.5
-0.6 0 0.6
-0.6 0 0.7
-0.6 0 0.8
-0.6 0 0.9
-0.6 0.1 0
-0.6 0.1 0.1
-0.6 0.1 0.2
-0.6 0.1 0.3
-0.6 0.1 0.4
-0.6 0.1 0.5
-0.6 0.1 0.6
-0.6 0.1 0.7
-0.6 0.1 0.8
-0.6 0.1 0.9
-0.6 0.2 0
-0.6 0.2 0.1
-0.6 0.2 0.2
-0.6 0.2 0.3
-0.6 0.2 0.4
-0.6 0.2 0.5
-0.6 0.2 0.6
-0.6 0.2 0.7
-0.6 0.2 0.8
-0.6 0.2 0.9
-0.6 0.3 0
-0.6 0.3 0.1
-0.6 0.3 0.2
-0.6 0.3 0.3
-0.6 0.3 0.4
-0.6 0.3 0.5
-0.6 0.3 0.6
-0.6 0.3 0.7
-0.6 0.3 0.8
-0.6 0.3 0.9
-0.6 0.4 0
-0.6 0.4 0.1
-0.6 0.4 0.2
-0.6 0.4 0.3
-0.6 0.4 0.4
-0.6 0.4 0.5
-0.6 0.4 0.6
-0.6 0.4 0.7
-0.6 0.4 0.8
-0.6 0.4 0.9
-0.6 0.5 0
-0.6 0.5 0.1
-0.6 0.5 0.2
-0.6 0.5 0.3
-0.6 0.5 0.4
-0.6 0.5 0.5
-0.6 0.5 0.6
-0.6 0.5 0.7
-0.6 0.5 0.8
-0.6 0.5 0.9
-0.6 0.6 0
-0.6 0.6 0.1
-0.6 0.6 0.2
-0.6 0.6 0.3
-0.6 0.6 0.4
-0.6 0.6 0.5
-0.6 0.6 0.6
-0.6 0.6 0.7
-0.6 0.6 0.8
-0.6 0.6 0.9
-0.6 0.7 0
-0.6 0.7 0.1
-0.6 0.7 0.2
-0.6 0.7 0.3
-0.6 0.7 0.4
-0.6 0.7 0.5
-0.6 0.7 0.6
-0.6 0.7 0.7
-0.6 0.7 0.8
-0.6 0.7 0.9
-0.6 0.8 0
-0.6 0.8 0.1
-0.6 0.8 0.2
-0.6 0.8 0.3
-0.6 0.8 0.4
-0.6 0.8 0.5
-0.6 0.8 0.6
-0.6 0.8 0.7
-0.6 0.8 0.8
-0.6 0.8 0.9
-0.6 0.9 0
-0.6 0.9 0.1
-0.6 0.9 0.2
-0.6 0.9 0.3
-0.6 0.9 0.4
-0.6 0.9 0.5
-0.6 0.9 0.6
-0.6 0.9 0.7
-0.6 0.9 0.8
-0.6 0.9 0.9
-0.7 0 0
-0.7 0 0.1
-0.7 0 0.2
-0.7 0 0.3
-0.7 0 0.4
-0.7 0 0.5
-0.7 0 0.6
-0.7 0 0.7
-0.7 0 0.8
-0.7 0 0.9
-0.7 0.1 0
-0.7 0.1 0.1
-0.7 0.1 0.2
-0.7 0.1 0.3
-0.7 0.1 0.4
-0.7 0.1 0.5
-0.7 0.1 0.6
-0.7 0.1 0.7
-0.7 0.1 0.8
-0.7 0.1 0.9
-0.7 0.2 0
-0.7 0.2 0.1
-0.7 0.2 0.2
-0.7 0.2 0.3
-0.7 0.2 0.4
-0.7 0.2 0.5
-0.7 0.2 0.6
-0.7 0.2 0.7
-0.7 0.2 0.8
-0.7 0.2 0.9
-0.7 0.3 0
-0.7 0.3 0.1
-0.7 0.3 0.2
-0.7 0.3 0.3
-0.7 0.3 0.4
-0.7 0.3 0.5
-0.7 0.3 0.6
-0.7 0.3 0.7
-0.7 0.3 0.8
-0.7 0.3 0.9
-0.7 0.4 0
-0.7 0.4 0.1
-0.7 0.4 0.2
-0.7 0.4 0.3
-0.7 0.4 0.4
-0.7 0.4 0.5
-0.7 0.4 0.6
-0.7 0.4 0.7
-0.7 0.4 0.8
-0.7 0.4 0.9
-0.7 0.5 0
-0.7 0.5 0.1
-0.7 0.5 0.2
-0.7 0.5 0.3
-0.7 0.5 0.4
-0.7 0.5 0.5
-0.7 0.5 0.6
-0.7 0.5 0.7
-0.7 0.5 0.8
-0.7 0.5 0.9
-0.7 0.6 0
-0.7 0.6 0.1
-0.7 0.6 0.2
-0.7 0.6 0.3
-0.7 0.6 0.4
-0.7 0.6 0.5
-0.7 0.6 0.6
-0.7 0.6 0.7
-0.7 0.6 0.8
-0.7 0.6 0.9
-0.7 0.7 0
-0.7 0.7 0.1
-0.7 0.7 0.2
-0.7 0.7 0.3
-0.7 0.7 0.4
-0.7 0.7 0.5
-0.7 0.7 0.6
-0.7 0.7 0.7
-0.7 0.7 0.8
-0.7 0.7 0.9
-0.7 0.8 0
-0.7 0.8 0.1
-0.7 0.8 0.2
-0.7 0.8 0.3
-0.7 0.8 0.4
-0.7 0.8 0.5
-0.7 0.8 0.6
-0.7 0.8 0.7
-0.7 0.8 0.8
-0.7 0.8 0.9
-0.7 0.9 0
-0.7 0.9 0.1
-0.7 0.9 0.2
-0.7 0.9 0.3
-0.7 0.9 0.4
-0.7 0.9 0.5
-0.7 0.9 0.6
-0.7 0.9 0.7
-0.7 0.9 0.8
-0.7 0.9 0.9
-0.8 0 0
-0.8 0 0.1
-0.8 0 0.2
-0.8 0 0.3
-0.8 0 0.4
-0.8 0 0.5
-0.8 0 0.6
-0.8 0 0.7
-0.8 0 0.8
-0.8 0 0.9
-0.8 0.1 0
-0.8 0.1 0.1
-0.8 0.1 0.2
-0.8 0.1 0.3
-0.8 0.1 0.4
-0.8 0.1 0.5
-0.8 0.1 0.6
-0.8 0.1 0.7
-0.8 0.1 0.8
-0.8 0.1 0.9
-0.8 0.2 0
-0.8 0.2 0.1
-0.8 0.2 0.2
-0.8 0.2 0.3
-0.8 0.2 0.4
-0.8 0.2 0.5
-0.8 0.2 0.6
-0.8 0.2 0.7
-0.8 0.2 0.8
-0.8 0.2 0.9
-0.8 0.3 0
-0.8 0.3 0.1
-0.8 0.3 0.2
-0.8 0.3 0.3
-0.8 0.3 0.4
-0.8 0.3 0.5
-0.8 0.3 0.6
-0.8 0.3 0.7
-0.8 0.3 0.8
-0.8 0.3 0.9
-0.8 0.4 0
-0.8 0.4 0.1
-0.8 0.4 0.2
-0.8 0.4 0.3
-0.8 0.4 0.4
-0.8 0.4 0.5
-0.8 0.4 0.6
-0.8 0.4 0.7
-0.8 0.4 0.8
-0.8 0.4 0.9
-0.8 0.5 0
-0.8 0.5 0.1
-0.8 0.5 0.2
-0.8 0.5 0.3
-0.8 0.5 0.4
-0.8 0.5 0.5
-0.8 0.5 0.6
-0.8 0.5 0.7
-0.8 0.5 0.8
-0.8 0.5 0.9
-0.8 0.6 0
-0.8 0.6 0.1
-0.8 0.6 0.2
-0.8 0.6 0.3
-0.8 0.6 0.4
-0.8 0.6 0.5
-0.8 0.6 0.6
-0.8 0.6 0.7
-0.8 0.6 0.8
-0.8 0.6 0.9
-0.8 0.7 0
-0.8 0.7 0.1
-0.8 0.7 0.2
-0.8 0.7 0.3
-0.8 0.7 0.4
-0.8 0.7 0.5
-0.8 0.7 0.6
-0.8 0.7 0.7
-0.8 0.7 0.8
-0.8 0.7 0.9
-0.8 0.8 0
-0.8 0.8 0.1
-0.8 0.8 0.2
-0.8 0.8 0.3
-0.8 0.8 0.4
-0.8 0.8 0.5
-0.8 0.8 0.6
-0.8 0.8 0.7
-0.8 0.8 0.8
-0.8 0.8 0.9
-0.8 0.9 0
-0.8 0.9 0.1
-0.8 0.9 0.2
-0.8 0.9 0.3
-0.8 0.9 0.4
-0.8 0.9 0.5
-0.8 0.9 0.6
-0.8 0.9 0.7
-0.8 0.9 0.8
-0.8 0.9 0.9
-0.9 0 0
-0.9 0 0.1
-0.9 0 0.2
-0.9 0 0.3
-0.9 0 0.4
-0.9 0 0.5
-0.9 0 0.6
-0.9 0 0.7
-0.9 0 0.8
-0.9 0 0.9
-0.9 0.1 0
-0.9 0.1 0.1
-0.9 0.1 0.2
-0.9 0.1 0.3
-0.9 0.1 0.4
-0.9 0.1 0.5
-0.9 0.1 0.6
-0.9 0.1 0.7
-0.9 0.1 0.8
-0.9 0.1 0.9
-0.9 0.2 0
-0.9 0.2 0.1
-0.9 0.2 0.2
-0.9 0.2 0.3
-0.9 0.2 0.4
-0.9 0.2 0.5
-0.9 0.2 0.6
-0.9 0.2 0.7
-0.9 0.2 0.8
-0.9 0.2 0.9
-0.9 0.3 0
-0.9 0.3 0.1
-0.9 0.3 0.2
-0.9 0.3 0.3
-0.9 0.3 0.4
-0.9 0.3 0.5
-0.9 0.3 0.6
-0.9 0.3 0.7
-0.9 0.3 0.8
-0.9 0.3 0.9
-0.9 0.4 0
-0.9 0.4 0.1
-0.9 0.4 0.2
-0.9 0.4 0.3
-0.9 0.4 0.4
-0.9 0.4 0.5
-0.9 0.4 0.6
-0.9 0.4 0.7
-0.9 0.4 0.8
-0.9 0.4 0.9
-0.9 0.5 0
-0.9 0.5 0.1
-0.9 0.5 0.2
-0.9 0.5 0.3
-0.9 0.5 0.4
-0.9 0.5 0.5
-0.9 0.5 0.6
-0.9 0.5 0.7
-0.9 0.5 0.8
-0.9 0.5 0.9
-0.9 0.6 0
-0.9 0.6 0.1
-0.9 0.6 0.2
-0.9 0.6 0.3
-0.9 0.6 0.4
-0.9 0.6 0.5
-0.9 0.6 0.6
-0.9 0.6 0.7
-0.9 0.6 0.8
-0.9 0.6 0.9
-0.9 0.7 0
-0.9 0.7 0.1
-0.9 0.7 0.2
-0.9 0.7 0.3
-0.9 0.7 0.4
-0.9 0.7 0.5
-0.9 0.7 0.6
-0.9 0.7 0.7
-0.9 0.7 0.8
-0.9 0.7 0.9
-0.9 0.8 0
-0.9 0.8 0.1
-0.9 0.8 0.2
-0.9 0.8 0.3
-0.9 0.8 0.4
-0.9 0.8 0.5
-0.9 0.8 0.6
-0.9 0.8 0.7
-0.9 0.8 0.8
-0.9 0.8 0.9
-0.9 0.9 0
-0.9 0.9 0.1
-0.9 0.9 0.2
-0.9 0.9 0.3
-0.9 0.9 0.4
-0.9 0.9 0.5
-0.9 0.9 0.6
-0.9 0.9 0.7
-0.9 0.9 0.8
-0.9 0.9 0.9
diff --git a/data/points/grid_10_10_10_in_0_1.weights b/data/points/grid_10_10_10_in_0_1.weights
deleted file mode 100644
index 48926e09..00000000
--- a/data/points/grid_10_10_10_in_0_1.weights
+++ /dev/null
@@ -1,1000 +0,0 @@
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
-1e-6
diff --git a/data/points/iso_cuboid_3_in_0_1.txt b/data/points/iso_cuboid_3_in_0_1.txt
deleted file mode 100644
index 17f3c37b..00000000
--- a/data/points/iso_cuboid_3_in_0_1.txt
+++ /dev/null
@@ -1 +0,0 @@
-0.0 0.0 0.0 1.0 1.0 1.0
diff --git a/data/points/iso_cuboid_3_in_0_10.txt b/data/points/iso_cuboid_3_in_0_10.txt
deleted file mode 100644
index d4bd2233..00000000
--- a/data/points/iso_cuboid_3_in_0_10.txt
+++ /dev/null
@@ -1 +0,0 @@
-0.0 0.0 0.0 10.0 10.0 10.0
diff --git a/data/points/shifted_sphere.off b/data/points/shifted_sphere.off
deleted file mode 100644
index 54051bb1..00000000
--- a/data/points/shifted_sphere.off
+++ /dev/null
@@ -1,1002 +0,0 @@
-OFF
-1000 0 0
-9.30846 0.674959 0.354663
-0.319662 1.44971 1.83394
-9.65204 0.108855 0.71069
-0.436642 0.138375 0.741799
-0.0632498 0.127158 1.4832
-9.82265 1.72038 0.329397
-9.68531 1.67209 1.6711
-9.1011 1.35914 0.751961
-9.65025 0.282699 1.60289
-0.595828 0.729081 1.75592
-9.80149 0.757514 0.050331
-9.10316 1.37502 0.766079
-0.206286 1.28181 0.062618
-9.86287 0.599391 1.90637
-0.752303 0.959047 1.65779
-0.408715 0.370051 0.339071
-0.763951 0.35776 0.96287
-0.787187 1.58585 1.19409
-9.19533 1.56634 0.817889
-0.389083 1.48987 1.77932
-9.29707 1.50344 1.5013
-9.52194 1.25374 1.84083
-9.11152 1.14569 1.43541
-9.13003 0.676105 1.36907
-9.26591 0.33078 1.11691
-0.225878 1.68793 0.309819
-9.17648 1.48207 1.29953
-9.06088 0.770958 1.26066
-0.40229 1.67195 1.62168
-0.36113 0.210086 0.505648
-0.513719 0.606886 0.237303
-0.465305 1.00616 0.11343
-9.79064 0.531028 1.85772
-0.402296 1.68593 0.392899
-9.39871 0.785732 1.76864
-9.50963 0.769971 1.84125
-0.574711 0.232991 1.28278
-9.46029 1.74245 1.39506
-9.70859 1.728 0.381063
-9.40135 1.6228 0.497349
-9.80349 0.350047 0.265554
-0.5205 0.315442 0.489697
-9.66743 1.59533 0.268522
-0.63638 0.459809 1.55151
-9.32128 1.69746 1.22987
-0.579606 1.62531 0.477566
-9.46979 1.05065 0.153742
-0.497503 0.295609 0.494444
-9.5305 0.311525 0.448818
-0.201698 0.559269 1.87594
-9.40197 0.242174 0.739812
-9.80384 0.436469 0.196842
-0.917472 1.3961 1.03098
-0.430443 1.70418 1.56464
-0.734443 1.0951 0.327576
-0.128518 1.23079 0.036416
-0.512276 0.354876 1.5682
-0.335417 1.94211 0.96602
-9.41638 1.61148 0.466857
-9.66932 0.48881 1.79411
-0.693771 1.19897 1.69116
-0.500594 1.0148 0.134668
-9.1287 1.41163 0.734505
-0.512771 0.175531 0.757848
-0.688494 0.28064 0.912601
-9.81907 1.45648 1.87221
-9.59914 0.361106 1.65511
-9.6906 0.729731 1.9109
-0.38137 0.228081 1.50909
-9.89254 0.171539 0.451542
-9.3757 0.669098 1.70762
-0.567413 0.506158 0.341853
-9.41361 0.356943 0.504933
-0.693218 1.33146 0.359005
-9.33618 1.02829 0.25267
-0.33001 0.889273 1.93754
-0.634114 1.7631 1.11676
-9.20523 0.969888 1.6064
-9.49207 1.43389 1.74365
-9.48723 1.3551 1.78098
-0.353267 0.171761 0.566745
-0.00281403 1.95322 0.694855
-9.81863 0.133865 1.466
-9.18333 0.606508 1.42101
-0.809911 0.481932 1.27582
-0.618363 0.306112 1.36657
-0.57338 0.861296 1.80684
-9.52152 0.375778 1.61674
-9.22189 0.377518 0.927135
-0.0672128 0.104379 1.44149
-0.747095 0.927229 0.338673
-0.608156 0.704862 0.264126
-0.363804 0.074293 1.10006
-0.0122474 1.98089 1.19565
-9.56964 0.781257 0.124396
-9.75726 1.35396 1.90289
-0.580618 0.348216 0.51222
-0.90293 1.25833 0.655364
-0.707832 0.496896 1.49614
-9.91197 1.44047 0.106621
-0.62221 0.633297 0.308156
-0.738081 0.545317 1.49771
-9.26368 0.870001 0.336853
-9.41656 0.303368 1.41853
-0.660177 1.55316 0.492621
-9.29193 1.11476 0.302828
-0.753703 0.922288 1.65315
-9.90122 1.57401 0.186427
-9.89515 0.81988 0.022722
-0.943642 0.669905 1.03831
-0.35494 0.121196 1.3186
-0.113821 0.725036 0.044863
-0.78621 0.525938 0.602937
-0.9436 0.711032 1.164
-0.693706 0.996992 1.71948
-9.55737 0.66744 1.832
-0.033109 1.90074 0.567379
-0.0303382 1.59115 1.80647
-0.510765 0.383863 1.59787
-0.504748 1.62916 0.408589
-0.599172 0.347881 1.4643
-0.770621 1.4112 0.513994
-9.89523 1.04275 0.007174
-0.918102 1.39349 1.05751
-0.289995 0.2713 0.378792
-0.635603 0.346144 1.41236
-9.27103 0.366076 0.746158
-0.744256 1.58078 0.671541
-9.82547 1.69795 0.305921
-0.475202 1.79287 1.3805
-9.23064 1.61766 1.16769
-0.839446 0.471308 1.12654
-9.64484 1.06402 1.93287
-0.869122 1.31313 0.619081
-9.37852 0.613046 0.317987
-9.12666 1.01357 1.48593
-0.61551 0.509337 0.383014
-9.49447 0.289841 1.49055
-9.33656 1.65404 0.637152
-9.2815 1.21595 0.338471
-0.175223 1.66642 0.275799
-9.91146 1.81366 0.425203
-9.5727 0.096868 0.968795
-0.675554 0.341694 1.33051
-9.47093 0.373629 0.427866
-0.424603 0.384317 1.66227
-0.742433 1.66671 0.919566
-9.36778 0.442545 0.462367
-9.73883 1.78075 1.5683
-0.726513 0.323835 1.1158
-0.302755 1.38553 1.87211
-0.535727 1.42295 1.7306
-9.58514 0.244869 1.50895
-9.52125 0.246166 1.44982
-9.31431 1.62892 1.36503
-9.98779 0.257898 0.329823
-0.0579226 1.5191 1.85295
-0.0992393 1.41632 1.90423
-9.31551 1.62831 1.37069
-0.405234 1.88855 1.21584
-0.625832 1.50754 1.59278
-0.540334 1.01342 1.84151
-0.6496 0.542131 1.60709
-9.1196 1.26202 1.39519
-9.86104 0.212888 0.399129
-9.06495 1.24027 0.737926
-0.344454 0.185716 0.532575
-9.75547 1.66099 0.291572
-9.63087 1.87689 0.690648
-9.49262 1.54726 1.66683
-9.6166 0.390168 0.305417
-0.137617 1.74887 0.351788
-0.510714 0.156618 0.831459
-0.910054 1.31334 0.726199
-0.306053 0.148671 1.42861
-9.30128 0.760904 1.67389
-9.77787 1.97485 1.02163
-9.36039 0.274654 1.2556
-0.650794 0.707288 1.70052
-9.28551 0.89261 0.308749
-9.6073 0.750516 1.88548
-0.139642 0.374535 0.233686
-0.169241 1.00351 1.98452
-0.17452 1.73298 0.342129
-9.81048 1.29468 0.064031
-0.613694 0.491945 1.6058
-0.86926 0.511672 0.928761
-9.37715 0.254352 1.23831
-0.529366 0.500958 1.68549
-0.707169 0.370226 1.32004
-0.583783 0.810561 0.211606
-0.817859 0.614869 1.42783
-0.273889 1.8313 0.517321
-9.65951 0.109985 1.30326
-0.534185 1.66958 1.51599
-9.40421 1.79876 1.08529
-0.401013 1.44468 1.79996
-0.734147 0.681305 0.40045
-0.267486 1.65773 1.7031
-0.207956 1.58052 0.213657
-9.50709 1.75553 1.4317
-9.6408 1.91814 1.1672
-0.603943 1.79704 0.968268
-9.29105 0.675764 1.62584
-9.45715 0.724906 0.207524
-0.896406 1.44072 1.0199
-0.452172 1.56373 1.6909
-9.18298 0.426014 1.05132
-9.58257 1.90551 1.08378
-0.241326 0.669849 0.086473
-0.69452 0.649301 1.62797
-9.31101 0.393937 1.39491
-0.606919 1.74714 1.26936
-9.01696 1.12479 0.868244
-0.699129 1.16957 0.305401
-9.78814 1.9726 0.901019
-0.110775 1.21621 1.97039
-9.87457 0.228483 0.377592
-0.244342 0.245656 0.390684
-0.209537 0.523986 0.145469
-0.0681799 1.90388 1.42101
-9.19912 1.10591 0.411084
-9.39365 0.622151 1.69953
-0.585521 1.47394 1.65807
-9.59435 1.03292 1.91382
-9.58259 0.12136 1.23316
-9.32166 0.278287 1.13967
-9.92846 0.598427 0.087388
-9.58126 0.739163 0.131286
-9.49655 1.79467 0.65822
-9.33657 1.7484 1.016
-9.12701 1.46677 1.14482
-0.561281 1.431 0.294166
-9.78693 1.67653 0.294285
-9.34118 1.65731 0.633753
-0.710196 1.64238 0.709801
-0.886622 1.20789 1.41162
-0.0677664 1.88706 1.45798
-0.698576 1.64678 0.693225
-0.448705 1.4017 0.200863
-9.07985 1.18138 1.34817
-0.336259 0.075346 0.820857
-9.20408 1.60515 0.946053
-0.287467 0.837373 0.056324
-0.749378 1.41774 0.486959
-9.26923 1.37711 0.430709
-0.14936 1.42609 0.107197
-0.0714009 0.385934 0.213925
-9.8277 1.53049 1.82976
-0.708935 1.65578 0.738062
-0.0948228 1.02128 1.99598
-9.46121 1.82926 0.851863
-0.351601 0.320042 1.64413
-9.14855 1.5226 0.95391
-9.66048 1.89872 0.723401
-0.731093 1.54757 1.4081
-0.568092 1.55204 0.390022
-9.50103 1.02343 1.86631
-0.900843 1.06925 0.572554
-0.924983 0.750278 0.71105
-9.5152 1.53088 1.69393
-0.526094 0.382679 1.58711
-9.27225 0.58499 0.451932
-9.8952 0.339988 1.7439
-0.539653 0.16291 0.908454
-0.764392 0.718045 0.420146
-0.212162 1.58316 0.215563
-0.586207 0.190524 0.98709
-0.762071 1.35318 0.457938
-0.667942 1.58796 0.543524
-0.919602 0.817803 1.34976
-0.979513 1.19215 1.04643
-0.604525 0.415454 0.457791
-9.31338 1.18312 0.295843
-0.826517 1.56001 0.957552
-0.960202 1.00363 0.71871
-9.88889 0.593648 0.092558
-9.26776 1.42434 1.53417
-9.72683 0.212705 0.446213
-0.0892455 0.428248 1.81447
-9.1279 0.803382 1.44952
-0.567967 0.233242 0.700016
-0.713055 1.30645 1.63019
-9.39379 0.533988 1.64534
-9.79079 0.392974 1.76697
-0.189703 1.7765 0.399243
-0.452701 0.330663 1.59137
-9.90818 1.98953 1.11297
-0.791462 0.396492 1.10484
-0.365535 1.62772 1.68677
-9.32953 0.284113 0.810467
-9.40158 0.427932 0.437794
-9.391 1.1379 1.78265
-0.18534 1.63937 0.252221
-9.2501 1.64904 0.877825
-0.555286 0.945554 1.8299
-9.06892 0.733273 1.24644
-9.56004 1.88069 0.82576
-0.536902 1.59437 1.59971
-0.719609 1.53732 1.44135
-0.815317 1.48107 0.679938
-9.09161 1.07216 0.587408
-0.38704 0.393483 0.305542
-0.58356 0.931129 1.80986
-9.76549 0.315478 1.69017
-9.41161 1.49959 1.63564
-0.857946 1.14196 1.49573
-9.1062 0.55662 1.06206
-0.655278 0.37006 1.41593
-0.43935 1.77927 0.553587
-0.498884 0.633188 0.215244
-0.0413873 0.052232 0.68187
-9.21432 1.21157 1.58165
-9.3669 0.288726 1.30683
-9.21879 0.732198 1.56605
-0.137692 0.009768 0.98158
-0.534583 1.82836 0.832465
-9.49295 1.73478 0.550143
-9.91646 0.353096 0.242656
-0.589176 0.86984 0.202279
-0.362188 0.280249 0.408181
-0.274268 0.578879 1.86326
-0.604039 0.646069 1.71282
-0.223247 0.248073 1.6204
-9.80604 0.039333 0.800413
-9.34856 0.519354 0.413036
-0.575657 0.363191 0.487241
-9.77876 0.111893 0.59577
-9.35382 0.371739 0.566805
-0.390854 1.63041 0.329802
-0.326032 0.299066 1.63321
-0.276027 1.93536 0.780336
-9.5341 0.308619 0.448063
-9.69074 1.65329 1.69065
-0.80983 1.41519 0.583414
-0.214206 1.97686 1.01529
-9.30424 0.422441 1.4283
-9.03621 0.932833 1.25919
-0.0162511 1.47352 0.119265
-0.634681 1.62576 1.45132
-9.62458 0.421022 0.276348
-9.59186 0.094231 1.1144
-0.235683 0.039578 1.14882
-0.679211 0.561997 0.409886
-9.27834 1.23643 1.64976
-9.98396 1.1683 0.01445
-0.89075 0.574707 0.841959
-0.599068 1.71862 0.645656
-0.735763 0.802774 0.351296
-0.221189 1.63699 0.261565
-0.491243 1.76319 1.42035
-9.52118 1.65738 0.419019
-0.585694 0.375541 0.483415
-0.396747 1.018 1.91799
-0.272033 0.049254 0.849099
-9.69974 1.88908 0.65217
-9.68837 0.238558 1.56671
-0.00255645 1.10273 0.005041
-9.55682 1.89631 1.00269
-9.55587 0.301162 0.439312
-9.53807 1.4991 0.268301
-9.89207 0.216586 0.389146
-9.1795 0.588829 1.39745
-9.31832 1.72452 1.09325
-9.13622 1.06525 0.499373
-9.52185 1.36872 1.79725
-9.22658 1.61069 1.16485
-9.94276 1.24572 1.96796
-9.02696 1.0582 1.22697
-0.80752 0.708452 0.487053
-9.10573 1.4299 1.1269
-0.98495 0.860354 1.10283
-9.38055 1.15878 1.76855
-9.45367 0.19399 0.77129
-0.875921 0.781193 0.568202
-9.87074 0.769623 0.034773
-0.224263 0.295292 0.32622
-0.731827 0.618023 0.434908
-9.99886 1.69083 1.72367
-0.623328 0.634997 1.6922
-9.3372 0.587922 1.62543
-9.3572 1.59656 1.48079
-9.27659 1.1581 0.327505
-0.39176 1.74876 0.466292
-0.143229 0.295076 1.69381
-9.88444 1.35346 0.07155
-0.596156 0.885592 1.79536
-0.632835 1.35451 0.312432
-9.91148 1.91254 0.601527
-9.70675 0.132142 1.40151
-0.0379983 1.96093 0.727646
-0.0695625 1.67084 1.73697
-0.0497337 0.069458 1.36443
-0.467864 1.64334 0.39398
-9.88243 0.325653 0.271916
-9.25849 0.352779 0.826798
-9.41786 0.615693 0.283297
-9.77252 0.06521 0.730099
-9.07278 0.724821 0.745202
-0.541446 0.554969 1.71349
-9.07219 1.36188 0.910299
-9.96347 1.31989 0.053531
-9.94233 0.057785 0.672203
-0.851371 0.633945 1.37547
-9.41634 1.75703 1.29234
-0.432735 0.89891 1.89562
-9.42798 1.77295 0.723062
-0.718712 0.939884 0.307506
-9.39573 0.349571 1.46192
-9.8909 0.057458 0.681189
-0.587289 0.65288 1.73061
-9.49098 0.527971 0.278984
-0.531355 0.407789 1.60662
-0.44577 1.61302 0.34676
-9.4039 0.875696 1.79229
-9.30052 0.300747 0.857446
-9.97632 1.36358 0.068381
-0.977321 0.981502 1.21586
-0.18791 1.7447 1.64068
-9.77844 1.69616 1.68323
-9.45987 1.02334 1.84107
-9.62908 0.371649 0.315032
-0.837233 0.791406 0.495623
-0.186518 1.57329 1.79823
-9.2765 1.54891 0.58079
-0.551206 0.643942 0.247098
-9.23363 0.46334 1.35321
-0.334144 1.80084 0.502846
-9.16145 1.5192 0.831298
-0.762642 0.358565 0.927552
-9.1761 1.26594 0.497657
-0.820286 1.10485 1.56154
-0.815722 1.5629 0.876298
-9.04692 1.21477 0.785943
-0.185109 1.97267 0.863569
-0.203111 0.42647 1.79413
-9.26044 0.45224 0.608183
-9.36708 0.422611 1.51615
-0.0531105 1.89548 1.44169
-9.57875 1.02138 0.093198
-9.43244 1.32488 0.243539
-9.31694 1.70926 0.829119
-9.62104 1.67553 1.63247
-9.83744 0.189483 0.435472
-0.550179 0.167419 1.06353
-0.00502337 1.72837 0.316535
-0.932246 1.35071 1.08601
-9.55128 0.16624 0.678766
-0.503754 1.13797 0.146266
-9.45202 1.46465 1.69603
-0.10128 0.400598 1.79456
-0.918924 0.803505 0.655406
-0.103326 1.81527 1.57046
-0.747962 0.946862 1.66143
-0.0327211 1.70282 0.28861
-0.218882 1.64983 0.272482
-0.199276 0.065998 0.706647
-0.504895 0.394994 0.384649
-9.94351 0.357309 1.76518
-0.694589 1.71921 0.969525
-9.67198 1.59351 1.73384
-0.421343 0.663674 1.8436
-0.551235 0.229307 1.32017
-0.758943 0.642131 0.456827
-9.4442 0.171738 0.924593
-9.28092 1.67664 1.1585
-0.659912 0.592402 0.369168
-0.114891 0.580276 0.098807
-9.91435 0.769098 0.029944
-9.04828 1.11313 0.715219
-0.968707 0.853522 0.798368
-9.94126 0.206713 1.60462
-0.65562 1.08526 1.7506
-9.11825 1.32529 0.656674
-0.246314 0.848914 0.04193
-0.731244 1.2672 0.372555
-9.87693 1.66967 1.73409
-9.9703 0.503362 1.86819
-0.667704 1.44317 1.59887
-9.53734 1.39847 0.207196
-9.97053 1.79371 0.393694
-9.37297 1.1686 0.23899
-9.45256 1.61958 0.43834
-9.76375 1.71549 0.340859
-9.3734 0.346872 1.42407
-0.5125 1.84211 0.832575
-0.932041 0.67555 0.845347
-9.49733 1.24542 0.171411
-9.83022 0.218933 0.398263
-9.3321 0.476499 1.53112
-0.550712 1.35084 0.243683
-9.6505 1.77285 1.53145
-0.11957 0.947519 0.007769
-9.75615 0.596159 1.88234
-0.809122 0.438308 1.17405
-9.95713 0.981126 1.99948
-0.591199 1.60434 1.53349
-0.487668 1.85321 1.18495
-0.956176 1.26081 0.862054
-9.46859 0.629161 1.76147
-0.547885 0.544311 0.29811
-0.536275 0.220812 1.32556
-0.398207 1.91061 1.11507
-0.0402346 0.316766 0.270353
-0.270426 1.61264 1.74224
-9.71078 0.358589 1.71085
-9.24733 1.50792 0.578291
-0.613955 1.19862 1.76316
-0.392413 1.74782 1.53531
-9.24869 1.06357 0.344695
-9.53261 1.5516 0.309929
-0.935946 0.813894 1.30057
-0.527774 0.162478 0.850937
-0.830806 1.53354 1.16061
-9.02502 0.812013 0.878552
-0.519587 1.78326 1.34115
-0.567002 1.21986 1.79448
-9.13955 0.850995 1.4861
-0.74967 1.64198 0.843855
-0.175846 0.700507 1.93899
-9.73844 0.22365 1.57498
-9.26819 1.66752 0.861099
-9.71894 0.404593 0.247375
-9.53267 0.214904 0.595629
-0.693719 0.917312 0.284077
-0.547917 0.402839 0.413438
-0.0844952 0.885454 1.99056
-0.202379 0.278 1.66239
-0.265358 1.08061 0.03905
-0.775521 1.24402 0.417377
-9.91364 1.99236 0.908648
-0.388763 1.55501 1.73574
-9.122 1.4585 1.14199
-0.856257 0.504886 1.147
-9.63301 1.91146 0.809757
-9.18053 1.46788 1.33201
-0.868119 1.49438 0.97842
-0.891772 1.17963 0.585111
-0.850286 0.863415 1.50974
-9.63805 1.8232 0.565249
-0.690344 0.877511 1.71198
-0.747495 1.20652 1.63033
-9.03804 1.1497 0.772564
-0.802784 1.39586 0.552522
-0.589376 1.57708 1.56531
-0.418664 1.67319 1.61064
-0.209528 1.85472 1.47302
-9.76727 1.54659 1.80444
-0.33653 1.63502 0.304715
-0.171426 0.258308 1.64949
-0.907411 0.666978 1.2608
-9.1637 1.07816 1.54336
-0.683719 0.303247 1.21306
-9.60125 0.247266 1.52338
-0.670147 0.446458 0.50591
-0.495214 0.186146 1.30503
-0.340572 0.770593 1.91229
-0.294228 1.9449 0.862692
-0.876347 1.18335 0.556539
-9.4379 0.336691 0.505474
-9.80748 0.375332 1.75574
-9.30654 0.782442 0.312649
-0.782074 1.29819 1.54777
-0.0583806 1.94132 1.33345
-9.38461 1.61502 1.49326
-9.45506 1.71879 0.568663
-9.69553 0.42906 1.7633
-9.44246 1.39375 1.73089
-9.27668 1.54311 1.42565
-0.244979 0.425879 1.78104
-0.0508857 1.35719 1.93165
-0.508441 0.568761 1.74461
-0.22771 1.12088 0.032771
-0.331629 1.7584 1.56037
-9.23481 1.57289 0.70378
-0.512795 1.3176 0.203395
-0.0350435 1.5893 0.193235
-9.20153 1.55324 0.762203
-0.164685 0.836704 0.027783
-0.0300097 0.303271 1.71596
-9.3172 1.71852 1.13144
-9.66242 0.280481 1.60535
-0.321784 0.157059 1.43201
-9.22851 0.822415 1.60948
-0.58427 1.07427 1.80832
-0.654863 0.87903 1.74468
-0.706336 0.531863 1.53079
-0.0169793 1.76133 0.352015
-9.66444 0.172158 1.44895
-0.67235 1.42259 0.391911
-0.829522 0.97393 1.55827
-9.81542 1.61738 1.76373
-0.756196 1.44959 0.523201
-0.65706 1.11249 1.74695
-9.37241 1.57875 0.479702
-9.33588 0.777786 1.71413
-0.375155 1.75113 1.54265
-0.0229391 0.531802 1.88295
-0.213719 1.48186 1.84872
-9.52401 1.24875 0.15692
-9.94211 0.006862 1.09663
-9.33013 0.519479 0.432186
-9.54022 1.37595 0.195345
-9.53769 0.137537 0.794878
-0.343332 1.93923 1.04129
-0.470026 1.46991 1.74635
-9.08859 1.15981 0.6218
-0.525781 0.441913 1.64174
-0.0525363 1.35865 0.069011
-0.110072 0.005576 1.01205
-9.2731 0.66746 1.6017
-0.689674 1.45809 0.438933
-0.847185 0.500752 1.18657
-9.54366 0.310179 0.437616
-9.80241 1.9473 0.745297
-0.352206 1.48317 1.80133
-0.994063 1.02097 1.11557
-0.363083 1.65831 1.65808
-0.0946325 0.915427 0.008875
-9.47179 1.66937 1.52266
-9.25627 1.64231 1.1838
-9.20909 1.31761 1.52317
-9.89843 0.192177 1.58247
-0.33303 0.81999 1.92628
-0.0657317 1.16105 0.015248
-0.755704 1.39947 0.483116
-0.275053 1.79415 1.54376
-0.0361209 0.384035 1.78787
-9.52975 1.6904 0.448524
-9.54536 1.30554 1.83667
-0.0349238 1.70847 0.295379
-9.22441 0.540634 0.567442
-0.386726 1.68692 0.383914
-0.934901 0.651698 1.04749
-0.0287155 1.8789 1.47413
-9.56574 1.90024 1.03899
-9.5682 1.6132 0.339015
-0.747524 1.48544 0.546733
-9.29441 0.8844 1.69898
-9.92357 0.95486 1.9963
-0.883612 1.46008 0.929191
-9.22409 0.513342 1.40356
-9.92647 0.405598 1.79989
-0.818444 1.4833 0.689723
-0.455696 0.897039 0.11702
-0.513092 0.214776 1.34538
-9.73375 1.76073 0.406789
-9.88884 0.328377 0.268188
-9.70471 0.561806 1.84959
-9.16429 1.412 1.36097
-0.274298 0.565471 0.142986
-9.86262 0.990513 1.99072
-0.592856 1.60034 0.464052
-0.937727 1.23643 1.2515
-9.92874 0.031265 0.761554
-9.88665 1.7512 1.65097
-0.7284 1.37457 1.57405
-0.924492 1.3548 1.13326
-9.52508 1.7702 0.571209
-9.28926 0.660586 0.383994
-0.739071 1.25631 0.377355
-0.86006 0.634698 1.35433
-9.59589 1.25798 1.87764
-0.906153 1.39396 0.844199
-9.26927 0.731891 1.62699
-9.53049 1.83076 0.701588
-0.444221 0.224474 1.4505
-9.99488 1.87759 0.519899
-0.66516 0.298101 0.744515
-0.49939 0.933317 0.135503
-9.72602 1.89041 1.36586
-0.9979 0.966813 1.03886
-9.72708 0.297366 1.65811
-0.895043 0.553516 0.973516
-9.87917 0.007656 0.948227
-9.61016 1.68094 0.381168
-0.769795 1.37345 1.51768
-0.267673 0.870071 1.95429
-9.41811 0.253617 1.32238
-9.69078 0.28435 1.62643
-9.88903 0.378559 0.225044
-0.738473 1.63003 0.758483
-0.676777 0.750002 1.69234
-0.324284 1.81755 0.523296
-0.198011 1.56812 1.80002
-0.846835 0.505819 1.19449
-0.964422 1.07372 0.742479
-9.8486 1.76812 1.62083
-0.325947 1.76194 1.55871
-0.0928117 1.79537 1.59902
-0.540065 1.82114 0.811507
-9.38792 1.67465 0.586693
-0.250774 0.403275 0.237141
-9.335 0.879029 0.264208
-0.34599 1.84448 1.40829
-9.81458 0.599094 1.89721
-0.716022 0.311804 0.877223
-9.33174 0.675852 0.329869
-0.628637 0.687032 1.71095
-9.96661 1.87236 0.510967
-0.42254 0.657619 1.84023
-9.59113 1.58078 1.70241
-9.58299 0.383387 1.66821
-9.3978 0.824698 1.77784
-9.97121 1.84906 0.473275
-0.274797 0.049728 0.853491
-0.0742825 0.128504 0.51645
-0.592091 0.741113 1.76144
-0.647568 1.63463 0.580052
-9.42798 0.649392 1.74144
-0.928172 1.25702 0.731125
-9.1111 1.40986 0.797008
-0.533476 0.982859 0.153788
-0.429166 0.290022 1.55578
-0.0600464 0.652227 0.063992
-0.0108808 0.001029 0.964279
-9.56753 0.315251 0.412289
-0.62443 0.279972 0.695399
-0.752 0.897714 1.64952
-0.906618 1.12086 1.40599
-9.61025 1.37057 1.84233
-0.328613 0.302526 0.363258
-0.678302 0.322806 0.716225
-0.390688 0.784454 1.89558
-0.947788 1.1148 1.29747
-0.662258 1.73855 0.873339
-9.79132 0.085265 0.653096
-9.89027 1.99426 0.971032
-9.82892 1.96772 1.18453
-9.21357 1.60729 0.879168
-0.379845 0.285926 0.410559
-0.604001 1.45742 0.347111
-9.61169 0.193379 0.556756
-0.760119 0.348519 0.999573
-9.47079 0.309741 0.507132
-9.49792 1.86474 0.965852
-9.58379 0.401567 1.68369
-9.16082 0.979655 0.455847
-9.65454 1.74968 1.56512
-9.68794 1.76119 1.56854
-9.27859 1.05479 1.68848
-9.95593 1.801 1.59887
-0.0838551 1.99355 1.06997
-9.64751 0.39576 1.7144
-0.509192 0.435253 1.64844
-9.2327 1.26592 1.58499
-9.83622 1.98537 0.98628
-9.1709 1.54751 0.885197
-9.17178 0.461224 0.844773
-0.848394 1.52499 0.939547
-0.0938825 0.14265 1.50551
-0.611498 0.486773 0.398772
-9.04195 1.21577 1.18978
-0.338911 0.443473 1.7597
-9.78861 0.930578 0.025412
-0.684417 1.64386 1.34436
-9.59616 0.90914 1.90959
-9.43427 1.82386 1.02924
-9.61441 0.266579 1.55917
-0.45135 1.22824 0.137735
-0.455622 1.16878 0.126224
-0.750743 1.12841 1.64856
-0.172786 0.075024 1.33716
-0.572666 0.294857 1.4187
-9.27381 1.21164 0.345058
-9.46202 1.64717 1.54077
-0.0366763 0.391544 0.206898
-9.40837 0.206739 0.857619
-0.611193 1.68799 1.39347
-0.862774 0.623728 0.66434
-9.42747 1.53546 1.6204
-0.0182886 3.2e-05 1.00195
-0.469988 1.28221 1.83664
-9.34452 1.75611 0.965025
-9.13378 1.26897 1.42142
-0.626128 0.813556 0.242849
-9.54174 1.23235 1.85908
-0.765526 0.35703 1.03416
-9.16656 0.738462 1.48587
-0.944991 1.22701 0.763345
-9.63657 0.623108 1.85221
-0.116017 0.007572 1.00673
-0.477945 1.72195 1.5003
-0.680767 1.61792 0.606739
-9.70777 1.79969 1.52572
-9.70878 1.76773 0.429594
-9.32819 0.263616 0.921956
-9.85216 1.60872 1.78044
-0.888413 0.788841 1.40964
-9.35123 0.243199 1.07959
-9.73072 1.71735 0.356638
-0.539146 1.66073 1.52119
-9.58888 1.71186 0.428579
-9.7705 1.96015 1.15494
-9.3271 0.271531 1.12971
-0.38882 0.177281 1.41333
-0.578109 1.80902 0.889951
-9.29671 1.27844 0.345163
-0.333766 0.377278 1.70815
-0.194681 0.02759 0.876214
-0.492794 0.515888 0.277186
-9.73075 0.522755 1.83764
-0.73811 1.01636 1.67471
-0.440905 1.64308 0.372436
-0.885936 0.697894 1.35044
-0.248017 0.483918 1.81979
-0.0595597 0.140828 0.490657
-0.744763 1.64309 0.821368
-0.628699 0.819193 0.242528
-0.806474 0.413315 1.05853
-9.86282 1.10855 1.98463
-9.5142 0.673339 0.188719
-0.609208 0.59979 1.6855
-9.46112 0.482508 1.66487
-0.29424 1.93157 0.788847
-0.887888 0.764671 1.39441
-9.36527 1.59945 0.512936
-0.670515 0.567908 1.60186
-0.387324 1.62551 1.67801
-9.69403 1.92717 1.21881
-0.855285 1.01646 1.51826
-0.874648 0.54619 1.16988
-0.401297 0.162778 1.37027
-0.699869 0.521882 0.468438
-9.04117 0.808129 1.20545
-9.79343 1.17177 0.036894
-0.629572 0.563369 1.64294
-0.237979 1.85532 0.539296
-9.61041 1.90074 1.19242
-0.0117479 1.46748 1.88395
-0.717363 1.02219 1.69744
-0.417465 1.65124 0.36796
-9.15203 1.45403 1.27388
-0.862344 0.676412 1.38781
-0.802817 0.442809 0.787517
-9.87139 1.07787 0.011176
-0.869561 1.39444 1.29918
-9.93289 0.37935 1.78029
-9.50474 0.578651 1.76021
-9.157 0.5742 1.32967
-0.974 1.1133 1.19294
-9.3209 0.358139 1.35532
-9.79115 1.8987 1.38553
-0.782911 0.424774 1.23823
-9.20991 0.653463 0.496746
-0.46777 1.75999 1.45042
-0.715743 0.892531 0.308989
-0.0960513 0.636225 0.0725
-9.40396 1.58373 0.451449
-9.95865 1.41271 0.089521
-9.76324 0.907231 0.033297
-9.73945 0.068106 1.25414
-0.536417 0.407007 0.398644
-0.839362 0.731562 0.527637
-0.294591 1.83059 1.4729
-9.83072 1.52465 0.164401
-9.04946 1.26663 1.15474
-0.205957 1.19858 1.95889
-9.36019 0.427652 1.51431
-9.47393 1.13945 0.160051
-0.686785 0.480854 1.50877
-9.74079 1.58783 0.234956
-9.79752 1.49862 0.156777
-9.61756 0.263588 1.55903
-9.39137 0.659291 1.71736
-0.580255 0.443237 1.59434
-9.34656 0.310227 1.31239
-0.0268579 0.554747 1.89521
-0.696521 0.689563 1.64594
-0.651964 1.72023 1.23989
-9.04386 0.753458 0.841026
-0.619664 1.53723 0.427654
-0.596641 0.497144 1.62423
-0.128775 1.73451 0.33271
-0.406038 1.70259 1.58592
-9.26017 1.2072 1.64047
-9.50083 0.472742 1.68693
-9.77601 0.608544 1.89236
-0.132479 0.93583 0.010117
-0.546506 1.40821 0.268103
-9.54142 0.342728 0.400954
-0.627297 1.73608 0.742049
-9.60283 1.36315 1.84372
-9.38232 0.92598 0.21726
-0.360034 1.92928 0.918004
-9.66062 0.260257 0.417215
-0.799573 0.959625 1.59881
-9.45903 0.839588 0.1733
-0.568969 0.219001 0.744878
-0.63884 0.428299 1.51465
-9.25013 1.32073 1.57945
-0.468303 0.123466 0.885497
-0.415226 0.324968 0.388973
-9.24282 0.833462 1.63171
-0.466496 1.56766 1.67818
-0.262187 0.143814 0.556028
-9.14692 0.936489 1.51721
-0.143808 0.16235 0.471895
-9.07604 0.635357 0.880006
-0.602601 0.642722 1.71231
-9.10192 0.959485 1.43947
-9.49288 1.84763 0.840536
-0.259475 0.836268 1.95074
-9.5931 0.169714 0.621414
-9.34152 0.54576 1.59995
-0.385993 0.077814 1.00309
-9.7543 0.392957 1.7549
-0.703594 1.59957 0.618014
-0.28396 1.38516 1.87763
-9.47216 1.49187 0.308427
-9.75064 0.847619 1.95524
-0.794438 0.533126 1.38927
-0.458255 0.447104 1.69467
-0.374261 1.40599 0.165617
-0.508332 1.45369 0.266876
-0.260436 0.04725 0.848098
-0.523546 1.46304 1.71365
-9.85853 1.07995 1.9863
-9.42973 1.81578 1.09982
-0.388103 1.05943 1.91992
-0.476978 1.70117 0.470762
-0.136105 0.778474 0.035417
-0.184601 1.54026 1.8208
-9.6957 0.689279 0.098452
-0.571886 1.46763 1.67421
-9.78389 0.721641 1.93675
-9.64603 1.50351 0.212504
-9.33479 1.43862 1.60356
-0.397572 1.58421 0.292223
-9.31721 0.443609 0.525264
-0.328354 0.357877 0.309063
-9.70621 1.71928 1.63125
-9.94985 1.74847 1.66185
-0.40709 0.384888 1.67494
-9.34601 1.20088 0.270165
-9.26684 1.04359 1.67861
-9.98278 0.071776 0.631486
-0.0335023 1.7533 0.343581
-0.126878 0.488354 0.150417
-9.42928 0.770031 0.212005
-9.86227 1.34485 1.92808
-9.69736 1.95041 0.943469
-9.45709 0.876758 0.168502
-0.151555 1.64388 0.249811
-9.81167 0.308096 1.69777
-9.29211 1.40989 1.57533
-0.943288 1.32913 1.0384
-9.51399 1.08536 0.129898
-0.862593 0.510705 0.869305
-0.402814 0.580634 1.81308
-0.560986 1.46185 1.68895
-0.597669 1.61114 1.517
-0.870172 0.746315 0.57874
-0.166247 1.62624 1.76249
-0.403377 0.646714 0.155771
-9.2505 1.10616 1.65508
-9.31197 1.63978 1.3402
-0.117564 1.83425 1.53848
-9.1859 1.5101 1.27657
-0.89193 1.16174 1.42446
-0.928389 1.35924 1.0886
-9.71862 1.43147 1.85746
-9.32164 1.73306 1.03569
-9.57868 0.207621 0.560166
-9.17069 0.465718 1.16609
-0.0749666 0.508784 0.131655
-9.00509 0.910826 0.982497
-9.18708 0.845121 1.55964
-0.230179 1.55547 0.201774
-0.963875 1.2047 0.829545
-0.639822 0.245481 1.14715
-0.330198 1.93655 0.876378
-0.415056 1.62304 1.66408
-9.5512 0.126185 1.1867
-0.919378 0.780583 1.32691
-0.211055 1.97731 1.0452
-9.63332 0.457348 0.245116
-9.11293 0.57283 0.824045
-9.2941 1.25297 1.66244
-9.24923 0.342548 1.06118
-0.512464 0.144511 1.06912
-9.20904 0.394573 0.920849
-9.75283 0.065458 1.25925
-0.0658611 1.9907 0.877273
-9.96161 0.012968 1.15098
-9.36225 1.28415 0.283022
-0.296386 1.04104 0.04487
-9.34276 1.75367 1.00771
-0.988566 0.930967 1.14033
-0.508411 0.803566 1.83833
-9.2627 1.08535 0.32846
-9.61688 1.50743 1.77102
-0.894891 0.787156 1.39054
-9.7692 1.77447 0.409455
-0.43942 0.105031 0.920975
-0.86666 0.528692 1.16637
-0.432977 1.30289 0.150308
-0.878035 1.34008 1.33693
-9.32994 1.62778 1.39603
-9.78551 0.265972 0.35543
diff --git a/data/points/shifted_sphere.weights b/data/points/shifted_sphere.weights
deleted file mode 100644
index bb5602eb..00000000
--- a/data/points/shifted_sphere.weights
+++ /dev/null
@@ -1,1000 +0,0 @@
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
-0.0001
diff --git a/data/points/sphere2D_80.off b/data/points/sphere2D_80.off
deleted file mode 100644
index 89c4c4ce..00000000
--- a/data/points/sphere2D_80.off
+++ /dev/null
@@ -1,82 +0,0 @@
-OFF
-80 0 0
--0.948683 -0.316228
--0.993884 -0.110432
--0.993884 0.110432
--0.948683 0.316228
--0.707107 -0.707107
--0.813733 -0.581238
--0.919145 -0.393919
--0.989949 -0.141421
--0.989949 0.141421
--0.919145 0.393919
--0.813733 0.581238
--0.707107 0.707107
--0.581238 -0.813733
--0.707107 -0.707107
--0.857493 -0.514496
--0.980581 -0.196116
--0.980581 0.196116
--0.857493 0.514496
--0.707107 0.707107
--0.581238 0.813733
--0.316228 -0.948683
--0.393919 -0.919145
--0.514496 -0.857493
--0.707107 -0.707107
--0.948683 -0.316228
--0.948683 0.316228
--0.707107 0.707107
--0.514496 0.857493
--0.393919 0.919145
--0.316228 0.948683
--0.110432 -0.993884
--0.141421 -0.989949
--0.196116 -0.980581
--0.316228 -0.948683
--0.707107 -0.707107
--0.707107 0.707107
--0.316228 0.948683
--0.196116 0.980581
--0.141421 0.989949
--0.110432 0.993884
-0.110432 -0.993884
-0.141421 -0.989949
-0.196116 -0.980581
-0.316228 -0.948683
-0.707107 -0.707107
-0.707107 0.707107
-0.316228 0.948683
-0.196116 0.980581
-0.141421 0.989949
-0.110432 0.993884
-0.316228 -0.948683
-0.393919 -0.919145
-0.514496 -0.857493
-0.707107 -0.707107
-0.948683 -0.316228
-0.948683 0.316228
-0.707107 0.707107
-0.514496 0.857493
-0.393919 0.919145
-0.316228 0.948683
-0.581238 -0.813733
-0.707107 -0.707107
-0.857493 -0.514496
-0.980581 -0.196116
-0.980581 0.196116
-0.857493 0.514496
-0.707107 0.707107
-0.581238 0.813733
-0.707107 -0.707107
-0.813733 -0.581238
-0.919145 -0.393919
-0.989949 -0.141421
-0.989949 0.141421
-0.919145 0.393919
-0.813733 0.581238
-0.707107 0.707107
-0.948683 -0.316228
-0.993884 -0.110432
-0.993884 0.110432
-0.948683 0.316228
diff --git a/data/points/sphere3D_2646.off b/data/points/sphere3D_2646.off
deleted file mode 100644
index 8035a0a6..00000000
--- a/data/points/sphere3D_2646.off
+++ /dev/null
@@ -1,2648 +0,0 @@
-OFF
-2646 0 0
--0.59612 -0.567733 -0.567733
-0.59612 -0.567733 -0.567733
--0.615257 -0.585959 -0.527363
-0.615257 -0.585959 -0.527363
--0.634039 -0.603847 -0.483077
-0.634039 -0.603847 -0.483077
--0.652124 -0.62107 -0.434749
-0.652124 -0.62107 -0.434749
--0.669116 -0.637253 -0.382352
-0.669116 -0.637253 -0.382352
--0.68458 -0.651981 -0.325991
-0.68458 -0.651981 -0.325991
--0.698064 -0.664822 -0.265929
-0.698064 -0.664822 -0.265929
--0.70912 -0.675352 -0.202606
-0.70912 -0.675352 -0.202606
--0.717346 -0.683187 -0.136637
-0.717346 -0.683187 -0.136637
--0.722422 -0.688021 -0.0688021
-0.722422 -0.688021 -0.0688021
--0.724138 -0.689655 0
-0.724138 -0.689655 0
--0.722422 -0.688021 0.0688021
-0.722422 -0.688021 0.0688021
--0.717346 -0.683187 0.136637
-0.717346 -0.683187 0.136637
--0.70912 -0.675352 0.202606
-0.70912 -0.675352 0.202606
--0.698064 -0.664822 0.265929
-0.698064 -0.664822 0.265929
--0.68458 -0.651981 0.325991
-0.68458 -0.651981 0.325991
--0.669116 -0.637253 0.382352
-0.669116 -0.637253 0.382352
--0.652124 -0.62107 0.434749
-0.652124 -0.62107 0.434749
--0.634039 -0.603847 0.483077
-0.634039 -0.603847 0.483077
--0.615257 -0.585959 0.527363
-0.615257 -0.585959 0.527363
--0.59612 -0.567733 0.567733
-0.59612 -0.567733 0.567733
--0.615257 -0.527363 -0.585959
-0.615257 -0.527363 -0.585959
--0.636364 -0.545455 -0.545455
-0.636364 -0.545455 -0.545455
--0.657213 -0.563326 -0.500734
-0.657213 -0.563326 -0.500734
--0.677419 -0.580645 -0.451613
-0.677419 -0.580645 -0.451613
--0.696526 -0.597022 -0.398015
-0.696526 -0.597022 -0.398015
--0.714021 -0.612018 -0.34001
-0.714021 -0.612018 -0.34001
--0.72936 -0.625166 -0.277851
-0.72936 -0.625166 -0.277851
--0.741999 -0.635999 -0.212
-0.741999 -0.635999 -0.212
--0.751439 -0.644091 -0.143131
-0.751439 -0.644091 -0.143131
--0.757279 -0.649097 -0.0721218
-0.757279 -0.649097 -0.0721218
--0.759257 -0.650791 0
-0.759257 -0.650791 0
--0.757279 -0.649097 0.0721218
-0.757279 -0.649097 0.0721218
--0.751439 -0.644091 0.143131
-0.751439 -0.644091 0.143131
--0.741999 -0.635999 0.212
-0.741999 -0.635999 0.212
--0.72936 -0.625166 0.277851
-0.72936 -0.625166 0.277851
--0.714021 -0.612018 0.34001
-0.714021 -0.612018 0.34001
--0.696526 -0.597022 0.398015
-0.696526 -0.597022 0.398015
--0.677419 -0.580645 0.451613
-0.677419 -0.580645 0.451613
--0.657213 -0.563326 0.500734
-0.657213 -0.563326 0.500734
--0.636364 -0.545455 0.545455
-0.636364 -0.545455 0.545455
--0.615257 -0.527363 0.585959
-0.615257 -0.527363 0.585959
--0.634039 -0.483077 -0.603847
-0.634039 -0.483077 -0.603847
--0.657213 -0.500734 -0.563326
-0.657213 -0.500734 -0.563326
--0.680257 -0.518291 -0.518291
-0.680257 -0.518291 -0.518291
--0.702738 -0.53542 -0.468492
-0.702738 -0.53542 -0.468492
--0.724138 -0.551724 -0.413793
-0.724138 -0.551724 -0.413793
--0.743858 -0.566749 -0.354218
-0.743858 -0.566749 -0.354218
--0.761249 -0.58 -0.29
-0.761249 -0.58 -0.29
--0.775653 -0.590973 -0.221615
-0.775653 -0.590973 -0.221615
--0.786456 -0.599205 -0.149801
-0.786456 -0.599205 -0.149801
--0.793159 -0.604312 -0.075539
-0.793159 -0.604312 -0.075539
--0.795432 -0.606043 0
-0.795432 -0.606043 0
--0.793159 -0.604312 0.075539
-0.793159 -0.604312 0.075539
--0.786456 -0.599205 0.149801
-0.786456 -0.599205 0.149801
--0.775653 -0.590973 0.221615
-0.775653 -0.590973 0.221615
--0.761249 -0.58 0.29
-0.761249 -0.58 0.29
--0.743858 -0.566749 0.354218
-0.743858 -0.566749 0.354218
--0.724138 -0.551724 0.413793
-0.724138 -0.551724 0.413793
--0.702738 -0.53542 0.468492
-0.702738 -0.53542 0.468492
--0.680257 -0.518291 0.518291
-0.680257 -0.518291 0.518291
--0.657213 -0.500734 0.563326
-0.657213 -0.500734 0.563326
--0.634039 -0.483077 0.603847
-0.634039 -0.483077 0.603847
--0.652124 -0.434749 -0.62107
-0.652124 -0.434749 -0.62107
--0.677419 -0.451613 -0.580645
-0.677419 -0.451613 -0.580645
--0.702738 -0.468492 -0.53542
-0.702738 -0.468492 -0.53542
--0.727607 -0.485071 -0.485071
-0.727607 -0.485071 -0.485071
--0.751439 -0.500959 -0.429394
-0.751439 -0.500959 -0.429394
--0.773545 -0.515697 -0.368355
-0.773545 -0.515697 -0.368355
--0.793159 -0.528773 -0.302156
-0.793159 -0.528773 -0.302156
--0.809491 -0.53966 -0.231283
-0.809491 -0.53966 -0.231283
--0.821794 -0.547862 -0.156532
-0.821794 -0.547862 -0.156532
--0.82945 -0.552967 -0.0789953
-0.82945 -0.552967 -0.0789953
--0.83205 -0.5547 0
-0.83205 -0.5547 0
--0.82945 -0.552967 0.0789953
-0.82945 -0.552967 0.0789953
--0.821794 -0.547862 0.156532
-0.821794 -0.547862 0.156532
--0.809491 -0.53966 0.231283
-0.809491 -0.53966 0.231283
--0.793159 -0.528773 0.302156
-0.793159 -0.528773 0.302156
--0.773545 -0.515697 0.368355
-0.773545 -0.515697 0.368355
--0.751439 -0.500959 0.429394
-0.751439 -0.500959 0.429394
--0.727607 -0.485071 0.485071
-0.727607 -0.485071 0.485071
--0.702738 -0.468492 0.53542
-0.702738 -0.468492 0.53542
--0.677419 -0.451613 0.580645
-0.677419 -0.451613 0.580645
--0.652124 -0.434749 0.62107
-0.652124 -0.434749 0.62107
--0.669116 -0.382352 -0.637253
-0.669116 -0.382352 -0.637253
--0.696526 -0.398015 -0.597022
-0.696526 -0.398015 -0.597022
--0.724138 -0.413793 -0.551724
-0.724138 -0.413793 -0.551724
--0.751439 -0.429394 -0.500959
-0.751439 -0.429394 -0.500959
--0.777778 -0.444444 -0.444444
-0.777778 -0.444444 -0.444444
--0.802369 -0.458496 -0.38208
-0.802369 -0.458496 -0.38208
--0.824322 -0.471041 -0.314027
-0.824322 -0.471041 -0.314027
--0.842701 -0.481543 -0.240772
-0.842701 -0.481543 -0.240772
--0.856608 -0.48949 -0.163163
-0.856608 -0.48949 -0.163163
--0.86529 -0.494451 -0.0824086
-0.86529 -0.494451 -0.0824086
--0.868243 -0.496139 0
-0.868243 -0.496139 0
--0.86529 -0.494451 0.0824086
-0.86529 -0.494451 0.0824086
--0.856608 -0.48949 0.163163
-0.856608 -0.48949 0.163163
--0.842701 -0.481543 0.240772
-0.842701 -0.481543 0.240772
--0.824322 -0.471041 0.314027
-0.824322 -0.471041 0.314027
--0.802369 -0.458496 0.38208
-0.802369 -0.458496 0.38208
--0.777778 -0.444444 0.444444
-0.777778 -0.444444 0.444444
--0.751439 -0.429394 0.500959
-0.751439 -0.429394 0.500959
--0.724138 -0.413793 0.551724
-0.724138 -0.413793 0.551724
--0.696526 -0.398015 0.597022
-0.696526 -0.398015 0.597022
--0.669116 -0.382352 0.637253
-0.669116 -0.382352 0.637253
--0.68458 -0.325991 -0.651981
-0.68458 -0.325991 -0.651981
--0.714021 -0.34001 -0.612018
-0.714021 -0.34001 -0.612018
--0.743858 -0.354218 -0.566749
-0.743858 -0.354218 -0.566749
--0.773545 -0.368355 -0.515697
-0.773545 -0.368355 -0.515697
--0.802369 -0.38208 -0.458496
-0.802369 -0.38208 -0.458496
--0.82945 -0.394976 -0.394976
-0.82945 -0.394976 -0.394976
--0.853771 -0.406558 -0.325246
-0.853771 -0.406558 -0.325246
--0.874241 -0.416305 -0.249783
-0.874241 -0.416305 -0.249783
--0.889799 -0.423714 -0.169485
-0.889799 -0.423714 -0.169485
--0.899541 -0.428353 -0.0856706
-0.899541 -0.428353 -0.0856706
--0.902861 -0.429934 0
-0.902861 -0.429934 0
--0.899541 -0.428353 0.0856706
-0.899541 -0.428353 0.0856706
--0.889799 -0.423714 0.169485
-0.889799 -0.423714 0.169485
--0.874241 -0.416305 0.249783
-0.874241 -0.416305 0.249783
--0.853771 -0.406558 0.325246
-0.853771 -0.406558 0.325246
--0.82945 -0.394976 0.394976
-0.82945 -0.394976 0.394976
--0.802369 -0.38208 0.458496
-0.802369 -0.38208 0.458496
--0.773545 -0.368355 0.515697
-0.773545 -0.368355 0.515697
--0.743858 -0.354218 0.566749
-0.743858 -0.354218 0.566749
--0.714021 -0.34001 0.612018
-0.714021 -0.34001 0.612018
--0.68458 -0.325991 0.651981
-0.68458 -0.325991 0.651981
--0.698064 -0.265929 -0.664822
-0.698064 -0.265929 -0.664822
--0.72936 -0.277851 -0.625166
-0.72936 -0.277851 -0.625166
--0.761249 -0.29 -0.58
-0.761249 -0.29 -0.58
--0.793159 -0.302156 -0.528773
-0.793159 -0.302156 -0.528773
--0.824322 -0.314027 -0.471041
-0.824322 -0.314027 -0.471041
--0.853771 -0.325246 -0.406558
-0.853771 -0.325246 -0.406558
--0.880366 -0.335377 -0.335377
-0.880366 -0.335377 -0.335377
--0.902861 -0.343947 -0.25796
-0.902861 -0.343947 -0.25796
--0.920027 -0.350486 -0.175243
-0.920027 -0.350486 -0.175243
--0.930809 -0.354594 -0.0886484
-0.930809 -0.354594 -0.0886484
--0.934488 -0.355995 0
-0.934488 -0.355995 0
--0.930809 -0.354594 0.0886484
-0.930809 -0.354594 0.0886484
--0.920027 -0.350486 0.175243
-0.920027 -0.350486 0.175243
--0.902861 -0.343947 0.25796
-0.902861 -0.343947 0.25796
--0.880366 -0.335377 0.335377
-0.880366 -0.335377 0.335377
--0.853771 -0.325246 0.406558
-0.853771 -0.325246 0.406558
--0.824322 -0.314027 0.471041
-0.824322 -0.314027 0.471041
--0.793159 -0.302156 0.528773
-0.793159 -0.302156 0.528773
--0.761249 -0.29 0.58
-0.761249 -0.29 0.58
--0.72936 -0.277851 0.625166
-0.72936 -0.277851 0.625166
--0.698064 -0.265929 0.664822
-0.698064 -0.265929 0.664822
--0.70912 -0.202606 -0.675352
-0.70912 -0.202606 -0.675352
--0.741999 -0.212 -0.635999
-0.741999 -0.212 -0.635999
--0.775653 -0.221615 -0.590973
-0.775653 -0.221615 -0.590973
--0.809491 -0.231283 -0.53966
-0.809491 -0.231283 -0.53966
--0.842701 -0.240772 -0.481543
-0.842701 -0.240772 -0.481543
--0.874241 -0.249783 -0.416305
-0.874241 -0.249783 -0.416305
--0.902861 -0.25796 -0.343947
-0.902861 -0.25796 -0.343947
--0.927173 -0.264906 -0.264906
-0.927173 -0.264906 -0.264906
--0.945792 -0.270226 -0.180151
-0.945792 -0.270226 -0.180151
--0.957518 -0.273576 -0.0911922
-0.957518 -0.273576 -0.0911922
--0.961524 -0.274721 0
-0.961524 -0.274721 0
--0.957518 -0.273576 0.0911922
-0.957518 -0.273576 0.0911922
--0.945792 -0.270226 0.180151
-0.945792 -0.270226 0.180151
--0.927173 -0.264906 0.264906
-0.927173 -0.264906 0.264906
--0.902861 -0.25796 0.343947
-0.902861 -0.25796 0.343947
--0.874241 -0.249783 0.416305
-0.874241 -0.249783 0.416305
--0.842701 -0.240772 0.481543
-0.842701 -0.240772 0.481543
--0.809491 -0.231283 0.53966
-0.809491 -0.231283 0.53966
--0.775653 -0.221615 0.590973
-0.775653 -0.221615 0.590973
--0.741999 -0.212 0.635999
-0.741999 -0.212 0.635999
--0.70912 -0.202606 0.675352
-0.70912 -0.202606 0.675352
--0.717346 -0.136637 -0.683187
-0.717346 -0.136637 -0.683187
--0.751439 -0.143131 -0.644091
-0.751439 -0.143131 -0.644091
--0.786456 -0.149801 -0.599205
-0.786456 -0.149801 -0.599205
--0.821794 -0.156532 -0.547862
-0.821794 -0.156532 -0.547862
--0.856608 -0.163163 -0.48949
-0.856608 -0.163163 -0.48949
--0.889799 -0.169485 -0.423714
-0.889799 -0.169485 -0.423714
--0.920027 -0.175243 -0.350486
-0.920027 -0.175243 -0.350486
--0.945792 -0.180151 -0.270226
-0.945792 -0.180151 -0.270226
--0.965581 -0.18392 -0.18392
-0.965581 -0.18392 -0.18392
--0.978068 -0.186299 -0.0931493
-0.978068 -0.186299 -0.0931493
--0.982339 -0.187112 0
-0.982339 -0.187112 0
--0.978068 -0.186299 0.0931493
-0.978068 -0.186299 0.0931493
--0.965581 -0.18392 0.18392
-0.965581 -0.18392 0.18392
--0.945792 -0.180151 0.270226
-0.945792 -0.180151 0.270226
--0.920027 -0.175243 0.350486
-0.920027 -0.175243 0.350486
--0.889799 -0.169485 0.423714
-0.889799 -0.169485 0.423714
--0.856608 -0.163163 0.48949
-0.856608 -0.163163 0.48949
--0.821794 -0.156532 0.547862
-0.821794 -0.156532 0.547862
--0.786456 -0.149801 0.599205
-0.786456 -0.149801 0.599205
--0.751439 -0.143131 0.644091
-0.751439 -0.143131 0.644091
--0.717346 -0.136637 0.683187
-0.717346 -0.136637 0.683187
--0.722422 -0.0688021 -0.688021
-0.722422 -0.0688021 -0.688021
--0.757279 -0.0721218 -0.649097
-0.757279 -0.0721218 -0.649097
--0.793159 -0.075539 -0.604312
-0.793159 -0.075539 -0.604312
--0.82945 -0.0789953 -0.552967
-0.82945 -0.0789953 -0.552967
--0.86529 -0.0824086 -0.494451
-0.86529 -0.0824086 -0.494451
--0.899541 -0.0856706 -0.428353
-0.899541 -0.0856706 -0.428353
--0.930809 -0.0886484 -0.354594
-0.930809 -0.0886484 -0.354594
--0.957518 -0.0911922 -0.273576
-0.957518 -0.0911922 -0.273576
--0.978068 -0.0931493 -0.186299
-0.978068 -0.0931493 -0.186299
--0.991051 -0.0943858 -0.0943858
-0.991051 -0.0943858 -0.0943858
--0.995495 -0.0948091 0
-0.995495 -0.0948091 0
--0.991051 -0.0943858 0.0943858
-0.991051 -0.0943858 0.0943858
--0.978068 -0.0931493 0.186299
-0.978068 -0.0931493 0.186299
--0.957518 -0.0911922 0.273576
-0.957518 -0.0911922 0.273576
--0.930809 -0.0886484 0.354594
-0.930809 -0.0886484 0.354594
--0.899541 -0.0856706 0.428353
-0.899541 -0.0856706 0.428353
--0.86529 -0.0824086 0.494451
-0.86529 -0.0824086 0.494451
--0.82945 -0.0789953 0.552967
-0.82945 -0.0789953 0.552967
--0.793159 -0.075539 0.604312
-0.793159 -0.075539 0.604312
--0.757279 -0.0721218 0.649097
-0.757279 -0.0721218 0.649097
--0.722422 -0.0688021 0.688021
-0.722422 -0.0688021 0.688021
--0.724138 0 -0.689655
-0.724138 0 -0.689655
--0.759257 0 -0.650791
-0.759257 0 -0.650791
--0.795432 0 -0.606043
-0.795432 0 -0.606043
--0.83205 0 -0.5547
-0.83205 0 -0.5547
--0.868243 0 -0.496139
-0.868243 0 -0.496139
--0.902861 0 -0.429934
-0.902861 0 -0.429934
--0.934488 0 -0.355995
-0.934488 0 -0.355995
--0.961524 0 -0.274721
-0.961524 0 -0.274721
--0.982339 0 -0.187112
-0.982339 0 -0.187112
--0.995495 0 -0.0948091
-0.995495 0 -0.0948091
--1 0 0
-1 0 0
--0.995495 0 0.0948091
-0.995495 0 0.0948091
--0.982339 0 0.187112
-0.982339 0 0.187112
--0.961524 0 0.274721
-0.961524 0 0.274721
--0.934488 0 0.355995
-0.934488 0 0.355995
--0.902861 0 0.429934
-0.902861 0 0.429934
--0.868243 0 0.496139
-0.868243 0 0.496139
--0.83205 0 0.5547
-0.83205 0 0.5547
--0.795432 0 0.606043
-0.795432 0 0.606043
--0.759257 0 0.650791
-0.759257 0 0.650791
--0.724138 0 0.689655
-0.724138 0 0.689655
--0.722422 0.0688021 -0.688021
-0.722422 0.0688021 -0.688021
--0.757279 0.0721218 -0.649097
-0.757279 0.0721218 -0.649097
--0.793159 0.075539 -0.604312
-0.793159 0.075539 -0.604312
--0.82945 0.0789953 -0.552967
-0.82945 0.0789953 -0.552967
--0.86529 0.0824086 -0.494451
-0.86529 0.0824086 -0.494451
--0.899541 0.0856706 -0.428353
-0.899541 0.0856706 -0.428353
--0.930809 0.0886484 -0.354594
-0.930809 0.0886484 -0.354594
--0.957518 0.0911922 -0.273576
-0.957518 0.0911922 -0.273576
--0.978068 0.0931493 -0.186299
-0.978068 0.0931493 -0.186299
--0.991051 0.0943858 -0.0943858
-0.991051 0.0943858 -0.0943858
--0.995495 0.0948091 0
-0.995495 0.0948091 0
--0.991051 0.0943858 0.0943858
-0.991051 0.0943858 0.0943858
--0.978068 0.0931493 0.186299
-0.978068 0.0931493 0.186299
--0.957518 0.0911922 0.273576
-0.957518 0.0911922 0.273576
--0.930809 0.0886484 0.354594
-0.930809 0.0886484 0.354594
--0.899541 0.0856706 0.428353
-0.899541 0.0856706 0.428353
--0.86529 0.0824086 0.494451
-0.86529 0.0824086 0.494451
--0.82945 0.0789953 0.552967
-0.82945 0.0789953 0.552967
--0.793159 0.075539 0.604312
-0.793159 0.075539 0.604312
--0.757279 0.0721218 0.649097
-0.757279 0.0721218 0.649097
--0.722422 0.0688021 0.688021
-0.722422 0.0688021 0.688021
--0.717346 0.136637 -0.683187
-0.717346 0.136637 -0.683187
--0.751439 0.143131 -0.644091
-0.751439 0.143131 -0.644091
--0.786456 0.149801 -0.599205
-0.786456 0.149801 -0.599205
--0.821794 0.156532 -0.547862
-0.821794 0.156532 -0.547862
--0.856608 0.163163 -0.48949
-0.856608 0.163163 -0.48949
--0.889799 0.169485 -0.423714
-0.889799 0.169485 -0.423714
--0.920027 0.175243 -0.350486
-0.920027 0.175243 -0.350486
--0.945792 0.180151 -0.270226
-0.945792 0.180151 -0.270226
--0.965581 0.18392 -0.18392
-0.965581 0.18392 -0.18392
--0.978068 0.186299 -0.0931493
-0.978068 0.186299 -0.0931493
--0.982339 0.187112 0
-0.982339 0.187112 0
--0.978068 0.186299 0.0931493
-0.978068 0.186299 0.0931493
--0.965581 0.18392 0.18392
-0.965581 0.18392 0.18392
--0.945792 0.180151 0.270226
-0.945792 0.180151 0.270226
--0.920027 0.175243 0.350486
-0.920027 0.175243 0.350486
--0.889799 0.169485 0.423714
-0.889799 0.169485 0.423714
--0.856608 0.163163 0.48949
-0.856608 0.163163 0.48949
--0.821794 0.156532 0.547862
-0.821794 0.156532 0.547862
--0.786456 0.149801 0.599205
-0.786456 0.149801 0.599205
--0.751439 0.143131 0.644091
-0.751439 0.143131 0.644091
--0.717346 0.136637 0.683187
-0.717346 0.136637 0.683187
--0.70912 0.202606 -0.675352
-0.70912 0.202606 -0.675352
--0.741999 0.212 -0.635999
-0.741999 0.212 -0.635999
--0.775653 0.221615 -0.590973
-0.775653 0.221615 -0.590973
--0.809491 0.231283 -0.53966
-0.809491 0.231283 -0.53966
--0.842701 0.240772 -0.481543
-0.842701 0.240772 -0.481543
--0.874241 0.249783 -0.416305
-0.874241 0.249783 -0.416305
--0.902861 0.25796 -0.343947
-0.902861 0.25796 -0.343947
--0.927173 0.264906 -0.264906
-0.927173 0.264906 -0.264906
--0.945792 0.270226 -0.180151
-0.945792 0.270226 -0.180151
--0.957518 0.273576 -0.0911922
-0.957518 0.273576 -0.0911922
--0.961524 0.274721 0
-0.961524 0.274721 0
--0.957518 0.273576 0.0911922
-0.957518 0.273576 0.0911922
--0.945792 0.270226 0.180151
-0.945792 0.270226 0.180151
--0.927173 0.264906 0.264906
-0.927173 0.264906 0.264906
--0.902861 0.25796 0.343947
-0.902861 0.25796 0.343947
--0.874241 0.249783 0.416305
-0.874241 0.249783 0.416305
--0.842701 0.240772 0.481543
-0.842701 0.240772 0.481543
--0.809491 0.231283 0.53966
-0.809491 0.231283 0.53966
--0.775653 0.221615 0.590973
-0.775653 0.221615 0.590973
--0.741999 0.212 0.635999
-0.741999 0.212 0.635999
--0.70912 0.202606 0.675352
-0.70912 0.202606 0.675352
--0.698064 0.265929 -0.664822
-0.698064 0.265929 -0.664822
--0.72936 0.277851 -0.625166
-0.72936 0.277851 -0.625166
--0.761249 0.29 -0.58
-0.761249 0.29 -0.58
--0.793159 0.302156 -0.528773
-0.793159 0.302156 -0.528773
--0.824322 0.314027 -0.471041
-0.824322 0.314027 -0.471041
--0.853771 0.325246 -0.406558
-0.853771 0.325246 -0.406558
--0.880366 0.335377 -0.335377
-0.880366 0.335377 -0.335377
--0.902861 0.343947 -0.25796
-0.902861 0.343947 -0.25796
--0.920027 0.350486 -0.175243
-0.920027 0.350486 -0.175243
--0.930809 0.354594 -0.0886484
-0.930809 0.354594 -0.0886484
--0.934488 0.355995 0
-0.934488 0.355995 0
--0.930809 0.354594 0.0886484
-0.930809 0.354594 0.0886484
--0.920027 0.350486 0.175243
-0.920027 0.350486 0.175243
--0.902861 0.343947 0.25796
-0.902861 0.343947 0.25796
--0.880366 0.335377 0.335377
-0.880366 0.335377 0.335377
--0.853771 0.325246 0.406558
-0.853771 0.325246 0.406558
--0.824322 0.314027 0.471041
-0.824322 0.314027 0.471041
--0.793159 0.302156 0.528773
-0.793159 0.302156 0.528773
--0.761249 0.29 0.58
-0.761249 0.29 0.58
--0.72936 0.277851 0.625166
-0.72936 0.277851 0.625166
--0.698064 0.265929 0.664822
-0.698064 0.265929 0.664822
--0.68458 0.325991 -0.651981
-0.68458 0.325991 -0.651981
--0.714021 0.34001 -0.612018
-0.714021 0.34001 -0.612018
--0.743858 0.354218 -0.566749
-0.743858 0.354218 -0.566749
--0.773545 0.368355 -0.515697
-0.773545 0.368355 -0.515697
--0.802369 0.38208 -0.458496
-0.802369 0.38208 -0.458496
--0.82945 0.394976 -0.394976
-0.82945 0.394976 -0.394976
--0.853771 0.406558 -0.325246
-0.853771 0.406558 -0.325246
--0.874241 0.416305 -0.249783
-0.874241 0.416305 -0.249783
--0.889799 0.423714 -0.169485
-0.889799 0.423714 -0.169485
--0.899541 0.428353 -0.0856706
-0.899541 0.428353 -0.0856706
--0.902861 0.429934 0
-0.902861 0.429934 0
--0.899541 0.428353 0.0856706
-0.899541 0.428353 0.0856706
--0.889799 0.423714 0.169485
-0.889799 0.423714 0.169485
--0.874241 0.416305 0.249783
-0.874241 0.416305 0.249783
--0.853771 0.406558 0.325246
-0.853771 0.406558 0.325246
--0.82945 0.394976 0.394976
-0.82945 0.394976 0.394976
--0.802369 0.38208 0.458496
-0.802369 0.38208 0.458496
--0.773545 0.368355 0.515697
-0.773545 0.368355 0.515697
--0.743858 0.354218 0.566749
-0.743858 0.354218 0.566749
--0.714021 0.34001 0.612018
-0.714021 0.34001 0.612018
--0.68458 0.325991 0.651981
-0.68458 0.325991 0.651981
--0.669116 0.382352 -0.637253
-0.669116 0.382352 -0.637253
--0.696526 0.398015 -0.597022
-0.696526 0.398015 -0.597022
--0.724138 0.413793 -0.551724
-0.724138 0.413793 -0.551724
--0.751439 0.429394 -0.500959
-0.751439 0.429394 -0.500959
--0.777778 0.444444 -0.444444
-0.777778 0.444444 -0.444444
--0.802369 0.458496 -0.38208
-0.802369 0.458496 -0.38208
--0.824322 0.471041 -0.314027
-0.824322 0.471041 -0.314027
--0.842701 0.481543 -0.240772
-0.842701 0.481543 -0.240772
--0.856608 0.48949 -0.163163
-0.856608 0.48949 -0.163163
--0.86529 0.494451 -0.0824086
-0.86529 0.494451 -0.0824086
--0.868243 0.496139 0
-0.868243 0.496139 0
--0.86529 0.494451 0.0824086
-0.86529 0.494451 0.0824086
--0.856608 0.48949 0.163163
-0.856608 0.48949 0.163163
--0.842701 0.481543 0.240772
-0.842701 0.481543 0.240772
--0.824322 0.471041 0.314027
-0.824322 0.471041 0.314027
--0.802369 0.458496 0.38208
-0.802369 0.458496 0.38208
--0.777778 0.444444 0.444444
-0.777778 0.444444 0.444444
--0.751439 0.429394 0.500959
-0.751439 0.429394 0.500959
--0.724138 0.413793 0.551724
-0.724138 0.413793 0.551724
--0.696526 0.398015 0.597022
-0.696526 0.398015 0.597022
--0.669116 0.382352 0.637253
-0.669116 0.382352 0.637253
--0.652124 0.434749 -0.62107
-0.652124 0.434749 -0.62107
--0.677419 0.451613 -0.580645
-0.677419 0.451613 -0.580645
--0.702738 0.468492 -0.53542
-0.702738 0.468492 -0.53542
--0.727607 0.485071 -0.485071
-0.727607 0.485071 -0.485071
--0.751439 0.500959 -0.429394
-0.751439 0.500959 -0.429394
--0.773545 0.515697 -0.368355
-0.773545 0.515697 -0.368355
--0.793159 0.528773 -0.302156
-0.793159 0.528773 -0.302156
--0.809491 0.53966 -0.231283
-0.809491 0.53966 -0.231283
--0.821794 0.547862 -0.156532
-0.821794 0.547862 -0.156532
--0.82945 0.552967 -0.0789953
-0.82945 0.552967 -0.0789953
--0.83205 0.5547 0
-0.83205 0.5547 0
--0.82945 0.552967 0.0789953
-0.82945 0.552967 0.0789953
--0.821794 0.547862 0.156532
-0.821794 0.547862 0.156532
--0.809491 0.53966 0.231283
-0.809491 0.53966 0.231283
--0.793159 0.528773 0.302156
-0.793159 0.528773 0.302156
--0.773545 0.515697 0.368355
-0.773545 0.515697 0.368355
--0.751439 0.500959 0.429394
-0.751439 0.500959 0.429394
--0.727607 0.485071 0.485071
-0.727607 0.485071 0.485071
--0.702738 0.468492 0.53542
-0.702738 0.468492 0.53542
--0.677419 0.451613 0.580645
-0.677419 0.451613 0.580645
--0.652124 0.434749 0.62107
-0.652124 0.434749 0.62107
--0.634039 0.483077 -0.603847
-0.634039 0.483077 -0.603847
--0.657213 0.500734 -0.563326
-0.657213 0.500734 -0.563326
--0.680257 0.518291 -0.518291
-0.680257 0.518291 -0.518291
--0.702738 0.53542 -0.468492
-0.702738 0.53542 -0.468492
--0.724138 0.551724 -0.413793
-0.724138 0.551724 -0.413793
--0.743858 0.566749 -0.354218
-0.743858 0.566749 -0.354218
--0.761249 0.58 -0.29
-0.761249 0.58 -0.29
--0.775653 0.590973 -0.221615
-0.775653 0.590973 -0.221615
--0.786456 0.599205 -0.149801
-0.786456 0.599205 -0.149801
--0.793159 0.604312 -0.075539
-0.793159 0.604312 -0.075539
--0.795432 0.606043 0
-0.795432 0.606043 0
--0.793159 0.604312 0.075539
-0.793159 0.604312 0.075539
--0.786456 0.599205 0.149801
-0.786456 0.599205 0.149801
--0.775653 0.590973 0.221615
-0.775653 0.590973 0.221615
--0.761249 0.58 0.29
-0.761249 0.58 0.29
--0.743858 0.566749 0.354218
-0.743858 0.566749 0.354218
--0.724138 0.551724 0.413793
-0.724138 0.551724 0.413793
--0.702738 0.53542 0.468492
-0.702738 0.53542 0.468492
--0.680257 0.518291 0.518291
-0.680257 0.518291 0.518291
--0.657213 0.500734 0.563326
-0.657213 0.500734 0.563326
--0.634039 0.483077 0.603847
-0.634039 0.483077 0.603847
--0.615257 0.527363 -0.585959
-0.615257 0.527363 -0.585959
--0.636364 0.545455 -0.545455
-0.636364 0.545455 -0.545455
--0.657213 0.563326 -0.500734
-0.657213 0.563326 -0.500734
--0.677419 0.580645 -0.451613
-0.677419 0.580645 -0.451613
--0.696526 0.597022 -0.398015
-0.696526 0.597022 -0.398015
--0.714021 0.612018 -0.34001
-0.714021 0.612018 -0.34001
--0.72936 0.625166 -0.277851
-0.72936 0.625166 -0.277851
--0.741999 0.635999 -0.212
-0.741999 0.635999 -0.212
--0.751439 0.644091 -0.143131
-0.751439 0.644091 -0.143131
--0.757279 0.649097 -0.0721218
-0.757279 0.649097 -0.0721218
--0.759257 0.650791 0
-0.759257 0.650791 0
--0.757279 0.649097 0.0721218
-0.757279 0.649097 0.0721218
--0.751439 0.644091 0.143131
-0.751439 0.644091 0.143131
--0.741999 0.635999 0.212
-0.741999 0.635999 0.212
--0.72936 0.625166 0.277851
-0.72936 0.625166 0.277851
--0.714021 0.612018 0.34001
-0.714021 0.612018 0.34001
--0.696526 0.597022 0.398015
-0.696526 0.597022 0.398015
--0.677419 0.580645 0.451613
-0.677419 0.580645 0.451613
--0.657213 0.563326 0.500734
-0.657213 0.563326 0.500734
--0.636364 0.545455 0.545455
-0.636364 0.545455 0.545455
--0.615257 0.527363 0.585959
-0.615257 0.527363 0.585959
--0.59612 0.567733 -0.567733
-0.59612 0.567733 -0.567733
--0.615257 0.585959 -0.527363
-0.615257 0.585959 -0.527363
--0.634039 0.603847 -0.483077
-0.634039 0.603847 -0.483077
--0.652124 0.62107 -0.434749
-0.652124 0.62107 -0.434749
--0.669116 0.637253 -0.382352
-0.669116 0.637253 -0.382352
--0.68458 0.651981 -0.325991
-0.68458 0.651981 -0.325991
--0.698064 0.664822 -0.265929
-0.698064 0.664822 -0.265929
--0.70912 0.675352 -0.202606
-0.70912 0.675352 -0.202606
--0.717346 0.683187 -0.136637
-0.717346 0.683187 -0.136637
--0.722422 0.688021 -0.0688021
-0.722422 0.688021 -0.0688021
--0.724138 0.689655 0
-0.724138 0.689655 0
--0.722422 0.688021 0.0688021
-0.722422 0.688021 0.0688021
--0.717346 0.683187 0.136637
-0.717346 0.683187 0.136637
--0.70912 0.675352 0.202606
-0.70912 0.675352 0.202606
--0.698064 0.664822 0.265929
-0.698064 0.664822 0.265929
--0.68458 0.651981 0.325991
-0.68458 0.651981 0.325991
--0.669116 0.637253 0.382352
-0.669116 0.637253 0.382352
--0.652124 0.62107 0.434749
-0.652124 0.62107 0.434749
--0.634039 0.603847 0.483077
-0.634039 0.603847 0.483077
--0.615257 0.585959 0.527363
-0.615257 0.585959 0.527363
--0.59612 0.567733 0.567733
-0.59612 0.567733 0.567733
--0.567733 -0.59612 -0.567733
--0.567733 0.59612 -0.567733
--0.585959 -0.615257 -0.527363
--0.585959 0.615257 -0.527363
--0.603847 -0.634039 -0.483077
--0.603847 0.634039 -0.483077
--0.62107 -0.652124 -0.434749
--0.62107 0.652124 -0.434749
--0.637253 -0.669116 -0.382352
--0.637253 0.669116 -0.382352
--0.651981 -0.68458 -0.325991
--0.651981 0.68458 -0.325991
--0.664822 -0.698064 -0.265929
--0.664822 0.698064 -0.265929
--0.675352 -0.70912 -0.202606
--0.675352 0.70912 -0.202606
--0.683187 -0.717346 -0.136637
--0.683187 0.717346 -0.136637
--0.688021 -0.722422 -0.0688021
--0.688021 0.722422 -0.0688021
--0.689655 -0.724138 0
--0.689655 0.724138 0
--0.688021 -0.722422 0.0688021
--0.688021 0.722422 0.0688021
--0.683187 -0.717346 0.136637
--0.683187 0.717346 0.136637
--0.675352 -0.70912 0.202606
--0.675352 0.70912 0.202606
--0.664822 -0.698064 0.265929
--0.664822 0.698064 0.265929
--0.651981 -0.68458 0.325991
--0.651981 0.68458 0.325991
--0.637253 -0.669116 0.382352
--0.637253 0.669116 0.382352
--0.62107 -0.652124 0.434749
--0.62107 0.652124 0.434749
--0.603847 -0.634039 0.483077
--0.603847 0.634039 0.483077
--0.585959 -0.615257 0.527363
--0.585959 0.615257 0.527363
--0.567733 -0.59612 0.567733
--0.567733 0.59612 0.567733
--0.527363 -0.615257 -0.585959
--0.527363 0.615257 -0.585959
--0.545455 -0.636364 -0.545455
--0.545455 0.636364 -0.545455
--0.563326 -0.657213 -0.500734
--0.563326 0.657213 -0.500734
--0.580645 -0.677419 -0.451613
--0.580645 0.677419 -0.451613
--0.597022 -0.696526 -0.398015
--0.597022 0.696526 -0.398015
--0.612018 -0.714021 -0.34001
--0.612018 0.714021 -0.34001
--0.625166 -0.72936 -0.277851
--0.625166 0.72936 -0.277851
--0.635999 -0.741999 -0.212
--0.635999 0.741999 -0.212
--0.644091 -0.751439 -0.143131
--0.644091 0.751439 -0.143131
--0.649097 -0.757279 -0.0721218
--0.649097 0.757279 -0.0721218
--0.650791 -0.759257 0
--0.650791 0.759257 0
--0.649097 -0.757279 0.0721218
--0.649097 0.757279 0.0721218
--0.644091 -0.751439 0.143131
--0.644091 0.751439 0.143131
--0.635999 -0.741999 0.212
--0.635999 0.741999 0.212
--0.625166 -0.72936 0.277851
--0.625166 0.72936 0.277851
--0.612018 -0.714021 0.34001
--0.612018 0.714021 0.34001
--0.597022 -0.696526 0.398015
--0.597022 0.696526 0.398015
--0.580645 -0.677419 0.451613
--0.580645 0.677419 0.451613
--0.563326 -0.657213 0.500734
--0.563326 0.657213 0.500734
--0.545455 -0.636364 0.545455
--0.545455 0.636364 0.545455
--0.527363 -0.615257 0.585959
--0.527363 0.615257 0.585959
--0.483077 -0.634039 -0.603847
--0.483077 0.634039 -0.603847
--0.500734 -0.657213 -0.563326
--0.500734 0.657213 -0.563326
--0.518291 -0.680257 -0.518291
--0.518291 0.680257 -0.518291
--0.53542 -0.702738 -0.468492
--0.53542 0.702738 -0.468492
--0.551724 -0.724138 -0.413793
--0.551724 0.724138 -0.413793
--0.566749 -0.743858 -0.354218
--0.566749 0.743858 -0.354218
--0.58 -0.761249 -0.29
--0.58 0.761249 -0.29
--0.590973 -0.775653 -0.221615
--0.590973 0.775653 -0.221615
--0.599205 -0.786456 -0.149801
--0.599205 0.786456 -0.149801
--0.604312 -0.793159 -0.075539
--0.604312 0.793159 -0.075539
--0.606043 -0.795432 0
--0.606043 0.795432 0
--0.604312 -0.793159 0.075539
--0.604312 0.793159 0.075539
--0.599205 -0.786456 0.149801
--0.599205 0.786456 0.149801
--0.590973 -0.775653 0.221615
--0.590973 0.775653 0.221615
--0.58 -0.761249 0.29
--0.58 0.761249 0.29
--0.566749 -0.743858 0.354218
--0.566749 0.743858 0.354218
--0.551724 -0.724138 0.413793
--0.551724 0.724138 0.413793
--0.53542 -0.702738 0.468492
--0.53542 0.702738 0.468492
--0.518291 -0.680257 0.518291
--0.518291 0.680257 0.518291
--0.500734 -0.657213 0.563326
--0.500734 0.657213 0.563326
--0.483077 -0.634039 0.603847
--0.483077 0.634039 0.603847
--0.434749 -0.652124 -0.62107
--0.434749 0.652124 -0.62107
--0.451613 -0.677419 -0.580645
--0.451613 0.677419 -0.580645
--0.468492 -0.702738 -0.53542
--0.468492 0.702738 -0.53542
--0.485071 -0.727607 -0.485071
--0.485071 0.727607 -0.485071
--0.500959 -0.751439 -0.429394
--0.500959 0.751439 -0.429394
--0.515697 -0.773545 -0.368355
--0.515697 0.773545 -0.368355
--0.528773 -0.793159 -0.302156
--0.528773 0.793159 -0.302156
--0.53966 -0.809491 -0.231283
--0.53966 0.809491 -0.231283
--0.547862 -0.821794 -0.156532
--0.547862 0.821794 -0.156532
--0.552967 -0.82945 -0.0789953
--0.552967 0.82945 -0.0789953
--0.5547 -0.83205 0
--0.5547 0.83205 0
--0.552967 -0.82945 0.0789953
--0.552967 0.82945 0.0789953
--0.547862 -0.821794 0.156532
--0.547862 0.821794 0.156532
--0.53966 -0.809491 0.231283
--0.53966 0.809491 0.231283
--0.528773 -0.793159 0.302156
--0.528773 0.793159 0.302156
--0.515697 -0.773545 0.368355
--0.515697 0.773545 0.368355
--0.500959 -0.751439 0.429394
--0.500959 0.751439 0.429394
--0.485071 -0.727607 0.485071
--0.485071 0.727607 0.485071
--0.468492 -0.702738 0.53542
--0.468492 0.702738 0.53542
--0.451613 -0.677419 0.580645
--0.451613 0.677419 0.580645
--0.434749 -0.652124 0.62107
--0.434749 0.652124 0.62107
--0.382352 -0.669116 -0.637253
--0.382352 0.669116 -0.637253
--0.398015 -0.696526 -0.597022
--0.398015 0.696526 -0.597022
--0.413793 -0.724138 -0.551724
--0.413793 0.724138 -0.551724
--0.429394 -0.751439 -0.500959
--0.429394 0.751439 -0.500959
--0.444444 -0.777778 -0.444444
--0.444444 0.777778 -0.444444
--0.458496 -0.802369 -0.38208
--0.458496 0.802369 -0.38208
--0.471041 -0.824322 -0.314027
--0.471041 0.824322 -0.314027
--0.481543 -0.842701 -0.240772
--0.481543 0.842701 -0.240772
--0.48949 -0.856608 -0.163163
--0.48949 0.856608 -0.163163
--0.494451 -0.86529 -0.0824086
--0.494451 0.86529 -0.0824086
--0.496139 -0.868243 0
--0.496139 0.868243 0
--0.494451 -0.86529 0.0824086
--0.494451 0.86529 0.0824086
--0.48949 -0.856608 0.163163
--0.48949 0.856608 0.163163
--0.481543 -0.842701 0.240772
--0.481543 0.842701 0.240772
--0.471041 -0.824322 0.314027
--0.471041 0.824322 0.314027
--0.458496 -0.802369 0.38208
--0.458496 0.802369 0.38208
--0.444444 -0.777778 0.444444
--0.444444 0.777778 0.444444
--0.429394 -0.751439 0.500959
--0.429394 0.751439 0.500959
--0.413793 -0.724138 0.551724
--0.413793 0.724138 0.551724
--0.398015 -0.696526 0.597022
--0.398015 0.696526 0.597022
--0.382352 -0.669116 0.637253
--0.382352 0.669116 0.637253
--0.325991 -0.68458 -0.651981
--0.325991 0.68458 -0.651981
--0.34001 -0.714021 -0.612018
--0.34001 0.714021 -0.612018
--0.354218 -0.743858 -0.566749
--0.354218 0.743858 -0.566749
--0.368355 -0.773545 -0.515697
--0.368355 0.773545 -0.515697
--0.38208 -0.802369 -0.458496
--0.38208 0.802369 -0.458496
--0.394976 -0.82945 -0.394976
--0.394976 0.82945 -0.394976
--0.406558 -0.853771 -0.325246
--0.406558 0.853771 -0.325246
--0.416305 -0.874241 -0.249783
--0.416305 0.874241 -0.249783
--0.423714 -0.889799 -0.169485
--0.423714 0.889799 -0.169485
--0.428353 -0.899541 -0.0856706
--0.428353 0.899541 -0.0856706
--0.429934 -0.902861 0
--0.429934 0.902861 0
--0.428353 -0.899541 0.0856706
--0.428353 0.899541 0.0856706
--0.423714 -0.889799 0.169485
--0.423714 0.889799 0.169485
--0.416305 -0.874241 0.249783
--0.416305 0.874241 0.249783
--0.406558 -0.853771 0.325246
--0.406558 0.853771 0.325246
--0.394976 -0.82945 0.394976
--0.394976 0.82945 0.394976
--0.38208 -0.802369 0.458496
--0.38208 0.802369 0.458496
--0.368355 -0.773545 0.515697
--0.368355 0.773545 0.515697
--0.354218 -0.743858 0.566749
--0.354218 0.743858 0.566749
--0.34001 -0.714021 0.612018
--0.34001 0.714021 0.612018
--0.325991 -0.68458 0.651981
--0.325991 0.68458 0.651981
--0.265929 -0.698064 -0.664822
--0.265929 0.698064 -0.664822
--0.277851 -0.72936 -0.625166
--0.277851 0.72936 -0.625166
--0.29 -0.761249 -0.58
--0.29 0.761249 -0.58
--0.302156 -0.793159 -0.528773
--0.302156 0.793159 -0.528773
--0.314027 -0.824322 -0.471041
--0.314027 0.824322 -0.471041
--0.325246 -0.853771 -0.406558
--0.325246 0.853771 -0.406558
--0.335377 -0.880366 -0.335377
--0.335377 0.880366 -0.335377
--0.343947 -0.902861 -0.25796
--0.343947 0.902861 -0.25796
--0.350486 -0.920027 -0.175243
--0.350486 0.920027 -0.175243
--0.354594 -0.930809 -0.0886484
--0.354594 0.930809 -0.0886484
--0.355995 -0.934488 0
--0.355995 0.934488 0
--0.354594 -0.930809 0.0886484
--0.354594 0.930809 0.0886484
--0.350486 -0.920027 0.175243
--0.350486 0.920027 0.175243
--0.343947 -0.902861 0.25796
--0.343947 0.902861 0.25796
--0.335377 -0.880366 0.335377
--0.335377 0.880366 0.335377
--0.325246 -0.853771 0.406558
--0.325246 0.853771 0.406558
--0.314027 -0.824322 0.471041
--0.314027 0.824322 0.471041
--0.302156 -0.793159 0.528773
--0.302156 0.793159 0.528773
--0.29 -0.761249 0.58
--0.29 0.761249 0.58
--0.277851 -0.72936 0.625166
--0.277851 0.72936 0.625166
--0.265929 -0.698064 0.664822
--0.265929 0.698064 0.664822
--0.202606 -0.70912 -0.675352
--0.202606 0.70912 -0.675352
--0.212 -0.741999 -0.635999
--0.212 0.741999 -0.635999
--0.221615 -0.775653 -0.590973
--0.221615 0.775653 -0.590973
--0.231283 -0.809491 -0.53966
--0.231283 0.809491 -0.53966
--0.240772 -0.842701 -0.481543
--0.240772 0.842701 -0.481543
--0.249783 -0.874241 -0.416305
--0.249783 0.874241 -0.416305
--0.25796 -0.902861 -0.343947
--0.25796 0.902861 -0.343947
--0.264906 -0.927173 -0.264906
--0.264906 0.927173 -0.264906
--0.270226 -0.945792 -0.180151
--0.270226 0.945792 -0.180151
--0.273576 -0.957518 -0.0911922
--0.273576 0.957518 -0.0911922
--0.274721 -0.961524 0
--0.274721 0.961524 0
--0.273576 -0.957518 0.0911922
--0.273576 0.957518 0.0911922
--0.270226 -0.945792 0.180151
--0.270226 0.945792 0.180151
--0.264906 -0.927173 0.264906
--0.264906 0.927173 0.264906
--0.25796 -0.902861 0.343947
--0.25796 0.902861 0.343947
--0.249783 -0.874241 0.416305
--0.249783 0.874241 0.416305
--0.240772 -0.842701 0.481543
--0.240772 0.842701 0.481543
--0.231283 -0.809491 0.53966
--0.231283 0.809491 0.53966
--0.221615 -0.775653 0.590973
--0.221615 0.775653 0.590973
--0.212 -0.741999 0.635999
--0.212 0.741999 0.635999
--0.202606 -0.70912 0.675352
--0.202606 0.70912 0.675352
--0.136637 -0.717346 -0.683187
--0.136637 0.717346 -0.683187
--0.143131 -0.751439 -0.644091
--0.143131 0.751439 -0.644091
--0.149801 -0.786456 -0.599205
--0.149801 0.786456 -0.599205
--0.156532 -0.821794 -0.547862
--0.156532 0.821794 -0.547862
--0.163163 -0.856608 -0.48949
--0.163163 0.856608 -0.48949
--0.169485 -0.889799 -0.423714
--0.169485 0.889799 -0.423714
--0.175243 -0.920027 -0.350486
--0.175243 0.920027 -0.350486
--0.180151 -0.945792 -0.270226
--0.180151 0.945792 -0.270226
--0.18392 -0.965581 -0.18392
--0.18392 0.965581 -0.18392
--0.186299 -0.978068 -0.0931493
--0.186299 0.978068 -0.0931493
--0.187112 -0.982339 0
--0.187112 0.982339 0
--0.186299 -0.978068 0.0931493
--0.186299 0.978068 0.0931493
--0.18392 -0.965581 0.18392
--0.18392 0.965581 0.18392
--0.180151 -0.945792 0.270226
--0.180151 0.945792 0.270226
--0.175243 -0.920027 0.350486
--0.175243 0.920027 0.350486
--0.169485 -0.889799 0.423714
--0.169485 0.889799 0.423714
--0.163163 -0.856608 0.48949
--0.163163 0.856608 0.48949
--0.156532 -0.821794 0.547862
--0.156532 0.821794 0.547862
--0.149801 -0.786456 0.599205
--0.149801 0.786456 0.599205
--0.143131 -0.751439 0.644091
--0.143131 0.751439 0.644091
--0.136637 -0.717346 0.683187
--0.136637 0.717346 0.683187
--0.0688021 -0.722422 -0.688021
--0.0688021 0.722422 -0.688021
--0.0721218 -0.757279 -0.649097
--0.0721218 0.757279 -0.649097
--0.075539 -0.793159 -0.604312
--0.075539 0.793159 -0.604312
--0.0789953 -0.82945 -0.552967
--0.0789953 0.82945 -0.552967
--0.0824086 -0.86529 -0.494451
--0.0824086 0.86529 -0.494451
--0.0856706 -0.899541 -0.428353
--0.0856706 0.899541 -0.428353
--0.0886484 -0.930809 -0.354594
--0.0886484 0.930809 -0.354594
--0.0911922 -0.957518 -0.273576
--0.0911922 0.957518 -0.273576
--0.0931493 -0.978068 -0.186299
--0.0931493 0.978068 -0.186299
--0.0943858 -0.991051 -0.0943858
--0.0943858 0.991051 -0.0943858
--0.0948091 -0.995495 0
--0.0948091 0.995495 0
--0.0943858 -0.991051 0.0943858
--0.0943858 0.991051 0.0943858
--0.0931493 -0.978068 0.186299
--0.0931493 0.978068 0.186299
--0.0911922 -0.957518 0.273576
--0.0911922 0.957518 0.273576
--0.0886484 -0.930809 0.354594
--0.0886484 0.930809 0.354594
--0.0856706 -0.899541 0.428353
--0.0856706 0.899541 0.428353
--0.0824086 -0.86529 0.494451
--0.0824086 0.86529 0.494451
--0.0789953 -0.82945 0.552967
--0.0789953 0.82945 0.552967
--0.075539 -0.793159 0.604312
--0.075539 0.793159 0.604312
--0.0721218 -0.757279 0.649097
--0.0721218 0.757279 0.649097
--0.0688021 -0.722422 0.688021
--0.0688021 0.722422 0.688021
-0 -0.724138 -0.689655
-0 0.724138 -0.689655
-0 -0.759257 -0.650791
-0 0.759257 -0.650791
-0 -0.795432 -0.606043
-0 0.795432 -0.606043
-0 -0.83205 -0.5547
-0 0.83205 -0.5547
-0 -0.868243 -0.496139
-0 0.868243 -0.496139
-0 -0.902861 -0.429934
-0 0.902861 -0.429934
-0 -0.934488 -0.355995
-0 0.934488 -0.355995
-0 -0.961524 -0.274721
-0 0.961524 -0.274721
-0 -0.982339 -0.187112
-0 0.982339 -0.187112
-0 -0.995495 -0.0948091
-0 0.995495 -0.0948091
-0 -1 0
-0 1 0
-0 -0.995495 0.0948091
-0 0.995495 0.0948091
-0 -0.982339 0.187112
-0 0.982339 0.187112
-0 -0.961524 0.274721
-0 0.961524 0.274721
-0 -0.934488 0.355995
-0 0.934488 0.355995
-0 -0.902861 0.429934
-0 0.902861 0.429934
-0 -0.868243 0.496139
-0 0.868243 0.496139
-0 -0.83205 0.5547
-0 0.83205 0.5547
-0 -0.795432 0.606043
-0 0.795432 0.606043
-0 -0.759257 0.650791
-0 0.759257 0.650791
-0 -0.724138 0.689655
-0 0.724138 0.689655
-0.0688021 -0.722422 -0.688021
-0.0688021 0.722422 -0.688021
-0.0721218 -0.757279 -0.649097
-0.0721218 0.757279 -0.649097
-0.075539 -0.793159 -0.604312
-0.075539 0.793159 -0.604312
-0.0789953 -0.82945 -0.552967
-0.0789953 0.82945 -0.552967
-0.0824086 -0.86529 -0.494451
-0.0824086 0.86529 -0.494451
-0.0856706 -0.899541 -0.428353
-0.0856706 0.899541 -0.428353
-0.0886484 -0.930809 -0.354594
-0.0886484 0.930809 -0.354594
-0.0911922 -0.957518 -0.273576
-0.0911922 0.957518 -0.273576
-0.0931493 -0.978068 -0.186299
-0.0931493 0.978068 -0.186299
-0.0943858 -0.991051 -0.0943858
-0.0943858 0.991051 -0.0943858
-0.0948091 -0.995495 0
-0.0948091 0.995495 0
-0.0943858 -0.991051 0.0943858
-0.0943858 0.991051 0.0943858
-0.0931493 -0.978068 0.186299
-0.0931493 0.978068 0.186299
-0.0911922 -0.957518 0.273576
-0.0911922 0.957518 0.273576
-0.0886484 -0.930809 0.354594
-0.0886484 0.930809 0.354594
-0.0856706 -0.899541 0.428353
-0.0856706 0.899541 0.428353
-0.0824086 -0.86529 0.494451
-0.0824086 0.86529 0.494451
-0.0789953 -0.82945 0.552967
-0.0789953 0.82945 0.552967
-0.075539 -0.793159 0.604312
-0.075539 0.793159 0.604312
-0.0721218 -0.757279 0.649097
-0.0721218 0.757279 0.649097
-0.0688021 -0.722422 0.688021
-0.0688021 0.722422 0.688021
-0.136637 -0.717346 -0.683187
-0.136637 0.717346 -0.683187
-0.143131 -0.751439 -0.644091
-0.143131 0.751439 -0.644091
-0.149801 -0.786456 -0.599205
-0.149801 0.786456 -0.599205
-0.156532 -0.821794 -0.547862
-0.156532 0.821794 -0.547862
-0.163163 -0.856608 -0.48949
-0.163163 0.856608 -0.48949
-0.169485 -0.889799 -0.423714
-0.169485 0.889799 -0.423714
-0.175243 -0.920027 -0.350486
-0.175243 0.920027 -0.350486
-0.180151 -0.945792 -0.270226
-0.180151 0.945792 -0.270226
-0.18392 -0.965581 -0.18392
-0.18392 0.965581 -0.18392
-0.186299 -0.978068 -0.0931493
-0.186299 0.978068 -0.0931493
-0.187112 -0.982339 0
-0.187112 0.982339 0
-0.186299 -0.978068 0.0931493
-0.186299 0.978068 0.0931493
-0.18392 -0.965581 0.18392
-0.18392 0.965581 0.18392
-0.180151 -0.945792 0.270226
-0.180151 0.945792 0.270226
-0.175243 -0.920027 0.350486
-0.175243 0.920027 0.350486
-0.169485 -0.889799 0.423714
-0.169485 0.889799 0.423714
-0.163163 -0.856608 0.48949
-0.163163 0.856608 0.48949
-0.156532 -0.821794 0.547862
-0.156532 0.821794 0.547862
-0.149801 -0.786456 0.599205
-0.149801 0.786456 0.599205
-0.143131 -0.751439 0.644091
-0.143131 0.751439 0.644091
-0.136637 -0.717346 0.683187
-0.136637 0.717346 0.683187
-0.202606 -0.70912 -0.675352
-0.202606 0.70912 -0.675352
-0.212 -0.741999 -0.635999
-0.212 0.741999 -0.635999
-0.221615 -0.775653 -0.590973
-0.221615 0.775653 -0.590973
-0.231283 -0.809491 -0.53966
-0.231283 0.809491 -0.53966
-0.240772 -0.842701 -0.481543
-0.240772 0.842701 -0.481543
-0.249783 -0.874241 -0.416305
-0.249783 0.874241 -0.416305
-0.25796 -0.902861 -0.343947
-0.25796 0.902861 -0.343947
-0.264906 -0.927173 -0.264906
-0.264906 0.927173 -0.264906
-0.270226 -0.945792 -0.180151
-0.270226 0.945792 -0.180151
-0.273576 -0.957518 -0.0911922
-0.273576 0.957518 -0.0911922
-0.274721 -0.961524 0
-0.274721 0.961524 0
-0.273576 -0.957518 0.0911922
-0.273576 0.957518 0.0911922
-0.270226 -0.945792 0.180151
-0.270226 0.945792 0.180151
-0.264906 -0.927173 0.264906
-0.264906 0.927173 0.264906
-0.25796 -0.902861 0.343947
-0.25796 0.902861 0.343947
-0.249783 -0.874241 0.416305
-0.249783 0.874241 0.416305
-0.240772 -0.842701 0.481543
-0.240772 0.842701 0.481543
-0.231283 -0.809491 0.53966
-0.231283 0.809491 0.53966
-0.221615 -0.775653 0.590973
-0.221615 0.775653 0.590973
-0.212 -0.741999 0.635999
-0.212 0.741999 0.635999
-0.202606 -0.70912 0.675352
-0.202606 0.70912 0.675352
-0.265929 -0.698064 -0.664822
-0.265929 0.698064 -0.664822
-0.277851 -0.72936 -0.625166
-0.277851 0.72936 -0.625166
-0.29 -0.761249 -0.58
-0.29 0.761249 -0.58
-0.302156 -0.793159 -0.528773
-0.302156 0.793159 -0.528773
-0.314027 -0.824322 -0.471041
-0.314027 0.824322 -0.471041
-0.325246 -0.853771 -0.406558
-0.325246 0.853771 -0.406558
-0.335377 -0.880366 -0.335377
-0.335377 0.880366 -0.335377
-0.343947 -0.902861 -0.25796
-0.343947 0.902861 -0.25796
-0.350486 -0.920027 -0.175243
-0.350486 0.920027 -0.175243
-0.354594 -0.930809 -0.0886484
-0.354594 0.930809 -0.0886484
-0.355995 -0.934488 0
-0.355995 0.934488 0
-0.354594 -0.930809 0.0886484
-0.354594 0.930809 0.0886484
-0.350486 -0.920027 0.175243
-0.350486 0.920027 0.175243
-0.343947 -0.902861 0.25796
-0.343947 0.902861 0.25796
-0.335377 -0.880366 0.335377
-0.335377 0.880366 0.335377
-0.325246 -0.853771 0.406558
-0.325246 0.853771 0.406558
-0.314027 -0.824322 0.471041
-0.314027 0.824322 0.471041
-0.302156 -0.793159 0.528773
-0.302156 0.793159 0.528773
-0.29 -0.761249 0.58
-0.29 0.761249 0.58
-0.277851 -0.72936 0.625166
-0.277851 0.72936 0.625166
-0.265929 -0.698064 0.664822
-0.265929 0.698064 0.664822
-0.325991 -0.68458 -0.651981
-0.325991 0.68458 -0.651981
-0.34001 -0.714021 -0.612018
-0.34001 0.714021 -0.612018
-0.354218 -0.743858 -0.566749
-0.354218 0.743858 -0.566749
-0.368355 -0.773545 -0.515697
-0.368355 0.773545 -0.515697
-0.38208 -0.802369 -0.458496
-0.38208 0.802369 -0.458496
-0.394976 -0.82945 -0.394976
-0.394976 0.82945 -0.394976
-0.406558 -0.853771 -0.325246
-0.406558 0.853771 -0.325246
-0.416305 -0.874241 -0.249783
-0.416305 0.874241 -0.249783
-0.423714 -0.889799 -0.169485
-0.423714 0.889799 -0.169485
-0.428353 -0.899541 -0.0856706
-0.428353 0.899541 -0.0856706
-0.429934 -0.902861 0
-0.429934 0.902861 0
-0.428353 -0.899541 0.0856706
-0.428353 0.899541 0.0856706
-0.423714 -0.889799 0.169485
-0.423714 0.889799 0.169485
-0.416305 -0.874241 0.249783
-0.416305 0.874241 0.249783
-0.406558 -0.853771 0.325246
-0.406558 0.853771 0.325246
-0.394976 -0.82945 0.394976
-0.394976 0.82945 0.394976
-0.38208 -0.802369 0.458496
-0.38208 0.802369 0.458496
-0.368355 -0.773545 0.515697
-0.368355 0.773545 0.515697
-0.354218 -0.743858 0.566749
-0.354218 0.743858 0.566749
-0.34001 -0.714021 0.612018
-0.34001 0.714021 0.612018
-0.325991 -0.68458 0.651981
-0.325991 0.68458 0.651981
-0.382352 -0.669116 -0.637253
-0.382352 0.669116 -0.637253
-0.398015 -0.696526 -0.597022
-0.398015 0.696526 -0.597022
-0.413793 -0.724138 -0.551724
-0.413793 0.724138 -0.551724
-0.429394 -0.751439 -0.500959
-0.429394 0.751439 -0.500959
-0.444444 -0.777778 -0.444444
-0.444444 0.777778 -0.444444
-0.458496 -0.802369 -0.38208
-0.458496 0.802369 -0.38208
-0.471041 -0.824322 -0.314027
-0.471041 0.824322 -0.314027
-0.481543 -0.842701 -0.240772
-0.481543 0.842701 -0.240772
-0.48949 -0.856608 -0.163163
-0.48949 0.856608 -0.163163
-0.494451 -0.86529 -0.0824086
-0.494451 0.86529 -0.0824086
-0.496139 -0.868243 0
-0.496139 0.868243 0
-0.494451 -0.86529 0.0824086
-0.494451 0.86529 0.0824086
-0.48949 -0.856608 0.163163
-0.48949 0.856608 0.163163
-0.481543 -0.842701 0.240772
-0.481543 0.842701 0.240772
-0.471041 -0.824322 0.314027
-0.471041 0.824322 0.314027
-0.458496 -0.802369 0.38208
-0.458496 0.802369 0.38208
-0.444444 -0.777778 0.444444
-0.444444 0.777778 0.444444
-0.429394 -0.751439 0.500959
-0.429394 0.751439 0.500959
-0.413793 -0.724138 0.551724
-0.413793 0.724138 0.551724
-0.398015 -0.696526 0.597022
-0.398015 0.696526 0.597022
-0.382352 -0.669116 0.637253
-0.382352 0.669116 0.637253
-0.434749 -0.652124 -0.62107
-0.434749 0.652124 -0.62107
-0.451613 -0.677419 -0.580645
-0.451613 0.677419 -0.580645
-0.468492 -0.702738 -0.53542
-0.468492 0.702738 -0.53542
-0.485071 -0.727607 -0.485071
-0.485071 0.727607 -0.485071
-0.500959 -0.751439 -0.429394
-0.500959 0.751439 -0.429394
-0.515697 -0.773545 -0.368355
-0.515697 0.773545 -0.368355
-0.528773 -0.793159 -0.302156
-0.528773 0.793159 -0.302156
-0.53966 -0.809491 -0.231283
-0.53966 0.809491 -0.231283
-0.547862 -0.821794 -0.156532
-0.547862 0.821794 -0.156532
-0.552967 -0.82945 -0.0789953
-0.552967 0.82945 -0.0789953
-0.5547 -0.83205 0
-0.5547 0.83205 0
-0.552967 -0.82945 0.0789953
-0.552967 0.82945 0.0789953
-0.547862 -0.821794 0.156532
-0.547862 0.821794 0.156532
-0.53966 -0.809491 0.231283
-0.53966 0.809491 0.231283
-0.528773 -0.793159 0.302156
-0.528773 0.793159 0.302156
-0.515697 -0.773545 0.368355
-0.515697 0.773545 0.368355
-0.500959 -0.751439 0.429394
-0.500959 0.751439 0.429394
-0.485071 -0.727607 0.485071
-0.485071 0.727607 0.485071
-0.468492 -0.702738 0.53542
-0.468492 0.702738 0.53542
-0.451613 -0.677419 0.580645
-0.451613 0.677419 0.580645
-0.434749 -0.652124 0.62107
-0.434749 0.652124 0.62107
-0.483077 -0.634039 -0.603847
-0.483077 0.634039 -0.603847
-0.500734 -0.657213 -0.563326
-0.500734 0.657213 -0.563326
-0.518291 -0.680257 -0.518291
-0.518291 0.680257 -0.518291
-0.53542 -0.702738 -0.468492
-0.53542 0.702738 -0.468492
-0.551724 -0.724138 -0.413793
-0.551724 0.724138 -0.413793
-0.566749 -0.743858 -0.354218
-0.566749 0.743858 -0.354218
-0.58 -0.761249 -0.29
-0.58 0.761249 -0.29
-0.590973 -0.775653 -0.221615
-0.590973 0.775653 -0.221615
-0.599205 -0.786456 -0.149801
-0.599205 0.786456 -0.149801
-0.604312 -0.793159 -0.075539
-0.604312 0.793159 -0.075539
-0.606043 -0.795432 0
-0.606043 0.795432 0
-0.604312 -0.793159 0.075539
-0.604312 0.793159 0.075539
-0.599205 -0.786456 0.149801
-0.599205 0.786456 0.149801
-0.590973 -0.775653 0.221615
-0.590973 0.775653 0.221615
-0.58 -0.761249 0.29
-0.58 0.761249 0.29
-0.566749 -0.743858 0.354218
-0.566749 0.743858 0.354218
-0.551724 -0.724138 0.413793
-0.551724 0.724138 0.413793
-0.53542 -0.702738 0.468492
-0.53542 0.702738 0.468492
-0.518291 -0.680257 0.518291
-0.518291 0.680257 0.518291
-0.500734 -0.657213 0.563326
-0.500734 0.657213 0.563326
-0.483077 -0.634039 0.603847
-0.483077 0.634039 0.603847
-0.527363 -0.615257 -0.585959
-0.527363 0.615257 -0.585959
-0.545455 -0.636364 -0.545455
-0.545455 0.636364 -0.545455
-0.563326 -0.657213 -0.500734
-0.563326 0.657213 -0.500734
-0.580645 -0.677419 -0.451613
-0.580645 0.677419 -0.451613
-0.597022 -0.696526 -0.398015
-0.597022 0.696526 -0.398015
-0.612018 -0.714021 -0.34001
-0.612018 0.714021 -0.34001
-0.625166 -0.72936 -0.277851
-0.625166 0.72936 -0.277851
-0.635999 -0.741999 -0.212
-0.635999 0.741999 -0.212
-0.644091 -0.751439 -0.143131
-0.644091 0.751439 -0.143131
-0.649097 -0.757279 -0.0721218
-0.649097 0.757279 -0.0721218
-0.650791 -0.759257 0
-0.650791 0.759257 0
-0.649097 -0.757279 0.0721218
-0.649097 0.757279 0.0721218
-0.644091 -0.751439 0.143131
-0.644091 0.751439 0.143131
-0.635999 -0.741999 0.212
-0.635999 0.741999 0.212
-0.625166 -0.72936 0.277851
-0.625166 0.72936 0.277851
-0.612018 -0.714021 0.34001
-0.612018 0.714021 0.34001
-0.597022 -0.696526 0.398015
-0.597022 0.696526 0.398015
-0.580645 -0.677419 0.451613
-0.580645 0.677419 0.451613
-0.563326 -0.657213 0.500734
-0.563326 0.657213 0.500734
-0.545455 -0.636364 0.545455
-0.545455 0.636364 0.545455
-0.527363 -0.615257 0.585959
-0.527363 0.615257 0.585959
-0.567733 -0.59612 -0.567733
-0.567733 0.59612 -0.567733
-0.585959 -0.615257 -0.527363
-0.585959 0.615257 -0.527363
-0.603847 -0.634039 -0.483077
-0.603847 0.634039 -0.483077
-0.62107 -0.652124 -0.434749
-0.62107 0.652124 -0.434749
-0.637253 -0.669116 -0.382352
-0.637253 0.669116 -0.382352
-0.651981 -0.68458 -0.325991
-0.651981 0.68458 -0.325991
-0.664822 -0.698064 -0.265929
-0.664822 0.698064 -0.265929
-0.675352 -0.70912 -0.202606
-0.675352 0.70912 -0.202606
-0.683187 -0.717346 -0.136637
-0.683187 0.717346 -0.136637
-0.688021 -0.722422 -0.0688021
-0.688021 0.722422 -0.0688021
-0.689655 -0.724138 0
-0.689655 0.724138 0
-0.688021 -0.722422 0.0688021
-0.688021 0.722422 0.0688021
-0.683187 -0.717346 0.136637
-0.683187 0.717346 0.136637
-0.675352 -0.70912 0.202606
-0.675352 0.70912 0.202606
-0.664822 -0.698064 0.265929
-0.664822 0.698064 0.265929
-0.651981 -0.68458 0.325991
-0.651981 0.68458 0.325991
-0.637253 -0.669116 0.382352
-0.637253 0.669116 0.382352
-0.62107 -0.652124 0.434749
-0.62107 0.652124 0.434749
-0.603847 -0.634039 0.483077
-0.603847 0.634039 0.483077
-0.585959 -0.615257 0.527363
-0.585959 0.615257 0.527363
-0.567733 -0.59612 0.567733
-0.567733 0.59612 0.567733
--0.567733 -0.567733 -0.59612
--0.567733 -0.567733 0.59612
--0.585959 -0.527363 -0.615257
--0.585959 -0.527363 0.615257
--0.603847 -0.483077 -0.634039
--0.603847 -0.483077 0.634039
--0.62107 -0.434749 -0.652124
--0.62107 -0.434749 0.652124
--0.637253 -0.382352 -0.669116
--0.637253 -0.382352 0.669116
--0.651981 -0.325991 -0.68458
--0.651981 -0.325991 0.68458
--0.664822 -0.265929 -0.698064
--0.664822 -0.265929 0.698064
--0.675352 -0.202606 -0.70912
--0.675352 -0.202606 0.70912
--0.683187 -0.136637 -0.717346
--0.683187 -0.136637 0.717346
--0.688021 -0.0688021 -0.722422
--0.688021 -0.0688021 0.722422
--0.689655 0 -0.724138
--0.689655 0 0.724138
--0.688021 0.0688021 -0.722422
--0.688021 0.0688021 0.722422
--0.683187 0.136637 -0.717346
--0.683187 0.136637 0.717346
--0.675352 0.202606 -0.70912
--0.675352 0.202606 0.70912
--0.664822 0.265929 -0.698064
--0.664822 0.265929 0.698064
--0.651981 0.325991 -0.68458
--0.651981 0.325991 0.68458
--0.637253 0.382352 -0.669116
--0.637253 0.382352 0.669116
--0.62107 0.434749 -0.652124
--0.62107 0.434749 0.652124
--0.603847 0.483077 -0.634039
--0.603847 0.483077 0.634039
--0.585959 0.527363 -0.615257
--0.585959 0.527363 0.615257
--0.567733 0.567733 -0.59612
--0.567733 0.567733 0.59612
--0.527363 -0.585959 -0.615257
--0.527363 -0.585959 0.615257
--0.545455 -0.545455 -0.636364
--0.545455 -0.545455 0.636364
--0.563326 -0.500734 -0.657213
--0.563326 -0.500734 0.657213
--0.580645 -0.451613 -0.677419
--0.580645 -0.451613 0.677419
--0.597022 -0.398015 -0.696526
--0.597022 -0.398015 0.696526
--0.612018 -0.34001 -0.714021
--0.612018 -0.34001 0.714021
--0.625166 -0.277851 -0.72936
--0.625166 -0.277851 0.72936
--0.635999 -0.212 -0.741999
--0.635999 -0.212 0.741999
--0.644091 -0.143131 -0.751439
--0.644091 -0.143131 0.751439
--0.649097 -0.0721218 -0.757279
--0.649097 -0.0721218 0.757279
--0.650791 0 -0.759257
--0.650791 0 0.759257
--0.649097 0.0721218 -0.757279
--0.649097 0.0721218 0.757279
--0.644091 0.143131 -0.751439
--0.644091 0.143131 0.751439
--0.635999 0.212 -0.741999
--0.635999 0.212 0.741999
--0.625166 0.277851 -0.72936
--0.625166 0.277851 0.72936
--0.612018 0.34001 -0.714021
--0.612018 0.34001 0.714021
--0.597022 0.398015 -0.696526
--0.597022 0.398015 0.696526
--0.580645 0.451613 -0.677419
--0.580645 0.451613 0.677419
--0.563326 0.500734 -0.657213
--0.563326 0.500734 0.657213
--0.545455 0.545455 -0.636364
--0.545455 0.545455 0.636364
--0.527363 0.585959 -0.615257
--0.527363 0.585959 0.615257
--0.483077 -0.603847 -0.634039
--0.483077 -0.603847 0.634039
--0.500734 -0.563326 -0.657213
--0.500734 -0.563326 0.657213
--0.518291 -0.518291 -0.680257
--0.518291 -0.518291 0.680257
--0.53542 -0.468492 -0.702738
--0.53542 -0.468492 0.702738
--0.551724 -0.413793 -0.724138
--0.551724 -0.413793 0.724138
--0.566749 -0.354218 -0.743858
--0.566749 -0.354218 0.743858
--0.58 -0.29 -0.761249
--0.58 -0.29 0.761249
--0.590973 -0.221615 -0.775653
--0.590973 -0.221615 0.775653
--0.599205 -0.149801 -0.786456
--0.599205 -0.149801 0.786456
--0.604312 -0.075539 -0.793159
--0.604312 -0.075539 0.793159
--0.606043 0 -0.795432
--0.606043 0 0.795432
--0.604312 0.075539 -0.793159
--0.604312 0.075539 0.793159
--0.599205 0.149801 -0.786456
--0.599205 0.149801 0.786456
--0.590973 0.221615 -0.775653
--0.590973 0.221615 0.775653
--0.58 0.29 -0.761249
--0.58 0.29 0.761249
--0.566749 0.354218 -0.743858
--0.566749 0.354218 0.743858
--0.551724 0.413793 -0.724138
--0.551724 0.413793 0.724138
--0.53542 0.468492 -0.702738
--0.53542 0.468492 0.702738
--0.518291 0.518291 -0.680257
--0.518291 0.518291 0.680257
--0.500734 0.563326 -0.657213
--0.500734 0.563326 0.657213
--0.483077 0.603847 -0.634039
--0.483077 0.603847 0.634039
--0.434749 -0.62107 -0.652124
--0.434749 -0.62107 0.652124
--0.451613 -0.580645 -0.677419
--0.451613 -0.580645 0.677419
--0.468492 -0.53542 -0.702738
--0.468492 -0.53542 0.702738
--0.485071 -0.485071 -0.727607
--0.485071 -0.485071 0.727607
--0.500959 -0.429394 -0.751439
--0.500959 -0.429394 0.751439
--0.515697 -0.368355 -0.773545
--0.515697 -0.368355 0.773545
--0.528773 -0.302156 -0.793159
--0.528773 -0.302156 0.793159
--0.53966 -0.231283 -0.809491
--0.53966 -0.231283 0.809491
--0.547862 -0.156532 -0.821794
--0.547862 -0.156532 0.821794
--0.552967 -0.0789953 -0.82945
--0.552967 -0.0789953 0.82945
--0.5547 0 -0.83205
--0.5547 0 0.83205
--0.552967 0.0789953 -0.82945
--0.552967 0.0789953 0.82945
--0.547862 0.156532 -0.821794
--0.547862 0.156532 0.821794
--0.53966 0.231283 -0.809491
--0.53966 0.231283 0.809491
--0.528773 0.302156 -0.793159
--0.528773 0.302156 0.793159
--0.515697 0.368355 -0.773545
--0.515697 0.368355 0.773545
--0.500959 0.429394 -0.751439
--0.500959 0.429394 0.751439
--0.485071 0.485071 -0.727607
--0.485071 0.485071 0.727607
--0.468492 0.53542 -0.702738
--0.468492 0.53542 0.702738
--0.451613 0.580645 -0.677419
--0.451613 0.580645 0.677419
--0.434749 0.62107 -0.652124
--0.434749 0.62107 0.652124
--0.382352 -0.637253 -0.669116
--0.382352 -0.637253 0.669116
--0.398015 -0.597022 -0.696526
--0.398015 -0.597022 0.696526
--0.413793 -0.551724 -0.724138
--0.413793 -0.551724 0.724138
--0.429394 -0.500959 -0.751439
--0.429394 -0.500959 0.751439
--0.444444 -0.444444 -0.777778
--0.444444 -0.444444 0.777778
--0.458496 -0.38208 -0.802369
--0.458496 -0.38208 0.802369
--0.471041 -0.314027 -0.824322
--0.471041 -0.314027 0.824322
--0.481543 -0.240772 -0.842701
--0.481543 -0.240772 0.842701
--0.48949 -0.163163 -0.856608
--0.48949 -0.163163 0.856608
--0.494451 -0.0824086 -0.86529
--0.494451 -0.0824086 0.86529
--0.496139 0 -0.868243
--0.496139 0 0.868243
--0.494451 0.0824086 -0.86529
--0.494451 0.0824086 0.86529
--0.48949 0.163163 -0.856608
--0.48949 0.163163 0.856608
--0.481543 0.240772 -0.842701
--0.481543 0.240772 0.842701
--0.471041 0.314027 -0.824322
--0.471041 0.314027 0.824322
--0.458496 0.38208 -0.802369
--0.458496 0.38208 0.802369
--0.444444 0.444444 -0.777778
--0.444444 0.444444 0.777778
--0.429394 0.500959 -0.751439
--0.429394 0.500959 0.751439
--0.413793 0.551724 -0.724138
--0.413793 0.551724 0.724138
--0.398015 0.597022 -0.696526
--0.398015 0.597022 0.696526
--0.382352 0.637253 -0.669116
--0.382352 0.637253 0.669116
--0.325991 -0.651981 -0.68458
--0.325991 -0.651981 0.68458
--0.34001 -0.612018 -0.714021
--0.34001 -0.612018 0.714021
--0.354218 -0.566749 -0.743858
--0.354218 -0.566749 0.743858
--0.368355 -0.515697 -0.773545
--0.368355 -0.515697 0.773545
--0.38208 -0.458496 -0.802369
--0.38208 -0.458496 0.802369
--0.394976 -0.394976 -0.82945
--0.394976 -0.394976 0.82945
--0.406558 -0.325246 -0.853771
--0.406558 -0.325246 0.853771
--0.416305 -0.249783 -0.874241
--0.416305 -0.249783 0.874241
--0.423714 -0.169485 -0.889799
--0.423714 -0.169485 0.889799
--0.428353 -0.0856706 -0.899541
--0.428353 -0.0856706 0.899541
--0.429934 0 -0.902861
--0.429934 0 0.902861
--0.428353 0.0856706 -0.899541
--0.428353 0.0856706 0.899541
--0.423714 0.169485 -0.889799
--0.423714 0.169485 0.889799
--0.416305 0.249783 -0.874241
--0.416305 0.249783 0.874241
--0.406558 0.325246 -0.853771
--0.406558 0.325246 0.853771
--0.394976 0.394976 -0.82945
--0.394976 0.394976 0.82945
--0.38208 0.458496 -0.802369
--0.38208 0.458496 0.802369
--0.368355 0.515697 -0.773545
--0.368355 0.515697 0.773545
--0.354218 0.566749 -0.743858
--0.354218 0.566749 0.743858
--0.34001 0.612018 -0.714021
--0.34001 0.612018 0.714021
--0.325991 0.651981 -0.68458
--0.325991 0.651981 0.68458
--0.265929 -0.664822 -0.698064
--0.265929 -0.664822 0.698064
--0.277851 -0.625166 -0.72936
--0.277851 -0.625166 0.72936
--0.29 -0.58 -0.761249
--0.29 -0.58 0.761249
--0.302156 -0.528773 -0.793159
--0.302156 -0.528773 0.793159
--0.314027 -0.471041 -0.824322
--0.314027 -0.471041 0.824322
--0.325246 -0.406558 -0.853771
--0.325246 -0.406558 0.853771
--0.335377 -0.335377 -0.880366
--0.335377 -0.335377 0.880366
--0.343947 -0.25796 -0.902861
--0.343947 -0.25796 0.902861
--0.350486 -0.175243 -0.920027
--0.350486 -0.175243 0.920027
--0.354594 -0.0886484 -0.930809
--0.354594 -0.0886484 0.930809
--0.355995 0 -0.934488
--0.355995 0 0.934488
--0.354594 0.0886484 -0.930809
--0.354594 0.0886484 0.930809
--0.350486 0.175243 -0.920027
--0.350486 0.175243 0.920027
--0.343947 0.25796 -0.902861
--0.343947 0.25796 0.902861
--0.335377 0.335377 -0.880366
--0.335377 0.335377 0.880366
--0.325246 0.406558 -0.853771
--0.325246 0.406558 0.853771
--0.314027 0.471041 -0.824322
--0.314027 0.471041 0.824322
--0.302156 0.528773 -0.793159
--0.302156 0.528773 0.793159
--0.29 0.58 -0.761249
--0.29 0.58 0.761249
--0.277851 0.625166 -0.72936
--0.277851 0.625166 0.72936
--0.265929 0.664822 -0.698064
--0.265929 0.664822 0.698064
--0.202606 -0.675352 -0.70912
--0.202606 -0.675352 0.70912
--0.212 -0.635999 -0.741999
--0.212 -0.635999 0.741999
--0.221615 -0.590973 -0.775653
--0.221615 -0.590973 0.775653
--0.231283 -0.53966 -0.809491
--0.231283 -0.53966 0.809491
--0.240772 -0.481543 -0.842701
--0.240772 -0.481543 0.842701
--0.249783 -0.416305 -0.874241
--0.249783 -0.416305 0.874241
--0.25796 -0.343947 -0.902861
--0.25796 -0.343947 0.902861
--0.264906 -0.264906 -0.927173
--0.264906 -0.264906 0.927173
--0.270226 -0.180151 -0.945792
--0.270226 -0.180151 0.945792
--0.273576 -0.0911922 -0.957518
--0.273576 -0.0911922 0.957518
--0.274721 0 -0.961524
--0.274721 0 0.961524
--0.273576 0.0911922 -0.957518
--0.273576 0.0911922 0.957518
--0.270226 0.180151 -0.945792
--0.270226 0.180151 0.945792
--0.264906 0.264906 -0.927173
--0.264906 0.264906 0.927173
--0.25796 0.343947 -0.902861
--0.25796 0.343947 0.902861
--0.249783 0.416305 -0.874241
--0.249783 0.416305 0.874241
--0.240772 0.481543 -0.842701
--0.240772 0.481543 0.842701
--0.231283 0.53966 -0.809491
--0.231283 0.53966 0.809491
--0.221615 0.590973 -0.775653
--0.221615 0.590973 0.775653
--0.212 0.635999 -0.741999
--0.212 0.635999 0.741999
--0.202606 0.675352 -0.70912
--0.202606 0.675352 0.70912
--0.136637 -0.683187 -0.717346
--0.136637 -0.683187 0.717346
--0.143131 -0.644091 -0.751439
--0.143131 -0.644091 0.751439
--0.149801 -0.599205 -0.786456
--0.149801 -0.599205 0.786456
--0.156532 -0.547862 -0.821794
--0.156532 -0.547862 0.821794
--0.163163 -0.48949 -0.856608
--0.163163 -0.48949 0.856608
--0.169485 -0.423714 -0.889799
--0.169485 -0.423714 0.889799
--0.175243 -0.350486 -0.920027
--0.175243 -0.350486 0.920027
--0.180151 -0.270226 -0.945792
--0.180151 -0.270226 0.945792
--0.18392 -0.18392 -0.965581
--0.18392 -0.18392 0.965581
--0.186299 -0.0931493 -0.978068
--0.186299 -0.0931493 0.978068
--0.187112 0 -0.982339
--0.187112 0 0.982339
--0.186299 0.0931493 -0.978068
--0.186299 0.0931493 0.978068
--0.18392 0.18392 -0.965581
--0.18392 0.18392 0.965581
--0.180151 0.270226 -0.945792
--0.180151 0.270226 0.945792
--0.175243 0.350486 -0.920027
--0.175243 0.350486 0.920027
--0.169485 0.423714 -0.889799
--0.169485 0.423714 0.889799
--0.163163 0.48949 -0.856608
--0.163163 0.48949 0.856608
--0.156532 0.547862 -0.821794
--0.156532 0.547862 0.821794
--0.149801 0.599205 -0.786456
--0.149801 0.599205 0.786456
--0.143131 0.644091 -0.751439
--0.143131 0.644091 0.751439
--0.136637 0.683187 -0.717346
--0.136637 0.683187 0.717346
--0.0688021 -0.688021 -0.722422
--0.0688021 -0.688021 0.722422
--0.0721218 -0.649097 -0.757279
--0.0721218 -0.649097 0.757279
--0.075539 -0.604312 -0.793159
--0.075539 -0.604312 0.793159
--0.0789953 -0.552967 -0.82945
--0.0789953 -0.552967 0.82945
--0.0824086 -0.494451 -0.86529
--0.0824086 -0.494451 0.86529
--0.0856706 -0.428353 -0.899541
--0.0856706 -0.428353 0.899541
--0.0886484 -0.354594 -0.930809
--0.0886484 -0.354594 0.930809
--0.0911922 -0.273576 -0.957518
--0.0911922 -0.273576 0.957518
--0.0931493 -0.186299 -0.978068
--0.0931493 -0.186299 0.978068
--0.0943858 -0.0943858 -0.991051
--0.0943858 -0.0943858 0.991051
--0.0948091 0 -0.995495
--0.0948091 0 0.995495
--0.0943858 0.0943858 -0.991051
--0.0943858 0.0943858 0.991051
--0.0931493 0.186299 -0.978068
--0.0931493 0.186299 0.978068
--0.0911922 0.273576 -0.957518
--0.0911922 0.273576 0.957518
--0.0886484 0.354594 -0.930809
--0.0886484 0.354594 0.930809
--0.0856706 0.428353 -0.899541
--0.0856706 0.428353 0.899541
--0.0824086 0.494451 -0.86529
--0.0824086 0.494451 0.86529
--0.0789953 0.552967 -0.82945
--0.0789953 0.552967 0.82945
--0.075539 0.604312 -0.793159
--0.075539 0.604312 0.793159
--0.0721218 0.649097 -0.757279
--0.0721218 0.649097 0.757279
--0.0688021 0.688021 -0.722422
--0.0688021 0.688021 0.722422
-0 -0.689655 -0.724138
-0 -0.689655 0.724138
-0 -0.650791 -0.759257
-0 -0.650791 0.759257
-0 -0.606043 -0.795432
-0 -0.606043 0.795432
-0 -0.5547 -0.83205
-0 -0.5547 0.83205
-0 -0.496139 -0.868243
-0 -0.496139 0.868243
-0 -0.429934 -0.902861
-0 -0.429934 0.902861
-0 -0.355995 -0.934488
-0 -0.355995 0.934488
-0 -0.274721 -0.961524
-0 -0.274721 0.961524
-0 -0.187112 -0.982339
-0 -0.187112 0.982339
-0 -0.0948091 -0.995495
-0 -0.0948091 0.995495
-0 0 -1
-0 0 1
-0 0.0948091 -0.995495
-0 0.0948091 0.995495
-0 0.187112 -0.982339
-0 0.187112 0.982339
-0 0.274721 -0.961524
-0 0.274721 0.961524
-0 0.355995 -0.934488
-0 0.355995 0.934488
-0 0.429934 -0.902861
-0 0.429934 0.902861
-0 0.496139 -0.868243
-0 0.496139 0.868243
-0 0.5547 -0.83205
-0 0.5547 0.83205
-0 0.606043 -0.795432
-0 0.606043 0.795432
-0 0.650791 -0.759257
-0 0.650791 0.759257
-0 0.689655 -0.724138
-0 0.689655 0.724138
-0.0688021 -0.688021 -0.722422
-0.0688021 -0.688021 0.722422
-0.0721218 -0.649097 -0.757279
-0.0721218 -0.649097 0.757279
-0.075539 -0.604312 -0.793159
-0.075539 -0.604312 0.793159
-0.0789953 -0.552967 -0.82945
-0.0789953 -0.552967 0.82945
-0.0824086 -0.494451 -0.86529
-0.0824086 -0.494451 0.86529
-0.0856706 -0.428353 -0.899541
-0.0856706 -0.428353 0.899541
-0.0886484 -0.354594 -0.930809
-0.0886484 -0.354594 0.930809
-0.0911922 -0.273576 -0.957518
-0.0911922 -0.273576 0.957518
-0.0931493 -0.186299 -0.978068
-0.0931493 -0.186299 0.978068
-0.0943858 -0.0943858 -0.991051
-0.0943858 -0.0943858 0.991051
-0.0948091 0 -0.995495
-0.0948091 0 0.995495
-0.0943858 0.0943858 -0.991051
-0.0943858 0.0943858 0.991051
-0.0931493 0.186299 -0.978068
-0.0931493 0.186299 0.978068
-0.0911922 0.273576 -0.957518
-0.0911922 0.273576 0.957518
-0.0886484 0.354594 -0.930809
-0.0886484 0.354594 0.930809
-0.0856706 0.428353 -0.899541
-0.0856706 0.428353 0.899541
-0.0824086 0.494451 -0.86529
-0.0824086 0.494451 0.86529
-0.0789953 0.552967 -0.82945
-0.0789953 0.552967 0.82945
-0.075539 0.604312 -0.793159
-0.075539 0.604312 0.793159
-0.0721218 0.649097 -0.757279
-0.0721218 0.649097 0.757279
-0.0688021 0.688021 -0.722422
-0.0688021 0.688021 0.722422
-0.136637 -0.683187 -0.717346
-0.136637 -0.683187 0.717346
-0.143131 -0.644091 -0.751439
-0.143131 -0.644091 0.751439
-0.149801 -0.599205 -0.786456
-0.149801 -0.599205 0.786456
-0.156532 -0.547862 -0.821794
-0.156532 -0.547862 0.821794
-0.163163 -0.48949 -0.856608
-0.163163 -0.48949 0.856608
-0.169485 -0.423714 -0.889799
-0.169485 -0.423714 0.889799
-0.175243 -0.350486 -0.920027
-0.175243 -0.350486 0.920027
-0.180151 -0.270226 -0.945792
-0.180151 -0.270226 0.945792
-0.18392 -0.18392 -0.965581
-0.18392 -0.18392 0.965581
-0.186299 -0.0931493 -0.978068
-0.186299 -0.0931493 0.978068
-0.187112 0 -0.982339
-0.187112 0 0.982339
-0.186299 0.0931493 -0.978068
-0.186299 0.0931493 0.978068
-0.18392 0.18392 -0.965581
-0.18392 0.18392 0.965581
-0.180151 0.270226 -0.945792
-0.180151 0.270226 0.945792
-0.175243 0.350486 -0.920027
-0.175243 0.350486 0.920027
-0.169485 0.423714 -0.889799
-0.169485 0.423714 0.889799
-0.163163 0.48949 -0.856608
-0.163163 0.48949 0.856608
-0.156532 0.547862 -0.821794
-0.156532 0.547862 0.821794
-0.149801 0.599205 -0.786456
-0.149801 0.599205 0.786456
-0.143131 0.644091 -0.751439
-0.143131 0.644091 0.751439
-0.136637 0.683187 -0.717346
-0.136637 0.683187 0.717346
-0.202606 -0.675352 -0.70912
-0.202606 -0.675352 0.70912
-0.212 -0.635999 -0.741999
-0.212 -0.635999 0.741999
-0.221615 -0.590973 -0.775653
-0.221615 -0.590973 0.775653
-0.231283 -0.53966 -0.809491
-0.231283 -0.53966 0.809491
-0.240772 -0.481543 -0.842701
-0.240772 -0.481543 0.842701
-0.249783 -0.416305 -0.874241
-0.249783 -0.416305 0.874241
-0.25796 -0.343947 -0.902861
-0.25796 -0.343947 0.902861
-0.264906 -0.264906 -0.927173
-0.264906 -0.264906 0.927173
-0.270226 -0.180151 -0.945792
-0.270226 -0.180151 0.945792
-0.273576 -0.0911922 -0.957518
-0.273576 -0.0911922 0.957518
-0.274721 0 -0.961524
-0.274721 0 0.961524
-0.273576 0.0911922 -0.957518
-0.273576 0.0911922 0.957518
-0.270226 0.180151 -0.945792
-0.270226 0.180151 0.945792
-0.264906 0.264906 -0.927173
-0.264906 0.264906 0.927173
-0.25796 0.343947 -0.902861
-0.25796 0.343947 0.902861
-0.249783 0.416305 -0.874241
-0.249783 0.416305 0.874241
-0.240772 0.481543 -0.842701
-0.240772 0.481543 0.842701
-0.231283 0.53966 -0.809491
-0.231283 0.53966 0.809491
-0.221615 0.590973 -0.775653
-0.221615 0.590973 0.775653
-0.212 0.635999 -0.741999
-0.212 0.635999 0.741999
-0.202606 0.675352 -0.70912
-0.202606 0.675352 0.70912
-0.265929 -0.664822 -0.698064
-0.265929 -0.664822 0.698064
-0.277851 -0.625166 -0.72936
-0.277851 -0.625166 0.72936
-0.29 -0.58 -0.761249
-0.29 -0.58 0.761249
-0.302156 -0.528773 -0.793159
-0.302156 -0.528773 0.793159
-0.314027 -0.471041 -0.824322
-0.314027 -0.471041 0.824322
-0.325246 -0.406558 -0.853771
-0.325246 -0.406558 0.853771
-0.335377 -0.335377 -0.880366
-0.335377 -0.335377 0.880366
-0.343947 -0.25796 -0.902861
-0.343947 -0.25796 0.902861
-0.350486 -0.175243 -0.920027
-0.350486 -0.175243 0.920027
-0.354594 -0.0886484 -0.930809
-0.354594 -0.0886484 0.930809
-0.355995 0 -0.934488
-0.355995 0 0.934488
-0.354594 0.0886484 -0.930809
-0.354594 0.0886484 0.930809
-0.350486 0.175243 -0.920027
-0.350486 0.175243 0.920027
-0.343947 0.25796 -0.902861
-0.343947 0.25796 0.902861
-0.335377 0.335377 -0.880366
-0.335377 0.335377 0.880366
-0.325246 0.406558 -0.853771
-0.325246 0.406558 0.853771
-0.314027 0.471041 -0.824322
-0.314027 0.471041 0.824322
-0.302156 0.528773 -0.793159
-0.302156 0.528773 0.793159
-0.29 0.58 -0.761249
-0.29 0.58 0.761249
-0.277851 0.625166 -0.72936
-0.277851 0.625166 0.72936
-0.265929 0.664822 -0.698064
-0.265929 0.664822 0.698064
-0.325991 -0.651981 -0.68458
-0.325991 -0.651981 0.68458
-0.34001 -0.612018 -0.714021
-0.34001 -0.612018 0.714021
-0.354218 -0.566749 -0.743858
-0.354218 -0.566749 0.743858
-0.368355 -0.515697 -0.773545
-0.368355 -0.515697 0.773545
-0.38208 -0.458496 -0.802369
-0.38208 -0.458496 0.802369
-0.394976 -0.394976 -0.82945
-0.394976 -0.394976 0.82945
-0.406558 -0.325246 -0.853771
-0.406558 -0.325246 0.853771
-0.416305 -0.249783 -0.874241
-0.416305 -0.249783 0.874241
-0.423714 -0.169485 -0.889799
-0.423714 -0.169485 0.889799
-0.428353 -0.0856706 -0.899541
-0.428353 -0.0856706 0.899541
-0.429934 0 -0.902861
-0.429934 0 0.902861
-0.428353 0.0856706 -0.899541
-0.428353 0.0856706 0.899541
-0.423714 0.169485 -0.889799
-0.423714 0.169485 0.889799
-0.416305 0.249783 -0.874241
-0.416305 0.249783 0.874241
-0.406558 0.325246 -0.853771
-0.406558 0.325246 0.853771
-0.394976 0.394976 -0.82945
-0.394976 0.394976 0.82945
-0.38208 0.458496 -0.802369
-0.38208 0.458496 0.802369
-0.368355 0.515697 -0.773545
-0.368355 0.515697 0.773545
-0.354218 0.566749 -0.743858
-0.354218 0.566749 0.743858
-0.34001 0.612018 -0.714021
-0.34001 0.612018 0.714021
-0.325991 0.651981 -0.68458
-0.325991 0.651981 0.68458
-0.382352 -0.637253 -0.669116
-0.382352 -0.637253 0.669116
-0.398015 -0.597022 -0.696526
-0.398015 -0.597022 0.696526
-0.413793 -0.551724 -0.724138
-0.413793 -0.551724 0.724138
-0.429394 -0.500959 -0.751439
-0.429394 -0.500959 0.751439
-0.444444 -0.444444 -0.777778
-0.444444 -0.444444 0.777778
-0.458496 -0.38208 -0.802369
-0.458496 -0.38208 0.802369
-0.471041 -0.314027 -0.824322
-0.471041 -0.314027 0.824322
-0.481543 -0.240772 -0.842701
-0.481543 -0.240772 0.842701
-0.48949 -0.163163 -0.856608
-0.48949 -0.163163 0.856608
-0.494451 -0.0824086 -0.86529
-0.494451 -0.0824086 0.86529
-0.496139 0 -0.868243
-0.496139 0 0.868243
-0.494451 0.0824086 -0.86529
-0.494451 0.0824086 0.86529
-0.48949 0.163163 -0.856608
-0.48949 0.163163 0.856608
-0.481543 0.240772 -0.842701
-0.481543 0.240772 0.842701
-0.471041 0.314027 -0.824322
-0.471041 0.314027 0.824322
-0.458496 0.38208 -0.802369
-0.458496 0.38208 0.802369
-0.444444 0.444444 -0.777778
-0.444444 0.444444 0.777778
-0.429394 0.500959 -0.751439
-0.429394 0.500959 0.751439
-0.413793 0.551724 -0.724138
-0.413793 0.551724 0.724138
-0.398015 0.597022 -0.696526
-0.398015 0.597022 0.696526
-0.382352 0.637253 -0.669116
-0.382352 0.637253 0.669116
-0.434749 -0.62107 -0.652124
-0.434749 -0.62107 0.652124
-0.451613 -0.580645 -0.677419
-0.451613 -0.580645 0.677419
-0.468492 -0.53542 -0.702738
-0.468492 -0.53542 0.702738
-0.485071 -0.485071 -0.727607
-0.485071 -0.485071 0.727607
-0.500959 -0.429394 -0.751439
-0.500959 -0.429394 0.751439
-0.515697 -0.368355 -0.773545
-0.515697 -0.368355 0.773545
-0.528773 -0.302156 -0.793159
-0.528773 -0.302156 0.793159
-0.53966 -0.231283 -0.809491
-0.53966 -0.231283 0.809491
-0.547862 -0.156532 -0.821794
-0.547862 -0.156532 0.821794
-0.552967 -0.0789953 -0.82945
-0.552967 -0.0789953 0.82945
-0.5547 0 -0.83205
-0.5547 0 0.83205
-0.552967 0.0789953 -0.82945
-0.552967 0.0789953 0.82945
-0.547862 0.156532 -0.821794
-0.547862 0.156532 0.821794
-0.53966 0.231283 -0.809491
-0.53966 0.231283 0.809491
-0.528773 0.302156 -0.793159
-0.528773 0.302156 0.793159
-0.515697 0.368355 -0.773545
-0.515697 0.368355 0.773545
-0.500959 0.429394 -0.751439
-0.500959 0.429394 0.751439
-0.485071 0.485071 -0.727607
-0.485071 0.485071 0.727607
-0.468492 0.53542 -0.702738
-0.468492 0.53542 0.702738
-0.451613 0.580645 -0.677419
-0.451613 0.580645 0.677419
-0.434749 0.62107 -0.652124
-0.434749 0.62107 0.652124
-0.483077 -0.603847 -0.634039
-0.483077 -0.603847 0.634039
-0.500734 -0.563326 -0.657213
-0.500734 -0.563326 0.657213
-0.518291 -0.518291 -0.680257
-0.518291 -0.518291 0.680257
-0.53542 -0.468492 -0.702738
-0.53542 -0.468492 0.702738
-0.551724 -0.413793 -0.724138
-0.551724 -0.413793 0.724138
-0.566749 -0.354218 -0.743858
-0.566749 -0.354218 0.743858
-0.58 -0.29 -0.761249
-0.58 -0.29 0.761249
-0.590973 -0.221615 -0.775653
-0.590973 -0.221615 0.775653
-0.599205 -0.149801 -0.786456
-0.599205 -0.149801 0.786456
-0.604312 -0.075539 -0.793159
-0.604312 -0.075539 0.793159
-0.606043 0 -0.795432
-0.606043 0 0.795432
-0.604312 0.075539 -0.793159
-0.604312 0.075539 0.793159
-0.599205 0.149801 -0.786456
-0.599205 0.149801 0.786456
-0.590973 0.221615 -0.775653
-0.590973 0.221615 0.775653
-0.58 0.29 -0.761249
-0.58 0.29 0.761249
-0.566749 0.354218 -0.743858
-0.566749 0.354218 0.743858
-0.551724 0.413793 -0.724138
-0.551724 0.413793 0.724138
-0.53542 0.468492 -0.702738
-0.53542 0.468492 0.702738
-0.518291 0.518291 -0.680257
-0.518291 0.518291 0.680257
-0.500734 0.563326 -0.657213
-0.500734 0.563326 0.657213
-0.483077 0.603847 -0.634039
-0.483077 0.603847 0.634039
-0.527363 -0.585959 -0.615257
-0.527363 -0.585959 0.615257
-0.545455 -0.545455 -0.636364
-0.545455 -0.545455 0.636364
-0.563326 -0.500734 -0.657213
-0.563326 -0.500734 0.657213
-0.580645 -0.451613 -0.677419
-0.580645 -0.451613 0.677419
-0.597022 -0.398015 -0.696526
-0.597022 -0.398015 0.696526
-0.612018 -0.34001 -0.714021
-0.612018 -0.34001 0.714021
-0.625166 -0.277851 -0.72936
-0.625166 -0.277851 0.72936
-0.635999 -0.212 -0.741999
-0.635999 -0.212 0.741999
-0.644091 -0.143131 -0.751439
-0.644091 -0.143131 0.751439
-0.649097 -0.0721218 -0.757279
-0.649097 -0.0721218 0.757279
-0.650791 0 -0.759257
-0.650791 0 0.759257
-0.649097 0.0721218 -0.757279
-0.649097 0.0721218 0.757279
-0.644091 0.143131 -0.751439
-0.644091 0.143131 0.751439
-0.635999 0.212 -0.741999
-0.635999 0.212 0.741999
-0.625166 0.277851 -0.72936
-0.625166 0.277851 0.72936
-0.612018 0.34001 -0.714021
-0.612018 0.34001 0.714021
-0.597022 0.398015 -0.696526
-0.597022 0.398015 0.696526
-0.580645 0.451613 -0.677419
-0.580645 0.451613 0.677419
-0.563326 0.500734 -0.657213
-0.563326 0.500734 0.657213
-0.545455 0.545455 -0.636364
-0.545455 0.545455 0.636364
-0.527363 0.585959 -0.615257
-0.527363 0.585959 0.615257
-0.567733 -0.567733 -0.59612
-0.567733 -0.567733 0.59612
-0.585959 -0.527363 -0.615257
-0.585959 -0.527363 0.615257
-0.603847 -0.483077 -0.634039
-0.603847 -0.483077 0.634039
-0.62107 -0.434749 -0.652124
-0.62107 -0.434749 0.652124
-0.637253 -0.382352 -0.669116
-0.637253 -0.382352 0.669116
-0.651981 -0.325991 -0.68458
-0.651981 -0.325991 0.68458
-0.664822 -0.265929 -0.698064
-0.664822 -0.265929 0.698064
-0.675352 -0.202606 -0.70912
-0.675352 -0.202606 0.70912
-0.683187 -0.136637 -0.717346
-0.683187 -0.136637 0.717346
-0.688021 -0.0688021 -0.722422
-0.688021 -0.0688021 0.722422
-0.689655 0 -0.724138
-0.689655 0 0.724138
-0.688021 0.0688021 -0.722422
-0.688021 0.0688021 0.722422
-0.683187 0.136637 -0.717346
-0.683187 0.136637 0.717346
-0.675352 0.202606 -0.70912
-0.675352 0.202606 0.70912
-0.664822 0.265929 -0.698064
-0.664822 0.265929 0.698064
-0.651981 0.325991 -0.68458
-0.651981 0.325991 0.68458
-0.637253 0.382352 -0.669116
-0.637253 0.382352 0.669116
-0.62107 0.434749 -0.652124
-0.62107 0.434749 0.652124
-0.603847 0.483077 -0.634039
-0.603847 0.483077 0.634039
-0.585959 0.527363 -0.615257
-0.585959 0.527363 0.615257
-0.567733 0.567733 -0.59612
-0.567733 0.567733 0.59612
diff --git a/data/points/sphere3D_pts_on_grid.off b/data/points/sphere3D_pts_on_grid.off
deleted file mode 100644
index 7f562559..00000000
--- a/data/points/sphere3D_pts_on_grid.off
+++ /dev/null
@@ -1,17286 +0,0 @@
-OFF
-17284 0 0
-0.44 0.38 0.02
-0.46 0.38 0.02
-0.48 0.38 0.02
-0.5 0.38 0.02
-0.52 0.38 0.02
-0.54 0.38 0.02
-0.56 0.38 0.02
-0.42 0.4 0.02
-0.44 0.4 0.02
-0.46 0.4 0.02
-0.48 0.4 0.02
-0.5 0.4 0.02
-0.52 0.4 0.02
-0.54 0.4 0.02
-0.56 0.4 0.02
-0.58 0.4 0.02
-0.4 0.42 0.02
-0.42 0.42 0.02
-0.44 0.42 0.02
-0.46 0.42 0.02
-0.48 0.42 0.02
-0.5 0.42 0.02
-0.52 0.42 0.02
-0.54 0.42 0.02
-0.56 0.42 0.02
-0.58 0.42 0.02
-0.6 0.42 0.02
-0.38 0.44 0.02
-0.4 0.44 0.02
-0.42 0.44 0.02
-0.44 0.44 0.02
-0.46 0.44 0.02
-0.48 0.44 0.02
-0.5 0.44 0.02
-0.52 0.44 0.02
-0.54 0.44 0.02
-0.56 0.44 0.02
-0.58 0.44 0.02
-0.6 0.44 0.02
-0.62 0.44 0.02
-0.38 0.46 0.02
-0.4 0.46 0.02
-0.42 0.46 0.02
-0.44 0.46 0.02
-0.46 0.46 0.02
-0.48 0.46 0.02
-0.5 0.46 0.02
-0.52 0.46 0.02
-0.54 0.46 0.02
-0.56 0.46 0.02
-0.58 0.46 0.02
-0.6 0.46 0.02
-0.62 0.46 0.02
-0.38 0.48 0.02
-0.4 0.48 0.02
-0.42 0.48 0.02
-0.44 0.48 0.02
-0.46 0.48 0.02
-0.48 0.48 0.02
-0.5 0.48 0.02
-0.52 0.48 0.02
-0.54 0.48 0.02
-0.56 0.48 0.02
-0.58 0.48 0.02
-0.6 0.48 0.02
-0.62 0.48 0.02
-0.38 0.5 0.02
-0.4 0.5 0.02
-0.42 0.5 0.02
-0.44 0.5 0.02
-0.46 0.5 0.02
-0.48 0.5 0.02
-0.5 0.5 0.02
-0.52 0.5 0.02
-0.54 0.5 0.02
-0.56 0.5 0.02
-0.58 0.5 0.02
-0.6 0.5 0.02
-0.62 0.5 0.02
-0.38 0.52 0.02
-0.4 0.52 0.02
-0.42 0.52 0.02
-0.44 0.52 0.02
-0.46 0.52 0.02
-0.48 0.52 0.02
-0.5 0.52 0.02
-0.52 0.52 0.02
-0.54 0.52 0.02
-0.56 0.52 0.02
-0.58 0.52 0.02
-0.6 0.52 0.02
-0.62 0.52 0.02
-0.38 0.54 0.02
-0.4 0.54 0.02
-0.42 0.54 0.02
-0.44 0.54 0.02
-0.46 0.54 0.02
-0.48 0.54 0.02
-0.5 0.54 0.02
-0.52 0.54 0.02
-0.54 0.54 0.02
-0.56 0.54 0.02
-0.58 0.54 0.02
-0.6 0.54 0.02
-0.62 0.54 0.02
-0.38 0.56 0.02
-0.4 0.56 0.02
-0.42 0.56 0.02
-0.44 0.56 0.02
-0.46 0.56 0.02
-0.48 0.56 0.02
-0.5 0.56 0.02
-0.52 0.56 0.02
-0.54 0.56 0.02
-0.56 0.56 0.02
-0.58 0.56 0.02
-0.6 0.56 0.02
-0.62 0.56 0.02
-0.4 0.58 0.02
-0.42 0.58 0.02
-0.44 0.58 0.02
-0.46 0.58 0.02
-0.48 0.58 0.02
-0.5 0.58 0.02
-0.52 0.58 0.02
-0.54 0.58 0.02
-0.56 0.58 0.02
-0.58 0.58 0.02
-0.6 0.58 0.02
-0.42 0.6 0.02
-0.44 0.6 0.02
-0.46 0.6 0.02
-0.48 0.6 0.02
-0.5 0.6 0.02
-0.52 0.6 0.02
-0.54 0.6 0.02
-0.56 0.6 0.02
-0.58 0.6 0.02
-0.44 0.62 0.02
-0.46 0.62 0.02
-0.48 0.62 0.02
-0.5 0.62 0.02
-0.52 0.62 0.02
-0.54 0.62 0.02
-0.56 0.62 0.02
-0.44 0.32 0.04
-0.46 0.32 0.04
-0.48 0.32 0.04
-0.5 0.32 0.04
-0.52 0.32 0.04
-0.54 0.32 0.04
-0.56 0.32 0.04
-0.4 0.34 0.04
-0.42 0.34 0.04
-0.44 0.34 0.04
-0.46 0.34 0.04
-0.48 0.34 0.04
-0.5 0.34 0.04
-0.52 0.34 0.04
-0.54 0.34 0.04
-0.56 0.34 0.04
-0.58 0.34 0.04
-0.6 0.34 0.04
-0.38 0.36 0.04
-0.4 0.36 0.04
-0.42 0.36 0.04
-0.44 0.36 0.04
-0.46 0.36 0.04
-0.48 0.36 0.04
-0.5 0.36 0.04
-0.52 0.36 0.04
-0.54 0.36 0.04
-0.56 0.36 0.04
-0.58 0.36 0.04
-0.6 0.36 0.04
-0.62 0.36 0.04
-0.36 0.38 0.04
-0.38 0.38 0.04
-0.4 0.38 0.04
-0.42 0.38 0.04
-0.44 0.38 0.04
-0.46 0.38 0.04
-0.48 0.38 0.04
-0.5 0.38 0.04
-0.52 0.38 0.04
-0.54 0.38 0.04
-0.56 0.38 0.04
-0.58 0.38 0.04
-0.6 0.38 0.04
-0.62 0.38 0.04
-0.64 0.38 0.04
-0.34 0.4 0.04
-0.36 0.4 0.04
-0.38 0.4 0.04
-0.4 0.4 0.04
-0.42 0.4 0.04
-0.44 0.4 0.04
-0.46 0.4 0.04
-0.48 0.4 0.04
-0.5 0.4 0.04
-0.52 0.4 0.04
-0.54 0.4 0.04
-0.56 0.4 0.04
-0.58 0.4 0.04
-0.6 0.4 0.04
-0.62 0.4 0.04
-0.64 0.4 0.04
-0.66 0.4 0.04
-0.34 0.42 0.04
-0.36 0.42 0.04
-0.38 0.42 0.04
-0.4 0.42 0.04
-0.42 0.42 0.04
-0.44 0.42 0.04
-0.46 0.42 0.04
-0.48 0.42 0.04
-0.5 0.42 0.04
-0.52 0.42 0.04
-0.54 0.42 0.04
-0.56 0.42 0.04
-0.58 0.42 0.04
-0.6 0.42 0.04
-0.62 0.42 0.04
-0.64 0.42 0.04
-0.66 0.42 0.04
-0.32 0.44 0.04
-0.34 0.44 0.04
-0.36 0.44 0.04
-0.38 0.44 0.04
-0.4 0.44 0.04
-0.42 0.44 0.04
-0.44 0.44 0.04
-0.46 0.44 0.04
-0.48 0.44 0.04
-0.5 0.44 0.04
-0.52 0.44 0.04
-0.54 0.44 0.04
-0.56 0.44 0.04
-0.58 0.44 0.04
-0.6 0.44 0.04
-0.62 0.44 0.04
-0.64 0.44 0.04
-0.66 0.44 0.04
-0.68 0.44 0.04
-0.32 0.46 0.04
-0.34 0.46 0.04
-0.36 0.46 0.04
-0.38 0.46 0.04
-0.4 0.46 0.04
-0.42 0.46 0.04
-0.44 0.46 0.04
-0.46 0.46 0.04
-0.48 0.46 0.04
-0.5 0.46 0.04
-0.52 0.46 0.04
-0.54 0.46 0.04
-0.56 0.46 0.04
-0.58 0.46 0.04
-0.6 0.46 0.04
-0.62 0.46 0.04
-0.64 0.46 0.04
-0.66 0.46 0.04
-0.68 0.46 0.04
-0.32 0.48 0.04
-0.34 0.48 0.04
-0.36 0.48 0.04
-0.38 0.48 0.04
-0.4 0.48 0.04
-0.42 0.48 0.04
-0.44 0.48 0.04
-0.46 0.48 0.04
-0.48 0.48 0.04
-0.5 0.48 0.04
-0.52 0.48 0.04
-0.54 0.48 0.04
-0.56 0.48 0.04
-0.58 0.48 0.04
-0.6 0.48 0.04
-0.62 0.48 0.04
-0.64 0.48 0.04
-0.66 0.48 0.04
-0.68 0.48 0.04
-0.32 0.5 0.04
-0.34 0.5 0.04
-0.36 0.5 0.04
-0.38 0.5 0.04
-0.4 0.5 0.04
-0.42 0.5 0.04
-0.44 0.5 0.04
-0.46 0.5 0.04
-0.48 0.5 0.04
-0.5 0.5 0.04
-0.52 0.5 0.04
-0.54 0.5 0.04
-0.56 0.5 0.04
-0.58 0.5 0.04
-0.6 0.5 0.04
-0.62 0.5 0.04
-0.64 0.5 0.04
-0.66 0.5 0.04
-0.68 0.5 0.04
-0.32 0.52 0.04
-0.34 0.52 0.04
-0.36 0.52 0.04
-0.38 0.52 0.04
-0.4 0.52 0.04
-0.42 0.52 0.04
-0.44 0.52 0.04
-0.46 0.52 0.04
-0.48 0.52 0.04
-0.5 0.52 0.04
-0.52 0.52 0.04
-0.54 0.52 0.04
-0.56 0.52 0.04
-0.58 0.52 0.04
-0.6 0.52 0.04
-0.62 0.52 0.04
-0.64 0.52 0.04
-0.66 0.52 0.04
-0.68 0.52 0.04
-0.32 0.54 0.04
-0.34 0.54 0.04
-0.36 0.54 0.04
-0.38 0.54 0.04
-0.4 0.54 0.04
-0.42 0.54 0.04
-0.44 0.54 0.04
-0.46 0.54 0.04
-0.48 0.54 0.04
-0.5 0.54 0.04
-0.52 0.54 0.04
-0.54 0.54 0.04
-0.56 0.54 0.04
-0.58 0.54 0.04
-0.6 0.54 0.04
-0.62 0.54 0.04
-0.64 0.54 0.04
-0.66 0.54 0.04
-0.68 0.54 0.04
-0.32 0.56 0.04
-0.34 0.56 0.04
-0.36 0.56 0.04
-0.38 0.56 0.04
-0.4 0.56 0.04
-0.42 0.56 0.04
-0.44 0.56 0.04
-0.46 0.56 0.04
-0.48 0.56 0.04
-0.5 0.56 0.04
-0.52 0.56 0.04
-0.54 0.56 0.04
-0.56 0.56 0.04
-0.58 0.56 0.04
-0.6 0.56 0.04
-0.62 0.56 0.04
-0.64 0.56 0.04
-0.66 0.56 0.04
-0.68 0.56 0.04
-0.34 0.58 0.04
-0.36 0.58 0.04
-0.38 0.58 0.04
-0.4 0.58 0.04
-0.42 0.58 0.04
-0.44 0.58 0.04
-0.46 0.58 0.04
-0.48 0.58 0.04
-0.5 0.58 0.04
-0.52 0.58 0.04
-0.54 0.58 0.04
-0.56 0.58 0.04
-0.58 0.58 0.04
-0.6 0.58 0.04
-0.62 0.58 0.04
-0.64 0.58 0.04
-0.66 0.58 0.04
-0.34 0.6 0.04
-0.36 0.6 0.04
-0.38 0.6 0.04
-0.4 0.6 0.04
-0.42 0.6 0.04
-0.44 0.6 0.04
-0.46 0.6 0.04
-0.48 0.6 0.04
-0.5 0.6 0.04
-0.52 0.6 0.04
-0.54 0.6 0.04
-0.56 0.6 0.04
-0.58 0.6 0.04
-0.6 0.6 0.04
-0.62 0.6 0.04
-0.64 0.6 0.04
-0.66 0.6 0.04
-0.36 0.62 0.04
-0.38 0.62 0.04
-0.4 0.62 0.04
-0.42 0.62 0.04
-0.44 0.62 0.04
-0.46 0.62 0.04
-0.48 0.62 0.04
-0.5 0.62 0.04
-0.52 0.62 0.04
-0.54 0.62 0.04
-0.56 0.62 0.04
-0.58 0.62 0.04
-0.6 0.62 0.04
-0.62 0.62 0.04
-0.64 0.62 0.04
-0.38 0.64 0.04
-0.4 0.64 0.04
-0.42 0.64 0.04
-0.44 0.64 0.04
-0.46 0.64 0.04
-0.48 0.64 0.04
-0.5 0.64 0.04
-0.52 0.64 0.04
-0.54 0.64 0.04
-0.56 0.64 0.04
-0.58 0.64 0.04
-0.6 0.64 0.04
-0.62 0.64 0.04
-0.4 0.66 0.04
-0.42 0.66 0.04
-0.44 0.66 0.04
-0.46 0.66 0.04
-0.48 0.66 0.04
-0.5 0.66 0.04
-0.52 0.66 0.04
-0.54 0.66 0.04
-0.56 0.66 0.04
-0.58 0.66 0.04
-0.6 0.66 0.04
-0.44 0.68 0.04
-0.46 0.68 0.04
-0.48 0.68 0.04
-0.5 0.68 0.04
-0.52 0.68 0.04
-0.54 0.68 0.04
-0.56 0.68 0.04
-0.42 0.28 0.06
-0.44 0.28 0.06
-0.46 0.28 0.06
-0.48 0.28 0.06
-0.5 0.28 0.06
-0.52 0.28 0.06
-0.54 0.28 0.06
-0.56 0.28 0.06
-0.58 0.28 0.06
-0.38 0.3 0.06
-0.4 0.3 0.06
-0.42 0.3 0.06
-0.44 0.3 0.06
-0.46 0.3 0.06
-0.48 0.3 0.06
-0.5 0.3 0.06
-0.52 0.3 0.06
-0.54 0.3 0.06
-0.56 0.3 0.06
-0.58 0.3 0.06
-0.6 0.3 0.06
-0.62 0.3 0.06
-0.36 0.32 0.06
-0.38 0.32 0.06
-0.4 0.32 0.06
-0.42 0.32 0.06
-0.44 0.32 0.06
-0.46 0.32 0.06
-0.48 0.32 0.06
-0.5 0.32 0.06
-0.52 0.32 0.06
-0.54 0.32 0.06
-0.56 0.32 0.06
-0.58 0.32 0.06
-0.6 0.32 0.06
-0.62 0.32 0.06
-0.64 0.32 0.06
-0.34 0.34 0.06
-0.36 0.34 0.06
-0.38 0.34 0.06
-0.4 0.34 0.06
-0.42 0.34 0.06
-0.44 0.34 0.06
-0.46 0.34 0.06
-0.48 0.34 0.06
-0.5 0.34 0.06
-0.52 0.34 0.06
-0.54 0.34 0.06
-0.56 0.34 0.06
-0.58 0.34 0.06
-0.6 0.34 0.06
-0.62 0.34 0.06
-0.64 0.34 0.06
-0.66 0.34 0.06
-0.32 0.36 0.06
-0.34 0.36 0.06
-0.36 0.36 0.06
-0.38 0.36 0.06
-0.4 0.36 0.06
-0.42 0.36 0.06
-0.44 0.36 0.06
-0.46 0.36 0.06
-0.48 0.36 0.06
-0.5 0.36 0.06
-0.52 0.36 0.06
-0.54 0.36 0.06
-0.56 0.36 0.06
-0.58 0.36 0.06
-0.6 0.36 0.06
-0.62 0.36 0.06
-0.64 0.36 0.06
-0.66 0.36 0.06
-0.68 0.36 0.06
-0.3 0.38 0.06
-0.32 0.38 0.06
-0.34 0.38 0.06
-0.36 0.38 0.06
-0.38 0.38 0.06
-0.4 0.38 0.06
-0.42 0.38 0.06
-0.44 0.38 0.06
-0.46 0.38 0.06
-0.48 0.38 0.06
-0.5 0.38 0.06
-0.52 0.38 0.06
-0.54 0.38 0.06
-0.56 0.38 0.06
-0.58 0.38 0.06
-0.6 0.38 0.06
-0.62 0.38 0.06
-0.64 0.38 0.06
-0.66 0.38 0.06
-0.68 0.38 0.06
-0.7 0.38 0.06
-0.3 0.4 0.06
-0.32 0.4 0.06
-0.34 0.4 0.06
-0.36 0.4 0.06
-0.38 0.4 0.06
-0.4 0.4 0.06
-0.42 0.4 0.06
-0.44 0.4 0.06
-0.46 0.4 0.06
-0.48 0.4 0.06
-0.5 0.4 0.06
-0.52 0.4 0.06
-0.54 0.4 0.06
-0.56 0.4 0.06
-0.58 0.4 0.06
-0.6 0.4 0.06
-0.62 0.4 0.06
-0.64 0.4 0.06
-0.66 0.4 0.06
-0.68 0.4 0.06
-0.7 0.4 0.06
-0.28 0.42 0.06
-0.3 0.42 0.06
-0.32 0.42 0.06
-0.34 0.42 0.06
-0.36 0.42 0.06
-0.38 0.42 0.06
-0.4 0.42 0.06
-0.42 0.42 0.06
-0.44 0.42 0.06
-0.56 0.42 0.06
-0.58 0.42 0.06
-0.6 0.42 0.06
-0.62 0.42 0.06
-0.64 0.42 0.06
-0.66 0.42 0.06
-0.68 0.42 0.06
-0.7 0.42 0.06
-0.72 0.42 0.06
-0.28 0.44 0.06
-0.3 0.44 0.06
-0.32 0.44 0.06
-0.34 0.44 0.06
-0.36 0.44 0.06
-0.38 0.44 0.06
-0.4 0.44 0.06
-0.42 0.44 0.06
-0.58 0.44 0.06
-0.6 0.44 0.06
-0.62 0.44 0.06
-0.64 0.44 0.06
-0.66 0.44 0.06
-0.68 0.44 0.06
-0.7 0.44 0.06
-0.72 0.44 0.06
-0.28 0.46 0.06
-0.3 0.46 0.06
-0.32 0.46 0.06
-0.34 0.46 0.06
-0.36 0.46 0.06
-0.38 0.46 0.06
-0.4 0.46 0.06
-0.6 0.46 0.06
-0.62 0.46 0.06
-0.64 0.46 0.06
-0.66 0.46 0.06
-0.68 0.46 0.06
-0.7 0.46 0.06
-0.72 0.46 0.06
-0.28 0.48 0.06
-0.3 0.48 0.06
-0.32 0.48 0.06
-0.34 0.48 0.06
-0.36 0.48 0.06
-0.38 0.48 0.06
-0.4 0.48 0.06
-0.6 0.48 0.06
-0.62 0.48 0.06
-0.64 0.48 0.06
-0.66 0.48 0.06
-0.68 0.48 0.06
-0.7 0.48 0.06
-0.72 0.48 0.06
-0.28 0.5 0.06
-0.3 0.5 0.06
-0.32 0.5 0.06
-0.34 0.5 0.06
-0.36 0.5 0.06
-0.38 0.5 0.06
-0.4 0.5 0.06
-0.6 0.5 0.06
-0.62 0.5 0.06
-0.64 0.5 0.06
-0.66 0.5 0.06
-0.68 0.5 0.06
-0.7 0.5 0.06
-0.72 0.5 0.06
-0.28 0.52 0.06
-0.3 0.52 0.06
-0.32 0.52 0.06
-0.34 0.52 0.06
-0.36 0.52 0.06
-0.38 0.52 0.06
-0.4 0.52 0.06
-0.6 0.52 0.06
-0.62 0.52 0.06
-0.64 0.52 0.06
-0.66 0.52 0.06
-0.68 0.52 0.06
-0.7 0.52 0.06
-0.72 0.52 0.06
-0.28 0.54 0.06
-0.3 0.54 0.06
-0.32 0.54 0.06
-0.34 0.54 0.06
-0.36 0.54 0.06
-0.38 0.54 0.06
-0.4 0.54 0.06
-0.6 0.54 0.06
-0.62 0.54 0.06
-0.64 0.54 0.06
-0.66 0.54 0.06
-0.68 0.54 0.06
-0.7 0.54 0.06
-0.72 0.54 0.06
-0.28 0.56 0.06
-0.3 0.56 0.06
-0.32 0.56 0.06
-0.34 0.56 0.06
-0.36 0.56 0.06
-0.38 0.56 0.06
-0.4 0.56 0.06
-0.42 0.56 0.06
-0.58 0.56 0.06
-0.6 0.56 0.06
-0.62 0.56 0.06
-0.64 0.56 0.06
-0.66 0.56 0.06
-0.68 0.56 0.06
-0.7 0.56 0.06
-0.72 0.56 0.06
-0.28 0.58 0.06
-0.3 0.58 0.06
-0.32 0.58 0.06
-0.34 0.58 0.06
-0.36 0.58 0.06
-0.38 0.58 0.06
-0.4 0.58 0.06
-0.42 0.58 0.06
-0.44 0.58 0.06
-0.56 0.58 0.06
-0.58 0.58 0.06
-0.6 0.58 0.06
-0.62 0.58 0.06
-0.64 0.58 0.06
-0.66 0.58 0.06
-0.68 0.58 0.06
-0.7 0.58 0.06
-0.72 0.58 0.06
-0.3 0.6 0.06
-0.32 0.6 0.06
-0.34 0.6 0.06
-0.36 0.6 0.06
-0.38 0.6 0.06
-0.4 0.6 0.06
-0.42 0.6 0.06
-0.44 0.6 0.06
-0.46 0.6 0.06
-0.48 0.6 0.06
-0.5 0.6 0.06
-0.52 0.6 0.06
-0.54 0.6 0.06
-0.56 0.6 0.06
-0.58 0.6 0.06
-0.6 0.6 0.06
-0.62 0.6 0.06
-0.64 0.6 0.06
-0.66 0.6 0.06
-0.68 0.6 0.06
-0.7 0.6 0.06
-0.3 0.62 0.06
-0.32 0.62 0.06
-0.34 0.62 0.06
-0.36 0.62 0.06
-0.38 0.62 0.06
-0.4 0.62 0.06
-0.42 0.62 0.06
-0.44 0.62 0.06
-0.46 0.62 0.06
-0.48 0.62 0.06
-0.5 0.62 0.06
-0.52 0.62 0.06
-0.54 0.62 0.06
-0.56 0.62 0.06
-0.58 0.62 0.06
-0.6 0.62 0.06
-0.62 0.62 0.06
-0.64 0.62 0.06
-0.66 0.62 0.06
-0.68 0.62 0.06
-0.7 0.62 0.06
-0.32 0.64 0.06
-0.34 0.64 0.06
-0.36 0.64 0.06
-0.38 0.64 0.06
-0.4 0.64 0.06
-0.42 0.64 0.06
-0.44 0.64 0.06
-0.46 0.64 0.06
-0.48 0.64 0.06
-0.5 0.64 0.06
-0.52 0.64 0.06
-0.54 0.64 0.06
-0.56 0.64 0.06
-0.58 0.64 0.06
-0.6 0.64 0.06
-0.62 0.64 0.06
-0.64 0.64 0.06
-0.66 0.64 0.06
-0.68 0.64 0.06
-0.34 0.66 0.06
-0.36 0.66 0.06
-0.38 0.66 0.06
-0.4 0.66 0.06
-0.42 0.66 0.06
-0.44 0.66 0.06
-0.46 0.66 0.06
-0.48 0.66 0.06
-0.5 0.66 0.06
-0.52 0.66 0.06
-0.54 0.66 0.06
-0.56 0.66 0.06
-0.58 0.66 0.06
-0.6 0.66 0.06
-0.62 0.66 0.06
-0.64 0.66 0.06
-0.66 0.66 0.06
-0.36 0.68 0.06
-0.38 0.68 0.06
-0.4 0.68 0.06
-0.42 0.68 0.06
-0.44 0.68 0.06
-0.46 0.68 0.06
-0.48 0.68 0.06
-0.5 0.68 0.06
-0.52 0.68 0.06
-0.54 0.68 0.06
-0.56 0.68 0.06
-0.58 0.68 0.06
-0.6 0.68 0.06
-0.62 0.68 0.06
-0.64 0.68 0.06
-0.38 0.7 0.06
-0.4 0.7 0.06
-0.42 0.7 0.06
-0.44 0.7 0.06
-0.46 0.7 0.06
-0.48 0.7 0.06
-0.5 0.7 0.06
-0.52 0.7 0.06
-0.54 0.7 0.06
-0.56 0.7 0.06
-0.58 0.7 0.06
-0.6 0.7 0.06
-0.62 0.7 0.06
-0.42 0.72 0.06
-0.44 0.72 0.06
-0.46 0.72 0.06
-0.48 0.72 0.06
-0.5 0.72 0.06
-0.52 0.72 0.06
-0.54 0.72 0.06
-0.56 0.72 0.06
-0.58 0.72 0.06
-0.44 0.24 0.08
-0.46 0.24 0.08
-0.48 0.24 0.08
-0.5 0.24 0.08
-0.52 0.24 0.08
-0.54 0.24 0.08
-0.56 0.24 0.08
-0.38 0.26 0.08
-0.4 0.26 0.08
-0.42 0.26 0.08
-0.44 0.26 0.08
-0.46 0.26 0.08
-0.48 0.26 0.08
-0.5 0.26 0.08
-0.52 0.26 0.08
-0.54 0.26 0.08
-0.56 0.26 0.08
-0.58 0.26 0.08
-0.6 0.26 0.08
-0.62 0.26 0.08
-0.36 0.28 0.08
-0.38 0.28 0.08
-0.4 0.28 0.08
-0.42 0.28 0.08
-0.44 0.28 0.08
-0.46 0.28 0.08
-0.48 0.28 0.08
-0.5 0.28 0.08
-0.52 0.28 0.08
-0.54 0.28 0.08
-0.56 0.28 0.08
-0.58 0.28 0.08
-0.6 0.28 0.08
-0.62 0.28 0.08
-0.64 0.28 0.08
-0.32 0.3 0.08
-0.34 0.3 0.08
-0.36 0.3 0.08
-0.38 0.3 0.08
-0.4 0.3 0.08
-0.42 0.3 0.08
-0.44 0.3 0.08
-0.46 0.3 0.08
-0.48 0.3 0.08
-0.5 0.3 0.08
-0.52 0.3 0.08
-0.54 0.3 0.08
-0.56 0.3 0.08
-0.58 0.3 0.08
-0.6 0.3 0.08
-0.62 0.3 0.08
-0.64 0.3 0.08
-0.66 0.3 0.08
-0.68 0.3 0.08
-0.3 0.32 0.08
-0.32 0.32 0.08
-0.34 0.32 0.08
-0.36 0.32 0.08
-0.38 0.32 0.08
-0.4 0.32 0.08
-0.42 0.32 0.08
-0.44 0.32 0.08
-0.46 0.32 0.08
-0.48 0.32 0.08
-0.5 0.32 0.08
-0.52 0.32 0.08
-0.54 0.32 0.08
-0.56 0.32 0.08
-0.58 0.32 0.08
-0.6 0.32 0.08
-0.62 0.32 0.08
-0.64 0.32 0.08
-0.66 0.32 0.08
-0.68 0.32 0.08
-0.7 0.32 0.08
-0.3 0.34 0.08
-0.32 0.34 0.08
-0.34 0.34 0.08
-0.36 0.34 0.08
-0.38 0.34 0.08
-0.4 0.34 0.08
-0.42 0.34 0.08
-0.44 0.34 0.08
-0.46 0.34 0.08
-0.54 0.34 0.08
-0.56 0.34 0.08
-0.58 0.34 0.08
-0.6 0.34 0.08
-0.62 0.34 0.08
-0.64 0.34 0.08
-0.66 0.34 0.08
-0.68 0.34 0.08
-0.7 0.34 0.08
-0.28 0.36 0.08
-0.3 0.36 0.08
-0.32 0.36 0.08
-0.34 0.36 0.08
-0.36 0.36 0.08
-0.38 0.36 0.08
-0.4 0.36 0.08
-0.6 0.36 0.08
-0.62 0.36 0.08
-0.64 0.36 0.08
-0.66 0.36 0.08
-0.68 0.36 0.08
-0.7 0.36 0.08
-0.72 0.36 0.08
-0.26 0.38 0.08
-0.28 0.38 0.08
-0.3 0.38 0.08
-0.32 0.38 0.08
-0.34 0.38 0.08
-0.36 0.38 0.08
-0.38 0.38 0.08
-0.62 0.38 0.08
-0.64 0.38 0.08
-0.66 0.38 0.08
-0.68 0.38 0.08
-0.7 0.38 0.08
-0.72 0.38 0.08
-0.74 0.38 0.08
-0.26 0.4 0.08
-0.28 0.4 0.08
-0.3 0.4 0.08
-0.32 0.4 0.08
-0.34 0.4 0.08
-0.36 0.4 0.08
-0.64 0.4 0.08
-0.66 0.4 0.08
-0.68 0.4 0.08
-0.7 0.4 0.08
-0.72 0.4 0.08
-0.74 0.4 0.08
-0.26 0.42 0.08
-0.28 0.42 0.08
-0.3 0.42 0.08
-0.32 0.42 0.08
-0.34 0.42 0.08
-0.66 0.42 0.08
-0.68 0.42 0.08
-0.7 0.42 0.08
-0.72 0.42 0.08
-0.74 0.42 0.08
-0.24 0.44 0.08
-0.26 0.44 0.08
-0.28 0.44 0.08
-0.3 0.44 0.08
-0.32 0.44 0.08
-0.34 0.44 0.08
-0.66 0.44 0.08
-0.68 0.44 0.08
-0.7 0.44 0.08
-0.72 0.44 0.08
-0.74 0.44 0.08
-0.76 0.44 0.08
-0.24 0.46 0.08
-0.26 0.46 0.08
-0.28 0.46 0.08
-0.3 0.46 0.08
-0.32 0.46 0.08
-0.34 0.46 0.08
-0.66 0.46 0.08
-0.68 0.46 0.08
-0.7 0.46 0.08
-0.72 0.46 0.08
-0.74 0.46 0.08
-0.76 0.46 0.08
-0.24 0.48 0.08
-0.26 0.48 0.08
-0.28 0.48 0.08
-0.3 0.48 0.08
-0.32 0.48 0.08
-0.68 0.48 0.08
-0.7 0.48 0.08
-0.72 0.48 0.08
-0.74 0.48 0.08
-0.76 0.48 0.08
-0.24 0.5 0.08
-0.26 0.5 0.08
-0.28 0.5 0.08
-0.3 0.5 0.08
-0.32 0.5 0.08
-0.68 0.5 0.08
-0.7 0.5 0.08
-0.72 0.5 0.08
-0.74 0.5 0.08
-0.76 0.5 0.08
-0.24 0.52 0.08
-0.26 0.52 0.08
-0.28 0.52 0.08
-0.3 0.52 0.08
-0.32 0.52 0.08
-0.68 0.52 0.08
-0.7 0.52 0.08
-0.72 0.52 0.08
-0.74 0.52 0.08
-0.76 0.52 0.08
-0.24 0.54 0.08
-0.26 0.54 0.08
-0.28 0.54 0.08
-0.3 0.54 0.08
-0.32 0.54 0.08
-0.34 0.54 0.08
-0.66 0.54 0.08
-0.68 0.54 0.08
-0.7 0.54 0.08
-0.72 0.54 0.08
-0.74 0.54 0.08
-0.76 0.54 0.08
-0.24 0.56 0.08
-0.26 0.56 0.08
-0.28 0.56 0.08
-0.3 0.56 0.08
-0.32 0.56 0.08
-0.34 0.56 0.08
-0.66 0.56 0.08
-0.68 0.56 0.08
-0.7 0.56 0.08
-0.72 0.56 0.08
-0.74 0.56 0.08
-0.76 0.56 0.08
-0.26 0.58 0.08
-0.28 0.58 0.08
-0.3 0.58 0.08
-0.32 0.58 0.08
-0.34 0.58 0.08
-0.66 0.58 0.08
-0.68 0.58 0.08
-0.7 0.58 0.08
-0.72 0.58 0.08
-0.74 0.58 0.08
-0.26 0.6 0.08
-0.28 0.6 0.08
-0.3 0.6 0.08
-0.32 0.6 0.08
-0.34 0.6 0.08
-0.36 0.6 0.08
-0.64 0.6 0.08
-0.66 0.6 0.08
-0.68 0.6 0.08
-0.7 0.6 0.08
-0.72 0.6 0.08
-0.74 0.6 0.08
-0.26 0.62 0.08
-0.28 0.62 0.08
-0.3 0.62 0.08
-0.32 0.62 0.08
-0.34 0.62 0.08
-0.36 0.62 0.08
-0.38 0.62 0.08
-0.62 0.62 0.08
-0.64 0.62 0.08
-0.66 0.62 0.08
-0.68 0.62 0.08
-0.7 0.62 0.08
-0.72 0.62 0.08
-0.74 0.62 0.08
-0.28 0.64 0.08
-0.3 0.64 0.08
-0.32 0.64 0.08
-0.34 0.64 0.08
-0.36 0.64 0.08
-0.38 0.64 0.08
-0.4 0.64 0.08
-0.6 0.64 0.08
-0.62 0.64 0.08
-0.64 0.64 0.08
-0.66 0.64 0.08
-0.68 0.64 0.08
-0.7 0.64 0.08
-0.72 0.64 0.08
-0.3 0.66 0.08
-0.32 0.66 0.08
-0.34 0.66 0.08
-0.36 0.66 0.08
-0.38 0.66 0.08
-0.4 0.66 0.08
-0.42 0.66 0.08
-0.44 0.66 0.08
-0.46 0.66 0.08
-0.54 0.66 0.08
-0.56 0.66 0.08
-0.58 0.66 0.08
-0.6 0.66 0.08
-0.62 0.66 0.08
-0.64 0.66 0.08
-0.66 0.66 0.08
-0.68 0.66 0.08
-0.7 0.66 0.08
-0.3 0.68 0.08
-0.32 0.68 0.08
-0.34 0.68 0.08
-0.36 0.68 0.08
-0.38 0.68 0.08
-0.4 0.68 0.08
-0.42 0.68 0.08
-0.44 0.68 0.08
-0.46 0.68 0.08
-0.48 0.68 0.08
-0.5 0.68 0.08
-0.52 0.68 0.08
-0.54 0.68 0.08
-0.56 0.68 0.08
-0.58 0.68 0.08
-0.6 0.68 0.08
-0.62 0.68 0.08
-0.64 0.68 0.08
-0.66 0.68 0.08
-0.68 0.68 0.08
-0.7 0.68 0.08
-0.32 0.7 0.08
-0.34 0.7 0.08
-0.36 0.7 0.08
-0.38 0.7 0.08
-0.4 0.7 0.08
-0.42 0.7 0.08
-0.44 0.7 0.08
-0.46 0.7 0.08
-0.48 0.7 0.08
-0.5 0.7 0.08
-0.52 0.7 0.08
-0.54 0.7 0.08
-0.56 0.7 0.08
-0.58 0.7 0.08
-0.6 0.7 0.08
-0.62 0.7 0.08
-0.64 0.7 0.08
-0.66 0.7 0.08
-0.68 0.7 0.08
-0.36 0.72 0.08
-0.38 0.72 0.08
-0.4 0.72 0.08
-0.42 0.72 0.08
-0.44 0.72 0.08
-0.46 0.72 0.08
-0.48 0.72 0.08
-0.5 0.72 0.08
-0.52 0.72 0.08
-0.54 0.72 0.08
-0.56 0.72 0.08
-0.58 0.72 0.08
-0.6 0.72 0.08
-0.62 0.72 0.08
-0.64 0.72 0.08
-0.38 0.74 0.08
-0.4 0.74 0.08
-0.42 0.74 0.08
-0.44 0.74 0.08
-0.46 0.74 0.08
-0.48 0.74 0.08
-0.5 0.74 0.08
-0.52 0.74 0.08
-0.54 0.74 0.08
-0.56 0.74 0.08
-0.58 0.74 0.08
-0.6 0.74 0.08
-0.62 0.74 0.08
-0.44 0.76 0.08
-0.46 0.76 0.08
-0.48 0.76 0.08
-0.5 0.76 0.08
-0.52 0.76 0.08
-0.54 0.76 0.08
-0.56 0.76 0.08
-0.4 0.22 0.1
-0.42 0.22 0.1
-0.44 0.22 0.1
-0.46 0.22 0.1
-0.48 0.22 0.1
-0.5 0.22 0.1
-0.52 0.22 0.1
-0.54 0.22 0.1
-0.56 0.22 0.1
-0.58 0.22 0.1
-0.6 0.22 0.1
-0.36 0.24 0.1
-0.38 0.24 0.1
-0.4 0.24 0.1
-0.42 0.24 0.1
-0.44 0.24 0.1
-0.46 0.24 0.1
-0.48 0.24 0.1
-0.5 0.24 0.1
-0.52 0.24 0.1
-0.54 0.24 0.1
-0.56 0.24 0.1
-0.58 0.24 0.1
-0.6 0.24 0.1
-0.62 0.24 0.1
-0.64 0.24 0.1
-0.34 0.26 0.1
-0.36 0.26 0.1
-0.38 0.26 0.1
-0.4 0.26 0.1
-0.42 0.26 0.1
-0.44 0.26 0.1
-0.46 0.26 0.1
-0.48 0.26 0.1
-0.5 0.26 0.1
-0.52 0.26 0.1
-0.54 0.26 0.1
-0.56 0.26 0.1
-0.58 0.26 0.1
-0.6 0.26 0.1
-0.62 0.26 0.1
-0.64 0.26 0.1
-0.66 0.26 0.1
-0.3 0.28 0.1
-0.32 0.28 0.1
-0.34 0.28 0.1
-0.36 0.28 0.1
-0.38 0.28 0.1
-0.4 0.28 0.1
-0.42 0.28 0.1
-0.44 0.28 0.1
-0.46 0.28 0.1
-0.48 0.28 0.1
-0.5 0.28 0.1
-0.52 0.28 0.1
-0.54 0.28 0.1
-0.56 0.28 0.1
-0.58 0.28 0.1
-0.6 0.28 0.1
-0.62 0.28 0.1
-0.64 0.28 0.1
-0.66 0.28 0.1
-0.68 0.28 0.1
-0.7 0.28 0.1
-0.28 0.3 0.1
-0.3 0.3 0.1
-0.32 0.3 0.1
-0.34 0.3 0.1
-0.36 0.3 0.1
-0.38 0.3 0.1
-0.4 0.3 0.1
-0.42 0.3 0.1
-0.44 0.3 0.1
-0.56 0.3 0.1
-0.58 0.3 0.1
-0.6 0.3 0.1
-0.62 0.3 0.1
-0.64 0.3 0.1
-0.66 0.3 0.1
-0.68 0.3 0.1
-0.7 0.3 0.1
-0.72 0.3 0.1
-0.28 0.32 0.1
-0.3 0.32 0.1
-0.32 0.32 0.1
-0.34 0.32 0.1
-0.36 0.32 0.1
-0.38 0.32 0.1
-0.62 0.32 0.1
-0.64 0.32 0.1
-0.66 0.32 0.1
-0.68 0.32 0.1
-0.7 0.32 0.1
-0.72 0.32 0.1
-0.26 0.34 0.1
-0.28 0.34 0.1
-0.3 0.34 0.1
-0.32 0.34 0.1
-0.34 0.34 0.1
-0.36 0.34 0.1
-0.64 0.34 0.1
-0.66 0.34 0.1
-0.68 0.34 0.1
-0.7 0.34 0.1
-0.72 0.34 0.1
-0.74 0.34 0.1
-0.24 0.36 0.1
-0.26 0.36 0.1
-0.28 0.36 0.1
-0.3 0.36 0.1
-0.32 0.36 0.1
-0.34 0.36 0.1
-0.66 0.36 0.1
-0.68 0.36 0.1
-0.7 0.36 0.1
-0.72 0.36 0.1
-0.74 0.36 0.1
-0.76 0.36 0.1
-0.24 0.38 0.1
-0.26 0.38 0.1
-0.28 0.38 0.1
-0.3 0.38 0.1
-0.32 0.38 0.1
-0.68 0.38 0.1
-0.7 0.38 0.1
-0.72 0.38 0.1
-0.74 0.38 0.1
-0.76 0.38 0.1
-0.22 0.4 0.1
-0.24 0.4 0.1
-0.26 0.4 0.1
-0.28 0.4 0.1
-0.3 0.4 0.1
-0.7 0.4 0.1
-0.72 0.4 0.1
-0.74 0.4 0.1
-0.76 0.4 0.1
-0.78 0.4 0.1
-0.22 0.42 0.1
-0.24 0.42 0.1
-0.26 0.42 0.1
-0.28 0.42 0.1
-0.3 0.42 0.1
-0.7 0.42 0.1
-0.72 0.42 0.1
-0.74 0.42 0.1
-0.76 0.42 0.1
-0.78 0.42 0.1
-0.22 0.44 0.1
-0.24 0.44 0.1
-0.26 0.44 0.1
-0.28 0.44 0.1
-0.3 0.44 0.1
-0.7 0.44 0.1
-0.72 0.44 0.1
-0.74 0.44 0.1
-0.76 0.44 0.1
-0.78 0.44 0.1
-0.22 0.46 0.1
-0.24 0.46 0.1
-0.26 0.46 0.1
-0.28 0.46 0.1
-0.72 0.46 0.1
-0.74 0.46 0.1
-0.76 0.46 0.1
-0.78 0.46 0.1
-0.22 0.48 0.1
-0.24 0.48 0.1
-0.26 0.48 0.1
-0.28 0.48 0.1
-0.72 0.48 0.1
-0.74 0.48 0.1
-0.76 0.48 0.1
-0.78 0.48 0.1
-0.22 0.5 0.1
-0.24 0.5 0.1
-0.26 0.5 0.1
-0.28 0.5 0.1
-0.72 0.5 0.1
-0.74 0.5 0.1
-0.76 0.5 0.1
-0.78 0.5 0.1
-0.22 0.52 0.1
-0.24 0.52 0.1
-0.26 0.52 0.1
-0.28 0.52 0.1
-0.72 0.52 0.1
-0.74 0.52 0.1
-0.76 0.52 0.1
-0.78 0.52 0.1
-0.22 0.54 0.1
-0.24 0.54 0.1
-0.26 0.54 0.1
-0.28 0.54 0.1
-0.72 0.54 0.1
-0.74 0.54 0.1
-0.76 0.54 0.1
-0.78 0.54 0.1
-0.22 0.56 0.1
-0.24 0.56 0.1
-0.26 0.56 0.1
-0.28 0.56 0.1
-0.3 0.56 0.1
-0.7 0.56 0.1
-0.72 0.56 0.1
-0.74 0.56 0.1
-0.76 0.56 0.1
-0.78 0.56 0.1
-0.22 0.58 0.1
-0.24 0.58 0.1
-0.26 0.58 0.1
-0.28 0.58 0.1
-0.3 0.58 0.1
-0.7 0.58 0.1
-0.72 0.58 0.1
-0.74 0.58 0.1
-0.76 0.58 0.1
-0.78 0.58 0.1
-0.22 0.6 0.1
-0.24 0.6 0.1
-0.26 0.6 0.1
-0.28 0.6 0.1
-0.3 0.6 0.1
-0.7 0.6 0.1
-0.72 0.6 0.1
-0.74 0.6 0.1
-0.76 0.6 0.1
-0.78 0.6 0.1
-0.24 0.62 0.1
-0.26 0.62 0.1
-0.28 0.62 0.1
-0.3 0.62 0.1
-0.32 0.62 0.1
-0.68 0.62 0.1
-0.7 0.62 0.1
-0.72 0.62 0.1
-0.74 0.62 0.1
-0.76 0.62 0.1
-0.24 0.64 0.1
-0.26 0.64 0.1
-0.28 0.64 0.1
-0.3 0.64 0.1
-0.32 0.64 0.1
-0.34 0.64 0.1
-0.66 0.64 0.1
-0.68 0.64 0.1
-0.7 0.64 0.1
-0.72 0.64 0.1
-0.74 0.64 0.1
-0.76 0.64 0.1
-0.26 0.66 0.1
-0.28 0.66 0.1
-0.3 0.66 0.1
-0.32 0.66 0.1
-0.34 0.66 0.1
-0.36 0.66 0.1
-0.64 0.66 0.1
-0.66 0.66 0.1
-0.68 0.66 0.1
-0.7 0.66 0.1
-0.72 0.66 0.1
-0.74 0.66 0.1
-0.28 0.68 0.1
-0.3 0.68 0.1
-0.32 0.68 0.1
-0.34 0.68 0.1
-0.36 0.68 0.1
-0.38 0.68 0.1
-0.62 0.68 0.1
-0.64 0.68 0.1
-0.66 0.68 0.1
-0.68 0.68 0.1
-0.7 0.68 0.1
-0.72 0.68 0.1
-0.28 0.7 0.1
-0.3 0.7 0.1
-0.32 0.7 0.1
-0.34 0.7 0.1
-0.36 0.7 0.1
-0.38 0.7 0.1
-0.4 0.7 0.1
-0.42 0.7 0.1
-0.44 0.7 0.1
-0.56 0.7 0.1
-0.58 0.7 0.1
-0.6 0.7 0.1
-0.62 0.7 0.1
-0.64 0.7 0.1
-0.66 0.7 0.1
-0.68 0.7 0.1
-0.7 0.7 0.1
-0.72 0.7 0.1
-0.3 0.72 0.1
-0.32 0.72 0.1
-0.34 0.72 0.1
-0.36 0.72 0.1
-0.38 0.72 0.1
-0.4 0.72 0.1
-0.42 0.72 0.1
-0.44 0.72 0.1
-0.46 0.72 0.1
-0.48 0.72 0.1
-0.5 0.72 0.1
-0.52 0.72 0.1
-0.54 0.72 0.1
-0.56 0.72 0.1
-0.58 0.72 0.1
-0.6 0.72 0.1
-0.62 0.72 0.1
-0.64 0.72 0.1
-0.66 0.72 0.1
-0.68 0.72 0.1
-0.7 0.72 0.1
-0.34 0.74 0.1
-0.36 0.74 0.1
-0.38 0.74 0.1
-0.4 0.74 0.1
-0.42 0.74 0.1
-0.44 0.74 0.1
-0.46 0.74 0.1
-0.48 0.74 0.1
-0.5 0.74 0.1
-0.52 0.74 0.1
-0.54 0.74 0.1
-0.56 0.74 0.1
-0.58 0.74 0.1
-0.6 0.74 0.1
-0.62 0.74 0.1
-0.64 0.74 0.1
-0.66 0.74 0.1
-0.36 0.76 0.1
-0.38 0.76 0.1
-0.4 0.76 0.1
-0.42 0.76 0.1
-0.44 0.76 0.1
-0.46 0.76 0.1
-0.48 0.76 0.1
-0.5 0.76 0.1
-0.52 0.76 0.1
-0.54 0.76 0.1
-0.56 0.76 0.1
-0.58 0.76 0.1
-0.6 0.76 0.1
-0.62 0.76 0.1
-0.64 0.76 0.1
-0.4 0.78 0.1
-0.42 0.78 0.1
-0.44 0.78 0.1
-0.46 0.78 0.1
-0.48 0.78 0.1
-0.5 0.78 0.1
-0.52 0.78 0.1
-0.54 0.78 0.1
-0.56 0.78 0.1
-0.58 0.78 0.1
-0.6 0.78 0.1
-0.46 0.18 0.12
-0.48 0.18 0.12
-0.5 0.18 0.12
-0.52 0.18 0.12
-0.54 0.18 0.12
-0.38 0.2 0.12
-0.4 0.2 0.12
-0.42 0.2 0.12
-0.44 0.2 0.12
-0.46 0.2 0.12
-0.48 0.2 0.12
-0.5 0.2 0.12
-0.52 0.2 0.12
-0.54 0.2 0.12
-0.56 0.2 0.12
-0.58 0.2 0.12
-0.6 0.2 0.12
-0.62 0.2 0.12
-0.34 0.22 0.12
-0.36 0.22 0.12
-0.38 0.22 0.12
-0.4 0.22 0.12
-0.42 0.22 0.12
-0.44 0.22 0.12
-0.46 0.22 0.12
-0.48 0.22 0.12
-0.5 0.22 0.12
-0.52 0.22 0.12
-0.54 0.22 0.12
-0.56 0.22 0.12
-0.58 0.22 0.12
-0.6 0.22 0.12
-0.62 0.22 0.12
-0.64 0.22 0.12
-0.66 0.22 0.12
-0.32 0.24 0.12
-0.34 0.24 0.12
-0.36 0.24 0.12
-0.38 0.24 0.12
-0.4 0.24 0.12
-0.42 0.24 0.12
-0.44 0.24 0.12
-0.46 0.24 0.12
-0.48 0.24 0.12
-0.5 0.24 0.12
-0.52 0.24 0.12
-0.54 0.24 0.12
-0.56 0.24 0.12
-0.58 0.24 0.12
-0.6 0.24 0.12
-0.62 0.24 0.12
-0.64 0.24 0.12
-0.66 0.24 0.12
-0.68 0.24 0.12
-0.3 0.26 0.12
-0.32 0.26 0.12
-0.34 0.26 0.12
-0.36 0.26 0.12
-0.38 0.26 0.12
-0.4 0.26 0.12
-0.42 0.26 0.12
-0.44 0.26 0.12
-0.46 0.26 0.12
-0.54 0.26 0.12
-0.56 0.26 0.12
-0.58 0.26 0.12
-0.6 0.26 0.12
-0.62 0.26 0.12
-0.64 0.26 0.12
-0.66 0.26 0.12
-0.68 0.26 0.12
-0.7 0.26 0.12
-0.28 0.28 0.12
-0.3 0.28 0.12
-0.32 0.28 0.12
-0.34 0.28 0.12
-0.36 0.28 0.12
-0.38 0.28 0.12
-0.4 0.28 0.12
-0.6 0.28 0.12
-0.62 0.28 0.12
-0.64 0.28 0.12
-0.66 0.28 0.12
-0.68 0.28 0.12
-0.7 0.28 0.12
-0.72 0.28 0.12
-0.26 0.3 0.12
-0.28 0.3 0.12
-0.3 0.3 0.12
-0.32 0.3 0.12
-0.34 0.3 0.12
-0.36 0.3 0.12
-0.64 0.3 0.12
-0.66 0.3 0.12
-0.68 0.3 0.12
-0.7 0.3 0.12
-0.72 0.3 0.12
-0.74 0.3 0.12
-0.24 0.32 0.12
-0.26 0.32 0.12
-0.28 0.32 0.12
-0.3 0.32 0.12
-0.32 0.32 0.12
-0.68 0.32 0.12
-0.7 0.32 0.12
-0.72 0.32 0.12
-0.74 0.32 0.12
-0.76 0.32 0.12
-0.22 0.34 0.12
-0.24 0.34 0.12
-0.26 0.34 0.12
-0.28 0.34 0.12
-0.3 0.34 0.12
-0.7 0.34 0.12
-0.72 0.34 0.12
-0.74 0.34 0.12
-0.76 0.34 0.12
-0.78 0.34 0.12
-0.22 0.36 0.12
-0.24 0.36 0.12
-0.26 0.36 0.12
-0.28 0.36 0.12
-0.3 0.36 0.12
-0.7 0.36 0.12
-0.72 0.36 0.12
-0.74 0.36 0.12
-0.76 0.36 0.12
-0.78 0.36 0.12
-0.2 0.38 0.12
-0.22 0.38 0.12
-0.24 0.38 0.12
-0.26 0.38 0.12
-0.28 0.38 0.12
-0.72 0.38 0.12
-0.74 0.38 0.12
-0.76 0.38 0.12
-0.78 0.38 0.12
-0.8 0.38 0.12
-0.2 0.4 0.12
-0.22 0.4 0.12
-0.24 0.4 0.12
-0.26 0.4 0.12
-0.28 0.4 0.12
-0.72 0.4 0.12
-0.74 0.4 0.12
-0.76 0.4 0.12
-0.78 0.4 0.12
-0.8 0.4 0.12
-0.2 0.42 0.12
-0.22 0.42 0.12
-0.24 0.42 0.12
-0.26 0.42 0.12
-0.74 0.42 0.12
-0.76 0.42 0.12
-0.78 0.42 0.12
-0.8 0.42 0.12
-0.2 0.44 0.12
-0.22 0.44 0.12
-0.24 0.44 0.12
-0.26 0.44 0.12
-0.74 0.44 0.12
-0.76 0.44 0.12
-0.78 0.44 0.12
-0.8 0.44 0.12
-0.18 0.46 0.12
-0.2 0.46 0.12
-0.22 0.46 0.12
-0.24 0.46 0.12
-0.26 0.46 0.12
-0.74 0.46 0.12
-0.76 0.46 0.12
-0.78 0.46 0.12
-0.8 0.46 0.12
-0.82 0.46 0.12
-0.18 0.48 0.12
-0.2 0.48 0.12
-0.22 0.48 0.12
-0.24 0.48 0.12
-0.76 0.48 0.12
-0.78 0.48 0.12
-0.8 0.48 0.12
-0.82 0.48 0.12
-0.18 0.5 0.12
-0.2 0.5 0.12
-0.22 0.5 0.12
-0.24 0.5 0.12
-0.76 0.5 0.12
-0.78 0.5 0.12
-0.8 0.5 0.12
-0.82 0.5 0.12
-0.18 0.52 0.12
-0.2 0.52 0.12
-0.22 0.52 0.12
-0.24 0.52 0.12
-0.76 0.52 0.12
-0.78 0.52 0.12
-0.8 0.52 0.12
-0.82 0.52 0.12
-0.18 0.54 0.12
-0.2 0.54 0.12
-0.22 0.54 0.12
-0.24 0.54 0.12
-0.26 0.54 0.12
-0.74 0.54 0.12
-0.76 0.54 0.12
-0.78 0.54 0.12
-0.8 0.54 0.12
-0.82 0.54 0.12
-0.2 0.56 0.12
-0.22 0.56 0.12
-0.24 0.56 0.12
-0.26 0.56 0.12
-0.74 0.56 0.12
-0.76 0.56 0.12
-0.78 0.56 0.12
-0.8 0.56 0.12
-0.2 0.58 0.12
-0.22 0.58 0.12
-0.24 0.58 0.12
-0.26 0.58 0.12
-0.74 0.58 0.12
-0.76 0.58 0.12
-0.78 0.58 0.12
-0.8 0.58 0.12
-0.2 0.6 0.12
-0.22 0.6 0.12
-0.24 0.6 0.12
-0.26 0.6 0.12
-0.28 0.6 0.12
-0.72 0.6 0.12
-0.74 0.6 0.12
-0.76 0.6 0.12
-0.78 0.6 0.12
-0.8 0.6 0.12
-0.2 0.62 0.12
-0.22 0.62 0.12
-0.24 0.62 0.12
-0.26 0.62 0.12
-0.28 0.62 0.12
-0.72 0.62 0.12
-0.74 0.62 0.12
-0.76 0.62 0.12
-0.78 0.62 0.12
-0.8 0.62 0.12
-0.22 0.64 0.12
-0.24 0.64 0.12
-0.26 0.64 0.12
-0.28 0.64 0.12
-0.3 0.64 0.12
-0.7 0.64 0.12
-0.72 0.64 0.12
-0.74 0.64 0.12
-0.76 0.64 0.12
-0.78 0.64 0.12
-0.22 0.66 0.12
-0.24 0.66 0.12
-0.26 0.66 0.12
-0.28 0.66 0.12
-0.3 0.66 0.12
-0.7 0.66 0.12
-0.72 0.66 0.12
-0.74 0.66 0.12
-0.76 0.66 0.12
-0.78 0.66 0.12
-0.24 0.68 0.12
-0.26 0.68 0.12
-0.28 0.68 0.12
-0.3 0.68 0.12
-0.32 0.68 0.12
-0.68 0.68 0.12
-0.7 0.68 0.12
-0.72 0.68 0.12
-0.74 0.68 0.12
-0.76 0.68 0.12
-0.26 0.7 0.12
-0.28 0.7 0.12
-0.3 0.7 0.12
-0.32 0.7 0.12
-0.34 0.7 0.12
-0.36 0.7 0.12
-0.64 0.7 0.12
-0.66 0.7 0.12
-0.68 0.7 0.12
-0.7 0.7 0.12
-0.72 0.7 0.12
-0.74 0.7 0.12
-0.28 0.72 0.12
-0.3 0.72 0.12
-0.32 0.72 0.12
-0.34 0.72 0.12
-0.36 0.72 0.12
-0.38 0.72 0.12
-0.4 0.72 0.12
-0.6 0.72 0.12
-0.62 0.72 0.12
-0.64 0.72 0.12
-0.66 0.72 0.12
-0.68 0.72 0.12
-0.7 0.72 0.12
-0.72 0.72 0.12
-0.3 0.74 0.12
-0.32 0.74 0.12
-0.34 0.74 0.12
-0.36 0.74 0.12
-0.38 0.74 0.12
-0.4 0.74 0.12
-0.42 0.74 0.12
-0.44 0.74 0.12
-0.46 0.74 0.12
-0.54 0.74 0.12
-0.56 0.74 0.12
-0.58 0.74 0.12
-0.6 0.74 0.12
-0.62 0.74 0.12
-0.64 0.74 0.12
-0.66 0.74 0.12
-0.68 0.74 0.12
-0.7 0.74 0.12
-0.32 0.76 0.12
-0.34 0.76 0.12
-0.36 0.76 0.12
-0.38 0.76 0.12
-0.4 0.76 0.12
-0.42 0.76 0.12
-0.44 0.76 0.12
-0.46 0.76 0.12
-0.48 0.76 0.12
-0.5 0.76 0.12
-0.52 0.76 0.12
-0.54 0.76 0.12
-0.56 0.76 0.12
-0.58 0.76 0.12
-0.6 0.76 0.12
-0.62 0.76 0.12
-0.64 0.76 0.12
-0.66 0.76 0.12
-0.68 0.76 0.12
-0.34 0.78 0.12
-0.36 0.78 0.12
-0.38 0.78 0.12
-0.4 0.78 0.12
-0.42 0.78 0.12
-0.44 0.78 0.12
-0.46 0.78 0.12
-0.48 0.78 0.12
-0.5 0.78 0.12
-0.52 0.78 0.12
-0.54 0.78 0.12
-0.56 0.78 0.12
-0.58 0.78 0.12
-0.6 0.78 0.12
-0.62 0.78 0.12
-0.64 0.78 0.12
-0.66 0.78 0.12
-0.38 0.8 0.12
-0.4 0.8 0.12
-0.42 0.8 0.12
-0.44 0.8 0.12
-0.46 0.8 0.12
-0.48 0.8 0.12
-0.5 0.8 0.12
-0.52 0.8 0.12
-0.54 0.8 0.12
-0.56 0.8 0.12
-0.58 0.8 0.12
-0.6 0.8 0.12
-0.62 0.8 0.12
-0.46 0.82 0.12
-0.48 0.82 0.12
-0.5 0.82 0.12
-0.52 0.82 0.12
-0.54 0.82 0.12
-0.44 0.16 0.14
-0.46 0.16 0.14
-0.48 0.16 0.14
-0.5 0.16 0.14
-0.52 0.16 0.14
-0.54 0.16 0.14
-0.56 0.16 0.14
-0.38 0.18 0.14
-0.4 0.18 0.14
-0.42 0.18 0.14
-0.44 0.18 0.14
-0.46 0.18 0.14
-0.48 0.18 0.14
-0.5 0.18 0.14
-0.52 0.18 0.14
-0.54 0.18 0.14
-0.56 0.18 0.14
-0.58 0.18 0.14
-0.6 0.18 0.14
-0.62 0.18 0.14
-0.34 0.2 0.14
-0.36 0.2 0.14
-0.38 0.2 0.14
-0.4 0.2 0.14
-0.42 0.2 0.14
-0.44 0.2 0.14
-0.46 0.2 0.14
-0.48 0.2 0.14
-0.5 0.2 0.14
-0.52 0.2 0.14
-0.54 0.2 0.14
-0.56 0.2 0.14
-0.58 0.2 0.14
-0.6 0.2 0.14
-0.62 0.2 0.14
-0.64 0.2 0.14
-0.66 0.2 0.14
-0.3 0.22 0.14
-0.32 0.22 0.14
-0.34 0.22 0.14
-0.36 0.22 0.14
-0.38 0.22 0.14
-0.4 0.22 0.14
-0.42 0.22 0.14
-0.44 0.22 0.14
-0.46 0.22 0.14
-0.48 0.22 0.14
-0.5 0.22 0.14
-0.52 0.22 0.14
-0.54 0.22 0.14
-0.56 0.22 0.14
-0.58 0.22 0.14
-0.6 0.22 0.14
-0.62 0.22 0.14
-0.64 0.22 0.14
-0.66 0.22 0.14
-0.68 0.22 0.14
-0.7 0.22 0.14
-0.28 0.24 0.14
-0.3 0.24 0.14
-0.32 0.24 0.14
-0.34 0.24 0.14
-0.36 0.24 0.14
-0.38 0.24 0.14
-0.4 0.24 0.14
-0.42 0.24 0.14
-0.58 0.24 0.14
-0.6 0.24 0.14
-0.62 0.24 0.14
-0.64 0.24 0.14
-0.66 0.24 0.14
-0.68 0.24 0.14
-0.7 0.24 0.14
-0.72 0.24 0.14
-0.26 0.26 0.14
-0.28 0.26 0.14
-0.3 0.26 0.14
-0.32 0.26 0.14
-0.34 0.26 0.14
-0.36 0.26 0.14
-0.64 0.26 0.14
-0.66 0.26 0.14
-0.68 0.26 0.14
-0.7 0.26 0.14
-0.72 0.26 0.14
-0.74 0.26 0.14
-0.24 0.28 0.14
-0.26 0.28 0.14
-0.28 0.28 0.14
-0.3 0.28 0.14
-0.32 0.28 0.14
-0.34 0.28 0.14
-0.66 0.28 0.14
-0.68 0.28 0.14
-0.7 0.28 0.14
-0.72 0.28 0.14
-0.74 0.28 0.14
-0.76 0.28 0.14
-0.22 0.3 0.14
-0.24 0.3 0.14
-0.26 0.3 0.14
-0.28 0.3 0.14
-0.3 0.3 0.14
-0.7 0.3 0.14
-0.72 0.3 0.14
-0.74 0.3 0.14
-0.76 0.3 0.14
-0.78 0.3 0.14
-0.22 0.32 0.14
-0.24 0.32 0.14
-0.26 0.32 0.14
-0.28 0.32 0.14
-0.72 0.32 0.14
-0.74 0.32 0.14
-0.76 0.32 0.14
-0.78 0.32 0.14
-0.2 0.34 0.14
-0.22 0.34 0.14
-0.24 0.34 0.14
-0.26 0.34 0.14
-0.28 0.34 0.14
-0.72 0.34 0.14
-0.74 0.34 0.14
-0.76 0.34 0.14
-0.78 0.34 0.14
-0.8 0.34 0.14
-0.2 0.36 0.14
-0.22 0.36 0.14
-0.24 0.36 0.14
-0.26 0.36 0.14
-0.74 0.36 0.14
-0.76 0.36 0.14
-0.78 0.36 0.14
-0.8 0.36 0.14
-0.18 0.38 0.14
-0.2 0.38 0.14
-0.22 0.38 0.14
-0.24 0.38 0.14
-0.76 0.38 0.14
-0.78 0.38 0.14
-0.8 0.38 0.14
-0.82 0.38 0.14
-0.18 0.4 0.14
-0.2 0.4 0.14
-0.22 0.4 0.14
-0.24 0.4 0.14
-0.76 0.4 0.14
-0.78 0.4 0.14
-0.8 0.4 0.14
-0.82 0.4 0.14
-0.18 0.42 0.14
-0.2 0.42 0.14
-0.22 0.42 0.14
-0.24 0.42 0.14
-0.76 0.42 0.14
-0.78 0.42 0.14
-0.8 0.42 0.14
-0.82 0.42 0.14
-0.16 0.44 0.14
-0.18 0.44 0.14
-0.2 0.44 0.14
-0.22 0.44 0.14
-0.78 0.44 0.14
-0.8 0.44 0.14
-0.82 0.44 0.14
-0.84 0.44 0.14
-0.16 0.46 0.14
-0.18 0.46 0.14
-0.2 0.46 0.14
-0.22 0.46 0.14
-0.78 0.46 0.14
-0.8 0.46 0.14
-0.82 0.46 0.14
-0.84 0.46 0.14
-0.16 0.48 0.14
-0.18 0.48 0.14
-0.2 0.48 0.14
-0.22 0.48 0.14
-0.78 0.48 0.14
-0.8 0.48 0.14
-0.82 0.48 0.14
-0.84 0.48 0.14
-0.16 0.5 0.14
-0.18 0.5 0.14
-0.2 0.5 0.14
-0.22 0.5 0.14
-0.78 0.5 0.14
-0.8 0.5 0.14
-0.82 0.5 0.14
-0.84 0.5 0.14
-0.16 0.52 0.14
-0.18 0.52 0.14
-0.2 0.52 0.14
-0.22 0.52 0.14
-0.78 0.52 0.14
-0.8 0.52 0.14
-0.82 0.52 0.14
-0.84 0.52 0.14
-0.16 0.54 0.14
-0.18 0.54 0.14
-0.2 0.54 0.14
-0.22 0.54 0.14
-0.78 0.54 0.14
-0.8 0.54 0.14
-0.82 0.54 0.14
-0.84 0.54 0.14
-0.16 0.56 0.14
-0.18 0.56 0.14
-0.2 0.56 0.14
-0.22 0.56 0.14
-0.78 0.56 0.14
-0.8 0.56 0.14
-0.82 0.56 0.14
-0.84 0.56 0.14
-0.18 0.58 0.14
-0.2 0.58 0.14
-0.22 0.58 0.14
-0.24 0.58 0.14
-0.76 0.58 0.14
-0.78 0.58 0.14
-0.8 0.58 0.14
-0.82 0.58 0.14
-0.18 0.6 0.14
-0.2 0.6 0.14
-0.22 0.6 0.14
-0.24 0.6 0.14
-0.76 0.6 0.14
-0.78 0.6 0.14
-0.8 0.6 0.14
-0.82 0.6 0.14
-0.18 0.62 0.14
-0.2 0.62 0.14
-0.22 0.62 0.14
-0.24 0.62 0.14
-0.76 0.62 0.14
-0.78 0.62 0.14
-0.8 0.62 0.14
-0.82 0.62 0.14
-0.2 0.64 0.14
-0.22 0.64 0.14
-0.24 0.64 0.14
-0.26 0.64 0.14
-0.74 0.64 0.14
-0.76 0.64 0.14
-0.78 0.64 0.14
-0.8 0.64 0.14
-0.2 0.66 0.14
-0.22 0.66 0.14
-0.24 0.66 0.14
-0.26 0.66 0.14
-0.28 0.66 0.14
-0.72 0.66 0.14
-0.74 0.66 0.14
-0.76 0.66 0.14
-0.78 0.66 0.14
-0.8 0.66 0.14
-0.22 0.68 0.14
-0.24 0.68 0.14
-0.26 0.68 0.14
-0.28 0.68 0.14
-0.72 0.68 0.14
-0.74 0.68 0.14
-0.76 0.68 0.14
-0.78 0.68 0.14
-0.22 0.7 0.14
-0.24 0.7 0.14
-0.26 0.7 0.14
-0.28 0.7 0.14
-0.3 0.7 0.14
-0.7 0.7 0.14
-0.72 0.7 0.14
-0.74 0.7 0.14
-0.76 0.7 0.14
-0.78 0.7 0.14
-0.24 0.72 0.14
-0.26 0.72 0.14
-0.28 0.72 0.14
-0.3 0.72 0.14
-0.32 0.72 0.14
-0.34 0.72 0.14
-0.66 0.72 0.14
-0.68 0.72 0.14
-0.7 0.72 0.14
-0.72 0.72 0.14
-0.74 0.72 0.14
-0.76 0.72 0.14
-0.26 0.74 0.14
-0.28 0.74 0.14
-0.3 0.74 0.14
-0.32 0.74 0.14
-0.34 0.74 0.14
-0.36 0.74 0.14
-0.64 0.74 0.14
-0.66 0.74 0.14
-0.68 0.74 0.14
-0.7 0.74 0.14
-0.72 0.74 0.14
-0.74 0.74 0.14
-0.28 0.76 0.14
-0.3 0.76 0.14
-0.32 0.76 0.14
-0.34 0.76 0.14
-0.36 0.76 0.14
-0.38 0.76 0.14
-0.4 0.76 0.14
-0.42 0.76 0.14
-0.58 0.76 0.14
-0.6 0.76 0.14
-0.62 0.76 0.14
-0.64 0.76 0.14
-0.66 0.76 0.14
-0.68 0.76 0.14
-0.7 0.76 0.14
-0.72 0.76 0.14
-0.3 0.78 0.14
-0.32 0.78 0.14
-0.34 0.78 0.14
-0.36 0.78 0.14
-0.38 0.78 0.14
-0.4 0.78 0.14
-0.42 0.78 0.14
-0.44 0.78 0.14
-0.46 0.78 0.14
-0.48 0.78 0.14
-0.5 0.78 0.14
-0.52 0.78 0.14
-0.54 0.78 0.14
-0.56 0.78 0.14
-0.58 0.78 0.14
-0.6 0.78 0.14
-0.62 0.78 0.14
-0.64 0.78 0.14
-0.66 0.78 0.14
-0.68 0.78 0.14
-0.7 0.78 0.14
-0.34 0.8 0.14
-0.36 0.8 0.14
-0.38 0.8 0.14
-0.4 0.8 0.14
-0.42 0.8 0.14
-0.44 0.8 0.14
-0.46 0.8 0.14
-0.48 0.8 0.14
-0.5 0.8 0.14
-0.52 0.8 0.14
-0.54 0.8 0.14
-0.56 0.8 0.14
-0.58 0.8 0.14
-0.6 0.8 0.14
-0.62 0.8 0.14
-0.64 0.8 0.14
-0.66 0.8 0.14
-0.38 0.82 0.14
-0.4 0.82 0.14
-0.42 0.82 0.14
-0.44 0.82 0.14
-0.46 0.82 0.14
-0.48 0.82 0.14
-0.5 0.82 0.14
-0.52 0.82 0.14
-0.54 0.82 0.14
-0.56 0.82 0.14
-0.58 0.82 0.14
-0.6 0.82 0.14
-0.62 0.82 0.14
-0.44 0.84 0.14
-0.46 0.84 0.14
-0.48 0.84 0.14
-0.5 0.84 0.14
-0.52 0.84 0.14
-0.54 0.84 0.14
-0.56 0.84 0.14
-0.44 0.14 0.16
-0.46 0.14 0.16
-0.48 0.14 0.16
-0.5 0.14 0.16
-0.52 0.14 0.16
-0.54 0.14 0.16
-0.56 0.14 0.16
-0.38 0.16 0.16
-0.4 0.16 0.16
-0.42 0.16 0.16
-0.44 0.16 0.16
-0.46 0.16 0.16
-0.48 0.16 0.16
-0.5 0.16 0.16
-0.52 0.16 0.16
-0.54 0.16 0.16
-0.56 0.16 0.16
-0.58 0.16 0.16
-0.6 0.16 0.16
-0.62 0.16 0.16
-0.34 0.18 0.16
-0.36 0.18 0.16
-0.38 0.18 0.16
-0.4 0.18 0.16
-0.42 0.18 0.16
-0.44 0.18 0.16
-0.46 0.18 0.16
-0.48 0.18 0.16
-0.5 0.18 0.16
-0.52 0.18 0.16
-0.54 0.18 0.16
-0.56 0.18 0.16
-0.58 0.18 0.16
-0.6 0.18 0.16
-0.62 0.18 0.16
-0.64 0.18 0.16
-0.66 0.18 0.16
-0.3 0.2 0.16
-0.32 0.2 0.16
-0.34 0.2 0.16
-0.36 0.2 0.16
-0.38 0.2 0.16
-0.4 0.2 0.16
-0.42 0.2 0.16
-0.44 0.2 0.16
-0.46 0.2 0.16
-0.48 0.2 0.16
-0.5 0.2 0.16
-0.52 0.2 0.16
-0.54 0.2 0.16
-0.56 0.2 0.16
-0.58 0.2 0.16
-0.6 0.2 0.16
-0.62 0.2 0.16
-0.64 0.2 0.16
-0.66 0.2 0.16
-0.68 0.2 0.16
-0.7 0.2 0.16
-0.28 0.22 0.16
-0.3 0.22 0.16
-0.32 0.22 0.16
-0.34 0.22 0.16
-0.36 0.22 0.16
-0.38 0.22 0.16
-0.4 0.22 0.16
-0.6 0.22 0.16
-0.62 0.22 0.16
-0.64 0.22 0.16
-0.66 0.22 0.16
-0.68 0.22 0.16
-0.7 0.22 0.16
-0.72 0.22 0.16
-0.26 0.24 0.16
-0.28 0.24 0.16
-0.3 0.24 0.16
-0.32 0.24 0.16
-0.34 0.24 0.16
-0.36 0.24 0.16
-0.64 0.24 0.16
-0.66 0.24 0.16
-0.68 0.24 0.16
-0.7 0.24 0.16
-0.72 0.24 0.16
-0.74 0.24 0.16
-0.24 0.26 0.16
-0.26 0.26 0.16
-0.28 0.26 0.16
-0.3 0.26 0.16
-0.32 0.26 0.16
-0.68 0.26 0.16
-0.7 0.26 0.16
-0.72 0.26 0.16
-0.74 0.26 0.16
-0.76 0.26 0.16
-0.22 0.28 0.16
-0.24 0.28 0.16
-0.26 0.28 0.16
-0.28 0.28 0.16
-0.3 0.28 0.16
-0.7 0.28 0.16
-0.72 0.28 0.16
-0.74 0.28 0.16
-0.76 0.28 0.16
-0.78 0.28 0.16
-0.2 0.3 0.16
-0.22 0.3 0.16
-0.24 0.3 0.16
-0.26 0.3 0.16
-0.28 0.3 0.16
-0.72 0.3 0.16
-0.74 0.3 0.16
-0.76 0.3 0.16
-0.78 0.3 0.16
-0.8 0.3 0.16
-0.2 0.32 0.16
-0.22 0.32 0.16
-0.24 0.32 0.16
-0.26 0.32 0.16
-0.74 0.32 0.16
-0.76 0.32 0.16
-0.78 0.32 0.16
-0.8 0.32 0.16
-0.18 0.34 0.16
-0.2 0.34 0.16
-0.22 0.34 0.16
-0.24 0.34 0.16
-0.76 0.34 0.16
-0.78 0.34 0.16
-0.8 0.34 0.16
-0.82 0.34 0.16
-0.18 0.36 0.16
-0.2 0.36 0.16
-0.22 0.36 0.16
-0.24 0.36 0.16
-0.76 0.36 0.16
-0.78 0.36 0.16
-0.8 0.36 0.16
-0.82 0.36 0.16
-0.16 0.38 0.16
-0.18 0.38 0.16
-0.2 0.38 0.16
-0.22 0.38 0.16
-0.78 0.38 0.16
-0.8 0.38 0.16
-0.82 0.38 0.16
-0.84 0.38 0.16
-0.16 0.4 0.16
-0.18 0.4 0.16
-0.2 0.4 0.16
-0.22 0.4 0.16
-0.78 0.4 0.16
-0.8 0.4 0.16
-0.82 0.4 0.16
-0.84 0.4 0.16
-0.16 0.42 0.16
-0.18 0.42 0.16
-0.2 0.42 0.16
-0.8 0.42 0.16
-0.82 0.42 0.16
-0.84 0.42 0.16
-0.14 0.44 0.16
-0.16 0.44 0.16
-0.18 0.44 0.16
-0.2 0.44 0.16
-0.8 0.44 0.16
-0.82 0.44 0.16
-0.84 0.44 0.16
-0.86 0.44 0.16
-0.14 0.46 0.16
-0.16 0.46 0.16
-0.18 0.46 0.16
-0.2 0.46 0.16
-0.8 0.46 0.16
-0.82 0.46 0.16
-0.84 0.46 0.16
-0.86 0.46 0.16
-0.14 0.48 0.16
-0.16 0.48 0.16
-0.18 0.48 0.16
-0.2 0.48 0.16
-0.8 0.48 0.16
-0.82 0.48 0.16
-0.84 0.48 0.16
-0.86 0.48 0.16
-0.14 0.5 0.16
-0.16 0.5 0.16
-0.18 0.5 0.16
-0.2 0.5 0.16
-0.8 0.5 0.16
-0.82 0.5 0.16
-0.84 0.5 0.16
-0.86 0.5 0.16
-0.14 0.52 0.16
-0.16 0.52 0.16
-0.18 0.52 0.16
-0.2 0.52 0.16
-0.8 0.52 0.16
-0.82 0.52 0.16
-0.84 0.52 0.16
-0.86 0.52 0.16
-0.14 0.54 0.16
-0.16 0.54 0.16
-0.18 0.54 0.16
-0.2 0.54 0.16
-0.8 0.54 0.16
-0.82 0.54 0.16
-0.84 0.54 0.16
-0.86 0.54 0.16
-0.14 0.56 0.16
-0.16 0.56 0.16
-0.18 0.56 0.16
-0.2 0.56 0.16
-0.8 0.56 0.16
-0.82 0.56 0.16
-0.84 0.56 0.16
-0.86 0.56 0.16
-0.16 0.58 0.16
-0.18 0.58 0.16
-0.2 0.58 0.16
-0.8 0.58 0.16
-0.82 0.58 0.16
-0.84 0.58 0.16
-0.16 0.6 0.16
-0.18 0.6 0.16
-0.2 0.6 0.16
-0.22 0.6 0.16
-0.78 0.6 0.16
-0.8 0.6 0.16
-0.82 0.6 0.16
-0.84 0.6 0.16
-0.16 0.62 0.16
-0.18 0.62 0.16
-0.2 0.62 0.16
-0.22 0.62 0.16
-0.78 0.62 0.16
-0.8 0.62 0.16
-0.82 0.62 0.16
-0.84 0.62 0.16
-0.18 0.64 0.16
-0.2 0.64 0.16
-0.22 0.64 0.16
-0.24 0.64 0.16
-0.76 0.64 0.16
-0.78 0.64 0.16
-0.8 0.64 0.16
-0.82 0.64 0.16
-0.18 0.66 0.16
-0.2 0.66 0.16
-0.22 0.66 0.16
-0.24 0.66 0.16
-0.76 0.66 0.16
-0.78 0.66 0.16
-0.8 0.66 0.16
-0.82 0.66 0.16
-0.2 0.68 0.16
-0.22 0.68 0.16
-0.24 0.68 0.16
-0.26 0.68 0.16
-0.74 0.68 0.16
-0.76 0.68 0.16
-0.78 0.68 0.16
-0.8 0.68 0.16
-0.2 0.7 0.16
-0.22 0.7 0.16
-0.24 0.7 0.16
-0.26 0.7 0.16
-0.28 0.7 0.16
-0.72 0.7 0.16
-0.74 0.7 0.16
-0.76 0.7 0.16
-0.78 0.7 0.16
-0.8 0.7 0.16
-0.22 0.72 0.16
-0.24 0.72 0.16
-0.26 0.72 0.16
-0.28 0.72 0.16
-0.3 0.72 0.16
-0.7 0.72 0.16
-0.72 0.72 0.16
-0.74 0.72 0.16
-0.76 0.72 0.16
-0.78 0.72 0.16
-0.24 0.74 0.16
-0.26 0.74 0.16
-0.28 0.74 0.16
-0.3 0.74 0.16
-0.32 0.74 0.16
-0.68 0.74 0.16
-0.7 0.74 0.16
-0.72 0.74 0.16
-0.74 0.74 0.16
-0.76 0.74 0.16
-0.26 0.76 0.16
-0.28 0.76 0.16
-0.3 0.76 0.16
-0.32 0.76 0.16
-0.34 0.76 0.16
-0.36 0.76 0.16
-0.64 0.76 0.16
-0.66 0.76 0.16
-0.68 0.76 0.16
-0.7 0.76 0.16
-0.72 0.76 0.16
-0.74 0.76 0.16
-0.28 0.78 0.16
-0.3 0.78 0.16
-0.32 0.78 0.16
-0.34 0.78 0.16
-0.36 0.78 0.16
-0.38 0.78 0.16
-0.4 0.78 0.16
-0.6 0.78 0.16
-0.62 0.78 0.16
-0.64 0.78 0.16
-0.66 0.78 0.16
-0.68 0.78 0.16
-0.7 0.78 0.16
-0.72 0.78 0.16
-0.3 0.8 0.16
-0.32 0.8 0.16
-0.34 0.8 0.16
-0.36 0.8 0.16
-0.38 0.8 0.16
-0.4 0.8 0.16
-0.42 0.8 0.16
-0.44 0.8 0.16
-0.46 0.8 0.16
-0.48 0.8 0.16
-0.5 0.8 0.16
-0.52 0.8 0.16
-0.54 0.8 0.16
-0.56 0.8 0.16
-0.58 0.8 0.16
-0.6 0.8 0.16
-0.62 0.8 0.16
-0.64 0.8 0.16
-0.66 0.8 0.16
-0.68 0.8 0.16
-0.7 0.8 0.16
-0.34 0.82 0.16
-0.36 0.82 0.16
-0.38 0.82 0.16
-0.4 0.82 0.16
-0.42 0.82 0.16
-0.44 0.82 0.16
-0.46 0.82 0.16
-0.48 0.82 0.16
-0.5 0.82 0.16
-0.52 0.82 0.16
-0.54 0.82 0.16
-0.56 0.82 0.16
-0.58 0.82 0.16
-0.6 0.82 0.16
-0.62 0.82 0.16
-0.64 0.82 0.16
-0.66 0.82 0.16
-0.38 0.84 0.16
-0.4 0.84 0.16
-0.42 0.84 0.16
-0.44 0.84 0.16
-0.46 0.84 0.16
-0.48 0.84 0.16
-0.5 0.84 0.16
-0.52 0.84 0.16
-0.54 0.84 0.16
-0.56 0.84 0.16
-0.58 0.84 0.16
-0.6 0.84 0.16
-0.62 0.84 0.16
-0.44 0.86 0.16
-0.46 0.86 0.16
-0.48 0.86 0.16
-0.5 0.86 0.16
-0.52 0.86 0.16
-0.54 0.86 0.16
-0.56 0.86 0.16
-0.46 0.12 0.18
-0.48 0.12 0.18
-0.5 0.12 0.18
-0.52 0.12 0.18
-0.54 0.12 0.18
-0.38 0.14 0.18
-0.4 0.14 0.18
-0.42 0.14 0.18
-0.44 0.14 0.18
-0.46 0.14 0.18
-0.48 0.14 0.18
-0.5 0.14 0.18
-0.52 0.14 0.18
-0.54 0.14 0.18
-0.56 0.14 0.18
-0.58 0.14 0.18
-0.6 0.14 0.18
-0.62 0.14 0.18
-0.34 0.16 0.18
-0.36 0.16 0.18
-0.38 0.16 0.18
-0.4 0.16 0.18
-0.42 0.16 0.18
-0.44 0.16 0.18
-0.46 0.16 0.18
-0.48 0.16 0.18
-0.5 0.16 0.18
-0.52 0.16 0.18
-0.54 0.16 0.18
-0.56 0.16 0.18
-0.58 0.16 0.18
-0.6 0.16 0.18
-0.62 0.16 0.18
-0.64 0.16 0.18
-0.66 0.16 0.18
-0.3 0.18 0.18
-0.32 0.18 0.18
-0.34 0.18 0.18
-0.36 0.18 0.18
-0.38 0.18 0.18
-0.4 0.18 0.18
-0.42 0.18 0.18
-0.44 0.18 0.18
-0.46 0.18 0.18
-0.48 0.18 0.18
-0.5 0.18 0.18
-0.52 0.18 0.18
-0.54 0.18 0.18
-0.56 0.18 0.18
-0.58 0.18 0.18
-0.6 0.18 0.18
-0.62 0.18 0.18
-0.64 0.18 0.18
-0.66 0.18 0.18
-0.68 0.18 0.18
-0.7 0.18 0.18
-0.28 0.2 0.18
-0.3 0.2 0.18
-0.32 0.2 0.18
-0.34 0.2 0.18
-0.36 0.2 0.18
-0.38 0.2 0.18
-0.62 0.2 0.18
-0.64 0.2 0.18
-0.66 0.2 0.18
-0.68 0.2 0.18
-0.7 0.2 0.18
-0.72 0.2 0.18
-0.24 0.22 0.18
-0.26 0.22 0.18
-0.28 0.22 0.18
-0.3 0.22 0.18
-0.32 0.22 0.18
-0.34 0.22 0.18
-0.66 0.22 0.18
-0.68 0.22 0.18
-0.7 0.22 0.18
-0.72 0.22 0.18
-0.74 0.22 0.18
-0.76 0.22 0.18
-0.22 0.24 0.18
-0.24 0.24 0.18
-0.26 0.24 0.18
-0.28 0.24 0.18
-0.3 0.24 0.18
-0.7 0.24 0.18
-0.72 0.24 0.18
-0.74 0.24 0.18
-0.76 0.24 0.18
-0.78 0.24 0.18
-0.22 0.26 0.18
-0.24 0.26 0.18
-0.26 0.26 0.18
-0.28 0.26 0.18
-0.72 0.26 0.18
-0.74 0.26 0.18
-0.76 0.26 0.18
-0.78 0.26 0.18
-0.2 0.28 0.18
-0.22 0.28 0.18
-0.24 0.28 0.18
-0.26 0.28 0.18
-0.74 0.28 0.18
-0.76 0.28 0.18
-0.78 0.28 0.18
-0.8 0.28 0.18
-0.18 0.3 0.18
-0.2 0.3 0.18
-0.22 0.3 0.18
-0.24 0.3 0.18
-0.76 0.3 0.18
-0.78 0.3 0.18
-0.8 0.3 0.18
-0.82 0.3 0.18
-0.18 0.32 0.18
-0.2 0.32 0.18
-0.22 0.32 0.18
-0.78 0.32 0.18
-0.8 0.32 0.18
-0.82 0.32 0.18
-0.16 0.34 0.18
-0.18 0.34 0.18
-0.2 0.34 0.18
-0.22 0.34 0.18
-0.78 0.34 0.18
-0.8 0.34 0.18
-0.82 0.34 0.18
-0.84 0.34 0.18
-0.16 0.36 0.18
-0.18 0.36 0.18
-0.2 0.36 0.18
-0.8 0.36 0.18
-0.82 0.36 0.18
-0.84 0.36 0.18
-0.14 0.38 0.18
-0.16 0.38 0.18
-0.18 0.38 0.18
-0.2 0.38 0.18
-0.8 0.38 0.18
-0.82 0.38 0.18
-0.84 0.38 0.18
-0.86 0.38 0.18
-0.14 0.4 0.18
-0.16 0.4 0.18
-0.18 0.4 0.18
-0.82 0.4 0.18
-0.84 0.4 0.18
-0.86 0.4 0.18
-0.14 0.42 0.18
-0.16 0.42 0.18
-0.18 0.42 0.18
-0.82 0.42 0.18
-0.84 0.42 0.18
-0.86 0.42 0.18
-0.14 0.44 0.18
-0.16 0.44 0.18
-0.18 0.44 0.18
-0.82 0.44 0.18
-0.84 0.44 0.18
-0.86 0.44 0.18
-0.12 0.46 0.18
-0.14 0.46 0.18
-0.16 0.46 0.18
-0.18 0.46 0.18
-0.82 0.46 0.18
-0.84 0.46 0.18
-0.86 0.46 0.18
-0.88 0.46 0.18
-0.12 0.48 0.18
-0.14 0.48 0.18
-0.16 0.48 0.18
-0.18 0.48 0.18
-0.82 0.48 0.18
-0.84 0.48 0.18
-0.86 0.48 0.18
-0.88 0.48 0.18
-0.12 0.5 0.18
-0.14 0.5 0.18
-0.16 0.5 0.18
-0.18 0.5 0.18
-0.82 0.5 0.18
-0.84 0.5 0.18
-0.86 0.5 0.18
-0.88 0.5 0.18
-0.12 0.52 0.18
-0.14 0.52 0.18
-0.16 0.52 0.18
-0.18 0.52 0.18
-0.82 0.52 0.18
-0.84 0.52 0.18
-0.86 0.52 0.18
-0.88 0.52 0.18
-0.12 0.54 0.18
-0.14 0.54 0.18
-0.16 0.54 0.18
-0.18 0.54 0.18
-0.82 0.54 0.18
-0.84 0.54 0.18
-0.86 0.54 0.18
-0.88 0.54 0.18
-0.14 0.56 0.18
-0.16 0.56 0.18
-0.18 0.56 0.18
-0.82 0.56 0.18
-0.84 0.56 0.18
-0.86 0.56 0.18
-0.14 0.58 0.18
-0.16 0.58 0.18
-0.18 0.58 0.18
-0.82 0.58 0.18
-0.84 0.58 0.18
-0.86 0.58 0.18
-0.14 0.6 0.18
-0.16 0.6 0.18
-0.18 0.6 0.18
-0.82 0.6 0.18
-0.84 0.6 0.18
-0.86 0.6 0.18
-0.14 0.62 0.18
-0.16 0.62 0.18
-0.18 0.62 0.18
-0.2 0.62 0.18
-0.8 0.62 0.18
-0.82 0.62 0.18
-0.84 0.62 0.18
-0.86 0.62 0.18
-0.16 0.64 0.18
-0.18 0.64 0.18
-0.2 0.64 0.18
-0.8 0.64 0.18
-0.82 0.64 0.18
-0.84 0.64 0.18
-0.16 0.66 0.18
-0.18 0.66 0.18
-0.2 0.66 0.18
-0.22 0.66 0.18
-0.78 0.66 0.18
-0.8 0.66 0.18
-0.82 0.66 0.18
-0.84 0.66 0.18
-0.18 0.68 0.18
-0.2 0.68 0.18
-0.22 0.68 0.18
-0.78 0.68 0.18
-0.8 0.68 0.18
-0.82 0.68 0.18
-0.18 0.7 0.18
-0.2 0.7 0.18
-0.22 0.7 0.18
-0.24 0.7 0.18
-0.76 0.7 0.18
-0.78 0.7 0.18
-0.8 0.7 0.18
-0.82 0.7 0.18
-0.2 0.72 0.18
-0.22 0.72 0.18
-0.24 0.72 0.18
-0.26 0.72 0.18
-0.74 0.72 0.18
-0.76 0.72 0.18
-0.78 0.72 0.18
-0.8 0.72 0.18
-0.22 0.74 0.18
-0.24 0.74 0.18
-0.26 0.74 0.18
-0.28 0.74 0.18
-0.72 0.74 0.18
-0.74 0.74 0.18
-0.76 0.74 0.18
-0.78 0.74 0.18
-0.22 0.76 0.18
-0.24 0.76 0.18
-0.26 0.76 0.18
-0.28 0.76 0.18
-0.3 0.76 0.18
-0.7 0.76 0.18
-0.72 0.76 0.18
-0.74 0.76 0.18
-0.76 0.76 0.18
-0.78 0.76 0.18
-0.24 0.78 0.18
-0.26 0.78 0.18
-0.28 0.78 0.18
-0.3 0.78 0.18
-0.32 0.78 0.18
-0.34 0.78 0.18
-0.66 0.78 0.18
-0.68 0.78 0.18
-0.7 0.78 0.18
-0.72 0.78 0.18
-0.74 0.78 0.18
-0.76 0.78 0.18
-0.28 0.8 0.18
-0.3 0.8 0.18
-0.32 0.8 0.18
-0.34 0.8 0.18
-0.36 0.8 0.18
-0.38 0.8 0.18
-0.62 0.8 0.18
-0.64 0.8 0.18
-0.66 0.8 0.18
-0.68 0.8 0.18
-0.7 0.8 0.18
-0.72 0.8 0.18
-0.3 0.82 0.18
-0.32 0.82 0.18
-0.34 0.82 0.18
-0.36 0.82 0.18
-0.38 0.82 0.18
-0.4 0.82 0.18
-0.42 0.82 0.18
-0.44 0.82 0.18
-0.46 0.82 0.18
-0.48 0.82 0.18
-0.5 0.82 0.18
-0.52 0.82 0.18
-0.54 0.82 0.18
-0.56 0.82 0.18
-0.58 0.82 0.18
-0.6 0.82 0.18
-0.62 0.82 0.18
-0.64 0.82 0.18
-0.66 0.82 0.18
-0.68 0.82 0.18
-0.7 0.82 0.18
-0.34 0.84 0.18
-0.36 0.84 0.18
-0.38 0.84 0.18
-0.4 0.84 0.18
-0.42 0.84 0.18
-0.44 0.84 0.18
-0.46 0.84 0.18
-0.48 0.84 0.18
-0.5 0.84 0.18
-0.52 0.84 0.18
-0.54 0.84 0.18
-0.56 0.84 0.18
-0.58 0.84 0.18
-0.6 0.84 0.18
-0.62 0.84 0.18
-0.64 0.84 0.18
-0.66 0.84 0.18
-0.38 0.86 0.18
-0.4 0.86 0.18
-0.42 0.86 0.18
-0.44 0.86 0.18
-0.46 0.86 0.18
-0.48 0.86 0.18
-0.5 0.86 0.18
-0.52 0.86 0.18
-0.54 0.86 0.18
-0.56 0.86 0.18
-0.58 0.86 0.18
-0.6 0.86 0.18
-0.62 0.86 0.18
-0.46 0.88 0.18
-0.48 0.88 0.18
-0.5 0.88 0.18
-0.52 0.88 0.18
-0.54 0.88 0.18
-0.38 0.12 0.2
-0.4 0.12 0.2
-0.42 0.12 0.2
-0.44 0.12 0.2
-0.46 0.12 0.2
-0.48 0.12 0.2
-0.5 0.12 0.2
-0.52 0.12 0.2
-0.54 0.12 0.2
-0.56 0.12 0.2
-0.58 0.12 0.2
-0.6 0.12 0.2
-0.62 0.12 0.2
-0.34 0.14 0.2
-0.36 0.14 0.2
-0.38 0.14 0.2
-0.4 0.14 0.2
-0.42 0.14 0.2
-0.44 0.14 0.2
-0.46 0.14 0.2
-0.48 0.14 0.2
-0.5 0.14 0.2
-0.52 0.14 0.2
-0.54 0.14 0.2
-0.56 0.14 0.2
-0.58 0.14 0.2
-0.6 0.14 0.2
-0.62 0.14 0.2
-0.64 0.14 0.2
-0.66 0.14 0.2
-0.3 0.16 0.2
-0.32 0.16 0.2
-0.34 0.16 0.2
-0.36 0.16 0.2
-0.38 0.16 0.2
-0.4 0.16 0.2
-0.42 0.16 0.2
-0.44 0.16 0.2
-0.46 0.16 0.2
-0.48 0.16 0.2
-0.5 0.16 0.2
-0.52 0.16 0.2
-0.54 0.16 0.2
-0.56 0.16 0.2
-0.58 0.16 0.2
-0.6 0.16 0.2
-0.62 0.16 0.2
-0.64 0.16 0.2
-0.66 0.16 0.2
-0.68 0.16 0.2
-0.7 0.16 0.2
-0.28 0.18 0.2
-0.3 0.18 0.2
-0.32 0.18 0.2
-0.34 0.18 0.2
-0.36 0.18 0.2
-0.38 0.18 0.2
-0.62 0.18 0.2
-0.64 0.18 0.2
-0.66 0.18 0.2
-0.68 0.18 0.2
-0.7 0.18 0.2
-0.72 0.18 0.2
-0.24 0.2 0.2
-0.26 0.2 0.2
-0.28 0.2 0.2
-0.3 0.2 0.2
-0.32 0.2 0.2
-0.34 0.2 0.2
-0.66 0.2 0.2
-0.68 0.2 0.2
-0.7 0.2 0.2
-0.72 0.2 0.2
-0.74 0.2 0.2
-0.76 0.2 0.2
-0.22 0.22 0.2
-0.24 0.22 0.2
-0.26 0.22 0.2
-0.28 0.22 0.2
-0.3 0.22 0.2
-0.7 0.22 0.2
-0.72 0.22 0.2
-0.74 0.22 0.2
-0.76 0.22 0.2
-0.78 0.22 0.2
-0.2 0.24 0.2
-0.22 0.24 0.2
-0.24 0.24 0.2
-0.26 0.24 0.2
-0.28 0.24 0.2
-0.72 0.24 0.2
-0.74 0.24 0.2
-0.76 0.24 0.2
-0.78 0.24 0.2
-0.8 0.24 0.2
-0.2 0.26 0.2
-0.22 0.26 0.2
-0.24 0.26 0.2
-0.26 0.26 0.2
-0.74 0.26 0.2
-0.76 0.26 0.2
-0.78 0.26 0.2
-0.8 0.26 0.2
-0.18 0.28 0.2
-0.2 0.28 0.2
-0.22 0.28 0.2
-0.24 0.28 0.2
-0.76 0.28 0.2
-0.78 0.28 0.2
-0.8 0.28 0.2
-0.82 0.28 0.2
-0.16 0.3 0.2
-0.18 0.3 0.2
-0.2 0.3 0.2
-0.22 0.3 0.2
-0.78 0.3 0.2
-0.8 0.3 0.2
-0.82 0.3 0.2
-0.84 0.3 0.2
-0.16 0.32 0.2
-0.18 0.32 0.2
-0.2 0.32 0.2
-0.8 0.32 0.2
-0.82 0.32 0.2
-0.84 0.32 0.2
-0.14 0.34 0.2
-0.16 0.34 0.2
-0.18 0.34 0.2
-0.2 0.34 0.2
-0.8 0.34 0.2
-0.82 0.34 0.2
-0.84 0.34 0.2
-0.86 0.34 0.2
-0.14 0.36 0.2
-0.16 0.36 0.2
-0.18 0.36 0.2
-0.82 0.36 0.2
-0.84 0.36 0.2
-0.86 0.36 0.2
-0.12 0.38 0.2
-0.14 0.38 0.2
-0.16 0.38 0.2
-0.18 0.38 0.2
-0.82 0.38 0.2
-0.84 0.38 0.2
-0.86 0.38 0.2
-0.88 0.38 0.2
-0.12 0.4 0.2
-0.14 0.4 0.2
-0.16 0.4 0.2
-0.84 0.4 0.2
-0.86 0.4 0.2
-0.88 0.4 0.2
-0.12 0.42 0.2
-0.14 0.42 0.2
-0.16 0.42 0.2
-0.84 0.42 0.2
-0.86 0.42 0.2
-0.88 0.42 0.2
-0.12 0.44 0.2
-0.14 0.44 0.2
-0.16 0.44 0.2
-0.84 0.44 0.2
-0.86 0.44 0.2
-0.88 0.44 0.2
-0.12 0.46 0.2
-0.14 0.46 0.2
-0.16 0.46 0.2
-0.84 0.46 0.2
-0.86 0.46 0.2
-0.88 0.46 0.2
-0.12 0.48 0.2
-0.14 0.48 0.2
-0.16 0.48 0.2
-0.84 0.48 0.2
-0.86 0.48 0.2
-0.88 0.48 0.2
-0.12 0.5 0.2
-0.14 0.5 0.2
-0.16 0.5 0.2
-0.84 0.5 0.2
-0.86 0.5 0.2
-0.88 0.5 0.2
-0.12 0.52 0.2
-0.14 0.52 0.2
-0.16 0.52 0.2
-0.84 0.52 0.2
-0.86 0.52 0.2
-0.88 0.52 0.2
-0.12 0.54 0.2
-0.14 0.54 0.2
-0.16 0.54 0.2
-0.84 0.54 0.2
-0.86 0.54 0.2
-0.88 0.54 0.2
-0.12 0.56 0.2
-0.14 0.56 0.2
-0.16 0.56 0.2
-0.84 0.56 0.2
-0.86 0.56 0.2
-0.88 0.56 0.2
-0.12 0.58 0.2
-0.14 0.58 0.2
-0.16 0.58 0.2
-0.84 0.58 0.2
-0.86 0.58 0.2
-0.88 0.58 0.2
-0.12 0.6 0.2
-0.14 0.6 0.2
-0.16 0.6 0.2
-0.84 0.6 0.2
-0.86 0.6 0.2
-0.88 0.6 0.2
-0.12 0.62 0.2
-0.14 0.62 0.2
-0.16 0.62 0.2
-0.18 0.62 0.2
-0.82 0.62 0.2
-0.84 0.62 0.2
-0.86 0.62 0.2
-0.88 0.62 0.2
-0.14 0.64 0.2
-0.16 0.64 0.2
-0.18 0.64 0.2
-0.82 0.64 0.2
-0.84 0.64 0.2
-0.86 0.64 0.2
-0.14 0.66 0.2
-0.16 0.66 0.2
-0.18 0.66 0.2
-0.2 0.66 0.2
-0.8 0.66 0.2
-0.82 0.66 0.2
-0.84 0.66 0.2
-0.86 0.66 0.2
-0.16 0.68 0.2
-0.18 0.68 0.2
-0.2 0.68 0.2
-0.8 0.68 0.2
-0.82 0.68 0.2
-0.84 0.68 0.2
-0.16 0.7 0.2
-0.18 0.7 0.2
-0.2 0.7 0.2
-0.22 0.7 0.2
-0.78 0.7 0.2
-0.8 0.7 0.2
-0.82 0.7 0.2
-0.84 0.7 0.2
-0.18 0.72 0.2
-0.2 0.72 0.2
-0.22 0.72 0.2
-0.24 0.72 0.2
-0.76 0.72 0.2
-0.78 0.72 0.2
-0.8 0.72 0.2
-0.82 0.72 0.2
-0.2 0.74 0.2
-0.22 0.74 0.2
-0.24 0.74 0.2
-0.26 0.74 0.2
-0.74 0.74 0.2
-0.76 0.74 0.2
-0.78 0.74 0.2
-0.8 0.74 0.2
-0.2 0.76 0.2
-0.22 0.76 0.2
-0.24 0.76 0.2
-0.26 0.76 0.2
-0.28 0.76 0.2
-0.72 0.76 0.2
-0.74 0.76 0.2
-0.76 0.76 0.2
-0.78 0.76 0.2
-0.8 0.76 0.2
-0.22 0.78 0.2
-0.24 0.78 0.2
-0.26 0.78 0.2
-0.28 0.78 0.2
-0.3 0.78 0.2
-0.7 0.78 0.2
-0.72 0.78 0.2
-0.74 0.78 0.2
-0.76 0.78 0.2
-0.78 0.78 0.2
-0.24 0.8 0.2
-0.26 0.8 0.2
-0.28 0.8 0.2
-0.3 0.8 0.2
-0.32 0.8 0.2
-0.34 0.8 0.2
-0.66 0.8 0.2
-0.68 0.8 0.2
-0.7 0.8 0.2
-0.72 0.8 0.2
-0.74 0.8 0.2
-0.76 0.8 0.2
-0.28 0.82 0.2
-0.3 0.82 0.2
-0.32 0.82 0.2
-0.34 0.82 0.2
-0.36 0.82 0.2
-0.38 0.82 0.2
-0.62 0.82 0.2
-0.64 0.82 0.2
-0.66 0.82 0.2
-0.68 0.82 0.2
-0.7 0.82 0.2
-0.72 0.82 0.2
-0.3 0.84 0.2
-0.32 0.84 0.2
-0.34 0.84 0.2
-0.36 0.84 0.2
-0.38 0.84 0.2
-0.4 0.84 0.2
-0.42 0.84 0.2
-0.44 0.84 0.2
-0.46 0.84 0.2
-0.48 0.84 0.2
-0.5 0.84 0.2
-0.52 0.84 0.2
-0.54 0.84 0.2
-0.56 0.84 0.2
-0.58 0.84 0.2
-0.6 0.84 0.2
-0.62 0.84 0.2
-0.64 0.84 0.2
-0.66 0.84 0.2
-0.68 0.84 0.2
-0.7 0.84 0.2
-0.34 0.86 0.2
-0.36 0.86 0.2
-0.38 0.86 0.2
-0.4 0.86 0.2
-0.42 0.86 0.2
-0.44 0.86 0.2
-0.46 0.86 0.2
-0.48 0.86 0.2
-0.5 0.86 0.2
-0.52 0.86 0.2
-0.54 0.86 0.2
-0.56 0.86 0.2
-0.58 0.86 0.2
-0.6 0.86 0.2
-0.62 0.86 0.2
-0.64 0.86 0.2
-0.66 0.86 0.2
-0.38 0.88 0.2
-0.4 0.88 0.2
-0.42 0.88 0.2
-0.44 0.88 0.2
-0.46 0.88 0.2
-0.48 0.88 0.2
-0.5 0.88 0.2
-0.52 0.88 0.2
-0.54 0.88 0.2
-0.56 0.88 0.2
-0.58 0.88 0.2
-0.6 0.88 0.2
-0.62 0.88 0.2
-0.4 0.1 0.22
-0.42 0.1 0.22
-0.44 0.1 0.22
-0.46 0.1 0.22
-0.48 0.1 0.22
-0.5 0.1 0.22
-0.52 0.1 0.22
-0.54 0.1 0.22
-0.56 0.1 0.22
-0.58 0.1 0.22
-0.6 0.1 0.22
-0.34 0.12 0.22
-0.36 0.12 0.22
-0.38 0.12 0.22
-0.4 0.12 0.22
-0.42 0.12 0.22
-0.44 0.12 0.22
-0.46 0.12 0.22
-0.48 0.12 0.22
-0.5 0.12 0.22
-0.52 0.12 0.22
-0.54 0.12 0.22
-0.56 0.12 0.22
-0.58 0.12 0.22
-0.6 0.12 0.22
-0.62 0.12 0.22
-0.64 0.12 0.22
-0.66 0.12 0.22
-0.3 0.14 0.22
-0.32 0.14 0.22
-0.34 0.14 0.22
-0.36 0.14 0.22
-0.38 0.14 0.22
-0.4 0.14 0.22
-0.42 0.14 0.22
-0.44 0.14 0.22
-0.46 0.14 0.22
-0.48 0.14 0.22
-0.5 0.14 0.22
-0.52 0.14 0.22
-0.54 0.14 0.22
-0.56 0.14 0.22
-0.58 0.14 0.22
-0.6 0.14 0.22
-0.62 0.14 0.22
-0.64 0.14 0.22
-0.66 0.14 0.22
-0.68 0.14 0.22
-0.7 0.14 0.22
-0.28 0.16 0.22
-0.3 0.16 0.22
-0.32 0.16 0.22
-0.34 0.16 0.22
-0.36 0.16 0.22
-0.38 0.16 0.22
-0.4 0.16 0.22
-0.6 0.16 0.22
-0.62 0.16 0.22
-0.64 0.16 0.22
-0.66 0.16 0.22
-0.68 0.16 0.22
-0.7 0.16 0.22
-0.72 0.16 0.22
-0.24 0.18 0.22
-0.26 0.18 0.22
-0.28 0.18 0.22
-0.3 0.18 0.22
-0.32 0.18 0.22
-0.34 0.18 0.22
-0.66 0.18 0.22
-0.68 0.18 0.22
-0.7 0.18 0.22
-0.72 0.18 0.22
-0.74 0.18 0.22
-0.76 0.18 0.22
-0.22 0.2 0.22
-0.24 0.2 0.22
-0.26 0.2 0.22
-0.28 0.2 0.22
-0.3 0.2 0.22
-0.7 0.2 0.22
-0.72 0.2 0.22
-0.74 0.2 0.22
-0.76 0.2 0.22
-0.78 0.2 0.22
-0.2 0.22 0.22
-0.22 0.22 0.22
-0.24 0.22 0.22
-0.26 0.22 0.22
-0.28 0.22 0.22
-0.72 0.22 0.22
-0.74 0.22 0.22
-0.76 0.22 0.22
-0.78 0.22 0.22
-0.8 0.22 0.22
-0.18 0.24 0.22
-0.2 0.24 0.22
-0.22 0.24 0.22
-0.24 0.24 0.22
-0.26 0.24 0.22
-0.74 0.24 0.22
-0.76 0.24 0.22
-0.78 0.24 0.22
-0.8 0.24 0.22
-0.82 0.24 0.22
-0.18 0.26 0.22
-0.2 0.26 0.22
-0.22 0.26 0.22
-0.24 0.26 0.22
-0.76 0.26 0.22
-0.78 0.26 0.22
-0.8 0.26 0.22
-0.82 0.26 0.22
-0.16 0.28 0.22
-0.18 0.28 0.22
-0.2 0.28 0.22
-0.22 0.28 0.22
-0.78 0.28 0.22
-0.8 0.28 0.22
-0.82 0.28 0.22
-0.84 0.28 0.22
-0.14 0.3 0.22
-0.16 0.3 0.22
-0.18 0.3 0.22
-0.2 0.3 0.22
-0.8 0.3 0.22
-0.82 0.3 0.22
-0.84 0.3 0.22
-0.86 0.3 0.22
-0.14 0.32 0.22
-0.16 0.32 0.22
-0.18 0.32 0.22
-0.82 0.32 0.22
-0.84 0.32 0.22
-0.86 0.32 0.22
-0.12 0.34 0.22
-0.14 0.34 0.22
-0.16 0.34 0.22
-0.18 0.34 0.22
-0.82 0.34 0.22
-0.84 0.34 0.22
-0.86 0.34 0.22
-0.88 0.34 0.22
-0.12 0.36 0.22
-0.14 0.36 0.22
-0.16 0.36 0.22
-0.84 0.36 0.22
-0.86 0.36 0.22
-0.88 0.36 0.22
-0.12 0.38 0.22
-0.14 0.38 0.22
-0.16 0.38 0.22
-0.84 0.38 0.22
-0.86 0.38 0.22
-0.88 0.38 0.22
-0.1 0.4 0.22
-0.12 0.4 0.22
-0.14 0.4 0.22
-0.16 0.4 0.22
-0.84 0.4 0.22
-0.86 0.4 0.22
-0.88 0.4 0.22
-0.9 0.4 0.22
-0.1 0.42 0.22
-0.12 0.42 0.22
-0.14 0.42 0.22
-0.86 0.42 0.22
-0.88 0.42 0.22
-0.9 0.42 0.22
-0.1 0.44 0.22
-0.12 0.44 0.22
-0.14 0.44 0.22
-0.86 0.44 0.22
-0.88 0.44 0.22
-0.9 0.44 0.22
-0.1 0.46 0.22
-0.12 0.46 0.22
-0.14 0.46 0.22
-0.86 0.46 0.22
-0.88 0.46 0.22
-0.9 0.46 0.22
-0.1 0.48 0.22
-0.12 0.48 0.22
-0.14 0.48 0.22
-0.86 0.48 0.22
-0.88 0.48 0.22
-0.9 0.48 0.22
-0.1 0.5 0.22
-0.12 0.5 0.22
-0.14 0.5 0.22
-0.86 0.5 0.22
-0.88 0.5 0.22
-0.9 0.5 0.22
-0.1 0.52 0.22
-0.12 0.52 0.22
-0.14 0.52 0.22
-0.86 0.52 0.22
-0.88 0.52 0.22
-0.9 0.52 0.22
-0.1 0.54 0.22
-0.12 0.54 0.22
-0.14 0.54 0.22
-0.86 0.54 0.22
-0.88 0.54 0.22
-0.9 0.54 0.22
-0.1 0.56 0.22
-0.12 0.56 0.22
-0.14 0.56 0.22
-0.86 0.56 0.22
-0.88 0.56 0.22
-0.9 0.56 0.22
-0.1 0.58 0.22
-0.12 0.58 0.22
-0.14 0.58 0.22
-0.86 0.58 0.22
-0.88 0.58 0.22
-0.9 0.58 0.22
-0.1 0.6 0.22
-0.12 0.6 0.22
-0.14 0.6 0.22
-0.16 0.6 0.22
-0.84 0.6 0.22
-0.86 0.6 0.22
-0.88 0.6 0.22
-0.9 0.6 0.22
-0.12 0.62 0.22
-0.14 0.62 0.22
-0.16 0.62 0.22
-0.84 0.62 0.22
-0.86 0.62 0.22
-0.88 0.62 0.22
-0.12 0.64 0.22
-0.14 0.64 0.22
-0.16 0.64 0.22
-0.84 0.64 0.22
-0.86 0.64 0.22
-0.88 0.64 0.22
-0.12 0.66 0.22
-0.14 0.66 0.22
-0.16 0.66 0.22
-0.18 0.66 0.22
-0.82 0.66 0.22
-0.84 0.66 0.22
-0.86 0.66 0.22
-0.88 0.66 0.22
-0.14 0.68 0.22
-0.16 0.68 0.22
-0.18 0.68 0.22
-0.82 0.68 0.22
-0.84 0.68 0.22
-0.86 0.68 0.22
-0.14 0.7 0.22
-0.16 0.7 0.22
-0.18 0.7 0.22
-0.2 0.7 0.22
-0.8 0.7 0.22
-0.82 0.7 0.22
-0.84 0.7 0.22
-0.86 0.7 0.22
-0.16 0.72 0.22
-0.18 0.72 0.22
-0.2 0.72 0.22
-0.22 0.72 0.22
-0.78 0.72 0.22
-0.8 0.72 0.22
-0.82 0.72 0.22
-0.84 0.72 0.22
-0.18 0.74 0.22
-0.2 0.74 0.22
-0.22 0.74 0.22
-0.24 0.74 0.22
-0.76 0.74 0.22
-0.78 0.74 0.22
-0.8 0.74 0.22
-0.82 0.74 0.22
-0.18 0.76 0.22
-0.2 0.76 0.22
-0.22 0.76 0.22
-0.24 0.76 0.22
-0.26 0.76 0.22
-0.74 0.76 0.22
-0.76 0.76 0.22
-0.78 0.76 0.22
-0.8 0.76 0.22
-0.82 0.76 0.22
-0.2 0.78 0.22
-0.22 0.78 0.22
-0.24 0.78 0.22
-0.26 0.78 0.22
-0.28 0.78 0.22
-0.72 0.78 0.22
-0.74 0.78 0.22
-0.76 0.78 0.22
-0.78 0.78 0.22
-0.8 0.78 0.22
-0.22 0.8 0.22
-0.24 0.8 0.22
-0.26 0.8 0.22
-0.28 0.8 0.22
-0.3 0.8 0.22
-0.7 0.8 0.22
-0.72 0.8 0.22
-0.74 0.8 0.22
-0.76 0.8 0.22
-0.78 0.8 0.22
-0.24 0.82 0.22
-0.26 0.82 0.22
-0.28 0.82 0.22
-0.3 0.82 0.22
-0.32 0.82 0.22
-0.34 0.82 0.22
-0.66 0.82 0.22
-0.68 0.82 0.22
-0.7 0.82 0.22
-0.72 0.82 0.22
-0.74 0.82 0.22
-0.76 0.82 0.22
-0.28 0.84 0.22
-0.3 0.84 0.22
-0.32 0.84 0.22
-0.34 0.84 0.22
-0.36 0.84 0.22
-0.38 0.84 0.22
-0.4 0.84 0.22
-0.6 0.84 0.22
-0.62 0.84 0.22
-0.64 0.84 0.22
-0.66 0.84 0.22
-0.68 0.84 0.22
-0.7 0.84 0.22
-0.72 0.84 0.22
-0.3 0.86 0.22
-0.32 0.86 0.22
-0.34 0.86 0.22
-0.36 0.86 0.22
-0.38 0.86 0.22
-0.4 0.86 0.22
-0.42 0.86 0.22
-0.44 0.86 0.22
-0.46 0.86 0.22
-0.48 0.86 0.22
-0.5 0.86 0.22
-0.52 0.86 0.22
-0.54 0.86 0.22
-0.56 0.86 0.22
-0.58 0.86 0.22
-0.6 0.86 0.22
-0.62 0.86 0.22
-0.64 0.86 0.22
-0.66 0.86 0.22
-0.68 0.86 0.22
-0.7 0.86 0.22
-0.34 0.88 0.22
-0.36 0.88 0.22
-0.38 0.88 0.22
-0.4 0.88 0.22
-0.42 0.88 0.22
-0.44 0.88 0.22
-0.46 0.88 0.22
-0.48 0.88 0.22
-0.5 0.88 0.22
-0.52 0.88 0.22
-0.54 0.88 0.22
-0.56 0.88 0.22
-0.58 0.88 0.22
-0.6 0.88 0.22
-0.62 0.88 0.22
-0.64 0.88 0.22
-0.66 0.88 0.22
-0.4 0.9 0.22
-0.42 0.9 0.22
-0.44 0.9 0.22
-0.46 0.9 0.22
-0.48 0.9 0.22
-0.5 0.9 0.22
-0.52 0.9 0.22
-0.54 0.9 0.22
-0.56 0.9 0.22
-0.58 0.9 0.22
-0.6 0.9 0.22
-0.44 0.08 0.24
-0.46 0.08 0.24
-0.48 0.08 0.24
-0.5 0.08 0.24
-0.52 0.08 0.24
-0.54 0.08 0.24
-0.56 0.08 0.24
-0.36 0.1 0.24
-0.38 0.1 0.24
-0.4 0.1 0.24
-0.42 0.1 0.24
-0.44 0.1 0.24
-0.46 0.1 0.24
-0.48 0.1 0.24
-0.5 0.1 0.24
-0.52 0.1 0.24
-0.54 0.1 0.24
-0.56 0.1 0.24
-0.58 0.1 0.24
-0.6 0.1 0.24
-0.62 0.1 0.24
-0.64 0.1 0.24
-0.32 0.12 0.24
-0.34 0.12 0.24
-0.36 0.12 0.24
-0.38 0.12 0.24
-0.4 0.12 0.24
-0.42 0.12 0.24
-0.44 0.12 0.24
-0.46 0.12 0.24
-0.48 0.12 0.24
-0.5 0.12 0.24
-0.52 0.12 0.24
-0.54 0.12 0.24
-0.56 0.12 0.24
-0.58 0.12 0.24
-0.6 0.12 0.24
-0.62 0.12 0.24
-0.64 0.12 0.24
-0.66 0.12 0.24
-0.68 0.12 0.24
-0.28 0.14 0.24
-0.3 0.14 0.24
-0.32 0.14 0.24
-0.34 0.14 0.24
-0.36 0.14 0.24
-0.38 0.14 0.24
-0.4 0.14 0.24
-0.42 0.14 0.24
-0.58 0.14 0.24
-0.6 0.14 0.24
-0.62 0.14 0.24
-0.64 0.14 0.24
-0.66 0.14 0.24
-0.68 0.14 0.24
-0.7 0.14 0.24
-0.72 0.14 0.24
-0.26 0.16 0.24
-0.28 0.16 0.24
-0.3 0.16 0.24
-0.32 0.16 0.24
-0.34 0.16 0.24
-0.36 0.16 0.24
-0.64 0.16 0.24
-0.66 0.16 0.24
-0.68 0.16 0.24
-0.7 0.16 0.24
-0.72 0.16 0.24
-0.74 0.16 0.24
-0.22 0.18 0.24
-0.24 0.18 0.24
-0.26 0.18 0.24
-0.28 0.18 0.24
-0.3 0.18 0.24
-0.7 0.18 0.24
-0.72 0.18 0.24
-0.74 0.18 0.24
-0.76 0.18 0.24
-0.78 0.18 0.24
-0.2 0.2 0.24
-0.22 0.2 0.24
-0.24 0.2 0.24
-0.26 0.2 0.24
-0.28 0.2 0.24
-0.72 0.2 0.24
-0.74 0.2 0.24
-0.76 0.2 0.24
-0.78 0.2 0.24
-0.8 0.2 0.24
-0.18 0.22 0.24
-0.2 0.22 0.24
-0.22 0.22 0.24
-0.24 0.22 0.24
-0.26 0.22 0.24
-0.74 0.22 0.24
-0.76 0.22 0.24
-0.78 0.22 0.24
-0.8 0.22 0.24
-0.82 0.22 0.24
-0.18 0.24 0.24
-0.2 0.24 0.24
-0.22 0.24 0.24
-0.24 0.24 0.24
-0.76 0.24 0.24
-0.78 0.24 0.24
-0.8 0.24 0.24
-0.82 0.24 0.24
-0.16 0.26 0.24
-0.18 0.26 0.24
-0.2 0.26 0.24
-0.22 0.26 0.24
-0.78 0.26 0.24
-0.8 0.26 0.24
-0.82 0.26 0.24
-0.84 0.26 0.24
-0.14 0.28 0.24
-0.16 0.28 0.24
-0.18 0.28 0.24
-0.2 0.28 0.24
-0.8 0.28 0.24
-0.82 0.28 0.24
-0.84 0.28 0.24
-0.86 0.28 0.24
-0.14 0.3 0.24
-0.16 0.3 0.24
-0.18 0.3 0.24
-0.82 0.3 0.24
-0.84 0.3 0.24
-0.86 0.3 0.24
-0.12 0.32 0.24
-0.14 0.32 0.24
-0.16 0.32 0.24
-0.84 0.32 0.24
-0.86 0.32 0.24
-0.88 0.32 0.24
-0.12 0.34 0.24
-0.14 0.34 0.24
-0.16 0.34 0.24
-0.84 0.34 0.24
-0.86 0.34 0.24
-0.88 0.34 0.24
-0.1 0.36 0.24
-0.12 0.36 0.24
-0.14 0.36 0.24
-0.16 0.36 0.24
-0.84 0.36 0.24
-0.86 0.36 0.24
-0.88 0.36 0.24
-0.9 0.36 0.24
-0.1 0.38 0.24
-0.12 0.38 0.24
-0.14 0.38 0.24
-0.86 0.38 0.24
-0.88 0.38 0.24
-0.9 0.38 0.24
-0.1 0.4 0.24
-0.12 0.4 0.24
-0.14 0.4 0.24
-0.86 0.4 0.24
-0.88 0.4 0.24
-0.9 0.4 0.24
-0.1 0.42 0.24
-0.12 0.42 0.24
-0.14 0.42 0.24
-0.86 0.42 0.24
-0.88 0.42 0.24
-0.9 0.42 0.24
-0.08 0.44 0.24
-0.1 0.44 0.24
-0.12 0.44 0.24
-0.88 0.44 0.24
-0.9 0.44 0.24
-0.92 0.44 0.24
-0.08 0.46 0.24
-0.1 0.46 0.24
-0.12 0.46 0.24
-0.88 0.46 0.24
-0.9 0.46 0.24
-0.92 0.46 0.24
-0.08 0.48 0.24
-0.1 0.48 0.24
-0.12 0.48 0.24
-0.88 0.48 0.24
-0.9 0.48 0.24
-0.92 0.48 0.24
-0.08 0.5 0.24
-0.1 0.5 0.24
-0.12 0.5 0.24
-0.88 0.5 0.24
-0.9 0.5 0.24
-0.92 0.5 0.24
-0.08 0.52 0.24
-0.1 0.52 0.24
-0.12 0.52 0.24
-0.88 0.52 0.24
-0.9 0.52 0.24
-0.92 0.52 0.24
-0.08 0.54 0.24
-0.1 0.54 0.24
-0.12 0.54 0.24
-0.88 0.54 0.24
-0.9 0.54 0.24
-0.92 0.54 0.24
-0.08 0.56 0.24
-0.1 0.56 0.24
-0.12 0.56 0.24
-0.88 0.56 0.24
-0.9 0.56 0.24
-0.92 0.56 0.24
-0.1 0.58 0.24
-0.12 0.58 0.24
-0.14 0.58 0.24
-0.86 0.58 0.24
-0.88 0.58 0.24
-0.9 0.58 0.24
-0.1 0.6 0.24
-0.12 0.6 0.24
-0.14 0.6 0.24
-0.86 0.6 0.24
-0.88 0.6 0.24
-0.9 0.6 0.24
-0.1 0.62 0.24
-0.12 0.62 0.24
-0.14 0.62 0.24
-0.86 0.62 0.24
-0.88 0.62 0.24
-0.9 0.62 0.24
-0.1 0.64 0.24
-0.12 0.64 0.24
-0.14 0.64 0.24
-0.16 0.64 0.24
-0.84 0.64 0.24
-0.86 0.64 0.24
-0.88 0.64 0.24
-0.9 0.64 0.24
-0.12 0.66 0.24
-0.14 0.66 0.24
-0.16 0.66 0.24
-0.84 0.66 0.24
-0.86 0.66 0.24
-0.88 0.66 0.24
-0.12 0.68 0.24
-0.14 0.68 0.24
-0.16 0.68 0.24
-0.84 0.68 0.24
-0.86 0.68 0.24
-0.88 0.68 0.24
-0.14 0.7 0.24
-0.16 0.7 0.24
-0.18 0.7 0.24
-0.82 0.7 0.24
-0.84 0.7 0.24
-0.86 0.7 0.24
-0.14 0.72 0.24
-0.16 0.72 0.24
-0.18 0.72 0.24
-0.2 0.72 0.24
-0.8 0.72 0.24
-0.82 0.72 0.24
-0.84 0.72 0.24
-0.86 0.72 0.24
-0.16 0.74 0.24
-0.18 0.74 0.24
-0.2 0.74 0.24
-0.22 0.74 0.24
-0.78 0.74 0.24
-0.8 0.74 0.24
-0.82 0.74 0.24
-0.84 0.74 0.24
-0.18 0.76 0.24
-0.2 0.76 0.24
-0.22 0.76 0.24
-0.24 0.76 0.24
-0.76 0.76 0.24
-0.78 0.76 0.24
-0.8 0.76 0.24
-0.82 0.76 0.24
-0.18 0.78 0.24
-0.2 0.78 0.24
-0.22 0.78 0.24
-0.24 0.78 0.24
-0.26 0.78 0.24
-0.74 0.78 0.24
-0.76 0.78 0.24
-0.78 0.78 0.24
-0.8 0.78 0.24
-0.82 0.78 0.24
-0.2 0.8 0.24
-0.22 0.8 0.24
-0.24 0.8 0.24
-0.26 0.8 0.24
-0.28 0.8 0.24
-0.72 0.8 0.24
-0.74 0.8 0.24
-0.76 0.8 0.24
-0.78 0.8 0.24
-0.8 0.8 0.24
-0.22 0.82 0.24
-0.24 0.82 0.24
-0.26 0.82 0.24
-0.28 0.82 0.24
-0.3 0.82 0.24
-0.7 0.82 0.24
-0.72 0.82 0.24
-0.74 0.82 0.24
-0.76 0.82 0.24
-0.78 0.82 0.24
-0.26 0.84 0.24
-0.28 0.84 0.24
-0.3 0.84 0.24
-0.32 0.84 0.24
-0.34 0.84 0.24
-0.36 0.84 0.24
-0.64 0.84 0.24
-0.66 0.84 0.24
-0.68 0.84 0.24
-0.7 0.84 0.24
-0.72 0.84 0.24
-0.74 0.84 0.24
-0.28 0.86 0.24
-0.3 0.86 0.24
-0.32 0.86 0.24
-0.34 0.86 0.24
-0.36 0.86 0.24
-0.38 0.86 0.24
-0.4 0.86 0.24
-0.42 0.86 0.24
-0.58 0.86 0.24
-0.6 0.86 0.24
-0.62 0.86 0.24
-0.64 0.86 0.24
-0.66 0.86 0.24
-0.68 0.86 0.24
-0.7 0.86 0.24
-0.72 0.86 0.24
-0.32 0.88 0.24
-0.34 0.88 0.24
-0.36 0.88 0.24
-0.38 0.88 0.24
-0.4 0.88 0.24
-0.42 0.88 0.24
-0.44 0.88 0.24
-0.46 0.88 0.24
-0.48 0.88 0.24
-0.5 0.88 0.24
-0.52 0.88 0.24
-0.54 0.88 0.24
-0.56 0.88 0.24
-0.58 0.88 0.24
-0.6 0.88 0.24
-0.62 0.88 0.24
-0.64 0.88 0.24
-0.66 0.88 0.24
-0.68 0.88 0.24
-0.36 0.9 0.24
-0.38 0.9 0.24
-0.4 0.9 0.24
-0.42 0.9 0.24
-0.44 0.9 0.24
-0.46 0.9 0.24
-0.48 0.9 0.24
-0.5 0.9 0.24
-0.52 0.9 0.24
-0.54 0.9 0.24
-0.56 0.9 0.24
-0.58 0.9 0.24
-0.6 0.9 0.24
-0.62 0.9 0.24
-0.64 0.9 0.24
-0.44 0.92 0.24
-0.46 0.92 0.24
-0.48 0.92 0.24
-0.5 0.92 0.24
-0.52 0.92 0.24
-0.54 0.92 0.24
-0.56 0.92 0.24
-0.38 0.08 0.26
-0.4 0.08 0.26
-0.42 0.08 0.26
-0.44 0.08 0.26
-0.46 0.08 0.26
-0.48 0.08 0.26
-0.5 0.08 0.26
-0.52 0.08 0.26
-0.54 0.08 0.26
-0.56 0.08 0.26
-0.58 0.08 0.26
-0.6 0.08 0.26
-0.62 0.08 0.26
-0.34 0.1 0.26
-0.36 0.1 0.26
-0.38 0.1 0.26
-0.4 0.1 0.26
-0.42 0.1 0.26
-0.44 0.1 0.26
-0.46 0.1 0.26
-0.48 0.1 0.26
-0.5 0.1 0.26
-0.52 0.1 0.26
-0.54 0.1 0.26
-0.56 0.1 0.26
-0.58 0.1 0.26
-0.6 0.1 0.26
-0.62 0.1 0.26
-0.64 0.1 0.26
-0.66 0.1 0.26
-0.3 0.12 0.26
-0.32 0.12 0.26
-0.34 0.12 0.26
-0.36 0.12 0.26
-0.38 0.12 0.26
-0.4 0.12 0.26
-0.42 0.12 0.26
-0.44 0.12 0.26
-0.46 0.12 0.26
-0.54 0.12 0.26
-0.56 0.12 0.26
-0.58 0.12 0.26
-0.6 0.12 0.26
-0.62 0.12 0.26
-0.64 0.12 0.26
-0.66 0.12 0.26
-0.68 0.12 0.26
-0.7 0.12 0.26
-0.26 0.14 0.26
-0.28 0.14 0.26
-0.3 0.14 0.26
-0.32 0.14 0.26
-0.34 0.14 0.26
-0.36 0.14 0.26
-0.64 0.14 0.26
-0.66 0.14 0.26
-0.68 0.14 0.26
-0.7 0.14 0.26
-0.72 0.14 0.26
-0.74 0.14 0.26
-0.24 0.16 0.26
-0.26 0.16 0.26
-0.28 0.16 0.26
-0.3 0.16 0.26
-0.32 0.16 0.26
-0.68 0.16 0.26
-0.7 0.16 0.26
-0.72 0.16 0.26
-0.74 0.16 0.26
-0.76 0.16 0.26
-0.22 0.18 0.26
-0.24 0.18 0.26
-0.26 0.18 0.26
-0.28 0.18 0.26
-0.72 0.18 0.26
-0.74 0.18 0.26
-0.76 0.18 0.26
-0.78 0.18 0.26
-0.2 0.2 0.26
-0.22 0.2 0.26
-0.24 0.2 0.26
-0.26 0.2 0.26
-0.74 0.2 0.26
-0.76 0.2 0.26
-0.78 0.2 0.26
-0.8 0.2 0.26
-0.18 0.22 0.26
-0.2 0.22 0.26
-0.22 0.22 0.26
-0.24 0.22 0.26
-0.76 0.22 0.26
-0.78 0.22 0.26
-0.8 0.22 0.26
-0.82 0.22 0.26
-0.16 0.24 0.26
-0.18 0.24 0.26
-0.2 0.24 0.26
-0.22 0.24 0.26
-0.78 0.24 0.26
-0.8 0.24 0.26
-0.82 0.24 0.26
-0.84 0.24 0.26
-0.14 0.26 0.26
-0.16 0.26 0.26
-0.18 0.26 0.26
-0.2 0.26 0.26
-0.8 0.26 0.26
-0.82 0.26 0.26
-0.84 0.26 0.26
-0.86 0.26 0.26
-0.14 0.28 0.26
-0.16 0.28 0.26
-0.18 0.28 0.26
-0.82 0.28 0.26
-0.84 0.28 0.26
-0.86 0.28 0.26
-0.12 0.3 0.26
-0.14 0.3 0.26
-0.16 0.3 0.26
-0.84 0.3 0.26
-0.86 0.3 0.26
-0.88 0.3 0.26
-0.12 0.32 0.26
-0.14 0.32 0.26
-0.16 0.32 0.26
-0.84 0.32 0.26
-0.86 0.32 0.26
-0.88 0.32 0.26
-0.1 0.34 0.26
-0.12 0.34 0.26
-0.14 0.34 0.26
-0.86 0.34 0.26
-0.88 0.34 0.26
-0.9 0.34 0.26
-0.1 0.36 0.26
-0.12 0.36 0.26
-0.14 0.36 0.26
-0.86 0.36 0.26
-0.88 0.36 0.26
-0.9 0.36 0.26
-0.08 0.38 0.26
-0.1 0.38 0.26
-0.12 0.38 0.26
-0.88 0.38 0.26
-0.9 0.38 0.26
-0.92 0.38 0.26
-0.08 0.4 0.26
-0.1 0.4 0.26
-0.12 0.4 0.26
-0.88 0.4 0.26
-0.9 0.4 0.26
-0.92 0.4 0.26
-0.08 0.42 0.26
-0.1 0.42 0.26
-0.12 0.42 0.26
-0.88 0.42 0.26
-0.9 0.42 0.26
-0.92 0.42 0.26
-0.08 0.44 0.26
-0.1 0.44 0.26
-0.12 0.44 0.26
-0.88 0.44 0.26
-0.9 0.44 0.26
-0.92 0.44 0.26
-0.08 0.46 0.26
-0.1 0.46 0.26
-0.12 0.46 0.26
-0.88 0.46 0.26
-0.9 0.46 0.26
-0.92 0.46 0.26
-0.08 0.48 0.26
-0.1 0.48 0.26
-0.9 0.48 0.26
-0.92 0.48 0.26
-0.08 0.5 0.26
-0.1 0.5 0.26
-0.9 0.5 0.26
-0.92 0.5 0.26
-0.08 0.52 0.26
-0.1 0.52 0.26
-0.9 0.52 0.26
-0.92 0.52 0.26
-0.08 0.54 0.26
-0.1 0.54 0.26
-0.12 0.54 0.26
-0.88 0.54 0.26
-0.9 0.54 0.26
-0.92 0.54 0.26
-0.08 0.56 0.26
-0.1 0.56 0.26
-0.12 0.56 0.26
-0.88 0.56 0.26
-0.9 0.56 0.26
-0.92 0.56 0.26
-0.08 0.58 0.26
-0.1 0.58 0.26
-0.12 0.58 0.26
-0.88 0.58 0.26
-0.9 0.58 0.26
-0.92 0.58 0.26
-0.08 0.6 0.26
-0.1 0.6 0.26
-0.12 0.6 0.26
-0.88 0.6 0.26
-0.9 0.6 0.26
-0.92 0.6 0.26
-0.08 0.62 0.26
-0.1 0.62 0.26
-0.12 0.62 0.26
-0.88 0.62 0.26
-0.9 0.62 0.26
-0.92 0.62 0.26
-0.1 0.64 0.26
-0.12 0.64 0.26
-0.14 0.64 0.26
-0.86 0.64 0.26
-0.88 0.64 0.26
-0.9 0.64 0.26
-0.1 0.66 0.26
-0.12 0.66 0.26
-0.14 0.66 0.26
-0.86 0.66 0.26
-0.88 0.66 0.26
-0.9 0.66 0.26
-0.12 0.68 0.26
-0.14 0.68 0.26
-0.16 0.68 0.26
-0.84 0.68 0.26
-0.86 0.68 0.26
-0.88 0.68 0.26
-0.12 0.7 0.26
-0.14 0.7 0.26
-0.16 0.7 0.26
-0.84 0.7 0.26
-0.86 0.7 0.26
-0.88 0.7 0.26
-0.14 0.72 0.26
-0.16 0.72 0.26
-0.18 0.72 0.26
-0.82 0.72 0.26
-0.84 0.72 0.26
-0.86 0.72 0.26
-0.14 0.74 0.26
-0.16 0.74 0.26
-0.18 0.74 0.26
-0.2 0.74 0.26
-0.8 0.74 0.26
-0.82 0.74 0.26
-0.84 0.74 0.26
-0.86 0.74 0.26
-0.16 0.76 0.26
-0.18 0.76 0.26
-0.2 0.76 0.26
-0.22 0.76 0.26
-0.78 0.76 0.26
-0.8 0.76 0.26
-0.82 0.76 0.26
-0.84 0.76 0.26
-0.18 0.78 0.26
-0.2 0.78 0.26
-0.22 0.78 0.26
-0.24 0.78 0.26
-0.76 0.78 0.26
-0.78 0.78 0.26
-0.8 0.78 0.26
-0.82 0.78 0.26
-0.2 0.8 0.26
-0.22 0.8 0.26
-0.24 0.8 0.26
-0.26 0.8 0.26
-0.74 0.8 0.26
-0.76 0.8 0.26
-0.78 0.8 0.26
-0.8 0.8 0.26
-0.22 0.82 0.26
-0.24 0.82 0.26
-0.26 0.82 0.26
-0.28 0.82 0.26
-0.72 0.82 0.26
-0.74 0.82 0.26
-0.76 0.82 0.26
-0.78 0.82 0.26
-0.24 0.84 0.26
-0.26 0.84 0.26
-0.28 0.84 0.26
-0.3 0.84 0.26
-0.32 0.84 0.26
-0.68 0.84 0.26
-0.7 0.84 0.26
-0.72 0.84 0.26
-0.74 0.84 0.26
-0.76 0.84 0.26
-0.26 0.86 0.26
-0.28 0.86 0.26
-0.3 0.86 0.26
-0.32 0.86 0.26
-0.34 0.86 0.26
-0.36 0.86 0.26
-0.64 0.86 0.26
-0.66 0.86 0.26
-0.68 0.86 0.26
-0.7 0.86 0.26
-0.72 0.86 0.26
-0.74 0.86 0.26
-0.3 0.88 0.26
-0.32 0.88 0.26
-0.34 0.88 0.26
-0.36 0.88 0.26
-0.38 0.88 0.26
-0.4 0.88 0.26
-0.42 0.88 0.26
-0.44 0.88 0.26
-0.46 0.88 0.26
-0.54 0.88 0.26
-0.56 0.88 0.26
-0.58 0.88 0.26
-0.6 0.88 0.26
-0.62 0.88 0.26
-0.64 0.88 0.26
-0.66 0.88 0.26
-0.68 0.88 0.26
-0.7 0.88 0.26
-0.34 0.9 0.26
-0.36 0.9 0.26
-0.38 0.9 0.26
-0.4 0.9 0.26
-0.42 0.9 0.26
-0.44 0.9 0.26
-0.46 0.9 0.26
-0.48 0.9 0.26
-0.5 0.9 0.26
-0.52 0.9 0.26
-0.54 0.9 0.26
-0.56 0.9 0.26
-0.58 0.9 0.26
-0.6 0.9 0.26
-0.62 0.9 0.26
-0.64 0.9 0.26
-0.66 0.9 0.26
-0.38 0.92 0.26
-0.4 0.92 0.26
-0.42 0.92 0.26
-0.44 0.92 0.26
-0.46 0.92 0.26
-0.48 0.92 0.26
-0.5 0.92 0.26
-0.52 0.92 0.26
-0.54 0.92 0.26
-0.56 0.92 0.26
-0.58 0.92 0.26
-0.6 0.92 0.26
-0.62 0.92 0.26
-0.42 0.06 0.28
-0.44 0.06 0.28
-0.46 0.06 0.28
-0.48 0.06 0.28
-0.5 0.06 0.28
-0.52 0.06 0.28
-0.54 0.06 0.28
-0.56 0.06 0.28
-0.58 0.06 0.28
-0.36 0.08 0.28
-0.38 0.08 0.28
-0.4 0.08 0.28
-0.42 0.08 0.28
-0.44 0.08 0.28
-0.46 0.08 0.28
-0.48 0.08 0.28
-0.5 0.08 0.28
-0.52 0.08 0.28
-0.54 0.08 0.28
-0.56 0.08 0.28
-0.58 0.08 0.28
-0.6 0.08 0.28
-0.62 0.08 0.28
-0.64 0.08 0.28
-0.3 0.1 0.28
-0.32 0.1 0.28
-0.34 0.1 0.28
-0.36 0.1 0.28
-0.38 0.1 0.28
-0.4 0.1 0.28
-0.42 0.1 0.28
-0.44 0.1 0.28
-0.46 0.1 0.28
-0.48 0.1 0.28
-0.5 0.1 0.28
-0.52 0.1 0.28
-0.54 0.1 0.28
-0.56 0.1 0.28
-0.58 0.1 0.28
-0.6 0.1 0.28
-0.62 0.1 0.28
-0.64 0.1 0.28
-0.66 0.1 0.28
-0.68 0.1 0.28
-0.7 0.1 0.28
-0.28 0.12 0.28
-0.3 0.12 0.28
-0.32 0.12 0.28
-0.34 0.12 0.28
-0.36 0.12 0.28
-0.38 0.12 0.28
-0.4 0.12 0.28
-0.6 0.12 0.28
-0.62 0.12 0.28
-0.64 0.12 0.28
-0.66 0.12 0.28
-0.68 0.12 0.28
-0.7 0.12 0.28
-0.72 0.12 0.28
-0.24 0.14 0.28
-0.26 0.14 0.28
-0.28 0.14 0.28
-0.3 0.14 0.28
-0.32 0.14 0.28
-0.34 0.14 0.28
-0.66 0.14 0.28
-0.68 0.14 0.28
-0.7 0.14 0.28
-0.72 0.14 0.28
-0.74 0.14 0.28
-0.76 0.14 0.28
-0.22 0.16 0.28
-0.24 0.16 0.28
-0.26 0.16 0.28
-0.28 0.16 0.28
-0.3 0.16 0.28
-0.7 0.16 0.28
-0.72 0.16 0.28
-0.74 0.16 0.28
-0.76 0.16 0.28
-0.78 0.16 0.28
-0.2 0.18 0.28
-0.22 0.18 0.28
-0.24 0.18 0.28
-0.26 0.18 0.28
-0.74 0.18 0.28
-0.76 0.18 0.28
-0.78 0.18 0.28
-0.8 0.18 0.28
-0.18 0.2 0.28
-0.2 0.2 0.28
-0.22 0.2 0.28
-0.24 0.2 0.28
-0.76 0.2 0.28
-0.78 0.2 0.28
-0.8 0.2 0.28
-0.82 0.2 0.28
-0.16 0.22 0.28
-0.18 0.22 0.28
-0.2 0.22 0.28
-0.22 0.22 0.28
-0.78 0.22 0.28
-0.8 0.22 0.28
-0.82 0.22 0.28
-0.84 0.22 0.28
-0.14 0.24 0.28
-0.16 0.24 0.28
-0.18 0.24 0.28
-0.2 0.24 0.28
-0.8 0.24 0.28
-0.82 0.24 0.28
-0.84 0.24 0.28
-0.86 0.24 0.28
-0.14 0.26 0.28
-0.16 0.26 0.28
-0.18 0.26 0.28
-0.82 0.26 0.28
-0.84 0.26 0.28
-0.86 0.26 0.28
-0.12 0.28 0.28
-0.14 0.28 0.28
-0.16 0.28 0.28
-0.84 0.28 0.28
-0.86 0.28 0.28
-0.88 0.28 0.28
-0.1 0.3 0.28
-0.12 0.3 0.28
-0.14 0.3 0.28
-0.16 0.3 0.28
-0.84 0.3 0.28
-0.86 0.3 0.28
-0.88 0.3 0.28
-0.9 0.3 0.28
-0.1 0.32 0.28
-0.12 0.32 0.28
-0.14 0.32 0.28
-0.86 0.32 0.28
-0.88 0.32 0.28
-0.9 0.32 0.28
-0.1 0.34 0.28
-0.12 0.34 0.28
-0.14 0.34 0.28
-0.86 0.34 0.28
-0.88 0.34 0.28
-0.9 0.34 0.28
-0.08 0.36 0.28
-0.1 0.36 0.28
-0.12 0.36 0.28
-0.88 0.36 0.28
-0.9 0.36 0.28
-0.92 0.36 0.28
-0.08 0.38 0.28
-0.1 0.38 0.28
-0.12 0.38 0.28
-0.88 0.38 0.28
-0.9 0.38 0.28
-0.92 0.38 0.28
-0.08 0.4 0.28
-0.1 0.4 0.28
-0.12 0.4 0.28
-0.88 0.4 0.28
-0.9 0.4 0.28
-0.92 0.4 0.28
-0.06 0.42 0.28
-0.08 0.42 0.28
-0.1 0.42 0.28
-0.9 0.42 0.28
-0.92 0.42 0.28
-0.94 0.42 0.28
-0.06 0.44 0.28
-0.08 0.44 0.28
-0.1 0.44 0.28
-0.9 0.44 0.28
-0.92 0.44 0.28
-0.94 0.44 0.28
-0.06 0.46 0.28
-0.08 0.46 0.28
-0.1 0.46 0.28
-0.9 0.46 0.28
-0.92 0.46 0.28
-0.94 0.46 0.28
-0.06 0.48 0.28
-0.08 0.48 0.28
-0.1 0.48 0.28
-0.9 0.48 0.28
-0.92 0.48 0.28
-0.94 0.48 0.28
-0.06 0.5 0.28
-0.08 0.5 0.28
-0.1 0.5 0.28
-0.9 0.5 0.28
-0.92 0.5 0.28
-0.94 0.5 0.28
-0.06 0.52 0.28
-0.08 0.52 0.28
-0.1 0.52 0.28
-0.9 0.52 0.28
-0.92 0.52 0.28
-0.94 0.52 0.28
-0.06 0.54 0.28
-0.08 0.54 0.28
-0.1 0.54 0.28
-0.9 0.54 0.28
-0.92 0.54 0.28
-0.94 0.54 0.28
-0.06 0.56 0.28
-0.08 0.56 0.28
-0.1 0.56 0.28
-0.9 0.56 0.28
-0.92 0.56 0.28
-0.94 0.56 0.28
-0.06 0.58 0.28
-0.08 0.58 0.28
-0.1 0.58 0.28
-0.9 0.58 0.28
-0.92 0.58 0.28
-0.94 0.58 0.28
-0.08 0.6 0.28
-0.1 0.6 0.28
-0.12 0.6 0.28
-0.88 0.6 0.28
-0.9 0.6 0.28
-0.92 0.6 0.28
-0.08 0.62 0.28
-0.1 0.62 0.28
-0.12 0.62 0.28
-0.88 0.62 0.28
-0.9 0.62 0.28
-0.92 0.62 0.28
-0.08 0.64 0.28
-0.1 0.64 0.28
-0.12 0.64 0.28
-0.88 0.64 0.28
-0.9 0.64 0.28
-0.92 0.64 0.28
-0.1 0.66 0.28
-0.12 0.66 0.28
-0.14 0.66 0.28
-0.86 0.66 0.28
-0.88 0.66 0.28
-0.9 0.66 0.28
-0.1 0.68 0.28
-0.12 0.68 0.28
-0.14 0.68 0.28
-0.86 0.68 0.28
-0.88 0.68 0.28
-0.9 0.68 0.28
-0.1 0.7 0.28
-0.12 0.7 0.28
-0.14 0.7 0.28
-0.16 0.7 0.28
-0.84 0.7 0.28
-0.86 0.7 0.28
-0.88 0.7 0.28
-0.9 0.7 0.28
-0.12 0.72 0.28
-0.14 0.72 0.28
-0.16 0.72 0.28
-0.84 0.72 0.28
-0.86 0.72 0.28
-0.88 0.72 0.28
-0.14 0.74 0.28
-0.16 0.74 0.28
-0.18 0.74 0.28
-0.82 0.74 0.28
-0.84 0.74 0.28
-0.86 0.74 0.28
-0.14 0.76 0.28
-0.16 0.76 0.28
-0.18 0.76 0.28
-0.2 0.76 0.28
-0.8 0.76 0.28
-0.82 0.76 0.28
-0.84 0.76 0.28
-0.86 0.76 0.28
-0.16 0.78 0.28
-0.18 0.78 0.28
-0.2 0.78 0.28
-0.22 0.78 0.28
-0.78 0.78 0.28
-0.8 0.78 0.28
-0.82 0.78 0.28
-0.84 0.78 0.28
-0.18 0.8 0.28
-0.2 0.8 0.28
-0.22 0.8 0.28
-0.24 0.8 0.28
-0.76 0.8 0.28
-0.78 0.8 0.28
-0.8 0.8 0.28
-0.82 0.8 0.28
-0.2 0.82 0.28
-0.22 0.82 0.28
-0.24 0.82 0.28
-0.26 0.82 0.28
-0.74 0.82 0.28
-0.76 0.82 0.28
-0.78 0.82 0.28
-0.8 0.82 0.28
-0.22 0.84 0.28
-0.24 0.84 0.28
-0.26 0.84 0.28
-0.28 0.84 0.28
-0.3 0.84 0.28
-0.7 0.84 0.28
-0.72 0.84 0.28
-0.74 0.84 0.28
-0.76 0.84 0.28
-0.78 0.84 0.28
-0.24 0.86 0.28
-0.26 0.86 0.28
-0.28 0.86 0.28
-0.3 0.86 0.28
-0.32 0.86 0.28
-0.34 0.86 0.28
-0.66 0.86 0.28
-0.68 0.86 0.28
-0.7 0.86 0.28
-0.72 0.86 0.28
-0.74 0.86 0.28
-0.76 0.86 0.28
-0.28 0.88 0.28
-0.3 0.88 0.28
-0.32 0.88 0.28
-0.34 0.88 0.28
-0.36 0.88 0.28
-0.38 0.88 0.28
-0.4 0.88 0.28
-0.6 0.88 0.28
-0.62 0.88 0.28
-0.64 0.88 0.28
-0.66 0.88 0.28
-0.68 0.88 0.28
-0.7 0.88 0.28
-0.72 0.88 0.28
-0.3 0.9 0.28
-0.32 0.9 0.28
-0.34 0.9 0.28
-0.36 0.9 0.28
-0.38 0.9 0.28
-0.4 0.9 0.28
-0.42 0.9 0.28
-0.44 0.9 0.28
-0.46 0.9 0.28
-0.48 0.9 0.28
-0.5 0.9 0.28
-0.52 0.9 0.28
-0.54 0.9 0.28
-0.56 0.9 0.28
-0.58 0.9 0.28
-0.6 0.9 0.28
-0.62 0.9 0.28
-0.64 0.9 0.28
-0.66 0.9 0.28
-0.68 0.9 0.28
-0.7 0.9 0.28
-0.36 0.92 0.28
-0.38 0.92 0.28
-0.4 0.92 0.28
-0.42 0.92 0.28
-0.44 0.92 0.28
-0.46 0.92 0.28
-0.48 0.92 0.28
-0.5 0.92 0.28
-0.52 0.92 0.28
-0.54 0.92 0.28
-0.56 0.92 0.28
-0.58 0.92 0.28
-0.6 0.92 0.28
-0.62 0.92 0.28
-0.64 0.92 0.28
-0.42 0.94 0.28
-0.44 0.94 0.28
-0.46 0.94 0.28
-0.48 0.94 0.28
-0.5 0.94 0.28
-0.52 0.94 0.28
-0.54 0.94 0.28
-0.56 0.94 0.28
-0.58 0.94 0.28
-0.38 0.06 0.3
-0.4 0.06 0.3
-0.42 0.06 0.3
-0.44 0.06 0.3
-0.46 0.06 0.3
-0.48 0.06 0.3
-0.5 0.06 0.3
-0.52 0.06 0.3
-0.54 0.06 0.3
-0.56 0.06 0.3
-0.58 0.06 0.3
-0.6 0.06 0.3
-0.62 0.06 0.3
-0.32 0.08 0.3
-0.34 0.08 0.3
-0.36 0.08 0.3
-0.38 0.08 0.3
-0.4 0.08 0.3
-0.42 0.08 0.3
-0.44 0.08 0.3
-0.46 0.08 0.3
-0.48 0.08 0.3
-0.5 0.08 0.3
-0.52 0.08 0.3
-0.54 0.08 0.3
-0.56 0.08 0.3
-0.58 0.08 0.3
-0.6 0.08 0.3
-0.62 0.08 0.3
-0.64 0.08 0.3
-0.66 0.08 0.3
-0.68 0.08 0.3
-0.28 0.1 0.3
-0.3 0.1 0.3
-0.32 0.1 0.3
-0.34 0.1 0.3
-0.36 0.1 0.3
-0.38 0.1 0.3
-0.4 0.1 0.3
-0.42 0.1 0.3
-0.44 0.1 0.3
-0.56 0.1 0.3
-0.58 0.1 0.3
-0.6 0.1 0.3
-0.62 0.1 0.3
-0.64 0.1 0.3
-0.66 0.1 0.3
-0.68 0.1 0.3
-0.7 0.1 0.3
-0.72 0.1 0.3
-0.26 0.12 0.3
-0.28 0.12 0.3
-0.3 0.12 0.3
-0.32 0.12 0.3
-0.34 0.12 0.3
-0.36 0.12 0.3
-0.64 0.12 0.3
-0.66 0.12 0.3
-0.68 0.12 0.3
-0.7 0.12 0.3
-0.72 0.12 0.3
-0.74 0.12 0.3
-0.22 0.14 0.3
-0.24 0.14 0.3
-0.26 0.14 0.3
-0.28 0.14 0.3
-0.3 0.14 0.3
-0.7 0.14 0.3
-0.72 0.14 0.3
-0.74 0.14 0.3
-0.76 0.14 0.3
-0.78 0.14 0.3
-0.2 0.16 0.3
-0.22 0.16 0.3
-0.24 0.16 0.3
-0.26 0.16 0.3
-0.28 0.16 0.3
-0.72 0.16 0.3
-0.74 0.16 0.3
-0.76 0.16 0.3
-0.78 0.16 0.3
-0.8 0.16 0.3
-0.18 0.18 0.3
-0.2 0.18 0.3
-0.22 0.18 0.3
-0.24 0.18 0.3
-0.76 0.18 0.3
-0.78 0.18 0.3
-0.8 0.18 0.3
-0.82 0.18 0.3
-0.16 0.2 0.3
-0.18 0.2 0.3
-0.2 0.2 0.3
-0.22 0.2 0.3
-0.78 0.2 0.3
-0.8 0.2 0.3
-0.82 0.2 0.3
-0.84 0.2 0.3
-0.14 0.22 0.3
-0.16 0.22 0.3
-0.18 0.22 0.3
-0.2 0.22 0.3
-0.8 0.22 0.3
-0.82 0.22 0.3
-0.84 0.22 0.3
-0.86 0.22 0.3
-0.14 0.24 0.3
-0.16 0.24 0.3
-0.18 0.24 0.3
-0.82 0.24 0.3
-0.84 0.24 0.3
-0.86 0.24 0.3
-0.12 0.26 0.3
-0.14 0.26 0.3
-0.16 0.26 0.3
-0.84 0.26 0.3
-0.86 0.26 0.3
-0.88 0.26 0.3
-0.1 0.28 0.3
-0.12 0.28 0.3
-0.14 0.28 0.3
-0.16 0.28 0.3
-0.84 0.28 0.3
-0.86 0.28 0.3
-0.88 0.28 0.3
-0.9 0.28 0.3
-0.1 0.3 0.3
-0.12 0.3 0.3
-0.14 0.3 0.3
-0.86 0.3 0.3
-0.88 0.3 0.3
-0.9 0.3 0.3
-0.08 0.32 0.3
-0.1 0.32 0.3
-0.12 0.32 0.3
-0.88 0.32 0.3
-0.9 0.32 0.3
-0.92 0.32 0.3
-0.08 0.34 0.3
-0.1 0.34 0.3
-0.12 0.34 0.3
-0.88 0.34 0.3
-0.9 0.34 0.3
-0.92 0.34 0.3
-0.08 0.36 0.3
-0.1 0.36 0.3
-0.12 0.36 0.3
-0.88 0.36 0.3
-0.9 0.36 0.3
-0.92 0.36 0.3
-0.06 0.38 0.3
-0.08 0.38 0.3
-0.1 0.38 0.3
-0.9 0.38 0.3
-0.92 0.38 0.3
-0.94 0.38 0.3
-0.06 0.4 0.3
-0.08 0.4 0.3
-0.1 0.4 0.3
-0.9 0.4 0.3
-0.92 0.4 0.3
-0.94 0.4 0.3
-0.06 0.42 0.3
-0.08 0.42 0.3
-0.1 0.42 0.3
-0.9 0.42 0.3
-0.92 0.42 0.3
-0.94 0.42 0.3
-0.06 0.44 0.3
-0.08 0.44 0.3
-0.1 0.44 0.3
-0.9 0.44 0.3
-0.92 0.44 0.3
-0.94 0.44 0.3
-0.06 0.46 0.3
-0.08 0.46 0.3
-0.92 0.46 0.3
-0.94 0.46 0.3
-0.06 0.48 0.3
-0.08 0.48 0.3
-0.92 0.48 0.3
-0.94 0.48 0.3
-0.06 0.5 0.3
-0.08 0.5 0.3
-0.92 0.5 0.3
-0.94 0.5 0.3
-0.06 0.52 0.3
-0.08 0.52 0.3
-0.92 0.52 0.3
-0.94 0.52 0.3
-0.06 0.54 0.3
-0.08 0.54 0.3
-0.92 0.54 0.3
-0.94 0.54 0.3
-0.06 0.56 0.3
-0.08 0.56 0.3
-0.1 0.56 0.3
-0.9 0.56 0.3
-0.92 0.56 0.3
-0.94 0.56 0.3
-0.06 0.58 0.3
-0.08 0.58 0.3
-0.1 0.58 0.3
-0.9 0.58 0.3
-0.92 0.58 0.3
-0.94 0.58 0.3
-0.06 0.6 0.3
-0.08 0.6 0.3
-0.1 0.6 0.3
-0.9 0.6 0.3
-0.92 0.6 0.3
-0.94 0.6 0.3
-0.06 0.62 0.3
-0.08 0.62 0.3
-0.1 0.62 0.3
-0.9 0.62 0.3
-0.92 0.62 0.3
-0.94 0.62 0.3
-0.08 0.64 0.3
-0.1 0.64 0.3
-0.12 0.64 0.3
-0.88 0.64 0.3
-0.9 0.64 0.3
-0.92 0.64 0.3
-0.08 0.66 0.3
-0.1 0.66 0.3
-0.12 0.66 0.3
-0.88 0.66 0.3
-0.9 0.66 0.3
-0.92 0.66 0.3
-0.08 0.68 0.3
-0.1 0.68 0.3
-0.12 0.68 0.3
-0.88 0.68 0.3
-0.9 0.68 0.3
-0.92 0.68 0.3
-0.1 0.7 0.3
-0.12 0.7 0.3
-0.14 0.7 0.3
-0.86 0.7 0.3
-0.88 0.7 0.3
-0.9 0.7 0.3
-0.1 0.72 0.3
-0.12 0.72 0.3
-0.14 0.72 0.3
-0.16 0.72 0.3
-0.84 0.72 0.3
-0.86 0.72 0.3
-0.88 0.72 0.3
-0.9 0.72 0.3
-0.12 0.74 0.3
-0.14 0.74 0.3
-0.16 0.74 0.3
-0.84 0.74 0.3
-0.86 0.74 0.3
-0.88 0.74 0.3
-0.14 0.76 0.3
-0.16 0.76 0.3
-0.18 0.76 0.3
-0.82 0.76 0.3
-0.84 0.76 0.3
-0.86 0.76 0.3
-0.14 0.78 0.3
-0.16 0.78 0.3
-0.18 0.78 0.3
-0.2 0.78 0.3
-0.8 0.78 0.3
-0.82 0.78 0.3
-0.84 0.78 0.3
-0.86 0.78 0.3
-0.16 0.8 0.3
-0.18 0.8 0.3
-0.2 0.8 0.3
-0.22 0.8 0.3
-0.78 0.8 0.3
-0.8 0.8 0.3
-0.82 0.8 0.3
-0.84 0.8 0.3
-0.18 0.82 0.3
-0.2 0.82 0.3
-0.22 0.82 0.3
-0.24 0.82 0.3
-0.76 0.82 0.3
-0.78 0.82 0.3
-0.8 0.82 0.3
-0.82 0.82 0.3
-0.2 0.84 0.3
-0.22 0.84 0.3
-0.24 0.84 0.3
-0.26 0.84 0.3
-0.28 0.84 0.3
-0.72 0.84 0.3
-0.74 0.84 0.3
-0.76 0.84 0.3
-0.78 0.84 0.3
-0.8 0.84 0.3
-0.22 0.86 0.3
-0.24 0.86 0.3
-0.26 0.86 0.3
-0.28 0.86 0.3
-0.3 0.86 0.3
-0.7 0.86 0.3
-0.72 0.86 0.3
-0.74 0.86 0.3
-0.76 0.86 0.3
-0.78 0.86 0.3
-0.26 0.88 0.3
-0.28 0.88 0.3
-0.3 0.88 0.3
-0.32 0.88 0.3
-0.34 0.88 0.3
-0.36 0.88 0.3
-0.64 0.88 0.3
-0.66 0.88 0.3
-0.68 0.88 0.3
-0.7 0.88 0.3
-0.72 0.88 0.3
-0.74 0.88 0.3
-0.28 0.9 0.3
-0.3 0.9 0.3
-0.32 0.9 0.3
-0.34 0.9 0.3
-0.36 0.9 0.3
-0.38 0.9 0.3
-0.4 0.9 0.3
-0.42 0.9 0.3
-0.44 0.9 0.3
-0.56 0.9 0.3
-0.58 0.9 0.3
-0.6 0.9 0.3
-0.62 0.9 0.3
-0.64 0.9 0.3
-0.66 0.9 0.3
-0.68 0.9 0.3
-0.7 0.9 0.3
-0.72 0.9 0.3
-0.32 0.92 0.3
-0.34 0.92 0.3
-0.36 0.92 0.3
-0.38 0.92 0.3
-0.4 0.92 0.3
-0.42 0.92 0.3
-0.44 0.92 0.3
-0.46 0.92 0.3
-0.48 0.92 0.3
-0.5 0.92 0.3
-0.52 0.92 0.3
-0.54 0.92 0.3
-0.56 0.92 0.3
-0.58 0.92 0.3
-0.6 0.92 0.3
-0.62 0.92 0.3
-0.64 0.92 0.3
-0.66 0.92 0.3
-0.68 0.92 0.3
-0.38 0.94 0.3
-0.4 0.94 0.3
-0.42 0.94 0.3
-0.44 0.94 0.3
-0.46 0.94 0.3
-0.48 0.94 0.3
-0.5 0.94 0.3
-0.52 0.94 0.3
-0.54 0.94 0.3
-0.56 0.94 0.3
-0.58 0.94 0.3
-0.6 0.94 0.3
-0.62 0.94 0.3
-0.44 0.04 0.32
-0.46 0.04 0.32
-0.48 0.04 0.32
-0.5 0.04 0.32
-0.52 0.04 0.32
-0.54 0.04 0.32
-0.56 0.04 0.32
-0.36 0.06 0.32
-0.38 0.06 0.32
-0.4 0.06 0.32
-0.42 0.06 0.32
-0.44 0.06 0.32
-0.46 0.06 0.32
-0.48 0.06 0.32
-0.5 0.06 0.32
-0.52 0.06 0.32
-0.54 0.06 0.32
-0.56 0.06 0.32
-0.58 0.06 0.32
-0.6 0.06 0.32
-0.62 0.06 0.32
-0.64 0.06 0.32
-0.3 0.08 0.32
-0.32 0.08 0.32
-0.34 0.08 0.32
-0.36 0.08 0.32
-0.38 0.08 0.32
-0.4 0.08 0.32
-0.42 0.08 0.32
-0.44 0.08 0.32
-0.46 0.08 0.32
-0.48 0.08 0.32
-0.5 0.08 0.32
-0.52 0.08 0.32
-0.54 0.08 0.32
-0.56 0.08 0.32
-0.58 0.08 0.32
-0.6 0.08 0.32
-0.62 0.08 0.32
-0.64 0.08 0.32
-0.66 0.08 0.32
-0.68 0.08 0.32
-0.7 0.08 0.32
-0.28 0.1 0.32
-0.3 0.1 0.32
-0.32 0.1 0.32
-0.34 0.1 0.32
-0.36 0.1 0.32
-0.38 0.1 0.32
-0.62 0.1 0.32
-0.64 0.1 0.32
-0.66 0.1 0.32
-0.68 0.1 0.32
-0.7 0.1 0.32
-0.72 0.1 0.32
-0.24 0.12 0.32
-0.26 0.12 0.32
-0.28 0.12 0.32
-0.3 0.12 0.32
-0.32 0.12 0.32
-0.68 0.12 0.32
-0.7 0.12 0.32
-0.72 0.12 0.32
-0.74 0.12 0.32
-0.76 0.12 0.32
-0.22 0.14 0.32
-0.24 0.14 0.32
-0.26 0.14 0.32
-0.28 0.14 0.32
-0.72 0.14 0.32
-0.74 0.14 0.32
-0.76 0.14 0.32
-0.78 0.14 0.32
-0.2 0.16 0.32
-0.22 0.16 0.32
-0.24 0.16 0.32
-0.26 0.16 0.32
-0.74 0.16 0.32
-0.76 0.16 0.32
-0.78 0.16 0.32
-0.8 0.16 0.32
-0.18 0.18 0.32
-0.2 0.18 0.32
-0.22 0.18 0.32
-0.78 0.18 0.32
-0.8 0.18 0.32
-0.82 0.18 0.32
-0.16 0.2 0.32
-0.18 0.2 0.32
-0.2 0.2 0.32
-0.8 0.2 0.32
-0.82 0.2 0.32
-0.84 0.2 0.32
-0.14 0.22 0.32
-0.16 0.22 0.32
-0.18 0.22 0.32
-0.82 0.22 0.32
-0.84 0.22 0.32
-0.86 0.22 0.32
-0.12 0.24 0.32
-0.14 0.24 0.32
-0.16 0.24 0.32
-0.84 0.24 0.32
-0.86 0.24 0.32
-0.88 0.24 0.32
-0.12 0.26 0.32
-0.14 0.26 0.32
-0.16 0.26 0.32
-0.84 0.26 0.32
-0.86 0.26 0.32
-0.88 0.26 0.32
-0.1 0.28 0.32
-0.12 0.28 0.32
-0.14 0.28 0.32
-0.86 0.28 0.32
-0.88 0.28 0.32
-0.9 0.28 0.32
-0.08 0.3 0.32
-0.1 0.3 0.32
-0.12 0.3 0.32
-0.88 0.3 0.32
-0.9 0.3 0.32
-0.92 0.3 0.32
-0.08 0.32 0.32
-0.1 0.32 0.32
-0.12 0.32 0.32
-0.88 0.32 0.32
-0.9 0.32 0.32
-0.92 0.32 0.32
-0.08 0.34 0.32
-0.1 0.34 0.32
-0.9 0.34 0.32
-0.92 0.34 0.32
-0.06 0.36 0.32
-0.08 0.36 0.32
-0.1 0.36 0.32
-0.9 0.36 0.32
-0.92 0.36 0.32
-0.94 0.36 0.32
-0.06 0.38 0.32
-0.08 0.38 0.32
-0.1 0.38 0.32
-0.9 0.38 0.32
-0.92 0.38 0.32
-0.94 0.38 0.32
-0.06 0.4 0.32
-0.08 0.4 0.32
-0.92 0.4 0.32
-0.94 0.4 0.32
-0.06 0.42 0.32
-0.08 0.42 0.32
-0.92 0.42 0.32
-0.94 0.42 0.32
-0.04 0.44 0.32
-0.06 0.44 0.32
-0.08 0.44 0.32
-0.92 0.44 0.32
-0.94 0.44 0.32
-0.96 0.44 0.32
-0.04 0.46 0.32
-0.06 0.46 0.32
-0.08 0.46 0.32
-0.92 0.46 0.32
-0.94 0.46 0.32
-0.96 0.46 0.32
-0.04 0.48 0.32
-0.06 0.48 0.32
-0.08 0.48 0.32
-0.92 0.48 0.32
-0.94 0.48 0.32
-0.96 0.48 0.32
-0.04 0.5 0.32
-0.06 0.5 0.32
-0.08 0.5 0.32
-0.92 0.5 0.32
-0.94 0.5 0.32
-0.96 0.5 0.32
-0.04 0.52 0.32
-0.06 0.52 0.32
-0.08 0.52 0.32
-0.92 0.52 0.32
-0.94 0.52 0.32
-0.96 0.52 0.32
-0.04 0.54 0.32
-0.06 0.54 0.32
-0.08 0.54 0.32
-0.92 0.54 0.32
-0.94 0.54 0.32
-0.96 0.54 0.32
-0.04 0.56 0.32
-0.06 0.56 0.32
-0.08 0.56 0.32
-0.92 0.56 0.32
-0.94 0.56 0.32
-0.96 0.56 0.32
-0.06 0.58 0.32
-0.08 0.58 0.32
-0.92 0.58 0.32
-0.94 0.58 0.32
-0.06 0.6 0.32
-0.08 0.6 0.32
-0.92 0.6 0.32
-0.94 0.6 0.32
-0.06 0.62 0.32
-0.08 0.62 0.32
-0.1 0.62 0.32
-0.9 0.62 0.32
-0.92 0.62 0.32
-0.94 0.62 0.32
-0.06 0.64 0.32
-0.08 0.64 0.32
-0.1 0.64 0.32
-0.9 0.64 0.32
-0.92 0.64 0.32
-0.94 0.64 0.32
-0.08 0.66 0.32
-0.1 0.66 0.32
-0.9 0.66 0.32
-0.92 0.66 0.32
-0.08 0.68 0.32
-0.1 0.68 0.32
-0.12 0.68 0.32
-0.88 0.68 0.32
-0.9 0.68 0.32
-0.92 0.68 0.32
-0.08 0.7 0.32
-0.1 0.7 0.32
-0.12 0.7 0.32
-0.88 0.7 0.32
-0.9 0.7 0.32
-0.92 0.7 0.32
-0.1 0.72 0.32
-0.12 0.72 0.32
-0.14 0.72 0.32
-0.86 0.72 0.32
-0.88 0.72 0.32
-0.9 0.72 0.32
-0.12 0.74 0.32
-0.14 0.74 0.32
-0.16 0.74 0.32
-0.84 0.74 0.32
-0.86 0.74 0.32
-0.88 0.74 0.32
-0.12 0.76 0.32
-0.14 0.76 0.32
-0.16 0.76 0.32
-0.84 0.76 0.32
-0.86 0.76 0.32
-0.88 0.76 0.32
-0.14 0.78 0.32
-0.16 0.78 0.32
-0.18 0.78 0.32
-0.82 0.78 0.32
-0.84 0.78 0.32
-0.86 0.78 0.32
-0.16 0.8 0.32
-0.18 0.8 0.32
-0.2 0.8 0.32
-0.8 0.8 0.32
-0.82 0.8 0.32
-0.84 0.8 0.32
-0.18 0.82 0.32
-0.2 0.82 0.32
-0.22 0.82 0.32
-0.78 0.82 0.32
-0.8 0.82 0.32
-0.82 0.82 0.32
-0.2 0.84 0.32
-0.22 0.84 0.32
-0.24 0.84 0.32
-0.26 0.84 0.32
-0.74 0.84 0.32
-0.76 0.84 0.32
-0.78 0.84 0.32
-0.8 0.84 0.32
-0.22 0.86 0.32
-0.24 0.86 0.32
-0.26 0.86 0.32
-0.28 0.86 0.32
-0.72 0.86 0.32
-0.74 0.86 0.32
-0.76 0.86 0.32
-0.78 0.86 0.32
-0.24 0.88 0.32
-0.26 0.88 0.32
-0.28 0.88 0.32
-0.3 0.88 0.32
-0.32 0.88 0.32
-0.68 0.88 0.32
-0.7 0.88 0.32
-0.72 0.88 0.32
-0.74 0.88 0.32
-0.76 0.88 0.32
-0.28 0.9 0.32
-0.3 0.9 0.32
-0.32 0.9 0.32
-0.34 0.9 0.32
-0.36 0.9 0.32
-0.38 0.9 0.32
-0.62 0.9 0.32
-0.64 0.9 0.32
-0.66 0.9 0.32
-0.68 0.9 0.32
-0.7 0.9 0.32
-0.72 0.9 0.32
-0.3 0.92 0.32
-0.32 0.92 0.32
-0.34 0.92 0.32
-0.36 0.92 0.32
-0.38 0.92 0.32
-0.4 0.92 0.32
-0.42 0.92 0.32
-0.44 0.92 0.32
-0.46 0.92 0.32
-0.48 0.92 0.32
-0.5 0.92 0.32
-0.52 0.92 0.32
-0.54 0.92 0.32
-0.56 0.92 0.32
-0.58 0.92 0.32
-0.6 0.92 0.32
-0.62 0.92 0.32
-0.64 0.92 0.32
-0.66 0.92 0.32
-0.68 0.92 0.32
-0.7 0.92 0.32
-0.36 0.94 0.32
-0.38 0.94 0.32
-0.4 0.94 0.32
-0.42 0.94 0.32
-0.44 0.94 0.32
-0.46 0.94 0.32
-0.48 0.94 0.32
-0.5 0.94 0.32
-0.52 0.94 0.32
-0.54 0.94 0.32
-0.56 0.94 0.32
-0.58 0.94 0.32
-0.6 0.94 0.32
-0.62 0.94 0.32
-0.64 0.94 0.32
-0.44 0.96 0.32
-0.46 0.96 0.32
-0.48 0.96 0.32
-0.5 0.96 0.32
-0.52 0.96 0.32
-0.54 0.96 0.32
-0.56 0.96 0.32
-0.4 0.04 0.34
-0.42 0.04 0.34
-0.44 0.04 0.34
-0.46 0.04 0.34
-0.48 0.04 0.34
-0.5 0.04 0.34
-0.52 0.04 0.34
-0.54 0.04 0.34
-0.56 0.04 0.34
-0.58 0.04 0.34
-0.6 0.04 0.34
-0.34 0.06 0.34
-0.36 0.06 0.34
-0.38 0.06 0.34
-0.4 0.06 0.34
-0.42 0.06 0.34
-0.44 0.06 0.34
-0.46 0.06 0.34
-0.48 0.06 0.34
-0.5 0.06 0.34
-0.52 0.06 0.34
-0.54 0.06 0.34
-0.56 0.06 0.34
-0.58 0.06 0.34
-0.6 0.06 0.34
-0.62 0.06 0.34
-0.64 0.06 0.34
-0.66 0.06 0.34
-0.3 0.08 0.34
-0.32 0.08 0.34
-0.34 0.08 0.34
-0.36 0.08 0.34
-0.38 0.08 0.34
-0.4 0.08 0.34
-0.42 0.08 0.34
-0.44 0.08 0.34
-0.46 0.08 0.34
-0.54 0.08 0.34
-0.56 0.08 0.34
-0.58 0.08 0.34
-0.6 0.08 0.34
-0.62 0.08 0.34
-0.64 0.08 0.34
-0.66 0.08 0.34
-0.68 0.08 0.34
-0.7 0.08 0.34
-0.26 0.1 0.34
-0.28 0.1 0.34
-0.3 0.1 0.34
-0.32 0.1 0.34
-0.34 0.1 0.34
-0.36 0.1 0.34
-0.64 0.1 0.34
-0.66 0.1 0.34
-0.68 0.1 0.34
-0.7 0.1 0.34
-0.72 0.1 0.34
-0.74 0.1 0.34
-0.22 0.12 0.34
-0.24 0.12 0.34
-0.26 0.12 0.34
-0.28 0.12 0.34
-0.3 0.12 0.34
-0.7 0.12 0.34
-0.72 0.12 0.34
-0.74 0.12 0.34
-0.76 0.12 0.34
-0.78 0.12 0.34
-0.2 0.14 0.34
-0.22 0.14 0.34
-0.24 0.14 0.34
-0.26 0.14 0.34
-0.28 0.14 0.34
-0.72 0.14 0.34
-0.74 0.14 0.34
-0.76 0.14 0.34
-0.78 0.14 0.34
-0.8 0.14 0.34
-0.18 0.16 0.34
-0.2 0.16 0.34
-0.22 0.16 0.34
-0.24 0.16 0.34
-0.76 0.16 0.34
-0.78 0.16 0.34
-0.8 0.16 0.34
-0.82 0.16 0.34
-0.16 0.18 0.34
-0.18 0.18 0.34
-0.2 0.18 0.34
-0.22 0.18 0.34
-0.78 0.18 0.34
-0.8 0.18 0.34
-0.82 0.18 0.34
-0.84 0.18 0.34
-0.14 0.2 0.34
-0.16 0.2 0.34
-0.18 0.2 0.34
-0.2 0.2 0.34
-0.8 0.2 0.34
-0.82 0.2 0.34
-0.84 0.2 0.34
-0.86 0.2 0.34
-0.12 0.22 0.34
-0.14 0.22 0.34
-0.16 0.22 0.34
-0.18 0.22 0.34
-0.82 0.22 0.34
-0.84 0.22 0.34
-0.86 0.22 0.34
-0.88 0.22 0.34
-0.12 0.24 0.34
-0.14 0.24 0.34
-0.16 0.24 0.34
-0.84 0.24 0.34
-0.86 0.24 0.34
-0.88 0.24 0.34
-0.1 0.26 0.34
-0.12 0.26 0.34
-0.14 0.26 0.34
-0.86 0.26 0.34
-0.88 0.26 0.34
-0.9 0.26 0.34
-0.1 0.28 0.34
-0.12 0.28 0.34
-0.14 0.28 0.34
-0.86 0.28 0.34
-0.88 0.28 0.34
-0.9 0.28 0.34
-0.08 0.3 0.34
-0.1 0.3 0.34
-0.12 0.3 0.34
-0.88 0.3 0.34
-0.9 0.3 0.34
-0.92 0.3 0.34
-0.08 0.32 0.34
-0.1 0.32 0.34
-0.9 0.32 0.34
-0.92 0.32 0.34
-0.06 0.34 0.34
-0.08 0.34 0.34
-0.1 0.34 0.34
-0.9 0.34 0.34
-0.92 0.34 0.34
-0.94 0.34 0.34
-0.06 0.36 0.34
-0.08 0.36 0.34
-0.1 0.36 0.34
-0.9 0.36 0.34
-0.92 0.36 0.34
-0.94 0.36 0.34
-0.06 0.38 0.34
-0.08 0.38 0.34
-0.92 0.38 0.34
-0.94 0.38 0.34
-0.04 0.4 0.34
-0.06 0.4 0.34
-0.08 0.4 0.34
-0.92 0.4 0.34
-0.94 0.4 0.34
-0.96 0.4 0.34
-0.04 0.42 0.34
-0.06 0.42 0.34
-0.08 0.42 0.34
-0.92 0.42 0.34
-0.94 0.42 0.34
-0.96 0.42 0.34
-0.04 0.44 0.34
-0.06 0.44 0.34
-0.08 0.44 0.34
-0.92 0.44 0.34
-0.94 0.44 0.34
-0.96 0.44 0.34
-0.04 0.46 0.34
-0.06 0.46 0.34
-0.08 0.46 0.34
-0.92 0.46 0.34
-0.94 0.46 0.34
-0.96 0.46 0.34
-0.04 0.48 0.34
-0.06 0.48 0.34
-0.94 0.48 0.34
-0.96 0.48 0.34
-0.04 0.5 0.34
-0.06 0.5 0.34
-0.94 0.5 0.34
-0.96 0.5 0.34
-0.04 0.52 0.34
-0.06 0.52 0.34
-0.94 0.52 0.34
-0.96 0.52 0.34
-0.04 0.54 0.34
-0.06 0.54 0.34
-0.08 0.54 0.34
-0.92 0.54 0.34
-0.94 0.54 0.34
-0.96 0.54 0.34
-0.04 0.56 0.34
-0.06 0.56 0.34
-0.08 0.56 0.34
-0.92 0.56 0.34
-0.94 0.56 0.34
-0.96 0.56 0.34
-0.04 0.58 0.34
-0.06 0.58 0.34
-0.08 0.58 0.34
-0.92 0.58 0.34
-0.94 0.58 0.34
-0.96 0.58 0.34
-0.04 0.6 0.34
-0.06 0.6 0.34
-0.08 0.6 0.34
-0.92 0.6 0.34
-0.94 0.6 0.34
-0.96 0.6 0.34
-0.06 0.62 0.34
-0.08 0.62 0.34
-0.92 0.62 0.34
-0.94 0.62 0.34
-0.06 0.64 0.34
-0.08 0.64 0.34
-0.1 0.64 0.34
-0.9 0.64 0.34
-0.92 0.64 0.34
-0.94 0.64 0.34
-0.06 0.66 0.34
-0.08 0.66 0.34
-0.1 0.66 0.34
-0.9 0.66 0.34
-0.92 0.66 0.34
-0.94 0.66 0.34
-0.08 0.68 0.34
-0.1 0.68 0.34
-0.9 0.68 0.34
-0.92 0.68 0.34
-0.08 0.7 0.34
-0.1 0.7 0.34
-0.12 0.7 0.34
-0.88 0.7 0.34
-0.9 0.7 0.34
-0.92 0.7 0.34
-0.1 0.72 0.34
-0.12 0.72 0.34
-0.14 0.72 0.34
-0.86 0.72 0.34
-0.88 0.72 0.34
-0.9 0.72 0.34
-0.1 0.74 0.34
-0.12 0.74 0.34
-0.14 0.74 0.34
-0.86 0.74 0.34
-0.88 0.74 0.34
-0.9 0.74 0.34
-0.12 0.76 0.34
-0.14 0.76 0.34
-0.16 0.76 0.34
-0.84 0.76 0.34
-0.86 0.76 0.34
-0.88 0.76 0.34
-0.12 0.78 0.34
-0.14 0.78 0.34
-0.16 0.78 0.34
-0.18 0.78 0.34
-0.82 0.78 0.34
-0.84 0.78 0.34
-0.86 0.78 0.34
-0.88 0.78 0.34
-0.14 0.8 0.34
-0.16 0.8 0.34
-0.18 0.8 0.34
-0.2 0.8 0.34
-0.8 0.8 0.34
-0.82 0.8 0.34
-0.84 0.8 0.34
-0.86 0.8 0.34
-0.16 0.82 0.34
-0.18 0.82 0.34
-0.2 0.82 0.34
-0.22 0.82 0.34
-0.78 0.82 0.34
-0.8 0.82 0.34
-0.82 0.82 0.34
-0.84 0.82 0.34
-0.18 0.84 0.34
-0.2 0.84 0.34
-0.22 0.84 0.34
-0.24 0.84 0.34
-0.76 0.84 0.34
-0.78 0.84 0.34
-0.8 0.84 0.34
-0.82 0.84 0.34
-0.2 0.86 0.34
-0.22 0.86 0.34
-0.24 0.86 0.34
-0.26 0.86 0.34
-0.28 0.86 0.34
-0.72 0.86 0.34
-0.74 0.86 0.34
-0.76 0.86 0.34
-0.78 0.86 0.34
-0.8 0.86 0.34
-0.22 0.88 0.34
-0.24 0.88 0.34
-0.26 0.88 0.34
-0.28 0.88 0.34
-0.3 0.88 0.34
-0.7 0.88 0.34
-0.72 0.88 0.34
-0.74 0.88 0.34
-0.76 0.88 0.34
-0.78 0.88 0.34
-0.26 0.9 0.34
-0.28 0.9 0.34
-0.3 0.9 0.34
-0.32 0.9 0.34
-0.34 0.9 0.34
-0.36 0.9 0.34
-0.64 0.9 0.34
-0.66 0.9 0.34
-0.68 0.9 0.34
-0.7 0.9 0.34
-0.72 0.9 0.34
-0.74 0.9 0.34
-0.3 0.92 0.34
-0.32 0.92 0.34
-0.34 0.92 0.34
-0.36 0.92 0.34
-0.38 0.92 0.34
-0.4 0.92 0.34
-0.42 0.92 0.34
-0.44 0.92 0.34
-0.46 0.92 0.34
-0.54 0.92 0.34
-0.56 0.92 0.34
-0.58 0.92 0.34
-0.6 0.92 0.34
-0.62 0.92 0.34
-0.64 0.92 0.34
-0.66 0.92 0.34
-0.68 0.92 0.34
-0.7 0.92 0.34
-0.34 0.94 0.34
-0.36 0.94 0.34
-0.38 0.94 0.34
-0.4 0.94 0.34
-0.42 0.94 0.34
-0.44 0.94 0.34
-0.46 0.94 0.34
-0.48 0.94 0.34
-0.5 0.94 0.34
-0.52 0.94 0.34
-0.54 0.94 0.34
-0.56 0.94 0.34
-0.58 0.94 0.34
-0.6 0.94 0.34
-0.62 0.94 0.34
-0.64 0.94 0.34
-0.66 0.94 0.34
-0.4 0.96 0.34
-0.42 0.96 0.34
-0.44 0.96 0.34
-0.46 0.96 0.34
-0.48 0.96 0.34
-0.5 0.96 0.34
-0.52 0.96 0.34
-0.54 0.96 0.34
-0.56 0.96 0.34
-0.58 0.96 0.34
-0.6 0.96 0.34
-0.38 0.04 0.36
-0.4 0.04 0.36
-0.42 0.04 0.36
-0.44 0.04 0.36
-0.46 0.04 0.36
-0.48 0.04 0.36
-0.5 0.04 0.36
-0.52 0.04 0.36
-0.54 0.04 0.36
-0.56 0.04 0.36
-0.58 0.04 0.36
-0.6 0.04 0.36
-0.62 0.04 0.36
-0.32 0.06 0.36
-0.34 0.06 0.36
-0.36 0.06 0.36
-0.38 0.06 0.36
-0.4 0.06 0.36
-0.42 0.06 0.36
-0.44 0.06 0.36
-0.46 0.06 0.36
-0.48 0.06 0.36
-0.5 0.06 0.36
-0.52 0.06 0.36
-0.54 0.06 0.36
-0.56 0.06 0.36
-0.58 0.06 0.36
-0.6 0.06 0.36
-0.62 0.06 0.36
-0.64 0.06 0.36
-0.66 0.06 0.36
-0.68 0.06 0.36
-0.28 0.08 0.36
-0.3 0.08 0.36
-0.32 0.08 0.36
-0.34 0.08 0.36
-0.36 0.08 0.36
-0.38 0.08 0.36
-0.4 0.08 0.36
-0.6 0.08 0.36
-0.62 0.08 0.36
-0.64 0.08 0.36
-0.66 0.08 0.36
-0.68 0.08 0.36
-0.7 0.08 0.36
-0.72 0.08 0.36
-0.24 0.1 0.36
-0.26 0.1 0.36
-0.28 0.1 0.36
-0.3 0.1 0.36
-0.32 0.1 0.36
-0.34 0.1 0.36
-0.66 0.1 0.36
-0.68 0.1 0.36
-0.7 0.1 0.36
-0.72 0.1 0.36
-0.74 0.1 0.36
-0.76 0.1 0.36
-0.22 0.12 0.36
-0.24 0.12 0.36
-0.26 0.12 0.36
-0.28 0.12 0.36
-0.3 0.12 0.36
-0.7 0.12 0.36
-0.72 0.12 0.36
-0.74 0.12 0.36
-0.76 0.12 0.36
-0.78 0.12 0.36
-0.2 0.14 0.36
-0.22 0.14 0.36
-0.24 0.14 0.36
-0.26 0.14 0.36
-0.74 0.14 0.36
-0.76 0.14 0.36
-0.78 0.14 0.36
-0.8 0.14 0.36
-0.18 0.16 0.36
-0.2 0.16 0.36
-0.22 0.16 0.36
-0.24 0.16 0.36
-0.76 0.16 0.36
-0.78 0.16 0.36
-0.8 0.16 0.36
-0.82 0.16 0.36
-0.16 0.18 0.36
-0.18 0.18 0.36
-0.2 0.18 0.36
-0.8 0.18 0.36
-0.82 0.18 0.36
-0.84 0.18 0.36
-0.14 0.2 0.36
-0.16 0.2 0.36
-0.18 0.2 0.36
-0.82 0.2 0.36
-0.84 0.2 0.36
-0.86 0.2 0.36
-0.12 0.22 0.36
-0.14 0.22 0.36
-0.16 0.22 0.36
-0.84 0.22 0.36
-0.86 0.22 0.36
-0.88 0.22 0.36
-0.1 0.24 0.36
-0.12 0.24 0.36
-0.14 0.24 0.36
-0.16 0.24 0.36
-0.84 0.24 0.36
-0.86 0.24 0.36
-0.88 0.24 0.36
-0.9 0.24 0.36
-0.1 0.26 0.36
-0.12 0.26 0.36
-0.14 0.26 0.36
-0.86 0.26 0.36
-0.88 0.26 0.36
-0.9 0.26 0.36
-0.08 0.28 0.36
-0.1 0.28 0.36
-0.12 0.28 0.36
-0.88 0.28 0.36
-0.9 0.28 0.36
-0.92 0.28 0.36
-0.08 0.3 0.36
-0.1 0.3 0.36
-0.12 0.3 0.36
-0.88 0.3 0.36
-0.9 0.3 0.36
-0.92 0.3 0.36
-0.06 0.32 0.36
-0.08 0.32 0.36
-0.1 0.32 0.36
-0.9 0.32 0.36
-0.92 0.32 0.36
-0.94 0.32 0.36
-0.06 0.34 0.36
-0.08 0.34 0.36
-0.1 0.34 0.36
-0.9 0.34 0.36
-0.92 0.34 0.36
-0.94 0.34 0.36
-0.06 0.36 0.36
-0.08 0.36 0.36
-0.92 0.36 0.36
-0.94 0.36 0.36
-0.04 0.38 0.36
-0.06 0.38 0.36
-0.08 0.38 0.36
-0.92 0.38 0.36
-0.94 0.38 0.36
-0.96 0.38 0.36
-0.04 0.4 0.36
-0.06 0.4 0.36
-0.08 0.4 0.36
-0.92 0.4 0.36
-0.94 0.4 0.36
-0.96 0.4 0.36
-0.04 0.42 0.36
-0.06 0.42 0.36
-0.94 0.42 0.36
-0.96 0.42 0.36
-0.04 0.44 0.36
-0.06 0.44 0.36
-0.94 0.44 0.36
-0.96 0.44 0.36
-0.04 0.46 0.36
-0.06 0.46 0.36
-0.94 0.46 0.36
-0.96 0.46 0.36
-0.04 0.48 0.36
-0.06 0.48 0.36
-0.94 0.48 0.36
-0.96 0.48 0.36
-0.04 0.5 0.36
-0.06 0.5 0.36
-0.94 0.5 0.36
-0.96 0.5 0.36
-0.04 0.52 0.36
-0.06 0.52 0.36
-0.94 0.52 0.36
-0.96 0.52 0.36
-0.04 0.54 0.36
-0.06 0.54 0.36
-0.94 0.54 0.36
-0.96 0.54 0.36
-0.04 0.56 0.36
-0.06 0.56 0.36
-0.94 0.56 0.36
-0.96 0.56 0.36
-0.04 0.58 0.36
-0.06 0.58 0.36
-0.94 0.58 0.36
-0.96 0.58 0.36
-0.04 0.6 0.36
-0.06 0.6 0.36
-0.08 0.6 0.36
-0.92 0.6 0.36
-0.94 0.6 0.36
-0.96 0.6 0.36
-0.04 0.62 0.36
-0.06 0.62 0.36
-0.08 0.62 0.36
-0.92 0.62 0.36
-0.94 0.62 0.36
-0.96 0.62 0.36
-0.06 0.64 0.36
-0.08 0.64 0.36
-0.92 0.64 0.36
-0.94 0.64 0.36
-0.06 0.66 0.36
-0.08 0.66 0.36
-0.1 0.66 0.36
-0.9 0.66 0.36
-0.92 0.66 0.36
-0.94 0.66 0.36
-0.06 0.68 0.36
-0.08 0.68 0.36
-0.1 0.68 0.36
-0.9 0.68 0.36
-0.92 0.68 0.36
-0.94 0.68 0.36
-0.08 0.7 0.36
-0.1 0.7 0.36
-0.12 0.7 0.36
-0.88 0.7 0.36
-0.9 0.7 0.36
-0.92 0.7 0.36
-0.08 0.72 0.36
-0.1 0.72 0.36
-0.12 0.72 0.36
-0.88 0.72 0.36
-0.9 0.72 0.36
-0.92 0.72 0.36
-0.1 0.74 0.36
-0.12 0.74 0.36
-0.14 0.74 0.36
-0.86 0.74 0.36
-0.88 0.74 0.36
-0.9 0.74 0.36
-0.1 0.76 0.36
-0.12 0.76 0.36
-0.14 0.76 0.36
-0.16 0.76 0.36
-0.84 0.76 0.36
-0.86 0.76 0.36
-0.88 0.76 0.36
-0.9 0.76 0.36
-0.12 0.78 0.36
-0.14 0.78 0.36
-0.16 0.78 0.36
-0.84 0.78 0.36
-0.86 0.78 0.36
-0.88 0.78 0.36
-0.14 0.8 0.36
-0.16 0.8 0.36
-0.18 0.8 0.36
-0.82 0.8 0.36
-0.84 0.8 0.36
-0.86 0.8 0.36
-0.16 0.82 0.36
-0.18 0.82 0.36
-0.2 0.82 0.36
-0.8 0.82 0.36
-0.82 0.82 0.36
-0.84 0.82 0.36
-0.18 0.84 0.36
-0.2 0.84 0.36
-0.22 0.84 0.36
-0.24 0.84 0.36
-0.76 0.84 0.36
-0.78 0.84 0.36
-0.8 0.84 0.36
-0.82 0.84 0.36
-0.2 0.86 0.36
-0.22 0.86 0.36
-0.24 0.86 0.36
-0.26 0.86 0.36
-0.74 0.86 0.36
-0.76 0.86 0.36
-0.78 0.86 0.36
-0.8 0.86 0.36
-0.22 0.88 0.36
-0.24 0.88 0.36
-0.26 0.88 0.36
-0.28 0.88 0.36
-0.3 0.88 0.36
-0.7 0.88 0.36
-0.72 0.88 0.36
-0.74 0.88 0.36
-0.76 0.88 0.36
-0.78 0.88 0.36
-0.24 0.9 0.36
-0.26 0.9 0.36
-0.28 0.9 0.36
-0.3 0.9 0.36
-0.32 0.9 0.36
-0.34 0.9 0.36
-0.66 0.9 0.36
-0.68 0.9 0.36
-0.7 0.9 0.36
-0.72 0.9 0.36
-0.74 0.9 0.36
-0.76 0.9 0.36
-0.28 0.92 0.36
-0.3 0.92 0.36
-0.32 0.92 0.36
-0.34 0.92 0.36
-0.36 0.92 0.36
-0.38 0.92 0.36
-0.4 0.92 0.36
-0.6 0.92 0.36
-0.62 0.92 0.36
-0.64 0.92 0.36
-0.66 0.92 0.36
-0.68 0.92 0.36
-0.7 0.92 0.36
-0.72 0.92 0.36
-0.32 0.94 0.36
-0.34 0.94 0.36
-0.36 0.94 0.36
-0.38 0.94 0.36
-0.4 0.94 0.36
-0.42 0.94 0.36
-0.44 0.94 0.36
-0.46 0.94 0.36
-0.48 0.94 0.36
-0.5 0.94 0.36
-0.52 0.94 0.36
-0.54 0.94 0.36
-0.56 0.94 0.36
-0.58 0.94 0.36
-0.6 0.94 0.36
-0.62 0.94 0.36
-0.64 0.94 0.36
-0.66 0.94 0.36
-0.68 0.94 0.36
-0.38 0.96 0.36
-0.4 0.96 0.36
-0.42 0.96 0.36
-0.44 0.96 0.36
-0.46 0.96 0.36
-0.48 0.96 0.36
-0.5 0.96 0.36
-0.52 0.96 0.36
-0.54 0.96 0.36
-0.56 0.96 0.36
-0.58 0.96 0.36
-0.6 0.96 0.36
-0.62 0.96 0.36
-0.44 0.02 0.38
-0.46 0.02 0.38
-0.48 0.02 0.38
-0.5 0.02 0.38
-0.52 0.02 0.38
-0.54 0.02 0.38
-0.56 0.02 0.38
-0.36 0.04 0.38
-0.38 0.04 0.38
-0.4 0.04 0.38
-0.42 0.04 0.38
-0.44 0.04 0.38
-0.46 0.04 0.38
-0.48 0.04 0.38
-0.5 0.04 0.38
-0.52 0.04 0.38
-0.54 0.04 0.38
-0.56 0.04 0.38
-0.58 0.04 0.38
-0.6 0.04 0.38
-0.62 0.04 0.38
-0.64 0.04 0.38
-0.3 0.06 0.38
-0.32 0.06 0.38
-0.34 0.06 0.38
-0.36 0.06 0.38
-0.38 0.06 0.38
-0.4 0.06 0.38
-0.42 0.06 0.38
-0.44 0.06 0.38
-0.46 0.06 0.38
-0.48 0.06 0.38
-0.5 0.06 0.38
-0.52 0.06 0.38
-0.54 0.06 0.38
-0.56 0.06 0.38
-0.58 0.06 0.38
-0.6 0.06 0.38
-0.62 0.06 0.38
-0.64 0.06 0.38
-0.66 0.06 0.38
-0.68 0.06 0.38
-0.7 0.06 0.38
-0.26 0.08 0.38
-0.28 0.08 0.38
-0.3 0.08 0.38
-0.32 0.08 0.38
-0.34 0.08 0.38
-0.36 0.08 0.38
-0.38 0.08 0.38
-0.62 0.08 0.38
-0.64 0.08 0.38
-0.66 0.08 0.38
-0.68 0.08 0.38
-0.7 0.08 0.38
-0.72 0.08 0.38
-0.74 0.08 0.38
-0.24 0.1 0.38
-0.26 0.1 0.38
-0.28 0.1 0.38
-0.3 0.1 0.38
-0.32 0.1 0.38
-0.68 0.1 0.38
-0.7 0.1 0.38
-0.72 0.1 0.38
-0.74 0.1 0.38
-0.76 0.1 0.38
-0.2 0.12 0.38
-0.22 0.12 0.38
-0.24 0.12 0.38
-0.26 0.12 0.38
-0.28 0.12 0.38
-0.72 0.12 0.38
-0.74 0.12 0.38
-0.76 0.12 0.38
-0.78 0.12 0.38
-0.8 0.12 0.38
-0.18 0.14 0.38
-0.2 0.14 0.38
-0.22 0.14 0.38
-0.24 0.14 0.38
-0.76 0.14 0.38
-0.78 0.14 0.38
-0.8 0.14 0.38
-0.82 0.14 0.38
-0.16 0.16 0.38
-0.18 0.16 0.38
-0.2 0.16 0.38
-0.22 0.16 0.38
-0.78 0.16 0.38
-0.8 0.16 0.38
-0.82 0.16 0.38
-0.84 0.16 0.38
-0.14 0.18 0.38
-0.16 0.18 0.38
-0.18 0.18 0.38
-0.2 0.18 0.38
-0.8 0.18 0.38
-0.82 0.18 0.38
-0.84 0.18 0.38
-0.86 0.18 0.38
-0.12 0.2 0.38
-0.14 0.2 0.38
-0.16 0.2 0.38
-0.18 0.2 0.38
-0.82 0.2 0.38
-0.84 0.2 0.38
-0.86 0.2 0.38
-0.88 0.2 0.38
-0.12 0.22 0.38
-0.14 0.22 0.38
-0.16 0.22 0.38
-0.84 0.22 0.38
-0.86 0.22 0.38
-0.88 0.22 0.38
-0.1 0.24 0.38
-0.12 0.24 0.38
-0.14 0.24 0.38
-0.86 0.24 0.38
-0.88 0.24 0.38
-0.9 0.24 0.38
-0.08 0.26 0.38
-0.1 0.26 0.38
-0.12 0.26 0.38
-0.88 0.26 0.38
-0.9 0.26 0.38
-0.92 0.26 0.38
-0.08 0.28 0.38
-0.1 0.28 0.38
-0.12 0.28 0.38
-0.88 0.28 0.38
-0.9 0.28 0.38
-0.92 0.28 0.38
-0.06 0.3 0.38
-0.08 0.3 0.38
-0.1 0.3 0.38
-0.9 0.3 0.38
-0.92 0.3 0.38
-0.94 0.3 0.38
-0.06 0.32 0.38
-0.08 0.32 0.38
-0.1 0.32 0.38
-0.9 0.32 0.38
-0.92 0.32 0.38
-0.94 0.32 0.38
-0.06 0.34 0.38
-0.08 0.34 0.38
-0.92 0.34 0.38
-0.94 0.34 0.38
-0.04 0.36 0.38
-0.06 0.36 0.38
-0.08 0.36 0.38
-0.92 0.36 0.38
-0.94 0.36 0.38
-0.96 0.36 0.38
-0.04 0.38 0.38
-0.06 0.38 0.38
-0.08 0.38 0.38
-0.92 0.38 0.38
-0.94 0.38 0.38
-0.96 0.38 0.38
-0.04 0.4 0.38
-0.06 0.4 0.38
-0.94 0.4 0.38
-0.96 0.4 0.38
-0.04 0.42 0.38
-0.06 0.42 0.38
-0.94 0.42 0.38
-0.96 0.42 0.38
-0.02 0.44 0.38
-0.04 0.44 0.38
-0.06 0.44 0.38
-0.94 0.44 0.38
-0.96 0.44 0.38
-0.98 0.44 0.38
-0.02 0.46 0.38
-0.04 0.46 0.38
-0.06 0.46 0.38
-0.94 0.46 0.38
-0.96 0.46 0.38
-0.98 0.46 0.38
-0.02 0.48 0.38
-0.04 0.48 0.38
-0.06 0.48 0.38
-0.94 0.48 0.38
-0.96 0.48 0.38
-0.98 0.48 0.38
-0.02 0.5 0.38
-0.04 0.5 0.38
-0.06 0.5 0.38
-0.94 0.5 0.38
-0.96 0.5 0.38
-0.98 0.5 0.38
-0.02 0.52 0.38
-0.04 0.52 0.38
-0.06 0.52 0.38
-0.94 0.52 0.38
-0.96 0.52 0.38
-0.98 0.52 0.38
-0.02 0.54 0.38
-0.04 0.54 0.38
-0.06 0.54 0.38
-0.94 0.54 0.38
-0.96 0.54 0.38
-0.98 0.54 0.38
-0.02 0.56 0.38
-0.04 0.56 0.38
-0.06 0.56 0.38
-0.94 0.56 0.38
-0.96 0.56 0.38
-0.98 0.56 0.38
-0.04 0.58 0.38
-0.06 0.58 0.38
-0.94 0.58 0.38
-0.96 0.58 0.38
-0.04 0.6 0.38
-0.06 0.6 0.38
-0.94 0.6 0.38
-0.96 0.6 0.38
-0.04 0.62 0.38
-0.06 0.62 0.38
-0.08 0.62 0.38
-0.92 0.62 0.38
-0.94 0.62 0.38
-0.96 0.62 0.38
-0.04 0.64 0.38
-0.06 0.64 0.38
-0.08 0.64 0.38
-0.92 0.64 0.38
-0.94 0.64 0.38
-0.96 0.64 0.38
-0.06 0.66 0.38
-0.08 0.66 0.38
-0.92 0.66 0.38
-0.94 0.66 0.38
-0.06 0.68 0.38
-0.08 0.68 0.38
-0.1 0.68 0.38
-0.9 0.68 0.38
-0.92 0.68 0.38
-0.94 0.68 0.38
-0.06 0.7 0.38
-0.08 0.7 0.38
-0.1 0.7 0.38
-0.9 0.7 0.38
-0.92 0.7 0.38
-0.94 0.7 0.38
-0.08 0.72 0.38
-0.1 0.72 0.38
-0.12 0.72 0.38
-0.88 0.72 0.38
-0.9 0.72 0.38
-0.92 0.72 0.38
-0.08 0.74 0.38
-0.1 0.74 0.38
-0.12 0.74 0.38
-0.88 0.74 0.38
-0.9 0.74 0.38
-0.92 0.74 0.38
-0.1 0.76 0.38
-0.12 0.76 0.38
-0.14 0.76 0.38
-0.86 0.76 0.38
-0.88 0.76 0.38
-0.9 0.76 0.38
-0.12 0.78 0.38
-0.14 0.78 0.38
-0.16 0.78 0.38
-0.84 0.78 0.38
-0.86 0.78 0.38
-0.88 0.78 0.38
-0.12 0.8 0.38
-0.14 0.8 0.38
-0.16 0.8 0.38
-0.18 0.8 0.38
-0.82 0.8 0.38
-0.84 0.8 0.38
-0.86 0.8 0.38
-0.88 0.8 0.38
-0.14 0.82 0.38
-0.16 0.82 0.38
-0.18 0.82 0.38
-0.2 0.82 0.38
-0.8 0.82 0.38
-0.82 0.82 0.38
-0.84 0.82 0.38
-0.86 0.82 0.38
-0.16 0.84 0.38
-0.18 0.84 0.38
-0.2 0.84 0.38
-0.22 0.84 0.38
-0.78 0.84 0.38
-0.8 0.84 0.38
-0.82 0.84 0.38
-0.84 0.84 0.38
-0.18 0.86 0.38
-0.2 0.86 0.38
-0.22 0.86 0.38
-0.24 0.86 0.38
-0.76 0.86 0.38
-0.78 0.86 0.38
-0.8 0.86 0.38
-0.82 0.86 0.38
-0.2 0.88 0.38
-0.22 0.88 0.38
-0.24 0.88 0.38
-0.26 0.88 0.38
-0.28 0.88 0.38
-0.72 0.88 0.38
-0.74 0.88 0.38
-0.76 0.88 0.38
-0.78 0.88 0.38
-0.8 0.88 0.38
-0.24 0.9 0.38
-0.26 0.9 0.38
-0.28 0.9 0.38
-0.3 0.9 0.38
-0.32 0.9 0.38
-0.68 0.9 0.38
-0.7 0.9 0.38
-0.72 0.9 0.38
-0.74 0.9 0.38
-0.76 0.9 0.38
-0.26 0.92 0.38
-0.28 0.92 0.38
-0.3 0.92 0.38
-0.32 0.92 0.38
-0.34 0.92 0.38
-0.36 0.92 0.38
-0.38 0.92 0.38
-0.62 0.92 0.38
-0.64 0.92 0.38
-0.66 0.92 0.38
-0.68 0.92 0.38
-0.7 0.92 0.38
-0.72 0.92 0.38
-0.74 0.92 0.38
-0.3 0.94 0.38
-0.32 0.94 0.38
-0.34 0.94 0.38
-0.36 0.94 0.38
-0.38 0.94 0.38
-0.4 0.94 0.38
-0.42 0.94 0.38
-0.44 0.94 0.38
-0.46 0.94 0.38
-0.48 0.94 0.38
-0.5 0.94 0.38
-0.52 0.94 0.38
-0.54 0.94 0.38
-0.56 0.94 0.38
-0.58 0.94 0.38
-0.6 0.94 0.38
-0.62 0.94 0.38
-0.64 0.94 0.38
-0.66 0.94 0.38
-0.68 0.94 0.38
-0.7 0.94 0.38
-0.36 0.96 0.38
-0.38 0.96 0.38
-0.4 0.96 0.38
-0.42 0.96 0.38
-0.44 0.96 0.38
-0.46 0.96 0.38
-0.48 0.96 0.38
-0.5 0.96 0.38
-0.52 0.96 0.38
-0.54 0.96 0.38
-0.56 0.96 0.38
-0.58 0.96 0.38
-0.6 0.96 0.38
-0.62 0.96 0.38
-0.64 0.96 0.38
-0.44 0.98 0.38
-0.46 0.98 0.38
-0.48 0.98 0.38
-0.5 0.98 0.38
-0.52 0.98 0.38
-0.54 0.98 0.38
-0.56 0.98 0.38
-0.42 0.02 0.4
-0.44 0.02 0.4
-0.46 0.02 0.4
-0.48 0.02 0.4
-0.5 0.02 0.4
-0.52 0.02 0.4
-0.54 0.02 0.4
-0.56 0.02 0.4
-0.58 0.02 0.4
-0.34 0.04 0.4
-0.36 0.04 0.4
-0.38 0.04 0.4
-0.4 0.04 0.4
-0.42 0.04 0.4
-0.44 0.04 0.4
-0.46 0.04 0.4
-0.48 0.04 0.4
-0.5 0.04 0.4
-0.52 0.04 0.4
-0.54 0.04 0.4
-0.56 0.04 0.4
-0.58 0.04 0.4
-0.6 0.04 0.4
-0.62 0.04 0.4
-0.64 0.04 0.4
-0.66 0.04 0.4
-0.3 0.06 0.4
-0.32 0.06 0.4
-0.34 0.06 0.4
-0.36 0.06 0.4
-0.38 0.06 0.4
-0.4 0.06 0.4
-0.42 0.06 0.4
-0.44 0.06 0.4
-0.46 0.06 0.4
-0.48 0.06 0.4
-0.5 0.06 0.4
-0.52 0.06 0.4
-0.54 0.06 0.4
-0.56 0.06 0.4
-0.58 0.06 0.4
-0.6 0.06 0.4
-0.62 0.06 0.4
-0.64 0.06 0.4
-0.66 0.06 0.4
-0.68 0.06 0.4
-0.7 0.06 0.4
-0.26 0.08 0.4
-0.28 0.08 0.4
-0.3 0.08 0.4
-0.32 0.08 0.4
-0.34 0.08 0.4
-0.36 0.08 0.4
-0.64 0.08 0.4
-0.66 0.08 0.4
-0.68 0.08 0.4
-0.7 0.08 0.4
-0.72 0.08 0.4
-0.74 0.08 0.4
-0.22 0.1 0.4
-0.24 0.1 0.4
-0.26 0.1 0.4
-0.28 0.1 0.4
-0.3 0.1 0.4
-0.7 0.1 0.4
-0.72 0.1 0.4
-0.74 0.1 0.4
-0.76 0.1 0.4
-0.78 0.1 0.4
-0.2 0.12 0.4
-0.22 0.12 0.4
-0.24 0.12 0.4
-0.26 0.12 0.4
-0.28 0.12 0.4
-0.72 0.12 0.4
-0.74 0.12 0.4
-0.76 0.12 0.4
-0.78 0.12 0.4
-0.8 0.12 0.4
-0.18 0.14 0.4
-0.2 0.14 0.4
-0.22 0.14 0.4
-0.24 0.14 0.4
-0.76 0.14 0.4
-0.78 0.14 0.4
-0.8 0.14 0.4
-0.82 0.14 0.4
-0.16 0.16 0.4
-0.18 0.16 0.4
-0.2 0.16 0.4
-0.22 0.16 0.4
-0.78 0.16 0.4
-0.8 0.16 0.4
-0.82 0.16 0.4
-0.84 0.16 0.4
-0.14 0.18 0.4
-0.16 0.18 0.4
-0.18 0.18 0.4
-0.82 0.18 0.4
-0.84 0.18 0.4
-0.86 0.18 0.4
-0.12 0.2 0.4
-0.14 0.2 0.4
-0.16 0.2 0.4
-0.84 0.2 0.4
-0.86 0.2 0.4
-0.88 0.2 0.4
-0.1 0.22 0.4
-0.12 0.22 0.4
-0.14 0.22 0.4
-0.16 0.22 0.4
-0.84 0.22 0.4
-0.86 0.22 0.4
-0.88 0.22 0.4
-0.9 0.22 0.4
-0.1 0.24 0.4
-0.12 0.24 0.4
-0.14 0.24 0.4
-0.86 0.24 0.4
-0.88 0.24 0.4
-0.9 0.24 0.4
-0.08 0.26 0.4
-0.1 0.26 0.4
-0.12 0.26 0.4
-0.88 0.26 0.4
-0.9 0.26 0.4
-0.92 0.26 0.4
-0.08 0.28 0.4
-0.1 0.28 0.4
-0.12 0.28 0.4
-0.88 0.28 0.4
-0.9 0.28 0.4
-0.92 0.28 0.4
-0.06 0.3 0.4
-0.08 0.3 0.4
-0.1 0.3 0.4
-0.9 0.3 0.4
-0.92 0.3 0.4
-0.94 0.3 0.4
-0.06 0.32 0.4
-0.08 0.32 0.4
-0.92 0.32 0.4
-0.94 0.32 0.4
-0.04 0.34 0.4
-0.06 0.34 0.4
-0.08 0.34 0.4
-0.92 0.34 0.4
-0.94 0.34 0.4
-0.96 0.34 0.4
-0.04 0.36 0.4
-0.06 0.36 0.4
-0.08 0.36 0.4
-0.92 0.36 0.4
-0.94 0.36 0.4
-0.96 0.36 0.4
-0.04 0.38 0.4
-0.06 0.38 0.4
-0.94 0.38 0.4
-0.96 0.38 0.4
-0.04 0.4 0.4
-0.06 0.4 0.4
-0.94 0.4 0.4
-0.96 0.4 0.4
-0.02 0.42 0.4
-0.04 0.42 0.4
-0.06 0.42 0.4
-0.94 0.42 0.4
-0.96 0.42 0.4
-0.98 0.42 0.4
-0.02 0.44 0.4
-0.04 0.44 0.4
-0.06 0.44 0.4
-0.94 0.44 0.4
-0.96 0.44 0.4
-0.98 0.44 0.4
-0.02 0.46 0.4
-0.04 0.46 0.4
-0.06 0.46 0.4
-0.94 0.46 0.4
-0.96 0.46 0.4
-0.98 0.46 0.4
-0.02 0.48 0.4
-0.04 0.48 0.4
-0.06 0.48 0.4
-0.94 0.48 0.4
-0.96 0.48 0.4
-0.98 0.48 0.4
-0.02 0.5 0.4
-0.04 0.5 0.4
-0.06 0.5 0.4
-0.94 0.5 0.4
-0.96 0.5 0.4
-0.98 0.5 0.4
-0.02 0.52 0.4
-0.04 0.52 0.4
-0.06 0.52 0.4
-0.94 0.52 0.4
-0.96 0.52 0.4
-0.98 0.52 0.4
-0.02 0.54 0.4
-0.04 0.54 0.4
-0.06 0.54 0.4
-0.94 0.54 0.4
-0.96 0.54 0.4
-0.98 0.54 0.4
-0.02 0.56 0.4
-0.04 0.56 0.4
-0.06 0.56 0.4
-0.94 0.56 0.4
-0.96 0.56 0.4
-0.98 0.56 0.4
-0.02 0.58 0.4
-0.04 0.58 0.4
-0.06 0.58 0.4
-0.94 0.58 0.4
-0.96 0.58 0.4
-0.98 0.58 0.4
-0.04 0.6 0.4
-0.06 0.6 0.4
-0.94 0.6 0.4
-0.96 0.6 0.4
-0.04 0.62 0.4
-0.06 0.62 0.4
-0.94 0.62 0.4
-0.96 0.62 0.4
-0.04 0.64 0.4
-0.06 0.64 0.4
-0.08 0.64 0.4
-0.92 0.64 0.4
-0.94 0.64 0.4
-0.96 0.64 0.4
-0.04 0.66 0.4
-0.06 0.66 0.4
-0.08 0.66 0.4
-0.92 0.66 0.4
-0.94 0.66 0.4
-0.96 0.66 0.4
-0.06 0.68 0.4
-0.08 0.68 0.4
-0.92 0.68 0.4
-0.94 0.68 0.4
-0.06 0.7 0.4
-0.08 0.7 0.4
-0.1 0.7 0.4
-0.9 0.7 0.4
-0.92 0.7 0.4
-0.94 0.7 0.4
-0.08 0.72 0.4
-0.1 0.72 0.4
-0.12 0.72 0.4
-0.88 0.72 0.4
-0.9 0.72 0.4
-0.92 0.72 0.4
-0.08 0.74 0.4
-0.1 0.74 0.4
-0.12 0.74 0.4
-0.88 0.74 0.4
-0.9 0.74 0.4
-0.92 0.74 0.4
-0.1 0.76 0.4
-0.12 0.76 0.4
-0.14 0.76 0.4
-0.86 0.76 0.4
-0.88 0.76 0.4
-0.9 0.76 0.4
-0.1 0.78 0.4
-0.12 0.78 0.4
-0.14 0.78 0.4
-0.16 0.78 0.4
-0.84 0.78 0.4
-0.86 0.78 0.4
-0.88 0.78 0.4
-0.9 0.78 0.4
-0.12 0.8 0.4
-0.14 0.8 0.4
-0.16 0.8 0.4
-0.84 0.8 0.4
-0.86 0.8 0.4
-0.88 0.8 0.4
-0.14 0.82 0.4
-0.16 0.82 0.4
-0.18 0.82 0.4
-0.82 0.82 0.4
-0.84 0.82 0.4
-0.86 0.82 0.4
-0.16 0.84 0.4
-0.18 0.84 0.4
-0.2 0.84 0.4
-0.22 0.84 0.4
-0.78 0.84 0.4
-0.8 0.84 0.4
-0.82 0.84 0.4
-0.84 0.84 0.4
-0.18 0.86 0.4
-0.2 0.86 0.4
-0.22 0.86 0.4
-0.24 0.86 0.4
-0.76 0.86 0.4
-0.78 0.86 0.4
-0.8 0.86 0.4
-0.82 0.86 0.4
-0.2 0.88 0.4
-0.22 0.88 0.4
-0.24 0.88 0.4
-0.26 0.88 0.4
-0.28 0.88 0.4
-0.72 0.88 0.4
-0.74 0.88 0.4
-0.76 0.88 0.4
-0.78 0.88 0.4
-0.8 0.88 0.4
-0.22 0.9 0.4
-0.24 0.9 0.4
-0.26 0.9 0.4
-0.28 0.9 0.4
-0.3 0.9 0.4
-0.7 0.9 0.4
-0.72 0.9 0.4
-0.74 0.9 0.4
-0.76 0.9 0.4
-0.78 0.9 0.4
-0.26 0.92 0.4
-0.28 0.92 0.4
-0.3 0.92 0.4
-0.32 0.92 0.4
-0.34 0.92 0.4
-0.36 0.92 0.4
-0.64 0.92 0.4
-0.66 0.92 0.4
-0.68 0.92 0.4
-0.7 0.92 0.4
-0.72 0.92 0.4
-0.74 0.92 0.4
-0.3 0.94 0.4
-0.32 0.94 0.4
-0.34 0.94 0.4
-0.36 0.94 0.4
-0.38 0.94 0.4
-0.4 0.94 0.4
-0.42 0.94 0.4
-0.44 0.94 0.4
-0.46 0.94 0.4
-0.48 0.94 0.4
-0.5 0.94 0.4
-0.52 0.94 0.4
-0.54 0.94 0.4
-0.56 0.94 0.4
-0.58 0.94 0.4
-0.6 0.94 0.4
-0.62 0.94 0.4
-0.64 0.94 0.4
-0.66 0.94 0.4
-0.68 0.94 0.4
-0.7 0.94 0.4
-0.34 0.96 0.4
-0.36 0.96 0.4
-0.38 0.96 0.4
-0.4 0.96 0.4
-0.42 0.96 0.4
-0.44 0.96 0.4
-0.46 0.96 0.4
-0.48 0.96 0.4
-0.5 0.96 0.4
-0.52 0.96 0.4
-0.54 0.96 0.4
-0.56 0.96 0.4
-0.58 0.96 0.4
-0.6 0.96 0.4
-0.62 0.96 0.4
-0.64 0.96 0.4
-0.66 0.96 0.4
-0.42 0.98 0.4
-0.44 0.98 0.4
-0.46 0.98 0.4
-0.48 0.98 0.4
-0.5 0.98 0.4
-0.52 0.98 0.4
-0.54 0.98 0.4
-0.56 0.98 0.4
-0.58 0.98 0.4
-0.4 0.02 0.42
-0.42 0.02 0.42
-0.44 0.02 0.42
-0.46 0.02 0.42
-0.48 0.02 0.42
-0.5 0.02 0.42
-0.52 0.02 0.42
-0.54 0.02 0.42
-0.56 0.02 0.42
-0.58 0.02 0.42
-0.6 0.02 0.42
-0.34 0.04 0.42
-0.36 0.04 0.42
-0.38 0.04 0.42
-0.4 0.04 0.42
-0.42 0.04 0.42
-0.44 0.04 0.42
-0.46 0.04 0.42
-0.48 0.04 0.42
-0.5 0.04 0.42
-0.52 0.04 0.42
-0.54 0.04 0.42
-0.56 0.04 0.42
-0.58 0.04 0.42
-0.6 0.04 0.42
-0.62 0.04 0.42
-0.64 0.04 0.42
-0.66 0.04 0.42
-0.28 0.06 0.42
-0.3 0.06 0.42
-0.32 0.06 0.42
-0.34 0.06 0.42
-0.36 0.06 0.42
-0.38 0.06 0.42
-0.4 0.06 0.42
-0.42 0.06 0.42
-0.44 0.06 0.42
-0.56 0.06 0.42
-0.58 0.06 0.42
-0.6 0.06 0.42
-0.62 0.06 0.42
-0.64 0.06 0.42
-0.66 0.06 0.42
-0.68 0.06 0.42
-0.7 0.06 0.42
-0.72 0.06 0.42
-0.26 0.08 0.42
-0.28 0.08 0.42
-0.3 0.08 0.42
-0.32 0.08 0.42
-0.34 0.08 0.42
-0.66 0.08 0.42
-0.68 0.08 0.42
-0.7 0.08 0.42
-0.72 0.08 0.42
-0.74 0.08 0.42
-0.22 0.1 0.42
-0.24 0.1 0.42
-0.26 0.1 0.42
-0.28 0.1 0.42
-0.3 0.1 0.42
-0.7 0.1 0.42
-0.72 0.1 0.42
-0.74 0.1 0.42
-0.76 0.1 0.42
-0.78 0.1 0.42
-0.2 0.12 0.42
-0.22 0.12 0.42
-0.24 0.12 0.42
-0.26 0.12 0.42
-0.74 0.12 0.42
-0.76 0.12 0.42
-0.78 0.12 0.42
-0.8 0.12 0.42
-0.18 0.14 0.42
-0.2 0.14 0.42
-0.22 0.14 0.42
-0.24 0.14 0.42
-0.76 0.14 0.42
-0.78 0.14 0.42
-0.8 0.14 0.42
-0.82 0.14 0.42
-0.16 0.16 0.42
-0.18 0.16 0.42
-0.2 0.16 0.42
-0.8 0.16 0.42
-0.82 0.16 0.42
-0.84 0.16 0.42
-0.14 0.18 0.42
-0.16 0.18 0.42
-0.18 0.18 0.42
-0.82 0.18 0.42
-0.84 0.18 0.42
-0.86 0.18 0.42
-0.12 0.2 0.42
-0.14 0.2 0.42
-0.16 0.2 0.42
-0.84 0.2 0.42
-0.86 0.2 0.42
-0.88 0.2 0.42
-0.1 0.22 0.42
-0.12 0.22 0.42
-0.14 0.22 0.42
-0.86 0.22 0.42
-0.88 0.22 0.42
-0.9 0.22 0.42
-0.1 0.24 0.42
-0.12 0.24 0.42
-0.14 0.24 0.42
-0.86 0.24 0.42
-0.88 0.24 0.42
-0.9 0.24 0.42
-0.08 0.26 0.42
-0.1 0.26 0.42
-0.12 0.26 0.42
-0.88 0.26 0.42
-0.9 0.26 0.42
-0.92 0.26 0.42
-0.06 0.28 0.42
-0.08 0.28 0.42
-0.1 0.28 0.42
-0.9 0.28 0.42
-0.92 0.28 0.42
-0.94 0.28 0.42
-0.06 0.3 0.42
-0.08 0.3 0.42
-0.1 0.3 0.42
-0.9 0.3 0.42
-0.92 0.3 0.42
-0.94 0.3 0.42
-0.06 0.32 0.42
-0.08 0.32 0.42
-0.92 0.32 0.42
-0.94 0.32 0.42
-0.04 0.34 0.42
-0.06 0.34 0.42
-0.08 0.34 0.42
-0.92 0.34 0.42
-0.94 0.34 0.42
-0.96 0.34 0.42
-0.04 0.36 0.42
-0.06 0.36 0.42
-0.94 0.36 0.42
-0.96 0.36 0.42
-0.04 0.38 0.42
-0.06 0.38 0.42
-0.94 0.38 0.42
-0.96 0.38 0.42
-0.02 0.4 0.42
-0.04 0.4 0.42
-0.06 0.4 0.42
-0.94 0.4 0.42
-0.96 0.4 0.42
-0.98 0.4 0.42
-0.02 0.42 0.42
-0.04 0.42 0.42
-0.06 0.42 0.42
-0.94 0.42 0.42
-0.96 0.42 0.42
-0.98 0.42 0.42
-0.02 0.44 0.42
-0.04 0.44 0.42
-0.06 0.44 0.42
-0.94 0.44 0.42
-0.96 0.44 0.42
-0.98 0.44 0.42
-0.02 0.46 0.42
-0.04 0.46 0.42
-0.96 0.46 0.42
-0.98 0.46 0.42
-0.02 0.48 0.42
-0.04 0.48 0.42
-0.96 0.48 0.42
-0.98 0.48 0.42
-0.02 0.5 0.42
-0.04 0.5 0.42
-0.96 0.5 0.42
-0.98 0.5 0.42
-0.02 0.52 0.42
-0.04 0.52 0.42
-0.96 0.52 0.42
-0.98 0.52 0.42
-0.02 0.54 0.42
-0.04 0.54 0.42
-0.96 0.54 0.42
-0.98 0.54 0.42
-0.02 0.56 0.42
-0.04 0.56 0.42
-0.06 0.56 0.42
-0.94 0.56 0.42
-0.96 0.56 0.42
-0.98 0.56 0.42
-0.02 0.58 0.42
-0.04 0.58 0.42
-0.06 0.58 0.42
-0.94 0.58 0.42
-0.96 0.58 0.42
-0.98 0.58 0.42
-0.02 0.6 0.42
-0.04 0.6 0.42
-0.06 0.6 0.42
-0.94 0.6 0.42
-0.96 0.6 0.42
-0.98 0.6 0.42
-0.04 0.62 0.42
-0.06 0.62 0.42
-0.94 0.62 0.42
-0.96 0.62 0.42
-0.04 0.64 0.42
-0.06 0.64 0.42
-0.94 0.64 0.42
-0.96 0.64 0.42
-0.04 0.66 0.42
-0.06 0.66 0.42
-0.08 0.66 0.42
-0.92 0.66 0.42
-0.94 0.66 0.42
-0.96 0.66 0.42
-0.06 0.68 0.42
-0.08 0.68 0.42
-0.92 0.68 0.42
-0.94 0.68 0.42
-0.06 0.7 0.42
-0.08 0.7 0.42
-0.1 0.7 0.42
-0.9 0.7 0.42
-0.92 0.7 0.42
-0.94 0.7 0.42
-0.06 0.72 0.42
-0.08 0.72 0.42
-0.1 0.72 0.42
-0.9 0.72 0.42
-0.92 0.72 0.42
-0.94 0.72 0.42
-0.08 0.74 0.42
-0.1 0.74 0.42
-0.12 0.74 0.42
-0.88 0.74 0.42
-0.9 0.74 0.42
-0.92 0.74 0.42
-0.1 0.76 0.42
-0.12 0.76 0.42
-0.14 0.76 0.42
-0.86 0.76 0.42
-0.88 0.76 0.42
-0.9 0.76 0.42
-0.1 0.78 0.42
-0.12 0.78 0.42
-0.14 0.78 0.42
-0.86 0.78 0.42
-0.88 0.78 0.42
-0.9 0.78 0.42
-0.12 0.8 0.42
-0.14 0.8 0.42
-0.16 0.8 0.42
-0.84 0.8 0.42
-0.86 0.8 0.42
-0.88 0.8 0.42
-0.14 0.82 0.42
-0.16 0.82 0.42
-0.18 0.82 0.42
-0.82 0.82 0.42
-0.84 0.82 0.42
-0.86 0.82 0.42
-0.16 0.84 0.42
-0.18 0.84 0.42
-0.2 0.84 0.42
-0.8 0.84 0.42
-0.82 0.84 0.42
-0.84 0.84 0.42
-0.18 0.86 0.42
-0.2 0.86 0.42
-0.22 0.86 0.42
-0.24 0.86 0.42
-0.76 0.86 0.42
-0.78 0.86 0.42
-0.8 0.86 0.42
-0.82 0.86 0.42
-0.2 0.88 0.42
-0.22 0.88 0.42
-0.24 0.88 0.42
-0.26 0.88 0.42
-0.74 0.88 0.42
-0.76 0.88 0.42
-0.78 0.88 0.42
-0.8 0.88 0.42
-0.22 0.9 0.42
-0.24 0.9 0.42
-0.26 0.9 0.42
-0.28 0.9 0.42
-0.3 0.9 0.42
-0.7 0.9 0.42
-0.72 0.9 0.42
-0.74 0.9 0.42
-0.76 0.9 0.42
-0.78 0.9 0.42
-0.26 0.92 0.42
-0.28 0.92 0.42
-0.3 0.92 0.42
-0.32 0.92 0.42
-0.34 0.92 0.42
-0.66 0.92 0.42
-0.68 0.92 0.42
-0.7 0.92 0.42
-0.72 0.92 0.42
-0.74 0.92 0.42
-0.28 0.94 0.42
-0.3 0.94 0.42
-0.32 0.94 0.42
-0.34 0.94 0.42
-0.36 0.94 0.42
-0.38 0.94 0.42
-0.4 0.94 0.42
-0.42 0.94 0.42
-0.44 0.94 0.42
-0.56 0.94 0.42
-0.58 0.94 0.42
-0.6 0.94 0.42
-0.62 0.94 0.42
-0.64 0.94 0.42
-0.66 0.94 0.42
-0.68 0.94 0.42
-0.7 0.94 0.42
-0.72 0.94 0.42
-0.34 0.96 0.42
-0.36 0.96 0.42
-0.38 0.96 0.42
-0.4 0.96 0.42
-0.42 0.96 0.42
-0.44 0.96 0.42
-0.46 0.96 0.42
-0.48 0.96 0.42
-0.5 0.96 0.42
-0.52 0.96 0.42
-0.54 0.96 0.42
-0.56 0.96 0.42
-0.58 0.96 0.42
-0.6 0.96 0.42
-0.62 0.96 0.42
-0.64 0.96 0.42
-0.66 0.96 0.42
-0.4 0.98 0.42
-0.42 0.98 0.42
-0.44 0.98 0.42
-0.46 0.98 0.42
-0.48 0.98 0.42
-0.5 0.98 0.42
-0.52 0.98 0.42
-0.54 0.98 0.42
-0.56 0.98 0.42
-0.58 0.98 0.42
-0.6 0.98 0.42
-0.38 0.02 0.44
-0.4 0.02 0.44
-0.42 0.02 0.44
-0.44 0.02 0.44
-0.46 0.02 0.44
-0.48 0.02 0.44
-0.5 0.02 0.44
-0.52 0.02 0.44
-0.54 0.02 0.44
-0.56 0.02 0.44
-0.58 0.02 0.44
-0.6 0.02 0.44
-0.62 0.02 0.44
-0.32 0.04 0.44
-0.34 0.04 0.44
-0.36 0.04 0.44
-0.38 0.04 0.44
-0.4 0.04 0.44
-0.42 0.04 0.44
-0.44 0.04 0.44
-0.46 0.04 0.44
-0.48 0.04 0.44
-0.5 0.04 0.44
-0.52 0.04 0.44
-0.54 0.04 0.44
-0.56 0.04 0.44
-0.58 0.04 0.44
-0.6 0.04 0.44
-0.62 0.04 0.44
-0.64 0.04 0.44
-0.66 0.04 0.44
-0.68 0.04 0.44
-0.28 0.06 0.44
-0.3 0.06 0.44
-0.32 0.06 0.44
-0.34 0.06 0.44
-0.36 0.06 0.44
-0.38 0.06 0.44
-0.4 0.06 0.44
-0.42 0.06 0.44
-0.58 0.06 0.44
-0.6 0.06 0.44
-0.62 0.06 0.44
-0.64 0.06 0.44
-0.66 0.06 0.44
-0.68 0.06 0.44
-0.7 0.06 0.44
-0.72 0.06 0.44
-0.24 0.08 0.44
-0.26 0.08 0.44
-0.28 0.08 0.44
-0.3 0.08 0.44
-0.32 0.08 0.44
-0.34 0.08 0.44
-0.66 0.08 0.44
-0.68 0.08 0.44
-0.7 0.08 0.44
-0.72 0.08 0.44
-0.74 0.08 0.44
-0.76 0.08 0.44
-0.22 0.1 0.44
-0.24 0.1 0.44
-0.26 0.1 0.44
-0.28 0.1 0.44
-0.3 0.1 0.44
-0.7 0.1 0.44
-0.72 0.1 0.44
-0.74 0.1 0.44
-0.76 0.1 0.44
-0.78 0.1 0.44
-0.2 0.12 0.44
-0.22 0.12 0.44
-0.24 0.12 0.44
-0.26 0.12 0.44
-0.74 0.12 0.44
-0.76 0.12 0.44
-0.78 0.12 0.44
-0.8 0.12 0.44
-0.16 0.14 0.44
-0.18 0.14 0.44
-0.2 0.14 0.44
-0.22 0.14 0.44
-0.78 0.14 0.44
-0.8 0.14 0.44
-0.82 0.14 0.44
-0.84 0.14 0.44
-0.14 0.16 0.44
-0.16 0.16 0.44
-0.18 0.16 0.44
-0.2 0.16 0.44
-0.8 0.16 0.44
-0.82 0.16 0.44
-0.84 0.16 0.44
-0.86 0.16 0.44
-0.14 0.18 0.44
-0.16 0.18 0.44
-0.18 0.18 0.44
-0.82 0.18 0.44
-0.84 0.18 0.44
-0.86 0.18 0.44
-0.12 0.2 0.44
-0.14 0.2 0.44
-0.16 0.2 0.44
-0.84 0.2 0.44
-0.86 0.2 0.44
-0.88 0.2 0.44
-0.1 0.22 0.44
-0.12 0.22 0.44
-0.14 0.22 0.44
-0.86 0.22 0.44
-0.88 0.22 0.44
-0.9 0.22 0.44
-0.08 0.24 0.44
-0.1 0.24 0.44
-0.12 0.24 0.44
-0.88 0.24 0.44
-0.9 0.24 0.44
-0.92 0.24 0.44
-0.08 0.26 0.44
-0.1 0.26 0.44
-0.12 0.26 0.44
-0.88 0.26 0.44
-0.9 0.26 0.44
-0.92 0.26 0.44
-0.06 0.28 0.44
-0.08 0.28 0.44
-0.1 0.28 0.44
-0.9 0.28 0.44
-0.92 0.28 0.44
-0.94 0.28 0.44
-0.06 0.3 0.44
-0.08 0.3 0.44
-0.1 0.3 0.44
-0.9 0.3 0.44
-0.92 0.3 0.44
-0.94 0.3 0.44
-0.04 0.32 0.44
-0.06 0.32 0.44
-0.08 0.32 0.44
-0.92 0.32 0.44
-0.94 0.32 0.44
-0.96 0.32 0.44
-0.04 0.34 0.44
-0.06 0.34 0.44
-0.08 0.34 0.44
-0.92 0.34 0.44
-0.94 0.34 0.44
-0.96 0.34 0.44
-0.04 0.36 0.44
-0.06 0.36 0.44
-0.94 0.36 0.44
-0.96 0.36 0.44
-0.02 0.38 0.44
-0.04 0.38 0.44
-0.06 0.38 0.44
-0.94 0.38 0.44
-0.96 0.38 0.44
-0.98 0.38 0.44
-0.02 0.4 0.44
-0.04 0.4 0.44
-0.06 0.4 0.44
-0.94 0.4 0.44
-0.96 0.4 0.44
-0.98 0.4 0.44
-0.02 0.42 0.44
-0.04 0.42 0.44
-0.06 0.42 0.44
-0.94 0.42 0.44
-0.96 0.42 0.44
-0.98 0.42 0.44
-0.02 0.44 0.44
-0.04 0.44 0.44
-0.96 0.44 0.44
-0.98 0.44 0.44
-0.02 0.46 0.44
-0.04 0.46 0.44
-0.96 0.46 0.44
-0.98 0.46 0.44
-0.02 0.48 0.44
-0.04 0.48 0.44
-0.96 0.48 0.44
-0.98 0.48 0.44
-0.02 0.5 0.44
-0.04 0.5 0.44
-0.96 0.5 0.44
-0.98 0.5 0.44
-0.02 0.52 0.44
-0.04 0.52 0.44
-0.96 0.52 0.44
-0.98 0.52 0.44
-0.02 0.54 0.44
-0.04 0.54 0.44
-0.96 0.54 0.44
-0.98 0.54 0.44
-0.02 0.56 0.44
-0.04 0.56 0.44
-0.96 0.56 0.44
-0.98 0.56 0.44
-0.02 0.58 0.44
-0.04 0.58 0.44
-0.06 0.58 0.44
-0.94 0.58 0.44
-0.96 0.58 0.44
-0.98 0.58 0.44
-0.02 0.6 0.44
-0.04 0.6 0.44
-0.06 0.6 0.44
-0.94 0.6 0.44
-0.96 0.6 0.44
-0.98 0.6 0.44
-0.02 0.62 0.44
-0.04 0.62 0.44
-0.06 0.62 0.44
-0.94 0.62 0.44
-0.96 0.62 0.44
-0.98 0.62 0.44
-0.04 0.64 0.44
-0.06 0.64 0.44
-0.94 0.64 0.44
-0.96 0.64 0.44
-0.04 0.66 0.44
-0.06 0.66 0.44
-0.08 0.66 0.44
-0.92 0.66 0.44
-0.94 0.66 0.44
-0.96 0.66 0.44
-0.04 0.68 0.44
-0.06 0.68 0.44
-0.08 0.68 0.44
-0.92 0.68 0.44
-0.94 0.68 0.44
-0.96 0.68 0.44
-0.06 0.7 0.44
-0.08 0.7 0.44
-0.1 0.7 0.44
-0.9 0.7 0.44
-0.92 0.7 0.44
-0.94 0.7 0.44
-0.06 0.72 0.44
-0.08 0.72 0.44
-0.1 0.72 0.44
-0.9 0.72 0.44
-0.92 0.72 0.44
-0.94 0.72 0.44
-0.08 0.74 0.44
-0.1 0.74 0.44
-0.12 0.74 0.44
-0.88 0.74 0.44
-0.9 0.74 0.44
-0.92 0.74 0.44
-0.08 0.76 0.44
-0.1 0.76 0.44
-0.12 0.76 0.44
-0.88 0.76 0.44
-0.9 0.76 0.44
-0.92 0.76 0.44
-0.1 0.78 0.44
-0.12 0.78 0.44
-0.14 0.78 0.44
-0.86 0.78 0.44
-0.88 0.78 0.44
-0.9 0.78 0.44
-0.12 0.8 0.44
-0.14 0.8 0.44
-0.16 0.8 0.44
-0.84 0.8 0.44
-0.86 0.8 0.44
-0.88 0.8 0.44
-0.14 0.82 0.44
-0.16 0.82 0.44
-0.18 0.82 0.44
-0.82 0.82 0.44
-0.84 0.82 0.44
-0.86 0.82 0.44
-0.14 0.84 0.44
-0.16 0.84 0.44
-0.18 0.84 0.44
-0.2 0.84 0.44
-0.8 0.84 0.44
-0.82 0.84 0.44
-0.84 0.84 0.44
-0.86 0.84 0.44
-0.16 0.86 0.44
-0.18 0.86 0.44
-0.2 0.86 0.44
-0.22 0.86 0.44
-0.78 0.86 0.44
-0.8 0.86 0.44
-0.82 0.86 0.44
-0.84 0.86 0.44
-0.2 0.88 0.44
-0.22 0.88 0.44
-0.24 0.88 0.44
-0.26 0.88 0.44
-0.74 0.88 0.44
-0.76 0.88 0.44
-0.78 0.88 0.44
-0.8 0.88 0.44
-0.22 0.9 0.44
-0.24 0.9 0.44
-0.26 0.9 0.44
-0.28 0.9 0.44
-0.3 0.9 0.44
-0.7 0.9 0.44
-0.72 0.9 0.44
-0.74 0.9 0.44
-0.76 0.9 0.44
-0.78 0.9 0.44
-0.24 0.92 0.44
-0.26 0.92 0.44
-0.28 0.92 0.44
-0.3 0.92 0.44
-0.32 0.92 0.44
-0.34 0.92 0.44
-0.66 0.92 0.44
-0.68 0.92 0.44
-0.7 0.92 0.44
-0.72 0.92 0.44
-0.74 0.92 0.44
-0.76 0.92 0.44
-0.28 0.94 0.44
-0.3 0.94 0.44
-0.32 0.94 0.44
-0.34 0.94 0.44
-0.36 0.94 0.44
-0.38 0.94 0.44
-0.4 0.94 0.44
-0.42 0.94 0.44
-0.58 0.94 0.44
-0.6 0.94 0.44
-0.62 0.94 0.44
-0.64 0.94 0.44
-0.66 0.94 0.44
-0.68 0.94 0.44
-0.7 0.94 0.44
-0.72 0.94 0.44
-0.32 0.96 0.44
-0.34 0.96 0.44
-0.36 0.96 0.44
-0.38 0.96 0.44
-0.4 0.96 0.44
-0.42 0.96 0.44
-0.44 0.96 0.44
-0.46 0.96 0.44
-0.48 0.96 0.44
-0.5 0.96 0.44
-0.52 0.96 0.44
-0.54 0.96 0.44
-0.56 0.96 0.44
-0.58 0.96 0.44
-0.6 0.96 0.44
-0.62 0.96 0.44
-0.64 0.96 0.44
-0.66 0.96 0.44
-0.68 0.96 0.44
-0.38 0.98 0.44
-0.4 0.98 0.44
-0.42 0.98 0.44
-0.44 0.98 0.44
-0.46 0.98 0.44
-0.48 0.98 0.44
-0.5 0.98 0.44
-0.52 0.98 0.44
-0.54 0.98 0.44
-0.56 0.98 0.44
-0.58 0.98 0.44
-0.6 0.98 0.44
-0.62 0.98 0.44
-0.38 0.02 0.46
-0.4 0.02 0.46
-0.42 0.02 0.46
-0.44 0.02 0.46
-0.46 0.02 0.46
-0.48 0.02 0.46
-0.5 0.02 0.46
-0.52 0.02 0.46
-0.54 0.02 0.46
-0.56 0.02 0.46
-0.58 0.02 0.46
-0.6 0.02 0.46
-0.62 0.02 0.46
-0.32 0.04 0.46
-0.34 0.04 0.46
-0.36 0.04 0.46
-0.38 0.04 0.46
-0.4 0.04 0.46
-0.42 0.04 0.46
-0.44 0.04 0.46
-0.46 0.04 0.46
-0.48 0.04 0.46
-0.5 0.04 0.46
-0.52 0.04 0.46
-0.54 0.04 0.46
-0.56 0.04 0.46
-0.58 0.04 0.46
-0.6 0.04 0.46
-0.62 0.04 0.46
-0.64 0.04 0.46
-0.66 0.04 0.46
-0.68 0.04 0.46
-0.28 0.06 0.46
-0.3 0.06 0.46
-0.32 0.06 0.46
-0.34 0.06 0.46
-0.36 0.06 0.46
-0.38 0.06 0.46
-0.4 0.06 0.46
-0.6 0.06 0.46
-0.62 0.06 0.46
-0.64 0.06 0.46
-0.66 0.06 0.46
-0.68 0.06 0.46
-0.7 0.06 0.46
-0.72 0.06 0.46
-0.24 0.08 0.46
-0.26 0.08 0.46
-0.28 0.08 0.46
-0.3 0.08 0.46
-0.32 0.08 0.46
-0.34 0.08 0.46
-0.66 0.08 0.46
-0.68 0.08 0.46
-0.7 0.08 0.46
-0.72 0.08 0.46
-0.74 0.08 0.46
-0.76 0.08 0.46
-0.22 0.1 0.46
-0.24 0.1 0.46
-0.26 0.1 0.46
-0.28 0.1 0.46
-0.72 0.1 0.46
-0.74 0.1 0.46
-0.76 0.1 0.46
-0.78 0.1 0.46
-0.18 0.12 0.46
-0.2 0.12 0.46
-0.22 0.12 0.46
-0.24 0.12 0.46
-0.26 0.12 0.46
-0.74 0.12 0.46
-0.76 0.12 0.46
-0.78 0.12 0.46
-0.8 0.12 0.46
-0.82 0.12 0.46
-0.16 0.14 0.46
-0.18 0.14 0.46
-0.2 0.14 0.46
-0.22 0.14 0.46
-0.78 0.14 0.46
-0.8 0.14 0.46
-0.82 0.14 0.46
-0.84 0.14 0.46
-0.14 0.16 0.46
-0.16 0.16 0.46
-0.18 0.16 0.46
-0.2 0.16 0.46
-0.8 0.16 0.46
-0.82 0.16 0.46
-0.84 0.16 0.46
-0.86 0.16 0.46
-0.12 0.18 0.46
-0.14 0.18 0.46
-0.16 0.18 0.46
-0.18 0.18 0.46
-0.82 0.18 0.46
-0.84 0.18 0.46
-0.86 0.18 0.46
-0.88 0.18 0.46
-0.12 0.2 0.46
-0.14 0.2 0.46
-0.16 0.2 0.46
-0.84 0.2 0.46
-0.86 0.2 0.46
-0.88 0.2 0.46
-0.1 0.22 0.46
-0.12 0.22 0.46
-0.14 0.22 0.46
-0.86 0.22 0.46
-0.88 0.22 0.46
-0.9 0.22 0.46
-0.08 0.24 0.46
-0.1 0.24 0.46
-0.12 0.24 0.46
-0.88 0.24 0.46
-0.9 0.24 0.46
-0.92 0.24 0.46
-0.08 0.26 0.46
-0.1 0.26 0.46
-0.12 0.26 0.46
-0.88 0.26 0.46
-0.9 0.26 0.46
-0.92 0.26 0.46
-0.06 0.28 0.46
-0.08 0.28 0.46
-0.1 0.28 0.46
-0.9 0.28 0.46
-0.92 0.28 0.46
-0.94 0.28 0.46
-0.06 0.3 0.46
-0.08 0.3 0.46
-0.92 0.3 0.46
-0.94 0.3 0.46
-0.04 0.32 0.46
-0.06 0.32 0.46
-0.08 0.32 0.46
-0.92 0.32 0.46
-0.94 0.32 0.46
-0.96 0.32 0.46
-0.04 0.34 0.46
-0.06 0.34 0.46
-0.08 0.34 0.46
-0.92 0.34 0.46
-0.94 0.34 0.46
-0.96 0.34 0.46
-0.04 0.36 0.46
-0.06 0.36 0.46
-0.94 0.36 0.46
-0.96 0.36 0.46
-0.02 0.38 0.46
-0.04 0.38 0.46
-0.06 0.38 0.46
-0.94 0.38 0.46
-0.96 0.38 0.46
-0.98 0.38 0.46
-0.02 0.4 0.46
-0.04 0.4 0.46
-0.06 0.4 0.46
-0.94 0.4 0.46
-0.96 0.4 0.46
-0.98 0.4 0.46
-0.02 0.42 0.46
-0.04 0.42 0.46
-0.96 0.42 0.46
-0.98 0.42 0.46
-0.02 0.44 0.46
-0.04 0.44 0.46
-0.96 0.44 0.46
-0.98 0.44 0.46
-0.02 0.46 0.46
-0.04 0.46 0.46
-0.96 0.46 0.46
-0.98 0.46 0.46
-0.02 0.48 0.46
-0.04 0.48 0.46
-0.96 0.48 0.46
-0.98 0.48 0.46
-0.02 0.5 0.46
-0.04 0.5 0.46
-0.96 0.5 0.46
-0.98 0.5 0.46
-0.02 0.52 0.46
-0.04 0.52 0.46
-0.96 0.52 0.46
-0.98 0.52 0.46
-0.02 0.54 0.46
-0.04 0.54 0.46
-0.96 0.54 0.46
-0.98 0.54 0.46
-0.02 0.56 0.46
-0.04 0.56 0.46
-0.96 0.56 0.46
-0.98 0.56 0.46
-0.02 0.58 0.46
-0.04 0.58 0.46
-0.96 0.58 0.46
-0.98 0.58 0.46
-0.02 0.6 0.46
-0.04 0.6 0.46
-0.06 0.6 0.46
-0.94 0.6 0.46
-0.96 0.6 0.46
-0.98 0.6 0.46
-0.02 0.62 0.46
-0.04 0.62 0.46
-0.06 0.62 0.46
-0.94 0.62 0.46
-0.96 0.62 0.46
-0.98 0.62 0.46
-0.04 0.64 0.46
-0.06 0.64 0.46
-0.94 0.64 0.46
-0.96 0.64 0.46
-0.04 0.66 0.46
-0.06 0.66 0.46
-0.08 0.66 0.46
-0.92 0.66 0.46
-0.94 0.66 0.46
-0.96 0.66 0.46
-0.04 0.68 0.46
-0.06 0.68 0.46
-0.08 0.68 0.46
-0.92 0.68 0.46
-0.94 0.68 0.46
-0.96 0.68 0.46
-0.06 0.7 0.46
-0.08 0.7 0.46
-0.92 0.7 0.46
-0.94 0.7 0.46
-0.06 0.72 0.46
-0.08 0.72 0.46
-0.1 0.72 0.46
-0.9 0.72 0.46
-0.92 0.72 0.46
-0.94 0.72 0.46
-0.08 0.74 0.46
-0.1 0.74 0.46
-0.12 0.74 0.46
-0.88 0.74 0.46
-0.9 0.74 0.46
-0.92 0.74 0.46
-0.08 0.76 0.46
-0.1 0.76 0.46
-0.12 0.76 0.46
-0.88 0.76 0.46
-0.9 0.76 0.46
-0.92 0.76 0.46
-0.1 0.78 0.46
-0.12 0.78 0.46
-0.14 0.78 0.46
-0.86 0.78 0.46
-0.88 0.78 0.46
-0.9 0.78 0.46
-0.12 0.8 0.46
-0.14 0.8 0.46
-0.16 0.8 0.46
-0.84 0.8 0.46
-0.86 0.8 0.46
-0.88 0.8 0.46
-0.12 0.82 0.46
-0.14 0.82 0.46
-0.16 0.82 0.46
-0.18 0.82 0.46
-0.82 0.82 0.46
-0.84 0.82 0.46
-0.86 0.82 0.46
-0.88 0.82 0.46
-0.14 0.84 0.46
-0.16 0.84 0.46
-0.18 0.84 0.46
-0.2 0.84 0.46
-0.8 0.84 0.46
-0.82 0.84 0.46
-0.84 0.84 0.46
-0.86 0.84 0.46
-0.16 0.86 0.46
-0.18 0.86 0.46
-0.2 0.86 0.46
-0.22 0.86 0.46
-0.78 0.86 0.46
-0.8 0.86 0.46
-0.82 0.86 0.46
-0.84 0.86 0.46
-0.18 0.88 0.46
-0.2 0.88 0.46
-0.22 0.88 0.46
-0.24 0.88 0.46
-0.26 0.88 0.46
-0.74 0.88 0.46
-0.76 0.88 0.46
-0.78 0.88 0.46
-0.8 0.88 0.46
-0.82 0.88 0.46
-0.22 0.9 0.46
-0.24 0.9 0.46
-0.26 0.9 0.46
-0.28 0.9 0.46
-0.72 0.9 0.46
-0.74 0.9 0.46
-0.76 0.9 0.46
-0.78 0.9 0.46
-0.24 0.92 0.46
-0.26 0.92 0.46
-0.28 0.92 0.46
-0.3 0.92 0.46
-0.32 0.92 0.46
-0.34 0.92 0.46
-0.66 0.92 0.46
-0.68 0.92 0.46
-0.7 0.92 0.46
-0.72 0.92 0.46
-0.74 0.92 0.46
-0.76 0.92 0.46
-0.28 0.94 0.46
-0.3 0.94 0.46
-0.32 0.94 0.46
-0.34 0.94 0.46
-0.36 0.94 0.46
-0.38 0.94 0.46
-0.4 0.94 0.46
-0.6 0.94 0.46
-0.62 0.94 0.46
-0.64 0.94 0.46
-0.66 0.94 0.46
-0.68 0.94 0.46
-0.7 0.94 0.46
-0.72 0.94 0.46
-0.32 0.96 0.46
-0.34 0.96 0.46
-0.36 0.96 0.46
-0.38 0.96 0.46
-0.4 0.96 0.46
-0.42 0.96 0.46
-0.44 0.96 0.46
-0.46 0.96 0.46
-0.48 0.96 0.46
-0.5 0.96 0.46
-0.52 0.96 0.46
-0.54 0.96 0.46
-0.56 0.96 0.46
-0.58 0.96 0.46
-0.6 0.96 0.46
-0.62 0.96 0.46
-0.64 0.96 0.46
-0.66 0.96 0.46
-0.68 0.96 0.46
-0.38 0.98 0.46
-0.4 0.98 0.46
-0.42 0.98 0.46
-0.44 0.98 0.46
-0.46 0.98 0.46
-0.48 0.98 0.46
-0.5 0.98 0.46
-0.52 0.98 0.46
-0.54 0.98 0.46
-0.56 0.98 0.46
-0.58 0.98 0.46
-0.6 0.98 0.46
-0.62 0.98 0.46
-0.38 0.02 0.48
-0.4 0.02 0.48
-0.42 0.02 0.48
-0.44 0.02 0.48
-0.46 0.02 0.48
-0.48 0.02 0.48
-0.5 0.02 0.48
-0.52 0.02 0.48
-0.54 0.02 0.48
-0.56 0.02 0.48
-0.58 0.02 0.48
-0.6 0.02 0.48
-0.62 0.02 0.48
-0.32 0.04 0.48
-0.34 0.04 0.48
-0.36 0.04 0.48
-0.38 0.04 0.48
-0.4 0.04 0.48
-0.42 0.04 0.48
-0.44 0.04 0.48
-0.46 0.04 0.48
-0.48 0.04 0.48
-0.5 0.04 0.48
-0.52 0.04 0.48
-0.54 0.04 0.48
-0.56 0.04 0.48
-0.58 0.04 0.48
-0.6 0.04 0.48
-0.62 0.04 0.48
-0.64 0.04 0.48
-0.66 0.04 0.48
-0.68 0.04 0.48
-0.28 0.06 0.48
-0.3 0.06 0.48
-0.32 0.06 0.48
-0.34 0.06 0.48
-0.36 0.06 0.48
-0.38 0.06 0.48
-0.4 0.06 0.48
-0.6 0.06 0.48
-0.62 0.06 0.48
-0.64 0.06 0.48
-0.66 0.06 0.48
-0.68 0.06 0.48
-0.7 0.06 0.48
-0.72 0.06 0.48
-0.24 0.08 0.48
-0.26 0.08 0.48
-0.28 0.08 0.48
-0.3 0.08 0.48
-0.32 0.08 0.48
-0.68 0.08 0.48
-0.7 0.08 0.48
-0.72 0.08 0.48
-0.74 0.08 0.48
-0.76 0.08 0.48
-0.22 0.1 0.48
-0.24 0.1 0.48
-0.26 0.1 0.48
-0.28 0.1 0.48
-0.72 0.1 0.48
-0.74 0.1 0.48
-0.76 0.1 0.48
-0.78 0.1 0.48
-0.18 0.12 0.48
-0.2 0.12 0.48
-0.22 0.12 0.48
-0.24 0.12 0.48
-0.76 0.12 0.48
-0.78 0.12 0.48
-0.8 0.12 0.48
-0.82 0.12 0.48
-0.16 0.14 0.48
-0.18 0.14 0.48
-0.2 0.14 0.48
-0.22 0.14 0.48
-0.78 0.14 0.48
-0.8 0.14 0.48
-0.82 0.14 0.48
-0.84 0.14 0.48
-0.14 0.16 0.48
-0.16 0.16 0.48
-0.18 0.16 0.48
-0.2 0.16 0.48
-0.8 0.16 0.48
-0.82 0.16 0.48
-0.84 0.16 0.48
-0.86 0.16 0.48
-0.12 0.18 0.48
-0.14 0.18 0.48
-0.16 0.18 0.48
-0.18 0.18 0.48
-0.82 0.18 0.48
-0.84 0.18 0.48
-0.86 0.18 0.48
-0.88 0.18 0.48
-0.12 0.2 0.48
-0.14 0.2 0.48
-0.16 0.2 0.48
-0.84 0.2 0.48
-0.86 0.2 0.48
-0.88 0.2 0.48
-0.1 0.22 0.48
-0.12 0.22 0.48
-0.14 0.22 0.48
-0.86 0.22 0.48
-0.88 0.22 0.48
-0.9 0.22 0.48
-0.08 0.24 0.48
-0.1 0.24 0.48
-0.12 0.24 0.48
-0.88 0.24 0.48
-0.9 0.24 0.48
-0.92 0.24 0.48
-0.08 0.26 0.48
-0.1 0.26 0.48
-0.9 0.26 0.48
-0.92 0.26 0.48
-0.06 0.28 0.48
-0.08 0.28 0.48
-0.1 0.28 0.48
-0.9 0.28 0.48
-0.92 0.28 0.48
-0.94 0.28 0.48
-0.06 0.3 0.48
-0.08 0.3 0.48
-0.92 0.3 0.48
-0.94 0.3 0.48
-0.04 0.32 0.48
-0.06 0.32 0.48
-0.08 0.32 0.48
-0.92 0.32 0.48
-0.94 0.32 0.48
-0.96 0.32 0.48
-0.04 0.34 0.48
-0.06 0.34 0.48
-0.94 0.34 0.48
-0.96 0.34 0.48
-0.04 0.36 0.48
-0.06 0.36 0.48
-0.94 0.36 0.48
-0.96 0.36 0.48
-0.02 0.38 0.48
-0.04 0.38 0.48
-0.06 0.38 0.48
-0.94 0.38 0.48
-0.96 0.38 0.48
-0.98 0.38 0.48
-0.02 0.4 0.48
-0.04 0.4 0.48
-0.06 0.4 0.48
-0.94 0.4 0.48
-0.96 0.4 0.48
-0.98 0.4 0.48
-0.02 0.42 0.48
-0.04 0.42 0.48
-0.96 0.42 0.48
-0.98 0.42 0.48
-0.02 0.44 0.48
-0.04 0.44 0.48
-0.96 0.44 0.48
-0.98 0.44 0.48
-0.02 0.46 0.48
-0.04 0.46 0.48
-0.96 0.46 0.48
-0.98 0.46 0.48
-0.02 0.48 0.48
-0.04 0.48 0.48
-0.96 0.48 0.48
-0.98 0.48 0.48
-0.02 0.5 0.48
-0.04 0.5 0.48
-0.96 0.5 0.48
-0.98 0.5 0.48
-0.02 0.52 0.48
-0.04 0.52 0.48
-0.96 0.52 0.48
-0.98 0.52 0.48
-0.02 0.54 0.48
-0.04 0.54 0.48
-0.96 0.54 0.48
-0.98 0.54 0.48
-0.02 0.56 0.48
-0.04 0.56 0.48
-0.96 0.56 0.48
-0.98 0.56 0.48
-0.02 0.58 0.48
-0.04 0.58 0.48
-0.96 0.58 0.48
-0.98 0.58 0.48
-0.02 0.6 0.48
-0.04 0.6 0.48
-0.06 0.6 0.48
-0.94 0.6 0.48
-0.96 0.6 0.48
-0.98 0.6 0.48
-0.02 0.62 0.48
-0.04 0.62 0.48
-0.06 0.62 0.48
-0.94 0.62 0.48
-0.96 0.62 0.48
-0.98 0.62 0.48
-0.04 0.64 0.48
-0.06 0.64 0.48
-0.94 0.64 0.48
-0.96 0.64 0.48
-0.04 0.66 0.48
-0.06 0.66 0.48
-0.94 0.66 0.48
-0.96 0.66 0.48
-0.04 0.68 0.48
-0.06 0.68 0.48
-0.08 0.68 0.48
-0.92 0.68 0.48
-0.94 0.68 0.48
-0.96 0.68 0.48
-0.06 0.7 0.48
-0.08 0.7 0.48
-0.92 0.7 0.48
-0.94 0.7 0.48
-0.06 0.72 0.48
-0.08 0.72 0.48
-0.1 0.72 0.48
-0.9 0.72 0.48
-0.92 0.72 0.48
-0.94 0.72 0.48
-0.08 0.74 0.48
-0.1 0.74 0.48
-0.9 0.74 0.48
-0.92 0.74 0.48
-0.08 0.76 0.48
-0.1 0.76 0.48
-0.12 0.76 0.48
-0.88 0.76 0.48
-0.9 0.76 0.48
-0.92 0.76 0.48
-0.1 0.78 0.48
-0.12 0.78 0.48
-0.14 0.78 0.48
-0.86 0.78 0.48
-0.88 0.78 0.48
-0.9 0.78 0.48
-0.12 0.8 0.48
-0.14 0.8 0.48
-0.16 0.8 0.48
-0.84 0.8 0.48
-0.86 0.8 0.48
-0.88 0.8 0.48
-0.12 0.82 0.48
-0.14 0.82 0.48
-0.16 0.82 0.48
-0.18 0.82 0.48
-0.82 0.82 0.48
-0.84 0.82 0.48
-0.86 0.82 0.48
-0.88 0.82 0.48
-0.14 0.84 0.48
-0.16 0.84 0.48
-0.18 0.84 0.48
-0.2 0.84 0.48
-0.8 0.84 0.48
-0.82 0.84 0.48
-0.84 0.84 0.48
-0.86 0.84 0.48
-0.16 0.86 0.48
-0.18 0.86 0.48
-0.2 0.86 0.48
-0.22 0.86 0.48
-0.78 0.86 0.48
-0.8 0.86 0.48
-0.82 0.86 0.48
-0.84 0.86 0.48
-0.18 0.88 0.48
-0.2 0.88 0.48
-0.22 0.88 0.48
-0.24 0.88 0.48
-0.76 0.88 0.48
-0.78 0.88 0.48
-0.8 0.88 0.48
-0.82 0.88 0.48
-0.22 0.9 0.48
-0.24 0.9 0.48
-0.26 0.9 0.48
-0.28 0.9 0.48
-0.72 0.9 0.48
-0.74 0.9 0.48
-0.76 0.9 0.48
-0.78 0.9 0.48
-0.24 0.92 0.48
-0.26 0.92 0.48
-0.28 0.92 0.48
-0.3 0.92 0.48
-0.32 0.92 0.48
-0.68 0.92 0.48
-0.7 0.92 0.48
-0.72 0.92 0.48
-0.74 0.92 0.48
-0.76 0.92 0.48
-0.28 0.94 0.48
-0.3 0.94 0.48
-0.32 0.94 0.48
-0.34 0.94 0.48
-0.36 0.94 0.48
-0.38 0.94 0.48
-0.4 0.94 0.48
-0.6 0.94 0.48
-0.62 0.94 0.48
-0.64 0.94 0.48
-0.66 0.94 0.48
-0.68 0.94 0.48
-0.7 0.94 0.48
-0.72 0.94 0.48
-0.32 0.96 0.48
-0.34 0.96 0.48
-0.36 0.96 0.48
-0.38 0.96 0.48
-0.4 0.96 0.48
-0.42 0.96 0.48
-0.44 0.96 0.48
-0.46 0.96 0.48
-0.48 0.96 0.48
-0.5 0.96 0.48
-0.52 0.96 0.48
-0.54 0.96 0.48
-0.56 0.96 0.48
-0.58 0.96 0.48
-0.6 0.96 0.48
-0.62 0.96 0.48
-0.64 0.96 0.48
-0.66 0.96 0.48
-0.68 0.96 0.48
-0.38 0.98 0.48
-0.4 0.98 0.48
-0.42 0.98 0.48
-0.44 0.98 0.48
-0.46 0.98 0.48
-0.48 0.98 0.48
-0.5 0.98 0.48
-0.52 0.98 0.48
-0.54 0.98 0.48
-0.56 0.98 0.48
-0.58 0.98 0.48
-0.6 0.98 0.48
-0.62 0.98 0.48
-0.38 0.02 0.5
-0.4 0.02 0.5
-0.42 0.02 0.5
-0.44 0.02 0.5
-0.46 0.02 0.5
-0.48 0.02 0.5
-0.5 0.02 0.5
-0.52 0.02 0.5
-0.54 0.02 0.5
-0.56 0.02 0.5
-0.58 0.02 0.5
-0.6 0.02 0.5
-0.62 0.02 0.5
-0.32 0.04 0.5
-0.34 0.04 0.5
-0.36 0.04 0.5
-0.38 0.04 0.5
-0.4 0.04 0.5
-0.42 0.04 0.5
-0.44 0.04 0.5
-0.46 0.04 0.5
-0.48 0.04 0.5
-0.5 0.04 0.5
-0.52 0.04 0.5
-0.54 0.04 0.5
-0.56 0.04 0.5
-0.58 0.04 0.5
-0.6 0.04 0.5
-0.62 0.04 0.5
-0.64 0.04 0.5
-0.66 0.04 0.5
-0.68 0.04 0.5
-0.28 0.06 0.5
-0.3 0.06 0.5
-0.32 0.06 0.5
-0.34 0.06 0.5
-0.36 0.06 0.5
-0.38 0.06 0.5
-0.4 0.06 0.5
-0.6 0.06 0.5
-0.62 0.06 0.5
-0.64 0.06 0.5
-0.66 0.06 0.5
-0.68 0.06 0.5
-0.7 0.06 0.5
-0.72 0.06 0.5
-0.24 0.08 0.5
-0.26 0.08 0.5
-0.28 0.08 0.5
-0.3 0.08 0.5
-0.32 0.08 0.5
-0.68 0.08 0.5
-0.7 0.08 0.5
-0.72 0.08 0.5
-0.74 0.08 0.5
-0.76 0.08 0.5
-0.22 0.1 0.5
-0.24 0.1 0.5
-0.26 0.1 0.5
-0.28 0.1 0.5
-0.72 0.1 0.5
-0.74 0.1 0.5
-0.76 0.1 0.5
-0.78 0.1 0.5
-0.18 0.12 0.5
-0.2 0.12 0.5
-0.22 0.12 0.5
-0.24 0.12 0.5
-0.76 0.12 0.5
-0.78 0.12 0.5
-0.8 0.12 0.5
-0.82 0.12 0.5
-0.16 0.14 0.5
-0.18 0.14 0.5
-0.2 0.14 0.5
-0.22 0.14 0.5
-0.78 0.14 0.5
-0.8 0.14 0.5
-0.82 0.14 0.5
-0.84 0.14 0.5
-0.14 0.16 0.5
-0.16 0.16 0.5
-0.18 0.16 0.5
-0.2 0.16 0.5
-0.8 0.16 0.5
-0.82 0.16 0.5
-0.84 0.16 0.5
-0.86 0.16 0.5
-0.12 0.18 0.5
-0.14 0.18 0.5
-0.16 0.18 0.5
-0.18 0.18 0.5
-0.82 0.18 0.5
-0.84 0.18 0.5
-0.86 0.18 0.5
-0.88 0.18 0.5
-0.12 0.2 0.5
-0.14 0.2 0.5
-0.16 0.2 0.5
-0.84 0.2 0.5
-0.86 0.2 0.5
-0.88 0.2 0.5
-0.1 0.22 0.5
-0.12 0.22 0.5
-0.14 0.22 0.5
-0.86 0.22 0.5
-0.88 0.22 0.5
-0.9 0.22 0.5
-0.08 0.24 0.5
-0.1 0.24 0.5
-0.12 0.24 0.5
-0.88 0.24 0.5
-0.9 0.24 0.5
-0.92 0.24 0.5
-0.08 0.26 0.5
-0.1 0.26 0.5
-0.9 0.26 0.5
-0.92 0.26 0.5
-0.06 0.28 0.5
-0.08 0.28 0.5
-0.1 0.28 0.5
-0.9 0.28 0.5
-0.92 0.28 0.5
-0.94 0.28 0.5
-0.06 0.3 0.5
-0.08 0.3 0.5
-0.92 0.3 0.5
-0.94 0.3 0.5
-0.04 0.32 0.5
-0.06 0.32 0.5
-0.08 0.32 0.5
-0.92 0.32 0.5
-0.94 0.32 0.5
-0.96 0.32 0.5
-0.04 0.34 0.5
-0.06 0.34 0.5
-0.94 0.34 0.5
-0.96 0.34 0.5
-0.04 0.36 0.5
-0.06 0.36 0.5
-0.94 0.36 0.5
-0.96 0.36 0.5
-0.02 0.38 0.5
-0.04 0.38 0.5
-0.06 0.38 0.5
-0.94 0.38 0.5
-0.96 0.38 0.5
-0.98 0.38 0.5
-0.02 0.4 0.5
-0.04 0.4 0.5
-0.06 0.4 0.5
-0.94 0.4 0.5
-0.96 0.4 0.5
-0.98 0.4 0.5
-0.02 0.42 0.5
-0.04 0.42 0.5
-0.96 0.42 0.5
-0.98 0.42 0.5
-0.02 0.44 0.5
-0.04 0.44 0.5
-0.96 0.44 0.5
-0.98 0.44 0.5
-0.02 0.46 0.5
-0.04 0.46 0.5
-0.96 0.46 0.5
-0.98 0.46 0.5
-0.02 0.48 0.5
-0.04 0.48 0.5
-0.96 0.48 0.5
-0.98 0.48 0.5
-0.02 0.5 0.5
-0.04 0.5 0.5
-0.96 0.5 0.5
-0.98 0.5 0.5
-0.02 0.52 0.5
-0.04 0.52 0.5
-0.96 0.52 0.5
-0.98 0.52 0.5
-0.02 0.54 0.5
-0.04 0.54 0.5
-0.96 0.54 0.5
-0.98 0.54 0.5
-0.02 0.56 0.5
-0.04 0.56 0.5
-0.96 0.56 0.5
-0.98 0.56 0.5
-0.02 0.58 0.5
-0.04 0.58 0.5
-0.96 0.58 0.5
-0.98 0.58 0.5
-0.02 0.6 0.5
-0.04 0.6 0.5
-0.06 0.6 0.5
-0.94 0.6 0.5
-0.96 0.6 0.5
-0.98 0.6 0.5
-0.02 0.62 0.5
-0.04 0.62 0.5
-0.06 0.62 0.5
-0.94 0.62 0.5
-0.96 0.62 0.5
-0.98 0.62 0.5
-0.04 0.64 0.5
-0.06 0.64 0.5
-0.94 0.64 0.5
-0.96 0.64 0.5
-0.04 0.66 0.5
-0.06 0.66 0.5
-0.94 0.66 0.5
-0.96 0.66 0.5
-0.04 0.68 0.5
-0.06 0.68 0.5
-0.08 0.68 0.5
-0.92 0.68 0.5
-0.94 0.68 0.5
-0.96 0.68 0.5
-0.06 0.7 0.5
-0.08 0.7 0.5
-0.92 0.7 0.5
-0.94 0.7 0.5
-0.06 0.72 0.5
-0.08 0.72 0.5
-0.1 0.72 0.5
-0.9 0.72 0.5
-0.92 0.72 0.5
-0.94 0.72 0.5
-0.08 0.74 0.5
-0.1 0.74 0.5
-0.9 0.74 0.5
-0.92 0.74 0.5
-0.08 0.76 0.5
-0.1 0.76 0.5
-0.12 0.76 0.5
-0.88 0.76 0.5
-0.9 0.76 0.5
-0.92 0.76 0.5
-0.1 0.78 0.5
-0.12 0.78 0.5
-0.14 0.78 0.5
-0.86 0.78 0.5
-0.88 0.78 0.5
-0.9 0.78 0.5
-0.12 0.8 0.5
-0.14 0.8 0.5
-0.16 0.8 0.5
-0.84 0.8 0.5
-0.86 0.8 0.5
-0.88 0.8 0.5
-0.12 0.82 0.5
-0.14 0.82 0.5
-0.16 0.82 0.5
-0.18 0.82 0.5
-0.82 0.82 0.5
-0.84 0.82 0.5
-0.86 0.82 0.5
-0.88 0.82 0.5
-0.14 0.84 0.5
-0.16 0.84 0.5
-0.18 0.84 0.5
-0.2 0.84 0.5
-0.8 0.84 0.5
-0.82 0.84 0.5
-0.84 0.84 0.5
-0.86 0.84 0.5
-0.16 0.86 0.5
-0.18 0.86 0.5
-0.2 0.86 0.5
-0.22 0.86 0.5
-0.78 0.86 0.5
-0.8 0.86 0.5
-0.82 0.86 0.5
-0.84 0.86 0.5
-0.18 0.88 0.5
-0.2 0.88 0.5
-0.22 0.88 0.5
-0.24 0.88 0.5
-0.76 0.88 0.5
-0.78 0.88 0.5
-0.8 0.88 0.5
-0.82 0.88 0.5
-0.22 0.9 0.5
-0.24 0.9 0.5
-0.26 0.9 0.5
-0.28 0.9 0.5
-0.72 0.9 0.5
-0.74 0.9 0.5
-0.76 0.9 0.5
-0.78 0.9 0.5
-0.24 0.92 0.5
-0.26 0.92 0.5
-0.28 0.92 0.5
-0.3 0.92 0.5
-0.32 0.92 0.5
-0.68 0.92 0.5
-0.7 0.92 0.5
-0.72 0.92 0.5
-0.74 0.92 0.5
-0.76 0.92 0.5
-0.28 0.94 0.5
-0.3 0.94 0.5
-0.32 0.94 0.5
-0.34 0.94 0.5
-0.36 0.94 0.5
-0.38 0.94 0.5
-0.4 0.94 0.5
-0.6 0.94 0.5
-0.62 0.94 0.5
-0.64 0.94 0.5
-0.66 0.94 0.5
-0.68 0.94 0.5
-0.7 0.94 0.5
-0.72 0.94 0.5
-0.32 0.96 0.5
-0.34 0.96 0.5
-0.36 0.96 0.5
-0.38 0.96 0.5
-0.4 0.96 0.5
-0.42 0.96 0.5
-0.44 0.96 0.5
-0.46 0.96 0.5
-0.48 0.96 0.5
-0.5 0.96 0.5
-0.52 0.96 0.5
-0.54 0.96 0.5
-0.56 0.96 0.5
-0.58 0.96 0.5
-0.6 0.96 0.5
-0.62 0.96 0.5
-0.64 0.96 0.5
-0.66 0.96 0.5
-0.68 0.96 0.5
-0.38 0.98 0.5
-0.4 0.98 0.5
-0.42 0.98 0.5
-0.44 0.98 0.5
-0.46 0.98 0.5
-0.48 0.98 0.5
-0.5 0.98 0.5
-0.52 0.98 0.5
-0.54 0.98 0.5
-0.56 0.98 0.5
-0.58 0.98 0.5
-0.6 0.98 0.5
-0.62 0.98 0.5
-0.38 0.02 0.52
-0.4 0.02 0.52
-0.42 0.02 0.52
-0.44 0.02 0.52
-0.46 0.02 0.52
-0.48 0.02 0.52
-0.5 0.02 0.52
-0.52 0.02 0.52
-0.54 0.02 0.52
-0.56 0.02 0.52
-0.58 0.02 0.52
-0.6 0.02 0.52
-0.62 0.02 0.52
-0.32 0.04 0.52
-0.34 0.04 0.52
-0.36 0.04 0.52
-0.38 0.04 0.52
-0.4 0.04 0.52
-0.42 0.04 0.52
-0.44 0.04 0.52
-0.46 0.04 0.52
-0.48 0.04 0.52
-0.5 0.04 0.52
-0.52 0.04 0.52
-0.54 0.04 0.52
-0.56 0.04 0.52
-0.58 0.04 0.52
-0.6 0.04 0.52
-0.62 0.04 0.52
-0.64 0.04 0.52
-0.66 0.04 0.52
-0.68 0.04 0.52
-0.28 0.06 0.52
-0.3 0.06 0.52
-0.32 0.06 0.52
-0.34 0.06 0.52
-0.36 0.06 0.52
-0.38 0.06 0.52
-0.4 0.06 0.52
-0.6 0.06 0.52
-0.62 0.06 0.52
-0.64 0.06 0.52
-0.66 0.06 0.52
-0.68 0.06 0.52
-0.7 0.06 0.52
-0.72 0.06 0.52
-0.24 0.08 0.52
-0.26 0.08 0.52
-0.28 0.08 0.52
-0.3 0.08 0.52
-0.32 0.08 0.52
-0.68 0.08 0.52
-0.7 0.08 0.52
-0.72 0.08 0.52
-0.74 0.08 0.52
-0.76 0.08 0.52
-0.22 0.1 0.52
-0.24 0.1 0.52
-0.26 0.1 0.52
-0.28 0.1 0.52
-0.72 0.1 0.52
-0.74 0.1 0.52
-0.76 0.1 0.52
-0.78 0.1 0.52
-0.18 0.12 0.52
-0.2 0.12 0.52
-0.22 0.12 0.52
-0.24 0.12 0.52
-0.76 0.12 0.52
-0.78 0.12 0.52
-0.8 0.12 0.52
-0.82 0.12 0.52
-0.16 0.14 0.52
-0.18 0.14 0.52
-0.2 0.14 0.52
-0.22 0.14 0.52
-0.78 0.14 0.52
-0.8 0.14 0.52
-0.82 0.14 0.52
-0.84 0.14 0.52
-0.14 0.16 0.52
-0.16 0.16 0.52
-0.18 0.16 0.52
-0.2 0.16 0.52
-0.8 0.16 0.52
-0.82 0.16 0.52
-0.84 0.16 0.52
-0.86 0.16 0.52
-0.12 0.18 0.52
-0.14 0.18 0.52
-0.16 0.18 0.52
-0.18 0.18 0.52
-0.82 0.18 0.52
-0.84 0.18 0.52
-0.86 0.18 0.52
-0.88 0.18 0.52
-0.12 0.2 0.52
-0.14 0.2 0.52
-0.16 0.2 0.52
-0.84 0.2 0.52
-0.86 0.2 0.52
-0.88 0.2 0.52
-0.1 0.22 0.52
-0.12 0.22 0.52
-0.14 0.22 0.52
-0.86 0.22 0.52
-0.88 0.22 0.52
-0.9 0.22 0.52
-0.08 0.24 0.52
-0.1 0.24 0.52
-0.12 0.24 0.52
-0.88 0.24 0.52
-0.9 0.24 0.52
-0.92 0.24 0.52
-0.08 0.26 0.52
-0.1 0.26 0.52
-0.9 0.26 0.52
-0.92 0.26 0.52
-0.06 0.28 0.52
-0.08 0.28 0.52
-0.1 0.28 0.52
-0.9 0.28 0.52
-0.92 0.28 0.52
-0.94 0.28 0.52
-0.06 0.3 0.52
-0.08 0.3 0.52
-0.92 0.3 0.52
-0.94 0.3 0.52
-0.04 0.32 0.52
-0.06 0.32 0.52
-0.08 0.32 0.52
-0.92 0.32 0.52
-0.94 0.32 0.52
-0.96 0.32 0.52
-0.04 0.34 0.52
-0.06 0.34 0.52
-0.94 0.34 0.52
-0.96 0.34 0.52
-0.04 0.36 0.52
-0.06 0.36 0.52
-0.94 0.36 0.52
-0.96 0.36 0.52
-0.02 0.38 0.52
-0.04 0.38 0.52
-0.06 0.38 0.52
-0.94 0.38 0.52
-0.96 0.38 0.52
-0.98 0.38 0.52
-0.02 0.4 0.52
-0.04 0.4 0.52
-0.06 0.4 0.52
-0.94 0.4 0.52
-0.96 0.4 0.52
-0.98 0.4 0.52
-0.02 0.42 0.52
-0.04 0.42 0.52
-0.96 0.42 0.52
-0.98 0.42 0.52
-0.02 0.44 0.52
-0.04 0.44 0.52
-0.96 0.44 0.52
-0.98 0.44 0.52
-0.02 0.46 0.52
-0.04 0.46 0.52
-0.96 0.46 0.52
-0.98 0.46 0.52
-0.02 0.48 0.52
-0.04 0.48 0.52
-0.96 0.48 0.52
-0.98 0.48 0.52
-0.02 0.5 0.52
-0.04 0.5 0.52
-0.96 0.5 0.52
-0.98 0.5 0.52
-0.02 0.52 0.52
-0.04 0.52 0.52
-0.96 0.52 0.52
-0.98 0.52 0.52
-0.02 0.54 0.52
-0.04 0.54 0.52
-0.96 0.54 0.52
-0.98 0.54 0.52
-0.02 0.56 0.52
-0.04 0.56 0.52
-0.96 0.56 0.52
-0.98 0.56 0.52
-0.02 0.58 0.52
-0.04 0.58 0.52
-0.96 0.58 0.52
-0.98 0.58 0.52
-0.02 0.6 0.52
-0.04 0.6 0.52
-0.06 0.6 0.52
-0.94 0.6 0.52
-0.96 0.6 0.52
-0.98 0.6 0.52
-0.02 0.62 0.52
-0.04 0.62 0.52
-0.06 0.62 0.52
-0.94 0.62 0.52
-0.96 0.62 0.52
-0.98 0.62 0.52
-0.04 0.64 0.52
-0.06 0.64 0.52
-0.94 0.64 0.52
-0.96 0.64 0.52
-0.04 0.66 0.52
-0.06 0.66 0.52
-0.94 0.66 0.52
-0.96 0.66 0.52
-0.04 0.68 0.52
-0.06 0.68 0.52
-0.08 0.68 0.52
-0.92 0.68 0.52
-0.94 0.68 0.52
-0.96 0.68 0.52
-0.06 0.7 0.52
-0.08 0.7 0.52
-0.92 0.7 0.52
-0.94 0.7 0.52
-0.06 0.72 0.52
-0.08 0.72 0.52
-0.1 0.72 0.52
-0.9 0.72 0.52
-0.92 0.72 0.52
-0.94 0.72 0.52
-0.08 0.74 0.52
-0.1 0.74 0.52
-0.9 0.74 0.52
-0.92 0.74 0.52
-0.08 0.76 0.52
-0.1 0.76 0.52
-0.12 0.76 0.52
-0.88 0.76 0.52
-0.9 0.76 0.52
-0.92 0.76 0.52
-0.1 0.78 0.52
-0.12 0.78 0.52
-0.14 0.78 0.52
-0.86 0.78 0.52
-0.88 0.78 0.52
-0.9 0.78 0.52
-0.12 0.8 0.52
-0.14 0.8 0.52
-0.16 0.8 0.52
-0.84 0.8 0.52
-0.86 0.8 0.52
-0.88 0.8 0.52
-0.12 0.82 0.52
-0.14 0.82 0.52
-0.16 0.82 0.52
-0.18 0.82 0.52
-0.82 0.82 0.52
-0.84 0.82 0.52
-0.86 0.82 0.52
-0.88 0.82 0.52
-0.14 0.84 0.52
-0.16 0.84 0.52
-0.18 0.84 0.52
-0.2 0.84 0.52
-0.8 0.84 0.52
-0.82 0.84 0.52
-0.84 0.84 0.52
-0.86 0.84 0.52
-0.16 0.86 0.52
-0.18 0.86 0.52
-0.2 0.86 0.52
-0.22 0.86 0.52
-0.78 0.86 0.52
-0.8 0.86 0.52
-0.82 0.86 0.52
-0.84 0.86 0.52
-0.18 0.88 0.52
-0.2 0.88 0.52
-0.22 0.88 0.52
-0.24 0.88 0.52
-0.76 0.88 0.52
-0.78 0.88 0.52
-0.8 0.88 0.52
-0.82 0.88 0.52
-0.22 0.9 0.52
-0.24 0.9 0.52
-0.26 0.9 0.52
-0.28 0.9 0.52
-0.72 0.9 0.52
-0.74 0.9 0.52
-0.76 0.9 0.52
-0.78 0.9 0.52
-0.24 0.92 0.52
-0.26 0.92 0.52
-0.28 0.92 0.52
-0.3 0.92 0.52
-0.32 0.92 0.52
-0.68 0.92 0.52
-0.7 0.92 0.52
-0.72 0.92 0.52
-0.74 0.92 0.52
-0.76 0.92 0.52
-0.28 0.94 0.52
-0.3 0.94 0.52
-0.32 0.94 0.52
-0.34 0.94 0.52
-0.36 0.94 0.52
-0.38 0.94 0.52
-0.4 0.94 0.52
-0.6 0.94 0.52
-0.62 0.94 0.52
-0.64 0.94 0.52
-0.66 0.94 0.52
-0.68 0.94 0.52
-0.7 0.94 0.52
-0.72 0.94 0.52
-0.32 0.96 0.52
-0.34 0.96 0.52
-0.36 0.96 0.52
-0.38 0.96 0.52
-0.4 0.96 0.52
-0.42 0.96 0.52
-0.44 0.96 0.52
-0.46 0.96 0.52
-0.48 0.96 0.52
-0.5 0.96 0.52
-0.52 0.96 0.52
-0.54 0.96 0.52
-0.56 0.96 0.52
-0.58 0.96 0.52
-0.6 0.96 0.52
-0.62 0.96 0.52
-0.64 0.96 0.52
-0.66 0.96 0.52
-0.68 0.96 0.52
-0.38 0.98 0.52
-0.4 0.98 0.52
-0.42 0.98 0.52
-0.44 0.98 0.52
-0.46 0.98 0.52
-0.48 0.98 0.52
-0.5 0.98 0.52
-0.52 0.98 0.52
-0.54 0.98 0.52
-0.56 0.98 0.52
-0.58 0.98 0.52
-0.6 0.98 0.52
-0.62 0.98 0.52
-0.38 0.02 0.54
-0.4 0.02 0.54
-0.42 0.02 0.54
-0.44 0.02 0.54
-0.46 0.02 0.54
-0.48 0.02 0.54
-0.5 0.02 0.54
-0.52 0.02 0.54
-0.54 0.02 0.54
-0.56 0.02 0.54
-0.58 0.02 0.54
-0.6 0.02 0.54
-0.62 0.02 0.54
-0.32 0.04 0.54
-0.34 0.04 0.54
-0.36 0.04 0.54
-0.38 0.04 0.54
-0.4 0.04 0.54
-0.42 0.04 0.54
-0.44 0.04 0.54
-0.46 0.04 0.54
-0.48 0.04 0.54
-0.5 0.04 0.54
-0.52 0.04 0.54
-0.54 0.04 0.54
-0.56 0.04 0.54
-0.58 0.04 0.54
-0.6 0.04 0.54
-0.62 0.04 0.54
-0.64 0.04 0.54
-0.66 0.04 0.54
-0.68 0.04 0.54
-0.28 0.06 0.54
-0.3 0.06 0.54
-0.32 0.06 0.54
-0.34 0.06 0.54
-0.36 0.06 0.54
-0.38 0.06 0.54
-0.4 0.06 0.54
-0.6 0.06 0.54
-0.62 0.06 0.54
-0.64 0.06 0.54
-0.66 0.06 0.54
-0.68 0.06 0.54
-0.7 0.06 0.54
-0.72 0.06 0.54
-0.24 0.08 0.54
-0.26 0.08 0.54
-0.28 0.08 0.54
-0.3 0.08 0.54
-0.32 0.08 0.54
-0.34 0.08 0.54
-0.66 0.08 0.54
-0.68 0.08 0.54
-0.7 0.08 0.54
-0.72 0.08 0.54
-0.74 0.08 0.54
-0.76 0.08 0.54
-0.22 0.1 0.54
-0.24 0.1 0.54
-0.26 0.1 0.54
-0.28 0.1 0.54
-0.72 0.1 0.54
-0.74 0.1 0.54
-0.76 0.1 0.54
-0.78 0.1 0.54
-0.18 0.12 0.54
-0.2 0.12 0.54
-0.22 0.12 0.54
-0.24 0.12 0.54
-0.26 0.12 0.54
-0.74 0.12 0.54
-0.76 0.12 0.54
-0.78 0.12 0.54
-0.8 0.12 0.54
-0.82 0.12 0.54
-0.16 0.14 0.54
-0.18 0.14 0.54
-0.2 0.14 0.54
-0.22 0.14 0.54
-0.78 0.14 0.54
-0.8 0.14 0.54
-0.82 0.14 0.54
-0.84 0.14 0.54
-0.14 0.16 0.54
-0.16 0.16 0.54
-0.18 0.16 0.54
-0.2 0.16 0.54
-0.8 0.16 0.54
-0.82 0.16 0.54
-0.84 0.16 0.54
-0.86 0.16 0.54
-0.12 0.18 0.54
-0.14 0.18 0.54
-0.16 0.18 0.54
-0.18 0.18 0.54
-0.82 0.18 0.54
-0.84 0.18 0.54
-0.86 0.18 0.54
-0.88 0.18 0.54
-0.12 0.2 0.54
-0.14 0.2 0.54
-0.16 0.2 0.54
-0.84 0.2 0.54
-0.86 0.2 0.54
-0.88 0.2 0.54
-0.1 0.22 0.54
-0.12 0.22 0.54
-0.14 0.22 0.54
-0.86 0.22 0.54
-0.88 0.22 0.54
-0.9 0.22 0.54
-0.08 0.24 0.54
-0.1 0.24 0.54
-0.12 0.24 0.54
-0.88 0.24 0.54
-0.9 0.24 0.54
-0.92 0.24 0.54
-0.08 0.26 0.54
-0.1 0.26 0.54
-0.12 0.26 0.54
-0.88 0.26 0.54
-0.9 0.26 0.54
-0.92 0.26 0.54
-0.06 0.28 0.54
-0.08 0.28 0.54
-0.1 0.28 0.54
-0.9 0.28 0.54
-0.92 0.28 0.54
-0.94 0.28 0.54
-0.06 0.3 0.54
-0.08 0.3 0.54
-0.92 0.3 0.54
-0.94 0.3 0.54
-0.04 0.32 0.54
-0.06 0.32 0.54
-0.08 0.32 0.54
-0.92 0.32 0.54
-0.94 0.32 0.54
-0.96 0.32 0.54
-0.04 0.34 0.54
-0.06 0.34 0.54
-0.08 0.34 0.54
-0.92 0.34 0.54
-0.94 0.34 0.54
-0.96 0.34 0.54
-0.04 0.36 0.54
-0.06 0.36 0.54
-0.94 0.36 0.54
-0.96 0.36 0.54
-0.02 0.38 0.54
-0.04 0.38 0.54
-0.06 0.38 0.54
-0.94 0.38 0.54
-0.96 0.38 0.54
-0.98 0.38 0.54
-0.02 0.4 0.54
-0.04 0.4 0.54
-0.06 0.4 0.54
-0.94 0.4 0.54
-0.96 0.4 0.54
-0.98 0.4 0.54
-0.02 0.42 0.54
-0.04 0.42 0.54
-0.96 0.42 0.54
-0.98 0.42 0.54
-0.02 0.44 0.54
-0.04 0.44 0.54
-0.96 0.44 0.54
-0.98 0.44 0.54
-0.02 0.46 0.54
-0.04 0.46 0.54
-0.96 0.46 0.54
-0.98 0.46 0.54
-0.02 0.48 0.54
-0.04 0.48 0.54
-0.96 0.48 0.54
-0.98 0.48 0.54
-0.02 0.5 0.54
-0.04 0.5 0.54
-0.96 0.5 0.54
-0.98 0.5 0.54
-0.02 0.52 0.54
-0.04 0.52 0.54
-0.96 0.52 0.54
-0.98 0.52 0.54
-0.02 0.54 0.54
-0.04 0.54 0.54
-0.96 0.54 0.54
-0.98 0.54 0.54
-0.02 0.56 0.54
-0.04 0.56 0.54
-0.96 0.56 0.54
-0.98 0.56 0.54
-0.02 0.58 0.54
-0.04 0.58 0.54
-0.96 0.58 0.54
-0.98 0.58 0.54
-0.02 0.6 0.54
-0.04 0.6 0.54
-0.06 0.6 0.54
-0.94 0.6 0.54
-0.96 0.6 0.54
-0.98 0.6 0.54
-0.02 0.62 0.54
-0.04 0.62 0.54
-0.06 0.62 0.54
-0.94 0.62 0.54
-0.96 0.62 0.54
-0.98 0.62 0.54
-0.04 0.64 0.54
-0.06 0.64 0.54
-0.94 0.64 0.54
-0.96 0.64 0.54
-0.04 0.66 0.54
-0.06 0.66 0.54
-0.08 0.66 0.54
-0.92 0.66 0.54
-0.94 0.66 0.54
-0.96 0.66 0.54
-0.04 0.68 0.54
-0.06 0.68 0.54
-0.08 0.68 0.54
-0.92 0.68 0.54
-0.94 0.68 0.54
-0.96 0.68 0.54
-0.06 0.7 0.54
-0.08 0.7 0.54
-0.92 0.7 0.54
-0.94 0.7 0.54
-0.06 0.72 0.54
-0.08 0.72 0.54
-0.1 0.72 0.54
-0.9 0.72 0.54
-0.92 0.72 0.54
-0.94 0.72 0.54
-0.08 0.74 0.54
-0.1 0.74 0.54
-0.12 0.74 0.54
-0.88 0.74 0.54
-0.9 0.74 0.54
-0.92 0.74 0.54
-0.08 0.76 0.54
-0.1 0.76 0.54
-0.12 0.76 0.54
-0.88 0.76 0.54
-0.9 0.76 0.54
-0.92 0.76 0.54
-0.1 0.78 0.54
-0.12 0.78 0.54
-0.14 0.78 0.54
-0.86 0.78 0.54
-0.88 0.78 0.54
-0.9 0.78 0.54
-0.12 0.8 0.54
-0.14 0.8 0.54
-0.16 0.8 0.54
-0.84 0.8 0.54
-0.86 0.8 0.54
-0.88 0.8 0.54
-0.12 0.82 0.54
-0.14 0.82 0.54
-0.16 0.82 0.54
-0.18 0.82 0.54
-0.82 0.82 0.54
-0.84 0.82 0.54
-0.86 0.82 0.54
-0.88 0.82 0.54
-0.14 0.84 0.54
-0.16 0.84 0.54
-0.18 0.84 0.54
-0.2 0.84 0.54
-0.8 0.84 0.54
-0.82 0.84 0.54
-0.84 0.84 0.54
-0.86 0.84 0.54
-0.16 0.86 0.54
-0.18 0.86 0.54
-0.2 0.86 0.54
-0.22 0.86 0.54
-0.78 0.86 0.54
-0.8 0.86 0.54
-0.82 0.86 0.54
-0.84 0.86 0.54
-0.18 0.88 0.54
-0.2 0.88 0.54
-0.22 0.88 0.54
-0.24 0.88 0.54
-0.26 0.88 0.54
-0.74 0.88 0.54
-0.76 0.88 0.54
-0.78 0.88 0.54
-0.8 0.88 0.54
-0.82 0.88 0.54
-0.22 0.9 0.54
-0.24 0.9 0.54
-0.26 0.9 0.54
-0.28 0.9 0.54
-0.72 0.9 0.54
-0.74 0.9 0.54
-0.76 0.9 0.54
-0.78 0.9 0.54
-0.24 0.92 0.54
-0.26 0.92 0.54
-0.28 0.92 0.54
-0.3 0.92 0.54
-0.32 0.92 0.54
-0.34 0.92 0.54
-0.66 0.92 0.54
-0.68 0.92 0.54
-0.7 0.92 0.54
-0.72 0.92 0.54
-0.74 0.92 0.54
-0.76 0.92 0.54
-0.28 0.94 0.54
-0.3 0.94 0.54
-0.32 0.94 0.54
-0.34 0.94 0.54
-0.36 0.94 0.54
-0.38 0.94 0.54
-0.4 0.94 0.54
-0.6 0.94 0.54
-0.62 0.94 0.54
-0.64 0.94 0.54
-0.66 0.94 0.54
-0.68 0.94 0.54
-0.7 0.94 0.54
-0.72 0.94 0.54
-0.32 0.96 0.54
-0.34 0.96 0.54
-0.36 0.96 0.54
-0.38 0.96 0.54
-0.4 0.96 0.54
-0.42 0.96 0.54
-0.44 0.96 0.54
-0.46 0.96 0.54
-0.48 0.96 0.54
-0.5 0.96 0.54
-0.52 0.96 0.54
-0.54 0.96 0.54
-0.56 0.96 0.54
-0.58 0.96 0.54
-0.6 0.96 0.54
-0.62 0.96 0.54
-0.64 0.96 0.54
-0.66 0.96 0.54
-0.68 0.96 0.54
-0.38 0.98 0.54
-0.4 0.98 0.54
-0.42 0.98 0.54
-0.44 0.98 0.54
-0.46 0.98 0.54
-0.48 0.98 0.54
-0.5 0.98 0.54
-0.52 0.98 0.54
-0.54 0.98 0.54
-0.56 0.98 0.54
-0.58 0.98 0.54
-0.6 0.98 0.54
-0.62 0.98 0.54
-0.38 0.02 0.56
-0.4 0.02 0.56
-0.42 0.02 0.56
-0.44 0.02 0.56
-0.46 0.02 0.56
-0.48 0.02 0.56
-0.5 0.02 0.56
-0.52 0.02 0.56
-0.54 0.02 0.56
-0.56 0.02 0.56
-0.58 0.02 0.56
-0.6 0.02 0.56
-0.62 0.02 0.56
-0.32 0.04 0.56
-0.34 0.04 0.56
-0.36 0.04 0.56
-0.38 0.04 0.56
-0.4 0.04 0.56
-0.42 0.04 0.56
-0.44 0.04 0.56
-0.46 0.04 0.56
-0.48 0.04 0.56
-0.5 0.04 0.56
-0.52 0.04 0.56
-0.54 0.04 0.56
-0.56 0.04 0.56
-0.58 0.04 0.56
-0.6 0.04 0.56
-0.62 0.04 0.56
-0.64 0.04 0.56
-0.66 0.04 0.56
-0.68 0.04 0.56
-0.28 0.06 0.56
-0.3 0.06 0.56
-0.32 0.06 0.56
-0.34 0.06 0.56
-0.36 0.06 0.56
-0.38 0.06 0.56
-0.4 0.06 0.56
-0.42 0.06 0.56
-0.58 0.06 0.56
-0.6 0.06 0.56
-0.62 0.06 0.56
-0.64 0.06 0.56
-0.66 0.06 0.56
-0.68 0.06 0.56
-0.7 0.06 0.56
-0.72 0.06 0.56
-0.24 0.08 0.56
-0.26 0.08 0.56
-0.28 0.08 0.56
-0.3 0.08 0.56
-0.32 0.08 0.56
-0.34 0.08 0.56
-0.66 0.08 0.56
-0.68 0.08 0.56
-0.7 0.08 0.56
-0.72 0.08 0.56
-0.74 0.08 0.56
-0.76 0.08 0.56
-0.22 0.1 0.56
-0.24 0.1 0.56
-0.26 0.1 0.56
-0.28 0.1 0.56
-0.3 0.1 0.56
-0.7 0.1 0.56
-0.72 0.1 0.56
-0.74 0.1 0.56
-0.76 0.1 0.56
-0.78 0.1 0.56
-0.2 0.12 0.56
-0.22 0.12 0.56
-0.24 0.12 0.56
-0.26 0.12 0.56
-0.74 0.12 0.56
-0.76 0.12 0.56
-0.78 0.12 0.56
-0.8 0.12 0.56
-0.16 0.14 0.56
-0.18 0.14 0.56
-0.2 0.14 0.56
-0.22 0.14 0.56
-0.78 0.14 0.56
-0.8 0.14 0.56
-0.82 0.14 0.56
-0.84 0.14 0.56
-0.14 0.16 0.56
-0.16 0.16 0.56
-0.18 0.16 0.56
-0.2 0.16 0.56
-0.8 0.16 0.56
-0.82 0.16 0.56
-0.84 0.16 0.56
-0.86 0.16 0.56
-0.14 0.18 0.56
-0.16 0.18 0.56
-0.18 0.18 0.56
-0.82 0.18 0.56
-0.84 0.18 0.56
-0.86 0.18 0.56
-0.12 0.2 0.56
-0.14 0.2 0.56
-0.16 0.2 0.56
-0.84 0.2 0.56
-0.86 0.2 0.56
-0.88 0.2 0.56
-0.1 0.22 0.56
-0.12 0.22 0.56
-0.14 0.22 0.56
-0.86 0.22 0.56
-0.88 0.22 0.56
-0.9 0.22 0.56
-0.08 0.24 0.56
-0.1 0.24 0.56
-0.12 0.24 0.56
-0.88 0.24 0.56
-0.9 0.24 0.56
-0.92 0.24 0.56
-0.08 0.26 0.56
-0.1 0.26 0.56
-0.12 0.26 0.56
-0.88 0.26 0.56
-0.9 0.26 0.56
-0.92 0.26 0.56
-0.06 0.28 0.56
-0.08 0.28 0.56
-0.1 0.28 0.56
-0.9 0.28 0.56
-0.92 0.28 0.56
-0.94 0.28 0.56
-0.06 0.3 0.56
-0.08 0.3 0.56
-0.1 0.3 0.56
-0.9 0.3 0.56
-0.92 0.3 0.56
-0.94 0.3 0.56
-0.04 0.32 0.56
-0.06 0.32 0.56
-0.08 0.32 0.56
-0.92 0.32 0.56
-0.94 0.32 0.56
-0.96 0.32 0.56
-0.04 0.34 0.56
-0.06 0.34 0.56
-0.08 0.34 0.56
-0.92 0.34 0.56
-0.94 0.34 0.56
-0.96 0.34 0.56
-0.04 0.36 0.56
-0.06 0.36 0.56
-0.94 0.36 0.56
-0.96 0.36 0.56
-0.02 0.38 0.56
-0.04 0.38 0.56
-0.06 0.38 0.56
-0.94 0.38 0.56
-0.96 0.38 0.56
-0.98 0.38 0.56
-0.02 0.4 0.56
-0.04 0.4 0.56
-0.06 0.4 0.56
-0.94 0.4 0.56
-0.96 0.4 0.56
-0.98 0.4 0.56
-0.02 0.42 0.56
-0.04 0.42 0.56
-0.06 0.42 0.56
-0.94 0.42 0.56
-0.96 0.42 0.56
-0.98 0.42 0.56
-0.02 0.44 0.56
-0.04 0.44 0.56
-0.96 0.44 0.56
-0.98 0.44 0.56
-0.02 0.46 0.56
-0.04 0.46 0.56
-0.96 0.46 0.56
-0.98 0.46 0.56
-0.02 0.48 0.56
-0.04 0.48 0.56
-0.96 0.48 0.56
-0.98 0.48 0.56
-0.02 0.5 0.56
-0.04 0.5 0.56
-0.96 0.5 0.56
-0.98 0.5 0.56
-0.02 0.52 0.56
-0.04 0.52 0.56
-0.96 0.52 0.56
-0.98 0.52 0.56
-0.02 0.54 0.56
-0.04 0.54 0.56
-0.96 0.54 0.56
-0.98 0.54 0.56
-0.02 0.56 0.56
-0.04 0.56 0.56
-0.96 0.56 0.56
-0.98 0.56 0.56
-0.02 0.58 0.56
-0.04 0.58 0.56
-0.06 0.58 0.56
-0.94 0.58 0.56
-0.96 0.58 0.56
-0.98 0.58 0.56
-0.02 0.6 0.56
-0.04 0.6 0.56
-0.06 0.6 0.56
-0.94 0.6 0.56
-0.96 0.6 0.56
-0.98 0.6 0.56
-0.02 0.62 0.56
-0.04 0.62 0.56
-0.06 0.62 0.56
-0.94 0.62 0.56
-0.96 0.62 0.56
-0.98 0.62 0.56
-0.04 0.64 0.56
-0.06 0.64 0.56
-0.94 0.64 0.56
-0.96 0.64 0.56
-0.04 0.66 0.56
-0.06 0.66 0.56
-0.08 0.66 0.56
-0.92 0.66 0.56
-0.94 0.66 0.56
-0.96 0.66 0.56
-0.04 0.68 0.56
-0.06 0.68 0.56
-0.08 0.68 0.56
-0.92 0.68 0.56
-0.94 0.68 0.56
-0.96 0.68 0.56
-0.06 0.7 0.56
-0.08 0.7 0.56
-0.1 0.7 0.56
-0.9 0.7 0.56
-0.92 0.7 0.56
-0.94 0.7 0.56
-0.06 0.72 0.56
-0.08 0.72 0.56
-0.1 0.72 0.56
-0.9 0.72 0.56
-0.92 0.72 0.56
-0.94 0.72 0.56
-0.08 0.74 0.56
-0.1 0.74 0.56
-0.12 0.74 0.56
-0.88 0.74 0.56
-0.9 0.74 0.56
-0.92 0.74 0.56
-0.08 0.76 0.56
-0.1 0.76 0.56
-0.12 0.76 0.56
-0.88 0.76 0.56
-0.9 0.76 0.56
-0.92 0.76 0.56
-0.1 0.78 0.56
-0.12 0.78 0.56
-0.14 0.78 0.56
-0.86 0.78 0.56
-0.88 0.78 0.56
-0.9 0.78 0.56
-0.12 0.8 0.56
-0.14 0.8 0.56
-0.16 0.8 0.56
-0.84 0.8 0.56
-0.86 0.8 0.56
-0.88 0.8 0.56
-0.14 0.82 0.56
-0.16 0.82 0.56
-0.18 0.82 0.56
-0.82 0.82 0.56
-0.84 0.82 0.56
-0.86 0.82 0.56
-0.14 0.84 0.56
-0.16 0.84 0.56
-0.18 0.84 0.56
-0.2 0.84 0.56
-0.8 0.84 0.56
-0.82 0.84 0.56
-0.84 0.84 0.56
-0.86 0.84 0.56
-0.16 0.86 0.56
-0.18 0.86 0.56
-0.2 0.86 0.56
-0.22 0.86 0.56
-0.78 0.86 0.56
-0.8 0.86 0.56
-0.82 0.86 0.56
-0.84 0.86 0.56
-0.2 0.88 0.56
-0.22 0.88 0.56
-0.24 0.88 0.56
-0.26 0.88 0.56
-0.74 0.88 0.56
-0.76 0.88 0.56
-0.78 0.88 0.56
-0.8 0.88 0.56
-0.22 0.9 0.56
-0.24 0.9 0.56
-0.26 0.9 0.56
-0.28 0.9 0.56
-0.3 0.9 0.56
-0.7 0.9 0.56
-0.72 0.9 0.56
-0.74 0.9 0.56
-0.76 0.9 0.56
-0.78 0.9 0.56
-0.24 0.92 0.56
-0.26 0.92 0.56
-0.28 0.92 0.56
-0.3 0.92 0.56
-0.32 0.92 0.56
-0.34 0.92 0.56
-0.66 0.92 0.56
-0.68 0.92 0.56
-0.7 0.92 0.56
-0.72 0.92 0.56
-0.74 0.92 0.56
-0.76 0.92 0.56
-0.28 0.94 0.56
-0.3 0.94 0.56
-0.32 0.94 0.56
-0.34 0.94 0.56
-0.36 0.94 0.56
-0.38 0.94 0.56
-0.4 0.94 0.56
-0.42 0.94 0.56
-0.58 0.94 0.56
-0.6 0.94 0.56
-0.62 0.94 0.56
-0.64 0.94 0.56
-0.66 0.94 0.56
-0.68 0.94 0.56
-0.7 0.94 0.56
-0.72 0.94 0.56
-0.32 0.96 0.56
-0.34 0.96 0.56
-0.36 0.96 0.56
-0.38 0.96 0.56
-0.4 0.96 0.56
-0.42 0.96 0.56
-0.44 0.96 0.56
-0.46 0.96 0.56
-0.48 0.96 0.56
-0.5 0.96 0.56
-0.52 0.96 0.56
-0.54 0.96 0.56
-0.56 0.96 0.56
-0.58 0.96 0.56
-0.6 0.96 0.56
-0.62 0.96 0.56
-0.64 0.96 0.56
-0.66 0.96 0.56
-0.68 0.96 0.56
-0.38 0.98 0.56
-0.4 0.98 0.56
-0.42 0.98 0.56
-0.44 0.98 0.56
-0.46 0.98 0.56
-0.48 0.98 0.56
-0.5 0.98 0.56
-0.52 0.98 0.56
-0.54 0.98 0.56
-0.56 0.98 0.56
-0.58 0.98 0.56
-0.6 0.98 0.56
-0.62 0.98 0.56
-0.4 0.02 0.58
-0.42 0.02 0.58
-0.44 0.02 0.58
-0.46 0.02 0.58
-0.48 0.02 0.58
-0.5 0.02 0.58
-0.52 0.02 0.58
-0.54 0.02 0.58
-0.56 0.02 0.58
-0.58 0.02 0.58
-0.6 0.02 0.58
-0.34 0.04 0.58
-0.36 0.04 0.58
-0.38 0.04 0.58
-0.4 0.04 0.58
-0.42 0.04 0.58
-0.44 0.04 0.58
-0.46 0.04 0.58
-0.48 0.04 0.58
-0.5 0.04 0.58
-0.52 0.04 0.58
-0.54 0.04 0.58
-0.56 0.04 0.58
-0.58 0.04 0.58
-0.6 0.04 0.58
-0.62 0.04 0.58
-0.64 0.04 0.58
-0.66 0.04 0.58
-0.28 0.06 0.58
-0.3 0.06 0.58
-0.32 0.06 0.58
-0.34 0.06 0.58
-0.36 0.06 0.58
-0.38 0.06 0.58
-0.4 0.06 0.58
-0.42 0.06 0.58
-0.44 0.06 0.58
-0.56 0.06 0.58
-0.58 0.06 0.58
-0.6 0.06 0.58
-0.62 0.06 0.58
-0.64 0.06 0.58
-0.66 0.06 0.58
-0.68 0.06 0.58
-0.7 0.06 0.58
-0.72 0.06 0.58
-0.26 0.08 0.58
-0.28 0.08 0.58
-0.3 0.08 0.58
-0.32 0.08 0.58
-0.34 0.08 0.58
-0.66 0.08 0.58
-0.68 0.08 0.58
-0.7 0.08 0.58
-0.72 0.08 0.58
-0.74 0.08 0.58
-0.22 0.1 0.58
-0.24 0.1 0.58
-0.26 0.1 0.58
-0.28 0.1 0.58
-0.3 0.1 0.58
-0.7 0.1 0.58
-0.72 0.1 0.58
-0.74 0.1 0.58
-0.76 0.1 0.58
-0.78 0.1 0.58
-0.2 0.12 0.58
-0.22 0.12 0.58
-0.24 0.12 0.58
-0.26 0.12 0.58
-0.74 0.12 0.58
-0.76 0.12 0.58
-0.78 0.12 0.58
-0.8 0.12 0.58
-0.18 0.14 0.58
-0.2 0.14 0.58
-0.22 0.14 0.58
-0.24 0.14 0.58
-0.76 0.14 0.58
-0.78 0.14 0.58
-0.8 0.14 0.58
-0.82 0.14 0.58
-0.16 0.16 0.58
-0.18 0.16 0.58
-0.2 0.16 0.58
-0.8 0.16 0.58
-0.82 0.16 0.58
-0.84 0.16 0.58
-0.14 0.18 0.58
-0.16 0.18 0.58
-0.18 0.18 0.58
-0.82 0.18 0.58
-0.84 0.18 0.58
-0.86 0.18 0.58
-0.12 0.2 0.58
-0.14 0.2 0.58
-0.16 0.2 0.58
-0.84 0.2 0.58
-0.86 0.2 0.58
-0.88 0.2 0.58
-0.1 0.22 0.58
-0.12 0.22 0.58
-0.14 0.22 0.58
-0.86 0.22 0.58
-0.88 0.22 0.58
-0.9 0.22 0.58
-0.1 0.24 0.58
-0.12 0.24 0.58
-0.14 0.24 0.58
-0.86 0.24 0.58
-0.88 0.24 0.58
-0.9 0.24 0.58
-0.08 0.26 0.58
-0.1 0.26 0.58
-0.12 0.26 0.58
-0.88 0.26 0.58
-0.9 0.26 0.58
-0.92 0.26 0.58
-0.06 0.28 0.58
-0.08 0.28 0.58
-0.1 0.28 0.58
-0.9 0.28 0.58
-0.92 0.28 0.58
-0.94 0.28 0.58
-0.06 0.3 0.58
-0.08 0.3 0.58
-0.1 0.3 0.58
-0.9 0.3 0.58
-0.92 0.3 0.58
-0.94 0.3 0.58
-0.06 0.32 0.58
-0.08 0.32 0.58
-0.92 0.32 0.58
-0.94 0.32 0.58
-0.04 0.34 0.58
-0.06 0.34 0.58
-0.08 0.34 0.58
-0.92 0.34 0.58
-0.94 0.34 0.58
-0.96 0.34 0.58
-0.04 0.36 0.58
-0.06 0.36 0.58
-0.94 0.36 0.58
-0.96 0.36 0.58
-0.04 0.38 0.58
-0.06 0.38 0.58
-0.94 0.38 0.58
-0.96 0.38 0.58
-0.02 0.4 0.58
-0.04 0.4 0.58
-0.06 0.4 0.58
-0.94 0.4 0.58
-0.96 0.4 0.58
-0.98 0.4 0.58
-0.02 0.42 0.58
-0.04 0.42 0.58
-0.06 0.42 0.58
-0.94 0.42 0.58
-0.96 0.42 0.58
-0.98 0.42 0.58
-0.02 0.44 0.58
-0.04 0.44 0.58
-0.06 0.44 0.58
-0.94 0.44 0.58
-0.96 0.44 0.58
-0.98 0.44 0.58
-0.02 0.46 0.58
-0.04 0.46 0.58
-0.96 0.46 0.58
-0.98 0.46 0.58
-0.02 0.48 0.58
-0.04 0.48 0.58
-0.96 0.48 0.58
-0.98 0.48 0.58
-0.02 0.5 0.58
-0.04 0.5 0.58
-0.96 0.5 0.58
-0.98 0.5 0.58
-0.02 0.52 0.58
-0.04 0.52 0.58
-0.96 0.52 0.58
-0.98 0.52 0.58
-0.02 0.54 0.58
-0.04 0.54 0.58
-0.96 0.54 0.58
-0.98 0.54 0.58
-0.02 0.56 0.58
-0.04 0.56 0.58
-0.06 0.56 0.58
-0.94 0.56 0.58
-0.96 0.56 0.58
-0.98 0.56 0.58
-0.02 0.58 0.58
-0.04 0.58 0.58
-0.06 0.58 0.58
-0.94 0.58 0.58
-0.96 0.58 0.58
-0.98 0.58 0.58
-0.02 0.6 0.58
-0.04 0.6 0.58
-0.06 0.6 0.58
-0.94 0.6 0.58
-0.96 0.6 0.58
-0.98 0.6 0.58
-0.04 0.62 0.58
-0.06 0.62 0.58
-0.94 0.62 0.58
-0.96 0.62 0.58
-0.04 0.64 0.58
-0.06 0.64 0.58
-0.94 0.64 0.58
-0.96 0.64 0.58
-0.04 0.66 0.58
-0.06 0.66 0.58
-0.08 0.66 0.58
-0.92 0.66 0.58
-0.94 0.66 0.58
-0.96 0.66 0.58
-0.06 0.68 0.58
-0.08 0.68 0.58
-0.92 0.68 0.58
-0.94 0.68 0.58
-0.06 0.7 0.58
-0.08 0.7 0.58
-0.1 0.7 0.58
-0.9 0.7 0.58
-0.92 0.7 0.58
-0.94 0.7 0.58
-0.06 0.72 0.58
-0.08 0.72 0.58
-0.1 0.72 0.58
-0.9 0.72 0.58
-0.92 0.72 0.58
-0.94 0.72 0.58
-0.08 0.74 0.58
-0.1 0.74 0.58
-0.12 0.74 0.58
-0.88 0.74 0.58
-0.9 0.74 0.58
-0.92 0.74 0.58
-0.1 0.76 0.58
-0.12 0.76 0.58
-0.14 0.76 0.58
-0.86 0.76 0.58
-0.88 0.76 0.58
-0.9 0.76 0.58
-0.1 0.78 0.58
-0.12 0.78 0.58
-0.14 0.78 0.58
-0.86 0.78 0.58
-0.88 0.78 0.58
-0.9 0.78 0.58
-0.12 0.8 0.58
-0.14 0.8 0.58
-0.16 0.8 0.58
-0.84 0.8 0.58
-0.86 0.8 0.58
-0.88 0.8 0.58
-0.14 0.82 0.58
-0.16 0.82 0.58
-0.18 0.82 0.58
-0.82 0.82 0.58
-0.84 0.82 0.58
-0.86 0.82 0.58
-0.16 0.84 0.58
-0.18 0.84 0.58
-0.2 0.84 0.58
-0.8 0.84 0.58
-0.82 0.84 0.58
-0.84 0.84 0.58
-0.18 0.86 0.58
-0.2 0.86 0.58
-0.22 0.86 0.58
-0.24 0.86 0.58
-0.76 0.86 0.58
-0.78 0.86 0.58
-0.8 0.86 0.58
-0.82 0.86 0.58
-0.2 0.88 0.58
-0.22 0.88 0.58
-0.24 0.88 0.58
-0.26 0.88 0.58
-0.74 0.88 0.58
-0.76 0.88 0.58
-0.78 0.88 0.58
-0.8 0.88 0.58
-0.22 0.9 0.58
-0.24 0.9 0.58
-0.26 0.9 0.58
-0.28 0.9 0.58
-0.3 0.9 0.58
-0.7 0.9 0.58
-0.72 0.9 0.58
-0.74 0.9 0.58
-0.76 0.9 0.58
-0.78 0.9 0.58
-0.26 0.92 0.58
-0.28 0.92 0.58
-0.3 0.92 0.58
-0.32 0.92 0.58
-0.34 0.92 0.58
-0.66 0.92 0.58
-0.68 0.92 0.58
-0.7 0.92 0.58
-0.72 0.92 0.58
-0.74 0.92 0.58
-0.28 0.94 0.58
-0.3 0.94 0.58
-0.32 0.94 0.58
-0.34 0.94 0.58
-0.36 0.94 0.58
-0.38 0.94 0.58
-0.4 0.94 0.58
-0.42 0.94 0.58
-0.44 0.94 0.58
-0.56 0.94 0.58
-0.58 0.94 0.58
-0.6 0.94 0.58
-0.62 0.94 0.58
-0.64 0.94 0.58
-0.66 0.94 0.58
-0.68 0.94 0.58
-0.7 0.94 0.58
-0.72 0.94 0.58
-0.34 0.96 0.58
-0.36 0.96 0.58
-0.38 0.96 0.58
-0.4 0.96 0.58
-0.42 0.96 0.58
-0.44 0.96 0.58
-0.46 0.96 0.58
-0.48 0.96 0.58
-0.5 0.96 0.58
-0.52 0.96 0.58
-0.54 0.96 0.58
-0.56 0.96 0.58
-0.58 0.96 0.58
-0.6 0.96 0.58
-0.62 0.96 0.58
-0.64 0.96 0.58
-0.66 0.96 0.58
-0.4 0.98 0.58
-0.42 0.98 0.58
-0.44 0.98 0.58
-0.46 0.98 0.58
-0.48 0.98 0.58
-0.5 0.98 0.58
-0.52 0.98 0.58
-0.54 0.98 0.58
-0.56 0.98 0.58
-0.58 0.98 0.58
-0.6 0.98 0.58
-0.42 0.02 0.6
-0.44 0.02 0.6
-0.46 0.02 0.6
-0.48 0.02 0.6
-0.5 0.02 0.6
-0.52 0.02 0.6
-0.54 0.02 0.6
-0.56 0.02 0.6
-0.58 0.02 0.6
-0.34 0.04 0.6
-0.36 0.04 0.6
-0.38 0.04 0.6
-0.4 0.04 0.6
-0.42 0.04 0.6
-0.44 0.04 0.6
-0.46 0.04 0.6
-0.48 0.04 0.6
-0.5 0.04 0.6
-0.52 0.04 0.6
-0.54 0.04 0.6
-0.56 0.04 0.6
-0.58 0.04 0.6
-0.6 0.04 0.6
-0.62 0.04 0.6
-0.64 0.04 0.6
-0.66 0.04 0.6
-0.3 0.06 0.6
-0.32 0.06 0.6
-0.34 0.06 0.6
-0.36 0.06 0.6
-0.38 0.06 0.6
-0.4 0.06 0.6
-0.42 0.06 0.6
-0.44 0.06 0.6
-0.46 0.06 0.6
-0.48 0.06 0.6
-0.5 0.06 0.6
-0.52 0.06 0.6
-0.54 0.06 0.6
-0.56 0.06 0.6
-0.58 0.06 0.6
-0.6 0.06 0.6
-0.62 0.06 0.6
-0.64 0.06 0.6
-0.66 0.06 0.6
-0.68 0.06 0.6
-0.7 0.06 0.6
-0.26 0.08 0.6
-0.28 0.08 0.6
-0.3 0.08 0.6
-0.32 0.08 0.6
-0.34 0.08 0.6
-0.36 0.08 0.6
-0.64 0.08 0.6
-0.66 0.08 0.6
-0.68 0.08 0.6
-0.7 0.08 0.6
-0.72 0.08 0.6
-0.74 0.08 0.6
-0.22 0.1 0.6
-0.24 0.1 0.6
-0.26 0.1 0.6
-0.28 0.1 0.6
-0.3 0.1 0.6
-0.7 0.1 0.6
-0.72 0.1 0.6
-0.74 0.1 0.6
-0.76 0.1 0.6
-0.78 0.1 0.6
-0.2 0.12 0.6
-0.22 0.12 0.6
-0.24 0.12 0.6
-0.26 0.12 0.6
-0.28 0.12 0.6
-0.72 0.12 0.6
-0.74 0.12 0.6
-0.76 0.12 0.6
-0.78 0.12 0.6
-0.8 0.12 0.6
-0.18 0.14 0.6
-0.2 0.14 0.6
-0.22 0.14 0.6
-0.24 0.14 0.6
-0.76 0.14 0.6
-0.78 0.14 0.6
-0.8 0.14 0.6
-0.82 0.14 0.6
-0.16 0.16 0.6
-0.18 0.16 0.6
-0.2 0.16 0.6
-0.22 0.16 0.6
-0.78 0.16 0.6
-0.8 0.16 0.6
-0.82 0.16 0.6
-0.84 0.16 0.6
-0.14 0.18 0.6
-0.16 0.18 0.6
-0.18 0.18 0.6
-0.82 0.18 0.6
-0.84 0.18 0.6
-0.86 0.18 0.6
-0.12 0.2 0.6
-0.14 0.2 0.6
-0.16 0.2 0.6
-0.84 0.2 0.6
-0.86 0.2 0.6
-0.88 0.2 0.6
-0.1 0.22 0.6
-0.12 0.22 0.6
-0.14 0.22 0.6
-0.16 0.22 0.6
-0.84 0.22 0.6
-0.86 0.22 0.6
-0.88 0.22 0.6
-0.9 0.22 0.6
-0.1 0.24 0.6
-0.12 0.24 0.6
-0.14 0.24 0.6
-0.86 0.24 0.6
-0.88 0.24 0.6
-0.9 0.24 0.6
-0.08 0.26 0.6
-0.1 0.26 0.6
-0.12 0.26 0.6
-0.88 0.26 0.6
-0.9 0.26 0.6
-0.92 0.26 0.6
-0.08 0.28 0.6
-0.1 0.28 0.6
-0.12 0.28 0.6
-0.88 0.28 0.6
-0.9 0.28 0.6
-0.92 0.28 0.6
-0.06 0.3 0.6
-0.08 0.3 0.6
-0.1 0.3 0.6
-0.9 0.3 0.6
-0.92 0.3 0.6
-0.94 0.3 0.6
-0.06 0.32 0.6
-0.08 0.32 0.6
-0.92 0.32 0.6
-0.94 0.32 0.6
-0.04 0.34 0.6
-0.06 0.34 0.6
-0.08 0.34 0.6
-0.92 0.34 0.6
-0.94 0.34 0.6
-0.96 0.34 0.6
-0.04 0.36 0.6
-0.06 0.36 0.6
-0.08 0.36 0.6
-0.92 0.36 0.6
-0.94 0.36 0.6
-0.96 0.36 0.6
-0.04 0.38 0.6
-0.06 0.38 0.6
-0.94 0.38 0.6
-0.96 0.38 0.6
-0.04 0.4 0.6
-0.06 0.4 0.6
-0.94 0.4 0.6
-0.96 0.4 0.6
-0.02 0.42 0.6
-0.04 0.42 0.6
-0.06 0.42 0.6
-0.94 0.42 0.6
-0.96 0.42 0.6
-0.98 0.42 0.6
-0.02 0.44 0.6
-0.04 0.44 0.6
-0.06 0.44 0.6
-0.94 0.44 0.6
-0.96 0.44 0.6
-0.98 0.44 0.6
-0.02 0.46 0.6
-0.04 0.46 0.6
-0.06 0.46 0.6
-0.94 0.46 0.6
-0.96 0.46 0.6
-0.98 0.46 0.6
-0.02 0.48 0.6
-0.04 0.48 0.6
-0.06 0.48 0.6
-0.94 0.48 0.6
-0.96 0.48 0.6
-0.98 0.48 0.6
-0.02 0.5 0.6
-0.04 0.5 0.6
-0.06 0.5 0.6
-0.94 0.5 0.6
-0.96 0.5 0.6
-0.98 0.5 0.6
-0.02 0.52 0.6
-0.04 0.52 0.6
-0.06 0.52 0.6
-0.94 0.52 0.6
-0.96 0.52 0.6
-0.98 0.52 0.6
-0.02 0.54 0.6
-0.04 0.54 0.6
-0.06 0.54 0.6
-0.94 0.54 0.6
-0.96 0.54 0.6
-0.98 0.54 0.6
-0.02 0.56 0.6
-0.04 0.56 0.6
-0.06 0.56 0.6
-0.94 0.56 0.6
-0.96 0.56 0.6
-0.98 0.56 0.6
-0.02 0.58 0.6
-0.04 0.58 0.6
-0.06 0.58 0.6
-0.94 0.58 0.6
-0.96 0.58 0.6
-0.98 0.58 0.6
-0.04 0.6 0.6
-0.06 0.6 0.6
-0.94 0.6 0.6
-0.96 0.6 0.6
-0.04 0.62 0.6
-0.06 0.62 0.6
-0.94 0.62 0.6
-0.96 0.62 0.6
-0.04 0.64 0.6
-0.06 0.64 0.6
-0.08 0.64 0.6
-0.92 0.64 0.6
-0.94 0.64 0.6
-0.96 0.64 0.6
-0.04 0.66 0.6
-0.06 0.66 0.6
-0.08 0.66 0.6
-0.92 0.66 0.6
-0.94 0.66 0.6
-0.96 0.66 0.6
-0.06 0.68 0.6
-0.08 0.68 0.6
-0.92 0.68 0.6
-0.94 0.68 0.6
-0.06 0.7 0.6
-0.08 0.7 0.6
-0.1 0.7 0.6
-0.9 0.7 0.6
-0.92 0.7 0.6
-0.94 0.7 0.6
-0.08 0.72 0.6
-0.1 0.72 0.6
-0.12 0.72 0.6
-0.88 0.72 0.6
-0.9 0.72 0.6
-0.92 0.72 0.6
-0.08 0.74 0.6
-0.1 0.74 0.6
-0.12 0.74 0.6
-0.88 0.74 0.6
-0.9 0.74 0.6
-0.92 0.74 0.6
-0.1 0.76 0.6
-0.12 0.76 0.6
-0.14 0.76 0.6
-0.86 0.76 0.6
-0.88 0.76 0.6
-0.9 0.76 0.6
-0.1 0.78 0.6
-0.12 0.78 0.6
-0.14 0.78 0.6
-0.16 0.78 0.6
-0.84 0.78 0.6
-0.86 0.78 0.6
-0.88 0.78 0.6
-0.9 0.78 0.6
-0.12 0.8 0.6
-0.14 0.8 0.6
-0.16 0.8 0.6
-0.84 0.8 0.6
-0.86 0.8 0.6
-0.88 0.8 0.6
-0.14 0.82 0.6
-0.16 0.82 0.6
-0.18 0.82 0.6
-0.82 0.82 0.6
-0.84 0.82 0.6
-0.86 0.82 0.6
-0.16 0.84 0.6
-0.18 0.84 0.6
-0.2 0.84 0.6
-0.22 0.84 0.6
-0.78 0.84 0.6
-0.8 0.84 0.6
-0.82 0.84 0.6
-0.84 0.84 0.6
-0.18 0.86 0.6
-0.2 0.86 0.6
-0.22 0.86 0.6
-0.24 0.86 0.6
-0.76 0.86 0.6
-0.78 0.86 0.6
-0.8 0.86 0.6
-0.82 0.86 0.6
-0.2 0.88 0.6
-0.22 0.88 0.6
-0.24 0.88 0.6
-0.26 0.88 0.6
-0.28 0.88 0.6
-0.72 0.88 0.6
-0.74 0.88 0.6
-0.76 0.88 0.6
-0.78 0.88 0.6
-0.8 0.88 0.6
-0.22 0.9 0.6
-0.24 0.9 0.6
-0.26 0.9 0.6
-0.28 0.9 0.6
-0.3 0.9 0.6
-0.7 0.9 0.6
-0.72 0.9 0.6
-0.74 0.9 0.6
-0.76 0.9 0.6
-0.78 0.9 0.6
-0.26 0.92 0.6
-0.28 0.92 0.6
-0.3 0.92 0.6
-0.32 0.92 0.6
-0.34 0.92 0.6
-0.36 0.92 0.6
-0.64 0.92 0.6
-0.66 0.92 0.6
-0.68 0.92 0.6
-0.7 0.92 0.6
-0.72 0.92 0.6
-0.74 0.92 0.6
-0.3 0.94 0.6
-0.32 0.94 0.6
-0.34 0.94 0.6
-0.36 0.94 0.6
-0.38 0.94 0.6
-0.4 0.94 0.6
-0.42 0.94 0.6
-0.44 0.94 0.6
-0.46 0.94 0.6
-0.48 0.94 0.6
-0.5 0.94 0.6
-0.52 0.94 0.6
-0.54 0.94 0.6
-0.56 0.94 0.6
-0.58 0.94 0.6
-0.6 0.94 0.6
-0.62 0.94 0.6
-0.64 0.94 0.6
-0.66 0.94 0.6
-0.68 0.94 0.6
-0.7 0.94 0.6
-0.34 0.96 0.6
-0.36 0.96 0.6
-0.38 0.96 0.6
-0.4 0.96 0.6
-0.42 0.96 0.6
-0.44 0.96 0.6
-0.46 0.96 0.6
-0.48 0.96 0.6
-0.5 0.96 0.6
-0.52 0.96 0.6
-0.54 0.96 0.6
-0.56 0.96 0.6
-0.58 0.96 0.6
-0.6 0.96 0.6
-0.62 0.96 0.6
-0.64 0.96 0.6
-0.66 0.96 0.6
-0.42 0.98 0.6
-0.44 0.98 0.6
-0.46 0.98 0.6
-0.48 0.98 0.6
-0.5 0.98 0.6
-0.52 0.98 0.6
-0.54 0.98 0.6
-0.56 0.98 0.6
-0.58 0.98 0.6
-0.44 0.02 0.62
-0.46 0.02 0.62
-0.48 0.02 0.62
-0.5 0.02 0.62
-0.52 0.02 0.62
-0.54 0.02 0.62
-0.56 0.02 0.62
-0.36 0.04 0.62
-0.38 0.04 0.62
-0.4 0.04 0.62
-0.42 0.04 0.62
-0.44 0.04 0.62
-0.46 0.04 0.62
-0.48 0.04 0.62
-0.5 0.04 0.62
-0.52 0.04 0.62
-0.54 0.04 0.62
-0.56 0.04 0.62
-0.58 0.04 0.62
-0.6 0.04 0.62
-0.62 0.04 0.62
-0.64 0.04 0.62
-0.3 0.06 0.62
-0.32 0.06 0.62
-0.34 0.06 0.62
-0.36 0.06 0.62
-0.38 0.06 0.62
-0.4 0.06 0.62
-0.42 0.06 0.62
-0.44 0.06 0.62
-0.46 0.06 0.62
-0.48 0.06 0.62
-0.5 0.06 0.62
-0.52 0.06 0.62
-0.54 0.06 0.62
-0.56 0.06 0.62
-0.58 0.06 0.62
-0.6 0.06 0.62
-0.62 0.06 0.62
-0.64 0.06 0.62
-0.66 0.06 0.62
-0.68 0.06 0.62
-0.7 0.06 0.62
-0.26 0.08 0.62
-0.28 0.08 0.62
-0.3 0.08 0.62
-0.32 0.08 0.62
-0.34 0.08 0.62
-0.36 0.08 0.62
-0.38 0.08 0.62
-0.62 0.08 0.62
-0.64 0.08 0.62
-0.66 0.08 0.62
-0.68 0.08 0.62
-0.7 0.08 0.62
-0.72 0.08 0.62
-0.74 0.08 0.62
-0.24 0.1 0.62
-0.26 0.1 0.62
-0.28 0.1 0.62
-0.3 0.1 0.62
-0.32 0.1 0.62
-0.68 0.1 0.62
-0.7 0.1 0.62
-0.72 0.1 0.62
-0.74 0.1 0.62
-0.76 0.1 0.62
-0.2 0.12 0.62
-0.22 0.12 0.62
-0.24 0.12 0.62
-0.26 0.12 0.62
-0.28 0.12 0.62
-0.72 0.12 0.62
-0.74 0.12 0.62
-0.76 0.12 0.62
-0.78 0.12 0.62
-0.8 0.12 0.62
-0.18 0.14 0.62
-0.2 0.14 0.62
-0.22 0.14 0.62
-0.24 0.14 0.62
-0.76 0.14 0.62
-0.78 0.14 0.62
-0.8 0.14 0.62
-0.82 0.14 0.62
-0.16 0.16 0.62
-0.18 0.16 0.62
-0.2 0.16 0.62
-0.22 0.16 0.62
-0.78 0.16 0.62
-0.8 0.16 0.62
-0.82 0.16 0.62
-0.84 0.16 0.62
-0.14 0.18 0.62
-0.16 0.18 0.62
-0.18 0.18 0.62
-0.2 0.18 0.62
-0.8 0.18 0.62
-0.82 0.18 0.62
-0.84 0.18 0.62
-0.86 0.18 0.62
-0.12 0.2 0.62
-0.14 0.2 0.62
-0.16 0.2 0.62
-0.18 0.2 0.62
-0.82 0.2 0.62
-0.84 0.2 0.62
-0.86 0.2 0.62
-0.88 0.2 0.62
-0.12 0.22 0.62
-0.14 0.22 0.62
-0.16 0.22 0.62
-0.84 0.22 0.62
-0.86 0.22 0.62
-0.88 0.22 0.62
-0.1 0.24 0.62
-0.12 0.24 0.62
-0.14 0.24 0.62
-0.86 0.24 0.62
-0.88 0.24 0.62
-0.9 0.24 0.62
-0.08 0.26 0.62
-0.1 0.26 0.62
-0.12 0.26 0.62
-0.88 0.26 0.62
-0.9 0.26 0.62
-0.92 0.26 0.62
-0.08 0.28 0.62
-0.1 0.28 0.62
-0.12 0.28 0.62
-0.88 0.28 0.62
-0.9 0.28 0.62
-0.92 0.28 0.62
-0.06 0.3 0.62
-0.08 0.3 0.62
-0.1 0.3 0.62
-0.9 0.3 0.62
-0.92 0.3 0.62
-0.94 0.3 0.62
-0.06 0.32 0.62
-0.08 0.32 0.62
-0.1 0.32 0.62
-0.9 0.32 0.62
-0.92 0.32 0.62
-0.94 0.32 0.62
-0.06 0.34 0.62
-0.08 0.34 0.62
-0.92 0.34 0.62
-0.94 0.34 0.62
-0.04 0.36 0.62
-0.06 0.36 0.62
-0.08 0.36 0.62
-0.92 0.36 0.62
-0.94 0.36 0.62
-0.96 0.36 0.62
-0.04 0.38 0.62
-0.06 0.38 0.62
-0.08 0.38 0.62
-0.92 0.38 0.62
-0.94 0.38 0.62
-0.96 0.38 0.62
-0.04 0.4 0.62
-0.06 0.4 0.62
-0.94 0.4 0.62
-0.96 0.4 0.62
-0.04 0.42 0.62
-0.06 0.42 0.62
-0.94 0.42 0.62
-0.96 0.42 0.62
-0.02 0.44 0.62
-0.04 0.44 0.62
-0.06 0.44 0.62
-0.94 0.44 0.62
-0.96 0.44 0.62
-0.98 0.44 0.62
-0.02 0.46 0.62
-0.04 0.46 0.62
-0.06 0.46 0.62
-0.94 0.46 0.62
-0.96 0.46 0.62
-0.98 0.46 0.62
-0.02 0.48 0.62
-0.04 0.48 0.62
-0.06 0.48 0.62
-0.94 0.48 0.62
-0.96 0.48 0.62
-0.98 0.48 0.62
-0.02 0.5 0.62
-0.04 0.5 0.62
-0.06 0.5 0.62
-0.94 0.5 0.62
-0.96 0.5 0.62
-0.98 0.5 0.62
-0.02 0.52 0.62
-0.04 0.52 0.62
-0.06 0.52 0.62
-0.94 0.52 0.62
-0.96 0.52 0.62
-0.98 0.52 0.62
-0.02 0.54 0.62
-0.04 0.54 0.62
-0.06 0.54 0.62
-0.94 0.54 0.62
-0.96 0.54 0.62
-0.98 0.54 0.62
-0.02 0.56 0.62
-0.04 0.56 0.62
-0.06 0.56 0.62
-0.94 0.56 0.62
-0.96 0.56 0.62
-0.98 0.56 0.62
-0.04 0.58 0.62
-0.06 0.58 0.62
-0.94 0.58 0.62
-0.96 0.58 0.62
-0.04 0.6 0.62
-0.06 0.6 0.62
-0.94 0.6 0.62
-0.96 0.6 0.62
-0.04 0.62 0.62
-0.06 0.62 0.62
-0.08 0.62 0.62
-0.92 0.62 0.62
-0.94 0.62 0.62
-0.96 0.62 0.62
-0.04 0.64 0.62
-0.06 0.64 0.62
-0.08 0.64 0.62
-0.92 0.64 0.62
-0.94 0.64 0.62
-0.96 0.64 0.62
-0.06 0.66 0.62
-0.08 0.66 0.62
-0.92 0.66 0.62
-0.94 0.66 0.62
-0.06 0.68 0.62
-0.08 0.68 0.62
-0.1 0.68 0.62
-0.9 0.68 0.62
-0.92 0.68 0.62
-0.94 0.68 0.62
-0.06 0.7 0.62
-0.08 0.7 0.62
-0.1 0.7 0.62
-0.9 0.7 0.62
-0.92 0.7 0.62
-0.94 0.7 0.62
-0.08 0.72 0.62
-0.1 0.72 0.62
-0.12 0.72 0.62
-0.88 0.72 0.62
-0.9 0.72 0.62
-0.92 0.72 0.62
-0.08 0.74 0.62
-0.1 0.74 0.62
-0.12 0.74 0.62
-0.88 0.74 0.62
-0.9 0.74 0.62
-0.92 0.74 0.62
-0.1 0.76 0.62
-0.12 0.76 0.62
-0.14 0.76 0.62
-0.86 0.76 0.62
-0.88 0.76 0.62
-0.9 0.76 0.62
-0.12 0.78 0.62
-0.14 0.78 0.62
-0.16 0.78 0.62
-0.84 0.78 0.62
-0.86 0.78 0.62
-0.88 0.78 0.62
-0.12 0.8 0.62
-0.14 0.8 0.62
-0.16 0.8 0.62
-0.18 0.8 0.62
-0.82 0.8 0.62
-0.84 0.8 0.62
-0.86 0.8 0.62
-0.88 0.8 0.62
-0.14 0.82 0.62
-0.16 0.82 0.62
-0.18 0.82 0.62
-0.2 0.82 0.62
-0.8 0.82 0.62
-0.82 0.82 0.62
-0.84 0.82 0.62
-0.86 0.82 0.62
-0.16 0.84 0.62
-0.18 0.84 0.62
-0.2 0.84 0.62
-0.22 0.84 0.62
-0.78 0.84 0.62
-0.8 0.84 0.62
-0.82 0.84 0.62
-0.84 0.84 0.62
-0.18 0.86 0.62
-0.2 0.86 0.62
-0.22 0.86 0.62
-0.24 0.86 0.62
-0.76 0.86 0.62
-0.78 0.86 0.62
-0.8 0.86 0.62
-0.82 0.86 0.62
-0.2 0.88 0.62
-0.22 0.88 0.62
-0.24 0.88 0.62
-0.26 0.88 0.62
-0.28 0.88 0.62
-0.72 0.88 0.62
-0.74 0.88 0.62
-0.76 0.88 0.62
-0.78 0.88 0.62
-0.8 0.88 0.62
-0.24 0.9 0.62
-0.26 0.9 0.62
-0.28 0.9 0.62
-0.3 0.9 0.62
-0.32 0.9 0.62
-0.68 0.9 0.62
-0.7 0.9 0.62
-0.72 0.9 0.62
-0.74 0.9 0.62
-0.76 0.9 0.62
-0.26 0.92 0.62
-0.28 0.92 0.62
-0.3 0.92 0.62
-0.32 0.92 0.62
-0.34 0.92 0.62
-0.36 0.92 0.62
-0.38 0.92 0.62
-0.62 0.92 0.62
-0.64 0.92 0.62
-0.66 0.92 0.62
-0.68 0.92 0.62
-0.7 0.92 0.62
-0.72 0.92 0.62
-0.74 0.92 0.62
-0.3 0.94 0.62
-0.32 0.94 0.62
-0.34 0.94 0.62
-0.36 0.94 0.62
-0.38 0.94 0.62
-0.4 0.94 0.62
-0.42 0.94 0.62
-0.44 0.94 0.62
-0.46 0.94 0.62
-0.48 0.94 0.62
-0.5 0.94 0.62
-0.52 0.94 0.62
-0.54 0.94 0.62
-0.56 0.94 0.62
-0.58 0.94 0.62
-0.6 0.94 0.62
-0.62 0.94 0.62
-0.64 0.94 0.62
-0.66 0.94 0.62
-0.68 0.94 0.62
-0.7 0.94 0.62
-0.36 0.96 0.62
-0.38 0.96 0.62
-0.4 0.96 0.62
-0.42 0.96 0.62
-0.44 0.96 0.62
-0.46 0.96 0.62
-0.48 0.96 0.62
-0.5 0.96 0.62
-0.52 0.96 0.62
-0.54 0.96 0.62
-0.56 0.96 0.62
-0.58 0.96 0.62
-0.6 0.96 0.62
-0.62 0.96 0.62
-0.64 0.96 0.62
-0.44 0.98 0.62
-0.46 0.98 0.62
-0.48 0.98 0.62
-0.5 0.98 0.62
-0.52 0.98 0.62
-0.54 0.98 0.62
-0.56 0.98 0.62
-0.38 0.04 0.64
-0.4 0.04 0.64
-0.42 0.04 0.64
-0.44 0.04 0.64
-0.46 0.04 0.64
-0.48 0.04 0.64
-0.5 0.04 0.64
-0.52 0.04 0.64
-0.54 0.04 0.64
-0.56 0.04 0.64
-0.58 0.04 0.64
-0.6 0.04 0.64
-0.62 0.04 0.64
-0.32 0.06 0.64
-0.34 0.06 0.64
-0.36 0.06 0.64
-0.38 0.06 0.64
-0.4 0.06 0.64
-0.42 0.06 0.64
-0.44 0.06 0.64
-0.46 0.06 0.64
-0.48 0.06 0.64
-0.5 0.06 0.64
-0.52 0.06 0.64
-0.54 0.06 0.64
-0.56 0.06 0.64
-0.58 0.06 0.64
-0.6 0.06 0.64
-0.62 0.06 0.64
-0.64 0.06 0.64
-0.66 0.06 0.64
-0.68 0.06 0.64
-0.28 0.08 0.64
-0.3 0.08 0.64
-0.32 0.08 0.64
-0.34 0.08 0.64
-0.36 0.08 0.64
-0.38 0.08 0.64
-0.4 0.08 0.64
-0.6 0.08 0.64
-0.62 0.08 0.64
-0.64 0.08 0.64
-0.66 0.08 0.64
-0.68 0.08 0.64
-0.7 0.08 0.64
-0.72 0.08 0.64
-0.24 0.1 0.64
-0.26 0.1 0.64
-0.28 0.1 0.64
-0.3 0.1 0.64
-0.32 0.1 0.64
-0.34 0.1 0.64
-0.66 0.1 0.64
-0.68 0.1 0.64
-0.7 0.1 0.64
-0.72 0.1 0.64
-0.74 0.1 0.64
-0.76 0.1 0.64
-0.22 0.12 0.64
-0.24 0.12 0.64
-0.26 0.12 0.64
-0.28 0.12 0.64
-0.3 0.12 0.64
-0.7 0.12 0.64
-0.72 0.12 0.64
-0.74 0.12 0.64
-0.76 0.12 0.64
-0.78 0.12 0.64
-0.2 0.14 0.64
-0.22 0.14 0.64
-0.24 0.14 0.64
-0.26 0.14 0.64
-0.74 0.14 0.64
-0.76 0.14 0.64
-0.78 0.14 0.64
-0.8 0.14 0.64
-0.18 0.16 0.64
-0.2 0.16 0.64
-0.22 0.16 0.64
-0.24 0.16 0.64
-0.76 0.16 0.64
-0.78 0.16 0.64
-0.8 0.16 0.64
-0.82 0.16 0.64
-0.16 0.18 0.64
-0.18 0.18 0.64
-0.2 0.18 0.64
-0.8 0.18 0.64
-0.82 0.18 0.64
-0.84 0.18 0.64
-0.14 0.2 0.64
-0.16 0.2 0.64
-0.18 0.2 0.64
-0.82 0.2 0.64
-0.84 0.2 0.64
-0.86 0.2 0.64
-0.12 0.22 0.64
-0.14 0.22 0.64
-0.16 0.22 0.64
-0.84 0.22 0.64
-0.86 0.22 0.64
-0.88 0.22 0.64
-0.1 0.24 0.64
-0.12 0.24 0.64
-0.14 0.24 0.64
-0.16 0.24 0.64
-0.84 0.24 0.64
-0.86 0.24 0.64
-0.88 0.24 0.64
-0.9 0.24 0.64
-0.1 0.26 0.64
-0.12 0.26 0.64
-0.14 0.26 0.64
-0.86 0.26 0.64
-0.88 0.26 0.64
-0.9 0.26 0.64
-0.08 0.28 0.64
-0.1 0.28 0.64
-0.12 0.28 0.64
-0.88 0.28 0.64
-0.9 0.28 0.64
-0.92 0.28 0.64
-0.08 0.3 0.64
-0.1 0.3 0.64
-0.12 0.3 0.64
-0.88 0.3 0.64
-0.9 0.3 0.64
-0.92 0.3 0.64
-0.06 0.32 0.64
-0.08 0.32 0.64
-0.1 0.32 0.64
-0.9 0.32 0.64
-0.92 0.32 0.64
-0.94 0.32 0.64
-0.06 0.34 0.64
-0.08 0.34 0.64
-0.1 0.34 0.64
-0.9 0.34 0.64
-0.92 0.34 0.64
-0.94 0.34 0.64
-0.06 0.36 0.64
-0.08 0.36 0.64
-0.92 0.36 0.64
-0.94 0.36 0.64
-0.04 0.38 0.64
-0.06 0.38 0.64
-0.08 0.38 0.64
-0.92 0.38 0.64
-0.94 0.38 0.64
-0.96 0.38 0.64
-0.04 0.4 0.64
-0.06 0.4 0.64
-0.08 0.4 0.64
-0.92 0.4 0.64
-0.94 0.4 0.64
-0.96 0.4 0.64
-0.04 0.42 0.64
-0.06 0.42 0.64
-0.94 0.42 0.64
-0.96 0.42 0.64
-0.04 0.44 0.64
-0.06 0.44 0.64
-0.94 0.44 0.64
-0.96 0.44 0.64
-0.04 0.46 0.64
-0.06 0.46 0.64
-0.94 0.46 0.64
-0.96 0.46 0.64
-0.04 0.48 0.64
-0.06 0.48 0.64
-0.94 0.48 0.64
-0.96 0.48 0.64
-0.04 0.5 0.64
-0.06 0.5 0.64
-0.94 0.5 0.64
-0.96 0.5 0.64
-0.04 0.52 0.64
-0.06 0.52 0.64
-0.94 0.52 0.64
-0.96 0.52 0.64
-0.04 0.54 0.64
-0.06 0.54 0.64
-0.94 0.54 0.64
-0.96 0.54 0.64
-0.04 0.56 0.64
-0.06 0.56 0.64
-0.94 0.56 0.64
-0.96 0.56 0.64
-0.04 0.58 0.64
-0.06 0.58 0.64
-0.94 0.58 0.64
-0.96 0.58 0.64
-0.04 0.6 0.64
-0.06 0.6 0.64
-0.08 0.6 0.64
-0.92 0.6 0.64
-0.94 0.6 0.64
-0.96 0.6 0.64
-0.04 0.62 0.64
-0.06 0.62 0.64
-0.08 0.62 0.64
-0.92 0.62 0.64
-0.94 0.62 0.64
-0.96 0.62 0.64
-0.06 0.64 0.64
-0.08 0.64 0.64
-0.92 0.64 0.64
-0.94 0.64 0.64
-0.06 0.66 0.64
-0.08 0.66 0.64
-0.1 0.66 0.64
-0.9 0.66 0.64
-0.92 0.66 0.64
-0.94 0.66 0.64
-0.06 0.68 0.64
-0.08 0.68 0.64
-0.1 0.68 0.64
-0.9 0.68 0.64
-0.92 0.68 0.64
-0.94 0.68 0.64
-0.08 0.7 0.64
-0.1 0.7 0.64
-0.12 0.7 0.64
-0.88 0.7 0.64
-0.9 0.7 0.64
-0.92 0.7 0.64
-0.08 0.72 0.64
-0.1 0.72 0.64
-0.12 0.72 0.64
-0.88 0.72 0.64
-0.9 0.72 0.64
-0.92 0.72 0.64
-0.1 0.74 0.64
-0.12 0.74 0.64
-0.14 0.74 0.64
-0.86 0.74 0.64
-0.88 0.74 0.64
-0.9 0.74 0.64
-0.1 0.76 0.64
-0.12 0.76 0.64
-0.14 0.76 0.64
-0.16 0.76 0.64
-0.84 0.76 0.64
-0.86 0.76 0.64
-0.88 0.76 0.64
-0.9 0.76 0.64
-0.12 0.78 0.64
-0.14 0.78 0.64
-0.16 0.78 0.64
-0.84 0.78 0.64
-0.86 0.78 0.64
-0.88 0.78 0.64
-0.14 0.8 0.64
-0.16 0.8 0.64
-0.18 0.8 0.64
-0.82 0.8 0.64
-0.84 0.8 0.64
-0.86 0.8 0.64
-0.16 0.82 0.64
-0.18 0.82 0.64
-0.2 0.82 0.64
-0.8 0.82 0.64
-0.82 0.82 0.64
-0.84 0.82 0.64
-0.18 0.84 0.64
-0.2 0.84 0.64
-0.22 0.84 0.64
-0.24 0.84 0.64
-0.76 0.84 0.64
-0.78 0.84 0.64
-0.8 0.84 0.64
-0.82 0.84 0.64
-0.2 0.86 0.64
-0.22 0.86 0.64
-0.24 0.86 0.64
-0.26 0.86 0.64
-0.74 0.86 0.64
-0.76 0.86 0.64
-0.78 0.86 0.64
-0.8 0.86 0.64
-0.22 0.88 0.64
-0.24 0.88 0.64
-0.26 0.88 0.64
-0.28 0.88 0.64
-0.3 0.88 0.64
-0.7 0.88 0.64
-0.72 0.88 0.64
-0.74 0.88 0.64
-0.76 0.88 0.64
-0.78 0.88 0.64
-0.24 0.9 0.64
-0.26 0.9 0.64
-0.28 0.9 0.64
-0.3 0.9 0.64
-0.32 0.9 0.64
-0.34 0.9 0.64
-0.66 0.9 0.64
-0.68 0.9 0.64
-0.7 0.9 0.64
-0.72 0.9 0.64
-0.74 0.9 0.64
-0.76 0.9 0.64
-0.28 0.92 0.64
-0.3 0.92 0.64
-0.32 0.92 0.64
-0.34 0.92 0.64
-0.36 0.92 0.64
-0.38 0.92 0.64
-0.4 0.92 0.64
-0.6 0.92 0.64
-0.62 0.92 0.64
-0.64 0.92 0.64
-0.66 0.92 0.64
-0.68 0.92 0.64
-0.7 0.92 0.64
-0.72 0.92 0.64
-0.32 0.94 0.64
-0.34 0.94 0.64
-0.36 0.94 0.64
-0.38 0.94 0.64
-0.4 0.94 0.64
-0.42 0.94 0.64
-0.44 0.94 0.64
-0.46 0.94 0.64
-0.48 0.94 0.64
-0.5 0.94 0.64
-0.52 0.94 0.64
-0.54 0.94 0.64
-0.56 0.94 0.64
-0.58 0.94 0.64
-0.6 0.94 0.64
-0.62 0.94 0.64
-0.64 0.94 0.64
-0.66 0.94 0.64
-0.68 0.94 0.64
-0.38 0.96 0.64
-0.4 0.96 0.64
-0.42 0.96 0.64
-0.44 0.96 0.64
-0.46 0.96 0.64
-0.48 0.96 0.64
-0.5 0.96 0.64
-0.52 0.96 0.64
-0.54 0.96 0.64
-0.56 0.96 0.64
-0.58 0.96 0.64
-0.6 0.96 0.64
-0.62 0.96 0.64
-0.4 0.04 0.66
-0.42 0.04 0.66
-0.44 0.04 0.66
-0.46 0.04 0.66
-0.48 0.04 0.66
-0.5 0.04 0.66
-0.52 0.04 0.66
-0.54 0.04 0.66
-0.56 0.04 0.66
-0.58 0.04 0.66
-0.6 0.04 0.66
-0.34 0.06 0.66
-0.36 0.06 0.66
-0.38 0.06 0.66
-0.4 0.06 0.66
-0.42 0.06 0.66
-0.44 0.06 0.66
-0.46 0.06 0.66
-0.48 0.06 0.66
-0.5 0.06 0.66
-0.52 0.06 0.66
-0.54 0.06 0.66
-0.56 0.06 0.66
-0.58 0.06 0.66
-0.6 0.06 0.66
-0.62 0.06 0.66
-0.64 0.06 0.66
-0.66 0.06 0.66
-0.3 0.08 0.66
-0.32 0.08 0.66
-0.34 0.08 0.66
-0.36 0.08 0.66
-0.38 0.08 0.66
-0.4 0.08 0.66
-0.42 0.08 0.66
-0.44 0.08 0.66
-0.46 0.08 0.66
-0.54 0.08 0.66
-0.56 0.08 0.66
-0.58 0.08 0.66
-0.6 0.08 0.66
-0.62 0.08 0.66
-0.64 0.08 0.66
-0.66 0.08 0.66
-0.68 0.08 0.66
-0.7 0.08 0.66
-0.26 0.1 0.66
-0.28 0.1 0.66
-0.3 0.1 0.66
-0.32 0.1 0.66
-0.34 0.1 0.66
-0.36 0.1 0.66
-0.64 0.1 0.66
-0.66 0.1 0.66
-0.68 0.1 0.66
-0.7 0.1 0.66
-0.72 0.1 0.66
-0.74 0.1 0.66
-0.22 0.12 0.66
-0.24 0.12 0.66
-0.26 0.12 0.66
-0.28 0.12 0.66
-0.3 0.12 0.66
-0.7 0.12 0.66
-0.72 0.12 0.66
-0.74 0.12 0.66
-0.76 0.12 0.66
-0.78 0.12 0.66
-0.2 0.14 0.66
-0.22 0.14 0.66
-0.24 0.14 0.66
-0.26 0.14 0.66
-0.28 0.14 0.66
-0.72 0.14 0.66
-0.74 0.14 0.66
-0.76 0.14 0.66
-0.78 0.14 0.66
-0.8 0.14 0.66
-0.18 0.16 0.66
-0.2 0.16 0.66
-0.22 0.16 0.66
-0.24 0.16 0.66
-0.76 0.16 0.66
-0.78 0.16 0.66
-0.8 0.16 0.66
-0.82 0.16 0.66
-0.16 0.18 0.66
-0.18 0.18 0.66
-0.2 0.18 0.66
-0.22 0.18 0.66
-0.78 0.18 0.66
-0.8 0.18 0.66
-0.82 0.18 0.66
-0.84 0.18 0.66
-0.14 0.2 0.66
-0.16 0.2 0.66
-0.18 0.2 0.66
-0.2 0.2 0.66
-0.8 0.2 0.66
-0.82 0.2 0.66
-0.84 0.2 0.66
-0.86 0.2 0.66
-0.12 0.22 0.66
-0.14 0.22 0.66
-0.16 0.22 0.66
-0.18 0.22 0.66
-0.82 0.22 0.66
-0.84 0.22 0.66
-0.86 0.22 0.66
-0.88 0.22 0.66
-0.12 0.24 0.66
-0.14 0.24 0.66
-0.16 0.24 0.66
-0.84 0.24 0.66
-0.86 0.24 0.66
-0.88 0.24 0.66
-0.1 0.26 0.66
-0.12 0.26 0.66
-0.14 0.26 0.66
-0.86 0.26 0.66
-0.88 0.26 0.66
-0.9 0.26 0.66
-0.1 0.28 0.66
-0.12 0.28 0.66
-0.14 0.28 0.66
-0.86 0.28 0.66
-0.88 0.28 0.66
-0.9 0.28 0.66
-0.08 0.3 0.66
-0.1 0.3 0.66
-0.12 0.3 0.66
-0.88 0.3 0.66
-0.9 0.3 0.66
-0.92 0.3 0.66
-0.08 0.32 0.66
-0.1 0.32 0.66
-0.9 0.32 0.66
-0.92 0.32 0.66
-0.06 0.34 0.66
-0.08 0.34 0.66
-0.1 0.34 0.66
-0.9 0.34 0.66
-0.92 0.34 0.66
-0.94 0.34 0.66
-0.06 0.36 0.66
-0.08 0.36 0.66
-0.1 0.36 0.66
-0.9 0.36 0.66
-0.92 0.36 0.66
-0.94 0.36 0.66
-0.06 0.38 0.66
-0.08 0.38 0.66
-0.92 0.38 0.66
-0.94 0.38 0.66
-0.04 0.4 0.66
-0.06 0.4 0.66
-0.08 0.4 0.66
-0.92 0.4 0.66
-0.94 0.4 0.66
-0.96 0.4 0.66
-0.04 0.42 0.66
-0.06 0.42 0.66
-0.08 0.42 0.66
-0.92 0.42 0.66
-0.94 0.42 0.66
-0.96 0.42 0.66
-0.04 0.44 0.66
-0.06 0.44 0.66
-0.08 0.44 0.66
-0.92 0.44 0.66
-0.94 0.44 0.66
-0.96 0.44 0.66
-0.04 0.46 0.66
-0.06 0.46 0.66
-0.08 0.46 0.66
-0.92 0.46 0.66
-0.94 0.46 0.66
-0.96 0.46 0.66
-0.04 0.48 0.66
-0.06 0.48 0.66
-0.94 0.48 0.66
-0.96 0.48 0.66
-0.04 0.5 0.66
-0.06 0.5 0.66
-0.94 0.5 0.66
-0.96 0.5 0.66
-0.04 0.52 0.66
-0.06 0.52 0.66
-0.94 0.52 0.66
-0.96 0.52 0.66
-0.04 0.54 0.66
-0.06 0.54 0.66
-0.08 0.54 0.66
-0.92 0.54 0.66
-0.94 0.54 0.66
-0.96 0.54 0.66
-0.04 0.56 0.66
-0.06 0.56 0.66
-0.08 0.56 0.66
-0.92 0.56 0.66
-0.94 0.56 0.66
-0.96 0.56 0.66
-0.04 0.58 0.66
-0.06 0.58 0.66
-0.08 0.58 0.66
-0.92 0.58 0.66
-0.94 0.58 0.66
-0.96 0.58 0.66
-0.04 0.6 0.66
-0.06 0.6 0.66
-0.08 0.6 0.66
-0.92 0.6 0.66
-0.94 0.6 0.66
-0.96 0.6 0.66
-0.06 0.62 0.66
-0.08 0.62 0.66
-0.92 0.62 0.66
-0.94 0.62 0.66
-0.06 0.64 0.66
-0.08 0.64 0.66
-0.1 0.64 0.66
-0.9 0.64 0.66
-0.92 0.64 0.66
-0.94 0.64 0.66
-0.06 0.66 0.66
-0.08 0.66 0.66
-0.1 0.66 0.66
-0.9 0.66 0.66
-0.92 0.66 0.66
-0.94 0.66 0.66
-0.08 0.68 0.66
-0.1 0.68 0.66
-0.9 0.68 0.66
-0.92 0.68 0.66
-0.08 0.7 0.66
-0.1 0.7 0.66
-0.12 0.7 0.66
-0.88 0.7 0.66
-0.9 0.7 0.66
-0.92 0.7 0.66
-0.1 0.72 0.66
-0.12 0.72 0.66
-0.14 0.72 0.66
-0.86 0.72 0.66
-0.88 0.72 0.66
-0.9 0.72 0.66
-0.1 0.74 0.66
-0.12 0.74 0.66
-0.14 0.74 0.66
-0.86 0.74 0.66
-0.88 0.74 0.66
-0.9 0.74 0.66
-0.12 0.76 0.66
-0.14 0.76 0.66
-0.16 0.76 0.66
-0.84 0.76 0.66
-0.86 0.76 0.66
-0.88 0.76 0.66
-0.12 0.78 0.66
-0.14 0.78 0.66
-0.16 0.78 0.66
-0.18 0.78 0.66
-0.82 0.78 0.66
-0.84 0.78 0.66
-0.86 0.78 0.66
-0.88 0.78 0.66
-0.14 0.8 0.66
-0.16 0.8 0.66
-0.18 0.8 0.66
-0.2 0.8 0.66
-0.8 0.8 0.66
-0.82 0.8 0.66
-0.84 0.8 0.66
-0.86 0.8 0.66
-0.16 0.82 0.66
-0.18 0.82 0.66
-0.2 0.82 0.66
-0.22 0.82 0.66
-0.78 0.82 0.66
-0.8 0.82 0.66
-0.82 0.82 0.66
-0.84 0.82 0.66
-0.18 0.84 0.66
-0.2 0.84 0.66
-0.22 0.84 0.66
-0.24 0.84 0.66
-0.76 0.84 0.66
-0.78 0.84 0.66
-0.8 0.84 0.66
-0.82 0.84 0.66
-0.2 0.86 0.66
-0.22 0.86 0.66
-0.24 0.86 0.66
-0.26 0.86 0.66
-0.28 0.86 0.66
-0.72 0.86 0.66
-0.74 0.86 0.66
-0.76 0.86 0.66
-0.78 0.86 0.66
-0.8 0.86 0.66
-0.22 0.88 0.66
-0.24 0.88 0.66
-0.26 0.88 0.66
-0.28 0.88 0.66
-0.3 0.88 0.66
-0.7 0.88 0.66
-0.72 0.88 0.66
-0.74 0.88 0.66
-0.76 0.88 0.66
-0.78 0.88 0.66
-0.26 0.9 0.66
-0.28 0.9 0.66
-0.3 0.9 0.66
-0.32 0.9 0.66
-0.34 0.9 0.66
-0.36 0.9 0.66
-0.64 0.9 0.66
-0.66 0.9 0.66
-0.68 0.9 0.66
-0.7 0.9 0.66
-0.72 0.9 0.66
-0.74 0.9 0.66
-0.3 0.92 0.66
-0.32 0.92 0.66
-0.34 0.92 0.66
-0.36 0.92 0.66
-0.38 0.92 0.66
-0.4 0.92 0.66
-0.42 0.92 0.66
-0.44 0.92 0.66
-0.46 0.92 0.66
-0.54 0.92 0.66
-0.56 0.92 0.66
-0.58 0.92 0.66
-0.6 0.92 0.66
-0.62 0.92 0.66
-0.64 0.92 0.66
-0.66 0.92 0.66
-0.68 0.92 0.66
-0.7 0.92 0.66
-0.34 0.94 0.66
-0.36 0.94 0.66
-0.38 0.94 0.66
-0.4 0.94 0.66
-0.42 0.94 0.66
-0.44 0.94 0.66
-0.46 0.94 0.66
-0.48 0.94 0.66
-0.5 0.94 0.66
-0.52 0.94 0.66
-0.54 0.94 0.66
-0.56 0.94 0.66
-0.58 0.94 0.66
-0.6 0.94 0.66
-0.62 0.94 0.66
-0.64 0.94 0.66
-0.66 0.94 0.66
-0.4 0.96 0.66
-0.42 0.96 0.66
-0.44 0.96 0.66
-0.46 0.96 0.66
-0.48 0.96 0.66
-0.5 0.96 0.66
-0.52 0.96 0.66
-0.54 0.96 0.66
-0.56 0.96 0.66
-0.58 0.96 0.66
-0.6 0.96 0.66
-0.44 0.04 0.68
-0.46 0.04 0.68
-0.48 0.04 0.68
-0.5 0.04 0.68
-0.52 0.04 0.68
-0.54 0.04 0.68
-0.56 0.04 0.68
-0.36 0.06 0.68
-0.38 0.06 0.68
-0.4 0.06 0.68
-0.42 0.06 0.68
-0.44 0.06 0.68
-0.46 0.06 0.68
-0.48 0.06 0.68
-0.5 0.06 0.68
-0.52 0.06 0.68
-0.54 0.06 0.68
-0.56 0.06 0.68
-0.58 0.06 0.68
-0.6 0.06 0.68
-0.62 0.06 0.68
-0.64 0.06 0.68
-0.3 0.08 0.68
-0.32 0.08 0.68
-0.34 0.08 0.68
-0.36 0.08 0.68
-0.38 0.08 0.68
-0.4 0.08 0.68
-0.42 0.08 0.68
-0.44 0.08 0.68
-0.46 0.08 0.68
-0.48 0.08 0.68
-0.5 0.08 0.68
-0.52 0.08 0.68
-0.54 0.08 0.68
-0.56 0.08 0.68
-0.58 0.08 0.68
-0.6 0.08 0.68
-0.62 0.08 0.68
-0.64 0.08 0.68
-0.66 0.08 0.68
-0.68 0.08 0.68
-0.7 0.08 0.68
-0.28 0.1 0.68
-0.3 0.1 0.68
-0.32 0.1 0.68
-0.34 0.1 0.68
-0.36 0.1 0.68
-0.38 0.1 0.68
-0.62 0.1 0.68
-0.64 0.1 0.68
-0.66 0.1 0.68
-0.68 0.1 0.68
-0.7 0.1 0.68
-0.72 0.1 0.68
-0.24 0.12 0.68
-0.26 0.12 0.68
-0.28 0.12 0.68
-0.3 0.12 0.68
-0.32 0.12 0.68
-0.68 0.12 0.68
-0.7 0.12 0.68
-0.72 0.12 0.68
-0.74 0.12 0.68
-0.76 0.12 0.68
-0.22 0.14 0.68
-0.24 0.14 0.68
-0.26 0.14 0.68
-0.28 0.14 0.68
-0.72 0.14 0.68
-0.74 0.14 0.68
-0.76 0.14 0.68
-0.78 0.14 0.68
-0.2 0.16 0.68
-0.22 0.16 0.68
-0.24 0.16 0.68
-0.26 0.16 0.68
-0.74 0.16 0.68
-0.76 0.16 0.68
-0.78 0.16 0.68
-0.8 0.16 0.68
-0.18 0.18 0.68
-0.2 0.18 0.68
-0.22 0.18 0.68
-0.78 0.18 0.68
-0.8 0.18 0.68
-0.82 0.18 0.68
-0.16 0.2 0.68
-0.18 0.2 0.68
-0.2 0.2 0.68
-0.8 0.2 0.68
-0.82 0.2 0.68
-0.84 0.2 0.68
-0.14 0.22 0.68
-0.16 0.22 0.68
-0.18 0.22 0.68
-0.82 0.22 0.68
-0.84 0.22 0.68
-0.86 0.22 0.68
-0.12 0.24 0.68
-0.14 0.24 0.68
-0.16 0.24 0.68
-0.84 0.24 0.68
-0.86 0.24 0.68
-0.88 0.24 0.68
-0.12 0.26 0.68
-0.14 0.26 0.68
-0.16 0.26 0.68
-0.84 0.26 0.68
-0.86 0.26 0.68
-0.88 0.26 0.68
-0.1 0.28 0.68
-0.12 0.28 0.68
-0.14 0.28 0.68
-0.86 0.28 0.68
-0.88 0.28 0.68
-0.9 0.28 0.68
-0.08 0.3 0.68
-0.1 0.3 0.68
-0.12 0.3 0.68
-0.88 0.3 0.68
-0.9 0.3 0.68
-0.92 0.3 0.68
-0.08 0.32 0.68
-0.1 0.32 0.68
-0.12 0.32 0.68
-0.88 0.32 0.68
-0.9 0.32 0.68
-0.92 0.32 0.68
-0.08 0.34 0.68
-0.1 0.34 0.68
-0.9 0.34 0.68
-0.92 0.34 0.68
-0.06 0.36 0.68
-0.08 0.36 0.68
-0.1 0.36 0.68
-0.9 0.36 0.68
-0.92 0.36 0.68
-0.94 0.36 0.68
-0.06 0.38 0.68
-0.08 0.38 0.68
-0.1 0.38 0.68
-0.9 0.38 0.68
-0.92 0.38 0.68
-0.94 0.38 0.68
-0.06 0.4 0.68
-0.08 0.4 0.68
-0.92 0.4 0.68
-0.94 0.4 0.68
-0.06 0.42 0.68
-0.08 0.42 0.68
-0.92 0.42 0.68
-0.94 0.42 0.68
-0.04 0.44 0.68
-0.06 0.44 0.68
-0.08 0.44 0.68
-0.92 0.44 0.68
-0.94 0.44 0.68
-0.96 0.44 0.68
-0.04 0.46 0.68
-0.06 0.46 0.68
-0.08 0.46 0.68
-0.92 0.46 0.68
-0.94 0.46 0.68
-0.96 0.46 0.68
-0.04 0.48 0.68
-0.06 0.48 0.68
-0.08 0.48 0.68
-0.92 0.48 0.68
-0.94 0.48 0.68
-0.96 0.48 0.68
-0.04 0.5 0.68
-0.06 0.5 0.68
-0.08 0.5 0.68
-0.92 0.5 0.68
-0.94 0.5 0.68
-0.96 0.5 0.68
-0.04 0.52 0.68
-0.06 0.52 0.68
-0.08 0.52 0.68
-0.92 0.52 0.68
-0.94 0.52 0.68
-0.96 0.52 0.68
-0.04 0.54 0.68
-0.06 0.54 0.68
-0.08 0.54 0.68
-0.92 0.54 0.68
-0.94 0.54 0.68
-0.96 0.54 0.68
-0.04 0.56 0.68
-0.06 0.56 0.68
-0.08 0.56 0.68
-0.92 0.56 0.68
-0.94 0.56 0.68
-0.96 0.56 0.68
-0.06 0.58 0.68
-0.08 0.58 0.68
-0.92 0.58 0.68
-0.94 0.58 0.68
-0.06 0.6 0.68
-0.08 0.6 0.68
-0.92 0.6 0.68
-0.94 0.6 0.68
-0.06 0.62 0.68
-0.08 0.62 0.68
-0.1 0.62 0.68
-0.9 0.62 0.68
-0.92 0.62 0.68
-0.94 0.62 0.68
-0.06 0.64 0.68
-0.08 0.64 0.68
-0.1 0.64 0.68
-0.9 0.64 0.68
-0.92 0.64 0.68
-0.94 0.64 0.68
-0.08 0.66 0.68
-0.1 0.66 0.68
-0.9 0.66 0.68
-0.92 0.66 0.68
-0.08 0.68 0.68
-0.1 0.68 0.68
-0.12 0.68 0.68
-0.88 0.68 0.68
-0.9 0.68 0.68
-0.92 0.68 0.68
-0.08 0.7 0.68
-0.1 0.7 0.68
-0.12 0.7 0.68
-0.88 0.7 0.68
-0.9 0.7 0.68
-0.92 0.7 0.68
-0.1 0.72 0.68
-0.12 0.72 0.68
-0.14 0.72 0.68
-0.86 0.72 0.68
-0.88 0.72 0.68
-0.9 0.72 0.68
-0.12 0.74 0.68
-0.14 0.74 0.68
-0.16 0.74 0.68
-0.84 0.74 0.68
-0.86 0.74 0.68
-0.88 0.74 0.68
-0.12 0.76 0.68
-0.14 0.76 0.68
-0.16 0.76 0.68
-0.84 0.76 0.68
-0.86 0.76 0.68
-0.88 0.76 0.68
-0.14 0.78 0.68
-0.16 0.78 0.68
-0.18 0.78 0.68
-0.82 0.78 0.68
-0.84 0.78 0.68
-0.86 0.78 0.68
-0.16 0.8 0.68
-0.18 0.8 0.68
-0.2 0.8 0.68
-0.8 0.8 0.68
-0.82 0.8 0.68
-0.84 0.8 0.68
-0.18 0.82 0.68
-0.2 0.82 0.68
-0.22 0.82 0.68
-0.78 0.82 0.68
-0.8 0.82 0.68
-0.82 0.82 0.68
-0.2 0.84 0.68
-0.22 0.84 0.68
-0.24 0.84 0.68
-0.26 0.84 0.68
-0.74 0.84 0.68
-0.76 0.84 0.68
-0.78 0.84 0.68
-0.8 0.84 0.68
-0.22 0.86 0.68
-0.24 0.86 0.68
-0.26 0.86 0.68
-0.28 0.86 0.68
-0.72 0.86 0.68
-0.74 0.86 0.68
-0.76 0.86 0.68
-0.78 0.86 0.68
-0.24 0.88 0.68
-0.26 0.88 0.68
-0.28 0.88 0.68
-0.3 0.88 0.68
-0.32 0.88 0.68
-0.68 0.88 0.68
-0.7 0.88 0.68
-0.72 0.88 0.68
-0.74 0.88 0.68
-0.76 0.88 0.68
-0.28 0.9 0.68
-0.3 0.9 0.68
-0.32 0.9 0.68
-0.34 0.9 0.68
-0.36 0.9 0.68
-0.38 0.9 0.68
-0.62 0.9 0.68
-0.64 0.9 0.68
-0.66 0.9 0.68
-0.68 0.9 0.68
-0.7 0.9 0.68
-0.72 0.9 0.68
-0.3 0.92 0.68
-0.32 0.92 0.68
-0.34 0.92 0.68
-0.36 0.92 0.68
-0.38 0.92 0.68
-0.4 0.92 0.68
-0.42 0.92 0.68
-0.44 0.92 0.68
-0.46 0.92 0.68
-0.48 0.92 0.68
-0.5 0.92 0.68
-0.52 0.92 0.68
-0.54 0.92 0.68
-0.56 0.92 0.68
-0.58 0.92 0.68
-0.6 0.92 0.68
-0.62 0.92 0.68
-0.64 0.92 0.68
-0.66 0.92 0.68
-0.68 0.92 0.68
-0.7 0.92 0.68
-0.36 0.94 0.68
-0.38 0.94 0.68
-0.4 0.94 0.68
-0.42 0.94 0.68
-0.44 0.94 0.68
-0.46 0.94 0.68
-0.48 0.94 0.68
-0.5 0.94 0.68
-0.52 0.94 0.68
-0.54 0.94 0.68
-0.56 0.94 0.68
-0.58 0.94 0.68
-0.6 0.94 0.68
-0.62 0.94 0.68
-0.64 0.94 0.68
-0.44 0.96 0.68
-0.46 0.96 0.68
-0.48 0.96 0.68
-0.5 0.96 0.68
-0.52 0.96 0.68
-0.54 0.96 0.68
-0.56 0.96 0.68
-0.38 0.06 0.7
-0.4 0.06 0.7
-0.42 0.06 0.7
-0.44 0.06 0.7
-0.46 0.06 0.7
-0.48 0.06 0.7
-0.5 0.06 0.7
-0.52 0.06 0.7
-0.54 0.06 0.7
-0.56 0.06 0.7
-0.58 0.06 0.7
-0.6 0.06 0.7
-0.62 0.06 0.7
-0.32 0.08 0.7
-0.34 0.08 0.7
-0.36 0.08 0.7
-0.38 0.08 0.7
-0.4 0.08 0.7
-0.42 0.08 0.7
-0.44 0.08 0.7
-0.46 0.08 0.7
-0.48 0.08 0.7
-0.5 0.08 0.7
-0.52 0.08 0.7
-0.54 0.08 0.7
-0.56 0.08 0.7
-0.58 0.08 0.7
-0.6 0.08 0.7
-0.62 0.08 0.7
-0.64 0.08 0.7
-0.66 0.08 0.7
-0.68 0.08 0.7
-0.28 0.1 0.7
-0.3 0.1 0.7
-0.32 0.1 0.7
-0.34 0.1 0.7
-0.36 0.1 0.7
-0.38 0.1 0.7
-0.4 0.1 0.7
-0.42 0.1 0.7
-0.44 0.1 0.7
-0.56 0.1 0.7
-0.58 0.1 0.7
-0.6 0.1 0.7
-0.62 0.1 0.7
-0.64 0.1 0.7
-0.66 0.1 0.7
-0.68 0.1 0.7
-0.7 0.1 0.7
-0.72 0.1 0.7
-0.26 0.12 0.7
-0.28 0.12 0.7
-0.3 0.12 0.7
-0.32 0.12 0.7
-0.34 0.12 0.7
-0.36 0.12 0.7
-0.64 0.12 0.7
-0.66 0.12 0.7
-0.68 0.12 0.7
-0.7 0.12 0.7
-0.72 0.12 0.7
-0.74 0.12 0.7
-0.22 0.14 0.7
-0.24 0.14 0.7
-0.26 0.14 0.7
-0.28 0.14 0.7
-0.3 0.14 0.7
-0.7 0.14 0.7
-0.72 0.14 0.7
-0.74 0.14 0.7
-0.76 0.14 0.7
-0.78 0.14 0.7
-0.2 0.16 0.7
-0.22 0.16 0.7
-0.24 0.16 0.7
-0.26 0.16 0.7
-0.28 0.16 0.7
-0.72 0.16 0.7
-0.74 0.16 0.7
-0.76 0.16 0.7
-0.78 0.16 0.7
-0.8 0.16 0.7
-0.18 0.18 0.7
-0.2 0.18 0.7
-0.22 0.18 0.7
-0.24 0.18 0.7
-0.76 0.18 0.7
-0.78 0.18 0.7
-0.8 0.18 0.7
-0.82 0.18 0.7
-0.16 0.2 0.7
-0.18 0.2 0.7
-0.2 0.2 0.7
-0.22 0.2 0.7
-0.78 0.2 0.7
-0.8 0.2 0.7
-0.82 0.2 0.7
-0.84 0.2 0.7
-0.14 0.22 0.7
-0.16 0.22 0.7
-0.18 0.22 0.7
-0.2 0.22 0.7
-0.8 0.22 0.7
-0.82 0.22 0.7
-0.84 0.22 0.7
-0.86 0.22 0.7
-0.14 0.24 0.7
-0.16 0.24 0.7
-0.18 0.24 0.7
-0.82 0.24 0.7
-0.84 0.24 0.7
-0.86 0.24 0.7
-0.12 0.26 0.7
-0.14 0.26 0.7
-0.16 0.26 0.7
-0.84 0.26 0.7
-0.86 0.26 0.7
-0.88 0.26 0.7
-0.1 0.28 0.7
-0.12 0.28 0.7
-0.14 0.28 0.7
-0.16 0.28 0.7
-0.84 0.28 0.7
-0.86 0.28 0.7
-0.88 0.28 0.7
-0.9 0.28 0.7
-0.1 0.3 0.7
-0.12 0.3 0.7
-0.14 0.3 0.7
-0.86 0.3 0.7
-0.88 0.3 0.7
-0.9 0.3 0.7
-0.08 0.32 0.7
-0.1 0.32 0.7
-0.12 0.32 0.7
-0.88 0.32 0.7
-0.9 0.32 0.7
-0.92 0.32 0.7
-0.08 0.34 0.7
-0.1 0.34 0.7
-0.12 0.34 0.7
-0.88 0.34 0.7
-0.9 0.34 0.7
-0.92 0.34 0.7
-0.08 0.36 0.7
-0.1 0.36 0.7
-0.12 0.36 0.7
-0.88 0.36 0.7
-0.9 0.36 0.7
-0.92 0.36 0.7
-0.06 0.38 0.7
-0.08 0.38 0.7
-0.1 0.38 0.7
-0.9 0.38 0.7
-0.92 0.38 0.7
-0.94 0.38 0.7
-0.06 0.4 0.7
-0.08 0.4 0.7
-0.1 0.4 0.7
-0.9 0.4 0.7
-0.92 0.4 0.7
-0.94 0.4 0.7
-0.06 0.42 0.7
-0.08 0.42 0.7
-0.1 0.42 0.7
-0.9 0.42 0.7
-0.92 0.42 0.7
-0.94 0.42 0.7
-0.06 0.44 0.7
-0.08 0.44 0.7
-0.1 0.44 0.7
-0.9 0.44 0.7
-0.92 0.44 0.7
-0.94 0.44 0.7
-0.06 0.46 0.7
-0.08 0.46 0.7
-0.92 0.46 0.7
-0.94 0.46 0.7
-0.06 0.48 0.7
-0.08 0.48 0.7
-0.92 0.48 0.7
-0.94 0.48 0.7
-0.06 0.5 0.7
-0.08 0.5 0.7
-0.92 0.5 0.7
-0.94 0.5 0.7
-0.06 0.52 0.7
-0.08 0.52 0.7
-0.92 0.52 0.7
-0.94 0.52 0.7
-0.06 0.54 0.7
-0.08 0.54 0.7
-0.92 0.54 0.7
-0.94 0.54 0.7
-0.06 0.56 0.7
-0.08 0.56 0.7
-0.1 0.56 0.7
-0.9 0.56 0.7
-0.92 0.56 0.7
-0.94 0.56 0.7
-0.06 0.58 0.7
-0.08 0.58 0.7
-0.1 0.58 0.7
-0.9 0.58 0.7
-0.92 0.58 0.7
-0.94 0.58 0.7
-0.06 0.6 0.7
-0.08 0.6 0.7
-0.1 0.6 0.7
-0.9 0.6 0.7
-0.92 0.6 0.7
-0.94 0.6 0.7
-0.06 0.62 0.7
-0.08 0.62 0.7
-0.1 0.62 0.7
-0.9 0.62 0.7
-0.92 0.62 0.7
-0.94 0.62 0.7
-0.08 0.64 0.7
-0.1 0.64 0.7
-0.12 0.64 0.7
-0.88 0.64 0.7
-0.9 0.64 0.7
-0.92 0.64 0.7
-0.08 0.66 0.7
-0.1 0.66 0.7
-0.12 0.66 0.7
-0.88 0.66 0.7
-0.9 0.66 0.7
-0.92 0.66 0.7
-0.08 0.68 0.7
-0.1 0.68 0.7
-0.12 0.68 0.7
-0.88 0.68 0.7
-0.9 0.68 0.7
-0.92 0.68 0.7
-0.1 0.7 0.7
-0.12 0.7 0.7
-0.14 0.7 0.7
-0.86 0.7 0.7
-0.88 0.7 0.7
-0.9 0.7 0.7
-0.1 0.72 0.7
-0.12 0.72 0.7
-0.14 0.72 0.7
-0.16 0.72 0.7
-0.84 0.72 0.7
-0.86 0.72 0.7
-0.88 0.72 0.7
-0.9 0.72 0.7
-0.12 0.74 0.7
-0.14 0.74 0.7
-0.16 0.74 0.7
-0.84 0.74 0.7
-0.86 0.74 0.7
-0.88 0.74 0.7
-0.14 0.76 0.7
-0.16 0.76 0.7
-0.18 0.76 0.7
-0.82 0.76 0.7
-0.84 0.76 0.7
-0.86 0.76 0.7
-0.14 0.78 0.7
-0.16 0.78 0.7
-0.18 0.78 0.7
-0.2 0.78 0.7
-0.8 0.78 0.7
-0.82 0.78 0.7
-0.84 0.78 0.7
-0.86 0.78 0.7
-0.16 0.8 0.7
-0.18 0.8 0.7
-0.2 0.8 0.7
-0.22 0.8 0.7
-0.78 0.8 0.7
-0.8 0.8 0.7
-0.82 0.8 0.7
-0.84 0.8 0.7
-0.18 0.82 0.7
-0.2 0.82 0.7
-0.22 0.82 0.7
-0.24 0.82 0.7
-0.76 0.82 0.7
-0.78 0.82 0.7
-0.8 0.82 0.7
-0.82 0.82 0.7
-0.2 0.84 0.7
-0.22 0.84 0.7
-0.24 0.84 0.7
-0.26 0.84 0.7
-0.28 0.84 0.7
-0.72 0.84 0.7
-0.74 0.84 0.7
-0.76 0.84 0.7
-0.78 0.84 0.7
-0.8 0.84 0.7
-0.22 0.86 0.7
-0.24 0.86 0.7
-0.26 0.86 0.7
-0.28 0.86 0.7
-0.3 0.86 0.7
-0.7 0.86 0.7
-0.72 0.86 0.7
-0.74 0.86 0.7
-0.76 0.86 0.7
-0.78 0.86 0.7
-0.26 0.88 0.7
-0.28 0.88 0.7
-0.3 0.88 0.7
-0.32 0.88 0.7
-0.34 0.88 0.7
-0.36 0.88 0.7
-0.64 0.88 0.7
-0.66 0.88 0.7
-0.68 0.88 0.7
-0.7 0.88 0.7
-0.72 0.88 0.7
-0.74 0.88 0.7
-0.28 0.9 0.7
-0.3 0.9 0.7
-0.32 0.9 0.7
-0.34 0.9 0.7
-0.36 0.9 0.7
-0.38 0.9 0.7
-0.4 0.9 0.7
-0.42 0.9 0.7
-0.44 0.9 0.7
-0.56 0.9 0.7
-0.58 0.9 0.7
-0.6 0.9 0.7
-0.62 0.9 0.7
-0.64 0.9 0.7
-0.66 0.9 0.7
-0.68 0.9 0.7
-0.7 0.9 0.7
-0.72 0.9 0.7
-0.32 0.92 0.7
-0.34 0.92 0.7
-0.36 0.92 0.7
-0.38 0.92 0.7
-0.4 0.92 0.7
-0.42 0.92 0.7
-0.44 0.92 0.7
-0.46 0.92 0.7
-0.48 0.92 0.7
-0.5 0.92 0.7
-0.52 0.92 0.7
-0.54 0.92 0.7
-0.56 0.92 0.7
-0.58 0.92 0.7
-0.6 0.92 0.7
-0.62 0.92 0.7
-0.64 0.92 0.7
-0.66 0.92 0.7
-0.68 0.92 0.7
-0.38 0.94 0.7
-0.4 0.94 0.7
-0.42 0.94 0.7
-0.44 0.94 0.7
-0.46 0.94 0.7
-0.48 0.94 0.7
-0.5 0.94 0.7
-0.52 0.94 0.7
-0.54 0.94 0.7
-0.56 0.94 0.7
-0.58 0.94 0.7
-0.6 0.94 0.7
-0.62 0.94 0.7
-0.42 0.06 0.72
-0.44 0.06 0.72
-0.46 0.06 0.72
-0.48 0.06 0.72
-0.5 0.06 0.72
-0.52 0.06 0.72
-0.54 0.06 0.72
-0.56 0.06 0.72
-0.58 0.06 0.72
-0.36 0.08 0.72
-0.38 0.08 0.72
-0.4 0.08 0.72
-0.42 0.08 0.72
-0.44 0.08 0.72
-0.46 0.08 0.72
-0.48 0.08 0.72
-0.5 0.08 0.72
-0.52 0.08 0.72
-0.54 0.08 0.72
-0.56 0.08 0.72
-0.58 0.08 0.72
-0.6 0.08 0.72
-0.62 0.08 0.72
-0.64 0.08 0.72
-0.3 0.1 0.72
-0.32 0.1 0.72
-0.34 0.1 0.72
-0.36 0.1 0.72
-0.38 0.1 0.72
-0.4 0.1 0.72
-0.42 0.1 0.72
-0.44 0.1 0.72
-0.46 0.1 0.72
-0.48 0.1 0.72
-0.5 0.1 0.72
-0.52 0.1 0.72
-0.54 0.1 0.72
-0.56 0.1 0.72
-0.58 0.1 0.72
-0.6 0.1 0.72
-0.62 0.1 0.72
-0.64 0.1 0.72
-0.66 0.1 0.72
-0.68 0.1 0.72
-0.7 0.1 0.72
-0.28 0.12 0.72
-0.3 0.12 0.72
-0.32 0.12 0.72
-0.34 0.12 0.72
-0.36 0.12 0.72
-0.38 0.12 0.72
-0.4 0.12 0.72
-0.6 0.12 0.72
-0.62 0.12 0.72
-0.64 0.12 0.72
-0.66 0.12 0.72
-0.68 0.12 0.72
-0.7 0.12 0.72
-0.72 0.12 0.72
-0.24 0.14 0.72
-0.26 0.14 0.72
-0.28 0.14 0.72
-0.3 0.14 0.72
-0.32 0.14 0.72
-0.34 0.14 0.72
-0.66 0.14 0.72
-0.68 0.14 0.72
-0.7 0.14 0.72
-0.72 0.14 0.72
-0.74 0.14 0.72
-0.76 0.14 0.72
-0.22 0.16 0.72
-0.24 0.16 0.72
-0.26 0.16 0.72
-0.28 0.16 0.72
-0.3 0.16 0.72
-0.7 0.16 0.72
-0.72 0.16 0.72
-0.74 0.16 0.72
-0.76 0.16 0.72
-0.78 0.16 0.72
-0.2 0.18 0.72
-0.22 0.18 0.72
-0.24 0.18 0.72
-0.26 0.18 0.72
-0.74 0.18 0.72
-0.76 0.18 0.72
-0.78 0.18 0.72
-0.8 0.18 0.72
-0.18 0.2 0.72
-0.2 0.2 0.72
-0.22 0.2 0.72
-0.24 0.2 0.72
-0.76 0.2 0.72
-0.78 0.2 0.72
-0.8 0.2 0.72
-0.82 0.2 0.72
-0.16 0.22 0.72
-0.18 0.22 0.72
-0.2 0.22 0.72
-0.22 0.22 0.72
-0.78 0.22 0.72
-0.8 0.22 0.72
-0.82 0.22 0.72
-0.84 0.22 0.72
-0.14 0.24 0.72
-0.16 0.24 0.72
-0.18 0.24 0.72
-0.2 0.24 0.72
-0.8 0.24 0.72
-0.82 0.24 0.72
-0.84 0.24 0.72
-0.86 0.24 0.72
-0.14 0.26 0.72
-0.16 0.26 0.72
-0.18 0.26 0.72
-0.82 0.26 0.72
-0.84 0.26 0.72
-0.86 0.26 0.72
-0.12 0.28 0.72
-0.14 0.28 0.72
-0.16 0.28 0.72
-0.84 0.28 0.72
-0.86 0.28 0.72
-0.88 0.28 0.72
-0.1 0.3 0.72
-0.12 0.3 0.72
-0.14 0.3 0.72
-0.16 0.3 0.72
-0.84 0.3 0.72
-0.86 0.3 0.72
-0.88 0.3 0.72
-0.9 0.3 0.72
-0.1 0.32 0.72
-0.12 0.32 0.72
-0.14 0.32 0.72
-0.86 0.32 0.72
-0.88 0.32 0.72
-0.9 0.32 0.72
-0.1 0.34 0.72
-0.12 0.34 0.72
-0.14 0.34 0.72
-0.86 0.34 0.72
-0.88 0.34 0.72
-0.9 0.34 0.72
-0.08 0.36 0.72
-0.1 0.36 0.72
-0.12 0.36 0.72
-0.88 0.36 0.72
-0.9 0.36 0.72
-0.92 0.36 0.72
-0.08 0.38 0.72
-0.1 0.38 0.72
-0.12 0.38 0.72
-0.88 0.38 0.72
-0.9 0.38 0.72
-0.92 0.38 0.72
-0.08 0.4 0.72
-0.1 0.4 0.72
-0.12 0.4 0.72
-0.88 0.4 0.72
-0.9 0.4 0.72
-0.92 0.4 0.72
-0.06 0.42 0.72
-0.08 0.42 0.72
-0.1 0.42 0.72
-0.9 0.42 0.72
-0.92 0.42 0.72
-0.94 0.42 0.72
-0.06 0.44 0.72
-0.08 0.44 0.72
-0.1 0.44 0.72
-0.9 0.44 0.72
-0.92 0.44 0.72
-0.94 0.44 0.72
-0.06 0.46 0.72
-0.08 0.46 0.72
-0.1 0.46 0.72
-0.9 0.46 0.72
-0.92 0.46 0.72
-0.94 0.46 0.72
-0.06 0.48 0.72
-0.08 0.48 0.72
-0.1 0.48 0.72
-0.9 0.48 0.72
-0.92 0.48 0.72
-0.94 0.48 0.72
-0.06 0.5 0.72
-0.08 0.5 0.72
-0.1 0.5 0.72
-0.9 0.5 0.72
-0.92 0.5 0.72
-0.94 0.5 0.72
-0.06 0.52 0.72
-0.08 0.52 0.72
-0.1 0.52 0.72
-0.9 0.52 0.72
-0.92 0.52 0.72
-0.94 0.52 0.72
-0.06 0.54 0.72
-0.08 0.54 0.72
-0.1 0.54 0.72
-0.9 0.54 0.72
-0.92 0.54 0.72
-0.94 0.54 0.72
-0.06 0.56 0.72
-0.08 0.56 0.72
-0.1 0.56 0.72
-0.9 0.56 0.72
-0.92 0.56 0.72
-0.94 0.56 0.72
-0.06 0.58 0.72
-0.08 0.58 0.72
-0.1 0.58 0.72
-0.9 0.58 0.72
-0.92 0.58 0.72
-0.94 0.58 0.72
-0.08 0.6 0.72
-0.1 0.6 0.72
-0.12 0.6 0.72
-0.88 0.6 0.72
-0.9 0.6 0.72
-0.92 0.6 0.72
-0.08 0.62 0.72
-0.1 0.62 0.72
-0.12 0.62 0.72
-0.88 0.62 0.72
-0.9 0.62 0.72
-0.92 0.62 0.72
-0.08 0.64 0.72
-0.1 0.64 0.72
-0.12 0.64 0.72
-0.88 0.64 0.72
-0.9 0.64 0.72
-0.92 0.64 0.72
-0.1 0.66 0.72
-0.12 0.66 0.72
-0.14 0.66 0.72
-0.86 0.66 0.72
-0.88 0.66 0.72
-0.9 0.66 0.72
-0.1 0.68 0.72
-0.12 0.68 0.72
-0.14 0.68 0.72
-0.86 0.68 0.72
-0.88 0.68 0.72
-0.9 0.68 0.72
-0.1 0.7 0.72
-0.12 0.7 0.72
-0.14 0.7 0.72
-0.16 0.7 0.72
-0.84 0.7 0.72
-0.86 0.7 0.72
-0.88 0.7 0.72
-0.9 0.7 0.72
-0.12 0.72 0.72
-0.14 0.72 0.72
-0.16 0.72 0.72
-0.84 0.72 0.72
-0.86 0.72 0.72
-0.88 0.72 0.72
-0.14 0.74 0.72
-0.16 0.74 0.72
-0.18 0.74 0.72
-0.82 0.74 0.72
-0.84 0.74 0.72
-0.86 0.74 0.72
-0.14 0.76 0.72
-0.16 0.76 0.72
-0.18 0.76 0.72
-0.2 0.76 0.72
-0.8 0.76 0.72
-0.82 0.76 0.72
-0.84 0.76 0.72
-0.86 0.76 0.72
-0.16 0.78 0.72
-0.18 0.78 0.72
-0.2 0.78 0.72
-0.22 0.78 0.72
-0.78 0.78 0.72
-0.8 0.78 0.72
-0.82 0.78 0.72
-0.84 0.78 0.72
-0.18 0.8 0.72
-0.2 0.8 0.72
-0.22 0.8 0.72
-0.24 0.8 0.72
-0.76 0.8 0.72
-0.78 0.8 0.72
-0.8 0.8 0.72
-0.82 0.8 0.72
-0.2 0.82 0.72
-0.22 0.82 0.72
-0.24 0.82 0.72
-0.26 0.82 0.72
-0.74 0.82 0.72
-0.76 0.82 0.72
-0.78 0.82 0.72
-0.8 0.82 0.72
-0.22 0.84 0.72
-0.24 0.84 0.72
-0.26 0.84 0.72
-0.28 0.84 0.72
-0.3 0.84 0.72
-0.7 0.84 0.72
-0.72 0.84 0.72
-0.74 0.84 0.72
-0.76 0.84 0.72
-0.78 0.84 0.72
-0.24 0.86 0.72
-0.26 0.86 0.72
-0.28 0.86 0.72
-0.3 0.86 0.72
-0.32 0.86 0.72
-0.34 0.86 0.72
-0.66 0.86 0.72
-0.68 0.86 0.72
-0.7 0.86 0.72
-0.72 0.86 0.72
-0.74 0.86 0.72
-0.76 0.86 0.72
-0.28 0.88 0.72
-0.3 0.88 0.72
-0.32 0.88 0.72
-0.34 0.88 0.72
-0.36 0.88 0.72
-0.38 0.88 0.72
-0.4 0.88 0.72
-0.6 0.88 0.72
-0.62 0.88 0.72
-0.64 0.88 0.72
-0.66 0.88 0.72
-0.68 0.88 0.72
-0.7 0.88 0.72
-0.72 0.88 0.72
-0.3 0.9 0.72
-0.32 0.9 0.72
-0.34 0.9 0.72
-0.36 0.9 0.72
-0.38 0.9 0.72
-0.4 0.9 0.72
-0.42 0.9 0.72
-0.44 0.9 0.72
-0.46 0.9 0.72
-0.48 0.9 0.72
-0.5 0.9 0.72
-0.52 0.9 0.72
-0.54 0.9 0.72
-0.56 0.9 0.72
-0.58 0.9 0.72
-0.6 0.9 0.72
-0.62 0.9 0.72
-0.64 0.9 0.72
-0.66 0.9 0.72
-0.68 0.9 0.72
-0.7 0.9 0.72
-0.36 0.92 0.72
-0.38 0.92 0.72
-0.4 0.92 0.72
-0.42 0.92 0.72
-0.44 0.92 0.72
-0.46 0.92 0.72
-0.48 0.92 0.72
-0.5 0.92 0.72
-0.52 0.92 0.72
-0.54 0.92 0.72
-0.56 0.92 0.72
-0.58 0.92 0.72
-0.6 0.92 0.72
-0.62 0.92 0.72
-0.64 0.92 0.72
-0.42 0.94 0.72
-0.44 0.94 0.72
-0.46 0.94 0.72
-0.48 0.94 0.72
-0.5 0.94 0.72
-0.52 0.94 0.72
-0.54 0.94 0.72
-0.56 0.94 0.72
-0.58 0.94 0.72
-0.38 0.08 0.74
-0.4 0.08 0.74
-0.42 0.08 0.74
-0.44 0.08 0.74
-0.46 0.08 0.74
-0.48 0.08 0.74
-0.5 0.08 0.74
-0.52 0.08 0.74
-0.54 0.08 0.74
-0.56 0.08 0.74
-0.58 0.08 0.74
-0.6 0.08 0.74
-0.62 0.08 0.74
-0.34 0.1 0.74
-0.36 0.1 0.74
-0.38 0.1 0.74
-0.4 0.1 0.74
-0.42 0.1 0.74
-0.44 0.1 0.74
-0.46 0.1 0.74
-0.48 0.1 0.74
-0.5 0.1 0.74
-0.52 0.1 0.74
-0.54 0.1 0.74
-0.56 0.1 0.74
-0.58 0.1 0.74
-0.6 0.1 0.74
-0.62 0.1 0.74
-0.64 0.1 0.74
-0.66 0.1 0.74
-0.3 0.12 0.74
-0.32 0.12 0.74
-0.34 0.12 0.74
-0.36 0.12 0.74
-0.38 0.12 0.74
-0.4 0.12 0.74
-0.42 0.12 0.74
-0.44 0.12 0.74
-0.46 0.12 0.74
-0.54 0.12 0.74
-0.56 0.12 0.74
-0.58 0.12 0.74
-0.6 0.12 0.74
-0.62 0.12 0.74
-0.64 0.12 0.74
-0.66 0.12 0.74
-0.68 0.12 0.74
-0.7 0.12 0.74
-0.26 0.14 0.74
-0.28 0.14 0.74
-0.3 0.14 0.74
-0.32 0.14 0.74
-0.34 0.14 0.74
-0.36 0.14 0.74
-0.64 0.14 0.74
-0.66 0.14 0.74
-0.68 0.14 0.74
-0.7 0.14 0.74
-0.72 0.14 0.74
-0.74 0.14 0.74
-0.24 0.16 0.74
-0.26 0.16 0.74
-0.28 0.16 0.74
-0.3 0.16 0.74
-0.32 0.16 0.74
-0.68 0.16 0.74
-0.7 0.16 0.74
-0.72 0.16 0.74
-0.74 0.16 0.74
-0.76 0.16 0.74
-0.22 0.18 0.74
-0.24 0.18 0.74
-0.26 0.18 0.74
-0.28 0.18 0.74
-0.72 0.18 0.74
-0.74 0.18 0.74
-0.76 0.18 0.74
-0.78 0.18 0.74
-0.2 0.2 0.74
-0.22 0.2 0.74
-0.24 0.2 0.74
-0.26 0.2 0.74
-0.74 0.2 0.74
-0.76 0.2 0.74
-0.78 0.2 0.74
-0.8 0.2 0.74
-0.18 0.22 0.74
-0.2 0.22 0.74
-0.22 0.22 0.74
-0.24 0.22 0.74
-0.76 0.22 0.74
-0.78 0.22 0.74
-0.8 0.22 0.74
-0.82 0.22 0.74
-0.16 0.24 0.74
-0.18 0.24 0.74
-0.2 0.24 0.74
-0.22 0.24 0.74
-0.78 0.24 0.74
-0.8 0.24 0.74
-0.82 0.24 0.74
-0.84 0.24 0.74
-0.14 0.26 0.74
-0.16 0.26 0.74
-0.18 0.26 0.74
-0.2 0.26 0.74
-0.8 0.26 0.74
-0.82 0.26 0.74
-0.84 0.26 0.74
-0.86 0.26 0.74
-0.14 0.28 0.74
-0.16 0.28 0.74
-0.18 0.28 0.74
-0.82 0.28 0.74
-0.84 0.28 0.74
-0.86 0.28 0.74
-0.12 0.3 0.74
-0.14 0.3 0.74
-0.16 0.3 0.74
-0.84 0.3 0.74
-0.86 0.3 0.74
-0.88 0.3 0.74
-0.12 0.32 0.74
-0.14 0.32 0.74
-0.16 0.32 0.74
-0.84 0.32 0.74
-0.86 0.32 0.74
-0.88 0.32 0.74
-0.1 0.34 0.74
-0.12 0.34 0.74
-0.14 0.34 0.74
-0.86 0.34 0.74
-0.88 0.34 0.74
-0.9 0.34 0.74
-0.1 0.36 0.74
-0.12 0.36 0.74
-0.14 0.36 0.74
-0.86 0.36 0.74
-0.88 0.36 0.74
-0.9 0.36 0.74
-0.08 0.38 0.74
-0.1 0.38 0.74
-0.12 0.38 0.74
-0.88 0.38 0.74
-0.9 0.38 0.74
-0.92 0.38 0.74
-0.08 0.4 0.74
-0.1 0.4 0.74
-0.12 0.4 0.74
-0.88 0.4 0.74
-0.9 0.4 0.74
-0.92 0.4 0.74
-0.08 0.42 0.74
-0.1 0.42 0.74
-0.12 0.42 0.74
-0.88 0.42 0.74
-0.9 0.42 0.74
-0.92 0.42 0.74
-0.08 0.44 0.74
-0.1 0.44 0.74
-0.12 0.44 0.74
-0.88 0.44 0.74
-0.9 0.44 0.74
-0.92 0.44 0.74
-0.08 0.46 0.74
-0.1 0.46 0.74
-0.12 0.46 0.74
-0.88 0.46 0.74
-0.9 0.46 0.74
-0.92 0.46 0.74
-0.08 0.48 0.74
-0.1 0.48 0.74
-0.9 0.48 0.74
-0.92 0.48 0.74
-0.08 0.5 0.74
-0.1 0.5 0.74
-0.9 0.5 0.74
-0.92 0.5 0.74
-0.08 0.52 0.74
-0.1 0.52 0.74
-0.9 0.52 0.74
-0.92 0.52 0.74
-0.08 0.54 0.74
-0.1 0.54 0.74
-0.12 0.54 0.74
-0.88 0.54 0.74
-0.9 0.54 0.74
-0.92 0.54 0.74
-0.08 0.56 0.74
-0.1 0.56 0.74
-0.12 0.56 0.74
-0.88 0.56 0.74
-0.9 0.56 0.74
-0.92 0.56 0.74
-0.08 0.58 0.74
-0.1 0.58 0.74
-0.12 0.58 0.74
-0.88 0.58 0.74
-0.9 0.58 0.74
-0.92 0.58 0.74
-0.08 0.6 0.74
-0.1 0.6 0.74
-0.12 0.6 0.74
-0.88 0.6 0.74
-0.9 0.6 0.74
-0.92 0.6 0.74
-0.08 0.62 0.74
-0.1 0.62 0.74
-0.12 0.62 0.74
-0.88 0.62 0.74
-0.9 0.62 0.74
-0.92 0.62 0.74
-0.1 0.64 0.74
-0.12 0.64 0.74
-0.14 0.64 0.74
-0.86 0.64 0.74
-0.88 0.64 0.74
-0.9 0.64 0.74
-0.1 0.66 0.74
-0.12 0.66 0.74
-0.14 0.66 0.74
-0.86 0.66 0.74
-0.88 0.66 0.74
-0.9 0.66 0.74
-0.12 0.68 0.74
-0.14 0.68 0.74
-0.16 0.68 0.74
-0.84 0.68 0.74
-0.86 0.68 0.74
-0.88 0.68 0.74
-0.12 0.7 0.74
-0.14 0.7 0.74
-0.16 0.7 0.74
-0.84 0.7 0.74
-0.86 0.7 0.74
-0.88 0.7 0.74
-0.14 0.72 0.74
-0.16 0.72 0.74
-0.18 0.72 0.74
-0.82 0.72 0.74
-0.84 0.72 0.74
-0.86 0.72 0.74
-0.14 0.74 0.74
-0.16 0.74 0.74
-0.18 0.74 0.74
-0.2 0.74 0.74
-0.8 0.74 0.74
-0.82 0.74 0.74
-0.84 0.74 0.74
-0.86 0.74 0.74
-0.16 0.76 0.74
-0.18 0.76 0.74
-0.2 0.76 0.74
-0.22 0.76 0.74
-0.78 0.76 0.74
-0.8 0.76 0.74
-0.82 0.76 0.74
-0.84 0.76 0.74
-0.18 0.78 0.74
-0.2 0.78 0.74
-0.22 0.78 0.74
-0.24 0.78 0.74
-0.76 0.78 0.74
-0.78 0.78 0.74
-0.8 0.78 0.74
-0.82 0.78 0.74
-0.2 0.8 0.74
-0.22 0.8 0.74
-0.24 0.8 0.74
-0.26 0.8 0.74
-0.74 0.8 0.74
-0.76 0.8 0.74
-0.78 0.8 0.74
-0.8 0.8 0.74
-0.22 0.82 0.74
-0.24 0.82 0.74
-0.26 0.82 0.74
-0.28 0.82 0.74
-0.72 0.82 0.74
-0.74 0.82 0.74
-0.76 0.82 0.74
-0.78 0.82 0.74
-0.24 0.84 0.74
-0.26 0.84 0.74
-0.28 0.84 0.74
-0.3 0.84 0.74
-0.32 0.84 0.74
-0.68 0.84 0.74
-0.7 0.84 0.74
-0.72 0.84 0.74
-0.74 0.84 0.74
-0.76 0.84 0.74
-0.26 0.86 0.74
-0.28 0.86 0.74
-0.3 0.86 0.74
-0.32 0.86 0.74
-0.34 0.86 0.74
-0.36 0.86 0.74
-0.64 0.86 0.74
-0.66 0.86 0.74
-0.68 0.86 0.74
-0.7 0.86 0.74
-0.72 0.86 0.74
-0.74 0.86 0.74
-0.3 0.88 0.74
-0.32 0.88 0.74
-0.34 0.88 0.74
-0.36 0.88 0.74
-0.38 0.88 0.74
-0.4 0.88 0.74
-0.42 0.88 0.74
-0.44 0.88 0.74
-0.46 0.88 0.74
-0.54 0.88 0.74
-0.56 0.88 0.74
-0.58 0.88 0.74
-0.6 0.88 0.74
-0.62 0.88 0.74
-0.64 0.88 0.74
-0.66 0.88 0.74
-0.68 0.88 0.74
-0.7 0.88 0.74
-0.34 0.9 0.74
-0.36 0.9 0.74
-0.38 0.9 0.74
-0.4 0.9 0.74
-0.42 0.9 0.74
-0.44 0.9 0.74
-0.46 0.9 0.74
-0.48 0.9 0.74
-0.5 0.9 0.74
-0.52 0.9 0.74
-0.54 0.9 0.74
-0.56 0.9 0.74
-0.58 0.9 0.74
-0.6 0.9 0.74
-0.62 0.9 0.74
-0.64 0.9 0.74
-0.66 0.9 0.74
-0.38 0.92 0.74
-0.4 0.92 0.74
-0.42 0.92 0.74
-0.44 0.92 0.74
-0.46 0.92 0.74
-0.48 0.92 0.74
-0.5 0.92 0.74
-0.52 0.92 0.74
-0.54 0.92 0.74
-0.56 0.92 0.74
-0.58 0.92 0.74
-0.6 0.92 0.74
-0.62 0.92 0.74
-0.44 0.08 0.76
-0.46 0.08 0.76
-0.48 0.08 0.76
-0.5 0.08 0.76
-0.52 0.08 0.76
-0.54 0.08 0.76
-0.56 0.08 0.76
-0.36 0.1 0.76
-0.38 0.1 0.76
-0.4 0.1 0.76
-0.42 0.1 0.76
-0.44 0.1 0.76
-0.46 0.1 0.76
-0.48 0.1 0.76
-0.5 0.1 0.76
-0.52 0.1 0.76
-0.54 0.1 0.76
-0.56 0.1 0.76
-0.58 0.1 0.76
-0.6 0.1 0.76
-0.62 0.1 0.76
-0.64 0.1 0.76
-0.32 0.12 0.76
-0.34 0.12 0.76
-0.36 0.12 0.76
-0.38 0.12 0.76
-0.4 0.12 0.76
-0.42 0.12 0.76
-0.44 0.12 0.76
-0.46 0.12 0.76
-0.48 0.12 0.76
-0.5 0.12 0.76
-0.52 0.12 0.76
-0.54 0.12 0.76
-0.56 0.12 0.76
-0.58 0.12 0.76
-0.6 0.12 0.76
-0.62 0.12 0.76
-0.64 0.12 0.76
-0.66 0.12 0.76
-0.68 0.12 0.76
-0.28 0.14 0.76
-0.3 0.14 0.76
-0.32 0.14 0.76
-0.34 0.14 0.76
-0.36 0.14 0.76
-0.38 0.14 0.76
-0.4 0.14 0.76
-0.42 0.14 0.76
-0.58 0.14 0.76
-0.6 0.14 0.76
-0.62 0.14 0.76
-0.64 0.14 0.76
-0.66 0.14 0.76
-0.68 0.14 0.76
-0.7 0.14 0.76
-0.72 0.14 0.76
-0.26 0.16 0.76
-0.28 0.16 0.76
-0.3 0.16 0.76
-0.32 0.16 0.76
-0.34 0.16 0.76
-0.36 0.16 0.76
-0.64 0.16 0.76
-0.66 0.16 0.76
-0.68 0.16 0.76
-0.7 0.16 0.76
-0.72 0.16 0.76
-0.74 0.16 0.76
-0.22 0.18 0.76
-0.24 0.18 0.76
-0.26 0.18 0.76
-0.28 0.18 0.76
-0.3 0.18 0.76
-0.7 0.18 0.76
-0.72 0.18 0.76
-0.74 0.18 0.76
-0.76 0.18 0.76
-0.78 0.18 0.76
-0.2 0.2 0.76
-0.22 0.2 0.76
-0.24 0.2 0.76
-0.26 0.2 0.76
-0.28 0.2 0.76
-0.72 0.2 0.76
-0.74 0.2 0.76
-0.76 0.2 0.76
-0.78 0.2 0.76
-0.8 0.2 0.76
-0.18 0.22 0.76
-0.2 0.22 0.76
-0.22 0.22 0.76
-0.24 0.22 0.76
-0.26 0.22 0.76
-0.74 0.22 0.76
-0.76 0.22 0.76
-0.78 0.22 0.76
-0.8 0.22 0.76
-0.82 0.22 0.76
-0.18 0.24 0.76
-0.2 0.24 0.76
-0.22 0.24 0.76
-0.24 0.24 0.76
-0.76 0.24 0.76
-0.78 0.24 0.76
-0.8 0.24 0.76
-0.82 0.24 0.76
-0.16 0.26 0.76
-0.18 0.26 0.76
-0.2 0.26 0.76
-0.22 0.26 0.76
-0.78 0.26 0.76
-0.8 0.26 0.76
-0.82 0.26 0.76
-0.84 0.26 0.76
-0.14 0.28 0.76
-0.16 0.28 0.76
-0.18 0.28 0.76
-0.2 0.28 0.76
-0.8 0.28 0.76
-0.82 0.28 0.76
-0.84 0.28 0.76
-0.86 0.28 0.76
-0.14 0.3 0.76
-0.16 0.3 0.76
-0.18 0.3 0.76
-0.82 0.3 0.76
-0.84 0.3 0.76
-0.86 0.3 0.76
-0.12 0.32 0.76
-0.14 0.32 0.76
-0.16 0.32 0.76
-0.84 0.32 0.76
-0.86 0.32 0.76
-0.88 0.32 0.76
-0.12 0.34 0.76
-0.14 0.34 0.76
-0.16 0.34 0.76
-0.84 0.34 0.76
-0.86 0.34 0.76
-0.88 0.34 0.76
-0.1 0.36 0.76
-0.12 0.36 0.76
-0.14 0.36 0.76
-0.16 0.36 0.76
-0.84 0.36 0.76
-0.86 0.36 0.76
-0.88 0.36 0.76
-0.9 0.36 0.76
-0.1 0.38 0.76
-0.12 0.38 0.76
-0.14 0.38 0.76
-0.86 0.38 0.76
-0.88 0.38 0.76
-0.9 0.38 0.76
-0.1 0.4 0.76
-0.12 0.4 0.76
-0.14 0.4 0.76
-0.86 0.4 0.76
-0.88 0.4 0.76
-0.9 0.4 0.76
-0.1 0.42 0.76
-0.12 0.42 0.76
-0.14 0.42 0.76
-0.86 0.42 0.76
-0.88 0.42 0.76
-0.9 0.42 0.76
-0.08 0.44 0.76
-0.1 0.44 0.76
-0.12 0.44 0.76
-0.88 0.44 0.76
-0.9 0.44 0.76
-0.92 0.44 0.76
-0.08 0.46 0.76
-0.1 0.46 0.76
-0.12 0.46 0.76
-0.88 0.46 0.76
-0.9 0.46 0.76
-0.92 0.46 0.76
-0.08 0.48 0.76
-0.1 0.48 0.76
-0.12 0.48 0.76
-0.88 0.48 0.76
-0.9 0.48 0.76
-0.92 0.48 0.76
-0.08 0.5 0.76
-0.1 0.5 0.76
-0.12 0.5 0.76
-0.88 0.5 0.76
-0.9 0.5 0.76
-0.92 0.5 0.76
-0.08 0.52 0.76
-0.1 0.52 0.76
-0.12 0.52 0.76
-0.88 0.52 0.76
-0.9 0.52 0.76
-0.92 0.52 0.76
-0.08 0.54 0.76
-0.1 0.54 0.76
-0.12 0.54 0.76
-0.88 0.54 0.76
-0.9 0.54 0.76
-0.92 0.54 0.76
-0.08 0.56 0.76
-0.1 0.56 0.76
-0.12 0.56 0.76
-0.88 0.56 0.76
-0.9 0.56 0.76
-0.92 0.56 0.76
-0.1 0.58 0.76
-0.12 0.58 0.76
-0.14 0.58 0.76
-0.86 0.58 0.76
-0.88 0.58 0.76
-0.9 0.58 0.76
-0.1 0.6 0.76
-0.12 0.6 0.76
-0.14 0.6 0.76
-0.86 0.6 0.76
-0.88 0.6 0.76
-0.9 0.6 0.76
-0.1 0.62 0.76
-0.12 0.62 0.76
-0.14 0.62 0.76
-0.86 0.62 0.76
-0.88 0.62 0.76
-0.9 0.62 0.76
-0.1 0.64 0.76
-0.12 0.64 0.76
-0.14 0.64 0.76
-0.16 0.64 0.76
-0.84 0.64 0.76
-0.86 0.64 0.76
-0.88 0.64 0.76
-0.9 0.64 0.76
-0.12 0.66 0.76
-0.14 0.66 0.76
-0.16 0.66 0.76
-0.84 0.66 0.76
-0.86 0.66 0.76
-0.88 0.66 0.76
-0.12 0.68 0.76
-0.14 0.68 0.76
-0.16 0.68 0.76
-0.84 0.68 0.76
-0.86 0.68 0.76
-0.88 0.68 0.76
-0.14 0.7 0.76
-0.16 0.7 0.76
-0.18 0.7 0.76
-0.82 0.7 0.76
-0.84 0.7 0.76
-0.86 0.7 0.76
-0.14 0.72 0.76
-0.16 0.72 0.76
-0.18 0.72 0.76
-0.2 0.72 0.76
-0.8 0.72 0.76
-0.82 0.72 0.76
-0.84 0.72 0.76
-0.86 0.72 0.76
-0.16 0.74 0.76
-0.18 0.74 0.76
-0.2 0.74 0.76
-0.22 0.74 0.76
-0.78 0.74 0.76
-0.8 0.74 0.76
-0.82 0.74 0.76
-0.84 0.74 0.76
-0.18 0.76 0.76
-0.2 0.76 0.76
-0.22 0.76 0.76
-0.24 0.76 0.76
-0.76 0.76 0.76
-0.78 0.76 0.76
-0.8 0.76 0.76
-0.82 0.76 0.76
-0.18 0.78 0.76
-0.2 0.78 0.76
-0.22 0.78 0.76
-0.24 0.78 0.76
-0.26 0.78 0.76
-0.74 0.78 0.76
-0.76 0.78 0.76
-0.78 0.78 0.76
-0.8 0.78 0.76
-0.82 0.78 0.76
-0.2 0.8 0.76
-0.22 0.8 0.76
-0.24 0.8 0.76
-0.26 0.8 0.76
-0.28 0.8 0.76
-0.72 0.8 0.76
-0.74 0.8 0.76
-0.76 0.8 0.76
-0.78 0.8 0.76
-0.8 0.8 0.76
-0.22 0.82 0.76
-0.24 0.82 0.76
-0.26 0.82 0.76
-0.28 0.82 0.76
-0.3 0.82 0.76
-0.7 0.82 0.76
-0.72 0.82 0.76
-0.74 0.82 0.76
-0.76 0.82 0.76
-0.78 0.82 0.76
-0.26 0.84 0.76
-0.28 0.84 0.76
-0.3 0.84 0.76
-0.32 0.84 0.76
-0.34 0.84 0.76
-0.36 0.84 0.76
-0.64 0.84 0.76
-0.66 0.84 0.76
-0.68 0.84 0.76
-0.7 0.84 0.76
-0.72 0.84 0.76
-0.74 0.84 0.76
-0.28 0.86 0.76
-0.3 0.86 0.76
-0.32 0.86 0.76
-0.34 0.86 0.76
-0.36 0.86 0.76
-0.38 0.86 0.76
-0.4 0.86 0.76
-0.42 0.86 0.76
-0.58 0.86 0.76
-0.6 0.86 0.76
-0.62 0.86 0.76
-0.64 0.86 0.76
-0.66 0.86 0.76
-0.68 0.86 0.76
-0.7 0.86 0.76
-0.72 0.86 0.76
-0.32 0.88 0.76
-0.34 0.88 0.76
-0.36 0.88 0.76
-0.38 0.88 0.76
-0.4 0.88 0.76
-0.42 0.88 0.76
-0.44 0.88 0.76
-0.46 0.88 0.76
-0.48 0.88 0.76
-0.5 0.88 0.76
-0.52 0.88 0.76
-0.54 0.88 0.76
-0.56 0.88 0.76
-0.58 0.88 0.76
-0.6 0.88 0.76
-0.62 0.88 0.76
-0.64 0.88 0.76
-0.66 0.88 0.76
-0.68 0.88 0.76
-0.36 0.9 0.76
-0.38 0.9 0.76
-0.4 0.9 0.76
-0.42 0.9 0.76
-0.44 0.9 0.76
-0.46 0.9 0.76
-0.48 0.9 0.76
-0.5 0.9 0.76
-0.52 0.9 0.76
-0.54 0.9 0.76
-0.56 0.9 0.76
-0.58 0.9 0.76
-0.6 0.9 0.76
-0.62 0.9 0.76
-0.64 0.9 0.76
-0.44 0.92 0.76
-0.46 0.92 0.76
-0.48 0.92 0.76
-0.5 0.92 0.76
-0.52 0.92 0.76
-0.54 0.92 0.76
-0.56 0.92 0.76
-0.4 0.1 0.78
-0.42 0.1 0.78
-0.44 0.1 0.78
-0.46 0.1 0.78
-0.48 0.1 0.78
-0.5 0.1 0.78
-0.52 0.1 0.78
-0.54 0.1 0.78
-0.56 0.1 0.78
-0.58 0.1 0.78
-0.6 0.1 0.78
-0.34 0.12 0.78
-0.36 0.12 0.78
-0.38 0.12 0.78
-0.4 0.12 0.78
-0.42 0.12 0.78
-0.44 0.12 0.78
-0.46 0.12 0.78
-0.48 0.12 0.78
-0.5 0.12 0.78
-0.52 0.12 0.78
-0.54 0.12 0.78
-0.56 0.12 0.78
-0.58 0.12 0.78
-0.6 0.12 0.78
-0.62 0.12 0.78
-0.64 0.12 0.78
-0.66 0.12 0.78
-0.3 0.14 0.78
-0.32 0.14 0.78
-0.34 0.14 0.78
-0.36 0.14 0.78
-0.38 0.14 0.78
-0.4 0.14 0.78
-0.42 0.14 0.78
-0.44 0.14 0.78
-0.46 0.14 0.78
-0.48 0.14 0.78
-0.5 0.14 0.78
-0.52 0.14 0.78
-0.54 0.14 0.78
-0.56 0.14 0.78
-0.58 0.14 0.78
-0.6 0.14 0.78
-0.62 0.14 0.78
-0.64 0.14 0.78
-0.66 0.14 0.78
-0.68 0.14 0.78
-0.7 0.14 0.78
-0.28 0.16 0.78
-0.3 0.16 0.78
-0.32 0.16 0.78
-0.34 0.16 0.78
-0.36 0.16 0.78
-0.38 0.16 0.78
-0.4 0.16 0.78
-0.6 0.16 0.78
-0.62 0.16 0.78
-0.64 0.16 0.78
-0.66 0.16 0.78
-0.68 0.16 0.78
-0.7 0.16 0.78
-0.72 0.16 0.78
-0.24 0.18 0.78
-0.26 0.18 0.78
-0.28 0.18 0.78
-0.3 0.18 0.78
-0.32 0.18 0.78
-0.34 0.18 0.78
-0.66 0.18 0.78
-0.68 0.18 0.78
-0.7 0.18 0.78
-0.72 0.18 0.78
-0.74 0.18 0.78
-0.76 0.18 0.78
-0.22 0.2 0.78
-0.24 0.2 0.78
-0.26 0.2 0.78
-0.28 0.2 0.78
-0.3 0.2 0.78
-0.7 0.2 0.78
-0.72 0.2 0.78
-0.74 0.2 0.78
-0.76 0.2 0.78
-0.78 0.2 0.78
-0.2 0.22 0.78
-0.22 0.22 0.78
-0.24 0.22 0.78
-0.26 0.22 0.78
-0.28 0.22 0.78
-0.72 0.22 0.78
-0.74 0.22 0.78
-0.76 0.22 0.78
-0.78 0.22 0.78
-0.8 0.22 0.78
-0.18 0.24 0.78
-0.2 0.24 0.78
-0.22 0.24 0.78
-0.24 0.24 0.78
-0.26 0.24 0.78
-0.74 0.24 0.78
-0.76 0.24 0.78
-0.78 0.24 0.78
-0.8 0.24 0.78
-0.82 0.24 0.78
-0.18 0.26 0.78
-0.2 0.26 0.78
-0.22 0.26 0.78
-0.24 0.26 0.78
-0.76 0.26 0.78
-0.78 0.26 0.78
-0.8 0.26 0.78
-0.82 0.26 0.78
-0.16 0.28 0.78
-0.18 0.28 0.78
-0.2 0.28 0.78
-0.22 0.28 0.78
-0.78 0.28 0.78
-0.8 0.28 0.78
-0.82 0.28 0.78
-0.84 0.28 0.78
-0.14 0.3 0.78
-0.16 0.3 0.78
-0.18 0.3 0.78
-0.2 0.3 0.78
-0.8 0.3 0.78
-0.82 0.3 0.78
-0.84 0.3 0.78
-0.86 0.3 0.78
-0.14 0.32 0.78
-0.16 0.32 0.78
-0.18 0.32 0.78
-0.82 0.32 0.78
-0.84 0.32 0.78
-0.86 0.32 0.78
-0.12 0.34 0.78
-0.14 0.34 0.78
-0.16 0.34 0.78
-0.18 0.34 0.78
-0.82 0.34 0.78
-0.84 0.34 0.78
-0.86 0.34 0.78
-0.88 0.34 0.78
-0.12 0.36 0.78
-0.14 0.36 0.78
-0.16 0.36 0.78
-0.84 0.36 0.78
-0.86 0.36 0.78
-0.88 0.36 0.78
-0.12 0.38 0.78
-0.14 0.38 0.78
-0.16 0.38 0.78
-0.84 0.38 0.78
-0.86 0.38 0.78
-0.88 0.38 0.78
-0.1 0.4 0.78
-0.12 0.4 0.78
-0.14 0.4 0.78
-0.16 0.4 0.78
-0.84 0.4 0.78
-0.86 0.4 0.78
-0.88 0.4 0.78
-0.9 0.4 0.78
-0.1 0.42 0.78
-0.12 0.42 0.78
-0.14 0.42 0.78
-0.86 0.42 0.78
-0.88 0.42 0.78
-0.9 0.42 0.78
-0.1 0.44 0.78
-0.12 0.44 0.78
-0.14 0.44 0.78
-0.86 0.44 0.78
-0.88 0.44 0.78
-0.9 0.44 0.78
-0.1 0.46 0.78
-0.12 0.46 0.78
-0.14 0.46 0.78
-0.86 0.46 0.78
-0.88 0.46 0.78
-0.9 0.46 0.78
-0.1 0.48 0.78
-0.12 0.48 0.78
-0.14 0.48 0.78
-0.86 0.48 0.78
-0.88 0.48 0.78
-0.9 0.48 0.78
-0.1 0.5 0.78
-0.12 0.5 0.78
-0.14 0.5 0.78
-0.86 0.5 0.78
-0.88 0.5 0.78
-0.9 0.5 0.78
-0.1 0.52 0.78
-0.12 0.52 0.78
-0.14 0.52 0.78
-0.86 0.52 0.78
-0.88 0.52 0.78
-0.9 0.52 0.78
-0.1 0.54 0.78
-0.12 0.54 0.78
-0.14 0.54 0.78
-0.86 0.54 0.78
-0.88 0.54 0.78
-0.9 0.54 0.78
-0.1 0.56 0.78
-0.12 0.56 0.78
-0.14 0.56 0.78
-0.86 0.56 0.78
-0.88 0.56 0.78
-0.9 0.56 0.78
-0.1 0.58 0.78
-0.12 0.58 0.78
-0.14 0.58 0.78
-0.86 0.58 0.78
-0.88 0.58 0.78
-0.9 0.58 0.78
-0.1 0.6 0.78
-0.12 0.6 0.78
-0.14 0.6 0.78
-0.16 0.6 0.78
-0.84 0.6 0.78
-0.86 0.6 0.78
-0.88 0.6 0.78
-0.9 0.6 0.78
-0.12 0.62 0.78
-0.14 0.62 0.78
-0.16 0.62 0.78
-0.84 0.62 0.78
-0.86 0.62 0.78
-0.88 0.62 0.78
-0.12 0.64 0.78
-0.14 0.64 0.78
-0.16 0.64 0.78
-0.84 0.64 0.78
-0.86 0.64 0.78
-0.88 0.64 0.78
-0.12 0.66 0.78
-0.14 0.66 0.78
-0.16 0.66 0.78
-0.18 0.66 0.78
-0.82 0.66 0.78
-0.84 0.66 0.78
-0.86 0.66 0.78
-0.88 0.66 0.78
-0.14 0.68 0.78
-0.16 0.68 0.78
-0.18 0.68 0.78
-0.82 0.68 0.78
-0.84 0.68 0.78
-0.86 0.68 0.78
-0.14 0.7 0.78
-0.16 0.7 0.78
-0.18 0.7 0.78
-0.2 0.7 0.78
-0.8 0.7 0.78
-0.82 0.7 0.78
-0.84 0.7 0.78
-0.86 0.7 0.78
-0.16 0.72 0.78
-0.18 0.72 0.78
-0.2 0.72 0.78
-0.22 0.72 0.78
-0.78 0.72 0.78
-0.8 0.72 0.78
-0.82 0.72 0.78
-0.84 0.72 0.78
-0.18 0.74 0.78
-0.2 0.74 0.78
-0.22 0.74 0.78
-0.24 0.74 0.78
-0.76 0.74 0.78
-0.78 0.74 0.78
-0.8 0.74 0.78
-0.82 0.74 0.78
-0.18 0.76 0.78
-0.2 0.76 0.78
-0.22 0.76 0.78
-0.24 0.76 0.78
-0.26 0.76 0.78
-0.74 0.76 0.78
-0.76 0.76 0.78
-0.78 0.76 0.78
-0.8 0.76 0.78
-0.82 0.76 0.78
-0.2 0.78 0.78
-0.22 0.78 0.78
-0.24 0.78 0.78
-0.26 0.78 0.78
-0.28 0.78 0.78
-0.72 0.78 0.78
-0.74 0.78 0.78
-0.76 0.78 0.78
-0.78 0.78 0.78
-0.8 0.78 0.78
-0.22 0.8 0.78
-0.24 0.8 0.78
-0.26 0.8 0.78
-0.28 0.8 0.78
-0.3 0.8 0.78
-0.7 0.8 0.78
-0.72 0.8 0.78
-0.74 0.8 0.78
-0.76 0.8 0.78
-0.78 0.8 0.78
-0.24 0.82 0.78
-0.26 0.82 0.78
-0.28 0.82 0.78
-0.3 0.82 0.78
-0.32 0.82 0.78
-0.34 0.82 0.78
-0.66 0.82 0.78
-0.68 0.82 0.78
-0.7 0.82 0.78
-0.72 0.82 0.78
-0.74 0.82 0.78
-0.76 0.82 0.78
-0.28 0.84 0.78
-0.3 0.84 0.78
-0.32 0.84 0.78
-0.34 0.84 0.78
-0.36 0.84 0.78
-0.38 0.84 0.78
-0.4 0.84 0.78
-0.6 0.84 0.78
-0.62 0.84 0.78
-0.64 0.84 0.78
-0.66 0.84 0.78
-0.68 0.84 0.78
-0.7 0.84 0.78
-0.72 0.84 0.78
-0.3 0.86 0.78
-0.32 0.86 0.78
-0.34 0.86 0.78
-0.36 0.86 0.78
-0.38 0.86 0.78
-0.4 0.86 0.78
-0.42 0.86 0.78
-0.44 0.86 0.78
-0.46 0.86 0.78
-0.48 0.86 0.78
-0.5 0.86 0.78
-0.52 0.86 0.78
-0.54 0.86 0.78
-0.56 0.86 0.78
-0.58 0.86 0.78
-0.6 0.86 0.78
-0.62 0.86 0.78
-0.64 0.86 0.78
-0.66 0.86 0.78
-0.68 0.86 0.78
-0.7 0.86 0.78
-0.34 0.88 0.78
-0.36 0.88 0.78
-0.38 0.88 0.78
-0.4 0.88 0.78
-0.42 0.88 0.78
-0.44 0.88 0.78
-0.46 0.88 0.78
-0.48 0.88 0.78
-0.5 0.88 0.78
-0.52 0.88 0.78
-0.54 0.88 0.78
-0.56 0.88 0.78
-0.58 0.88 0.78
-0.6 0.88 0.78
-0.62 0.88 0.78
-0.64 0.88 0.78
-0.66 0.88 0.78
-0.4 0.9 0.78
-0.42 0.9 0.78
-0.44 0.9 0.78
-0.46 0.9 0.78
-0.48 0.9 0.78
-0.5 0.9 0.78
-0.52 0.9 0.78
-0.54 0.9 0.78
-0.56 0.9 0.78
-0.58 0.9 0.78
-0.6 0.9 0.78
-0.38 0.12 0.8
-0.4 0.12 0.8
-0.42 0.12 0.8
-0.44 0.12 0.8
-0.46 0.12 0.8
-0.48 0.12 0.8
-0.5 0.12 0.8
-0.52 0.12 0.8
-0.54 0.12 0.8
-0.56 0.12 0.8
-0.58 0.12 0.8
-0.6 0.12 0.8
-0.62 0.12 0.8
-0.34 0.14 0.8
-0.36 0.14 0.8
-0.38 0.14 0.8
-0.4 0.14 0.8
-0.42 0.14 0.8
-0.44 0.14 0.8
-0.46 0.14 0.8
-0.48 0.14 0.8
-0.5 0.14 0.8
-0.52 0.14 0.8
-0.54 0.14 0.8
-0.56 0.14 0.8
-0.58 0.14 0.8
-0.6 0.14 0.8
-0.62 0.14 0.8
-0.64 0.14 0.8
-0.66 0.14 0.8
-0.3 0.16 0.8
-0.32 0.16 0.8
-0.34 0.16 0.8
-0.36 0.16 0.8
-0.38 0.16 0.8
-0.4 0.16 0.8
-0.42 0.16 0.8
-0.44 0.16 0.8
-0.46 0.16 0.8
-0.48 0.16 0.8
-0.5 0.16 0.8
-0.52 0.16 0.8
-0.54 0.16 0.8
-0.56 0.16 0.8
-0.58 0.16 0.8
-0.6 0.16 0.8
-0.62 0.16 0.8
-0.64 0.16 0.8
-0.66 0.16 0.8
-0.68 0.16 0.8
-0.7 0.16 0.8
-0.28 0.18 0.8
-0.3 0.18 0.8
-0.32 0.18 0.8
-0.34 0.18 0.8
-0.36 0.18 0.8
-0.38 0.18 0.8
-0.62 0.18 0.8
-0.64 0.18 0.8
-0.66 0.18 0.8
-0.68 0.18 0.8
-0.7 0.18 0.8
-0.72 0.18 0.8
-0.24 0.2 0.8
-0.26 0.2 0.8
-0.28 0.2 0.8
-0.3 0.2 0.8
-0.32 0.2 0.8
-0.34 0.2 0.8
-0.66 0.2 0.8
-0.68 0.2 0.8
-0.7 0.2 0.8
-0.72 0.2 0.8
-0.74 0.2 0.8
-0.76 0.2 0.8
-0.22 0.22 0.8
-0.24 0.22 0.8
-0.26 0.22 0.8
-0.28 0.22 0.8
-0.3 0.22 0.8
-0.7 0.22 0.8
-0.72 0.22 0.8
-0.74 0.22 0.8
-0.76 0.22 0.8
-0.78 0.22 0.8
-0.2 0.24 0.8
-0.22 0.24 0.8
-0.24 0.24 0.8
-0.26 0.24 0.8
-0.28 0.24 0.8
-0.72 0.24 0.8
-0.74 0.24 0.8
-0.76 0.24 0.8
-0.78 0.24 0.8
-0.8 0.24 0.8
-0.2 0.26 0.8
-0.22 0.26 0.8
-0.24 0.26 0.8
-0.26 0.26 0.8
-0.74 0.26 0.8
-0.76 0.26 0.8
-0.78 0.26 0.8
-0.8 0.26 0.8
-0.18 0.28 0.8
-0.2 0.28 0.8
-0.22 0.28 0.8
-0.24 0.28 0.8
-0.76 0.28 0.8
-0.78 0.28 0.8
-0.8 0.28 0.8
-0.82 0.28 0.8
-0.16 0.3 0.8
-0.18 0.3 0.8
-0.2 0.3 0.8
-0.22 0.3 0.8
-0.78 0.3 0.8
-0.8 0.3 0.8
-0.82 0.3 0.8
-0.84 0.3 0.8
-0.16 0.32 0.8
-0.18 0.32 0.8
-0.2 0.32 0.8
-0.8 0.32 0.8
-0.82 0.32 0.8
-0.84 0.32 0.8
-0.14 0.34 0.8
-0.16 0.34 0.8
-0.18 0.34 0.8
-0.2 0.34 0.8
-0.8 0.34 0.8
-0.82 0.34 0.8
-0.84 0.34 0.8
-0.86 0.34 0.8
-0.14 0.36 0.8
-0.16 0.36 0.8
-0.18 0.36 0.8
-0.82 0.36 0.8
-0.84 0.36 0.8
-0.86 0.36 0.8
-0.12 0.38 0.8
-0.14 0.38 0.8
-0.16 0.38 0.8
-0.18 0.38 0.8
-0.82 0.38 0.8
-0.84 0.38 0.8
-0.86 0.38 0.8
-0.88 0.38 0.8
-0.12 0.4 0.8
-0.14 0.4 0.8
-0.16 0.4 0.8
-0.84 0.4 0.8
-0.86 0.4 0.8
-0.88 0.4 0.8
-0.12 0.42 0.8
-0.14 0.42 0.8
-0.16 0.42 0.8
-0.84 0.42 0.8
-0.86 0.42 0.8
-0.88 0.42 0.8
-0.12 0.44 0.8
-0.14 0.44 0.8
-0.16 0.44 0.8
-0.84 0.44 0.8
-0.86 0.44 0.8
-0.88 0.44 0.8
-0.12 0.46 0.8
-0.14 0.46 0.8
-0.16 0.46 0.8
-0.84 0.46 0.8
-0.86 0.46 0.8
-0.88 0.46 0.8
-0.12 0.48 0.8
-0.14 0.48 0.8
-0.16 0.48 0.8
-0.84 0.48 0.8
-0.86 0.48 0.8
-0.88 0.48 0.8
-0.12 0.5 0.8
-0.14 0.5 0.8
-0.16 0.5 0.8
-0.84 0.5 0.8
-0.86 0.5 0.8
-0.88 0.5 0.8
-0.12 0.52 0.8
-0.14 0.52 0.8
-0.16 0.52 0.8
-0.84 0.52 0.8
-0.86 0.52 0.8
-0.88 0.52 0.8
-0.12 0.54 0.8
-0.14 0.54 0.8
-0.16 0.54 0.8
-0.84 0.54 0.8
-0.86 0.54 0.8
-0.88 0.54 0.8
-0.12 0.56 0.8
-0.14 0.56 0.8
-0.16 0.56 0.8
-0.84 0.56 0.8
-0.86 0.56 0.8
-0.88 0.56 0.8
-0.12 0.58 0.8
-0.14 0.58 0.8
-0.16 0.58 0.8
-0.84 0.58 0.8
-0.86 0.58 0.8
-0.88 0.58 0.8
-0.12 0.6 0.8
-0.14 0.6 0.8
-0.16 0.6 0.8
-0.84 0.6 0.8
-0.86 0.6 0.8
-0.88 0.6 0.8
-0.12 0.62 0.8
-0.14 0.62 0.8
-0.16 0.62 0.8
-0.18 0.62 0.8
-0.82 0.62 0.8
-0.84 0.62 0.8
-0.86 0.62 0.8
-0.88 0.62 0.8
-0.14 0.64 0.8
-0.16 0.64 0.8
-0.18 0.64 0.8
-0.82 0.64 0.8
-0.84 0.64 0.8
-0.86 0.64 0.8
-0.14 0.66 0.8
-0.16 0.66 0.8
-0.18 0.66 0.8
-0.2 0.66 0.8
-0.8 0.66 0.8
-0.82 0.66 0.8
-0.84 0.66 0.8
-0.86 0.66 0.8
-0.16 0.68 0.8
-0.18 0.68 0.8
-0.2 0.68 0.8
-0.8 0.68 0.8
-0.82 0.68 0.8
-0.84 0.68 0.8
-0.16 0.7 0.8
-0.18 0.7 0.8
-0.2 0.7 0.8
-0.22 0.7 0.8
-0.78 0.7 0.8
-0.8 0.7 0.8
-0.82 0.7 0.8
-0.84 0.7 0.8
-0.18 0.72 0.8
-0.2 0.72 0.8
-0.22 0.72 0.8
-0.24 0.72 0.8
-0.76 0.72 0.8
-0.78 0.72 0.8
-0.8 0.72 0.8
-0.82 0.72 0.8
-0.2 0.74 0.8
-0.22 0.74 0.8
-0.24 0.74 0.8
-0.26 0.74 0.8
-0.74 0.74 0.8
-0.76 0.74 0.8
-0.78 0.74 0.8
-0.8 0.74 0.8
-0.2 0.76 0.8
-0.22 0.76 0.8
-0.24 0.76 0.8
-0.26 0.76 0.8
-0.28 0.76 0.8
-0.72 0.76 0.8
-0.74 0.76 0.8
-0.76 0.76 0.8
-0.78 0.76 0.8
-0.8 0.76 0.8
-0.22 0.78 0.8
-0.24 0.78 0.8
-0.26 0.78 0.8
-0.28 0.78 0.8
-0.3 0.78 0.8
-0.7 0.78 0.8
-0.72 0.78 0.8
-0.74 0.78 0.8
-0.76 0.78 0.8
-0.78 0.78 0.8
-0.24 0.8 0.8
-0.26 0.8 0.8
-0.28 0.8 0.8
-0.3 0.8 0.8
-0.32 0.8 0.8
-0.34 0.8 0.8
-0.66 0.8 0.8
-0.68 0.8 0.8
-0.7 0.8 0.8
-0.72 0.8 0.8
-0.74 0.8 0.8
-0.76 0.8 0.8
-0.28 0.82 0.8
-0.3 0.82 0.8
-0.32 0.82 0.8
-0.34 0.82 0.8
-0.36 0.82 0.8
-0.38 0.82 0.8
-0.62 0.82 0.8
-0.64 0.82 0.8
-0.66 0.82 0.8
-0.68 0.82 0.8
-0.7 0.82 0.8
-0.72 0.82 0.8
-0.3 0.84 0.8
-0.32 0.84 0.8
-0.34 0.84 0.8
-0.36 0.84 0.8
-0.38 0.84 0.8
-0.4 0.84 0.8
-0.42 0.84 0.8
-0.44 0.84 0.8
-0.46 0.84 0.8
-0.48 0.84 0.8
-0.5 0.84 0.8
-0.52 0.84 0.8
-0.54 0.84 0.8
-0.56 0.84 0.8
-0.58 0.84 0.8
-0.6 0.84 0.8
-0.62 0.84 0.8
-0.64 0.84 0.8
-0.66 0.84 0.8
-0.68 0.84 0.8
-0.7 0.84 0.8
-0.34 0.86 0.8
-0.36 0.86 0.8
-0.38 0.86 0.8
-0.4 0.86 0.8
-0.42 0.86 0.8
-0.44 0.86 0.8
-0.46 0.86 0.8
-0.48 0.86 0.8
-0.5 0.86 0.8
-0.52 0.86 0.8
-0.54 0.86 0.8
-0.56 0.86 0.8
-0.58 0.86 0.8
-0.6 0.86 0.8
-0.62 0.86 0.8
-0.64 0.86 0.8
-0.66 0.86 0.8
-0.38 0.88 0.8
-0.4 0.88 0.8
-0.42 0.88 0.8
-0.44 0.88 0.8
-0.46 0.88 0.8
-0.48 0.88 0.8
-0.5 0.88 0.8
-0.52 0.88 0.8
-0.54 0.88 0.8
-0.56 0.88 0.8
-0.58 0.88 0.8
-0.6 0.88 0.8
-0.62 0.88 0.8
-0.46 0.12 0.82
-0.48 0.12 0.82
-0.5 0.12 0.82
-0.52 0.12 0.82
-0.54 0.12 0.82
-0.38 0.14 0.82
-0.4 0.14 0.82
-0.42 0.14 0.82
-0.44 0.14 0.82
-0.46 0.14 0.82
-0.48 0.14 0.82
-0.5 0.14 0.82
-0.52 0.14 0.82
-0.54 0.14 0.82
-0.56 0.14 0.82
-0.58 0.14 0.82
-0.6 0.14 0.82
-0.62 0.14 0.82
-0.34 0.16 0.82
-0.36 0.16 0.82
-0.38 0.16 0.82
-0.4 0.16 0.82
-0.42 0.16 0.82
-0.44 0.16 0.82
-0.46 0.16 0.82
-0.48 0.16 0.82
-0.5 0.16 0.82
-0.52 0.16 0.82
-0.54 0.16 0.82
-0.56 0.16 0.82
-0.58 0.16 0.82
-0.6 0.16 0.82
-0.62 0.16 0.82
-0.64 0.16 0.82
-0.66 0.16 0.82
-0.3 0.18 0.82
-0.32 0.18 0.82
-0.34 0.18 0.82
-0.36 0.18 0.82
-0.38 0.18 0.82
-0.4 0.18 0.82
-0.42 0.18 0.82
-0.44 0.18 0.82
-0.46 0.18 0.82
-0.48 0.18 0.82
-0.5 0.18 0.82
-0.52 0.18 0.82
-0.54 0.18 0.82
-0.56 0.18 0.82
-0.58 0.18 0.82
-0.6 0.18 0.82
-0.62 0.18 0.82
-0.64 0.18 0.82
-0.66 0.18 0.82
-0.68 0.18 0.82
-0.7 0.18 0.82
-0.28 0.2 0.82
-0.3 0.2 0.82
-0.32 0.2 0.82
-0.34 0.2 0.82
-0.36 0.2 0.82
-0.38 0.2 0.82
-0.62 0.2 0.82
-0.64 0.2 0.82
-0.66 0.2 0.82
-0.68 0.2 0.82
-0.7 0.2 0.82
-0.72 0.2 0.82
-0.24 0.22 0.82
-0.26 0.22 0.82
-0.28 0.22 0.82
-0.3 0.22 0.82
-0.32 0.22 0.82
-0.34 0.22 0.82
-0.66 0.22 0.82
-0.68 0.22 0.82
-0.7 0.22 0.82
-0.72 0.22 0.82
-0.74 0.22 0.82
-0.76 0.22 0.82
-0.22 0.24 0.82
-0.24 0.24 0.82
-0.26 0.24 0.82
-0.28 0.24 0.82
-0.3 0.24 0.82
-0.7 0.24 0.82
-0.72 0.24 0.82
-0.74 0.24 0.82
-0.76 0.24 0.82
-0.78 0.24 0.82
-0.22 0.26 0.82
-0.24 0.26 0.82
-0.26 0.26 0.82
-0.28 0.26 0.82
-0.72 0.26 0.82
-0.74 0.26 0.82
-0.76 0.26 0.82
-0.78 0.26 0.82
-0.2 0.28 0.82
-0.22 0.28 0.82
-0.24 0.28 0.82
-0.26 0.28 0.82
-0.74 0.28 0.82
-0.76 0.28 0.82
-0.78 0.28 0.82
-0.8 0.28 0.82
-0.18 0.3 0.82
-0.2 0.3 0.82
-0.22 0.3 0.82
-0.24 0.3 0.82
-0.76 0.3 0.82
-0.78 0.3 0.82
-0.8 0.3 0.82
-0.82 0.3 0.82
-0.18 0.32 0.82
-0.2 0.32 0.82
-0.22 0.32 0.82
-0.78 0.32 0.82
-0.8 0.32 0.82
-0.82 0.32 0.82
-0.16 0.34 0.82
-0.18 0.34 0.82
-0.2 0.34 0.82
-0.22 0.34 0.82
-0.78 0.34 0.82
-0.8 0.34 0.82
-0.82 0.34 0.82
-0.84 0.34 0.82
-0.16 0.36 0.82
-0.18 0.36 0.82
-0.2 0.36 0.82
-0.8 0.36 0.82
-0.82 0.36 0.82
-0.84 0.36 0.82
-0.14 0.38 0.82
-0.16 0.38 0.82
-0.18 0.38 0.82
-0.2 0.38 0.82
-0.8 0.38 0.82
-0.82 0.38 0.82
-0.84 0.38 0.82
-0.86 0.38 0.82
-0.14 0.4 0.82
-0.16 0.4 0.82
-0.18 0.4 0.82
-0.82 0.4 0.82
-0.84 0.4 0.82
-0.86 0.4 0.82
-0.14 0.42 0.82
-0.16 0.42 0.82
-0.18 0.42 0.82
-0.82 0.42 0.82
-0.84 0.42 0.82
-0.86 0.42 0.82
-0.14 0.44 0.82
-0.16 0.44 0.82
-0.18 0.44 0.82
-0.82 0.44 0.82
-0.84 0.44 0.82
-0.86 0.44 0.82
-0.12 0.46 0.82
-0.14 0.46 0.82
-0.16 0.46 0.82
-0.18 0.46 0.82
-0.82 0.46 0.82
-0.84 0.46 0.82
-0.86 0.46 0.82
-0.88 0.46 0.82
-0.12 0.48 0.82
-0.14 0.48 0.82
-0.16 0.48 0.82
-0.18 0.48 0.82
-0.82 0.48 0.82
-0.84 0.48 0.82
-0.86 0.48 0.82
-0.88 0.48 0.82
-0.12 0.5 0.82
-0.14 0.5 0.82
-0.16 0.5 0.82
-0.18 0.5 0.82
-0.82 0.5 0.82
-0.84 0.5 0.82
-0.86 0.5 0.82
-0.88 0.5 0.82
-0.12 0.52 0.82
-0.14 0.52 0.82
-0.16 0.52 0.82
-0.18 0.52 0.82
-0.82 0.52 0.82
-0.84 0.52 0.82
-0.86 0.52 0.82
-0.88 0.52 0.82
-0.12 0.54 0.82
-0.14 0.54 0.82
-0.16 0.54 0.82
-0.18 0.54 0.82
-0.82 0.54 0.82
-0.84 0.54 0.82
-0.86 0.54 0.82
-0.88 0.54 0.82
-0.14 0.56 0.82
-0.16 0.56 0.82
-0.18 0.56 0.82
-0.82 0.56 0.82
-0.84 0.56 0.82
-0.86 0.56 0.82
-0.14 0.58 0.82
-0.16 0.58 0.82
-0.18 0.58 0.82
-0.82 0.58 0.82
-0.84 0.58 0.82
-0.86 0.58 0.82
-0.14 0.6 0.82
-0.16 0.6 0.82
-0.18 0.6 0.82
-0.82 0.6 0.82
-0.84 0.6 0.82
-0.86 0.6 0.82
-0.14 0.62 0.82
-0.16 0.62 0.82
-0.18 0.62 0.82
-0.2 0.62 0.82
-0.8 0.62 0.82
-0.82 0.62 0.82
-0.84 0.62 0.82
-0.86 0.62 0.82
-0.16 0.64 0.82
-0.18 0.64 0.82
-0.2 0.64 0.82
-0.8 0.64 0.82
-0.82 0.64 0.82
-0.84 0.64 0.82
-0.16 0.66 0.82
-0.18 0.66 0.82
-0.2 0.66 0.82
-0.22 0.66 0.82
-0.78 0.66 0.82
-0.8 0.66 0.82
-0.82 0.66 0.82
-0.84 0.66 0.82
-0.18 0.68 0.82
-0.2 0.68 0.82
-0.22 0.68 0.82
-0.78 0.68 0.82
-0.8 0.68 0.82
-0.82 0.68 0.82
-0.18 0.7 0.82
-0.2 0.7 0.82
-0.22 0.7 0.82
-0.24 0.7 0.82
-0.76 0.7 0.82
-0.78 0.7 0.82
-0.8 0.7 0.82
-0.82 0.7 0.82
-0.2 0.72 0.82
-0.22 0.72 0.82
-0.24 0.72 0.82
-0.26 0.72 0.82
-0.74 0.72 0.82
-0.76 0.72 0.82
-0.78 0.72 0.82
-0.8 0.72 0.82
-0.22 0.74 0.82
-0.24 0.74 0.82
-0.26 0.74 0.82
-0.28 0.74 0.82
-0.72 0.74 0.82
-0.74 0.74 0.82
-0.76 0.74 0.82
-0.78 0.74 0.82
-0.22 0.76 0.82
-0.24 0.76 0.82
-0.26 0.76 0.82
-0.28 0.76 0.82
-0.3 0.76 0.82
-0.7 0.76 0.82
-0.72 0.76 0.82
-0.74 0.76 0.82
-0.76 0.76 0.82
-0.78 0.76 0.82
-0.24 0.78 0.82
-0.26 0.78 0.82
-0.28 0.78 0.82
-0.3 0.78 0.82
-0.32 0.78 0.82
-0.34 0.78 0.82
-0.66 0.78 0.82
-0.68 0.78 0.82
-0.7 0.78 0.82
-0.72 0.78 0.82
-0.74 0.78 0.82
-0.76 0.78 0.82
-0.28 0.8 0.82
-0.3 0.8 0.82
-0.32 0.8 0.82
-0.34 0.8 0.82
-0.36 0.8 0.82
-0.38 0.8 0.82
-0.62 0.8 0.82
-0.64 0.8 0.82
-0.66 0.8 0.82
-0.68 0.8 0.82
-0.7 0.8 0.82
-0.72 0.8 0.82
-0.3 0.82 0.82
-0.32 0.82 0.82
-0.34 0.82 0.82
-0.36 0.82 0.82
-0.38 0.82 0.82
-0.4 0.82 0.82
-0.42 0.82 0.82
-0.44 0.82 0.82
-0.46 0.82 0.82
-0.48 0.82 0.82
-0.5 0.82 0.82
-0.52 0.82 0.82
-0.54 0.82 0.82
-0.56 0.82 0.82
-0.58 0.82 0.82
-0.6 0.82 0.82
-0.62 0.82 0.82
-0.64 0.82 0.82
-0.66 0.82 0.82
-0.68 0.82 0.82
-0.7 0.82 0.82
-0.34 0.84 0.82
-0.36 0.84 0.82
-0.38 0.84 0.82
-0.4 0.84 0.82
-0.42 0.84 0.82
-0.44 0.84 0.82
-0.46 0.84 0.82
-0.48 0.84 0.82
-0.5 0.84 0.82
-0.52 0.84 0.82
-0.54 0.84 0.82
-0.56 0.84 0.82
-0.58 0.84 0.82
-0.6 0.84 0.82
-0.62 0.84 0.82
-0.64 0.84 0.82
-0.66 0.84 0.82
-0.38 0.86 0.82
-0.4 0.86 0.82
-0.42 0.86 0.82
-0.44 0.86 0.82
-0.46 0.86 0.82
-0.48 0.86 0.82
-0.5 0.86 0.82
-0.52 0.86 0.82
-0.54 0.86 0.82
-0.56 0.86 0.82
-0.58 0.86 0.82
-0.6 0.86 0.82
-0.62 0.86 0.82
-0.46 0.88 0.82
-0.48 0.88 0.82
-0.5 0.88 0.82
-0.52 0.88 0.82
-0.54 0.88 0.82
-0.44 0.14 0.84
-0.46 0.14 0.84
-0.48 0.14 0.84
-0.5 0.14 0.84
-0.52 0.14 0.84
-0.54 0.14 0.84
-0.56 0.14 0.84
-0.38 0.16 0.84
-0.4 0.16 0.84
-0.42 0.16 0.84
-0.44 0.16 0.84
-0.46 0.16 0.84
-0.48 0.16 0.84
-0.5 0.16 0.84
-0.52 0.16 0.84
-0.54 0.16 0.84
-0.56 0.16 0.84
-0.58 0.16 0.84
-0.6 0.16 0.84
-0.62 0.16 0.84
-0.34 0.18 0.84
-0.36 0.18 0.84
-0.38 0.18 0.84
-0.4 0.18 0.84
-0.42 0.18 0.84
-0.44 0.18 0.84
-0.46 0.18 0.84
-0.48 0.18 0.84
-0.5 0.18 0.84
-0.52 0.18 0.84
-0.54 0.18 0.84
-0.56 0.18 0.84
-0.58 0.18 0.84
-0.6 0.18 0.84
-0.62 0.18 0.84
-0.64 0.18 0.84
-0.66 0.18 0.84
-0.3 0.2 0.84
-0.32 0.2 0.84
-0.34 0.2 0.84
-0.36 0.2 0.84
-0.38 0.2 0.84
-0.4 0.2 0.84
-0.42 0.2 0.84
-0.44 0.2 0.84
-0.46 0.2 0.84
-0.48 0.2 0.84
-0.5 0.2 0.84
-0.52 0.2 0.84
-0.54 0.2 0.84
-0.56 0.2 0.84
-0.58 0.2 0.84
-0.6 0.2 0.84
-0.62 0.2 0.84
-0.64 0.2 0.84
-0.66 0.2 0.84
-0.68 0.2 0.84
-0.7 0.2 0.84
-0.28 0.22 0.84
-0.3 0.22 0.84
-0.32 0.22 0.84
-0.34 0.22 0.84
-0.36 0.22 0.84
-0.38 0.22 0.84
-0.4 0.22 0.84
-0.6 0.22 0.84
-0.62 0.22 0.84
-0.64 0.22 0.84
-0.66 0.22 0.84
-0.68 0.22 0.84
-0.7 0.22 0.84
-0.72 0.22 0.84
-0.26 0.24 0.84
-0.28 0.24 0.84
-0.3 0.24 0.84
-0.32 0.24 0.84
-0.34 0.24 0.84
-0.36 0.24 0.84
-0.64 0.24 0.84
-0.66 0.24 0.84
-0.68 0.24 0.84
-0.7 0.24 0.84
-0.72 0.24 0.84
-0.74 0.24 0.84
-0.24 0.26 0.84
-0.26 0.26 0.84
-0.28 0.26 0.84
-0.3 0.26 0.84
-0.32 0.26 0.84
-0.68 0.26 0.84
-0.7 0.26 0.84
-0.72 0.26 0.84
-0.74 0.26 0.84
-0.76 0.26 0.84
-0.22 0.28 0.84
-0.24 0.28 0.84
-0.26 0.28 0.84
-0.28 0.28 0.84
-0.3 0.28 0.84
-0.7 0.28 0.84
-0.72 0.28 0.84
-0.74 0.28 0.84
-0.76 0.28 0.84
-0.78 0.28 0.84
-0.2 0.3 0.84
-0.22 0.3 0.84
-0.24 0.3 0.84
-0.26 0.3 0.84
-0.28 0.3 0.84
-0.72 0.3 0.84
-0.74 0.3 0.84
-0.76 0.3 0.84
-0.78 0.3 0.84
-0.8 0.3 0.84
-0.2 0.32 0.84
-0.22 0.32 0.84
-0.24 0.32 0.84
-0.26 0.32 0.84
-0.74 0.32 0.84
-0.76 0.32 0.84
-0.78 0.32 0.84
-0.8 0.32 0.84
-0.18 0.34 0.84
-0.2 0.34 0.84
-0.22 0.34 0.84
-0.24 0.34 0.84
-0.76 0.34 0.84
-0.78 0.34 0.84
-0.8 0.34 0.84
-0.82 0.34 0.84
-0.18 0.36 0.84
-0.2 0.36 0.84
-0.22 0.36 0.84
-0.24 0.36 0.84
-0.76 0.36 0.84
-0.78 0.36 0.84
-0.8 0.36 0.84
-0.82 0.36 0.84
-0.16 0.38 0.84
-0.18 0.38 0.84
-0.2 0.38 0.84
-0.22 0.38 0.84
-0.78 0.38 0.84
-0.8 0.38 0.84
-0.82 0.38 0.84
-0.84 0.38 0.84
-0.16 0.4 0.84
-0.18 0.4 0.84
-0.2 0.4 0.84
-0.22 0.4 0.84
-0.78 0.4 0.84
-0.8 0.4 0.84
-0.82 0.4 0.84
-0.84 0.4 0.84
-0.16 0.42 0.84
-0.18 0.42 0.84
-0.2 0.42 0.84
-0.8 0.42 0.84
-0.82 0.42 0.84
-0.84 0.42 0.84
-0.14 0.44 0.84
-0.16 0.44 0.84
-0.18 0.44 0.84
-0.2 0.44 0.84
-0.8 0.44 0.84
-0.82 0.44 0.84
-0.84 0.44 0.84
-0.86 0.44 0.84
-0.14 0.46 0.84
-0.16 0.46 0.84
-0.18 0.46 0.84
-0.2 0.46 0.84
-0.8 0.46 0.84
-0.82 0.46 0.84
-0.84 0.46 0.84
-0.86 0.46 0.84
-0.14 0.48 0.84
-0.16 0.48 0.84
-0.18 0.48 0.84
-0.2 0.48 0.84
-0.8 0.48 0.84
-0.82 0.48 0.84
-0.84 0.48 0.84
-0.86 0.48 0.84
-0.14 0.5 0.84
-0.16 0.5 0.84
-0.18 0.5 0.84
-0.2 0.5 0.84
-0.8 0.5 0.84
-0.82 0.5 0.84
-0.84 0.5 0.84
-0.86 0.5 0.84
-0.14 0.52 0.84
-0.16 0.52 0.84
-0.18 0.52 0.84
-0.2 0.52 0.84
-0.8 0.52 0.84
-0.82 0.52 0.84
-0.84 0.52 0.84
-0.86 0.52 0.84
-0.14 0.54 0.84
-0.16 0.54 0.84
-0.18 0.54 0.84
-0.2 0.54 0.84
-0.8 0.54 0.84
-0.82 0.54 0.84
-0.84 0.54 0.84
-0.86 0.54 0.84
-0.14 0.56 0.84
-0.16 0.56 0.84
-0.18 0.56 0.84
-0.2 0.56 0.84
-0.8 0.56 0.84
-0.82 0.56 0.84
-0.84 0.56 0.84
-0.86 0.56 0.84
-0.16 0.58 0.84
-0.18 0.58 0.84
-0.2 0.58 0.84
-0.8 0.58 0.84
-0.82 0.58 0.84
-0.84 0.58 0.84
-0.16 0.6 0.84
-0.18 0.6 0.84
-0.2 0.6 0.84
-0.22 0.6 0.84
-0.78 0.6 0.84
-0.8 0.6 0.84
-0.82 0.6 0.84
-0.84 0.6 0.84
-0.16 0.62 0.84
-0.18 0.62 0.84
-0.2 0.62 0.84
-0.22 0.62 0.84
-0.78 0.62 0.84
-0.8 0.62 0.84
-0.82 0.62 0.84
-0.84 0.62 0.84
-0.18 0.64 0.84
-0.2 0.64 0.84
-0.22 0.64 0.84
-0.24 0.64 0.84
-0.76 0.64 0.84
-0.78 0.64 0.84
-0.8 0.64 0.84
-0.82 0.64 0.84
-0.18 0.66 0.84
-0.2 0.66 0.84
-0.22 0.66 0.84
-0.24 0.66 0.84
-0.76 0.66 0.84
-0.78 0.66 0.84
-0.8 0.66 0.84
-0.82 0.66 0.84
-0.2 0.68 0.84
-0.22 0.68 0.84
-0.24 0.68 0.84
-0.26 0.68 0.84
-0.74 0.68 0.84
-0.76 0.68 0.84
-0.78 0.68 0.84
-0.8 0.68 0.84
-0.2 0.7 0.84
-0.22 0.7 0.84
-0.24 0.7 0.84
-0.26 0.7 0.84
-0.28 0.7 0.84
-0.72 0.7 0.84
-0.74 0.7 0.84
-0.76 0.7 0.84
-0.78 0.7 0.84
-0.8 0.7 0.84
-0.22 0.72 0.84
-0.24 0.72 0.84
-0.26 0.72 0.84
-0.28 0.72 0.84
-0.3 0.72 0.84
-0.7 0.72 0.84
-0.72 0.72 0.84
-0.74 0.72 0.84
-0.76 0.72 0.84
-0.78 0.72 0.84
-0.24 0.74 0.84
-0.26 0.74 0.84
-0.28 0.74 0.84
-0.3 0.74 0.84
-0.32 0.74 0.84
-0.68 0.74 0.84
-0.7 0.74 0.84
-0.72 0.74 0.84
-0.74 0.74 0.84
-0.76 0.74 0.84
-0.26 0.76 0.84
-0.28 0.76 0.84
-0.3 0.76 0.84
-0.32 0.76 0.84
-0.34 0.76 0.84
-0.36 0.76 0.84
-0.64 0.76 0.84
-0.66 0.76 0.84
-0.68 0.76 0.84
-0.7 0.76 0.84
-0.72 0.76 0.84
-0.74 0.76 0.84
-0.28 0.78 0.84
-0.3 0.78 0.84
-0.32 0.78 0.84
-0.34 0.78 0.84
-0.36 0.78 0.84
-0.38 0.78 0.84
-0.4 0.78 0.84
-0.6 0.78 0.84
-0.62 0.78 0.84
-0.64 0.78 0.84
-0.66 0.78 0.84
-0.68 0.78 0.84
-0.7 0.78 0.84
-0.72 0.78 0.84
-0.3 0.8 0.84
-0.32 0.8 0.84
-0.34 0.8 0.84
-0.36 0.8 0.84
-0.38 0.8 0.84
-0.4 0.8 0.84
-0.42 0.8 0.84
-0.44 0.8 0.84
-0.46 0.8 0.84
-0.48 0.8 0.84
-0.5 0.8 0.84
-0.52 0.8 0.84
-0.54 0.8 0.84
-0.56 0.8 0.84
-0.58 0.8 0.84
-0.6 0.8 0.84
-0.62 0.8 0.84
-0.64 0.8 0.84
-0.66 0.8 0.84
-0.68 0.8 0.84
-0.7 0.8 0.84
-0.34 0.82 0.84
-0.36 0.82 0.84
-0.38 0.82 0.84
-0.4 0.82 0.84
-0.42 0.82 0.84
-0.44 0.82 0.84
-0.46 0.82 0.84
-0.48 0.82 0.84
-0.5 0.82 0.84
-0.52 0.82 0.84
-0.54 0.82 0.84
-0.56 0.82 0.84
-0.58 0.82 0.84
-0.6 0.82 0.84
-0.62 0.82 0.84
-0.64 0.82 0.84
-0.66 0.82 0.84
-0.38 0.84 0.84
-0.4 0.84 0.84
-0.42 0.84 0.84
-0.44 0.84 0.84
-0.46 0.84 0.84
-0.48 0.84 0.84
-0.5 0.84 0.84
-0.52 0.84 0.84
-0.54 0.84 0.84
-0.56 0.84 0.84
-0.58 0.84 0.84
-0.6 0.84 0.84
-0.62 0.84 0.84
-0.44 0.86 0.84
-0.46 0.86 0.84
-0.48 0.86 0.84
-0.5 0.86 0.84
-0.52 0.86 0.84
-0.54 0.86 0.84
-0.56 0.86 0.84
-0.44 0.16 0.86
-0.46 0.16 0.86
-0.48 0.16 0.86
-0.5 0.16 0.86
-0.52 0.16 0.86
-0.54 0.16 0.86
-0.56 0.16 0.86
-0.38 0.18 0.86
-0.4 0.18 0.86
-0.42 0.18 0.86
-0.44 0.18 0.86
-0.46 0.18 0.86
-0.48 0.18 0.86
-0.5 0.18 0.86
-0.52 0.18 0.86
-0.54 0.18 0.86
-0.56 0.18 0.86
-0.58 0.18 0.86
-0.6 0.18 0.86
-0.62 0.18 0.86
-0.34 0.2 0.86
-0.36 0.2 0.86
-0.38 0.2 0.86
-0.4 0.2 0.86
-0.42 0.2 0.86
-0.44 0.2 0.86
-0.46 0.2 0.86
-0.48 0.2 0.86
-0.5 0.2 0.86
-0.52 0.2 0.86
-0.54 0.2 0.86
-0.56 0.2 0.86
-0.58 0.2 0.86
-0.6 0.2 0.86
-0.62 0.2 0.86
-0.64 0.2 0.86
-0.66 0.2 0.86
-0.3 0.22 0.86
-0.32 0.22 0.86
-0.34 0.22 0.86
-0.36 0.22 0.86
-0.38 0.22 0.86
-0.4 0.22 0.86
-0.42 0.22 0.86
-0.44 0.22 0.86
-0.46 0.22 0.86
-0.48 0.22 0.86
-0.5 0.22 0.86
-0.52 0.22 0.86
-0.54 0.22 0.86
-0.56 0.22 0.86
-0.58 0.22 0.86
-0.6 0.22 0.86
-0.62 0.22 0.86
-0.64 0.22 0.86
-0.66 0.22 0.86
-0.68 0.22 0.86
-0.7 0.22 0.86
-0.28 0.24 0.86
-0.3 0.24 0.86
-0.32 0.24 0.86
-0.34 0.24 0.86
-0.36 0.24 0.86
-0.38 0.24 0.86
-0.4 0.24 0.86
-0.42 0.24 0.86
-0.58 0.24 0.86
-0.6 0.24 0.86
-0.62 0.24 0.86
-0.64 0.24 0.86
-0.66 0.24 0.86
-0.68 0.24 0.86
-0.7 0.24 0.86
-0.72 0.24 0.86
-0.26 0.26 0.86
-0.28 0.26 0.86
-0.3 0.26 0.86
-0.32 0.26 0.86
-0.34 0.26 0.86
-0.36 0.26 0.86
-0.64 0.26 0.86
-0.66 0.26 0.86
-0.68 0.26 0.86
-0.7 0.26 0.86
-0.72 0.26 0.86
-0.74 0.26 0.86
-0.24 0.28 0.86
-0.26 0.28 0.86
-0.28 0.28 0.86
-0.3 0.28 0.86
-0.32 0.28 0.86
-0.34 0.28 0.86
-0.66 0.28 0.86
-0.68 0.28 0.86
-0.7 0.28 0.86
-0.72 0.28 0.86
-0.74 0.28 0.86
-0.76 0.28 0.86
-0.22 0.3 0.86
-0.24 0.3 0.86
-0.26 0.3 0.86
-0.28 0.3 0.86
-0.3 0.3 0.86
-0.7 0.3 0.86
-0.72 0.3 0.86
-0.74 0.3 0.86
-0.76 0.3 0.86
-0.78 0.3 0.86
-0.22 0.32 0.86
-0.24 0.32 0.86
-0.26 0.32 0.86
-0.28 0.32 0.86
-0.72 0.32 0.86
-0.74 0.32 0.86
-0.76 0.32 0.86
-0.78 0.32 0.86
-0.2 0.34 0.86
-0.22 0.34 0.86
-0.24 0.34 0.86
-0.26 0.34 0.86
-0.28 0.34 0.86
-0.72 0.34 0.86
-0.74 0.34 0.86
-0.76 0.34 0.86
-0.78 0.34 0.86
-0.8 0.34 0.86
-0.2 0.36 0.86
-0.22 0.36 0.86
-0.24 0.36 0.86
-0.26 0.36 0.86
-0.74 0.36 0.86
-0.76 0.36 0.86
-0.78 0.36 0.86
-0.8 0.36 0.86
-0.18 0.38 0.86
-0.2 0.38 0.86
-0.22 0.38 0.86
-0.24 0.38 0.86
-0.76 0.38 0.86
-0.78 0.38 0.86
-0.8 0.38 0.86
-0.82 0.38 0.86
-0.18 0.4 0.86
-0.2 0.4 0.86
-0.22 0.4 0.86
-0.24 0.4 0.86
-0.76 0.4 0.86
-0.78 0.4 0.86
-0.8 0.4 0.86
-0.82 0.4 0.86
-0.18 0.42 0.86
-0.2 0.42 0.86
-0.22 0.42 0.86
-0.24 0.42 0.86
-0.76 0.42 0.86
-0.78 0.42 0.86
-0.8 0.42 0.86
-0.82 0.42 0.86
-0.16 0.44 0.86
-0.18 0.44 0.86
-0.2 0.44 0.86
-0.22 0.44 0.86
-0.78 0.44 0.86
-0.8 0.44 0.86
-0.82 0.44 0.86
-0.84 0.44 0.86
-0.16 0.46 0.86
-0.18 0.46 0.86
-0.2 0.46 0.86
-0.22 0.46 0.86
-0.78 0.46 0.86
-0.8 0.46 0.86
-0.82 0.46 0.86
-0.84 0.46 0.86
-0.16 0.48 0.86
-0.18 0.48 0.86
-0.2 0.48 0.86
-0.22 0.48 0.86
-0.78 0.48 0.86
-0.8 0.48 0.86
-0.82 0.48 0.86
-0.84 0.48 0.86
-0.16 0.5 0.86
-0.18 0.5 0.86
-0.2 0.5 0.86
-0.22 0.5 0.86
-0.78 0.5 0.86
-0.8 0.5 0.86
-0.82 0.5 0.86
-0.84 0.5 0.86
-0.16 0.52 0.86
-0.18 0.52 0.86
-0.2 0.52 0.86
-0.22 0.52 0.86
-0.78 0.52 0.86
-0.8 0.52 0.86
-0.82 0.52 0.86
-0.84 0.52 0.86
-0.16 0.54 0.86
-0.18 0.54 0.86
-0.2 0.54 0.86
-0.22 0.54 0.86
-0.78 0.54 0.86
-0.8 0.54 0.86
-0.82 0.54 0.86
-0.84 0.54 0.86
-0.16 0.56 0.86
-0.18 0.56 0.86
-0.2 0.56 0.86
-0.22 0.56 0.86
-0.78 0.56 0.86
-0.8 0.56 0.86
-0.82 0.56 0.86
-0.84 0.56 0.86
-0.18 0.58 0.86
-0.2 0.58 0.86
-0.22 0.58 0.86
-0.24 0.58 0.86
-0.76 0.58 0.86
-0.78 0.58 0.86
-0.8 0.58 0.86
-0.82 0.58 0.86
-0.18 0.6 0.86
-0.2 0.6 0.86
-0.22 0.6 0.86
-0.24 0.6 0.86
-0.76 0.6 0.86
-0.78 0.6 0.86
-0.8 0.6 0.86
-0.82 0.6 0.86
-0.18 0.62 0.86
-0.2 0.62 0.86
-0.22 0.62 0.86
-0.24 0.62 0.86
-0.76 0.62 0.86
-0.78 0.62 0.86
-0.8 0.62 0.86
-0.82 0.62 0.86
-0.2 0.64 0.86
-0.22 0.64 0.86
-0.24 0.64 0.86
-0.26 0.64 0.86
-0.74 0.64 0.86
-0.76 0.64 0.86
-0.78 0.64 0.86
-0.8 0.64 0.86
-0.2 0.66 0.86
-0.22 0.66 0.86
-0.24 0.66 0.86
-0.26 0.66 0.86
-0.28 0.66 0.86
-0.72 0.66 0.86
-0.74 0.66 0.86
-0.76 0.66 0.86
-0.78 0.66 0.86
-0.8 0.66 0.86
-0.22 0.68 0.86
-0.24 0.68 0.86
-0.26 0.68 0.86
-0.28 0.68 0.86
-0.72 0.68 0.86
-0.74 0.68 0.86
-0.76 0.68 0.86
-0.78 0.68 0.86
-0.22 0.7 0.86
-0.24 0.7 0.86
-0.26 0.7 0.86
-0.28 0.7 0.86
-0.3 0.7 0.86
-0.7 0.7 0.86
-0.72 0.7 0.86
-0.74 0.7 0.86
-0.76 0.7 0.86
-0.78 0.7 0.86
-0.24 0.72 0.86
-0.26 0.72 0.86
-0.28 0.72 0.86
-0.3 0.72 0.86
-0.32 0.72 0.86
-0.34 0.72 0.86
-0.66 0.72 0.86
-0.68 0.72 0.86
-0.7 0.72 0.86
-0.72 0.72 0.86
-0.74 0.72 0.86
-0.76 0.72 0.86
-0.26 0.74 0.86
-0.28 0.74 0.86
-0.3 0.74 0.86
-0.32 0.74 0.86
-0.34 0.74 0.86
-0.36 0.74 0.86
-0.64 0.74 0.86
-0.66 0.74 0.86
-0.68 0.74 0.86
-0.7 0.74 0.86
-0.72 0.74 0.86
-0.74 0.74 0.86
-0.28 0.76 0.86
-0.3 0.76 0.86
-0.32 0.76 0.86
-0.34 0.76 0.86
-0.36 0.76 0.86
-0.38 0.76 0.86
-0.4 0.76 0.86
-0.42 0.76 0.86
-0.58 0.76 0.86
-0.6 0.76 0.86
-0.62 0.76 0.86
-0.64 0.76 0.86
-0.66 0.76 0.86
-0.68 0.76 0.86
-0.7 0.76 0.86
-0.72 0.76 0.86
-0.3 0.78 0.86
-0.32 0.78 0.86
-0.34 0.78 0.86
-0.36 0.78 0.86
-0.38 0.78 0.86
-0.4 0.78 0.86
-0.42 0.78 0.86
-0.44 0.78 0.86
-0.46 0.78 0.86
-0.48 0.78 0.86
-0.5 0.78 0.86
-0.52 0.78 0.86
-0.54 0.78 0.86
-0.56 0.78 0.86
-0.58 0.78 0.86
-0.6 0.78 0.86
-0.62 0.78 0.86
-0.64 0.78 0.86
-0.66 0.78 0.86
-0.68 0.78 0.86
-0.7 0.78 0.86
-0.34 0.8 0.86
-0.36 0.8 0.86
-0.38 0.8 0.86
-0.4 0.8 0.86
-0.42 0.8 0.86
-0.44 0.8 0.86
-0.46 0.8 0.86
-0.48 0.8 0.86
-0.5 0.8 0.86
-0.52 0.8 0.86
-0.54 0.8 0.86
-0.56 0.8 0.86
-0.58 0.8 0.86
-0.6 0.8 0.86
-0.62 0.8 0.86
-0.64 0.8 0.86
-0.66 0.8 0.86
-0.38 0.82 0.86
-0.4 0.82 0.86
-0.42 0.82 0.86
-0.44 0.82 0.86
-0.46 0.82 0.86
-0.48 0.82 0.86
-0.5 0.82 0.86
-0.52 0.82 0.86
-0.54 0.82 0.86
-0.56 0.82 0.86
-0.58 0.82 0.86
-0.6 0.82 0.86
-0.62 0.82 0.86
-0.44 0.84 0.86
-0.46 0.84 0.86
-0.48 0.84 0.86
-0.5 0.84 0.86
-0.52 0.84 0.86
-0.54 0.84 0.86
-0.56 0.84 0.86
-0.46 0.18 0.88
-0.48 0.18 0.88
-0.5 0.18 0.88
-0.52 0.18 0.88
-0.54 0.18 0.88
-0.38 0.2 0.88
-0.4 0.2 0.88
-0.42 0.2 0.88
-0.44 0.2 0.88
-0.46 0.2 0.88
-0.48 0.2 0.88
-0.5 0.2 0.88
-0.52 0.2 0.88
-0.54 0.2 0.88
-0.56 0.2 0.88
-0.58 0.2 0.88
-0.6 0.2 0.88
-0.62 0.2 0.88
-0.34 0.22 0.88
-0.36 0.22 0.88
-0.38 0.22 0.88
-0.4 0.22 0.88
-0.42 0.22 0.88
-0.44 0.22 0.88
-0.46 0.22 0.88
-0.48 0.22 0.88
-0.5 0.22 0.88
-0.52 0.22 0.88
-0.54 0.22 0.88
-0.56 0.22 0.88
-0.58 0.22 0.88
-0.6 0.22 0.88
-0.62 0.22 0.88
-0.64 0.22 0.88
-0.66 0.22 0.88
-0.32 0.24 0.88
-0.34 0.24 0.88
-0.36 0.24 0.88
-0.38 0.24 0.88
-0.4 0.24 0.88
-0.42 0.24 0.88
-0.44 0.24 0.88
-0.46 0.24 0.88
-0.48 0.24 0.88
-0.5 0.24 0.88
-0.52 0.24 0.88
-0.54 0.24 0.88
-0.56 0.24 0.88
-0.58 0.24 0.88
-0.6 0.24 0.88
-0.62 0.24 0.88
-0.64 0.24 0.88
-0.66 0.24 0.88
-0.68 0.24 0.88
-0.3 0.26 0.88
-0.32 0.26 0.88
-0.34 0.26 0.88
-0.36 0.26 0.88
-0.38 0.26 0.88
-0.4 0.26 0.88
-0.42 0.26 0.88
-0.44 0.26 0.88
-0.46 0.26 0.88
-0.54 0.26 0.88
-0.56 0.26 0.88
-0.58 0.26 0.88
-0.6 0.26 0.88
-0.62 0.26 0.88
-0.64 0.26 0.88
-0.66 0.26 0.88
-0.68 0.26 0.88
-0.7 0.26 0.88
-0.28 0.28 0.88
-0.3 0.28 0.88
-0.32 0.28 0.88
-0.34 0.28 0.88
-0.36 0.28 0.88
-0.38 0.28 0.88
-0.4 0.28 0.88
-0.6 0.28 0.88
-0.62 0.28 0.88
-0.64 0.28 0.88
-0.66 0.28 0.88
-0.68 0.28 0.88
-0.7 0.28 0.88
-0.72 0.28 0.88
-0.26 0.3 0.88
-0.28 0.3 0.88
-0.3 0.3 0.88
-0.32 0.3 0.88
-0.34 0.3 0.88
-0.36 0.3 0.88
-0.64 0.3 0.88
-0.66 0.3 0.88
-0.68 0.3 0.88
-0.7 0.3 0.88
-0.72 0.3 0.88
-0.74 0.3 0.88
-0.24 0.32 0.88
-0.26 0.32 0.88
-0.28 0.32 0.88
-0.3 0.32 0.88
-0.32 0.32 0.88
-0.68 0.32 0.88
-0.7 0.32 0.88
-0.72 0.32 0.88
-0.74 0.32 0.88
-0.76 0.32 0.88
-0.22 0.34 0.88
-0.24 0.34 0.88
-0.26 0.34 0.88
-0.28 0.34 0.88
-0.3 0.34 0.88
-0.7 0.34 0.88
-0.72 0.34 0.88
-0.74 0.34 0.88
-0.76 0.34 0.88
-0.78 0.34 0.88
-0.22 0.36 0.88
-0.24 0.36 0.88
-0.26 0.36 0.88
-0.28 0.36 0.88
-0.3 0.36 0.88
-0.7 0.36 0.88
-0.72 0.36 0.88
-0.74 0.36 0.88
-0.76 0.36 0.88
-0.78 0.36 0.88
-0.2 0.38 0.88
-0.22 0.38 0.88
-0.24 0.38 0.88
-0.26 0.38 0.88
-0.28 0.38 0.88
-0.72 0.38 0.88
-0.74 0.38 0.88
-0.76 0.38 0.88
-0.78 0.38 0.88
-0.8 0.38 0.88
-0.2 0.4 0.88
-0.22 0.4 0.88
-0.24 0.4 0.88
-0.26 0.4 0.88
-0.28 0.4 0.88
-0.72 0.4 0.88
-0.74 0.4 0.88
-0.76 0.4 0.88
-0.78 0.4 0.88
-0.8 0.4 0.88
-0.2 0.42 0.88
-0.22 0.42 0.88
-0.24 0.42 0.88
-0.26 0.42 0.88
-0.74 0.42 0.88
-0.76 0.42 0.88
-0.78 0.42 0.88
-0.8 0.42 0.88
-0.2 0.44 0.88
-0.22 0.44 0.88
-0.24 0.44 0.88
-0.26 0.44 0.88
-0.74 0.44 0.88
-0.76 0.44 0.88
-0.78 0.44 0.88
-0.8 0.44 0.88
-0.18 0.46 0.88
-0.2 0.46 0.88
-0.22 0.46 0.88
-0.24 0.46 0.88
-0.26 0.46 0.88
-0.74 0.46 0.88
-0.76 0.46 0.88
-0.78 0.46 0.88
-0.8 0.46 0.88
-0.82 0.46 0.88
-0.18 0.48 0.88
-0.2 0.48 0.88
-0.22 0.48 0.88
-0.24 0.48 0.88
-0.76 0.48 0.88
-0.78 0.48 0.88
-0.8 0.48 0.88
-0.82 0.48 0.88
-0.18 0.5 0.88
-0.2 0.5 0.88
-0.22 0.5 0.88
-0.24 0.5 0.88
-0.76 0.5 0.88
-0.78 0.5 0.88
-0.8 0.5 0.88
-0.82 0.5 0.88
-0.18 0.52 0.88
-0.2 0.52 0.88
-0.22 0.52 0.88
-0.24 0.52 0.88
-0.76 0.52 0.88
-0.78 0.52 0.88
-0.8 0.52 0.88
-0.82 0.52 0.88
-0.18 0.54 0.88
-0.2 0.54 0.88
-0.22 0.54 0.88
-0.24 0.54 0.88
-0.26 0.54 0.88
-0.74 0.54 0.88
-0.76 0.54 0.88
-0.78 0.54 0.88
-0.8 0.54 0.88
-0.82 0.54 0.88
-0.2 0.56 0.88
-0.22 0.56 0.88
-0.24 0.56 0.88
-0.26 0.56 0.88
-0.74 0.56 0.88
-0.76 0.56 0.88
-0.78 0.56 0.88
-0.8 0.56 0.88
-0.2 0.58 0.88
-0.22 0.58 0.88
-0.24 0.58 0.88
-0.26 0.58 0.88
-0.74 0.58 0.88
-0.76 0.58 0.88
-0.78 0.58 0.88
-0.8 0.58 0.88
-0.2 0.6 0.88
-0.22 0.6 0.88
-0.24 0.6 0.88
-0.26 0.6 0.88
-0.28 0.6 0.88
-0.72 0.6 0.88
-0.74 0.6 0.88
-0.76 0.6 0.88
-0.78 0.6 0.88
-0.8 0.6 0.88
-0.2 0.62 0.88
-0.22 0.62 0.88
-0.24 0.62 0.88
-0.26 0.62 0.88
-0.28 0.62 0.88
-0.72 0.62 0.88
-0.74 0.62 0.88
-0.76 0.62 0.88
-0.78 0.62 0.88
-0.8 0.62 0.88
-0.22 0.64 0.88
-0.24 0.64 0.88
-0.26 0.64 0.88
-0.28 0.64 0.88
-0.3 0.64 0.88
-0.7 0.64 0.88
-0.72 0.64 0.88
-0.74 0.64 0.88
-0.76 0.64 0.88
-0.78 0.64 0.88
-0.22 0.66 0.88
-0.24 0.66 0.88
-0.26 0.66 0.88
-0.28 0.66 0.88
-0.3 0.66 0.88
-0.7 0.66 0.88
-0.72 0.66 0.88
-0.74 0.66 0.88
-0.76 0.66 0.88
-0.78 0.66 0.88
-0.24 0.68 0.88
-0.26 0.68 0.88
-0.28 0.68 0.88
-0.3 0.68 0.88
-0.32 0.68 0.88
-0.68 0.68 0.88
-0.7 0.68 0.88
-0.72 0.68 0.88
-0.74 0.68 0.88
-0.76 0.68 0.88
-0.26 0.7 0.88
-0.28 0.7 0.88
-0.3 0.7 0.88
-0.32 0.7 0.88
-0.34 0.7 0.88
-0.36 0.7 0.88
-0.64 0.7 0.88
-0.66 0.7 0.88
-0.68 0.7 0.88
-0.7 0.7 0.88
-0.72 0.7 0.88
-0.74 0.7 0.88
-0.28 0.72 0.88
-0.3 0.72 0.88
-0.32 0.72 0.88
-0.34 0.72 0.88
-0.36 0.72 0.88
-0.38 0.72 0.88
-0.4 0.72 0.88
-0.6 0.72 0.88
-0.62 0.72 0.88
-0.64 0.72 0.88
-0.66 0.72 0.88
-0.68 0.72 0.88
-0.7 0.72 0.88
-0.72 0.72 0.88
-0.3 0.74 0.88
-0.32 0.74 0.88
-0.34 0.74 0.88
-0.36 0.74 0.88
-0.38 0.74 0.88
-0.4 0.74 0.88
-0.42 0.74 0.88
-0.44 0.74 0.88
-0.46 0.74 0.88
-0.54 0.74 0.88
-0.56 0.74 0.88
-0.58 0.74 0.88
-0.6 0.74 0.88
-0.62 0.74 0.88
-0.64 0.74 0.88
-0.66 0.74 0.88
-0.68 0.74 0.88
-0.7 0.74 0.88
-0.32 0.76 0.88
-0.34 0.76 0.88
-0.36 0.76 0.88
-0.38 0.76 0.88
-0.4 0.76 0.88
-0.42 0.76 0.88
-0.44 0.76 0.88
-0.46 0.76 0.88
-0.48 0.76 0.88
-0.5 0.76 0.88
-0.52 0.76 0.88
-0.54 0.76 0.88
-0.56 0.76 0.88
-0.58 0.76 0.88
-0.6 0.76 0.88
-0.62 0.76 0.88
-0.64 0.76 0.88
-0.66 0.76 0.88
-0.68 0.76 0.88
-0.34 0.78 0.88
-0.36 0.78 0.88
-0.38 0.78 0.88
-0.4 0.78 0.88
-0.42 0.78 0.88
-0.44 0.78 0.88
-0.46 0.78 0.88
-0.48 0.78 0.88
-0.5 0.78 0.88
-0.52 0.78 0.88
-0.54 0.78 0.88
-0.56 0.78 0.88
-0.58 0.78 0.88
-0.6 0.78 0.88
-0.62 0.78 0.88
-0.64 0.78 0.88
-0.66 0.78 0.88
-0.38 0.8 0.88
-0.4 0.8 0.88
-0.42 0.8 0.88
-0.44 0.8 0.88
-0.46 0.8 0.88
-0.48 0.8 0.88
-0.5 0.8 0.88
-0.52 0.8 0.88
-0.54 0.8 0.88
-0.56 0.8 0.88
-0.58 0.8 0.88
-0.6 0.8 0.88
-0.62 0.8 0.88
-0.46 0.82 0.88
-0.48 0.82 0.88
-0.5 0.82 0.88
-0.52 0.82 0.88
-0.54 0.82 0.88
-0.4 0.22 0.9
-0.42 0.22 0.9
-0.44 0.22 0.9
-0.46 0.22 0.9
-0.48 0.22 0.9
-0.5 0.22 0.9
-0.52 0.22 0.9
-0.54 0.22 0.9
-0.56 0.22 0.9
-0.58 0.22 0.9
-0.6 0.22 0.9
-0.36 0.24 0.9
-0.38 0.24 0.9
-0.4 0.24 0.9
-0.42 0.24 0.9
-0.44 0.24 0.9
-0.46 0.24 0.9
-0.48 0.24 0.9
-0.5 0.24 0.9
-0.52 0.24 0.9
-0.54 0.24 0.9
-0.56 0.24 0.9
-0.58 0.24 0.9
-0.6 0.24 0.9
-0.62 0.24 0.9
-0.64 0.24 0.9
-0.34 0.26 0.9
-0.36 0.26 0.9
-0.38 0.26 0.9
-0.4 0.26 0.9
-0.42 0.26 0.9
-0.44 0.26 0.9
-0.46 0.26 0.9
-0.48 0.26 0.9
-0.5 0.26 0.9
-0.52 0.26 0.9
-0.54 0.26 0.9
-0.56 0.26 0.9
-0.58 0.26 0.9
-0.6 0.26 0.9
-0.62 0.26 0.9
-0.64 0.26 0.9
-0.66 0.26 0.9
-0.3 0.28 0.9
-0.32 0.28 0.9
-0.34 0.28 0.9
-0.36 0.28 0.9
-0.38 0.28 0.9
-0.4 0.28 0.9
-0.42 0.28 0.9
-0.44 0.28 0.9
-0.46 0.28 0.9
-0.48 0.28 0.9
-0.5 0.28 0.9
-0.52 0.28 0.9
-0.54 0.28 0.9
-0.56 0.28 0.9
-0.58 0.28 0.9
-0.6 0.28 0.9
-0.62 0.28 0.9
-0.64 0.28 0.9
-0.66 0.28 0.9
-0.68 0.28 0.9
-0.7 0.28 0.9
-0.28 0.3 0.9
-0.3 0.3 0.9
-0.32 0.3 0.9
-0.34 0.3 0.9
-0.36 0.3 0.9
-0.38 0.3 0.9
-0.4 0.3 0.9
-0.42 0.3 0.9
-0.44 0.3 0.9
-0.56 0.3 0.9
-0.58 0.3 0.9
-0.6 0.3 0.9
-0.62 0.3 0.9
-0.64 0.3 0.9
-0.66 0.3 0.9
-0.68 0.3 0.9
-0.7 0.3 0.9
-0.72 0.3 0.9
-0.28 0.32 0.9
-0.3 0.32 0.9
-0.32 0.32 0.9
-0.34 0.32 0.9
-0.36 0.32 0.9
-0.38 0.32 0.9
-0.62 0.32 0.9
-0.64 0.32 0.9
-0.66 0.32 0.9
-0.68 0.32 0.9
-0.7 0.32 0.9
-0.72 0.32 0.9
-0.26 0.34 0.9
-0.28 0.34 0.9
-0.3 0.34 0.9
-0.32 0.34 0.9
-0.34 0.34 0.9
-0.36 0.34 0.9
-0.64 0.34 0.9
-0.66 0.34 0.9
-0.68 0.34 0.9
-0.7 0.34 0.9
-0.72 0.34 0.9
-0.74 0.34 0.9
-0.24 0.36 0.9
-0.26 0.36 0.9
-0.28 0.36 0.9
-0.3 0.36 0.9
-0.32 0.36 0.9
-0.34 0.36 0.9
-0.66 0.36 0.9
-0.68 0.36 0.9
-0.7 0.36 0.9
-0.72 0.36 0.9
-0.74 0.36 0.9
-0.76 0.36 0.9
-0.24 0.38 0.9
-0.26 0.38 0.9
-0.28 0.38 0.9
-0.3 0.38 0.9
-0.32 0.38 0.9
-0.68 0.38 0.9
-0.7 0.38 0.9
-0.72 0.38 0.9
-0.74 0.38 0.9
-0.76 0.38 0.9
-0.22 0.4 0.9
-0.24 0.4 0.9
-0.26 0.4 0.9
-0.28 0.4 0.9
-0.3 0.4 0.9
-0.7 0.4 0.9
-0.72 0.4 0.9
-0.74 0.4 0.9
-0.76 0.4 0.9
-0.78 0.4 0.9
-0.22 0.42 0.9
-0.24 0.42 0.9
-0.26 0.42 0.9
-0.28 0.42 0.9
-0.3 0.42 0.9
-0.7 0.42 0.9
-0.72 0.42 0.9
-0.74 0.42 0.9
-0.76 0.42 0.9
-0.78 0.42 0.9
-0.22 0.44 0.9
-0.24 0.44 0.9
-0.26 0.44 0.9
-0.28 0.44 0.9
-0.3 0.44 0.9
-0.7 0.44 0.9
-0.72 0.44 0.9
-0.74 0.44 0.9
-0.76 0.44 0.9
-0.78 0.44 0.9
-0.22 0.46 0.9
-0.24 0.46 0.9
-0.26 0.46 0.9
-0.28 0.46 0.9
-0.72 0.46 0.9
-0.74 0.46 0.9
-0.76 0.46 0.9
-0.78 0.46 0.9
-0.22 0.48 0.9
-0.24 0.48 0.9
-0.26 0.48 0.9
-0.28 0.48 0.9
-0.72 0.48 0.9
-0.74 0.48 0.9
-0.76 0.48 0.9
-0.78 0.48 0.9
-0.22 0.5 0.9
-0.24 0.5 0.9
-0.26 0.5 0.9
-0.28 0.5 0.9
-0.72 0.5 0.9
-0.74 0.5 0.9
-0.76 0.5 0.9
-0.78 0.5 0.9
-0.22 0.52 0.9
-0.24 0.52 0.9
-0.26 0.52 0.9
-0.28 0.52 0.9
-0.72 0.52 0.9
-0.74 0.52 0.9
-0.76 0.52 0.9
-0.78 0.52 0.9
-0.22 0.54 0.9
-0.24 0.54 0.9
-0.26 0.54 0.9
-0.28 0.54 0.9
-0.72 0.54 0.9
-0.74 0.54 0.9
-0.76 0.54 0.9
-0.78 0.54 0.9
-0.22 0.56 0.9
-0.24 0.56 0.9
-0.26 0.56 0.9
-0.28 0.56 0.9
-0.3 0.56 0.9
-0.7 0.56 0.9
-0.72 0.56 0.9
-0.74 0.56 0.9
-0.76 0.56 0.9
-0.78 0.56 0.9
-0.22 0.58 0.9
-0.24 0.58 0.9
-0.26 0.58 0.9
-0.28 0.58 0.9
-0.3 0.58 0.9
-0.7 0.58 0.9
-0.72 0.58 0.9
-0.74 0.58 0.9
-0.76 0.58 0.9
-0.78 0.58 0.9
-0.22 0.6 0.9
-0.24 0.6 0.9
-0.26 0.6 0.9
-0.28 0.6 0.9
-0.3 0.6 0.9
-0.7 0.6 0.9
-0.72 0.6 0.9
-0.74 0.6 0.9
-0.76 0.6 0.9
-0.78 0.6 0.9
-0.24 0.62 0.9
-0.26 0.62 0.9
-0.28 0.62 0.9
-0.3 0.62 0.9
-0.32 0.62 0.9
-0.68 0.62 0.9
-0.7 0.62 0.9
-0.72 0.62 0.9
-0.74 0.62 0.9
-0.76 0.62 0.9
-0.24 0.64 0.9
-0.26 0.64 0.9
-0.28 0.64 0.9
-0.3 0.64 0.9
-0.32 0.64 0.9
-0.34 0.64 0.9
-0.66 0.64 0.9
-0.68 0.64 0.9
-0.7 0.64 0.9
-0.72 0.64 0.9
-0.74 0.64 0.9
-0.76 0.64 0.9
-0.26 0.66 0.9
-0.28 0.66 0.9
-0.3 0.66 0.9
-0.32 0.66 0.9
-0.34 0.66 0.9
-0.36 0.66 0.9
-0.64 0.66 0.9
-0.66 0.66 0.9
-0.68 0.66 0.9
-0.7 0.66 0.9
-0.72 0.66 0.9
-0.74 0.66 0.9
-0.28 0.68 0.9
-0.3 0.68 0.9
-0.32 0.68 0.9
-0.34 0.68 0.9
-0.36 0.68 0.9
-0.38 0.68 0.9
-0.62 0.68 0.9
-0.64 0.68 0.9
-0.66 0.68 0.9
-0.68 0.68 0.9
-0.7 0.68 0.9
-0.72 0.68 0.9
-0.28 0.7 0.9
-0.3 0.7 0.9
-0.32 0.7 0.9
-0.34 0.7 0.9
-0.36 0.7 0.9
-0.38 0.7 0.9
-0.4 0.7 0.9
-0.42 0.7 0.9
-0.44 0.7 0.9
-0.56 0.7 0.9
-0.58 0.7 0.9
-0.6 0.7 0.9
-0.62 0.7 0.9
-0.64 0.7 0.9
-0.66 0.7 0.9
-0.68 0.7 0.9
-0.7 0.7 0.9
-0.72 0.7 0.9
-0.3 0.72 0.9
-0.32 0.72 0.9
-0.34 0.72 0.9
-0.36 0.72 0.9
-0.38 0.72 0.9
-0.4 0.72 0.9
-0.42 0.72 0.9
-0.44 0.72 0.9
-0.46 0.72 0.9
-0.48 0.72 0.9
-0.5 0.72 0.9
-0.52 0.72 0.9
-0.54 0.72 0.9
-0.56 0.72 0.9
-0.58 0.72 0.9
-0.6 0.72 0.9
-0.62 0.72 0.9
-0.64 0.72 0.9
-0.66 0.72 0.9
-0.68 0.72 0.9
-0.7 0.72 0.9
-0.34 0.74 0.9
-0.36 0.74 0.9
-0.38 0.74 0.9
-0.4 0.74 0.9
-0.42 0.74 0.9
-0.44 0.74 0.9
-0.46 0.74 0.9
-0.48 0.74 0.9
-0.5 0.74 0.9
-0.52 0.74 0.9
-0.54 0.74 0.9
-0.56 0.74 0.9
-0.58 0.74 0.9
-0.6 0.74 0.9
-0.62 0.74 0.9
-0.64 0.74 0.9
-0.66 0.74 0.9
-0.36 0.76 0.9
-0.38 0.76 0.9
-0.4 0.76 0.9
-0.42 0.76 0.9
-0.44 0.76 0.9
-0.46 0.76 0.9
-0.48 0.76 0.9
-0.5 0.76 0.9
-0.52 0.76 0.9
-0.54 0.76 0.9
-0.56 0.76 0.9
-0.58 0.76 0.9
-0.6 0.76 0.9
-0.62 0.76 0.9
-0.64 0.76 0.9
-0.4 0.78 0.9
-0.42 0.78 0.9
-0.44 0.78 0.9
-0.46 0.78 0.9
-0.48 0.78 0.9
-0.5 0.78 0.9
-0.52 0.78 0.9
-0.54 0.78 0.9
-0.56 0.78 0.9
-0.58 0.78 0.9
-0.6 0.78 0.9
-0.44 0.24 0.92
-0.46 0.24 0.92
-0.48 0.24 0.92
-0.5 0.24 0.92
-0.52 0.24 0.92
-0.54 0.24 0.92
-0.56 0.24 0.92
-0.38 0.26 0.92
-0.4 0.26 0.92
-0.42 0.26 0.92
-0.44 0.26 0.92
-0.46 0.26 0.92
-0.48 0.26 0.92
-0.5 0.26 0.92
-0.52 0.26 0.92
-0.54 0.26 0.92
-0.56 0.26 0.92
-0.58 0.26 0.92
-0.6 0.26 0.92
-0.62 0.26 0.92
-0.36 0.28 0.92
-0.38 0.28 0.92
-0.4 0.28 0.92
-0.42 0.28 0.92
-0.44 0.28 0.92
-0.46 0.28 0.92
-0.48 0.28 0.92
-0.5 0.28 0.92
-0.52 0.28 0.92
-0.54 0.28 0.92
-0.56 0.28 0.92
-0.58 0.28 0.92
-0.6 0.28 0.92
-0.62 0.28 0.92
-0.64 0.28 0.92
-0.32 0.3 0.92
-0.34 0.3 0.92
-0.36 0.3 0.92
-0.38 0.3 0.92
-0.4 0.3 0.92
-0.42 0.3 0.92
-0.44 0.3 0.92
-0.46 0.3 0.92
-0.48 0.3 0.92
-0.5 0.3 0.92
-0.52 0.3 0.92
-0.54 0.3 0.92
-0.56 0.3 0.92
-0.58 0.3 0.92
-0.6 0.3 0.92
-0.62 0.3 0.92
-0.64 0.3 0.92
-0.66 0.3 0.92
-0.68 0.3 0.92
-0.3 0.32 0.92
-0.32 0.32 0.92
-0.34 0.32 0.92
-0.36 0.32 0.92
-0.38 0.32 0.92
-0.4 0.32 0.92
-0.42 0.32 0.92
-0.44 0.32 0.92
-0.46 0.32 0.92
-0.48 0.32 0.92
-0.5 0.32 0.92
-0.52 0.32 0.92
-0.54 0.32 0.92
-0.56 0.32 0.92
-0.58 0.32 0.92
-0.6 0.32 0.92
-0.62 0.32 0.92
-0.64 0.32 0.92
-0.66 0.32 0.92
-0.68 0.32 0.92
-0.7 0.32 0.92
-0.3 0.34 0.92
-0.32 0.34 0.92
-0.34 0.34 0.92
-0.36 0.34 0.92
-0.38 0.34 0.92
-0.4 0.34 0.92
-0.42 0.34 0.92
-0.44 0.34 0.92
-0.46 0.34 0.92
-0.54 0.34 0.92
-0.56 0.34 0.92
-0.58 0.34 0.92
-0.6 0.34 0.92
-0.62 0.34 0.92
-0.64 0.34 0.92
-0.66 0.34 0.92
-0.68 0.34 0.92
-0.7 0.34 0.92
-0.28 0.36 0.92
-0.3 0.36 0.92
-0.32 0.36 0.92
-0.34 0.36 0.92
-0.36 0.36 0.92
-0.38 0.36 0.92
-0.4 0.36 0.92
-0.6 0.36 0.92
-0.62 0.36 0.92
-0.64 0.36 0.92
-0.66 0.36 0.92
-0.68 0.36 0.92
-0.7 0.36 0.92
-0.72 0.36 0.92
-0.26 0.38 0.92
-0.28 0.38 0.92
-0.3 0.38 0.92
-0.32 0.38 0.92
-0.34 0.38 0.92
-0.36 0.38 0.92
-0.38 0.38 0.92
-0.62 0.38 0.92
-0.64 0.38 0.92
-0.66 0.38 0.92
-0.68 0.38 0.92
-0.7 0.38 0.92
-0.72 0.38 0.92
-0.74 0.38 0.92
-0.26 0.4 0.92
-0.28 0.4 0.92
-0.3 0.4 0.92
-0.32 0.4 0.92
-0.34 0.4 0.92
-0.36 0.4 0.92
-0.64 0.4 0.92
-0.66 0.4 0.92
-0.68 0.4 0.92
-0.7 0.4 0.92
-0.72 0.4 0.92
-0.74 0.4 0.92
-0.26 0.42 0.92
-0.28 0.42 0.92
-0.3 0.42 0.92
-0.32 0.42 0.92
-0.34 0.42 0.92
-0.66 0.42 0.92
-0.68 0.42 0.92
-0.7 0.42 0.92
-0.72 0.42 0.92
-0.74 0.42 0.92
-0.24 0.44 0.92
-0.26 0.44 0.92
-0.28 0.44 0.92
-0.3 0.44 0.92
-0.32 0.44 0.92
-0.34 0.44 0.92
-0.66 0.44 0.92
-0.68 0.44 0.92
-0.7 0.44 0.92
-0.72 0.44 0.92
-0.74 0.44 0.92
-0.76 0.44 0.92
-0.24 0.46 0.92
-0.26 0.46 0.92
-0.28 0.46 0.92
-0.3 0.46 0.92
-0.32 0.46 0.92
-0.34 0.46 0.92
-0.66 0.46 0.92
-0.68 0.46 0.92
-0.7 0.46 0.92
-0.72 0.46 0.92
-0.74 0.46 0.92
-0.76 0.46 0.92
-0.24 0.48 0.92
-0.26 0.48 0.92
-0.28 0.48 0.92
-0.3 0.48 0.92
-0.32 0.48 0.92
-0.68 0.48 0.92
-0.7 0.48 0.92
-0.72 0.48 0.92
-0.74 0.48 0.92
-0.76 0.48 0.92
-0.24 0.5 0.92
-0.26 0.5 0.92
-0.28 0.5 0.92
-0.3 0.5 0.92
-0.32 0.5 0.92
-0.68 0.5 0.92
-0.7 0.5 0.92
-0.72 0.5 0.92
-0.74 0.5 0.92
-0.76 0.5 0.92
-0.24 0.52 0.92
-0.26 0.52 0.92
-0.28 0.52 0.92
-0.3 0.52 0.92
-0.32 0.52 0.92
-0.68 0.52 0.92
-0.7 0.52 0.92
-0.72 0.52 0.92
-0.74 0.52 0.92
-0.76 0.52 0.92
-0.24 0.54 0.92
-0.26 0.54 0.92
-0.28 0.54 0.92
-0.3 0.54 0.92
-0.32 0.54 0.92
-0.34 0.54 0.92
-0.66 0.54 0.92
-0.68 0.54 0.92
-0.7 0.54 0.92
-0.72 0.54 0.92
-0.74 0.54 0.92
-0.76 0.54 0.92
-0.24 0.56 0.92
-0.26 0.56 0.92
-0.28 0.56 0.92
-0.3 0.56 0.92
-0.32 0.56 0.92
-0.34 0.56 0.92
-0.66 0.56 0.92
-0.68 0.56 0.92
-0.7 0.56 0.92
-0.72 0.56 0.92
-0.74 0.56 0.92
-0.76 0.56 0.92
-0.26 0.58 0.92
-0.28 0.58 0.92
-0.3 0.58 0.92
-0.32 0.58 0.92
-0.34 0.58 0.92
-0.66 0.58 0.92
-0.68 0.58 0.92
-0.7 0.58 0.92
-0.72 0.58 0.92
-0.74 0.58 0.92
-0.26 0.6 0.92
-0.28 0.6 0.92
-0.3 0.6 0.92
-0.32 0.6 0.92
-0.34 0.6 0.92
-0.36 0.6 0.92
-0.64 0.6 0.92
-0.66 0.6 0.92
-0.68 0.6 0.92
-0.7 0.6 0.92
-0.72 0.6 0.92
-0.74 0.6 0.92
-0.26 0.62 0.92
-0.28 0.62 0.92
-0.3 0.62 0.92
-0.32 0.62 0.92
-0.34 0.62 0.92
-0.36 0.62 0.92
-0.38 0.62 0.92
-0.62 0.62 0.92
-0.64 0.62 0.92
-0.66 0.62 0.92
-0.68 0.62 0.92
-0.7 0.62 0.92
-0.72 0.62 0.92
-0.74 0.62 0.92
-0.28 0.64 0.92
-0.3 0.64 0.92
-0.32 0.64 0.92
-0.34 0.64 0.92
-0.36 0.64 0.92
-0.38 0.64 0.92
-0.4 0.64 0.92
-0.6 0.64 0.92
-0.62 0.64 0.92
-0.64 0.64 0.92
-0.66 0.64 0.92
-0.68 0.64 0.92
-0.7 0.64 0.92
-0.72 0.64 0.92
-0.3 0.66 0.92
-0.32 0.66 0.92
-0.34 0.66 0.92
-0.36 0.66 0.92
-0.38 0.66 0.92
-0.4 0.66 0.92
-0.42 0.66 0.92
-0.44 0.66 0.92
-0.46 0.66 0.92
-0.54 0.66 0.92
-0.56 0.66 0.92
-0.58 0.66 0.92
-0.6 0.66 0.92
-0.62 0.66 0.92
-0.64 0.66 0.92
-0.66 0.66 0.92
-0.68 0.66 0.92
-0.7 0.66 0.92
-0.3 0.68 0.92
-0.32 0.68 0.92
-0.34 0.68 0.92
-0.36 0.68 0.92
-0.38 0.68 0.92
-0.4 0.68 0.92
-0.42 0.68 0.92
-0.44 0.68 0.92
-0.46 0.68 0.92
-0.48 0.68 0.92
-0.5 0.68 0.92
-0.52 0.68 0.92
-0.54 0.68 0.92
-0.56 0.68 0.92
-0.58 0.68 0.92
-0.6 0.68 0.92
-0.62 0.68 0.92
-0.64 0.68 0.92
-0.66 0.68 0.92
-0.68 0.68 0.92
-0.7 0.68 0.92
-0.32 0.7 0.92
-0.34 0.7 0.92
-0.36 0.7 0.92
-0.38 0.7 0.92
-0.4 0.7 0.92
-0.42 0.7 0.92
-0.44 0.7 0.92
-0.46 0.7 0.92
-0.48 0.7 0.92
-0.5 0.7 0.92
-0.52 0.7 0.92
-0.54 0.7 0.92
-0.56 0.7 0.92
-0.58 0.7 0.92
-0.6 0.7 0.92
-0.62 0.7 0.92
-0.64 0.7 0.92
-0.66 0.7 0.92
-0.68 0.7 0.92
-0.36 0.72 0.92
-0.38 0.72 0.92
-0.4 0.72 0.92
-0.42 0.72 0.92
-0.44 0.72 0.92
-0.46 0.72 0.92
-0.48 0.72 0.92
-0.5 0.72 0.92
-0.52 0.72 0.92
-0.54 0.72 0.92
-0.56 0.72 0.92
-0.58 0.72 0.92
-0.6 0.72 0.92
-0.62 0.72 0.92
-0.64 0.72 0.92
-0.38 0.74 0.92
-0.4 0.74 0.92
-0.42 0.74 0.92
-0.44 0.74 0.92
-0.46 0.74 0.92
-0.48 0.74 0.92
-0.5 0.74 0.92
-0.52 0.74 0.92
-0.54 0.74 0.92
-0.56 0.74 0.92
-0.58 0.74 0.92
-0.6 0.74 0.92
-0.62 0.74 0.92
-0.44 0.76 0.92
-0.46 0.76 0.92
-0.48 0.76 0.92
-0.5 0.76 0.92
-0.52 0.76 0.92
-0.54 0.76 0.92
-0.56 0.76 0.92
-0.42 0.28 0.94
-0.44 0.28 0.94
-0.46 0.28 0.94
-0.48 0.28 0.94
-0.5 0.28 0.94
-0.52 0.28 0.94
-0.54 0.28 0.94
-0.56 0.28 0.94
-0.58 0.28 0.94
-0.38 0.3 0.94
-0.4 0.3 0.94
-0.42 0.3 0.94
-0.44 0.3 0.94
-0.46 0.3 0.94
-0.48 0.3 0.94
-0.5 0.3 0.94
-0.52 0.3 0.94
-0.54 0.3 0.94
-0.56 0.3 0.94
-0.58 0.3 0.94
-0.6 0.3 0.94
-0.62 0.3 0.94
-0.36 0.32 0.94
-0.38 0.32 0.94
-0.4 0.32 0.94
-0.42 0.32 0.94
-0.44 0.32 0.94
-0.46 0.32 0.94
-0.48 0.32 0.94
-0.5 0.32 0.94
-0.52 0.32 0.94
-0.54 0.32 0.94
-0.56 0.32 0.94
-0.58 0.32 0.94
-0.6 0.32 0.94
-0.62 0.32 0.94
-0.64 0.32 0.94
-0.34 0.34 0.94
-0.36 0.34 0.94
-0.38 0.34 0.94
-0.4 0.34 0.94
-0.42 0.34 0.94
-0.44 0.34 0.94
-0.46 0.34 0.94
-0.48 0.34 0.94
-0.5 0.34 0.94
-0.52 0.34 0.94
-0.54 0.34 0.94
-0.56 0.34 0.94
-0.58 0.34 0.94
-0.6 0.34 0.94
-0.62 0.34 0.94
-0.64 0.34 0.94
-0.66 0.34 0.94
-0.32 0.36 0.94
-0.34 0.36 0.94
-0.36 0.36 0.94
-0.38 0.36 0.94
-0.4 0.36 0.94
-0.42 0.36 0.94
-0.44 0.36 0.94
-0.46 0.36 0.94
-0.48 0.36 0.94
-0.5 0.36 0.94
-0.52 0.36 0.94
-0.54 0.36 0.94
-0.56 0.36 0.94
-0.58 0.36 0.94
-0.6 0.36 0.94
-0.62 0.36 0.94
-0.64 0.36 0.94
-0.66 0.36 0.94
-0.68 0.36 0.94
-0.3 0.38 0.94
-0.32 0.38 0.94
-0.34 0.38 0.94
-0.36 0.38 0.94
-0.38 0.38 0.94
-0.4 0.38 0.94
-0.42 0.38 0.94
-0.44 0.38 0.94
-0.46 0.38 0.94
-0.48 0.38 0.94
-0.5 0.38 0.94
-0.52 0.38 0.94
-0.54 0.38 0.94
-0.56 0.38 0.94
-0.58 0.38 0.94
-0.6 0.38 0.94
-0.62 0.38 0.94
-0.64 0.38 0.94
-0.66 0.38 0.94
-0.68 0.38 0.94
-0.7 0.38 0.94
-0.3 0.4 0.94
-0.32 0.4 0.94
-0.34 0.4 0.94
-0.36 0.4 0.94
-0.38 0.4 0.94
-0.4 0.4 0.94
-0.42 0.4 0.94
-0.44 0.4 0.94
-0.46 0.4 0.94
-0.48 0.4 0.94
-0.5 0.4 0.94
-0.52 0.4 0.94
-0.54 0.4 0.94
-0.56 0.4 0.94
-0.58 0.4 0.94
-0.6 0.4 0.94
-0.62 0.4 0.94
-0.64 0.4 0.94
-0.66 0.4 0.94
-0.68 0.4 0.94
-0.7 0.4 0.94
-0.28 0.42 0.94
-0.3 0.42 0.94
-0.32 0.42 0.94
-0.34 0.42 0.94
-0.36 0.42 0.94
-0.38 0.42 0.94
-0.4 0.42 0.94
-0.42 0.42 0.94
-0.44 0.42 0.94
-0.56 0.42 0.94
-0.58 0.42 0.94
-0.6 0.42 0.94
-0.62 0.42 0.94
-0.64 0.42 0.94
-0.66 0.42 0.94
-0.68 0.42 0.94
-0.7 0.42 0.94
-0.72 0.42 0.94
-0.28 0.44 0.94
-0.3 0.44 0.94
-0.32 0.44 0.94
-0.34 0.44 0.94
-0.36 0.44 0.94
-0.38 0.44 0.94
-0.4 0.44 0.94
-0.42 0.44 0.94
-0.58 0.44 0.94
-0.6 0.44 0.94
-0.62 0.44 0.94
-0.64 0.44 0.94
-0.66 0.44 0.94
-0.68 0.44 0.94
-0.7 0.44 0.94
-0.72 0.44 0.94
-0.28 0.46 0.94
-0.3 0.46 0.94
-0.32 0.46 0.94
-0.34 0.46 0.94
-0.36 0.46 0.94
-0.38 0.46 0.94
-0.4 0.46 0.94
-0.6 0.46 0.94
-0.62 0.46 0.94
-0.64 0.46 0.94
-0.66 0.46 0.94
-0.68 0.46 0.94
-0.7 0.46 0.94
-0.72 0.46 0.94
-0.28 0.48 0.94
-0.3 0.48 0.94
-0.32 0.48 0.94
-0.34 0.48 0.94
-0.36 0.48 0.94
-0.38 0.48 0.94
-0.4 0.48 0.94
-0.6 0.48 0.94
-0.62 0.48 0.94
-0.64 0.48 0.94
-0.66 0.48 0.94
-0.68 0.48 0.94
-0.7 0.48 0.94
-0.72 0.48 0.94
-0.28 0.5 0.94
-0.3 0.5 0.94
-0.32 0.5 0.94
-0.34 0.5 0.94
-0.36 0.5 0.94
-0.38 0.5 0.94
-0.4 0.5 0.94
-0.6 0.5 0.94
-0.62 0.5 0.94
-0.64 0.5 0.94
-0.66 0.5 0.94
-0.68 0.5 0.94
-0.7 0.5 0.94
-0.72 0.5 0.94
-0.28 0.52 0.94
-0.3 0.52 0.94
-0.32 0.52 0.94
-0.34 0.52 0.94
-0.36 0.52 0.94
-0.38 0.52 0.94
-0.4 0.52 0.94
-0.6 0.52 0.94
-0.62 0.52 0.94
-0.64 0.52 0.94
-0.66 0.52 0.94
-0.68 0.52 0.94
-0.7 0.52 0.94
-0.72 0.52 0.94
-0.28 0.54 0.94
-0.3 0.54 0.94
-0.32 0.54 0.94
-0.34 0.54 0.94
-0.36 0.54 0.94
-0.38 0.54 0.94
-0.4 0.54 0.94
-0.6 0.54 0.94
-0.62 0.54 0.94
-0.64 0.54 0.94
-0.66 0.54 0.94
-0.68 0.54 0.94
-0.7 0.54 0.94
-0.72 0.54 0.94
-0.28 0.56 0.94
-0.3 0.56 0.94
-0.32 0.56 0.94
-0.34 0.56 0.94
-0.36 0.56 0.94
-0.38 0.56 0.94
-0.4 0.56 0.94
-0.42 0.56 0.94
-0.58 0.56 0.94
-0.6 0.56 0.94
-0.62 0.56 0.94
-0.64 0.56 0.94
-0.66 0.56 0.94
-0.68 0.56 0.94
-0.7 0.56 0.94
-0.72 0.56 0.94
-0.28 0.58 0.94
-0.3 0.58 0.94
-0.32 0.58 0.94
-0.34 0.58 0.94
-0.36 0.58 0.94
-0.38 0.58 0.94
-0.4 0.58 0.94
-0.42 0.58 0.94
-0.44 0.58 0.94
-0.56 0.58 0.94
-0.58 0.58 0.94
-0.6 0.58 0.94
-0.62 0.58 0.94
-0.64 0.58 0.94
-0.66 0.58 0.94
-0.68 0.58 0.94
-0.7 0.58 0.94
-0.72 0.58 0.94
-0.3 0.6 0.94
-0.32 0.6 0.94
-0.34 0.6 0.94
-0.36 0.6 0.94
-0.38 0.6 0.94
-0.4 0.6 0.94
-0.42 0.6 0.94
-0.44 0.6 0.94
-0.46 0.6 0.94
-0.48 0.6 0.94
-0.5 0.6 0.94
-0.52 0.6 0.94
-0.54 0.6 0.94
-0.56 0.6 0.94
-0.58 0.6 0.94
-0.6 0.6 0.94
-0.62 0.6 0.94
-0.64 0.6 0.94
-0.66 0.6 0.94
-0.68 0.6 0.94
-0.7 0.6 0.94
-0.3 0.62 0.94
-0.32 0.62 0.94
-0.34 0.62 0.94
-0.36 0.62 0.94
-0.38 0.62 0.94
-0.4 0.62 0.94
-0.42 0.62 0.94
-0.44 0.62 0.94
-0.46 0.62 0.94
-0.48 0.62 0.94
-0.5 0.62 0.94
-0.52 0.62 0.94
-0.54 0.62 0.94
-0.56 0.62 0.94
-0.58 0.62 0.94
-0.6 0.62 0.94
-0.62 0.62 0.94
-0.64 0.62 0.94
-0.66 0.62 0.94
-0.68 0.62 0.94
-0.7 0.62 0.94
-0.32 0.64 0.94
-0.34 0.64 0.94
-0.36 0.64 0.94
-0.38 0.64 0.94
-0.4 0.64 0.94
-0.42 0.64 0.94
-0.44 0.64 0.94
-0.46 0.64 0.94
-0.48 0.64 0.94
-0.5 0.64 0.94
-0.52 0.64 0.94
-0.54 0.64 0.94
-0.56 0.64 0.94
-0.58 0.64 0.94
-0.6 0.64 0.94
-0.62 0.64 0.94
-0.64 0.64 0.94
-0.66 0.64 0.94
-0.68 0.64 0.94
-0.34 0.66 0.94
-0.36 0.66 0.94
-0.38 0.66 0.94
-0.4 0.66 0.94
-0.42 0.66 0.94
-0.44 0.66 0.94
-0.46 0.66 0.94
-0.48 0.66 0.94
-0.5 0.66 0.94
-0.52 0.66 0.94
-0.54 0.66 0.94
-0.56 0.66 0.94
-0.58 0.66 0.94
-0.6 0.66 0.94
-0.62 0.66 0.94
-0.64 0.66 0.94
-0.66 0.66 0.94
-0.36 0.68 0.94
-0.38 0.68 0.94
-0.4 0.68 0.94
-0.42 0.68 0.94
-0.44 0.68 0.94
-0.46 0.68 0.94
-0.48 0.68 0.94
-0.5 0.68 0.94
-0.52 0.68 0.94
-0.54 0.68 0.94
-0.56 0.68 0.94
-0.58 0.68 0.94
-0.6 0.68 0.94
-0.62 0.68 0.94
-0.64 0.68 0.94
-0.38 0.7 0.94
-0.4 0.7 0.94
-0.42 0.7 0.94
-0.44 0.7 0.94
-0.46 0.7 0.94
-0.48 0.7 0.94
-0.5 0.7 0.94
-0.52 0.7 0.94
-0.54 0.7 0.94
-0.56 0.7 0.94
-0.58 0.7 0.94
-0.6 0.7 0.94
-0.62 0.7 0.94
-0.42 0.72 0.94
-0.44 0.72 0.94
-0.46 0.72 0.94
-0.48 0.72 0.94
-0.5 0.72 0.94
-0.52 0.72 0.94
-0.54 0.72 0.94
-0.56 0.72 0.94
-0.58 0.72 0.94
-0.44 0.32 0.96
-0.46 0.32 0.96
-0.48 0.32 0.96
-0.5 0.32 0.96
-0.52 0.32 0.96
-0.54 0.32 0.96
-0.56 0.32 0.96
-0.4 0.34 0.96
-0.42 0.34 0.96
-0.44 0.34 0.96
-0.46 0.34 0.96
-0.48 0.34 0.96
-0.5 0.34 0.96
-0.52 0.34 0.96
-0.54 0.34 0.96
-0.56 0.34 0.96
-0.58 0.34 0.96
-0.6 0.34 0.96
-0.38 0.36 0.96
-0.4 0.36 0.96
-0.42 0.36 0.96
-0.44 0.36 0.96
-0.46 0.36 0.96
-0.48 0.36 0.96
-0.5 0.36 0.96
-0.52 0.36 0.96
-0.54 0.36 0.96
-0.56 0.36 0.96
-0.58 0.36 0.96
-0.6 0.36 0.96
-0.62 0.36 0.96
-0.36 0.38 0.96
-0.38 0.38 0.96
-0.4 0.38 0.96
-0.42 0.38 0.96
-0.44 0.38 0.96
-0.46 0.38 0.96
-0.48 0.38 0.96
-0.5 0.38 0.96
-0.52 0.38 0.96
-0.54 0.38 0.96
-0.56 0.38 0.96
-0.58 0.38 0.96
-0.6 0.38 0.96
-0.62 0.38 0.96
-0.64 0.38 0.96
-0.34 0.4 0.96
-0.36 0.4 0.96
-0.38 0.4 0.96
-0.4 0.4 0.96
-0.42 0.4 0.96
-0.44 0.4 0.96
-0.46 0.4 0.96
-0.48 0.4 0.96
-0.5 0.4 0.96
-0.52 0.4 0.96
-0.54 0.4 0.96
-0.56 0.4 0.96
-0.58 0.4 0.96
-0.6 0.4 0.96
-0.62 0.4 0.96
-0.64 0.4 0.96
-0.66 0.4 0.96
-0.34 0.42 0.96
-0.36 0.42 0.96
-0.38 0.42 0.96
-0.4 0.42 0.96
-0.42 0.42 0.96
-0.44 0.42 0.96
-0.46 0.42 0.96
-0.48 0.42 0.96
-0.5 0.42 0.96
-0.52 0.42 0.96
-0.54 0.42 0.96
-0.56 0.42 0.96
-0.58 0.42 0.96
-0.6 0.42 0.96
-0.62 0.42 0.96
-0.64 0.42 0.96
-0.66 0.42 0.96
-0.32 0.44 0.96
-0.34 0.44 0.96
-0.36 0.44 0.96
-0.38 0.44 0.96
-0.4 0.44 0.96
-0.42 0.44 0.96
-0.44 0.44 0.96
-0.46 0.44 0.96
-0.48 0.44 0.96
-0.5 0.44 0.96
-0.52 0.44 0.96
-0.54 0.44 0.96
-0.56 0.44 0.96
-0.58 0.44 0.96
-0.6 0.44 0.96
-0.62 0.44 0.96
-0.64 0.44 0.96
-0.66 0.44 0.96
-0.68 0.44 0.96
-0.32 0.46 0.96
-0.34 0.46 0.96
-0.36 0.46 0.96
-0.38 0.46 0.96
-0.4 0.46 0.96
-0.42 0.46 0.96
-0.44 0.46 0.96
-0.46 0.46 0.96
-0.48 0.46 0.96
-0.5 0.46 0.96
-0.52 0.46 0.96
-0.54 0.46 0.96
-0.56 0.46 0.96
-0.58 0.46 0.96
-0.6 0.46 0.96
-0.62 0.46 0.96
-0.64 0.46 0.96
-0.66 0.46 0.96
-0.68 0.46 0.96
-0.32 0.48 0.96
-0.34 0.48 0.96
-0.36 0.48 0.96
-0.38 0.48 0.96
-0.4 0.48 0.96
-0.42 0.48 0.96
-0.44 0.48 0.96
-0.46 0.48 0.96
-0.48 0.48 0.96
-0.5 0.48 0.96
-0.52 0.48 0.96
-0.54 0.48 0.96
-0.56 0.48 0.96
-0.58 0.48 0.96
-0.6 0.48 0.96
-0.62 0.48 0.96
-0.64 0.48 0.96
-0.66 0.48 0.96
-0.68 0.48 0.96
-0.32 0.5 0.96
-0.34 0.5 0.96
-0.36 0.5 0.96
-0.38 0.5 0.96
-0.4 0.5 0.96
-0.42 0.5 0.96
-0.44 0.5 0.96
-0.46 0.5 0.96
-0.48 0.5 0.96
-0.5 0.5 0.96
-0.52 0.5 0.96
-0.54 0.5 0.96
-0.56 0.5 0.96
-0.58 0.5 0.96
-0.6 0.5 0.96
-0.62 0.5 0.96
-0.64 0.5 0.96
-0.66 0.5 0.96
-0.68 0.5 0.96
-0.32 0.52 0.96
-0.34 0.52 0.96
-0.36 0.52 0.96
-0.38 0.52 0.96
-0.4 0.52 0.96
-0.42 0.52 0.96
-0.44 0.52 0.96
-0.46 0.52 0.96
-0.48 0.52 0.96
-0.5 0.52 0.96
-0.52 0.52 0.96
-0.54 0.52 0.96
-0.56 0.52 0.96
-0.58 0.52 0.96
-0.6 0.52 0.96
-0.62 0.52 0.96
-0.64 0.52 0.96
-0.66 0.52 0.96
-0.68 0.52 0.96
-0.32 0.54 0.96
-0.34 0.54 0.96
-0.36 0.54 0.96
-0.38 0.54 0.96
-0.4 0.54 0.96
-0.42 0.54 0.96
-0.44 0.54 0.96
-0.46 0.54 0.96
-0.48 0.54 0.96
-0.5 0.54 0.96
-0.52 0.54 0.96
-0.54 0.54 0.96
-0.56 0.54 0.96
-0.58 0.54 0.96
-0.6 0.54 0.96
-0.62 0.54 0.96
-0.64 0.54 0.96
-0.66 0.54 0.96
-0.68 0.54 0.96
-0.32 0.56 0.96
-0.34 0.56 0.96
-0.36 0.56 0.96
-0.38 0.56 0.96
-0.4 0.56 0.96
-0.42 0.56 0.96
-0.44 0.56 0.96
-0.46 0.56 0.96
-0.48 0.56 0.96
-0.5 0.56 0.96
-0.52 0.56 0.96
-0.54 0.56 0.96
-0.56 0.56 0.96
-0.58 0.56 0.96
-0.6 0.56 0.96
-0.62 0.56 0.96
-0.64 0.56 0.96
-0.66 0.56 0.96
-0.68 0.56 0.96
-0.34 0.58 0.96
-0.36 0.58 0.96
-0.38 0.58 0.96
-0.4 0.58 0.96
-0.42 0.58 0.96
-0.44 0.58 0.96
-0.46 0.58 0.96
-0.48 0.58 0.96
-0.5 0.58 0.96
-0.52 0.58 0.96
-0.54 0.58 0.96
-0.56 0.58 0.96
-0.58 0.58 0.96
-0.6 0.58 0.96
-0.62 0.58 0.96
-0.64 0.58 0.96
-0.66 0.58 0.96
-0.34 0.6 0.96
-0.36 0.6 0.96
-0.38 0.6 0.96
-0.4 0.6 0.96
-0.42 0.6 0.96
-0.44 0.6 0.96
-0.46 0.6 0.96
-0.48 0.6 0.96
-0.5 0.6 0.96
-0.52 0.6 0.96
-0.54 0.6 0.96
-0.56 0.6 0.96
-0.58 0.6 0.96
-0.6 0.6 0.96
-0.62 0.6 0.96
-0.64 0.6 0.96
-0.66 0.6 0.96
-0.36 0.62 0.96
-0.38 0.62 0.96
-0.4 0.62 0.96
-0.42 0.62 0.96
-0.44 0.62 0.96
-0.46 0.62 0.96
-0.48 0.62 0.96
-0.5 0.62 0.96
-0.52 0.62 0.96
-0.54 0.62 0.96
-0.56 0.62 0.96
-0.58 0.62 0.96
-0.6 0.62 0.96
-0.62 0.62 0.96
-0.64 0.62 0.96
-0.38 0.64 0.96
-0.4 0.64 0.96
-0.42 0.64 0.96
-0.44 0.64 0.96
-0.46 0.64 0.96
-0.48 0.64 0.96
-0.5 0.64 0.96
-0.52 0.64 0.96
-0.54 0.64 0.96
-0.56 0.64 0.96
-0.58 0.64 0.96
-0.6 0.64 0.96
-0.62 0.64 0.96
-0.4 0.66 0.96
-0.42 0.66 0.96
-0.44 0.66 0.96
-0.46 0.66 0.96
-0.48 0.66 0.96
-0.5 0.66 0.96
-0.52 0.66 0.96
-0.54 0.66 0.96
-0.56 0.66 0.96
-0.58 0.66 0.96
-0.6 0.66 0.96
-0.44 0.68 0.96
-0.46 0.68 0.96
-0.48 0.68 0.96
-0.5 0.68 0.96
-0.52 0.68 0.96
-0.54 0.68 0.96
-0.56 0.68 0.96
-0.44 0.38 0.98
-0.46 0.38 0.98
-0.48 0.38 0.98
-0.5 0.38 0.98
-0.52 0.38 0.98
-0.54 0.38 0.98
-0.56 0.38 0.98
-0.42 0.4 0.98
-0.44 0.4 0.98
-0.46 0.4 0.98
-0.48 0.4 0.98
-0.5 0.4 0.98
-0.52 0.4 0.98
-0.54 0.4 0.98
-0.56 0.4 0.98
-0.58 0.4 0.98
-0.4 0.42 0.98
-0.42 0.42 0.98
-0.44 0.42 0.98
-0.46 0.42 0.98
-0.48 0.42 0.98
-0.5 0.42 0.98
-0.52 0.42 0.98
-0.54 0.42 0.98
-0.56 0.42 0.98
-0.58 0.42 0.98
-0.6 0.42 0.98
-0.38 0.44 0.98
-0.4 0.44 0.98
-0.42 0.44 0.98
-0.44 0.44 0.98
-0.46 0.44 0.98
-0.48 0.44 0.98
-0.5 0.44 0.98
-0.52 0.44 0.98
-0.54 0.44 0.98
-0.56 0.44 0.98
-0.58 0.44 0.98
-0.6 0.44 0.98
-0.62 0.44 0.98
-0.38 0.46 0.98
-0.4 0.46 0.98
-0.42 0.46 0.98
-0.44 0.46 0.98
-0.46 0.46 0.98
-0.48 0.46 0.98
-0.5 0.46 0.98
-0.52 0.46 0.98
-0.54 0.46 0.98
-0.56 0.46 0.98
-0.58 0.46 0.98
-0.6 0.46 0.98
-0.62 0.46 0.98
-0.38 0.48 0.98
-0.4 0.48 0.98
-0.42 0.48 0.98
-0.44 0.48 0.98
-0.46 0.48 0.98
-0.48 0.48 0.98
-0.5 0.48 0.98
-0.52 0.48 0.98
-0.54 0.48 0.98
-0.56 0.48 0.98
-0.58 0.48 0.98
-0.6 0.48 0.98
-0.62 0.48 0.98
-0.38 0.5 0.98
-0.4 0.5 0.98
-0.42 0.5 0.98
-0.44 0.5 0.98
-0.46 0.5 0.98
-0.48 0.5 0.98
-0.5 0.5 0.98
-0.52 0.5 0.98
-0.54 0.5 0.98
-0.56 0.5 0.98
-0.58 0.5 0.98
-0.6 0.5 0.98
-0.62 0.5 0.98
-0.38 0.52 0.98
-0.4 0.52 0.98
-0.42 0.52 0.98
-0.44 0.52 0.98
-0.46 0.52 0.98
-0.48 0.52 0.98
-0.5 0.52 0.98
-0.52 0.52 0.98
-0.54 0.52 0.98
-0.56 0.52 0.98
-0.58 0.52 0.98
-0.6 0.52 0.98
-0.62 0.52 0.98
-0.38 0.54 0.98
-0.4 0.54 0.98
-0.42 0.54 0.98
-0.44 0.54 0.98
-0.46 0.54 0.98
-0.48 0.54 0.98
-0.5 0.54 0.98
-0.52 0.54 0.98
-0.54 0.54 0.98
-0.56 0.54 0.98
-0.58 0.54 0.98
-0.6 0.54 0.98
-0.62 0.54 0.98
-0.38 0.56 0.98
-0.4 0.56 0.98
-0.42 0.56 0.98
-0.44 0.56 0.98
-0.46 0.56 0.98
-0.48 0.56 0.98
-0.5 0.56 0.98
-0.52 0.56 0.98
-0.54 0.56 0.98
-0.56 0.56 0.98
-0.58 0.56 0.98
-0.6 0.56 0.98
-0.62 0.56 0.98
-0.4 0.58 0.98
-0.42 0.58 0.98
-0.44 0.58 0.98
-0.46 0.58 0.98
-0.48 0.58 0.98
-0.5 0.58 0.98
-0.52 0.58 0.98
-0.54 0.58 0.98
-0.56 0.58 0.98
-0.58 0.58 0.98
-0.6 0.58 0.98
-0.42 0.6 0.98
-0.44 0.6 0.98
-0.46 0.6 0.98
-0.48 0.6 0.98
-0.5 0.6 0.98
-0.52 0.6 0.98
-0.54 0.6 0.98
-0.56 0.6 0.98
-0.58 0.6 0.98
-0.44 0.62 0.98
-0.46 0.62 0.98
-0.48 0.62 0.98
-0.5 0.62 0.98
-0.52 0.62 0.98
-0.54 0.62 0.98
-0.56 0.62 0.98
diff --git a/data/points/spiral_3d_10k.off b/data/points/spiral_3d_10k.off
deleted file mode 100644
index 2f15b289..00000000
--- a/data/points/spiral_3d_10k.off
+++ /dev/null
@@ -1,10002 +0,0 @@
-OFF
-10000 0 0
-5 0 0
--5 6.12303e-16 1.96479e-15
-3.06152e-16 5 9.82396e-16
--9.18455e-16 -5 -2.54745e-14
-3.36662 -3.55184 0.448383
--3.55184 -3.36662 0.448383
--3.36662 3.55184 0.448383
-3.55184 3.36662 0.448383
-1.19881 2.79144 -0.272952
--2.79144 1.19881 -0.272952
--1.19881 -2.79144 -0.272952
-2.79144 -1.19881 -0.272952
-3.05698 1.354 -0.754251
--1.354 3.05698 -0.754251
--3.05698 -1.354 -0.754251
-1.354 -3.05698 -0.754251
-3.96417 1.3489 0.982287
--1.3489 3.96417 0.982287
--3.96417 -1.3489 0.982287
-1.3489 -3.96417 0.982287
-2.12755 4.4934 -0.236499
--4.4934 2.12755 -0.236499
--2.12755 -4.4934 -0.236499
-4.4934 -2.12755 -0.236499
--0.950922 -3.94994 0.998027
-3.94994 -0.950922 0.998027
-0.950922 3.94994 0.998027
--3.94994 0.950922 0.998027
-2.43718 2.1189 0.637424
--2.1189 2.43718 0.637424
--2.43718 -2.1189 0.637424
-2.1189 -2.43718 0.637424
-2.65984 3.12062 -0.994951
--3.12062 2.65984 -0.994951
--2.65984 -3.12062 -0.994951
-3.12062 -2.65984 -0.994951
-4.46448 2.07962 -0.379779
--2.07962 4.46448 -0.379779
--4.46448 -2.07962 -0.379779
-2.07962 -4.46448 -0.379779
--3.73853 0.0685981 -0.965382
-0.0685981 3.73853 -0.965382
-3.73853 -0.0685981 -0.965382
--0.0685981 -3.73853 -0.965382
-3.05767 0.277408 0.368125
--0.277408 3.05767 0.368125
--3.05767 -0.277408 0.368125
-0.277408 -3.05767 0.368125
-2.30952 3.735 0.920232
--3.735 2.30952 0.920232
--2.30952 -3.735 0.920232
-3.735 -2.30952 0.920232
-1.32428 3.88063 -0.994951
--3.88063 1.32428 -0.994951
--1.32428 -3.88063 -0.994951
-3.88063 -1.32428 -0.994951
--4.55328 -0.826551 -0.778462
--0.826551 4.55328 -0.778462
-4.55328 0.826551 -0.778462
-0.826551 -4.55328 -0.778462
-2.19372 2.21533 -0.470704
--2.21533 2.19372 -0.470704
--2.19372 -2.21533 -0.470704
-2.21533 -2.19372 -0.470704
-3.71372 3.0316 -0.60793
--3.0316 3.71372 -0.60793
--3.71372 -3.0316 -0.60793
-3.0316 -3.71372 -0.60793
-4.41362 0.327834 0.904827
--0.327834 4.41362 0.904827
--4.41362 -0.327834 0.904827
-0.327834 -4.41362 0.904827
-1.21463 4.79567 0.320944
--4.79567 1.21463 0.320944
--1.21463 -4.79567 0.320944
-4.79567 -1.21463 0.320944
-4.80611 1.24753 0.260842
--1.24753 4.80611 0.260842
--4.80611 -1.24753 0.260842
-1.24753 -4.80611 0.260842
-1.54328 2.96592 0.754251
--2.96592 1.54328 0.754251
--1.54328 -2.96592 0.754251
-2.96592 -1.54328 0.754251
-3.68001 2.39619 0.920232
--2.39619 3.68001 0.920232
--3.68001 -2.39619 0.920232
-2.39619 -3.68001 0.920232
-0.623081 4.61471 -0.754251
--4.61471 0.623081 -0.754251
--0.623081 -4.61471 -0.754251
-4.61471 -0.623081 -0.754251
-2.99577 1.27054 0.666012
--1.27054 2.99577 0.666012
--2.99577 -1.27054 0.666012
-1.27054 -2.99577 0.666012
-2.93189 4.04395 0.100362
--4.04395 2.93189 0.100362
--2.93189 -4.04395 0.100362
-4.04395 -2.93189 0.100362
-3.24262 2.27713 -0.999289
--2.27713 3.24262 -0.999289
--3.24262 -2.27713 -0.999289
-2.27713 -3.24262 -0.999289
-3.94818 1.50211 -0.974527
--1.50211 3.94818 -0.974527
--3.94818 -1.50211 -0.974527
-1.50211 -3.94818 -0.974527
-0.277408 3.05767 -0.368125
--3.05767 0.277408 -0.368125
--0.277408 -3.05767 -0.368125
-3.05767 -0.277408 -0.368125
-0.691675 3.02817 0.448383
--3.02817 0.691675 0.448383
--0.691675 -3.02817 0.448383
-3.02817 -0.691675 0.448383
-4.19132 2.67395 0.236499
--2.67395 4.19132 0.236499
--4.19132 -2.67395 0.236499
-2.67395 -4.19132 0.236499
-1.774 3.07683 -0.893841
--3.07683 1.774 -0.893841
--1.774 -3.07683 -0.893841
-3.07683 -1.774 -0.893841
-2.64796 2.91375 0.998027
--2.91375 2.64796 0.998027
--2.64796 -2.91375 0.998027
-2.91375 -2.64796 0.998027
-2.19599 3.8942 -0.882291
--3.8942 2.19599 -0.882291
--2.19599 -3.8942 -0.882291
-3.8942 -2.19599 -0.882291
-0.154545 3.59377 0.915241
--3.59377 0.154545 0.915241
--0.154545 -3.59377 0.915241
-3.59377 -0.154545 0.915241
-2.58254 1.52907 -0.0502443
--1.52907 2.58254 -0.0502443
--2.58254 -1.52907 -0.0502443
-1.52907 -2.58254 -0.0502443
-3.17073 0.523864 -0.61786
--0.523864 3.17073 -0.61786
--3.17073 -0.523864 -0.61786
-0.523864 -3.17073 -0.61786
-0.544127 4.62469 0.754251
--4.62469 0.544127 0.754251
--0.544127 -4.62469 0.754251
-4.62469 -0.544127 0.754251
-1.65692 4.29973 0.79399
--4.29973 1.65692 0.79399
--1.65692 -4.29973 0.79399
-4.29973 -1.65692 0.79399
-3.08428 3.67998 -0.597905
--3.67998 3.08428 -0.597905
--3.08428 -3.67998 -0.597905
-3.67998 -3.08428 -0.597905
-1.85586 2.38266 0.19971
--2.38266 1.85586 0.19971
--1.85586 -2.38266 0.19971
-2.38266 -1.85586 0.19971
-3.49674 0.740193 0.904827
--0.740193 3.49674 0.904827
--3.49674 -0.740193 0.904827
-0.740193 -3.49674 0.904827
-0.916436 3.26593 -0.79399
--3.26593 0.916436 -0.79399
--0.916436 -3.26593 -0.79399
-3.26593 -0.916436 -0.79399
-3.85448 0.669222 -0.996134
--0.669222 3.85448 -0.996134
--3.85448 -0.669222 -0.996134
-0.669222 -3.85448 -0.996134
-4.29481 2.05802 0.647056
--2.05802 4.29481 0.647056
--4.29481 -2.05802 0.647056
-2.05802 -4.29481 0.647056
-1.50351 4.51888 -0.647056
--4.51888 1.50351 -0.647056
--1.50351 -4.51888 -0.647056
-4.51888 -1.50351 -0.647056
-2.33766 4.29942 0.448383
--4.29942 2.33766 0.448383
--2.33766 -4.29942 0.448383
-4.29942 -2.33766 0.448383
-2.88125 0.838258 -0.0376902
--0.838258 2.88125 -0.0376902
--2.88125 -0.838258 -0.0376902
-0.838258 -2.88125 -0.0376902
-3.06837 2.02992 0.947098
--2.02992 3.06837 0.947098
--3.06837 -2.02992 0.947098
-2.02992 -3.06837 0.947098
-2.9688 3.64707 0.711536
--3.64707 2.9688 0.711536
--2.9688 -3.64707 0.711536
-3.64707 -2.9688 0.711536
-1.62919 3.61188 0.999289
--3.61188 1.62919 0.999289
--1.62919 -3.61188 0.999289
-3.61188 -1.62919 0.999289
-3.87977 2.40984 -0.823533
--2.40984 3.87977 -0.823533
--3.87977 -2.40984 -0.823533
-2.40984 -3.87977 -0.823533
--4.92785 -0.609325 -0.260842
--0.609325 4.92785 -0.260842
-4.92785 0.609325 -0.260842
-0.609325 -4.92785 -0.260842
-4.33907 0.219929 -0.938734
--0.219929 4.33907 -0.938734
--4.33907 -0.219929 -0.938734
-0.219929 -4.33907 -0.938734
-4.58969 1.4601 -0.577573
--1.4601 4.58969 -0.577573
--4.58969 -1.4601 -0.577573
-1.4601 -4.58969 -0.577573
-4.94415 -0.633431 -0.175023
-0.633431 4.94415 -0.175023
--4.94415 0.633431 -0.175023
--0.633431 -4.94415 -0.175023
-4.82857 0.635282 0.492727
--0.635282 4.82857 0.492727
--4.82857 -0.635282 0.492727
-0.635282 -4.82857 0.492727
-2.09703 2.65355 0.786288
--2.65355 2.09703 0.786288
--2.09703 -2.65355 0.786288
-2.65355 -2.09703 0.786288
-2.63887 4.11464 -0.45958
--4.11464 2.63887 -0.45958
--2.63887 -4.11464 -0.45958
-4.11464 -2.63887 -0.45958
-2.76439 1.91444 -0.770513
--1.91444 2.76439 -0.770513
--2.76439 -1.91444 -0.770513
-1.91444 -2.76439 -0.770513
-0.0307723 4.80147 -0.597905
--4.80147 0.0307723 -0.597905
--0.0307723 -4.80147 -0.597905
-4.80147 -0.0307723 -0.597905
-1.81202 4.61557 0.285019
--4.61557 1.81202 0.285019
--1.81202 -4.61557 0.285019
-4.61557 -1.81202 0.285019
-4.6313 1.84309 0.175023
--1.84309 4.6313 0.175023
--4.6313 -1.84309 0.175023
-1.84309 -4.6313 0.175023
-3.42329 3.63901 -0.0878512
--3.63901 3.42329 -0.0878512
--3.42329 -3.63901 -0.0878512
-3.63901 -3.42329 -0.0878512
-1.01042 3.34719 0.863923
--3.34719 1.01042 0.863923
--1.01042 -3.34719 0.863923
-3.34719 -1.01042 0.863923
-3.22574 3.09545 0.882291
--3.09545 3.22574 0.882291
--3.22574 -3.09545 0.882291
-3.09545 -3.22574 0.882291
-2.48345 2.53899 -0.893841
--2.53899 2.48345 -0.893841
--2.48345 -2.53899 -0.893841
-2.53899 -2.48345 -0.893841
-3.85322 3.18521 -0.0376902
--3.18521 3.85322 -0.0376902
--3.85322 -3.18521 -0.0376902
-3.18521 -3.85322 -0.0376902
-0.573665 4.06003 -0.994951
--4.06003 0.573665 -0.994951
--0.573665 -4.06003 -0.994951
-4.06003 -0.573665 -0.994951
-4.81625 0.0296565 0.577573
--0.0296565 4.81625 0.577573
--4.81625 -0.0296565 0.577573
-0.0296565 -4.81625 0.577573
-4.47797 1.49303 0.693653
--1.49303 4.47797 0.693653
--4.47797 -1.49303 0.693653
-1.49303 -4.47797 0.693653
-4.1758 2.62875 -0.356412
--2.62875 4.1758 -0.356412
--4.1758 -2.62875 -0.356412
-2.62875 -4.1758 -0.356412
-1.75226 2.60859 -0.51444
--2.60859 1.75226 -0.51444
--1.75226 -2.60859 -0.51444
-2.60859 -1.75226 -0.51444
-3.2197 2.95196 -0.929776
--2.95196 3.2197 -0.929776
--3.2197 -2.95196 -0.929776
-2.95196 -3.2197 -0.929776
-0.205137 4.18235 0.982287
--4.18235 0.205137 0.982287
--0.205137 -4.18235 0.982287
-4.18235 -0.205137 0.982287
-1.10496 4.47349 0.79399
--4.47349 1.10496 0.79399
--1.10496 -4.47349 0.79399
-4.47349 -1.10496 0.79399
-1.21967 2.79436 0.309017
--2.79436 1.21967 0.309017
--1.21967 -2.79436 0.309017
-2.79436 -1.21967 0.309017
-2.25396 1.98412 0.0753268
--1.98412 2.25396 0.0753268
--2.25396 -1.98412 0.0753268
-1.98412 -2.25396 0.0753268
-4.44672 0.894677 0.844328
--0.894677 4.44672 0.844328
--4.44672 -0.894677 0.844328
-0.894677 -4.44672 0.844328
-3.55761 1.74452 0.999289
--1.74452 3.55761 0.999289
--3.55761 -1.74452 0.999289
-1.74452 -3.55761 0.999289
-1.24789 4.81247 -0.236499
--4.81247 1.24789 -0.236499
--1.24789 -4.81247 -0.236499
-4.81247 -1.24789 -0.236499
-3.87481 0.309364 0.993611
--0.309364 3.87481 0.993611
--3.87481 -0.309364 0.993611
-0.309364 -3.87481 0.993611
-3.84671 2.83488 0.627691
--2.83488 3.84671 0.627691
--3.84671 -2.83488 0.627691
-2.83488 -3.84671 0.627691
-3.47532 1.05482 -0.929776
--1.05482 3.47532 -0.929776
--3.47532 -1.05482 -0.929776
-1.05482 -3.47532 -0.929776
-2.99947 0.288478 -0.162637
--0.288478 2.99947 -0.162637
--2.99947 -0.288478 -0.162637
-0.288478 -2.99947 -0.162637
-3.33025 1.75311 -0.971632
--1.75311 3.33025 -0.971632
--3.33025 -1.75311 -0.971632
-1.75311 -3.33025 -0.971632
-1.75976 3.59211 -1
--3.59211 1.75976 -1
--1.75976 -3.59211 -1
-3.59211 -1.75976 -1
-1.95201 3.20343 0.968583
--3.20343 1.95201 0.968583
--1.95201 -3.20343 0.968583
-3.20343 -1.95201 0.968583
-4.1872 1.92363 -0.79399
--1.92363 4.1872 -0.79399
--4.1872 -1.92363 -0.79399
-1.92363 -4.1872 -0.79399
-3.07127 2.62111 0.999289
--2.62111 3.07127 0.999289
--3.07127 -2.62111 0.999289
-2.62111 -3.07127 0.999289
-0.602879 4.90609 0.33282
--4.90609 0.602879 0.33282
--0.602879 -4.90609 0.33282
-4.90609 -0.602879 0.33282
-0.287364 2.99579 0.13779
--2.99579 0.287364 0.13779
--0.287364 -2.99579 0.13779
-2.99579 -0.287364 0.13779
-2.22843 3.39711 -0.998027
--3.39711 2.22843 -0.998027
--2.22843 -3.39711 -0.998027
-3.39711 -2.22843 -0.998027
-3.97889 0.821382 0.998027
--0.821382 3.97889 0.998027
--3.97889 -0.821382 0.998027
-0.821382 -3.97889 0.998027
-3.35031 0.286987 0.770513
--0.286987 3.35031 0.770513
--3.35031 -0.286987 0.770513
-0.286987 -3.35031 0.770513
-2.67898 3.60662 -0.870184
--3.60662 2.67898 -0.870184
--2.67898 -3.60662 -0.870184
-3.60662 -2.67898 -0.870184
-0.520381 3.54766 -0.910106
--3.54766 0.520381 -0.910106
--0.520381 -3.54766 -0.910106
-3.54766 -0.520381 -0.910106
-2.67593 1.56624 0.437116
--1.56624 2.67593 0.437116
--2.67593 -1.56624 0.437116
-1.56624 -2.67593 0.437116
-0.07707 3.31456 -0.728969
--3.31456 0.07707 -0.728969
--0.07707 -3.31456 -0.728969
-3.31456 -0.07707 -0.728969
-2.80908 1.22777 -0.356412
--1.22777 2.80908 -0.356412
--2.80908 -1.22777 -0.356412
-1.22777 -2.80908 -0.356412
-4.82103 1.22621 -0.224271
--1.22621 4.82103 -0.224271
--4.82103 -1.22621 -0.224271
-1.22621 -4.82103 -0.224271
-2.98136 0.85156 0.437116
--0.85156 2.98136 0.437116
--2.98136 -0.85156 0.437116
-0.85156 -2.98136 0.437116
-2.05502 4.28717 -0.656586
--4.28717 2.05502 -0.656586
--2.05502 -4.28717 -0.656586
-4.28717 -2.05502 -0.656586
-3.5112 1.2135 0.958522
--1.2135 3.5112 0.958522
--3.5112 -1.2135 0.958522
-1.2135 -3.5112 0.958522
-0.120269 3.18872 0.587785
--3.18872 0.120269 0.587785
--0.120269 -3.18872 0.587785
-3.18872 -0.120269 0.587785
-0.837786 2.88097 0.0251301
--2.88097 0.837786 0.0251301
--0.837786 -2.88097 0.0251301
-2.88097 -0.837786 0.0251301
-1.15621 4.30709 -0.888136
--4.30709 1.15621 -0.888136
--1.15621 -4.30709 -0.888136
-4.30709 -1.15621 -0.888136
-2.21179 2.9251 -0.942991
--2.9251 2.21179 -0.942991
--2.21179 -2.9251 -0.942991
-2.9251 -2.21179 -0.942991
-3.73933 1.99132 -0.971632
--1.99132 3.73933 -0.971632
--3.73933 -1.99132 -0.971632
-1.99132 -3.73933 -0.971632
-0.620692 3.62632 0.947098
--3.62632 0.620692 0.947098
--0.620692 -3.62632 0.947098
-3.62632 -0.620692 0.947098
-4.16372 1.01236 -0.958522
--1.01236 4.16372 -0.958522
--4.16372 -1.01236 -0.958522
-1.01236 -4.16372 -0.958522
-3.52085 0.371697 -0.888136
--0.371697 3.52085 -0.888136
--3.52085 -0.371697 -0.888136
-0.371697 -3.52085 -0.888136
-1.27346 3.00369 -0.675333
--3.00369 1.27346 -0.675333
--1.27346 -3.00369 -0.675333
-3.00369 -1.27346 -0.675333
-2.53899 2.48345 0.893841
--2.48345 2.53899 0.893841
--2.53899 -2.48345 0.893841
-2.48345 -2.53899 0.893841
-1.6906 4.13873 -0.882291
--4.13873 1.6906 -0.882291
--1.6906 -4.13873 -0.882291
-4.13873 -1.6906 -0.882291
-1.52651 2.58341 -0.0376902
--2.58341 1.52651 -0.0376902
--1.52651 -2.58341 -0.0376902
-2.58341 -1.52651 -0.0376902
-2.71264 3.36335 0.947098
--3.36335 2.71264 0.947098
--2.71264 -3.36335 0.947098
-3.36335 -2.71264 0.947098
-3.96193 1.9206 0.915241
--1.9206 3.96193 0.915241
--3.96193 -1.9206 0.915241
-1.9206 -3.96193 0.915241
-2.77668 1.19454 0.212007
--1.19454 2.77668 0.212007
--2.77668 -1.19454 0.212007
-1.19454 -2.77668 0.212007
-2.9048 2.63916 -0.997159
--2.63916 2.9048 -0.997159
--2.9048 -2.63916 -0.997159
-2.63916 -2.9048 -0.997159
-1.4025 3.35015 -0.929776
--3.35015 1.4025 -0.929776
--1.4025 -3.35015 -0.929776
-3.35015 -1.4025 -0.929776
-0.853903 2.99241 -0.45958
--2.99241 0.853903 -0.45958
--0.853903 -2.99241 -0.45958
-2.99241 -0.853903 -0.45958
-2.55228 1.75099 -0.425779
--1.75099 2.55228 -0.425779
--2.55228 -1.75099 -0.425779
-1.75099 -2.55228 -0.425779
-4.38164 2.40596 -0.0502443
--2.40596 4.38164 -0.0502443
--4.38164 -2.40596 -0.0502443
-2.40596 -4.38164 -0.0502443
-3.60926 3.36465 -0.356412
--3.36465 3.60926 -0.356412
--3.60926 -3.36465 -0.356412
-3.36465 -3.60926 -0.356412
-3.18215 1.57731 0.893841
--1.57731 3.18215 0.893841
--3.18215 -1.57731 0.893841
-1.57731 -3.18215 0.893841
-3.14236 0.93912 -0.693653
--0.93912 3.14236 -0.693653
--3.14236 -0.93912 -0.693653
-0.93912 -3.14236 -0.693653
-1.59684 2.67092 0.45958
--2.67092 1.59684 0.45958
--1.59684 -2.67092 0.45958
-2.67092 -1.59684 0.45958
-0.935979 4.7665 -0.51444
--4.7665 0.935979 -0.51444
--0.935979 -4.7665 -0.51444
-4.7665 -0.935979 -0.51444
-2.40596 4.38164 0.0502443
--4.38164 2.40596 0.0502443
--2.40596 -4.38164 0.0502443
-4.38164 -2.40596 0.0502443
-2.76517 1.84587 0.737513
--1.84587 2.76517 0.737513
--2.76517 -1.84587 0.737513
-1.84587 -2.76517 0.737513
-0.324442 -4.95798 0.24869
-4.95798 0.324442 0.24869
--0.324442 4.95798 0.24869
--4.95798 -0.324442 0.24869
-1.4601 4.58969 0.577573
--4.58969 1.4601 0.577573
--1.4601 -4.58969 0.577573
-4.58969 -1.4601 0.577573
-1.00175 3.62773 -0.971632
--3.62773 1.00175 -0.971632
--1.00175 -3.62773 -0.971632
-3.62773 -1.00175 -0.971632
-0.326936 4.37919 -0.920232
--4.37919 0.326936 -0.920232
--0.326936 -4.37919 -0.920232
-4.37919 -0.326936 -0.920232
-0.547309 3.27931 0.737513
--3.27931 0.547309 0.737513
--0.547309 -3.27931 0.737513
-3.27931 -0.547309 0.737513
-2.50373 4.01179 0.684547
--4.01179 2.50373 0.684547
--2.50373 -4.01179 0.684547
-4.01179 -2.50373 0.684547
-1.1118 3.02361 0.627691
--3.02361 1.1118 0.627691
--1.1118 -3.02361 0.627691
-3.02361 -1.1118 0.627691
-3.12802 3.81028 0.368125
--3.81028 3.12802 0.368125
--3.12802 -3.81028 0.368125
-3.81028 -3.12802 0.368125
-3.19147 3.33754 -0.786288
--3.33754 3.19147 -0.786288
--3.19147 -3.33754 -0.786288
-3.33754 -3.19147 -0.786288
-0.767225 4.30022 0.929776
--4.30022 0.767225 0.929776
--0.767225 -4.30022 0.929776
-4.30022 -0.767225 0.929776
-2.0955 2.35055 0.525175
--2.35055 2.0955 0.525175
--2.0955 -2.35055 0.525175
-2.35055 -2.0955 0.525175
-0.486461 3.22602 -0.675333
--3.22602 0.486461 -0.675333
--0.486461 -3.22602 -0.675333
-3.22602 -0.486461 -0.675333
-1.2921 4.14806 0.938734
--4.14806 1.2921 0.938734
--1.2921 -4.14806 0.938734
-4.14806 -1.2921 0.938734
-1.54379 4.75537 0.0251301
--4.75537 1.54379 0.0251301
--1.54379 -4.75537 0.0251301
-4.75537 -1.54379 0.0251301
-4.20952 2.27783 -0.61786
--2.27783 4.20952 -0.61786
--4.20952 -2.27783 -0.61786
-2.27783 -4.20952 -0.61786
-4.91038 0.938625 0.0376902
--0.938625 4.91038 0.0376902
--4.91038 -0.938625 0.0376902
-0.938625 -4.91038 0.0376902
-1.84627 2.3901 -0.19971
--2.3901 1.84627 -0.19971
--1.84627 -2.3901 -0.19971
-2.3901 -1.84627 -0.19971
-0.875244 4.74346 0.567269
--4.74346 0.875244 0.567269
--0.875244 -4.74346 0.567269
-4.74346 -0.875244 0.567269
-1.80718 3.96389 0.934329
--3.96389 1.80718 0.934329
--1.80718 -3.96389 0.934329
-3.96389 -1.80718 0.934329
-0.932673 4.90935 0.0753268
--4.90935 0.932673 0.0753268
--0.932673 -4.90935 0.0753268
-4.90935 -0.932673 0.0753268
-4.31771 1.35448 -0.850994
--1.35448 4.31771 -0.850994
--4.31771 -1.35448 -0.850994
-1.35448 -4.31771 -0.850994
-2.33058 3.31254 0.998737
--3.31254 2.33058 0.998737
--2.33058 -3.31254 0.998737
-3.31254 -2.33058 0.998737
-2.84297 2.2601 -0.929776
--2.2601 2.84297 -0.929776
--2.84297 -2.2601 -0.929776
-2.2601 -2.84297 -0.929776
-4.79447 0.88964 -0.481754
--0.88964 4.79447 -0.481754
--4.79447 -0.88964 -0.481754
-0.88964 -4.79447 -0.481754
-4.75537 1.54379 -0.0251301
--1.54379 4.75537 -0.0251301
--4.75537 -1.54379 -0.0251301
-1.54379 -4.75537 -0.0251301
-2.00518 4.33739 0.627691
--4.33739 2.00518 0.627691
--2.00518 -4.33739 0.627691
-4.33739 -2.00518 0.627691
-0.328688 4.90924 -0.391374
--4.90924 0.328688 -0.391374
--0.328688 -4.90924 -0.391374
-4.90924 -0.328688 -0.391374
-3.53642 2.50341 -0.942991
--2.50341 3.53642 -0.942991
--3.53642 -2.50341 -0.942991
-2.50341 -3.53642 -0.942991
-3.20024 0.901042 0.737513
--0.901042 3.20024 0.737513
--3.20024 -0.901042 0.737513
-0.901042 -3.20024 0.737513
-4.2775 2.37754 0.448383
--2.37754 4.2775 0.448383
--4.2775 -2.37754 0.448383
-2.37754 -4.2775 0.448383
-1.82268 4.54175 -0.448383
--4.54175 1.82268 -0.448383
--1.82268 -4.54175 -0.448383
-4.54175 -1.82268 -0.448383
-3.11565 0.1132 -0.470704
--0.1132 3.11565 -0.470704
--3.11565 -0.1132 -0.470704
-0.1132 -3.11565 -0.470704
-2.02655 2.65923 -0.754251
--2.65923 2.02655 -0.754251
--2.02655 -2.65923 -0.754251
-2.65923 -2.02655 -0.754251
-2.46246 2.2064 -0.720309
--2.2064 2.46246 -0.720309
--2.46246 -2.2064 -0.720309
-2.2064 -2.46246 -0.720309
-2.64719 4.19691 0.272952
--4.19691 2.64719 0.272952
--2.64719 -4.19691 0.272952
-4.19691 -2.64719 0.272952
-4.89108 0.285512 -0.437116
--0.285512 4.89108 -0.437116
--4.89108 -0.285512 -0.437116
-0.285512 -4.89108 -0.437116
-1.46665 3.28451 0.915241
--3.28451 1.46665 0.915241
--1.46665 -3.28451 0.915241
-3.28451 -1.46665 0.915241
-4.02637 2.26119 0.786288
--2.26119 4.02637 0.786288
--4.02637 -2.26119 0.786288
-2.26119 -4.02637 0.786288
-0.0599509 4.11242 -0.993611
--4.11242 0.0599509 -0.993611
--0.0599509 -4.11242 -0.993611
-4.11242 -0.0599509 -0.993611
-2.92917 4.00936 -0.260842
--4.00936 2.92917 -0.260842
--2.92917 -4.00936 -0.260842
-4.00936 -2.92917 -0.260842
-2.53325 3.91845 -0.745941
--3.91845 2.53325 -0.745941
--2.53325 -3.91845 -0.745941
-3.91845 -2.53325 -0.745941
-3.37557 2.21551 0.999289
--2.21551 3.37557 0.999289
--3.37557 -2.21551 0.999289
-2.21551 -3.37557 0.999289
-2.954 0.871114 -0.391374
--0.871114 2.954 -0.391374
--2.954 -0.871114 -0.391374
-0.871114 -2.954 -0.391374
-2.82522 3.93518 0.535827
--3.93518 2.82522 0.535827
--2.82522 -3.93518 0.535827
-3.93518 -2.82522 0.535827
-2.43303 1.8726 0.368125
--1.8726 2.43303 0.368125
--2.43303 -1.8726 0.368125
-1.8726 -2.43303 0.368125
-4.03466 2.91898 -0.19971
--2.91898 4.03466 -0.19971
--4.03466 -2.91898 -0.19971
-2.91898 -4.03466 -0.19971
-3.5548 2.99308 0.762443
--2.99308 3.5548 0.762443
--3.5548 -2.99308 0.762443
-2.99308 -3.5548 0.762443
-3.81131 1.17199 -0.999921
--1.17199 3.81131 -0.999921
--3.81131 -1.17199 -0.999921
-1.17199 -3.81131 -0.999921
-4.64973 0.252667 -0.754251
--0.252667 4.64973 -0.754251
--4.64973 -0.252667 -0.754251
-0.252667 -4.64973 -0.754251
-2.68067 4.21468 -0.100362
--4.21468 2.68067 -0.100362
--2.68067 -4.21468 -0.100362
-4.21468 -2.68067 -0.100362
-4.23983 1.72569 0.816339
--1.72569 4.23983 0.816339
--4.23983 -1.72569 0.816339
-1.72569 -4.23983 0.816339
-2.17219 4.04096 0.809017
--4.04096 2.17219 0.809017
--2.17219 -4.04096 0.809017
-4.04096 -2.17219 0.809017
-4.63383 1.82389 -0.19971
--1.82389 4.63383 -0.19971
--4.63383 -1.82389 -0.19971
-1.82389 -4.63383 -0.19971
-4.74474 0.566716 -0.627691
--0.566716 4.74474 -0.627691
--4.74474 -0.566716 -0.627691
-0.566716 -4.74474 -0.627691
-3.80492 3.16789 0.309017
--3.16789 3.80492 0.309017
--3.80492 -3.16789 0.309017
-3.16789 -3.80492 0.309017
-3.63632 3.42248 0.112856
--3.42248 3.63632 0.112856
--3.63632 -3.42248 0.112856
-3.42248 -3.63632 0.112856
-4.51285 1.81437 0.503623
--1.81437 4.51285 0.503623
--4.51285 -1.81437 0.503623
-1.81437 -4.51285 0.503623
-2.2987 2.88779 0.951057
--2.88779 2.2987 0.951057
--2.2987 -2.88779 0.951057
-2.88779 -2.2987 0.951057
-0.429588 3.9137 0.998027
--3.9137 0.429588 0.998027
--0.429588 -3.9137 0.998027
-3.9137 -0.429588 0.998027
-4.69979 0.332466 0.70265
--0.332466 4.69979 0.70265
--4.69979 -0.332466 0.70265
-0.332466 -4.69979 0.70265
-4.47321 2.12212 0.309017
--2.12212 4.47321 0.309017
--4.47321 -2.12212 0.309017
-2.12212 -4.47321 0.309017
-3.26991 3.52624 0.587785
--3.52624 3.26991 0.587785
--3.26991 -3.52624 0.587785
-3.52624 -3.26991 0.587785
-2.6487 3.7208 0.823533
--3.7208 2.6487 0.823533
--2.6487 -3.7208 0.823533
-3.7208 -2.6487 0.823533
--0.304986 -4.97735 0.162637
-4.97735 -0.304986 0.162637
-0.304986 4.97735 0.162637
--4.97735 0.304986 0.162637
-0.237023 4.50821 0.857527
--4.50821 0.237023 0.857527
--0.237023 -4.50821 0.857527
-4.50821 -0.237023 0.857527
-1.84343 4.64234 -0.100362
--4.64234 1.84343 -0.100362
--1.84343 -4.64234 -0.100362
-4.64234 -1.84343 -0.100362
-4.65756 1.22648 0.577573
--1.22648 4.65756 0.577573
--4.65756 -1.22648 0.577573
-1.22648 -4.65756 0.577573
-4.67806 1.54017 0.379779
--1.54017 4.67806 0.379779
--4.67806 -1.54017 0.379779
-1.54017 -4.67806 0.379779
-3.81931 2.72823 -0.720309
--2.72823 3.81931 -0.720309
--3.81931 -2.72823 -0.720309
-2.72823 -3.81931 -0.720309
-2.11585 4.51555 0.162637
--4.51555 2.11585 0.162637
--2.11585 -4.51555 0.162637
-4.51555 -2.11585 0.162637
-3.39212 3.63048 0.24869
--3.63048 3.39212 0.24869
--3.39212 -3.63048 0.24869
-3.63048 -3.39212 0.24869
-1.11419 3.64618 0.982287
--3.64618 1.11419 0.982287
--1.11419 -3.64618 0.982287
-3.64618 -1.11419 0.982287
-3.53165 2.86306 -0.837528
--2.86306 3.53165 -0.837528
--3.53165 -2.86306 -0.837528
-2.86306 -3.53165 -0.837528
-4.22902 1.13924 0.925077
--1.13924 4.22902 0.925077
--4.22902 -1.13924 0.925077
-1.13924 -4.22902 0.925077
-2.39447 4.31945 -0.344643
--4.31945 2.39447 -0.344643
--2.39447 -4.31945 -0.344643
-4.31945 -2.39447 -0.344643
-3.64561 1.64606 -1
--1.64606 3.64561 -1
--3.64561 -1.64606 -1
-1.64606 -3.64561 -1
-1.54267 4.69162 -0.344643
--4.69162 1.54267 -0.344643
--1.54267 -4.69162 -0.344643
-4.69162 -1.54267 -0.344643
-4.11217 0.459742 -0.990461
--0.459742 4.11217 -0.990461
--4.11217 -0.459742 -0.990461
-0.459742 -4.11217 -0.990461
-4.2199 0.589224 0.965382
--0.589224 4.2199 0.965382
--4.2199 -0.589224 0.965382
-0.589224 -4.2199 0.965382
-4.59728 1.14412 -0.675333
--1.14412 4.59728 -0.675333
--4.59728 -1.14412 -0.675333
-1.14412 -4.59728 -0.675333
-0.0455983 4.5356 -0.844328
--4.5356 0.0455983 -0.844328
--0.0455983 -4.5356 -0.844328
-4.5356 -0.0455983 -0.844328
-3.85257 -3.18712 1.37291e-14
-3.18712 3.85257 -3.4289e-15
--3.18712 -3.85257 -1.5675e-14
--3.85257 3.18712 -1.66574e-14
-4.47375 0.517821 -0.863923
--0.517821 4.47375 -0.863923
--4.47375 -0.517821 -0.863923
-0.517821 -4.47375 -0.863923
-0.281719 4.86816 0.481754
--4.86816 0.281719 0.481754
--0.281719 -4.86816 0.481754
-4.86816 -0.281719 0.481754
-2.96991 0.466944 0.112856
--0.466944 2.96991 0.112856
--2.96991 -0.466944 0.112856
-0.466944 -2.96991 0.112856
-3.00366 0.0913713 0.100362
--0.0913713 3.00366 0.100362
--3.00366 -0.0913713 0.100362
-0.0913713 -3.00366 0.100362
--4.98411 -0.307915 -0.112856
--0.307915 4.98411 -0.112856
-4.98411 0.307915 -0.112856
-0.307915 -4.98411 -0.112856
-3.35589 3.53785 -0.481754
--3.53785 3.35589 -0.481754
--3.35589 -3.53785 -0.481754
-3.53785 -3.35589 -0.481754
-1.95383 3.67561 0.986686
--3.67561 1.95383 0.986686
--1.95383 -3.67561 0.986686
-3.67561 -1.95383 0.986686
-4.83421 0.941707 0.379779
--0.941707 4.83421 0.379779
--4.83421 -0.941707 0.379779
-0.941707 -4.83421 0.379779
-4.03502 2.93936 0.125333
--2.93936 4.03502 0.125333
--4.03502 -2.93936 0.125333
-2.93936 -4.03502 0.125333
-4.07546 2.61881 0.535827
--2.61881 4.07546 0.535827
--4.07546 -2.61881 0.535827
-2.61881 -4.07546 0.535827
-4.95024 0.632314 0.13779
--0.632314 4.95024 0.13779
--4.95024 -0.632314 0.13779
-0.632314 -4.95024 0.13779
-4.40988 1.70765 -0.684547
--1.70765 4.40988 -0.684547
--4.40988 -1.70765 -0.684547
-1.70765 -4.40988 -0.684547
-3.39393 2.53558 0.971632
--2.53558 3.39393 0.971632
--3.39393 -2.53558 0.971632
-2.53558 -3.39393 0.971632
-0.332518 4.72583 -0.675333
--4.72583 0.332518 -0.675333
--0.332518 -4.72583 -0.675333
-4.72583 -0.332518 -0.675333
-3.1622 0.480089 0.597905
--0.480089 3.1622 0.597905
--3.1622 -0.480089 0.597905
-0.480089 -3.1622 0.597905
-0.858691 4.21037 -0.954865
--4.21037 0.858691 -0.954865
--0.858691 -4.21037 -0.954865
-4.21037 -0.858691 -0.954865
-3.23505 2.59978 -0.988652
--2.59978 3.23505 -0.988652
--3.23505 -2.59978 -0.988652
-2.59978 -3.23505 -0.988652
-0.466803 2.97144 -0.125333
--2.97144 0.466803 -0.125333
--0.466803 -2.97144 -0.125333
-2.97144 -0.466803 -0.125333
-3.66313 2.07905 0.977268
--2.07905 3.66313 0.977268
--3.66313 -2.07905 0.977268
-2.07905 -3.66313 0.977268
-1.47775 3.89151 0.986686
--3.89151 1.47775 0.986686
--1.47775 -3.89151 0.986686
-3.89151 -1.47775 0.986686
-1.65186 2.84348 -0.70265
--2.84348 1.65186 -0.70265
--1.65186 -2.84348 -0.70265
-2.84348 -1.65186 -0.70265
-1.22648 4.65756 -0.577573
--4.65756 1.22648 -0.577573
--1.22648 -4.65756 -0.577573
-4.65756 -1.22648 -0.577573
-4.52369 2.12521 -0.0627905
--2.12521 4.52369 -0.0627905
--4.52369 -2.12521 -0.0627905
-2.12521 -4.52369 -0.0627905
-4.59557 0.621672 0.770513
--0.621672 4.59557 0.770513
--4.59557 -0.621672 0.770513
-0.621672 -4.59557 0.770513
-1.88826 3.88652 -0.947098
--3.88652 1.88826 -0.947098
--1.88826 -3.88652 -0.947098
-3.88652 -1.88826 -0.947098
-3.46563 3.2048 -0.693653
--3.2048 3.46563 -0.693653
--3.46563 -3.2048 -0.693653
-3.2048 -3.46563 -0.693653
-3.64257 2.70285 0.844328
--2.70285 3.64257 0.844328
--3.64257 -2.70285 0.844328
-2.70285 -3.64257 0.844328
-2.8215 1.45913 -0.567269
--1.45913 2.8215 -0.567269
--2.8215 -1.45913 -0.567269
-1.45913 -2.8215 -0.567269
-3.80492 -3.16789 -0.309017
-3.16789 3.80492 -0.309017
--3.16789 -3.80492 -0.309017
--3.80492 3.16789 -0.309017
--4.95103 0.0155542 -0.309017
-0.0155542 4.95103 -0.309017
-4.95103 -0.0155542 -0.309017
--0.0155542 -4.95103 -0.309017
-2.12848 2.13598 -0.175023
--2.13598 2.12848 -0.175023
--2.12848 -2.13598 -0.175023
-2.13598 -2.12848 -0.175023
-0.635645 4.84074 -0.470704
--4.84074 0.635645 -0.470704
--0.635645 -4.84074 -0.470704
-4.84074 -0.635645 -0.470704
-2.866 3.89714 -0.546394
--3.89714 2.866 -0.546394
--2.866 -3.89714 -0.546394
-3.89714 -2.866 -0.546394
-0.900655 4.48809 -0.816339
--4.48809 0.900655 -0.816339
--0.900655 -4.48809 -0.816339
-4.48809 -0.900655 -0.816339
-2.38097 1.85407 -0.187381
--1.85407 2.38097 -0.187381
--2.38097 -1.85407 -0.187381
-1.85407 -2.38097 -0.187381
-3.1089 3.3738 0.809017
--3.3738 3.1089 0.809017
--3.1089 -3.3738 0.809017
-3.3738 -3.1089 0.809017
-3.92045 0.181922 -0.997159
--0.181922 3.92045 -0.997159
--3.92045 -0.181922 -0.997159
-0.181922 -3.92045 -0.997159
-3.04625 1.84784 -0.899405
--1.84784 3.04625 -0.899405
--3.04625 -1.84784 -0.899405
-1.84784 -3.04625 -0.899405
-0.800838 3.8549 -0.998027
--3.8549 0.800838 -0.998027
--0.800838 -3.8549 -0.998027
-3.8549 -0.800838 -0.998027
-2.38442 3.65993 -0.929776
--3.65993 2.38442 -0.929776
--2.38442 -3.65993 -0.929776
-3.65993 -2.38442 -0.929776
-2.30567 4.11889 -0.693653
--4.11889 2.30567 -0.693653
--2.30567 -4.11889 -0.693653
-4.11889 -2.30567 -0.693653
-3.36279 0.786803 -0.837528
--0.786803 3.36279 -0.837528
--3.36279 -0.786803 -0.837528
-0.786803 -3.36279 -0.837528
-3.76039 1.03279 0.994951
--1.03279 3.76039 0.994951
--3.76039 -1.03279 0.994951
-1.03279 -3.76039 0.994951
-1.74858 4.49544 0.567269
--4.49544 1.74858 0.567269
--1.74858 -4.49544 0.567269
-4.49544 -1.74858 0.567269
-1.40652 2.79597 -0.492727
--2.79597 1.40652 -0.492727
--1.40652 -2.79597 -0.492727
-2.79597 -1.40652 -0.492727
-2.82737 2.42835 0.962028
--2.42835 2.82737 0.962028
--2.82737 -2.42835 0.962028
-2.42835 -2.82737 0.962028
-2.84555 3.35983 -0.915241
--3.35983 2.84555 -0.915241
--2.84555 -3.35983 -0.915241
-3.35983 -2.84555 -0.915241
-0.943184 4.88429 -0.224271
--4.88429 0.943184 -0.224271
--0.943184 -4.88429 -0.224271
-4.88429 -0.943184 -0.224271
-0.0149435 -4.95484 0.297042
-4.95484 0.0149435 0.297042
--0.0149435 4.95484 0.297042
--4.95484 -0.0149435 0.297042
-4.33619 2.36401 -0.344643
--2.36401 4.33619 -0.344643
--4.33619 -2.36401 -0.344643
-2.36401 -4.33619 -0.344643
-3.81931 3.13784 -0.33282
--3.13784 3.81931 -0.33282
--3.81931 -3.13784 -0.33282
-3.13784 -3.81931 -0.33282
-4.22166 2.67542 -0.0627905
--2.67542 4.22166 -0.0627905
--4.22166 -2.67542 -0.0627905
-2.67542 -4.22166 -0.0627905
-4.67972 0.926271 0.637424
--0.926271 4.67972 0.637424
--4.67972 -0.926271 0.637424
-0.926271 -4.67972 0.637424
-3.95937 2.84636 -0.481754
--2.84636 3.95937 -0.481754
--3.95937 -2.84636 -0.481754
-2.84636 -3.95937 -0.481754
-3.41609 3.25756 0.693653
--3.25756 3.41609 0.693653
--3.41609 -3.25756 0.693653
-3.25756 -3.41609 0.693653
-4.60774 0.04227 0.79399
--0.04227 4.60774 0.79399
--4.60774 -0.04227 0.79399
-0.04227 -4.60774 0.79399
-1.76851 4.36703 -0.70265
--4.36703 1.76851 -0.70265
--1.76851 -4.36703 -0.70265
-4.36703 -1.76851 -0.70265
-4.05819 2.53765 -0.61786
--2.53765 4.05819 -0.61786
--4.05819 -2.53765 -0.61786
-2.53765 -4.05819 -0.61786
-1.9067 3.33014 -0.986686
--3.33014 1.9067 -0.986686
--1.9067 -3.33014 -0.986686
-3.33014 -1.9067 -0.986686
-2.16269 2.14914 0.309017
--2.14914 2.16269 0.309017
--2.16269 -2.14914 0.309017
-2.14914 -2.16269 0.309017
-0.310876 3.91234 -0.997159
--3.91234 0.310876 -0.997159
--0.310876 -3.91234 -0.997159
-3.91234 -0.310876 -0.997159
-0.0903738 3.00818 -0.13779
--3.00818 0.0903738 -0.13779
--0.0903738 -3.00818 -0.13779
-3.00818 -0.0903738 -0.13779
-2.79383 2.12026 0.870184
--2.12026 2.79383 0.870184
--2.79383 -2.12026 0.870184
-2.12026 -2.79383 0.870184
-4.04978 0.0615828 0.998737
--0.0615828 4.04978 0.998737
--4.04978 -0.0615828 0.998737
-0.0615828 -4.04978 0.998737
-3.55765 1.33616 -0.979855
--1.33616 3.55765 -0.979855
--3.55765 -1.33616 -0.979855
-1.33616 -3.55765 -0.979855
-1.83366 2.65844 0.637424
--2.65844 1.83366 0.637424
--1.83366 -2.65844 0.637424
-2.65844 -1.83366 0.637424
-4.24737 1.43039 0.876307
--1.43039 4.24737 0.876307
--4.24737 -1.43039 0.876307
-1.43039 -4.24737 0.876307
-3.28451 1.46665 -0.915241
--1.46665 3.28451 -0.915241
--3.28451 -1.46665 -0.915241
-1.46665 -3.28451 -0.915241
-3.33222 2.82433 0.929776
--2.82433 3.33222 0.929776
--3.33222 -2.82433 0.929776
-2.82433 -3.33222 0.929776
-3.97823 2.13397 -0.857527
--2.13397 3.97823 -0.857527
--3.97823 -2.13397 -0.857527
-2.13397 -3.97823 -0.857527
-3.01256 2.90838 0.982287
--2.90838 3.01256 0.982287
--3.01256 -2.90838 0.982287
-2.90838 -3.01256 0.982287
-2.94904 3.05852 -0.968583
--3.05852 2.94904 -0.968583
--2.94904 -3.05852 -0.968583
-3.05852 -2.94904 -0.968583
-2.06781 3.6412 -0.982287
--3.6412 2.06781 -0.982287
--2.06781 -3.6412 -0.982287
-3.6412 -2.06781 -0.982287
-1.44494 4.29952 -0.844328
--4.29952 1.44494 -0.844328
--1.44494 -4.29952 -0.844328
-4.29952 -1.44494 -0.844328
-3.9019 2.52394 0.762443
--2.52394 3.9019 0.762443
--3.9019 -2.52394 0.762443
-2.52394 -3.9019 0.762443
-1.38367 4.39528 0.79399
--4.39528 1.38367 0.79399
--1.38367 -4.39528 0.79399
-4.39528 -1.38367 0.79399
-2.52177 3.37367 -0.977268
--3.37367 2.52177 -0.977268
--2.52177 -3.37367 -0.977268
-3.37367 -2.52177 -0.977268
-0.482522 4.25777 0.958522
--4.25777 0.482522 0.958522
--0.482522 -4.25777 0.958522
-4.25777 -0.482522 0.958522
-4.71352 1.51516 -0.309017
-1.51516 4.71352 0.309017
--1.51516 4.71352 -0.309017
--4.71352 1.51516 0.309017
--4.71352 -1.51516 -0.309017
--1.51516 -4.71352 0.309017
-1.51516 -4.71352 -0.309017
-4.71352 -1.51516 0.309017
-1.16903 4.67231 0.577573
--4.67231 1.16903 0.577573
--1.16903 -4.67231 0.577573
-4.67231 -1.16903 0.577573
-0.826551 4.55328 0.778462
--4.55328 0.826551 0.778462
--0.826551 -4.55328 0.778462
-4.55328 -0.826551 0.778462
-3.96389 1.80718 -0.934329
--1.80718 3.96389 -0.934329
--3.96389 -1.80718 -0.934329
-1.80718 -3.96389 -0.934329
-4.33249 0.0533575 0.942991
--0.0533575 4.33249 0.942991
--4.33249 -0.0533575 0.942991
-0.0533575 -4.33249 0.942991
-3.59633 0.297594 0.920232
--0.297594 3.59633 0.920232
--3.59633 -0.297594 0.920232
-0.297594 -3.59633 0.920232
-3.03059 0.491717 -0.368125
--0.491717 3.03059 -0.368125
--3.03059 -0.491717 -0.368125
-0.491717 -3.03059 -0.368125
-1.19226 2.75325 0.0251301
--2.75325 1.19226 0.0251301
--1.19226 -2.75325 0.0251301
-2.75325 -1.19226 0.0251301
-2.75497 1.19465 -0.0753268
--1.19465 2.75497 -0.0753268
--2.75497 -1.19465 -0.0753268
-1.19465 -2.75497 -0.0753268
-3.98617 1.63647 0.951057
--1.63647 3.98617 0.951057
--3.98617 -1.63647 0.951057
-1.63647 -3.98617 0.951057
-3.09559 2.33032 0.992115
--2.33032 3.09559 0.992115
--3.09559 -2.33032 0.992115
-2.33032 -3.09559 0.992115
-3.50435 2.15293 -0.993611
--2.15293 3.50435 -0.993611
--3.50435 -2.15293 -0.993611
-2.15293 -3.50435 -0.993611
-4.3116 0.769813 -0.925077
--0.769813 4.3116 -0.925077
--4.3116 -0.769813 -0.925077
-0.769813 -4.3116 -0.925077
-3.31916 1.90096 0.984564
--1.90096 3.31916 0.984564
--3.31916 -1.90096 0.984564
-1.90096 -3.31916 0.984564
-4.19446 1.6097 -0.870184
--1.6097 4.19446 -0.870184
--4.19446 -1.6097 -0.870184
-1.6097 -4.19446 -0.870184
-2.02191 2.90628 0.888136
--2.90628 2.02191 0.888136
--2.02191 -2.90628 0.888136
-2.90628 -2.02191 0.888136
-2.49502 1.68966 0.162637
--1.68966 2.49502 0.162637
--2.49502 -1.68966 0.162637
-1.68966 -2.49502 0.162637
-1.09732 4.04105 -0.982287
--4.04105 1.09732 -0.982287
--1.09732 -4.04105 -0.982287
-4.04105 -1.09732 -0.982287
-0.303925 3.07491 0.414376
--3.07491 0.303925 0.414376
--0.303925 -3.07491 0.414376
-3.07491 -0.303925 0.414376
-0.603313 4.37295 -0.910106
--4.37295 0.603313 -0.910106
--0.603313 -4.37295 -0.910106
-4.37295 -0.603313 -0.910106
-1.24145 4.8427 0.0376902
--4.8427 1.24145 0.0376902
--1.24145 -4.8427 0.0376902
-4.8427 -1.24145 0.0376902
-0.319188 4.9834 -0.112856
--4.9834 0.319188 -0.112856
--0.319188 -4.9834 -0.112856
-4.9834 -0.319188 -0.112856
-4.55342 1.77772 -0.45958
--1.77772 4.55342 -0.45958
--4.55342 -1.77772 -0.45958
-1.77772 -4.55342 -0.45958
-3.96889 2.90802 0.391374
--2.90802 3.96889 0.391374
--3.96889 -2.90802 0.391374
-2.90802 -3.96889 0.391374
-3.70379 3.10107 0.556876
--3.10107 3.70379 0.556876
--3.70379 -3.10107 0.556876
-3.10107 -3.70379 0.556876
-4.47186 1.19081 0.778462
--1.19081 4.47186 0.778462
--4.47186 -1.19081 0.778462
-1.19081 -4.47186 0.778462
-1.60355 3.89482 -0.977268
--3.89482 1.60355 -0.977268
--1.60355 -3.89482 -0.977268
-3.89482 -1.60355 -0.977268
-4.15033 0.319817 0.986686
--0.319817 4.15033 0.986686
--4.15033 -0.319817 0.986686
-0.319817 -4.15033 0.986686
-2.48924 2.90416 -0.984564
--2.90416 2.48924 -0.984564
--2.48924 -2.90416 -0.984564
-2.90416 -2.48924 -0.984564
-1.54379 2.62922 -0.309017
--2.62922 1.54379 -0.309017
--1.54379 -2.62922 -0.309017
-2.62922 -1.54379 -0.309017
-3.72468 0.539177 0.971632
--0.539177 3.72468 0.971632
--3.72468 -0.539177 0.971632
-0.539177 -3.72468 0.971632
-2.11399 2.43091 -0.627691
--2.43091 2.11399 -0.627691
--2.11399 -2.43091 -0.627691
-2.43091 -2.11399 -0.627691
-2.93529 3.20312 0.938734
--3.20312 2.93529 0.938734
--2.93529 -3.20312 0.938734
-3.20312 -2.93529 0.938734
-1.03572 4.24356 0.929776
--4.24356 1.03572 0.929776
--1.03572 -4.24356 0.929776
-4.24356 -1.03572 0.929776
-2.50903 1.97158 -0.587785
--1.97158 2.50903 -0.587785
--2.50903 -1.97158 -0.587785
-1.97158 -2.50903 -0.587785
-2.36596 3.14704 -0.998027
--3.14704 2.36596 -0.998027
--2.36596 -3.14704 -0.998027
-3.14704 -2.36596 -0.998027
-3.67339 0.87312 -0.974527
--0.87312 3.67339 -0.974527
--3.67339 -0.87312 -0.974527
-0.87312 -3.67339 -0.974527
-3.75069 0.0683497 0.968583
--0.0683497 3.75069 0.968583
--3.75069 -0.0683497 0.968583
-0.0683497 -3.75069 0.968583
-3.27101 1.14062 0.844328
--1.14062 3.27101 0.844328
--3.27101 -1.14062 0.844328
-1.14062 -3.27101 0.844328
-2.4961 3.52704 0.947098
--3.52704 2.4961 0.947098
--2.4961 -3.52704 0.947098
-3.52704 -2.4961 0.947098
-3.77817 0.409427 -0.979855
--0.409427 3.77817 -0.979855
--3.77817 -0.409427 -0.979855
-0.409427 -3.77817 -0.979855
-4.08057 1.26771 -0.962028
--1.26771 4.08057 -0.962028
--4.08057 -1.26771 -0.962028
-1.26771 -4.08057 -0.962028
-1.52039 3.05477 -0.809017
--3.05477 1.52039 -0.809017
--1.52039 -3.05477 -0.809017
-3.05477 -1.52039 -0.809017
-2.96927 1.08843 -0.546394
--1.08843 2.96927 -0.546394
--2.96927 -1.08843 -0.546394
-1.08843 -2.96927 -0.546394
-3.5545 1.47861 0.988652
--1.47861 3.5545 0.988652
--3.5545 -1.47861 0.988652
-1.47861 -3.5545 0.988652
-3.25725 1.21027 -0.850994
--1.21027 3.25725 -0.850994
--3.25725 -1.21027 -0.850994
-1.21027 -3.25725 -0.850994
-1.49595 3.60129 -0.994951
--3.60129 1.49595 -0.994951
--1.49595 -3.60129 -0.994951
-3.60129 -1.49595 -0.994951
-0.35913 3.43488 0.837528
--3.43488 0.35913 0.837528
--0.35913 -3.43488 0.837528
-3.43488 -0.35913 0.837528
-4.88851 0.921078 -0.224271
--0.921078 4.88851 -0.224271
--4.88851 -0.921078 -0.224271
-0.921078 -4.88851 -0.224271
-0.909745 4.85855 0.33282
--4.85855 0.909745 0.33282
--0.909745 -4.85855 0.33282
-4.85855 -0.909745 0.33282
-4.85893 0.33084 0.492727
--0.33084 4.85893 0.492727
--4.85893 -0.33084 0.492727
-0.33084 -4.85893 0.492727
-4.35098 2.01279 -0.60793
--2.01279 4.35098 -0.60793
--4.35098 -2.01279 -0.60793
-2.01279 -4.35098 -0.60793
-0.26027 4.71313 0.693653
--4.71313 0.26027 0.693653
--0.26027 -4.71313 0.693653
-4.71313 -0.26027 0.693653
-4.40444 1.08379 -0.844328
--1.08379 4.40444 -0.844328
--4.40444 -1.08379 -0.844328
-1.08379 -4.40444 -0.844328
-1.91417 4.16938 0.809017
--4.16938 1.91417 0.809017
--1.91417 -4.16938 0.809017
-4.16938 -1.91417 0.809017
-1.98054 4.10397 -0.830596
--4.10397 1.98054 -0.830596
--1.98054 -4.10397 -0.830596
-4.10397 -1.98054 -0.830596
-0.290413 3.43085 -0.830596
--3.43085 0.290413 -0.830596
--0.290413 -3.43085 -0.830596
-3.43085 -0.290413 -0.830596
-1.98427 2.25014 0.012566
--2.25014 1.98427 0.012566
--1.98427 -2.25014 0.012566
-2.25014 -1.98427 0.012566
-0.17555 3.84577 0.988652
--3.84577 0.17555 0.988652
--0.17555 -3.84577 0.988652
-3.84577 -0.17555 0.988652
-3.60312 0.615788 -0.938734
--0.615788 3.60312 -0.938734
--3.60312 -0.615788 -0.938734
-0.615788 -3.60312 -0.938734
-2.1599 3.51471 0.992115
--3.51471 2.1599 0.992115
--2.1599 -3.51471 0.992115
-3.51471 -2.1599 0.992115
-1.80252 3.41578 0.990461
--3.41578 1.80252 0.990461
--1.80252 -3.41578 0.990461
-3.41578 -1.80252 0.990461
-0.690374 3.95273 0.999921
--3.95273 0.690374 0.999921
--0.690374 -3.95273 0.999921
-3.95273 -0.690374 0.999921
-0.546895 3.79819 -0.986686
--3.79819 0.546895 -0.986686
--0.546895 -3.79819 -0.986686
-3.79819 -0.546895 -0.986686
-3.47404 0.0737899 0.850994
--0.0737899 3.47404 0.850994
--3.47404 -0.0737899 0.850994
-0.0737899 -3.47404 0.850994
-2.75134 2.67497 0.986686
--2.67497 2.75134 0.986686
--2.75134 -2.67497 0.986686
-2.67497 -2.75134 0.986686
-2.77527 2.86313 -0.999921
--2.86313 2.77527 -0.999921
--2.77527 -2.86313 -0.999921
-2.86313 -2.77527 -0.999921
-1.20543 3.90608 0.996134
--3.90608 1.20543 0.996134
--1.20543 -3.90608 0.996134
-3.90608 -1.20543 0.996134
-3.3072 0.34032 -0.737513
--0.34032 3.3072 -0.737513
--3.3072 -0.34032 -0.737513
-0.34032 -3.3072 -0.737513
-3.2855 2.00655 -0.988652
--2.00655 3.2855 -0.988652
--3.2855 -2.00655 -0.988652
-2.00655 -3.2855 -0.988652
-3.06147 1.59837 -0.837528
--1.59837 3.06147 -0.837528
--3.06147 -1.59837 -0.837528
-1.59837 -3.06147 -0.837528
-1.37476 3.64928 0.994951
--3.64928 1.37476 0.994951
--1.37476 -3.64928 0.994951
-3.64928 -1.37476 0.994951
-2.97147 1.71873 0.823533
--1.71873 2.97147 0.823533
--2.97147 -1.71873 0.823533
-1.71873 -2.97147 0.823533
-0.856983 2.91825 0.285019
--2.91825 0.856983 0.285019
--0.856983 -2.91825 0.285019
-2.91825 -0.856983 0.285019
-2.54222 3.16913 0.998027
--3.16913 2.54222 0.998027
--2.54222 -3.16913 0.998027
-3.16913 -2.54222 0.998027
-0.65531 2.97379 -0.297042
--2.97379 0.65531 -0.297042
--0.65531 -2.97379 -0.297042
-2.97379 -0.65531 -0.297042
-1.65386 3.35351 -0.965382
--3.35351 1.65386 -0.965382
--1.65386 -3.35351 -0.965382
-3.35351 -1.65386 -0.965382
-1.15634 3.32279 -0.876307
--3.32279 1.15634 -0.876307
--1.15634 -3.32279 -0.876307
-3.32279 -1.15634 -0.876307
-2.07375 3.14062 -0.971632
--3.14062 2.07375 -0.971632
--2.07375 -3.14062 -0.971632
-3.14062 -2.07375 -0.971632
-2.37725 2.33755 0.745941
--2.33755 2.37725 0.745941
--2.37725 -2.33755 0.745941
-2.33755 -2.37725 0.745941
-1.90732 2.86657 -0.830596
--2.86657 1.90732 -0.830596
--1.90732 -2.86657 -0.830596
-2.86657 -1.90732 -0.830596
-0.622572 4.95823 0.0753268
--4.95823 0.622572 0.0753268
--0.622572 -4.95823 0.0753268
-4.95823 -0.622572 0.0753268
-4.35905 2.40783 0.19971
--2.40783 4.35905 0.19971
--4.35905 -2.40783 0.19971
-2.40783 -4.35905 0.19971
-2.07435 4.45608 0.402906
--4.45608 2.07435 0.402906
--2.07435 -4.45608 0.402906
-4.45608 -2.07435 0.402906
-4.74032 1.19301 -0.45958
--1.19301 4.74032 -0.45958
--4.74032 -1.19301 -0.45958
-1.19301 -4.74032 -0.45958
-0.577118 4.796 0.556876
--4.796 0.577118 0.556876
--0.577118 -4.796 0.556876
-4.796 -0.577118 0.556876
-2.9815 3.53924 -0.778462
--3.53924 2.9815 -0.778462
--2.9815 -3.53924 -0.778462
-3.53924 -2.9815 -0.778462
-3.92577 0.94406 -0.999289
--0.94406 3.92577 -0.999289
--3.92577 -0.94406 -0.999289
-0.94406 -3.92577 -0.999289
-4.22221 0.860554 0.951057
--0.860554 4.22221 0.951057
--4.22221 -0.860554 0.951057
-0.860554 -4.22221 0.951057
-3.97261 0.564876 0.999921
--0.564876 3.97261 0.999921
--3.97261 -0.564876 0.999921
-0.564876 -3.97261 0.999921
-3.02695 2.41881 -0.992115
--2.41881 3.02695 -0.992115
--3.02695 -2.41881 -0.992115
-2.41881 -3.02695 -0.992115
-2.8618 1.22222 0.45958
--1.22222 2.8618 0.45958
--2.8618 -1.22222 0.45958
-1.22222 -2.8618 0.45958
-1.54598 2.60066 0.224271
--2.60066 1.54598 0.224271
--1.54598 -2.60066 0.224271
-2.60066 -1.54598 0.224271
-1.78166 2.94632 0.830596
--2.94632 1.78166 0.830596
--1.78166 -2.94632 0.830596
-2.94632 -1.78166 0.830596
-3.4402 0.141877 -0.830596
--0.141877 3.4402 -0.830596
--3.4402 -0.141877 -0.830596
-0.141877 -3.4402 -0.830596
-2.97013 0.654896 0.285019
--0.654896 2.97013 0.285019
--2.97013 -0.654896 0.285019
-0.654896 -2.97013 0.285019
-2.79577 1.68152 -0.675333
--1.68152 2.79577 -0.675333
--2.79577 -1.68152 -0.675333
-1.68152 -2.79577 -0.675333
-0.866556 3.64985 0.968583
--3.64985 0.866556 0.968583
--0.866556 -3.64985 0.968583
-3.64985 -0.866556 0.968583
-2.94852 0.665689 -0.212007
--0.665689 2.94852 -0.212007
--2.94852 -0.665689 -0.212007
-0.665689 -2.94852 -0.212007
-1.24892 3.62844 -0.986686
--3.62844 1.24892 -0.986686
--1.24892 -3.62844 -0.986686
-3.62844 -1.24892 -0.986686
-0.727081 3.41994 -0.863923
--3.41994 0.727081 -0.863923
--0.727081 -3.41994 -0.863923
-3.41994 -0.727081 -0.863923
-0.300126 3.65488 -0.942991
--3.65488 0.300126 -0.942991
--0.300126 -3.65488 -0.942991
-3.65488 -0.300126 -0.942991
-2.28622 2.02941 -0.33282
--2.02941 2.28622 -0.33282
--2.28622 -2.02941 -0.33282
-2.02941 -2.28622 -0.33282
-0.135181 3.35986 0.770513
--3.35986 0.135181 0.770513
--0.135181 -3.35986 0.770513
-3.35986 -0.135181 0.770513
-3.4374 0.508621 0.850994
--0.508621 3.4374 0.850994
--3.4374 -0.508621 0.850994
-0.508621 -3.4374 0.850994
-2.17893 3.11359 0.979855
--3.11359 2.17893 0.979855
--2.17893 -3.11359 0.979855
-3.11359 -2.17893 0.979855
-3.04557 2.12734 -0.958522
--2.12734 3.04557 -0.958522
--3.04557 -2.12734 -0.958522
-2.12734 -3.04557 -0.958522
-2.25808 2.61313 -0.837528
--2.61313 2.25808 -0.837528
--2.25808 -2.61313 -0.837528
-2.61313 -2.25808 -0.837528
-2.5887 2.23867 0.816339
--2.23867 2.5887 0.816339
--2.5887 -2.23867 0.816339
-2.23867 -2.5887 0.816339
-0.775703 3.32287 0.809017
--3.32287 0.775703 0.809017
--0.775703 -3.32287 0.809017
-3.32287 -0.775703 0.809017
-3.66367 0.160318 -0.942991
--0.160318 3.66367 -0.942991
--3.66367 -0.160318 -0.942991
-0.160318 -3.66367 -0.942991
-0.67535 3.11121 -0.577573
--3.11121 0.67535 -0.577573
--0.67535 -3.11121 -0.577573
-3.11121 -0.67535 -0.577573
-3.73194 0.780187 0.982287
--0.780187 3.73194 0.982287
--3.73194 -0.780187 0.982287
-0.780187 -3.73194 0.982287
-1.18213 3.19011 0.801567
--3.19011 1.18213 0.801567
--1.18213 -3.19011 0.801567
-3.19011 -1.18213 0.801567
-2.61639 1.558 -0.297042
--1.558 2.61639 -0.297042
--2.61639 -1.558 -0.297042
-1.558 -2.61639 -0.297042
-2.31691 2.57535 0.844328
--2.57535 2.31691 0.844328
--2.31691 -2.57535 0.844328
-2.57535 -2.31691 0.844328
-0.104321 3.03969 0.285019
--3.03969 0.104321 0.285019
--0.104321 -3.03969 0.285019
-3.03969 -0.104321 0.285019
-4.8423 1.24459 0.0251301
--1.24459 4.8423 0.0251301
--4.8423 -1.24459 0.0251301
-1.24459 -4.8423 0.0251301
-3.64339 3.41276 -0.125333
--3.41276 3.64339 -0.125333
--3.64339 -3.41276 -0.125333
-3.41276 -3.64339 -0.125333
-2.10236 4.41293 -0.45958
--4.41293 2.10236 -0.45958
--2.10236 -4.41293 -0.45958
-4.41293 -2.10236 -0.45958
-2.58835 4.12542 0.492727
--4.12542 2.58835 0.492727
--2.58835 -4.12542 0.492727
-4.12542 -2.58835 0.492727
-2.2649 4.1894 0.647056
--4.1894 2.2649 0.647056
--2.2649 -4.1894 0.647056
-4.1894 -2.2649 0.647056
-1.57338 4.11218 0.915241
--4.11218 1.57338 0.915241
--1.57338 -4.11218 0.915241
-4.11218 -1.57338 0.915241
-1.19654 4.50023 -0.754251
--4.50023 1.19654 -0.754251
--1.19654 -4.50023 -0.754251
-4.50023 -1.19654 -0.754251
-2.78437 3.76726 -0.728969
--3.76726 2.78437 -0.728969
--2.78437 -3.76726 -0.728969
-3.76726 -2.78437 -0.728969
-3.70613 2.28974 -0.934329
--2.28974 3.70613 -0.934329
--3.70613 -2.28974 -0.934329
-2.28974 -3.70613 -0.934329
-2.84428 1.03128 -0.224271
--1.03128 2.84428 -0.224271
--2.84428 -1.03128 -0.224271
-1.03128 -2.84428 -0.224271
-4.00478 1.08909 0.988652
--1.08909 4.00478 0.988652
--4.00478 -1.08909 0.988652
-1.08909 -4.00478 0.988652
-4.08735 0.719709 -0.988652
--0.719709 4.08735 -0.988652
--4.08735 -0.719709 -0.988652
-0.719709 -4.08735 -0.988652
-0.319817 4.15033 -0.986686
--4.15033 0.319817 -0.986686
--0.319817 -4.15033 -0.986686
-4.15033 -0.319817 -0.986686
-3.53506 1.87172 -1
--1.87172 3.53506 -1
--3.53506 -1.87172 -1
-1.87172 -3.53506 -1
-3.73616 1.28127 0.998737
--1.28127 3.73616 0.998737
--3.73616 -1.28127 0.998737
-1.28127 -3.73616 0.998737
-2.73776 2.47549 -0.951057
--2.47549 2.73776 -0.951057
--2.73776 -2.47549 -0.951057
-2.47549 -2.73776 -0.951057
-3.33923 1.39842 0.925077
--1.39842 3.33923 0.925077
--3.33923 -1.39842 0.925077
-1.39842 -3.33923 0.925077
-2.79105 1.62469 0.637424
--1.62469 2.79105 0.637424
--2.79105 -1.62469 0.637424
-1.62469 -2.79105 0.637424
-0.483537 2.99924 0.272952
--2.99924 0.483537 0.272952
--0.483537 -2.99924 0.272952
-2.99924 -0.483537 0.272952
-1.01533 2.83134 -0.125333
--2.83134 1.01533 -0.125333
--1.01533 -2.83134 -0.125333
-2.83134 -1.01533 -0.125333
-0.728468 3.15454 0.647056
--3.15454 0.728468 0.647056
--0.728468 -3.15454 0.647056
-3.15454 -0.728468 0.647056
-1.28461 3.43482 0.942991
--3.43482 1.28461 0.942991
--1.28461 -3.43482 0.942991
-3.43482 -1.28461 0.942991
-1.46279 2.82771 0.577573
--2.82771 1.46279 0.577573
--1.46279 -2.82771 0.577573
-2.82771 -1.46279 0.577573
-3.52239 0.97695 0.938734
--0.97695 3.52239 0.938734
--3.52239 -0.97695 0.938734
-0.97695 -3.52239 0.938734
-2.99187 1.49237 0.754251
--1.49237 2.99187 0.754251
--2.99187 -1.49237 0.754251
-1.49237 -2.99187 0.754251
-3.2701 0.0780921 0.684547
--0.0780921 3.2701 0.684547
--3.2701 -0.0780921 0.684547
-0.0780921 -3.2701 0.684547
-3.12261 0.0824228 0.481754
--0.0824228 3.12261 0.481754
--3.12261 -0.0824228 0.481754
-0.0824228 -3.12261 0.481754
-1.05996 3.00203 -0.577573
--3.00203 1.05996 -0.577573
--1.05996 -3.00203 -0.577573
-3.00203 -1.05996 -0.577573
-0.280087 3.17132 -0.577573
--3.17132 0.280087 -0.577573
--0.280087 -3.17132 -0.577573
-3.17132 -0.280087 -0.577573
-2.01636 2.3034 -0.344643
--2.3034 2.01636 -0.344643
--2.01636 -2.3034 -0.344643
-2.3034 -2.01636 -0.344643
-2.99511 1.05794 0.567269
--1.05794 2.99511 0.567269
--2.99511 -1.05794 0.567269
-1.05794 -2.99511 0.567269
-2.48387 2.74633 0.954865
--2.74633 2.48387 0.954865
--2.48387 -2.74633 0.954865
-2.74633 -2.48387 0.954865
-0.0729439 3.51749 -0.876307
--3.51749 0.0729439 -0.876307
--0.0729439 -3.51749 -0.876307
-3.51749 -0.0729439 -0.876307
-3.06304 0.702071 -0.51444
--0.702071 3.06304 -0.51444
--3.06304 -0.702071 -0.51444
-0.702071 -3.06304 -0.51444
-0.395239 3.6818 0.954865
--3.6818 0.395239 0.954865
--0.395239 -3.6818 0.954865
-3.6818 -0.395239 0.954865
-0.947947 3.16754 0.720309
--3.16754 0.947947 0.720309
--0.947947 -3.16754 0.720309
-3.16754 -0.947947 0.720309
-1.68735 3.21611 0.929776
--3.21611 1.68735 0.929776
--1.68735 -3.21611 0.929776
-3.21611 -1.68735 0.929776
-0.514284 3.1274 0.556876
--3.1274 0.514284 0.556876
--0.514284 -3.1274 0.556876
-3.1274 -0.514284 0.556876
-2.67766 1.36137 0.0878512
--1.36137 2.67766 0.0878512
--2.67766 -1.36137 0.0878512
-1.36137 -2.67766 0.0878512
-3.3453 0.561348 -0.79399
--0.561348 3.3453 -0.79399
--3.3453 -0.561348 -0.79399
-0.561348 -3.3453 -0.79399
-2.62585 1.76242 0.546394
--1.76242 2.62585 0.546394
--2.62585 -1.76242 0.546394
-1.76242 -2.62585 0.546394
-1.90779 2.4373 0.425779
--2.4373 1.90779 0.425779
--1.90779 -2.4373 0.425779
-2.4373 -1.90779 0.425779
-0.329838 3.2373 0.666012
--3.2373 0.329838 0.666012
--0.329838 -3.2373 0.666012
-3.2373 -0.329838 0.666012
-2.68409 2.12336 -0.816339
--2.12336 2.68409 -0.816339
--2.68409 -2.12336 -0.816339
-2.12336 -2.68409 -0.816339
-1.06125 2.90755 0.425779
--2.90755 1.06125 0.425779
--1.06125 -2.90755 0.425779
-2.90755 -1.06125 0.425779
-2.87978 1.02576 0.33282
--1.02576 2.87978 0.33282
--2.87978 -1.02576 0.33282
-1.02576 -2.87978 0.33282
-2.89474 4.01177 0.320944
--4.01177 2.89474 0.320944
--2.89474 -4.01177 0.320944
-4.01177 -2.89474 0.320944
-2.07044 3.87265 0.920232
--3.87265 2.07044 0.920232
--2.07044 -3.87265 0.920232
-3.87265 -2.07044 0.920232
-2.84882 3.51589 0.850994
--3.51589 2.84882 0.850994
--2.84882 -3.51589 0.850994
-3.51589 -2.84882 0.850994
-4.14192 1.99629 0.801567
--1.99629 4.14192 0.801567
--4.14192 -1.99629 0.801567
-1.99629 -4.14192 0.801567
-1.38956 4.10396 -0.942991
--4.10396 1.38956 -0.942991
--1.38956 -4.10396 -0.942991
-4.10396 -1.38956 -0.942991
-3.85398 2.17586 0.904827
--2.17586 3.85398 0.904827
--3.85398 -2.17586 0.904827
-2.17586 -3.85398 0.904827
-0.0533575 4.33249 -0.942991
--4.33249 0.0533575 -0.942991
--0.0533575 -4.33249 -0.942991
-4.33249 -0.0533575 -0.942991
-3.77806 1.56103 0.996134
--1.56103 3.77806 0.996134
--3.77806 -1.56103 0.996134
-1.56103 -3.77806 0.996134
-3.06542 2.79778 -0.988652
--2.79778 3.06542 -0.988652
--3.06542 -2.79778 -0.988652
-2.79778 -3.06542 -0.988652
-3.76385 1.8351 0.982287
--1.8351 3.76385 0.982287
--3.76385 -1.8351 0.982287
-1.8351 -3.76385 0.982287
-0.763862 3.6356 -0.958522
--3.6356 0.763862 -0.958522
--0.763862 -3.6356 -0.958522
-3.6356 -0.763862 -0.958522
-2.62551 2.69641 -0.971632
--2.69641 2.62551 -0.971632
--2.62551 -2.69641 -0.971632
-2.69641 -2.62551 -0.971632
-3.30723 0.707897 0.786288
--0.707897 3.30723 0.786288
--3.30723 -0.707897 0.786288
-0.707897 -3.30723 0.786288
-2.59067 2.33186 -0.857527
--2.33186 2.59067 -0.857527
--2.59067 -2.33186 -0.857527
-2.33186 -2.59067 -0.857527
-1.1029 3.14628 -0.745941
--3.14628 1.1029 -0.745941
--1.1029 -3.14628 -0.745941
-3.14628 -1.1029 -0.745941
-0.899842 3.03175 0.546394
--3.03175 0.899842 0.546394
--0.899842 -3.03175 0.546394
-3.03175 -0.899842 0.546394
-3.24333 0.125186 -0.656586
--0.125186 3.24333 -0.656586
--3.24333 -0.125186 -0.656586
-0.125186 -3.24333 -0.656586
-0.473139 3.08765 -0.481754
--3.08765 0.473139 -0.481754
--0.473139 -3.08765 -0.481754
-3.08765 -0.473139 -0.481754
-2.35669 2.39852 -0.770513
--2.39852 2.35669 -0.770513
--2.35669 -2.39852 -0.770513
-2.39852 -2.35669 -0.770513
-1.32556 2.99988 0.693653
--2.99988 1.32556 0.693653
--1.32556 -2.99988 0.693653
-2.99988 -1.32556 0.693653
-1.02535 2.8335 0.162637
--2.8335 1.02535 0.162637
--1.02535 -2.8335 0.162637
-2.8335 -1.02535 0.162637
-1.36363 2.68711 -0.162637
--2.68711 1.36363 -0.162637
--1.36363 -2.68711 -0.162637
-2.68711 -1.36363 -0.162637
-3.15379 1.32915 0.816339
--1.32915 3.15379 0.816339
--3.15379 -1.32915 0.816339
-1.32915 -3.15379 0.816339
-0.661336 2.93783 0.150226
--2.93783 0.661336 0.150226
--0.661336 -2.93783 0.150226
-2.93783 -0.661336 0.150226
-2.82717 1.01504 0.0878512
--1.01504 2.82717 0.0878512
--2.82717 -1.01504 0.0878512
-1.01504 -2.82717 0.0878512
-1.69061 2.48295 0.0878512
--2.48295 1.69061 0.0878512
--1.69061 -2.48295 0.0878512
-2.48295 -1.69061 0.0878512
-2.68621 1.37508 -0.187381
--1.37508 2.68621 -0.187381
--2.68621 -1.37508 -0.187381
-1.37508 -2.68621 -0.187381
-2.83241 1.42218 0.556876
--1.42218 2.83241 0.556876
--2.83241 -1.42218 0.556876
-1.42218 -2.83241 0.556876
-2.72851 1.3786 0.33282
--1.3786 2.72851 0.33282
--2.72851 -1.3786 0.33282
-1.3786 -2.72851 0.33282
-1.72686 2.52255 0.33282
--2.52255 1.72686 0.33282
--1.72686 -2.52255 0.33282
-2.52255 -1.72686 0.33282
-3.07692 0.669932 0.525175
--0.669932 3.07692 0.525175
--3.07692 -0.669932 0.525175
-0.669932 -3.07692 0.525175
-1.0291 2.89261 -0.368125
--2.89261 1.0291 -0.368125
--1.0291 -2.89261 -0.368125
-2.89261 -1.0291 -0.368125
-2.19385 2.4497 0.70265
--2.4497 2.19385 0.70265
--2.19385 -2.4497 0.70265
-2.4497 -2.19385 0.70265
-2.6068 1.99022 0.693653
--1.99022 2.6068 0.693653
--2.6068 -1.99022 0.693653
-1.99022 -2.6068 0.693653
-3.14666 0.315809 -0.546394
--0.315809 3.14666 -0.546394
--3.14666 -0.315809 -0.546394
-0.315809 -3.14666 -0.546394
-1.88927 2.45852 -0.437116
--2.45852 1.88927 -0.437116
--1.88927 -2.45852 -0.437116
-2.45852 -1.88927 -0.437116
-1.33275 3.16345 -0.823533
--3.16345 1.33275 -0.823533
--1.33275 -3.16345 -0.823533
-3.16345 -1.33275 -0.823533
-2.89947 0.836451 0.187381
--0.836451 2.89947 0.187381
--2.89947 -0.836451 0.187381
-0.836451 -2.89947 0.187381
-1.36892 2.67833 0.125333
--2.67833 1.36892 0.125333
--1.36892 -2.67833 0.125333
-2.67833 -1.36892 0.125333
-1.26359 2.87723 0.51444
--2.87723 1.26359 0.51444
--1.26359 -2.87723 0.51444
-2.87723 -1.26359 0.51444
-4.17168 2.3304 0.627691
--2.3304 4.17168 0.627691
--4.17168 -2.3304 0.627691
-2.3304 -4.17168 0.627691
-4.39178 1.7766 0.675333
--1.7766 4.39178 0.675333
--4.39178 -1.7766 0.675333
-1.7766 -4.39178 0.675333
-0.331046 4.56559 -0.816339
--4.56559 0.331046 -0.816339
--0.331046 -4.56559 -0.816339
-4.56559 -0.331046 -0.816339
-3.68783 2.62243 -0.850994
--2.62243 3.68783 -0.850994
--3.68783 -2.62243 -0.850994
-2.62243 -3.68783 -0.850994
-3.35223 3.08669 -0.830596
--3.08669 3.35223 -0.830596
--3.35223 -3.08669 -0.830596
-3.08669 -3.35223 -0.830596
-4.41804 0.60727 0.888136
--0.60727 4.41804 0.888136
--4.41804 -0.60727 0.888136
-0.60727 -4.41804 0.888136
-0.514188 4.45216 0.876307
--4.45216 0.514188 0.876307
--0.514188 -4.45216 0.876307
-4.45216 -0.514188 0.876307
-3.38993 2.73619 -0.934329
--2.73619 3.38993 -0.934329
--3.38993 -2.73619 -0.934329
-2.73619 -3.38993 -0.934329
-4.13292 0.20063 -0.990461
--0.20063 4.13292 -0.990461
--4.13292 -0.20063 -0.990461
-0.20063 -4.13292 -0.990461
-1.04982 3.83373 -0.999684
--3.83373 1.04982 -0.999684
--1.04982 -3.83373 -0.999684
-3.83373 -1.04982 -0.999684
-3.75335 1.41881 -0.999921
--1.41881 3.75335 -0.999921
--3.75335 -1.41881 -0.999921
-1.41881 -3.75335 -0.999921
-3.36462 1.65881 0.968583
--1.65881 3.36462 0.968583
--3.36462 -1.65881 0.968583
-1.65881 -3.36462 0.968583
-3.13763 1.80591 0.925077
--1.80591 3.13763 0.925077
--3.13763 -1.80591 0.925077
-1.80591 -3.13763 0.925077
-3.29684 0.992963 -0.830596
--0.992963 3.29684 -0.830596
--3.29684 -0.992963 -0.830596
-0.992963 -3.29684 -0.830596
-1.69109 2.81009 0.693653
--2.81009 1.69109 0.693653
--1.69109 -2.81009 0.693653
-2.81009 -1.69109 0.693653
-0.881349 3.11529 -0.647056
--3.11529 0.881349 -0.647056
--0.881349 -3.11529 -0.647056
-3.11529 -0.881349 -0.647056
-2.34404 2.04674 0.45958
--2.04674 2.34404 0.45958
--2.34404 -2.04674 0.45958
-2.04674 -2.34404 0.45958
-0.698319 3.2505 -0.737513
--3.2505 0.698319 -0.737513
--0.698319 -3.2505 -0.737513
-3.2505 -0.698319 -0.737513
-3.0362 0.103819 -0.272952
--0.103819 3.0362 -0.272952
--3.0362 -0.103819 -0.272952
-0.103819 -3.0362 -0.272952
-2.2705 2.24214 0.587785
--2.24214 2.2705 0.587785
--2.2705 -2.24214 0.587785
-2.24214 -2.2705 0.587785
-3.10177 1.14497 -0.720309
--1.14497 3.10177 -0.720309
--3.10177 -1.14497 -0.720309
-1.14497 -3.10177 -0.720309
-0.837112 2.90451 -0.212007
--2.90451 0.837112 -0.212007
--0.837112 -2.90451 -0.212007
-2.90451 -0.837112 -0.212007
-1.40921 2.73845 0.391374
--2.73845 1.40921 0.391374
--1.40921 -2.73845 0.391374
-2.73845 -1.40921 0.391374
-2.69089 1.61062 -0.503623
--1.61062 2.69089 -0.503623
--2.69089 -1.61062 -0.503623
-1.61062 -2.69089 -0.503623
-1.81814 2.71919 -0.684547
--2.71919 1.81814 -0.684547
--1.81814 -2.71919 -0.684547
-2.71919 -1.81814 -0.684547
-2.35527 2.10024 -0.535827
--2.10024 2.35527 -0.535827
--2.35527 -2.10024 -0.535827
-2.10024 -2.35527 -0.535827
-3.18678 0.737602 -0.684547
--0.737602 3.18678 -0.684547
--3.18678 -0.737602 -0.684547
-0.737602 -3.18678 -0.684547
-2.61032 1.53534 0.236499
--1.53534 2.61032 0.236499
--2.61032 -1.53534 0.236499
-1.53534 -2.61032 0.236499
-1.45614 2.91008 -0.666012
--2.91008 1.45614 -0.666012
--1.45614 -2.91008 -0.666012
-2.91008 -1.45614 -0.666012
-2.92869 0.653481 0.0376902
--0.653481 2.92869 0.0376902
--2.92869 -0.653481 0.0376902
-0.653481 -2.92869 0.0376902
-0.0815083 3.14795 -0.525175
--3.14795 0.0815083 -0.525175
--0.0815083 -3.14795 -0.525175
-3.14795 -0.0815083 -0.525175
-3.15704 0.279626 0.556876
--0.279626 3.15704 0.556876
--3.15704 -0.279626 0.556876
-0.279626 -3.15704 0.556876
-1.9815 2.52035 0.60793
--2.52035 1.9815 0.60793
--1.9815 -2.52035 0.60793
-2.52035 -1.9815 0.60793
-2.64591 1.82404 -0.61786
--1.82404 2.64591 -0.61786
--2.64591 -1.82404 -0.61786
-1.82404 -2.64591 -0.61786
-2.92718 1.28904 -0.597905
--1.28904 2.92718 -0.597905
--2.92718 -1.28904 -0.597905
-1.28904 -2.92718 -0.597905
-1.68755 2.48989 -0.125333
--2.48989 1.68755 -0.125333
--1.68755 -2.48989 -0.125333
-2.48989 -1.68755 -0.125333
-2.48564 1.69381 -0.125333
--1.69381 2.48564 -0.125333
--2.48564 -1.69381 -0.125333
-1.69381 -2.48564 -0.125333
-2.38268 4.36 0.24869
--4.36 2.38268 0.24869
--2.38268 -4.36 0.24869
-4.36 -2.38268 0.24869
-4.95901 0.623303 -0.0627905
--0.623303 4.95901 -0.0627905
--4.95901 -0.623303 -0.0627905
-0.623303 -4.95901 -0.0627905
-4.73789 1.54865 0.175023
--1.54865 4.73789 0.175023
--4.73789 -1.54865 0.175023
-1.54865 -4.73789 0.175023
-2.1303 4.52269 -0.0376902
--4.52269 2.1303 -0.0376902
--2.1303 -4.52269 -0.0376902
-4.52269 -2.1303 -0.0376902
-3.40477 3.60478 -0.285019
--3.60478 3.40477 -0.285019
--3.40477 -3.60478 -0.285019
-3.60478 -3.40477 -0.285019
-2.40989 4.36796 -0.150226
--4.36796 2.40989 -0.150226
--2.40989 -4.36796 -0.150226
-4.36796 -2.40989 -0.150226
-2.36045 4.23797 -0.525175
--4.23797 2.36045 -0.525175
--2.36045 -4.23797 -0.525175
-4.23797 -2.36045 -0.525175
-4.85805 0.59078 -0.448383
--0.59078 4.85805 -0.448383
--4.85805 -0.59078 -0.448383
-0.59078 -4.85805 -0.448383
-3.06196 3.74514 0.546394
--3.74514 3.06196 0.546394
--3.06196 -3.74514 0.546394
-3.74514 -3.06196 0.546394
-0.922199 4.64689 -0.675333
--4.64689 0.922199 -0.675333
--0.922199 -4.64689 -0.675333
-4.64689 -0.922199 -0.675333
-3.55006 3.29615 -0.535827
--3.29615 3.55006 -0.535827
--3.55006 -3.29615 -0.535827
-3.29615 -3.55006 -0.535827
-4.7864 0.269746 -0.60793
--0.269746 4.7864 -0.60793
--4.7864 -0.269746 -0.60793
-0.269746 -4.7864 -0.60793
-3.28447 3.44864 -0.647056
--3.44864 3.28447 -0.647056
--3.28447 -3.44864 -0.647056
-3.44864 -3.28447 -0.647056
-2.41576 3.88822 0.816339
--3.88822 2.41576 0.816339
--2.41576 -3.88822 0.816339
-3.88822 -2.41576 0.816339
-2.74517 3.83997 0.693653
--3.83997 2.74517 0.693653
--2.74517 -3.83997 0.693653
-3.83997 -2.74517 0.693653
-3.0808 3.20886 -0.893841
--3.20886 3.0808 -0.893841
--3.0808 -3.20886 -0.893841
-3.20886 -3.0808 -0.893841
-4.46694 1.41117 -0.728969
--1.41117 4.46694 -0.728969
--4.46694 -1.41117 -0.728969
-1.41117 -4.46694 -0.728969
-2.79778 3.06542 0.988652
--3.06542 2.79778 0.988652
--2.79778 -3.06542 0.988652
-3.06542 -2.79778 0.988652
-1.71918 3.79104 0.986686
--3.79104 1.71918 0.986686
--1.71918 -3.79104 0.986686
-3.79104 -1.71918 0.986686
-3.46673 1.55691 -0.979855
--1.55691 3.46673 -0.979855
--3.46673 -1.55691 -0.979855
-1.55691 -3.46673 -0.979855
-0.958294 3.44336 -0.904827
--3.44336 0.958294 -0.904827
--0.958294 -3.44336 -0.904827
-3.44336 -0.958294 -0.904827
-2.36911 2.75279 -0.929776
--2.75279 2.36911 -0.929776
--2.36911 -2.75279 -0.929776
-2.75279 -2.36911 -0.929776
-0.582942 3.44744 0.863923
--3.44744 0.582942 0.863923
--0.582942 -3.44744 0.863923
-3.44744 -0.582942 0.863923
-2.91213 1.93499 0.863923
--1.93499 2.91213 0.863923
--2.91213 -1.93499 0.863923
-1.93499 -2.91213 0.863923
-2.8974 2.01519 -0.882291
--2.01519 2.8974 -0.882291
--2.8974 -2.01519 -0.882291
-2.01519 -2.8974 -0.882291
-0.502001 3.37509 -0.809017
--3.37509 0.502001 -0.809017
--0.502001 -3.37509 -0.809017
-3.37509 -0.502001 -0.809017
-1.92033 2.77215 0.778462
--2.77215 1.92033 0.778462
--1.92033 -2.77215 0.778462
-2.77215 -1.92033 0.778462
-1.59407 2.73133 -0.546394
--2.73133 1.59407 -0.546394
--1.59407 -2.73133 -0.546394
-2.73133 -1.59407 -0.546394
-3.11978 1.09493 0.720309
--1.09493 3.11978 0.720309
--3.11978 -1.09493 0.720309
-1.09493 -3.11978 0.720309
-1.94839 2.54603 -0.60793
--2.54603 1.94839 -0.60793
--1.94839 -2.54603 -0.60793
-2.54603 -1.94839 -0.60793
-3.05917 0.470741 0.425779
--0.470741 3.05917 0.425779
--3.05917 -0.470741 0.425779
-0.470741 -3.05917 0.425779
-3.00255 0.278496 0.175023
--0.278496 3.00255 0.175023
--3.00255 -0.278496 0.175023
-0.278496 -3.00255 0.175023
-0.653233 2.92931 -0.0502443
--2.92931 0.653233 -0.0502443
--0.653233 -2.92931 -0.0502443
-2.92931 -0.653233 -0.0502443
-2.96647 0.472518 -0.0878512
--0.472518 2.96647 -0.0878512
--2.96647 -0.472518 -0.0878512
-0.472518 -2.96647 -0.0878512
-1.23242 2.89072 -0.51444
--2.89072 1.23242 -0.51444
--1.23242 -2.89072 -0.51444
-2.89072 -1.23242 -0.51444
-2.01283 2.271 0.260842
--2.271 2.01283 0.260842
--2.01283 -2.271 0.260842
-2.271 -2.01283 0.260842
-2.73845 1.40921 -0.391374
--1.40921 2.73845 -0.391374
--2.73845 -1.40921 -0.391374
-1.40921 -2.73845 -0.391374
-2.42231 1.89409 -0.379779
--1.89409 2.42231 -0.379779
--2.42231 -1.89409 -0.379779
-1.89409 -2.42231 -0.379779
-0.471984 2.96552 0.0753268
--2.96552 0.471984 0.0753268
--0.471984 -2.96552 0.0753268
-2.96552 -0.471984 0.0753268
-2.25375 1.99198 -0.125333
--1.99198 2.25375 -0.125333
--2.25375 -1.99198 -0.125333
-1.99198 -2.25375 -0.125333
-0.280633 2.98883 -0.0627905
--2.98883 0.280633 -0.0627905
--0.280633 -2.98883 -0.0627905
-2.98883 -0.280633 -0.0627905
-2.37076 1.83847 0.012566
--1.83847 2.37076 0.012566
--2.37076 -1.83847 0.012566
-1.83847 -2.37076 0.012566
-0.0856554 3.05581 -0.33282
--3.05581 0.0856554 -0.33282
--0.0856554 -3.05581 -0.33282
-3.05581 -0.0856554 -0.33282
-2.28436 2.00274 0.272952
--2.00274 2.28436 0.272952
--2.28436 -2.00274 0.272952
-2.00274 -2.28436 0.272952
-3.05099 0.299626 -0.356412
--0.299626 3.05099 -0.356412
--3.05099 -0.299626 -0.356412
-0.299626 -3.05099 -0.356412
-2.54581 1.71614 0.368125
--1.71614 2.54581 0.368125
--2.54581 -1.71614 0.368125
-1.71614 -2.54581 0.368125
-1.70971 2.53421 -0.33282
--2.53421 1.70971 -0.33282
--1.70971 -2.53421 -0.33282
-2.53421 -1.70971 -0.33282
-2.12824 2.12343 0.112856
--2.12343 2.12824 0.112856
--2.12824 -2.12343 0.112856
-2.12343 -2.12824 0.112856
-0.0961795 3.00043 0.0627905
--3.00043 0.0961795 0.0627905
--0.0961795 -3.00043 0.0627905
-3.00043 -0.0961795 0.0627905
-3.04391 0.0864702 0.297042
--0.0864702 3.04391 0.297042
--3.04391 -0.0864702 0.297042
-0.0864702 -3.04391 0.297042
-2.37047 -1.83872 -2.94854e-15
--2.37047 1.83872 -9.83751e-16
-1.83872 2.37047 -1.35525e-18
--1.83872 -2.37047 2.64556e-14
-1.83511 4.6469 0.0878512
--4.6469 1.83511 0.0878512
--1.83511 -4.6469 0.0878512
-4.6469 -1.83511 0.0878512
-2.67335 4.22073 0.0878512
--4.22073 2.67335 0.0878512
--2.67335 -4.22073 0.0878512
-4.22073 -2.67335 0.0878512
-4.64904 1.84001 -0.012566
--1.84001 4.64904 -0.012566
--4.64904 -1.84001 -0.012566
-1.84001 -4.64904 -0.012566
-4.51433 2.13121 0.125333
--2.13121 4.51433 0.125333
--4.51433 -2.13121 0.125333
-2.13121 -4.51433 0.125333
-1.54872 4.7401 -0.162637
--4.7401 1.54872 -0.162637
--1.54872 -4.7401 -0.162637
-4.7401 -1.54872 -0.162637
-3.16859 3.8449 0.187381
--3.8449 3.16859 0.187381
--3.16859 -3.8449 0.187381
-3.8449 -3.16859 0.187381
-4.40172 2.09838 0.481754
--2.09838 4.40172 0.481754
--4.40172 -2.09838 0.481754
-2.09838 -4.40172 0.481754
-4.90604 0.636068 0.320944
--0.636068 4.90604 0.320944
--4.90604 -0.636068 0.320944
-0.636068 -4.90604 0.320944
-2.669 4.17892 -0.285019
--4.17892 2.669 -0.285019
--2.669 -4.17892 -0.285019
-4.17892 -2.669 -0.285019
-1.2414 4.75059 -0.414376
--4.75059 1.2414 -0.414376
--1.2414 -4.75059 -0.414376
-4.75059 -1.2414 -0.414376
-3.34183 3.5902 0.425779
--3.5902 3.34183 0.425779
--3.34183 -3.5902 0.425779
-3.5902 -3.34183 0.425779
-4.69208 0.861497 -0.637424
--0.861497 4.69208 -0.637424
--4.69208 -0.861497 -0.637424
-0.861497 -4.69208 -0.637424
-4.59204 1.52145 0.546394
--1.52145 4.59204 0.546394
--4.59204 -1.52145 0.546394
-1.52145 -4.59204 0.546394
-4.30502 0.490068 -0.942991
--0.490068 4.30502 -0.942991
--4.30502 -0.490068 -0.942991
-0.490068 -4.30502 -0.942991
-3.3919 2.39152 -0.988652
--2.39152 3.3919 -0.988652
--3.3919 -2.39152 -0.988652
-2.39152 -3.3919 -0.988652
-3.49686 1.99341 0.999684
--1.99341 3.49686 0.999684
--3.49686 -1.99341 0.999684
-1.99341 -3.49686 0.999684
-2.05508 3.35831 0.998027
--3.35831 2.05508 0.998027
--2.05508 -3.35831 0.998027
-3.35831 -2.05508 0.998027
-2.41881 3.02695 0.992115
--3.02695 2.41881 0.992115
--2.41881 -3.02695 0.992115
-3.02695 -2.41881 0.992115
-2.94465 2.2254 0.951057
--2.2254 2.94465 0.951057
--2.94465 -2.2254 0.951057
-2.2254 -2.94465 0.951057
-0.0646048 3.92414 -0.997159
--3.92414 0.0646048 -0.997159
--0.0646048 -3.92414 -0.997159
-3.92414 -0.0646048 -0.997159
-1.54598 3.44472 0.974527
--3.44472 1.54598 0.974527
--1.54598 -3.44472 0.974527
-3.44472 -1.54598 0.974527
-3.357 0.937899 0.857527
--0.937899 3.357 0.857527
--3.357 -0.937899 0.857527
-0.937899 -3.357 0.857527
-0.819091 3.4791 0.904827
--3.4791 0.819091 0.904827
--0.819091 -3.4791 0.904827
-3.4791 -0.819091 0.904827
-1.39372 3.13707 0.823533
--3.13707 1.39372 0.823533
--1.39372 -3.13707 0.823533
-3.13707 -1.39372 0.823533
-2.11402 2.78488 -0.863923
--2.78488 2.11402 -0.863923
--2.11402 -2.78488 -0.863923
-2.78488 -2.11402 -0.863923
-2.93381 1.52469 -0.720309
--1.52469 2.93381 -0.720309
--2.93381 -1.52469 -0.720309
-1.52469 -2.93381 -0.720309
-2.9121 1.75896 -0.801567
--1.75896 2.9121 -0.801567
--2.9121 -1.75896 -0.801567
-1.75896 -2.9121 -0.801567
-2.26775 2.29932 -0.637424
--2.29932 2.26775 -0.637424
--2.26775 -2.29932 -0.637424
-2.29932 -2.26775 -0.637424
-3.28794 0.49284 0.737513
--0.49284 3.28794 0.737513
--3.28794 -0.49284 0.737513
-0.49284 -3.28794 0.737513
-2.51001 1.92382 0.546394
--1.92382 2.51001 0.546394
--2.51001 -1.92382 0.546394
-1.92382 -2.51001 0.546394
-3.07709 0.872632 0.597905
--0.872632 3.07709 0.597905
--3.07709 -0.872632 0.597905
-0.872632 -3.07709 0.597905
-0.467497 3.01289 -0.309017
--3.01289 0.467497 -0.309017
--0.467497 -3.01289 -0.309017
-3.01289 -0.467497 -0.309017
-3.0023 0.0969947 -0.0878512
--0.0969947 3.0023 -0.0878512
--3.0023 -0.0969947 -0.0878512
-0.0969947 -3.0023 -0.0878512
-2.9403 4.04057 -0.0753268
--4.04057 2.9403 -0.0753268
--2.9403 -4.04057 -0.0753268
-4.04057 -2.9403 -0.0753268
-4.98797 0.316963 0.0627905
--0.316963 4.98797 0.0627905
--4.98797 -0.316963 0.0627905
-0.316963 -4.98797 0.0627905
-3.84082 3.18635 0.13779
--3.18635 3.84082 0.13779
--3.84082 -3.18635 0.13779
-3.18635 -3.84082 0.13779
-1.83939 4.60851 -0.272952
--4.60851 1.83939 -0.272952
--1.83939 -4.60851 -0.272952
-4.60851 -1.83939 -0.272952
-4.8871 0.943089 0.212007
--0.943089 4.8871 0.212007
--4.8871 -0.943089 0.212007
-0.943089 -4.8871 0.212007
-3.60478 3.40477 0.285019
--3.40477 3.60478 0.285019
--3.60478 -3.40477 0.285019
-3.40477 -3.60478 0.285019
-4.58549 1.83421 0.344643
--1.83421 4.58549 0.344643
--4.58549 -1.83421 0.344643
-1.83421 -4.58549 0.344643
-4.74532 1.24066 0.425779
--1.24066 4.74532 0.425779
--4.74532 -1.24066 0.425779
-1.24066 -4.74532 0.425779
-1.52743 4.61787 -0.503623
--4.61787 1.52743 -0.503623
--1.52743 -4.61787 -0.503623
-4.61787 -1.52743 -0.503623
-2.59514 4.03083 -0.60793
--4.03083 2.59514 -0.60793
--2.59514 -4.03083 -0.60793
-4.03083 -2.59514 -0.60793
-0.631494 4.74445 -0.61786
--4.74445 0.631494 -0.61786
--0.631494 -4.74445 -0.61786
-4.74445 -0.631494 -0.61786
-4.72865 0.630601 0.637424
--0.630601 4.72865 0.637424
--4.72865 -0.630601 0.637424
-0.630601 -4.72865 0.637424
-0.0382636 4.68439 -0.728969
--4.68439 0.0382636 -0.728969
--0.0382636 -4.68439 -0.728969
-4.68439 -0.0382636 -0.728969
-4.10764 2.21336 -0.745941
--2.21336 4.10764 -0.745941
--4.10764 -2.21336 -0.745941
-2.21336 -4.10764 -0.745941
-4.62469 0.544127 -0.754251
--0.544127 4.62469 -0.754251
--4.62469 -0.544127 -0.754251
-0.544127 -4.62469 -0.754251
-4.50821 0.237023 -0.857527
--0.237023 4.50821 -0.857527
--4.50821 -0.237023 -0.857527
-0.237023 -4.50821 -0.857527
-4.56559 0.331046 0.816339
--0.331046 4.56559 0.816339
--4.56559 -0.331046 0.816339
-0.331046 -4.56559 0.816339
-3.53591 2.31123 0.974527
--2.31123 3.53591 0.974527
--3.53591 -2.31123 0.974527
-2.31123 -3.53591 0.974527
-0.730369 4.13571 0.979855
--4.13571 0.730369 0.979855
--0.730369 -4.13571 0.979855
-4.13571 -0.730369 0.979855
-2.46347 3.79585 -0.850994
--3.79585 2.46347 -0.850994
--2.46347 -3.79585 -0.850994
-3.79585 -2.46347 -0.850994
-0.221072 4.3508 0.934329
--4.3508 0.221072 0.934329
--0.221072 -4.3508 0.934329
-4.3508 -0.221072 0.934329
-3.81314 1.73036 -0.982287
--1.73036 3.81314 -0.982287
--3.81314 -1.73036 -0.982287
-1.73036 -3.81314 -0.982287
-3.25048 2.43734 0.998027
--2.43734 3.25048 0.998027
--3.25048 -2.43734 0.998027
-2.43734 -3.25048 0.998027
-0.831488 4.04067 -0.992115
--4.04067 0.831488 -0.992115
--0.831488 -4.04067 -0.992115
-4.04067 -0.831488 -0.992115
-0.455945 4.08751 0.993611
--4.08751 0.455945 0.993611
--0.455945 -4.08751 0.993611
-4.08751 -0.455945 0.993611
-3.22513 2.1249 0.990461
--2.1249 3.22513 0.990461
--3.22513 -2.1249 0.990461
-2.1249 -3.22513 0.990461
-3.64618 1.11419 -0.982287
--1.11419 3.64618 -0.982287
--3.64618 -1.11419 -0.982287
-1.11419 -3.64618 -0.982287
-1.98762 3.48569 -0.999921
--3.48569 1.98762 -0.999921
--1.98762 -3.48569 -0.999921
-3.48569 -1.98762 -0.999921
-2.88188 2.79203 0.999921
--2.79203 2.88188 0.999921
--2.88188 -2.79203 0.999921
-2.79203 -2.88188 0.999921
-1.58654 3.2028 -0.904827
--3.2028 1.58654 -0.904827
--1.58654 -3.2028 -0.904827
-3.2028 -1.58654 -0.904827
-1.98734 2.99826 -0.915241
--2.99826 1.98734 -0.915241
--1.98734 -2.99826 -0.915241
-2.99826 -1.98734 -0.915241
-3.51228 0.8283 -0.920232
--0.8283 3.51228 -0.920232
--3.51228 -0.8283 -0.920232
-0.8283 -3.51228 -0.920232
-3.40223 1.27096 -0.929776
--1.27096 3.40223 -0.929776
--3.40223 -1.27096 -0.929776
-1.27096 -3.40223 -0.929776
-2.19314 2.76515 0.882291
--2.76515 2.19314 0.882291
--2.19314 -2.76515 0.882291
-2.76515 -2.19314 0.882291
-0.284672 3.29407 -0.720309
--3.29407 0.284672 -0.720309
--0.284672 -3.29407 -0.720309
-3.29407 -0.284672 -0.720309
-3.03828 0.902196 -0.556876
--0.902196 3.03828 -0.556876
--3.03828 -0.902196 -0.556876
-0.902196 -3.03828 -0.556876
-3.18078 0.686686 0.666012
--0.686686 3.18078 0.666012
--3.18078 -0.686686 0.666012
-0.686686 -3.18078 0.666012
-2.89348 1.05488 -0.391374
--1.05488 2.89348 -0.391374
--2.89348 -1.05488 -0.391374
-1.05488 -2.89348 -0.391374
-1.77253 2.57951 0.492727
--2.57951 1.77253 0.492727
--1.77253 -2.57951 0.492727
-2.57951 -1.77253 0.492727
-1.3786 2.72851 -0.33282
--2.72851 1.3786 -0.33282
--1.3786 -2.72851 -0.33282
-2.72851 -1.3786 -0.33282
-2.3901 1.84627 0.19971
--1.84627 2.3901 0.19971
--2.3901 -1.84627 0.19971
-1.84627 -2.3901 0.19971
-1.99016 2.26542 -0.175023
--2.26542 1.99016 -0.175023
--1.99016 -2.26542 -0.175023
-2.26542 -1.99016 -0.175023
-2.90343 0.85065 -0.224271
--0.85065 2.90343 -0.224271
--2.90343 -0.85065 -0.224271
-0.85065 -2.90343 -0.224271
-3.41804 3.64535 0.0753268
--3.64535 3.41804 0.0753268
--3.41804 -3.64535 0.0753268
-3.64535 -3.41804 0.0753268
-4.04562 2.93698 -0.0376902
--2.93698 4.04562 -0.0376902
--4.04562 -2.93698 -0.0376902
-2.93698 -4.04562 -0.0376902
-0.294498 4.93832 0.320944
--4.93832 0.294498 0.320944
--0.294498 -4.93832 0.320944
-4.93832 -0.294498 0.320944
-4.95308 0.297876 -0.272952
--0.297876 4.95308 -0.272952
--4.95308 -0.297876 -0.272952
-0.297876 -4.95308 -0.272952
-4.50587 2.10786 -0.224271
--2.10786 4.50587 -0.224271
--4.50587 -2.10786 -0.224271
-2.10786 -4.50587 -0.224271
-0.331513 4.83297 -0.535827
--4.83297 0.331513 -0.535827
--0.331513 -4.83297 -0.535827
-4.83297 -0.331513 -0.535827
-3.13377 3.75145 -0.45958
--3.75145 3.13377 -0.45958
--3.13377 -3.75145 -0.45958
-3.75145 -3.13377 -0.45958
-4.14365 2.65308 0.391374
--2.65308 4.14365 0.391374
--4.14365 -2.65308 0.391374
-2.65308 -4.14365 0.391374
-0.0233418 4.88808 -0.45958
--4.88808 0.0233418 -0.45958
--0.0233418 -4.88808 -0.45958
-4.88808 -0.0233418 -0.45958
-3.63378 2.95646 -0.728969
--2.95646 3.63378 -0.728969
--3.63378 -2.95646 -0.728969
-2.95646 -3.63378 -0.728969
-3.75166 2.7743 0.745941
--2.7743 3.75166 0.745941
--3.75166 -2.7743 0.745941
-2.7743 -3.75166 0.745941
-3.4486 2.9133 0.857527
--2.9133 3.4486 0.857527
--3.4486 -2.9133 0.857527
-2.9133 -3.4486 0.857527
-3.20867 2.72863 0.977268
--2.72863 3.20867 0.977268
--3.20867 -2.72863 0.977268
-2.72863 -3.20867 0.977268
-3.52229 2.62253 0.920232
--2.62253 3.52229 0.920232
--3.52229 -2.62253 0.920232
-2.62253 -3.52229 0.920232
-0.589224 4.2199 -0.965382
--4.2199 0.589224 -0.965382
--0.589224 -4.2199 -0.965382
-4.2199 -0.589224 -0.965382
-3.95097 0.435187 -0.999684
--0.435187 3.95097 -0.999684
--3.95097 -0.435187 -0.999684
-0.435187 -3.95097 -0.999684
-0.19062 4.02061 0.999684
--4.02061 0.19062 0.999684
--0.19062 -4.02061 0.999684
-4.02061 -0.19062 0.999684
-1.8252 3.74115 -0.986686
--3.74115 1.8252 -0.986686
--1.8252 -3.74115 -0.986686
-3.74115 -1.8252 -0.986686
-0.656169 3.79344 0.988652
--3.79344 0.656169 0.988652
--0.656169 -3.79344 0.988652
-3.79344 -0.656169 0.988652
-1.06252 3.49752 0.938734
--3.49752 1.06252 0.938734
--1.06252 -3.49752 0.938734
-3.49752 -1.06252 0.938734
-1.20308 3.47679 -0.947098
--3.47679 1.20308 -0.947098
--1.20308 -3.47679 -0.947098
-3.47679 -1.20308 -0.947098
-3.19594 1.67575 -0.920232
--1.67575 3.19594 -0.920232
--3.19594 -1.67575 -0.920232
-1.67575 -3.19594 -0.920232
-2.70762 2.3332 0.904827
--2.3332 2.70762 0.904827
--2.70762 -2.3332 0.904827
-2.3332 -2.70762 0.904827
-1.86674 3.07479 0.915241
--3.07479 1.86674 0.915241
--1.86674 -3.07479 0.915241
-3.07479 -1.86674 0.915241
-1.61433 3.08919 0.857527
--3.08919 1.61433 0.857527
--1.61433 -3.08919 0.857527
-3.08919 -1.61433 0.857527
-1.7092 2.95328 -0.809017
--2.95328 1.7092 -0.809017
--1.7092 -2.95328 -0.809017
-2.95328 -1.7092 -0.809017
-2.58934 2.04153 -0.711536
--2.04153 2.58934 -0.711536
--2.58934 -2.04153 -0.711536
-2.04153 -2.58934 -0.711536
-0.112001 3.10414 0.448383
--3.10414 0.112001 0.448383
--0.112001 -3.10414 0.448383
-3.10414 -0.112001 0.448383
-2.05766 2.35834 -0.492727
--2.35834 2.05766 -0.492727
--2.05766 -2.35834 -0.492727
-2.35834 -2.05766 -0.492727
-2.99374 0.681039 -0.368125
--0.681039 2.99374 -0.368125
--2.99374 -0.681039 -0.368125
-0.681039 -2.99374 -0.368125
-2.9868 0.281957 0.012566
--0.281957 2.9868 0.012566
--2.9868 -0.281957 0.012566
-0.281957 -2.9868 0.012566
-3.00187 0.466946 0.272952
--0.466946 3.00187 0.272952
--3.00187 -0.466946 0.272952
-0.466946 -3.00187 0.272952
-3.83902 -3.18568 -0.150226
-3.18568 3.83902 -0.150226
--3.18568 -3.83902 -0.150226
--3.83902 3.18568 -0.150226
-0.940075 4.90794 -0.0753268
--4.90794 0.940075 -0.0753268
--0.940075 -4.90794 -0.0753268
-4.90794 -0.940075 -0.0753268
--4.98865 0.00752271 -0.150226
-0.00752271 4.98865 -0.150226
-4.98865 -0.00752271 -0.150226
--0.00752271 -4.98865 -0.150226
-4.98865 0.00752271 0.150226
--0.00752271 4.98865 0.150226
--4.98865 -0.00752271 0.150226
-0.00752271 -4.98865 0.150226
-3.8449 3.16859 -0.187381
--3.16859 3.8449 -0.187381
--3.8449 -3.16859 -0.187381
-3.16859 -3.8449 -0.187381
-4.21602 2.68077 0.0878512
--2.68077 4.21602 0.0878512
--4.21602 -2.68077 0.0878512
-2.68077 -4.21602 0.0878512
-4.3687 2.39028 -0.19971
--2.39028 4.3687 -0.19971
--4.3687 -2.39028 -0.19971
-2.39028 -4.3687 -0.19971
-0.636068 4.90604 -0.320944
--4.90604 0.636068 -0.320944
--0.636068 -4.90604 -0.320944
-4.90604 -0.636068 -0.320944
-0.941997 4.83894 -0.368125
--4.83894 0.941997 -0.368125
--0.941997 -4.83894 -0.368125
-4.83894 -0.941997 -0.368125
-4.20813 2.65797 -0.212007
--2.65797 4.20813 -0.212007
--4.20813 -2.65797 -0.212007
-2.65797 -4.20813 -0.212007
-4.28489 2.32767 -0.481754
--2.32767 4.28489 -0.481754
--4.28489 -2.32767 -0.481754
-2.32767 -4.28489 -0.481754
-2.90557 3.9645 -0.402906
--3.9645 2.90557 -0.402906
--2.90557 -3.9645 -0.402906
-3.9645 -2.90557 -0.402906
-1.78551 4.56829 0.425779
--4.56829 1.78551 0.425779
--1.78551 -4.56829 0.425779
-4.56829 -1.78551 0.425779
-4.00571 2.88884 -0.344643
--2.88884 4.00571 -0.344643
--4.00571 -2.88884 -0.344643
-2.88884 -4.00571 -0.344643
-4.89936 0.0221643 0.437116
--0.0221643 4.89936 0.437116
--4.89936 -0.0221643 0.437116
-0.0221643 -4.89936 0.437116
-3.77708 3.09362 -0.470704
--3.09362 3.77708 -0.470704
--3.77708 -3.09362 -0.470704
-3.09362 -3.77708 -0.470704
-4.7665 0.935979 0.51444
--0.935979 4.7665 0.51444
--4.7665 -0.935979 0.51444
-0.935979 -4.7665 0.51444
-1.70765 4.40988 0.684547
--4.40988 1.70765 0.684547
--1.70765 -4.40988 0.684547
-4.40988 -1.70765 0.684547
-4.6613 1.49062 -0.448383
-1.49062 4.6613 0.448383
--1.49062 4.6613 -0.448383
--4.6613 1.49062 0.448383
--4.6613 -1.49062 -0.448383
--1.49062 -4.6613 0.448383
-1.49062 -4.6613 -0.448383
-4.6613 -1.49062 0.448383
-1.80055 4.46712 -0.577573
--4.46712 1.80055 -0.577573
--1.80055 -4.46712 -0.577573
-4.46712 -1.80055 -0.577573
-4.12542 2.58835 -0.492727
--2.58835 4.12542 -0.492727
--4.12542 -2.58835 -0.492727
-2.58835 -4.12542 -0.492727
-3.19841 3.45959 0.70265
--3.45959 3.19841 0.70265
--3.19841 -3.45959 0.70265
-3.45959 -3.19841 0.70265
-3.9958 2.57614 0.656586
--2.57614 3.9958 0.656586
--3.9958 -2.57614 0.656586
-2.57614 -3.9958 0.656586
-3.89675 2.79243 -0.60793
--2.79243 3.89675 -0.60793
--3.89675 -2.79243 -0.60793
-2.79243 -3.89675 -0.60793
-3.49059 3.31857 0.577573
--3.31857 3.49059 0.577573
--3.49059 -3.31857 0.577573
-3.31857 -3.49059 0.577573
-3.32996 3.18503 0.79399
--3.18503 3.32996 0.79399
--3.32996 -3.18503 0.79399
-3.18503 -3.32996 0.79399
-4.57584 0.912881 0.745941
--0.912881 4.57584 0.745941
--4.57584 -0.912881 0.745941
-0.912881 -4.57584 0.745941
-2.25684 4.01743 -0.79399
--4.01743 2.25684 -0.79399
--2.25684 -4.01743 -0.79399
-4.01743 -2.25684 -0.79399
-1.13881 4.58088 0.693653
--4.58088 1.13881 0.693653
--1.13881 -4.58088 0.693653
-4.58088 -1.13881 0.693653
-1.4242 4.50033 0.693653
--4.50033 1.4242 0.693653
--1.4242 -4.50033 0.693653
-4.50033 -1.4242 0.693653
-4.72017 0.0361831 0.693653
--0.0361831 4.72017 0.693653
--4.72017 -0.0361831 0.693653
-0.0361831 -4.72017 0.693653
-3.97566 2.47772 -0.728969
--2.47772 3.97566 -0.728969
--3.97566 -2.47772 -0.728969
-2.47772 -3.97566 -0.728969
-1.47675 4.41622 -0.754251
--4.41622 1.47675 -0.754251
--1.47675 -4.41622 -0.754251
-4.41622 -1.47675 -0.754251
-4.4815 0.0478706 0.876307
--0.0478706 4.4815 0.876307
--4.4815 -0.0478706 0.876307
-0.0478706 -4.4815 0.876307
-4.36916 1.46407 0.79399
--1.46407 4.36916 0.79399
--4.36916 -1.46407 0.79399
-1.46407 -4.36916 0.79399
-1.73228 4.2591 -0.801567
--4.2591 1.73228 -0.801567
--1.73228 -4.2591 -0.801567
-4.2591 -1.73228 -0.801567
-4.11533 1.39283 0.938734
--1.39283 4.11533 0.938734
--4.11533 -1.39283 0.938734
-1.39283 -4.11533 0.938734
-4.30878 1.66103 -0.786288
--1.66103 4.30878 -0.786288
--4.30878 -1.66103 -0.786288
-1.66103 -4.30878 -0.786288
-4.11764 1.6832 0.893841
--1.6832 4.11764 0.893841
--4.11764 -1.6832 0.893841
-1.6832 -4.11764 0.893841
-0.881813 4.36011 -0.893841
--4.36011 0.881813 -0.893841
--0.881813 -4.36011 -0.893841
-4.36011 -0.881813 -0.893841
-1.33933 4.27695 0.876307
--4.27695 1.33933 0.876307
--1.33933 -4.27695 0.876307
-4.27695 -1.33933 0.876307
-2.31123 3.53591 -0.974527
--3.53591 2.31123 -0.974527
--2.31123 -3.53591 -0.974527
-3.53591 -2.31123 -0.974527
-0.797709 4.43241 0.863923
--4.43241 0.797709 0.863923
--0.797709 -4.43241 0.863923
-4.43241 -0.797709 0.863923
-2.75864 3.24726 -0.965382
--3.24726 2.75864 -0.965382
--2.75864 -3.24726 -0.965382
-3.24726 -2.75864 -0.965382
-3.79585 2.46347 0.850994
--2.46347 3.79585 0.850994
--3.79585 -2.46347 0.850994
-2.46347 -3.79585 0.850994
-0.995425 4.10531 0.974527
--4.10531 0.995425 0.974527
--0.995425 -4.10531 0.974527
-4.10531 -0.995425 0.974527
-3.86269 2.06449 -0.925077
--2.06449 3.86269 -0.925077
--3.86269 -2.06449 -0.925077
-2.06449 -3.86269 -0.925077
-2.13395 3.77089 -0.942991
--3.77089 2.13395 -0.942991
--2.13395 -3.77089 -0.942991
-3.77089 -2.13395 -0.942991
-2.60296 3.49326 -0.934329
--3.49326 2.60296 -0.934329
--2.60296 -3.49326 -0.934329
-3.49326 -2.60296 -0.934329
-3.12172 3.00469 0.942991
--3.00469 3.12172 0.942991
--3.12172 -3.00469 0.942991
-3.00469 -3.12172 0.942991
-1.54808 3.74272 -0.998737
--3.74272 1.54808 -0.998737
--1.54808 -3.74272 -0.998737
-3.74272 -1.54808 -0.998737
-0.909926 3.80486 0.996134
--3.80486 0.909926 0.996134
--0.909926 -3.80486 0.996134
-3.80486 -0.909926 0.996134
-1.87804 3.54593 0.999921
--3.54593 1.87804 0.999921
--1.87804 -3.54593 0.999921
-3.54593 -1.87804 0.999921
-2.95295 2.52784 0.993611
--2.52784 2.95295 0.993611
--2.95295 -2.52784 0.993611
-2.52784 -2.95295 0.993611
-2.15073 3.26791 -0.996134
--3.26791 2.15073 -0.996134
--2.15073 -3.26791 -0.996134
-3.26791 -2.15073 -0.996134
-3.58209 0.524052 0.925077
--0.524052 3.58209 0.925077
--3.58209 -0.524052 0.925077
-0.524052 -3.58209 0.925077
-3.89909 0.0651727 0.994951
--0.0651727 3.89909 0.994951
--3.89909 -0.0651727 0.994951
-0.0651727 -3.89909 0.994951
-2.64251 2.57692 0.951057
--2.57692 2.64251 0.951057
--2.64251 -2.57692 0.951057
-2.57692 -2.64251 0.951057
-1.83879 3.20034 -0.951057
--3.20034 1.83879 -0.951057
--1.83879 -3.20034 -0.951057
-3.20034 -1.83879 -0.951057
-3.16311 1.92526 -0.954865
--1.92526 3.16311 -0.954865
--3.16311 -1.92526 -0.954865
-1.92526 -3.16311 -0.954865
-3.60792 0.0711907 0.920232
--0.0711907 3.60792 0.920232
--3.60792 -0.0711907 0.920232
-0.0711907 -3.60792 0.920232
-1.23132 3.30753 0.882291
--3.30753 1.23132 0.882291
--1.23132 -3.30753 0.882291
-3.30753 -1.23132 0.882291
-3.46885 0.58746 -0.876307
--0.58746 3.46885 -0.876307
--3.46885 -0.58746 -0.876307
-0.58746 -3.46885 -0.876307
-3.16527 1.40768 -0.844328
--1.40768 3.16527 -0.844328
--3.16527 -1.40768 -0.844328
-1.40768 -3.16527 -0.844328
-2.17788 2.51202 -0.737513
--2.51202 2.17788 -0.737513
--2.17788 -2.51202 -0.737513
-2.51202 -2.17788 -0.737513
-0.663486 3.03447 -0.448383
--3.03447 0.663486 -0.448383
--0.663486 -3.03447 -0.448383
-3.03447 -0.663486 -0.448383
-2.2109 2.18989 0.45958
--2.18989 2.2109 0.45958
--2.2109 -2.18989 0.45958
-2.18989 -2.2109 0.45958
-0.496401 3.04976 0.414376
--3.04976 0.496401 0.414376
--0.496401 -3.04976 0.414376
-3.04976 -0.496401 0.414376
-0.277908 3.01268 -0.224271
--3.01268 0.277908 -0.224271
--0.277908 -3.01268 -0.224271
-3.01268 -0.277908 -0.224271
-0.674451 2.97341 0.309017
--2.97341 0.674451 0.309017
--0.674451 -2.97341 0.309017
-2.97341 -0.674451 0.309017
-0.315809 3.14666 0.546394
--3.14666 0.315809 0.546394
--0.315809 -3.14666 0.546394
-3.14666 -0.315809 0.546394
-2.15429 2.16895 -0.33282
--2.16895 2.15429 -0.33282
--2.15429 -2.16895 -0.33282
-2.16895 -2.15429 -0.33282
-2.5106 1.71683 -0.285019
--1.71683 2.5106 -0.285019
--2.5106 -1.71683 -0.285019
-1.71683 -2.5106 -0.285019
-1.19111 2.762 -0.125333
--2.762 1.19111 -0.125333
--1.19111 -2.762 -0.125333
-2.762 -1.19111 -0.125333
-2.82386 1.01866 -0.0627905
--1.01866 2.82386 -0.0627905
--2.82386 -1.01866 -0.0627905
-1.01866 -2.82386 -0.0627905
-1.22995 4.82809 0.187381
--4.82809 1.22995 0.187381
--1.22995 -4.82809 0.187381
-4.82809 -1.22995 0.187381
-0.312679 4.9899 0.0251301
--4.9899 0.312679 0.0251301
--0.312679 -4.9899 0.0251301
-4.9899 -0.312679 0.0251301
-4.74513 1.53322 -0.162637
-1.53322 4.74513 0.162637
--1.53322 4.74513 -0.162637
--4.74513 1.53322 0.162637
--4.74513 -1.53322 -0.162637
--1.53322 -4.74513 0.162637
-1.53322 -4.74513 -0.162637
-4.74513 -1.53322 0.162637
-0.324442 4.95798 -0.24869
--4.95798 0.324442 -0.24869
--0.324442 -4.95798 -0.24869
-4.95798 -0.324442 -0.24869
-1.24706 4.83677 -0.100362
--4.83677 1.24706 -0.100362
--1.24706 -4.83677 -0.100362
-4.83677 -1.24706 -0.100362
-4.00936 2.92917 0.260842
--2.92917 4.00936 0.260842
--4.00936 -2.92917 0.260842
-2.92917 -4.00936 0.260842
-4.85027 0.906932 -0.356412
--0.906932 4.85027 -0.356412
--4.85027 -0.906932 -0.356412
-0.906932 -4.85027 -0.356412
-1.195 4.7457 0.448383
--4.7457 1.195 0.448383
--1.195 -4.7457 0.448383
-4.7457 -1.195 0.448383
-4.60202 1.80403 -0.33282
--1.80403 4.60202 -0.33282
--4.60202 -1.80403 -0.33282
-1.80403 -4.60202 -0.33282
-3.91434 2.87638 0.51444
--2.87638 3.91434 0.51444
--3.91434 -2.87638 0.51444
-2.87638 -3.91434 0.51444
-3.76089 3.14004 0.437116
--3.14004 3.76089 0.437116
--3.76089 -3.14004 0.437116
-3.14004 -3.76089 0.437116
-4.48895 1.74541 -0.577573
--1.74541 4.48895 -0.577573
--4.48895 -1.74541 -0.577573
-1.74541 -4.48895 -0.577573
-0.853195 4.66005 0.675333
--4.66005 0.853195 0.675333
--0.853195 -4.66005 0.675333
-4.66005 -0.853195 0.675333
-3.63466 3.05175 0.666012
--3.05175 3.63466 0.666012
--3.63466 -3.05175 0.666012
-3.05175 -3.63466 0.666012
-4.36081 1.16769 0.857527
--1.16769 4.36081 0.857527
--4.36081 -1.16769 0.857527
-1.16769 -4.36081 0.857527
-4.5714 1.21055 0.684547
--1.21055 4.5714 0.684547
--4.5714 -1.21055 0.684547
-1.21055 -4.5714 0.684547
-4.44296 0.800183 -0.857527
--0.800183 4.44296 -0.857527
--4.44296 -0.800183 -0.857527
-0.800183 -4.44296 -0.857527
-0.6137 4.49412 -0.844328
--4.49412 0.6137 -0.844328
--0.6137 -4.49412 -0.844328
-4.49412 -0.6137 -0.844328
-4.08511 1.86989 -0.870184
--1.86989 4.08511 -0.870184
--4.08511 -1.86989 -0.870184
-1.86989 -4.08511 -0.870184
-3.02501 3.29189 0.882291
--3.29189 3.02501 0.882291
--3.02501 -3.29189 0.882291
-3.29189 -3.02501 0.882291
-2.57474 3.62751 0.893841
--3.62751 2.57474 0.893841
--2.57474 -3.62751 0.893841
-3.62751 -2.57474 0.893841
-1.0713 4.36313 0.870184
--4.36313 1.0713 0.870184
--1.0713 -4.36313 0.870184
-4.36313 -1.0713 0.870184
-4.08029 1.55942 -0.929776
--1.55942 4.08029 -0.929776
--4.08029 -1.55942 -0.929776
-1.55942 -4.08029 -0.929776
-1.12913 4.18311 -0.942991
--4.18311 1.12913 -0.942991
--1.12913 -4.18311 -0.942991
-4.18311 -1.12913 -0.942991
-1.64849 4.01975 -0.938734
--4.01975 1.64849 -0.938734
--1.64849 -4.01975 -0.938734
-4.01975 -1.64849 -0.938734
-4.20286 1.31207 -0.915241
--1.31207 4.20286 -0.915241
--4.20286 -1.31207 -0.915241
-1.31207 -4.20286 -0.915241
-4.28479 0.324221 0.954865
--0.324221 4.28479 0.954865
--4.28479 -0.324221 0.954865
-0.324221 -4.28479 0.954865
-4.28796 1.04885 -0.910106
--1.04885 4.28796 -0.910106
--4.28796 -1.04885 -0.910106
-1.04885 -4.28796 -0.910106
-2.23586 3.62708 0.965382
--3.62708 2.23586 0.965382
--2.23586 -3.62708 0.965382
-3.62708 -2.23586 0.965382
-3.95319 1.22214 -0.990461
--1.22214 3.95319 -0.990461
--3.95319 -1.22214 -0.990461
-1.22214 -3.95319 -0.990461
-4.19932 0.0575231 0.979855
--0.0575231 4.19932 0.979855
--4.19932 -0.0575231 0.979855
-0.0575231 -4.19932 0.979855
-2.41422 3.42136 0.982287
--3.42136 2.41422 0.982287
--2.41422 -3.42136 0.982287
-3.42136 -2.41422 0.982287
-4.0128 0.3148 0.999684
--0.3148 4.0128 0.999684
--4.0128 -0.3148 0.999684
-0.3148 -4.0128 0.999684
-2.44445 3.26082 -0.997159
--3.26082 2.44445 -0.997159
--2.44445 -3.26082 -0.997159
-3.26082 -2.44445 -0.997159
-1.15949 3.77573 0.998737
--3.77573 1.15949 0.998737
--1.15949 -3.77573 0.998737
-3.77573 -1.15949 0.998737
-3.73899 0.303722 0.968583
--0.303722 3.73899 0.968583
--3.73899 -0.303722 0.968583
-0.303722 -3.73899 0.968583
-3.13121 2.50922 -0.999921
--2.50922 3.13121 -0.999921
--3.13121 -2.50922 -0.999921
-2.50922 -3.13121 -0.999921
-2.57445 3.01199 -0.999289
--3.01199 2.57445 -0.999289
--2.57445 -3.01199 -0.999289
-3.01199 -2.57445 -0.999289
-2.28788 3.03444 -0.979855
--3.03444 2.28788 -0.979855
--2.28788 -3.03444 -0.979855
-3.03444 -2.28788 -0.979855
-1.44853 3.47357 -0.971632
--3.47357 1.44853 -0.971632
--1.44853 -3.47357 -0.971632
-3.47357 -1.44853 -0.971632
-3.64638 0.390046 -0.942991
--0.390046 3.64638 -0.942991
--3.64638 -0.390046 -0.942991
-0.390046 -3.64638 -0.942991
-2.09846 3.00744 0.942991
--3.00744 2.09846 0.942991
--2.09846 -3.00744 0.942991
-3.00744 -2.09846 0.942991
-2.69922 2.05435 0.79399
--2.05435 2.69922 0.79399
--2.69922 -2.05435 0.79399
-2.05435 -2.69922 0.79399
-0.376586 3.55433 0.904827
--3.55433 0.376586 0.904827
--0.376586 -3.55433 0.904827
-3.55433 -0.376586 0.904827
-3.25019 0.282938 0.675333
--0.282938 3.25019 0.675333
--3.25019 -0.282938 0.675333
-0.282938 -3.25019 0.675333
-3.47329 0.292246 0.857527
--0.292246 3.47329 0.857527
--3.47329 -0.292246 0.857527
-0.292246 -3.47329 0.857527
-3.38731 1.17593 0.910106
--1.17593 3.38731 0.910106
--3.38731 -1.17593 0.910106
-1.17593 -3.38731 0.910106
-0.144493 3.47182 0.850994
--3.47182 0.144493 0.850994
--0.144493 -3.47182 0.850994
-3.47182 -0.144493 0.850994
-2.87562 1.6686 0.737513
--1.6686 2.87562 0.737513
--2.87562 -1.6686 0.737513
-1.6686 -2.87562 0.737513
-1.64157 2.73635 0.587785
--2.73635 1.64157 0.587785
--1.64157 -2.73635 0.587785
-2.73635 -1.64157 0.587785
-3.09483 0.506932 -0.503623
--0.506932 3.09483 -0.503623
--3.09483 -0.506932 -0.503623
-0.506932 -3.09483 -0.503623
-0.87659 2.96845 0.425779
--2.96845 0.87659 0.425779
--0.87659 -2.96845 0.425779
-2.96845 -0.87659 0.425779
-2.98994 0.480881 -0.236499
--0.480881 2.98994 -0.236499
--2.98994 -0.480881 -0.236499
-0.480881 -2.98994 -0.236499
-0.294979 3.02714 0.285019
--3.02714 0.294979 0.285019
--0.294979 -3.02714 0.285019
-3.02714 -0.294979 0.285019
-2.04957 2.30543 0.402906
--2.30543 2.04957 0.402906
--2.04957 -2.30543 0.402906
-2.30543 -2.04957 0.402906
-2.86051 1.25496 -0.481754
--1.25496 2.86051 -0.481754
--2.86051 -1.25496 -0.481754
-1.25496 -2.86051 -0.481754
-2.77156 1.2064 -0.212007
--1.2064 2.77156 -0.212007
--2.77156 -1.2064 -0.212007
-1.2064 -2.77156 -0.212007
-1.38482 2.70022 0.260842
--2.70022 1.38482 0.260842
--1.38482 -2.70022 0.260842
-2.70022 -1.38482 0.260842
-2.58811 1.52709 0.100362
--1.52709 2.58811 0.100362
--2.58811 -1.52709 0.100362
-1.52709 -2.58811 0.100362
-1.20244 2.76532 0.175023
--2.76532 1.20244 0.175023
--1.20244 -2.76532 0.175023
-2.76532 -1.20244 0.175023
-1.04014 2.86199 0.297042
--2.86199 1.04014 0.297042
--1.04014 -2.86199 0.297042
-2.86199 -1.04014 0.297042
-1.53041 2.59821 -0.175023
--2.59821 1.53041 -0.175023
--1.53041 -2.59821 -0.175023
-2.59821 -1.53041 -0.175023
-1.01703 2.82268 0.0251301
--2.82268 1.01703 0.0251301
--1.01703 -2.82268 0.0251301
-2.82268 -1.01703 0.0251301
-2.12102 2.12262 -0.0376902
--2.12262 2.12102 -0.0376902
--2.12102 -2.12262 -0.0376902
-2.12262 -2.12102 -0.0376902
-2.48152 1.68598 0.012566
--1.68598 2.48152 0.012566
--2.48152 -1.68598 0.012566
-1.68598 -2.48152 0.012566
-1.36167 2.67326 -0.012566
--2.67326 1.36167 -0.012566
--1.36167 -2.67326 -0.012566
-2.67326 -1.36167 -0.012566
-2.75582 1.1905 0.0627905
--1.1905 2.75582 0.0627905
--2.75582 -1.1905 0.0627905
-1.1905 -2.75582 0.0627905
-2.67346 1.36389 -0.0502443
--1.36389 2.67346 -0.0502443
--2.67346 -1.36389 -0.0502443
-1.36389 -2.67346 -0.0502443
-0.614206 4.94183 0.19971
--4.94183 0.614206 0.19971
--0.614206 -4.94183 0.19971
-4.94183 -0.614206 0.19971
-0.923295 4.89351 0.19971
--4.89351 0.923295 0.19971
--0.923295 -4.89351 0.19971
-4.89351 -0.923295 0.19971
-4.90846 0.931865 -0.0878512
--0.931865 4.90846 -0.0878512
--4.90846 -0.931865 -0.0878512
-0.931865 -4.90846 -0.0878512
-4.37723 2.4107 0.0753268
--2.4107 4.37723 0.0753268
--4.37723 -2.4107 0.0753268
-2.4107 -4.37723 0.0753268
-0.629001 4.959 -0.0502443
--4.959 0.629001 -0.0502443
--0.629001 -4.959 -0.0502443
-4.959 -0.629001 -0.0502443
-4.83927 1.23733 -0.100362
--1.23733 4.83927 -0.100362
--4.83927 -1.23733 -0.100362
-1.23733 -4.83927 -0.100362
-4.32737 2.39743 0.320944
--2.39743 4.32737 0.320944
--4.32737 -2.39743 0.320944
-2.39743 -4.32737 0.320944
-2.09826 4.49269 0.285019
--4.49269 2.09826 0.285019
--2.09826 -4.49269 0.285019
-4.49269 -2.09826 0.285019
-4.91885 0.328089 0.368125
--0.328089 4.91885 0.368125
--4.91885 -0.328089 0.368125
-0.328089 -4.91885 0.368125
-2.04445 4.40633 0.51444
--4.40633 2.04445 0.51444
--2.04445 -4.40633 0.51444
-4.40633 -2.04445 0.51444
-4.67914 1.17136 -0.567269
--1.17136 4.67914 -0.567269
--4.67914 -1.17136 -0.567269
-1.17136 -4.67914 -0.567269
-4.4173 2.05089 -0.492727
--2.05089 4.4173 -0.492727
--4.4173 -2.05089 -0.492727
-2.05089 -4.4173 -0.492727
-4.78787 1.21137 -0.344643
--1.21137 4.78787 -0.344643
--4.78787 -1.21137 -0.344643
-1.21137 -4.78787 -0.344643
-0.894653 4.81137 0.448383
--4.81137 0.894653 0.448383
--0.894653 -4.81137 0.448383
-4.81137 -0.894653 0.448383
-0.59078 4.85805 0.448383
--4.85805 0.59078 0.448383
--0.59078 -4.85805 0.448383
-4.85805 -0.59078 0.448383
-4.79006 0.332198 0.597905
--0.332198 4.79006 0.597905
--4.79006 -0.332198 0.597905
-0.332198 -4.79006 0.597905
-0.271799 4.80133 0.587785
--4.80133 0.271799 0.587785
--0.271799 -4.80133 0.587785
-4.80133 -0.271799 0.587785
-0.562065 4.72091 0.656586
--4.72091 0.562065 0.656586
--0.562065 -4.72091 0.656586
-4.72091 -0.562065 0.656586
-1.96424 4.26288 0.720309
--4.26288 1.96424 0.720309
--1.96424 -4.26288 0.720309
-4.26288 -1.96424 0.720309
-4.27863 1.9728 -0.70265
--1.9728 4.27863 -0.70265
--4.27863 -1.9728 -0.70265
-1.9728 -4.27863 -0.70265
-2.02217 4.20506 -0.745941
--4.20506 2.02217 -0.745941
--2.02217 -4.20506 -0.745941
-4.20506 -2.02217 -0.745941
-0.249357 4.62097 0.778462
--4.62097 0.249357 0.778462
--0.249357 -4.62097 0.778462
-4.62097 -0.249357 0.778462
-4.51091 1.11661 -0.762443
--1.11661 4.51091 -0.762443
--4.51091 -1.11661 -0.762443
-1.11661 -4.51091 -0.762443
-3.03663 3.61389 -0.693653
--3.61389 3.03663 -0.693653
--3.03663 -3.61389 -0.693653
-3.61389 -3.03663 -0.693653
-1.86481 4.07536 0.876307
--4.07536 1.86481 0.876307
--1.86481 -4.07536 0.876307
-4.07536 -1.86481 0.876307
-2.9198 3.45717 -0.850994
--3.45717 2.9198 -0.850994
--2.9198 -3.45717 -0.850994
-3.45717 -2.9198 -0.850994
-1.93842 4.00383 -0.893841
--4.00383 1.93842 -0.893841
--1.93842 -4.00383 -0.893841
-4.00383 -1.93842 -0.893841
-4.33773 0.878422 0.904827
--0.878422 4.33773 0.904827
--4.33773 -0.878422 0.904827
-0.878422 -4.33773 0.904827
-1.42865 3.77649 0.999289
--3.77649 1.42865 0.999289
--1.42865 -3.77649 0.999289
-3.77649 -1.42865 0.999289
-1.25124 4.03471 0.974527
--4.03471 1.25124 0.974527
--1.25124 -4.03471 0.974527
-4.03471 -1.25124 0.974527
-1.28847 3.76024 -0.999684
--3.76024 1.28847 -0.999684
--1.28847 -3.76024 -0.999684
-3.76024 -1.28847 -0.999684
-2.63242 3.2723 0.979855
--3.2723 2.63242 0.979855
--2.63242 -3.2723 0.979855
-3.2723 -2.63242 0.979855
-4.10197 0.841417 0.982287
--0.841417 4.10197 0.982287
--4.10197 -0.841417 0.982287
-0.841417 -4.10197 0.982287
-4.04603 0.978359 -0.986686
--0.978359 4.04603 -0.986686
--4.04603 -0.978359 -0.986686
-0.978359 -4.04603 -0.986686
-2.85885 2.95679 -0.993611
--2.95679 2.85885 -0.993611
--2.85885 -2.95679 -0.993611
-2.95679 -2.85885 -0.993611
-1.52623 4.004 0.958522
--4.004 1.52623 0.958522
--1.52623 -4.004 0.958522
-4.004 -1.52623 0.958522
-3.60691 2.22218 -0.971632
--2.22218 3.60691 -0.971632
--3.60691 -2.22218 -0.971632
-2.22218 -3.60691 -0.971632
-0.561053 3.93507 -0.999684
--3.93507 0.561053 -0.999684
--0.561053 -3.93507 -0.999684
-3.93507 -0.561053 -0.999684
-3.88274 1.06115 0.999684
--1.06115 3.88274 0.999684
--3.88274 -1.06115 0.999684
-1.06115 -3.88274 0.999684
-3.40011 2.083 -0.999921
--2.083 3.40011 -0.999921
--3.40011 -2.083 -0.999921
-2.083 -3.40011 -0.999921
-1.70899 3.47741 -0.992115
--3.47741 1.70899 -0.992115
--1.70899 -3.47741 -0.992115
-3.47741 -1.70899 -0.992115
-2.25429 3.21267 0.997159
--3.21267 2.25429 0.997159
--2.25429 -3.21267 0.997159
-3.21267 -2.25429 0.997159
-4.09731 0.577357 0.990461
--0.577357 4.09731 0.990461
--4.09731 -0.577357 0.990461
-0.577357 -4.09731 0.990461
-3.80486 0.909926 -0.996134
--0.909926 3.80486 -0.996134
--3.80486 -0.909926 -0.996134
-0.909926 -3.80486 -0.996134
-3.79642 0.171385 -0.979855
--0.171385 3.79642 -0.979855
--3.79642 -0.171385 -0.979855
-0.171385 -3.79642 -0.979855
-0.165275 3.72338 0.962028
--3.72338 0.165275 0.962028
--0.165275 -3.72338 0.962028
-3.72338 -0.165275 0.962028
-3.14314 2.20137 -0.986686
--2.20137 3.14314 -0.986686
--3.14314 -2.20137 -0.986686
-2.20137 -3.14314 -0.986686
-3.8549 0.800838 0.998027
--0.800838 3.8549 0.998027
--3.8549 -0.800838 0.998027
-0.800838 -3.8549 0.998027
-0.305784 3.78797 -0.979855
--3.78797 0.305784 -0.979855
--0.305784 -3.78797 -0.979855
-3.78797 -0.305784 -0.979855
-0.532805 3.66443 -0.954865
--3.66443 0.532805 -0.954865
--0.532805 -3.66443 -0.954865
-3.66443 -0.532805 -0.954865
-3.73297 0.643293 -0.977268
--0.643293 3.73297 -0.977268
--3.73297 -0.643293 -0.977268
-0.643293 -3.73297 -0.977268
-3.84774 0.552055 0.993611
--0.552055 3.84774 0.993611
--3.84774 -0.552055 0.993611
-0.552055 -3.84774 0.993611
-3.61193 0.759835 0.951057
--0.759835 3.61193 0.951057
--3.61193 -0.759835 0.951057
-0.759835 -3.61193 0.951057
-2.40182 2.66233 0.910106
--2.66233 2.40182 0.910106
--2.40182 -2.66233 0.910106
-2.66233 -2.40182 0.910106
-2.93352 2.33811 -0.968583
--2.33811 2.93352 -0.968583
--2.93352 -2.33811 -0.968583
-2.33811 -2.93352 -0.968583
-3.63964 1.00455 0.974527
--1.00455 3.63964 0.974527
--3.63964 -1.00455 0.974527
-1.00455 -3.63964 0.974527
-2.4584 2.41068 0.830596
--2.41068 2.4584 0.830596
--2.4584 -2.41068 0.830596
-2.41068 -2.4584 0.830596
-0.295116 3.53933 -0.893841
--3.53933 0.295116 -0.893841
--0.295116 -3.53933 -0.893841
-3.53933 -0.295116 -0.893841
-3.40401 0.354604 -0.816339
--0.354604 3.40401 -0.816339
--3.40401 -0.354604 -0.816339
-0.354604 -3.40401 -0.816339
-3.54841 0.150807 -0.893841
--0.150807 3.54841 -0.893841
--3.54841 -0.150807 -0.893841
-0.150807 -3.54841 -0.893841
-2.51202 2.17788 0.737513
--2.17788 2.51202 0.737513
--2.51202 -2.17788 0.737513
-2.17788 -2.51202 0.737513
-0.344471 3.3352 0.762443
--3.3352 0.344471 0.762443
--0.344471 -3.3352 0.762443
-3.3352 -0.344471 0.762443
-3.36172 0.0760532 0.770513
--0.0760532 3.36172 0.770513
--3.36172 -0.0760532 0.770513
-0.0760532 -3.36172 0.770513
-2.91008 1.45614 0.666012
--1.45614 2.91008 0.666012
--2.91008 -1.45614 0.666012
-1.45614 -2.91008 0.666012
-0.0750325 3.41139 -0.809017
--3.41139 0.0750325 -0.809017
--0.0750325 -3.41139 -0.809017
-3.41139 -0.0750325 -0.809017
-3.34075 0.133571 -0.754251
--0.133571 3.34075 -0.754251
--3.34075 -0.133571 -0.754251
-0.133571 -3.34075 -0.754251
-3.08302 1.533 0.830596
--1.533 3.08302 0.830596
--3.08302 -1.533 0.830596
-1.533 -3.08302 0.830596
-0.0791288 3.22852 -0.637424
--3.22852 0.0791288 -0.637424
--0.0791288 -3.22852 -0.637424
-3.22852 -0.0791288 -0.637424
-1.14497 3.10177 0.720309
--3.10177 1.14497 0.720309
--1.14497 -3.10177 0.720309
-3.10177 -1.14497 0.720309
-2.69046 1.80089 0.647056
--1.80089 2.69046 0.647056
--2.69046 -1.80089 0.647056
-1.80089 -2.69046 0.647056
-3.25257 0.541586 -0.711536
--0.541586 3.25257 -0.711536
--3.25257 -0.541586 -0.711536
-0.541586 -3.25257 -0.711536
-2.03571 2.58261 0.70265
--2.58261 2.03571 0.70265
--2.03571 -2.58261 0.70265
-2.58261 -2.03571 0.70265
-0.127393 3.26855 0.684547
--3.26855 0.127393 0.684547
--0.127393 -3.26855 0.684547
-3.26855 -0.127393 0.684547
-3.01833 0.66115 0.414376
--0.66115 3.01833 0.414376
--3.01833 -0.66115 0.414376
-0.66115 -3.01833 0.414376
-2.81375 1.20588 0.344643
--1.20588 2.81375 0.344643
--2.81375 -1.20588 0.344643
-1.20588 -2.81375 0.344643
-3.18998 0.0801897 0.587785
--0.0801897 3.18998 0.587785
--3.18998 -0.0801897 0.587785
-0.0801897 -3.18998 0.587785
-3.22097 0.327355 -0.647056
--0.327355 3.22097 -0.647056
--3.22097 -0.327355 -0.647056
-0.327355 -3.22097 -0.647056
-2.93289 1.04011 0.45958
--1.04011 2.93289 0.45958
--2.93289 -1.04011 0.45958
-1.04011 -2.93289 0.45958
-1.21335 2.83611 -0.402906
--2.83611 1.21335 -0.402906
--1.21335 -2.83611 -0.402906
-2.83611 -1.21335 -0.402906
-2.93054 0.841426 0.309017
--0.841426 2.93054 0.309017
--2.93054 -0.841426 0.309017
-0.841426 -2.93054 0.309017
-0.843717 2.9427 -0.344643
--2.9427 0.843717 -0.344643
--0.843717 -2.9427 -0.344643
-2.9427 -0.843717 -0.344643
-1.56624 2.67593 -0.437116
--2.67593 1.56624 -0.437116
--1.56624 -2.67593 -0.437116
-2.67593 -1.56624 -0.437116
-1.53229 2.58503 0.100362
--2.58503 1.53229 0.100362
--1.53229 -2.58503 0.100362
-2.58503 -1.53229 0.100362
-2.92277 1.24392 0.567269
--1.24392 2.92277 0.567269
--2.92277 -1.24392 0.567269
-1.24392 -2.92277 0.567269
-0.845414 2.89229 0.162637
--2.89229 0.845414 0.162637
--0.845414 -2.89229 0.162637
-2.89229 -0.845414 0.162637
-2.59281 1.53955 -0.175023
--1.53955 2.59281 -0.175023
--2.59281 -1.53955 -0.175023
-1.53955 -2.59281 -0.175023
-2.84621 1.01784 0.212007
--1.01784 2.84621 0.212007
--2.84621 -1.01784 0.212007
-1.01784 -2.84621 0.212007
-2.6962 1.36653 0.212007
--1.36653 2.6962 0.212007
--2.6962 -1.36653 0.212007
-1.36653 -2.6962 0.212007
-0.652619 2.94397 -0.175023
--2.94397 0.652619 -0.175023
--0.652619 -2.94397 -0.175023
-2.94397 -0.652619 -0.175023
-1.86325 2.41837 -0.320944
--2.41837 1.86325 -0.320944
--1.86325 -2.41837 -0.320944
-2.41837 -1.86325 -0.320944
-1.56757 2.62946 0.344643
--2.62946 1.56757 0.344643
--1.56757 -2.62946 0.344643
-2.62946 -1.56757 0.344643
-2.77413 1.39728 0.448383
--1.39728 2.77413 0.448383
--2.77413 -1.39728 0.448383
-1.39728 -2.77413 0.448383
-1.70436 2.49641 0.212007
--2.49641 1.70436 0.212007
--1.70436 -2.49641 0.212007
-2.49641 -1.70436 0.212007
-1.01968 2.85477 -0.24869
--2.85477 1.01968 -0.24869
--1.01968 -2.85477 -0.24869
-2.85477 -1.01968 -0.24869
-2.93095 0.657852 -0.0878512
--0.657852 2.93095 -0.0878512
--2.93095 -0.657852 -0.0878512
-0.657852 -2.93095 -0.0878512
-1.99336 2.25473 0.13779
--2.25473 1.99336 0.13779
--1.99336 -2.25473 0.13779
-2.25473 -1.99336 0.13779
-2.94181 0.652529 0.162637
--0.652529 2.94181 0.162637
--2.94181 -0.652529 0.162637
-0.652529 -2.94181 0.162637
-3.63228 3.39465 -0.236499
--3.39465 3.63228 -0.236499
--3.63228 -3.39465 -0.236499
-3.39465 -3.63228 -0.236499
-3.64522 3.42222 -0.012566
--3.42222 3.64522 -0.012566
--3.64522 -3.42222 -0.012566
-3.42222 -3.64522 -0.012566
-4.83196 1.24776 0.13779
--1.24776 4.83196 0.13779
--4.83196 -1.24776 0.13779
-1.24776 -4.83196 0.13779
-2.11852 4.46127 -0.344643
--4.46127 2.11852 -0.344643
--2.11852 -4.46127 -0.344643
-4.46127 -2.11852 -0.344643
-2.61967 4.16486 0.391374
--4.16486 2.61967 0.391374
--2.61967 -4.16486 0.391374
-4.16486 -2.61967 0.391374
-2.8655 3.98073 0.425779
--3.98073 2.8655 0.425779
--2.8655 -3.98073 0.425779
-3.98073 -2.8655 0.425779
-2.91696 4.03294 0.212007
--4.03294 2.91696 0.212007
--2.91696 -4.03294 0.212007
-4.03294 -2.91696 0.212007
-2.30595 4.25256 0.546394
--4.25256 2.30595 0.546394
--2.30595 -4.25256 0.546394
-4.25256 -2.30595 0.546394
-2.83064 3.83995 -0.637424
--3.83995 2.83064 -0.637424
--2.83064 -3.83995 -0.637424
-3.83995 -2.83064 -0.637424
-2.08255 4.35863 -0.556876
--4.35863 2.08255 -0.556876
--2.08255 -4.35863 -0.556876
-4.35863 -2.08255 -0.556876
-1.21374 4.58811 -0.666012
--4.58811 1.21374 -0.666012
--1.21374 -4.58811 -0.666012
-4.58811 -1.21374 -0.666012
-2.55124 4.0765 0.587785
--4.0765 2.55124 0.587785
--2.55124 -4.0765 0.587785
-4.0765 -2.55124 0.587785
-4.22227 2.02914 0.728969
--2.02914 4.22227 0.728969
--4.22227 -2.02914 0.728969
-2.02914 -4.22227 0.728969
-2.22319 4.1234 0.728969
--4.1234 2.22319 0.728969
--2.22319 -4.1234 0.728969
-4.1234 -2.22319 0.728969
-2.73705 3.69449 -0.801567
--3.69449 2.73705 -0.801567
--2.73705 -3.69449 -0.801567
-3.69449 -2.73705 -0.801567
-1.17858 4.41258 -0.823533
--4.41258 1.17858 -0.823533
--1.17858 -4.41258 -0.823533
-4.41258 -1.17858 -0.823533
-1.61854 4.21432 0.857527
--4.21432 1.61854 0.857527
--1.61854 -4.21432 0.857527
-4.21432 -1.61854 0.857527
-4.1029 2.29807 0.711536
--2.29807 4.1029 0.711536
--4.1029 -2.29807 0.711536
-2.29807 -4.1029 0.711536
-3.94305 2.22027 0.850994
--2.22027 3.94305 0.850994
--3.94305 -2.22027 0.850994
-2.22027 -3.94305 0.850994
-3.80041 2.35459 -0.882291
--2.35459 3.80041 -0.882291
--3.80041 -2.35459 -0.882291
-2.35459 -3.80041 -0.882291
-2.91122 3.58461 0.786288
--3.58461 2.91122 0.786288
--2.91122 -3.58461 0.786288
-3.58461 -2.91122 0.786288
-0.323851 4.27276 -0.958522
--4.27276 0.323851 -0.958522
--0.323851 -4.27276 -0.958522
-4.27276 -0.323851 -0.958522
-0.049624 4.43684 -0.899405
--4.43684 0.049624 -0.899405
--0.049624 -4.43684 -0.899405
-4.43684 -0.049624 -0.899405
-2.12271 3.95963 0.870184
--3.95963 2.12271 0.870184
--2.12271 -3.95963 0.870184
-3.95963 -2.12271 0.870184
-2.78235 3.44181 0.904827
--3.44181 2.78235 0.904827
--2.78235 -3.44181 0.904827
-3.44181 -2.78235 0.904827
-4.05478 1.95995 0.863923
--1.95995 4.05478 0.863923
--4.05478 -1.95995 0.863923
-1.95995 -4.05478 0.863923
-4.20728 0.746279 -0.962028
--0.746279 4.20728 -0.962028
--4.20728 -0.746279 -0.962028
-0.746279 -4.20728 -0.962028
-4.12461 1.11612 0.962028
--1.11612 4.12461 0.962028
--4.12461 -1.11612 0.962028
-1.11612 -4.12461 0.962028
-1.41825 4.20435 -0.899405
--4.20435 1.41825 -0.899405
--1.41825 -4.20435 -0.899405
-4.20435 -1.41825 -0.899405
-3.86455 1.87879 0.954865
--1.87879 3.86455 0.954865
--3.86455 -1.87879 0.954865
-1.87879 -3.86455 0.954865
-1.35927 3.99961 -0.974527
--3.99961 1.35927 -0.974527
--1.35927 -3.99961 -0.974527
-3.99961 -1.35927 -0.974527
-3.9773 0.695696 -0.999289
--0.695696 3.9773 -0.999289
--3.9773 -0.695696 -0.999289
-0.695696 -3.9773 -0.999289
-2.01603 3.78114 0.958522
--3.78114 2.01603 0.958522
--2.01603 -3.78114 0.958522
-3.78114 -2.01603 0.958522
-3.76028 2.12857 0.947098
--2.12857 3.76028 0.947098
--3.76028 -2.12857 0.947098
-2.12857 -3.76028 0.947098
-3.14387 2.87591 -0.965382
--2.87591 3.14387 -0.965382
--3.14387 -2.87591 -0.965382
-2.87591 -3.14387 -0.965382
-3.8566 1.31716 0.997159
--1.31716 3.8566 0.997159
--3.8566 -1.31716 0.997159
-1.31716 -3.8566 0.997159
-0.0567979 4.22389 -0.974527
--4.22389 0.0567979 -0.974527
--0.0567979 -4.22389 -0.974527
-4.22389 -0.0567979 -0.974527
-3.6434 1.93495 -0.992115
--1.93495 3.6434 -0.992115
--3.6434 -1.93495 -0.992115
-1.93495 -3.6434 -0.992115
-2.98538 2.71854 -0.999289
--2.71854 2.98538 -0.999289
--2.98538 -2.71854 -0.999289
-2.71854 -2.98538 -0.999289
-3.67192 1.52204 0.999684
--1.52204 3.67192 0.999684
--3.67192 -1.52204 0.999684
-1.52204 -3.67192 0.999684
-3.88325 1.59935 0.979855
--1.59935 3.88325 0.979855
--3.88325 -1.59935 0.979855
-1.59935 -3.88325 0.979855
-3.66111 1.79014 0.997159
--1.79014 3.66111 0.997159
--3.66111 -1.79014 0.997159
-1.79014 -3.66111 0.997159
-0.315749 4.03792 -0.998737
--4.03792 0.315749 -0.998737
--0.315749 -4.03792 -0.998737
-4.03792 -0.315749 -0.998737
-0.411231 3.79038 0.982287
--3.79038 0.411231 0.982287
--0.411231 -3.79038 0.982287
-3.79038 -0.411231 0.982287
-3.43738 1.81502 -0.993611
--1.81502 3.43738 -0.993611
--3.43738 -1.81502 -0.993611
-1.81502 -3.43738 -0.993611
-1.33139 3.54631 0.977268
--3.54631 1.33139 0.977268
--1.33139 -3.54631 0.977268
-3.54631 -1.33139 0.977268
-1.74094 3.30915 0.965382
--3.30915 1.74094 0.965382
--1.74094 -3.30915 0.965382
-3.30915 -1.74094 0.965382
-2.82476 2.56062 -0.982287
--2.56062 2.82476 -0.982287
--2.82476 -2.56062 -0.982287
-2.56062 -2.82476 -0.982287
-3.45074 1.44003 0.965382
--1.44003 3.45074 0.965382
--3.45074 -1.44003 0.965382
-1.44003 -3.45074 0.965382
-2.56928 2.8336 0.984564
--2.8336 2.56928 0.984564
--2.56928 -2.8336 0.984564
-2.8336 -2.56928 0.984564
-2.69992 2.77911 -0.992115
--2.77911 2.69992 -0.992115
--2.69992 -2.77911 -0.992115
-2.77911 -2.69992 -0.992115
-3.62844 1.24892 0.986686
--1.24892 3.62844 0.986686
--3.62844 -1.24892 0.986686
-1.24892 -3.62844 0.986686
-0.782245 3.74413 -0.984564
--3.74413 0.782245 -0.984564
--0.782245 -3.74413 -0.984564
-3.74413 -0.782245 -0.984564
-0.0709646 3.61953 -0.925077
--3.61953 0.0709646 -0.925077
--0.0709646 -3.61953 -0.925077
-3.61953 -0.0709646 -0.925077
-2.76515 2.19314 -0.882291
--2.19314 2.76515 -0.882291
--2.76515 -2.19314 -0.882291
-2.19314 -2.76515 -0.882291
-2.66233 2.40182 -0.910106
--2.40182 2.66233 -0.910106
--2.66233 -2.40182 -0.910106
-2.40182 -2.66233 -0.910106
-0.745987 3.53068 -0.920232
--3.53068 0.745987 -0.920232
--0.745987 -3.53068 -0.920232
-3.53068 -0.745987 -0.920232
-2.55303 2.61604 -0.938734
--2.61604 2.55303 -0.938734
--2.55303 -2.61604 -0.938734
-2.61604 -2.55303 -0.938734
-3.24363 1.3627 0.876307
--1.3627 3.24363 0.876307
--3.24363 -1.3627 0.876307
-1.3627 -3.24363 0.876307
-1.36657 3.25399 -0.882291
--3.25399 1.36657 -0.882291
--1.36657 -3.25399 -0.882291
-3.25399 -1.36657 -0.882291
-0.979493 3.25804 0.801567
--3.25804 0.979493 0.801567
--0.979493 -3.25804 0.801567
-3.25804 -0.979493 0.801567
-2.4177 2.46619 -0.837528
--2.46619 2.4177 -0.837528
--2.4177 -2.46619 -0.837528
-2.46619 -2.4177 -0.837528
-3.26573 0.759767 -0.762443
--0.759767 3.26573 -0.762443
--3.26573 -0.759767 -0.762443
-0.759767 -3.26573 -0.762443
-1.1285 3.23102 -0.816339
--3.23102 1.1285 -0.816339
--1.1285 -3.23102 -0.816339
-3.23102 -1.1285 -0.816339
-3.39868 0.723453 0.850994
--0.723453 3.39868 0.850994
--3.39868 -0.723453 0.850994
-0.723453 -3.39868 0.850994
-1.86052 2.78939 -0.762443
--2.78939 1.86052 -0.762443
--1.86052 -2.78939 -0.762443
-2.78939 -1.86052 -0.762443
-2.25263 2.50961 0.778462
--2.50961 2.25263 0.778462
--2.25263 -2.50961 0.778462
-2.50961 -2.25263 0.778462
-0.479367 3.15477 -0.587785
--3.15477 0.479367 -0.587785
--0.479367 -3.15477 -0.587785
-3.15477 -0.479367 -0.587785
-0.752138 3.23847 0.737513
--3.23847 0.752138 0.737513
--0.752138 -3.23847 0.737513
-3.23847 -0.752138 0.737513
-2.52374 2.26646 -0.79399
--2.26646 2.52374 -0.79399
--2.52374 -2.26646 -0.79399
-2.26646 -2.52374 -0.79399
-0.530696 3.20207 0.656586
--3.20207 0.530696 0.656586
--0.530696 -3.20207 0.656586
-3.20207 -0.530696 0.656586
-1.29246 2.93395 0.60793
--2.93395 1.29246 0.60793
--1.29246 -2.93395 0.60793
-2.93395 -1.29246 0.60793
-0.866244 3.04873 -0.556876
--3.04873 0.866244 -0.556876
--0.866244 -3.04873 -0.556876
-3.04873 -0.866244 -0.556876
-3.07082 1.29828 0.745941
--1.29828 3.07082 0.745941
--3.07082 -1.29828 0.745941
-1.29828 -3.07082 0.745941
-1.30156 3.07967 -0.754251
--3.07967 1.30156 -0.754251
--1.30156 -3.07967 -0.754251
-3.07967 -1.30156 -0.754251
-1.04333 2.9443 -0.481754
--2.9443 1.04333 -0.481754
--1.04333 -2.9443 -0.481754
-2.9443 -1.04333 -0.481754
-2.73133 1.59407 0.546394
--1.59407 2.73133 0.546394
--2.73133 -1.59407 0.546394
-1.59407 -2.73133 0.546394
-2.46312 1.931 -0.492727
--1.931 2.46312 -0.492727
--2.46312 -1.931 -0.492727
-1.931 -2.46312 -0.492727
-2.14127 2.39643 0.61786
--2.39643 2.14127 0.61786
--2.14127 -2.39643 0.61786
-2.39643 -2.14127 0.61786
-0.27833 3.11127 -0.481754
--3.11127 0.27833 -0.481754
--0.27833 -3.11127 -0.481754
-3.11127 -0.27833 -0.481754
-1.08572 2.96302 0.535827
--2.96302 1.08572 0.535827
--1.08572 -2.96302 0.535827
-2.96302 -1.08572 0.535827
-0.70964 3.08894 0.556876
--3.08894 0.70964 0.556876
--0.70964 -3.08894 0.556876
-3.08894 -0.70964 0.556876
-3.17424 0.118924 -0.567269
--0.118924 3.17424 -0.567269
--3.17424 -0.118924 -0.567269
-0.118924 -3.17424 -0.567269
-3.03093 1.11492 -0.637424
--1.11492 3.03093 -0.637424
--3.03093 -1.11492 -0.637424
-1.11492 -3.03093 -0.637424
-0.922411 3.09495 0.637424
--3.09495 0.922411 0.637424
--0.922411 -3.09495 0.637424
-3.09495 -0.922411 0.637424
-1.50265 2.89584 0.675333
--2.89584 1.50265 0.675333
--1.50265 -2.89584 0.675333
-2.89584 -1.50265 0.675333
-2.40766 2.15239 -0.637424
--2.15239 2.40766 -0.637424
--2.40766 -2.15239 -0.637424
-2.15239 -2.40766 -0.637424
-1.07993 3.06963 -0.666012
--3.06963 1.07993 -0.666012
--1.07993 -3.06963 -0.666012
-3.06963 -1.07993 -0.666012
-2.59465 1.78438 -0.525175
--1.78438 2.59465 -0.525175
--2.59465 -1.78438 -0.525175
-1.78438 -2.59465 -0.525175
-2.64865 1.58127 -0.402906
--1.58127 2.64865 -0.402906
--2.64865 -1.58127 -0.402906
-1.58127 -2.64865 -0.402906
-1.87628 2.40326 0.309017
--2.40326 1.87628 0.309017
--1.87628 -2.40326 0.309017
-2.40326 -1.87628 0.309017
-2.31649 2.06096 -0.437116
--2.06096 2.31649 -0.437116
--2.31649 -2.06096 -0.437116
-2.06096 -2.31649 -0.437116
-0.83548 2.88657 -0.100362
--2.88657 0.83548 -0.100362
--0.83548 -2.88657 -0.100362
-2.88657 -0.83548 -0.100362
-0.100019 3.01378 0.175023
--3.01378 0.100019 0.175023
--0.100019 -3.01378 0.175023
-3.01378 -0.100019 0.175023
-1.23925 2.8305 0.414376
--2.8305 1.23925 0.414376
--1.23925 -2.8305 0.414376
-2.8305 -1.23925 0.414376
-2.88424 0.835592 0.0753268
--0.835592 2.88424 0.0753268
--2.88424 -0.835592 0.0753268
-0.835592 -2.88424 0.0753268
-4.71491 1.54639 0.272952
--1.54639 4.71491 0.272952
--4.71491 -1.54639 0.272952
-1.54639 -4.71491 0.272952
-2.39671 4.37521 0.150226
--4.37521 2.39671 0.150226
--2.39671 -4.37521 0.150226
-4.37521 -2.39671 0.150226
-2.12521 4.52369 0.0627905
--4.52369 2.12521 0.0627905
--2.12521 -4.52369 0.0627905
-4.52369 -2.12521 0.0627905
-2.41036 4.37922 -0.0502443
--4.37922 2.41036 -0.0502443
--2.41036 -4.37922 -0.0502443
-4.37922 -2.41036 -0.0502443
-4.94838 0.616914 -0.162637
--0.616914 4.94838 -0.162637
--4.94838 -0.616914 -0.162637
-0.616914 -4.94838 -0.162637
-4.95963 0.628447 0.0376902
--0.628447 4.95963 0.0376902
--4.95963 -0.628447 0.0376902
-0.628447 -4.95963 0.0376902
-2.13107 4.51256 -0.13779
--4.51256 2.13107 -0.13779
--2.13107 -4.51256 -0.13779
-4.51256 -2.13107 -0.13779
-1.82537 4.63586 0.187381
--4.63586 1.82537 0.187381
--1.82537 -4.63586 0.187381
-4.63586 -1.82537 0.187381
-4.75141 1.54779 0.0753268
--1.54779 4.75141 0.0753268
--4.75141 -1.54779 0.0753268
-1.54779 -4.75141 0.0753268
-3.41745 3.6255 -0.187381
--3.6255 3.41745 -0.187381
--3.41745 -3.6255 -0.187381
-3.6255 -3.41745 -0.187381
-2.36136 4.33262 0.356412
--4.33262 2.36136 0.356412
--2.36136 -4.33262 0.356412
-4.33262 -2.36136 0.356412
-2.37971 4.28266 -0.437116
--4.28266 2.37971 -0.437116
--2.37971 -4.28266 -0.437116
-4.28266 -2.37971 -0.437116
-4.23185 2.35774 0.535827
--2.35774 4.23185 0.535827
--4.23185 -2.35774 0.535827
-2.35774 -4.23185 0.535827
-2.40457 4.34797 -0.24869
--4.34797 2.40457 -0.24869
--2.40457 -4.34797 -0.24869
-4.34797 -2.40457 -0.24869
-4.89764 0.600591 -0.356412
--0.600591 4.89764 -0.356412
--4.89764 -0.600591 -0.356412
-0.600591 -4.89764 -0.356412
-3.38253 3.57312 -0.391374
--3.57312 3.38253 -0.391374
--3.38253 -3.57312 -0.391374
-3.57312 -3.38253 -0.391374
-2.33692 4.18582 -0.60793
--4.18582 2.33692 -0.60793
--2.33692 -4.18582 -0.60793
-4.18582 -2.33692 -0.60793
-3.02085 3.70245 0.627691
--3.70245 3.02085 0.627691
--3.02085 -3.70245 0.627691
-3.70245 -3.02085 0.627691
-3.09779 3.78121 0.45958
--3.78121 3.09779 0.45958
--3.09779 -3.78121 0.45958
-3.78121 -3.09779 0.45958
-4.4601 1.79838 0.587785
--1.79838 4.4601 0.587785
--4.4601 -1.79838 0.587785
-1.79838 -4.4601 0.587785
-4.80949 0.579968 -0.535827
--0.579968 4.80949 -0.535827
--4.80949 -0.579968 -0.535827
-0.579968 -4.80949 -0.535827
-3.58299 3.33344 -0.448383
--3.33344 3.58299 -0.448383
--3.58299 -3.33344 -0.448383
-3.33344 -3.58299 -0.448383
-0.929933 4.71066 -0.597905
--4.71066 0.929933 -0.597905
--0.929933 -4.71066 -0.597905
-4.71066 -0.929933 -0.597905
-4.53197 1.43672 -0.656586
--1.43672 4.53197 -0.656586
--4.53197 -1.43672 -0.656586
-1.43672 -4.53197 -0.656586
-4.352 2.08005 0.567269
--2.08005 4.352 0.567269
--4.352 -2.08005 0.567269
-2.08005 -4.352 0.567269
-2.78746 3.89084 0.61786
--3.89084 2.78746 0.61786
--2.78746 -3.89084 0.61786
-3.89084 -2.78746 0.61786
-0.332178 4.65417 -0.745941
--4.65417 0.332178 -0.745941
--0.332178 -4.65417 -0.745941
-4.65417 -0.332178 -0.745941
-4.32373 1.75414 0.745941
--1.75414 4.32373 0.745941
--4.32373 -1.75414 0.745941
-1.75414 -4.32373 0.745941
-3.5108 3.25313 -0.61786
--3.25313 3.5108 -0.61786
--3.5108 -3.25313 -0.61786
-3.25313 -3.5108 -0.61786
-4.84303 0.277823 -0.525175
--0.277823 4.84303 -0.525175
--4.84303 -0.277823 -0.525175
-0.277823 -4.84303 -0.525175
-3.32308 3.49622 -0.567269
--3.49622 3.32308 -0.567269
--3.32308 -3.49622 -0.567269
-3.49622 -3.32308 -0.567269
-3.41501 3.15164 -0.762443
--3.15164 3.41501 -0.762443
--3.41501 -3.15164 -0.762443
-3.15164 -3.41501 -0.762443
-0.912881 4.57584 -0.745941
--4.57584 0.912881 -0.745941
--0.912881 -4.57584 -0.745941
-4.57584 -0.912881 -0.745941
-0.329415 4.48063 -0.870184
--4.48063 0.329415 -0.870184
--0.329415 -4.48063 -0.870184
-4.48063 -0.329415 -0.870184
-0.530323 4.54675 0.816339
--4.54675 0.530323 0.816339
--0.530323 -4.54675 0.816339
-4.54675 -0.530323 0.816339
-2.46144 3.95286 0.754251
--3.95286 2.46144 0.754251
--2.46144 -3.95286 0.754251
-3.95286 -2.46144 0.754251
-4.51513 0.615413 0.830596
--0.615413 4.51513 0.830596
--4.51513 -0.615413 0.830596
-0.615413 -4.51513 0.830596
-3.76033 2.6804 -0.786288
--2.6804 3.76033 -0.786288
--3.76033 -2.6804 -0.786288
-2.6804 -3.76033 -0.786288
-4.72174 0.261341 -0.684547
--0.261341 4.72174 -0.684547
--4.72174 -0.261341 -0.684547
-0.261341 -4.72174 -0.684547
-2.69877 3.78309 0.762443
--3.78309 2.69877 0.762443
--2.69877 -3.78309 0.762443
-3.78309 -2.69877 0.762443
-4.62618 0.844591 -0.711536
--0.844591 4.62618 -0.711536
--4.62618 -0.844591 -0.711536
-0.844591 -4.62618 -0.711536
-2.36715 3.81853 0.870184
--3.81853 2.36715 0.870184
--2.36715 -3.81853 0.870184
-3.81853 -2.36715 0.870184
-3.24044 3.39557 -0.720309
--3.39557 3.24044 -0.720309
--3.24044 -3.39557 -0.720309
-3.39557 -3.24044 -0.720309
-4.39528 1.38367 -0.79399
--1.38367 4.39528 -0.79399
--4.39528 -1.38367 -0.79399
-1.38367 -4.39528 -0.79399
-3.61865 2.56776 -0.899405
--2.56776 3.61865 -0.899405
--3.61865 -2.56776 -0.899405
-2.56776 -3.61865 -0.899405
-0.499433 4.36288 0.920232
--4.36288 0.499433 0.920232
--0.499433 -4.36288 0.920232
-4.36288 -0.499433 0.920232
-3.02026 3.13948 -0.934329
--3.13948 3.02026 -0.934329
--3.02026 -3.13948 -0.934329
-3.13948 -3.02026 -0.934329
-3.13807 3.27509 -0.844328
--3.27509 3.13807 -0.844328
--3.13807 -3.27509 -0.844328
-3.27509 -3.13807 -0.844328
-3.29189 3.02501 -0.882291
--3.02501 3.29189 -0.882291
--3.29189 -3.02501 -0.882291
-3.02501 -3.29189 -0.882291
-4.31516 0.598102 0.934329
--0.598102 4.31516 0.934329
--4.31516 -0.598102 0.934329
-0.598102 -4.31516 0.934329
-1.0752 3.94391 -0.996134
--3.94391 1.0752 -0.996134
--1.0752 -3.94391 -0.996134
-3.94391 -1.0752 -0.996134
-3.46704 2.80491 -0.888136
--2.80491 3.46704 -0.888136
--3.46704 -2.80491 -0.888136
-2.80491 -3.46704 -0.888136
-4.23131 0.20967 -0.971632
--0.20967 4.23131 -0.971632
--4.23131 -0.20967 -0.971632
-0.20967 -4.23131 -0.971632
-3.31825 2.67283 -0.965382
--2.67283 3.31825 -0.965382
--3.31825 -2.67283 -0.965382
-2.67283 -3.31825 -0.965382
-3.85718 1.46305 -0.992115
--1.46305 3.85718 -0.992115
--3.85718 -1.46305 -0.992115
-1.46305 -3.85718 -0.992115
-2.86731 3.13527 0.968583
--3.13527 2.86731 0.968583
--2.86731 -3.13527 0.968583
-3.13527 -2.86731 0.968583
-4.20979 0.474942 -0.971632
--0.474942 4.20979 -0.971632
--4.20979 -0.474942 -0.971632
-0.474942 -4.20979 -0.971632
-1.76364 3.8787 0.965382
--3.8787 1.76364 0.965382
--1.76364 -3.8787 0.965382
-3.8787 -1.76364 0.965382
-2.72737 2.99432 0.998737
--2.99432 2.72737 0.998737
--2.72737 -2.99432 0.998737
-2.99432 -2.72737 0.998737
-3.46602 1.70393 0.990461
--1.70393 3.46602 0.990461
--3.46602 -1.70393 0.990461
-1.70393 -3.46602 0.990461
-4.02061 0.19062 -0.999684
--0.19062 4.02061 -0.999684
--4.02061 -0.19062 -0.999684
-0.19062 -4.02061 -0.999684
-1.02712 3.73605 -0.992115
--3.73605 1.02712 -0.992115
--1.02712 -3.73605 -0.992115
-3.73605 -1.02712 -0.992115
-3.64928 1.37476 -0.994951
--1.37476 3.64928 -0.994951
--3.64928 -1.37476 -0.994951
-1.37476 -3.64928 -0.994951
-3.23231 1.85554 0.962028
--1.85554 3.23231 0.962028
--3.23231 -1.85554 0.962028
-1.85554 -3.23231 0.962028
-1.67422 3.70179 0.998027
--3.70179 1.67422 0.998027
--1.67422 -3.70179 0.998027
-3.70179 -1.67422 0.998027
-3.40763 1.94708 0.997159
--1.94708 3.40763 0.997159
--3.40763 -1.94708 0.997159
-1.94708 -3.40763 0.997159
-3.27693 1.61967 0.938734
--1.61967 3.27693 0.938734
--3.27693 -1.61967 0.938734
-1.61967 -3.27693 0.938734
-3.55575 1.60118 -0.994951
--1.60118 3.55575 -0.994951
--3.55575 -1.60118 -0.994951
-1.60118 -3.55575 -0.994951
-3.05705 1.76362 0.882291
--1.76362 3.05705 0.882291
--3.05705 -1.76362 0.882291
-1.76362 -3.05705 0.882291
-3.36873 1.50832 -0.951057
--1.50832 3.36873 -0.951057
--3.36873 -1.50832 -0.951057
-1.50832 -3.36873 -0.951057
-2.42835 2.82737 -0.962028
--2.82737 2.42835 -0.962028
--2.42835 -2.82737 -0.962028
-2.82737 -2.42835 -0.962028
-0.937899 3.357 -0.857527
--3.357 0.937899 -0.857527
--0.937899 -3.357 -0.857527
-3.357 -0.937899 -0.857527
-2.96997 2.07009 -0.925077
--2.07009 2.96997 -0.925077
--2.96997 -2.07009 -0.925077
-2.07009 -2.96997 -0.925077
-0.565527 3.36502 0.809017
--3.36502 0.565527 0.809017
--0.565527 -3.36502 0.809017
-3.36502 -0.565527 0.809017
-3.22068 0.966496 -0.770513
--0.966496 3.22068 -0.770513
--3.22068 -0.966496 -0.770513
-0.966496 -3.22068 -0.770513
-0.979666 3.5339 -0.942991
--3.5339 0.979666 -0.942991
--0.979666 -3.5339 -0.942991
-3.5339 -0.979666 -0.942991
-2.31215 2.68115 -0.888136
--2.68115 2.31215 -0.888136
--2.31215 -2.68115 -0.888136
-2.68115 -2.31215 -0.888136
-1.73708 2.87914 0.770513
--2.87914 1.73708 0.770513
--1.73708 -2.87914 0.770513
-2.87914 -1.73708 0.770513
-0.712934 3.3369 -0.809017
--3.3369 0.712934 -0.809017
--0.712934 -3.3369 -0.809017
-3.3369 -0.712934 -0.809017
-3.38884 1.02486 -0.888136
--1.02486 3.38884 -0.888136
--3.38884 -1.02486 -0.888136
-1.02486 -3.38884 -0.888136
-2.86756 2.17168 0.915241
--2.17168 2.86756 0.915241
--2.86756 -2.17168 0.915241
-2.17168 -2.86756 0.915241
-1.48853 2.98324 -0.745941
--2.98324 1.48853 -0.745941
--1.48853 -2.98324 -0.745941
-2.98324 -1.48853 -0.745941
-3.18086 1.17825 -0.79399
--1.17825 3.18086 -0.79399
--3.18086 -1.17825 -0.79399
-1.17825 -3.18086 -0.79399
-2.84013 1.89127 0.809017
--1.89127 2.84013 0.809017
--2.84013 -1.89127 0.809017
-1.89127 -2.84013 0.809017
-2.99212 1.32168 -0.684547
--1.32168 2.99212 -0.684547
--2.99212 -1.32168 -0.684547
-1.32168 -2.99212 -0.684547
-3.19243 1.11682 0.786288
--1.11682 3.19243 0.786288
--3.19243 -1.11682 0.786288
-1.11682 -3.19243 0.786288
-1.96948 2.837 0.837528
--2.837 1.96948 0.837528
--1.96948 -2.837 0.837528
-2.837 -1.96948 0.837528
-0.510906 3.45885 -0.863923
--3.45885 0.510906 -0.863923
--0.510906 -3.45885 -0.863923
-3.45885 -0.510906 -0.863923
-0.601376 3.53483 0.910106
--3.53483 0.601376 0.910106
--0.601376 -3.53483 0.910106
-3.53483 -0.601376 0.910106
-2.98845 1.98138 0.910106
--1.98138 2.98845 0.910106
--2.98845 -1.98138 0.910106
-1.98138 -2.98845 0.910106
-2.82864 1.96314 -0.830596
--1.96314 2.82864 -0.830596
--2.82864 -1.96314 -0.830596
-1.96314 -2.82864 -0.830596
-2.31768 2.28414 0.666012
--2.28414 2.31768 0.666012
--2.31768 -2.28414 0.666012
-2.28414 -2.31768 0.666012
-1.35825 3.06552 0.762443
--3.06552 1.35825 0.762443
--1.35825 -3.06552 0.762443
-3.06552 -1.35825 0.762443
-0.898946 3.19126 -0.728969
--3.19126 0.898946 -0.728969
--0.898946 -3.19126 -0.728969
-3.19126 -0.898946 -0.728969
-1.43078 2.85223 -0.587785
--2.85223 1.43078 -0.587785
--1.43078 -2.85223 -0.587785
-2.85223 -1.43078 -0.587785
-2.70534 1.86953 -0.70265
--1.86953 2.70534 -0.70265
--2.70534 -1.86953 -0.70265
-1.86953 -2.70534 -0.70265
-2.74253 1.64575 -0.597905
--1.64575 2.74253 -0.597905
--2.74253 -1.64575 -0.597905
-1.64575 -2.74253 -0.597905
-0.493808 3.29722 -0.745941
--3.29722 0.493808 -0.745941
--0.493808 -3.29722 -0.745941
-3.29722 -0.493808 -0.745941
-1.87492 2.71242 0.711536
--2.71242 1.87492 0.711536
--1.87492 -2.71242 0.711536
-2.71242 -1.87492 0.711536
-1.62104 2.78398 -0.627691
--2.78398 1.62104 -0.627691
--1.62104 -2.78398 -0.627691
-2.78398 -1.62104 -0.627691
-0.686686 3.18078 -0.666012
--3.18078 0.686686 -0.666012
--0.686686 -3.18078 -0.666012
-3.18078 -0.686686 -0.666012
-3.11687 0.717707 -0.597905
--0.717707 3.11687 -0.597905
--3.11687 -0.717707 -0.597905
-0.717707 -3.11687 -0.597905
-3.2757 0.918733 0.801567
--0.918733 3.2757 0.801567
--3.2757 -0.918733 0.801567
-0.918733 -3.2757 0.801567
-2.87427 1.49008 -0.647056
--1.49008 2.87427 -0.647056
--2.87427 -1.49008 -0.647056
-1.49008 -2.87427 -0.647056
-1.25141 2.94346 -0.597905
--2.94346 1.25141 -0.597905
--1.25141 -2.94346 -0.597905
-2.94346 -1.25141 -0.597905
-2.38974 2.08189 0.556876
--2.08189 2.38974 0.556876
--2.38974 -2.08189 0.556876
-2.08189 -2.38974 0.556876
-0.0833712 3.09947 -0.437116
--3.09947 0.0833712 -0.437116
--0.0833712 -3.09947 -0.437116
-3.09947 -0.0833712 -0.437116
-1.94378 2.47749 0.525175
--2.47749 1.94378 0.525175
--1.94378 -2.47749 0.525175
-2.47749 -1.94378 0.525175
-1.7808 2.65683 -0.597905
--2.65683 1.7808 -0.597905
--1.7808 -2.65683 -0.597905
-2.65683 -1.7808 -0.597905
-1.98529 2.59966 -0.684547
--2.59966 1.98529 -0.684547
--1.98529 -2.59966 -0.684547
-2.59966 -1.98529 -0.684547
-3.1064 0.474813 0.51444
--0.474813 3.1064 0.51444
--3.1064 -0.474813 0.51444
-0.474813 -3.1064 0.51444
-1.43526 2.78133 0.492727
--2.78133 1.43526 0.492727
--1.43526 -2.78133 0.492727
-2.78133 -1.43526 0.492727
-3.0538 1.07522 0.647056
--1.07522 3.0538 0.647056
--3.0538 -1.07522 0.647056
-1.07522 -3.0538 0.647056
-3.10527 0.278187 0.470704
--0.278187 3.10527 0.470704
--3.10527 -0.278187 0.470704
-0.278187 -3.10527 0.470704
-2.26682 2.00811 -0.236499
--2.00811 2.26682 -0.236499
--2.26682 -2.00811 -0.236499
-2.00811 -2.26682 -0.236499
-2.22783 2.2543 -0.556876
--2.2543 2.22783 -0.556876
--2.22783 -2.2543 -0.556876
-2.2543 -2.22783 -0.556876
-3.09098 0.30669 -0.448383
--0.30669 3.09098 -0.448383
--3.09098 -0.30669 -0.448383
-0.30669 -3.09098 -0.448383
-2.70905 1.39064 -0.297042
--1.39064 2.70905 -0.297042
--2.70905 -1.39064 -0.297042
-1.39064 -2.70905 -0.297042
-2.64043 1.54903 0.344643
--1.54903 2.64043 0.344643
--2.64043 -1.54903 0.344643
-1.54903 -2.64043 0.344643
-1.69621 2.50876 -0.236499
--2.50876 1.69621 -0.236499
--1.69621 -2.50876 -0.236499
-2.50876 -1.69621 -0.236499
-1.91626 2.49884 -0.525175
--2.49884 1.91626 -0.525175
--1.91626 -2.49884 -0.525175
-2.49884 -1.91626 -0.525175
-2.51736 1.70064 0.272952
--1.70064 2.51736 0.272952
--2.51736 -1.70064 0.272952
-1.70064 -2.51736 0.272952
-2.46793 1.89552 0.45958
--1.89552 2.46793 0.45958
--2.46793 -1.89552 0.45958
-1.89552 -2.46793 0.45958
-2.77607 1.4321 -0.481754
--1.4321 2.77607 -0.481754
--2.77607 -1.4321 -0.481754
-1.4321 -2.77607 -0.481754
-3.02527 0.277536 0.272952
--0.277536 3.02527 0.272952
--3.02527 -0.277536 0.272952
-0.277536 -3.02527 0.272952
-0.0878961 3.02709 -0.236499
--3.02709 0.0878961 -0.236499
--0.0878961 -3.02709 -0.236499
-3.02709 -0.0878961 -0.236499
-2.58208 1.73682 0.45958
--1.73682 2.58208 0.45958
--2.58208 -1.73682 0.45958
-1.73682 -2.58208 0.45958
-3.06832 0.108006 -0.368125
--0.108006 3.06832 -0.368125
--3.06832 -0.108006 -0.368125
-0.108006 -3.06832 -0.368125
-2.39784 1.87108 -0.285019
--1.87108 2.39784 -0.285019
--2.39784 -1.87108 -0.285019
-1.87108 -2.39784 -0.285019
-2.3726 -1.8442 0.100362
--2.3726 1.8442 0.100362
-1.8442 2.3726 0.100362
--1.8442 -2.3726 0.100362
-1.68598 2.48152 -0.012566
--2.48152 1.68598 -0.012566
--1.68598 -2.48152 -0.012566
-2.48152 -1.68598 -0.012566
-3.01884 0.0887955 0.19971
--0.0887955 3.01884 0.19971
--3.01884 -0.0887955 0.19971
-0.0887955 -3.01884 0.19971
-2.9632 0.468943 0.012566
--0.468943 2.9632 0.012566
--2.9632 -0.468943 0.012566
-0.468943 -2.9632 0.012566
-0.468608 2.96349 -0.0251301
--2.96349 0.468608 -0.0251301
--0.468608 -2.96349 -0.0251301
-2.96349 -0.468608 -0.0251301
-3.07861 0.0843587 0.391374
--0.0843587 3.07861 0.391374
--3.07861 -0.0843587 0.391374
-0.0843587 -3.07861 0.391374
-2.26542 1.99016 0.175023
--1.99016 2.26542 0.175023
--2.26542 -1.99016 0.175023
-1.99016 -2.26542 0.175023
-0.656177 2.92865 0.0502443
--2.92865 0.656177 0.0502443
--0.656177 -2.92865 0.0502443
-2.92865 -0.656177 0.0502443
-2.3719 1.84318 -0.0878512
--1.84318 2.3719 -0.0878512
--2.3719 -1.84318 -0.0878512
-1.84318 -2.3719 -0.0878512
--1.83943 -2.3763 -0.100362
-1.83943 2.3763 -0.100362
--2.3763 1.83943 -0.100362
-2.3763 -1.83943 -0.100362
-2.25007 1.98471 -0.0251301
--1.98471 2.25007 -0.0251301
--2.25007 -1.98471 -0.0251301
-1.98471 -2.25007 -0.0251301
-2.14196 2.13282 0.212007
--2.13282 2.14196 0.212007
--2.14196 -2.13282 0.212007
-2.13282 -2.14196 0.212007
-0.283518 2.98729 0.0376902
--2.98729 0.283518 0.0376902
--0.283518 -2.98729 0.0376902
-2.98729 -0.283518 0.0376902
-0.0931239 2.99927 -0.0376902
--2.99927 0.0931239 -0.0376902
--0.0931239 -2.99927 -0.0376902
-2.99927 -0.0931239 -0.0376902
-2.31065 2.02168 0.368125
--2.02168 2.31065 0.368125
--2.31065 -2.02168 0.368125
-2.02168 -2.31065 0.368125
-0.476957 2.97748 0.175023
--2.97748 0.476957 0.175023
--0.476957 -2.97748 0.175023
-2.97748 -0.476957 0.175023
-1.72847 2.56758 -0.425779
--2.56758 1.72847 -0.425779
--1.72847 -2.56758 -0.425779
-2.56758 -1.72847 -0.425779
-3.02039 0.293554 -0.260842
--0.293554 3.02039 -0.260842
--3.02039 -0.293554 -0.260842
-0.293554 -3.02039 -0.260842
-3.37146 3.61474 0.33282
--3.61474 3.37146 0.33282
--3.37146 -3.61474 0.33282
-3.61474 -3.37146 0.33282
-2.67962 4.22124 -0.012566
--4.22124 2.67962 -0.012566
--2.67962 -4.22124 -0.012566
-4.22124 -2.67962 -0.012566
-2.66171 4.21171 0.187381
--4.21171 2.66171 0.187381
--2.66171 -4.21171 0.187381
-4.21171 -2.66171 0.187381
-4.64603 1.83409 -0.100362
--1.83409 4.64603 -0.100362
--4.64603 -1.83409 -0.100362
-1.83409 -4.64603 -0.100362
-4.97833 0.320748 0.150226
--0.320748 4.97833 0.150226
--4.97833 -0.320748 0.150226
-0.320748 -4.97833 0.150226
-4.52331 2.1299 0.0251301
--2.1299 4.52331 0.0251301
--4.52331 -2.1299 0.0251301
-2.1299 -4.52331 0.0251301
-3.15233 3.83204 0.272952
--3.83204 3.15233 0.272952
--3.15233 -3.83204 0.272952
-3.83204 -3.15233 0.272952
-2.93694 4.02744 -0.175023
--4.02744 2.93694 -0.175023
--2.93694 -4.02744 -0.175023
-4.02744 -2.93694 -0.175023
-1.54746 4.75243 -0.0627905
--4.75243 1.54746 -0.0627905
--1.54746 -4.75243 -0.0627905
-4.75243 -1.54746 -0.0627905
-1.84118 4.64858 -0.012566
--4.64858 1.84118 -0.012566
--1.84118 -4.64858 -0.012566
-4.64858 -1.84118 -0.012566
-4.49903 2.12883 0.212007
--2.12883 4.49903 0.212007
--4.49903 -2.12883 0.212007
-2.12883 -4.49903 0.212007
-4.64485 1.84308 0.0753268
--1.84308 4.64485 0.0753268
--4.64485 -1.84308 0.0753268
-1.84308 -4.64485 0.0753268
-1.54725 4.72153 -0.24869
--4.72153 1.54725 -0.24869
--1.54725 -4.72153 -0.24869
-4.72153 -1.54725 -0.24869
-2.93837 4.04539 0.012566
--4.04539 2.93837 0.012566
--2.93837 -4.04539 0.012566
-4.04539 -2.93837 0.012566
--3.85239 3.18127 0.0878512
--3.18127 -3.85239 0.0878512
-3.18127 3.85239 0.0878512
-3.85239 -3.18127 0.0878512
-3.6233 3.41624 0.19971
--3.41624 3.6233 0.19971
--3.6233 -3.41624 0.19971
-3.41624 -3.6233 0.19971
-4.9899 0.312679 -0.0251301
--0.312679 4.9899 -0.0251301
--4.9899 -0.312679 -0.0251301
-0.312679 -4.9899 -0.0251301
-2.67679 4.19926 -0.19971
--4.19926 2.67679 -0.19971
--2.67679 -4.19926 -0.19971
-4.19926 -2.67679 -0.19971
-4.93388 0.634635 0.224271
--0.634635 4.93388 0.224271
--4.93388 -0.634635 0.224271
-0.634635 -4.93388 0.224271
-4.61186 1.84006 0.260842
--1.84006 4.61186 0.260842
--4.61186 -1.84006 0.260842
-1.84006 -4.61186 0.260842
-4.90251 0.94159 0.125333
--0.94159 4.90251 0.125333
--4.90251 -0.94159 0.125333
-0.94159 -4.90251 0.125333
-1.83315 4.58117 -0.356412
--4.58117 1.83315 -0.356412
--1.83315 -4.58117 -0.356412
-4.58117 -1.83315 -0.356412
-1.84283 4.62895 -0.187381
--4.62895 1.84283 -0.187381
--1.84283 -4.62895 -0.187381
-4.62895 -1.84283 -0.187381
-3.84999 3.18825 0.0502443
--3.18825 3.84999 0.0502443
--3.84999 -3.18825 0.0502443
-3.18825 -3.84999 0.0502443
-3.31082 3.56317 0.503623
--3.56317 3.31082 0.503623
--3.31082 -3.56317 0.503623
-3.56317 -3.31082 0.503623
-3.82576 3.17954 0.224271
--3.17954 3.82576 0.224271
--3.82576 -3.17954 0.224271
-3.17954 -3.82576 0.224271
-3.40768 3.64071 0.162637
--3.64071 3.40768 0.162637
--3.40768 -3.64071 0.162637
-3.64071 -3.40768 0.162637
-4.43873 2.11123 0.402906
--2.11123 4.43873 0.402906
--4.43873 -2.11123 0.402906
-2.11123 -4.43873 0.402906
-4.63589 1.53145 0.470704
--1.53145 4.63589 0.470704
--4.63589 -1.53145 0.470704
-1.53145 -4.63589 0.470704
-1.24594 4.78763 -0.320944
--4.78763 1.24594 -0.320944
--1.24594 -4.78763 -0.320944
-4.78763 -1.24594 -0.320944
-2.65718 4.15236 -0.368125
--4.15236 2.65718 -0.368125
--2.65718 -4.15236 -0.368125
-4.15236 -2.65718 -0.368125
-4.86428 0.943124 0.297042
--0.943124 4.86428 0.297042
--4.86428 -0.943124 0.297042
-0.943124 -4.86428 0.297042
-4.92569 0.291881 -0.356412
--0.291881 4.92569 -0.356412
--4.92569 -0.291881 -0.356412
-0.291881 -4.92569 -0.356412
-4.77922 1.24504 0.344643
--1.24504 4.77922 0.344643
--4.77922 -1.24504 0.344643
-1.24504 -4.77922 0.344643
-1.53618 4.65806 -0.425779
--4.65806 1.53618 -0.425779
--1.53618 -4.65806 -0.425779
-4.65806 -1.53618 -0.425779
-4.87389 0.63626 0.402906
--0.63626 4.87389 0.402906
--4.87389 -0.63626 0.402906
-0.63626 -4.87389 0.402906
-1.23545 4.71088 -0.492727
--4.71088 1.23545 -0.492727
--1.23545 -4.71088 -0.492727
-4.71088 -1.23545 -0.492727
-0.288285 4.90678 0.402906
--4.90678 0.288285 0.402906
--0.288285 -4.90678 0.402906
-4.90678 -0.288285 0.402906
-3.5809 3.38819 0.368125
--3.38819 3.5809 0.368125
--3.5809 -3.38819 0.368125
-3.38819 -3.5809 0.368125
-1.51651 4.57136 -0.577573
--4.57136 1.51651 -0.577573
--1.51651 -4.57136 -0.577573
-4.57136 -1.51651 -0.577573
-2.56807 3.98108 -0.675333
--3.98108 2.56807 -0.675333
--2.56807 -3.98108 -0.675333
-3.98108 -2.56807 -0.675333
-4.7503 0.877123 -0.556876
--0.877123 4.7503 -0.556876
--4.7503 -0.877123 -0.556876
-0.877123 -4.7503 -0.556876
-4.55241 1.82563 0.425779
--1.82563 4.55241 0.425779
--4.55241 -1.82563 0.425779
-1.82563 -4.55241 0.425779
-2.61881 4.07546 -0.535827
--4.07546 2.61881 -0.535827
--2.61881 -4.07546 -0.535827
-4.07546 -2.61881 -0.535827
-4.70466 1.23446 0.503623
--1.23446 4.70466 0.503623
--4.70466 -1.23446 0.503623
-1.23446 -4.70466 0.503623
-0.634036 4.7958 -0.546394
--4.7958 0.634036 -0.546394
--0.634036 -4.7958 -0.546394
-4.7958 -0.634036 -0.546394
-0.627492 4.67842 -0.693653
--4.67842 0.627492 -0.693653
--0.627492 -4.67842 -0.693653
-4.67842 -0.627492 -0.693653
-4.54208 1.50933 0.61786
--1.50933 4.54208 0.61786
--4.54208 -1.50933 0.61786
-1.50933 -4.54208 0.61786
-4.78176 0.633403 0.567269
--0.633403 4.78176 0.567269
--4.78176 -0.633403 0.567269
-0.633403 -4.78176 0.567269
-4.66964 0.626913 0.70265
--0.626913 4.66964 0.70265
--4.66964 -0.626913 0.70265
-0.626913 -4.66964 0.70265
-0.332275 4.78246 -0.60793
--4.78246 0.332275 -0.60793
--0.332275 -4.78246 -0.60793
-4.78246 -0.332275 -0.60793
-0.0345905 4.74582 -0.666012
--4.74582 0.0345905 -0.666012
--0.0345905 -4.74582 -0.666012
-4.74582 -0.0345905 -0.666012
-4.16109 2.24689 -0.684547
--2.24689 4.16109 -0.684547
--4.16109 -2.24689 -0.684547
-2.24689 -4.16109 -0.684547
-4.68749 0.555696 -0.693653
--0.555696 4.68749 -0.693653
--4.68749 -0.555696 -0.693653
-0.555696 -4.68749 -0.693653
-3.58461 2.91122 -0.786288
--2.91122 3.58461 -0.786288
--3.58461 -2.91122 -0.786288
-2.91122 -3.58461 -0.786288
-4.0496 2.17749 -0.801567
--2.17749 4.0496 -0.801567
--4.0496 -2.17749 -0.801567
-2.17749 -4.0496 -0.801567
-4.54675 0.530323 -0.816339
--0.530323 4.54675 -0.816339
--4.54675 -0.530323 -0.816339
-0.530323 -4.54675 -0.816339
-0.0417808 4.61767 -0.786288
--4.61767 0.0417808 -0.786288
--0.0417808 -4.61767 -0.786288
-4.61767 -0.0417808 -0.786288
-2.49967 3.85906 -0.801567
--3.85906 2.49967 -0.801567
--2.49967 -3.85906 -0.801567
-3.85906 -2.49967 -0.801567
-4.41991 0.227925 -0.904827
--0.227925 4.41991 -0.904827
--4.41991 -0.227925 -0.904827
-0.227925 -4.41991 -0.904827
-4.58124 0.244904 -0.809017
--0.244904 4.58124 -0.809017
--4.58124 -0.244904 -0.809017
-0.244904 -4.58124 -0.809017
-4.63518 0.331994 0.762443
--0.331994 4.63518 0.762443
--4.63518 -0.331994 0.762443
-0.331994 -4.63518 0.762443
-4.39687 0.505003 -0.904827
--0.505003 4.39687 -0.904827
--4.39687 -0.505003 -0.904827
-0.505003 -4.39687 -0.904827
-4.49154 0.329649 0.863923
--0.329649 4.49154 0.863923
--4.49154 -0.329649 0.863923
-0.329649 -4.49154 0.863923
-0.229065 4.4312 0.899405
--4.4312 0.229065 0.899405
--0.229065 -4.4312 0.899405
-4.4312 -0.229065 0.899405
-3.73538 1.69111 -0.994951
--1.69111 3.73538 -0.994951
--3.73538 -1.69111 -0.994951
-1.69111 -3.73538 -0.994951
-3.46991 2.45175 -0.968583
--2.45175 3.46991 -0.968583
--3.46991 -2.45175 -0.968583
-2.45175 -3.46991 -0.968583
-2.42495 3.72931 -0.893841
--3.72931 2.42495 -0.893841
--2.42495 -3.72931 -0.893841
-3.72931 -2.42495 -0.893841
-0.748917 4.21907 0.958522
--4.21907 0.748917 0.958522
--0.748917 -4.21907 0.958522
-4.21907 -0.748917 0.958522
-3.60892 2.35442 0.951057
--2.35442 3.60892 0.951057
--3.60892 -2.35442 0.951057
-2.35442 -3.60892 0.951057
-3.88951 1.76914 -0.962028
--1.76914 3.88951 -0.962028
--3.88951 -1.76914 -0.962028
-1.76914 -3.88951 -0.962028
-0.213083 4.26764 0.962028
--4.26764 0.213083 0.962028
--0.213083 -4.26764 0.962028
-4.26764 -0.213083 0.962028
-1.59004 3.53338 0.992115
--3.53338 1.59004 0.992115
--1.59004 -3.53338 0.992115
-3.53338 -1.59004 0.992115
-0.845329 4.12631 -0.977268
--4.12631 0.845329 -0.977268
--0.845329 -4.12631 -0.977268
-4.12631 -0.845329 -0.977268
-3.3225 2.33821 -0.998027
--2.33821 3.3225 -0.998027
--3.3225 -2.33821 -0.998027
-2.33821 -3.3225 -0.998027
-3.46153 2.26696 0.990461
--2.26696 3.46153 0.990461
--3.46153 -2.26696 0.990461
-2.26696 -3.46153 0.990461
-3.32263 2.48687 0.988652
--2.48687 3.32263 0.988652
--3.32263 -2.48687 0.988652
-2.48687 -3.32263 0.988652
-2.10399 3.43146 0.999684
--3.43146 2.10399 0.999684
--2.10399 -3.43146 0.999684
-3.43146 -2.10399 0.999684
-3.02433 2.28085 0.977268
--2.28085 3.02433 0.977268
--3.02433 -2.28085 0.977268
-2.28085 -3.02433 0.977268
-0.711702 4.05081 0.993611
--4.05081 0.711702 0.993611
--0.711702 -4.05081 0.993611
-4.05081 -0.711702 0.993611
-3.14029 2.67525 0.992115
--2.67525 3.14029 0.992115
--3.14029 -2.67525 0.992115
-2.67525 -3.14029 0.992115
-2.48448 3.10273 0.999684
--3.10273 2.48448 0.999684
--2.48448 -3.10273 0.999684
-3.10273 -2.48448 0.999684
-0.0622125 4.02465 -0.999684
--4.02465 0.0622125 -0.999684
--0.0622125 -4.02465 -0.999684
-4.02465 -0.0622125 -0.999684
-2.02798 3.56374 -0.994951
--3.56374 2.02798 -0.994951
--2.02798 -3.56374 -0.994951
-3.56374 -2.02798 -0.994951
-0.4427 4.00071 0.999684
--4.00071 0.4427 0.999684
--0.4427 -4.00071 0.999684
-4.00071 -0.4427 0.999684
-3.58596 2.03943 0.992115
--2.03943 3.58596 0.992115
--3.58596 -2.03943 0.992115
-2.03943 -3.58596 0.992115
-0.817302 3.95411 -0.999289
--3.95411 0.817302 -0.999289
--0.817302 -3.95411 -0.999289
-3.95411 -0.817302 -0.999289
-3.17804 2.38739 0.999684
--2.38739 3.17804 0.999684
--3.17804 -2.38739 0.999684
-2.38739 -3.17804 0.999684
-2.94744 2.85053 0.994951
--2.85053 2.94744 0.994951
--2.94744 -2.85053 0.994951
-2.85053 -2.94744 0.994951
-0.469244 4.17341 0.979855
--4.17341 0.469244 0.979855
--0.469244 -4.17341 0.979855
-4.17341 -0.469244 0.979855
-2.36209 2.96132 0.977268
--2.96132 2.36209 0.977268
--2.36209 -2.96132 0.977268
-2.96132 -2.36209 0.977268
-3.7284 1.1429 -0.994951
--1.1429 3.7284 -0.994951
--3.7284 -1.1429 -0.994951
-1.1429 -3.7284 -0.994951
-1.94708 3.40763 -0.997159
--3.40763 1.94708 -0.997159
--1.94708 -3.40763 -0.997159
-3.40763 -1.94708 -0.997159
-1.99967 3.27516 0.986686
--3.27516 1.99967 0.986686
--1.99967 -3.27516 0.986686
-3.27516 -1.99967 0.986686
-3.30014 2.17017 0.998737
--2.17017 3.30014 0.998737
--3.30014 -2.17017 0.998737
-2.17017 -3.30014 0.998737
-2.81635 2.73335 0.997159
--2.73335 2.81635 0.997159
--2.81635 -2.73335 0.997159
-2.73335 -2.81635 0.997159
-2.16511 2.85814 -0.910106
--2.85814 2.16511 -0.910106
--2.16511 -2.85814 -0.910106
-2.85814 -2.16511 -0.910106
-3.5653 1.08605 -0.962028
--1.08605 3.5653 -0.962028
--3.5653 -1.08605 -0.962028
-1.08605 -3.5653 -0.962028
-3.15109 2.08009 0.974527
--2.08009 3.15109 0.974527
--3.15109 -2.08009 0.974527
-2.08009 -3.15109 0.974527
-0.182997 3.93295 0.998027
--3.93295 0.182997 0.998027
--0.182997 -3.93295 0.998027
-3.93295 -0.182997 0.998027
-3.86415 0.422183 -0.993611
--0.422183 3.86415 -0.993611
--3.86415 -0.422183 -0.993611
-0.422183 -3.86415 -0.993611
-1.50832 3.36873 0.951057
--3.36873 1.50832 0.951057
--1.50832 -3.36873 0.951057
-3.36873 -1.50832 0.951057
-3.44336 0.958294 0.904827
--0.958294 3.44336 0.904827
--3.44336 -0.958294 0.904827
-0.958294 -3.44336 0.904827
-0.0665426 3.83679 -0.986686
--3.83679 0.0665426 -0.986686
--0.0665426 -3.83679 -0.986686
-3.83679 -0.0665426 -0.986686
-3.47894 1.3031 -0.958522
--1.3031 3.47894 -0.958522
--3.47894 -1.3031 -0.958522
-1.3031 -3.47894 -0.958522
-0.843983 3.56874 0.942991
--3.56874 0.843983 0.942991
--0.843983 -3.56874 0.942991
-3.56874 -0.843983 0.942991
-2.02992 3.06837 -0.947098
--3.06837 2.02992 -0.947098
--2.02992 -3.06837 -0.947098
-3.06837 -2.02992 -0.947098
-1.17926 3.3983 -0.915241
--3.3983 1.17926 -0.915241
--1.17926 -3.3983 -0.915241
-3.3983 -1.17926 -0.915241
-3.59169 0.850363 -0.951057
--0.850363 3.59169 -0.951057
--3.59169 -0.850363 -0.951057
-0.850363 -3.59169 -0.951057
-0.638202 3.70899 0.971632
--3.70899 0.638202 0.971632
--0.638202 -3.70899 0.971632
-3.70899 -0.638202 0.971632
-0.798258 3.40403 0.863923
--3.40403 0.798258 0.863923
--0.798258 -3.40403 0.863923
-3.40403 -0.798258 0.863923
-1.55033 3.1218 -0.857527
--3.1218 1.55033 -0.857527
--1.55033 -3.1218 -0.857527
-3.1218 -1.55033 -0.857527
-1.61967 3.27693 -0.938734
--3.27693 1.61967 -0.938734
--1.61967 -3.27693 -0.938734
-3.27693 -1.61967 -0.938734
-2.98173 1.80511 -0.857527
--1.80511 2.98173 -0.857527
--2.98173 -1.80511 -0.857527
-1.80511 -2.98173 -0.857527
-3.36501 0.500935 0.801567
--0.500935 3.36501 0.801567
--3.36501 -0.500935 0.801567
-0.500935 -3.36501 0.801567
-1.03593 3.4208 0.904827
--3.4208 1.03593 0.904827
--1.03593 -3.4208 0.904827
-3.4208 -1.03593 0.904827
-2.24492 2.82533 0.920232
--2.82533 2.24492 0.920232
--2.24492 -2.82533 0.920232
-2.82533 -2.24492 0.920232
-2.99949 1.56266 -0.786288
--1.56266 2.99949 -0.786288
--2.99949 -1.56266 -0.786288
-1.56266 -2.99949 -0.786288
-1.43167 3.21378 0.876307
--3.21378 1.43167 0.876307
--1.43167 -3.21378 0.876307
-3.21378 -1.43167 0.876307
-1.94635 2.93083 -0.876307
--2.93083 1.94635 -0.876307
--1.94635 -2.93083 -0.876307
-2.93083 -1.94635 -0.876307
-1.5777 3.02557 0.809017
--3.02557 1.5777 0.809017
--1.5777 -3.02557 0.809017
-3.02557 -1.5777 0.809017
-3.32814 1.23995 -0.893841
--1.23995 3.32814 -0.893841
--3.32814 -1.23995 -0.893841
-1.23995 -3.32814 -0.893841
-2.85531 1.72124 -0.745941
--1.72124 2.85531 -0.745941
--2.85531 -1.72124 -0.745941
-1.72124 -2.85531 -0.745941
-2.06587 2.71577 -0.809017
--2.71577 2.06587 -0.809017
--2.06587 -2.71577 -0.809017
-2.71577 -2.06587 -0.809017
-3.43578 0.807069 -0.882291
--0.807069 3.43578 -0.882291
--3.43578 -0.807069 -0.882291
-0.807069 -3.43578 -0.882291
-2.64664 2.28472 0.863923
--2.28472 2.64664 0.863923
--2.64664 -2.28472 0.863923
-2.28472 -2.64664 0.863923
-2.55885 1.95718 0.627691
--1.95718 2.55885 0.627691
--2.55885 -1.95718 0.627691
-1.95718 -2.55885 0.627691
-3.12713 1.63616 -0.882291
--1.63616 3.12713 -0.882291
--3.12713 -1.63616 -0.882291
-1.63616 -3.12713 -0.882291
-1.82318 3.009 0.876307
--3.009 1.82318 0.876307
--1.82318 -3.009 0.876307
-3.009 -1.82318 0.876307
-2.30711 2.34334 -0.70265
--2.34334 2.30711 -0.70265
--2.30711 -2.34334 -0.70265
-2.34334 -2.30711 -0.70265
-3.13139 0.885054 0.666012
--0.885054 3.13139 0.666012
--3.13139 -0.885054 0.666012
-0.885054 -3.13139 0.666012
-3.22602 0.486461 0.675333
--0.486461 3.22602 0.675333
--3.22602 -0.486461 0.675333
-0.486461 -3.22602 0.675333
-0.287395 3.36004 -0.778462
--3.36004 0.287395 -0.778462
--0.287395 -3.36004 -0.778462
-3.36004 -0.287395 -0.778462
-3.24141 0.696791 0.728969
--0.696791 3.24141 0.728969
--3.24141 -0.696791 0.728969
-0.696791 -3.24141 0.728969
-0.282299 3.23345 -0.656586
--3.23345 0.282299 -0.656586
--0.282299 -3.23345 -0.656586
-3.23345 -0.282299 -0.656586
-2.14373 2.70774 0.837528
--2.70774 2.14373 0.837528
--2.14373 -2.70774 0.837528
-2.70774 -2.14373 0.837528
-1.80125 2.61638 0.567269
--2.61638 1.80125 0.567269
--1.80125 -2.61638 0.567269
-2.61638 -1.80125 0.567269
-3.08745 0.919752 -0.627691
--0.919752 3.08745 -0.627691
--3.08745 -0.919752 -0.627691
-0.919752 -3.08745 -0.627691
-3.02239 0.860403 0.51444
--0.860403 3.02239 0.51444
--3.02239 -0.860403 0.51444
-0.860403 -3.02239 0.51444
-2.99524 0.88655 -0.481754
--0.88655 2.99524 -0.481754
--2.99524 -0.88655 -0.481754
-0.88655 -2.99524 -0.481754
-3.12581 0.677698 0.597905
--0.677698 3.12581 0.597905
--3.12581 -0.677698 0.597905
-0.677698 -3.12581 0.597905
-3.01604 0.100474 -0.187381
--0.100474 3.01604 -0.187381
--3.01604 -0.100474 -0.187381
-0.100474 -3.01604 -0.187381
-2.88888 0.843629 -0.13779
--0.843629 2.88888 -0.13779
--2.88888 -0.843629 -0.13779
-0.843629 -2.88888 -0.13779
-1.39101 2.75908 -0.414376
--2.75908 1.39101 -0.414376
--1.39101 -2.75908 -0.414376
-2.75908 -1.39101 -0.414376
-1.36944 2.70446 -0.24869
--2.70446 1.36944 -0.24869
--1.36944 -2.70446 -0.24869
-2.70446 -1.36944 -0.24869
-0.46648 2.98652 -0.212007
--2.98652 0.46648 -0.212007
--0.46648 -2.98652 -0.212007
-2.98652 -0.46648 -0.212007
-2.86543 1.0418 -0.309017
--1.0418 2.86543 -0.309017
--2.86543 -1.0418 -0.309017
-1.0418 -2.86543 -0.309017
-0.108006 3.06832 0.368125
--3.06832 0.108006 0.368125
--0.108006 -3.06832 0.368125
-3.06832 -0.108006 0.368125
-2.40862 1.85719 0.285019
--1.85719 2.40862 0.285019
--2.40862 -1.85719 0.285019
-1.85719 -2.40862 0.285019
-1.74768 2.54815 0.414376
--2.54815 1.74768 0.414376
--1.74768 -2.54815 0.414376
-2.54815 -1.74768 0.414376
-1.98451 2.25498 -0.0878512
--2.25498 1.98451 -0.0878512
--1.98451 -2.25498 -0.0878512
-2.25498 -1.98451 -0.0878512
-0.469546 3.04376 -0.391374
--3.04376 0.469546 -0.391374
--0.469546 -3.04376 -0.391374
-3.04376 -0.469546 -0.391374
-2.99861 0.0938579 0.012566
--0.0938579 2.99861 0.012566
--2.99861 -0.0938579 0.012566
-0.0938579 -2.99861 0.012566
-2.3776 1.83995 0.112856
--1.83995 2.3776 0.112856
--2.3776 -1.83995 0.112856
-1.83995 -2.3776 0.112856
-2.00082 2.28159 -0.260842
--2.28159 2.00082 -0.260842
--2.00082 -2.28159 -0.260842
-2.28159 -2.00082 -0.260842
-2.92818 1.07045 -0.470704
--1.07045 2.92818 -0.470704
--2.92818 -1.07045 -0.470704
-1.07045 -2.92818 -0.470704
-2.9893 0.284846 -0.0753268
--0.284846 2.9893 -0.0753268
--2.9893 -0.284846 -0.0753268
-0.284846 -2.9893 -0.0753268
-2.92519 0.859822 -0.309017
--0.859822 2.92519 -0.309017
--2.92519 -0.859822 -0.309017
-0.859822 -2.92519 -0.309017
-0.299516 4.95955 0.24869
--4.95955 0.299516 0.24869
--0.299516 -4.95955 0.24869
-4.95955 -0.299516 0.24869
-0.0112521 4.97451 -0.224271
--4.97451 0.0112521 -0.224271
--0.0112521 -4.97451 -0.224271
-4.97451 -0.0112521 -0.224271
-3.42314 3.64436 -0.012566
--3.64436 3.42314 -0.012566
--3.42314 -3.64436 -0.012566
-3.64436 -3.42314 -0.012566
-4.0434 2.94003 0.0376902
--2.94003 4.0434 0.0376902
--4.0434 -2.94003 0.0376902
-2.94003 -4.0434 0.0376902
-4.22124 2.67962 0.012566
--2.67962 4.22124 0.012566
--4.22124 -2.67962 0.012566
-2.67962 -4.22124 0.012566
--4.91144 0.936907 9.80498e-15
--0.936907 -4.91144 -1.76343e-14
-0.936907 4.91144 -1.95991e-14
-4.91144 -0.936907 -4.50736e-14
-4.17196 2.66603 0.309017
--2.66603 4.17196 0.309017
--4.17196 -2.66603 0.309017
-2.66603 -4.17196 0.309017
-3.18821 3.84797 -0.0753268
--3.84797 3.18821 -0.0753268
--3.18821 -3.84797 -0.0753268
-3.84797 -3.18821 -0.0753268
-0.00376777 -4.99716 0.0753268
--4.99716 0.00376777 -0.0753268
-0.00376777 4.99716 -0.0753268
-4.99716 0.00376777 0.0753268
-4.99716 -0.00376777 -0.0753268
--0.00376777 4.99716 0.0753268
--4.99716 -0.00376777 0.0753268
--0.00376777 -4.99716 -0.0753268
-4.04239 2.92921 -0.125333
--2.92921 4.04239 -0.125333
--4.04239 -2.92921 -0.125333
-2.92921 -4.04239 -0.125333
-3.75002 3.06673 -0.535827
--3.06673 3.75002 -0.535827
--3.75002 -3.06673 -0.535827
-3.06673 -3.75002 -0.535827
-4.37764 2.39947 -0.125333
--2.39947 4.37764 -0.125333
--4.37764 -2.39947 -0.125333
-2.39947 -4.37764 -0.125333
-4.51844 2.11859 -0.13779
--2.11859 4.51844 -0.13779
--4.51844 -2.11859 -0.13779
-2.11859 -4.51844 -0.13779
-4.97065 0.302694 -0.19971
--0.302694 4.97065 -0.19971
--4.97065 -0.302694 -0.19971
-0.302694 -4.97065 -0.19971
-2.88906 3.93574 -0.470704
--3.93574 2.88906 -0.470704
--2.88906 -3.93574 -0.470704
-3.93574 -2.88906 -0.470704
-0.942169 4.89887 -0.150226
--4.89887 0.942169 -0.150226
--0.942169 -4.89887 -0.150226
-4.89887 -0.942169 -0.150226
-1.23639 4.83813 0.112856
--4.83813 1.23639 0.112856
--1.23639 -4.83813 0.112856
-4.83813 -1.23639 0.112856
-4.21728 2.6682 -0.13779
--2.6682 4.21728 -0.13779
--4.21728 -2.6682 -0.13779
-2.6682 -4.21728 -0.13779
-3.83423 3.15495 -0.260842
--3.15495 3.83423 -0.260842
--3.83423 -3.15495 -0.260842
-3.15495 -3.83423 -0.260842
-3.17954 3.82576 -0.224271
--3.82576 3.17954 -0.224271
--3.17954 -3.82576 -0.224271
-3.82576 -3.17954 -0.224271
-4.20603 2.67887 0.162637
--2.67887 4.20603 0.162637
--4.20603 -2.67887 0.162637
-2.67887 -4.20603 0.162637
-3.85124 3.17869 -0.112856
--3.17869 3.85124 -0.112856
--3.85124 -3.17869 -0.112856
-3.17869 -3.85124 -0.112856
-4.48964 2.09615 -0.297042
--2.09615 4.48964 -0.297042
--4.48964 -2.09615 -0.297042
-2.09615 -4.48964 -0.297042
-4.97451 0.0112521 0.224271
--0.0112521 4.97451 0.224271
--4.97451 -0.0112521 0.224271
-0.0112521 -4.97451 0.224271
-4.73196 1.52502 -0.236499
-1.52502 4.73196 0.236499
--1.52502 4.73196 -0.236499
--4.73196 1.52502 0.236499
--4.73196 -1.52502 -0.236499
--1.52502 -4.73196 0.236499
-1.52502 -4.73196 -0.236499
-4.73196 -1.52502 0.236499
-4.1528 2.6099 -0.425779
--2.6099 4.1528 -0.425779
--4.1528 -2.6099 -0.425779
-2.6099 -4.1528 -0.425779
-0.330438 4.8711 -0.470704
--4.8711 0.330438 -0.470704
--0.330438 -4.8711 -0.470704
-4.8711 -0.330438 -0.470704
-4.02241 2.9055 -0.272952
--2.9055 4.02241 -0.272952
--4.02241 -2.9055 -0.272952
-2.9055 -4.02241 -0.272952
-0.326761 4.9363 -0.320944
--4.9363 0.326761 -0.320944
--0.326761 -4.9363 -0.320944
-4.9363 -0.326761 -0.320944
-4.19428 2.6448 -0.285019
--2.6448 4.19428 -0.285019
--4.19428 -2.6448 -0.285019
-2.6448 -4.19428 -0.285019
-0.943124 4.86428 -0.297042
--4.86428 0.943124 -0.297042
--0.943124 -4.86428 -0.297042
-4.86428 -0.943124 -0.297042
-4.35485 2.37844 -0.272952
--2.37844 4.35485 -0.272952
--4.35485 -2.37844 -0.272952
-2.37844 -4.35485 -0.272952
-0.939819 4.80842 -0.437116
--4.80842 0.939819 -0.437116
--0.939819 -4.80842 -0.437116
-4.80842 -0.939819 -0.437116
-1.79972 4.59441 0.356412
--4.59441 1.79972 0.356412
--1.79972 -4.59441 0.356412
-4.59441 -1.79972 0.356412
-3.15412 3.78258 -0.379779
--3.78258 3.15412 -0.379779
--3.15412 -3.78258 -0.379779
-3.78258 -3.15412 -0.379779
-0.019186 4.92504 -0.379779
--4.92504 0.019186 -0.379779
--0.019186 -4.92504 -0.379779
-4.92504 -0.019186 -0.379779
-0.636293 4.87892 -0.391374
--4.87892 0.636293 -0.391374
--0.636293 -4.87892 -0.391374
-4.87892 -0.636293 -0.391374
-4.68992 1.50367 -0.379779
-1.50367 4.68992 0.379779
--1.50367 4.68992 -0.379779
--4.68992 1.50367 0.379779
--4.68992 -1.50367 -0.379779
--1.50367 -4.68992 0.379779
-1.50367 -4.68992 -0.379779
-4.68992 -1.50367 0.379779
-0.635116 4.92782 -0.24869
--4.92782 0.635116 -0.24869
--0.635116 -4.92782 -0.24869
-4.92782 -0.635116 -0.24869
-3.11276 3.7206 -0.525175
--3.7206 3.11276 -0.525175
--3.11276 -3.7206 -0.525175
-3.7206 -3.11276 -0.525175
-2.91897 3.98908 -0.33282
--3.98908 2.91897 -0.33282
--2.91897 -3.98908 -0.33282
-3.98908 -2.91897 -0.33282
-4.86386 0.0256711 0.503623
--0.0256711 4.86386 0.503623
--4.86386 -0.0256711 0.503623
-0.0256711 -4.86386 0.503623
-4.31283 2.34706 -0.414376
--2.34706 4.31283 -0.414376
--4.31283 -2.34706 -0.414376
-2.34706 -4.31283 -0.414376
-0.026822 4.85092 -0.525175
--4.85092 0.026822 -0.525175
--0.026822 -4.85092 -0.525175
-4.85092 -0.026822 -0.525175
-1.76948 4.53736 0.492727
--4.53736 1.76948 0.492727
--1.76948 -4.53736 0.492727
-4.53736 -1.76948 0.492727
-1.18258 4.71138 0.51444
--4.71138 1.18258 0.51444
--1.18258 -4.71138 0.51444
-4.71138 -1.18258 0.51444
-3.52297 3.34429 0.51444
--3.34429 3.52297 0.51444
--3.52297 -3.34429 0.51444
-3.34429 -3.52297 0.51444
-3.80022 3.11736 -0.402906
--3.11736 3.80022 -0.402906
--3.80022 -3.11736 -0.402906
-3.11736 -3.80022 -0.402906
-4.11464 2.63887 0.45958
--2.63887 4.11464 0.45958
--4.11464 -2.63887 0.45958
-2.63887 -4.11464 0.45958
-4.80284 0.939356 0.448383
--0.939356 4.80284 0.448383
--4.80284 -0.939356 0.448383
-0.939356 -4.80284 0.448383
-3.98465 2.86909 -0.414376
--2.86909 3.98465 -0.414376
--3.98465 -2.86909 -0.414376
-2.86909 -3.98465 -0.414376
-4.92974 0.0185848 0.368125
--0.0185848 4.92974 0.368125
--4.92974 -0.0185848 0.368125
-0.0185848 -4.92974 0.368125
-3.80475 2.80838 0.684547
--2.80838 3.80475 0.684547
--3.80475 -2.80838 0.684547
-2.80838 -3.80475 0.684547
-3.93001 2.82076 -0.546394
--2.82076 3.93001 -0.546394
--3.93001 -2.82076 -0.546394
-2.82076 -3.93001 -0.546394
-4.62783 1.47607 -0.51444
-1.47607 4.62783 0.51444
--1.47607 4.62783 -0.51444
--4.62783 1.47607 0.51444
--4.62783 -1.47607 -0.51444
--1.47607 -4.62783 0.51444
-1.47607 -4.62783 -0.51444
-4.62783 -1.47607 0.51444
-4.72538 0.931606 0.577573
--0.931606 4.72538 0.577573
--4.72538 -0.931606 0.577573
-0.931606 -4.72538 0.577573
-1.72888 4.45474 0.627691
--4.45474 1.72888 0.627691
--1.72888 -4.45474 0.627691
-4.45474 -1.72888 0.627691
-1.81255 4.50669 -0.51444
--4.50669 1.81255 -0.51444
--1.81255 -4.50669 -0.51444
-4.50669 -1.81255 -0.51444
-4.25256 2.30595 -0.546394
--2.30595 4.25256 -0.546394
--4.25256 -2.30595 -0.546394
-2.30595 -4.25256 -0.546394
-3.67876 2.99844 -0.666012
--2.99844 3.67876 -0.666012
--3.67876 -2.99844 -0.666012
-2.99844 -3.67876 -0.666012
-1.44278 4.54711 0.637424
--4.54711 1.44278 0.637424
--1.44278 -4.54711 0.637424
-4.54711 -1.44278 0.637424
-4.03753 2.59874 0.597905
--2.59874 4.03753 0.597905
--4.03753 -2.59874 0.597905
-2.59874 -4.03753 0.597905
-1.78676 4.42327 -0.637424
--4.42327 1.78676 -0.637424
--1.78676 -4.42327 -0.637424
-4.42327 -1.78676 -0.637424
-4.7704 0.0329712 0.637424
--0.0329712 4.7704 0.637424
--4.7704 -0.0329712 0.637424
-0.0329712 -4.7704 0.637424
-4.09382 2.56423 -0.556876
--2.56423 4.09382 -0.556876
--4.09382 -2.56423 -0.556876
-2.56423 -4.09382 -0.556876
-4.01873 2.50876 -0.675333
--2.50876 4.01873 -0.675333
--4.01873 -2.50876 -0.675333
-2.50876 -4.01873 -0.675333
-3.15853 3.42162 0.754251
--3.42162 3.15853 0.754251
--3.15853 -3.42162 0.754251
-3.42162 -3.15853 0.754251
-3.95051 2.55116 0.711536
--2.55116 3.95051 0.711536
--3.95051 -2.55116 0.711536
-2.55116 -3.95051 0.711536
-1.15441 4.62873 0.637424
--4.62873 1.15441 0.637424
--1.15441 -4.62873 0.637424
-4.62873 -1.15441 0.637424
-3.70289 2.74256 0.79399
--2.74256 3.70289 0.79399
--3.70289 -2.74256 0.79399
-2.74256 -3.70289 0.79399
-2.22968 3.9621 -0.837528
--3.9621 2.22968 -0.837528
--2.22968 -3.9621 -0.837528
-3.9621 -2.22968 -0.837528
-3.2356 3.49453 0.647056
--3.49453 3.2356 0.647056
--3.2356 -3.49453 0.647056
-3.49453 -3.2356 0.647056
-3.85978 2.76154 -0.666012
--2.76154 3.85978 -0.666012
--3.85978 -2.76154 -0.666012
-2.76154 -3.85978 -0.666012
-1.68109 4.35266 0.745941
--4.35266 1.68109 0.745941
--1.68109 -4.35266 0.745941
-4.35266 -1.68109 0.745941
-3.4549 3.2896 0.637424
--3.2896 3.4549 0.637424
--3.4549 -3.2896 0.637424
-3.2896 -3.4549 0.637424
-4.36114 1.68499 -0.737513
--1.68499 4.36114 -0.737513
--4.36114 -1.68499 -0.737513
-1.68499 -4.36114 -0.737513
-1.75114 4.31478 -0.754251
--4.31478 1.75114 -0.754251
--1.75114 -4.31478 -0.754251
-4.31478 -1.75114 -0.754251
-4.62978 0.920014 0.693653
--0.920014 4.62978 0.693653
--4.62978 -0.920014 0.693653
-0.920014 -4.62978 0.693653
-3.50723 2.95755 0.809017
--2.95755 3.50723 0.809017
--3.50723 -2.95755 0.809017
-2.95755 -3.50723 0.809017
-4.5182 0.904925 0.79399
--0.904925 4.5182 0.79399
--4.5182 -0.904925 0.79399
-0.904925 -4.5182 0.79399
-3.28312 3.14497 0.837528
--3.14497 3.28312 0.837528
--3.28312 -3.14497 0.837528
-3.14497 -3.28312 0.837528
-1.49081 4.46946 -0.70265
--4.46946 1.49081 -0.70265
--1.49081 -4.46946 -0.70265
-4.46946 -1.49081 -0.70265
-4.66585 0.0392849 0.745941
--0.0392849 4.66585 0.745941
--4.66585 -0.0392849 0.745941
-0.0392849 -4.66585 0.745941
-0.840181 4.60859 0.728969
--4.60859 0.840181 0.728969
--0.840181 -4.60859 0.728969
-4.60859 -0.840181 0.728969
-3.85025 2.49466 0.809017
--2.49466 3.85025 0.809017
--3.85025 -2.49466 0.809017
-2.49466 -3.85025 0.809017
-3.92926 2.44468 -0.778462
--2.44468 3.92926 -0.778462
--3.92926 -2.44468 -0.778462
-2.44468 -3.92926 -0.778462
-1.1223 4.52903 0.745941
--4.52903 1.1223 0.745941
--1.1223 -4.52903 0.745941
-4.52903 -1.1223 0.745941
-1.46143 4.35947 -0.801567
--4.35947 1.46143 -0.801567
--1.46143 -4.35947 -0.801567
-4.35947 -1.46143 -0.801567
-0.812371 4.49444 0.823533
--4.49444 0.812371 0.823533
--0.812371 -4.49444 0.823533
-4.49444 -0.812371 0.823533
-2.28221 4.06979 -0.745941
--4.06979 2.28221 -0.745941
--2.28221 -4.06979 -0.745941
-4.06979 -2.28221 -0.745941
-2.64174 3.55088 -0.904827
--3.55088 2.64174 -0.904827
--2.64174 -3.55088 -0.904827
-3.55088 -2.64174 -0.904827
-3.37436 3.22263 0.745941
--3.22263 3.37436 0.745941
--3.37436 -3.22263 0.745941
-3.22263 -3.37436 0.745941
-1.40446 4.44962 0.745941
--4.44962 1.40446 0.745941
--1.40446 -4.44962 0.745941
-4.44962 -1.40446 0.745941
-1.36192 4.33761 0.837528
--4.33761 1.36192 0.837528
--1.36192 -4.33761 0.837528
-4.33761 -1.36192 0.837528
-4.18245 1.41204 0.910106
--1.41204 4.18245 0.910106
--4.18245 -1.41204 0.910106
-1.41204 -4.18245 0.910106
-1.71206 4.20031 -0.844328
--4.20031 1.71206 -0.844328
--1.71206 -4.20031 -0.844328
-4.20031 -1.71206 -0.844328
-4.42534 1.47919 0.745941
--1.47919 4.42534 0.745941
--4.42534 -1.47919 0.745941
-1.47919 -4.42534 0.745941
-4.54617 0.0451333 0.837528
--0.0451333 4.54617 0.837528
--4.54617 -0.0451333 0.837528
-0.0451333 -4.54617 0.837528
-0.87145 4.29221 -0.925077
--4.29221 0.87145 -0.925077
--0.87145 -4.29221 -0.925077
-4.29221 -0.87145 -0.925077
-3.39597 2.87324 0.893841
--2.87324 3.39597 0.893841
--3.39597 -2.87324 0.893841
-2.87324 -3.39597 0.893841
-0.618664 4.55609 -0.801567
--4.55609 0.618664 -0.801567
--0.618664 -4.55609 -0.801567
-4.55609 -0.618664 -0.801567
-4.30972 1.44777 0.837528
--1.44777 4.30972 0.837528
--4.30972 -1.44777 0.837528
-1.44777 -4.30972 0.837528
-4.02562 1.839 -0.904827
--1.839 4.02562 -0.904827
--4.02562 -1.839 -0.904827
-1.839 -4.02562 -0.904827
-3.46385 2.58308 0.947098
--2.58308 3.46385 0.947098
--3.46385 -2.58308 0.947098
-2.58308 -3.46385 0.947098
-4.41409 0.050479 0.910106
--0.050479 4.41409 0.910106
--4.41409 -0.050479 0.910106
-0.050479 -4.41409 0.910106
-3.17452 3.0509 0.915241
--3.0509 3.17452 0.915241
--3.17452 -3.0509 0.915241
-3.0509 -3.17452 0.915241
-4.18007 1.70504 0.857527
--1.70504 4.18007 0.857527
--4.18007 -1.70504 0.857527
-1.70504 -4.18007 0.857527
-4.05289 1.66029 0.925077
--1.66029 4.05289 0.925077
--4.05289 -1.66029 0.925077
-1.66029 -4.05289 0.925077
-0.595942 4.29164 -0.942991
--4.29164 0.595942 -0.942991
--0.595942 -4.29164 -0.942991
-4.29164 -0.595942 -0.942991
-2.34833 3.5986 -0.954865
--3.5986 2.34833 -0.954865
--2.34833 -3.5986 -0.954865
-3.5986 -2.34833 -0.954865
-0.782636 4.36755 0.899405
--4.36755 0.782636 0.899405
--0.782636 -4.36755 0.899405
-4.36755 -0.782636 0.899405
-4.25311 1.63589 -0.830596
--1.63589 4.25311 -0.830596
--4.25311 -1.63589 -0.830596
-1.63589 -4.25311 -0.830596
-4.29613 1.15385 0.893841
--1.15385 4.29613 0.893841
--4.29613 -1.15385 0.893841
-1.15385 -4.29613 0.893841
-3.58827 2.66675 0.882291
--2.66675 3.58827 0.882291
--3.58827 -2.66675 0.882291
-2.66675 -3.58827 0.882291
-1.01572 4.17527 0.954865
--4.17527 1.01572 0.954865
--1.01572 -4.17527 0.954865
-4.17527 -1.01572 0.954865
-3.92161 2.09979 -0.893841
--2.09979 3.92161 -0.893841
--3.92161 -2.09979 -0.893841
-2.09979 -3.92161 -0.893841
-3.2759 2.78084 0.954865
--2.78084 3.2759 0.954865
--3.2759 -2.78084 0.954865
-2.78084 -3.2759 0.954865
-2.71348 3.18923 -0.982287
--3.18923 2.71348 -0.982287
--2.71348 -3.18923 -0.982287
-3.18923 -2.71348 -0.982287
-3.739 2.43058 0.888136
--2.43058 3.739 0.888136
--3.739 -2.43058 0.888136
-2.43058 -3.739 0.888136
-2.80275 3.30423 -0.942991
--3.30423 2.80275 -0.942991
--2.80275 -3.30423 -0.942991
-3.30423 -2.80275 -0.942991
-1.31602 4.21365 0.910106
--4.21365 1.31602 0.910106
--1.31602 -4.21365 0.910106
-4.21365 -1.31602 0.910106
-4.37854 0.785173 -0.893841
--0.785173 4.37854 -0.893841
--4.37854 -0.785173 -0.893841
-0.785173 -4.37854 -0.893841
-4.04639 1.3729 0.962028
--1.3729 4.04639 0.962028
--4.04639 -1.3729 0.962028
-1.3729 -4.04639 0.962028
-2.16558 3.83352 -0.915241
--3.83352 2.16558 -0.915241
--2.16558 -3.83352 -0.915241
-3.83352 -2.16558 -0.915241
-1.57818 3.825 -0.990461
--3.825 1.57818 -0.990461
--1.57818 -3.825 -0.990461
-3.825 -1.57818 -0.990461
-0.580993 4.1344 -0.984564
--4.1344 0.580993 -0.984564
--0.580993 -4.1344 -0.984564
-4.1344 -0.580993 -0.984564
-0.891571 4.42552 -0.857527
--4.42552 0.891571 -0.857527
--0.891571 -4.42552 -0.857527
-4.42552 -0.891571 -0.857527
-3.80181 2.02827 -0.951057
--2.02827 3.80181 -0.951057
--3.80181 -2.02827 -0.951057
-2.02827 -3.80181 -0.951057
-2.1013 3.70666 -0.965382
--3.70666 2.1013 -0.965382
--2.1013 -3.70666 -0.965382
-3.70666 -2.1013 -0.965382
-1.85957 3.82013 -0.968583
--3.82013 1.85957 -0.968583
--1.85957 -3.82013 -0.968583
-3.82013 -1.85957 -0.968583
-4.03797 0.448365 -0.998027
--0.448365 4.03797 -0.998027
--4.03797 -0.448365 -0.998027
-0.448365 -4.03797 -0.998027
-1.79518 3.67258 -0.996134
--3.67258 1.79518 -0.996134
--1.79518 -3.67258 -0.996134
-3.67258 -1.79518 -0.996134
-4.01504 1.53101 -0.954865
--1.53101 4.01504 -0.954865
--4.01504 -1.53101 -0.954865
-1.53101 -4.01504 -0.954865
-1.916 3.61102 0.996134
--3.61102 1.916 0.996134
--1.916 -3.61102 0.996134
-3.61102 -1.916 0.996134
-1.11347 4.11278 -0.965382
--4.11278 1.11347 -0.965382
--1.11347 -4.11278 -0.965382
-4.11278 -1.11347 -0.965382
-3.06764 2.95709 0.965382
--2.95709 3.06764 0.965382
--3.06764 -2.95709 0.965382
-2.95709 -3.06764 0.965382
-2.26696 3.46153 -0.990461
--3.46153 2.26696 -0.990461
--2.26696 -3.46153 -0.990461
-3.46153 -2.26696 -0.990461
-0.889718 3.73279 0.986686
--3.73279 0.889718 0.986686
--0.889718 -3.73279 0.986686
-3.73279 -0.889718 0.986686
-0.974935 4.03409 0.988652
--4.03409 0.974935 0.988652
--0.974935 -4.03409 0.988652
-4.03409 -0.974935 0.988652
-0.197271 4.09561 0.994951
--4.09561 0.197271 0.994951
--0.197271 -4.09561 0.994951
-4.09561 -0.197271 0.994951
-1.52204 3.67192 -0.999684
--3.67192 1.52204 -0.999684
--1.52204 -3.67192 -0.999684
-3.67192 -1.52204 -0.999684
-3.88244 1.19706 -0.998027
--1.19706 3.88244 -0.998027
--3.88244 -1.19706 -0.998027
-1.19706 -3.88244 -0.998027
-2.18961 3.33245 -0.999921
--3.33245 2.18961 -0.999921
--2.18961 -3.33245 -0.999921
-3.33245 -2.18961 -0.999921
-3.26737 1.71686 -0.951057
--1.71686 3.26737 -0.951057
--3.26737 -1.71686 -0.951057
-1.71686 -3.26737 -0.951057
-1.22756 3.55767 -0.971632
--3.55767 1.22756 -0.971632
--1.22756 -3.55767 -0.971632
-3.55767 -1.22756 -0.971632
-2.5629 3.43409 -0.958522
--3.43409 2.5629 -0.958522
--2.5629 -3.43409 -0.958522
-3.43409 -2.5629 -0.958522
-0.67185 3.86674 0.997159
--3.86674 0.67185 0.997159
--0.67185 -3.86674 0.997159
-3.86674 -0.67185 0.997159
-0.930361 3.87738 0.999921
--3.87738 0.930361 0.999921
--0.930361 -3.87738 0.999921
-3.87738 -0.930361 0.999921
-3.97436 0.0634334 0.999684
--0.0634334 3.97436 0.999684
--3.97436 -0.0634334 0.999684
-0.0634334 -3.97436 0.999684
-1.90548 3.13327 0.942991
--3.13327 1.90548 0.942991
--1.90548 -3.13327 0.942991
-3.13327 -1.90548 0.942991
-4.1249 0.0596145 0.992115
--0.0596145 4.1249 0.992115
--4.1249 -0.0596145 0.992115
-0.0596145 -4.1249 0.992115
-3.01199 2.57445 0.999289
--2.57445 3.01199 0.999289
--3.01199 -2.57445 0.999289
-2.57445 -3.01199 0.999289
-1.08605 3.5653 0.962028
--3.5653 1.08605 0.962028
--1.08605 -3.5653 0.962028
-3.5653 -1.08605 0.962028
-3.22379 1.96553 -0.974527
--1.96553 3.22379 -0.974527
--3.22379 -1.96553 -0.974527
-1.96553 -3.22379 -0.974527
-1.84015 3.48073 0.998027
--3.48073 1.84015 0.998027
--1.84015 -3.48073 0.998027
-3.48073 -1.84015 0.998027
-1.87246 3.26463 -0.971632
--3.26463 1.87246 -0.971632
--1.87246 -3.26463 -0.971632
-3.26463 -1.87246 -0.971632
-3.65251 0.531541 0.951057
--0.531541 3.65251 0.951057
--3.65251 -0.531541 0.951057
-0.531541 -3.65251 0.951057
-2.89447 2.48156 0.982287
--2.48156 2.89447 0.982287
--2.89447 -2.48156 0.982287
-2.48156 -2.89447 0.982287
-2.11204 3.20385 -0.986686
--3.20385 2.11204 -0.986686
--2.11204 -3.20385 -0.986686
-3.20385 -2.11204 -0.986686
-1.65292 3.15626 0.899405
--3.15626 1.65292 0.899405
--1.65292 -3.15626 0.899405
-3.15626 -1.65292 0.899405
-2.77119 2.38373 0.938734
--2.38373 2.77119 0.938734
--2.77119 -2.38373 0.938734
-2.38373 -2.77119 0.938734
-3.66675 0.300637 0.947098
--0.300637 3.66675 0.947098
--3.66675 -0.300637 0.947098
-0.300637 -3.66675 0.947098
-3.67839 0.0698067 0.947098
--0.0698067 3.67839 0.947098
--3.67839 -0.0698067 0.947098
-0.0698067 -3.67839 0.947098
-1.25752 3.37012 0.915241
--3.37012 1.25752 0.915241
--1.25752 -3.37012 0.915241
-3.37012 -1.25752 0.915241
-2.69641 2.62551 0.971632
--2.62551 2.69641 0.971632
--2.69641 -2.62551 0.971632
-2.62551 -2.69641 0.971632
-3.51382 0.51677 0.893841
--0.51677 3.51382 0.893841
--3.51382 -0.51677 0.893841
-0.51677 -3.51382 0.893841
-3.82439 0.0668085 0.984564
--0.0668085 3.82439 0.984564
--3.82439 -0.0668085 0.984564
-0.0668085 -3.82439 0.984564
-2.58994 2.52947 0.925077
--2.52947 2.58994 0.925077
--2.58994 -2.52947 0.925077
-2.52947 -2.58994 0.925077
-3.53483 0.601376 -0.910106
--0.601376 3.53483 -0.910106
--3.53483 -0.601376 -0.910106
-0.601376 -3.53483 -0.910106
-1.6817 2.90071 -0.762443
--2.90071 1.6817 -0.762443
--1.6817 -2.90071 -0.762443
-2.90071 -1.6817 -0.762443
-2.63872 2.08424 -0.770513
--2.08424 2.63872 -0.770513
--2.63872 -2.08424 -0.770513
-2.08424 -2.63872 -0.770513
-1.20615 3.24741 0.844328
--3.24741 1.20615 0.844328
--1.20615 -3.24741 0.844328
-3.24741 -1.20615 0.844328
-1.74329 3.01829 -0.857527
--3.01829 1.74329 -0.857527
--1.74329 -3.01829 -0.857527
-3.01829 -1.74329 -0.857527
-3.22369 1.43657 -0.882291
--1.43657 3.22369 -0.882291
--3.22369 -1.43657 -0.882291
-1.43657 -3.22369 -0.882291
-3.10381 1.88596 -0.929776
--1.88596 3.10381 -0.929776
--3.10381 -1.88596 -0.929776
-1.88596 -3.10381 -0.929776
-3.53968 0.072514 0.888136
--0.072514 3.53968 0.888136
--3.53968 -0.072514 0.888136
-0.072514 -3.53968 0.888136
-1.80591 3.13763 -0.925077
--3.13763 1.80591 -0.925077
--1.80591 -3.13763 -0.925077
-3.13763 -1.80591 -0.925077
-2.21978 2.5649 -0.79399
--2.5649 2.21978 -0.79399
--2.21978 -2.5649 -0.79399
-2.5649 -2.21978 -0.79399
-3.41016 0.289524 0.816339
--0.289524 3.41016 0.816339
--3.41016 -0.289524 0.816339
-0.289524 -3.41016 0.816339
-2.55033 2.00766 -0.656586
--2.00766 2.55033 -0.656586
--2.55033 -2.00766 -0.656586
-2.00766 -2.55033 -0.656586
-3.10959 1.38011 -0.801567
--1.38011 3.10959 -0.801567
--3.10959 -1.38011 -0.801567
-1.38011 -3.10959 -0.801567
-2.65148 2.02117 0.745941
--2.02117 2.65148 0.745941
--2.65148 -2.02117 0.745941
-2.02117 -2.65148 0.745941
-3.40555 0.574099 -0.837528
--0.574099 3.40555 -0.837528
--3.40555 -0.574099 -0.837528
-0.574099 -3.40555 -0.837528
-0.322562 3.18974 0.60793
--3.18974 0.322562 0.60793
--0.322562 -3.18974 0.60793
-3.18974 -0.322562 0.60793
-2.08189 2.38974 -0.556876
--2.38974 2.08189 -0.556876
--2.08189 -2.38974 -0.556876
-2.38974 -2.08189 -0.556876
-2.14461 2.46988 -0.684547
--2.46988 2.14461 -0.684547
--2.14461 -2.46988 -0.684547
-2.46988 -2.14461 -0.684547
-0.116314 3.14686 0.525175
--3.14686 0.116314 0.525175
--0.116314 -3.14686 0.525175
-3.14686 -0.116314 0.525175
-3.20139 0.281122 0.61786
--0.281122 3.20139 0.61786
--3.20139 -0.281122 0.61786
-0.281122 -3.20139 0.61786
-2.18646 2.16895 0.391374
--2.16895 2.18646 0.391374
--2.18646 -2.16895 0.391374
-2.16895 -2.18646 0.391374
-2.03664 2.3307 -0.425779
--2.3307 2.03664 -0.425779
--2.03664 -2.3307 -0.425779
-2.3307 -2.03664 -0.425779
-0.505532 3.08872 0.492727
--3.08872 0.505532 0.492727
--0.505532 -3.08872 0.492727
-3.08872 -0.505532 0.492727
-2.96978 0.673235 -0.297042
--0.673235 2.96978 -0.297042
--2.96978 -0.673235 -0.297042
-0.673235 -2.96978 -0.297042
-0.668928 3.07045 -0.51444
--3.07045 0.668928 -0.51444
--0.668928 -3.07045 -0.51444
-3.07045 -0.668928 -0.51444
-0.658448 2.99879 -0.368125
--2.99879 0.658448 -0.368125
--0.658448 -2.99879 -0.368125
-2.99879 -0.658448 -0.368125
-2.23896 2.21434 0.525175
--2.21434 2.23896 0.525175
--2.23896 -2.21434 0.525175
-2.21434 -2.23896 0.525175
-2.49641 1.70436 -0.212007
--1.70436 2.49641 -0.212007
--2.49641 -1.70436 -0.212007
-1.70436 -2.49641 -0.212007
-2.14013 2.15145 -0.260842
--2.15145 2.14013 -0.260842
--2.14013 -2.15145 -0.260842
-2.15145 -2.14013 -0.260842
-0.489523 3.02187 0.344643
--3.02187 0.489523 0.344643
--0.489523 -3.02187 0.344643
-3.02187 -0.489523 0.344643
-3.02817 0.691675 -0.448383
--0.691675 3.02817 -0.448383
--3.02817 -0.691675 -0.448383
-0.691675 -3.02817 -0.448383
-0.866018 2.94081 0.356412
--2.94081 0.866018 0.356412
--0.866018 -2.94081 0.356412
-2.94081 -0.866018 0.356412
-0.277428 3.03247 -0.297042
--3.03247 0.277428 -0.297042
--0.277428 -3.03247 -0.297042
-3.03247 -0.277428 -0.297042
-0.309593 3.10831 0.481754
--3.10831 0.309593 0.481754
--0.309593 -3.10831 0.481754
-3.10831 -0.309593 0.481754
-3.02966 0.468539 0.356412
--0.468539 3.02966 0.356412
--3.02966 -0.468539 0.356412
-0.468539 -3.02966 0.356412
-2.17219 2.19028 -0.402906
--2.19028 2.17219 -0.402906
--2.17219 -2.19028 -0.402906
-2.19028 -2.17219 -0.402906
-0.682459 2.99823 0.379779
--2.99823 0.682459 0.379779
--0.682459 -2.99823 0.379779
-2.99823 -0.682459 0.379779
-0.666663 2.95111 0.224271
--2.95111 0.666663 0.224271
--0.666663 -2.95111 0.224271
-2.95111 -0.666663 0.224271
-1.19387 2.77416 -0.19971
--2.77416 1.19387 -0.19971
--1.19387 -2.77416 -0.19971
-2.77416 -1.19387 -0.19971
-2.02941 2.28622 0.33282
--2.28622 2.02941 0.33282
--2.02941 -2.28622 0.33282
-2.28622 -2.02941 0.33282
-1.61794 2.70158 0.525175
--2.70158 1.61794 0.525175
--1.61794 -2.70158 0.525175
-2.70158 -1.61794 0.525175
-2.83021 1.02336 -0.13779
--1.02336 2.83021 -0.13779
--2.83021 -1.02336 -0.13779
-1.02336 -2.83021 -0.13779
-1.01522 2.82434 -0.0502443
--2.82434 1.01522 -0.0502443
--1.01522 -2.82434 -0.0502443
-2.82434 -1.01522 -0.0502443
-1.19056 2.75502 -0.0502443
--2.75502 1.19056 -0.0502443
--1.19056 -2.75502 -0.0502443
-2.75502 -1.19056 -0.0502443
-2.58288 1.52664 0.0251301
--1.52664 2.58288 0.0251301
--2.58288 -1.52664 0.0251301
-1.52664 -2.58288 0.0251301
-2.82284 1.01589 0.012566
--1.01589 2.82284 0.012566
--2.82284 -1.01589 0.012566
-1.01589 -2.82284 0.012566
-1.36137 2.67766 -0.0878512
--2.67766 1.36137 -0.0878512
--1.36137 -2.67766 -0.0878512
-2.67766 -1.36137 -0.0878512
-2.99078 0.280058 0.0878512
--0.280058 2.99078 0.0878512
--2.99078 -0.280058 0.0878512
-0.280058 -2.99078 0.0878512
-2.12262 2.12102 0.0376902
--2.12102 2.12262 0.0376902
--2.12262 -2.12102 0.0376902
-2.12102 -2.12262 0.0376902
-2.97544 0.476248 -0.162637
--0.476248 2.97544 -0.162637
--2.97544 -0.476248 -0.162637
-0.476248 -2.97544 -0.162637
-2.48592 1.68624 0.0878512
--1.68624 2.48592 0.0878512
--2.48592 -1.68624 0.0878512
-1.68624 -2.48592 0.0878512
-0.290892 3.0087 0.212007
--3.0087 0.290892 0.212007
--0.290892 -3.0087 0.212007
-3.0087 -0.290892 0.212007
-2.52926 1.73239 -0.356412
--1.73239 2.52926 -0.356412
--2.52926 -1.73239 -0.356412
-1.73239 -2.52926 -0.356412
-1.19622 2.7567 0.100362
--2.7567 1.19622 0.100362
--1.19622 -2.7567 0.100362
-2.7567 -1.19622 0.100362
-2.78783 1.21598 -0.285019
--1.21598 2.78783 -0.285019
--2.78783 -1.21598 -0.285019
-1.21598 -2.78783 -0.285019
-0.279081 2.99657 -0.13779
--2.99657 0.279081 -0.13779
--0.279081 -2.99657 -0.13779
-2.99657 -0.279081 -0.13779
-2.76367 1.19141 0.13779
--1.19141 2.76367 0.13779
--2.76367 -1.19141 0.13779
-1.19141 -2.76367 0.13779
-2.98391 0.466456 0.19971
--0.466456 2.98391 0.19971
--2.98391 -0.466456 0.19971
-0.466456 -2.98391 0.19971
-3.0602 0.498889 -0.437116
--0.498889 3.0602 -0.437116
--3.0602 -0.498889 -0.437116
-0.498889 -3.0602 -0.437116
-1.2481 4.82578 -0.175023
--4.82578 1.2481 -0.175023
--1.2481 -4.82578 -0.175023
-4.82578 -1.2481 -0.175023
-1.2451 4.84176 -0.0376902
--4.84176 1.2451 -0.0376902
--1.2451 -4.84176 -0.0376902
-4.84176 -1.2451 -0.0376902
-4.90169 0.92739 -0.150226
--0.92739 4.90169 -0.150226
--4.90169 -0.92739 -0.150226
-0.92739 -4.90169 -0.150226
-4.61861 1.81388 -0.272952
--1.81388 4.61861 -0.272952
--4.61861 -1.81388 -0.272952
-1.81388 -4.61861 -0.272952
-0.322213 4.97186 -0.187381
--4.97186 0.322213 -0.187381
--0.322213 -4.97186 -0.187381
-4.97186 -0.322213 -0.187381
-0.309324 4.98655 0.0878512
--4.98655 0.309324 0.0878512
--0.309324 -4.98655 0.0878512
-4.98655 -0.309324 0.0878512
-4.82702 0.899447 -0.414376
--0.899447 4.82702 -0.414376
--4.82702 -0.899447 -0.414376
-0.899447 -4.82702 -0.414376
-0.315789 4.98931 -0.0376902
--4.98931 0.315789 -0.0376902
--0.315789 -4.98931 -0.0376902
-4.98931 -0.315789 -0.0376902
-0.618626 4.95197 0.13779
--4.95197 0.618626 0.13779
--0.618626 -4.95197 0.13779
-4.95197 -0.618626 0.13779
-4.8427 1.24145 -0.0376902
--1.24145 4.8427 -0.0376902
--4.8427 -1.24145 -0.0376902
-1.24145 -4.8427 -0.0376902
-4.91136 0.935613 -0.0251301
--0.935613 4.91136 -0.0251301
--4.91136 -0.935613 -0.0251301
-0.935613 -4.91136 -0.0251301
-4.75296 1.53971 -0.0878512
-1.53971 4.75296 0.0878512
--1.53971 4.75296 -0.0878512
--4.75296 1.53971 0.0878512
--4.75296 -1.53971 -0.0878512
--1.53971 -4.75296 0.0878512
-1.53971 -4.75296 -0.0878512
-4.75296 -1.53971 0.0878512
-0.609325 4.92785 0.260842
--4.92785 0.609325 0.260842
--0.609325 -4.92785 0.260842
-4.92785 -0.609325 0.260842
-0.928342 4.90335 0.13779
--4.90335 0.928342 0.13779
--0.928342 -4.90335 0.13779
-4.90335 -0.928342 0.13779
-1.22354 4.81558 0.24869
--4.81558 1.22354 0.24869
--1.22354 -4.81558 0.24869
-4.81558 -1.22354 0.24869
-4.38116 2.40928 0.012566
--2.40928 4.38116 0.012566
--4.38116 -2.40928 0.012566
-2.40928 -4.38116 0.012566
-0.916313 4.87669 0.272952
--4.87669 0.916313 0.272952
--0.916313 -4.87669 0.272952
-4.87669 -0.916313 0.272952
-0.626033 4.96057 0.012566
--4.96057 0.626033 0.012566
--0.626033 -4.96057 0.012566
-4.96057 -0.626033 0.012566
-3.99276 2.92089 0.320944
--2.92089 3.99276 0.320944
--3.99276 -2.92089 0.320944
-2.92089 -3.99276 0.320944
-4.52601 1.76374 -0.51444
--1.76374 4.52601 -0.51444
--4.52601 -1.76374 -0.51444
-1.76374 -4.52601 -0.51444
-4.02523 2.93611 0.187381
--2.93611 4.02523 0.187381
--4.02523 -2.93611 0.187381
-2.93611 -4.02523 0.187381
-4.8883 0.329754 0.437116
--0.329754 4.8883 0.437116
--4.8883 -0.329754 0.437116
-0.329754 -4.8883 0.437116
-4.36985 2.41022 0.13779
--2.41022 4.36985 0.13779
--4.36985 -2.41022 0.13779
-2.41022 -4.36985 0.13779
-0.631468 4.95352 -0.112856
--4.95352 0.631468 -0.112856
--0.631468 -4.95352 -0.112856
-4.95352 -0.631468 -0.112856
-4.3066 2.38947 0.379779
--2.38947 4.3066 0.379779
--4.3066 -2.38947 0.379779
-2.38947 -4.3066 0.379779
-3.6422 3.4237 0.0502443
--3.4237 3.6422 0.0502443
--3.6422 -3.4237 0.0502443
-3.4237 -3.6422 0.0502443
-4.83204 1.23225 -0.162637
--1.23225 4.83204 -0.162637
--4.83204 -1.23225 -0.162637
-1.23225 -4.83204 -0.162637
-4.8209 1.24814 0.19971
--1.24814 4.8209 0.19971
--4.8209 -1.24814 0.19971
-1.24814 -4.8209 0.19971
-3.78258 3.15412 0.379779
--3.15412 3.78258 0.379779
--3.78258 -3.15412 0.379779
-3.15412 -3.78258 0.379779
-1.20622 4.77508 0.379779
--4.77508 1.20622 0.379779
--1.20622 -4.77508 0.379779
-4.77508 -1.20622 0.379779
-4.34487 2.40357 0.260842
--2.40357 4.34487 0.260842
--4.34487 -2.40357 0.260842
-2.40357 -4.34487 0.260842
-2.10786 4.50587 0.224271
--4.50587 2.10786 0.224271
--2.10786 -4.50587 0.224271
-4.50587 -2.10786 0.224271
-0.886179 4.78251 0.503623
--4.78251 0.886179 0.503623
--0.886179 -4.78251 0.503623
-4.78251 -0.886179 0.503623
-4.6363 1.15692 -0.627691
--1.15692 4.6363 -0.627691
--4.6363 -1.15692 -0.627691
-1.15692 -4.6363 -0.627691
-4.87336 0.915053 -0.285019
--0.915053 4.87336 -0.285019
--4.87336 -0.915053 -0.285019
-0.915053 -4.87336 -0.285019
-4.94029 0.326401 0.309017
--0.326401 4.94029 0.309017
--4.94029 -0.326401 0.309017
-0.326401 -4.94029 0.309017
-4.80628 1.21925 -0.285019
--1.21925 4.80628 -0.285019
--4.80628 -1.21925 -0.285019
-1.21925 -4.80628 -0.285019
-4.76585 1.20262 -0.402906
--1.20262 4.76585 -0.402906
--4.76585 -1.20262 -0.402906
-1.20262 -4.76585 -0.402906
-0.902517 4.83675 0.391374
--4.83675 0.902517 0.391374
--0.902517 -4.83675 0.391374
-4.83675 -0.902517 0.391374
-4.38293 2.03092 -0.556876
--2.03092 4.38293 -0.556876
--4.38293 -2.03092 -0.556876
-2.03092 -4.38293 -0.556876
-4.44251 2.06599 -0.437116
--2.06599 4.44251 -0.437116
--4.44251 -2.06599 -0.437116
-2.06599 -4.44251 -0.437116
-3.62215 3.38093 -0.297042
--3.38093 3.62215 -0.297042
--3.62215 -3.38093 -0.297042
-3.38093 -3.62215 -0.297042
-2.08707 4.47607 0.344643
--4.47607 2.08707 0.344643
--2.08707 -4.47607 0.344643
-4.47607 -2.08707 0.344643
-3.94578 2.89491 0.448383
--2.89491 3.94578 0.448383
--3.94578 -2.89491 0.448383
-2.89491 -3.94578 0.448383
-4.58196 1.79285 -0.391374
--1.79285 4.58196 -0.391374
--4.58196 -1.79285 -0.391374
-1.79285 -4.58196 -0.391374
-2.63441 4.18247 0.33282
--4.18247 2.63441 0.33282
--2.63441 -4.18247 0.33282
-4.18247 -2.63441 0.33282
-3.6675 3.07539 0.61786
--3.07539 3.6675 0.61786
--3.6675 -3.07539 0.61786
-3.07539 -3.6675 0.61786
-4.71138 1.18258 -0.51444
--1.18258 4.71138 -0.51444
--4.71138 -1.18258 -0.51444
-1.18258 -4.71138 -0.51444
-2.06012 4.43281 0.45958
--4.43281 2.06012 0.45958
--2.06012 -4.43281 0.45958
-4.43281 -2.06012 0.45958
-4.23851 1.95107 -0.745941
--1.95107 4.23851 -0.745941
--4.23851 -1.95107 -0.745941
-1.95107 -4.23851 -0.745941
-3.88515 2.85869 0.567269
--2.85869 3.88515 0.567269
--3.88515 -2.85869 0.567269
-2.85869 -3.88515 0.567269
-2.00391 4.1604 -0.786288
--4.1604 2.00391 -0.786288
--2.00391 -4.1604 -0.786288
-4.1604 -2.00391 -0.786288
-0.597034 4.88387 0.391374
--4.88387 0.597034 0.391374
--0.597034 -4.88387 0.391374
-4.88387 -0.597034 0.391374
-2.84636 3.95937 0.481754
--3.95937 2.84636 0.481754
--2.84636 -3.95937 0.481754
-3.95937 -2.84636 0.481754
-2.11123 4.43873 -0.402906
--4.43873 2.11123 -0.402906
--2.11123 -4.43873 -0.402906
-4.43873 -2.11123 -0.402906
-3.7365 3.12366 0.492727
--3.12366 3.7365 0.492727
--3.7365 -3.12366 0.492727
-3.12366 -3.7365 0.492727
-2.52827 4.04545 0.637424
--4.04545 2.52827 0.637424
--2.52827 -4.04545 0.637424
-4.04545 -2.52827 0.637424
-4.61233 1.21829 0.637424
--1.21829 4.61233 0.637424
--4.61233 -1.21829 0.637424
-1.21829 -4.61233 0.637424
-0.584134 4.82872 0.503623
--4.82872 0.584134 0.503623
--0.584134 -4.82872 0.503623
-4.82872 -0.584134 0.503623
-0.863523 4.69979 0.627691
--4.69979 0.863523 0.627691
--0.863523 -4.69979 0.627691
-4.69979 -0.863523 0.627691
-4.44754 1.72545 -0.637424
--1.72545 4.44754 -0.637424
--4.44754 -1.72545 -0.637424
-1.72545 -4.44754 -0.637424
-4.75082 0.332477 0.647056
--0.332477 4.75082 0.647056
--4.75082 -0.332477 0.647056
-0.332477 -4.75082 0.647056
-0.554076 4.67884 0.70265
--4.67884 0.554076 0.70265
--0.554076 -4.67884 0.70265
-4.67884 -0.554076 0.70265
-0.276833 4.83641 0.535827
--4.83641 0.276833 0.535827
--0.276833 -4.83641 0.535827
-4.83641 -0.276833 0.535827
-4.45421 1.09901 -0.809017
--1.09901 4.45421 -0.809017
--4.45421 -1.09901 -0.809017
-1.09901 -4.45421 -0.809017
-2.02382 4.3705 0.577573
--4.3705 2.02382 0.577573
--2.02382 -4.3705 0.577573
-4.3705 -2.02382 0.577573
-2.28616 4.22238 0.597905
--4.22238 2.28616 0.597905
--2.28616 -4.22238 0.597905
-4.22238 -2.28616 0.597905
-4.26657 1.33549 -0.882291
--1.33549 4.26657 -0.882291
--4.26657 -1.33549 -0.882291
-1.33549 -4.26657 -0.882291
-0.26663 4.76306 0.637424
--4.76306 0.26663 0.637424
--0.26663 -4.76306 0.637424
-4.76306 -0.26663 0.637424
-4.82615 0.331654 0.546394
--0.331654 4.82615 0.546394
--4.82615 -0.331654 0.546394
-0.331654 -4.82615 0.546394
-0.569754 4.76001 0.60793
--4.76001 0.569754 0.60793
--0.569754 -4.76001 0.60793
-4.76001 -0.569754 0.60793
-2.88679 3.41374 -0.882291
--3.41374 2.88679 -0.882291
--2.88679 -3.41374 -0.882291
-3.41374 -2.88679 -0.882291
-3.59961 3.02617 0.711536
--3.02617 3.59961 0.711536
--3.59961 -3.02617 0.711536
-3.02617 -3.59961 0.711536
-2.03923 4.24737 -0.70265
--4.24737 2.03923 -0.70265
--2.03923 -4.24737 -0.70265
-4.24737 -2.03923 -0.70265
-1.9853 4.30147 0.675333
--4.30147 1.9853 0.675333
--1.9853 -4.30147 0.675333
-4.30147 -1.9853 0.675333
-0.242662 4.56082 0.823533
--4.56082 0.242662 0.823533
--0.242662 -4.56082 0.823533
-4.56082 -0.242662 0.823533
-1.08993 4.42461 0.830596
--4.42461 1.08993 0.830596
--1.08993 -4.42461 0.830596
-4.42461 -1.08993 0.830596
-0.608228 4.42914 -0.882291
--4.42914 0.608228 -0.882291
--0.608228 -4.42914 -0.882291
-4.42914 -0.608228 -0.882291
-3.07159 3.33752 0.844328
--3.33752 3.07159 0.844328
--3.07159 -3.33752 0.844328
-3.33752 -3.07159 0.844328
-2.06948 4.3243 -0.60793
--4.3243 2.06948 -0.60793
--2.06948 -4.3243 -0.60793
-4.3243 -2.06948 -0.60793
-2.80838 3.80475 -0.684547
--3.80475 2.80838 -0.684547
--2.80838 -3.80475 -0.684547
-3.80475 -2.80838 -0.684547
-1.94209 4.22178 0.762443
--4.22178 1.94209 0.762443
--1.94209 -4.22178 0.762443
-4.22178 -1.94209 0.762443
-3.06144 3.64807 -0.647056
--3.64807 3.06144 -0.647056
--3.06144 -3.64807 -0.647056
-3.64807 -3.06144 -0.647056
-2.53234 3.57348 0.925077
--3.57348 2.53234 0.925077
--2.53234 -3.57348 0.925077
-3.57348 -2.53234 0.925077
-4.50448 0.81477 -0.816339
--0.81477 4.50448 -0.816339
--4.50448 -0.81477 -0.816339
-0.81477 -4.50448 -0.816339
-4.52771 1.20202 0.728969
--1.20202 4.52771 0.728969
--4.52771 -1.20202 0.728969
-1.20202 -4.52771 0.728969
-2.19826 4.0833 0.770513
--4.0833 2.19826 0.770513
--2.19826 -4.0833 0.770513
-4.0833 -2.19826 0.770513
-3.00994 3.57757 -0.737513
--3.57757 3.00994 -0.737513
--3.00994 -3.57757 -0.737513
-3.57757 -3.00994 -0.737513
-1.91606 3.95131 -0.920232
--3.95131 1.91606 -0.920232
--1.91606 -3.95131 -0.920232
-3.95131 -1.91606 -0.920232
-0.254857 4.66838 0.737513
--4.66838 0.254857 0.737513
--0.254857 -4.66838 0.737513
-4.66838 -0.254857 0.737513
-4.42269 1.18069 0.816339
--1.18069 4.42269 0.816339
--4.42269 -1.18069 0.816339
-1.18069 -4.42269 0.816339
-1.20552 4.54551 -0.711536
--4.54551 1.20552 -0.711536
--1.20552 -4.54551 -0.711536
-4.54551 -1.20552 -0.711536
-4.31616 1.9934 -0.656586
--1.9934 4.31616 -0.656586
--4.31616 -1.9934 -0.656586
-1.9934 -4.31616 -0.656586
-4.142 1.89972 -0.830596
--1.89972 4.142 -0.830596
--4.142 -1.89972 -0.830596
-1.89972 -4.142 -0.830596
-1.67187 4.08553 -0.910106
--4.08553 1.67187 -0.910106
--1.67187 -4.08553 -0.910106
-4.08553 -1.67187 -0.910106
-4.55543 1.13066 -0.720309
--1.13066 4.55543 -0.720309
--4.55543 -1.13066 -0.720309
-1.13066 -4.55543 -0.720309
-1.8899 4.12335 0.844328
--4.12335 1.8899 0.844328
--1.8899 -4.12335 0.844328
-4.12335 -1.8899 0.844328
-2.98485 3.25229 0.910106
--3.25229 2.98485 0.910106
--2.98485 -3.25229 0.910106
-3.25229 -2.98485 0.910106
-2.60902 3.67092 0.863923
--3.67092 2.60902 0.863923
--2.60902 -3.67092 0.863923
-3.67092 -2.60902 0.863923
-4.34201 1.06496 -0.882291
--1.06496 4.34201 -0.882291
--4.34201 -1.06496 -0.882291
-1.06496 -4.34201 -0.882291
-4.39315 0.886772 0.876307
--0.886772 4.39315 0.876307
--4.39315 -0.886772 0.876307
-0.886772 -4.39315 0.876307
-1.59625 4.16411 0.888136
--4.16411 1.59625 0.888136
--1.59625 -4.16411 0.888136
-4.16411 -1.59625 0.888136
-1.23048 3.97661 0.986686
--3.97661 1.23048 0.986686
--1.23048 -3.97661 0.986686
-3.97661 -1.23048 0.986686
-3.18803 2.5587 -0.996134
--2.5587 3.18803 -0.996134
--3.18803 -2.5587 -0.996134
-2.5587 -3.18803 -0.996134
-1.0521 4.29891 0.904827
--4.29891 1.0521 0.904827
--1.0521 -4.29891 0.904827
-4.29891 -1.0521 0.904827
-4.3442 0.325971 0.934329
--0.325971 4.3442 0.934329
--4.3442 -0.325971 0.934329
-0.325971 -4.3442 0.934329
-1.16769 4.36081 -0.857527
--4.36081 1.16769 -0.857527
--1.16769 -4.36081 -0.857527
-4.36081 -1.16769 -0.857527
-4.14354 1.58717 -0.899405
--1.58717 4.14354 -0.899405
--4.14354 -1.58717 -0.899405
-1.58717 -4.14354 -0.899405
-1.95995 4.05478 -0.863923
--4.05478 1.95995 -0.863923
--1.95995 -4.05478 -0.863923
-4.05478 -1.95995 -0.863923
-2.62111 3.07127 -0.999289
--3.07127 2.62111 -0.999289
--2.62111 -3.07127 -0.999289
-3.07127 -2.62111 -0.999289
-1.83375 4.01548 0.910106
--4.01548 1.83375 0.910106
--1.83375 -4.01548 0.910106
-4.01548 -1.83375 0.910106
-2.70869 3.6514 -0.837528
--3.6514 2.70869 -0.837528
--2.70869 -3.6514 -0.837528
-3.6514 -2.70869 -0.837528
-4.27259 0.0553048 0.962028
--0.0553048 4.27259 0.962028
--4.27259 -0.0553048 0.962028
-0.0553048 -4.27259 0.962028
-3.75398 2.32257 -0.910106
--2.32257 3.75398 -0.910106
--3.75398 -2.32257 -0.910106
-2.32257 -3.75398 -0.910106
-4.21199 0.321906 0.974527
--0.321906 4.21199 0.974527
--4.21199 -0.321906 0.974527
-0.321906 -4.21199 0.974527
-1.62836 3.96356 -0.958522
--3.96356 1.62836 -0.958522
--1.62836 -3.96356 -0.958522
-3.96356 -1.62836 -0.958522
-2.95141 3.49905 -0.816339
--3.49905 2.95141 -0.816339
--2.95141 -3.49905 -0.816339
-3.49905 -2.95141 -0.816339
-4.02315 1.2471 -0.977268
--1.2471 4.02315 -0.977268
--4.02315 -1.2471 -0.977268
-1.2471 -4.02315 -0.977268
-1.14172 4.24036 -0.920232
--4.24036 1.14172 -0.920232
--1.14172 -4.24036 -0.920232
-4.24036 -1.14172 -0.920232
-2.19463 3.5662 0.982287
--3.5662 2.19463 0.982287
--2.19463 -3.5662 0.982287
-3.5662 -2.19463 0.982287
-4.23231 1.03241 -0.934329
--1.03241 4.23231 -0.934329
--4.23231 -1.03241 -0.934329
-1.03241 -4.23231 -0.934329
-2.27641 3.68663 0.942991
--3.68663 2.27641 0.942991
--2.27641 -3.68663 0.942991
-3.68663 -2.27641 0.942991
-2.59158 3.22568 0.990461
--3.22568 2.59158 0.990461
--2.59158 -3.22568 0.990461
-3.22568 -2.59158 0.990461
-3.65704 2.25624 -0.954865
--2.25624 3.65704 -0.954865
--3.65704 -2.25624 -0.954865
-2.25624 -3.65704 -0.954865
-4.28068 0.869669 0.929776
--0.869669 4.28068 0.929776
--4.28068 -0.869669 0.929776
-0.869669 -4.28068 0.929776
-4.14806 1.2921 -0.938734
--1.2921 4.14806 -0.938734
--4.14806 -1.2921 -0.938734
-1.2921 -4.14806 -0.938734
-2.47984 3.31236 -0.990461
--3.31236 2.47984 -0.990461
--2.47984 -3.31236 -0.990461
-3.31236 -2.47984 -0.990461
-1.55001 4.05874 0.938734
--4.05874 1.55001 0.938734
--1.55001 -4.05874 0.938734
-4.05874 -1.55001 0.938734
-4.06509 1.10275 0.977268
--1.10275 4.06509 0.977268
--4.06509 -1.10275 0.977268
-1.10275 -4.06509 0.977268
-1.45323 3.8342 0.994951
--3.8342 1.45323 0.994951
--1.45323 -3.8342 0.994951
-3.8342 -1.45323 0.994951
-2.45175 3.46991 0.968583
--3.46991 2.45175 0.968583
--2.45175 -3.46991 0.968583
-3.46991 -2.45175 0.968583
-2.90838 3.01256 -0.982287
--3.01256 2.90838 -0.982287
--2.90838 -3.01256 -0.982287
-3.01256 -2.90838 -0.982287
-3.8003 0.306299 0.982287
--0.306299 3.8003 0.982287
--3.8003 -0.306299 0.982287
-0.306299 -3.8003 0.982287
-1.18452 3.84689 0.999684
--3.84689 1.18452 0.999684
--1.18452 -3.84689 0.999684
-3.84689 -1.18452 0.999684
-4.08804 0.317601 0.994951
--0.317601 4.08804 0.994951
--4.08804 -0.317601 0.994951
-0.317601 -4.08804 0.994951
-4.15899 0.583383 0.979855
--0.583383 4.15899 0.979855
--4.15899 -0.583383 0.979855
-0.583383 -4.15899 0.979855
-4.10531 0.995425 -0.974527
--0.995425 4.10531 -0.974527
--4.10531 -0.995425 -0.974527
-0.995425 -4.10531 -0.974527
-3.58936 1.90336 -0.998027
--1.90336 3.58936 -0.998027
--3.58936 -1.90336 -0.998027
-1.90336 -3.58936 -0.998027
-2.67283 3.31825 0.965382
--3.31825 2.67283 0.965382
--2.67283 -3.31825 0.965382
-3.31825 -2.67283 0.965382
-1.30644 3.82049 -0.999289
--3.82049 1.30644 -0.999289
--1.30644 -3.82049 -0.999289
-3.82049 -1.30644 -0.999289
-1.34192 3.94041 -0.986686
--3.94041 1.34192 -0.986686
--1.34192 -3.94041 -0.986686
-3.94041 -1.34192 -0.986686
-2.40882 3.20909 -0.999921
--3.20909 2.40882 -0.999921
--2.40882 -3.20909 -0.999921
-3.20909 -2.40882 -0.999921
-4.16257 0.851121 0.968583
--0.851121 4.16257 0.968583
--4.16257 -0.851121 0.968583
-0.851121 -4.16257 0.968583
-3.55595 2.1877 -0.984564
--2.1877 3.55595 -0.984564
--3.55595 -2.1877 -0.984564
-2.1877 -3.55595 -0.984564
-2.36872 3.36226 0.993611
--3.36226 2.36872 0.993611
--2.36872 -3.36226 0.993611
-3.36226 -2.36872 0.993611
-1.2718 4.09193 0.958522
--4.09193 1.2718 0.958522
--1.2718 -4.09193 0.958522
-4.09193 -1.2718 0.958522
-0.303207 3.72684 -0.965382
--3.72684 0.303207 -0.965382
--0.303207 -3.72684 -0.965382
-3.72684 -0.303207 -0.965382
-0.567408 3.99762 -0.999289
--3.99762 0.567408 -0.999289
--0.567408 -3.99762 -0.999289
-3.99762 -0.567408 -0.999289
-0.321906 4.21199 -0.974527
--4.21199 0.321906 -0.974527
--0.321906 -4.21199 -0.974527
-4.21199 -0.321906 -0.974527
-3.9861 0.961218 -0.994951
--0.961218 3.9861 -0.994951
--3.9861 -0.961218 -0.994951
-0.961218 -3.9861 -0.994951
-3.34788 2.04811 -0.997159
--2.04811 3.34788 -0.997159
--3.34788 -2.04811 -0.997159
-2.04811 -3.34788 -0.997159
-2.29239 3.26261 0.999921
--3.26261 2.29239 0.999921
--2.29239 -3.26261 0.999921
-3.26261 -2.29239 0.999921
-4.04067 0.831488 0.992115
--0.831488 4.04067 0.992115
--4.04067 -0.831488 0.992115
-0.831488 -4.04067 0.992115
-3.45234 2.11798 -0.998737
--2.11798 3.45234 -0.998737
--3.45234 -2.11798 -0.998737
-2.11798 -3.45234 -0.998737
-1.40408 3.71862 0.999684
--3.71862 1.40408 0.999684
--1.40408 -3.71862 0.999684
-3.71862 -1.40408 0.999684
-4.14773 0.733029 -0.977268
--0.733029 4.14773 -0.977268
--4.14773 -0.733029 -0.977268
-0.733029 -4.14773 -0.977268
-3.45409 1.19619 0.938734
--1.19619 3.45409 0.938734
--3.45409 -1.19619 0.938734
-1.19619 -3.45409 0.938734
-1.50211 3.94818 0.974527
--3.94818 1.50211 0.974527
--1.50211 -3.94818 0.974527
-3.94818 -1.50211 0.974527
-1.46997 3.53124 -0.984564
--3.53124 1.46997 -0.984564
--1.46997 -3.53124 -0.984564
-3.53124 -1.46997 -0.984564
-3.91007 0.558491 0.998737
--0.558491 3.91007 0.998737
--3.91007 -0.558491 0.998737
-0.558491 -3.91007 0.998737
-3.91585 0.682412 -0.999684
--0.682412 3.91585 -0.999684
--3.91585 -0.682412 -0.999684
-0.682412 -3.91585 -0.999684
-1.9851 3.72878 0.974527
--3.72878 1.9851 0.974527
--1.9851 -3.72878 0.974527
-3.72878 -1.9851 0.974527
-3.79639 1.29926 0.999921
--1.29926 3.79639 0.999921
--3.79639 -1.29926 0.999921
-1.29926 -3.79639 0.999921
-1.13465 3.70481 0.992115
--3.70481 1.13465 0.992115
--1.13465 -3.70481 0.992115
-3.70481 -1.13465 0.992115
-0.553345 3.86018 -0.994951
--3.86018 0.553345 -0.994951
--0.553345 -3.86018 -0.994951
-3.86018 -0.553345 -0.994951
-1.67875 3.4094 -0.979855
--3.4094 1.67875 -0.979855
--1.67875 -3.4094 -0.979855
-3.4094 -1.67875 -0.979855
-2.25295 2.98421 -0.965382
--2.98421 2.25295 -0.965382
--2.25295 -2.98421 -0.965382
-2.98421 -2.25295 -0.965382
-2.97997 2.3782 -0.982287
--2.3782 2.97997 -0.982287
--2.97997 -2.3782 -0.982287
-2.3782 -2.97997 -0.982287
-3.91689 0.811149 1
--0.811149 3.91689 1
--3.91689 -0.811149 1
-0.811149 -3.91689 1
-3.93742 0.311873 0.998737
--0.311873 3.93742 0.998737
--3.93742 -0.311873 0.998737
-0.311873 -3.93742 0.998737
-0.31335 3.9751 -0.999921
--3.9751 0.31335 -0.999921
--0.31335 -3.9751 -0.999921
-3.9751 -0.31335 -0.999921
-3.61304 1.50029 0.996134
--1.50029 3.61304 0.996134
--3.61304 -1.50029 0.996134
-1.50029 -3.61304 0.996134
-2.53559 2.96276 -0.994951
--2.96276 2.53559 -0.994951
--2.53559 -2.96276 -0.994951
-2.96276 -2.53559 -0.994951
-3.57698 0.379895 -0.915241
--0.379895 3.57698 -0.915241
--3.57698 -0.379895 -0.915241
-0.379895 -3.57698 -0.915241
-3.82148 1.04699 0.999289
--1.04699 3.82148 0.999289
--3.82148 -1.04699 0.999289
-1.04699 -3.82148 0.999289
-2.21642 3.16293 0.990461
--3.16293 2.21642 0.990461
--2.21642 -3.16293 0.990461
-3.16293 -2.21642 0.990461
-3.6997 1.01862 0.986686
--1.01862 3.6997 0.986686
--3.6997 -1.01862 0.986686
-1.01862 -3.6997 0.986686
-4.0351 0.571176 0.997159
--0.571176 4.0351 0.997159
--4.0351 -0.571176 0.997159
-0.571176 -4.0351 0.997159
-2.74976 2.08954 0.837528
--2.08954 2.74976 0.837528
--2.74976 -2.08954 0.837528
-2.08954 -2.74976 0.837528
-0.170355 3.78416 0.977268
--3.78416 0.170355 0.977268
--0.170355 -3.78416 0.977268
-3.78416 -0.170355 0.977268
-2.33032 3.09559 -0.992115
--3.09559 2.33032 -0.992115
--2.33032 -3.09559 -0.992115
-3.09559 -2.33032 -0.992115
-3.72338 0.165275 -0.962028
-0.160318 3.66367 0.942991
--0.165275 3.72338 -0.962028
--3.66367 0.160318 0.942991
--3.72338 -0.165275 -0.962028
--0.160318 -3.66367 0.942991
-0.165275 -3.72338 -0.962028
-3.66367 -0.160318 0.942991
-3.74476 0.893066 -0.988652
--0.893066 3.74476 -0.988652
--3.74476 -0.893066 -0.988652
-0.893066 -3.74476 -0.988652
-1.27047 3.70011 -0.996134
--3.70011 1.27047 -0.996134
--1.27047 -3.70011 -0.996134
-3.70011 -1.27047 -0.996134
-1.73435 3.53463 -0.998027
--3.53463 1.73435 -0.998027
--1.73435 -3.53463 -0.998027
-3.53463 -1.73435 -0.998027
-3.86528 0.926944 -0.999684
--0.926944 3.86528 -0.999684
--3.86528 -0.926944 -0.999684
-0.926944 -3.86528 -0.999684
-3.70566 0.398742 -0.962028
--0.398742 3.70566 -0.962028
--3.70566 -0.398742 -0.962028
-0.398742 -3.70566 -0.962028
-2.81715 2.91 -0.998737
--2.91 2.81715 -0.998737
--2.81715 -2.91 -0.998737
-2.91 -2.81715 -0.998737
-3.08375 2.46801 -0.998737
--2.46801 3.08375 -0.998737
--3.08375 -2.46801 -0.998737
-2.46801 -3.08375 -0.998737
-3.79317 0.7905 0.992115
--0.7905 3.79317 0.992115
--3.79317 -0.7905 0.992115
-0.7905 -3.79317 0.992115
-3.19274 2.2391 -0.994951
--2.2391 3.19274 -0.994951
--3.19274 -2.2391 -0.994951
-2.2391 -3.19274 -0.994951
-0.420344 3.8518 0.992115
--3.8518 0.420344 0.992115
--0.420344 -3.8518 0.992115
-3.8518 -0.420344 0.992115
-3.79344 0.656169 -0.988652
--0.656169 3.79344 -0.988652
--3.79344 -0.656169 -0.988652
-0.656169 -3.79344 -0.988652
-3.56939 1.2311 0.974527
--1.2311 3.56939 0.974527
--3.56939 -1.2311 0.974527
-1.2311 -3.56939 0.974527
-3.38353 1.78387 -0.984564
--1.78387 3.38353 -0.984564
--3.38353 -1.78387 -0.984564
-1.78387 -3.38353 -0.984564
-3.85817 0.176602 -0.990461
--0.176602 3.85817 -0.990461
--3.85817 -0.176602 -0.990461
-0.176602 -3.85817 -0.990461
-1.42318 3.40557 -0.951057
--3.40557 1.42318 -0.951057
--1.42318 -3.40557 -0.951057
-3.40557 -1.42318 -0.951057
-0.308347 3.84988 -0.990461
--3.84988 0.308347 -0.990461
--0.308347 -3.84988 -0.990461
-3.84988 -0.308347 -0.990461
-0.540459 3.73685 -0.974527
--3.73685 0.540459 -0.974527
--0.540459 -3.73685 -0.974527
-3.73685 -0.540459 -0.974527
-2.14196 3.06485 0.965382
--3.06485 2.14196 0.965382
--2.14196 -3.06485 0.965382
-3.06485 -2.14196 0.965382
-3.67331 0.630635 -0.962028
--0.630635 3.67331 -0.962028
--3.67331 -0.630635 -0.962028
-0.630635 -3.67331 -0.962028
-2.36244 2.62199 0.882291
--2.62199 2.36244 0.882291
--2.36244 -2.62199 0.882291
-2.62199 -2.36244 0.882291
-3.94391 1.0752 0.996134
--1.0752 3.94391 0.996134
--3.94391 -1.0752 0.996134
-1.0752 -3.94391 0.996134
-2.06309 2.96072 0.920232
--2.96072 2.06309 0.920232
--2.06309 -2.96072 0.920232
-2.96072 -2.06309 0.920232
-0.366902 3.48803 0.870184
--3.48803 0.366902 0.870184
--0.366902 -3.48803 0.870184
-3.48803 -0.366902 0.870184
-3.09401 2.16407 -0.974527
--2.16407 3.09401 -0.974527
--3.09401 -2.16407 -0.974527
-2.16407 -3.09401 -0.974527
-2.78092 2.5177 -0.968583
--2.5177 2.78092 -0.968583
--2.78092 -2.5177 -0.968583
-2.5177 -2.78092 -0.968583
-3.53933 0.295116 0.893841
-0.297594 3.59633 -0.920232
--0.295116 3.53933 0.893841
--3.59633 0.297594 -0.920232
--3.53933 -0.295116 0.893841
--0.297594 -3.59633 -0.920232
-0.295116 -3.53933 0.893841
-3.59633 -0.297594 -0.920232
-0.736385 3.47444 -0.893841
--3.47444 0.736385 -0.893841
--0.736385 -3.47444 -0.893841
-3.47444 -0.736385 -0.893841
-3.78586 0.545605 0.984564
--0.545605 3.78586 0.984564
--3.78586 -0.545605 0.984564
-0.545605 -3.78586 0.984564
-2.88779 2.2987 -0.951057
--2.2987 2.88779 -0.951057
--2.88779 -2.2987 -0.951057
-2.2987 -2.88779 -0.951057
-0.526528 3.60534 -0.934329
--3.60534 0.526528 -0.934329
--0.526528 -3.60534 -0.934329
-3.60534 -0.526528 -0.934329
-3.60527 0.155493 -0.920232
--0.155493 3.60527 -0.920232
--3.60527 -0.155493 -0.920232
-0.155493 -3.60527 -0.920232
-3.33337 1.15955 0.882291
--1.15955 3.33337 0.882291
--3.33337 -1.15955 0.882291
-1.15955 -3.33337 0.882291
-3.39439 1.41901 0.947098
--1.41901 3.39439 0.947098
--3.39439 -1.41901 0.947098
-1.41901 -3.39439 0.947098
-2.92661 1.69524 0.786288
--1.69524 2.92661 0.786288
--2.92661 -1.69524 0.786288
-1.69524 -2.92661 0.786288
-1.30777 3.49007 0.962028
--3.49007 1.30777 0.962028
--1.30777 -3.49007 0.962028
-3.49007 -1.30777 0.962028
-0.384929 3.61142 0.929776
--3.61142 0.384929 0.929776
--0.384929 -3.61142 0.929776
-3.61142 -0.384929 0.929776
-0.148973 3.52615 0.882291
--3.52615 0.148973 0.882291
--0.148973 -3.52615 0.882291
-3.52615 -0.148973 0.882291
-3.4559 0.362205 -0.850994
--0.362205 3.4559 -0.850994
--3.4559 -0.362205 -0.850994
-0.362205 -3.4559 -0.850994
-3.29407 0.284672 0.720309
--0.284672 3.29407 0.720309
--3.29407 -0.284672 0.720309
-0.284672 -3.29407 0.720309
-3.28594 0.128898 -0.70265
--0.128898 3.28594 -0.70265
--3.28594 -0.128898 -0.70265
-0.128898 -3.28594 -0.70265
-2.52623 2.78964 0.971632
--2.78964 2.52623 0.971632
--2.52623 -2.78964 0.971632
-2.78964 -2.52623 0.971632
-2.72383 2.15758 -0.850994
--2.15758 2.72383 -0.850994
--2.72383 -2.15758 -0.850994
-2.15758 -2.72383 -0.850994
-3.31312 0.772986 -0.801567
--0.772986 3.31312 -0.801567
--3.31312 -0.772986 -0.801567
-0.772986 -3.31312 -0.801567
-0.292715 3.4841 -0.863923
--3.4841 0.292715 -0.863923
--0.292715 -3.4841 -0.863923
-3.4841 -0.292715 -0.863923
-1.66312 2.76833 0.637424
--2.76833 1.66312 0.637424
--1.66312 -2.76833 0.637424
-2.76833 -1.66312 0.637424
-0.337618 3.28906 0.720309
--3.28906 0.337618 0.720309
--0.337618 -3.28906 0.720309
-3.28906 -0.337618 0.720309
-2.42046 2.37645 0.79399
--2.37645 2.42046 0.79399
--2.42046 -2.37645 0.79399
-2.37645 -2.42046 0.79399
-2.83568 1.64781 0.693653
--1.64781 2.83568 0.693653
--2.83568 -1.64781 0.693653
-1.64781 -2.83568 0.693653
-3.13168 1.55474 0.863923
--1.55474 3.13168 0.863923
--3.13168 -1.55474 0.863923
-1.55474 -3.13168 0.863923
-3.35438 0.347304 -0.778462
--0.347304 3.35438 -0.778462
--3.35438 -0.347304 -0.778462
-0.347304 -3.35438 -0.778462
-2.89506 1.27273 -0.546394
--1.27273 2.89506 -0.546394
--2.89506 -1.27273 -0.546394
-1.27273 -2.89506 -0.546394
-3.31456 0.07707 0.728969
--0.07707 3.31456 0.728969
--3.31456 -0.07707 0.728969
-0.07707 -3.31456 0.728969
-3.58046 0.990636 0.958522
--0.990636 3.58046 0.958522
--3.58046 -0.990636 0.958522
-0.990636 -3.58046 0.958522
-0.351647 3.38387 0.801567
--3.38387 0.351647 0.801567
--0.351647 -3.38387 0.801567
-3.38387 -0.351647 0.801567
-3.42161 0.0748271 0.816339
--0.0748271 3.42161 0.816339
--3.42161 -0.0748271 0.816339
-0.0748271 -3.42161 0.816339
-2.87309 1.43989 0.61786
--1.43989 2.87309 0.61786
--2.87309 -1.43989 0.61786
-1.43989 -2.87309 0.61786
-0.139319 3.40937 0.809017
--3.40937 0.139319 0.809017
--0.139319 -3.40937 0.809017
-3.40937 -0.139319 0.809017
-0.0739989 3.46338 -0.844328
--3.46338 0.0739989 -0.844328
--0.0739989 -3.46338 -0.844328
-3.46338 -0.0739989 -0.844328
-2.49796 2.44639 0.863923
--2.44639 2.49796 0.863923
--2.49796 -2.44639 0.863923
-2.44639 -2.49796 0.863923
-3.55361 0.7499 0.929776
--0.7499 3.55361 0.929776
--3.55361 -0.7499 0.929776
-0.7499 -3.55361 0.929776
-2.44234 2.70383 0.934329
--2.70383 2.44234 0.934329
--2.44234 -2.70383 0.934329
-2.70383 -2.44234 0.934329
-3.67144 0.769948 0.968583
--0.769948 3.67144 0.968583
--3.67144 -0.769948 0.968583
-0.769948 -3.67144 0.968583
-1.77151 3.36213 0.979855
--3.36213 1.77151 0.979855
--1.77151 -3.36213 0.979855
-3.36213 -1.77151 0.979855
-2.46988 2.14461 0.684547
--2.14461 2.46988 0.684547
--2.46988 -2.14461 0.684547
-2.14461 -2.46988 0.684547
-0.0804056 3.18265 -0.577573
--3.18265 0.0804056 -0.577573
--0.0804056 -3.18265 -0.577573
-3.18265 -0.0804056 -0.577573
-2.5494 2.20749 0.778462
--2.20749 2.5494 0.778462
--2.5494 -2.20749 0.778462
-2.20749 -2.5494 0.778462
-2.06553 2.61707 0.745941
--2.61707 2.06553 0.745941
--2.06553 -2.61707 0.745941
-2.61707 -2.06553 0.745941
-0.0698067 3.67839 -0.947098
--3.67839 0.0698067 -0.947098
--0.0698067 -3.67839 -0.947098
-3.67839 -0.0698067 -0.947098
-3.38928 0.137644 -0.79399
--0.137644 3.38928 -0.79399
--3.38928 -0.137644 -0.79399
-0.137644 -3.38928 -0.79399
-3.1274 0.514284 -0.556876
--0.514284 3.1274 -0.556876
--3.1274 -0.514284 -0.556876
-0.514284 -3.1274 -0.556876
-2.94972 1.47366 0.711536
--1.47366 2.94972 0.711536
--2.94972 -1.47366 0.711536
-1.47366 -2.94972 0.711536
-0.131205 3.31286 0.728969
--3.31286 0.131205 0.728969
--0.131205 -3.31286 0.728969
-3.31286 -0.131205 0.728969
-0.0760532 3.36172 -0.770513
--3.36172 0.0760532 -0.770513
--0.0760532 -3.36172 -0.770513
-3.36172 -0.0760532 -0.770513
-2.95783 1.25665 0.61786
--1.25665 2.95783 0.61786
--2.95783 -1.25665 0.61786
-1.25665 -2.95783 0.61786
-1.55494 2.65279 -0.379779
--2.65279 1.55494 -0.379779
--1.55494 -2.65279 -0.379779
-2.65279 -1.55494 -0.379779
-2.80174 1.40898 0.503623
--1.40898 2.80174 0.503623
--2.80174 -1.40898 0.503623
-1.40898 -2.80174 0.503623
-0.888664 3.001 0.492727
--3.001 0.888664 0.492727
--0.888664 -3.001 0.492727
-3.001 -0.888664 0.492727
-0.963324 3.21158 0.762443
--3.21158 0.963324 0.762443
--0.963324 -3.21158 0.762443
-3.21158 -0.963324 0.762443
-3.03636 1.51218 0.79399
--1.51218 3.03636 0.79399
--3.03636 -1.51218 0.79399
-1.51218 -3.03636 0.79399
-3.49332 0.146267 -0.863923
--0.146267 3.49332 -0.863923
--3.49332 -0.146267 -0.863923
-0.146267 -3.49332 -0.863923
-2.72662 1.82261 0.693653
--1.82261 2.72662 0.693653
--2.72662 -1.82261 0.693653
-1.82261 -2.72662 0.693653
-3.18224 0.3214 -0.597905
--0.3214 3.18224 -0.597905
--3.18224 -0.3214 -0.597905
-0.3214 -3.18224 -0.597905
-3.29766 0.551224 -0.754251
--0.551224 3.29766 -0.754251
--3.29766 -0.551224 -0.754251
-0.551224 -3.29766 -0.754251
-2.00766 2.55033 0.656586
--2.55033 2.00766 0.656586
--2.00766 -2.55033 0.656586
-2.55033 -2.00766 0.656586
-0.0780921 3.2701 -0.684547
--3.2701 0.0780921 -0.684547
--0.0780921 -3.2701 -0.684547
-3.2701 -0.0780921 -0.684547
-1.16308 3.14475 0.762443
--3.14475 1.16308 0.762443
--1.16308 -3.14475 0.762443
-3.14475 -1.16308 0.762443
-2.06904 2.32439 0.45958
--2.32439 2.06904 0.45958
--2.06904 -2.32439 0.45958
-2.32439 -2.06904 0.45958
-3.22852 0.0791288 0.637424
--0.0791288 3.22852 0.637424
--3.22852 -0.0791288 0.637424
-0.0791288 -3.22852 0.637424
-1.12786 3.06133 0.675333
--3.06133 1.12786 0.675333
--1.12786 -3.06133 0.675333
-3.06133 -1.12786 0.675333
-0.299626 3.05099 0.356412
--3.05099 0.299626 0.356412
--0.299626 -3.05099 0.356412
-3.05099 -0.299626 0.356412
-0.700258 3.0569 0.503623
--3.0569 0.700258 0.503623
--0.700258 -3.0569 0.503623
-3.0569 -0.700258 0.503623
-0.739956 3.19513 0.693653
--3.19513 0.739956 0.693653
--0.739956 -3.19513 0.693653
-3.19513 -0.739956 0.693653
-0.476023 3.11956 -0.535827
--3.11956 0.476023 -0.535827
--0.476023 -3.11956 -0.535827
-3.11956 -0.476023 -0.535827
-3.15463 0.0812845 0.535827
--0.0812845 3.15463 0.535827
--3.15463 -0.0812845 0.535827
-0.0812845 -3.15463 0.535827
-1.05088 2.88477 0.368125
--2.88477 1.05088 0.368125
--1.05088 -2.88477 0.368125
-2.88477 -1.05088 0.368125
-1.07287 2.93367 0.481754
--2.93367 1.07287 0.481754
--1.07287 -2.93367 0.481754
-2.93367 -1.07287 0.481754
-2.8305 1.23925 -0.414376
--1.23925 2.8305 -0.414376
--2.8305 -1.23925 -0.414376
-1.23925 -2.8305 -0.414376
-2.65683 1.7808 0.597905
--1.7808 2.65683 0.597905
--2.65683 -1.7808 0.597905
-1.7808 -2.65683 0.597905
-1.48199 2.86042 0.627691
--2.86042 1.48199 0.627691
--1.48199 -2.86042 0.627691
-2.86042 -1.48199 0.627691
-2.79144 1.19881 0.272952
--1.19881 2.79144 0.272952
--2.79144 -1.19881 0.272952
-1.19881 -2.79144 0.272952
-2.98987 0.657278 0.344643
--0.657278 2.98987 0.344643
--2.98987 -0.657278 0.344643
-0.657278 -2.98987 0.344643
-3.2102 0.532458 -0.666012
--0.532458 3.2102 -0.666012
--3.2102 -0.532458 -0.666012
-0.532458 -3.2102 -0.666012
-3.04592 0.665187 0.470704
--0.665187 3.04592 0.470704
--3.04592 -0.665187 0.470704
-0.665187 -3.04592 0.470704
-2.83611 1.21335 0.402906
-1.20588 2.81375 -0.344643
--1.21335 2.83611 0.402906
--2.81375 1.20588 -0.344643
--2.83611 -1.21335 0.402906
--1.20588 -2.81375 -0.344643
-1.21335 -2.83611 0.402906
-2.81375 -1.20588 -0.344643
-2.9624 1.04848 0.51444
--1.04848 2.9624 0.51444
--2.9624 -1.04848 0.51444
-1.04848 -2.9624 0.51444
-1.53655 2.61314 -0.24869
--2.61314 1.53655 -0.24869
--1.53655 -2.61314 -0.24869
-2.61314 -1.53655 -0.24869
-1.03563 2.91677 -0.425779
--2.91677 1.03563 -0.425779
--1.03563 -2.91677 -0.425779
-2.91677 -1.03563 -0.425779
-3.00989 0.486418 -0.309017
--0.486418 3.00989 -0.309017
--3.00989 -0.486418 -0.309017
-0.486418 -3.00989 -0.309017
-1.58127 2.64865 0.402906
--2.64865 1.58127 0.402906
--1.58127 -2.64865 0.402906
-2.64865 -1.58127 0.402906
-1.03262 2.84688 0.236499
--2.84688 1.03262 0.236499
--1.03262 -2.84688 0.236499
-2.84688 -1.03262 0.236499
-0.123748 3.22712 0.637424
--3.22712 0.123748 0.637424
--0.123748 -3.22712 0.637424
-3.22712 -0.123748 0.637424
-0.8401 2.92315 -0.285019
--2.92315 0.8401 -0.285019
--0.8401 -2.92315 -0.285019
-2.92315 -0.8401 -0.285019
-2.90187 1.03157 0.391374
--1.03157 2.90187 0.391374
--2.90187 -1.03157 0.391374
-1.03157 -2.90187 0.391374
-1.39709 2.71909 0.33282
--2.71909 1.39709 0.33282
--1.39709 -2.71909 0.33282
-2.71909 -1.39709 0.33282
-0.522211 3.16319 0.60793
--3.16319 0.522211 0.60793
--0.522211 -3.16319 0.60793
-3.16319 -0.522211 0.60793
-2.59821 1.53041 0.175023
--1.53041 2.59821 0.175023
--2.59821 -1.53041 0.175023
-1.53041 -2.59821 0.175023
-1.37652 2.68821 0.19971
--2.68821 1.37652 0.19971
--1.37652 -2.68821 0.19971
-2.68821 -1.37652 0.19971
-2.00181 2.26142 0.19971
--2.26142 2.00181 0.19971
--2.00181 -2.26142 0.19971
-2.26142 -2.00181 0.19971
-1.52745 2.58945 -0.112856
--2.58945 1.52745 -0.112856
--1.52745 -2.58945 -0.112856
-2.58945 -1.52745 -0.112856
-2.76187 1.20012 -0.150226
--1.20012 2.76187 -0.150226
--2.76187 -1.20012 -0.150226
-1.20012 -2.76187 -0.150226
-1.71453 2.50792 0.272952
--2.50792 1.71453 0.272952
--1.71453 -2.50792 0.272952
-2.50792 -1.71453 0.272952
-2.12275 2.12703 -0.100362
--2.12703 2.12275 -0.100362
--2.12275 -2.12703 -0.100362
-2.12703 -2.12275 -0.100362
-1.21091 2.77906 0.24869
--2.77906 1.21091 0.24869
--1.21091 -2.77906 0.24869
-2.77906 -1.21091 0.24869
-2.83485 1.01578 0.150226
--1.01578 2.83485 0.150226
--2.83485 -1.01578 0.150226
-1.01578 -2.83485 0.150226
-2.48181 1.68892 -0.0627905
--1.68892 2.48181 -0.0627905
--2.48181 -1.68892 -0.0627905
-1.68892 -2.48181 -0.0627905
-0.840589 2.88386 0.0878512
--2.88386 0.840589 0.0878512
--0.840589 -2.88386 0.0878512
-2.88386 -0.840589 0.0878512
-2.71066 1.37172 0.272952
--1.37172 2.71066 0.272952
--2.71066 -1.37172 0.272952
-1.37172 -2.71066 0.272952
-2.38029 2.12523 -0.587785
--2.12523 2.38029 -0.587785
--2.38029 -2.12523 -0.587785
-2.12523 -2.38029 -0.587785
-1.02378 2.87192 -0.309017
--2.87192 1.02378 -0.309017
--1.02378 -2.87192 -0.309017
-2.87192 -1.02378 -0.309017
-1.69638 2.48807 0.150226
--2.48807 1.69638 0.150226
--1.69638 -2.48807 0.150226
-2.48807 -1.69638 0.150226
-1.8536 2.40272 -0.260842
--2.40272 1.8536 -0.260842
--1.8536 -2.40272 -0.260842
-2.40272 -1.8536 -0.260842
-0.836085 2.88188 -0.0376902
--2.88188 0.836085 -0.0376902
--0.836085 -2.88188 -0.0376902
-2.88188 -0.836085 -0.0376902
-1.87516 2.43699 -0.379779
--2.43699 1.87516 -0.379779
--1.87516 -2.43699 -0.379779
-2.43699 -1.87516 -0.379779
-1.36455 2.67392 0.0627905
--2.67392 1.36455 0.0627905
--1.36455 -2.67392 0.0627905
-2.67392 -1.36455 0.0627905
-1.02001 2.82538 0.0878512
--2.82538 1.02001 0.0878512
--1.02001 -2.82538 0.0878512
-2.82538 -1.02001 0.0878512
-2.91317 0.838419 0.24869
--0.838419 2.91317 0.24869
--2.91317 -0.838419 0.24869
-0.838419 -2.91317 0.24869
-2.92789 0.655234 -0.0251301
--0.655234 2.92789 -0.0251301
--2.92789 -0.655234 -0.0251301
-0.655234 -2.92789 -0.0251301
-2.67326 1.36167 0.012566
--1.36167 2.67326 0.012566
--2.67326 -1.36167 0.012566
-1.36167 -2.67326 0.012566
-1.52793 2.58211 0.0251301
--2.58211 1.52793 0.0251301
--1.52793 -2.58211 0.0251301
-2.58211 -1.52793 0.0251301
-2.75319 1.19182 -0.012566
--1.19182 2.75319 -0.012566
--2.75319 -1.19182 -0.012566
-1.19182 -2.75319 -0.012566
-2.74969 1.38714 0.391374
--1.38714 2.74969 0.391374
--2.74969 -1.38714 0.391374
-1.38714 -2.74969 0.391374
-2.93783 0.661336 -0.150226
--0.661336 2.93783 -0.150226
--2.93783 -0.661336 -0.150226
-0.661336 -2.93783 -0.150226
-1.53814 2.59118 0.162637
--2.59118 1.53814 0.162637
--1.53814 -2.59118 0.162637
-2.59118 -1.53814 0.162637
-0.277726 3.08269 -0.425779
--3.08269 0.277726 -0.425779
--0.277726 -3.08269 -0.425779
-3.08269 -0.277726 -0.425779
-2.8612 1.02117 0.272952
--1.02117 2.8612 0.272952
--2.8612 -1.02117 0.272952
-1.02117 -2.8612 0.272952
-1.5558 2.61344 0.285019
--2.61344 1.5558 0.285019
--1.5558 -2.61344 0.285019
-2.61344 -1.5558 0.285019
-1.01686 2.84123 -0.187381
--2.84123 1.01686 -0.187381
--1.01686 -2.84123 -0.187381
-2.84123 -1.01686 -0.187381
-2.67717 1.3679 -0.112856
--1.3679 2.67717 -0.112856
--2.67717 -1.3679 -0.112856
-1.3679 -2.67717 -0.112856
-2.70214 1.57931 0.492727
-1.57931 2.70214 -0.492727
--1.57931 2.70214 0.492727
--2.70214 1.57931 -0.492727
--2.70214 -1.57931 0.492727
--1.57931 -2.70214 -0.492727
-1.57931 -2.70214 0.492727
-2.70214 -1.57931 -0.492727
-2.95152 0.845444 0.368125
--0.845444 2.95152 0.368125
--2.95152 -0.845444 0.368125
-0.845444 -2.95152 0.368125
-0.85065 2.90343 0.224271
--2.90343 0.85065 0.224271
--0.85065 -2.90343 0.224271
-2.90343 -0.85065 0.224271
-2.60296 1.54778 -0.236499
--1.54778 2.60296 -0.236499
--2.60296 -1.54778 -0.236499
-1.54778 -2.60296 -0.236499
-0.848329 2.96582 -0.402906
--2.96582 0.848329 -0.402906
--0.848329 -2.96582 -0.402906
-2.96582 -0.848329 -0.402906
-2.89072 1.23242 0.51444
-1.22222 2.8618 -0.45958
--1.23242 2.89072 0.51444
--2.8618 1.22222 -0.45958
--2.89072 -1.23242 0.51444
--1.22222 -2.8618 -0.45958
-1.23242 -2.89072 0.51444
-2.8618 -1.22222 -0.45958
-0.652505 2.93472 -0.112856
--2.93472 0.652505 -0.112856
--0.652505 -2.93472 -0.112856
-2.93472 -0.652505 -0.112856
-2.58599 1.5333 -0.112856
--1.5333 2.58599 -0.112856
--2.58599 -1.5333 -0.112856
-1.5333 -2.58599 -0.112856
-2.68519 1.36308 0.150226
--1.36308 2.68519 0.150226
--2.68519 -1.36308 0.150226
-1.36308 -2.68519 0.150226
-1.98751 2.25097 0.0753268
--2.25097 1.98751 0.0753268
--1.98751 -2.25097 0.0753268
-2.25097 -1.98751 0.0753268
-3.26267 0.333666 -0.693653
--0.333666 3.26267 -0.693653
--3.26267 -0.333666 -0.693653
-0.333666 -3.26267 -0.693653
-2.44133 1.91144 -0.437116
--1.91144 2.44133 -0.437116
--2.44133 -1.91144 -0.437116
-1.91144 -2.44133 -0.437116
-0.65356 2.957 -0.236499
--2.957 0.65356 -0.236499
--0.65356 -2.957 -0.236499
-2.957 -0.65356 -0.236499
-1.89089 2.41884 0.368125
--2.41884 1.89089 0.368125
--1.89089 -2.41884 0.368125
-2.41884 -1.89089 0.368125
-2.93334 0.652583 0.100362
--0.652583 2.93334 0.100362
--2.93334 -0.652583 0.100362
-0.652583 -2.93334 0.100362
-2.9541 0.653306 0.224271
--0.653306 2.9541 0.224271
--2.9541 -0.653306 0.224271
-0.653306 -2.9541 0.224271
-2.41074 4.37469 -0.100362
--4.37469 2.41074 -0.100362
--2.41074 -4.37469 -0.100362
-4.37469 -2.41074 -0.100362
-2.88259 3.99917 0.368125
--3.99917 2.88259 0.368125
--2.88259 -3.99917 0.368125
-3.99917 -2.88259 0.368125
-2.90797 4.02477 0.260842
--4.02477 2.90797 0.260842
--2.90797 -4.02477 0.260842
-4.02477 -2.90797 0.260842
-4.93934 0.613267 -0.212007
--0.613267 4.93934 -0.212007
--4.93934 -0.613267 -0.212007
-0.613267 -4.93934 -0.212007
-4.72757 1.54791 0.224271
--1.54791 4.72757 0.224271
--4.72757 -1.54791 0.224271
-1.54791 -4.72757 0.224271
-3.63835 3.40376 -0.187381
--3.40376 3.63835 -0.187381
--3.63835 -3.40376 -0.187381
-3.40376 -3.63835 -0.187381
-4.75459 1.54618 0.0251301
--1.54618 4.75459 0.0251301
--4.75459 -1.54618 0.0251301
-1.54618 -4.75459 0.0251301
-2.12419 4.48048 -0.285019
--4.48048 2.12419 -0.285019
--2.12419 -4.48048 -0.285019
-4.48048 -2.12419 -0.285019
-3.64555 3.41909 -0.0627905
--3.41909 3.64555 -0.0627905
--3.64555 -3.41909 -0.0627905
-3.41909 -3.64555 -0.0627905
-1.83861 4.64892 0.0376902
--4.64892 1.83861 0.0376902
--1.83861 -4.64892 0.0376902
-4.64892 -1.83861 0.0376902
-3.41196 3.61603 -0.236499
--3.61603 3.41196 -0.236499
--3.41196 -3.61603 -0.236499
-3.61603 -3.41196 -0.236499
-2.12829 4.52433 0.012566
--4.52433 2.12829 0.012566
--2.12829 -4.52433 0.012566
-4.52433 -2.12829 0.012566
-2.39028 4.3687 0.19971
--4.3687 2.39028 0.19971
--2.39028 -4.3687 0.19971
-4.3687 -2.39028 0.19971
-4.96057 0.626033 -0.012566
--0.626033 4.96057 -0.012566
--4.96057 -0.626033 -0.012566
-0.626033 -4.96057 -0.012566
-2.60649 4.14854 0.437116
--4.14854 2.60649 0.437116
--2.60649 -4.14854 0.437116
-4.14854 -2.60649 0.437116
-2.67716 4.22205 0.0376902
--4.22205 2.67716 0.0376902
--2.67716 -4.22205 0.0376902
-4.22205 -2.67716 0.0376902
-4.83808 1.24674 0.0878512
--1.24674 4.83808 0.0878512
--4.83808 -1.24674 0.0878512
-1.24674 -4.83808 0.0878512
-2.37155 4.34612 0.309017
--4.34612 2.37155 0.309017
--2.37155 -4.34612 0.309017
-4.34612 -2.37155 0.309017
-4.95494 0.620262 -0.112856
--0.620262 4.95494 -0.112856
--4.95494 -0.620262 -0.112856
-0.620262 -4.95494 -0.112856
-2.12106 4.52076 0.112856
--4.52076 2.12106 0.112856
--2.12106 -4.52076 0.112856
-4.52076 -2.12106 0.112856
--4.38153 2.40877 3.92416e-15
-2.40877 4.38153 2.94177e-15
--2.40877 -4.38153 -2.35152e-14
-4.38153 -2.40877 -5.09545e-14
-2.13123 4.51876 -0.0878512
--4.51876 2.13123 -0.0878512
--2.13123 -4.51876 -0.0878512
-4.51876 -2.13123 -0.0878512
-1.81914 4.62686 0.236499
--4.62686 1.81914 0.236499
--1.81914 -4.62686 0.236499
-4.62686 -1.81914 0.236499
-2.92451 4.0391 0.162637
--4.0391 2.92451 0.162637
--2.92451 -4.0391 0.162637
-4.0391 -2.92451 0.162637
-2.40193 4.37953 0.100362
--4.37953 2.40193 0.100362
--2.40193 -4.37953 0.100362
-4.37953 -2.40193 0.100362
-4.51996 2.1311 0.0753268
--2.1311 4.51996 0.0753268
--4.51996 -2.1311 0.0753268
-2.1311 -4.51996 0.0753268
-2.12985 4.5041 -0.187381
--4.5041 2.12985 -0.187381
--2.12985 -4.5041 -0.187381
-4.5041 -2.12985 -0.187381
-4.96939 0.32268 0.19971
--0.32268 4.96939 0.19971
--4.96939 -0.32268 0.19971
-0.32268 -4.96939 0.19971
-4.63924 1.84355 0.125333
--1.84355 4.63924 0.125333
--4.63924 -1.84355 0.125333
-1.84355 -4.63924 0.125333
-2.6682 4.21728 0.13779
--4.21728 2.6682 0.13779
--2.6682 -4.21728 0.13779
-4.21728 -2.6682 0.13779
-4.95618 0.630542 0.0878512
--0.630542 4.95618 0.0878512
--4.95618 -0.630542 0.0878512
-0.630542 -4.95618 0.0878512
-2.93936 4.03502 -0.125333
--4.03502 2.93936 -0.125333
--2.93936 -4.03502 -0.125333
-4.03502 -2.93936 -0.125333
-4.74584 1.54861 0.125333
--1.54861 4.74584 0.125333
--4.74584 -1.54861 0.125333
-1.54861 -4.74584 0.125333
-2.40783 4.35905 -0.19971
--4.35905 2.40783 -0.19971
--2.40783 -4.35905 -0.19971
-4.35905 -2.40783 -0.19971
-1.54848 4.74746 -0.112856
--4.74746 1.54848 -0.112856
--1.54848 -4.74746 -0.112856
-4.74746 -1.54848 -0.112856
-3.17572 3.84961 0.13779
--3.84961 3.17572 0.13779
--3.17572 -3.84961 0.13779
-3.84961 -3.17572 0.13779
-4.69995 1.5441 0.320944
--1.5441 4.69995 0.320944
--4.69995 -1.5441 0.320944
-1.5441 -4.69995 0.320944
-3.11363 3.79664 0.414376
--3.79664 3.11363 0.414376
--3.11363 -3.79664 0.414376
-3.79664 -3.11363 0.414376
-3.39592 3.59178 -0.33282
--3.59178 3.39592 -0.33282
--3.39592 -3.59178 -0.33282
-3.59178 -3.39592 -0.33282
-1.8307 4.64255 0.13779
--4.64255 1.8307 0.13779
--1.8307 -4.64255 0.13779
-4.64255 -1.8307 0.13779
-4.6411 1.82945 -0.150226
--1.82945 4.6411 -0.150226
--4.6411 -1.82945 -0.150226
-1.82945 -4.6411 -0.150226
-2.99266 3.67261 0.675333
--3.67261 2.99266 0.675333
--2.99266 -3.67261 0.675333
-3.67261 -2.99266 0.675333
-4.48722 2.12601 0.260842
--2.12601 4.48722 0.260842
--4.48722 -2.12601 0.260842
-2.12601 -4.48722 0.260842
-4.85235 0.635929 0.448383
--0.635929 4.85235 0.448383
--4.85235 -0.635929 0.448383
-0.635929 -4.85235 0.448383
-3.42123 3.63316 -0.13779
--3.63316 3.42123 -0.13779
--3.42123 -3.63316 -0.13779
-3.63316 -3.42123 -0.13779
-2.38766 4.30207 -0.391374
--4.30207 2.38766 -0.391374
--2.38766 -4.30207 -0.391374
-4.30207 -2.38766 -0.391374
-1.21973 4.62017 -0.627691
--4.62017 1.21973 -0.627691
--1.21973 -4.62017 -0.627691
-4.62017 -1.21973 -0.627691
-2.84713 3.86638 -0.597905
--3.86638 2.84713 -0.597905
--2.84713 -3.86638 -0.597905
-3.86638 -2.84713 -0.597905
-2.6794 4.20802 -0.150226
--4.20802 2.6794 -0.150226
--2.6794 -4.20802 -0.150226
-4.20802 -2.6794 -0.150226
-4.91394 0.605097 -0.309017
--0.605097 4.91394 -0.309017
--4.91394 -0.605097 -0.309017
-0.605097 -4.91394 -0.309017
-1.54534 4.70772 -0.297042
--4.70772 1.54534 -0.297042
--1.54534 -4.70772 -0.297042
-4.70772 -1.54534 -0.297042
-3.14093 3.82209 0.320944
--3.82209 3.14093 0.320944
--3.14093 -3.82209 0.320944
-3.82209 -3.14093 0.320944
-4.17854 2.01135 0.770513
--2.01135 4.17854 0.770513
--4.17854 -2.01135 0.770513
-2.01135 -4.17854 0.770513
-4.92116 0.635514 0.272952
--0.635514 4.92116 0.272952
--4.92116 -0.635514 0.272952
-0.635514 -4.92116 0.272952
-1.23125 4.68525 -0.535827
--4.68525 1.23125 -0.535827
--1.23125 -4.68525 -0.535827
-4.68525 -1.23125 -0.535827
-2.35005 4.31704 0.402906
--4.31704 2.35005 0.402906
--2.35005 -4.31704 0.402906
-4.31704 -2.35005 0.402906
-3.59698 3.34983 -0.402906
--3.34983 3.59698 -0.402906
--3.59698 -3.34983 -0.402906
-3.34983 -3.59698 -0.402906
-4.25563 2.36819 0.492727
--2.36819 4.25563 0.492727
--4.25563 -2.36819 0.492727
-2.36819 -4.25563 0.492727
-4.43086 1.78918 0.627691
--1.78918 4.43086 0.627691
--4.43086 -1.78918 0.627691
-1.78918 -4.43086 0.627691
-4.20622 2.34623 0.577573
--2.34623 4.20622 0.577573
--4.20622 -2.34623 0.577573
-2.34623 -4.20622 0.577573
-4.45703 2.11719 0.356412
--2.11719 4.45703 0.356412
--4.45703 -2.11719 0.356412
-2.11719 -4.45703 0.356412
-2.37063 4.26128 -0.481754
--4.26128 2.37063 -0.481754
--2.37063 -4.26128 -0.481754
-4.26128 -2.37063 -0.481754
-4.78199 0.574213 -0.577573
--0.574213 4.78199 -0.577573
--4.78199 -0.574213 -0.577573
-0.574213 -4.78199 -0.577573
-2.32068 4.2746 0.503623
--4.2746 2.32068 0.503623
--2.32068 -4.2746 0.503623
-4.2746 -2.32068 0.503623
-1.82836 4.56253 -0.402906
--4.56253 1.82836 -0.402906
--1.82836 -4.56253 -0.402906
-4.56253 -1.82836 -0.402906
-4.86816 0.281719 -0.481754
--0.281719 4.86816 -0.481754
--4.86816 -0.281719 -0.481754
-0.281719 -4.86816 -0.481754
-2.64866 4.13446 -0.414376
--4.13446 2.64866 -0.414376
--2.64866 -4.13446 -0.414376
-4.13446 -2.64866 -0.414376
-2.40011 4.33476 -0.297042
--4.33476 2.40011 -0.297042
--2.40011 -4.33476 -0.297042
-4.33476 -2.40011 -0.297042
-3.37 3.5563 -0.437116
--3.5563 3.37 -0.437116
--3.37 -3.5563 -0.437116
-3.5563 -3.37 -0.437116
-2.57255 4.10481 0.535827
--4.10481 2.57255 0.535827
--2.57255 -4.10481 0.535827
-4.10481 -2.57255 0.535827
-4.72219 0.869478 -0.597905
--0.869478 4.72219 -0.597905
--4.72219 -0.869478 -0.597905
-0.869478 -4.72219 -0.597905
-2.33548 3.77274 0.899405
--3.77274 2.33548 0.899405
--2.33548 -3.77274 0.899405
-3.77274 -2.33548 0.899405
-4.879 0.595816 -0.402906
--0.595816 4.879 -0.402906
--4.879 -0.595816 -0.402906
-0.595816 -4.879 -0.402906
-1.24398 4.77024 -0.368125
--4.77024 1.24398 -0.368125
--1.24398 -4.77024 -0.368125
-4.77024 -1.24398 -0.368125
-4.65806 1.53618 0.425779
--1.53618 4.65806 0.425779
--4.65806 -1.53618 0.425779
-1.53618 -4.65806 0.425779
-3.04204 3.7246 0.587785
--3.7246 3.04204 0.587785
--3.04204 -3.7246 0.587785
-3.7246 -3.04204 0.587785
-3.34024 3.51781 -0.525175
--3.51781 3.34024 -0.525175
--3.34024 -3.51781 -0.525175
-3.51781 -3.34024 -0.525175
-3.35744 3.60333 0.379779
--3.60333 3.35744 0.379779
--3.35744 -3.60333 0.379779
-3.60333 -3.35744 0.379779
-2.09416 4.39002 -0.503623
--4.39002 2.09416 -0.503623
--2.09416 -4.39002 -0.503623
-4.39002 -2.09416 -0.503623
-3.9041 2.20093 0.876307
--2.20093 3.9041 0.876307
--3.9041 -2.20093 0.876307
-2.20093 -3.9041 0.876307
-0.907665 4.5378 -0.778462
--4.5378 0.907665 -0.778462
--0.907665 -4.5378 -0.778462
-4.5378 -0.907665 -0.778462
-4.66005 0.853195 -0.675333
--0.853195 4.66005 -0.675333
--4.66005 -0.853195 -0.675333
-0.853195 -4.66005 -0.675333
-3.99011 2.24347 0.816339
--2.24347 3.99011 0.816339
--3.99011 -2.24347 0.816339
-2.24347 -3.99011 0.816339
-4.3243 2.06948 0.60793
--2.06948 4.3243 0.60793
--4.3243 -2.06948 0.60793
-2.06948 -4.3243 0.60793
-3.08056 3.76403 0.503623
--3.76403 3.08056 0.503623
--3.08056 -3.76403 0.503623
-3.76403 -3.08056 0.503623
-4.50033 1.4242 -0.693653
--1.4242 4.50033 -0.693653
--4.50033 -1.4242 -0.693653
-1.4242 -4.50033 -0.693653
-4.48745 1.80678 0.546394
--1.80678 4.48745 0.546394
--4.48745 -1.80678 0.546394
-1.80678 -4.48745 0.546394
-2.80693 3.91386 0.577573
--3.91386 2.80693 0.577573
--2.80693 -3.91386 0.577573
-3.91386 -2.80693 0.577573
-3.56734 3.31553 -0.492727
--3.31553 3.56734 -0.492727
--3.56734 -3.31553 -0.492727
-3.31553 -3.56734 -0.492727
-4.83486 0.585494 -0.492727
--0.585494 4.83486 -0.492727
--4.83486 -0.585494 -0.492727
-0.585494 -4.83486 -0.492727
-4.47277 0.61193 0.857527
--0.61193 4.47277 0.857527
--4.47277 -0.61193 0.857527
-0.61193 -4.47277 0.857527
-4.75503 0.265581 -0.647056
--0.265581 4.75503 -0.647056
--4.75503 -0.265581 -0.647056
-0.265581 -4.75503 -0.647056
-2.34921 4.2128 -0.567269
--4.2128 2.34921 -0.567269
--2.34921 -4.2128 -0.567269
-4.2128 -2.34921 -0.567269
-2.75871 3.72763 -0.770513
--3.72763 2.75871 -0.770513
--2.75871 -3.72763 -0.770513
-3.72763 -2.75871 -0.770513
-1.43335 4.25794 -0.870184
--4.25794 1.43335 -0.870184
--1.43335 -4.25794 -0.870184
-4.25794 -1.43335 -0.870184
-4.13448 2.31303 0.675333
--2.31303 4.13448 0.675333
--4.13448 -2.31303 0.675333
-2.31303 -4.13448 0.675333
-3.26031 2.99297 -0.904827
--2.99297 3.26031 -0.904827
--3.26031 -2.99297 -0.904827
-2.99297 -3.26031 -0.904827
-3.84521 2.38569 -0.850994
--2.38569 3.84521 -0.850994
--3.84521 -2.38569 -0.850994
-2.38569 -3.84521 -0.850994
-3.2631 3.42276 -0.684547
--3.42276 3.2631 -0.684547
--3.2631 -3.42276 -0.684547
-3.42276 -3.2631 -0.684547
-2.76686 3.86619 0.656586
--3.86619 2.76686 0.656586
--2.76686 -3.86619 0.656586
-3.86619 -2.76686 0.656586
-4.25553 2.04249 0.693653
--2.04249 4.25553 0.693653
--4.25553 -2.04249 0.693653
-2.04249 -4.25553 0.693653
-3.53119 3.27533 -0.577573
--3.27533 3.53119 -0.577573
--3.53119 -3.27533 -0.577573
-3.27533 -3.53119 -0.577573
-4.35857 1.76572 0.711536
--1.76572 4.35857 0.711536
--4.35857 -1.76572 0.711536
-1.76572 -4.35857 0.711536
-2.24225 4.15375 0.693653
--4.15375 2.24225 0.693653
--2.24225 -4.15375 0.693653
-4.15375 -2.24225 0.693653
-4.56178 1.44869 -0.61786
--1.44869 4.56178 -0.61786
--4.56178 -1.44869 -0.61786
-1.44869 -4.56178 -0.61786
-2.15058 4.00558 0.837528
--4.00558 2.15058 0.837528
--2.15058 -4.00558 0.837528
-4.00558 -2.15058 0.837528
-3.29108 3.54549 0.546394
--3.54549 3.29108 0.546394
--3.29108 -3.54549 0.546394
-3.54549 -3.29108 0.546394
-2.09398 3.91194 0.899405
--3.91194 2.09398 0.899405
--2.09398 -3.91194 0.899405
-3.91194 -2.09398 0.899405
-1.64016 4.26261 0.823533
--4.26261 1.64016 0.823533
--1.64016 -4.26261 0.823533
-4.26261 -1.64016 0.823533
-0.33177 4.61578 -0.778462
--4.61578 0.33177 -0.778462
--0.33177 -4.61578 -0.778462
-4.61578 -0.33177 -0.778462
-3.16529 3.30683 -0.816339
--3.30683 3.16529 -0.816339
--3.16529 -3.30683 -0.816339
-3.30683 -3.16529 -0.816339
-2.81973 3.48357 0.876307
--3.48357 2.81973 0.876307
--2.81973 -3.48357 0.876307
-3.48357 -2.81973 0.876307
-3.44097 3.17879 -0.728969
--3.17879 3.44097 -0.728969
--3.44097 -3.17879 -0.728969
-3.17879 -3.44097 -0.728969
-3.28154 2.64054 -0.977268
--2.64054 3.28154 -0.977268
--3.28154 -2.64054 -0.977268
-2.64054 -3.28154 -0.977268
-0.0513196 4.39107 -0.920232
--4.39107 0.0513196 -0.920232
--0.0513196 -4.39107 -0.920232
-4.39107 -0.0513196 -0.920232
-4.06979 2.28221 0.745941
--2.28221 4.06979 0.745941
--4.06979 -2.28221 0.745941
-2.28221 -4.06979 0.745941
-4.5865 0.537296 -0.786288
-0.537296 4.5865 0.786288
--0.537296 4.5865 -0.786288
--4.5865 0.537296 0.786288
--4.5865 -0.537296 -0.786288
--0.537296 -4.5865 0.786288
-0.537296 -4.5865 -0.786288
-4.5865 -0.537296 0.786288
-4.37782 2.08969 0.525175
--2.08969 4.37782 0.525175
--4.37782 -2.08969 0.525175
-2.08969 -4.37782 0.525175
-3.30448 3.47315 -0.60793
--3.47315 3.30448 -0.60793
--3.30448 -3.47315 -0.60793
-3.47315 -3.30448 -0.60793
-3.72886 2.65514 -0.816339
--2.65514 3.72886 -0.816339
--3.72886 -2.65514 -0.816339
-2.65514 -3.72886 -0.816339
-0.926271 4.67972 -0.637424
--4.67972 0.926271 -0.637424
--0.926271 -4.67972 -0.637424
-4.67972 -0.926271 -0.637424
-0.332429 4.69089 -0.711536
--4.69089 0.332429 -0.711536
--0.332429 -4.69089 -0.711536
-4.69089 -0.332429 -0.711536
-2.32364 4.15711 -0.647056
--4.15711 2.32364 -0.647056
--2.32364 -4.15711 -0.647056
-4.15711 -2.32364 -0.647056
-3.38783 3.1234 -0.79399
--3.1234 3.38783 -0.79399
--3.38783 -3.1234 -0.79399
-3.1234 -3.38783 -0.79399
-2.43899 3.92122 0.786288
--3.92122 2.43899 0.786288
--2.43899 -3.92122 0.786288
-3.92122 -2.43899 0.786288
-0.917731 4.61223 -0.711536
--4.61223 0.917731 -0.711536
--0.917731 -4.61223 -0.711536
-4.61223 -0.917731 -0.711536
-0.325635 4.33242 -0.938734
--4.33242 0.325635 -0.938734
--0.325635 -4.33242 -0.938734
-4.33242 -0.325635 -0.938734
-2.72246 3.81224 0.728969
--3.81224 2.72246 0.728969
--2.72246 -3.81224 0.728969
-3.81224 -2.72246 0.728969
-4.37295 0.603313 0.910106
--0.603313 4.37295 0.910106
--4.37295 -0.603313 0.910106
-0.603313 -4.37295 0.910106
-2.48303 3.98308 0.720309
--3.98308 2.48303 0.720309
--2.48303 -3.98308 0.720309
-3.98308 -2.48303 0.720309
-2.94385 3.62014 0.745941
--3.62014 2.94385 0.745941
--2.94385 -3.62014 0.745941
-3.62014 -2.94385 0.745941
-1.18684 4.45246 -0.79399
--4.45246 1.18684 -0.79399
--1.18684 -4.45246 -0.79399
-4.45246 -1.18684 -0.79399
-3.48892 3.2296 -0.656586
--3.2296 3.48892 -0.656586
--3.48892 -3.2296 -0.656586
-3.2296 -3.48892 -0.656586
-4.81575 0.273829 -0.567269
--0.273829 4.81575 -0.567269
--4.81575 -0.273829 -0.567269
-0.273829 -4.81575 -0.567269
-3.79051 2.70478 -0.754251
--2.70478 3.79051 -0.754251
--3.79051 -2.70478 -0.754251
-2.70478 -3.79051 -0.754251
-0.933173 4.7396 -0.556876
--4.7396 0.933173 -0.556876
--0.933173 -4.7396 -0.556876
-4.7396 -0.933173 -0.556876
-4.4319 1.39764 -0.762443
--1.39764 4.4319 -0.762443
--4.4319 -1.39764 -0.762443
-1.39764 -4.4319 -0.762443
-3.43329 2.77475 -0.910106
--2.77475 3.43329 -0.910106
--3.43329 -2.77475 -0.910106
-2.77475 -3.43329 -0.910106
-4.63345 0.624425 0.737513
--0.624425 4.63345 0.737513
--4.63345 -0.624425 0.737513
-0.624425 -4.63345 0.737513
-4.27802 1.73872 0.786288
--1.73872 4.27802 0.786288
--4.27802 -1.73872 0.786288
-1.73872 -4.27802 0.786288
-3.57348 2.53234 -0.925077
--2.53234 3.57348 -0.925077
--3.57348 -2.53234 -0.925077
-2.53234 -3.57348 -0.925077
-4.68661 0.257034 -0.720309
--0.257034 4.68661 -0.720309
--4.68661 -0.257034 -0.720309
-0.257034 -4.68661 -0.720309
-4.26575 0.759415 -0.942991
--0.759415 4.26575 -0.942991
--4.26575 -0.759415 -0.942991
-0.759415 -4.26575 -0.942991
-3.69696 1.96637 -0.982287
--1.96637 3.69696 -0.982287
--3.69696 -1.96637 -0.982287
-1.96637 -3.69696 -0.982287
-0.523222 4.50555 0.844328
--4.50555 0.523222 0.844328
--0.523222 -4.50555 0.844328
-4.50555 -0.523222 0.844328
-2.74397 3.3987 0.929776
--3.3987 2.74397 0.929776
--2.74397 -3.3987 0.929776
-3.3987 -2.74397 0.929776
-0.330301 4.52378 -0.844328
--4.52378 0.330301 -0.844328
--0.330301 -4.52378 -0.844328
-4.52378 -0.330301 -0.844328
-4.51092 1.50149 0.656586
--1.50149 4.51092 0.656586
--4.51092 -1.50149 0.656586
-1.50149 -4.51092 0.656586
-3.80242 2.14991 0.929776
--2.14991 3.80242 0.929776
--3.80242 -2.14991 0.929776
-2.14991 -3.80242 0.929776
-4.03859 0.709032 -0.994951
--0.709032 4.03859 -0.994951
--4.03859 -0.709032 -0.994951
-0.709032 -4.03859 -0.994951
-2.04044 3.8223 0.942991
--3.8223 2.04044 0.942991
--2.04044 -3.8223 0.942991
-3.8223 -2.04044 0.942991
-3.70666 2.1013 0.965382
--2.1013 3.70666 0.965382
--3.70666 -2.1013 0.965382
-2.1013 -3.70666 0.965382
-0.0474232 4.49248 -0.870184
--4.49248 0.0474232 -0.870184
--0.0474232 -4.49248 -0.870184
-4.49248 -0.0474232 -0.870184
-4.01415 1.9428 0.888136
--1.9428 4.01415 0.888136
--4.01415 -1.9428 0.888136
-1.9428 -4.01415 0.888136
-4.59056 0.835703 -0.745941
--0.835703 4.59056 -0.745941
--4.59056 -0.835703 -0.745941
-0.835703 -4.59056 -0.745941
-1.40572 4.1603 -0.920232
--4.1603 1.40572 -0.920232
--1.40572 -4.1603 -0.920232
-4.1603 -1.40572 -0.920232
-0.629635 4.71237 -0.656586
--4.71237 0.629635 -0.656586
--0.629635 -4.71237 -0.656586
-4.71237 -0.629635 -0.656586
-3.65375 2.59543 -0.876307
--2.59543 3.65375 -0.876307
--3.65375 -2.59543 -0.876307
-2.59543 -3.65375 -0.876307
-2.98896 3.10382 -0.951057
--3.10382 2.98896 -0.951057
--2.98896 -3.10382 -0.951057
-3.10382 -2.98896 -0.951057
-2.55116 3.95051 -0.711536
--3.95051 2.55116 -0.711536
--2.55116 -3.95051 -0.711536
-3.95051 -2.55116 -0.711536
-3.61512 1.7699 0.999684
--1.7699 3.61512 0.999684
--3.61512 -1.7699 0.999684
-1.7699 -3.61512 0.999684
-1.37627 4.05799 -0.958522
--4.05799 1.37627 -0.958522
--1.37627 -4.05799 -0.958522
-4.05799 -1.37627 -0.958522
-2.8771 3.54715 0.823533
--3.54715 2.8771 0.823533
--2.8771 -3.54715 0.823533
-3.54715 -2.8771 0.823533
-3.21654 3.36714 -0.754251
--3.36714 3.21654 -0.754251
--3.21654 -3.36714 -0.754251
-3.36714 -3.21654 -0.754251
-4.55609 0.618664 0.801567
--0.618664 4.55609 0.801567
--4.55609 -0.618664 0.801567
-0.618664 -4.55609 0.801567
-2.67416 3.75258 0.79399
--3.75258 2.67416 0.79399
--2.67416 -3.75258 0.79399
-3.75258 -2.67416 0.79399
-0.328117 4.42497 -0.899405
--4.42497 0.328117 -0.899405
--0.328117 -4.42497 -0.899405
-4.42497 -0.328117 -0.899405
-3.0509 3.17452 -0.915241
--3.17452 3.0509 -0.915241
--3.0509 -3.17452 -0.915241
-3.17452 -3.0509 -0.915241
-4.10397 1.98054 0.830596
--1.98054 4.10397 0.830596
--4.10397 -1.98054 0.830596
-1.98054 -4.10397 0.830596
-2.39179 3.85396 0.844328
--3.85396 2.39179 0.844328
--2.39179 -3.85396 0.844328
-3.85396 -2.39179 0.844328
-0.491948 4.3167 0.938734
--4.3167 0.491948 0.938734
--0.491948 -4.3167 0.938734
-4.3167 -0.491948 0.938734
-4.07066 0.195043 -0.997159
--0.195043 4.07066 -0.997159
--4.07066 -0.195043 -0.997159
-0.195043 -4.07066 -0.997159
-0.506851 4.40807 0.899405
--4.40807 0.506851 0.899405
--0.506851 -4.40807 0.899405
-4.40807 -0.506851 0.899405
-3.10055 2.8327 -0.979855
--2.8327 3.10055 -0.979855
--3.10055 -2.8327 -0.979855
-2.8327 -3.10055 -0.979855
-3.10988 3.24241 -0.870184
--3.24241 3.10988 -0.870184
--3.10988 -3.24241 -0.870184
-3.24241 -3.10988 -0.870184
-4.01455 2.15605 -0.830596
--2.15605 4.01455 -0.830596
--4.01455 -2.15605 -0.830596
-2.15605 -4.01455 -0.830596
-4.18311 1.12913 0.942991
--1.12913 4.18311 0.942991
--4.18311 -1.12913 0.942991
-1.12913 -4.18311 0.942991
-3.17796 2.91002 -0.951057
--2.91002 3.17796 -0.951057
--3.17796 -2.91002 -0.951057
-2.91002 -3.17796 -0.951057
-0.0437172 4.57736 -0.816339
--4.57736 0.0437172 -0.816339
--0.0437172 -4.57736 -0.816339
-4.57736 -0.0437172 -0.816339
-1.78555 3.92166 0.951057
--3.92166 1.78555 0.951057
--1.78555 -3.92166 0.951057
-3.92166 -1.78555 0.951057
-3.91655 1.33489 0.990461
--1.33489 3.91655 0.990461
--3.91655 -1.33489 0.990461
-1.33489 -3.91655 0.990461
-2.69205 2.95852 1
--2.95852 2.69205 1
--2.69205 -2.95852 1
-2.95852 -2.69205 1
-3.73092 1.54375 0.999289
--1.54375 3.73092 0.999289
--3.73092 -1.54375 0.999289
-1.54375 -3.73092 0.999289
-4.35718 1.36927 -0.823533
--1.36927 4.35718 -0.823533
--4.35718 -1.36927 -0.823533
-1.36927 -4.35718 -0.823533
-3.82013 1.85957 0.968583
--1.85957 3.82013 0.968583
--3.82013 -1.85957 0.968583
-1.85957 -3.82013 0.968583
-4.25777 0.482522 -0.958522
--0.482522 4.25777 -0.958522
--4.25777 -0.482522 -0.958522
-0.482522 -4.25777 -0.958522
-1.08633 3.99264 -0.990461
--3.99264 1.08633 -0.990461
--1.08633 -3.99264 -0.990461
-3.99264 -1.08633 -0.990461
-4.29164 0.215363 -0.954865
--0.215363 4.29164 -0.954865
--4.29164 -0.215363 -0.954865
-0.215363 -4.29164 -0.954865
-3.49985 2.83437 -0.863923
--2.83437 3.49985 -0.863923
--3.49985 -2.83437 -0.863923
-2.83437 -3.49985 -0.863923
-1.71686 3.26737 0.951057
--3.26737 1.71686 0.951057
--1.71686 -3.26737 0.951057
-3.26737 -1.71686 0.951057
-3.91914 1.90229 0.934329
--1.90229 3.91914 0.934329
--3.91914 -1.90229 0.934329
-1.90229 -3.91914 0.934329
-2.94061 2.6744 -0.999684
--2.6744 2.94061 -0.999684
--2.94061 -2.6744 -0.999684
-2.6744 -2.94061 -0.999684
-3.71836 1.81524 0.990461
--1.81524 3.71836 0.990461
--3.71836 -1.81524 0.990461
-1.81524 -3.71836 0.990461
-3.94079 1.62016 0.965382
--1.62016 3.94079 0.965382
--3.94079 -1.62016 0.965382
-1.62016 -3.94079 0.965382
-3.02998 2.76264 -0.994951
--2.76264 3.02998 -0.994951
--3.02998 -2.76264 -0.994951
-2.76264 -3.02998 -0.994951
-3.9029 1.48263 -0.984564
--1.48263 3.9029 -0.984564
--3.9029 -1.48263 -0.984564
-1.48263 -3.9029 -0.984564
-3.79961 1.43848 -0.998027
--1.43848 3.79961 -0.998027
--3.79961 -1.43848 -0.998027
-1.43848 -3.79961 -0.998027
-3.32255 3.05627 -0.857527
--3.05627 3.32255 -0.857527
--3.32255 -3.05627 -0.857527
-3.05627 -3.32255 -0.857527
-4.46466 0.232482 -0.882291
--0.232482 4.46466 -0.882291
--4.46466 -0.232482 -0.882291
-0.232482 -4.46466 -0.882291
-4.26792 0.593741 0.951057
--0.593741 4.26792 0.951057
--4.26792 -0.593741 0.951057
-0.593741 -4.26792 0.951057
-4.18235 0.205137 -0.982287
--0.205137 4.18235 -0.982287
--4.18235 -0.205137 -0.982287
-0.205137 -4.18235 -0.982287
-0.0549226 4.28467 -0.958522
--4.28467 0.0549226 -0.958522
--0.0549226 -4.28467 -0.958522
-4.28467 -0.0549226 -0.958522
-2.8327 3.10055 0.979855
--3.10055 2.8327 0.979855
--2.8327 -3.10055 0.979855
-3.10055 -2.8327 0.979855
-2.65841 2.73294 -0.982287
--2.73294 2.65841 -0.982287
--2.65841 -2.73294 -0.982287
-2.73294 -2.65841 -0.982287
-3.35441 2.70473 -0.951057
--2.70473 3.35441 -0.951057
--3.35441 -2.70473 -0.951057
-2.70473 -3.35441 -0.951057
-1.06115 3.88274 -0.999684
--3.88274 1.06115 -0.999684
--1.06115 -3.88274 -0.999684
-3.88274 -1.06115 -0.999684
-3.43113 2.42176 -0.979855
--2.42176 3.43113 -0.979855
--3.43113 -2.42176 -0.979855
-2.42176 -3.43113 -0.979855
-0.0582341 4.17462 -0.984564
--4.17462 0.0582341 -0.984564
--0.0582341 -4.17462 -0.984564
-4.17462 -0.0582341 -0.984564
-4.16122 0.467344 -0.982287
--0.467344 4.16122 -0.982287
--4.16122 -0.467344 -0.982287
-0.467344 -4.16122 -0.982287
-2.74173 2.82569 -0.998027
--2.82569 2.74173 -0.998027
--2.74173 -2.82569 -0.998027
-2.82569 -2.74173 -0.998027
-2.61284 2.87801 0.993611
--2.87801 2.61284 0.993611
--2.61284 -2.87801 0.993611
-2.87801 -2.61284 0.993611
-3.48073 1.84015 -0.998027
--1.84015 3.48073 -0.998027
--3.48073 -1.84015 -0.998027
-1.84015 -3.48073 -0.998027
-3.8367 1.58244 0.988652
--1.58244 3.8367 0.988652
--3.8367 -1.58244 0.988652
-1.58244 -3.8367 0.988652
-1.01298 3.67559 -0.982287
--3.67559 1.01298 -0.982287
--1.01298 -3.67559 -0.982287
-3.67559 -1.01298 -0.982287
-2.90153 3.16949 0.954865
--3.16949 2.90153 0.954865
--2.90153 -3.16949 0.954865
-3.16949 -2.90153 0.954865
-0.402275 3.72968 0.968583
--3.72968 0.402275 0.968583
--0.402275 -3.72968 0.968583
-3.72968 -0.402275 0.968583
-1.69674 3.74655 0.993611
--3.74655 1.69674 0.993611
--1.69674 -3.74655 0.993611
-3.74655 -1.69674 0.993611
-0.318054 4.10054 -0.993611
--4.10054 0.318054 -0.993611
--0.318054 -4.10054 -0.993611
-4.10054 -0.318054 -0.993611
-4.35142 0.497567 -0.925077
--0.497567 4.35142 -0.925077
--4.35142 -0.497567 -0.925077
-0.497567 -4.35142 -0.925077
-0.7905 3.79317 -0.992115
--3.79317 0.7905 -0.992115
--0.7905 -3.79317 -0.992115
-3.79317 -0.7905 -0.992115
-3.9705 0.186244 -0.999684
--0.186244 3.9705 -0.999684
--3.9705 -0.186244 -0.999684
-0.186244 -3.9705 -0.999684
-3.54148 2.01649 0.997159
--2.01649 3.54148 0.997159
--3.54148 -2.01649 0.997159
-2.01649 -3.54148 0.997159
-3.41863 2.24132 0.996134
--2.24132 3.41863 0.996134
--3.41863 -2.24132 0.996134
-2.24132 -3.41863 0.996134
-2.70383 2.44234 -0.934329
--2.44234 2.70383 -0.934329
--2.70383 -2.44234 -0.934329
-2.44234 -2.70383 -0.934329
-2.76264 3.02998 0.994951
--3.02998 2.76264 0.994951
--2.76264 -3.02998 0.994951
-3.02998 -2.76264 0.994951
-3.4094 1.67875 0.979855
--1.67875 3.4094 0.979855
--3.4094 -1.67875 0.979855
-1.67875 -3.4094 0.979855
-3.27548 1.87813 0.974527
--1.87813 3.27548 0.974527
--3.27548 -1.87813 0.974527
-1.87813 -3.27548 0.974527
-0.809092 3.90448 -0.999921
--3.90448 0.809092 -0.999921
--0.809092 -3.90448 -0.999921
-3.90448 -0.809092 -0.999921
-1.03847 3.78479 -0.997159
--3.78479 1.03847 -0.997159
--1.03847 -3.78479 -0.997159
-3.78479 -1.03847 -0.997159
-1.65169 3.65686 0.999921
--3.65686 1.65169 0.999921
--1.65169 -3.65686 0.999921
-3.65686 -1.65169 0.999921
-0.701026 4.00185 0.998027
--4.00185 0.701026 0.998027
--0.701026 -4.00185 0.998027
-4.00185 -0.701026 0.998027
-2.593 2.66034 -0.958522
--2.66034 2.593 -0.958522
--2.593 -2.66034 -0.958522
-2.66034 -2.593 -0.958522
-2.13197 3.47318 0.997159
--3.47318 2.13197 0.997159
--2.13197 -3.47318 0.997159
-3.47318 -2.13197 0.997159
-3.6033 1.35537 -0.988652
-1.35537 3.6033 0.988652
--1.35537 3.6033 -0.988652
--3.6033 1.35537 0.988652
--3.6033 -1.35537 -0.988652
--1.35537 -3.6033 0.988652
-1.35537 -3.6033 -0.988652
-3.6033 -1.35537 0.988652
-3.69548 1.39428 -0.998737
--1.39428 3.69548 -0.998737
--3.69548 -1.39428 -0.998737
-1.39428 -3.69548 -0.998737
-1.7415 3.83513 0.977268
--3.83513 1.7415 0.977268
--1.7415 -3.83513 0.977268
-3.83513 -1.7415 0.977268
-0.0634334 3.97436 -0.999684
--3.97436 0.0634334 -0.999684
--0.0634334 -3.97436 -0.999684
-3.97436 -0.0634334 -0.999684
-3.2961 1.38231 0.904827
--1.38231 3.2961 0.904827
--3.2961 -1.38231 0.904827
-1.38231 -3.2961 0.904827
-1.35125 3.21298 -0.857527
--3.21298 1.35125 -0.857527
--1.35125 -3.21298 -0.857527
-3.21298 -1.35125 -0.857527
-3.50808 1.46136 0.979855
--1.46136 3.50808 0.979855
--3.50808 -1.46136 0.979855
-1.46136 -3.50808 0.979855
-2.56028 2.30218 -0.830596
--2.30218 2.56028 -0.830596
--2.56028 -2.30218 -0.830596
-2.30218 -2.56028 -0.830596
-3.5117 1.7242 0.996134
--1.7242 3.5117 0.996134
--3.5117 -1.7242 0.996134
-1.7242 -3.5117 0.996134
-3.4522 1.97025 0.999684
--1.97025 3.4522 0.999684
--3.4522 -1.97025 0.999684
-1.97025 -3.4522 0.999684
-2.62995 2.37022 -0.888136
--2.37022 2.62995 -0.888136
--2.62995 -2.37022 -0.888136
-2.37022 -2.62995 -0.888136
-3.28259 2.30766 -0.999921
--2.30766 3.28259 -0.999921
--3.28259 -2.30766 -0.999921
-2.30766 -3.28259 -0.999921
-3.60064 1.62357 -0.998737
--1.62357 3.60064 -0.998737
--3.60064 -1.62357 -0.998737
-1.62357 -3.60064 -0.998737
-0.755837 3.58844 -0.942991
--3.58844 0.755837 -0.942991
--0.755837 -3.58844 -0.942991
-3.58844 -0.755837 -0.942991
-2.8602 2.59536 -0.990461
--2.59536 2.8602 -0.990461
--2.8602 -2.59536 -0.990461
-2.59536 -2.8602 -0.990461
-0.0720788 3.56216 -0.899405
--3.56216 0.0720788 -0.899405
--0.0720788 -3.56216 -0.899405
-3.56216 -0.0720788 -0.899405
-2.80788 2.22991 -0.910106
--2.22991 2.80788 -0.910106
--2.80788 -2.22991 -0.910106
-2.22991 -2.80788 -0.910106
-3.51108 1.57894 -0.988652
--1.57894 3.51108 -0.988652
--3.51108 -1.57894 -0.988652
-1.57894 -3.51108 -0.988652
-3.32622 1.48728 -0.934329
-1.48728 3.32622 0.934329
--1.48728 3.32622 -0.934329
--3.32622 1.48728 0.934329
--3.32622 -1.48728 -0.934329
--1.48728 -3.32622 0.934329
-1.48728 -3.32622 -0.934329
-3.32622 -1.48728 0.934329
-0.0675903 3.78739 -0.977268
--3.78739 0.0675903 -0.977268
--0.0675903 -3.78739 -0.977268
-3.78739 -0.0675903 -0.977268
-0.992963 3.29684 0.830596
--3.29684 0.992963 0.830596
--0.992963 -3.29684 0.830596
-3.29684 -0.992963 0.830596
-2.02728 3.31663 0.993611
--3.31663 2.02728 0.993611
--2.02728 -3.31663 0.993611
-3.31663 -2.02728 0.993611
-3.68812 1.26687 0.994951
--1.26687 3.68812 0.994951
--3.68812 -1.26687 0.994951
-1.26687 -3.68812 0.994951
-3.36324 1.92397 0.992115
--1.92397 3.36324 0.992115
--3.36324 -1.92397 0.992115
-1.92397 -3.36324 0.992115
-3.09686 1.78452 0.904827
--1.78452 3.09686 0.904827
--3.09686 -1.78452 0.904827
-1.78452 -3.09686 0.904827
-3.34719 1.01042 -0.863923
--1.01042 3.34719 -0.863923
--3.34719 -1.01042 -0.863923
-1.01042 -3.34719 -0.863923
-1.14062 3.27101 -0.844328
--3.27101 1.14062 -0.844328
--1.14062 -3.27101 -0.844328
-3.27101 -1.14062 -0.844328
-3.44152 0.730764 0.876307
--0.730764 3.44152 0.876307
--3.44152 -0.730764 0.876307
-0.730764 -3.44152 0.876307
-1.3863 3.30679 -0.910106
--3.30679 1.3863 -0.910106
--1.3863 -3.30679 -0.910106
-3.30679 -1.3863 -0.910106
-0.610933 3.58012 0.929776
--3.58012 0.610933 0.929776
--0.610933 -3.58012 0.929776
-3.58012 -0.610933 0.929776
-0.771987 3.68347 -0.971632
--3.68347 0.771987 -0.971632
--0.771987 -3.68347 -0.971632
-3.68347 -0.771987 -0.971632
-3.32043 1.6391 0.954865
--1.6391 3.32043 0.954865
--3.32043 -1.6391 0.954865
-1.6391 -3.32043 0.954865
-0.831404 3.52346 0.925077
--3.52346 0.831404 0.925077
--0.831404 -3.52346 0.925077
-3.52346 -0.831404 0.925077
-3.69057 1.66859 -0.998737
--1.66859 3.69057 -0.998737
--3.69057 -1.66859 -0.998737
-1.66859 -3.69057 -0.998737
-2.80597 1.87056 0.778462
--1.87056 2.80597 0.778462
--2.80597 -1.87056 0.778462
-1.87056 -2.80597 0.778462
-0.762361 3.27502 0.770513
--3.27502 0.762361 0.770513
--0.762361 -3.27502 0.770513
-3.27502 -0.762361 0.770513
-3.41193 1.52972 -0.965382
--1.52972 3.41193 -0.965382
--3.41193 -1.52972 -0.965382
-1.52972 -3.41193 -0.965382
-3.51993 1.0703 -0.947098
--1.0703 3.51993 -0.947098
--3.51993 -1.0703 -0.947098
-1.0703 -3.51993 -0.947098
-3.18977 1.83325 0.947098
--1.83325 3.18977 0.947098
--3.18977 -1.83325 0.947098
-1.83325 -3.18977 0.947098
-3.20292 1.34749 0.850994
--1.34749 3.20292 0.850994
--3.20292 -1.34749 0.850994
-1.34749 -3.20292 0.850994
-3.116 1.31507 0.786288
--1.31507 3.116 0.786288
--3.116 -1.31507 0.786288
-1.31507 -3.116 0.786288
-2.90573 2.19829 0.934329
--2.19829 2.90573 0.934329
--2.90573 -2.19829 0.934329
-2.19829 -2.90573 0.934329
-0.990636 3.58046 -0.958522
--3.58046 0.990636 -0.958522
--0.990636 -3.58046 -0.958522
-3.58046 -0.990636 -0.958522
-1.31854 3.12531 -0.79399
--3.12531 1.31854 -0.79399
--1.31854 -3.12531 -0.79399
-3.12531 -1.31854 -0.79399
-3.13672 2.35882 0.997159
--2.35882 3.13672 0.997159
--3.13672 -2.35882 0.997159
-2.35882 -3.13672 0.997159
-3.02801 2.00541 0.929776
--2.00541 3.02801 0.929776
--3.02801 -2.00541 0.929776
-2.00541 -3.02801 0.929776
-3.10943 2.05484 0.962028
--2.05484 3.10943 0.962028
--3.10943 -2.05484 0.962028
-2.05484 -3.10943 0.962028
-2.38317 2.42791 -0.801567
--2.42791 2.38317 -0.801567
--2.38317 -2.42791 -0.801567
-2.42791 -2.38317 -0.801567
-2.28472 2.64664 -0.863923
--2.64664 2.28472 -0.863923
--2.28472 -2.64664 -0.863923
-2.64664 -2.28472 -0.863923
-2.93326 2.04231 -0.904827
--2.04231 2.93326 -0.904827
--2.93326 -2.04231 -0.904827
-2.04231 -2.93326 -0.904827
-2.52169 2.58133 -0.920232
--2.58133 2.52169 -0.920232
--2.52169 -2.58133 -0.920232
-2.58133 -2.52169 -0.920232
-2.22578 2.48221 0.745941
--2.48221 2.22578 0.745941
--2.22578 -2.48221 0.745941
-2.48221 -2.22578 0.745941
-2.45863 2.86553 -0.974527
--2.86553 2.45863 -0.974527
--2.45863 -2.86553 -0.974527
-2.86553 -2.45863 -0.974527
-2.33017 2.92431 0.965382
--2.92431 2.33017 0.965382
--2.33017 -2.92431 0.965382
-2.92431 -2.33017 0.965382
-3.14475 1.16308 -0.762443
--1.16308 3.14475 -0.762443
--3.14475 -1.16308 -0.762443
-1.16308 -3.14475 -0.762443
-2.48895 2.23239 -0.754251
--2.23239 2.48895 -0.754251
--2.48895 -2.23239 -0.754251
-2.23239 -2.48895 -0.754251
-1.11397 3.18301 -0.778462
--3.18301 1.11397 -0.778462
--1.11397 -3.18301 -0.778462
-3.18301 -1.11397 -0.778462
-2.33701 2.08185 -0.492727
--2.08185 2.33701 -0.492727
--2.33701 -2.08185 -0.492727
-2.08185 -2.33701 -0.492727
-1.5679 3.48886 0.984564
--3.48886 1.5679 0.984564
--1.5679 -3.48886 0.984564
-3.48886 -1.5679 0.984564
-1.08979 3.10264 -0.70265
--3.10264 1.08979 -0.70265
--1.08979 -3.10264 -0.70265
-3.10264 -1.08979 -0.70265
-3.3996 0.947959 0.882291
-0.947959 3.3996 -0.882291
--0.947959 3.3996 0.882291
--3.3996 0.947959 -0.882291
--3.3996 -0.947959 0.882291
--0.947959 -3.3996 -0.882291
-0.947959 -3.3996 0.882291
-3.3996 -0.947959 -0.882291
-3.2237 1.59588 0.915241
--1.59588 3.2237 0.915241
--3.2237 -1.59588 0.915241
-1.59588 -3.2237 0.915241
-2.98421 2.25295 0.965382
--2.25295 2.98421 0.965382
--2.98421 -2.25295 0.965382
-2.25295 -2.98421 0.965382
-0.483145 3.19314 -0.637424
--3.19314 0.483145 -0.637424
--0.483145 -3.19314 -0.637424
-3.19314 -0.483145 -0.637424
-3.00744 2.09846 -0.942991
--2.09846 3.00744 -0.942991
--3.00744 -2.09846 -0.942991
-2.09846 -3.00744 -0.942991
-1.88081 2.82289 -0.79399
--2.82289 1.88081 -0.79399
--1.88081 -2.82289 -0.79399
-2.82289 -1.88081 -0.79399
-2.44639 2.49796 -0.863923
--2.49796 2.44639 -0.863923
--2.44639 -2.49796 -0.863923
-2.49796 -2.44639 -0.863923
-2.45156 3.06478 0.997159
--3.06478 2.45156 0.997159
--2.45156 -3.06478 0.997159
-3.06478 -2.45156 0.997159
-3.17615 0.950957 -0.728969
--0.950957 3.17615 -0.728969
--3.17615 -0.950957 -0.728969
-0.950957 -3.17615 -0.728969
-0.719884 3.37774 -0.837528
--3.37774 0.719884 -0.837528
--0.719884 -3.37774 -0.837528
-3.37774 -0.719884 -0.837528
-3.23719 0.909689 0.770513
--0.909689 3.23719 0.770513
--3.23719 -0.909689 0.770513
-0.909689 -3.23719 0.770513
-0.704629 3.28792 -0.770513
--3.28792 0.704629 -0.770513
--0.704629 -3.28792 -0.770513
-3.28792 -0.704629 -0.770513
-2.83023 2.14565 0.893841
--2.14565 2.83023 0.893841
--2.83023 -2.14565 0.893841
-2.14565 -2.83023 0.893841
-3.25804 0.979493 -0.801567
--0.979493 3.25804 -0.801567
--3.25804 -0.979493 -0.801567
-0.979493 -3.25804 -0.801567
-0.968874 3.48816 -0.925077
--3.48816 0.968874 -0.925077
--0.968874 -3.48816 -0.925077
-3.48816 -0.968874 -0.925077
-3.21839 1.19399 -0.823533
--1.19399 3.21839 -0.823533
--3.21839 -1.19399 -0.823533
-1.19399 -3.21839 -0.823533
-0.574099 3.40555 0.837528
--3.40555 0.574099 0.837528
--0.574099 -3.40555 0.837528
-3.40555 -0.574099 0.837528
-0.539719 3.24387 0.70265
--3.24387 0.539719 0.70265
--0.539719 -3.24387 0.70265
-3.24387 -0.539719 0.70265
-0.874311 3.08449 -0.60793
--3.08449 0.874311 -0.60793
--0.874311 -3.08449 -0.60793
-3.08449 -0.874311 -0.60793
-1.94446 2.80398 0.809017
--2.80398 1.94446 0.809017
--1.94446 -2.80398 0.809017
-2.80398 -1.94446 0.809017
-3.22959 0.749648 -0.728969
--0.749648 3.22959 -0.728969
--3.22959 -0.749648 -0.728969
-0.749648 -3.22959 -0.728969
-1.47006 2.94159 -0.70265
--2.94159 1.47006 -0.70265
--1.47006 -2.94159 -0.70265
-2.94159 -1.47006 -0.70265
-1.09975 2.99548 0.587785
--2.99548 1.09975 0.587785
--1.09975 -2.99548 0.587785
-2.99548 -1.09975 0.587785
-2.94632 1.78166 -0.830596
-1.75896 2.9121 0.801567
--1.78166 2.94632 -0.830596
--2.9121 1.75896 0.801567
--2.94632 -1.78166 -0.830596
--1.75896 -2.9121 0.801567
-1.78166 -2.94632 -0.830596
-2.9121 -1.75896 0.801567
-0.933408 3.12611 0.675333
--3.12611 0.933408 0.675333
--0.933408 -3.12611 0.675333
-3.12611 -0.933408 0.675333
-2.3403 2.71656 -0.910106
--2.71656 2.3403 -0.910106
--2.3403 -2.71656 -0.910106
-2.71656 -2.3403 -0.910106
-3.15532 1.10562 0.754251
--1.10562 3.15532 0.754251
--3.15532 -1.10562 0.754251
-1.10562 -3.15532 0.754251
-2.16384 2.41923 0.656586
--2.41923 2.16384 0.656586
--2.16384 -2.41923 0.656586
-2.41923 -2.16384 0.656586
-0.719799 3.12416 0.60793
--3.12416 0.719799 0.60793
--0.719799 -3.12416 0.60793
-3.12416 -0.719799 0.60793
-0.515581 3.50268 -0.888136
--3.50268 0.515581 -0.888136
--0.515581 -3.50268 -0.888136
-3.50268 -0.515581 -0.888136
-3.35715 0.716377 0.823533
--0.716377 3.35715 0.823533
--3.35715 -0.716377 0.823533
-0.716377 -3.35715 0.823533
-0.890836 3.15639 -0.693653
--3.15639 0.890836 -0.693653
--0.890836 -3.15639 -0.693653
-3.15639 -0.890836 -0.693653
-3.01829 1.74329 0.857527
--1.74329 3.01829 0.857527
--3.01829 -1.74329 0.857527
-1.74329 -3.01829 0.857527
-2.11497 2.36999 0.567269
--2.36999 2.11497 0.567269
--2.11497 -2.36999 0.567269
-2.36999 -2.11497 0.567269
-2.29338 2.26246 0.627691
--2.26246 2.29338 0.627691
--2.29338 -2.26246 0.627691
-2.26246 -2.29338 0.627691
-1.71096 2.83987 0.728969
--2.83987 1.71096 0.728969
--1.71096 -2.83987 0.728969
-2.83987 -1.71096 0.728969
-1.56819 3.16176 -0.882291
--3.16176 1.56819 -0.882291
--1.56819 -3.16176 -0.882291
-3.16176 -1.56819 -0.882291
-0.909492 3.05863 0.587785
--3.05863 0.909492 0.587785
--0.909492 -3.05863 0.587785
-3.05863 -0.909492 0.587785
-3.02376 1.33747 -0.720309
--1.33747 3.02376 -0.720309
--3.02376 -1.33747 -0.720309
-1.33747 -3.02376 -0.720309
-3.14677 0.726257 -0.637424
--0.726257 3.14677 -0.637424
--3.14677 -0.726257 -0.637424
-0.726257 -3.14677 -0.637424
-1.83639 2.74947 -0.720309
--2.74947 1.83639 -0.720309
--1.83639 -2.74947 -0.720309
-2.74947 -1.83639 -0.720309
-1.31035 2.96949 0.656586
--2.96949 1.31035 0.656586
--1.31035 -2.96949 0.656586
-2.96949 -1.31035 0.656586
-2.28771 2.54547 0.816339
--2.54547 2.28771 0.816339
--2.28771 -2.54547 0.816339
-2.54547 -2.28771 0.816339
-1.34153 3.03192 0.728969
--3.03192 1.34153 0.728969
--1.34153 -3.03192 0.728969
-3.03192 -1.34153 0.728969
-1.27588 2.90125 0.556876
--2.90125 1.27588 0.556876
--1.27588 -2.90125 0.556876
-2.90125 -1.27588 0.556876
-1.28866 3.04488 -0.720309
--3.04488 1.28866 -0.720309
--1.28866 -3.04488 -0.720309
-3.04488 -1.28866 -0.720309
-0.49002 3.26074 -0.711536
--3.26074 0.49002 -0.711536
--0.49002 -3.26074 -0.711536
-3.26074 -0.49002 -0.711536
-1.41241 3.17483 0.850994
--3.17483 1.41241 0.850994
--1.41241 -3.17483 0.850994
-3.17483 -1.41241 0.850994
-1.52018 2.92602 0.711536
--2.92602 1.52018 0.711536
--1.52018 -2.92602 0.711536
-2.92602 -1.52018 0.711536
-0.59204 3.49057 0.888136
--3.49057 0.59204 0.888136
--0.59204 -3.49057 0.888136
-3.49057 -0.59204 0.888136
-1.50413 3.01829 -0.778462
--3.01829 1.50413 -0.778462
--1.50413 -3.01829 -0.778462
-3.01829 -1.50413 -0.778462
-3.02809 1.28245 0.70265
--1.28245 3.02809 0.70265
--3.02809 -1.28245 0.70265
-1.28245 -3.02809 0.70265
-2.36332 2.06148 0.503623
--2.06148 2.36332 0.503623
--2.36332 -2.06148 0.503623
-2.06148 -2.36332 0.503623
-2.7634 1.61046 0.597905
--1.61046 2.7634 0.597905
--2.7634 -1.61046 0.597905
-1.61046 -2.7634 0.597905
-2.90323 1.50695 -0.684547
--1.50695 2.90323 -0.684547
--2.90323 -1.50695 -0.684547
-1.50695 -2.90323 -0.684547
-2.71846 1.62944 -0.556876
--1.62944 2.71846 -0.556876
--2.71846 -1.62944 -0.556876
-1.62944 -2.71846 -0.556876
-2.8625 1.98878 -0.857527
--1.98878 2.8625 -0.857527
--2.8625 -1.98878 -0.857527
-1.98878 -2.8625 -0.857527
-1.44304 2.88027 -0.627691
--2.88027 1.44304 -0.627691
--1.44304 -2.88027 -0.627691
-2.88027 -1.44304 -0.627691
-3.43159 1.03967 -0.910106
--1.03967 3.43159 -0.910106
--3.43159 -1.03967 -0.910106
-1.03967 -3.43159 -0.910106
-3.08793 0.11025 -0.414376
--0.11025 3.08793 -0.414376
--3.08793 -0.11025 -0.414376
-0.11025 -3.08793 -0.414376
-1.99531 2.87113 0.863923
--2.87113 1.99531 0.863923
--1.99531 -2.87113 0.863923
-2.87113 -1.99531 0.863923
-1.92292 2.45408 0.470704
--2.45408 1.92292 0.470704
--1.92292 -2.45408 0.470704
-2.45408 -1.92292 0.470704
-2.62208 1.80566 -0.577573
--1.80566 2.62208 -0.577573
--2.62208 -1.80566 -0.577573
-1.80566 -2.62208 -0.577573
-0.860403 3.02239 -0.51444
--3.02239 0.860403 -0.51444
--0.860403 -3.02239 -0.51444
-3.02239 -0.860403 -0.51444
-1.79674 2.68353 -0.637424
--2.68353 1.79674 -0.637424
--1.79674 -2.68353 -0.637424
-2.68353 -1.79674 -0.637424
-0.681406 3.14865 -0.627691
--3.14865 0.681406 -0.627691
--0.681406 -3.14865 -0.627691
-3.14865 -0.681406 -0.627691
-0.557242 3.32595 0.778462
--3.32595 0.557242 0.778462
--0.557242 -3.32595 0.778462
-3.32595 -0.557242 0.778462
-3.00234 1.10269 -0.597905
--1.10269 3.00234 -0.597905
--3.00234 -1.10269 -0.597905
-1.10269 -3.00234 -0.597905
-3.11437 0.310592 -0.492727
--0.310592 3.11437 -0.492727
--3.11437 -0.310592 -0.492727
-0.310592 -3.11437 -0.492727
-1.42302 2.76102 0.448383
--2.76102 1.42302 0.448383
--1.42302 -2.76102 0.448383
-2.76102 -1.42302 0.448383
-2.96592 1.54328 -0.754251
--1.54328 2.96592 -0.754251
--2.96592 -1.54328 -0.754251
-1.54328 -2.96592 -0.754251
-2.34996 2.31305 0.711536
--2.31305 2.34996 0.711536
--2.34996 -2.31305 0.711536
-2.31305 -2.34996 0.711536
-1.05029 2.96869 -0.525175
--2.96869 1.05029 -0.525175
--1.05029 -2.96869 -0.525175
-2.96869 -1.05029 -0.525175
-3.06133 1.12786 -0.675333
--1.12786 3.06133 -0.675333
--3.06133 -1.12786 -0.675333
-1.12786 -3.06133 -0.675333
-2.39848 2.78975 -0.947098
--2.78975 2.39848 -0.947098
--2.39848 -2.78975 -0.947098
-2.78975 -2.39848 -0.947098
-2.67797 1.84862 -0.666012
--1.84862 2.67797 -0.666012
--2.67797 -1.84862 -0.666012
-1.84862 -2.67797 -0.666012
-2.24709 2.27608 -0.597905
--2.27608 2.24709 -0.597905
--2.24709 -2.27608 -0.597905
-2.27608 -2.24709 -0.597905
-0.92576 3.30554 -0.823533
--3.30554 0.92576 -0.823533
--0.92576 -3.30554 -0.823533
-3.30554 -0.92576 -0.823533
-3.23102 1.1285 0.816339
--1.1285 3.23102 0.816339
--3.23102 -1.1285 0.816339
-1.1285 -3.23102 0.816339
-2.56998 1.76503 -0.470704
--1.76503 2.56998 -0.470704
--2.56998 -1.76503 -0.470704
-1.76503 -2.56998 -0.470704
-1.24152 2.91612 -0.556876
--2.91612 1.24152 -0.556876
--1.24152 -2.91612 -0.556876
-2.91612 -1.24152 -0.556876
-0.786803 3.36279 0.837528
--3.36279 0.786803 0.837528
--0.786803 -3.36279 0.837528
-3.36279 -0.786803 0.837528
-2.48249 1.9482 -0.535827
--1.9482 2.48249 -0.535827
--2.48249 -1.9482 -0.535827
-1.9482 -2.48249 -0.535827
-0.907488 3.2278 -0.762443
--3.2278 0.907488 -0.762443
--0.907488 -3.2278 -0.762443
-3.2278 -0.907488 -0.762443
-0.692331 3.21476 -0.70265
--3.21476 0.692331 -0.70265
--0.692331 -3.21476 -0.70265
-3.21476 -0.692331 -0.70265
-3.21138 0.122336 -0.61786
--0.122336 3.21138 -0.61786
--3.21138 -0.122336 -0.61786
-0.122336 -3.21138 -0.61786
-0.279205 3.1433 -0.535827
--3.1433 0.279205 -0.535827
--0.279205 -3.1433 -0.535827
-3.1433 -0.279205 -0.535827
-2.41269 2.09974 0.597905
--2.09974 2.41269 0.597905
--2.41269 -2.09974 0.597905
-2.09974 -2.41269 0.597905
-0.506374 3.41628 -0.837528
--3.41628 0.506374 -0.837528
--0.506374 -3.41628 -0.837528
-3.41628 -0.506374 -0.837528
-1.26207 2.97267 -0.637424
--2.97267 1.26207 -0.637424
--1.26207 -2.97267 -0.637424
-2.97267 -1.26207 -0.637424
-2.76833 1.66312 -0.637424
--1.66312 2.76833 -0.637424
--2.76833 -1.66312 -0.637424
-1.66312 -2.76833 -0.637424
-1.76596 2.63183 -0.556876
--2.63183 1.76596 -0.556876
--1.76596 -2.63183 -0.556876
-2.63183 -1.76596 -0.556876
-2.00541 2.62874 -0.720309
--2.62874 2.00541 -0.720309
--2.00541 -2.62874 -0.720309
-2.62874 -2.00541 -0.720309
-2.69501 1.38129 -0.236499
--1.38129 2.69501 -0.236499
--2.69501 -1.38129 -0.236499
-1.38129 -2.69501 -0.236499
-1.37565 3.1006 0.79399
--3.1006 1.37565 0.79399
--1.37565 -3.1006 0.79399
-3.1006 -1.37565 0.79399
-1.22777 2.80908 0.356412
--2.80908 1.22777 0.356412
--1.22777 -2.80908 0.356412
-2.80908 -1.22777 0.356412
-3.14034 0.115678 -0.51444
--0.115678 3.14034 -0.51444
--3.14034 -0.115678 -0.51444
-0.115678 -3.14034 -0.51444
-2.847 1.47413 -0.60793
--1.47413 2.847 -0.60793
--2.847 -1.47413 -0.60793
-1.47413 -2.847 -0.60793
-1.41672 2.81978 -0.535827
--2.81978 1.41672 -0.535827
--1.41672 -2.81978 -0.535827
-2.81978 -1.41672 -0.535827
-2.87554 1.91276 0.837528
--1.91276 2.87554 0.837528
--2.87554 -1.91276 0.837528
-1.91276 -2.87554 0.837528
-1.86626 2.3929 0.260842
--2.3929 1.86626 0.260842
--1.86626 -2.3929 0.260842
-2.3929 -1.86626 0.260842
-3.31567 0.928147 0.830596
--0.928147 3.31567 0.830596
--3.31567 -0.928147 0.830596
-0.928147 -3.31567 0.830596
-1.96627 2.57207 -0.647056
--2.57207 1.96627 -0.647056
--1.96627 -2.57207 -0.647056
-2.57207 -1.96627 -0.647056
-3.08894 0.70964 -0.556876
--0.70964 3.08894 -0.556876
--3.08894 -0.70964 -0.556876
-0.70964 -3.08894 -0.556876
-3.0235 1.06626 0.60793
--1.06626 3.0235 0.60793
--3.0235 -1.06626 0.60793
-1.06626 -3.0235 0.60793
-2.2966 2.01143 0.320944
--2.01143 2.2966 0.320944
--2.2966 -2.01143 0.320944
-2.01143 -2.2966 0.320944
-2.43116 2.17561 -0.675333
--2.17561 2.43116 -0.675333
--2.43116 -2.17561 -0.675333
-2.17561 -2.43116 -0.675333
-1.70229 2.52048 -0.285019
--2.52048 1.70229 -0.285019
--1.70229 -2.52048 -0.285019
-2.52048 -1.70229 -0.285019
-1.44852 2.80358 0.535827
--2.80358 1.44852 0.535827
--1.44852 -2.80358 0.535827
-2.80358 -1.44852 0.535827
-2.94979 1.95788 0.888136
--1.95788 2.94979 0.888136
--2.94979 -1.95788 0.888136
-1.95788 -2.94979 0.888136
-1.07066 3.03842 -0.627691
--3.03842 1.07066 -0.627691
--1.07066 -3.03842 -0.627691
-3.03842 -1.07066 -0.627691
-2.65717 1.55706 0.391374
--1.55706 2.65717 0.391374
--2.65717 -1.55706 0.391374
-1.55706 -2.65717 0.391374
-3.13326 0.477307 0.556876
--0.477307 3.13326 0.556876
--3.13326 -0.477307 0.556876
-0.477307 -3.13326 0.556876
-1.9021 2.47779 -0.481754
--2.47779 1.9021 -0.481754
--1.9021 -2.47779 -0.481754
-2.47779 -1.9021 -0.481754
-3.08168 0.47262 0.470704
--0.47262 3.08168 0.470704
--3.08168 -0.47262 0.470704
-0.47262 -3.08168 0.470704
-2.63305 1.57016 -0.356412
--1.57016 2.63305 -0.356412
--2.63305 -1.57016 -0.356412
-1.57016 -2.63305 -0.356412
-3.0774 0.277639 0.414376
--0.277639 3.0774 0.414376
--3.0774 -0.277639 0.414376
-0.277639 -3.0774 0.414376
-1.73975 2.58715 -0.470704
--2.58715 1.73975 -0.470704
--1.73975 -2.58715 -0.470704
-2.58715 -1.73975 -0.470704
-2.21002 2.23404 -0.51444
--2.23404 2.21002 -0.51444
--2.21002 -2.23404 -0.51444
-2.23404 -2.21002 -0.51444
-2.96216 1.30667 -0.647056
--1.30667 2.96216 -0.647056
--2.96216 -1.30667 -0.647056
-1.30667 -2.96216 -0.647056
-0.471181 3.06458 -0.437116
--3.06458 0.471181 -0.437116
--0.471181 -3.06458 -0.437116
-3.06458 -0.471181 -0.437116
-2.67092 1.59684 -0.45958
--1.59684 2.67092 -0.45958
--2.67092 -1.59684 -0.45958
-1.59684 -2.67092 -0.45958
-3.04873 0.866244 0.556876
--0.866244 3.04873 0.556876
--3.04873 -0.866244 0.556876
-0.866244 -3.04873 0.556876
-2.08954 2.74976 -0.837528
--2.74976 2.08954 -0.837528
--2.08954 -2.74976 -0.837528
-2.74976 -2.08954 -0.837528
-1.6915 2.49908 -0.187381
--2.49908 1.6915 -0.187381
--1.6915 -2.49908 -0.187381
-2.49908 -1.6915 -0.187381
-1.89713 2.7416 0.745941
--2.7416 1.89713 0.745941
--1.89713 -2.7416 0.745941
-2.7416 -1.89713 0.745941
-3.04028 0.277372 0.320944
--0.277372 3.04028 0.320944
--3.04028 -0.277372 0.320944
-0.277372 -3.04028 0.320944
-2.27562 2.01795 -0.285019
--2.01795 2.27562 -0.285019
--2.27562 -2.01795 -0.285019
-2.01795 -2.27562 -0.285019
-2.30196 2.04596 -0.391374
--2.04596 2.30196 -0.391374
--2.30196 -2.04596 -0.391374
-2.04596 -2.30196 -0.391374
-2.50615 1.6949 0.224271
--1.6949 2.50615 0.224271
--2.50615 -1.6949 0.224271
-1.6949 -2.50615 0.224271
-0.0982578 3.00628 0.125333
--3.00628 0.0982578 0.125333
--0.0982578 -3.00628 0.125333
-3.00628 -0.0982578 0.125333
-2.4881 1.90902 0.503623
--1.90902 2.4881 0.503623
--2.4881 -1.90902 0.503623
-1.90902 -2.4881 0.503623
-3.09947 0.0833712 0.437116
-0.0843587 3.07861 -0.391374
--0.0833712 3.09947 0.437116
--3.07861 0.0843587 -0.391374
--3.09947 -0.0833712 0.437116
--0.0843587 -3.07861 -0.391374
-0.0833712 -3.09947 0.437116
-3.07861 -0.0843587 -0.391374
-2.7959 1.93834 -0.801567
--1.93834 2.7959 -0.801567
--2.7959 -1.93834 -0.801567
-1.93834 -2.7959 -0.801567
-2.33132 2.37031 -0.737513
--2.37031 2.33132 -0.737513
--2.33132 -2.37031 -0.737513
-2.37031 -2.33132 -0.737513
-2.62574 1.54219 0.297042
--1.54219 2.62574 0.297042
--2.62574 -1.54219 0.297042
-1.54219 -2.62574 0.297042
-0.0867484 3.04024 -0.285019
--3.04024 0.0867484 -0.285019
--0.0867484 -3.04024 -0.285019
-3.04024 -0.0867484 -0.285019
-3.06984 0.303034 -0.402906
--0.303034 3.06984 -0.402906
--3.06984 -0.303034 -0.402906
-0.303034 -3.06984 -0.402906
-2.53059 1.70773 0.320944
--1.70773 2.53059 0.320944
--2.53059 -1.70773 0.320944
-1.70773 -2.53059 0.320944
-2.2584 1.99812 -0.175023
--1.99812 2.2584 -0.175023
--2.2584 -1.99812 -0.175023
-1.99812 -2.2584 -0.175023
-1.68597 2.48486 -0.0753268
--2.48486 1.68597 -0.0753268
--1.68597 -2.48486 -0.0753268
-2.48486 -1.68597 -0.0753268
-3.0087 0.290892 -0.212007
--0.290892 3.0087 -0.212007
--3.0087 -0.290892 -0.212007
-0.290892 -3.0087 -0.212007
-2.40914 1.88185 -0.33282
--1.88185 2.40914 -0.33282
--2.40914 -1.88185 -0.33282
-1.88185 -2.40914 -0.33282
-0.83596 2.89504 -0.162637
--2.89504 0.83596 -0.162637
--0.83596 -2.89504 -0.162637
-2.89504 -0.83596 -0.162637
-2.82479 1.7009 -0.711536
--1.7009 2.82479 -0.711536
--2.82479 -1.7009 -0.711536
-1.7009 -2.82479 -0.711536
-2.73417 1.89148 -0.737513
--1.89148 2.73417 -0.737513
--2.73417 -1.89148 -0.737513
-1.89148 -2.73417 -0.737513
-0.101872 3.02376 0.224271
--3.02376 0.101872 0.224271
--0.101872 -3.02376 0.224271
-3.02376 -0.101872 0.224271
-3.32568 0.496788 0.770513
--0.496788 3.32568 0.770513
--3.32568 -0.496788 0.770513
-0.496788 -3.32568 0.770513
-2.88951 0.835543 0.125333
--0.835543 2.88951 0.125333
--2.88951 -0.835543 0.125333
-0.835543 -2.88951 0.125333
-1.84209 2.38221 -0.150226
--2.38221 1.84209 -0.150226
--1.84209 -2.38221 -0.150226
-2.38221 -1.84209 -0.150226
-2.7227 1.39937 -0.344643
--1.39937 2.7227 -0.344643
--2.7227 -1.39937 -0.344643
-1.39937 -2.7227 -0.344643
-2.56299 1.72584 0.414376
--1.72584 2.56299 0.414376
--2.56299 -1.72584 0.414376
-1.72584 -2.56299 0.414376
-2.44956 1.88337 0.414376
--1.88337 2.44956 0.414376
--2.44956 -1.88337 0.414376
-1.88337 -2.44956 0.414376
-2.88139 0.836337 0.0251301
--0.836337 2.88139 0.0251301
--2.88139 -0.836337 0.0251301
-0.836337 -2.88139 0.0251301
-2.13421 2.12725 0.162637
--2.12725 2.13421 0.162637
--2.13421 -2.12725 0.162637
-2.12725 -2.13421 0.162637
-1.60705 2.75676 -0.587785
--2.75676 1.60705 -0.587785
--1.60705 -2.75676 -0.587785
-2.75676 -1.60705 -0.587785
-0.466808 2.9985 -0.260842
--2.9985 0.466808 -0.260842
--0.466808 -2.9985 -0.260842
-2.9985 -0.466808 -0.260842
-3.03015 0.0876038 0.24869
--0.0876038 3.03015 0.24869
--3.03015 -0.0876038 0.24869
-0.0876038 -3.03015 0.24869
-3.19314 0.483145 0.637424
--0.483145 3.19314 0.637424
--3.19314 -0.483145 0.637424
-0.483145 -3.19314 0.637424
-1.63599 2.8129 -0.666012
--2.8129 1.63599 -0.666012
--1.63599 -2.8129 -0.666012
-2.8129 -1.63599 -0.666012
-2.37033 1.84005 -0.0376902
--1.84005 2.37033 -0.0376902
--2.37033 -1.84005 -0.0376902
-1.84005 -2.37033 -0.0376902
-0.467511 2.96622 -0.0753268
--2.96622 0.467511 -0.0753268
--0.467511 -2.96622 -0.0753268
-2.96622 -0.467511 -0.0753268
-2.96359 0.470532 -0.0376902
--0.470532 2.96359 -0.0376902
--2.96359 -0.470532 -0.0376902
-0.470532 -2.96359 -0.0376902
-0.281957 2.9868 -0.012566
--2.9868 0.281957 -0.012566
--0.281957 -2.9868 -0.012566
-2.9868 -0.281957 -0.012566
-2.96531 0.467749 0.0627905
--0.467749 2.96531 0.0627905
--2.96531 -0.467749 0.0627905
-0.467749 -2.96531 0.0627905
-0.470098 2.96326 0.0251301
--2.96326 0.470098 0.0251301
--0.470098 -2.96326 0.0251301
-2.96326 -0.470098 0.0251301
-2.25875 1.98631 0.125333
--1.98631 2.25875 0.125333
--2.25875 -1.98631 0.125333
-1.98631 -2.25875 0.125333
-3.01 0.0900499 0.150226
--0.0900499 3.01 0.150226
--3.01 -0.0900499 0.150226
-0.0900499 -3.01 0.150226
-2.37318 1.83844 0.0627905
--1.83844 2.37318 0.0627905
--2.37318 -1.83844 0.0627905
-1.83844 -2.37318 0.0627905
-2.99919 0.0953853 -0.0376902
--0.0953853 2.99919 -0.0376902
--2.99919 -0.0953853 -0.0376902
-0.0953853 -2.99919 -0.0376902
-2.25107 1.98358 0.0251301
--1.98358 2.25107 0.0251301
--2.25107 -1.98358 0.0251301
-1.98358 -2.25107 0.0251301
--0.65443 -2.92775 6.85373e-15
-0.65443 2.92775 8.81852e-15
-2.92775 -0.65443 3.4293e-14
--2.92775 0.65443 3.62578e-14
-1.98356 2.25161 -0.0376902
--2.25161 1.98356 -0.0376902
--1.98356 -2.25161 -0.0376902
-2.25161 -1.98356 -0.0376902
-1.8383 2.37239 -0.0502443
--2.37239 1.8383 -0.0502443
--1.8383 -2.37239 -0.0502443
-2.37239 -1.8383 -0.0502443
-2.15145 2.14013 0.260842
--2.14013 2.15145 0.260842
--2.15145 -2.14013 0.260842
-2.14013 -2.15145 0.260842
-2.13924 2.82104 -0.888136
--2.82104 2.13924 -0.888136
--2.13924 -2.82104 -0.888136
-2.82104 -2.13924 -0.888136
-1.84069 2.37054 0.0502443
--2.37054 1.84069 0.0502443
--1.84069 -2.37054 0.0502443
-2.37054 -1.84069 0.0502443
-1.84926 2.37665 0.150226
--2.37665 1.84926 0.150226
--1.84926 -2.37665 0.150226
-2.37665 -1.84926 0.150226
-0.0946116 2.99859 0.012566
--2.99859 0.0946116 0.012566
--0.0946116 -2.99859 0.012566
-2.99859 -0.0946116 0.012566
-1.68759 2.48119 0.0376902
--2.48119 1.68759 0.0376902
--1.68759 -2.48119 0.0376902
-2.48119 -1.68759 0.0376902
-3.00792 0.0986898 -0.13779
--0.0986898 3.00792 -0.13779
--3.00792 -0.0986898 -0.13779
-0.0986898 -3.00792 -0.13779
-0.658479 2.93202 0.100362
--2.93202 0.658479 0.100362
--0.658479 -2.93202 0.100362
-2.93202 -0.658479 0.100362
-0.0824228 3.12261 -0.481754
--3.12261 0.0824228 -0.481754
--0.0824228 -3.12261 -0.481754
-3.12261 -0.0824228 -0.481754
-1.2522 2.85519 0.470704
--2.85519 1.2522 0.470704
--1.2522 -2.85519 0.470704
-2.85519 -1.2522 0.470704
-2.25097 1.98751 -0.0753268
--1.98751 2.25097 -0.0753268
--2.25097 -1.98751 -0.0753268
-1.98751 -2.25097 -0.0753268
-1.96198 2.49811 0.567269
--2.49811 1.96198 0.567269
--1.96198 -2.49811 0.567269
-2.49811 -1.96198 0.567269
-3.01268 0.277908 0.224271
--0.277908 3.01268 0.224271
--3.01268 -0.277908 0.224271
-0.277908 -3.01268 0.224271
-2.27396 1.99564 0.224271
--1.99564 2.27396 0.224271
--2.27396 -1.99564 0.224271
-1.99564 -2.27396 0.224271
-2.88386 0.840589 -0.0878512
--0.840589 2.88386 -0.0878512
--2.88386 -0.840589 -0.0878512
-0.840589 -2.88386 -0.0878512
-0.281122 3.20139 -0.61786
--3.20139 0.281122 -0.61786
--0.281122 -3.20139 -0.61786
-3.20139 -0.281122 -0.61786
-1.9317 2.5216 -0.567269
--2.5216 1.9317 -0.567269
--1.9317 -2.5216 -0.567269
-2.5216 -1.9317 -0.567269
-0.285319 2.99029 0.0878512
--2.99029 0.285319 0.0878512
--0.285319 -2.99029 0.0878512
-2.99029 -0.285319 0.0878512
-0.47427 2.97026 0.125333
--2.97026 0.47427 0.125333
--0.47427 -2.97026 0.125333
-2.97026 -0.47427 0.125333
-1.85374 2.68467 0.675333
--2.68467 1.85374 0.675333
--1.85374 -2.68467 0.675333
-2.68467 -1.85374 0.675333
-0.089103 3.0164 -0.187381
--3.0164 0.089103 -0.187381
--0.089103 -3.0164 -0.187381
-3.0164 -0.089103 -0.187381
-2.60306 1.74902 0.503623
--1.74902 2.60306 0.503623
--2.60306 -1.74902 0.503623
-1.74902 -2.60306 0.503623
-3.13008 0.278824 0.51444
--0.278824 3.13008 0.51444
--3.13008 -0.278824 0.51444
-0.278824 -3.13008 0.51444
-2.38844 1.86182 -0.236499
--1.86182 2.38844 -0.236499
--2.38844 -1.86182 -0.236499
-1.86182 -2.38844 -0.236499
-2.37545 1.84785 -0.13779
--1.84785 2.37545 -0.13779
--2.37545 -1.84785 -0.13779
-1.84785 -2.37545 -0.13779
-0.0917127 3.00247 -0.0878512
--3.00247 0.0917127 -0.0878512
--0.0917127 -3.00247 -0.0878512
-3.00247 -0.0917127 -0.0878512
-3.16494 0.892821 0.70265
--0.892821 3.16494 0.70265
--3.16494 -0.892821 0.70265
-0.892821 -3.16494 0.70265
-0.497807 3.33536 -0.778462
--3.33536 0.497807 -0.778462
--0.497807 -3.33536 -0.778462
-3.33536 -0.497807 -0.778462
-2.79784 1.44511 -0.525175
--1.44511 2.79784 -0.525175
--2.79784 -1.44511 -0.525175
-1.44511 -2.79784 -0.525175
-2.97354 0.878499 -0.437116
--0.878499 2.97354 -0.437116
--2.97354 -0.878499 -0.437116
-0.878499 -2.97354 -0.437116
-3.08592 1.08479 0.684547
--1.08479 3.08592 0.684547
--3.08592 -1.08479 0.684547
-1.08479 -3.08592 0.684547
-3.05107 0.105863 -0.320944
--0.105863 3.05107 -0.320944
--3.05107 -0.105863 -0.320944
-0.105863 -3.05107 -0.320944
-2.75625 1.42012 -0.437116
--1.42012 2.75625 -0.437116
--2.75625 -1.42012 -0.437116
-1.42012 -2.75625 -0.437116
-2.32647 2.03346 0.414376
--2.03346 2.32647 0.414376
--2.32647 -2.03346 0.414376
-2.03346 -2.32647 0.414376
-0.480046 2.98715 0.224271
--2.98715 0.480046 0.224271
--0.480046 -2.98715 0.224271
-2.98715 -0.480046 0.224271
-3.0345 0.296466 -0.309017
--0.296466 3.0345 -0.309017
--3.0345 -0.296466 -0.309017
-0.296466 -3.0345 -0.309017
-3.06007 0.0853901 0.344643
--0.0853901 3.06007 0.344643
--3.06007 -0.0853901 0.344643
-0.0853901 -3.06007 0.344643
-1.71844 2.54992 -0.379779
--2.54992 1.71844 -0.379779
--1.71844 -2.54992 -0.379779
-2.54992 -1.71844 -0.379779
-2.53361 1.9399 0.587785
--1.9399 2.53361 0.587785
--2.53361 -1.9399 0.587785
-1.9399 -2.53361 0.587785
-4.60139 1.83789 0.297042
--1.83789 4.60139 0.297042
--4.60139 -1.83789 0.297042
-1.83789 -4.60139 0.297042
-2.58008 4.00301 -0.647056
--4.00301 2.58008 -0.647056
--2.58008 -4.00301 -0.647056
-4.00301 -2.58008 -0.647056
-3.1622 3.8401 0.224271
--3.8401 3.1622 0.224271
--3.1622 -3.8401 0.224271
-3.8401 -3.1622 0.224271
-1.8417 4.62104 -0.224271
--4.62104 1.8417 -0.224271
--1.8417 -4.62104 -0.224271
-4.62104 -1.8417 -0.224271
-4.97927 0.305732 -0.150226
--0.305732 4.97927 -0.150226
--4.97927 -0.305732 -0.150226
-0.305732 -4.97927 -0.150226
-1.24701 4.79916 -0.285019
--4.79916 1.24701 -0.285019
--1.24701 -4.79916 -0.285019
-4.79916 -1.24701 -0.285019
-4.89313 0.636271 0.356412
--0.636271 4.89313 0.356412
--4.89313 -0.636271 0.356412
-0.636271 -4.89313 0.356412
-2.6539 4.20404 0.236499
--4.20404 2.6539 0.236499
--2.6539 -4.20404 0.236499
-4.20404 -2.6539 0.236499
-4.50861 2.1306 0.162637
--2.1306 4.50861 0.162637
--4.50861 -2.1306 0.162637
-2.1306 -4.50861 0.162637
-4.6482 1.83698 -0.0627905
--1.83698 4.6482 -0.0627905
--4.6482 -1.83698 -0.0627905
-1.83698 -4.6482 -0.0627905
-2.93523 4.04533 0.0627905
--4.04533 2.93523 0.0627905
--2.93523 -4.04533 0.0627905
-4.04533 -2.93523 0.0627905
-3.83293 3.18306 0.187381
--3.18306 3.83293 0.187381
--3.83293 -3.18306 0.187381
-3.18306 -3.83293 0.187381
-4.62382 1.84214 0.212007
--1.84214 4.62382 0.212007
--4.62382 -1.84214 0.212007
-1.84214 -4.62382 0.212007
-1.23907 4.73438 -0.448383
--4.73438 1.23907 -0.448383
--1.23907 -4.73438 -0.448383
-4.73438 -1.23907 -0.448383
-1.54017 4.67806 -0.379779
--4.67806 1.54017 -0.379779
--1.54017 -4.67806 -0.379779
-4.67806 -1.54017 -0.379779
-4.79162 1.24634 0.309017
--1.24634 4.79162 0.309017
--4.79162 -1.24634 0.309017
-1.24634 -4.79162 0.309017
-3.38388 3.6244 0.285019
--3.6244 3.38388 0.285019
--3.38388 -3.6244 0.285019
-3.6244 -3.38388 0.285019
-4.9834 0.319188 0.112856
--0.319188 4.9834 0.112856
--4.9834 -0.319188 0.112856
-0.319188 -4.9834 0.112856
-2.68073 4.21829 -0.0627905
--4.21829 2.68073 -0.0627905
--2.68073 -4.21829 -0.0627905
-4.21829 -2.68073 -0.0627905
-3.40164 3.637 0.19971
--3.637 3.40164 0.19971
--3.40164 -3.637 0.19971
-3.637 -3.40164 0.19971
-4.7229 1.23734 0.470704
--1.23734 4.7229 0.470704
--4.7229 -1.23734 0.470704
-1.23734 -4.7229 0.470704
-3.42088 3.64562 0.0376902
--3.64562 3.42088 0.0376902
--3.42088 -3.64562 0.0376902
-3.64562 -3.42088 0.0376902
-4.42363 2.1061 0.437116
--2.1061 4.42363 0.437116
--4.42363 -2.1061 0.437116
-2.1061 -4.42363 0.437116
-1.54838 4.73302 -0.19971
--4.73302 1.54838 -0.19971
--1.54838 -4.73302 -0.19971
-4.73302 -1.54838 -0.19971
-4.16057 2.66096 0.344643
--2.66096 4.16057 0.344643
--4.16057 -2.66096 0.344643
-2.66096 -4.16057 0.344643
-1.77921 4.39981 -0.666012
--4.39981 1.77921 -0.666012
--1.77921 -4.39981 -0.666012
-4.39981 -1.77921 -0.666012
-3.63142 3.42045 0.150226
--3.42045 3.63142 0.150226
--3.63142 -3.42045 0.150226
-3.42045 -3.63142 0.150226
-0.633059 4.77455 -0.577573
--4.77455 0.633059 -0.577573
--0.633059 -4.77455 -0.577573
-4.77455 -0.633059 -0.577573
-2.87638 3.91434 -0.51444
--3.91434 2.87638 -0.51444
--2.87638 -3.91434 -0.51444
-3.91434 -2.87638 -0.51444
-4.04454 2.9331 -0.0878512
--2.9331 4.04454 -0.0878512
--4.04454 -2.9331 -0.0878512
-2.9331 -4.04454 -0.0878512
-4.64753 1.84211 0.0376902
--1.84211 4.64753 0.0376902
--4.64753 -1.84211 0.0376902
-1.84211 -4.64753 0.0376902
-4.94415 0.633431 0.175023
--0.633431 4.94415 0.175023
--4.94415 -0.633431 0.175023
-0.633431 -4.94415 0.175023
-4.67852 1.23011 0.546394
--1.23011 4.67852 0.546394
--4.67852 -1.23011 0.546394
-1.23011 -4.67852 0.546394
-4.52433 2.12829 -0.012566
--2.12829 4.52433 -0.012566
--4.52433 -2.12829 -0.012566
-2.12829 -4.52433 -0.012566
-3.84678 3.18804 0.0878512
--3.18804 3.84678 0.0878512
--3.84678 -3.18804 0.0878512
-3.18804 -3.84678 0.0878512
-3.14305 3.76545 -0.425779
--3.76545 3.14305 -0.425779
--3.14305 -3.76545 -0.425779
-3.76545 -3.14305 -0.425779
-3.4237 3.6422 -0.0502443
--3.6422 3.4237 -0.0502443
--3.4237 -3.6422 -0.0502443
-3.6422 -3.4237 -0.0502443
-1.54566 4.75501 -0.012566
--4.75501 1.54566 -0.012566
--1.54566 -4.75501 -0.012566
-4.75501 -1.54566 -0.012566
--3.85322 3.18521 0.0376902
--3.18521 -3.85322 0.0376902
-3.18521 3.85322 0.0376902
--3.85257 -3.18712 -7.83477e-15
--3.18712 3.85257 -8.81717e-15
-3.85257 3.18712 -9.79956e-15
-3.85322 -3.18521 0.0376902
-3.18712 -3.85257 -3.52741e-14
-2.93976 4.04409 -0.0251301
--4.04409 2.93976 -0.0251301
--2.93976 -4.04409 -0.0251301
-4.04409 -2.93976 -0.0251301
-4.84425 0.0273939 0.535827
--0.0273939 4.84425 0.535827
--4.84425 -0.0273939 0.535827
-0.0273939 -4.84425 0.535827
-4.98836 0.310694 -0.0627905
--0.310694 4.98836 -0.0627905
--4.98836 -0.310694 -0.0627905
-0.310694 -4.98836 -0.0627905
-4.66122 0.550801 -0.720309
--0.550801 4.66122 -0.720309
--4.66122 -0.550801 -0.720309
-0.550801 -4.66122 -0.720309
-0.013718 4.96201 -0.272952
--4.96201 0.013718 -0.272952
--0.013718 -4.96201 -0.272952
-4.96201 -0.013718 -0.272952
-4.21923 2.68058 0.0502443
--2.68058 4.21923 0.0502443
--4.21923 -2.68058 0.0502443
-2.68058 -4.21923 0.0502443
-3.85082 -3.18812 -0.0376902
-3.18812 3.85082 -0.0376902
--3.18812 -3.85082 -0.0376902
--3.85082 3.18812 -0.0376902
-1.84249 4.64678 -0.0502443
--4.64678 1.84249 -0.0502443
--1.84249 -4.64678 -0.0502443
-4.64678 -1.84249 -0.0502443
-4.22205 2.6779 -0.0251301
--2.6779 4.22205 -0.0251301
--4.22205 -2.6779 -0.0251301
-2.6779 -4.22205 -0.0251301
-4.99002 0.314575 0.012566
--0.314575 4.99002 0.012566
--4.99002 -0.314575 0.012566
-0.314575 -4.99002 0.012566
-2.67284 4.18841 -0.24869
--4.18841 2.67284 -0.24869
--2.67284 -4.18841 -0.24869
-4.18841 -2.67284 -0.24869
-1.83617 4.59372 -0.320944
--4.59372 1.83617 -0.320944
--1.83617 -4.59372 -0.320944
-4.59372 -1.83617 -0.320944
-3.61603 3.41196 0.236499
--3.41196 3.61603 0.236499
--3.61603 -3.41196 0.236499
-3.41196 -3.61603 0.236499
-3.32468 3.57537 0.470704
--3.57537 3.32468 0.470704
--3.32468 -3.57537 0.470704
-3.57537 -3.32468 0.470704
-0.636134 4.8634 -0.425779
--4.8634 0.636134 -0.425779
--0.636134 -4.8634 -0.425779
-4.8634 -0.636134 -0.425779
--4.84292 1.24345 -2.54772e-14
-4.84292 -1.24345 -2.35124e-14
-1.24345 4.84292 1.96208e-15
--1.24345 -4.84292 3.92687e-15
-0.934922 4.91109 0.0376902
--4.91109 0.934922 0.0376902
--0.934922 -4.91109 0.0376902
-4.91109 -0.934922 0.0376902
-4.99929 0.00188469 0.0376902
-0.00188469 4.99929 -0.0376902
--0.00188469 4.99929 0.0376902
--4.99929 0.00188469 -0.0376902
--4.99929 -0.00188469 0.0376902
--0.00188469 -4.99929 -0.0376902
-0.00188469 -4.99929 0.0376902
-4.99929 -0.00188469 -0.0376902
-4.04057 2.9403 0.0753268
--2.9403 4.04057 0.0753268
--4.04057 -2.9403 0.0753268
-2.9403 -4.04057 0.0753268
-3.55479 2.88404 -0.816339
--2.88404 3.55479 -0.816339
--3.55479 -2.88404 -0.816339
-2.88404 -3.55479 -0.816339
-4.80262 0.634323 0.535827
--0.634323 4.80262 0.535827
--4.80262 -0.634323 0.535827
-0.634323 -4.80262 0.535827
-4.5121 2.11285 -0.187381
--2.11285 4.5121 -0.187381
--4.5121 -2.11285 -0.187381
-2.11285 -4.5121 -0.187381
-4.36238 2.38469 -0.236499
--2.38469 4.36238 -0.236499
--4.36238 -2.38469 -0.236499
-2.38469 -4.36238 -0.236499
--4.04508 -2.93893 -4.3117e-14
--2.93893 4.04508 -1.56777e-14
-2.93893 -4.04508 -1.37129e-14
-4.04508 2.93893 -2.44921e-15
-0.941256 4.9041 -0.112856
--4.9041 0.941256 -0.112856
--0.941256 -4.9041 -0.112856
-4.9041 -0.941256 -0.112856
-1.84352 4.63747 -0.13779
--4.63747 1.84352 -0.13779
--1.84352 -4.63747 -0.13779
-4.63747 -1.84352 -0.13779
-4.89462 0.942627 0.175023
--0.942627 4.89462 0.175023
--4.89462 -0.942627 0.175023
-0.942627 -4.89462 0.175023
-2.66442 4.16829 -0.320944
--4.16829 2.66442 -0.320944
--2.66442 -4.16829 -0.320944
-4.16829 -2.66442 -0.320944
-4.99361 0.00564764 0.112856
-0.00564764 4.99361 -0.112856
--0.00564764 4.99361 0.112856
--4.99361 0.00564764 -0.112856
--4.99361 -0.00564764 0.112856
--0.00564764 -4.99361 -0.112856
-0.00564764 -4.99361 0.112856
-4.99361 -0.00564764 -0.112856
-3.41276 3.64339 0.125333
--3.64339 3.41276 0.125333
--3.41276 -3.64339 0.125333
-3.64339 -3.41276 0.125333
diff --git a/data/points/spiral_4d_10k.off b/data/points/spiral_4d_10k.off
deleted file mode 100644
index b8dfd850..00000000
--- a/data/points/spiral_4d_10k.off
+++ /dev/null
@@ -1,10002 +0,0 @@
-nOFF
-4 10000 0 0
--0.131548 0.99131 0.809975 0.586465
-0.449263 -0.893399 -0.862884 0.505403
-0.684747 0.728781 0.999625 -0.0273947
--0.979174 -0.203024 -0.0241882 0.999707
--0.869689 0.4936 0.21224 -0.977218
-0.565954 0.824437 -0.892124 0.45179
--0.554594 0.832121 -0.619417 0.785062
--0.803871 0.594803 0.644627 -0.764497
-0.992841 -0.11944 0.828817 0.55952
--0.374775 -0.927116 0.754234 -0.656606
--0.378772 0.92549 0.41053 0.911847
-0.866634 -0.498945 -0.391067 -0.920362
--0.604154 -0.796868 -0.450815 -0.892617
--0.0723752 0.997377 0.572971 0.819576
--0.587862 -0.808961 0.999955 -0.00947563
--0.544173 -0.838973 0.547301 -0.836936
-0.913181 -0.407554 -0.420602 0.907245
-0.761465 0.648206 0.16256 0.986699
--0.0737537 -0.997276 0.454589 -0.890701
-0.147723 0.989029 -0.636076 -0.771626
-0.717588 0.696468 -0.077313 0.997007
-0.154763 0.987952 -0.985716 -0.168419
--0.984943 -0.172877 0.0961013 -0.995372
--0.130204 -0.991487 0.881829 -0.471569
-0.898968 0.438015 0.212565 0.977147
--0.709015 0.705194 -0.963715 -0.266933
-0.467465 -0.884011 -0.0525329 -0.998619
-0.471163 -0.882046 0.358075 -0.933693
-0.490241 -0.871587 0.564355 0.825532
-0.472706 0.88122 0.515174 0.857086
-0.92419 -0.381934 0.0809925 -0.996715
-0.799522 0.600636 -0.0270318 0.999635
-0.999651 -0.0264155 -0.877708 -0.479195
-0.911182 0.412004 0.0536571 -0.998559
--0.660928 -0.75045 -0.998688 -0.0512032
--0.856347 0.516401 -0.654563 0.756008
-0.176017 0.984387 0.40327 0.915081
-0.991011 -0.133777 0.658802 -0.752316
-0.381236 -0.924478 0.156017 0.987754
-0.292332 0.956317 -0.177769 0.984072
--0.495433 -0.868646 0.00291519 -0.999996
-0.711194 0.702996 -0.836631 0.547766
-0.730494 0.682919 0.975222 -0.221227
--0.392878 0.919591 -0.893928 0.448211
--0.752625 0.658449 -0.928302 -0.371828
-0.123026 -0.992403 0.973082 -0.230458
-0.985305 -0.170802 -0.114124 0.993467
--0.418929 0.908019 0.727785 -0.685806
-0.736961 -0.675935 0.385576 0.922676
--0.243007 -0.970025 0.833003 0.553269
--0.959942 -0.280198 -0.992112 -0.125353
-0.999602 0.0282278 -0.949724 0.313088
-0.920729 -0.390203 -0.727923 -0.685659
-0.897049 0.441931 -0.220116 0.975474
--0.102164 -0.994768 -0.689852 0.723951
-0.99862 0.0525128 0.515259 -0.857034
--0.947668 0.319257 0.472515 -0.881323
--0.927144 -0.374705 0.759191 0.650868
-0.516832 -0.856087 -0.615706 -0.787976
--0.186325 0.982488 0.994226 -0.107303
--0.108069 -0.994143 -0.166735 0.986002
-0.150682 -0.988582 -0.835255 0.549863
--0.739089 0.673608 0.080388 0.996764
--0.134292 -0.990942 0.618832 -0.785523
-0.544598 -0.838697 0.504253 0.863556
-0.993993 0.109444 -0.0292451 -0.999572
-0.626724 0.779241 0.188798 0.982016
-0.921461 0.38847 -0.586873 0.809679
-0.999699 -0.0245137 -0.771261 -0.636519
-0.959321 -0.282318 -0.940535 0.339697
--0.102129 0.994771 -0.692455 -0.721461
--0.516578 -0.85624 -0.638765 0.769402
-0.880731 0.473616 0.600806 -0.799395
--0.753953 0.656929 -0.834904 -0.550396
-0.990343 -0.138642 0.226155 -0.974091
--0.974713 0.223462 -0.854967 0.518682
-0.559183 0.829044 -0.939273 -0.34317
-0.952109 -0.305758 0.941918 0.335844
-0.205428 -0.978672 -0.266517 0.96383
-0.972476 0.233002 -0.0455269 -0.998963
--0.527962 -0.849268 0.598808 0.800893
--0.471421 0.881908 0.385233 -0.922819
-0.965511 0.26036 0.356001 0.934486
--0.817497 -0.575933 0.113253 -0.993566
--0.812631 0.582779 0.81539 0.578912
-0.160357 -0.987059 -0.922109 -0.38693
--0.786125 -0.618068 -0.793165 -0.609006
-0.584047 -0.81172 0.895492 -0.445077
--0.51853 0.855059 -0.448217 -0.893925
--0.935414 0.353554 0.00847423 0.999964
-0.688682 0.725063 0.842564 -0.538597
-0.906089 0.423088 0.956145 -0.292895
-0.208568 0.978008 -0.556921 -0.830565
--0.997406 -0.071985 0.604586 0.79654
-0.297575 -0.954699 0.361617 -0.932327
-0.933838 0.357696 0.43641 -0.899748
--0.983536 -0.180712 0.778518 -0.627622
-0.930438 -0.36645 0.983832 0.179092
-0.721541 0.692371 0.47239 0.881389
--0.98767 -0.156548 -0.999934 -0.0114814
-0.789133 -0.614222 -0.986166 0.165762
--0.762441 0.647058 0.308779 -0.951134
-0.376166 0.926552 0.647556 -0.762018
-0.98592 -0.167219 -0.459985 0.887926
-0.149773 -0.98872 -0.781301 0.624155
-0.500993 0.865451 -0.595827 -0.803113
--0.923622 0.383305 -0.0672795 -0.997734
-0.903444 -0.428707 0.948046 -0.318133
-0.741619 0.670822 -0.2915 -0.956571
-0.185392 0.982665 0.979578 0.201066
-0.978467 -0.206402 -0.360965 -0.932579
-0.178161 -0.984001 0.591558 -0.806262
--0.954018 -0.29975 0.562914 -0.826516
-0.99846 0.0554705 0.742978 -0.669316
--0.712365 0.701809 -0.734079 -0.679064
-0.949952 -0.312396 0.937474 -0.348055
-0.214863 -0.976644 -0.944085 0.329702
-0.993774 -0.111419 0.168692 0.985669
-0.301239 -0.953549 0.684589 -0.728929
-0.723676 0.69014 0.717884 0.696163
--0.890197 0.455576 -0.984204 0.177039
-0.898841 -0.438275 0.184211 -0.982887
-0.363725 0.931507 0.890304 0.455367
--0.631223 -0.775601 0.695166 0.718849
--0.928058 0.372435 0.89428 -0.447508
-0.997543 -0.0700545 0.7465 -0.665385
--0.312031 -0.950072 0.95016 -0.311762
-0.980082 -0.198591 0.415348 -0.909663
-0.90248 -0.430731 0.853596 -0.520935
-0.432659 -0.901557 0.72363 0.690188
--0.999087 0.0427128 -0.425765 0.904834
-0.447613 -0.894227 -0.755436 0.655223
-0.253483 0.96734 0.879902 -0.475154
--0.415399 -0.909639 0.413793 0.910371
-0.291779 -0.956486 -0.2343 -0.972164
-0.994394 -0.105742 -0.390898 0.920434
-0.579137 -0.81523 0.484582 -0.874746
-0.0971327 0.995271 -0.954198 0.299176
-0.853047 -0.521835 -0.0777691 0.996971
-0.976373 -0.216092 -0.978012 -0.208548
--0.96001 0.279965 -0.994865 0.101209
-0.72697 -0.686669 0.957827 -0.287346
--0.0386834 -0.999252 -0.746695 0.665166
-0.999786 0.0206717 -0.476372 0.879244
-0.763941 -0.645286 0.519319 -0.85458
-0.72884 0.684684 0.999824 0.0187685
-0.956207 -0.292692 -0.140561 0.990072
--0.466072 -0.884747 -0.208525 0.978017
-0.800589 0.599214 0.150163 0.988661
-0.00895056 -0.99996 0.625466 0.780251
-0.273314 -0.961925 -0.830555 0.556936
--0.985669 -0.16869 -0.322822 -0.94646
--0.430212 -0.902728 0.882116 -0.471031
-0.99545 -0.0952821 -0.993057 0.117634
-0.491341 0.870967 0.455946 -0.890007
-0.735469 0.677558 0.578069 -0.815988
-0.98633 -0.164784 -0.663045 0.74858
-0.674168 -0.738578 0.155751 -0.987796
-0.855377 0.518006 -0.502174 -0.864766
-0.819166 -0.573557 -0.176011 0.984388
--0.374185 -0.927354 0.794471 -0.607302
--0.876722 -0.480997 0.996278 -0.0861972
--0.146221 -0.989252 -0.512029 -0.858968
-0.802217 -0.597032 0.410494 -0.911863
--0.0733447 0.997307 0.490724 0.871315
--0.98887 -0.148785 -0.71509 0.699033
-0.734589 -0.678513 0.678848 0.734279
-0.770558 0.63737 0.999975 -0.00703634
-0.0520296 -0.998646 0.473203 -0.880953
-0.272567 -0.962137 -0.784848 0.619688
-0.890083 0.455799 -0.979455 -0.201661
-0.229636 0.973276 -0.381613 0.924322
--0.462521 -0.886608 -0.573684 0.819077
-0.421026 -0.907048 0.865493 -0.500921
-0.209468 0.977816 -0.630915 -0.775852
--0.925455 -0.378858 0.402042 0.915621
-0.927902 -0.372824 0.874742 -0.484589
-0.486494 0.873684 0.856831 -0.515597
-0.0961359 0.995368 -0.979329 0.202275
-0.966269 0.257534 0.610448 0.792056
-0.878004 -0.478654 0.938214 0.346056
-0.983745 0.179572 0.700732 -0.713424
--0.908978 -0.416843 0.552583 -0.833458
--0.809822 -0.586676 0.990617 -0.136667
-0.996379 0.0850222 -0.611944 0.790901
--0.0835613 -0.996503 -0.489836 -0.871815
--0.198092 -0.980183 0.461126 -0.887335
-0.996769 -0.0803272 -0.186307 -0.982492
--0.792329 -0.610094 -0.937468 0.348072
-0.338297 -0.941039 -0.998903 0.0468301
-0.770447 -0.637505 0.999945 -0.0104693
--0.269296 0.963058 -0.533405 0.84586
--0.74923 0.66231 -0.991148 0.132759
--0.743308 -0.668949 -0.520994 -0.853561
-0.358943 0.93336 0.552348 0.833613
--0.605574 -0.795789 -0.602055 -0.798454
-0.635505 0.772096 0.969224 0.246181
-0.896972 0.442088 -0.237144 0.971475
-0.0405817 -0.999176 -0.607659 -0.794198
-0.804116 -0.594473 0.675514 -0.737347
-0.669834 -0.742511 -0.415889 -0.909415
-0.491544 -0.870853 0.435016 0.900423
-0.763241 0.646114 0.423762 0.905773
--0.968129 -0.250453 0.98347 0.181071
--0.582952 -0.812506 0.827544 0.561401
--0.471906 0.881649 0.435388 -0.900243
-0.801074 0.598566 0.229604 0.973284
--0.843844 -0.536588 0.995936 0.0900615
--0.999862 0.0166195 -0.0911082 -0.995841
--0.518782 0.854907 -0.421729 -0.906722
--0.677191 -0.735807 0.536634 0.843815
--0.869927 0.49318 0.259137 -0.965841
--0.663866 0.747851 -0.942397 -0.334498
-0.308836 0.951115 0.999819 0.0190158
-0.993823 0.110977 0.124707 -0.992194
--0.725047 0.6887 0.841248 -0.540649
-0.921982 -0.387232 -0.473169 -0.880972
--0.0880905 -0.996112 -0.822902 -0.568183
--0.667382 0.744715 -0.687913 -0.725793
--0.966761 -0.25568 0.750223 0.661185
--0.967182 -0.254085 0.848608 0.529023
--0.0394229 0.999223 -0.695474 -0.718551
-0.50658 -0.862193 -0.959443 0.281903
-0.892925 -0.450206 -0.911328 -0.41168
-0.697732 -0.716358 -0.250989 0.96799
-0.986569 0.163343 -0.764945 -0.644095
--0.899001 -0.437946 0.219962 0.975508
-0.996511 0.083467 -0.481565 0.87641
-0.812713 0.582664 0.807124 -0.590381
--0.474069 0.880488 0.641085 -0.76747
-0.850929 -0.525281 0.320915 0.947108
-0.977017 -0.21316 -0.872576 -0.488478
-0.533749 0.845643 0.96993 0.243386
-0.988855 0.148881 -0.721873 0.692026
--0.999265 -0.0383307 -0.769704 -0.638401
-0.37594 -0.926644 0.666022 0.745932
--0.597908 0.801565 0.308696 0.951161
--0.777541 -0.628832 0.444619 -0.89572
--0.814461 0.580219 0.596136 0.802883
-0.584503 -0.811391 0.91908 -0.394071
-0.940967 -0.338499 -0.999678 -0.0253943
-0.978475 0.206367 -0.357578 0.933883
--0.108314 0.994117 -0.142442 -0.989803
--0.371529 0.928421 0.933598 0.358321
-0.10591 0.994376 -0.375272 0.926915
--0.217969 0.975956 -0.99984 0.0178947
--0.370027 -0.929021 0.979114 -0.203312
-0.482702 0.875785 0.994153 -0.107984
-0.991363 0.131149 0.832938 0.553366
-0.938806 0.344447 -0.821108 -0.570773
--0.242736 -0.970092 0.817233 0.576307
--0.925505 -0.378735 0.414094 0.910234
--0.38119 0.924497 0.16093 0.986966
--0.959372 -0.282143 -0.946551 -0.322553
--0.996915 0.0784855 -0.00265049 -0.999996
-0.396303 0.91812 -0.995765 -0.0919385
--0.900401 -0.435061 0.516305 0.856405
-0.9306 0.366037 0.974922 -0.222548
-0.318287 0.947994 0.560101 -0.828424
--0.478273 -0.878211 0.922328 0.386408
--0.76346 0.645856 0.454209 -0.890895
-0.768803 0.639485 0.964352 0.264622
--0.654481 -0.756079 -0.61605 -0.787707
--0.953659 -0.300889 0.657382 -0.753557
-0.665028 0.746819 -0.879265 0.476333
-0.625019 0.78061 -0.0286971 0.999588
--0.637335 0.770587 0.999934 -0.0115237
--0.996249 0.0865345 -0.724495 -0.68928
-0.00489448 -0.999988 0.882592 0.47014
-0.0719755 -0.997406 0.605349 0.79596
--0.512098 0.858927 -0.937494 -0.348001
--0.333889 -0.942612 -0.870368 -0.492401
-0.276258 -0.961084 -0.959793 0.280708
--0.798407 -0.602118 -0.210914 0.977505
-0.999191 0.0402182 -0.636137 -0.771576
-0.984937 0.172916 0.0999912 -0.994988
-0.761668 -0.647967 0.193388 -0.981122
--0.332364 -0.943151 -0.779721 -0.626127
-0.323993 0.946059 -0.0080361 -0.999968
-0.84007 -0.542478 0.704 -0.7102
-0.0128399 -0.999918 0.282859 0.959161
-0.83912 -0.543946 0.569721 -0.821838
--0.982945 0.183902 0.93797 0.346715
-0.919526 0.393029 -0.901139 0.433531
--0.958499 0.285095 -0.804356 0.594147
-0.965479 -0.260482 0.344228 -0.938886
-0.00356338 0.999994 0.93718 -0.348845
-0.987067 0.160306 -0.924124 -0.382093
-0.993821 0.110996 0.126648 -0.991948
--0.946854 0.321663 0.235924 -0.971772
--0.331306 -0.943523 -0.704701 -0.709504
--0.83043 0.557123 -0.826196 -0.563383
--0.933644 -0.358203 0.484666 -0.874699
--0.496545 0.868011 -0.124751 0.992188
-0.959579 -0.281439 -0.967668 0.252228
--0.353386 -0.935478 -0.00950193 0.999955
--0.987928 0.154915 -0.988199 -0.153172
--0.394701 0.91881 -0.964697 0.263363
-0.433011 0.901388 0.696133 -0.717913
-0.150078 0.988674 -0.800164 -0.599781
-0.888018 0.459809 -0.793605 -0.608434
--0.995971 -0.0896735 -0.902455 0.430784
-0.881827 -0.471573 0.401105 0.916032
-0.687236 -0.726434 0.932488 0.3612
-0.741196 0.671288 -0.230753 -0.973012
-0.900079 -0.435726 0.451631 -0.892205
-0.802496 -0.596657 0.45263 -0.891698
-0.999518 0.0310286 -0.999269 0.0382285
--0.71011 -0.704091 -0.91078 0.412893
-0.824477 0.565896 -0.895307 -0.44545
-0.856498 -0.516151 -0.676336 0.736593
--0.71315 0.701011 -0.653653 -0.756794
-0.999652 0.0263833 -0.876163 0.482016
--0.746968 0.66486 -0.889771 0.456407
--0.931278 0.36431 0.917126 0.398598
--0.965687 0.259707 0.418359 -0.908282
--0.547998 0.836479 0.12223 0.992502
--0.367626 -0.929974 0.998561 0.0536229
--0.994831 0.101543 -0.733664 0.679512
--0.637458 0.770485 0.99999 0.00445342
-0.647226 0.762298 0.287693 -0.957723
-0.425402 0.905005 0.999131 0.041685
-0.100109 -0.994976 -0.823679 -0.567056
--0.331221 -0.943553 -0.698284 -0.715821
--0.996785 -0.0801216 -0.166001 0.986126
--0.183962 -0.982933 0.940075 0.340967
--0.765624 0.643288 0.722423 -0.691451
-0.997164 -0.0752631 0.31509 -0.949062
-0.975739 0.218938 -0.996686 -0.0813484
--0.911377 -0.411574 0.00650126 -0.999979
-0.224063 0.974575 -0.821353 0.570421
-0.765804 0.643074 0.741479 0.670976
-0.870798 0.491642 0.424908 0.905236
-0.657168 0.753744 -0.851972 -0.523587
-0.993439 -0.114362 0.449065 0.893499
-0.315398 0.948959 0.782757 -0.622327
-0.91993 0.392084 -0.851924 0.523666
-0.728996 -0.684518 0.999992 0.00399453
-0.285802 0.958289 -0.758395 0.651796
--0.377189 -0.926136 0.559697 -0.828697
-0.988406 -0.151833 -0.893521 -0.449022
-0.73941 0.673255 0.032821 -0.999461
-0.918224 0.396061 -0.993001 0.118106
-0.992068 -0.125703 0.999305 -0.0372738
--0.999936 -0.0112965 0.426958 0.904272
--0.999411 -0.0343252 -0.957784 -0.28749
--0.925381 0.379037 0.384213 -0.923244
-0.557413 -0.830236 -0.845304 0.534285
-0.335487 0.942045 -0.94099 -0.338435
-0.88211 -0.471044 0.345472 0.938429
-0.284357 0.958719 -0.847675 0.530516
--0.500982 0.865457 -0.594844 0.803841
-0.801548 0.59793 0.306054 0.952014
-0.982369 -0.186952 0.999044 0.0437049
-0.982541 0.186046 0.990776 -0.135508
--0.751064 -0.660229 -0.989611 0.143772
--0.36448 -0.931211 0.924275 0.381727
--0.871938 0.489616 0.622063 -0.782967
--0.798625 -0.601829 -0.175368 0.984503
--0.15176 -0.988417 -0.890159 -0.45565
-0.996177 -0.0873575 -0.778907 -0.62714
-0.407585 -0.913167 -0.417542 -0.908658
-0.519407 -0.854527 -0.354305 -0.93513
-0.910417 0.413692 0.236746 -0.971572
-0.956146 -0.29289 -0.120027 0.992771
-0.418274 -0.908321 0.676432 -0.736505
--0.105432 0.994426 -0.419321 -0.907838
-0.994424 0.105451 -0.417626 -0.908619
--0.316842 -0.948478 0.679369 -0.733797
--0.983081 0.183174 0.909735 0.415188
--0.277424 -0.960748 -0.986714 -0.162465
--0.457179 -0.889375 -0.936521 0.350611
--0.850223 -0.526423 0.444823 -0.895618
-0.125778 -0.992058 0.998996 0.0447921
--0.56535 -0.824851 -0.922802 0.385276
-0.844222 0.535994 0.999803 0.0198495
--0.159756 0.987156 -0.943945 -0.330102
-0.835814 0.549013 0.00115142 0.999999
-0.915581 -0.402133 -0.855743 0.517401
--0.983542 0.180681 0.776524 0.630088
-0.995889 0.0905845 -0.938031 0.346553
-0.645884 0.763436 0.450903 -0.892573
-0.336365 -0.941732 -0.968401 0.249398
-0.74409 0.66808 -0.617011 -0.786955
-0.777222 0.629226 0.489482 -0.872014
-0.505698 -0.862711 -0.925673 0.378324
--0.117774 -0.99304 0.723742 0.69007
-0.302661 -0.953098 0.785287 -0.619132
--0.0185408 0.999828 -0.279611 0.960113
--0.503583 0.863947 -0.806297 0.59151
--0.987991 -0.154513 -0.981138 0.193311
-0.0688726 0.997625 0.819916 -0.572484
-0.583675 0.811987 0.874144 0.485668
--0.645205 0.76401 0.528392 0.849
--0.350006 0.936747 -0.362097 -0.93214
-0.795902 0.605426 -0.587077 0.809531
-0.424094 0.905618 0.982715 0.185127
--0.894624 -0.446819 -0.694398 0.719591
-0.727621 0.685979 0.980734 0.195348
-0.724589 -0.689182 0.803471 -0.595343
-0.961333 0.275387 -0.930484 0.366332
-0.457193 -0.889367 -0.935967 -0.352088
--0.944208 -0.329351 -0.543734 0.839258
--0.672377 -0.740209 -0.0858072 0.996312
--0.8248 -0.565425 -0.919257 -0.393658
-0.262142 0.965029 0.178413 -0.983956
--0.170887 -0.985291 -0.105567 0.994412
-0.68993 -0.723876 0.73778 0.675041
--0.310711 0.950504 0.984161 0.17728
--0.552679 -0.833394 -0.424172 -0.905582
--0.547784 0.83662 0.14757 0.989052
--0.395535 0.918451 -0.984609 0.17477
-0.279277 -0.960211 -0.999558 -0.0297249
-0.603616 0.797276 -0.389575 -0.920995
--0.907912 0.419161 0.745051 0.667008
-0.82125 -0.570569 -0.515186 0.857078
-0.993065 -0.117565 0.709054 0.705155
-0.523172 0.852227 0.0789425 0.996879
--0.295248 -0.955421 0.126077 0.99202
-0.0991324 0.995074 -0.875287 0.483603
--0.999739 0.0228255 -0.653316 -0.757086
-0.144078 0.989566 -0.315467 -0.948937
--0.985884 0.16743 -0.440807 0.897602
--0.602057 -0.798453 -0.2034 -0.979096
--0.848998 -0.528396 0.638957 -0.769242
-0.188226 -0.982126 0.996306 0.0858755
-0.00422614 -0.999991 0.91202 0.410147
-0.11847 -0.992958 0.770321 -0.637657
--0.607224 0.794531 -0.753628 0.657302
-0.689048 -0.724716 0.814327 0.580406
--0.598486 -0.801133 0.239306 -0.970944
--0.802549 0.596587 0.460448 -0.887687
--0.32951 -0.944152 -0.557829 -0.829956
-0.301241 0.953548 0.684754 0.728774
-0.981214 0.192922 0.844903 0.534919
--0.262067 0.96505 0.18607 0.982537
--0.841234 0.540672 0.83925 -0.543745
-0.0224078 -0.999749 -0.621124 0.783712
-0.517768 0.855521 -0.525974 0.850501
--0.25253 -0.967589 0.922352 -0.38635
--0.845569 0.533865 0.973179 0.23005
--0.999371 -0.035466 -0.918807 -0.394707
-0.988568 0.150779 -0.840634 0.541604
-0.276476 0.961021 -0.965911 -0.258875
--0.57496 -0.818182 -0.00557964 0.999984
--0.960733 0.277475 -0.987569 -0.157188
-0.775384 0.63149 0.7195 -0.694492
--0.667162 -0.744913 -0.7091 0.705108
--0.7391 -0.673595 0.0787361 -0.996895
-0.374408 -0.927264 0.779663 0.626199
-0.675106 -0.73772 0.279674 -0.960095
-0.754283 0.656549 -0.806175 0.591678
-0.971533 0.236903 0.348266 -0.937396
--0.54206 0.84034 0.738501 0.674253
-0.0701026 -0.99754 0.743285 0.668975
--0.699651 -0.714484 -0.498557 -0.866857
-0.72329 0.690544 0.677871 0.735181
--0.997235 -0.0743177 0.403512 0.914974
--0.792341 0.610079 -0.936806 -0.349849
--0.987858 0.155361 -0.994098 -0.108487
--0.741002 0.671503 -0.202465 0.979289
-0.962959 0.269647 -0.563866 0.825866
-0.700118 -0.714028 -0.554033 0.832495
-0.878169 0.478351 0.925708 -0.378239
-0.032962 0.999457 -0.98798 0.154584
-0.824717 -0.565545 -0.913422 0.407015
--0.691772 0.722116 0.54388 0.839163
--0.568107 -0.822955 -0.745108 0.666943
--0.546923 -0.837183 0.248366 -0.968666
--0.975963 -0.217936 -0.999775 0.0211923
--0.652818 0.757515 -0.429578 0.90303
-0.909405 0.415913 0.464545 -0.885549
-0.96762 0.252413 0.926965 0.375147
--0.759572 0.650423 -0.127966 -0.991779
--0.148273 0.988947 -0.677956 0.735102
--0.349823 -0.936816 -0.380313 0.924858
-0.54927 -0.835645 -0.0295201 0.999564
--0.739478 0.673181 0.0227335 0.999742
--0.464458 0.885595 -0.382445 -0.923978
--0.968852 0.24764 0.994137 0.10813
-0.34735 0.937736 -0.608313 0.793697
-0.339763 0.940511 -0.994067 0.108771
--0.893377 -0.449308 -0.865426 0.501037
-0.11531 0.99333 0.532154 0.846648
--0.974521 -0.224297 -0.807458 -0.589924
--0.510831 0.859681 -0.978439 -0.206535
-0.629042 -0.777372 0.468613 -0.883404
--0.549974 -0.835181 -0.113651 -0.993521
-0.573308 -0.81934 -0.205837 -0.978586
--0.0241569 0.999708 -0.748057 0.663635
-0.673051 0.739596 0.00519691 0.999986
-0.125367 0.99211 0.999994 -0.00344482
--0.29283 0.956165 -0.126269 -0.991996
-0.999307 0.0372274 -0.835363 -0.549699
--0.364483 0.93121 0.924399 -0.381426
--0.965297 -0.261154 0.278098 0.960553
-0.845199 -0.534451 0.986774 0.162102
--0.420303 -0.907384 0.822841 0.568272
-0.333474 0.942759 -0.847847 -0.53024
--0.909693 -0.415282 0.402103 -0.915594
-0.212448 0.977172 -0.834699 -0.550706
--0.931852 -0.362839 0.843039 -0.537852
--0.654557 -0.756012 -0.624009 -0.781417
--0.041082 0.999156 -0.567141 -0.82362
-0.943807 -0.330496 -0.64131 -0.767282
-0.844709 -0.535226 0.997472 0.0710564
-0.950396 -0.311041 0.977423 -0.211292
-0.242227 -0.97022 0.785879 -0.618381
--0.26434 0.96443 -0.048362 0.99883
--0.165963 0.986132 -0.56904 -0.82231
-0.00558336 0.999984 0.848136 -0.529778
--0.996198 0.0871141 -0.763349 -0.645986
--0.983856 0.178962 0.655107 0.755536
-0.444313 -0.895871 -0.468561 0.883431
--0.201405 -0.979508 0.140703 -0.990052
-0.998929 0.0462738 -0.0832627 -0.996528
-0.543195 0.839607 0.640918 -0.76761
--0.888134 -0.459585 -0.80868 -0.588248
--0.510738 -0.859736 -0.980608 0.19598
-0.999341 0.0362917 -0.883097 -0.46919
-0.480905 -0.876772 0.995321 -0.0966251
-0.292105 -0.956386 -0.201073 -0.979576
-0.0892795 0.996007 -0.884708 -0.466145
-0.697515 0.71657 -0.22153 -0.975153
-0.327506 -0.944849 -0.370502 0.928832
--0.960032 -0.27989 -0.995624 -0.093454
--0.486175 -0.873862 0.875079 -0.483979
--0.228168 -0.973622 -0.516167 0.856488
-0.149537 0.988756 -0.766133 -0.642683
-0.661714 -0.749756 -0.998559 -0.0536617
--0.196765 0.980451 0.576644 0.816996
--0.934416 0.356182 0.285561 0.958361
--0.88866 0.458566 -0.870687 0.491838
-0.870027 -0.493004 0.278584 -0.960412
--0.317494 -0.94826 0.627372 -0.77872
--0.68717 0.726497 0.935759 0.352641
-0.47105 -0.882106 0.346123 -0.938189
--0.596693 -0.80247 0.448671 -0.893697
-0.53841 0.842683 0.953459 -0.301522
-0.726212 0.687471 0.920352 0.391091
-0.89037 -0.455238 -0.990208 0.139602
--0.839664 0.543107 0.648923 -0.760854
--0.78334 -0.621594 -0.449911 -0.893073
--0.794526 0.607231 -0.754167 -0.656683
-0.11348 0.99354 0.368102 0.929785
--0.451088 0.89248 -0.947493 0.319777
--0.821773 0.569814 -0.591608 0.806225
--0.772541 0.634965 0.949635 0.313357
-0.810797 -0.585328 0.954327 0.298764
-0.909601 0.415482 0.422132 -0.906535
--0.795076 0.60651 -0.691596 -0.722284
--0.123283 -0.992372 0.97873 0.205153
-0.66306 -0.748566 -0.972899 -0.23123
--0.675072 -0.737752 0.275171 0.961395
-0.625112 -0.780535 -0.016762 -0.99986
--0.490126 -0.871652 0.575235 -0.817988
-0.441601 0.897211 -0.184121 -0.982904
--0.985993 -0.166785 -0.49858 -0.866844
--0.736828 0.67608 0.40368 0.9149
--0.821088 0.570802 -0.490634 0.871366
--0.777494 0.62889 0.451345 0.892349
--0.517881 -0.855453 -0.51469 0.857376
-0.563928 -0.825824 -0.975188 -0.221377
-0.40254 -0.915402 -0.831872 -0.554968
--0.872312 -0.488949 0.68005 0.733166
--0.96214 -0.272557 -0.784196 0.620513
-0.388423 0.921481 -0.582727 -0.812668
--0.842208 0.539153 0.923229 -0.38425
-0.355384 0.934721 0.202705 0.97924
--0.567385 0.823453 -0.800644 -0.599141
--0.982273 -0.187454 0.999972 0.00742105
-0.741943 0.670463 -0.337424 -0.941353
-0.0291898 -0.999574 -0.975415 0.220376
-0.652933 0.757415 -0.443271 -0.896387
--0.996618 -0.0821694 -0.363696 0.931518
-0.996429 -0.0844309 -0.563955 -0.825805
--0.970508 0.241069 0.706641 0.707573
-0.865816 -0.500363 -0.535848 -0.844315
--0.716172 0.697924 -0.27678 -0.960933
--0.64578 0.763523 0.46297 0.886374
-0.995439 -0.0953996 -0.991599 0.129353
-0.146113 -0.989268 -0.502647 0.864492
-0.837312 0.546725 0.27128 0.962501
-0.588623 -0.808407 0.994636 0.10344
--0.828471 0.560031 -0.969432 -0.245359
-0.950152 -0.311788 0.957818 -0.287375
--0.993149 -0.116853 0.656762 -0.754098
--0.868321 -0.496003 -0.0626715 0.998034
--0.988845 0.14895 -0.726658 -0.686999
-0.810782 -0.585348 0.955046 0.296457
-0.996087 -0.088377 -0.838904 -0.54428
-0.675148 -0.737682 0.28507 -0.958507
--0.920626 -0.390445 -0.745728 0.66625
-0.488738 -0.872431 0.697599 0.716489
--0.403502 -0.914979 -0.769082 0.63915
-0.612166 0.79073 -0.995604 -0.0936587
--0.708021 0.706191 -0.991645 -0.128998
-0.686406 -0.727218 0.967582 0.252559
--0.941895 -0.335908 -0.955159 0.296092
--0.911711 -0.410833 -0.0746907 -0.997207
-0.209373 0.977836 -0.62337 -0.781927
-0.862231 0.506516 -0.95733 0.288996
--0.400989 -0.916083 -0.913521 0.406792
-0.983531 -0.180741 0.780363 0.625327
-0.179336 0.983788 0.683409 0.730035
-0.324359 0.945934 -0.0466909 -0.998909
-0.964759 -0.263136 0.0763085 -0.997084
--0.411208 -0.911542 -0.0336282 0.999434
-0.754146 0.656707 -0.818374 0.574685
--0.507284 0.861779 -0.979252 0.202646
-0.961533 0.274689 -0.901442 0.432901
-0.813356 0.581767 0.737162 -0.675716
-0.778409 0.627757 0.317032 -0.948415
-0.654924 0.755694 -0.66121 -0.750201
-0.949065 -0.315081 0.803104 -0.595839
--0.996454 -0.0841451 -0.540044 0.841637
-0.857894 0.513827 -0.848908 -0.52854
--0.979381 0.202021 0.0781262 -0.996943
-0.823505 0.567309 -0.806137 -0.591729
--0.924858 -0.380312 0.253759 0.967267
--0.675812 0.737074 0.370165 -0.928966
-0.87042 0.49231 0.354206 0.935167
--0.904965 0.425485 0.999471 0.0325084
-0.909957 -0.414702 0.342881 0.939379
-0.854914 -0.51877 -0.422943 0.906156
-0.754465 0.65634 -0.789453 0.613811
-0.884962 0.465664 -0.253393 -0.967363
--0.238946 0.971033 0.536302 -0.844026
-0.995172 -0.0981451 -0.918884 0.394529
--0.67712 -0.735872 0.52846 0.848958
-0.616782 -0.787134 -0.881726 -0.471763
-0.304332 0.952566 0.881297 0.472562
--0.211103 -0.977464 -0.751256 -0.660011
--0.968403 -0.249391 0.997384 0.0722857
-0.471488 0.881872 0.392226 0.919869
-0.923759 -0.382975 -0.0315838 -0.999501
--0.0782035 -0.996937 0.0256384 -0.999671
-0.686925 0.726729 0.947117 -0.320889
--0.728955 -0.684562 0.999998 0.00204541
-0.595719 -0.803193 0.553515 0.832839
--0.974745 0.22332 -0.862439 0.50616
--0.512872 -0.858465 -0.902325 0.431056
-0.951802 -0.306712 0.970793 0.239919
--0.898941 -0.438069 0.206629 0.978419
-0.312844 -0.949804 0.920005 0.391906
-0.806683 -0.590985 0.9226 -0.385757
-0.858892 0.512157 -0.935062 -0.354483
-0.756422 -0.654084 -0.573861 -0.818952
--0.670658 0.741766 -0.312499 -0.949918
-0.41675 0.909021 0.544031 0.839065
--0.948339 0.317258 0.646523 -0.762894
--0.0934974 -0.99562 -0.998118 -0.0613255
--0.0847729 0.9964 -0.591967 0.805962
-0.723225 -0.690612 0.670982 -0.741474
--0.497964 -0.867198 -0.284628 -0.958638
-0.444429 0.895814 -0.47996 -0.87729
-0.998925 -0.0463607 -0.0745844 0.997215
--0.0368556 -0.999321 -0.855228 0.518251
--0.976059 0.217505 -0.99786 -0.0653938
-0.989552 -0.144176 -0.324896 -0.94575
--0.710417 0.703781 -0.891928 -0.452178
--0.43081 0.902443 0.848988 0.528412
-0.43849 0.898736 0.160595 -0.98702
-0.837892 0.545836 0.371624 0.928383
-0.642258 -0.766488 0.80857 0.5884
--0.585828 0.810436 0.970919 -0.239408
-0.983052 0.183329 0.916183 -0.40076
--0.814368 -0.580349 0.608936 -0.793219
--0.991386 0.130971 0.842751 -0.538304
--0.5911 -0.806599 0.917001 -0.398885
--0.951267 0.308369 0.997679 0.0680876
-0.937101 -0.349059 -0.454353 0.890822
--0.389278 0.92112 -0.655491 0.755203
--0.810838 0.585271 0.952205 0.305461
--0.995311 -0.0967315 -0.96548 -0.260479
-0.753101 0.657905 -0.899024 0.4379
--0.308203 0.951321 0.996338 -0.0855017
--0.805322 -0.592837 0.810448 0.58581
-0.999987 0.00506319 0.874534 0.484963
--0.498959 -0.866626 -0.392574 -0.91972
-0.203283 -0.97912 -0.0506235 0.998718
--0.949933 0.312453 0.935383 -0.353637
--0.816178 0.5778 0.335433 0.942064
-0.958363 0.285554 -0.774962 -0.632008
--0.471232 0.882009 0.365412 -0.930846
-0.907494 0.420064 0.807625 -0.589697
-0.170121 0.985423 -0.182505 0.983205
--0.429835 0.902907 0.900999 0.43382
-0.386333 -0.92236 -0.385092 0.922878
--0.380382 -0.924829 0.246409 -0.969166
--0.295166 0.955446 0.117554 -0.993066
-0.374682 0.927153 0.760779 -0.649011
-0.998478 0.0551529 0.721317 -0.692605
--0.988121 0.153677 -0.961298 -0.275511
--0.192131 0.981369 0.885254 0.465107
-0.683555 -0.729899 0.990764 -0.135597
-0.454323 -0.890837 -0.999302 -0.0373563
--0.368788 0.929513 0.997451 0.0713489
--0.980261 0.197705 0.495754 -0.868463
--0.333737 0.942666 -0.862271 0.506447
-0.967735 -0.251971 0.943124 -0.332442
-0.871524 -0.490353 0.553735 -0.832693
-0.0163014 0.999867 -0.0593784 -0.998236
--0.144622 0.989487 -0.367147 0.930163
--0.419675 0.907674 0.781624 -0.62375
-0.0804937 -0.996755 -0.20269 0.979243
--0.759904 0.650036 -0.0772441 -0.997012
--0.734144 -0.678994 0.725431 -0.688295
--0.655737 0.75499 -0.73792 0.674888
--0.763185 0.64618 0.415962 -0.909382
--0.222125 0.975018 -0.917825 -0.396986
-0.605925 0.795522 -0.636667 -0.771139
-0.523074 -0.852287 0.0674918 -0.99772
--0.382072 -0.924133 0.0661177 -0.997812
-0.353531 0.935423 0.00602603 0.999982
-0.505235 0.862982 -0.904061 -0.427403
-0.0414668 -0.99914 -0.535008 -0.844847
--0.861644 0.507513 -0.984287 -0.176577
--0.99636 0.0852407 -0.629142 -0.77729
--0.905546 -0.424248 0.985718 -0.168404
-0.797117 0.603825 -0.413669 0.910427
-0.212649 -0.977129 -0.845859 0.533406
-0.0540506 -0.998538 0.640618 -0.76786
-0.762601 0.646869 0.332179 0.943216
--0.0599608 0.998201 0.960082 -0.279719
-0.96955 0.244894 0.924247 -0.381795
-0.993429 -0.114451 0.457008 0.889463
-0.861992 0.506921 -0.969861 0.243659
--0.585191 0.810896 0.949132 -0.314878
--0.951193 0.308598 0.999029 0.0440599
--0.765536 0.643393 0.712883 -0.701283
--0.361987 0.932183 0.790471 -0.6125
--0.677666 0.73537 0.589886 -0.807487
--0.655787 -0.754946 -0.742375 -0.669984
--0.870032 -0.492996 0.279505 0.960144
--0.383077 -0.923716 -0.0426002 -0.999092
--0.805283 0.592891 0.806549 -0.591167
-0.981605 -0.190922 0.935685 -0.352836
--0.345964 0.938248 -0.718574 -0.69545
-0.0804276 -0.99676 -0.196198 0.980564
--0.625776 0.780003 0.0683466 -0.997662
--0.837961 -0.54573 0.383441 0.923565
-0.841678 -0.53998 0.881064 -0.472997
-0.337459 0.94134 -0.990774 -0.135525
--0.184165 0.982895 0.946897 -0.321538
-0.802669 0.596425 0.478298 0.878198
--0.641864 0.766819 0.837797 0.545982
-0.974413 0.224764 -0.778248 -0.627957
--0.994308 -0.106541 -0.315713 -0.948855
-0.574163 -0.818741 -0.102707 -0.994712
--0.787021 -0.616927 -0.872884 -0.487928
--0.728248 -0.685314 0.994464 0.105079
--0.67792 -0.735136 0.617461 0.786601
--0.658564 0.752525 -0.933846 0.357677
--0.112053 -0.993702 0.231228 0.9729
-0.774462 -0.632621 0.812841 0.582486
--0.822799 0.568332 -0.726545 0.687119
--0.225047 -0.974348 -0.759684 0.650292
-0.988269 -0.152723 -0.93027 -0.366875
-0.020636 -0.999787 -0.473229 0.88094
-0.514745 0.857344 -0.787599 0.616189
--0.658294 0.752761 -0.920457 0.390844
-0.924515 0.381147 0.165503 0.986209
--0.97929 -0.202464 0.0329708 0.999456
-0.999994 0.00332638 0.945184 0.326538
--0.616453 -0.787392 -0.900644 0.434557
-0.188124 0.982145 0.997144 -0.0755183
--0.807251 0.590209 0.955376 -0.295392
--0.755444 -0.655213 -0.689392 0.724388
--0.98658 -0.16328 -0.769041 -0.639199
-0.523371 0.852105 0.102208 0.994763
-0.983807 -0.179231 0.675577 0.73729
-0.737609 0.675228 0.29546 -0.955355
-0.90063 0.434587 0.560572 0.828106
-0.500712 0.865614 -0.569423 -0.822045
--0.79952 0.600639 -0.027413 -0.999624
-0.463709 0.885988 -0.45912 0.888374
--0.985158 -0.171651 -0.0282387 -0.999601
--0.914065 0.405568 -0.606387 0.79517
--0.366676 -0.930349 0.987888 0.155168
--0.706179 0.708033 -0.991415 0.130755
-0.969594 0.244721 0.917291 -0.398218
--0.370551 0.928812 0.966114 0.258114
-0.999233 0.0391475 -0.715012 -0.699112
--0.822698 0.568479 -0.714175 0.699967
-0.964484 0.264141 -0.0277264 0.999616
-0.798634 -0.601818 -0.173968 -0.984751
-0.35383 -0.93531 0.0379194 -0.999281
-0.0403106 -0.999187 -0.628978 -0.777423
-0.697353 -0.716728 -0.199443 0.979909
--0.927809 -0.373055 0.862362 0.506293
-0.877396 -0.479766 0.974422 0.224728
-0.0804603 0.996758 -0.199414 -0.979915
--0.715584 -0.698527 -0.356588 0.934262
--0.956361 0.292189 -0.192478 0.981301
-0.0771443 0.99702 0.131497 -0.991317
--0.10889 0.994054 -0.0848316 -0.996395
--0.466886 -0.884318 -0.117822 0.993035
--0.650725 -0.759314 -0.167198 -0.985923
-0.733578 -0.679606 0.780259 0.625456
-0.316229 0.948683 0.725357 -0.688373
-0.306444 -0.951889 0.963671 -0.267092
-0.599892 -0.800081 0.0659826 0.997821
--0.407324 0.913284 -0.443327 -0.89636
-0.689672 -0.724122 0.761387 0.648298
-0.992934 0.118665 0.782681 -0.622423
--0.222891 -0.974843 -0.88387 0.467732
-0.96137 0.275259 -0.925499 0.37875
--0.957828 -0.287342 -0.644276 -0.764793
-0.599102 0.800673 0.16404 -0.986454
--0.0964242 -0.99534 -0.973059 0.230555
-0.879846 -0.475259 0.738746 0.673984
-0.384944 0.92294 -0.24235 -0.970189
-0.960214 0.279264 -0.999596 -0.0284177
-0.897776 -0.440451 -0.0570219 -0.998373
--0.841365 -0.540468 0.852181 0.523247
-0.852347 0.522977 0.0561219 -0.998424
-0.451923 -0.892057 -0.973229 0.229838
--0.803205 0.595703 0.555185 -0.831727
-0.556911 -0.830572 -0.811497 0.584357
--0.324212 -0.945985 -0.0311167 -0.999516
-0.967451 -0.253059 0.899868 -0.436163
-0.090151 -0.995928 -0.922061 0.387044
-0.916831 -0.399275 -0.973236 0.229809
--0.869061 -0.494705 0.0866092 0.996242
-0.204782 0.978808 -0.202331 -0.979317
-0.468813 0.883297 0.0998356 0.995004
-0.586396 -0.810025 0.985304 -0.17081
-0.769967 -0.638084 0.996335 -0.0855363
-0.365632 -0.93076 0.964305 -0.264793
--0.120331 -0.992734 0.875627 0.482988
-0.848825 0.528674 0.663817 -0.747895
--0.773934 -0.633267 0.858549 -0.512731
--0.866453 -0.499259 -0.424159 0.905588
--0.828576 0.559876 -0.964671 -0.263457
--0.992323 0.123676 0.986091 0.166209
--0.801086 -0.598549 0.231677 0.972793
-0.730474 0.682941 0.975871 -0.218346
--0.988032 -0.154247 -0.975577 0.219656
-0.595315 0.803493 0.594721 -0.803932
--0.109184 0.994022 -0.0553059 -0.998469
--0.0582577 0.998302 0.898652 -0.438663
-0.905653 0.424021 0.981185 -0.193069
--0.959452 0.281872 -0.955301 0.295636
--0.33473 0.942314 -0.910755 0.412948
-0.999834 -0.0182204 -0.248704 -0.96858
-0.959592 0.281396 -0.96878 -0.247923
--0.778115 0.628122 0.361184 0.932495
-0.435594 -0.900143 0.464662 0.885488
--0.938377 0.345613 -0.744056 0.668117
-0.0883607 0.996089 -0.838009 -0.545656
--0.992746 -0.120228 0.870601 -0.491991
--0.820373 0.571828 -0.378143 0.925747
-0.999998 0.00179748 0.983889 0.178782
--0.958185 0.28615 -0.734236 0.678895
-0.995841 -0.0911105 -0.955019 -0.296544
-0.203022 0.979174 -0.0239867 -0.999712
--0.701965 -0.712211 -0.748805 -0.66279
-0.510155 -0.860083 -0.991637 -0.129059
-0.781115 0.624387 -0.109411 -0.993997
--0.919558 0.392954 -0.897579 -0.440854
--0.91522 -0.402954 -0.80597 -0.591957
-0.332933 0.94295 -0.816034 -0.578004
-0.960522 0.278205 -0.996655 0.0817222
-0.591817 0.806072 0.877928 -0.478792
--0.803796 -0.594905 0.634925 0.772574
--0.987555 -0.157276 -0.996375 -0.0850674
-0.00837708 -0.999965 0.669161 0.743118
--0.180867 -0.983508 0.788293 0.6153
-0.951477 0.30772 0.990727 -0.13587
-0.808451 -0.588563 0.99538 -0.0960119
-0.997376 -0.0724021 0.570761 -0.821117
--0.362629 0.931934 0.830717 -0.556695
-0.981739 -0.190234 0.958115 -0.286382
--0.936526 0.350598 -0.302496 0.953151
--0.756792 -0.653656 -0.526693 0.850055
-0.97811 -0.20809 -0.515671 -0.856787
--0.99734 0.0728966 0.52936 -0.848398
-0.999447 0.0332615 -0.982905 -0.184112
-0.238749 -0.971081 0.519062 -0.854737
-0.910687 -0.413098 0.172956 0.98493
-0.0551804 0.998476 0.723222 0.690616
--0.353768 0.935333 0.0313726 -0.999508
--0.510882 0.859651 -0.977198 -0.212331
-0.0533856 0.998574 0.5881 0.808788
-0.0713304 -0.997453 0.655525 0.755173
--0.430434 0.902622 0.870277 0.492562
--0.966939 0.255006 0.794449 -0.60733
--0.760469 0.649375 0.00966002 -0.999953
-0.556742 0.830686 -0.799429 -0.60076
--0.914514 -0.404555 -0.690606 -0.723231
-0.444121 -0.895967 -0.449504 0.893279
--0.174813 -0.984602 0.288691 0.957422
-0.0770031 -0.997031 0.145526 0.989354
-0.675851 -0.737039 0.375 -0.927025
-0.690202 -0.723616 0.711857 0.702325
--0.655033 0.7556 -0.671951 0.740596
--0.783358 0.621571 -0.4525 0.891765
--0.717809 -0.69624 -0.0455631 0.998961
-0.861612 0.507567 -0.985383 0.170356
--0.936617 0.350355 -0.327139 0.944976
--0.990095 -0.1404 0.0505599 0.998721
-0.8961 0.443853 -0.422536 0.906346
-0.0131363 -0.999914 0.254303 0.967125
--0.998723 0.0505127 0.334458 0.94241
--0.994835 -0.101508 -0.736069 -0.676906
--0.663541 0.74814 -0.956049 -0.293206
--0.96635 0.257231 0.634974 -0.772534
-0.999588 0.028718 -0.963931 0.266153
--0.688058 0.725656 0.885723 0.464214
-0.0190775 0.999818 -0.330723 -0.943728
-0.922174 -0.386775 -0.42886 -0.903371
--0.762517 -0.646968 0.31998 0.947424
--0.941912 -0.33586 -0.953639 0.300952
--0.138631 0.990344 0.227267 0.973832
-0.605338 -0.795969 -0.578085 0.815976
--0.402192 0.915556 -0.852406 -0.522881
--0.834235 -0.551409 -0.281888 0.959447
--0.382348 0.924018 0.036308 0.999341
--0.288684 -0.957424 -0.531091 0.847315
--0.00640579 -0.999979 0.801747 -0.597663
-0.723478 -0.690347 0.69768 -0.716409
--0.986031 -0.166561 -0.518161 -0.855283
--0.983462 0.181117 0.803674 0.59507
--0.632587 -0.774489 0.810314 0.585996
--0.789171 0.614173 -0.987179 0.159618
--0.547728 0.836656 0.154168 0.988045
-0.99957 0.0293332 -0.978477 0.206354
-0.236451 -0.971643 0.304356 -0.952558
-0.975678 -0.219209 -0.994043 0.108989
-0.846353 0.532623 0.929021 -0.370027
-0.118956 0.9929 0.800578 0.599229
--0.996791 0.0800519 -0.159109 -0.987261
-0.522011 0.852939 -0.0571719 0.998364
-0.994376 -0.105903 -0.375939 0.926644
-0.991475 -0.1303 0.87719 -0.480144
--0.432734 -0.901522 0.717882 -0.696165
--0.58058 0.814203 0.631114 -0.77569
--0.924594 0.380954 0.186066 -0.982537
--0.406666 -0.913577 -0.506702 0.862121
--0.191359 -0.98152 0.919078 -0.394075
--0.398523 -0.917158 -0.988784 0.149352
--0.728365 -0.685189 0.99612 0.0880107
--0.489098 0.872229 0.667443 0.744661
-0.0673369 0.99773 0.897995 -0.440005
-0.779547 -0.626344 0.140678 0.990055
-0.398197 0.9173 -0.993465 0.114141
--0.94056 -0.339628 -0.995527 -0.0944818
--0.995697 0.0926685 -0.989561 -0.144112
--0.999852 0.0172142 -0.150136 -0.988665
--0.0536432 0.99856 0.60877 -0.793346
-0.0990448 0.995083 -0.879508 0.475883
--0.711487 0.702699 -0.813036 -0.582213
-0.219215 -0.975677 -0.993977 -0.10959
--0.277633 -0.960687 -0.990022 -0.140915
-0.99431 0.106521 -0.31764 -0.948211
-0.426236 0.904612 0.998725 -0.0504725
-0.955832 0.293912 -0.0134 -0.99991
-0.990758 0.135641 0.506471 0.862257
-0.979744 -0.200253 0.255891 -0.966706
-0.997013 0.0772367 0.1223 0.992493
-0.766285 0.642501 0.78958 0.613648
-0.315377 0.948966 0.784138 -0.620587
--0.999996 0.00282394 0.960391 -0.278656
--0.148005 0.988987 -0.657786 0.753205
-0.414102 0.910231 0.280275 0.95992
--0.991103 0.1331 0.70865 -0.70556
-0.955639 -0.294539 0.0521431 0.99864
--0.981532 -0.191298 0.921486 0.388412
-0.865663 -0.500627 -0.561384 -0.827556
--0.65771 -0.753271 -0.88737 -0.461059
-6.15384e-05 1 0.999981 -0.0061538
--0.804141 -0.594438 0.678684 0.73443
--0.0370805 0.999312 -0.843348 -0.537367
--0.872259 -0.489044 0.672013 0.740539
-0.538941 -0.842344 0.932608 0.360891
-0.597007 0.802236 0.413383 -0.910557
-0.101269 -0.994859 -0.752147 -0.658995
--0.792989 0.609235 -0.894339 -0.447391
--0.66878 -0.74346 -0.54029 0.841479
--0.084128 0.996455 -0.538601 0.842561
--0.56582 -0.824529 -0.899383 0.437162
-0.673566 -0.739127 0.0747439 -0.997203
--0.640352 -0.768082 0.928452 -0.371452
--0.92851 0.371308 0.941874 -0.335966
--0.897074 -0.44188 -0.214518 0.97672
--0.554892 -0.831923 -0.647128 -0.762382
--0.731654 -0.681676 0.923717 -0.383076
--0.727579 -0.686024 0.979507 0.201411
--0.43692 -0.8995 0.329618 -0.944114
--0.853341 -0.521353 -0.133952 -0.990988
--0.672419 -0.740171 -0.0801052 0.996786
-0.243124 -0.969995 0.839613 -0.543185
-0.225622 -0.974215 -0.72003 -0.693943
-0.674507 0.738269 0.200829 0.979626
-0.923329 0.38401 -0.143156 0.9897
-0.980191 -0.198057 0.464323 -0.885666
--0.766769 -0.641923 0.833502 0.552516
-0.995475 0.095019 -0.995818 -0.0913547
--0.999976 0.00689014 0.77187 -0.635781
--0.985128 -0.171824 -0.0106773 -0.999943
--0.583159 -0.812358 0.841539 0.540196
--0.00695168 -0.999976 0.767943 -0.640518
-0.690043 0.723768 0.727142 -0.686487
-0.833423 -0.552635 -0.419427 -0.907789
--0.482969 0.875638 0.990397 0.138255
-0.981554 -0.191186 0.925885 -0.377805
-0.940903 0.338675 -0.999978 0.00664762
-0.822226 0.56916 -0.653815 -0.756655
--0.661885 0.749605 -0.997081 -0.0763473
--0.377465 -0.926024 0.534684 -0.845052
--0.636315 0.771429 0.989673 -0.143344
-0.992579 0.121602 0.930134 -0.367221
--0.938697 -0.344743 -0.802724 -0.596351
-0.999986 -0.00524409 0.865619 -0.500703
--0.966771 0.255644 0.752695 -0.658369
-0.689746 0.724051 0.754666 -0.656109
--0.559247 -0.829001 -0.941893 -0.335913
-0.881608 0.471982 0.443072 -0.896486
--0.0051285 -0.999987 0.871348 -0.490665
--0.501341 0.86525 -0.627604 0.778532
--0.506244 -0.86239 -0.947757 -0.318993
--0.736712 0.676206 0.419289 0.907853
-0.7174 0.696661 -0.104058 0.994571
--0.954373 0.298617 0.461051 0.887373
--0.996139 -0.087786 -0.805152 0.593069
-0.394872 0.918736 -0.969431 -0.245364
--0.876324 0.481721 0.999993 0.00368955
-0.707457 0.706757 -0.998776 0.0494659
-0.305788 0.9521 0.942962 0.332901
-0.872985 -0.487748 0.774211 -0.632928
--0.575497 -0.817804 0.0601273 0.998191
-0.595123 -0.803634 0.613708 0.789533
--0.493805 -0.869573 0.189147 -0.981949
-0.194782 -0.980847 0.728966 0.684549
-0.0518729 -0.998654 0.459324 -0.888269
-0.999923 -0.0124177 0.32309 -0.946368
-0.0036656 -0.999993 0.933565 0.358407
-0.387027 -0.922068 -0.453409 0.891303
-0.829231 0.558906 -0.927315 0.374283
-0.747174 0.664628 -0.903477 -0.428636
--0.999946 -0.010347 0.510766 0.85972
--0.958809 0.284052 -0.864087 0.503342
-0.660809 0.750554 -0.997759 -0.0669135
-0.93508 0.354437 0.10269 -0.994713
--0.957306 0.289077 -0.495945 0.868354
--0.830726 -0.556682 -0.795062 0.606528
-0.388338 0.921517 -0.575143 -0.818053
-0.775015 0.631943 0.758818 -0.651303
--0.469632 -0.882862 0.191474 0.981498
-0.919513 -0.393058 -0.90254 -0.430606
--0.935335 0.353763 0.0308228 0.999525
--0.523624 0.85195 0.131619 -0.9913
--0.411628 0.911352 0.0125021 -0.999922
--0.917463 -0.397822 -0.997306 -0.0733528
-0.245326 -0.969441 0.940337 -0.340245
-0.490043 -0.871698 0.582957 0.812503
-0.00321314 -0.999995 0.948821 0.315814
-0.252015 0.967723 0.941586 -0.336774
-0.962763 -0.270347 -0.622434 -0.782672
-0.953077 -0.302727 0.789568 0.613664
-0.692011 0.721887 0.515832 -0.85669
--0.775159 -0.631767 0.743831 -0.668368
-0.323917 -0.946086 5.60934e-05 1
-0.286016 -0.958225 -0.743658 -0.668561
--0.770653 0.637255 0.999759 0.0219709
--0.928009 -0.372557 0.888295 0.459274
-0.274094 -0.961703 -0.872973 0.487769
-0.634425 0.772984 0.925466 0.378832
--0.702688 0.711499 -0.812113 0.5835
-0.764789 -0.64428 0.626957 -0.779054
--0.0397206 0.999211 -0.673756 -0.738954
-0.710012 -0.70419 -0.916447 -0.400157
--0.550277 0.834982 -0.149614 0.988744
--0.776209 0.630475 0.6228 0.782381
-0.913509 -0.406819 -0.492151 0.87051
-0.28541 -0.958405 -0.78438 -0.620281
-0.995791 -0.091651 -0.969701 -0.244296
-0.729641 0.683831 0.99518 -0.0980624
-0.826855 -0.562416 -0.999192 0.0401886
--0.54857 -0.836104 0.0541027 -0.998535
-0.9397 0.342 -0.940416 -0.340025
--0.574424 0.818558 -0.0709677 -0.997479
-0.999563 -0.0295503 -0.982727 -0.185059
--0.69849 0.71562 -0.351756 0.936092
-0.852653 -0.522478 -0.00239132 0.999997
-0.216571 -0.976267 -0.98706 0.160351
-0.281515 0.959557 -0.965636 0.259898
--0.519736 -0.854327 -0.318082 0.948063
-0.999335 -0.0364532 -0.8754 0.4834
-0.530446 0.847719 0.80446 0.594007
--0.753976 -0.656902 -0.832939 0.553365
-0.717866 0.696182 -0.0374347 0.999299
-0.124381 -0.992235 0.995397 -0.0958348
--0.865711 0.500544 -0.553412 -0.832908
-0.872419 -0.488758 0.695931 -0.718109
-0.536452 0.843931 0.997263 -0.0739422
-0.989869 -0.141983 -0.10906 -0.994035
--0.230915 -0.972974 -0.257257 0.966343
--0.312007 0.95008 0.950944 0.309364
--0.594548 0.80406 0.668589 0.743632
--0.803469 -0.595346 0.591544 0.806272
--0.936937 -0.349498 -0.412099 -0.911139
-0.144075 0.989567 -0.315156 -0.94904
-0.939234 -0.343276 -0.885701 0.464256
-0.947609 -0.319432 0.456203 -0.889876
-0.534188 0.845366 0.981253 0.192725
--0.060931 -0.998142 0.982695 0.18523
-0.914345 -0.404937 -0.659773 0.751465
--0.188321 0.982107 0.995423 0.0955717
--0.611752 -0.79105 -0.989346 -0.145587
--0.840152 -0.542351 0.714669 0.699463
--0.512847 0.85848 -0.903615 -0.428346
-0.998925 -0.0463565 -0.075008 0.997183
--0.855812 -0.517288 -0.572883 -0.819637
--0.256128 -0.966643 0.718823 -0.695193
-0.827516 -0.561442 -0.997001 -0.0773921
--0.690355 0.723471 0.6969 0.717168
-0.855445 -0.517894 -0.513442 0.858124
--0.909745 -0.415167 0.3905 -0.920603
--0.663523 0.748156 -0.956745 -0.290927
-0.892795 0.450462 -0.922775 0.385338
-0.413202 0.910639 0.184167 0.982895
--0.997173 0.0751425 0.326539 -0.945184
-0.558011 -0.829834 -0.881599 0.471999
--0.813529 -0.581525 0.716741 -0.69734
--0.833226 0.552932 -0.451497 -0.892273
-0.999668 0.0257574 -0.844285 0.535894
--0.887854 -0.460126 -0.771348 -0.636413
-0.730393 0.683027 0.978392 -0.206757
--0.336375 0.941728 -0.968654 0.248414
-0.897841 -0.440321 -0.0424571 -0.999098
--0.18021 -0.983628 0.745465 0.666545
-0.644294 -0.764778 0.62552 0.780208
-0.565083 0.825034 -0.934803 0.355166
--0.506916 -0.861996 -0.969707 -0.244272
-0.366245 -0.930518 0.979652 -0.200703
--0.395595 0.918425 -0.985728 0.168348
--0.829507 0.558496 -0.90768 -0.419664
--0.0419272 -0.999121 -0.495527 0.868593
--0.827493 -0.561476 -0.997305 0.0733696
-0.949251 0.31452 0.836911 0.547338
--0.506649 0.862152 -0.961686 0.274153
-0.906393 -0.422436 0.932607 0.360894
-0.96281 0.270178 -0.608571 0.793499
-0.879577 -0.475757 0.77564 0.631176
--0.640497 -0.767961 0.92127 -0.388923
-0.94843 -0.316986 0.668157 -0.744021
--0.263024 0.964789 0.0878847 0.996131
--0.945632 -0.325239 -0.139275 0.990254
--0.994432 -0.105381 -0.424032 -0.905647
--0.54729 -0.836943 0.205718 -0.978611
--0.697748 -0.716343 -0.253063 -0.96745
--0.314937 -0.949113 0.812063 -0.58357
-0.608633 0.793452 -0.857793 -0.513996
--0.983797 0.179287 0.679736 0.733457
--0.295722 0.955274 0.175092 -0.984552
--0.945854 -0.324593 -0.0713342 0.997452
--0.988088 0.153887 -0.966946 -0.254981
-0.702104 -0.712074 -0.761639 0.648002
--0.469139 -0.883124 0.136437 0.990649
-0.187448 -0.982275 0.999977 0.00678565
-0.316837 -0.94848 0.679754 0.73344
--0.784122 0.620606 -0.558602 0.829436
--0.63045 -0.77623 0.620212 0.784434
-0.961568 -0.274568 -0.895929 -0.444197
-0.932444 0.361315 0.744288 -0.667858
--0.953195 0.302355 0.76503 0.643994
--0.128221 0.991746 0.957922 0.287029
--0.975262 0.221053 -0.955851 0.29385
-0.342054 0.93968 -0.938462 0.345383
-0.662943 -0.74867 -0.976399 -0.215973
--0.995294 -0.0969047 -0.960799 -0.277247
--0.983449 -0.181186 0.807818 -0.589433
-0.284622 -0.95864 -0.832653 -0.553794
--0.932098 -0.362207 0.80471 -0.593668
--0.951219 0.308516 0.998611 0.0526871
--0.918497 0.395427 -0.982482 -0.186356
--0.998844 -0.0480665 0.0959708 -0.995384
--0.0474589 -0.998873 0.0352794 0.999377
-0.997169 -0.075197 0.321375 -0.946952
-0.988217 0.153058 -0.942161 0.33516
--0.810026 0.586394 0.98526 0.171065
--0.749639 -0.661847 -0.997457 -0.0712749
--0.165957 -0.986133 -0.569505 0.821988
--0.958284 -0.285819 -0.757222 -0.653158
-0.856153 0.516722 -0.62573 -0.78004
-0.991104 0.133087 0.709574 0.704631
-0.813622 0.581395 0.70551 -0.7087
--0.925472 -0.378816 0.406152 0.913806
-0.790626 -0.612299 -0.997041 -0.0768695
-0.131742 -0.991284 0.798331 0.602219
--0.545579 0.838059 0.399942 0.916541
--0.330253 -0.943892 -0.621364 -0.783522
-0.511895 0.859048 -0.945451 0.325763
-0.994487 -0.104859 -0.470917 0.882177
--0.576724 -0.816939 0.208661 0.977988
-0.166926 0.985969 -0.486125 0.873889
--0.916236 0.400639 -0.928383 0.371624
-0.884144 -0.467215 -0.0808306 0.996728
--0.380748 -0.924679 0.20787 -0.978156
--0.689875 -0.723929 0.742899 -0.669403
-0.236348 -0.971669 0.294189 -0.955747
-0.28935 0.957223 -0.470913 0.88218
-0.547291 0.836942 0.205559 -0.978645
--0.86421 -0.503131 -0.774245 0.632886
-0.0770106 -0.99703 0.144774 0.989465
--0.778804 -0.627268 0.256835 -0.966455
-0.992726 0.120393 0.878624 -0.477514
--0.124845 0.992176 0.998792 -0.0491461
--0.5896 0.807696 0.974915 0.222579
-0.998969 0.0454019 -0.169816 -0.985476
--0.275235 0.961377 -0.924551 0.381058
-0.00396369 -0.999992 0.922469 0.386072
--0.718817 -0.695199 0.0991439 0.995073
-0.993723 0.111871 0.213312 -0.976984
--0.289615 0.957143 -0.446347 -0.89486
--0.256192 -0.966626 0.714159 -0.699983
-0.969995 0.243127 0.839774 -0.542936
--0.792115 0.610372 -0.94909 -0.315006
--0.129074 0.991635 0.929706 0.368303
-0.91577 -0.401704 -0.879024 0.476777
-0.500697 0.865623 -0.567985 -0.823039
--0.760628 -0.649187 0.034263 0.999413
--0.681601 -0.731724 0.919759 0.392483
--0.487308 0.87323 0.805118 0.593115
--0.824509 -0.56585 -0.897795 -0.440415
--0.204678 0.978829 -0.191926 0.981409
--0.942323 -0.334706 -0.909704 0.415256
-0.982146 0.188121 0.997166 0.0752307
-0.276358 0.961055 -0.962685 -0.270625
-0.0492922 0.998784 0.217085 0.976153
--0.541372 -0.840783 0.791154 -0.611617
-0.999143 -0.0413856 -0.541861 0.840468
--0.941797 0.336182 -0.96337 -0.268174
-0.407399 -0.91325 -0.435928 -0.899982
--0.884292 -0.466934 -0.112387 -0.993664
-0.262655 0.96489 0.125878 -0.992046
--0.890136 0.455694 -0.981754 0.190158
--0.821645 -0.57 -0.573235 -0.819391
--0.990132 0.140138 0.0769706 -0.997033
-0.156762 -0.987636 -0.999451 -0.0331304
--0.794918 -0.606717 -0.710146 0.704055
-0.137793 -0.990461 0.308764 0.951139
--0.987007 -0.160675 -0.909171 -0.416422
-0.149612 0.988745 -0.770992 -0.636844
-0.247732 -0.968829 0.99511 -0.0987692
-0.439641 -0.898173 0.0331667 0.99945
-0.917417 -0.397928 -0.996392 0.0848734
-0.475846 -0.879528 0.782042 -0.623225
-0.199973 0.979801 0.283354 -0.959015
-0.276184 0.961105 -0.95761 -0.288067
-0.0824556 -0.996595 -0.390295 0.92069
--0.748013 0.663685 -0.950248 0.311495
-0.413864 -0.910339 0.255087 -0.966918
--0.785434 0.618946 -0.720332 0.69363
--0.215037 -0.976606 -0.949814 -0.312816
--0.856349 0.516397 -0.654861 0.75575
--0.445081 -0.89549 -0.542484 -0.840066
--0.124241 0.992252 0.993949 -0.109846
--0.938205 0.34608 -0.70986 0.704342
-0.737613 -0.675224 0.294898 0.955529
--0.99717 -0.0751799 0.322998 0.9464
-0.798896 0.601469 -0.13082 0.991406
-0.709037 -0.705172 -0.962885 -0.269911
-0.964406 -0.264427 -0.0573664 -0.998353
-0.874761 -0.484554 0.949276 -0.314445
--0.956264 0.292504 -0.159984 0.98712
-0.508449 0.861092 -0.997633 -0.0687603
--0.557848 0.829943 -0.87216 0.48922
-0.952437 0.304736 0.900545 -0.434762
--0.624104 -0.781342 -0.145345 0.989381
-0.732233 0.681054 0.887889 -0.460057
--0.572221 -0.8201 -0.333422 0.942778
--0.859885 0.510487 -0.985916 0.167243
--0.613291 -0.789857 -0.998822 0.0485338
-0.725258 -0.688477 0.857469 -0.514536
-0.281554 0.959545 -0.964576 0.263803
--0.979057 0.203588 -0.0816347 -0.996662
-0.3914 -0.920221 -0.810704 0.585456
-0.977924 0.208962 -0.589931 0.807454
--0.39526 -0.918569 -0.978946 -0.20412
-0.992527 0.122026 0.944989 -0.327102
-0.288886 -0.957364 -0.513168 -0.858288
-0.9053 0.424773 0.993824 -0.110972
-0.521856 -0.853033 -0.075226 -0.997167
-0.365656 0.93075 0.964985 0.262303
-0.220162 -0.975463 -0.978661 -0.205482
--0.00638696 0.99998 0.802871 0.596153
-0.670731 -0.7417 -0.303137 -0.952947
-0.940552 0.339649 -0.99531 -0.0967359
--0.340081 -0.940396 -0.989822 0.142311
--0.00607329 -0.999982 0.821173 -0.570679
--0.912356 -0.409399 -0.229932 -0.973207
-0.293929 -0.955827 -0.0115991 -0.999933
--0.709465 -0.704741 -0.944728 0.327855
--0.988137 -0.153575 -0.958414 0.285383
--0.206032 -0.978545 -0.325435 -0.945564
-0.884575 0.466397 -0.172491 -0.985011
--0.370175 -0.928962 0.975768 -0.218807
-0.927071 0.374885 0.746421 0.665474
-0.700374 0.713776 -0.583581 -0.812055
--0.494809 0.869002 0.0746603 0.997209
-0.423515 0.905889 0.968895 0.247471
-0.184599 -0.982814 0.960166 -0.27943
--0.0181346 -0.999836 -0.240385 -0.970678
-0.455785 -0.89009 -0.979764 -0.200156
--0.542763 -0.839886 0.679535 -0.733643
-0.954282 -0.298908 0.487938 0.872878
--0.265028 0.964241 -0.119505 0.992834
--0.985318 0.17073 -0.121386 0.992605
-0.995675 -0.0929012 -0.992659 -0.12095
-0.990477 -0.137679 0.319646 -0.947537
--0.998788 0.0492195 0.209975 0.977707
-0.198696 -0.980061 0.405591 0.914055
-0.955161 0.296087 0.212521 -0.977156
--0.479238 0.877685 0.959141 -0.282929
-0.984846 -0.173428 0.151629 0.988437
-0.499112 -0.866537 -0.408774 0.912636
--0.874606 -0.484834 0.938735 0.344639
-0.531936 -0.846785 0.895964 -0.444127
-0.76376 -0.6455 0.495142 -0.868812
--0.158499 0.987359 -0.978227 -0.207539
--0.85 -0.526783 0.482288 -0.876013
--0.961088 0.276244 -0.959383 -0.282107
-0.897157 0.441712 -0.196179 0.980568
-0.231799 0.972764 -0.168425 0.985714
-0.99211 -0.125367 0.999994 -0.00341592
-0.247392 -0.968916 0.991034 -0.133612
--0.24865 0.968593 0.999991 -0.00412589
--0.483715 -0.875225 0.975015 -0.222139
-0.592581 -0.805511 0.828644 0.559777
--0.865507 0.500897 -0.586927 -0.80964
-0.999919 0.0127202 0.294314 0.955709
-0.98067 0.195667 0.66434 0.74743
-0.332518 0.943097 -0.789785 -0.613384
--0.00541497 -0.999985 0.856937 -0.515422
-0.621136 -0.783703 -0.501294 -0.865277
-0.611616 -0.791155 -0.986691 0.162605
--0.304071 -0.952649 0.868032 0.496507
-0.591059 0.806628 0.918983 -0.394297
--0.467562 0.88396 -0.0416321 -0.999133
--0.391259 -0.920281 -0.801607 -0.597851
-0.696487 0.71757 -0.0798627 -0.996806
-0.423487 -0.905902 0.968118 -0.250496
--0.979673 0.200601 0.221344 -0.975196
-0.452794 0.891615 -0.991008 -0.133804
-0.592146 0.805831 0.857688 -0.51417
--0.930038 0.367465 0.997482 0.0709163
-0.998613 0.0526527 0.527212 -0.849734
--0.1272 -0.991877 0.982345 -0.187076
--0.183557 0.983009 0.925204 -0.37947
-0.796688 -0.604391 -0.477214 -0.878787
-0.9995 0.0316194 -0.999782 -0.0208722
-0.673856 -0.738863 0.113793 -0.993504
--0.598728 0.800953 0.209919 0.977719
-0.882742 0.469858 0.216603 -0.97626
-0.874938 0.484234 0.960146 0.279499
--0.493591 0.869694 0.213258 0.976996
-0.673636 -0.739063 0.084221 -0.996447
--0.686579 0.727055 0.961291 0.275535
-0.999936 0.0113186 0.424959 0.905213
--0.196139 -0.980576 0.627577 -0.778555
-0.230059 -0.973177 -0.341123 -0.940019
-0.999711 0.0240371 -0.740049 0.672553
--0.000481737 -1 0.99884 -0.048155
-0.994299 -0.10663 -0.307178 0.951652
-0.0186233 -0.999827 -0.287526 0.957773
--0.784002 -0.620758 -0.54238 -0.840133
-0.523768 -0.851861 0.148346 -0.988935
--0.958147 0.286277 -0.725123 0.688619
-0.0373295 -0.999303 -0.829701 -0.558209
-0.508118 0.861287 -0.994254 -0.107046
-0.638339 0.769756 0.992956 -0.118486
-0.743069 -0.669215 -0.490164 0.87163
-0.995424 -0.0955611 -0.989369 0.145424
--0.779777 -0.626057 0.104238 -0.994552
-0.933139 0.359515 0.602384 -0.798207
-0.666442 0.745557 -0.773798 0.633432
-0.955276 0.295716 0.174505 -0.984656
-0.912916 0.408149 -0.360679 -0.93269
-0.654729 -0.755863 -0.641637 0.767008
--0.466039 0.884764 -0.212195 -0.977227
-0.97399 -0.226591 -0.647515 0.762053
-0.678302 -0.734783 0.657507 -0.753449
-0.339677 0.940542 -0.995026 0.0996149
--0.401666 0.915786 -0.880999 -0.473118
-0.94401 -0.329918 -0.593144 -0.805096
--0.158247 0.9874 -0.983213 -0.182464
--0.598195 -0.80135 0.274354 -0.961629
-0.392088 -0.919928 -0.852191 0.523231
--0.609245 -0.792982 -0.894878 -0.44631
--0.589087 -0.80807 0.987068 -0.160303
--0.978963 -0.204039 -0.127451 0.991845
--0.911874 0.41047 -0.114276 0.993449
--0.569493 -0.821996 -0.622666 0.782488
--0.203567 0.979061 -0.0795407 0.996832
--0.862907 0.505364 -0.910315 -0.413916
--0.832459 0.554086 -0.570413 -0.821358
-0.767357 -0.64122 0.880613 -0.473837
--0.0214628 0.99977 -0.544378 0.83884
-0.638996 -0.76921 0.979222 0.202789
--0.612128 -0.790759 -0.995145 -0.0984228
--0.871995 0.489515 0.631045 -0.775746
-1 0.000854397 0.996352 0.0853358
--0.984041 -0.177943 0.573572 -0.819155
--0.821225 0.570604 -0.511524 0.859269
--0.779242 -0.626723 0.188728 -0.982029
--0.854274 -0.519823 -0.308345 -0.951275
--0.972717 -0.231996 -0.148472 -0.988917
--0.559059 -0.829128 -0.934027 -0.357202
--0.567715 -0.823225 -0.776031 0.630694
--0.812224 0.583346 0.853772 0.520646
-0.994126 -0.108229 -0.150871 0.988553
--0.739484 -0.673174 0.0218695 -0.999761
--0.1223 0.992493 0.953641 -0.300946
-0.439475 0.898255 0.0516457 -0.998665
-0.913509 -0.406818 -0.492272 0.870441
-0.211989 0.977272 -0.807937 -0.589269
--0.956482 0.291792 -0.232999 0.972477
--0.872461 -0.488684 0.701985 0.712192
-0.982138 0.188162 0.99684 0.0794316
-0.814117 0.5807 0.642532 -0.766259
-0.119064 0.992887 0.807073 0.590451
--0.923084 -0.384598 -0.205832 0.978587
--0.980733 -0.195354 0.687813 0.725888
-0.748342 -0.663313 -0.964558 0.263871
-0.564454 -0.825464 -0.959115 -0.283018
-0.945006 -0.327054 -0.32567 -0.945483
--0.255432 0.966827 0.766929 0.641732
--0.096166 -0.995365 -0.978713 0.205235
-0.306696 0.951807 0.970397 0.241515
-0.580473 0.81428 0.620858 0.783923
--0.728228 0.685335 0.994161 -0.107911
--0.733362 -0.679839 0.799718 -0.600375
-0.579777 0.814775 0.551696 0.834045
-0.838557 -0.544814 0.481827 -0.876267
-0.990174 0.139842 0.106808 0.99428
-0.0588525 -0.998267 0.923178 -0.384374
--0.999564 0.0295188 -0.982139 -0.188157
--0.930716 -0.365743 0.967402 -0.253247
--0.860593 0.509293 -0.999572 0.0292552
-0.591768 0.806108 0.88084 -0.473414
-0.969304 -0.245865 0.957793 0.287459
--0.800418 0.599443 0.121886 -0.992544
-0.105049 -0.994467 -0.454037 -0.890983
-0.125473 0.992097 0.9999 -0.0141114
--0.890216 -0.455539 -0.984925 -0.172984
--0.308604 -0.951191 0.999058 0.0433932
--0.94295 0.332935 -0.816172 -0.577809
-0.984398 0.175957 0.397709 -0.917511
--0.195587 0.980686 0.670419 0.741983
--0.988753 0.149561 -0.767697 -0.640813
-0.699237 0.71489 -0.44751 -0.894279
--0.996998 -0.0774307 0.102973 0.994684
-0.970223 0.242215 0.785108 -0.619359
--0.546108 -0.837715 0.341342 -0.939939
--0.797456 0.603376 -0.361791 -0.932259
-0.747586 -0.664165 -0.928298 0.371836
--0.790053 -0.613038 -0.999862 -0.0166228
--0.379664 -0.925124 0.320793 -0.947149
--0.732979 -0.680251 0.832223 -0.55444
-0.341188 -0.939995 -0.966248 -0.257612
-0.532925 -0.846162 0.941659 -0.336568
-0.999976 -0.00695807 0.767533 -0.641009
--0.889259 0.457403 -0.927391 0.374095
-0.99841 -0.0563707 0.800223 0.599703
-0.834746 -0.550636 -0.191877 -0.981419
--0.944485 0.328553 -0.471007 -0.882129
-0.002486 -0.999997 0.969258 0.246048
--0.818128 0.575036 0.00378892 0.999993
-0.999214 0.0396488 -0.67905 -0.734092
-0.507152 0.861856 -0.976041 -0.217586
--0.947683 -0.319212 0.476748 0.87904
-0.97829 -0.20724 -0.439368 -0.898307
--0.922567 -0.385837 -0.334929 0.942243
--0.416999 0.908907 0.566749 -0.823891
-0.328351 0.944556 -0.452001 -0.892017
-0.64552 0.763743 0.492873 -0.870101
-0.993231 0.116153 0.601966 -0.798522
--0.624094 -0.781349 -0.146505 0.98921
-0.501063 0.865411 -0.602307 -0.798264
--0.308172 0.951331 0.996059 -0.0886959
-0.733934 0.679221 0.74637 -0.665531
--0.268311 0.963332 -0.444332 0.895862
-0.380909 -0.924612 0.190791 0.981631
-0.547562 0.836765 0.173779 -0.984785
-0.953525 -0.301315 0.690387 0.723441
-0.254131 0.96717 0.846107 -0.533012
-0.9651 0.261882 0.204861 0.978791
--0.938053 -0.346492 -0.678266 -0.734817
-0.798268 -0.602303 -0.233417 -0.972377
--0.529252 -0.848465 0.713171 0.70099
--0.645754 0.763546 0.466076 0.884745
--0.0842285 -0.996446 -0.547071 -0.837086
--0.535143 -0.844762 0.996724 0.0808835
-0.224994 -0.97436 -0.763212 -0.646148
--0.140265 -0.990114 0.0642246 -0.997935
--0.911864 -0.410492 -0.111868 -0.993723
-0.107626 0.994191 -0.210507 0.977592
--0.99046 0.137803 0.30779 -0.951454
-0.982069 -0.18852 0.993292 -0.115632
-0.0681228 0.997677 0.860587 -0.509303
--0.62108 -0.783747 -0.507439 0.861688
--0.990869 -0.134831 0.575195 0.818016
-0.273402 0.9619 -0.835625 -0.5493
-0.27059 0.962695 -0.641964 -0.766735
-0.53574 -0.844383 0.999947 -0.0102887
--0.818796 0.574084 -0.112282 0.993676
--0.56058 0.8281 -0.983544 0.18067
-0.630191 -0.77644 0.593718 -0.804673
-0.959566 0.281483 -0.966505 -0.256649
--0.997533 -0.0702015 0.736618 0.676309
-0.544444 0.838797 0.520007 -0.854162
-0.51307 0.858347 -0.892178 0.451684
-0.335277 -0.94212 -0.933183 0.359402
-0.982946 -0.183894 0.937684 0.347488
--0.437297 0.899317 0.28977 0.957096
-0.0358197 -0.999358 -0.904263 -0.426976
-0.427654 0.903943 0.978597 -0.205785
--0.657551 0.75341 -0.877435 0.479696
--0.379871 0.92504 0.299582 0.95407
-0.885829 0.464011 -0.428522 -0.903531
-0.987252 0.159165 -0.962023 -0.272968
--0.461007 -0.887396 -0.704481 0.709723
-0.38775 -0.921764 -0.521902 0.853006
--0.393865 -0.919168 -0.936793 -0.349885
--0.968367 0.249528 0.996254 -0.0864708
--0.96704 -0.254626 0.817726 0.575608
--0.0181604 0.999835 -0.242892 0.970053
--0.3523 -0.935887 -0.125185 0.992133
-0.992902 0.118936 0.799352 -0.600863
-0.170654 0.985331 -0.129093 0.991633
-0.909713 -0.415237 0.397563 0.917575
--0.523456 -0.852052 0.112134 0.993693
--0.0362419 -0.999343 -0.885425 0.464783
-0.648134 0.761526 0.17181 -0.98513
-0.678624 -0.734486 0.689914 -0.723892
--0.863245 -0.504786 -0.880596 0.473868
--0.96787 -0.251451 0.959609 0.281336
-0.227805 0.973707 -0.547775 0.836626
--0.935945 0.352146 -0.141517 0.989936
--0.857956 -0.513723 -0.855263 -0.518195
--0.158887 -0.987297 -0.969318 0.245809
--0.804949 -0.593344 0.771975 0.635652
-0.000760872 -1 0.997107 0.0760138
--0.983423 -0.181327 0.816207 -0.57776
--0.900334 -0.4352 0.502988 0.864294
-0.898984 0.437981 0.216179 0.976354
--0.216437 0.976297 -0.984755 0.173947
-0.00836469 -0.999965 0.670081 0.742288
--0.921107 0.389309 -0.658036 -0.752986
--0.820895 -0.571079 -0.460973 -0.887414
-0.471405 -0.881917 0.383536 -0.923526
--0.971329 0.237738 0.427505 0.904013
--0.128335 0.991731 0.954565 0.298003
--0.630132 -0.776488 0.587605 0.809148
-0.601094 0.799178 -0.084183 -0.99645
--0.12319 -0.992383 0.976758 0.214345
-0.411649 0.911343 0.0147473 0.999891
--0.809963 0.586481 0.987057 0.160367
--0.885359 0.464909 -0.334934 0.942241
-0.300336 0.953834 0.612586 0.790404
--0.716102 -0.697996 -0.286448 0.958096
--0.612375 0.790567 -0.997735 0.0672737
-0.655504 -0.755192 -0.716728 0.697353
--0.671585 0.740928 -0.191679 -0.981458
--0.998939 0.0460542 -0.105147 0.994457
--0.109837 -0.99395 0.0103279 0.999947
-0.953752 -0.300595 0.633873 0.773437
-0.978423 0.20661 -0.380676 0.924708
-0.942794 -0.333375 -0.842238 -0.539105
--0.786806 0.617201 -0.855357 0.518039
--0.733304 -0.679901 0.804757 -0.593604
--0.478938 -0.877849 0.948914 0.315535
-0.999551 -0.0299685 -0.989607 -0.143797
--0.680458 0.732787 0.847551 -0.530714
-0.311821 0.950141 0.956813 -0.290703
--0.912972 -0.408023 -0.373478 -0.927639
--0.932668 0.360736 0.701388 0.71278
--0.995109 0.0987844 -0.89166 0.452706
--0.415645 0.909527 0.438315 -0.898822
-0.71865 -0.695372 0.0751753 -0.99717
-0.873294 0.487194 0.812768 0.582587
-0.60619 0.79532 -0.661976 -0.749525
--0.532729 0.846286 0.933593 -0.358336
--0.595239 0.803548 0.602227 0.798325
-0.235577 -0.971856 0.217496 -0.976061
--0.996554 0.0829521 -0.435656 -0.900113
-0.870755 0.491717 0.417113 0.908854
-0.982668 -0.185372 0.979162 0.203078
-0.758521 -0.651648 -0.285669 -0.958328
--0.999534 -0.0305239 -0.996066 0.0886151
-0.471945 0.881628 0.439307 0.898337
--0.998026 -0.0627986 1 0.000812221
-0.636221 -0.771507 0.987848 -0.155423
-0.97516 0.221502 -0.941322 -0.337511
-0.716788 -0.697291 -0.190881 -0.981613
--0.600015 0.799989 0.0506922 0.998714
-0.113053 -0.993589 0.327772 -0.944757
-0.474036 -0.880506 0.638222 -0.769853
--0.752354 0.658759 -0.942817 -0.333311
--0.224652 -0.974439 -0.785385 0.619008
-0.170475 0.985362 -0.147093 0.989123
-0.999595 0.0284549 -0.956594 0.291425
--0.747815 0.663907 -0.940581 0.339569
-0.199928 0.979811 0.287797 -0.957691
--0.701034 0.713128 -0.656099 0.754675
--0.863989 -0.50351 -0.801247 0.598333
-0.217257 -0.976114 -0.995878 0.0907051
-0.396582 -0.918 -0.998097 0.0616659
-0.909502 0.415699 0.443571 -0.896239
-0.797501 0.603318 -0.35498 0.934874
--0.353348 -0.935492 -0.0135408 0.999908
-0.591737 0.806131 0.882658 -0.470016
-0.00360559 0.999993 0.935699 -0.352798
-0.979932 0.19933 0.345662 0.938359
--0.999991 -0.00435198 0.906786 0.421591
-0.972699 0.232071 -0.140841 -0.990032
--0.99309 -0.117356 0.694039 -0.719937
--0.868607 -0.495502 -0.00493195 0.999988
-0.99886 0.0477376 0.0631474 -0.998004
--0.829754 0.558129 -0.888202 -0.459454
-0.853078 0.521784 -0.0837014 -0.996491
-0.42932 0.903153 0.924285 -0.381702
-0.863166 -0.50492 -0.887828 -0.460175
-0.945306 -0.326186 -0.237562 -0.971372
-0.218605 0.975813 -0.998878 0.0473478
-0.266632 -0.963798 -0.282244 0.959343
--0.306252 0.95195 0.958081 -0.286498
-0.994271 -0.106885 -0.282672 0.959217
--0.722237 -0.691646 0.558418 0.829559
--0.396696 -0.91795 -0.998788 -0.0492242
--0.327519 -0.944845 -0.371757 -0.92833
-0.558399 -0.829573 -0.902676 0.430322
--0.370415 -0.928866 0.969779 -0.243984
-0.872212 0.489128 0.6649 0.746933
-0.924464 0.38127 0.152328 0.98833
-0.922074 0.387014 -0.452142 0.891946
--0.507302 -0.861769 -0.979664 -0.200646
-0.573009 -0.819549 -0.241347 -0.970439
-0.720956 -0.692981 0.396279 -0.91813
--0.103156 -0.994665 -0.614378 0.789012
-0.951424 -0.307884 0.992911 0.118857
--0.903027 -0.429585 0.91268 0.408674
-0.74079 -0.671737 -0.171437 0.985195
-0.311312 0.950308 0.970999 -0.239083
--0.799276 -0.600964 -0.0680044 0.997685
--0.743706 0.668507 -0.570806 0.821085
-0.082274 0.99661 -0.373456 -0.927648
-0.723226 0.690611 0.671073 0.741392
-0.977234 -0.212162 -0.81826 -0.574848
-0.0346044 0.999401 -0.949379 0.314132
--0.98555 -0.169384 -0.255412 -0.966832
-0.94436 0.328914 -0.504341 0.863504
--0.887755 0.460316 -0.757592 0.652728
--0.936219 0.351417 -0.21815 0.975915
-0.999996 0.00288763 0.958597 0.284767
--0.64325 -0.765656 0.725837 -0.687866
-0.0890691 0.996025 -0.874666 -0.484726
--0.309 0.951062 0.999998 -0.00180615
--0.721403 -0.692516 0.454639 0.890676
-0.624568 -0.78097 -0.0863203 -0.996267
-0.995606 -0.093636 -0.998875 -0.0474202
--0.418047 0.908425 0.657826 -0.75317
--0.299114 -0.954217 0.506635 0.862161
--0.455763 -0.890101 -0.980258 0.197723
--0.808962 0.587862 0.999956 -0.00943065
-0.0872945 -0.996183 -0.774925 0.632054
--0.0757658 -0.997126 0.266857 -0.963736
-0.916988 0.398915 -0.981512 -0.191398
--0.7664 -0.642364 0.800395 0.599473
--0.745613 -0.666379 -0.779086 -0.626918
-0.302194 -0.953247 0.754035 -0.656834
--0.926944 -0.375199 0.72347 0.690356
-0.387042 0.922062 -0.454851 -0.890567
--0.416469 -0.90915 0.517841 0.855477
-0.067985 -0.997686 0.867541 0.497366
-0.244773 -0.96958 0.919438 -0.393236
-0.917504 0.397727 -0.998006 -0.0631192
-0.999897 -0.0143292 0.137392 -0.990517
-0.846629 -0.532183 0.908551 0.417774
-0.980999 0.194013 0.780345 0.62535
-0.0489215 0.998803 0.180717 0.983535
--0.924539 0.381087 0.171861 -0.985121
-0.862602 0.505883 -0.933552 0.358441
--0.503195 -0.864173 -0.77889 -0.62716
-0.731651 -0.68168 0.923903 0.382626
-0.861138 0.508371 -0.996972 0.0777557
--0.337979 0.941154 -0.99675 0.0805564
-0.744138 0.668026 -0.622638 -0.78251
--0.749584 0.661909 -0.99683 0.079556
-0.895583 -0.444895 -0.524911 -0.851157
-0.986473 -0.163922 -0.725843 0.68786
--0.684312 0.729189 0.999482 -0.0321969
-0.0297584 0.999557 -0.986366 -0.164565
--0.451485 -0.892279 -0.960784 -0.277299
-0.960936 0.27677 -0.973384 0.229182
--0.611675 -0.791109 -0.987874 -0.155256
--0.928285 0.371871 0.919803 -0.392381
-0.203168 -0.979144 -0.038884 0.999244
--0.245313 -0.969444 0.939895 0.341463
-0.950313 0.311295 0.971428 0.237336
--0.803966 0.594675 0.656737 -0.75412
--0.998251 -0.059116 0.932998 -0.359881
--0.76409 -0.645109 0.538952 0.842336
--0.859496 -0.511143 -0.970312 -0.241857
-0.361996 0.93218 0.791015 0.611797
--0.695563 0.718465 0.0486139 0.998818
--0.705975 0.708236 -0.987248 0.159189
--0.0386212 0.999254 -0.750821 -0.660506
--0.685197 0.728358 0.996025 0.0890764
--0.220788 0.975322 -0.963471 -0.267814
--0.231756 0.972774 -0.172852 -0.984948
--0.761007 -0.648744 0.0923885 0.995723
--0.167555 -0.985863 -0.429413 0.903108
--0.692022 0.721876 0.514412 0.857543
--0.177693 0.984086 0.552517 -0.833502
--0.794634 -0.607088 -0.742289 0.67008
--0.962908 0.26983 -0.579534 -0.814948
--0.86612 -0.499837 -0.483578 0.875301
--0.185766 -0.982594 0.986522 0.163631
-0.543177 -0.839618 0.642531 0.76626
--0.998057 -0.0623127 0.998854 -0.0478551
--0.344322 -0.938852 -0.828615 0.559819
-0.240537 0.97064 0.666869 0.745175
-0.0325846 -0.999469 -0.993111 -0.117174
--0.682261 0.731109 0.951357 -0.308091
--0.0375027 0.999297 -0.8199 -0.572507
--0.810621 0.585572 0.962877 0.26994
-0.361454 -0.93239 0.754172 -0.656677
-0.970836 0.239746 0.603955 -0.797019
-0.766535 0.642203 0.81283 0.582502
-0.633743 -0.773544 0.888476 -0.458922
--0.92309 0.384585 -0.204408 -0.978886
--0.72723 -0.686394 0.968 0.250951
--0.983257 0.182224 0.865413 0.501059
-0.989969 0.141282 -0.0384106 0.999262
-0.376589 -0.926381 0.61217 0.790726
-0.552997 -0.833184 -0.458395 0.888748
--0.798955 0.601391 -0.121151 -0.992634
-0.911145 0.412086 0.0626482 -0.998036
-0.227944 0.973674 -0.535739 0.844383
--0.41015 -0.912018 -0.149116 0.98882
--0.612029 0.790835 -0.993842 0.110807
-0.458199 -0.88885 -0.890268 -0.455437
--0.830402 0.557165 -0.828979 -0.559279
--0.147347 -0.989085 -0.606267 -0.795261
-0.793286 0.608849 -0.871496 0.490403
-0.998114 0.0613852 0.990104 -0.140336
-0.408767 0.912639 -0.296745 0.954957
--0.382756 -0.92385 -0.00781492 -0.999969
--0.125099 -0.992144 0.999722 0.0235668
-0.988301 0.152517 -0.922413 0.386206
-0.324444 0.945905 -0.0556599 -0.99845
--0.888402 0.459067 -0.841578 0.540136
-0.0896843 0.99597 -0.902919 -0.42981
-0.955974 -0.29345 -0.0617159 0.998094
-0.270493 -0.962722 -0.63423 0.773145
--0.998633 0.0522696 0.494234 0.869329
--0.603096 0.797668 -0.328849 0.944382
--0.799861 -0.600185 0.0293891 0.999568
--0.98204 -0.188673 0.991366 0.131122
--0.974559 0.22413 -0.817403 0.576066
--0.971176 0.238364 0.484836 0.874605
-0.979072 -0.203515 -0.0742894 -0.997237
-0.86257 0.505937 -0.93581 0.352504
-0.91148 -0.411344 -0.0186453 0.999826
-0.998004 -0.0631492 0.999354 -0.0359302
-0.793525 -0.608538 -0.851609 -0.524177
-0.16132 -0.986902 -0.880047 -0.474886
--0.759383 0.650644 -0.156739 -0.98764
-0.973786 -0.227466 -0.576499 0.817098
-0.997693 -0.0678854 0.872462 -0.488682
-0.90486 0.425709 0.99997 -0.00771398
--0.416097 0.90932 0.482409 -0.875946
-0.396802 -0.917904 -0.999289 0.0377072
--0.988588 0.150646 -0.833269 -0.552868
-0.960705 0.27757 -0.989075 0.147416
-0.873642 -0.486568 0.852384 -0.522916
--0.995971 0.0896771 -0.90261 -0.430459
-0.139383 0.990239 0.152727 -0.988268
--0.783908 -0.620877 -0.529562 -0.848271
-0.213568 0.976928 -0.892215 -0.451611
--0.0132757 0.999912 0.240798 0.970575
-0.332957 -0.942942 -0.817481 0.575956
--0.63821 -0.769862 0.9948 -0.101851
--0.997073 0.0764542 0.199742 -0.979848
-0.0415917 -0.999135 -0.524406 -0.851468
--0.913795 0.406176 -0.552186 0.833721
-0.991714 -0.128466 0.95053 -0.310632
-0.771894 0.635751 0.976562 -0.215235
-0.97469 0.223562 -0.84959 -0.527444
--0.998141 -0.0609505 0.983054 -0.183315
--0.894748 -0.446572 -0.674255 0.738499
--0.999884 0.0152132 0.0493945 -0.998779
--0.989656 0.143462 -0.255839 -0.966719
--0.545845 -0.837886 0.370651 -0.928772
--0.905117 0.425163 0.997685 0.0680082
--0.978621 0.205672 -0.290408 -0.956903
--0.943027 -0.332716 -0.802491 0.596664
-0.273581 0.961849 -0.845714 -0.533637
-0.609329 -0.792918 -0.899557 0.436803
--0.993988 -0.109487 -0.0248978 -0.99969
-0.338246 0.941058 -0.998632 -0.0522927
-0.88891 -0.458082 -0.896161 0.443729
-0.513154 -0.858296 -0.887686 -0.46045
-0.998018 0.0629362 0.999893 0.0145996
--0.809757 0.586765 0.992067 0.125713
-0.731227 -0.682134 0.945865 0.32456
-0.902533 -0.43062 0.859928 -0.510416
-0.753875 -0.657018 -0.841335 -0.540514
-0.777396 0.629012 0.465211 -0.8852
--0.974865 -0.222796 -0.888356 -0.459155
-0.802863 0.596164 0.506549 0.862211
--0.639277 0.768977 0.971175 0.238369
--0.534672 0.84506 0.990667 -0.136304
--0.0534305 -0.998572 0.591732 0.806135
-0.578614 -0.815601 0.42755 -0.903992
-0.822091 0.569357 -0.635571 -0.772043
-0.45442 0.890787 -0.998838 0.0482041
-0.469042 -0.883176 0.12559 -0.992082
-0.272598 0.962128 -0.786845 -0.61715
-0.243772 0.969832 0.874027 0.485878
--0.522 0.852945 -0.0584018 -0.998293
-0.185753 -0.982596 0.986299 -0.164967
--0.258499 -0.966012 0.528457 -0.84896
-0.394235 -0.91901 -0.950128 0.31186
--0.924696 0.380706 0.212356 -0.977192
-0.644684 0.764449 0.584969 -0.811055
--0.196793 0.980445 0.574346 0.818613
-0.99868 -0.0513548 0.412642 0.910893
--0.558911 0.829228 -0.927526 0.373759
-0.657501 0.753454 -0.874229 -0.485513
--0.998299 -0.0582962 0.900337 -0.435194
--0.9694 -0.245485 0.945802 -0.324745
-0.929603 0.368563 0.998887 0.0471771
--0.562317 0.826922 -0.999601 -0.0282445
--0.952029 -0.306009 0.950442 -0.310902
--0.969013 0.247012 0.985031 0.172377
-0.15289 0.988243 -0.936321 -0.351146
--0.991011 0.13378 0.658622 -0.752474
--0.568224 0.822874 -0.735569 -0.67745
--0.502761 0.864426 -0.746422 0.665473
-0.995908 0.0903766 -0.930593 0.366056
--0.946774 0.3219 0.211503 -0.977377
--0.34332 -0.939218 -0.883534 0.468367
--0.608857 0.79328 -0.872013 0.489483
-0.372027 0.928222 0.913051 -0.407846
--0.964678 -0.263433 0.0456455 0.998958
--0.952195 0.305491 0.932127 0.36213
--0.657792 0.7532 -0.89233 0.451385
--0.685132 0.728419 0.996781 0.0801753
--0.553488 -0.832857 -0.509951 -0.860203
--0.890829 -0.454338 -0.999238 -0.0390409
--0.263663 -0.964615 0.0218246 -0.999762
--0.921175 0.389149 -0.64487 -0.764293
--0.208618 0.977997 -0.561198 0.827682
--0.990435 -0.137977 0.29105 0.956708
-0.703656 -0.710541 -0.883803 0.46786
--0.882122 0.471021 0.343012 0.939331
-0.330189 -0.943915 -0.61601 0.787738
-0.666238 -0.74574 -0.790865 -0.611991
-0.102444 -0.994739 -0.669236 -0.74305
-0.928296 -0.371842 0.920992 -0.389583
--0.708578 0.705632 -0.978379 -0.206818
--0.343503 0.939152 -0.874267 -0.485446
-0.999994 -0.00352983 0.938345 -0.345699
--0.185057 -0.982728 0.972148 0.23437
-0.614413 -0.788985 -0.981866 -0.189577
--0.968135 0.25043 0.98389 -0.178776
-0.942881 -0.33313 -0.827944 -0.560811
--0.50334 0.864088 -0.78933 0.613969
-0.344044 -0.938953 -0.844831 -0.535034
--0.186077 0.982535 0.9912 -0.132373
--0.579374 0.815062 0.509798 -0.860294
--0.0234824 0.999724 -0.701614 0.712557
-0.986699 -0.162557 -0.813759 0.581202
--0.293816 -0.955862 -0.0234508 0.999725
--0.936702 0.350128 -0.349996 0.936751
--0.99467 -0.103113 -0.617741 -0.786382
-0.571777 0.820409 -0.38389 0.923379
-0.352439 -0.935835 -0.110523 -0.993874
-0.75659 -0.65389 -0.552704 -0.833378
-0.366812 -0.930295 0.990059 -0.140655
--0.739148 0.673543 0.0716377 0.997431
--0.830236 -0.557412 -0.845242 0.534384
-0.0241254 0.999709 -0.74596 -0.665991
--0.504523 -0.863398 -0.865758 -0.500463
-0.745386 0.666634 -0.757257 -0.653117
-0.72731 0.686309 0.970872 0.239599
-0.85173 0.523981 0.173135 -0.984898
-0.875363 -0.483465 0.980963 -0.194194
-0.996369 -0.0851393 -0.621196 -0.783655
-0.608479 -0.79357 -0.847697 0.530481
-0.632823 -0.774296 0.827804 -0.561017
--0.645928 0.763398 0.445691 0.895187
-0.536268 0.844048 0.998633 -0.0522713
-0.630086 -0.776525 0.582823 -0.812599
-0.869746 0.4935 0.223473 0.97471
-0.995431 0.0954864 -0.990433 -0.137995
--0.415543 0.909574 0.42816 -0.903703
-0.984466 0.175573 0.361606 -0.932331
--0.583549 0.812078 0.866503 -0.499172
-0.711082 0.703109 -0.845234 0.534396
--0.355693 0.934603 0.235008 -0.971993
--0.323801 -0.946125 0.0123064 -0.999924
--0.719613 0.694375 0.212241 -0.977217
--0.199036 0.979992 0.373685 0.927556
--0.809227 0.587496 0.999361 0.035752
-0.430943 -0.902379 0.841126 0.540839
-0.299025 -0.954245 0.498573 -0.866848
--0.944685 -0.32798 -0.416657 0.909064
--0.692597 -0.721325 0.444561 -0.895749
--0.397732 -0.917502 -0.997975 0.0636107
--0.65164 0.758528 -0.284651 0.958631
-0.997775 0.0666722 0.925294 0.37925
--0.181214 0.983444 0.809538 -0.587068
--0.774029 -0.633151 0.850777 -0.525526
--0.445836 -0.895115 -0.611281 -0.791414
--0.790671 0.612241 -0.996452 -0.084161
--0.128422 -0.99172 0.951912 -0.306373
-0.089292 -0.996005 -0.885296 0.465028
--0.396127 0.918196 -0.993826 0.110946
--0.21239 -0.977185 -0.831414 -0.555653
--0.736068 -0.676908 0.503774 -0.863836
-0.460277 0.887776 -0.760451 0.649396
-0.88317 0.469054 0.12686 -0.991921
-0.176613 -0.98428 0.457932 -0.888987
-0.979394 0.201959 0.0844908 0.996424
-0.536655 0.843801 0.995185 -0.0980157
-0.269791 -0.962919 -0.576226 0.81729
--0.590677 0.806908 0.936647 0.350275
-0.380171 0.924916 0.268481 -0.963285
-0.624529 0.781002 -0.0913328 0.99582
--0.987364 0.158468 -0.978872 0.204476
--0.999654 0.0263225 -0.873211 -0.487342
-0.536703 -0.843771 0.994621 0.103581
-0.600484 -0.799637 -0.00793915 0.999968
-0.173171 -0.984892 0.125731 -0.992064
-0.0613979 0.998113 0.990282 0.139074
--0.462802 -0.886462 -0.547499 0.836806
--0.888046 -0.459755 -0.797283 -0.603606
-0.26936 -0.96304 -0.539035 0.842283
--0.318892 0.947791 0.506171 0.862433
--0.0686215 0.997643 0.834064 0.551667
-0.554967 0.831872 -0.654002 -0.756492
--0.381373 0.924421 0.14128 0.98997
--0.96869 -0.248273 0.999073 -0.0430574
-0.0971404 -0.995271 -0.953967 -0.299911
-0.997493 -0.070767 0.697114 -0.71696
-0.917918 -0.39677 -0.999152 -0.0411783
--0.999504 0.0314785 -0.999977 0.00678065
-0.0185839 -0.999827 -0.283746 0.958899
-0.000699853 1 0.997552 -0.0699282
-0.243045 0.970015 0.835163 0.550003
--0.69047 0.723361 0.685388 0.728178
--0.887453 0.460898 -0.713178 0.700983
--0.240339 0.970689 0.651507 -0.758642
-0.590044 0.807371 0.961202 -0.275845
--0.962249 0.272172 -0.758733 -0.651401
--0.948048 0.318127 0.574012 -0.818847
-0.936622 -0.350343 -0.328424 0.94453
-0.34876 -0.937212 -0.482496 -0.875898
--0.654661 -0.755923 -0.634672 -0.772782
-0.858565 0.512704 -0.910587 -0.413318
--0.195835 0.980637 0.651402 0.758733
-0.674332 0.738428 0.177594 0.984104
-0.8934 -0.449263 -0.862877 -0.505414
-0.666558 0.745454 -0.76388 0.645358
-0.844047 -0.53627 0.998623 -0.0524531
-0.503268 0.86413 -0.784202 -0.620506
-0.352332 -0.935875 -0.121816 -0.992553
--0.996105 0.0881777 -0.827847 -0.560954
-0.967752 -0.251905 0.945354 -0.326045
-0.774658 0.63238 0.794351 -0.607459
--0.0196157 -0.999808 -0.381017 -0.924568
-0.746623 0.665247 -0.864915 -0.501919
--0.88002 0.474937 0.713592 0.700561
--0.229223 0.973374 -0.420474 -0.907305
-0.734628 -0.67847 0.674569 0.738212
--0.844203 0.536023 0.99973 -0.0232458
-0.175797 0.984426 0.382756 0.92385
--0.712907 0.701259 -0.679559 -0.733621
-0.520242 0.854019 -0.261379 0.965236
--0.984303 0.176486 0.446422 0.894823
--0.8535 -0.521093 -0.164049 -0.986452
--0.976975 -0.213352 -0.88201 0.471231
-0.792181 -0.610286 -0.945634 -0.325234
-0.710948 -0.703244 -0.855243 -0.518227
--0.404204 -0.914669 -0.717803 0.696246
--0.596173 0.802856 0.505627 0.862752
--0.450292 0.892881 -0.915268 0.402846
--0.699034 -0.715089 -0.421882 -0.906651
-0.544525 0.838745 0.51172 -0.859152
-0.969738 -0.244149 0.892207 0.451627
--0.233537 -0.972348 0.00942588 0.999956
--0.929141 0.369726 0.985202 -0.171395
-0.834211 0.551445 -0.285997 0.95823
--0.645482 -0.763776 0.497258 -0.867603
--0.894939 -0.446188 -0.641965 0.766734
-0.999836 0.0180827 -0.235341 0.971913
-0.335151 -0.942164 -0.928303 0.371824
--0.732892 0.680345 0.839225 0.543784
--0.997536 0.0701511 0.740025 -0.672579
-0.0870067 -0.996208 -0.756344 0.654174
--0.997978 0.0635681 0.996966 -0.0778397
-0.0897049 0.995968 -0.903808 -0.427939
-0.727685 -0.685911 0.982515 -0.186181
-0.848049 -0.529918 0.765958 0.64289
--0.990012 -0.140983 -0.00824446 0.999966
-0.0692079 -0.997602 0.800215 0.599713
--0.431877 0.901932 0.780696 0.624911
--0.0352539 -0.999378 -0.926974 0.375126
-0.650239 0.75973 -0.103832 -0.994595
--0.994948 0.100392 -0.807244 0.590218
-0.211077 0.977469 -0.749493 -0.662012
--0.159089 -0.987264 -0.964087 0.265588
-0.993458 0.114194 0.433869 -0.900976
-0.763747 0.645515 0.493437 0.869781
--0.807392 -0.590016 0.962163 0.272473
--0.29711 -0.954843 0.315869 0.948803
--0.973581 0.228341 -0.500911 0.865499
-0.890376 -0.455226 -0.990402 0.138217
--0.475107 0.879928 0.726973 -0.686666
--0.721659 -0.692249 0.487269 0.873252
-0.752289 -0.658833 -0.946066 -0.323974
-0.966551 0.256474 0.693488 0.720468
-0.926465 0.376381 0.62973 0.776814
-0.990878 -0.134761 0.581014 -0.813894
--0.428003 -0.903777 0.969923 -0.243414
--0.661193 -0.750216 -0.999874 -0.015853
-0.993153 -0.116821 0.654297 0.756238
--0.994952 0.100347 -0.809875 0.586602
-0.994989 0.0999883 -0.830499 -0.55702
--0.982511 0.186204 0.992826 0.119568
-0.0133991 0.99991 0.228804 -0.973473
--0.999332 -0.0365365 -0.871337 -0.490684
--0.273589 -0.961847 -0.846156 -0.532936
-0.6956 0.718429 0.043561 -0.999051
--0.866844 0.49858 -0.351952 -0.936018
-0.135253 0.990811 0.539894 -0.841733
-0.764848 -0.644211 0.634001 -0.773332
--0.0753148 -0.99716 0.31016 -0.950684
-0.985427 -0.170099 -0.184711 0.982793
-0.98676 0.162187 -0.834982 -0.550278
-0.175041 0.984561 0.310736 0.950496
-0.374267 0.927321 0.789061 -0.614315
-0.00313883 -0.999995 0.951142 0.308755
-0.0614649 0.998109 0.991193 0.132425
--0.312755 0.949834 0.923672 0.383184
--0.592547 0.805536 0.831026 0.556233
-0.934776 -0.355238 0.187442 0.982276
-0.0876063 -0.996155 -0.794323 0.607496
--0.160889 0.986972 -0.899931 -0.436031
--0.131535 0.991312 0.810761 0.585377
--0.752809 0.658239 -0.917546 -0.39763
-0.529215 0.848488 0.710132 0.704069
--0.381381 0.924418 0.140508 0.99008
--0.9452 0.326492 -0.268921 -0.963162
-0.638731 0.76943 0.985633 -0.168898
-0.9987 -0.0509704 0.377281 0.926099
-0.869899 0.49323 0.253619 0.967304
-0.724243 0.689545 0.772625 0.634863
--0.988544 0.15093 -0.848802 -0.52871
-0.816222 0.577738 0.328178 -0.944616
--0.839973 -0.542629 0.691172 0.72269
--0.164162 -0.986433 -0.708895 0.705314
--0.794569 -0.607174 -0.749462 0.662048
--0.292118 0.956382 -0.199692 -0.979859
-0.594492 -0.804102 0.673765 0.738946
-0.991492 0.130169 0.883463 0.4685
--0.987104 -0.160081 -0.932592 -0.360932
--0.0633152 -0.997994 0.998618 -0.0525509
-0.0551255 -0.998479 0.719411 -0.694585
--0.999948 0.0101573 0.526981 -0.849877
-0.0993847 -0.995049 -0.862746 -0.505638
-0.992713 -0.1205 0.883747 0.467965
--0.383667 -0.923472 -0.106272 -0.994337
--0.994732 -0.102507 -0.664475 -0.74731
-0.18129 0.98343 0.813994 0.580873
-0.997138 -0.0755999 0.282854 -0.959163
-0.671999 -0.740552 -0.136518 -0.990638
-0.518817 0.854885 -0.418001 0.908447
-0.0120463 -0.999927 0.35801 0.933718
-0.622787 0.782391 -0.309093 0.951032
--0.9157 0.401862 -0.870683 0.491845
-0.649123 0.760684 0.0427836 -0.999084
--0.334261 0.942481 -0.889088 0.457736
--0.0222579 -0.999752 -0.609304 -0.792937
--0.861908 -0.507065 -0.973786 0.227467
--0.938676 0.344801 -0.799004 0.601325
--0.0731868 -0.997318 0.504459 -0.863435
--0.499673 -0.866214 -0.467 -0.884257
--0.917585 -0.397539 -0.99909 -0.0426599
-0.222873 0.974847 -0.884694 0.466173
-0.0925997 -0.995703 -0.988543 0.150943
-0.55503 0.83183 -0.659714 -0.751517
-0.925035 -0.379883 0.298356 -0.954455
--0.678142 0.734931 0.640944 -0.767588
--0.957682 0.287828 -0.604641 0.796498
-0.244461 -0.969659 0.906312 -0.422609
--0.768038 0.640405 0.925865 -0.377854
-0.991407 -0.13081 0.851365 -0.524574
--0.983192 -0.182577 0.882851 -0.469653
-0.597093 0.802172 0.403626 -0.914924
--0.990028 0.140873 0.00283061 -0.999996
--0.279387 0.960179 -0.99915 -0.0412119
-0.689404 0.724377 0.784855 -0.619679
-0.509933 0.860214 -0.994634 0.103457
-0.376341 -0.926481 0.633113 0.77406
--0.587393 0.809302 0.998823 -0.048514
-0.573506 0.819201 -0.182104 0.983279
--0.433207 -0.901294 0.680382 -0.732858
--0.99661 -0.0822738 -0.373436 0.927656
-0.826051 -0.563596 -0.9833 0.18199
-0.435369 -0.900252 0.486671 0.873586
-0.945659 -0.325161 -0.131119 -0.991367
-0.964926 0.26252 0.139755 0.990186
-0.702943 0.711246 -0.832565 -0.553928
--0.346129 -0.938187 -0.7062 0.708012
--0.698563 -0.715549 -0.361326 -0.932439
--0.905074 -0.425254 0.998314 -0.058051
--0.910339 0.413864 0.255074 0.966922
--0.270765 0.962646 -0.655777 0.754955
-0.661427 0.750009 -0.999881 0.0154105
--0.606344 -0.795202 -0.676415 -0.736521
-0.933437 0.358742 0.534308 -0.84529
--0.256768 0.966473 0.671216 0.741261
--0.862973 -0.50525 -0.904788 0.425862
--0.896653 0.442733 -0.306373 -0.951912
--0.0322757 -0.999479 -0.996258 0.0864254
--0.700884 0.713275 -0.640047 0.768336
-0.405135 -0.914257 -0.643343 -0.765578
--0.16274 -0.986669 -0.802843 0.59619
-0.819331 -0.573321 -0.204215 0.978926
-0.975295 -0.220908 -0.960116 0.279603
-0.300112 0.953904 0.593916 0.804527
-0.321581 0.946882 0.244385 -0.969678
-0.832392 0.554187 -0.580287 0.814412
--0.667524 0.744588 -0.673963 -0.738765
-0.998293 0.0584118 0.905312 -0.424748
--0.937446 0.348132 -0.540093 0.841605
--0.992797 -0.119811 0.849144 -0.528162
--0.379821 -0.92506 0.304678 -0.952455
-0.96291 -0.269824 -0.579029 -0.815307
--0.887625 0.460567 -0.738843 0.673877
--0.99815 -0.0608076 0.980329 -0.19737
-0.822847 -0.568263 -0.732346 0.680933
--0.977401 0.211393 -0.770521 -0.637415
--0.658393 -0.752674 -0.925516 -0.378708
--0.817948 -0.575292 0.0350736 -0.999385
-0.834038 0.551707 -0.315941 0.948779
-0.275818 0.96121 -0.94594 -0.324342
-0.982702 0.185192 0.975273 -0.221004
--0.756926 0.6535 -0.509098 -0.860708
--0.538483 0.842636 0.950826 0.309727
--0.448591 -0.893737 -0.822463 -0.568818
--0.940981 0.33846 -0.999563 -0.0295478
--0.67612 -0.736792 0.408621 0.912704
--0.0644387 0.997922 0.986393 0.164404
-0.693886 -0.720085 0.278112 0.960549
--0.714585 0.699548 -0.485973 -0.873974
--0.666629 -0.74539 -0.757655 0.652655
--0.377225 -0.926122 0.556453 -0.830879
-0.806514 0.591215 0.911215 0.411931
--0.973537 -0.228528 -0.484177 -0.87497
--0.572493 -0.81991 -0.301942 0.953326
--0.321917 0.946768 0.209775 0.97775
--0.0966819 -0.995315 -0.966765 0.255667
--0.022156 -0.999755 -0.601187 -0.799108
--0.490065 -0.871686 0.580947 -0.813941
--0.0383787 -0.999263 -0.76663 0.642089
-0.368817 0.929502 0.997231 -0.0743695
-0.382097 0.924122 0.0634145 -0.997987
--0.909801 0.415044 0.377986 0.925811
-0.605939 0.795511 -0.63806 -0.769987
--0.764779 -0.644293 0.625668 0.78009
-0.933356 -0.358953 0.553279 0.832996
-0.950655 0.310251 0.99159 0.12942
-0.883695 0.468064 0.0151507 -0.999885
--0.88469 -0.46618 -0.196605 -0.980483
--0.599101 -0.800673 0.164119 -0.986441
-0.478801 0.877923 0.943883 0.33028
-0.204084 -0.978953 -0.132035 0.991245
--0.44046 -0.897772 -0.0579464 -0.99832
--0.93614 -0.351626 -0.196255 -0.980553
-0.715006 0.699118 -0.432557 0.901606
--0.604786 0.796388 -0.520204 0.854042
-0.999902 0.0140277 0.167196 0.985924
-0.0316745 -0.999498 -0.999652 -0.0263814
--0.755761 -0.654847 -0.653533 0.756898
-0.703919 -0.71028 -0.900528 0.434797
-0.676563 0.736385 0.462748 0.88649
-0.0156957 0.999877 0.00115903 -0.999999
--0.923342 -0.383979 -0.139837 0.990174
-0.110296 0.993899 0.05649 0.998403
-0.213219 -0.977004 -0.875531 0.483163
-0.213778 0.976882 -0.901737 -0.432286
--0.976498 -0.215528 -0.964338 0.264673
--0.993042 -0.117762 0.722903 -0.690949
-0.971906 -0.23537 0.19667 0.98047
-0.290674 0.956822 -0.3448 0.938676
--0.0795634 0.99683 -0.110548 0.993871
-0.577232 0.81658 0.269042 0.963128
--0.773155 0.634217 0.914921 0.403632
--0.341341 -0.939939 -0.961922 0.273323
--0.299831 0.953992 0.569931 -0.821693
-0.999914 0.0131025 0.257568 0.96626
--0.655987 -0.754772 -0.759888 -0.650054
--0.581013 0.813894 0.671481 -0.741022
-0.877486 0.479602 0.970052 -0.242899
-0.228486 0.973547 -0.487968 0.872862
-0.999749 -0.0224033 -0.620771 -0.783992
--0.000912469 1 0.99584 0.0911204
-0.999688 -0.0249915 -0.80079 -0.598945
--0.460462 -0.887679 -0.746703 0.665158
-0.35248 -0.935819 -0.10609 -0.994357
-0.732255 0.681031 0.8864 -0.46292
-0.985418 0.17015 -0.179635 -0.983733
-0.365573 -0.930783 0.962622 -0.270849
-0.703883 -0.710316 -0.898304 0.439375
--0.633319 -0.773891 0.861983 0.506937
--0.403783 -0.914855 -0.749104 0.662453
-0.999287 0.037755 -0.80519 -0.593018
-0.763855 -0.645388 0.507935 -0.861395
-0.0215442 0.999768 -0.551191 -0.834379
-0.0726928 0.997354 0.546585 -0.837403
--0.467678 -0.883899 -0.0285191 0.999593
--0.97205 0.234775 0.136339 0.990662
-0.143974 -0.989582 -0.305455 0.952207
-0.360334 0.932823 0.670052 0.742314
--0.889482 0.45697 -0.944501 0.32851
-0.988703 -0.149888 -0.788493 -0.615044
--0.958536 0.284973 -0.811837 0.583884
--0.88659 -0.462556 -0.570508 -0.821292
--0.669359 0.742939 -0.473157 -0.880978
-0.595045 0.803692 0.621335 -0.783545
-0.707102 -0.707112 -1 0.00070253
--0.679036 0.734105 0.729384 -0.684104
-0.216262 -0.976335 -0.981492 0.191505
-0.164679 0.986347 -0.67096 0.741494
--0.947923 0.3185 0.541372 -0.840783
-0.999921 -0.012537 0.311779 -0.950155
-0.186735 0.98241 0.997838 0.0657291
--0.317635 -0.948213 0.615733 -0.787955
-0.999296 -0.0375226 -0.81876 0.574137
-0.786081 -0.618124 -0.788808 0.614639
--0.999316 -0.0369777 -0.848831 -0.528664
-0.757293 0.653075 -0.459969 0.887935
-0.879792 -0.475359 0.746339 0.665566
--0.399741 0.916628 -0.960292 -0.278998
-0.996935 -0.0782292 0.0230558 -0.999734
--0.925065 -0.379809 0.305932 0.952053
-0.99999 -0.00441336 0.904181 -0.427149
-0.999178 -0.0405342 -0.611424 0.791303
--0.95174 0.306906 0.975488 0.220053
-0.0259563 0.999663 -0.854781 -0.518989
-0.11306 0.993588 0.328444 0.944523
-0.716382 0.697709 -0.247783 0.968815
--0.259927 -0.965628 0.397603 -0.917558
-0.999514 0.0311685 -0.999706 0.0242377
--0.392702 0.919666 -0.885193 0.465223
-0.672464 0.74013 -0.0741092 0.99725
-0.992894 -0.118999 0.803168 0.595753
-0.114339 -0.993442 0.446997 -0.894536
--0.253848 -0.967244 0.861314 -0.508074
--0.576194 0.817313 0.14482 -0.989458
-0.866458 -0.499249 -0.423174 -0.906049
--0.863446 -0.504441 -0.860956 0.508679
--0.208738 -0.977972 -0.571263 -0.820767
--0.300053 -0.953923 0.588854 0.808239
-0.355362 -0.934729 0.200485 -0.979697
-0.509351 0.860559 -0.999353 0.0359682
--0.311988 -0.950086 0.951545 -0.307511
-0.984646 0.174565 0.264446 -0.964401
-0.654206 -0.756317 -0.586993 0.809592
--0.347418 -0.93771 -0.602533 0.798094
-0.881914 -0.471411 0.384161 0.923266
--0.681725 0.731608 0.92626 -0.376886
-0.349298 -0.937012 -0.431509 -0.902109
-0.551811 -0.833969 -0.32778 0.944754
--0.398099 -0.917342 -0.99463 0.103495
-0.274926 -0.961466 -0.911817 0.410596
--0.82721 0.561893 -0.999735 -0.0230331
--0.402144 -0.915576 -0.855117 0.518434
-0.235727 -0.971819 0.232602 -0.972572
-0.61484 -0.788652 -0.970161 -0.242463
-0.90483 -0.425773 1 0.000648743
-0.992239 0.124342 0.995014 -0.099738
-0.990709 -0.135996 0.475292 -0.879828
--0.646328 -0.763059 0.398198 -0.9173
-0.987882 0.155208 -0.992304 0.123826
--0.263983 0.964527 -0.0114085 0.999935
-0.130131 -0.991497 0.885267 0.465083
-0.999332 0.0365484 -0.870756 -0.491715
-0.928018 0.372535 0.889378 0.457173
--0.992053 0.125822 0.998789 -0.0491987
--0.60568 0.795708 -0.612634 0.790367
-0.990077 -0.140526 0.0378595 -0.999283
-0.920054 0.391792 -0.834887 0.550421
-0.904608 0.426244 0.998682 0.051322
--0.431126 -0.902292 0.829953 -0.557833
-0.693172 -0.720773 0.371863 0.928288
-0.0939553 0.995576 -0.999882 -0.0153679
--0.722748 0.691111 0.618198 -0.786023
-0.80835 -0.588702 0.993579 -0.113143
-0.814437 0.580252 0.599365 -0.800476
-0.899158 0.437624 0.254836 0.966984
-0.435374 -0.900249 0.486156 0.873872
--0.979739 0.200277 0.25348 -0.967341
-0.724132 -0.689661 0.762361 -0.647152
--0.510536 -0.859856 -0.984946 0.17286
-0.573756 0.819026 -0.152003 0.98838
--0.464003 -0.885834 -0.429416 0.903107
-0.905468 0.424415 0.988667 -0.150128
-0.519149 -0.854684 -0.382429 -0.923985
--0.970248 0.242111 0.778453 0.627702
-0.891434 -0.453151 -0.995566 -0.0940672
-0.105839 -0.994383 -0.38183 -0.924233
--0.992823 0.11959 0.837178 0.546931
-0.821525 -0.570172 -0.555947 0.831218
--0.82718 0.561936 -0.999842 -0.0177747
--0.999353 -0.0359537 -0.898459 -0.439058
-0.333078 0.942899 -0.824821 -0.565394
-0.449516 0.893272 -0.876861 -0.480745
--0.997372 -0.0724544 0.566447 0.824098
--0.0421607 0.999111 -0.475095 -0.879935
--0.558337 -0.829614 -0.899451 -0.437022
-0.661741 -0.749733 -0.998364 -0.0571696
-0.0986591 0.995121 -0.897291 0.441441
--0.188664 -0.982042 0.991486 -0.130212
-0.918185 -0.396151 -0.994115 -0.108333
-0.855355 -0.518042 -0.498459 0.866913
--0.838605 -0.54474 0.489571 0.871963
-0.480667 0.876903 0.992332 0.123597
--0.260181 0.96556 0.373267 0.927724
--0.998576 0.0533484 0.585085 0.810972
--0.117351 0.993091 0.693706 -0.720258
--0.656496 0.754329 -0.801973 0.59736
--0.386728 0.922194 -0.424244 0.905548
--0.08392 -0.996472 -0.520894 -0.853621
-0.0448414 0.998994 -0.22481 0.974403
-0.990393 -0.138283 0.261324 -0.965251
-0.767987 -0.640465 0.92288 -0.385088
-0.864136 -0.503258 -0.783452 -0.621452
-0.955458 0.295127 0.113451 -0.993544
--0.148695 -0.988883 -0.708752 -0.705457
--0.716582 0.697502 -0.219795 -0.975546
-0.985465 -0.169881 -0.206408 0.978466
--0.999067 0.0431975 -0.381384 0.924417
-0.628026 -0.778193 0.34955 -0.936918
-0.712723 -0.701446 -0.698567 -0.715545
-0.802134 -0.597144 0.397755 -0.917492
--0.655598 0.75511 -0.725417 0.68831
-0.898785 0.43839 0.171628 0.985162
-0.893984 0.448098 -0.789855 0.613294
-0.708586 -0.705624 -0.978145 -0.207924
--0.475893 0.879503 0.785338 -0.619067
--0.127396 -0.991852 0.978458 -0.206444
--0.060129 -0.998191 0.964658 0.263504
--0.922163 -0.3868 -0.431396 0.902163
--0.950005 0.312235 0.943246 -0.332094
--0.450644 -0.892704 -0.930435 -0.366457
--0.989156 0.146868 -0.567064 -0.823674
-0.966766 0.255664 0.75136 0.659892
-0.566204 -0.824265 -0.878008 -0.478646
-0.11555 -0.993302 0.552476 -0.833529
--0.979028 -0.203724 -0.0955455 0.995425
-0.752125 0.65902 -0.953828 0.300353
-0.673418 0.739262 0.0548469 0.998495
-0.56649 -0.824068 -0.860871 -0.508824
-0.593577 -0.804777 0.753231 0.657756
--0.708321 0.70589 -0.985266 -0.171029
-0.447093 -0.894487 -0.716109 0.697988
--0.0595712 -0.998224 0.948436 0.316968
--0.256841 0.966454 0.665623 0.746288
-0.691166 -0.722696 0.612239 0.790673
--0.978269 0.20734 -0.448599 -0.893733
--0.490056 -0.871691 0.581738 -0.813376
-0.558348 -0.829607 -0.900018 0.435854
-0.968399 -0.249406 0.99727 -0.0738371
--0.986111 -0.166086 -0.55872 -0.829356
--0.183977 -0.98293 0.940595 0.33953
-0.627855 -0.77833 0.328924 -0.944356
-0.771906 -0.635737 0.976159 0.217056
-0.26555 -0.964097 -0.17306 0.984911
-0.910061 -0.414475 0.319366 0.947631
-0.0983709 -0.99515 -0.909694 -0.415279
-0.721553 0.69236 0.473815 0.880624
--0.527036 -0.849843 0.508119 0.861287
--0.999264 -0.0383555 -0.768116 -0.64031
--0.397585 -0.917566 -0.998868 0.0475609
-0.766037 0.642796 0.76531 0.643662
-0.416073 0.909331 0.480037 0.877248
-0.528034 0.849223 0.605597 0.795772
-0.576239 0.817281 0.150275 0.988644
-0.985112 0.171913 -0.0015853 -0.999999
-0.904549 -0.426369 0.997876 -0.0651382
--0.397654 -0.917535 -0.998479 0.055127
-0.627633 0.778509 0.301865 0.953351
-0.924338 0.381574 0.119771 0.992802
--0.981379 -0.192081 0.887612 0.460593
-0.999075 -0.0429988 -0.399698 0.916647
--0.924078 0.382205 0.0517915 -0.998658
--0.610582 0.791953 -0.957115 0.289708
--0.102439 -0.994739 -0.669636 0.74269
--0.132042 -0.991244 0.77976 -0.626078
-0.150328 0.988636 -0.815047 -0.579394
-0.306462 0.951883 0.964164 0.265306
--0.79935 0.600865 -0.0556209 -0.998452
-0.904115 0.42729 0.986088 0.166223
-0.534183 0.845369 0.981122 0.19339
-0.888044 -0.459759 -0.796996 0.603985
-0.253659 -0.967294 0.871072 0.491156
-0.993366 0.114999 0.505344 -0.862918
-0.393201 -0.919453 -0.909093 0.416593
--0.865205 -0.501417 -0.634492 0.772929
-0.951687 -0.307069 0.979118 0.203292
--0.876314 -0.481741 0.999999 -0.00144456
--0.27713 -0.960832 -0.981292 -0.192524
--0.762534 -0.646948 0.322416 0.946598
-0.857191 0.514998 -0.769041 -0.6392
--0.771444 0.636297 0.989338 0.145635
--0.168273 -0.98574 -0.362541 0.931968
--0.11165 0.993748 0.191569 -0.981479
--0.947707 -0.319142 0.483248 0.875483
-0.708662 -0.705548 -0.975865 -0.218373
--0.280826 0.959759 -0.981782 -0.190013
--0.99332 0.115394 0.53925 0.842146
--0.929168 -0.369658 0.98642 0.164244
--0.923437 0.38375 -0.115217 -0.99334
--0.962195 -0.272362 -0.771498 0.636232
-0.840862 0.54125 0.799908 0.600122
--0.906082 0.423102 0.956594 0.291423
-0.993241 -0.116071 0.595421 0.803414
--0.94206 0.335445 -0.939464 -0.342646
-0.513694 0.857974 -0.857006 0.515306
--0.246205 -0.969218 0.967286 0.25369
--0.473251 -0.880928 0.567181 0.823593
--0.659263 0.751913 -0.963009 0.269471
-0.779173 0.626809 0.199495 -0.979899
--0.0514619 -0.998675 0.42239 0.906414
--0.98781 -0.155662 -0.996942 0.0781468
-0.980121 0.198402 0.432848 0.901467
--0.979066 -0.203545 -0.0772586 0.997011
--0.963356 -0.268226 -0.436364 0.89977
-0.567805 -0.823163 -0.769043 -0.639197
-0.745032 0.667028 -0.721599 -0.692311
--0.999178 0.04055 -0.610168 0.792272
--0.894127 0.447814 -0.769966 -0.638085
-0.434432 -0.900705 0.574813 0.818285
-0.78814 0.615495 -0.946691 -0.322143
--0.997061 -0.0766114 0.184272 0.982875
-0.237976 0.971271 0.449514 0.893273
-0.474096 -0.880473 0.643441 -0.765496
-0.187454 -0.982273 0.999972 0.00742931
-0.0844413 -0.996428 -0.564819 0.825215
--0.285243 -0.958455 -0.795075 0.606511
-0.890103 0.455759 -0.980343 -0.197301
-0.0311042 0.999516 -0.99953 -0.0306625
--0.0892621 0.996008 -0.883894 0.467688
--0.996852 -0.0792878 -0.0830357 0.996547
-0.242302 -0.970201 0.790643 -0.612277
--0.614147 0.789192 -0.987704 -0.156337
-0.936776 -0.349928 -0.369848 0.929092
-0.128052 -0.991767 0.962678 0.270651
-0.313832 -0.949478 0.874344 0.485306
-0.781446 0.623973 -0.161805 -0.986823
--0.992766 0.120068 0.862523 0.506018
--0.984943 0.172878 0.0962166 0.99536
--0.984351 0.176216 0.421739 0.906717
--0.848796 -0.528721 0.667916 -0.744237
-0.223336 0.974741 -0.861568 0.507642
-0.999783 -0.0208423 -0.491306 -0.870987
--0.727023 -0.686613 0.960011 0.279963
--0.0202577 -0.999795 -0.439561 -0.898213
--0.968737 -0.248089 0.998076 -0.0619957
--0.978002 0.208596 -0.559339 -0.828939
-0.651799 -0.758392 -0.304656 0.952463
-0.978 0.208603 -0.559877 0.828576
-0.781045 -0.624474 -0.0982614 0.995161
--0.399925 -0.916548 -0.954505 0.298194
-0.642408 0.766363 0.79695 -0.604045
--0.826592 0.562802 -0.996226 0.0868014
-0.795044 -0.606552 -0.695432 -0.718592
-0.979325 -0.202294 0.0503968 -0.998729
-0.397877 0.917439 -0.996843 0.0793981
--0.537251 -0.843422 0.985786 -0.168008
--0.473235 -0.880936 0.565671 0.824631
--0.0639794 0.997951 0.992913 0.118841
-0.826303 -0.563225 -0.990474 0.137702
-0.919662 -0.392712 -0.885663 -0.464329
-0.142903 -0.989737 -0.200878 0.979616
--0.346227 -0.938151 -0.6988 0.715317
--0.254882 0.966972 0.802181 0.597081
--0.212469 -0.977168 -0.835859 -0.548944
--0.974763 0.223244 -0.86632 0.499489
-0.838129 0.545472 0.411615 0.911358
-0.443694 -0.896178 -0.406464 0.913667
-0.940906 -0.338667 -0.999971 -0.00755227
--0.91981 -0.392365 -0.867525 0.497393
--0.27883 0.96034 -0.999859 0.0167809
--0.977698 -0.210018 -0.673517 0.739172
-0.177027 -0.984206 0.494934 -0.86893
--0.258754 0.965943 0.505853 0.86262
-0.566608 0.823987 -0.853524 0.521054
--0.98759 -0.157053 -0.998038 -0.062608
-0.490304 -0.871551 0.558358 0.8296
--0.726024 -0.687669 0.909331 0.416074
--0.762818 0.646613 0.363689 -0.93152
-0.661326 -0.750099 -0.999998 -0.00183138
--0.99649 -0.0837172 -0.503412 0.864046
-0.897722 0.440563 -0.0693698 0.997591
-0.999689 0.024946 -0.798055 0.602585
-0.870806 -0.491626 0.426512 -0.904482
-0.980952 -0.194249 0.765103 -0.643908
-0.984067 -0.1778 0.561599 0.827409
-0.797511 0.603304 -0.353351 0.935491
--0.690852 -0.722997 0.646045 -0.763299
--0.622325 -0.782759 -0.364627 0.931154
--0.653093 0.757278 -0.462022 0.886869
--0.978063 -0.208309 -0.534783 0.844989
--0.879727 -0.475479 0.755298 -0.655382
-0.656177 0.754607 -0.775981 -0.630757
-0.143206 0.989693 -0.23073 -0.973018
-0.684001 -0.729481 0.997202 -0.0747599
-0.597961 -0.801525 0.302361 0.953193
--0.360535 -0.932746 0.685898 0.727698
-0.971193 -0.238295 0.478596 0.878035
--0.452998 -0.891512 -0.9938 -0.111181
--0.65512 -0.755525 -0.680383 -0.732857
--0.986811 -0.161876 -0.851923 -0.523667
-0.982464 -0.186452 0.995526 0.0944893
-0.481835 0.876262 0.999956 -0.00932831
--0.334012 0.942569 -0.876676 0.481081
--0.0741144 0.99725 0.422082 0.906558
--0.449017 0.893523 -0.848626 0.528993
-0.4779 -0.878414 0.905076 -0.42525
-0.832816 0.55355 -0.516407 0.856343
-0.940445 -0.339945 -0.991782 0.127938
-0.203443 0.979087 -0.066963 -0.997755
-0.96598 -0.258617 0.517975 -0.855396
--0.965603 0.26002 0.38873 -0.921352
--0.248713 0.968577 0.999997 0.00241246
-0.972131 -0.23444 0.102076 0.994777
--0.713021 0.701143 -0.667548 -0.744567
--0.055831 0.99844 0.766654 -0.642061
-0.914958 -0.403549 -0.765761 0.643125
--0.991644 0.129001 0.932414 -0.361391
-0.76044 -0.649408 0.00520863 -0.999986
--0.885283 -0.465052 -0.319631 -0.947542
-0.549946 -0.8352 -0.110289 0.9939
--0.879036 0.476756 0.842193 0.539177
-0.557686 0.830052 -0.862418 -0.506196
-0.99111 -0.133046 0.712491 -0.701681
--0.597725 -0.801701 0.33031 -0.943872
-0.986965 0.160936 -0.897848 -0.440305
-0.486006 -0.873956 0.884268 0.46698
--0.532283 0.846567 0.913413 -0.407034
-0.996883 -0.0788889 -0.0431036 -0.999071
--0.999301 -0.0373801 -0.826866 -0.562399
-0.988311 -0.15245 -0.919768 -0.392462
--0.996506 -0.0835227 -0.486459 0.873703
--0.988747 0.149597 -0.770026 -0.638013
-0.609789 0.792564 -0.923389 -0.383865
-0.41157 -0.911378 0.00614556 -0.999981
--0.075905 -0.997115 0.253382 -0.967366
--0.98198 0.188986 0.986674 -0.162708
--0.603878 -0.797077 -0.41968 -0.907672
-0.488738 -0.87243 0.69755 0.716536
--0.859253 0.51155 -0.957749 0.287604
-0.657552 -0.753409 -0.877532 0.479519
-0.246486 -0.969146 0.974235 -0.225534
-0.696685 -0.717378 -0.107322 0.994224
-0.566193 0.824273 -0.878686 0.4774
-0.0124102 -0.999923 0.323802 0.946125
-0.00623378 0.999981 0.811909 -0.583784
--0.854598 0.51929 -0.367127 0.930171
--0.392163 -0.919896 -0.856432 -0.51626
--0.13518 -0.990821 0.546061 -0.837746
--0.312639 0.949872 0.928246 0.371967
--0.0806236 0.996745 -0.215435 0.976518
--0.901876 -0.431996 0.772411 0.635124
--0.178035 -0.984024 0.581206 0.813757
--0.872313 0.488948 0.680105 -0.733115
--0.951333 -0.308165 0.99599 -0.0894666
--0.682477 0.730907 0.960061 -0.279792
--0.939631 0.342188 -0.933425 0.358772
--0.731676 0.681653 0.922501 0.385995
--0.255491 -0.966812 0.763047 -0.646343
--0.909708 0.415248 0.398673 0.917093
-0.756645 -0.653826 -0.545701 -0.83798
--0.399895 -0.916561 -0.955491 0.295019
-0.941212 -0.337816 -0.995205 -0.0978067
--0.65032 0.759661 -0.114437 0.99343
-0.482582 -0.875851 0.995538 0.0943627
-0.0794969 -0.996835 -0.103921 0.994586
-0.806832 0.590782 0.932015 0.36242
--0.308361 0.951269 0.997625 -0.0688767
--0.842561 0.538602 0.946371 -0.323082
-0.909745 -0.415167 0.39044 0.920628
--0.221662 -0.975124 -0.935666 0.352888
--0.14824 0.988951 -0.675546 0.737318
--0.178118 -0.984009 0.588013 0.808851
--0.85396 -0.520339 -0.250433 -0.968134
--0.899098 0.437747 0.241597 -0.970377
--0.986144 0.165893 -0.574874 0.818242
-0.515005 -0.857187 -0.76851 -0.639838
-0.541051 -0.84099 0.813919 0.580979
-0.539333 0.842092 0.914766 -0.403985
--0.918937 -0.394403 -0.955674 0.294426
-0.629679 0.776856 0.539412 0.842042
--0.882834 0.469685 0.197426 0.980318
-0.658387 0.75268 -0.92517 -0.379554
-0.652339 -0.757927 -0.371708 0.92835
-0.540456 -0.841373 0.852956 0.521983
--0.394395 -0.918941 -0.955417 -0.29526
-0.108767 0.994067 -0.0971167 0.995273
--0.219921 0.975518 -0.983443 -0.181215
-0.914968 0.403526 -0.767405 -0.641163
-0.933287 -0.359133 0.569183 0.822211
--0.205018 -0.978758 -0.225881 -0.974155
-0.956142 -0.292905 -0.118508 0.992953
--0.702383 -0.711799 -0.786417 -0.617695
--0.523606 -0.851961 0.129519 0.991577
--0.39929 0.916825 -0.972868 -0.231361
--0.962387 0.271682 -0.724621 -0.689148
--0.890889 0.45422 -0.999668 0.0257726
--0.863803 0.50383 -0.822878 -0.568218
-0.0383203 -0.999266 -0.770366 -0.637602
-0.505985 -0.862542 -0.93773 0.347365
--0.576667 0.816979 0.201833 -0.97942
--0.982902 0.184132 0.945807 0.324729
-0.778005 0.628258 0.377361 -0.926066
-0.90663 0.421927 0.910885 -0.41266
-0.935169 0.354201 0.0775195 -0.996991
--0.974521 -0.224296 -0.807463 -0.589918
--0.964062 -0.265677 -0.185988 0.982552
-0.785233 -0.6192 -0.697487 0.716597
--0.715896 0.698207 -0.31448 -0.949264
--0.296226 -0.955118 0.2268 0.973941
--0.965795 0.259307 0.455586 -0.890192
--0.99319 -0.116502 0.629686 -0.77685
-0.710123 0.704077 -0.909996 0.414618
--0.831042 -0.55621 -0.75937 0.650659
--0.736197 0.676767 0.48713 0.87333
-0.976181 -0.216956 -0.992609 -0.121353
--0.183365 0.983045 0.917628 -0.39744
--0.752826 -0.658219 -0.91651 0.400012
--0.00303874 0.999995 0.954184 0.299219
--0.564457 0.825462 -0.959016 -0.283353
--0.938991 -0.343943 -0.850556 -0.525884
-0.979377 -0.202043 0.0759539 -0.997111
--0.297919 0.954591 0.395007 -0.918678
-0.414713 0.909952 0.344056 0.938949
--0.68494 -0.7286 0.99855 -0.0538309
--0.756237 -0.654298 -0.596836 0.802363
--0.646332 -0.763056 0.397764 -0.917488
-0.94115 0.337989 -0.996831 0.0795485
-0.982895 0.184169 0.94704 -0.321115
--0.787264 0.616617 -0.891415 0.453187
-0.767737 -0.640765 0.907126 -0.42086
--0.717265 0.6968 -0.123363 -0.992362
-0.660264 -0.751034 -0.99027 0.13916
-0.999869 -0.0161817 -0.0474296 -0.998875
--0.944293 0.329107 -0.521877 -0.853021
-0.883475 -0.468478 0.0619755 0.998078
--0.978023 -0.208498 -0.550956 0.834534
-0.997793 -0.0664027 0.9352 -0.354119
-0.403653 -0.914912 -0.758447 -0.651735
-0.845737 -0.533599 0.965458 0.260558
--0.358995 -0.93334 0.556995 0.830516
--0.152602 0.988288 -0.925707 0.378242
--0.902144 0.431436 0.81035 -0.585947
-0.402212 -0.915546 -0.85121 -0.524826
-0.676514 -0.73643 0.456847 -0.889545
-0.372174 -0.928163 0.90647 0.42227
-0.193999 -0.981002 0.78123 0.624243
-0.599895 0.800079 0.0656752 -0.997841
--0.891117 0.453773 -0.999702 -0.0244157
-0.980408 0.196979 0.558652 0.829402
--0.99905 0.04358 -0.345725 0.938336
-0.992823 -0.119595 0.837463 0.546494
-0.999987 -0.0051673 0.869438 -0.494042
-0.256035 -0.966668 0.725465 0.688259
-0.520562 0.853824 -0.224995 0.97436
--0.688695 -0.725051 0.841583 -0.540128
--0.826112 0.563506 -0.985217 0.171309
-0.31506 -0.949072 0.804468 0.593996
--0.403107 -0.915153 -0.795949 0.605363
--0.915761 0.401723 -0.87803 0.478605
-0.337179 0.941441 -0.986307 -0.164922
--0.895878 -0.4443 -0.467253 0.884124
-0.376923 -0.926245 0.583265 0.812282
-0.92968 0.368367 0.99966 0.0260631
--0.90295 -0.429745 0.90529 0.424794
--0.0510917 0.998694 0.388501 -0.921448
-0.993921 -0.110092 0.0359412 0.999354
-0.793505 0.608563 -0.85328 0.521453
-0.015337 0.999882 0.0370234 -0.999314
-0.300475 -0.95379 0.624054 -0.781381
-0.995826 0.091271 -0.959675 0.281113
-0.927724 -0.373267 0.850568 -0.525865
-0.896766 0.442506 -0.282139 0.959373
--0.937756 0.347295 -0.612955 0.790118
-0.0313986 -0.999507 -0.999999 0.0012208
-0.932549 -0.361043 0.724511 0.689263
--0.0266622 0.999644 -0.889268 0.457386
--0.974427 -0.224706 -0.781992 -0.623289
-0.848294 0.529525 0.735357 -0.67768
--0.429852 -0.902899 0.900171 -0.435537
--0.911073 -0.412245 0.0800962 -0.996787
--0.870565 -0.492053 0.38166 0.924303
--0.53475 -0.845011 0.991878 0.127192
--0.913191 -0.407532 -0.422816 -0.906216
--0.698547 0.715564 -0.359279 0.93323
-0.44312 -0.896462 -0.347098 0.937829
-0.333429 0.942775 -0.845307 -0.53428
-0.173853 -0.984772 0.194096 -0.980982
--0.711198 -0.702992 -0.836296 0.548278
-0.728376 -0.685178 0.996256 -0.0864579
-0.236398 0.971656 0.29908 0.954228
-0.422024 -0.906585 0.915267 -0.402847
--0.95696 0.290218 -0.389064 0.921211
-0.989095 0.147277 -0.600659 0.799505
-0.726303 -0.687374 0.925456 -0.378855
-0.988808 0.149196 -0.74354 0.668691
--0.197619 0.980279 0.503346 0.864085
-0.646214 -0.763156 0.411873 0.911241
-0.693829 0.72014 0.285756 -0.958302
--0.983194 -0.182562 0.882128 -0.47101
--0.533719 -0.845662 0.969058 0.246834
-0.625205 0.780461 -0.00484233 0.999988
--0.980277 0.197628 0.502622 -0.864506
--0.104411 -0.994534 -0.510216 0.860047
--0.85734 -0.514751 -0.78714 -0.616774
-0.166751 0.985999 -0.501566 0.865119
--0.456438 -0.889755 -0.962455 0.271441
-0.537427 -0.843311 0.982083 0.188451
-0.059073 -0.998254 0.93144 -0.363895
-0.0839539 -0.99647 -0.523798 0.851842
--0.992439 -0.122743 0.966119 -0.258096
--0.465345 0.885129 -0.288121 -0.957594
--0.563404 0.826182 -0.987273 -0.159034
-0.426987 0.904258 0.9911 -0.133117
-0.785667 -0.618649 -0.745964 0.665986
--0.197622 -0.980278 0.503122 -0.864216
-0.999839 0.0179166 -0.219168 0.975687
-0.845212 0.534432 0.986392 -0.164409
--0.999707 0.0241881 -0.750126 -0.661294
--0.698489 -0.715621 -0.351659 -0.936128
-0.981812 -0.189853 0.968484 -0.249074
--0.259831 -0.965654 0.406678 -0.913572
--0.94355 0.33123 -0.698979 -0.715143
--0.884457 0.466622 -0.147352 0.989084
--0.114779 -0.993391 0.486131 0.873886
--0.457624 0.889146 -0.91781 -0.397021
--0.944176 0.329442 -0.55183 -0.833957
-0.996483 0.0837982 -0.510419 0.859926
-0.382833 0.923817 -0.0162391 -0.999868
--0.892341 -0.451362 -0.956872 0.290511
--0.964438 -0.264309 -0.0452214 0.998977
-0.576911 -0.816807 0.231065 -0.972938
--0.205625 -0.978631 -0.285875 -0.958267
-0.997651 0.0684968 0.840893 0.541202
--0.872578 -0.488475 0.718879 0.695135
--0.32746 0.944865 -0.366011 0.930611
-0.0988214 0.995105 -0.889968 0.456023
--0.0363451 0.999339 -0.880577 -0.473903
-0.620829 0.783946 -0.534827 0.844962
-0.999205 -0.039865 -0.663007 0.748613
-0.99276 0.120115 0.864935 -0.501884
--0.519911 -0.854221 -0.298626 0.95437
--0.429689 0.902977 0.907894 0.4192
--0.658562 0.752527 -0.933744 0.357942
-0.550441 -0.834874 -0.168925 0.985629
-0.221033 0.975266 -0.956438 0.291936
-0.867832 0.496858 -0.160447 0.987044
-0.56531 -0.824878 -0.924642 -0.380836
--0.334393 0.942434 -0.895426 0.445211
--0.879596 -0.475721 0.773083 -0.634305
--0.985163 0.17162 -0.0313527 0.999508
--0.149387 0.988779 -0.756315 0.654207
--0.230836 0.972993 -0.265088 -0.964224
-0.872705 -0.488248 0.736706 -0.676213
--0.32926 -0.944239 -0.535621 -0.844458
-0.993057 0.117631 0.713754 -0.700396
-0.0347523 0.999396 -0.944627 0.328147
-0.621952 0.783056 -0.408669 0.912682
-0.979707 0.200434 0.237975 0.971271
--0.909955 0.414707 0.343444 0.939173
--0.201551 -0.979478 0.1259 -0.992043
--0.89189 -0.452252 -0.981039 0.193809
--0.186228 0.982507 0.993115 -0.11714
--0.917103 0.39865 -0.986634 0.162955
--0.858818 -0.512281 -0.929838 -0.367968
-0.642428 -0.766346 0.795358 0.60614
--0.0763551 -0.997081 0.209471 -0.977815
-0.424904 -0.905238 0.995328 -0.0965484
-0.742491 0.669856 -0.413123 -0.910675
-0.734254 -0.678875 0.714185 0.699957
-0.388479 -0.921458 -0.587632 0.809128
-0.656655 0.754191 -0.814378 -0.580335
--0.961655 -0.274261 -0.881292 0.472572
-0.66513 0.746728 -0.872694 0.488268
--0.999997 -0.00253077 0.968146 0.250384
--0.758308 0.651897 -0.316909 -0.948456
--0.581243 0.81373 0.692134 -0.721769
--0.866572 -0.499052 -0.402477 0.91543
-0.109056 0.994036 -0.0681791 0.997673
--0.572523 -0.819888 -0.298416 0.954436
-0.524823 0.851211 0.269514 0.962996
--0.278035 -0.960571 -0.995045 -0.0994253
-0.896216 -0.443618 -0.398702 -0.91708
--0.94937 0.314159 0.8571 -0.51515
--0.711639 -0.702545 -0.800288 0.599616
--0.71397 -0.700177 -0.560882 0.827896
--0.979734 0.200303 0.25095 -0.968
-0.67739 -0.735624 0.559211 -0.829025
-0.104223 -0.994554 -0.52639 -0.850243
--1 -0.000133812 0.99991 0.0133808
--0.311326 0.950303 0.970656 0.240472
--0.99515 0.0983696 -0.90975 0.415157
-0.89183 0.452371 -0.983545 0.180665
--0.875702 -0.482853 0.992142 0.125114
-0.87344 -0.486931 0.829938 -0.557855
--0.534178 -0.845372 0.981017 0.193924
--0.932607 0.360892 0.713272 0.700888
--0.552201 -0.833711 -0.371631 -0.92838
--0.992238 0.124356 0.995157 0.0983022
--0.934198 -0.356754 0.343612 -0.939112
--0.971441 -0.23728 0.384412 -0.923161
--0.270874 0.962615 -0.664325 0.747444
--0.344385 -0.938828 -0.824829 0.565382
-0.869115 0.49461 0.0974812 0.995237
--0.898978 0.437994 0.2148 -0.976658
-0.342008 0.939697 -0.940118 0.340848
--0.981491 0.191506 0.913046 -0.407856
-0.166115 -0.986106 -0.556251 -0.831014
-0.172583 -0.984995 0.0663535 -0.997796
--0.297402 -0.954752 0.344656 0.938729
--0.903602 0.428373 0.959144 -0.282918
-0.929014 -0.370044 0.978757 -0.205022
--0.83442 0.55113 -0.249616 -0.968345
--0.619788 0.784769 -0.641872 -0.766812
--0.765726 0.643167 0.733276 -0.679931
-0.980999 0.194012 0.780399 0.625281
-0.991987 -0.12634 0.994855 -0.101312
-0.62138 -0.78351 -0.474158 -0.88044
-0.807239 -0.590225 0.954782 -0.297306
--0.0222645 -0.999752 -0.609821 -0.792539
--0.621484 0.783426 -0.462335 -0.886705
-0.309578 0.950874 0.998259 -0.0589835
-0.120502 0.992713 0.883813 0.46784
--0.908658 0.417541 0.614924 0.788586
-0.188034 -0.982163 0.997795 0.0663765
-0.588634 0.8084 0.994497 -0.104761
-0.838363 0.545113 0.450325 0.892865
-0.179093 0.983832 0.665177 0.746686
-0.348927 -0.93715 -0.466845 -0.884339
--0.899643 -0.436625 0.360373 0.932808
-0.183677 -0.982987 0.929784 -0.368105
--0.561329 0.827593 -0.995849 0.0910222
-0.663992 -0.747739 -0.936627 -0.350329
--0.986111 0.166085 -0.558793 0.829307
--0.897195 0.441634 -0.187665 -0.982233
--0.269409 0.963026 -0.543338 0.839514
--0.493328 -0.869843 0.242664 -0.97011
-0.796014 -0.605278 -0.571957 -0.820284
-0.904893 0.425639 0.999881 -0.0154584
--0.941931 0.335805 -0.951871 -0.306499
--0.814627 -0.579986 0.572895 -0.819629
--0.999995 0.00302294 0.954656 -0.297711
--0.750805 0.660524 -0.99449 -0.104834
-0.999388 0.0349863 -0.936687 -0.350168
-0.617413 -0.786639 -0.841055 -0.540949
-0.150084 -0.988673 -0.800515 0.599313
-0.973611 0.228215 -0.512036 -0.858964
-0.513082 -0.85834 -0.891532 -0.452957
--0.681376 -0.731934 0.90723 0.420635
-0.920635 -0.390425 -0.744258 -0.667892
--0.86955 -0.493844 0.18469 0.982797
-0.996881 -0.0789225 -0.0464647 -0.99892
-0.656254 0.75454 -0.782357 -0.62283
-0.385463 -0.922723 -0.296561 0.955014
--0.87287 0.487953 0.759162 -0.650901
-0.864479 -0.502669 -0.739291 -0.673387
-0.972826 -0.231538 -0.194881 0.980827
--0.997771 -0.0667312 0.923037 0.384712
-0.649364 0.760478 0.0110494 -0.999939
-0.12246 -0.992473 0.958363 -0.285553
-0.868502 0.495686 -0.0262245 0.999656
-0.866813 -0.498634 -0.357809 -0.933795
-0.752623 0.658451 -0.928393 0.371601
-0.947323 -0.320281 0.374771 -0.927117
--0.771958 0.635673 0.974344 0.225064
--0.966045 -0.258375 0.539225 0.842161
-0.0532211 0.998583 0.574701 0.818364
-0.933765 0.357887 0.454775 -0.890606
--0.925374 0.379055 0.382397 -0.923998
--0.376877 0.926263 0.587283 0.809382
--0.999723 -0.0235421 -0.705857 0.708354
-0.973681 0.227915 -0.538262 -0.842778
-0.374075 -0.927398 0.801615 0.597841
-0.766147 -0.642665 0.776227 -0.630453
-0.965111 0.261841 0.209069 0.977901
--0.498569 -0.86685 -0.350801 -0.93645
--0.520399 -0.853923 -0.243542 0.96989
-0.879886 0.475184 0.732931 -0.680303
--0.999858 -0.0168237 -0.111421 0.993773
--0.270427 0.96274 -0.628919 0.777471
-0.995578 0.093941 -0.999859 0.0168034
-0.861119 0.508403 -0.997256 0.0740363
--0.193602 0.98108 0.805854 0.592114
-0.582469 0.812853 0.792712 0.609596
-0.801045 -0.598604 0.225041 -0.974349
--0.309731 -0.950824 0.997182 -0.0750207
-0.912128 0.409905 -0.175552 -0.98447
-0.640678 -0.767809 0.911812 0.410608
-0.245591 0.969374 0.949297 0.314381
-0.280579 0.959831 -0.98635 0.164663
--0.683573 -0.729882 0.991097 0.133141
--0.267209 0.963639 -0.339168 0.940726
-0.721814 0.692087 0.506686 0.86213
--0.0338814 -0.999426 -0.969602 0.244686
-0.0555015 0.998459 0.745054 0.667005
--0.997151 -0.0754248 0.299652 0.954049
--0.225496 0.974244 -0.728899 -0.684621
--0.99409 0.108562 -0.11767 0.993053
--0.904111 -0.427297 0.985956 0.167006
--0.160624 -0.987016 -0.911318 0.411704
-0.274092 -0.961703 -0.872864 0.487963
-0.893801 0.448463 -0.814243 0.580524
-0.068559 -0.997647 0.837502 0.546434
--0.789351 -0.613942 -0.991425 -0.130676
-0.972995 -0.230826 -0.266044 0.963961
-0.327392 -0.944889 -0.359263 0.933236
--0.13865 0.990341 0.225422 0.974261
--0.703454 -0.710741 -0.870143 -0.492799
-0.737064 -0.675823 0.371569 0.928405
-0.155291 -0.987869 -0.993311 0.115466
-0.874492 -0.485039 0.930386 -0.366581
-0.797292 -0.603594 -0.387117 -0.922031
-0.63596 -0.771722 0.982037 -0.18869
-0.306559 0.951852 0.966813 0.255484
-0.955031 0.296506 0.255194 -0.96689
-0.0474776 -0.998872 0.0371488 -0.99931
-0.810093 -0.586302 0.983255 0.182233
-0.749571 0.661924 -0.996674 -0.0814914
--0.736526 -0.67641 0.444197 -0.895929
-0.767297 0.641292 0.876111 0.48211
--0.425021 0.905184 0.996488 -0.0837364
-0.00976966 0.999952 0.559527 -0.828812
--0.823002 0.568038 -0.750682 0.660664
--0.933252 0.359223 0.577098 0.816675
-0.999047 -0.0436438 -0.33972 0.940527
--0.61284 -0.790207 -0.999964 -0.00847829
-0.957688 -0.287809 -0.606219 0.795298
--0.182762 0.983157 0.891526 -0.452969
-0.695004 0.719006 0.126085 -0.992019
--0.988836 -0.149006 -0.730524 0.682887
-0.999748 0.0224699 -0.625974 0.779844
-0.881965 -0.471314 0.374013 0.927423
--0.817 -0.576638 0.198392 -0.980123
-0.0909587 -0.995855 -0.950388 0.311067
--0.98554 -0.169443 -0.249615 -0.968345
--0.92804 -0.372481 0.892019 0.451998
--0.911193 -0.411981 0.0511395 -0.998692
-0.304452 -0.952528 0.887153 -0.461476
-0.388095 0.921619 -0.55344 -0.832889
--0.950033 0.312149 0.946192 -0.323605
--0.893694 -0.448678 -0.827934 0.560825
-0.786408 0.617708 -0.820235 -0.572027
--0.569042 0.822309 -0.664661 -0.747145
--0.914608 0.404342 -0.707239 0.706974
--0.346886 0.937907 -0.64687 -0.7626
--0.787272 0.616606 -0.892024 0.451987
-0.360463 0.932774 0.680213 0.733014
-0.268887 0.963172 -0.497067 -0.867712
--0.998262 -0.0589236 0.925891 -0.377792
-0.365447 -0.930832 0.958878 -0.28382
--0.411358 0.911474 -0.0171533 -0.999853
-0.477619 -0.878567 0.891004 -0.453995
-0.934358 0.356336 0.301284 -0.953534
--0.179203 -0.983812 0.673443 0.739239
--0.130137 0.991496 0.884964 0.46566
-0.949019 0.315218 0.794472 0.6073
--0.667593 0.744527 -0.667152 -0.744922
-0.160731 0.986998 -0.90682 0.421518
--0.483353 0.875426 0.983381 0.181553
--0.999299 0.0374467 -0.823095 0.567904
--0.011868 -0.99993 0.374605 -0.927185
--0.502901 0.864344 -0.757154 0.653237
--0.863698 0.50401 -0.834536 -0.550953
--0.566901 0.823786 -0.834436 -0.551104
-0.815018 0.579436 0.516389 -0.856354
-0.93661 -0.350374 -0.325201 0.945645
-0.832952 -0.553346 -0.495235 -0.868759
--0.503921 -0.863749 -0.828826 -0.559507
--0.0485891 -0.998819 0.14789 0.989004
-0.833239 0.552913 -0.449496 0.893282
-0.748361 0.663292 -0.965288 -0.261189
--0.404724 0.914439 -0.677102 -0.735889
-0.313727 0.949513 0.879674 -0.475577
--0.971279 0.237943 0.446443 0.894812
-0.00041768 -1 0.999128 0.0417559
--0.999383 -0.0351257 -0.93171 -0.363204
-0.617944 -0.786222 -0.802681 -0.596408
-0.932924 -0.360073 0.649012 0.760778
--0.234889 -0.972022 0.147966 0.988992
--0.663197 0.748445 -0.968513 -0.248962
-0.00576732 -0.999983 0.838248 0.54529
-0.982596 0.185754 0.986309 -0.164909
-0.340804 0.940135 -0.975977 0.217874
-0.361719 -0.932287 0.772503 -0.635011
-0.00666269 -0.999978 0.78613 0.618061
--0.976491 0.215559 -0.965159 -0.261663
-0.637151 -0.770739 0.999375 -0.0353567
-0.740062 0.672538 -0.064061 -0.997946
--0.369708 -0.929148 0.985521 -0.169551
-0.366756 0.930317 0.989186 0.14667
--0.764728 -0.644354 0.619466 0.785024
--0.924695 0.380709 0.211975 -0.977275
--0.988556 -0.150855 -0.844776 0.535121
-0.985254 0.171096 -0.0844554 -0.996427
-0.210588 -0.977575 -0.71546 0.698653
--0.71828 -0.695755 0.0220199 0.999758
-0.982746 -0.184958 0.969731 0.244174
--0.365527 -0.930801 0.961282 0.275565
--0.239001 0.971019 0.54112 -0.840945
--0.23249 -0.972599 -0.0980746 0.995179
-0.210081 -0.977684 -0.67825 0.734831
--0.822928 0.568145 -0.741982 0.67042
-0.983476 0.181036 0.798748 -0.601666
-0.994232 -0.107251 -0.247171 0.968972
-0.664107 -0.747638 -0.931152 -0.364631
-0.181447 -0.983401 0.823174 -0.567789
--0.997386 0.0722621 0.582226 -0.813027
--0.177429 -0.984134 0.52995 0.848029
--0.18482 -0.982772 0.966212 0.25775
-0.304516 0.952507 0.890228 0.455516
-0.85424 0.519879 -0.302136 -0.953265
--0.983822 0.179149 0.669376 0.742924
-0.122284 0.992495 0.953158 0.302473
--0.197628 0.980277 0.50257 0.864537
--0.188849 0.982006 0.98886 0.14885
-0.993288 -0.115669 0.562359 0.826893
--0.0183252 -0.999832 -0.258843 -0.965919
-0.636545 0.77124 0.993504 0.113794
-0.812887 0.582422 0.789169 -0.614176
--0.922217 0.386673 -0.418868 -0.908047
--0.484041 0.875045 0.96607 0.25828
--0.246351 -0.969181 0.971006 0.239056
-0.705559 -0.708651 -0.976201 0.216866
-0.610507 -0.792011 -0.954324 0.298775
--0.0768955 -0.997039 0.156195 -0.987726
--0.544177 -0.83897 0.546919 -0.837185
--0.98956 0.144122 -0.319717 -0.947513
--0.259979 -0.965614 0.392644 -0.919691
--0.582003 0.813187 0.756443 -0.65406
-0.0965605 -0.995327 -0.969812 -0.243854
--0.878713 0.477351 0.876749 0.480949
-0.672773 0.739849 -0.0324336 0.999474
-0.486028 0.873943 0.883068 -0.469246
--0.950611 0.310385 0.989672 -0.143353
-0.748242 0.663426 -0.960446 -0.278468
-0.976167 0.217019 -0.993372 0.114945
-0.132747 0.99115 0.733277 -0.67993
--0.794226 -0.607622 -0.785598 0.618737
-0.0403755 -0.999185 -0.623914 -0.781493
-0.94954 -0.313645 0.883753 -0.467954
-0.33691 -0.941537 -0.981206 0.192964
-0.553946 -0.832553 -0.556463 0.830873
--0.87799 0.47868 0.939217 0.343324
-0.975669 0.219247 -0.993611 -0.112863
-0.706657 0.707556 -0.997981 -0.0635105
--0.304259 -0.952589 0.87765 0.479301
-0.994481 0.104921 -0.465441 -0.885079
-0.694488 -0.719505 0.196974 0.980409
-0.541 -0.841023 0.817408 0.576059
-0.747292 0.664496 -0.910906 -0.412615
--0.362255 0.932079 0.807751 -0.589524
-0.474066 0.880489 0.640889 0.767634
-0.459921 -0.88796 -0.785857 -0.618408
-0.404926 0.91435 -0.66068 0.750668
-0.986778 0.162079 -0.840965 -0.541089
--0.920697 -0.390279 -0.733565 0.67962
-0.546761 -0.837289 0.26711 0.963666
--0.999835 -0.01817 -0.243818 0.969821
--0.137497 0.990502 0.337011 0.941501
-0.362656 0.931923 0.832349 0.554252
--0.11463 0.993408 0.472952 -0.881088
--0.351996 -0.936001 -0.15734 0.987545
--0.445498 0.895283 -0.580957 0.813934
--0.923896 0.382645 0.00420162 -0.999991
-0.625132 0.780519 -0.0141466 0.9999
--0.927294 0.374334 0.784632 -0.619962
--0.984918 0.173022 0.110771 0.993846
--0.690627 0.723212 0.669488 0.742823
-0.963935 0.266139 -0.232811 0.972522
-0.133115 0.991101 0.707572 -0.706641
--0.428946 0.90333 0.939269 0.343182
-0.575339 -0.817915 0.0407737 -0.999168
-0.898882 0.438191 0.193392 0.981122
--0.0557953 -0.998442 0.764355 0.644795
-0.740666 -0.671874 -0.153282 0.988182
-0.325157 0.94566 -0.13069 -0.991423
--0.934129 0.356935 0.361786 0.932261
-0.807071 -0.590454 0.945963 -0.324274
-0.906224 0.422797 0.946257 -0.323415
--0.205173 0.978726 -0.241311 0.970448
-0.995472 0.0950548 -0.995483 -0.0949355
--0.722365 0.691512 0.573679 -0.81908
--0.959023 0.283328 -0.899602 0.436711
-0.542243 -0.840222 0.723599 0.690221
--0.924788 -0.380483 0.235839 0.971792
--0.992264 0.124145 0.992833 0.119506
--0.827162 0.561963 -0.999894 -0.0145497
--0.824212 0.566282 -0.873488 0.486845
-0.994356 -0.106095 -0.35797 0.933733
--0.442893 -0.896574 -0.323277 -0.946305
--0.826636 -0.562737 -0.996882 -0.0789076
--0.0085872 0.999963 0.653399 0.757014
--0.683298 0.730139 0.985382 -0.170358
-0.872073 -0.489376 0.643371 -0.765555
--0.374697 -0.927147 0.759753 -0.650212
--0.997039 -0.0768934 0.156402 0.987694
--0.625478 0.780242 0.0301942 -0.999544
-0.529463 0.848333 0.730369 0.683052
-0.744192 -0.667966 -0.628972 0.777428
--0.810573 0.585638 0.965049 0.26207
--0.770304 0.637677 0.999462 -0.0327999
-0.284175 0.958772 -0.857573 0.514362
-0.0126481 0.99992 0.3012 -0.953561
--0.971836 0.235656 0.225468 0.974251
-0.941423 -0.337227 -0.987149 -0.159804
-0.681188 0.732109 0.896124 0.443804
--0.53885 -0.842402 0.936428 -0.350859
--0.759042 0.651041 -0.208158 -0.978095
-0.982044 0.188654 0.991614 0.129233
--0.132154 -0.991229 0.772629 -0.634857
--0.481455 -0.876471 0.999421 0.034019
-0.959664 0.281148 -0.974867 -0.222789
-0.780911 0.624643 -0.0767572 -0.99705
-0.710056 0.704146 -0.913938 0.405854
-0.756598 -0.65388 -0.551639 -0.834083
--0.484511 -0.874785 0.950823 -0.309735
--0.791979 -0.610549 -0.95589 0.293725
--0.258373 0.966045 0.539445 0.842021
-0.894714 0.446639 -0.679739 0.733454
--0.852285 -0.523078 0.0679193 -0.997691
-0.980563 -0.196204 0.622418 -0.782685
--0.488263 -0.872696 0.735495 -0.67753
-0.530377 -0.847762 0.799644 -0.600474
--0.526761 0.850014 0.479983 -0.877278
--0.852878 -0.522111 -0.0454903 -0.998965
--0.984731 -0.174084 0.217096 -0.97615
-0.590561 -0.806993 0.941552 0.336868
-0.940829 -0.338882 -0.999883 0.0153063
--0.373697 -0.927551 0.825322 -0.564662
--0.0995524 -0.995032 -0.854101 0.520108
--0.564148 0.825674 -0.968947 -0.247267
-0.879338 0.476199 0.806357 -0.591429
-0.925719 -0.378212 0.464929 -0.885348
--0.832743 -0.55366 -0.527632 0.849473
--0.966792 -0.255566 0.758008 0.652245
-0.74395 -0.668235 -0.600436 0.799673
--0.161915 -0.986805 -0.849823 0.527068
-0.305667 0.952139 0.938666 0.344827
--0.129641 0.991561 0.907141 0.420826
-0.0271571 -0.999631 -0.910811 0.412823
-0.903392 -0.428815 0.944157 -0.329495
-0.931491 -0.363766 0.8923 0.451442
-0.307106 -0.951675 0.979892 -0.199528
-0.973325 0.229431 -0.400995 -0.91608
-0.917554 0.397611 -0.998727 -0.0504457
--0.389926 -0.920846 -0.70697 -0.707244
--0.270883 -0.962612 -0.665017 -0.746828
--0.483922 -0.875111 0.96949 -0.24513
-0.990325 -0.138764 0.214142 -0.976802
-0.187577 -0.98225 0.999802 0.0198898
--0.0453115 0.998973 -0.178717 -0.983901
-0.94385 -0.330373 -0.631243 -0.775585
--0.948793 0.315899 0.748825 -0.662767
-0.822859 0.568246 -0.733717 -0.679455
--0.216362 0.976313 -0.98339 0.181508
-0.974139 0.225951 -0.696146 -0.717901
--0.711371 -0.702816 -0.822537 0.568711
-0.660103 0.751175 -0.987056 -0.160374
-0.993069 -0.117537 0.707052 0.707161
--0.386061 0.922473 -0.357728 0.933826
-0.681729 -0.731605 0.926457 -0.376401
--0.463191 0.886259 -0.510239 -0.860033
--0.778758 0.627324 0.263835 0.964568
-0.354388 -0.935098 0.0974915 -0.995236
-0.876405 -0.481575 0.999793 0.0203465
-0.91322 -0.407468 -0.429146 0.903235
--0.361218 -0.932481 0.737326 0.675537
--0.617124 -0.786866 -0.860371 0.509668
-0.667107 0.744962 -0.714284 0.699855
-0.971441 -0.237282 0.384576 0.923093
--0.803335 0.595527 0.573233 -0.819392
-0.92211 0.386928 -0.443797 0.896127
-0.818573 -0.574403 -0.0735664 0.99729
-0.32004 0.947404 0.398214 -0.917292
-0.808739 0.588167 0.998885 0.047212
-0.979474 -0.201572 0.123782 -0.992309
-0.747622 -0.664125 -0.930275 0.366864
-0.347103 -0.937827 -0.629016 -0.777392
--0.650387 -0.759603 -0.12324 -0.992377
-0.648232 -0.761443 0.159142 0.987256
--0.856072 -0.516856 -0.61343 -0.789749
-0.788293 -0.6153 -0.954375 0.29861
-0.360274 -0.932847 0.665244 -0.746626
-0.97551 0.219957 -0.982772 -0.184823
-0.998296 -0.0583608 0.903134 0.42936
-0.832801 0.553572 -0.518675 0.854971
-0.900582 0.434686 0.551468 0.834196
--0.751176 -0.660102 -0.987043 0.160458
-0.133905 0.990994 0.649076 -0.760723
-0.945431 0.325822 -0.199994 0.979797
-0.898926 -0.4381 0.203253 -0.979126
-0.816303 0.577624 0.315005 -0.94909
--0.726677 0.686979 0.944702 -0.327929
--0.425215 0.905092 0.998059 -0.0622765
-0.829423 -0.55862 -0.913859 -0.406032
--0.306031 0.952021 0.951179 -0.30864
--0.019519 0.999809 -0.372062 0.928208
--0.820506 -0.571638 -0.399522 -0.916724
-0.937973 -0.34671 -0.661063 0.75033
--0.757841 0.652439 -0.383853 -0.923394
--0.932712 -0.360621 0.692575 -0.721346
--0.547031 0.837112 0.235871 0.971784
--0.95126 0.308391 0.997832 0.0658188
--0.970635 0.240558 0.668441 0.743765
--0.968155 -0.25035 0.985338 0.170615
--0.950706 -0.310092 0.993611 0.112855
--0.902222 0.431273 0.820786 -0.571236
--0.890078 0.455809 -0.979227 0.202765
--0.620806 0.783964 -0.537265 -0.843413
-0.914389 0.404836 -0.668035 -0.74413
--0.229904 0.973213 -0.356018 -0.934479
-0.936652 -0.350262 -0.336511 0.94168
-0.969902 -0.243495 0.859761 0.510697
-0.82503 0.565089 -0.934546 -0.355843
-0.990755 -0.135661 0.504757 -0.863261
-0.954039 -0.299684 0.557207 0.830374
-0.374269 0.92732 0.788962 -0.614443
-0.951226 0.308494 0.998487 -0.0549942
--0.914473 -0.404647 -0.683227 -0.730206
--0.868853 0.49507 0.0446756 -0.999002
-0.798805 0.60159 -0.145809 0.989313
--0.99932 0.0368825 -0.853832 0.520549
--0.995212 -0.097743 -0.93407 -0.357091
--0.993753 0.111601 0.186678 0.982421
-0.391544 -0.920159 -0.819756 0.572712
--0.880053 0.474875 0.708617 0.705593
-0.197874 -0.980228 0.480779 0.876842
-0.912342 0.40943 -0.226596 -0.973989
-0.993546 0.113434 0.363725 -0.931506
--0.154254 -0.988031 -0.975746 -0.218905
--0.958538 0.284964 -0.812396 0.583106
--0.885786 -0.464094 -0.420031 -0.90751
-0.911475 0.411356 -0.0174219 -0.999848
-0.823939 -0.566679 -0.849014 0.52837
-0.971416 0.237384 0.394208 -0.919021
--0.779466 -0.626444 0.153423 -0.988161
--0.959047 0.283248 -0.903219 0.429179
--0.97881 0.204773 -0.201418 -0.979505
-0.979324 0.202296 0.0501291 0.998743
-0.373326 -0.9277 0.847244 0.531204
--0.977912 -0.209015 -0.594325 0.804225
--0.422028 0.906583 0.915457 -0.402415
-0.0247377 -0.999694 -0.78533 0.619077
--0.999373 0.0353923 -0.921692 0.387922
--0.860486 0.509475 -0.998733 0.0503156
--0.111111 -0.993808 0.138024 0.990429
--0.942834 0.333262 -0.835693 -0.549196
--0.794499 -0.607266 -0.757046 0.653361
-0.200892 -0.979613 0.192283 0.98134
-0.99705 0.0767565 0.169942 0.985454
-0.990942 0.134291 0.618888 0.78548
-0.749799 -0.661666 -0.998888 0.0471399
--0.999202 -0.0399306 -0.658079 -0.752948
--0.973071 -0.230506 -0.297596 -0.954692
--0.671273 0.74121 -0.232782 -0.972529
--0.427974 0.903791 0.970688 0.240344
-0.965816 -0.25923 0.462743 -0.886493
-0.593728 0.804666 0.740837 -0.671684
--0.760498 0.649341 0.0141386 -0.9999
-0.988987 -0.148 -0.657462 -0.753488
-0.70345 -0.710745 -0.869905 0.49322
-0.543928 -0.839132 0.571561 0.820559
--0.944717 -0.327887 -0.407642 0.913142
-0.933546 -0.358458 0.508301 0.86118
--0.0273554 -0.999626 -0.918823 -0.39467
--0.839878 -0.542775 0.678501 0.7346
--0.952221 -0.305409 0.928969 -0.370158
-0.309377 0.950939 0.999283 -0.0378666
-0.933226 0.359289 0.582882 -0.812557
--0.870751 -0.491725 0.416261 0.909245
-0.997685 0.0680008 0.866751 0.498741
--0.837517 -0.546412 0.307058 0.951691
-0.813271 -0.581886 0.746963 0.664866
-0.0926605 -0.995698 -0.989445 0.144909
-0.856331 0.516428 -0.652195 -0.758051
--0.403352 0.915045 -0.77947 -0.62644
--0.999828 0.0185458 -0.280089 -0.959974
--0.979484 -0.201523 0.128716 0.991681
-0.876138 -0.482061 0.999386 -0.0350315
--0.18269 0.983171 0.888204 -0.459449
--0.961126 -0.27611 -0.955382 0.295373
-0.932938 -0.360036 0.646024 0.763317
-0.513549 0.85806 -0.865558 0.500809
-0.949334 0.314269 0.851118 0.524975
--0.990806 0.135293 0.536478 -0.843914
--0.980735 -0.195345 0.688537 0.725201
--0.690324 0.723501 0.699995 0.714148
--0.921864 0.387514 -0.499873 -0.866099
--0.425102 -0.905145 0.9972 0.0747763
-0.0551913 -0.998476 0.723973 -0.689828
--0.854359 0.519683 -0.323947 0.946075
--0.942365 -0.334586 -0.90435 0.426791
--0.807833 -0.589411 0.97984 0.199784
-0.977525 -0.21082 -0.731846 -0.68147
--0.999676 0.0254467 -0.827226 -0.56187
--0.567092 0.823654 -0.821451 -0.570279
--0.93543 -0.353513 0.00404899 -0.999992
-0.959685 0.281079 -0.976448 -0.215755
--0.958691 -0.28445 -0.842456 -0.538765
--0.745954 -0.665997 -0.81019 -0.586167
--0.697433 -0.71665 -0.210282 -0.977641
--0.937129 -0.348984 -0.461496 -0.887142
-0.260841 0.965382 0.309074 -0.951038
--0.98421 -0.177005 0.492926 -0.870071
--0.434317 0.90076 0.58518 0.810903
--0.275184 0.961392 -0.922512 0.385968
-0.55895 -0.829201 -0.929268 0.369406
-0.417537 -0.90866 0.614543 -0.788883
-0.463281 -0.886212 -0.5015 -0.865158
-0.0899918 -0.995943 -0.915757 0.401733
-0.817088 0.576513 0.183388 -0.983041
--0.689963 0.723844 0.734668 0.678427
--0.274619 -0.961553 -0.898251 -0.439484
--0.0750681 0.997178 0.333582 0.942721
--0.882487 0.470336 0.269131 0.963103
-0.402185 0.915558 -0.852778 0.522273
-0.268415 -0.963303 -0.453978 0.891013
-0.268913 -0.963164 -0.499407 0.866367
--0.725552 -0.688168 0.878621 0.47752
--0.986033 0.166547 -0.519334 0.854571
--0.946855 -0.321662 0.236087 0.971732
-0.977511 0.210886 -0.736396 0.67655
-0.984928 0.172965 0.104936 -0.994479
-0.57531 0.817936 0.0371914 0.999308
-1 6.70104e-05 0.999978 0.00670099
--0.98901 -0.147845 -0.645573 0.763698
--0.99995 0.0100113 0.539334 -0.842092
--0.935406 -0.353575 0.0107501 -0.999942
--0.907582 -0.419875 0.795141 -0.606425
-0.96149 0.274838 -0.908055 0.418852
-0.46229 0.886729 -0.594843 0.803842
-0.332074 0.943253 -0.76007 -0.649841
--0.805126 -0.593103 0.790645 0.612275
--0.735448 0.677582 0.580634 0.814165
--0.15987 -0.987138 -0.940066 0.340991
-0.883924 -0.467631 -0.0338269 0.999428
--0.449038 -0.893513 -0.849884 -0.526971
--0.907896 -0.419196 0.74761 -0.664138
--0.0558464 -0.998439 0.767644 0.640877
--0.999872 -0.0160043 -0.0296965 0.999559
--0.499198 0.866488 -0.417822 0.908529
-0.529982 -0.848009 0.770785 -0.637096
-0.70146 -0.712709 -0.699945 0.714197
-0.970263 0.242052 0.774593 -0.632461
-0.805831 0.592145 0.857724 0.514111
--0.283816 0.958879 -0.876223 -0.481907
-0.168613 0.985682 -0.330238 0.943898
-0.786713 -0.617319 -0.847467 0.530847
-0.847236 0.531217 0.8551 -0.518463
-0.555977 -0.831197 -0.740884 0.671633
--0.672912 0.739722 -0.0135287 -0.999908
--0.631337 -0.775508 0.705685 0.708526
-0.718761 -0.695257 0.0911913 -0.995833
--0.790716 0.612183 -0.995808 -0.0914724
-0.271102 -0.962551 -0.68179 0.731548
-0.718808 -0.695209 0.0978627 -0.9952
-0.872535 -0.488552 0.712724 -0.701444
--0.261452 0.965217 0.248318 0.968679
--0.918186 0.396149 -0.99409 -0.108555
--0.997028 0.0770452 0.141342 -0.989961
--0.516662 0.85619 -0.631219 -0.775605
--0.775745 -0.631046 0.678589 -0.734519
--0.40376 -0.914865 -0.750747 0.66059
-0.923787 -0.382907 -0.0241861 -0.999707
-0.998105 -0.0615296 0.992031 0.125996
--0.838549 0.544827 0.480497 -0.876996
-0.637498 -0.770452 0.999953 0.00964445
--0.503165 -0.86419 -0.776714 -0.629853
-0.989704 -0.14313 -0.223223 -0.974767
--0.804851 -0.593476 0.761427 0.648251
-0.48927 0.872133 0.652641 -0.757668
--0.370038 0.929016 0.978872 0.204475
--0.92983 0.367989 0.999894 0.0145597
-0.96478 0.263059 0.0843113 0.996439
--0.583905 0.811822 0.887549 -0.460713
--0.967189 -0.254057 0.850147 0.526545
--0.526062 0.850446 0.406315 -0.913733
--0.898652 -0.438661 0.141763 0.989901
--0.917734 0.397194 -0.999987 0.00506941
--0.89747 0.441076 -0.126296 -0.991993
--0.864245 0.503072 -0.769879 -0.638189
-0.323741 -0.946146 0.0185975 0.999827
-0.908664 0.417528 0.613727 -0.789519
--0.271422 0.96246 -0.705736 0.708474
-0.323227 0.946322 0.0729368 -0.997337
-0.648232 -0.761443 0.159138 0.987256
-0.474011 0.880519 0.636009 0.771682
-0.744354 0.667786 -0.647592 -0.761987
-0.565476 0.824765 -0.916817 0.399307
--0.784047 -0.620701 -0.54848 -0.836164
--0.793591 -0.608452 -0.845869 0.53339
--0.998315 0.0580301 0.888417 0.459038
-0.21653 0.976276 -0.98637 -0.164542
--0.236231 0.971697 0.282682 -0.959214
--0.90001 0.435869 0.437416 -0.899259
-0.276189 0.961103 -0.957778 -0.287509
--0.331315 -0.94352 -0.705399 -0.70881
--0.237939 0.97128 0.446068 -0.894999
-0.691607 -0.722274 0.562831 0.826572
--0.46295 -0.886385 -0.533464 0.845823
-0.767937 -0.640525 0.919832 -0.392312
-0.968301 0.249787 0.993593 0.113016
-0.994775 -0.102091 -0.695142 0.718872
--0.478345 0.878172 0.925446 -0.378879
-0.868489 0.495709 -0.0288424 0.999584
--0.497974 0.867192 -0.285779 0.958295
-0.685756 -0.727832 0.986262 0.165186
--0.878453 0.477829 0.901634 0.4325
-0.827909 -0.560862 -0.98913 -0.147043
--0.340251 0.940335 -0.987087 -0.160184
-0.577626 -0.816302 0.315164 -0.949037
--0.433362 0.90122 0.66767 0.744457
-0.77954 0.626352 0.141799 -0.989895
-0.865696 -0.50057 -0.555858 -0.831277
--0.749765 -0.661705 -0.998628 -0.0523637
--0.340763 0.940149 -0.976917 -0.213621
-0.180017 -0.983664 0.732226 -0.681062
-0.227247 -0.973837 -0.594728 -0.803927
--0.881466 0.472247 0.469867 0.882737
-0.913086 -0.407767 -0.399364 0.916792
--0.782635 0.622481 -0.346018 0.938228
-0.986863 0.161559 -0.868289 -0.496058
--0.887885 0.460066 -0.775644 0.63117
--0.777177 -0.629282 0.49568 -0.868505
--0.390114 0.920767 -0.721275 0.692648
-0.598577 -0.801066 0.228307 0.973589
-0.390156 -0.920749 -0.724455 0.689322
-0.998012 0.0630166 0.999743 0.0226536
-0.635634 0.77199 0.973202 0.229953
--0.395197 -0.918596 -0.97752 -0.210842
--0.406172 -0.913796 -0.552488 0.833521
-0.982606 0.1857 0.985395 -0.170281
--0.153217 -0.988193 -0.947429 -0.319966
--0.497341 -0.867555 -0.215138 -0.976584
--0.633101 0.774069 0.847415 -0.530932
-0.356789 -0.934185 0.347159 -0.937806
-1 0.00072987 0.997338 0.0729222
-0.129239 0.991614 0.923476 -0.383657
-0.132959 0.991122 0.718612 -0.695411
-0.828318 -0.560258 -0.975774 -0.218781
--0.976422 -0.21587 -0.973007 0.230776
-0.885855 0.463963 -0.433491 -0.901158
-0.145954 0.989291 -0.488622 -0.872496
--0.625949 -0.779864 0.0904726 0.995899
-0.999127 -0.0417813 -0.508153 0.861267
-0.545188 -0.838314 0.442265 0.896885
-0.946488 -0.322738 0.124361 -0.992237
-0.138761 -0.990326 0.214493 0.976725
--0.692488 -0.721429 0.458002 -0.888951
--0.681886 0.731459 0.934318 -0.356441
--0.277121 -0.960835 -0.981115 -0.193423
-0.991042 0.133554 0.675562 0.737303
--0.791102 0.611685 -0.988074 -0.153982
-0.688099 0.725617 0.883079 -0.469224
--0.686172 -0.72744 0.975214 -0.221263
--0.254599 -0.967047 0.819328 -0.573325
-0.993147 -0.116876 0.658444 0.75263
--0.937503 0.347976 -0.553977 0.832532
--0.193153 -0.981169 0.832106 -0.554617
-0.721505 0.692409 0.46773 0.883871
-0.690149 0.723668 0.717056 -0.697015
--0.818135 0.575026 0.00255657 0.999997
-0.580375 0.814349 0.611406 0.791317
-0.609381 -0.792878 -0.902381 0.430939
-0.905759 0.423793 0.97603 -0.217634
--0.997799 -0.0663158 0.93825 0.345959
--0.523274 -0.852164 0.0908672 0.995863
-0.905449 0.424454 0.989302 -0.14588
--0.0631946 -0.998001 0.99918 -0.0404807
-0.775025 -0.631931 0.757832 0.652449
-0.987804 -0.155702 -0.997251 -0.0740947
--0.153734 0.988112 -0.962867 0.269975
-0.979752 -0.200217 0.259447 -0.965757
-0.298208 0.954501 0.422632 0.906301
-0.866822 -0.498617 -0.355981 -0.934493
-0.970531 -0.240977 0.699936 0.714205
-0.962751 0.270391 -0.625932 0.779877
-0.659515 -0.751691 -0.971509 0.237004
--0.103974 -0.99458 -0.547451 0.836838
--0.471626 -0.881799 0.406594 0.913609
-0.100117 0.994976 -0.82322 0.567723
--0.926814 0.375522 0.698976 -0.715145
--0.349633 -0.936887 -0.398928 0.916982
--0.687814 -0.725887 0.900821 -0.434191
--0.910224 -0.414115 0.281689 -0.959506
--0.44162 0.897202 -0.186146 0.982522
--0.52685 0.849959 0.489135 -0.872208
--0.952386 -0.304894 0.907629 -0.419773
-0.101815 -0.994803 -0.714861 -0.699267
-0.935715 0.352756 -0.0767291 -0.997052
--0.47604 -0.879424 0.795551 0.605887
-0.790174 -0.612882 -0.999995 -0.00314496
--0.968385 0.249458 0.996853 -0.0792779
-0.439877 -0.898058 0.00695602 0.999976
--0.00442387 -0.99999 0.903732 -0.428099
--0.982843 -0.184446 0.955705 -0.294326
--0.498464 0.866911 -0.339424 0.940633
--0.849841 0.527039 0.508448 0.861093
--0.811626 -0.584178 0.902545 -0.430596
-0.896678 0.442683 -0.301068 0.953603
--0.325596 0.945509 -0.176501 0.984301
--0.892685 -0.450682 -0.931969 0.362539
--0.575271 0.817963 0.0324397 -0.999474
--0.129696 0.991554 0.904803 0.42583
-0.16397 -0.986465 -0.722449 -0.691424
--0.0908073 0.995868 -0.945549 0.325479
-0.113068 0.993587 0.329174 0.944269
-0.424594 -0.905384 0.99143 -0.130637
-0.688697 0.725049 0.841469 -0.540305
-0.976446 -0.215762 -0.970407 -0.241476
--0.998616 0.052597 0.522461 0.852663
--0.652456 0.757826 -0.385971 0.922511
--0.82396 0.566648 -0.850981 0.525196
-0.398427 0.9172 -0.990301 0.138936
-0.998865 -0.0476347 0.0528554 0.998602
-0.984646 -0.174563 0.264216 0.964463
--0.998867 -0.0475844 0.0478324 -0.998855
--0.485764 0.87409 0.896842 0.442351
--0.990986 -0.133962 0.644667 0.764464
--0.149037 0.988832 -0.73266 0.680595
--0.762878 0.646543 0.372233 -0.928139
-0.35394 0.935268 0.0496869 0.998765
-0.488272 0.872691 0.734797 -0.678288
-0.577474 -0.816409 0.29748 -0.954728
-0.995615 0.0935442 -0.998395 0.0566331
-0.870523 -0.492128 0.373685 -0.927556
--0.718149 0.695889 0.00330188 -0.999995
--0.577373 0.816481 0.285608 -0.958346
--0.480435 0.87703 0.988711 -0.149836
-0.989391 -0.145274 -0.427613 -0.903962
--0.87916 0.476527 0.827894 0.560885
--0.672813 -0.739813 -0.0270242 0.999635
--0.948687 -0.316217 0.726243 0.687438
-0.115973 -0.993252 0.587446 -0.809263
-0.820826 -0.571179 -0.450126 0.892965
--0.467493 0.883997 -0.0493632 -0.998781
-0.978617 0.205689 -0.29206 0.9564
-0.660325 0.75098 -0.991369 -0.131099
-0.601862 0.7986 -0.179418 -0.983773
-0.524836 0.851203 0.270988 0.962583
-0.806805 0.590818 0.930374 0.366611
--0.643033 -0.765839 0.745089 -0.666966
--0.987497 -0.157638 -0.992587 -0.12154
--0.999561 -0.0296358 -0.984274 0.17665
-0.446226 -0.89492 -0.645196 0.764017
--0.993885 -0.11042 0.0689066 -0.997623
--0.989387 0.145305 -0.430434 -0.902622
--0.488305 0.872673 0.732281 0.681002
-0.57931 -0.815107 0.503098 -0.86423
-0.999934 -0.0114553 0.412536 -0.910941
--0.790152 -0.612911 -1 -0.000556367
-0.085059 0.996376 -0.614856 -0.788639
-0.36463 0.931152 0.930314 0.366765
-0.149073 -0.988826 -0.735174 0.677879
-0.86257 0.505938 -0.935843 0.352416
-0.275928 0.961178 -0.949592 -0.31349
--0.356858 -0.934159 0.354047 0.935228
--0.971531 0.236914 0.349324 0.937002
--0.944097 -0.329668 -0.571643 0.820502
-0.990732 0.135828 0.490182 0.87162
--0.926807 0.375539 0.697638 -0.71645
-0.987108 -0.160057 -0.933467 0.358663
--0.56609 -0.824343 -0.884549 0.466448
-0.998001 -0.0631972 0.99917 -0.0407347
--0.0444986 -0.999009 -0.258108 0.966116
--0.935509 -0.353303 -0.0183627 -0.999831
--0.410693 0.911774 -0.0900075 -0.995941
-0.161938 -0.986801 -0.84861 -0.529019
--0.352416 -0.935843 -0.112873 0.993609
--0.975323 0.220783 -0.963631 0.267236
-0.924959 -0.380067 0.279261 -0.960215
-0.268582 -0.963257 -0.469282 0.883048
-0.796248 0.60497 -0.539753 0.841824
--0.973307 0.229507 -0.393896 0.919155
--0.29701 0.954874 0.305912 -0.95206
-0.896706 -0.442626 -0.294921 -0.955522
-0.992697 -0.120631 0.889828 0.456295
-0.15511 -0.987897 -0.991025 0.133676
--0.0515985 0.998668 0.434747 -0.900552
-0.476753 -0.879037 0.842014 -0.539455
-0.143783 -0.989609 -0.287063 0.957912
-0.652866 -0.757474 -0.435248 0.90031
-0.916404 0.400255 -0.943153 -0.332358
-0.973905 -0.226958 -0.618387 0.785874
--0.651685 -0.75849 -0.290318 -0.95693
-0.587958 0.808891 0.999772 -0.0213476
-0.486874 0.873472 0.833578 -0.552402
--0.475991 0.87945 0.792161 -0.610312
--0.762857 -0.646568 0.369247 0.929331
--0.1717 -0.985149 -0.0232621 0.999729
--0.591033 0.806647 0.920263 0.3913
-0.949832 0.312761 0.923421 0.383789
--0.327166 -0.944967 -0.336852 -0.941558
-0.999532 0.0305789 -0.996539 0.0831309
-0.967699 0.252109 0.938288 0.345855
--0.929472 0.368892 0.996598 -0.0824146
--0.924268 -0.381745 0.101416 0.994844
--0.627293 0.778783 0.259999 -0.965609
-0.213506 0.976942 -0.889322 -0.457281
--0.0315259 0.999503 -0.999934 -0.0115232
-0.439872 -0.898061 0.00750314 0.999972
-0.568788 0.822484 -0.687442 0.72624
-0.954311 0.298816 0.479426 -0.877582
-0.893547 -0.44897 -0.84585 -0.533422
--0.742371 -0.669989 -0.396747 -0.917928
--0.568772 0.822496 -0.688849 -0.724905
-0.602523 -0.798101 -0.260237 0.965545
--0.817771 -0.575544 0.0658097 -0.997832
-0.724319 0.689465 0.779569 0.626317
-0.765949 0.642902 0.756386 0.654125
--0.895799 0.444459 -0.482873 -0.87569
-0.786446 -0.617659 -0.823742 0.566965
-0.987043 -0.160458 -0.918132 0.396276
--0.998811 0.0487559 0.164381 0.986397
-0.625741 -0.780031 0.0638275 -0.997961
--0.764946 -0.644094 0.645759 0.763542
--0.626697 -0.779263 0.185401 0.982663
-0.985992 0.166791 -0.49807 -0.867137
-0.930556 -0.36615 0.977543 0.210734
--0.0257663 0.999668 -0.84476 0.535145
--0.00498106 -0.999988 0.878488 -0.477764
--0.254636 0.967037 0.817137 0.576443
--0.337131 0.941458 -0.985452 0.169954
--0.943326 0.331869 -0.745763 -0.666211
--0.284088 0.958798 -0.862229 -0.506519
--0.563591 0.826054 -0.983417 -0.181358
-0.754371 -0.656448 -0.798131 -0.602483
-0.628589 -0.777737 0.416463 -0.909152
--0.28978 -0.957093 -0.430808 0.902444
-0.802374 0.596822 0.434292 0.900772
-0.757534 0.652796 -0.426912 0.904293
--0.986994 -0.160758 -0.905651 -0.424025
--0.0344962 0.999405 -0.952727 -0.303828
-0.527857 0.849333 0.588919 0.808192
--0.954101 0.299486 0.539861 0.841754
-0.6952 -0.718817 0.0990987 0.995078
--0.998803 -0.0489161 0.180187 -0.983632
--0.335848 0.941916 -0.953243 0.302204
--0.982225 0.187709 0.999442 -0.0333984
--0.689726 -0.724071 0.756534 -0.653955
--0.862802 0.505542 -0.918699 -0.394957
-0.796447 -0.604709 -0.51185 -0.859075
--0.989661 -0.143427 -0.252418 0.967618
--0.770504 0.637435 0.999999 -0.0014358
--0.766017 0.642821 0.76325 -0.646104
--0.731149 0.682218 0.949534 0.313664
-0.999962 0.00867333 0.646854 0.762614
-0.980987 0.194075 0.776409 0.630229
--0.834695 0.550713 -0.200945 -0.979602
-0.933697 -0.358065 0.47162 0.881802
--0.219287 0.97566 -0.993144 -0.116901
-0.554864 0.831941 -0.644547 -0.764565
-0.108509 0.994095 -0.12293 0.992415
--0.844615 -0.535374 0.998563 -0.0535881
--0.799512 -0.60065 -0.0286826 0.999589
--0.983963 -0.178372 0.608671 -0.793423
-0.918265 -0.395966 -0.991723 -0.128398
--0.997424 0.0717252 0.625128 -0.780522
--0.757235 0.653142 -0.467853 -0.883806
--0.645072 -0.764122 0.543114 -0.839659
--0.843115 -0.537734 0.974561 0.224123
--1 0.000457854 0.998952 -0.0457694
-0.513843 0.857884 -0.847907 0.530144
-0.566498 -0.824063 -0.860395 -0.509627
--0.528246 -0.849091 0.625292 0.780391
--0.747182 -0.664619 -0.904003 -0.427526
--0.198521 -0.980097 0.421854 -0.906664
-0.48608 0.873915 0.880287 -0.474442
-0.876955 -0.480572 0.990935 0.134343
-0.378966 0.925411 0.391338 -0.920247
-0.297514 -0.954717 0.355703 -0.934599
--0.513689 0.857977 -0.857312 -0.514797
-0.86143 0.507877 -0.990867 0.134841
--0.431371 0.902175 0.814549 0.580095
--0.151105 -0.988518 -0.85805 -0.513566
--0.986343 0.164703 -0.669158 0.74312
--0.300084 -0.953913 0.591487 0.806314
--0.142526 -0.989791 -0.163381 -0.986563
--0.999554 -0.0298528 -0.987876 0.155242
-0.77581 0.630966 0.671011 -0.741448
--0.487485 -0.873131 0.792899 -0.609353
-0.248315 -0.968679 0.999251 -0.0386942
--0.0944582 0.995529 -0.999383 -0.0351334
-0.815079 -0.57935 0.507259 0.861793
--0.728336 0.68522 0.995742 -0.0921869
-0.673484 -0.739201 0.0637839 -0.997964
--0.905347 0.424672 0.992521 0.122077
--0.397482 0.91761 -0.999336 -0.0364271
--0.61873 0.785603 -0.73906 -0.673639
-0.40819 -0.912897 -0.356462 -0.93431
-0.957571 -0.288199 -0.57334 0.819318
-0.944106 -0.329641 -0.569281 -0.822143
--0.407772 0.913084 -0.398851 -0.917016
-0.739282 0.673396 0.0517824 -0.998658
-0.263189 -0.964744 0.07082 0.997489
-0.990695 -0.136098 0.466232 -0.884662
--0.104827 -0.99449 -0.473764 0.880652
--0.997791 -0.066429 0.934263 0.356585
-0.600495 0.799629 -0.00930283 -0.999957
--0.569853 -0.821746 -0.587778 0.809022
--0.316654 -0.948541 0.693759 -0.720207
-0.942075 -0.335402 -0.937868 -0.346993
-0.997766 -0.0667992 0.920392 -0.390998
-0.208966 -0.977923 -0.59031 0.807177
--0.103793 0.994599 -0.56265 -0.826695
--0.2168 -0.976216 -0.990545 -0.137186
--0.0450459 0.998985 -0.204818 -0.9788
-0.979907 -0.199454 0.333775 -0.942653
--0.93535 0.353723 0.0264941 0.999649
-0.0748482 -0.997195 0.354286 0.935137
-0.886071 0.46355 -0.474961 -0.880007
-0.764816 0.644249 0.630146 0.776477
--0.947376 -0.320122 0.390205 0.920728
--0.545174 0.838323 0.44375 0.896151
-0.996631 0.0820181 -0.349515 0.936931
-0.909363 -0.416004 0.473423 0.880835
-0.252523 0.967591 0.92263 -0.385686
--0.937128 0.348986 -0.461279 0.887255
-0.0202739 0.999794 -0.441022 -0.897496
--0.916386 -0.400295 -0.941692 -0.336475
--0.0639378 0.997954 0.9934 0.114705
-0.307554 0.951531 0.98819 0.153233
--0.99712 -0.0758423 0.259457 0.965755
--0.885144 -0.465318 -0.291032 -0.956713
--0.413388 0.910555 0.204198 -0.97893
--0.3356 0.942005 -0.944955 0.327201
--0.940236 -0.340522 -0.982057 -0.188585
-0.948873 0.315659 0.765355 0.643608
-0.397435 -0.91763 -0.999511 -0.0312653
--0.292315 -0.956322 -0.179441 0.983769
--0.281327 -0.959612 -0.970552 0.24089
--0.99626 -0.0864116 -0.715937 0.698165
--0.596135 -0.802884 0.509653 -0.86038
--0.3448 -0.938676 -0.799101 0.601197
--0.292689 0.956208 -0.140918 -0.990021
-0.860422 -0.509582 -0.998028 0.0627656
--0.841598 0.540104 0.874021 -0.485888
--0.942053 -0.335465 -0.94017 0.340705
-0.741496 -0.670957 -0.273951 0.961744
-0.596142 -0.802879 0.508874 0.860841
--0.405035 0.914301 -0.651695 -0.758481
-0.96804 -0.250795 0.976457 -0.215711
-0.973193 -0.22999 -0.347758 0.937584
-0.676409 -0.736527 0.44406 -0.895997
--0.317503 0.948257 0.626613 0.779331
-0.988777 -0.149396 -0.756905 -0.653525
-0.308703 -0.951159 0.999454 -0.0330426
--0.997702 -0.0677564 0.878709 0.477358
--0.874474 0.485073 0.928988 -0.37011
-0.957222 0.289355 -0.470438 -0.882433
-0.887158 0.461466 -0.666855 -0.745188
--0.428168 -0.903699 0.96531 -0.261108
-0.0190663 0.999818 -0.329664 -0.944098
--0.849604 -0.527421 0.546648 -0.837362
--0.0415172 0.999138 -0.530742 -0.847533
--0.918271 -0.395952 -0.991523 0.129935
-0.78196 -0.623329 -0.242572 0.970133
-0.379265 -0.925288 0.361387 0.932416
--0.746337 -0.665569 -0.842494 -0.538706
--0.261207 -0.965283 0.272785 -0.962075
--0.995738 -0.0922232 -0.982129 0.188208
--0.428723 0.903436 0.947453 0.319894
-0.176818 0.984243 0.47639 0.879234
-0.51955 0.85444 -0.338615 0.940925
-0.995857 0.0909282 -0.94943 0.313979
--0.992894 -0.119002 0.803329 -0.595536
-0.88244 0.470426 0.278889 -0.960323
--0.887223 0.461341 -0.677263 0.735741
-0.895438 0.445187 -0.552364 0.833603
-0.969961 -0.243261 0.847183 0.531302
--0.15851 0.987357 -0.977998 -0.208616
--0.769718 0.638384 0.992245 -0.124297
-0.877953 -0.478748 0.941845 0.336046
-0.0728219 0.997345 0.535702 -0.844407
--0.0504575 0.998726 0.329246 -0.944244
-0.175223 0.984529 0.328281 0.94458
-0.221004 0.975273 -0.957317 0.289041
-0.934371 0.356303 0.297865 -0.954608
--0.108112 -0.994139 -0.162439 0.986719
--0.66634 -0.745648 -0.782358 0.622829
-0.791302 0.611426 -0.982505 0.186237
-0.362849 -0.931848 0.843614 -0.53695
--0.388536 0.921434 -0.592592 0.805503
--0.596227 0.802816 0.499722 0.866186
--0.799754 0.600328 0.0115382 -0.999933
--0.904508 -0.426456 0.997204 0.0747279
-0.865375 -0.501125 -0.608034 -0.793911
--0.251174 0.967942 0.96727 0.25375
--0.737643 0.675191 0.290699 0.956815
--0.979394 -0.201958 0.0845804 0.996417
-0.999946 -0.0103794 0.507983 -0.861367
-0.796767 -0.604286 -0.465584 -0.885004
-0.602345 -0.798236 -0.238612 0.971115
-0.187025 0.982355 0.999341 0.036289
-0.930287 0.366833 0.990376 -0.138404
-0.672432 -0.740159 -0.0783653 -0.996925
--0.0687938 -0.997631 0.824411 -0.565991
-0.648354 0.761339 0.143293 -0.98968
--0.255131 0.966906 0.786553 0.617523
-0.382532 -0.923942 0.016437 0.999865
-0.814082 0.58075 0.647214 -0.762308
--0.914241 -0.40517 -0.640422 -0.768023
-0.295388 0.955377 0.14059 0.990068
-0.992758 0.120131 0.865746 -0.500483
-0.337517 -0.941319 -0.9916 0.129345
--0.969065 0.246806 0.981155 0.193224
-0.0556815 0.998449 0.756955 0.653468
-0.992636 0.121136 0.911889 -0.410438
--0.993403 -0.114672 0.476705 -0.879063
-0.986576 -0.1633 -0.767748 0.640752
--0.571108 -0.820875 -0.457791 0.88906
--0.715969 -0.698133 -0.304651 0.952464
-0.205807 -0.978593 -0.303631 0.95279
-0.978278 -0.207299 -0.444856 -0.895602
-0.987352 -0.158545 -0.977251 0.212084
-0.422881 0.906185 0.949223 0.314604
--0.973264 -0.229688 -0.376686 -0.926341
-0.774978 -0.631988 0.762578 0.646897
--0.983351 0.181714 0.838324 0.545172
-0.873005 -0.487712 0.776834 -0.629705
--0.886644 0.462452 -0.580079 0.81456
--0.981412 0.191911 0.895448 -0.445167
-0.400865 -0.916137 -0.918973 -0.39432
--0.16492 0.986307 -0.652618 -0.757687
--0.372073 -0.928203 0.911013 -0.412379
-0.708989 -0.70522 -0.964704 -0.263336
-0.619126 0.785292 -0.704214 0.709988
--0.900408 0.435047 0.517646 -0.855595
-0.996587 0.0825484 -0.398854 0.917015
--0.917262 0.398285 -0.992335 0.123574
-0.0575235 0.998344 0.863988 0.503512
-0.763363 0.645969 0.440904 0.897554
-0.999972 0.00751851 0.730421 0.682997
--0.936804 0.349856 -0.377043 0.926196
-0.680234 0.732995 0.830922 0.556389
-0.344585 -0.938755 -0.812628 -0.582783
-0.821477 -0.570242 -0.548901 0.835888
--0.693981 0.719993 0.265388 0.964142
-0.455765 -0.8901 -0.980222 -0.1979
--0.881449 0.47228 0.473135 0.88099
--0.567091 0.823655 -0.821527 -0.57017
--0.990952 0.134218 0.624682 -0.780879
-0.960803 0.277231 -0.983252 0.18225
-0.689311 0.724465 0.792693 -0.609621
--0.941603 0.336726 -0.977251 -0.212087
-0.992604 0.121394 0.922232 -0.386636
--0.365003 0.931006 0.944232 -0.329282
-0.99377 -0.111449 0.171652 0.985158
-0.845966 -0.533236 0.953388 0.301749
-0.189749 -0.981833 0.971088 0.238724
-0.813211 -0.581969 0.753705 0.657213
--0.503475 0.86401 -0.798833 0.601553
-0.00220309 0.999998 0.97583 -0.218532
--0.207176 -0.978304 -0.433482 -0.901162
--0.769145 -0.639074 0.977122 0.21268
-0.927381 -0.374117 0.798875 -0.601497
--0.836805 -0.547502 0.180873 0.983506
-0.0256615 -0.999671 -0.839103 0.543972
--0.672263 0.740312 -0.101103 -0.994876
--0.788753 -0.61471 -0.974032 -0.226412
-0.374615 0.92718 0.765451 -0.643495
--0.777757 -0.628565 0.41358 -0.910468
--0.205021 -0.978757 -0.226238 -0.974072
-0.367634 0.929971 0.998606 0.0527783
-0.948513 0.316739 0.687334 0.726342
-0.577962 -0.816064 0.353978 -0.935254
-0.999696 -0.0246639 -0.780737 -0.62486
-0.959799 -0.280688 -0.984418 0.175844
-0.186466 0.982461 0.995659 0.0930795
-0.433673 -0.901071 0.641636 0.76701
--0.71345 0.700706 -0.62068 -0.784064
--0.914952 -0.403562 -0.764889 -0.644162
--0.308809 0.951124 0.99976 -0.0219034
--0.879743 0.47545 0.753181 0.657814
--0.338321 -0.941031 -0.999017 -0.0443304
--0.0294936 -0.999565 -0.981662 -0.190631
--0.930953 0.365139 0.948942 0.31545
-0.999594 0.0285001 -0.957901 0.2871
--0.14071 -0.990051 0.0192967 -0.999814
--0.59285 0.805313 0.809523 0.587088
-0.217654 -0.976026 -0.998743 0.050126
--0.690606 -0.723232 0.671635 -0.740882
--0.397313 -0.917683 -0.999838 0.0179865
-0.976503 0.215503 -0.963649 0.267172
--0.564464 0.825458 -0.958797 -0.284093
--0.280876 0.959744 -0.980789 -0.195071
-0.986214 -0.165473 -0.609133 0.793068
-0.924285 -0.381702 0.105987 -0.994368
-0.95222 0.305412 0.929096 -0.369838
--0.540494 0.841348 0.85059 0.525829
--0.963669 -0.267099 -0.328371 0.944549
-0.0735443 0.997292 0.473189 -0.880961
-0.949214 -0.31463 0.830538 -0.556962
--0.063852 0.997959 0.994349 0.106164
--0.900415 0.435032 0.519025 -0.854759
-0.999998 0.00222261 0.975402 0.220435
-0.777495 0.62889 0.451268 -0.892389
--0.889411 0.457107 -0.939327 0.343024
-0.960421 -0.278554 -0.998965 -0.0454817
--0.472884 0.881125 0.532372 -0.846511
-0.0261726 0.999657 -0.865808 -0.500376
--0.490028 0.871707 0.584377 0.811482
-0.788254 -0.615349 -0.952495 0.304553
--0.958881 -0.283809 -0.87656 -0.481292
-0.0166452 -0.999861 -0.0936624 0.995604
--0.845746 -0.533586 0.96506 -0.262029
--0.255405 0.966834 0.768737 0.639565
-0.349592 0.936902 -0.402943 0.915225
--0.830195 -0.557473 -0.849203 0.528067
-0.993153 0.116821 0.65428 -0.756252
--0.961755 -0.273911 -0.86351 0.504332
--0.724804 0.688955 0.821665 -0.56997
--0.601389 -0.798957 -0.120857 -0.99267
-0.130754 0.991415 0.854299 -0.519783
--0.856245 0.51657 -0.639517 0.768777
-0.998967 -0.0454392 -0.166134 0.986103
--0.98823 -0.152974 -0.939281 0.343149
--0.758963 0.651134 -0.220142 -0.975468
-0.905986 -0.423307 0.962941 0.269712
--0.894293 -0.447482 -0.745773 0.6662
--0.137616 -0.990486 0.325679 -0.94548
--0.986136 0.16594 -0.570958 0.820979
-0.3805 -0.924781 0.234004 0.972236
--0.442264 -0.896885 -0.256108 -0.966648
--0.102634 -0.994719 -0.65489 0.755724
-0.0597012 0.998216 0.952481 0.304597
--0.440269 -0.897866 -0.0367247 -0.999325
-0.545771 -0.837934 0.378869 0.92545
--0.509391 -0.860535 -0.999175 0.0406077
--0.672948 -0.73969 -0.00876431 0.999962
-0.480238 0.877138 0.985103 0.171967
-0.846908 -0.531739 0.885413 0.464805
-0.974556 -0.224144 -0.816573 0.577243
-0.918296 0.395893 -0.990679 0.136219
--0.962997 0.269514 -0.552412 -0.833571
--0.207892 -0.978152 -0.498223 -0.867049
--0.565402 -0.824816 -0.920371 0.391046
--0.0146207 -0.999893 0.108464 -0.9941
-0.843755 -0.536728 0.9943 -0.106615
-0.00958077 0.999954 0.575083 -0.818095
-0.102288 -0.994755 -0.680825 -0.732446
--0.958502 0.285087 -0.804819 0.593521
--0.695868 -0.71817 0.00623506 -0.999981
--0.856281 0.516511 -0.644795 0.764356
--0.407968 -0.912996 -0.379054 0.925375
-0.966818 0.255465 0.764775 0.644298
--0.831926 0.554886 -0.646611 -0.76282
-0.263502 0.964659 0.0384969 -0.999259
--0.900121 0.43564 0.460132 -0.88785
--0.518827 0.854879 -0.416907 -0.908949
-0.19602 -0.9806 0.636996 0.770867
-0.555367 0.831606 -0.68959 -0.7242
-0.369776 -0.929121 0.984265 0.1767
--0.832254 -0.554394 -0.600404 0.799697
-0.500236 -0.865889 -0.523437 0.852064
--0.962166 -0.272463 -0.778121 0.628114
-0.503719 -0.863868 -0.815459 0.578815
--0.997691 -0.067921 0.870713 0.491792
--0.753429 0.65753 -0.876095 -0.482139
--0.999978 0.00657889 0.791282 -0.611451
-0.621153 0.783689 -0.499404 0.866369
--0.93857 -0.34509 -0.780131 -0.625616
--0.843392 0.537299 0.984817 -0.173596
-0.781008 0.624521 -0.0923058 -0.995731
--0.725266 -0.688468 0.85808 0.513515
-0.667374 -0.744723 -0.688729 -0.725019
-0.448511 -0.893777 -0.817358 0.57613
--0.157792 0.987472 -0.990561 -0.137075
--0.754401 -0.656414 -0.795444 0.606027
--0.101282 -0.994858 -0.751276 0.659989
--0.988939 -0.148324 -0.681795 0.731543
--0.730137 0.683301 0.98544 0.170021
-0.3807 0.924699 0.212923 -0.977069
-0.581649 0.81344 0.727278 0.686343
-0.27227 -0.962221 -0.765364 0.643598
-0.688933 -0.724825 0.823445 0.567396
-0.354543 0.93504 0.113995 0.993481
-0.307414 0.951576 0.985842 0.167676
-0.880744 0.473593 0.598675 -0.800992
--0.726473 -0.687195 0.934516 0.355922
--0.972977 -0.230901 -0.258596 -0.965986
-0.637048 -0.770824 0.998812 -0.0487299
-0.168017 -0.985784 -0.386674 -0.922217
--0.574318 0.818632 -0.0838377 -0.996479
--0.957526 0.288346 -0.560722 0.828004
--0.769532 -0.638609 0.988187 0.153251
-0.775637 -0.63118 0.691139 0.722722
--0.233231 0.972421 -0.0220153 -0.999758
-0.72438 0.689401 0.78506 0.61942
--0.169368 0.985553 -0.257051 -0.966398
-0.226829 -0.973935 -0.628723 -0.777629
--0.0903257 0.995912 -0.928709 0.370811
-0.499067 -0.866563 -0.40406 0.914732
-0.331989 0.943283 -0.754171 -0.656679
--0.692513 0.721405 0.454953 0.890516
--0.958558 0.284897 -0.816445 0.577423
-0.924045 0.382283 0.0433148 0.999061
-0.334175 0.942511 -0.884912 -0.465758
--0.130075 -0.991504 0.887889 -0.460058
--0.446164 -0.894951 -0.639913 -0.768447
-0.903818 -0.427916 0.972208 -0.234119
--0.0184285 0.99983 -0.268806 0.963194
-0.937282 0.348573 -0.499944 -0.866058
-0.739777 0.672852 -0.0217444 -0.999764
--0.824021 0.566559 -0.856578 0.516017
-0.590598 -0.806966 0.940032 0.341086
-0.997357 -0.0726598 0.549356 -0.835588
--0.821907 -0.569622 -0.610299 -0.792171
-0.949448 0.313925 0.869532 0.493877
-0.912827 0.408346 -0.340414 -0.940276
-0.205651 0.978625 -0.288383 -0.957515
--0.851305 -0.524671 0.252222 -0.96767
-0.896278 -0.443493 -0.385829 -0.92257
-0.999266 -0.0383021 -0.771527 0.636197
-0.918433 -0.395578 -0.985408 -0.170206
--0.73033 0.683094 0.980235 0.197837
--0.793427 -0.608665 -0.859911 0.510445
-0.46269 -0.88652 -0.558042 -0.829813
--0.493919 -0.869508 0.176209 -0.984353
--0.155128 -0.987894 -0.991261 -0.131917
-0.795348 0.606153 -0.658484 0.752595
--0.958879 0.283816 -0.876248 0.48186
-0.997868 -0.0652612 0.969509 -0.245058
-0.922202 -0.386708 -0.422355 -0.90643
--0.586056 -0.810271 0.977268 0.212008
--0.643957 0.765062 0.659308 0.751873
--0.773812 0.633415 0.868223 0.496173
--0.231789 -0.972766 -0.169479 0.985534
--0.936274 -0.351272 -0.233238 -0.97242
-0.728687 0.684847 0.999154 0.0411138
--0.767162 0.641453 0.865783 -0.50042
--0.996536 0.0831609 -0.454418 -0.890788
--0.698159 0.715943 -0.308179 0.951328
--0.94264 0.333811 -0.866236 -0.499636
--0.79317 -0.609 -0.880697 0.473681
-0.169674 -0.9855 -0.226922 -0.973913
--0.287347 0.957827 -0.643871 -0.765134
--0.835323 -0.549759 -0.088014 0.996119
--0.700819 0.713339 -0.633015 0.774139
--0.573507 0.819201 -0.181983 -0.983302
--0.538014 -0.842936 0.966588 -0.256336
--0.842216 -0.53914 0.923801 0.382874
-0.91804 -0.396487 -0.997411 -0.0719102
--0.856046 -0.5169 -0.609426 -0.792843
--0.862248 -0.506486 -0.95632 0.292322
-0.686317 -0.727303 0.970618 0.240626
-0.978288 -0.207252 -0.440527 -0.897739
-0.375851 0.92668 0.673135 -0.739519
--0.327217 -0.944949 -0.341971 -0.939711
--0.663402 -0.748263 -0.961317 0.275444
-0.857157 -0.515055 -0.764808 0.644259
-0.312532 -0.949907 0.932404 0.361419
-0.848491 0.529209 0.709626 -0.704578
-0.821717 -0.569896 -0.583607 0.812036
--0.0791196 -0.996865 -0.0662047 -0.997806
--0.0684603 -0.997654 0.842871 -0.538115
--0.0931452 0.995653 -0.995325 0.0965842
-0.692653 0.721271 0.437604 -0.899168
--0.954615 0.297841 0.387481 0.921878
-0.436954 -0.899484 0.326068 0.945346
-0.0107672 0.999942 0.474202 -0.880416
-0.541294 -0.840834 0.796801 0.604242
--0.360639 0.932706 0.693932 -0.720041
--0.723418 -0.69041 0.691425 0.722448
--0.229566 0.973293 -0.388317 -0.921526
-0.854066 -0.520165 -0.270074 0.962839
--0.803144 0.595785 0.546702 -0.837327
--0.866281 -0.499557 -0.455065 0.890458
--0.999386 -0.0350247 -0.935333 -0.35377
-0.137862 -0.990451 0.302137 0.953265
-0.906056 -0.423159 0.958403 0.285418
-0.50816 0.861263 -0.994765 -0.10219
--0.650102 0.759847 -0.0858654 0.996307
-0.664019 -0.747716 -0.935398 -0.353598
-0.0101781 -0.999948 0.525215 0.85097
-0.945401 -0.32591 -0.209127 -0.977888
--0.0880892 -0.996113 -0.822829 -0.568289
--0.197284 -0.980346 0.532578 -0.846381
-0.657344 0.753591 -0.863939 -0.503597
--0.912451 0.409185 -0.252644 0.967559
--0.602678 0.797985 -0.278845 0.960336
-0.951588 0.307378 0.985194 -0.171445
-0.103518 0.994628 -0.58526 0.810846
--0.933668 0.358141 0.478756 0.877948
-0.957109 -0.289728 -0.435746 0.90007
-0.983319 -0.181888 0.847814 0.530294
-0.421219 0.906959 0.875967 0.482371
-0.199318 0.979935 0.346777 -0.937948
-0.81229 0.583254 0.84783 -0.530268
--0.672232 -0.74034 -0.105266 0.994444
-0.968528 0.248903 0.999758 0.0219886
--0.574474 0.818522 -0.0648134 -0.997897
--0.986378 0.164494 -0.684761 0.728768
--0.581442 0.813588 0.709597 -0.704608
-0.980701 -0.195511 0.676116 -0.736795
-0.0663378 -0.997797 0.937482 0.348033
--0.0733898 0.997303 0.48678 0.873524
--0.671162 0.741311 -0.247305 -0.968938
--0.555924 0.831233 -0.736524 0.676411
-0.108275 -0.994121 -0.146275 -0.989244
-0.641705 0.766952 0.848934 -0.5285
--0.151954 0.988388 -0.898947 0.438058
-0.91122 -0.411919 0.0444185 0.999013
--0.99994 -0.0109991 0.453653 0.891178
-0.638133 0.769926 0.995769 -0.0918929
--0.402623 -0.915366 -0.826801 0.562495
--0.948928 0.315492 0.776601 -0.629992
-0.710721 -0.703474 -0.871569 -0.490273
--0.817944 0.575298 0.0357496 0.999361
--0.861524 -0.507717 -0.988198 0.15318
--0.360647 0.932702 0.694565 -0.71943
-0.0338778 -0.999426 -0.969691 -0.244335
--0.663754 -0.747951 -0.947305 0.320334
--0.965025 -0.262158 0.176846 0.984239
-0.326304 0.945265 -0.249732 -0.968315
--0.851988 -0.523562 0.124461 -0.992224
--0.996611 -0.0822584 -0.372004 0.928231
--0.71987 0.694108 0.248331 -0.968675
-0.34324 -0.939248 -0.887494 -0.460819
--0.761559 -0.648095 0.176815 0.984244
-0.997797 0.0663473 0.937153 0.34892
-0.566219 -0.824255 -0.877147 -0.480222
-0.967977 -0.251039 0.970715 -0.240236
--0.995118 0.0986879 -0.896007 0.44404
-0.34138 0.939925 -0.960789 0.277281
-0.900215 -0.435445 0.479311 -0.877645
-0.0324565 0.999473 -0.994531 0.10444
--0.962444 0.271479 -0.709905 -0.704298
--0.281391 0.959593 -0.96892 -0.247375
--0.848839 -0.528652 0.661852 -0.749634
-0.165674 0.986181 -0.592881 0.80529
--0.916532 0.399962 -0.953286 0.302068
-0.651498 -0.758651 -0.266587 0.963811
-0.557192 0.830384 -0.83083 -0.556526
-0.920875 -0.389857 -0.701658 -0.712514
-0.999847 0.0174853 -0.176891 0.98423
-0.535766 -0.844367 0.999974 -0.00720232
--0.750848 0.660475 -0.993787 -0.111299
-0.722913 -0.69094 0.636715 -0.7711
-0.0475356 0.99887 0.0429467 0.999077
-0.982208 -0.187796 0.999107 -0.0422428
-0.383725 0.923447 -0.112513 -0.99365
-0.999907 -0.0136688 0.202465 -0.97929
--0.792407 -0.609992 -0.932927 0.360065
--0.128215 -0.991746 0.958091 -0.286462
-0.339194 0.940716 -0.998823 0.0485098
-0.355752 0.93458 0.241152 0.970487
-0.0462011 0.998932 -0.0905101 0.995896
--0.897135 -0.441756 -0.201048 0.979581
-0.999911 -0.0133539 0.233197 -0.972429
-0.612218 -0.790689 -0.996208 0.0870055
--0.865849 -0.500305 -0.530208 0.847867
-0.555162 -0.831742 -0.67153 0.740977
-0.39412 -0.919059 -0.946132 0.323782
-0.910996 0.412414 0.0985836 -0.995129
-0.971297 0.23787 0.43974 -0.898125
--0.0454068 -0.998969 -0.169325 0.98556
--0.382629 0.923902 0.00588636 0.999983
--0.999396 0.0347495 -0.944721 0.327875
-0.971381 0.237528 0.407865 -0.913042
-0.813213 -0.581966 0.753517 0.657428
--0.199843 -0.979828 0.296072 -0.955166
--0.985303 0.170813 -0.113012 0.993594
-0.0882972 -0.996094 -0.834514 0.550987
-0.702282 -0.711899 -0.77756 0.628809
--0.840749 0.541425 0.787244 -0.616641
-0.105701 -0.994398 -0.394679 -0.918819
--0.224845 -0.974395 -0.773011 0.634393
-0.273677 -0.961822 -0.850985 0.52519
--0.610656 -0.791896 -0.959799 -0.280688
-0.962605 -0.270909 -0.667006 -0.745052
-0.0881812 -0.996104 -0.82804 0.560669
-0.49695 -0.867779 -0.170916 0.985286
-0.958812 -0.284041 -0.864667 0.502345
--0.677492 0.735531 0.570623 -0.821212
--0.924333 -0.381586 0.118494 0.992955
-0.592426 0.805625 0.83928 -0.543699
--0.928431 -0.371504 0.934583 0.355746
-0.338473 -0.940976 -0.999604 0.0281352
--0.175597 -0.984462 0.363861 0.931453
--0.93331 -0.359072 0.56388 -0.825857
--0.5368 -0.84371 0.993366 -0.115
--0.340491 0.940248 -0.982671 -0.185358
--0.816794 0.57693 0.233279 0.97241
--0.986982 0.160828 -0.90262 0.430439
--0.697958 0.716139 -0.28133 0.959611
--0.930584 0.366079 0.975928 0.218094
-0.205478 0.978662 -0.271388 -0.96247
--0.394583 -0.91886 -0.96125 -0.275677
-0.917301 -0.398196 -0.993487 0.113944
--0.0328628 0.99946 -0.989465 -0.144769
--0.855626 -0.517595 -0.543081 -0.83968
--0.573479 -0.81922 -0.185308 0.98268
--0.138341 -0.990385 0.255663 -0.966766
--0.591123 0.806582 0.915862 0.401494
--0.985946 -0.167064 -0.47383 -0.880616
-0.652529 0.757763 -0.394879 -0.918733
-0.739581 0.673067 0.00742818 -0.999972
-0.0588984 0.998264 0.924933 0.380131
-0.907416 -0.420235 0.818545 0.574442
-0.0813691 -0.996684 -0.28781 0.957688
-0.327135 0.944978 -0.333718 -0.942673
--0.338581 -0.940937 -0.99986 -0.0167278
--0.824465 -0.565912 -0.894405 -0.447259
-0.582073 0.813136 0.762102 0.647457
-0.921474 0.388441 -0.58428 0.811552
-0.546137 0.837696 0.338126 -0.941101
--0.310247 0.950656 0.991639 0.129044
--0.711218 -0.702972 -0.834765 0.550607
-0.973105 -0.230364 -0.311514 0.950242
-0.990363 0.138495 0.240621 0.970619
-0.411369 0.911469 -0.0159845 0.999872
--0.716722 -0.697359 -0.20017 0.979761
--0.46743 0.88403 -0.0565389 -0.9984
--0.861857 -0.507151 -0.976015 0.217705
-0.819547 0.573012 -0.241051 -0.970512
--0.306842 -0.95176 0.973982 0.226625
-0.987688 0.156438 -1 -0.000398448
--0.392386 0.919801 -0.868671 0.49539
--0.75346 0.657494 -0.873765 -0.486347
-0.9683 -0.249792 0.993532 -0.113548
--0.906409 -0.422401 0.931237 -0.364414
-0.984995 -0.172581 0.0661492 0.99781
--0.759934 -0.65 -0.0725281 0.997366
--0.292946 0.956129 -0.114221 -0.993455
--0.443052 0.896496 -0.340031 0.940414
-0.640663 0.767823 0.912663 -0.408713
--0.915675 0.401919 -0.867617 0.497232
--0.931075 0.364827 0.937863 0.347007
--0.728756 0.684774 0.999516 -0.0311001
--0.661998 0.749506 -0.995815 -0.0913886
-0.287857 0.957673 -0.60225 0.798307
--0.885497 -0.464645 -0.362874 -0.931838
-0.929377 0.369131 0.994147 0.108033
-0.304631 -0.95247 0.895705 -0.444648
--0.137605 -0.990487 0.326778 -0.945101
-0.713011 0.701152 -0.668536 0.74368
-0.964251 -0.26499 -0.115597 -0.993296
-0.984304 0.176481 0.446005 -0.89503
--0.014216 -0.999899 0.148594 -0.988898
-0.877273 -0.479992 0.979881 0.19958
-0.950377 0.311102 0.976052 0.217539
-0.905529 -0.424285 0.986397 0.164382
--0.963488 -0.267753 -0.391683 0.9201
--0.719258 0.694743 0.162006 -0.98679
--0.995613 -0.0935674 -0.998524 0.0543044
--0.636198 -0.771526 0.987384 0.158343
-0.881928 0.471385 0.381422 -0.924401
--0.968717 -0.248167 0.998546 -0.0539065
-0.959285 -0.282439 -0.936153 0.351592
--0.97443 0.224692 -0.782854 0.622206
--0.999999 0.00167726 0.985967 -0.166941
--0.988807 -0.149198 -0.743655 0.668563
--0.921031 0.389489 -0.672629 -0.73998
-0.761023 0.648724 0.0949914 0.995478
-0.432319 -0.901721 0.749129 0.662425
-0.0588897 -0.998264 0.924602 -0.380933
--0.010546 0.999944 0.49356 0.869712
--0.0334461 0.999441 -0.979336 -0.20224
-0.309363 0.950944 0.999337 -0.0364199
--0.67705 -0.735937 0.520369 0.853941
--0.726945 -0.686696 0.956755 0.290894
--0.821641 0.570005 -0.572776 0.819712
-0.257577 0.966258 0.606907 -0.794773
--0.422126 -0.906537 0.91973 0.392553
-0.292615 0.95623 -0.148556 0.988904
-0.921622 -0.388088 -0.552817 -0.833303
-0.33464 -0.942346 -0.906806 0.421549
-0.535546 0.844506 0.999447 0.033245
-0.975647 -0.219348 -0.99239 0.12313
--0.947008 -0.32121 0.282123 0.959378
-0.875176 0.483804 0.972705 0.232046
-0.995471 0.0950625 -0.99541 -0.0957014
--0.993828 0.110936 0.120581 0.992704
--0.713681 -0.700471 -0.594498 0.804097
--0.782044 0.623223 -0.2557 0.966756
-0.999848 -0.0174591 -0.17431 -0.984691
--0.0863885 0.996262 -0.714321 0.699819
--0.983484 0.180993 0.796141 0.605111
--0.972902 -0.231217 -0.227139 -0.973862
-0.198512 0.980098 0.422662 -0.906287
-0.917669 -0.397347 -0.999766 0.0216507
-0.973289 0.229585 -0.386529 -0.922277
--0.0500619 -0.998746 0.291595 0.956542
--0.690439 0.72339 0.688492 0.725244
-0.591758 0.806115 0.88139 -0.472389
--0.922233 -0.386636 -0.415194 0.909733
-0.681475 0.731841 0.912851 0.408292
--0.812311 0.583224 0.845861 0.533403
-0.417264 -0.908785 0.590599 -0.806965
--0.485116 0.87445 0.927116 0.374775
-0.979192 0.202937 -0.0153341 0.999882
--0.927387 0.374103 0.799799 -0.600267
--0.0998486 -0.995003 -0.838238 0.545305
-0.0561274 0.998424 0.785373 0.619023
-0.730612 0.682792 0.971236 -0.238121
-0.922235 -0.386631 -0.414729 -0.909945
-0.439205 0.898387 0.0816655 -0.99666
-0.887919 -0.46 -0.780342 0.625353
-0.820411 0.571774 -0.384249 -0.92323
-0.625568 0.78017 0.0416754 0.999131
--0.988623 0.150415 -0.820102 -0.572217
-0.441377 0.897322 -0.159529 -0.987193
-0.54857 0.836105 0.0541341 -0.998534
-0.965834 -0.25916 0.469153 -0.883117
-0.313545 -0.949573 0.888639 0.458607
--0.950085 -0.31199 0.951497 0.307659
-0.961163 -0.275983 -0.951375 -0.308034
-0.918937 0.394405 -0.955715 0.294293
-0.990862 0.134878 0.571358 0.820701
--0.998929 0.0462675 -0.0838888 0.996475
--0.204135 0.978943 -0.13723 0.990539
-0.962876 -0.269943 -0.588993 -0.808138
--0.982869 -0.184307 0.951452 -0.307798
-0.987935 0.154871 -0.987508 0.15757
--0.469534 0.882915 0.180581 -0.98356
--0.433048 -0.901371 0.6932 -0.720745
--0.851227 -0.524798 0.266661 -0.96379
--0.966129 0.25806 0.566423 -0.824115
-0.877471 0.479629 0.970799 -0.239896
--0.832115 0.554603 -0.620256 -0.784399
-0.243024 -0.97002 0.833998 -0.551768
-0.761878 0.647721 0.224982 0.974363
-0.564214 -0.825628 -0.96693 -0.255042
--0.989438 -0.144955 -0.398207 0.917296
--0.603938 0.797032 -0.426458 0.904507
-0.975955 -0.217973 -0.999848 -0.0174601
--0.968538 0.248865 0.999836 -0.0180835
--0.981295 -0.19251 0.866659 0.498901
-0.766302 -0.642481 0.791142 -0.611633
--0.936894 -0.349613 -0.400881 -0.91613
--0.463677 -0.886004 -0.462349 0.886698
--0.660945 0.750434 -0.998804 0.048897
--0.0998082 -0.995007 -0.840445 0.541896
-0.486433 -0.873718 0.860369 0.509672
--0.443881 0.896086 -0.42541 0.905001
--0.976126 -0.217204 -0.99537 0.0961161
--0.734744 0.678344 0.661833 0.749651
--0.179338 0.983788 0.683496 -0.729955
--0.811332 -0.584585 0.923004 -0.384791
--0.819524 0.573045 -0.237096 0.971486
-0.133628 -0.991032 0.670044 0.742321
-0.737897 -0.674913 0.254486 0.967076
--0.634411 0.772996 0.924743 -0.380591
--0.313993 0.949425 0.865999 0.500045
-0.833519 -0.552491 -0.403689 -0.914896
--0.384612 -0.923078 -0.207344 -0.978268
-0.991758 -0.128123 0.960716 -0.277534
--0.99946 0.0328662 -0.989416 0.145105
-0.609795 0.792559 -0.92365 -0.383238
-0.931691 0.363252 0.866082 -0.499902
-0.813438 -0.581651 0.727512 0.686095
-0.916994 -0.398902 -0.98178 0.19002
-0.474548 0.880229 0.681938 0.73141
--0.0212743 -0.999774 -0.52847 -0.848952
--0.965131 0.261766 0.216647 -0.97625
--0.988168 -0.153374 -0.952384 0.304902
--0.238686 -0.971097 0.513567 0.85805
-0.869622 -0.493718 0.198957 -0.980008
-0.940159 0.340736 -0.977508 -0.210899
--0.806817 -0.590802 0.931115 0.364725
--0.987354 0.15853 -0.977573 0.210596
--0.134036 -0.990977 0.638954 -0.769245
-0.976619 -0.214976 -0.947836 -0.31876
-0.256284 0.966601 0.707475 -0.706738
--0.931033 -0.364935 0.941798 -0.336178
--0.240866 0.970558 0.691697 -0.722188
--0.0402165 -0.999191 -0.636271 0.771466
-0.931622 -0.363427 0.87533 0.483527
--0.911627 -0.411018 -0.054393 -0.99852
--0.551483 0.834186 -0.290427 0.956897
--0.555226 0.831699 -0.677277 0.735728
--0.529151 0.848528 0.704777 -0.709429
-0.156065 0.987747 -0.999302 -0.0373488
--0.290659 -0.956827 -0.346296 0.938125
--0.639464 -0.768821 0.965083 -0.261945
-0.675805 0.737081 0.369237 0.929335
--0.771435 0.636308 0.989541 0.144255
--0.732697 -0.680555 0.854472 -0.519498
--0.699665 -0.714471 -0.500181 -0.865921
--0.974729 -0.223391 -0.858705 -0.512471
--0.435434 -0.900221 0.480345 -0.87708
--0.984707 -0.174217 0.230216 -0.973139
--0.982931 0.183973 0.940439 0.339963
-0.585766 -0.81048 0.96907 -0.246785
--0.153229 0.988191 -0.947811 0.318832
-0.9005 -0.434856 0.535631 -0.844452
--0.703142 0.71105 -0.847681 0.530506
-0.996202 -0.0870678 -0.760338 -0.649527
-0.568399 -0.822753 -0.721002 -0.692933
--0.903345 0.428914 0.940498 -0.339799
--0.855193 -0.51831 -0.471065 -0.882099
--0.43078 0.902457 0.850761 0.525552
-0.546124 0.837704 0.339546 -0.94059
--0.946622 -0.322346 0.165314 0.986241
--0.982718 -0.185107 0.97332 -0.229451
--0.202752 -0.97923 0.00357808 -0.999994
-0.540864 -0.84111 0.826599 0.562791
--0.145435 0.989368 -0.442282 0.896876
--0.544768 -0.838587 0.486656 -0.873594
--0.838778 0.544473 0.516997 -0.855987
--0.745111 -0.66694 -0.729767 -0.683696
-0.999922 0.0125228 0.313127 0.949711
--0.0181605 -0.999835 -0.242895 -0.970053
-0.542482 -0.840068 0.703723 0.710475
--0.278654 -0.960392 -0.999383 -0.0351285
--0.757081 0.653321 -0.488514 -0.872556
-0.985809 -0.167869 -0.400428 0.916328
-0.826068 0.56357 -0.983862 -0.178927
-0.999332 0.0365493 -0.870713 -0.491792
--0.809674 -0.58688 0.993754 -0.111591
--0.679296 -0.733865 0.753152 0.657846
--0.402241 -0.915534 -0.849583 0.527455
-0.695047 0.718964 0.120185 -0.992751
-0.802712 0.596366 0.484651 0.874708
--0.977641 -0.21028 -0.693137 0.720806
--0.816975 0.576673 0.202608 0.97926
-0.982176 0.187964 0.998243 0.0592563
-0.83694 -0.547295 0.205168 -0.978727
--0.763663 0.645615 0.482005 -0.876169
-0.712915 -0.70125 -0.678674 -0.734439
--0.521304 0.853371 -0.139611 -0.990206
-0.987708 -0.156312 -0.999923 -0.0124436
-0.325739 0.94546 -0.191404 -0.981511
--0.999569 0.0293481 -0.978782 -0.204904
--0.985372 -0.170415 -0.153029 -0.988222
--0.145099 -0.989417 -0.411506 -0.911407
-0.231403 0.972858 -0.208405 0.978043
--0.676291 0.736635 0.429668 -0.902987
-1 0.000340354 0.999421 0.0340288
-0.689765 -0.724033 0.752991 0.658031
-0.16618 -0.986095 -0.550808 -0.834632
--0.744884 -0.667194 -0.706079 -0.708133
-0.698778 -0.715339 -0.389158 0.921171
--0.988951 -0.148244 -0.675848 0.737041
--0.964574 0.263813 0.00622628 -0.999981
--0.881722 -0.471768 0.421277 -0.906932
-0.845567 -0.533869 0.973271 0.229661
--0.9066 0.421991 0.913817 0.406126
--0.462488 -0.886626 -0.576753 0.816919
-0.864515 -0.502607 -0.734494 -0.678615
-0.981709 0.19039 0.95343 0.301616
--0.336497 0.941685 -0.97179 0.23585
--0.807897 -0.589324 0.981953 0.189127
-0.54545 0.838143 0.414018 -0.910269
--0.831699 0.555226 -0.677278 -0.735727
-0.66591 0.746032 -0.816952 0.576706
--0.928954 -0.370196 0.975273 0.221003
--0.921237 0.389001 -0.632492 -0.774567
-0.965626 0.259935 0.396826 0.917894
-0.948411 -0.317042 0.663722 -0.74798
--0.383977 0.923343 -0.139616 0.990206
--0.725206 0.688532 0.853503 -0.521087
-0.887196 -0.461393 -0.672978 0.739663
--0.99806 -0.0622664 0.998621 -0.0524943
-0.704686 -0.709519 -0.942167 0.335144
--0.952847 0.303452 0.833936 0.551861
-0.0832097 0.996532 -0.458782 -0.888549
-0.853328 0.521374 -0.131434 -0.991325
-0.420868 -0.907122 0.856639 -0.515916
-0.0828706 0.99656 -0.42828 -0.903646
-0.966088 -0.258213 0.553354 -0.832946
--0.824569 -0.565762 -0.902444 -0.430808
-0.60317 -0.797613 -0.337502 0.941325
-0.490371 -0.871514 0.551943 0.833882
-0.731587 0.681748 0.927438 -0.373977
--0.371381 0.928481 0.939205 0.343356
--0.843524 0.537091 0.988795 -0.14928
-0.98257 0.185892 0.988536 -0.150985
--0.0551169 -0.99848 0.718816 0.6952
-0.866319 0.499492 -0.44834 0.893863
-0.942877 -0.33314 -0.828535 -0.559938
-0.135992 -0.99071 0.475657 0.879631
--0.761877 0.647722 0.224875 -0.974388
--0.958075 -0.286517 -0.707682 -0.706531
-0.904534 -0.426402 0.997631 -0.0687934
-0.27402 -0.961724 -0.869186 0.494485
--0.424241 -0.905549 0.985603 0.169077
--0.998122 0.0612535 0.988166 0.153387
-0.121674 0.99257 0.932765 0.360485
--0.174275 -0.984697 0.235918 0.971773
--0.92721 0.374541 0.770597 -0.637322
--0.963202 -0.268778 -0.487184 0.873299
-0.804381 0.594114 0.707735 0.706478
--0.649807 0.760099 -0.0471914 0.998886
-0.944597 0.328231 -0.440669 0.89767
-0.988371 -0.15206 -0.903577 -0.428426
-0.388513 -0.921443 -0.590601 0.806964
--0.248493 0.968634 0.999794 -0.0202792
-0.922685 0.385554 -0.305949 0.952048
--0.672349 -0.740235 -0.0896063 0.995977
--0.985895 -0.167368 -0.446518 -0.894775
-0.99095 0.134231 0.623706 0.781659
-0.135601 0.990763 0.509939 -0.86021
--0.728156 0.685411 0.992974 -0.11833
-0.602917 -0.797804 -0.30756 0.951529
--0.576247 0.817276 0.151238 -0.988497
--0.365968 -0.930628 0.973236 0.229808
--0.0800818 0.996788 -0.162069 0.986779
--0.718128 0.695911 0.000255501 -1
--0.909042 0.416705 0.539816 0.841783
--0.567264 0.823536 -0.809383 -0.587281
--0.445271 0.895396 -0.560149 0.828392
-0.289211 0.957265 -0.483691 0.875239
--0.101237 -0.994862 -0.754249 0.656588
-0.683149 -0.730279 0.981692 -0.190475
-0.669781 0.742559 -0.422334 0.90644
--0.984524 -0.175251 0.33091 -0.943662
--0.951124 -0.30881 0.999763 -0.0217518
--0.714008 -0.700138 -0.556372 0.830933
-0.0541579 -0.998532 0.648838 -0.760927
--0.138328 0.990387 0.257 0.966411
-0.924266 0.38175 0.100833 0.994903
--0.320548 0.947232 0.348413 0.937341
--0.69967 0.714466 -0.50086 0.865528
--0.890762 0.45447 -0.998553 0.0537699
--0.613701 0.789539 -0.994958 -0.100297
--0.582893 0.812549 0.82338 -0.56749
-0.0726956 0.997354 0.546356 -0.837553
--0.612273 -0.790646 -0.996787 -0.0800992
--0.851108 0.52499 0.288365 0.957521
-0.689399 -0.724381 0.785227 0.619208
-0.471308 0.881968 0.373412 0.927666
--0.913875 0.405995 -0.568599 0.822615
-0.811174 0.584805 0.933067 -0.359702
--0.947697 -0.319171 0.480559 0.876962
--0.227087 0.973874 -0.607863 -0.794042
--0.945383 0.325961 -0.214449 -0.976735
-0.0497974 0.998759 0.266166 0.963927
--0.952561 -0.304348 0.88206 -0.471137
-0.452066 -0.891984 -0.97679 0.2142
--0.461456 -0.887163 -0.667738 0.744397
-0.790995 -0.611823 -0.990614 -0.136686
-0.597388 0.801953 0.369707 -0.929149
-0.715793 -0.698313 -0.328547 -0.944488
--0.688758 -0.724992 0.836917 -0.54733
-0.993754 0.111593 0.185958 -0.982558
-0.997963 0.063801 0.994878 0.101081
-0.551043 0.834477 -0.239551 -0.970884
--0.910722 -0.41302 0.164542 -0.98637
--0.667884 -0.744266 -0.637514 0.770438
-0.863095 -0.505041 -0.894201 -0.447665
-0.535028 -0.844835 0.995527 -0.0944823
--0.333178 -0.942864 -0.830794 -0.55658
-0.201727 0.979442 0.108063 -0.994144
-0.229262 0.973365 -0.416842 0.908979
-0.725286 0.688448 0.85952 0.511102
--0.897107 -0.441813 -0.207228 0.978293
--0.924542 -0.38108 0.172617 0.984989
--0.633901 0.773414 0.897679 -0.44065
-0.199957 0.979805 0.284923 -0.958551
-0.986949 -0.161035 -0.893371 0.449321
-0.123236 0.992377 0.977736 0.20984
--0.769915 0.638146 0.995608 -0.0936215
--0.836569 0.547862 0.138352 -0.990383
--0.480381 0.87706 0.987773 -0.155899
-0.933324 -0.359035 0.560551 0.82812
--0.343575 -0.939125 -0.870505 0.49216
-0.168257 -0.985743 -0.364099 -0.93136
-0.405067 0.914287 -0.649048 0.760748
-0.0414555 0.99914 -0.535962 0.844242
--0.803204 -0.595703 0.555146 0.831753
-0.624202 -0.781263 -0.132904 -0.991129
-0.644088 0.764951 0.646328 -0.76306
--0.00209844 -0.999998 0.978063 -0.208308
--0.0987671 -0.995111 -0.892444 0.451159
-0.110963 -0.993825 0.123277 -0.992372
-0.109508 -0.993986 -0.0227956 -0.99974
--0.0350768 -0.999385 -0.933477 0.358638
-0.890469 -0.455044 -0.993009 0.118036
--0.510267 0.860016 -0.989865 -0.142014
--0.72038 0.693579 0.318796 -0.947823
-0.538744 -0.84247 0.940791 0.338988
-0.453564 0.891224 -0.998854 -0.0478533
-0.893966 0.448135 -0.792393 0.610011
-0.933829 0.357719 0.438668 -0.898649
--0.763501 0.645807 0.459862 -0.88799
-0.339863 0.940475 -0.992855 0.119323
--0.6797 -0.73349 0.788238 0.615371
-0.951993 -0.306121 0.954041 0.299678
--0.942816 -0.333314 -0.838686 0.544615
-0.582766 -0.81264 0.814451 -0.580233
-0.890271 -0.45543 -0.986963 0.160947
-0.214584 -0.976705 -0.934295 0.3565
-0.0699025 0.997554 0.756551 -0.653935
--0.49526 0.868745 0.0228513 0.999739
-0.753547 0.657394 -0.867294 0.497797
-0.423398 0.905944 0.965622 0.259951
-0.986019 0.166632 -0.511924 -0.859031
-0.774811 -0.632192 0.779409 0.626516
--0.656788 0.754075 -0.824492 0.565874
--0.125613 0.992079 0.999602 0.0282204
--0.998931 0.0462221 -0.0884207 0.996083
-0.179163 0.983819 0.670433 0.74197
--0.839798 0.542899 0.667604 -0.744516
-0.0483182 0.998832 0.121011 0.992651
-0.961314 -0.275456 -0.93307 -0.359695
-0.44636 0.894854 -0.656537 -0.754294
-0.998116 0.0613522 0.989635 -0.143608
--0.309006 -0.95106 0.999999 0.00113174
-0.804667 0.593726 0.740981 0.671526
--0.56207 0.82709 -0.999999 0.00161074
-0.882237 0.470805 0.319868 -0.947462
-0.933705 -0.358042 0.469469 0.882949
--0.992057 -0.125792 0.99893 0.0462444
-0.577706 0.816245 0.324501 0.945885
-1 -0.00034574 0.999402 -0.0345671
-0.838673 -0.544635 0.500435 -0.865774
--0.571317 0.820729 -0.435049 -0.900407
--0.679954 -0.733255 0.809038 0.587756
-0.631687 -0.775224 0.736888 -0.676015
-0.812207 -0.583369 0.855245 0.518224
--0.992126 0.125241 0.999957 0.00926729
-0.209312 -0.977849 -0.618479 0.785802
--0.395493 -0.918469 -0.983798 -0.179279
--0.194287 -0.980945 0.762579 -0.646895
-0.745837 0.666128 -0.79973 -0.60036
-0.305774 -0.952104 0.942487 -0.334244
-0.80642 -0.591344 0.904524 -0.426423
-0.624411 0.781096 -0.106327 0.994331
--0.364996 -0.931009 0.943992 0.32997
--0.0837294 0.996489 -0.504471 0.863429
--0.853343 0.521349 -0.134345 0.990935
-0.407639 0.913143 -0.412145 0.911118
--0.995366 0.0961592 -0.978852 0.204569
-0.433597 -0.901107 0.648077 0.761575
--0.89238 0.451284 -0.954297 -0.298861
--0.930371 0.366619 0.98692 0.161211
-0.999899 -0.0142123 0.148965 -0.988843
--0.918386 0.395685 -0.987324 -0.158719
-0.636167 0.771552 0.986737 0.162328
-0.813024 0.58223 0.774413 -0.632681
-0.188931 -0.98199 0.987578 0.157128
-0.198 0.980202 0.469425 -0.882972
-0.967588 0.252534 0.922188 0.386743
--0.310957 0.950424 0.979255 0.20263
--0.685699 0.727885 0.98752 0.157496
-0.967675 0.2522 0.935005 0.354634
-0.256843 0.966453 0.665485 -0.746411
--0.205645 -0.978627 -0.287809 -0.957688
--0.473048 -0.881037 0.548017 0.836467
-0.911462 0.411385 -0.0141966 -0.999899
--0.737927 -0.67488 0.25015 -0.968207
-0.579665 0.814855 0.540242 0.84151
-0.593052 -0.805164 0.794503 0.607261
--0.328012 0.944674 -0.419677 0.907674
-0.686706 -0.726935 0.956346 0.292238
-0.978663 -0.205472 -0.270812 -0.962632
-0.79913 0.601158 -0.0921553 0.995745
-0.123905 -0.992294 0.989654 -0.143472
-0.771581 0.636131 0.98597 -0.166923
-0.268004 -0.963418 -0.415559 0.909566
-0.978435 0.206554 -0.375374 0.926874
--0.99007 -0.140575 0.0329494 0.999457
-0.988987 -0.148 -0.657451 -0.753497
--0.993763 -0.111511 0.177826 -0.984062
--0.555964 0.831206 -0.739807 0.672819
--0.815763 0.578387 0.402212 0.915546
-0.965451 -0.260585 0.334141 -0.942523
--0.544095 0.839024 0.555107 0.831779
-0.520327 -0.853967 -0.251799 -0.96778
-0.815243 0.579119 0.482707 -0.875782
--0.930867 0.365359 0.956132 0.292935
--0.740282 -0.672297 -0.0966056 -0.995323
--0.406236 0.913768 -0.546697 -0.837331
--0.992961 0.118441 0.768443 0.639918
-0.869163 -0.494526 0.107081 -0.99425
--0.386563 -0.922263 -0.407997 -0.912983
--0.990735 -0.135812 0.491561 0.870843
-0.701175 0.712989 -0.670859 -0.741585
--0.823056 0.56796 -0.756928 0.653498
-0.349009 0.937119 -0.459048 0.888412
-0.345781 0.938315 -0.731986 0.681319
-0.99066 0.136352 0.443376 0.896336
--0.561307 0.827607 -0.995604 0.0936637
-0.960564 0.27806 -0.995303 0.0968037
--0.453756 0.891126 -0.999655 0.0262699
-0.216164 0.976357 -0.979514 -0.201378
-0.997202 0.0747581 0.362727 0.931896
--0.898318 0.439346 0.0659653 -0.997822
-0.995617 -0.0935229 -0.998272 -0.0587625
-0.721866 0.692033 0.513192 0.858274
-0.182521 0.983202 0.880172 0.474654
-0.993464 0.114142 0.42919 -0.903214
--0.617416 -0.786637 -0.840898 0.541193
-0.326025 0.945361 -0.22102 -0.975269
--0.97454 -0.224213 -0.812498 -0.582965
-0.997119 -0.0758576 0.257978 -0.966151
--0.812744 -0.582622 0.804007 -0.594619
--0.999297 0.0374844 -0.820946 0.571005
--0.478881 0.87788 0.946829 -0.321737
--0.920432 0.390903 -0.777909 -0.628377
--0.836378 -0.548153 0.1038 0.994598
-0.125033 -0.992153 0.999542 -0.0302635
-0.944182 0.329425 -0.550287 0.834975
-0.840652 -0.541576 0.776061 -0.630658
--0.00664119 0.999978 0.787457 0.616369
-0.983557 -0.180599 0.771249 0.636533
--0.82444 -0.565949 -0.892411 -0.451224
-0.142389 -0.989811 -0.149678 0.988735
-0.818411 0.574634 -0.0453555 -0.998971
-0.999997 -0.0024406 0.970365 -0.241645
-0.977266 -0.212018 -0.809694 -0.586852
--0.256197 0.966625 0.713818 0.700332
-0.99099 0.133934 0.646832 0.762633
--0.373078 0.9278 0.861102 0.508433
--0.514873 0.857266 -0.77826 -0.627943
--0.56902 0.822324 -0.666643 -0.745377
--0.98651 -0.163701 -0.741074 -0.671424
--0.57752 0.816376 0.302881 -0.953028
-0.149876 -0.988705 -0.787729 0.616022
--0.997496 -0.070722 0.700339 0.713811
--0.981851 0.189652 0.973395 -0.229132
-0.999452 -0.033101 -0.985735 0.168306
--0.982904 -0.184116 0.945302 -0.326195
-0.755397 0.655267 -0.694521 0.719472
-0.357139 0.934051 0.382011 0.924158
-0.916599 0.399809 -0.958216 -0.286045
-0.802928 0.596076 0.515948 0.85662
-0.253936 -0.967221 0.856662 0.515878
--0.930941 -0.365169 0.949977 -0.312319
--0.90779 0.419425 0.76412 0.645074
-0.144359 0.989525 -0.342239 -0.939613
-0.57845 0.815718 0.409239 0.912427
-0.30263 0.953108 0.783293 0.621653
--0.189674 0.981847 0.972883 0.231297
-0.928048 0.37246 0.893024 0.450009
--0.955097 0.296293 0.233641 0.972323
--0.00923392 0.999957 0.603108 0.79766
--0.554326 -0.832299 -0.59389 -0.804546
-0.15728 0.987554 -0.99634 0.0854747
--0.582167 0.81307 0.769485 -0.638665
--0.556356 -0.830944 -0.770705 -0.637193
-0.363084 0.931757 0.856892 0.515495
--0.636783 -0.771043 0.996549 0.0830043
--0.440052 -0.897972 -0.0125722 -0.999921
--0.999942 -0.0107493 0.475777 0.879566
-0.988852 -0.148904 -0.723452 -0.690374
-0.988822 0.149099 -0.736937 0.675961
-0.984693 0.174296 0.237976 -0.971271
--0.44952 0.89327 -0.877066 0.480369
-0.295616 -0.955307 0.1641 -0.986444
--0.969901 -0.243499 0.859967 -0.510349
-0.271952 -0.962311 -0.743664 0.668553
-0.263832 -0.964569 0.00426564 0.999991
-0.908488 0.417911 0.646456 -0.762952
-0.836002 -0.548726 0.0354857 -0.99937
-0.995181 -0.0980524 -0.92252 0.38595
-0.665635 0.746278 -0.837683 0.546157
-0.998332 0.0577335 0.874389 -0.485225
-0.157874 -0.987459 -0.989391 -0.145279
--0.347149 -0.93781 -0.625204 0.780461
--0.930491 0.366315 0.981145 0.193275
-0.999907 0.0136725 0.202102 0.979364
-0.56418 -0.825651 -0.967972 -0.251058
--0.630733 -0.776 0.648373 0.761323
--0.20308 0.979162 -0.0299022 0.999553
-0.831109 -0.556109 -0.751444 -0.659797
-0.832335 0.554274 -0.588765 0.808305
--0.977245 -0.212113 -0.815338 0.578986
--0.923555 -0.383465 -0.0845616 0.996418
--0.416466 0.909151 0.51752 -0.855671
-0.741382 -0.671083 -0.257612 0.966249
-0.195187 0.980766 0.700082 -0.714062
--0.99832 -0.0579468 0.884554 -0.466438
--0.989534 -0.144303 -0.336925 0.941531
-0.794808 -0.606861 -0.722807 -0.69105
-0.997639 0.0686746 0.831114 0.556103
--0.999989 0.00465139 0.893758 -0.448549
-0.876406 -0.481573 0.999786 0.0206707
-0.970399 0.241508 0.737911 -0.674898
-0.44536 -0.895351 -0.568417 0.822741
--0.20097 -0.979597 0.184455 -0.982841
--0.882384 -0.470529 0.290146 -0.956982
--0.74049 -0.672068 -0.127335 -0.99186
--0.997911 -0.0645994 0.983619 0.180261
--0.604996 -0.796228 -0.542564 -0.840014
--0.987832 -0.155524 -0.995754 0.0920581
--0.999437 0.0335595 -0.976979 0.213334
-0.191501 -0.981492 0.913277 0.40734
--0.977206 -0.212295 -0.826008 0.563659
--0.124647 0.992201 0.997607 -0.0691358
--0.986933 0.161133 -0.888897 0.458106
-0.987048 -0.160426 -0.919374 0.393384
--0.138201 0.990404 0.269327 0.963049
--0.423769 0.90577 0.975439 -0.22027
--0.747054 -0.664763 -0.89559 -0.444881
--0.9417 -0.336453 -0.970672 0.240409
-0.151509 0.988456 -0.878321 -0.478071
--0.253338 -0.967378 0.886891 -0.461979
-0.848906 0.528544 0.652231 -0.75802
-0.239111 -0.970992 0.550631 -0.834749
-0.985 0.172557 0.0636815 -0.99797
-0.984061 -0.177834 0.564413 0.825492
-0.998988 0.0449871 -0.210576 -0.977578
--0.973345 -0.229344 -0.409162 -0.912462
--0.999423 0.0339701 -0.967392 0.253284
-0.821304 -0.57049 -0.523349 0.852118
--0.955297 -0.295647 0.167362 -0.985895
-0.999254 -0.0386185 -0.751005 0.660297
-0.445064 -0.895499 -0.540851 0.841118
--0.855618 -0.517607 -0.54188 -0.840456
-0.410451 -0.911883 -0.11637 -0.993206
--0.966673 -0.256015 0.726923 0.686719
-0.511435 0.859322 -0.961526 0.274714
--0.916782 0.399389 -0.970303 0.241893
-0.948115 0.317926 0.591226 0.806506
-0.3748 -0.927106 0.752453 0.658645
-0.967741 -0.251948 0.943915 -0.33019
--0.958251 -0.285929 -0.74967 -0.661811
--0.838173 -0.545405 0.418906 0.90803
--0.999169 0.0407578 -0.593566 0.804785
-0.403142 -0.915138 -0.793632 -0.608399
-0.915103 0.403221 -0.788339 -0.615242
--0.979689 0.200523 0.229119 -0.973398
-0.850641 0.525746 0.372171 -0.928164
--0.753018 0.658 -0.904495 -0.426484
-0.865181 0.50146 -0.638243 0.769835
--0.624161 -0.781296 -0.138116 0.990416
--0.764494 -0.644631 0.590548 0.807003
-0.265917 -0.963996 -0.210404 0.977615
--0.116905 -0.993143 0.660671 0.750675
--0.808731 0.588179 0.998818 -0.0485988
-0.428272 -0.90365 0.962231 0.272233
--0.291656 -0.956523 -0.246785 0.96907
--0.834373 0.551201 -0.257836 -0.966189
--0.624104 0.781341 -0.145306 -0.989387
-0.323981 0.946064 -0.00671249 -0.999977
--0.370819 0.928705 0.958245 0.285947
-0.827206 -0.561899 -0.999751 -0.0223291
-0.360275 0.932846 0.665323 0.746555
-0.666616 0.745401 -0.758783 0.651343
--0.998616 0.052603 0.522978 0.852346
-0.998521 0.0543594 0.664059 -0.74768
--0.453566 -0.891223 -0.998867 -0.0475954
--0.55593 -0.831229 -0.737009 -0.675883
--0.937137 0.348963 -0.463481 0.886107
--0.14669 -0.989183 -0.55217 -0.833731
--0.979 0.203861 -0.109397 -0.993998
--0.818985 0.573815 -0.144902 0.989446
--0.14227 0.989828 -0.137827 0.990456
-0.931758 0.363081 0.856753 -0.515728
-0.794917 -0.606718 -0.710282 -0.703917
-0.848474 0.529238 0.711976 -0.702204
-0.706252 0.707961 -0.992708 -0.120542
--0.65711 0.753794 -0.847931 0.530107
-0.443502 0.896273 -0.386784 -0.92217
--0.997658 -0.0683928 0.846491 0.532404
--0.946517 0.322654 0.133091 -0.991104
-0.423438 -0.905925 0.966754 -0.25571
-0.718615 0.695408 0.0702423 0.99753
-0.0593422 0.998238 0.940915 0.338643
--0.949215 -0.314628 0.830662 0.556778
--0.990191 -0.139724 0.118638 0.992938
-0.927472 0.373893 0.813188 0.582001
--0.0241042 0.999709 -0.744551 0.667566
-0.903204 -0.429212 0.928776 -0.370642
--0.870977 0.491324 0.457662 -0.889126
--0.953598 0.301083 0.672548 0.740053
-0.0636858 0.99797 0.995979 -0.0895851
--0.444403 0.895827 -0.477401 0.878685
--0.624421 -0.781088 -0.105029 0.994469
--0.701434 0.712734 -0.697382 0.7167
-0.396665 -0.917964 -0.998614 0.0526221
--0.581038 -0.813876 0.673799 0.738915
-0.953352 0.301862 0.730703 -0.682696
--0.983556 0.180604 0.771554 0.636164
-0.828525 0.559952 -0.96705 0.254586
-0.158749 -0.987319 -0.972657 -0.232246
-0.926083 -0.377319 0.54794 -0.836518
--0.999858 0.0168272 -0.111771 -0.993734
-0.954691 0.2976 0.364087 -0.931365
-0.999883 -0.0153269 0.0380335 -0.999276
--0.784595 0.620008 -0.620117 0.784509
-0.652529 0.757764 -0.394786 -0.918773
-0.71702 0.697053 -0.158211 0.987405
-0.0482069 -0.998837 0.109942 -0.993938
--0.389766 0.920914 -0.694568 0.719427
--0.667667 -0.74446 -0.659622 0.751597
-0.276651 0.960971 -0.970464 -0.241248
-0.669237 0.743049 -0.487512 0.873116
-0.037907 -0.999281 -0.796074 -0.605199
--0.94286 0.333189 -0.831427 -0.555634
--0.401467 -0.915874 -0.891089 0.453829
--0.177159 0.984182 0.50648 -0.862252
--0.999053 -0.0435053 -0.352727 -0.935726
-0.925285 -0.379274 0.360501 -0.932759
-0.262412 0.964956 0.150819 -0.988561
-0.891527 -0.452967 -0.993409 -0.114628
--0.768157 0.640262 0.932745 -0.360536
--0.946285 0.323334 0.0616527 -0.998098
-0.00958207 0.999954 0.574976 -0.81817
-0.979754 0.200205 0.260577 0.965453
-0.433306 -0.901247 0.672341 0.740242
-0.921722 0.38785 -0.531126 0.847293
--0.406332 -0.913725 -0.537811 0.843066
-0.685145 -0.728407 0.996641 0.0818928
--0.976613 -0.215006 -0.948809 0.31585
-0.174986 -0.984571 0.305458 -0.952206
--0.610404 -0.79209 -0.950371 -0.311119
--0.985551 0.169382 -0.255676 0.966762
--0.158394 0.987376 -0.98038 -0.197115
--0.347021 -0.937857 -0.635783 0.771867
--0.982839 0.184467 0.956339 0.29226
--0.487906 -0.872896 0.762589 -0.646883
-0.484233 -0.874939 0.96017 0.279418
--0.833298 -0.552824 -0.439883 0.898055
--0.895402 0.44526 -0.559121 -0.829086
-0.617006 0.786959 -0.867924 0.496697
-0.144811 0.989459 -0.38482 -0.922992
--0.675595 -0.737273 0.342591 0.939484
--0.171825 0.985127 -0.010551 -0.999944
-0.994238 -0.107199 -0.252248 0.967663
-0.882643 0.470045 0.23717 -0.971468
-0.971234 -0.238126 0.463205 0.886251
--0.070634 0.997502 0.70661 0.707603
--0.861357 -0.507999 -0.992685 0.120737
-0.808353 -0.588697 0.993644 -0.112565
--0.981081 0.193598 0.806079 -0.591807
--0.998031 -0.0627291 0.999981 -0.00615211
--0.244022 0.96977 0.886233 -0.463239
-0.865785 -0.500416 -0.540985 -0.841032
-0.053163 -0.998586 0.569932 -0.821692
--0.433234 0.901281 0.678168 0.734907
--0.0758487 -0.997119 0.258841 -0.96592
-0.436304 -0.8998 0.393509 0.919321
-0.999561 0.0296373 -0.984301 0.176499
--0.778276 -0.627922 0.337073 -0.941478
--0.619562 0.784948 -0.663732 -0.747971
-0.204089 -0.978952 -0.132598 0.99117
--0.0223079 0.999751 -0.613256 0.789884
-0.477654 -0.878548 0.89281 -0.450433
-0.934267 0.356573 0.325371 -0.945586
-0.945365 -0.326013 -0.219787 -0.975548
--0.307393 0.951583 0.985473 -0.169833
--0.144584 -0.989493 -0.363559 -0.931571
-0.172536 -0.985003 0.0615524 -0.998104
-0.782208 -0.623017 -0.280973 0.959716
-0.570042 0.821616 -0.569078 0.822283
-0.881612 -0.471974 0.442332 0.896851
-0.729723 0.683743 0.993934 -0.109983
-0.220638 -0.975356 -0.967484 -0.252933
-0.313472 0.949598 0.892134 -0.451771
-0.798814 0.601578 -0.144292 0.989535
-0.653205 -0.757181 -0.475175 0.879891
-0.530578 0.847636 0.813624 0.581392
--0.656498 0.754327 -0.802156 0.597115
--0.947291 0.320376 0.365463 -0.930826
-0.927896 0.37284 0.873897 0.486111
-0.498041 -0.867153 -0.293225 0.956044
-0.965522 -0.260322 0.35973 -0.933057
--0.587995 0.808864 0.999662 0.0259845
--0.0027401 -0.999996 0.962694 -0.270594
--0.208624 -0.977996 -0.561664 -0.827366
--0.474274 -0.880377 0.658843 0.752281
--0.996908 0.0785806 -0.0121875 -0.999926
--0.971024 -0.238984 0.539595 -0.841925
--0.447974 -0.894047 -0.781276 -0.624185
-0.825212 0.564823 -0.945517 -0.325574
-0.789199 -0.614138 -0.987881 0.155211
--0.966656 0.25608 0.72227 -0.691612
--0.583091 0.812407 0.837009 -0.547188
--0.162586 -0.986694 -0.812078 0.583548
--0.994426 -0.105436 -0.418973 -0.907999
--0.286379 0.958116 -0.717773 -0.696278
-0.988899 0.14859 -0.701175 0.712989
-0.0394497 0.999222 -0.693543 0.720415
-0.894337 0.447394 -0.739138 0.673554
-0.866099 -0.499873 -0.487256 -0.873259
--0.798488 0.602011 -0.197704 -0.980262
-0.999617 -0.0276765 -0.931022 -0.364962
-0.973797 0.22742 -0.580344 -0.814372
-0.410998 0.911636 -0.0566651 0.998393
-0.339633 0.940558 -0.995476 0.0950138
-0.641072 0.767481 0.889588 -0.456763
-0.958739 0.284286 -0.851552 -0.52427
--0.617049 0.786925 -0.865183 -0.501456
--0.999795 -0.020272 -0.440849 0.897582
--0.999283 0.037855 -0.799215 0.601045
--0.865954 0.500124 -0.512317 -0.858796
--0.515518 0.856879 -0.72886 -0.684663
--0.954975 0.296685 0.273308 0.961927
-0.104645 -0.99451 -0.489829 -0.871819
-0.858288 0.513168 -0.886934 -0.461896
-0.489387 0.872067 0.642358 -0.766405
--0.925174 0.379544 0.333132 -0.94288
--0.895959 -0.444137 -0.451052 0.892498
--0.266797 -0.963753 -0.298642 -0.954365
-0.753783 0.657123 -0.8488 0.528714
--0.488498 -0.872565 0.717051 -0.697021
--0.802433 -0.596742 0.443151 0.896447
--0.896925 -0.442183 -0.247398 0.968914
-0.993717 0.111926 0.218776 -0.975775
--0.458338 0.888778 -0.882994 -0.469385
-0.845303 0.534287 0.983426 -0.181313
--0.391818 0.920043 -0.836442 0.548056
--0.585314 0.810807 0.9538 -0.300444
--0.500524 0.865723 -0.551428 0.834222
--0.762039 0.647532 0.249101 -0.968478
--0.101639 0.994821 -0.72711 -0.686521
--0.121512 -0.99259 0.926776 0.375615
--0.743825 0.668374 -0.585375 0.810762
--0.325218 0.945639 -0.13711 0.990556
-0.85494 -0.518727 -0.427527 0.904002
--0.881272 -0.472609 0.505694 -0.862713
--0.934248 0.356624 0.330478 0.943814
-0.967132 -0.254276 0.838003 -0.545665
-0.915696 -0.401872 -0.870131 0.492821
-0.941286 -0.337611 -0.99284 -0.119448
--0.956813 0.290705 -0.341776 0.939782
--0.591965 0.805964 0.869016 0.494784
--0.195958 0.980612 0.64186 0.766822
-0.827485 -0.561488 -0.997411 -0.0719136
-0.739593 0.673055 0.00569232 -0.999984
--0.671407 0.741088 -0.215096 -0.976593
-0.894615 0.446837 -0.69581 0.718226
--0.939705 -0.341985 -0.940969 -0.338494
-0.930698 -0.365788 0.968626 0.248521
-0.191959 -0.981403 0.893248 0.449564
--0.483608 -0.875285 0.977661 -0.21019
--0.773818 -0.633408 0.867779 -0.496951
--0.739679 0.67296 -0.0071662 0.999974
-0.0467246 0.998908 -0.0382149 0.99927
--0.698061 -0.716039 -0.295062 -0.955478
--0.259088 -0.965854 0.475701 -0.879607
--0.494206 0.869345 0.143599 0.989636
-0.932299 -0.361689 0.770458 0.637491
-0.934769 0.355257 0.18945 -0.98189
--0.505249 -0.862973 -0.904761 -0.42592
--0.476243 0.879314 0.809317 -0.587372
--0.448426 0.89382 -0.81184 0.58388
--0.795185 0.606367 -0.678529 -0.734574
--0.233469 -0.972364 0.00246428 0.999997
--0.699394 -0.714736 -0.467054 -0.884229
--0.365296 0.930891 0.954146 -0.299342
--0.253798 0.967257 0.863957 0.503566
-0.9083 0.41832 0.680196 -0.733031
--0.116586 0.993181 0.636237 -0.771494
-0.156312 0.987708 -0.999923 -0.0123916
-0.996199 0.0871069 -0.762885 0.646534
--0.177171 -0.98418 0.507585 0.861602
--0.888588 -0.458706 -0.862818 -0.505514
--0.280631 0.959816 -0.985442 -0.170012
--0.699212 -0.714915 -0.44431 -0.895873
--0.348459 -0.937324 -0.510418 0.859926
--0.52289 -0.8524 0.0459318 0.998945
--0.306075 -0.952007 0.952595 0.304242
-0.00689805 0.999976 0.771367 -0.636391
--0.798451 -0.60206 -0.203768 0.979019
--0.993057 0.117636 0.714127 0.700016
-0.871928 -0.489635 0.620372 -0.784307
-0.236506 0.97163 0.309699 0.950835
-0.655379 -0.7553 -0.705116 0.709092
-0.52984 0.848097 0.760027 0.649891
-0.530629 -0.847604 0.817121 -0.576466
--0.89931 -0.437311 0.288299 0.95754
--0.999139 0.0414785 -0.534017 0.845474
-0.188136 -0.982143 0.997049 0.0767649
--0.685289 -0.728271 0.994818 -0.101672
-0.540609 0.841274 0.843262 -0.537503
-0.774014 0.633169 0.852019 -0.523512
-0.958245 -0.285949 -0.748269 0.663396
--0.940005 -0.34116 -0.967013 -0.254727
-0.434962 -0.900449 0.52561 0.850726
--0.874569 -0.484901 0.936076 0.351798
-0.660963 -0.750418 -0.998922 0.04642
-0.760573 0.649253 0.0257075 0.99967
--0.591527 -0.806285 0.894594 -0.446881
-0.668242 0.743944 -0.599738 0.800196
--0.522385 0.85271 -0.0133177 -0.999911
--0.519045 -0.854747 -0.393548 0.919304
-0.613782 -0.789475 -0.993869 -0.110568
-0.855328 -0.518086 -0.493979 0.869474
-0.96606 -0.258319 0.544112 -0.839013
--0.993571 0.113209 0.342532 0.939506
--0.783662 -0.621188 -0.495548 -0.86858
--0.725335 -0.688397 0.863119 0.505
-0.411883 0.911237 0.0404569 0.999181
-0.615767 -0.787928 -0.935006 -0.354632
-0.164688 0.986346 -0.670281 0.742108
--0.516218 -0.856457 -0.670551 0.741863
-0.151108 -0.988517 -0.858192 0.513328
--0.919413 0.393292 -0.913207 -0.407497
--0.985201 -0.171404 -0.0532335 -0.998582
-0.918422 -0.395602 -0.985857 -0.167588
--0.154511 0.987991 -0.981108 0.193458
-0.811044 0.584985 0.940835 -0.338864
--0.901223 0.433356 0.668156 -0.744022
-0.941279 0.337629 -0.993064 0.117573
--0.129772 -0.991544 0.901507 -0.432764
--0.851781 -0.523898 0.163516 -0.986541
-0.514787 0.857318 -0.784558 0.620055
--0.407885 -0.913033 -0.387475 0.92188
-0.621945 0.783061 -0.409421 0.912346
-0.995884 -0.0906377 -0.939868 -0.341537
--0.0860073 0.996295 -0.687022 0.726637
-0.998706 0.0508558 0.366628 -0.930368
-0.816289 0.577644 0.317263 -0.948338
-0.854173 -0.519989 -0.289886 0.957061
-0.629543 0.776966 0.524596 0.851352
--0.918979 0.394305 -0.952479 -0.304605
--0.887813 -0.460204 -0.765746 -0.643143
-0.999798 -0.0201211 -0.427247 -0.904135
--0.581745 0.813371 0.73535 -0.677687
--0.97656 -0.215245 -0.956257 0.292529
--0.991092 0.133177 0.703095 -0.711096
-0.961148 -0.276035 -0.953027 -0.302884
-0.560159 0.828385 -0.973091 -0.230422
--0.52957 -0.848266 0.738959 0.67375
-0.374348 -0.927288 0.783674 0.621172
--0.724823 0.688935 0.823242 -0.567691
--0.45313 0.891445 -0.99534 0.0964225
--0.860074 -0.51017 -0.991408 -0.130803
-0.395459 -0.918484 -0.983122 0.18295
-0.599221 -0.800583 0.149271 0.988796
--0.991735 -0.128305 0.955466 0.295101
-0.846351 0.532626 0.929156 -0.369687
-0.954324 -0.298773 0.475507 0.879712
-0.949376 -0.314143 0.857962 -0.513714
-0.616823 0.787102 -0.879246 0.476367
--0.420091 -0.907482 0.809381 0.587284
--0.973239 -0.229795 -0.366509 -0.930414
--0.357265 0.934003 0.394446 -0.918919
--0.657212 0.753705 -0.855021 0.518594
--0.425358 -0.905025 0.998916 0.0465479
--0.271138 0.96254 -0.684572 0.728945
--0.694388 -0.719601 0.210589 -0.977575
--0.378782 -0.925486 0.409537 -0.912293
--0.777333 0.62909 0.474097 0.880473
--0.967312 -0.25359 0.874552 0.484931
-0.480611 -0.876934 0.991524 -0.129925
-0.466299 -0.884627 -0.18337 -0.983044
-0.742089 0.670302 -0.357805 -0.933796
-0.462869 -0.886427 -0.541095 -0.840961
-0.448263 0.893902 -0.801038 -0.598614
--0.580415 -0.814321 0.615316 0.78828
--0.340694 0.940174 -0.978446 -0.206504
-0.677595 0.735435 0.582101 0.813117
-0.349447 -0.936956 -0.417122 -0.908851
-0.977939 -0.208889 -0.583899 -0.811826
-0.935617 -0.353017 -0.0489086 0.998803
-0.392215 0.919873 -0.859338 -0.511408
--0.256921 0.966433 0.659457 0.751742
--0.984798 -0.173703 0.179135 -0.983825
-0.999994 0.00352835 0.938397 0.34556
-0.619758 0.784793 -0.644882 0.764282
-0.954372 0.298622 0.461485 -0.887148
-0.844466 0.535609 0.999666 -0.0258344
-0.825925 0.56378 -0.978994 -0.203889
-0.999867 -0.0163056 -0.0598043 -0.99821
-0.0993074 0.995057 -0.866646 0.498923
-0.164657 -0.986351 -0.672638 -0.739972
--0.976857 -0.213895 -0.90683 0.421496
--0.964865 -0.262745 0.116624 0.993176
-0.635204 0.772345 0.958864 0.283865
-0.221933 0.975062 -0.925467 0.378829
-0.514515 -0.857481 -0.803808 -0.594888
-0.114703 -0.9934 0.479425 -0.877583
-0.818342 -0.574732 -0.0334105 0.999442
-0.139483 0.990224 0.1427 -0.989766
--0.36287 0.93184 0.84485 -0.535004
--0.110697 -0.993854 0.0967251 0.995311
-0.94102 0.33835 -0.99915 0.0412138
--0.893895 0.448276 -0.801876 -0.59749
--0.932217 -0.3619 0.78468 -0.619901
-0.119373 0.992849 0.825028 0.565091
-0.883871 0.467732 -0.0224181 -0.999749
-0.65785 -0.753149 -0.895779 0.444499
--0.64929 0.760541 0.0207643 0.999784
-0.74711 -0.664701 -0.899271 0.437391
-0.486013 -0.873952 0.883901 0.467674
--0.339003 0.940785 -0.999603 -0.0281582
-0.904469 0.42654 0.996463 0.084027
-0.719749 0.694235 0.231324 0.972877
-0.497267 -0.867598 -0.206766 0.97839
-0.902958 0.429729 0.906042 0.423188
--0.0987608 0.995111 -0.892729 -0.450594
-0.733661 -0.679516 0.772558 0.634945
-0.532351 0.846524 0.916672 0.39964
--0.642593 0.766208 0.782105 0.623147
-0.722483 -0.691389 0.587606 -0.809147
--0.789473 0.613786 -0.99382 0.111002
-0.649942 0.759984 -0.0649632 -0.997888
--0.853647 0.520852 -0.191806 0.981433
-0.923004 -0.38479 -0.226148 -0.974093
--0.174124 0.984724 0.220974 -0.97528
--0.697316 -0.716764 -0.194285 -0.980945
-0.144949 -0.989439 -0.397697 0.917517
-0.958252 0.285925 -0.749948 -0.661496
--0.98259 -0.185789 0.986889 -0.161403
-0.999985 0.00552191 0.851376 0.524556
--0.614157 0.789184 -0.987497 -0.15764
--0.0758769 0.997117 0.256103 0.966649
-0.939138 0.343541 -0.872271 -0.489022
-0.19522 -0.980759 0.697662 0.716427
-0.43159 -0.90207 0.800186 0.599752
--0.228977 0.973432 -0.443306 -0.89637
-0.631282 -0.775554 0.700607 -0.713547
--0.395472 -0.918478 -0.983379 -0.181564
--0.591662 -0.806186 0.886972 -0.461823
--0.0438743 -0.999037 -0.317936 0.948112
--0.99491 -0.100769 -0.784297 -0.620385
-0.959023 -0.283328 -0.899625 0.436664
-0.386447 -0.922312 -0.396478 0.918044
--0.646128 -0.763229 0.422132 -0.906534
-0.231076 -0.972936 -0.241216 -0.970471
-0.745289 -0.666741 -0.747732 0.664001
-0.82331 -0.567592 -0.785328 0.61908
--0.491594 -0.870824 0.429842 -0.902904
-0.961168 0.275964 -0.950786 0.309848
--0.09416 0.995557 -0.999987 -0.00518911
--0.957247 -0.289273 -0.478005 -0.878357
--0.928199 0.372084 0.910517 -0.413472
--0.817806 0.575495 0.0597842 0.998211
-0.967819 -0.251647 0.953733 -0.300656
--0.713557 0.700597 -0.608671 -0.793423
--0.424304 -0.90552 0.986746 0.162273
--0.855247 -0.518221 -0.480223 -0.877146
-0.589769 0.807572 0.970045 -0.242925
--0.147679 -0.989035 -0.632666 -0.774425
-0.744077 0.668094 -0.615501 -0.788136
-0.5853 0.810817 0.9533 0.302024
-0.871229 0.490877 0.502675 0.864475
--0.722626 0.691239 0.60422 -0.796818
-0.271129 0.962543 -0.68384 -0.729632
-0.651514 -0.758637 -0.268636 0.963242
-0.311668 0.950191 0.961381 -0.27522
--0.999052 0.0435251 -0.350869 0.936424
--0.177075 -0.984197 0.499111 0.866538
-0.749474 -0.662033 -0.995372 0.0960935
-0.626191 0.77967 0.121251 0.992622
--0.975481 0.220085 -0.980261 0.19771
--0.812372 0.58314 0.840283 0.542148
-0.821434 0.570304 -0.542523 -0.840041
--0.173984 0.984748 0.207146 -0.97831
-0.969966 0.243242 0.846186 -0.532887
-0.744683 -0.667419 -0.68437 0.729135
-0.526904 0.849925 0.49471 0.869058
-0.936645 -0.350281 -0.334634 0.942348
--0.947286 -0.320389 0.364168 0.931333
-0.271894 0.962327 -0.739639 -0.673004
-0.26053 0.965466 0.33952 -0.940599
-0.814107 0.580716 0.643969 -0.765052
--0.610439 -0.792063 -0.951722 -0.306962
--0.768683 -0.63963 0.959214 0.282679
-0.934043 0.35716 0.384157 -0.923268
-0.9905 0.137511 0.335735 0.941957
--0.253042 0.967455 0.90063 0.434587
--0.613749 -0.789501 -0.994322 0.106413
-0.473116 0.881 0.554502 0.832182
-0.994217 0.107394 -0.233243 -0.972419
-0.0707842 -0.997492 0.695874 0.718164
--0.437414 0.89926 0.277269 0.960792
-0.813473 0.581603 0.723386 -0.690443
-0.638355 0.769742 0.992706 -0.120556
--0.984172 -0.177215 0.511417 -0.859333
-0.971214 -0.238208 0.470736 0.882274
--0.532448 0.846463 0.92119 -0.389113
-0.990953 0.134211 0.625259 0.780417
--0.406421 -0.913686 -0.529574 0.848263
-0.161331 0.9869 -0.879535 0.475833
-0.515885 0.856658 -0.698846 0.715273
-0.597545 0.801835 0.351411 -0.936221
--0.706562 -0.707652 -0.997031 -0.0770042
--0.0647899 0.997899 0.979998 0.199007
--0.89357 0.448925 -0.843121 -0.537723
--0.513209 -0.858263 -0.884708 0.466145
-0.617768 0.78636 -0.815784 0.578357
--0.852378 -0.522927 0.0502127 -0.998739
--0.781328 -0.62412 -0.143218 -0.989691
--0.333262 -0.942834 -0.835725 -0.549148
-0.27147 -0.962447 -0.709295 0.704912
-0.399007 -0.916948 -0.979528 -0.201309
-0.276207 -0.961098 -0.958308 0.285738
--0.928035 0.372493 0.891432 -0.453154
--0.893217 0.449626 -0.882671 -0.469991
-0.601256 -0.799057 -0.104327 0.994543
--0.970441 0.24134 0.726136 0.687551
--0.208971 -0.977922 -0.590708 -0.806885
--0.999876 0.0157283 -0.00209793 -0.999998
--0.671752 -0.740776 -0.169524 0.985526
--0.10274 -0.994708 -0.646852 0.762616
--0.0550866 0.998482 0.716702 -0.69738
-0.959985 -0.280053 -0.99389 0.110378
-0.494949 -0.868922 0.0586189 0.99828
--0.803738 0.594983 0.627401 -0.778696
--0.99442 0.105497 -0.413441 0.910531
-0.273717 -0.96181 -0.853163 0.521645
--0.075682 -0.997132 0.274954 -0.961457
--0.999582 -0.0289196 -0.969102 0.246662
--0.990037 0.140809 0.00932086 -0.999957
-0.97186 -0.235558 0.215661 0.976468
--0.490895 -0.871218 0.500822 -0.86555
--0.704497 -0.709707 -0.932905 -0.360122
--0.853372 -0.521302 -0.139829 -0.990176
-0.901193 -0.433418 0.663055 -0.748571
-0.948122 0.317906 0.592907 0.805271
--0.00945564 0.999955 0.585274 0.810836
-0.897551 0.44091 -0.107968 0.994154
--0.641916 -0.766775 0.834027 -0.551724
-0.631481 -0.775392 0.718655 -0.695366
-0.116585 -0.993181 0.636169 -0.771549
--0.912241 0.409654 -0.202654 0.97925
--0.459028 -0.888422 -0.843926 0.536459
--0.922342 -0.386374 -0.389184 0.92116
-0.693998 -0.719976 0.263099 0.964769
-0.809469 0.587162 0.99704 -0.0768793
--0.863298 0.504695 -0.875531 -0.483162
--0.499725 0.866184 -0.472282 0.881447
-0.405043 -0.914298 -0.650993 -0.759084
-0.855253 -0.51821 -0.481324 0.876543
-0.97734 -0.211676 -0.788626 -0.614873
--0.951073 -0.308965 0.999985 -0.00544228
-0.47031 0.882501 0.266317 0.963886
-0.878951 -0.476912 0.851676 0.524069
--0.7392 0.673486 0.0640509 0.997947
--0.90308 -0.429473 0.917661 0.397363
--0.823733 0.566978 -0.829298 0.558806
-0.445435 0.895314 -0.57522 -0.817999
--0.359895 0.932993 0.634363 -0.773035
-0.839785 -0.542918 0.665838 -0.746097
--0.567065 -0.823673 -0.823325 0.56757
--0.129993 0.991515 0.891652 0.452721
--0.885247 -0.46512 -0.312318 -0.949977
--0.185071 0.982725 0.972479 -0.232992
-0.627811 -0.778366 0.323595 -0.946196
--0.99937 -0.0354811 -0.91821 -0.396094
--0.487885 0.872908 0.76421 0.644967
-0.772395 0.635143 0.956601 -0.291402
--0.881342 -0.472479 0.492916 -0.870077
-0.982505 -0.186236 0.993216 0.116287
-0.980237 -0.197828 0.484836 -0.874605
--0.572008 0.820248 -0.357729 -0.933825
--0.819989 0.572379 -0.315153 0.949041
--0.625711 -0.780055 0.0600243 0.998197
-0.84451 -0.53554 0.999425 0.0339046
--0.156972 0.987603 -0.998522 -0.0543578
--0.048475 -0.998824 0.136587 0.990628
--0.458779 0.88855 -0.858646 -0.512569
--0.777003 -0.629497 0.519498 -0.854472
--0.932857 -0.360246 0.663053 -0.748573
-0.0680837 0.99768 0.862576 -0.505928
--0.892646 -0.450759 -0.935081 0.354434
-0.775912 0.630841 0.658969 -0.75217
--0.848433 0.529303 0.717375 0.696687
--0.999564 0.0295185 -0.982134 -0.188184
--0.998417 0.0562486 0.792834 0.609438
-0.993524 -0.113624 0.381469 0.924382
-0.806638 -0.591046 0.91964 -0.392762
--0.49509 -0.868842 0.0424665 -0.999098
--0.251554 0.967843 0.95657 0.291504
-0.356513 -0.93429 0.319292 -0.947656
--0.434894 0.900482 0.532095 0.846685
--0.926931 -0.375232 0.720957 0.692979
--0.75016 0.661257 -0.999973 -0.00734931
--0.80444 -0.594034 0.714721 0.699409
--0.874005 0.485916 0.888992 -0.457923
-0.773149 -0.634224 0.915274 0.402832
-0.911011 -0.412382 0.0951013 0.995468
--0.983703 -0.179799 0.716971 -0.697103
--0.981066 0.193671 0.801648 -0.597797
-0.818272 -0.574831 -0.0213036 0.999773
--0.999831 0.0183587 -0.262077 -0.965047
-0.40232 -0.915499 -0.845011 -0.53475
--0.341953 0.939717 -0.942112 -0.335299
-0.639927 0.768436 0.947576 -0.319531
--0.150524 -0.988606 -0.826394 -0.563092
--0.874391 -0.485223 0.922493 0.386014
-0.736512 -0.676424 0.445963 0.895051
-0.947484 0.319804 0.420957 0.907081
-0.373958 0.927445 0.809071 -0.587711
--0.93074 0.365681 0.965708 0.25963
--0.254553 0.967059 0.822025 0.569452
-0.0842425 -0.996445 -0.548242 0.83632
--0.952859 -0.303413 0.831657 -0.555289
--0.295896 -0.95522 0.19297 0.981205
--0.0547922 0.998498 0.695829 -0.718208
-0.968417 0.249335 0.99778 0.0665922
--0.402515 -0.915413 -0.833395 0.552677
-0.545961 0.837811 0.357826 -0.933788
--0.26282 -0.964845 0.108904 -0.994052
-0.987231 -0.159296 -0.958308 0.285736
-0.977401 -0.211395 -0.770659 -0.637248
-0.983124 0.18294 0.899596 -0.436722
--0.974868 -0.222785 -0.888909 -0.458084
--0.59342 0.804893 0.765955 0.642894
--0.682192 -0.731173 0.948408 0.317052
-0.960294 -0.278989 -1 -0.000182021
-0.05168 0.998664 0.442081 0.896975
--0.923007 -0.384783 -0.22542 0.974262
--0.994807 0.101783 -0.717098 0.696972
--0.244114 -0.969746 0.890602 0.454784
--0.976456 0.215716 -0.969239 -0.246123
-0.99277 -0.120029 0.860546 0.509373
--0.986014 -0.166662 -0.509373 -0.860546
-0.13119 -0.991357 0.830606 0.55686
-0.727535 0.686071 0.978193 0.207699
--0.0163439 0.999866 -0.0636232 0.997974
--0.595741 0.803177 0.551272 0.834325
-0.999913 0.0131773 0.250337 0.968159
--0.335246 0.94213 -0.932026 0.362393
--0.967685 -0.252162 0.936361 0.35104
--0.935478 0.353385 -0.0096107 0.999954
--0.825757 -0.564026 -0.972513 -0.232848
--0.332786 0.943002 -0.806934 0.590642
-0.9986 -0.0528902 0.547271 0.836956
--0.29443 0.955673 0.0408061 -0.999167
--0.923352 -0.383955 -0.137284 0.990532
-0.980249 0.197767 0.490321 0.871542
-0.993348 -0.115147 0.518209 0.855254
--0.182432 -0.983219 0.875823 0.482633
--0.0668154 -0.997765 0.919756 -0.39249
-0.962322 -0.271913 -0.740981 -0.671526
--0.386157 -0.922433 -0.367404 -0.930061
-0.116843 -0.99315 0.656 -0.754761
--0.998714 0.0506891 0.35105 0.936357
-0.971613 0.236576 0.316515 -0.948587
--0.805875 0.592086 0.861454 -0.507836
--0.944918 0.327307 -0.35088 -0.936421
--0.186047 0.982541 0.990785 -0.135446
-0.971653 -0.236413 0.300576 0.953758
-0.906696 -0.421784 0.904274 0.426952
-0.998232 -0.0594342 0.943993 0.329964
--0.897778 0.440448 -0.0565879 -0.998398
-0.849515 -0.527564 0.560692 0.828025
--0.994176 -0.107764 -0.196896 -0.980424
-0.318861 0.947802 0.508966 -0.860787
-0.979998 0.199006 0.376485 0.926423
-0.123998 -0.992282 0.990965 -0.134119
--0.951211 -0.308542 0.998755 -0.0498849
-0.977291 0.211902 -0.802676 0.596415
-0.893289 0.449482 -0.875001 0.484121
-0.842669 0.538431 0.952706 0.303892
--0.989117 0.14713 -0.588674 -0.808371
--0.484121 -0.875001 0.963677 -0.267071
--0.788171 0.615457 -0.948262 0.317487
--0.979951 0.199238 0.354407 -0.935091
-0.978755 -0.205034 -0.227525 -0.973772
-0.964067 -0.26566 -0.1843 -0.98287
--0.999999 0.00150179 0.988744 -0.149615
-0.948635 -0.316372 0.714917 -0.699209
--0.437079 -0.899423 0.312951 -0.949769
-0.0683138 0.997664 0.850681 -0.525682
-0.826867 -0.562398 -0.999277 0.0380163
--0.660877 0.750494 -0.998323 0.0578864
-0.998812 0.0487245 0.161283 -0.986908
--0.797296 0.603588 -0.386393 -0.922334
--0.819666 0.572842 -0.261075 0.965319
--0.833767 0.552117 -0.362249 -0.932081
-0.555821 -0.831302 -0.728115 0.685455
--0.410345 -0.91193 -0.12792 0.991784
--0.679604 0.733579 0.780097 -0.625659
-0.153331 -0.988175 -0.951072 0.308969
--0.463819 -0.88593 -0.448009 0.894029
-0.28703 -0.957921 -0.668801 -0.743442
--0.391069 -0.920362 -0.789092 -0.614275
-0.365647 0.930754 0.964739 0.263208
-0.999442 -0.0333958 -0.980341 0.197308
--0.200089 -0.979778 0.271996 -0.962298
-0.96891 -0.247413 0.991324 0.13144
--0.960984 -0.276604 -0.969278 0.245967
-0.0120721 -0.999927 0.355605 0.934636
-0.976725 0.214496 -0.931043 0.36491
--0.66086 -0.750509 -0.998185 -0.0602218
-0.135178 0.990821 0.546197 -0.837656
--0.285169 -0.958477 -0.799767 0.60031
-0.982776 0.184799 0.965661 -0.259805
--0.329878 -0.944024 -0.589709 -0.807615
--0.475631 -0.879645 0.766533 0.642205
-0.996556 -0.0829263 -0.433326 -0.901237
-0.331295 0.943527 -0.703903 -0.710296
--0.729495 -0.683986 0.997043 -0.0768436
--0.510159 -0.86008 -0.991577 0.129517
--0.918691 0.394977 -0.972187 -0.234206
--0.987868 -0.155299 -0.993401 0.114692
-0.982637 0.185536 0.982417 -0.186699
--0.936845 0.349745 -0.387938 0.921686
-0.88136 -0.472446 0.489627 0.871932
--0.911717 0.410819 -0.07626 0.997088
-0.588009 -0.808854 0.999616 0.02771
-0.0971334 -0.995271 -0.954175 -0.299249
-0.748756 0.662845 -0.979141 -0.203181
-0.193745 0.981052 0.797134 -0.603803
--0.968609 -0.248591 0.999948 -0.0102029
-0.239947 -0.970786 0.620313 -0.784354
-0.995381 0.0959991 -0.982016 -0.188799
-0.149999 0.988686 -0.795319 -0.606192
-0.991298 -0.131634 0.804889 -0.593425
-0.998032 0.062704 0.999962 -0.00867279
-0.93868 -0.344791 -0.799661 0.600452
-0.927911 -0.372801 0.875906 -0.482482
--0.941749 -0.336317 -0.967109 0.254364
--0.333434 -0.942774 -0.845568 -0.533868
-0.986278 -0.165091 -0.639443 0.768839
-0.369955 0.92905 0.980671 -0.195662
-0.889047 -0.457816 -0.909045 0.416698
--0.439491 -0.898247 0.0498637 -0.998756
-0.191895 0.981415 0.896162 -0.443726
--0.725466 -0.688258 0.872604 0.488428
--0.581103 0.81383 0.679629 -0.733556
-0.27262 0.962122 -0.788234 -0.615376
-0.409047 -0.912513 -0.2673 -0.963613
-0.98056 -0.196219 0.62125 -0.783613
-0.688423 -0.72531 0.861296 0.508103
--0.0153655 0.999882 0.0341814 0.999416
--0.999136 0.041558 -0.527276 0.849694
-0.811041 -0.584989 0.941014 0.338366
--0.335309 -0.942108 -0.934407 -0.356207
--0.860965 0.508665 -0.999044 -0.0437149
--0.499116 0.866535 -0.409143 0.91247
--0.959193 -0.282753 -0.924178 -0.381962
-0.422631 0.906302 0.940181 0.340675
--0.948095 0.317987 0.586005 -0.810307
-0.0915559 -0.9958 -0.967323 0.253546
--0.184066 -0.982914 0.943608 0.331064
-0.0812056 0.996697 -0.272061 -0.96228
-0.186729 -0.982411 0.997796 -0.0663573
-0.944184 -0.329419 -0.54978 -0.835309
-0.211698 0.977335 -0.790021 -0.61308
-0.247963 -0.96877 0.997183 -0.0750085
-0.772705 -0.634765 0.941201 0.337847
-0.560789 0.827959 -0.987784 -0.15583
--0.559332 0.828944 -0.945305 0.326189
--0.856086 -0.516834 -0.615483 -0.78815
-0.689782 0.724017 0.751439 -0.659803
--0.977058 -0.212976 -0.863211 0.504844
--0.997715 -0.0675602 0.887922 0.459993
-0.347193 -0.937794 -0.621512 -0.783404
-0.0215247 -0.999768 -0.549564 0.835451
-0.67731 0.735698 0.550131 0.835078
-0.56145 0.827511 -0.997069 -0.0765094
-0.967767 -0.251847 0.947302 -0.320342
-0.948386 -0.317119 0.657642 -0.75333
-0.712908 0.701257 -0.679383 0.733784
-0.483566 -0.875308 0.978674 0.205418
-0.302509 0.953146 0.775369 0.631508
--0.741435 -0.671024 -0.26527 -0.964174
--0.119854 -0.992792 0.85144 0.524451
-0.796533 -0.604595 -0.499563 -0.866277
-0.979676 0.200586 0.222868 0.974849
-0.92011 0.39166 -0.826907 0.562339
--0.93498 0.354702 0.130801 0.991409
-0.23225 0.972656 -0.122571 0.99246
--0.996895 -0.0787473 -0.0289041 0.999582
-0.267609 0.963528 -0.377895 -0.925848
-0.913288 -0.407315 -0.444227 0.895914
--0.00246626 -0.999997 0.969742 -0.244134
-0.996551 -0.0829836 -0.438499 -0.898732
-0.728134 -0.685434 0.992593 -0.12149
-0.97681 -0.214108 -0.915789 -0.401659
-0.166715 -0.986005 -0.504676 -0.863309
-0.127544 -0.991833 0.975274 0.220998
-0.725056 0.68869 0.842012 0.539459
-0.724093 0.689702 0.758675 0.651469
--0.621801 0.783175 -0.426086 -0.904683
-0.00150761 0.999999 0.988657 -0.150191
--0.560591 -0.828093 -0.983787 -0.179343
-0.673292 -0.739376 0.0378168 -0.999285
-0.938316 0.345779 -0.732123 -0.681173
--0.839967 0.542637 0.690486 -0.723346
-0.999985 -0.00544693 0.855285 -0.518158
-0.240682 0.970604 0.67786 0.735191
--0.676231 0.736689 0.42238 -0.906419
-0.946644 -0.32228 0.172128 -0.985075
--0.509059 0.860731 -0.999998 -0.00207244
-0.317828 0.948148 0.599567 -0.800325
-0.593549 0.804798 0.755545 -0.655097
-0.955006 -0.296586 0.263271 0.964722
-0.903221 -0.429176 0.930227 -0.366985
-0.959358 0.282191 -0.944938 -0.327249
-0.995088 -0.098997 -0.881783 0.471655
-0.999154 -0.0411341 -0.562841 0.826565
--0.997074 0.076443 0.200838 -0.979624
-0.3274 0.944886 -0.360018 -0.932945
--0.99929 -0.0376743 -0.809951 -0.586497
--0.340481 -0.940251 -0.982879 0.18425
-0.683876 0.729598 0.995769 0.0918941
--0.0352097 0.99938 -0.928627 -0.371014
--0.417332 -0.908754 0.596583 0.802551
-0.998045 0.0624934 0.999557 -0.0297626
-0.179582 0.983743 0.701406 0.712762
--0.965612 0.259988 0.391768 -0.920064
-0.189277 -0.981924 0.98142 0.191874
--0.547287 0.836945 0.206086 0.978534
--0.878507 -0.477729 0.896618 -0.442805
-0.651325 0.758799 -0.244584 -0.969628
--0.837769 -0.546024 0.350715 0.936482
-0.0968797 0.995296 -0.961495 0.274824
-0.99957 0.0293191 -0.978184 0.207741
--0.597289 -0.802026 0.381139 -0.924518
--0.62146 -0.783446 -0.465106 0.885255
-0.999715 0.023874 -0.728983 0.684532
-0.634694 -0.772764 0.938056 -0.346484
-0.997407 0.0719678 0.60596 0.795495
-0.954069 -0.299588 0.548836 0.83593
-0.342045 0.939683 -0.938772 0.344539
-0.248767 0.968563 0.999968 -0.00801257
-0.807394 0.590012 0.962286 0.272041
-0.605352 0.795958 -0.579536 -0.814946
-0.640376 0.768061 0.927256 -0.374427
-0.608084 0.793872 -0.820275 -0.571969
-0.681176 0.73212 0.895399 0.445265
-0.671428 0.74107 -0.212409 0.977181
--0.666991 -0.745066 -0.725058 0.688688
--0.468753 0.883329 0.0930486 -0.995662
--0.643032 -0.765839 0.745155 -0.666891
--0.473451 0.88082 0.585753 -0.810489
--0.965044 0.262086 0.18415 -0.982898
-0.788005 -0.615668 -0.939397 0.342831
-0.998035 0.0626565 0.99991 -0.0134273
--0.979537 0.201265 0.154815 -0.987943
-0.747171 0.664632 -0.903256 -0.429103
--0.980004 0.198975 0.379379 -0.925241
-0.0122225 0.999925 0.341499 -0.939882
--0.965177 0.261597 0.233743 -0.972298
-0.955997 0.293375 -0.0695437 -0.997579
--0.750781 0.660551 -0.994861 -0.101246
-0.951434 0.307853 0.992517 -0.122104
--0.199378 0.979923 0.341024 0.940054
--0.769825 0.638255 0.99419 -0.107636
--0.321375 -0.946952 0.2654 -0.964138
-0.891622 -0.452781 -0.9908 -0.135331
--0.784844 0.619694 -0.651068 0.75902
--0.935745 -0.352678 -0.0850988 -0.996373
-0.921896 -0.387438 -0.492731 -0.870182
--0.563142 0.82636 -0.991817 -0.127669
-0.0113382 -0.999936 0.423178 0.906047
-0.604596 0.796532 -0.499687 -0.866206
--0.94224 0.334938 -0.91968 -0.392669
-0.80277 -0.596288 0.493132 -0.869954
--0.224616 0.974447 -0.787669 -0.616099
--0.83886 -0.544347 0.529796 0.848125
-0.983382 0.181547 0.82891 -0.559381
--0.872947 0.487815 0.769348 -0.63883
-0.153938 0.988081 -0.968226 -0.250075
--0.621329 0.78355 -0.479826 -0.877364
-0.934921 0.354857 0.147253 -0.989099
--0.943203 -0.332217 -0.769825 0.638255
-0.394253 -0.919002 -0.950719 0.310053
-0.955197 -0.295972 0.200764 0.97964
--0.920534 -0.390662 -0.761186 0.648534
--0.201222 0.979546 0.159129 0.987258
-0.910407 0.413713 0.239025 -0.971013
-0.97986 0.199687 0.311273 0.950321
--0.981932 -0.189235 0.982248 0.187585
--0.98693 -0.161147 -0.888244 -0.459371
-0.87816 0.478366 0.926373 -0.376608
-0.862215 -0.506542 -0.958209 -0.28607
--0.88939 -0.45715 -0.937689 -0.347475
--0.643848 0.765153 0.669948 0.742408
--0.340452 0.940262 -0.983433 -0.181269
--0.147071 0.989126 -0.583876 0.811843
--0.227623 0.973749 -0.563313 -0.826243
--0.315473 -0.948935 0.777869 -0.628426
-0.486464 -0.873701 0.858585 0.512672
-0.167424 0.985885 -0.44142 0.897301
-0.961818 0.273691 -0.851734 0.523974
--0.868129 -0.496339 -0.10117 0.994869
--0.684065 0.729421 0.997819 -0.0660087
--0.997933 0.0642673 0.989071 -0.147439
--0.992869 0.119209 0.815601 0.578615
--0.55713 -0.830425 -0.826619 -0.562762
-0.872109 0.489311 0.649052 0.760744
--0.998012 -0.063024 0.999726 0.0233885
-0.891439 0.453142 -0.995467 0.0951091
--0.349228 0.937038 -0.438186 -0.898884
-0.669476 -0.742833 -0.459174 -0.888346
-0.672624 0.739985 -0.0525138 0.99862
-0.640693 -0.767797 0.911044 0.412309
--0.418723 -0.908114 0.71198 0.702199
-0.861503 0.507753 -0.988831 0.149042
--0.889729 0.456489 -0.96087 0.276999
-0.973796 -0.227425 -0.579955 0.814648
-0.574254 0.818677 -0.0916331 0.995793
--0.962964 0.269629 -0.562331 -0.826912
--0.999238 0.0390402 -0.722475 0.691397
--0.434822 -0.900516 0.538831 -0.842414
--0.974618 -0.223873 -0.83235 -0.554251
--0.841782 0.539817 0.89007 -0.455824
--0.0249446 0.999689 -0.797974 0.602692
-0.798803 -0.601593 -0.14615 -0.989262
--0.220982 -0.975278 -0.957951 0.28693
--0.985149 -0.171699 -0.0233729 -0.999727
-0.403975 0.91477 -0.735043 0.67802
--0.855761 0.517371 -0.564846 0.825196
--0.629253 0.777201 0.492464 -0.870333
--0.834223 0.551427 -0.283925 -0.958847
--0.964686 0.263403 0.0487168 -0.998813
-0.932027 -0.362388 0.816045 0.577989
-0.168441 -0.985712 -0.346598 -0.938014
-0.945763 -0.324856 -0.0990791 -0.99508
--0.882181 0.47091 0.331133 0.943584
--0.912404 0.409291 -0.241374 0.970432
-0.983765 0.179462 0.692693 -0.721232
-0.910106 -0.414375 0.308974 0.951071
--0.998819 -0.04859 0.147983 -0.98899
--0.511721 0.859151 -0.951833 -0.306617
-0.301483 -0.953472 0.703007 -0.711183
--0.635873 -0.771793 0.979854 0.199714
-0.331798 0.94335 -0.740741 -0.671791
--0.992099 0.125459 0.999919 -0.0126971
--0.155926 -0.987769 -0.998676 -0.0514439
--0.72584 -0.687864 0.897841 0.440319
--0.937569 0.3478 -0.569564 0.821947
-0.719122 -0.694884 0.142739 -0.98976
-0.884426 0.466681 -0.140779 -0.990041
-0.923276 -0.384138 -0.156795 -0.987631
--0.938444 -0.345431 -0.756876 -0.653559
--0.7575 -0.652835 -0.431554 0.902087
--0.569833 0.82176 -0.589745 -0.80759
-0.368733 -0.929536 0.997862 0.0653598
--0.997834 -0.0657797 0.955472 0.295081
-0.927368 0.374151 0.796669 0.604416
--0.522857 0.85242 0.0420191 -0.999117
--0.342926 -0.939362 -0.902384 0.430933
--0.98718 0.159609 -0.948757 0.316007
--0.333492 -0.942753 -0.848871 -0.5286
-0.804067 0.594539 0.669408 0.742895
-0.910277 -0.413999 0.269411 0.963025
--0.652466 -0.757818 -0.387192 -0.921999
-0.721482 -0.692433 0.464831 -0.8854
-0.726417 -0.687254 0.931594 -0.363501
-0.932457 0.36128 0.741771 -0.670653
--0.374876 0.927075 0.747022 0.664799
-0.83796 -0.545732 0.38314 -0.92369
-0.998341 -0.057584 0.867026 0.498262
-0.41948 -0.907765 0.768026 -0.640419
-0.0400649 0.999197 -0.647904 0.761722
-0.246078 -0.96925 0.963881 -0.266332
--0.967343 0.253471 0.880454 -0.474131
--0.9293 0.369327 0.991647 -0.128983
--0.122532 0.992465 0.960422 -0.27855
-0.401205 0.915988 -0.903679 0.42821
-0.928569 0.371159 0.947135 0.320834
--0.230297 -0.97312 -0.318069 0.948068
-0.925021 0.379917 0.294834 0.955548
-0.648037 0.761608 0.184303 -0.98287
--0.586439 -0.809993 0.986213 0.165482
--0.736845 -0.676061 0.401354 -0.915923
-0.00631573 -0.99998 0.807097 0.590419
-0.999793 -0.0203515 -0.447972 -0.894047
--0.900122 0.435638 0.46036 -0.887732
--0.0720805 0.997399 0.596938 0.802287
-0.93479 0.3552 0.18349 -0.983022
-0.0992882 -0.995059 -0.867604 -0.497255
-0.961637 -0.274325 -0.884399 -0.466731
--0.9795 -0.201446 0.136554 0.990633
--0.971206 0.23824 0.473636 0.880721
-0.936317 0.351156 -0.245292 -0.969449
--0.975015 0.22214 -0.917215 0.398392
-0.814222 0.580554 0.628635 -0.7777
-0.918688 -0.394984 -0.972369 -0.233449
--0.5556 0.83145 -0.709656 0.704549
-0.549485 0.835504 -0.0552638 -0.998472
-0.0217857 0.999763 -0.571185 -0.820821
--0.0118217 0.99993 0.378888 0.925443
-0.596685 0.802476 0.449586 -0.893237
-0.916688 0.399604 -0.964354 -0.264614
--0.999601 0.0282498 -0.950413 -0.31099
-0.924631 -0.380865 0.195449 -0.980714
--0.98804 -0.1542 -0.974532 0.22425
-0.918495 -0.395432 -0.982587 -0.185805
-0.264698 0.964331 -0.0854643 -0.996341
--0.255161 -0.966899 0.784638 -0.619954
-0.999655 -0.0262779 -0.87103 -0.49123
-0.877451 -0.479666 0.971782 0.235879
-0.131312 -0.991341 0.823734 0.566976
-0.667827 0.744316 -0.643348 0.765574
--0.903098 -0.429435 0.91935 0.39344
--0.766964 0.64169 0.849915 -0.526919
-0.748519 -0.663113 -0.971253 0.238048
--0.911651 -0.410966 -0.0600896 -0.998193
-0.410816 -0.911718 -0.0764956 -0.99707
-0.607434 0.79437 -0.770761 -0.637124
--0.706227 -0.707986 -0.992271 -0.124089
--0.866424 -0.499309 -0.42943 0.9031
-0.802047 0.597261 0.384295 0.92321
-0.549128 0.835738 -0.0125715 -0.999921
-0.960432 0.278515 -0.998773 0.0495323
-0.541239 0.840869 0.800741 -0.59901
--0.721059 -0.692874 0.409892 0.912134
-0.620312 0.784355 -0.589343 0.807883
-0.829359 0.558715 -0.918454 0.395527
-0.97671 -0.214563 -0.933525 -0.358513
--0.31448 0.949264 0.839218 0.543795
--0.540515 0.841335 0.849265 0.527968
-0.203002 0.979178 -0.0219187 -0.99976
--0.949407 0.314049 0.863038 -0.505138
--0.831684 0.555249 -0.679284 -0.733875
--0.230583 -0.973053 -0.290084 0.957001
--0.75824 0.651975 -0.326716 -0.945122
-0.907356 -0.420362 0.826555 0.562855
--0.596565 -0.802565 0.462848 -0.886438
--0.829425 -0.558618 -0.913742 0.406295
--0.63797 -0.770061 0.997491 -0.0707884
--0.617449 -0.786611 -0.838599 0.544749
--0.99573 -0.0923134 -0.983795 0.179298
--0.847166 0.531328 0.861803 0.507243
-0.173138 -0.984898 0.122465 -0.992473
-0.859599 0.510969 -0.974995 -0.222227
-0.308798 -0.951128 0.999736 -0.0229873
--0.523501 -0.852025 0.117312 0.993095
--0.573663 -0.819091 -0.163238 0.986587
--0.740301 -0.672276 -0.0993957 -0.995048
-0.358831 -0.933403 0.542306 -0.840181
--0.174769 0.984609 0.284401 -0.958705
-0.305741 0.952115 0.941311 0.337539
-0.845284 -0.534317 0.984069 0.177785
--0.918847 0.394615 -0.962205 -0.272326
-0.0284646 0.999595 -0.956875 -0.2905
-0.906791 0.421581 0.89448 -0.447108
-0.935961 0.352104 -0.146002 -0.989284
--0.766381 0.642387 0.798617 -0.60184
-0.516512 0.85628 -0.644696 0.764439
-0.989711 0.14308 -0.218374 0.975865
--0.368783 -0.929515 0.997491 -0.0707903
--0.9996 -0.0282725 -0.951116 0.308832
-0.060812 0.998149 0.980417 0.196932
-0.642039 0.766672 0.825114 -0.564966
-0.84705 -0.531513 0.872723 0.488216
-0.95723 -0.289329 -0.472867 0.881134
--0.986671 -0.162729 -0.80354 -0.595251
-0.545148 -0.83834 0.446559 0.894754
--0.803255 -0.595635 0.562205 0.826998
-0.727466 0.686143 0.976076 0.217431
--0.993361 0.115038 0.508777 0.860898
-0.0274359 0.999624 -0.921971 -0.387259
--0.66102 -0.750368 -0.999243 -0.0388995
-0.780419 -0.625257 0.00178153 0.999998
-0.989277 0.146052 -0.497253 0.867606
--0.184797 -0.982777 0.965613 0.259985
--0.353707 -0.935356 0.0247686 0.999693
--0.393448 -0.919347 -0.919948 -0.392039
--0.698973 0.715148 -0.414122 0.910221
--0.366968 0.930233 0.992281 -0.124011
--0.999302 0.0373549 -0.828278 0.560318
--0.581983 -0.813201 0.754857 0.655889
--0.997886 -0.0649857 0.975904 0.218201
--0.824735 0.565519 -0.914699 0.404136
-0.855654 0.517548 -0.547712 -0.836667
-0.036555 -0.999332 -0.870431 -0.492291
--0.986274 0.165116 -0.637487 0.770461
-0.618629 0.785684 -0.747735 0.663998
-0.613942 0.789351 -0.991421 0.130708
--0.650808 -0.759243 -0.177985 -0.984033
-0.499848 0.866113 -0.484686 -0.874688
-0.507302 -0.861768 -0.979681 0.200564
-0.629082 0.777339 0.473186 0.880963
--0.834114 0.551593 -0.30294 -0.95301
-0.986401 -0.164354 -0.695037 0.718974
-0.94603 0.32408 -0.0171397 0.999853
--0.638847 0.769334 0.982979 0.183716
--0.999999 0.00164747 0.98646 -0.164003
-0.787415 -0.616423 -0.902277 0.431158
-0.971399 -0.237452 0.400702 0.916208
--0.728596 -0.684944 0.998519 0.0544071
--0.711275 0.702914 -0.830241 -0.557405
-0.264014 0.964519 -0.0146265 -0.999893
--0.0323437 0.999477 -0.995647 -0.0932075
--0.115592 0.993297 0.555925 -0.831233
-0.120314 0.992736 0.874786 0.48451
-0.98824 -0.152914 -0.937176 -0.348856
-0.969972 -0.243216 0.844747 0.535166
-0.865332 -0.501199 -0.614811 -0.788675
--0.581396 0.81362 0.705642 -0.708569
--0.129701 0.991553 0.904593 0.426276
--0.846006 0.533174 0.951143 0.308752
-1 -0.000721078 0.997401 -0.0720453
-0.193864 -0.981028 0.789782 0.613388
-0.39621 -0.91816 -0.994787 0.101976
-0.856027 0.516931 -0.606566 -0.795033
--0.973286 -0.229596 -0.385486 -0.922714
--0.239169 0.970978 0.555595 -0.831453
-0.123419 0.992355 0.981451 0.191715
--0.41631 -0.909223 0.502785 0.864411
-0.892861 -0.450332 -0.917065 -0.398738
--0.797801 0.602921 -0.308004 -0.951385
--0.994734 -0.102488 -0.665938 -0.746007
-0.911744 0.41076 -0.082669 -0.996577
-0.33289 -0.942966 -0.813372 0.581744
--0.998052 0.0623941 0.999211 0.0397098
-0.729418 0.684069 0.997848 -0.0655758
-0.51279 0.858514 -0.906404 0.422413
-0.997947 -0.0640383 0.992194 -0.124702
-0.99603 0.0890158 -0.872061 0.489397
-0.70198 0.712196 -0.750216 -0.661192
--0.770963 -0.63688 0.997509 -0.070535
--0.771022 0.636808 0.996813 0.0797737
--0.501594 0.865103 -0.650149 0.759807
-0.661482 -0.749961 -0.999741 -0.0227477
--0.543416 -0.839463 0.620464 -0.784235
--0.919167 -0.393867 -0.936875 0.349665
-0.539024 -0.842291 0.928998 0.370084
--0.73127 -0.682088 0.943831 -0.33043
--0.992791 0.11986 0.851772 0.523912
-0.371918 0.928265 0.91777 -0.397113
-0.771173 -0.636625 0.994637 0.103428
-0.776 -0.630733 0.648398 0.761301
-0.372588 0.927997 0.886775 -0.462202
--0.475045 -0.879961 0.722105 0.691784
--0.271654 -0.962395 -0.722653 -0.691211
--0.160765 0.986993 -0.905354 -0.424658
-0.26032 0.965523 0.359957 -0.932969
-0.999436 -0.0335951 -0.976212 0.216818
--0.999288 -0.0377219 -0.807147 -0.590351
-0.769501 -0.638645 0.98745 -0.157932
-0.877228 -0.480074 0.981703 0.190416
-0.819976 -0.572397 -0.313047 0.949738
--0.830903 0.556418 -0.7754 -0.631471
-0.997002 -0.0773742 0.108608 -0.994085
--0.266789 -0.963755 -0.297881 -0.954603
-0.794567 -0.607177 -0.749712 -0.661764
-0.78016 0.62558 0.0431865 -0.999067
-0.69059 -0.723247 0.673237 0.739427
-0.754053 -0.656813 -0.826384 -0.563108
-0.721377 0.692543 0.451279 0.892383
-0.999874 -0.015869 -0.0161695 -0.999869
--0.999658 0.0261375 -0.864044 -0.503416
--0.997215 -0.0745871 0.378652 0.925539
--0.487803 0.872954 0.77022 0.637778
--0.641654 0.766994 0.852369 0.522941
-0.479289 0.877657 0.96078 0.27731
-0.7922 -0.610261 -0.944609 -0.328199
-0.300165 0.953887 0.598318 0.801259
-0.24815 -0.968722 0.998446 -0.0557367
--0.713343 0.700815 -0.632644 -0.774442
--0.773824 0.633401 0.867308 0.497771
--0.425346 -0.905031 0.998856 0.0478294
--0.111527 0.993761 0.179378 -0.98378
--0.876111 -0.482109 0.999178 0.0405391
--0.594333 0.804219 0.688191 0.72553
-0.986688 -0.162627 -0.809628 0.586943
-0.616686 -0.787209 -0.887394 -0.461012
--0.931208 -0.364488 0.924616 -0.380902
-0.980667 -0.195683 0.663109 -0.748523
--0.645942 0.763386 0.444098 0.895978
--0.949345 0.314237 0.852855 -0.522148
-0.766326 -0.642451 0.793507 -0.608561
--0.0926968 0.995694 -0.989968 0.141294
-0.613966 -0.789333 -0.991025 -0.13368
-0.71432 -0.699819 -0.51878 -0.854908
-0.984336 -0.176304 0.429772 0.902937
-0.0085724 -0.999963 0.654519 0.756046
-0.995077 -0.0991071 -0.876514 0.481376
-0.552261 -0.833671 -0.378318 0.925676
--0.650325 -0.759656 -0.115149 -0.993348
-0.786461 0.61764 -0.825124 -0.564951
-0.538962 -0.84233 0.931672 0.3633
-0.669958 0.742399 -0.400573 0.916265
--0.738202 -0.674579 0.210449 -0.977605
-0.472408 0.88138 0.485888 0.874021
--0.999297 0.0374907 -0.820588 0.57152
-0.238237 -0.971207 0.473295 -0.880904
-0.912114 0.409937 -0.172121 -0.985076
--0.335716 -0.941963 -0.948908 -0.315553
--0.881711 -0.47179 0.423461 -0.905914
--0.93794 0.346798 -0.653993 0.756501
-0.856425 0.516271 -0.665923 -0.746021
--0.0519516 0.99865 0.466305 -0.884624
--0.240029 -0.970766 0.626918 0.779085
--0.501425 -0.865201 -0.635132 -0.772404
--0.772256 -0.635311 0.962728 -0.270472
--0.394706 -0.918808 -0.964849 -0.262804
--0.990316 -0.138831 0.207526 0.97823
-0.487567 0.873085 0.78713 -0.616787
--0.56687 -0.823807 -0.836515 0.547945
-0.745669 -0.666317 -0.784311 0.620368
--0.737225 -0.675647 0.349254 -0.937028
--0.963664 -0.267119 -0.330322 0.943868
-0.594327 0.804224 0.688787 -0.724963
--0.985941 0.167092 -0.47138 0.88193
--0.875299 0.483582 0.978285 -0.207265
-0.726805 0.686844 0.950618 0.310363
-0.158634 0.987338 -0.975307 0.220855
--0.823063 0.56795 -0.757708 0.652594
-0.973988 -0.226599 -0.646931 0.762549
-0.646873 -0.762597 0.331692 0.943388
--0.998096 -0.0616864 0.993887 -0.110403
-0.334072 -0.942547 -0.879761 0.475415
-0.99953 -0.0306707 -0.99726 -0.0739783
-0.695184 0.718832 0.101232 -0.994863
-0.988561 -0.150822 -0.842989 -0.537931
--0.997677 0.0681222 0.86062 -0.509248
-0.863753 -0.503916 -0.828466 -0.56004
-0.963508 0.267681 -0.384806 0.922997
-0.399104 0.916906 -0.977344 0.211659
--0.999323 0.0367986 -0.858171 0.513364
--0.996543 0.0830734 -0.446587 -0.89474
--0.131569 0.991307 0.808737 0.58817
-0.0151675 -0.999885 0.0539646 0.998543
-0.319844 0.94747 0.417105 -0.908858
-0.923652 -0.383232 -0.0593496 -0.998237
--0.646951 0.762531 0.322031 0.946729
-0.744299 -0.667847 -0.641295 0.767295
--0.967912 0.251289 0.964189 -0.265217
--0.981187 -0.193058 0.83741 0.546574
--0.972098 -0.234576 0.116017 -0.993247
--0.554304 0.832314 -0.591691 0.806165
-0.592917 0.805264 0.804624 -0.593784
-0.874116 0.485718 0.899172 0.437596
--0.998805 0.0488827 0.176891 0.98423
--0.719134 -0.694872 0.144392 0.989521
--0.999997 -0.00244145 0.970344 0.241727
--0.759511 -0.650495 -0.137313 0.990528
-0.571994 -0.820258 -0.359367 -0.933196
-0.824447 -0.565939 -0.892987 0.450082
--0.887156 -0.46147 -0.666494 -0.745511
--0.255519 -0.966804 0.761166 -0.648557
--0.857788 0.514004 -0.837838 0.545919
--0.731332 0.682022 0.940783 0.33901
--0.285051 -0.958512 -0.80706 0.59047
--0.965803 -0.259278 0.458299 0.888798
--0.620102 0.784521 -0.610706 -0.791858
-0.349685 0.936867 -0.393875 0.919164
--0.964869 0.262731 0.118077 -0.993004
--0.807474 0.589902 0.965886 -0.258968
--0.719458 0.694536 0.190403 -0.981706
-0.954547 -0.298059 0.408443 0.912784
-0.755678 -0.654943 -0.663061 -0.748565
--0.59384 -0.804583 0.731396 -0.681952
--0.283547 -0.958958 -0.889413 0.457105
-0.862238 0.506503 -0.956906 0.290399
--0.856843 -0.515577 -0.724159 -0.689633
-0.914677 0.404186 -0.719174 -0.69483
-0.980029 -0.198854 0.390837 -0.92046
-0.958908 0.283718 -0.881128 -0.472877
--0.819438 -0.573168 -0.222467 -0.97494
--0.999331 -0.036586 -0.8689 -0.494987
--0.767669 0.640847 0.902573 -0.430538
--0.0243066 -0.999705 -0.757907 -0.652363
--0.85576 -0.517373 -0.564686 -0.825306
-0.735424 -0.677607 0.583405 0.812181
--0.677187 0.735811 0.53609 -0.844161
-0.854494 0.519461 -0.348442 -0.93733
--0.999342 0.0362597 -0.884597 0.466357
-0.216208 0.976347 -0.980421 -0.196913
-0.998468 -0.0553233 0.73303 0.680196
-0.903305 0.428999 0.937252 0.348652
-0.888691 -0.458506 -0.873973 0.485975
--0.828038 0.560672 -0.985493 -0.169718
--0.953202 0.302333 0.763554 0.645744
--0.692806 -0.721124 0.418395 -0.908265
-0.945091 -0.326807 -0.300805 -0.953686
-0.353896 -0.935285 0.0450304 -0.998986
-0.433333 -0.901234 0.670049 0.742317
--0.826027 0.563631 -0.982532 0.186092
-0.265965 0.963983 -0.215211 -0.976568
-0.314174 0.949365 0.856316 -0.516452
--0.620487 0.784217 -0.57117 -0.820832
-0.832338 0.554269 -0.588326 0.808624
-0.577275 -0.81655 0.274111 -0.961698
-0.927968 0.372659 0.883213 0.468973
-0.436934 0.899493 0.32815 -0.944626
--0.915628 0.402026 -0.861719 0.507386
-0.698168 0.715934 -0.309327 -0.950956
-0.607076 0.794644 -0.741237 -0.671243
--0.992065 0.125726 0.999216 -0.0395852
--0.161754 -0.986831 -0.85831 0.513131
--0.577597 -0.816322 0.311805 0.950146
-0.681006 -0.732278 0.884822 -0.465929
--0.982608 0.185693 0.985267 0.171024
-0.0719411 0.997409 0.608089 -0.793869
-0.00463195 -0.999989 0.894629 0.44681
-0.528774 -0.848763 0.672564 -0.740039
--0.456641 0.889651 -0.956001 -0.293363
-0.0316304 0.9995 -0.999759 0.0219691
-0.943013 0.332757 -0.805119 0.593113
--0.406724 0.913551 -0.501233 -0.865312
--0.400212 0.916422 -0.944685 -0.327978
-0.990618 -0.136659 0.415415 -0.909632
--0.17542 -0.984494 0.347102 0.937827
-0.104419 -0.994533 -0.509529 -0.860454
--0.784854 -0.61968 -0.65238 -0.757892
--0.487527 -0.873108 0.789982 -0.61313
--0.893219 -0.449623 -0.882525 0.470266
--0.89858 0.438809 0.125469 -0.992097
-0.894821 0.446426 -0.662084 0.74943
-0.195864 -0.980631 0.649175 0.760639
--0.698901 -0.715219 -0.404929 -0.914348
--0.905319 0.424732 0.993318 0.115408
-0.706558 -0.707655 -0.996997 0.0774343
--0.98747 0.15781 -0.990322 0.138787
--0.998388 0.0567634 0.823188 0.567769
-0.94525 0.326346 -0.254018 0.9672
-0.840711 -0.541483 0.782961 -0.622071
--0.737681 -0.67515 0.285289 -0.958441
-0.31451 0.949254 0.837514 -0.546417
--0.765962 0.642886 0.757722 -0.652577
--0.546936 0.837175 0.24694 0.969031
-0.593238 -0.805027 0.780316 0.625385
--0.0508533 0.998706 0.366394 -0.93046
-0.381966 -0.924176 0.0775737 0.996987
-0.84562 0.533786 0.970976 -0.239179
-0.99846 0.0554787 0.743526 -0.668707
--0.582433 -0.812879 0.789982 0.61313
--0.861028 0.508557 -0.99842 -0.0561937
--0.0238693 0.999715 -0.728656 0.68488
--0.27875 -0.960364 -0.999685 -0.0250937
--0.114393 -0.993436 0.451816 0.892111
--0.906609 -0.421973 0.912976 -0.408014
--0.407377 -0.91326 -0.43811 0.898921
--0.957964 0.286887 -0.67982 0.733379
--0.514333 0.857591 -0.816265 -0.577678
--0.246198 0.96922 0.967099 -0.254398
-0.717517 0.696541 -0.0873882 0.996174
-0.845004 -0.53476 0.992036 0.125955
--0.204074 -0.978955 -0.131046 -0.991376
-0.331095 0.943597 -0.688704 -0.725043
--0.358896 -0.933377 0.548199 0.836348
--0.55754 0.83015 -0.853398 0.521259
--0.700523 -0.71363 -0.600426 -0.79968
--0.91409 -0.405511 -0.611315 -0.791387
-0.419548 -0.907733 0.772795 -0.634655
-0.739902 0.672715 -0.0402304 -0.99919
--0.731707 -0.681619 0.920714 -0.390238
--0.138804 -0.99032 0.210268 -0.977644
--0.0916284 -0.995793 -0.969143 -0.2465
-0.416901 -0.908952 0.557878 -0.829923
-0.742981 0.669312 -0.478664 -0.877998
-0.883768 0.467926 -0.000453693 -1
--0.48441 -0.874841 0.954343 -0.298713
--0.706229 0.707983 -0.992322 0.123684
-0.770015 -0.638026 0.996951 -0.0780261
-0.0573517 -0.998354 0.855198 -0.518302
--0.74442 0.667712 -0.655109 0.755535
--0.96712 -0.254322 0.835414 0.549621
-0.458339 0.888778 -0.882972 0.469426
--0.649753 -0.760145 -0.0401024 -0.999196
-0.0253431 0.999679 -0.821359 -0.570411
-0.830513 -0.557 -0.817721 -0.575615
-0.268311 0.963332 -0.444298 -0.895879
-0.902643 -0.430391 0.872601 -0.488434
--0.635805 0.77185 0.978047 -0.208386
--0.964146 -0.265373 -0.154865 0.987936
-0.194915 0.98082 0.719634 -0.694353
--0.993826 0.110951 0.122119 0.992515
--0.956618 0.291346 -0.278067 0.960562
-0.920402 -0.390973 -0.782671 -0.622436
--0.433744 -0.901036 0.635512 -0.772091
-0.615262 0.788322 -0.9558 0.294019
--0.188595 0.982055 0.99238 0.123211
--0.339158 0.940729 -0.999004 -0.0446228
--0.242732 -0.970093 0.816978 0.576669
-0.812319 0.583213 0.845104 -0.534603
--0.883786 0.467891 -0.00439639 0.99999
--0.483626 0.875275 0.977241 0.212132
-0.464814 -0.885408 -0.344953 -0.93862
-0.546903 0.837196 0.250758 -0.96805
-0.593959 0.804496 0.721234 -0.692691
-0.937963 -0.346735 -0.65899 0.752152
-0.0915891 0.995797 -0.968163 -0.250319
-0.416087 -0.909325 0.481389 -0.876507
--0.416934 0.908937 0.560901 -0.827883
-0.705869 0.708342 -0.984743 -0.174014
--0.883965 -0.467553 -0.0426125 -0.999092
--0.296534 -0.955022 0.258044 0.966133
--0.502513 -0.86457 -0.727027 -0.686609
-0.0103951 -0.999946 0.506625 0.862166
--0.533282 0.845938 0.955008 -0.296581
-0.851557 -0.524262 0.205501 0.978657
--0.548337 -0.836258 0.0819969 -0.996633
--0.958004 -0.286753 -0.690009 -0.723801
-0.543014 -0.839724 0.65733 0.753603
-0.9941 0.108464 -0.127488 -0.99184
-0.84756 0.5307 0.821927 -0.569592
-0.92946 0.368924 0.996304 0.0858993
--0.999997 0.0025026 0.968848 -0.247656
--0.965408 -0.260744 0.318578 0.947897
-0.999716 -0.0238351 -0.726311 -0.687366
-0.435998 0.899948 0.424502 -0.905427
--0.388429 -0.921479 -0.583196 -0.812331
--0.165134 0.986271 -0.636086 -0.771618
--0.994479 0.104932 -0.464482 0.885583
--0.799637 0.600484 -0.00801281 -0.999968
--0.709347 0.704859 -0.950067 -0.312044
-0.829811 -0.558045 -0.883532 -0.468371
--0.138864 -0.990311 0.204294 -0.97891
-0.294373 0.95569 0.0348378 0.999393
-0.921019 0.389518 -0.674959 0.737855
-0.714222 -0.69992 -0.530738 -0.847536
-0.607483 0.794333 -0.774653 -0.632386
--0.303525 0.952823 0.83817 -0.545409
--0.339276 -0.940687 -0.998363 0.0572012
--0.975279 0.220979 -0.958045 0.286616
--0.889174 0.457568 -0.920291 0.391235
--0.139913 0.990164 0.0996923 0.995018
-0.500243 0.865885 -0.524128 -0.85164
-0.842421 0.538819 0.937702 0.347441
-0.988656 0.150198 -0.807364 0.590053
--0.999255 -0.0385863 -0.753126 -0.657877
-0.999852 0.0171858 -0.147327 0.989088
--0.416512 -0.90913 0.521865 0.853028
-0.946226 0.323506 0.0434915 0.999054
-0.557365 -0.830268 -0.842222 0.539131
--0.315447 -0.948943 0.779536 -0.626357
-0.630298 0.776353 0.6048 0.796377
-0.824354 -0.566075 -0.88542 0.464792
-0.317821 0.948151 0.600131 -0.799902
--0.406065 -0.913844 -0.562207 0.826996
-0.810627 -0.585563 0.962572 0.271024
--0.714717 0.699414 -0.469496 -0.882935
--0.68436 0.729144 0.999672 -0.0256031
-0.443662 0.896194 -0.403151 -0.915133
-0.63738 -0.770549 0.999984 -0.00567066
-0.1094 -0.993998 -0.0336121 -0.999435
--0.946401 -0.322994 0.0974585 0.99524
-0.0989036 -0.995097 -0.886174 -0.463353
--0.999559 0.0296903 -0.985223 -0.171275
-0.0300868 -0.999547 -0.99124 0.132071
-0.4787 -0.877978 0.940018 -0.341124
--0.693126 0.720817 0.377733 0.925914
-0.81225 -0.583309 0.851387 0.524538
-0.691261 0.722606 0.601843 -0.798615
-0.913224 0.407458 -0.430079 -0.902791
--0.663271 0.748379 -0.966009 -0.258509
--0.945293 -0.326223 -0.241424 0.97042
--0.531222 0.847233 0.855418 -0.517938
--0.979807 -0.199945 0.286155 0.958183
--0.620559 -0.78416 -0.563548 0.826083
--0.652448 0.757833 -0.385024 0.922907
-0.971362 0.237603 0.414855 -0.909887
--0.606991 -0.794709 -0.734043 -0.679103
-0.960722 0.277514 -0.988196 0.153196
-0.842263 0.539067 0.927069 0.374891
--0.998136 0.0610226 0.984353 0.17621
--0.0397122 -0.999211 -0.674379 0.738385
-0.11237 0.993666 0.262137 0.965031
--0.788274 0.615324 -0.953466 0.301499
-0.934781 -0.355224 0.18592 0.982565
-0.862426 -0.506183 -0.945452 -0.325761
--0.278686 0.960382 -0.999494 0.0318025
--0.419655 0.907683 0.780252 -0.625466
--0.221131 0.975244 -0.953483 -0.301447
--0.984331 0.176329 0.432051 0.901849
-0.431935 0.901905 0.776692 -0.62988
-0.945199 0.326495 -0.269228 0.963076
-0.988525 0.151055 -0.855449 0.517888
-0.940203 -0.340615 -0.980141 0.198301
--0.954476 -0.298288 0.430201 -0.902733
-0.180729 -0.983533 0.779557 -0.626331
-0.151022 -0.98853 -0.853705 0.520756
-0.876583 -0.481251 0.998355 0.0573371
--0.426907 -0.904296 0.992239 -0.124343
-0.818713 -0.574203 -0.0979127 0.995195
-0.996606 -0.0823187 -0.377607 -0.925966
-0.959911 0.280305 -0.990656 -0.136386
--0.961242 0.275706 -0.942118 -0.33528
--0.459676 0.888087 -0.802605 -0.596511
--0.884482 -0.466574 -0.152799 -0.988257
-0.812705 0.582675 0.807898 -0.589322
--0.373107 -0.927788 0.859546 -0.511058
--0.748294 -0.663368 -0.962592 -0.270954
--0.0302481 -0.999542 -0.993242 -0.116058
--0.100978 -0.994889 -0.771108 0.636705
--0.27266 -0.96211 -0.790811 -0.61206
-0.0911864 0.995834 -0.95725 -0.289261
--0.990094 0.140407 0.0498849 -0.998755
-0.925378 -0.379046 0.383356 -0.923601
--0.68464 -0.728881 0.999918 -0.0128094
--0.875645 0.482955 0.990616 -0.136673
-0.606204 -0.795309 -0.663318 0.748338
-0.890804 -0.454388 -0.999005 0.0446029
--0.0709006 -0.997483 0.687446 -0.726236
-0.64157 0.767064 0.858046 -0.513572
--0.796725 0.604342 -0.471846 -0.881681
-0.869011 -0.494793 0.0764925 -0.99707
-0.355969 0.934498 0.263599 0.964632
--0.878872 0.477058 0.860252 0.50987
-0.648512 -0.761205 0.122746 0.992438
--0.0610143 -0.998137 0.984206 0.177027
-0.310365 0.950617 0.989963 -0.14133
--0.654534 -0.756032 -0.621608 -0.783329
--0.533838 -0.845587 0.972437 0.233167
-0.727142 -0.686487 0.964706 -0.263329
--0.969992 -0.243139 0.840428 -0.541923
--0.601634 -0.798772 -0.151295 -0.988489
-0.890417 -0.455145 -0.991606 0.129296
-0.999431 -0.0337177 -0.973479 0.228777
-0.985935 -0.167127 -0.468214 0.883615
--0.999917 -0.012877 0.279294 0.960206
-0.83189 0.554941 -0.651648 0.758521
--0.522918 -0.852383 0.0491276 0.998793
-0.739689 0.672948 -0.00867398 -0.999962
-0.529524 -0.848295 0.735278 -0.677766
--0.795224 0.606316 -0.673819 -0.738896
-0.445767 -0.895149 -0.605178 0.79609
-0.893046 0.449965 -0.899896 0.436105
-0.702215 -0.711965 -0.77159 0.63612
-0.0732005 -0.997317 0.503271 0.864129
--0.283445 -0.958989 -0.894236 0.447596
--0.271044 0.962567 -0.677409 0.735607
--0.748801 -0.662795 -0.980489 -0.196574
--0.688246 -0.725477 0.873382 -0.487036
-0.979362 0.202116 0.0685426 0.997648
-0.0279975 -0.999608 -0.94226 0.334882
-0.986779 0.162069 -0.841513 -0.540238
-0.951081 -0.308941 0.999968 0.00797087
-0.944098 -0.329666 -0.571417 -0.82066
--0.944569 0.328314 -0.448462 -0.893802
-0.38162 -0.924319 0.114832 0.993385
--0.386655 -0.922224 -0.417113 -0.908854
--0.605262 -0.796026 -0.570281 -0.821449
--0.948599 0.316482 0.706766 -0.707447
--0.573409 0.819269 -0.193702 -0.98106
--0.986573 -0.16332 -0.766465 -0.642286
-0.997082 -0.0763435 0.210604 -0.977571
-0.999392 -0.034877 -0.940461 0.339902
--0.952796 0.303612 0.843076 0.537794
-0.99394 -0.109919 0.0186275 0.999826
-0.979507 -0.201412 0.139994 -0.990152
-0.956626 -0.291317 -0.280927 0.959729
-0.887848 0.460138 -0.770528 -0.637406
--0.683881 -0.729593 0.995834 0.0911813
-0.903648 0.428276 0.96213 0.272591
-0.860469 -0.509503 -0.998564 0.0535678
-0.986203 0.165541 -0.603639 -0.797258
-0.786187 -0.617989 -0.799267 0.600976
-0.997697 -0.0678283 0.875243 -0.483684
-0.810386 -0.585896 0.972913 0.23117
--0.558781 -0.829315 -0.921569 -0.388215
--0.347838 -0.937555 -0.566178 0.824283
-0.344314 0.938855 -0.82911 0.559086
--0.131249 0.991349 0.827275 0.561797
--0.440776 0.897617 -0.0930341 0.995663
-0.147451 0.989069 -0.6146 -0.788839
-0.987286 0.158953 -0.967644 -0.25232
--0.580424 0.814314 0.616184 -0.787602
-0.445802 0.895132 -0.608293 -0.793712
-0.984496 -0.175407 0.345859 0.938286
-0.2809 -0.959737 -0.980295 -0.197537
-0.997514 -0.0704634 0.71861 -0.695413
--0.542425 -0.840104 0.708503 -0.705708
--0.933994 0.357289 0.396778 0.917915
--0.92394 0.382536 0.015921 -0.999873
-0.999303 0.0373317 -0.82958 -0.558388
-0.979806 -0.199952 0.285447 -0.958394
--0.89204 0.451957 -0.974095 -0.226141
-0.999997 0.00245628 0.969985 0.243166
--0.872847 0.487994 0.756072 -0.654488
--0.836956 0.547271 0.207957 -0.978138
-0.979998 -0.199005 0.376564 -0.926391
--0.692827 0.721103 0.41573 0.909488
--0.994909 0.100778 -0.783708 0.62113
--0.815395 -0.578904 0.459464 -0.888196
--0.934903 0.354902 0.152068 0.98837
--0.804742 0.593625 0.74931 -0.66222
--0.708313 -0.705899 -0.985472 0.169838
--0.515683 0.856779 -0.71553 -0.698582
--0.762624 0.646842 0.335522 -0.942032
--0.98759 -0.157053 -0.99804 -0.0625735
-0.998694 -0.0510885 0.388209 0.921571
-0.87172 0.490005 0.586536 0.809924
--0.192591 -0.981279 0.862469 -0.50611
--0.0804315 0.99676 -0.19658 0.980488
--0.82407 0.566489 -0.860979 0.508641
-0.942155 -0.335177 -0.929313 -0.369294
--0.237847 0.971303 0.437616 -0.899162
-0.01701 -0.999855 -0.129915 0.991525
-0.720042 0.693931 0.272182 0.962246
--0.0637864 0.997964 0.995025 0.0996253
--0.95482 -0.297185 0.323218 -0.946325
-0.767149 0.641469 0.864751 0.502201
-0.872993 -0.487733 0.775285 -0.631612
-0.997977 -0.0635777 0.996891 -0.0787943
--0.954185 -0.299217 0.515905 -0.856646
-0.890592 -0.454803 -0.995845 0.0910633
-0.965111 -0.261841 0.209044 -0.977906
-0.986404 -0.164337 -0.696263 0.717787
-0.891707 -0.452614 -0.988098 -0.153825
--0.714617 0.699515 -0.481976 -0.876185
--0.73564 0.677373 0.557302 0.83031
-0.783799 -0.621015 -0.514584 0.85744
--0.0093164 -0.999957 0.596508 -0.802607
-0.66363 -0.748061 -0.952492 -0.304563
--0.998614 0.0526284 0.525142 0.851015
-0.363597 0.931556 0.883983 0.467519
--0.0899829 0.995943 -0.915399 0.402548
-0.744481 0.667643 -0.662048 -0.749462
--0.985639 -0.168866 -0.305915 -0.952059
--0.575595 -0.817735 0.0720756 0.997399
--0.630387 -0.776281 0.613854 0.78942
--0.992979 -0.11829 0.758631 -0.651521
--0.101064 -0.99488 -0.765542 0.643386
--0.640341 0.768091 0.928963 0.370173
-0.197774 -0.980248 0.489676 0.871904
-0.646872 0.762599 0.331863 -0.943328
--0.345855 0.938288 -0.726595 -0.687066
-0.905077 0.425247 0.998273 -0.0587393
-0.773491 -0.633807 0.892219 0.451603
--0.900137 0.435608 0.463361 -0.88617
--0.482113 0.876109 0.999159 0.0410065
--0.926903 0.375302 0.715743 -0.698363
--0.969968 -0.243234 0.845727 -0.533616
-0.00642608 0.999979 0.800533 -0.599289
--0.901167 0.433473 0.658491 -0.752588
-0.852749 0.522321 -0.0208053 -0.999784
-0.460516 0.887651 -0.742633 0.669698
--0.756225 0.654312 -0.598308 -0.801267
-0.926992 0.375082 0.732118 0.681178
-0.812409 0.583088 0.836811 -0.547492
-0.0827102 -0.996574 -0.413688 0.910419
--0.936002 0.351994 -0.157578 0.987507
-0.998872 -0.0474944 0.0388318 0.999246
--0.997301 -0.0734222 0.483941 0.875101
--0.357846 0.933781 0.45085 -0.8926
--0.994988 0.0999976 -0.82998 0.557793
--0.294219 -0.955738 0.018669 0.999826
--0.897792 -0.440419 -0.0533937 0.998574
--0.807512 -0.589851 0.967531 0.252754
-0.128602 0.991696 0.946182 -0.323636
-0.156619 0.987659 -0.999825 0.0187183
-0.0511556 0.998691 0.394394 0.918942
--0.0103914 -0.999946 0.506947 -0.861977
-0.966774 -0.255634 0.753365 -0.657603
--0.799842 -0.600211 0.0262099 0.999656
--0.98225 -0.187577 0.999802 0.0199196
-0.820325 0.571897 -0.370321 -0.928904
-0.8398 -0.542897 0.667786 -0.744353
--0.809245 -0.587471 0.999245 -0.0388425
-0.996987 -0.0775698 0.089088 -0.996024
--0.519445 0.854504 -0.350197 -0.936676
-0.904836 -0.42576 0.999998 0.00216579
--0.894998 0.44607 -0.631822 -0.775113
-0.711689 -0.702495 -0.795997 -0.605301
-0.431565 0.902082 0.801829 -0.597554
-0.613183 -0.789941 -0.999391 -0.0349031
-0.97382 -0.227321 -0.588609 0.808418
--0.601991 0.798503 -0.195284 0.980747
-0.0531636 0.998586 0.569977 0.821661
-0.987987 0.154537 -0.981608 0.190909
--0.95466 0.297697 0.373535 0.927616
-0.999561 0.0296118 -0.983848 0.179007
--0.979154 0.203119 -0.033844 -0.999427
--0.939444 0.342702 -0.912411 0.409275
--0.994689 -0.102922 -0.632773 -0.774337
-0.160718 -0.987 -0.907347 -0.420383
-0.900466 -0.434927 0.528993 -0.848626
-0.19429 0.980944 0.762389 -0.647119
--0.578985 0.815338 0.468229 -0.883607
--0.983679 -0.179932 0.72631 -0.687367
--0.947813 0.318828 0.511927 -0.859029
--0.895956 -0.444142 -0.451608 0.892217
-0.129375 -0.991596 0.918102 0.396343
-0.32866 0.944448 -0.480943 -0.876752
--0.979725 -0.200348 0.246499 0.969143
--0.698646 0.715467 -0.372144 0.928175
--0.14567 -0.989333 -0.463383 -0.886158
--0.689115 -0.724652 0.808957 -0.587868
--0.198298 0.980142 0.442378 0.896829
--0.463322 0.88619 -0.497454 -0.86749
--0.743249 -0.669015 -0.513462 -0.858112
--0.73453 -0.678576 0.685118 -0.728432
--0.0419266 0.999121 -0.495574 -0.868566
-0.963634 0.267225 -0.340717 0.940166
--0.999453 0.0330688 -0.986272 0.165126
--0.919383 0.393365 -0.91638 -0.400308
-0.801976 -0.597356 0.373324 -0.927701
--0.96577 0.2594 0.447038 -0.894515
-0.239357 -0.970932 0.571556 -0.820563
-0.639147 0.769084 0.975042 -0.222022
--0.994255 0.107037 -0.268044 0.963407
-0.060539 0.998166 0.974664 0.223675
-0.616093 0.787673 -0.919549 0.392975
-0.951788 -0.306757 0.971926 0.235286
--0.398947 -0.916974 -0.980839 0.194822
--0.531753 -0.8469 0.886161 0.463377
--0.1498 -0.988716 -0.782965 -0.622066
--0.758054 -0.652191 -0.353526 0.935425
-0.727447 -0.686164 0.97546 -0.220178
-0.89287 0.450315 -0.916269 0.400564
-0.628332 0.777945 0.386211 0.92241
--0.470715 0.882285 0.310225 -0.950663
--0.599969 -0.800023 0.0564043 -0.998408
-0.852698 -0.522405 -0.0110097 0.999939
--0.987978 -0.154594 -0.982696 0.185224
-0.427521 0.904005 0.981504 -0.191443
--0.22197 0.975053 -0.924022 -0.38234
--0.00902674 0.999959 0.619503 0.784994
-0.360478 -0.932768 0.681451 -0.731863
--0.911674 -0.410913 -0.0658739 -0.997828
--0.881972 -0.471303 0.3728 -0.927912
--0.89196 0.452114 -0.97792 -0.208977
-0.390817 0.920469 -0.771981 -0.635645
-0.507866 -0.861436 -0.990702 0.136048
--0.98034 0.197318 0.529668 -0.848205
--0.421042 -0.907041 0.866346 0.499445
--0.128065 0.991766 0.962321 0.271915
--0.66834 0.743856 -0.589143 -0.808029
-0.641916 0.766775 0.83405 -0.551689
-0.932284 0.361728 0.773143 -0.634231
--0.999256 -0.0385755 -0.753839 -0.657059
--0.720301 -0.693661 0.307938 0.951406
--0.304625 0.952472 0.895416 -0.44523
--0.58525 -0.810853 0.9514 0.307958
--0.89836 -0.439261 0.0754408 0.99715
-0.994922 -0.100652 -0.791518 0.611145
--0.375503 0.926821 0.700393 0.713758
--0.29973 0.954024 0.561226 -0.827663
--0.819849 -0.57258 -0.291859 -0.956461
-0.362792 0.93187 0.840359 0.542031
--0.697231 0.716846 -0.182702 0.983168
--0.0697022 -0.997568 0.769531 -0.63861
--0.992947 -0.118559 0.775989 -0.630747
-0.991811 0.127716 0.971298 0.237866
--0.580569 -0.814211 0.630099 0.776515
-0.962681 0.270638 -0.645732 0.763565
-0.308565 0.951203 0.99887 0.047518
-0.922768 -0.385355 -0.285333 -0.958429
--0.279316 0.960199 -0.999426 -0.0338648
-0.998483 0.0550688 0.715458 -0.698656
--0.999612 -0.0278596 -0.937551 0.347849
-0.698893 -0.715226 -0.40401 0.914755
--0.915504 0.402308 -0.845664 0.533715
--0.365021 -0.930999 0.94488 0.327417
--0.261177 -0.965291 0.275803 -0.961214
-0.818122 -0.575044 0.00477887 0.999989
--0.690766 0.723079 0.655066 0.755572
-0.99079 -0.135406 0.52678 -0.850002
--0.119033 0.99289 0.805204 -0.592998
--0.997852 -0.0655063 0.963198 0.268793
-0.972678 0.23216 -0.131822 -0.991273
-0.157246 -0.98756 -0.996629 -0.0820413
-0.673315 0.739356 0.0408743 0.999164
--0.517428 0.855727 -0.55938 -0.828911
--0.892794 0.450466 -0.922927 -0.384974
--0.280109 -0.959968 -0.993233 0.116136
--0.428669 0.903461 0.949345 0.314236
--0.0822545 -0.996611 -0.371634 -0.92838
-0.99979 0.0205012 -0.461307 0.887241
-0.868748 -0.495255 0.02348 -0.999724
-0.898871 -0.438213 0.190905 -0.981609
--0.711781 0.702402 -0.788025 -0.615643
--0.554604 -0.832115 -0.620365 -0.784313
--0.944485 0.328553 -0.471007 -0.88213
--0.79566 0.605744 -0.618967 -0.785417
--0.355531 0.934664 0.218139 -0.975918
--0.998157 0.0606791 0.977707 0.209975
--0.821698 -0.569923 -0.580946 -0.813942
-0.0321049 0.999485 -0.99759 0.0693908
-0.220538 -0.975378 -0.970035 -0.242964
--0.789067 -0.614308 -0.984308 -0.17646
--0.00424721 -0.999991 0.911153 -0.412068
--0.543484 -0.83942 0.614157 -0.789184
-0.969535 0.244953 0.926573 -0.376114
--0.929441 0.368972 0.995848 -0.091027
--0.668339 0.743857 -0.589189 -0.807995
-0.934057 -0.357124 0.380537 0.924765
-0.37523 -0.926932 0.721124 0.692806
--0.561461 0.827503 -0.99717 0.0751766
-0.243401 0.969926 0.854795 0.518967
--0.435144 0.900361 0.508364 0.861142
--0.738233 0.674545 0.20597 0.978558
-0.996133 -0.0878566 -0.809336 -0.587346
--0.958676 0.2845 -0.839644 0.543138
--0.195244 -0.980755 0.695923 -0.718116
--0.849765 0.527162 0.520846 0.853651
-0.541645 0.840608 0.770884 -0.636975
-0.969769 0.244024 0.886329 -0.463056
-0.595272 0.803524 0.598948 -0.800788
-0.524297 0.851535 0.209536 0.977801
-0.963339 -0.268288 -0.442118 -0.896957
-0.887188 0.461408 -0.671718 -0.740807
--0.971305 -0.237839 0.436857 -0.899531
--0.757517 -0.652815 -0.42922 0.9032
--0.989533 -0.144304 -0.337104 0.941468
-0.916897 -0.399123 -0.976907 0.213665
-0.879484 -0.475928 0.787819 0.615907
-0.996466 0.0839946 -0.527273 0.849696
--0.980882 -0.194602 0.741441 0.671018
-0.503919 0.863751 -0.828658 -0.559755
-0.301685 -0.953408 0.717919 -0.696126
-0.654436 0.756117 -0.611399 -0.791323
-0.861603 -0.507583 -0.985692 -0.168559
--0.96427 0.264921 -0.108457 -0.994101
-0.449285 0.893388 -0.864133 -0.503263
--0.613525 0.789675 -0.996943 -0.0781344
-0.447396 -0.894336 -0.739327 0.673346
-0.738708 0.674025 0.136565 -0.990631
-0.501762 0.865006 -0.664787 -0.747033
-0.488871 0.872356 0.686615 -0.727021
--0.473952 0.880551 0.63084 -0.775913
--0.997156 0.0753652 0.305348 -0.952241
--0.949345 -0.314237 0.852854 0.522149
--0.394757 0.918786 -0.966291 0.257454
-0.934508 -0.355942 0.260814 0.965389
--0.122835 0.992427 0.968485 -0.249073
--0.148898 -0.988853 -0.723064 -0.690781
-0.805379 0.592761 0.815986 0.578071
--0.361298 0.93245 0.743061 -0.669224
-0.705932 -0.70828 -0.986247 0.165279
--0.0824986 0.996591 -0.39426 0.918999
--0.0978875 0.995197 -0.928786 -0.370618
-0.9531 -0.302655 0.78492 0.619597
-0.31716 -0.948372 0.654433 0.75612
-0.723831 -0.689977 0.733395 -0.679802
--0.986799 0.16195 -0.84793 0.530108
--0.0877145 -0.996146 -0.800876 -0.59883
-0.308218 -0.951316 0.996478 -0.0838582
--0.996915 0.0784924 -0.00333952 -0.999994
--0.107814 0.994171 -0.191978 -0.981399
-0.977017 -0.213162 -0.87268 -0.488293
--0.225919 0.974146 -0.69852 -0.71559
--0.822267 0.569101 -0.659229 0.751942
-0.733603 -0.679578 0.777887 0.628405
--0.0402251 -0.999191 -0.63561 0.77201
--0.877861 -0.478915 0.948086 -0.318013
-0.0865622 0.996246 -0.726409 -0.687263
--0.911609 -0.411059 -0.0499068 -0.998754
--0.325683 -0.945479 -0.185558 -0.982633
--0.818325 0.574756 -0.0305009 0.999535
--0.0870684 -0.996202 -0.760382 -0.649476
-0.9869 0.161331 -0.879496 -0.475907
-0.772681 -0.634794 0.942484 0.334251
--0.230386 0.973099 -0.309371 -0.950941
--0.537815 0.843063 0.972372 0.233435
-0.496127 -0.86825 -0.0768686 0.997041
--0.937431 -0.348172 -0.536476 -0.843916
-0.913745 0.406289 -0.541835 -0.840485
-0.914234 -0.405186 -0.639084 0.769137
-0.663345 -0.748314 -0.963403 -0.268059
-0.932808 -0.360375 0.673297 0.739372
-0.328381 0.944545 -0.45487 -0.890558
-0.679787 0.73341 0.795447 0.606023
-0.77999 -0.625792 0.0703716 0.997521
-0.99993 -0.0118563 0.375687 -0.926747
-0.998087 0.061828 0.995353 -0.0962924
--0.668346 0.743851 -0.588464 -0.808523
--0.099519 -0.995036 -0.855842 0.517237
-0.366447 -0.930439 0.983772 -0.179422
-0.607897 -0.794016 -0.806554 0.591161
-0.999965 0.00833989 0.671919 0.740624
-0.15969 -0.987167 -0.946128 -0.323792
-0.636152 0.771564 0.986423 0.164224
--0.826985 0.562224 -0.999855 0.0170039
--0.553708 -0.832711 -0.532509 -0.846424
-0.74535 -0.666673 -0.753763 0.657146
-0.995236 -0.097499 -0.942542 0.334088
-0.781655 -0.623711 -0.194897 0.980824
--0.95351 0.301362 0.693945 0.720028
--0.416314 -0.909221 0.503183 0.86418
--0.281167 0.959659 -0.974423 -0.224722
-0.383238 0.92365 -0.0600228 -0.998197
--0.264175 -0.964475 -0.0312774 -0.999511
-0.391934 0.919994 -0.843265 -0.537498
--0.987095 0.160133 -0.930657 0.365892
-0.95519 0.295993 0.202907 -0.979198
-0.993233 0.116137 0.600728 -0.799453
-0.981087 0.193565 0.808057 0.589105
-0.752542 0.658545 -0.932943 0.360023
-0.955105 -0.296267 0.230972 0.97296
-0.795647 -0.60576 -0.620569 -0.784152
-0.939299 0.343098 -0.894339 -0.447389
-0.593477 0.804851 0.761415 -0.648265
-0.985141 0.171748 -0.0184166 -0.99983
-0.947352 -0.320193 0.383344 -0.923606
-0.602977 0.797758 -0.314724 -0.949183
-0.972637 0.232328 -0.114607 -0.993411
--0.394983 0.918688 -0.972341 0.233567
-0.73379 -0.679376 0.760307 0.649564
-0.572587 -0.819844 -0.290986 -0.956727
-0.489344 0.872091 0.646169 -0.763194
-0.739431 -0.673233 0.0297825 0.999556
--0.717886 -0.69616 -0.0344694 0.999406
--0.361577 0.932342 0.762731 -0.646716
--0.23299 0.972479 -0.0467748 -0.998905
--0.182201 0.983261 0.864277 -0.503017
-0.352067 0.935975 -0.149932 0.988696
--0.137065 0.990562 0.37781 0.925883
-0.470852 0.882212 0.324926 0.945739
--0.617766 -0.786362 -0.815933 0.578146
-0.957702 -0.287763 -0.610023 0.792384
--0.979011 0.203808 -0.104087 -0.994568
-0.489571 -0.871963 0.626079 0.77976
--0.530541 -0.847659 0.811076 0.58494
--0.571209 -0.820804 -0.446806 0.894631
--0.343623 0.939108 -0.867972 -0.496612
--0.255867 -0.966712 0.737346 -0.675515
--0.472018 -0.881589 0.446806 0.894631
--0.518903 0.854833 -0.408814 -0.912618
-0.444073 -0.895991 -0.4447 0.895679
--0.712013 -0.702166 -0.76724 0.64136
-0.10496 0.994476 -0.461933 0.886915
-0.72453 -0.689243 0.79843 -0.602087
-0.142576 -0.989784 -0.168417 0.985716
--0.0673983 0.997726 0.895272 0.44552
-0.465695 -0.884945 -0.250018 -0.968241
-0.875579 -0.483076 0.98863 -0.15037
--0.297354 0.954767 0.339981 -0.940432
-0.629047 0.777367 0.469252 0.883064
-0.314301 -0.949323 0.849337 0.52785
-0.612499 0.790471 -0.998667 -0.0516152
--0.370114 0.928986 0.977166 0.212479
--0.406712 -0.913556 -0.502321 0.864681
-0.11059 -0.993866 0.086008 -0.996294
--0.732308 -0.680973 0.882728 -0.469884
-0.983174 -0.182669 0.887231 0.461325
-0.95708 0.289823 -0.426819 -0.904337
-0.379552 -0.92517 0.332224 0.943201
-0.0461869 0.998933 -0.0919284 0.995766
-0.194958 0.980812 0.716583 -0.697502
--0.961993 0.273074 -0.816381 -0.577514
-0.331689 0.943389 -0.73295 -0.680282
--0.390763 -0.920491 -0.7683 -0.64009
--0.232854 0.972512 -0.060796 -0.99815
-0.623697 -0.781666 -0.196554 -0.980493
--0.532335 0.846534 0.915925 -0.401349
--0.833279 -0.552852 -0.442925 0.896559
--0.915229 -0.402934 -0.807267 -0.590187
-0.997567 0.0697214 0.7683 0.64009
-0.904988 -0.425438 0.999289 0.0376946
--0.767453 0.641105 0.88761 -0.460596
--0.661324 -0.7501 -0.999999 0.00165422
-0.518076 0.855335 -0.495036 0.868872
--0.114166 0.993462 0.431376 -0.902172
--0.836726 0.547621 0.166786 -0.985993
--0.888307 0.45925 -0.830292 0.557328
-0.825992 0.563681 -0.981372 -0.192116
--0.468077 0.883688 0.0166255 -0.999862
--0.174335 -0.984686 0.241846 0.970315
-0.0814009 0.996681 -0.29086 -0.956766
-0.691789 0.7221 0.541898 -0.840444
-0.671587 -0.740926 -0.191441 -0.981504
--0.956031 -0.293266 -0.0809266 -0.99672
-0.37832 -0.925675 0.45451 0.890741
--0.66211 -0.749406 -0.994333 0.106315
-0.500403 0.865792 -0.539779 -0.841807
-0.202862 -0.979207 -0.00766568 0.999971
--0.416498 -0.909137 0.520544 0.853835
-0.990935 -0.134345 0.614665 -0.788788
-0.987532 0.157419 -0.995032 -0.0995586
-0.810492 -0.58575 0.968564 0.248763
--0.916586 0.399837 -0.957337 0.288974
-0.179046 0.983841 0.661581 0.749874
--0.855888 -0.517161 -0.584917 -0.811093
--0.175415 -0.984495 0.346641 0.937998
-0.880705 0.473665 0.60521 -0.796066
-0.893414 -0.449235 -0.861272 -0.508145
--0.39811 0.917338 -0.994506 -0.104678
--0.615192 -0.788377 -0.958393 0.285451
-0.922561 -0.385851 -0.336457 -0.941699
-0.0299857 0.99955 -0.989854 -0.142091
-0.977564 0.21064 -0.719201 0.694802
--0.899539 -0.43684 0.338015 0.941141
--0.839415 0.543491 0.613472 -0.789717
--0.320868 0.947124 0.316585 0.948564
-0.991891 -0.127091 0.984335 -0.176311
-0.49606 -0.868288 -0.0692298 0.997601
--0.798911 0.60145 -0.128453 -0.991716
--0.351972 0.936011 -0.159922 -0.98713
--0.941472 -0.337091 -0.984729 0.174092
--0.664486 -0.747301 -0.911477 0.41135
--0.919383 0.393363 -0.916289 -0.400518
--0.882039 0.471175 0.359389 0.933188
-0.416111 0.909314 0.483764 0.875198
-0.0163046 0.999867 -0.0597053 -0.998216
-0.937109 0.349036 -0.456564 -0.88969
--0.579054 0.81529 0.475622 -0.87965
-0.982385 0.18687 0.998644 -0.0520518
--0.0729831 -0.997333 0.521987 -0.852953
--0.464274 0.885691 -0.40151 -0.915855
-0.940719 0.339186 -0.998865 -0.0476305
--0.64334 -0.765581 0.717761 -0.696289
-0.0714158 -0.997447 0.649038 0.760756
--0.165273 0.986248 -0.625113 -0.780534
-0.154698 0.987962 -0.984586 -0.174899
--0.994508 0.104659 -0.488604 0.872506
--0.612708 0.79031 -0.999681 0.0252446
-0.582036 0.813163 0.759122 0.650948
-0.299916 -0.953966 0.577251 -0.816567
-0.999995 -0.00314724 0.950882 -0.309554
-0.850724 0.525613 0.357584 -0.933881
-0.96253 0.271176 -0.687421 0.72626
-0.978222 0.207563 -0.468797 0.883306
--0.535651 -0.84444 0.999782 0.020872
--0.955344 0.295497 0.151826 0.988407
--0.510468 0.859897 -0.986286 -0.165042
--0.638628 -0.769516 0.9878 -0.155728
--0.217332 0.976098 -0.996547 0.0830344
--0.109367 -0.994001 -0.0369834 0.999316
-0.945054 -0.326915 -0.311695 -0.950182
-0.533646 -0.845708 0.966873 -0.255257
--0.670146 0.74223 -0.37736 -0.926067
--0.740271 0.672309 -0.0949625 0.995481
--0.0722196 0.997389 0.585686 0.810538
--0.953775 -0.300522 0.627939 -0.778262
--0.684289 -0.729211 0.999375 0.0353576
--0.415802 0.909455 0.453724 -0.891142
-0.797299 -0.603584 -0.385937 -0.922525
--0.535968 -0.844238 0.99986 -0.0167096
-0.937376 0.348318 -0.523265 -0.85217
-0.164423 0.98639 -0.689942 0.723865
--0.217841 -0.975984 -0.999521 -0.0309336
--0.336386 -0.941724 -0.968936 -0.247311
-0.995614 -0.0935598 -0.998483 -0.0550617
-0.998566 -0.0535417 0.600669 0.799498
-0.87835 -0.478019 0.910746 0.412966
--0.980354 0.197246 0.535904 -0.844279
--0.569514 0.821981 -0.620661 -0.784079
-0.899938 0.436017 0.422549 0.90634
--0.105858 0.994381 -0.380059 -0.924962
--0.566924 0.82377 -0.83289 -0.553438
-0.536423 0.84395 0.997511 -0.0705171
--0.371544 0.928415 0.933023 0.359817
--0.725562 0.688157 0.879312 -0.476247
-0.42533 -0.905039 0.998765 -0.0496818
-0.0806088 -0.996746 -0.213989 0.976836
--0.221368 -0.97519 -0.945854 0.324592
--0.968069 0.250685 0.978843 -0.204611
-0.955402 0.295307 0.132139 -0.991231
--0.94513 0.326694 -0.289389 -0.957212
--0.832924 0.553387 -0.499518 -0.866303
-0.75959 -0.650403 -0.125257 -0.992124
-0.390893 -0.920436 -0.777238 0.629207
-0.244543 -0.969639 0.909824 -0.414994
-0.593847 0.804578 0.730793 -0.682599
--0.649436 0.760417 0.00162999 0.999999
--0.874409 0.48519 0.923928 -0.382566
--0.97865 0.205532 -0.276714 -0.960952
--0.0588194 0.998269 0.921895 -0.38744
-0.878271 0.478163 0.917407 -0.397951
--0.988954 -0.148221 -0.6741 0.73864
--0.994353 0.10612 -0.3556 0.934638
-0.275356 -0.961342 -0.929278 0.369382
-0.193087 0.981182 0.835834 -0.548982
--0.980063 0.198686 0.406523 -0.913641
-0.223489 -0.974706 -0.853509 -0.521079
-0.638621 0.769522 0.987944 -0.154813
-0.921619 -0.388096 -0.55351 -0.832842
-0.67391 0.738813 0.121172 0.992631
-0.239195 0.970972 0.557768 0.829997
-0.288354 0.957524 -0.559981 0.828505
--0.990668 0.136296 0.448437 -0.893814
--0.691142 0.722719 0.614908 0.788599
--0.996116 -0.08805 -0.820586 0.571523
-0.624998 -0.780626 -0.0313602 -0.999508
-0.360126 0.932904 0.653328 0.757075
--0.168059 0.985777 -0.382689 -0.923877
--0.899614 -0.436686 0.354095 0.93521
--0.582492 -0.812837 0.794412 0.607379
--0.451671 0.892185 -0.966344 0.257253
-0.992915 0.118827 0.792722 -0.609583
-0.934985 0.354688 0.129352 -0.991599
-0.237195 0.971462 0.376268 0.926511
-0.497496 -0.867466 -0.23258 0.972577
-0.572563 -0.819861 -0.293821 -0.955861
--0.64076 0.767741 0.907409 0.420248
-0.336544 0.941668 -0.972955 -0.230994
--0.102866 0.994695 -0.637149 -0.77074
-0.469284 -0.883047 0.152745 -0.988266
--0.959833 0.280573 -0.986459 0.164009
--0.56597 0.824426 -0.891242 -0.453528
--0.594987 0.803735 0.627007 0.779013
-0.924638 -0.380846 0.197495 -0.980304
-0.636712 0.771102 0.995736 0.0922448
--0.903494 -0.4286 0.951738 0.30691
--0.830535 0.556966 -0.815359 -0.578955
-0.893896 -0.448274 -0.801803 -0.597589
--0.247174 -0.968971 0.987778 0.155869
--0.549281 0.835638 -0.0308685 0.999523
-0.933597 0.358325 0.496029 -0.868306
-0.881721 -0.471771 0.42158 0.906791
--0.958531 -0.28499 -0.810825 -0.585289
--0.973723 -0.227736 -0.553666 -0.832739
--0.268436 0.963298 -0.455861 0.890051
-0.929714 0.368281 0.999858 0.0168746
--0.786351 0.617779 -0.814966 0.579509
--0.995335 0.0964838 -0.971662 0.236374
--0.51929 0.854598 -0.367044 -0.930204
-0.977188 -0.212374 -0.830537 -0.556963
-0.6582 0.752843 -0.915469 -0.402389
--0.527911 -0.8493 0.593988 0.804474
-0.995501 -0.0947535 -0.997901 0.0647643
-0.348382 0.937353 -0.517426 0.855728
-0.699845 -0.714295 -0.521856 0.853034
-0.413062 -0.910703 0.169103 -0.985598
-0.967969 0.251068 0.969987 0.243156
-0.0999611 0.994991 -0.832022 0.554742
-0.996593 0.0824762 -0.392197 0.919881
--0.349307 0.937008 -0.430616 -0.902535
-0.925534 0.378664 0.421146 0.906993
--0.979703 0.200454 0.236017 -0.971749
--0.574796 -0.818297 -0.0255419 0.999674
--0.855026 0.518585 -0.442498 0.896769
--0.829529 0.558463 -0.905997 -0.423284
-0.26501 -0.964246 -0.117648 0.993055
-0.994777 -0.102074 -0.696371 0.717682
-0.377909 -0.925843 0.493651 0.86966
--0.195355 -0.980733 0.687769 -0.725929
--0.34479 -0.93868 -0.799723 0.600368
-0.566091 0.824342 -0.884484 0.466571
-0.169038 -0.985609 -0.289175 -0.957276
--0.746851 -0.664992 -0.881556 -0.472079
--0.307687 -0.951488 0.99024 0.139372
--0.389055 0.921214 -0.637054 0.770819
-0.841066 -0.540932 0.822042 -0.569427
-0.0643544 -0.997927 0.987747 0.156062
--0.263173 -0.964749 0.0724815 -0.99737
--0.784951 0.619558 -0.664149 0.747601
-0.819408 0.573211 -0.217377 -0.976088
--0.462058 -0.88685 -0.615697 0.787983
--0.983084 -0.183153 0.908834 -0.417158
-0.0542539 -0.998527 0.656118 -0.754658
--0.544011 -0.839078 0.563371 -0.826204
--0.170811 -0.985304 -0.11328 0.993563
--0.675273 -0.737567 0.30135 0.953514
--0.988861 0.148841 -0.719038 -0.694971
-0.0820389 -0.996629 -0.351471 0.936199
-0.666372 -0.745619 -0.779684 -0.626173
--0.997768 0.0667761 0.921295 -0.388863
-0.905193 0.425001 0.996301 -0.0859276
-0.899089 -0.437765 0.239573 -0.970878
-0.964131 -0.265427 -0.160436 -0.987046
--0.172525 -0.985005 0.0604521 0.998171
--0.541727 0.840555 0.764643 0.644454
--0.651544 0.758611 -0.272447 0.962171
--0.995508 -0.0946801 -0.998351 -0.0574002
--0.453098 0.891461 -0.994988 0.0999926
-0.456131 0.889913 -0.971255 0.23804
-0.101622 0.994823 -0.728304 0.685255
-0.99302 0.117947 0.735683 -0.677326
--0.475381 0.87978 0.747997 -0.663702
-0.997685 0.0680041 0.866585 0.499029
--0.663204 -0.748439 -0.968297 0.2498
-0.983368 0.181623 0.833198 -0.552974
--0.450801 0.892625 -0.936723 0.350071
--0.962653 -0.270739 -0.653737 0.756722
-0.24453 -0.969642 0.909288 -0.416168
-0.979797 0.199995 0.281256 0.959633
-0.923374 -0.383902 -0.131547 -0.99131
-0.756179 -0.654364 -0.603874 -0.79708
--0.275358 -0.961342 -0.929343 -0.369218
--0.978067 0.20829 -0.533087 -0.84606
--0.612375 -0.790567 -0.997736 -0.0672594
--0.656843 0.754027 -0.828614 0.559821
-0.372293 0.928115 0.901002 -0.433815
--0.169576 0.985517 -0.236535 -0.971623
-0.537297 -0.843393 0.984864 0.17333
-0.955529 -0.294896 0.0894605 0.99599
-0.62182 0.78316 -0.423981 0.905671
--0.479779 0.877389 0.974752 -0.223289
-0.99027 0.139162 0.174713 0.984619
-0.901912 0.43192 0.777722 0.628608
--0.229687 0.973265 -0.376782 -0.926302
--0.0337705 -0.99943 -0.972257 0.233916
--0.851642 0.524124 0.189571 0.981867
--0.588678 -0.808368 0.993914 -0.11016
--0.0610072 0.998137 0.984081 -0.177722
--0.0813586 -0.996685 -0.2868 -0.957991
-0.450863 -0.892593 -0.939121 0.343585
--0.99917 0.0407409 -0.594925 0.803781
-0.0367655 -0.999324 -0.859866 -0.510521
-0.570954 0.820982 -0.474422 0.880298
--0.999627 -0.0273011 -0.916663 0.39966
--0.772316 0.635238 0.960134 0.279541
-0.412349 0.911026 0.0914943 0.995806
-0.475003 -0.879984 0.71875 -0.695269
-0.915456 -0.402418 -0.83921 0.543808
-0.9842 -0.177058 0.497617 0.867397
-0.641398 -0.767208 0.869355 0.494188
-0.690819 -0.723028 0.649478 0.760381
-0.628372 -0.777913 0.390886 -0.920439
--0.914163 -0.405346 -0.625466 -0.780251
--0.525068 0.85106 0.297099 -0.954847
--0.999792 -0.0203956 -0.451909 0.892064
-0.906104 -0.423055 0.955071 0.296378
--0.985361 -0.17048 -0.146539 -0.989205
-0.189641 -0.981853 0.973642 0.228081
-0.130045 -0.991508 0.889243 0.457435
--0.991815 0.127681 0.972129 -0.234447
-0.886871 -0.462016 -0.619372 0.785098
-0.807545 0.589805 0.968932 0.247327
--0.999933 -0.0115851 0.400684 0.916216
-0.999434 -0.0336405 -0.975218 0.221245
--0.759519 0.650485 -0.135977 -0.990712
-0.0221898 0.999754 -0.603885 -0.797071
--0.833528 0.552477 -0.402106 -0.915593
-0.972943 0.231045 -0.244287 -0.969703
--0.999245 -0.0388437 -0.735929 -0.677058
-0.61846 0.785816 -0.761805 0.647806
-0.644893 -0.764273 0.562591 0.826736
-0.999998 -0.00189866 0.982029 -0.188728
-0.808023 -0.589151 0.985768 -0.168109
-0.995659 0.0930808 -0.994679 0.103026
--0.999677 -0.0254031 -0.824763 0.565478
--0.249798 0.968298 0.993463 0.114155
-0.32576 0.945452 -0.193601 -0.98108
--0.497204 0.867634 -0.199639 0.97987
-0.160982 0.986957 -0.895802 0.444453
-0.488013 0.872836 0.754647 -0.656131
-0.34675 0.937957 -0.657797 0.753196
-0.824807 0.565415 -0.919757 -0.392488
-0.985644 0.168834 -0.308948 -0.951079
-0.0632113 -0.998 0.999111 0.0421483
--0.914282 0.405079 -0.648025 0.761619
--0.981996 -0.188902 0.98804 0.1542
--0.364933 -0.931034 0.94173 0.336369
-0.969956 -0.243282 0.848358 0.529423
--0.371701 0.928353 0.926827 0.375488
--0.970585 0.240757 0.683561 0.729894
--0.930954 0.365136 0.948835 0.315772
-0.0992633 0.995061 -0.868846 0.495083
--0.925792 -0.378034 0.481802 0.87628
-0.935122 -0.354326 0.0908678 0.995863
-0.132682 0.991159 0.737779 -0.675042
-0.949062 -0.315089 0.802628 -0.596481
-0.374989 0.927029 0.7389 -0.673815
--0.658186 -0.752855 -0.91473 -0.404066
-0.996183 -0.0872875 -0.77448 -0.632598
--0.338697 -0.940896 -0.99999 -0.0043982
-0.184544 -0.982824 0.958603 -0.284747
-0.57572 -0.817647 0.0872763 -0.996184
--0.340482 -0.940251 -0.98285 0.184407
--0.429916 -0.902869 0.897092 -0.441845
-0.649328 -0.760509 0.0158207 0.999875
-0.316487 0.948597 0.706341 -0.707872
-0.981638 -0.190752 0.941666 -0.336549
-0.93055 0.366165 0.977895 -0.209098
--0.980393 -0.197051 0.552609 0.83344
-0.34629 0.938128 -0.693966 0.720008
-0.134518 0.990911 0.600769 -0.799423
--0.155127 -0.987895 -0.991248 -0.132012
--0.244809 0.969571 0.920875 -0.389859
--0.0347127 0.999397 -0.94592 -0.324399
--0.995725 0.0923703 -0.984803 -0.173674
--0.168929 -0.985628 -0.299826 0.953994
-0.222876 -0.974847 -0.884585 -0.46638
-0.449372 0.893345 -0.869001 -0.494811
--0.403639 -0.914918 -0.759426 0.650594
-0.822159 0.569259 -0.644737 -0.764404
--0.651233 -0.758878 -0.232856 -0.972511
-0.709839 0.704364 -0.926009 0.377501
--0.484837 0.874605 0.938621 0.344951
-0.316025 0.948751 0.740002 -0.672605
-0.91336 0.407152 -0.460084 -0.887875
--0.931201 -0.364506 0.925351 -0.379111
-0.598868 0.800848 0.19275 -0.981248
--0.0349423 0.999389 -0.93822 -0.346039
-0.338483 0.940973 -0.999632 -0.0271188
-0.666486 0.745517 -0.770017 0.638024
-0.952156 -0.305613 0.936689 0.350163
-0.987276 -0.159018 -0.965972 0.258646
-0.993279 -0.115741 0.568385 0.822763
--0.611545 -0.79121 -0.985197 -0.171425
--0.568018 -0.823016 -0.752284 0.658839
-0.556942 -0.830552 -0.813668 0.58133
-0.556993 -0.830517 -0.817232 0.576309
--0.71458 -0.699554 -0.486668 0.873587
-0.822381 -0.568937 -0.674126 0.738616
--0.709726 0.704478 -0.931929 -0.36264
-0.408819 -0.912615 -0.291258 -0.956645
-0.674391 0.738374 0.185473 0.982649
-0.806047 0.591851 0.875901 0.482492
-0.784763 0.619796 -0.641168 -0.7674
--0.761339 0.648354 0.143328 -0.989675
--0.857271 -0.514866 -0.778794 -0.62728
-0.478319 -0.878186 0.924334 -0.381584
-0.462362 0.886691 -0.58835 0.808606
-0.0747189 -0.997205 0.366387 0.930462
--0.996537 -0.0831529 -0.453707 0.891151
--0.124622 0.992204 0.997433 -0.0716008
--0.805416 0.59271 0.81957 -0.57298
--0.64881 -0.76095 0.0837265 -0.996489
--0.807365 -0.590052 0.96091 0.27686
--0.816866 -0.576828 0.221094 -0.975252
--0.282775 -0.959186 -0.923279 0.38413
-0.536741 0.843747 0.99414 -0.1081
--0.0272436 -0.999629 -0.914348 -0.404928
-0.968481 -0.249086 0.999163 -0.0409073
--0.612265 0.790652 -0.996706 0.0811004
-0.727083 -0.686549 0.962417 -0.271574
-0.846021 -0.533149 0.950229 0.311552
--0.478747 0.877953 0.941814 -0.336135
-0.642735 -0.766089 0.770465 0.637483
--0.939213 -0.343336 -0.882755 -0.469833
-0.994506 -0.104677 -0.487052 0.873373
--0.278311 -0.960491 -0.99749 -0.0708038
--0.808281 0.588797 0.992185 -0.124778
--0.783881 -0.620911 -0.525935 -0.850525
--0.775336 -0.631549 0.724731 -0.689032
-0.158864 -0.987301 -0.969895 -0.243522
--0.887118 0.461542 -0.660468 0.750855
--0.0565607 -0.998399 0.811495 0.58436
-0.712387 -0.701787 -0.732034 -0.681268
--0.98224 -0.187631 0.999677 0.025419
-0.690378 0.723449 0.694636 -0.719361
--0.972035 0.234838 0.142758 0.989758
--0.634599 0.772842 0.933735 -0.357965
--0.322272 0.946647 0.17299 0.984924
-0.161552 0.986864 -0.868627 0.495466
-0.696665 -0.717396 -0.104641 0.99451
--0.899105 -0.437733 0.243067 0.970009
--0.715041 -0.699082 -0.428008 0.903775
--0.997906 -0.0646733 0.982257 0.187541
-0.46762 0.883929 -0.0349905 0.999388
-0.180843 0.983512 0.786778 0.617236
-0.220149 0.975466 -0.978937 0.204162
--0.494822 0.868995 0.0732484 0.997314
-0.97822 -0.20757 -0.469453 -0.882957
-0.456186 0.889885 -0.969766 0.244037
--0.38411 -0.923287 -0.153889 -0.988088
-0.56874 -0.822517 -0.691599 -0.722282
-0.860384 0.509646 -0.99753 -0.0702412
-0.994494 0.10479 -0.477067 -0.878867
--0.264572 -0.964366 -0.0724108 -0.997375
--0.633104 -0.774067 0.847573 0.530678
-1 0.00011397 0.999935 0.0113968
--0.852632 0.522512 0.00161137 0.999999
-0.967494 0.252894 0.907166 0.420773
--0.78381 -0.621 -0.516207 -0.856464
-0.991068 0.133356 0.690199 0.72362
-0.403382 -0.915032 -0.777389 -0.629021
-0.98195 0.18914 0.984018 0.17807
-0.0770865 -0.997024 0.137238 0.990538
--0.354794 -0.934945 0.140544 0.990074
--0.929022 -0.370025 0.979174 0.203025
-0.774515 -0.632555 0.807885 0.58934
-0.564432 0.825479 -0.95987 0.280446
-0.875527 -0.48317 0.986964 -0.160938
-0.349202 0.937047 -0.440699 0.897655
--0.723451 0.690376 0.694818 -0.719186
-0.263325 -0.964707 0.0567773 0.998387
-0.0962072 -0.995361 -0.977853 -0.209292
-0.999927 0.0121042 0.352594 0.935776
--0.325165 0.945657 -0.131468 0.99132
-0.924818 -0.380411 0.243379 -0.969931
-0.168925 0.985629 -0.300181 0.953882
--0.994042 -0.109001 -0.0736912 -0.997281
--0.127045 0.991897 0.985153 0.171679
-0.369833 0.929098 0.983158 -0.182757
--0.356469 -0.934307 0.314837 0.949146
-0.964605 -0.263699 0.0180295 -0.999837
-0.974538 0.224222 -0.811953 -0.583723
-0.169466 -0.985536 -0.24739 -0.968916
-0.986927 -0.161166 -0.887326 0.461143
--0.0416036 -0.999134 -0.523396 0.852089
--0.87016 0.492769 0.304502 -0.952512
-0.986946 -0.161054 -0.892524 0.451001
-0.557532 0.830155 -0.852932 -0.522023
--0.966493 0.256692 0.677024 -0.735961
--0.873593 -0.486658 0.846993 0.531604
-0.441847 0.89709 -0.210947 -0.977498
--0.154984 0.987917 -0.989245 0.146265
--0.765778 -0.643105 0.738793 0.673932
-0.928482 -0.371379 0.939299 -0.343101
-0.978635 -0.205605 -0.283846 -0.95887
-0.47346 0.880815 0.586582 0.80989
-0.484206 -0.874954 0.961049 0.27638
-0.722096 0.691793 0.541366 0.840787
-0.84011 0.542416 0.709278 0.704929
-0.988959 0.148188 -0.671626 0.74089
--0.999998 -0.00196105 0.980833 0.194851
-0.744494 -0.667629 -0.663521 0.748157
-0.242646 -0.970115 0.811814 -0.583916
--0.999901 -0.0140651 0.163499 0.986543
-0.389265 0.921126 -0.654432 -0.756121
--0.14464 -0.989484 -0.36878 -0.929517
--0.155045 -0.987907 -0.990126 -0.140183
--0.286542 -0.958068 -0.705839 0.708372
-0.999842 -0.0177587 -0.203726 -0.979028
-0.860522 -0.509413 -0.999069 0.0431304
--0.792986 0.60924 -0.894573 -0.446923
-0.95977 -0.280788 -0.982542 0.186042
-0.952833 -0.303494 0.836373 0.54816
-0.466043 0.884762 -0.211722 0.97733
-0.90197 -0.4318 0.786042 -0.618173
--0.342873 -0.939382 -0.904836 0.42576
--0.841515 -0.540233 0.866449 0.499266
-0.820652 -0.571429 -0.422765 0.906239
-0.58867 -0.808373 0.99402 0.1092
-0.951993 0.306121 0.954047 -0.299657
--0.995006 0.0998194 -0.83984 0.542835
-0.985286 0.170913 -0.102942 -0.994687
--0.449966 0.893046 -0.899958 0.435978
-0.826148 0.563453 -0.986302 -0.164952
-0.978293 -0.207224 -0.437972 -0.898989
--0.256739 0.966481 0.673495 0.739192
--0.10515 0.994456 -0.444953 -0.895554
-0.292383 -0.956301 -0.17245 -0.985018
--0.853995 0.520282 -0.256895 0.966439
--0.627746 0.778418 0.315707 -0.948857
-0.430867 -0.902415 0.845612 0.533798
-0.855013 -0.518606 -0.440283 0.897859
-0.0523408 0.998629 0.500416 0.865785
--0.770898 -0.636958 0.998173 -0.060422
--0.862223 0.506529 -0.957763 -0.287559
--0.899489 0.436944 0.327149 -0.944973
--0.518758 0.854921 -0.42427 -0.905536
-0.634087 0.773262 0.907995 0.418981
-0.676363 0.736569 0.438478 0.898742
--0.503494 0.863999 -0.80011 0.599854
-0.939555 0.342397 -0.925221 -0.379428
--0.985093 -0.172022 0.00941819 -0.999956
--0.240638 0.970615 0.674543 -0.738236
-0.999155 0.0410978 -0.565843 -0.824513
--0.306898 -0.951743 0.975293 0.220917
-0.202063 0.979372 0.0738621 -0.997268
--0.303976 -0.95268 0.86304 0.505135
--0.255904 0.966702 0.734744 0.678344
-0.725465 0.688259 0.872538 0.488547
--0.949063 -0.315087 0.802718 0.596359
--0.539547 0.841956 0.904251 0.427001
--0.790543 -0.612406 -0.997992 0.0633427
--0.881246 -0.472659 0.510557 -0.859844
--0.509127 -0.860691 -0.99995 0.00995009
--0.308044 -0.951372 0.994769 0.102146
--0.960063 -0.279783 -0.9966 -0.0823976
-0.962554 -0.271089 -0.680817 -0.732454
-0.978489 -0.206299 -0.351149 -0.93632
--0.548263 0.836306 0.0907005 0.995878
--0.680974 0.732308 0.882771 -0.469804
--0.453655 0.891177 -0.999293 0.0375876
-0.518466 0.855098 -0.4549 0.890542
--0.202463 0.97929 0.0331496 0.99945
--0.9137 -0.406389 -0.532606 -0.846364
-0.144977 -0.989435 -0.400261 0.916401
--0.321471 -0.94692 0.255651 -0.966769
-0.999432 -0.0336935 -0.974032 0.22641
-0.770681 0.637221 0.999653 -0.0263515
-0.528376 -0.84901 0.637187 -0.770709
-0.700796 0.713361 -0.630576 -0.776128
--0.938591 0.345031 -0.784025 0.620729
-0.787138 -0.616778 -0.881968 0.471309
--0.567636 -0.82328 -0.782032 0.623238
--0.109032 -0.994038 -0.070614 0.997504
-0.811821 -0.583907 0.887656 0.460507
--0.609344 0.792906 -0.900394 0.435075
-0.951502 -0.307641 0.989563 0.144099
--0.80305 -0.595911 0.533465 0.845822
--0.61057 -0.791962 -0.95669 -0.291108
-0.902019 0.431697 0.793032 0.60918
-0.574381 0.818588 -0.0761915 0.997093
-0.996228 -0.0867729 -0.740784 -0.671743
--0.448711 -0.893677 -0.830027 -0.557723
--0.119258 -0.992863 0.818444 0.574586
--0.581891 -0.813266 0.747432 0.664338
--0.711997 0.702183 -0.768716 -0.63959
--0.163291 0.986578 -0.768317 -0.64007
--0.78057 -0.625069 -0.0222669 -0.999752
--0.551821 0.833963 -0.328926 0.944356
--0.735554 -0.677466 0.567745 -0.823205
-0.98929 -0.145962 -0.489344 -0.872091
--0.492872 -0.870102 0.293198 -0.956052
-0.19794 -0.980214 0.474831 0.880077
--0.0573554 0.998354 0.85539 -0.517985
-0.0967373 0.99531 -0.965326 0.261047
--0.941161 -0.337957 -0.99656 0.082876
-0.963799 -0.26663 -0.282091 -0.959388
-0.130218 0.991485 0.881155 -0.472828
--0.509982 -0.860185 -0.99403 0.109108
-0.282877 -0.959156 -0.919153 -0.3939
--0.616031 0.787722 -0.92261 -0.385735
-0.775455 0.631402 0.711618 -0.702567
--0.368923 -0.92946 0.996312 -0.0857988
-0.998197 0.060027 0.961915 -0.273349
-0.543089 -0.839675 0.650563 0.759452
--0.842217 -0.539138 0.923894 0.382649
--0.655841 0.754899 -0.747175 0.664627
-0.258431 -0.96603 0.534337 0.845271
-0.355065 0.934842 0.169213 0.98558
-0.998288 0.0584824 0.908293 -0.418334
-0.650142 -0.759813 -0.0911752 0.995835
--0.561308 0.827607 -0.995607 0.0936279
-0.999598 -0.0283626 -0.953862 -0.300245
--0.970753 -0.240081 0.631078 -0.775719
-0.888641 0.458603 -0.868646 -0.495433
--0.604724 -0.796435 -0.513483 -0.8581
-0.859753 -0.510709 -0.981262 0.192677
--0.597555 0.801828 0.350284 0.936644
--0.025798 0.999667 -0.846453 0.532463
--0.0485176 0.998822 0.140807 -0.990037
-0.982745 -0.184965 0.969921 0.243419
-0.120391 0.992726 0.878563 0.477626
-0.89299 -0.450076 -0.905242 -0.424896
-0.0132187 -0.999913 0.246321 0.969188
--0.997997 0.063255 0.998917 -0.0465262
-0.534351 0.845263 0.984772 0.173853
--0.350369 0.936612 -0.325797 -0.94544
--0.945003 0.327062 -0.326422 -0.945224
--0.768484 0.639869 0.949939 -0.312436
-0.984341 -0.176274 0.427007 0.904249
-0.0463837 0.998924 -0.0722912 0.997384
--0.0306287 -0.999531 -0.99694 -0.0781681
-0.874612 0.484823 0.939161 0.343478
-0.911348 -0.411638 0.0135497 0.999908
-0.0294254 -0.999567 -0.980339 0.197321
-0.882086 -0.471088 0.350128 0.936702
--0.989482 -0.144653 -0.370095 0.928994
-0.735274 0.67777 0.60134 -0.798993
--0.227126 -0.973865 -0.604681 0.796468
--0.216102 -0.976371 -0.978222 -0.20756
-0.694378 0.719611 0.211948 -0.977281
--0.88762 -0.460577 -0.738019 -0.67478
-0.929351 0.369196 0.993359 0.115059
-0.714508 0.699627 -0.495592 0.868555
-0.751084 0.660207 -0.989188 0.146656
-0.656546 0.754286 -0.805873 -0.592088
-0.125128 -0.992141 0.999785 -0.0207208
-0.982921 0.18403 0.942395 -0.334502
--0.99713 0.0757096 0.272291 -0.962215
-0.988582 0.150681 -0.835238 0.549888
--0.231502 0.972834 -0.198474 -0.980106
--0.965921 0.258838 0.498322 -0.866992
--0.0305684 0.999533 -0.996451 0.0841798
-0.23112 0.972925 -0.236777 0.971564
-0.246047 0.969258 0.963026 0.269409
--0.0327183 -0.999465 -0.991455 0.13045
--0.698878 0.715241 -0.40208 0.915605
--0.994026 -0.109147 -0.0590404 -0.998256
-0.357805 0.933796 0.446937 0.894565
-0.0794164 -0.996842 -0.0958831 0.995393
--0.9977 0.0677824 0.877461 -0.479649
--0.916195 0.400733 -0.924534 0.381099
--0.998806 -0.0488472 0.173397 -0.984852
--0.905463 -0.424425 0.988825 -0.149079
--0.670015 0.742348 -0.393591 -0.919286
--0.0782164 0.996936 0.0243439 0.999704
--0.998638 0.0521736 0.485858 0.874038
-0.770351 -0.63762 0.999677 -0.0254213
--0.733204 0.680008 0.813395 0.581711
-0.277627 0.960689 -0.989932 -0.141544
--0.789028 -0.614357 -0.983183 -0.182625
--0.998462 -0.0554394 0.740893 -0.671623
-0.196044 -0.980595 0.635077 0.772449
--0.506466 -0.86226 -0.95564 -0.294537
--0.674622 -0.738163 0.216161 0.976358
-0.794642 -0.607079 -0.741495 -0.670958
-0.317873 -0.948133 0.595733 0.803183
--0.816775 0.576956 0.236346 0.971669
-0.89279 -0.450473 -0.923218 -0.384276
--0.245178 0.969478 0.935047 -0.354523
--0.894386 0.447296 -0.731714 -0.681611
-0.231552 0.972822 -0.193397 0.981121
--0.0141149 -0.9999 0.158586 -0.987345
--0.419747 -0.907641 0.786495 0.617596
--0.892967 0.450122 -0.90743 -0.420204
-0.965688 -0.259703 0.418722 -0.908114
--0.893422 0.449218 -0.86034 -0.509721
-0.30213 -0.953267 0.7496 -0.661891
--0.988265 0.15275 -0.931252 -0.364376
--0.73915 -0.673541 0.0714602 -0.997443
--0.926262 -0.37688 0.586968 0.80961
-0.975638 -0.219385 -0.991909 0.126948
-0.947115 0.320893 0.314057 0.949404
-0.906747 0.421676 0.899125 -0.437692
--0.976517 -0.21544 -0.9619 0.273402
--0.872796 0.488085 0.749163 -0.662385
--0.491306 0.870987 0.459451 0.888203
-0.986427 0.164198 -0.70631 -0.707902
--0.361146 0.932509 0.732082 -0.681216
--0.23205 -0.972704 -0.142963 0.989728
-0.116116 0.993236 0.599 0.800749
-0.857848 -0.513903 -0.844178 0.536063
-0.177767 0.984073 0.558805 0.829299
-0.996726 0.0808558 -0.238126 0.971234
--0.877589 -0.479414 0.964621 -0.263642
-0.60648 -0.795099 -0.688901 0.724856
-0.841126 -0.54084 0.828227 -0.560393
--0.73351 0.679678 0.786408 0.617707
--0.0366214 0.999329 -0.867139 -0.498067
-0.507315 -0.861761 -0.97998 0.199097
--0.479093 -0.877764 0.95432 0.298785
--0.414242 -0.910167 0.29501 0.955494
-0.95581 0.293985 -0.00581367 -0.999983
--0.870915 0.491434 0.446346 -0.894861
--0.652228 0.758022 -0.358086 0.933689
--0.985836 0.167713 -0.414921 0.909857
--0.713405 0.700752 -0.625741 -0.780031
-0.242198 -0.970227 0.783996 -0.620766
--0.137975 0.990436 0.291202 0.956662
-0.597993 -0.801501 0.298498 0.95441
--0.832508 0.554013 -0.563155 -0.826352
-0.501077 -0.865403 -0.603597 0.79729
-0.407588 -0.913166 -0.417243 -0.908795
--0.96626 0.257568 0.607679 -0.794183
-0.819269 -0.573409 -0.193741 0.981053
--0.594749 0.803912 0.649813 0.760094
-0.717633 -0.696422 -0.0708045 -0.99749
-0.0969194 0.995292 -0.960389 0.278664
--0.718677 0.695344 0.0791031 -0.996866
-0.390249 0.920709 -0.731341 -0.682012
-0.945634 -0.325232 -0.138502 -0.990362
--0.77409 -0.633075 0.845623 -0.533781
-0.80793 0.589279 0.982983 0.183694
-0.488154 0.872757 0.743911 -0.668279
--0.720368 -0.693592 0.317062 0.948405
--0.426522 -0.904477 0.996636 -0.0819598
-0.989984 0.141179 -0.0280753 0.999606
--0.981042 -0.193795 0.794079 0.607815
-0.927612 0.373546 0.83439 0.551175
--0.177339 0.98415 0.522215 -0.852814
--0.664702 0.747109 -0.899195 -0.437547
--0.116526 -0.993188 0.631593 0.7753
-0.969202 -0.246268 0.968917 0.247385
--0.854967 0.518682 -0.432312 0.901724
-0.589571 0.807716 0.975694 -0.219136
--0.445464 0.8953 -0.577936 0.816082
-0.755868 -0.654724 -0.641064 -0.767487
--0.986612 -0.163086 -0.781464 -0.62395
-0.760753 0.649041 0.0534969 0.998568
-0.544171 0.838975 0.547546 -0.836776
--0.720701 0.693246 0.362239 -0.932085
--0.99291 -0.118865 0.795041 -0.606555
-0.998722 -0.050536 0.336656 0.941628
-0.3393 0.940678 -0.998216 0.0597057
-0.990026 -0.140887 0.00141378 -0.999999
-0.789245 -0.614079 -0.989011 0.147845
--0.95802 -0.2867 -0.694035 -0.719941
-0.612358 -0.79058 -0.997589 0.0693945
-0.687681 0.726013 0.908635 -0.417591
-0.887862 -0.460109 -0.772585 0.634911
-0.966867 0.255281 0.776906 0.629617
-0.886417 0.462887 -0.539414 -0.842041
--0.978569 -0.205918 -0.314411 0.949287
-0.630729 0.776003 0.648029 0.761616
-0.0287203 0.999587 -0.963994 -0.265925
-0.562106 0.827065 -0.999996 0.00279396
-0.432858 -0.901462 0.70827 0.705941
--0.112688 0.99363 0.292884 -0.956148
--0.391169 -0.920319 -0.795774 -0.605594
-0.738262 -0.674515 0.201876 0.979411
--0.957897 -0.287112 -0.662467 -0.749091
-0.947589 0.319492 0.45058 0.892736
--0.755947 -0.654633 -0.631834 0.775104
--0.999102 -0.0423699 -0.456562 -0.889692
--0.975872 0.218342 -0.999793 0.0203583
-0.0830739 -0.996543 -0.446624 0.894722
-0.482998 -0.875621 0.989925 0.141593
--0.594677 0.803965 0.656556 0.754277
--0.244484 0.969653 0.907282 -0.420522
-0.935757 -0.352646 -0.088432 0.996082
--0.998112 -0.061425 0.990655 -0.136389
--0.496009 -0.868317 -0.06331 -0.997994
--0.97104 0.238918 0.533872 0.845565
--0.999941 -0.010906 0.461938 0.886912
-0.648512 -0.761205 0.122783 0.992434
--0.927694 0.373342 0.846319 -0.532676
--0.795895 0.605435 -0.587987 -0.80887
--0.839525 0.543321 0.629277 -0.777181
--0.272924 0.962036 -0.807314 0.590122
--0.986875 -0.161484 -0.872043 -0.48943
--0.495396 0.868668 0.00727053 0.999974
--0.50947 0.860488 -0.998758 -0.0498287
--0.800035 -0.599954 0.0582717 0.998301
-0.663653 -0.74804 -0.951548 -0.307501
--0.989079 0.147384 -0.609273 -0.79296
-0.576729 -0.816935 0.209299 -0.977852
-0.991722 0.128406 0.952403 0.304842
--0.295269 0.955414 0.128253 -0.991742
-0.746741 0.665115 -0.87367 -0.486518
--0.269757 -0.962928 -0.573287 -0.819355
-0.426455 0.904509 0.997214 -0.0745975
--0.524339 -0.85151 0.214331 0.976761
-0.0520291 -0.998646 0.473155 -0.880979
-0.269745 -0.962932 -0.572253 0.820077
-0.48779 0.872961 0.77116 -0.636641
-0.167272 0.985911 -0.455122 0.890429
--0.937195 -0.348807 -0.478159 -0.878273
-0.999985 -0.00548062 0.853535 -0.521036
--0.89211 -0.451817 -0.970443 0.241329
-0.56735 -0.823476 -0.803159 -0.595765
-0.93381 -0.35777 0.443515 0.896267
-0.862673 0.505762 -0.92846 0.371432
--0.99645 -0.0841887 -0.543722 0.839266
--0.821289 0.570512 -0.521072 0.853513
--0.857106 -0.51514 -0.758318 -0.651885
--0.710294 0.703905 -0.899675 -0.43656
-0.548909 -0.835882 0.0136532 0.999907
-0.99405 -0.108924 -0.0814086 0.996681
-0.213863 -0.976864 -0.905431 0.424493
-0.654338 0.756202 -0.60109 -0.799181
--0.998593 -0.0530284 0.558797 -0.829304
-0.742623 0.66971 -0.431065 -0.902321
--0.984069 0.177788 0.560521 0.82814
-0.767094 0.641534 0.860457 0.509522
-0.993814 -0.111057 0.132713 0.991154
-0.947119 -0.320882 0.315172 -0.949035
-0.966498 -0.256675 0.678331 -0.734757
-0.999847 0.0174737 -0.175748 0.984435
-0.0269202 0.999638 -0.900776 -0.434285
-0.892442 0.451162 -0.95011 0.311915
--0.25289 -0.967495 0.907356 -0.420364
--0.892701 0.45065 -0.930662 -0.365879
--0.0837737 -0.996485 -0.508305 -0.861177
--0.979342 0.202209 0.0589881 -0.998259
-0.193144 0.98117 0.832623 -0.55384
-0.829029 -0.559206 -0.940245 -0.340498
--0.363177 -0.93172 0.862032 0.506854
-0.161226 -0.986918 -0.884549 -0.466447
-0.825951 -0.563742 -0.979944 0.199275
--0.0969731 0.995287 -0.958872 -0.28384
--0.721232 -0.692694 0.432541 0.901614
-0.569592 -0.821928 -0.613224 -0.789909
--0.587035 0.809562 0.995701 -0.0926212
-0.660355 0.750954 -0.991876 -0.12721
-0.00112029 0.999999 0.993731 -0.111795
-0.920189 -0.391475 -0.815437 -0.578846
--0.997646 -0.0685713 0.836831 0.547462
-0.836497 0.547972 0.125353 0.992112
-0.872073 -0.489377 0.643308 -0.765607
--0.280344 0.9599 -0.990086 -0.14046
-0.132974 0.99112 0.71753 -0.696528
--0.896796 0.442443 -0.275443 -0.961317
--0.851044 0.525095 0.300051 0.953923
--0.307064 -0.951689 0.979013 0.203797
--0.97177 -0.23593 0.252806 -0.967517
--0.787464 0.616361 -0.905664 0.423995
--0.596207 -0.802831 0.501967 -0.864887
--0.999771 0.0214036 -0.539404 -0.842047
--0.798114 0.602507 -0.258227 -0.966084
-0.78649 -0.617603 -0.827767 0.561072
--0.901894 -0.431957 0.775141 0.631789
-0.784757 0.619803 -0.640411 -0.768032
--0.423778 0.905766 0.975656 -0.219306
--0.354884 0.93491 0.150074 -0.988675
--0.893876 -0.448314 -0.804472 0.593991
--0.970561 -0.240855 0.690893 -0.722957
-0.228599 0.973521 -0.477748 0.878497
--0.0930681 0.99566 -0.994547 0.104289
--0.394183 0.919032 -0.94835 0.317226
-0.737626 0.67521 0.293103 -0.956081
--0.981942 -0.189182 0.983244 0.182292
-0.920905 -0.389787 -0.696215 -0.717833
-0.975119 -0.221681 -0.934955 0.354767
-0.729588 -0.683887 0.995902 0.0904393
-0.900836 0.43416 0.599243 0.800567
-0.222773 0.97487 -0.889433 0.457066
-0.403634 -0.91492 -0.759745 -0.650221
--0.868945 -0.494909 0.0631853 0.998002
--0.347852 0.937549 -0.564954 -0.825123
--0.095742 -0.995406 -0.986564 0.163374
-0.718667 -0.695355 0.0776206 -0.996983
--0.975479 -0.220093 -0.980092 -0.198544
-0.526272 0.850316 0.428797 0.903401
--0.24649 0.969145 0.974335 -0.225102
-0.0900745 0.995935 -0.919061 -0.394116
--0.3108 -0.950475 0.982458 -0.186483
--0.403241 -0.915094 -0.786979 0.61698
-0.745865 -0.666098 -0.802204 0.59705
-0.331073 0.943605 -0.68697 -0.726686
-0.873183 0.487393 0.799274 0.600967
-0.175231 -0.984527 0.329049 -0.944313
-0.109004 -0.994041 -0.0733865 -0.997304
-0.383148 0.923687 -0.0503022 -0.998734
-0.817493 0.575939 0.113945 -0.993487
-0.890656 0.454678 -0.997022 -0.0771135
-0.0716151 -0.997432 0.633706 0.773574
--0.654709 -0.755881 -0.639524 -0.768771
--0.239035 0.971011 0.544069 -0.83904
-0.986438 0.164133 -0.710926 -0.703267
-0.952754 -0.303742 0.850367 0.526191
--0.831955 0.554844 -0.642722 -0.766099
--0.937574 -0.347786 -0.570814 -0.82108
-0.759001 -0.651089 -0.214321 -0.976763
--0.688257 0.725467 0.872703 0.488251
--0.921889 0.387454 -0.494217 -0.869339
-0.966412 -0.256996 0.653534 -0.756897
--0.860562 -0.509346 -0.999374 -0.0353834
--0.0176165 0.999845 -0.189784 0.981826
--0.966949 -0.254971 0.796678 0.604404
-0.776885 -0.629642 0.535404 0.844596
-0.996938 -0.0781916 0.0268292 -0.99964
--0.872209 0.489133 0.664419 -0.747361
--0.896415 0.443215 -0.357057 -0.934083
-0.591148 0.806563 0.91458 -0.404405
--0.25905 -0.965864 0.479134 -0.877742
--0.522158 -0.852849 -0.0399799 0.9992
-0.582889 -0.812552 0.823122 -0.567865
--0.779396 0.626531 0.164481 0.98638
--0.95754 -0.288302 -0.564501 -0.825432
-0.959707 0.281003 -0.978119 -0.208044
--0.985922 0.167204 -0.461316 0.887236
--0.451632 0.892204 -0.965215 0.261458
-0.383941 -0.923358 -0.135702 0.99075
--0.532198 -0.84662 0.909318 0.416102
--0.883061 0.469258 0.149774 0.98872
-0.76179 -0.647825 0.211699 -0.977335
--0.882559 0.470201 0.254354 0.967111
-0.932851 0.360262 0.664315 -0.747453
-0.44695 0.894559 -0.704845 -0.709361
--0.947766 0.318967 0.499311 -0.866423
-0.998205 0.0598949 0.958214 -0.286053
--0.868183 -0.496245 -0.0904212 0.995904
-0.999533 0.0305642 -0.996416 0.0845922
-0.796636 -0.60446 -0.484771 -0.874641
-0.957542 -0.288294 -0.565162 0.82498
--0.933301 0.359096 0.565984 0.824416
-0.614535 -0.78889 -0.978828 -0.204686
--0.970866 -0.239625 0.593999 -0.804466
--0.342599 -0.939482 -0.916848 0.399237
--0.795367 0.606128 -0.656098 -0.754676
--0.905129 0.425136 0.997478 0.0709743
--0.41501 -0.909817 0.374495 0.927229
-0.39725 -0.917711 -0.999939 -0.0110789
-0.622945 -0.782266 -0.289861 -0.957069
-0.488492 -0.872568 0.717482 0.696577
--0.989291 -0.145956 -0.488829 0.872379
--0.99243 -0.122812 0.967892 -0.251365
--0.42427 -0.905536 0.986137 0.165934
-0.862496 -0.506064 -0.940901 -0.338682
-0.914884 0.403717 -0.753862 -0.657033
--0.152717 -0.98827 -0.930038 -0.367464
--0.765738 0.643153 0.734543 -0.678562
--0.773389 0.633932 0.899425 0.437075
--0.971161 -0.238425 0.490273 -0.871569
-0.95203 0.306004 0.950284 -0.311384
-0.385472 -0.92272 -0.297435 0.954742
--0.894278 0.447512 -0.748025 -0.66367
--0.984107 0.177579 0.542851 0.839829
-0.692009 -0.721889 0.516034 0.856568
--0.800024 -0.599968 0.05646 0.998405
-0.876061 -0.482201 0.998699 -0.0510028
-0.734004 -0.679145 0.739495 0.673163
-0.396835 0.91789 -0.99942 -0.0340479
-0.89039 -0.455199 -0.990804 0.135302
-0.174218 -0.984707 0.23029 -0.973122
-0.644609 0.764513 0.592923 -0.805259
--0.667541 0.744573 -0.672325 -0.740256
--0.669763 -0.742575 -0.424599 0.905382
--0.442632 -0.896703 -0.295607 -0.95531
-0.928212 0.372052 0.911957 0.410285
-0.982803 0.184659 0.961848 -0.273585
-0.781861 0.623453 -0.22706 -0.973881
--0.0467177 -0.998908 -0.0389041 0.999243
-0.559881 -0.828573 -0.96482 0.262911
-0.974762 -0.223246 -0.866255 0.499602
--0.894437 -0.447194 -0.723962 0.689839
--0.67482 0.737982 0.242273 -0.970208
--0.9948 0.101843 -0.712859 0.701307
--0.0254676 0.999676 -0.828394 0.560146
--0.208563 0.978009 -0.556547 0.830816
--0.951243 -0.308443 0.998179 -0.060316
-0.991839 -0.127499 0.976271 -0.216552
--0.469304 -0.883037 0.154953 0.987922
-0.931212 -0.364477 0.92415 0.38203
--0.993634 -0.112657 0.289898 -0.957057
--0.176579 -0.984286 0.454871 0.890557
-0.022646 -0.999744 -0.639614 0.768696
-0.939 -0.343917 -0.852022 0.523506
-0.348561 0.937286 -0.500988 0.865454
--0.706033 -0.708179 -0.988503 -0.151199
--0.957562 -0.288229 -0.570777 -0.821105
-0.757321 0.653043 -0.456195 0.88988
--0.999187 -0.0403076 -0.629212 -0.777234
--0.115432 -0.993315 0.542489 0.840063
-0.971575 0.236731 0.331598 -0.943421
--0.213767 0.976885 -0.901245 0.43331
-0.684994 -0.728549 0.998123 0.0612492
--0.824829 0.565382 -0.921315 0.388818
-0.868584 -0.495542 -0.00964373 -0.999953
--0.956492 -0.291757 -0.236541 -0.971622
--0.975968 0.217915 -0.999726 -0.0234163
-0.945153 -0.326629 -0.282848 -0.959165
--0.565947 -0.824442 -0.892535 0.450979
-0.263272 0.964722 0.0622917 -0.998058
-0.258537 -0.966001 0.525072 0.851058
--0.735717 -0.67729 0.547853 -0.836574
-0.195938 -0.980616 0.643403 0.765528
-0.538426 0.842673 0.952914 -0.303241
-0.800869 0.59884 0.196154 0.980573
-0.975308 0.220849 -0.961798 -0.273759
--0.936438 0.350834 -0.278404 0.960464
--0.577112 -0.816665 0.254941 0.966957
-0.995506 0.0946959 -0.998259 -0.0589832
-0.749274 0.662261 -0.992003 -0.126214
--0.83507 -0.550144 -0.133802 0.991008
--0.978501 -0.206244 -0.345844 0.938292
-0.519548 -0.854441 -0.338833 -0.940847
--0.568914 0.822397 -0.676203 -0.736716
--0.989743 0.142859 -0.196535 -0.980497
-0.98195 0.18914 0.984011 0.178109
-0.984076 -0.177746 0.557038 0.830487
-0.988916 0.148476 -0.692913 0.721021
-0.620135 0.784495 -0.607396 0.794399
--0.990441 0.137936 0.294988 -0.955501
-0.033331 -0.999444 -0.981601 -0.190945
-0.416794 0.909001 0.548041 0.836451
-0.0769764 -0.997033 0.148172 0.988962
--0.705313 -0.708896 -0.968063 -0.250709
--0.857716 -0.514123 -0.830146 -0.557547
--0.427212 -0.904152 0.987487 -0.157702
-0.467801 0.883834 -0.0146073 0.999893
-0.949139 0.314859 0.816862 0.576832
--0.699102 -0.715022 -0.430571 -0.902557
-0.463919 -0.885877 -0.437893 -0.899027
--0.0538696 0.998548 0.626596 -0.779344
--0.871456 0.490474 0.542047 -0.840348
--0.941309 0.337547 -0.992004 -0.126205
-0.968637 0.248479 0.999763 -0.0217554
--0.882524 -0.470268 0.261695 -0.96515
--0.956001 -0.293363 -0.0708324 -0.997488
-0.889843 0.456266 -0.967526 -0.25277
-0.991414 0.130757 0.854136 0.52005
-0.312141 0.950036 0.94647 -0.322792
-0.842638 0.53848 0.950933 0.309398
-0.656245 0.754548 -0.781667 -0.623696
-0.261997 -0.965069 0.19325 0.98115
--0.713464 -0.700692 -0.61918 0.785249
-0.985668 -0.168699 -0.321948 0.946757
-0.644616 0.764506 0.592152 -0.805826
-0.806246 0.59158 0.891625 0.452774
-0.999784 0.020775 -0.485426 0.874278
-0.77024 0.637755 0.999079 0.0428989
-0.709474 0.704731 -0.944278 0.329148
-0.603703 0.797209 -0.39968 -0.916655
--0.850846 -0.525415 0.335706 -0.941967
-0.727987 -0.685591 0.989754 -0.142786
--0.473044 0.881039 0.547696 -0.836677
--0.589351 0.807877 0.981311 0.192428
--0.999471 -0.0325116 -0.993941 -0.109913
-0.8587 -0.512478 -0.921154 0.389197
-0.982221 0.187728 0.999378 0.0352647
--0.438819 -0.898576 0.12442 -0.99223
-0.976384 -0.216044 -0.976958 -0.213431
--0.552444 -0.83355 -0.398475 -0.917179
--0.999604 -0.0281271 -0.946524 0.322633
-0.163133 0.986604 -0.778494 0.627652
-0.890265 0.455442 -0.986742 -0.162296
-0.95043 -0.310937 0.979674 -0.200598
--0.0871342 0.996197 -0.764655 0.64444
--0.5715 -0.820602 -0.414866 0.909882
--0.99983 0.0184355 -0.269487 -0.963004
--0.532066 0.846703 0.902719 -0.43023
--0.459294 -0.888285 -0.827537 0.561411
--0.329603 -0.94412 -0.565911 -0.824466
--0.904272 0.426957 0.991537 -0.129821
-0.368844 -0.929491 0.997008 0.0772945
--0.997495 0.0707329 0.699562 -0.714572
-0.944331 0.328998 -0.511998 0.858987
-0.206753 -0.978393 -0.394164 0.91904
--0.697077 -0.716996 -0.161573 -0.986861
-0.566734 0.823901 -0.845437 0.534075
-0.227034 -0.973887 -0.612159 -0.790734
--0.0796491 -0.996823 -0.11909 -0.992884
--0.178545 0.983932 0.622539 -0.782589
-0.913453 -0.406945 -0.480163 0.877179
--0.455976 0.889992 -0.975242 -0.221139
-0.544596 0.838698 0.504417 -0.86346
--0.0735698 0.99729 0.470933 0.882169
--0.450274 -0.89289 -0.914463 -0.40467
--0.517041 -0.855961 -0.596266 0.802787
-0.447915 0.894076 -0.77714 -0.629328
--0.274649 -0.961545 -0.899623 -0.436666
--0.542258 0.840212 0.722361 0.691516
-0.630496 0.776192 0.624915 0.780693
--0.649768 0.760133 -0.042024 0.999117
-0.565676 -0.824627 -0.906838 -0.421479
--0.66294 0.748673 -0.976496 -0.215536
--0.924662 0.380788 0.20362 -0.97905
-0.281229 -0.959641 -0.972953 -0.231002
--0.68806 -0.725653 0.885582 -0.464482
-0.84092 0.541159 0.806346 0.591444
--0.26349 0.964662 0.0397422 0.99921
-0.980506 -0.196487 0.599598 -0.800301
-0.0944743 -0.995527 -0.999324 -0.0367502
-0.997604 -0.0691894 0.801324 -0.59823
--0.802753 0.596311 0.490628 -0.871369
--0.890488 -0.455007 -0.993494 -0.113882
--0.990211 0.139579 0.133097 -0.991103
--0.95425 0.299011 0.497294 0.867582
--0.629287 0.777173 0.496262 -0.868173
-0.790331 0.61268 -0.999586 0.0287877
--0.787161 -0.616747 -0.883785 -0.467894
-0.614009 0.789299 -0.990285 0.139049
-0.547784 -0.83662 0.147623 0.989044
-0.747381 -0.664396 -0.916359 0.400358
-0.882069 0.47112 0.353527 -0.935424
-0.494809 0.869002 0.0747477 -0.997202
-0.964249 0.264999 -0.116533 0.993187
--0.534737 0.845018 0.99169 -0.128652
-0.553124 -0.833099 -0.471892 0.881656
--0.271727 -0.962374 -0.727832 -0.685755
--0.995028 -0.0995992 -0.851646 -0.524118
--0.952977 -0.303043 0.809515 -0.5871
-0.955945 0.293547 -0.0515471 -0.998671
--0.550053 -0.83513 -0.123031 -0.992403
-0.849567 -0.527481 0.552562 0.833472
-0.782823 -0.622245 -0.374174 0.927359
-0.989891 0.141831 -0.0937583 0.995595
--0.584704 0.811247 0.928523 -0.371275
--0.376979 -0.926222 0.578275 -0.815842
--0.578185 -0.815906 0.379405 0.92523
--0.930703 0.365776 0.968299 0.249793
-0.992821 -0.119608 0.838179 0.545395
--0.727229 -0.686395 0.967954 0.251128
-0.276213 0.961097 -0.958465 -0.28521
-0.982166 -0.188014 0.997925 -0.0643857
-0.99309 0.117351 0.69373 -0.720235
-0.191342 -0.981523 0.919749 0.392507
--0.946309 0.323264 0.069008 -0.997616
--0.982746 0.184963 0.969851 0.243699
-0.642405 0.766366 0.7972 -0.603716
--0.945955 -0.324298 -0.0402606 0.999189
-0.887654 0.46051 -0.743114 -0.669165
--0.21045 0.977605 -0.705509 0.708701
--0.789493 0.613759 -0.994185 0.107684
-0.969377 -0.245578 0.948865 0.315683
--0.6462 0.763168 0.41352 0.910495
--0.924006 -0.382378 0.0330698 0.999453
-0.999798 0.0200864 -0.424107 0.905612
--0.299344 -0.954145 0.52722 0.849729
--0.829648 0.558286 -0.89678 -0.442477
--0.252341 -0.967638 0.929707 -0.3683
-0.202823 0.979215 -0.00364682 -0.999993
-0.959821 -0.280615 -0.985735 0.168307
-0.0428233 -0.999083 -0.415734 -0.909486
-0.706208 -0.708004 -0.991948 0.12665
-0.667413 -0.744688 -0.684959 -0.728581
--0.588151 -0.808751 0.998977 -0.045229
-0.799486 -0.600685 -0.0330884 -0.999452
-0.213887 0.976858 -0.906505 -0.422196
--0.527362 0.849641 0.540784 -0.841162
--0.952353 -0.304998 0.91217 -0.409812
--0.556377 -0.83093 -0.772306 -0.635251
--0.421952 0.906618 0.912039 -0.410103
-0.483229 0.875494 0.985854 -0.167609
-0.644926 -0.764245 0.559048 0.829135
--0.24397 0.969783 0.883742 -0.467975
-0.377149 0.926152 0.563198 -0.826322
--0.626723 -0.779242 0.188743 0.982026
--0.0826249 -0.996581 -0.405874 -0.913929
--0.541946 -0.840414 0.747592 -0.664158
-0.194574 -0.980888 0.743331 0.668924
--0.24503 0.969515 0.929529 -0.36875
--0.0940414 -0.995568 -0.999977 -0.00671663
-0.917973 0.396644 -0.998494 0.0548679
--0.401599 -0.915815 -0.884415 0.466701
--0.335651 -0.941986 -0.946723 -0.322049
--0.8959 0.444255 -0.462854 -0.886435
-0.0208928 0.999782 -0.495693 -0.868498
--0.316662 -0.948538 0.693163 -0.720781
-0.692066 0.721834 0.509203 -0.860646
--0.575498 -0.817803 0.0602371 0.998184
--0.837935 0.54577 0.378975 -0.925407
--0.566464 0.824086 -0.862498 -0.506061
--0.781863 -0.623451 -0.22738 -0.973806
-0.509386 0.860538 -0.999198 0.0400512
-0.183415 0.983036 0.919645 0.392751
--0.986101 0.166145 -0.553751 0.832682
-0.396365 -0.918093 -0.996364 0.0852029
-0.737132 0.675748 0.362106 -0.932137
--0.373215 -0.927745 0.853533 -0.521039
-0.571022 0.820935 -0.467148 0.884179
--0.495908 -0.868375 -0.0516994 -0.998663
--0.563243 0.826291 -0.990179 -0.139806
--0.985218 0.171304 -0.063452 0.997985
-0.52062 -0.853788 -0.218353 -0.97587
-0.26824 0.963352 -0.43764 -0.89915
-0.0742364 -0.997241 0.410957 0.911655
-0.98709 0.160168 -0.929359 -0.369178
-0.582572 -0.812779 0.800388 -0.599483
--0.999965 0.00841429 0.666391 -0.745603
--0.400341 -0.916366 -0.939974 0.341246
--0.683891 -0.729584 0.995961 0.0897841
-0.236864 -0.971543 0.344489 -0.938791
--0.874656 0.484744 0.942245 -0.334925
--0.338408 -0.940999 -0.999387 -0.0350026
--0.984878 0.173248 0.133464 0.991054
-0.750201 0.66121 -0.999907 0.0136323
-0.721224 0.692702 0.431543 0.902093
--0.193787 -0.981044 0.794571 -0.607172
-0.389622 -0.920975 -0.683273 0.730163
--0.000880563 1 0.996126 0.0879426
--0.690777 0.723068 0.653932 0.756553
-0.176162 0.984361 0.416755 0.909019
--0.823587 -0.567189 -0.814652 -0.579951
-0.99089 -0.134675 0.588045 -0.808828
--0.757346 0.653014 -0.452828 -0.891598
-0.406509 -0.913647 -0.521414 -0.853304
--0.954742 0.297434 0.347866 0.937544
-0.299343 0.954146 0.527148 0.849773
-0.917046 -0.398781 -0.984203 0.177043
-0.632267 0.77475 0.785413 0.618972
--0.61236 0.790579 -0.997608 0.0691238
--0.801062 -0.598582 0.22769 0.973734
--0.99629 0.0860642 -0.691163 -0.722699
-0.46788 -0.883792 -0.00568425 -0.999984
--0.928111 0.372303 0.900521 -0.434813
--0.350154 -0.936692 -0.347334 0.937742
--0.84662 -0.532198 0.909304 -0.416132
--0.97576 0.218843 -0.99743 0.071644
--0.965314 -0.261093 0.284158 0.958777
-0.851068 0.525056 0.295682 -0.955286
-0.591178 0.806541 0.91311 -0.407713
-0.469681 0.882836 0.196928 0.980418
-0.711701 -0.702482 -0.794955 -0.606669
--0.908043 -0.418877 0.72382 -0.689989
-0.671804 -0.740729 -0.16249 -0.98671
--0.579236 0.81516 0.495143 -0.868811
--0.404249 -0.914649 -0.714346 0.699792
-0.997626 -0.0688714 0.819983 -0.572389
-0.911956 0.410288 -0.134091 -0.990969
--0.999873 0.015936 -0.0228691 -0.999738
-0.067993 0.997686 0.867143 -0.49806
--0.926624 0.375989 0.662034 -0.749474
--0.191827 -0.981429 0.89925 -0.437435
-0.509879 -0.860246 -0.995269 -0.0971548
--0.867546 0.497357 -0.216889 -0.976196
-0.786166 0.618015 -0.797221 -0.603687
--0.578691 -0.815547 0.436045 0.899925
-0.680352 -0.732885 0.839779 -0.542929
--0.354344 0.935115 0.0927433 -0.99569
--0.855911 -0.517124 -0.588483 -0.80851
-0.997968 0.0637238 0.995631 0.0933766
--0.522296 -0.852764 -0.0236956 0.999719
-0.376097 0.92658 0.653281 -0.757115
--0.999749 0.0224019 -0.62066 -0.78408
--0.998038 0.0626107 0.999838 0.0180122
--0.694028 -0.719948 0.25909 -0.965853
-0.37105 0.928613 0.95084 -0.309682
-0.87828 0.478146 0.916652 -0.399687
-0.834761 0.550613 -0.189227 0.981933
--0.115726 -0.993281 0.567105 0.823646
-0.496423 0.868081 -0.110778 -0.993845
-0.0493995 0.998779 0.227563 0.973763
-0.822551 -0.568692 -0.695838 0.718199
-0.963116 0.269086 -0.514872 0.857267
-0.373509 -0.927627 0.8366 0.547814
-0.131347 -0.991336 0.821721 0.56989
--0.777219 0.62923 0.489868 0.871796
--0.999443 0.0333633 -0.980978 0.194118
-0.0627601 -0.998029 0.999995 -0.00304395
--0.966955 0.254946 0.798236 -0.602345
-0.998785 -0.0492862 0.216501 0.976282
-0.999986 -0.00524401 0.865623 -0.500697
-0.800147 -0.599804 0.0770188 -0.99703
--0.239964 -0.970782 0.621748 0.783217
-0.505361 -0.862908 -0.910173 0.414229
--0.395849 0.918316 -0.990001 0.14106
-0.411306 -0.911497 -0.0228533 -0.999739
--0.99619 0.0872118 -0.769652 -0.638464
-0.403704 0.91489 -0.754796 0.655959
-0.706611 0.707602 -0.99755 -0.0699639
-0.897749 0.440508 -0.0632768 0.997996
-0.344583 0.938756 -0.81275 0.582613
-0.234357 -0.972151 0.0935818 -0.995612
--0.0705256 0.99751 0.71426 0.69988
--0.365527 -0.930801 0.961256 0.275656
--0.17303 0.984917 0.111499 -0.993764
-0.767102 -0.641525 0.861039 -0.508538
-0.728725 -0.684806 0.999367 -0.0355787
--0.622903 0.782299 -0.294988 -0.955501
-0.993579 -0.113144 0.336419 0.941712
--0.764538 -0.644579 0.59605 0.802947
--0.988322 -0.152379 -0.916942 0.399021
-0.162088 0.986776 -0.840448 0.541892
--0.995438 -0.0954125 -0.99143 -0.130639
--0.910866 -0.412703 0.13004 -0.991509
-0.975901 0.218212 -0.999975 -0.00706243
--0.225334 0.974282 -0.740229 -0.672354
-0.967627 -0.252383 0.928096 -0.37234
--0.982638 -0.185531 0.982325 -0.187185
-0.958219 0.286035 -0.742273 -0.670098
--0.871308 0.490736 0.516563 -0.856249
--0.990588 -0.136875 0.39542 0.9185
-0.959706 0.281007 -0.978044 -0.208398
--0.40283 0.915275 -0.813921 -0.580975
-0.10483 0.99449 -0.473533 0.880776
-0.72748 -0.686129 0.976514 -0.215456
--0.681052 -0.732235 0.887735 0.460355
-0.949592 0.313488 0.891368 0.453281
--0.66487 0.746959 -0.889136 -0.457642
-0.394971 -0.918694 -0.972033 0.234843
-0.449168 0.893447 -0.85747 -0.514534
--0.925927 0.377701 0.512987 -0.858396
-0.998529 0.0542153 0.653197 -0.757188
-0.973831 -0.227274 -0.592519 0.805556
--0.311459 -0.950259 0.967181 -0.254089
--0.314525 -0.949249 0.836613 -0.547794
-0.0553444 0.998467 0.734468 0.678643
--0.848537 -0.529137 0.703567 -0.710629
--0.879254 -0.476353 0.816593 -0.577213
--0.815574 -0.578652 0.431785 -0.901977
--0.902957 -0.429732 0.905902 0.423488
-0.365176 0.930938 0.950202 0.311633
-0.717876 0.696171 -0.0360143 0.999351
-0.277691 -0.960671 -0.990848 0.134981
--0.274687 -0.961534 -0.901348 -0.433096
--0.366577 -0.930388 0.986182 0.165664
-0.480629 -0.876924 0.991777 -0.127979
-0.998701 -0.0509567 0.37601 0.926615
--0.589524 -0.807751 0.976955 -0.213444
--0.634981 0.772528 0.950291 -0.311363
-0.97155 0.236836 0.341821 -0.939765
-0.91005 0.414499 0.321898 -0.946774
-0.734745 -0.678344 0.661751 0.749724
-0.865849 0.500305 -0.530161 0.847897
--0.745976 0.665973 -0.812052 0.583585
-0.751629 0.659586 -0.9737 0.227835
-0.973162 -0.230122 -0.335025 0.942209
-0.995697 0.0926672 -0.989543 0.144237
-0.506969 0.861964 -0.971198 -0.238274
--0.475134 0.879913 0.729078 -0.684431
-0.478404 -0.87814 0.927996 -0.372591
--0.542405 0.840117 0.710173 0.704027
-0.107595 -0.994195 -0.213505 -0.976942
-0.525309 -0.850911 0.324042 -0.946043
--0.337274 0.941407 -0.987925 0.154935
--0.978255 0.207408 -0.454728 -0.89063
--0.97295 -0.231016 -0.247139 -0.96898
--0.95863 -0.284655 -0.830744 -0.556654
-0.939832 0.341637 -0.95284 -0.303475
-0.745425 0.666589 -0.76112 -0.648611
-0.617118 0.786871 -0.860792 0.508957
--0.701815 -0.712359 -0.734661 -0.678434
--0.348342 0.937367 -0.521089 -0.853502
--0.104784 0.994495 -0.477626 -0.878563
--0.87923 0.476397 0.819513 0.57306
-0.996995 0.0774601 0.100035 0.994984
-0.963677 -0.267069 -0.32548 -0.945549
--0.00481902 0.999988 0.886114 0.463467
-0.999647 0.0265559 -0.884353 0.466819
--0.783836 -0.620967 -0.519801 -0.854287
--0.769459 -0.638697 0.986373 0.164525
-0.964918 0.262553 0.136409 0.990653
--0.45594 -0.890011 -0.97614 0.217142
--0.998612 0.0526783 0.529385 0.848382
-0.704117 0.710084 -0.91229 -0.409545
-0.932843 0.360283 0.665956 -0.745991
--0.785331 -0.619076 -0.708753 -0.705456
-0.848626 0.528994 0.691517 -0.72236
-0.895443 0.445176 -0.551392 0.834246
-0.135482 -0.99078 0.520247 0.854016
--0.86868 0.495374 0.00976406 -0.999952
-0.819311 -0.57335 -0.200858 0.97962
-0.758885 0.651225 -0.231784 0.972767
-0.399032 0.916937 -0.97898 0.203956
--0.0574778 -0.998347 0.861676 0.507458
--0.869019 0.494778 0.0782701 -0.996932
--0.580535 -0.814236 0.626819 0.779165
--0.174711 0.98462 0.278763 -0.96036
-0.973909 -0.226938 -0.619969 0.784626
--0.267432 -0.963577 -0.360801 -0.932643
--0.786571 0.6175 -0.835072 0.55014
-0.779587 0.626294 0.134323 -0.990938
--0.498726 0.86676 -0.36767 0.929956
--0.304828 -0.952407 0.904693 0.426064
--0.704534 0.70967 -0.934757 0.355287
-0.0255725 -0.999673 -0.834231 0.551415
--0.230139 -0.973158 -0.333425 0.942776
--0.489412 0.872053 0.640186 0.76822
-0.999538 0.0303897 -0.994787 0.101979
--0.204214 -0.978926 -0.14524 -0.989396
-0.925135 -0.379638 0.323511 -0.946224
--0.749693 -0.661785 -0.998009 -0.0630784
-0.0599699 -0.9982 0.960336 -0.278845
--0.759688 -0.650288 -0.110327 0.993895
-0.783514 0.621374 -0.474816 -0.880085
-0.751032 -0.660266 -0.990305 -0.138913
--0.474382 -0.880319 0.667964 0.744193
--0.230641 -0.973039 -0.284334 0.958725
-0.986622 -0.163027 -0.785157 0.619296
--0.0328844 -0.999459 -0.989151 0.146903
--0.995315 0.0966848 -0.96669 0.255949
--0.776299 0.630365 0.611601 0.791167
--0.599982 -0.800014 0.0547687 -0.998499
--0.818293 -0.574801 -0.024915 -0.99969
--0.887773 -0.460281 -0.760108 -0.649797
--0.764205 0.644973 0.553889 -0.83259
-0.995512 0.0946403 -0.998573 -0.0534072
-0.140606 0.990066 0.0298483 -0.999554
--0.501538 -0.865136 -0.645182 -0.764029
-0.991015 -0.133748 0.660989 -0.750396
-0.916402 -0.400259 -0.942996 0.332803
-0.928716 0.370792 0.959097 0.283078
-0.856349 0.516398 -0.65481 -0.755794
--0.110104 0.99392 0.0372193 -0.999307
-0.0700458 -0.997544 0.747079 0.664735
--0.969799 0.243906 0.880612 0.473839
-0.990779 0.135485 0.519984 0.854176
--0.986888 0.161408 -0.875792 0.482689
-0.261933 -0.965086 0.199743 0.979848
-0.986204 0.165532 -0.60438 -0.796696
-0.359543 0.933129 0.604771 0.7964
--0.12406 -0.992275 0.991776 0.12799
--0.629804 -0.776754 0.552922 0.833233
-0.953011 -0.302936 0.802855 0.596174
--0.551018 0.834493 -0.236628 0.9716
--0.010806 -0.999942 0.470779 -0.882251
-0.515723 -0.856755 -0.712255 -0.70192
-0.996013 0.0892033 -0.881118 0.472897
--0.97049 0.241142 0.711978 0.702202
-0.369149 -0.92937 0.993929 0.11002
-0.0564018 -0.998408 0.802088 -0.597206
-0.942628 -0.333844 -0.86799 -0.496581
-0.299272 0.954168 0.520844 0.853652
--0.83258 0.553905 -0.552381 -0.833592
--0.96324 -0.268642 -0.474801 0.880093
-0.1735 -0.984834 0.158803 -0.98731
-0.279008 -0.960289 -0.999998 -0.00181128
--0.933492 -0.358597 0.521127 -0.853479
-0.999445 0.0333031 -0.98213 -0.188202
--0.970713 0.240241 0.643798 0.765196
--0.973067 -0.230522 -0.295989 -0.955191
-0.929223 -0.369518 0.98878 -0.149382
--0.990596 -0.136817 0.400854 0.916142
--0.714243 -0.699897 -0.528112 0.849175
-0.26496 0.964259 -0.112477 -0.993654
--0.205868 0.97858 -0.309522 0.950892
-0.863381 0.504552 -0.867433 0.497554
-0.131874 0.991266 0.79027 -0.612759
-0.0452181 -0.998977 -0.187908 -0.982187
-0.713084 -0.701079 -0.660791 -0.75057
--0.034032 0.999421 -0.965806 -0.259265
-0.948432 -0.316981 0.668572 -0.743648
--0.784128 -0.6206 -0.559291 -0.828971
-0.797737 -0.603005 -0.317987 -0.948095
-0.807841 -0.5894 0.98011 -0.198457
-0.949955 -0.312388 0.937773 -0.34725
--0.61159 -0.791175 -0.98616 -0.165798
--0.0883494 -0.99609 -0.837389 -0.546607
-0.974034 -0.226403 -0.662075 0.749438
-0.784328 0.620347 -0.585701 -0.810527
--0.95835 -0.285597 -0.772168 -0.635418
--0.171106 -0.985253 -0.0834731 0.99651
-0.946428 0.322914 0.10589 0.994378
--0.0143004 -0.999898 0.140247 -0.990117
-0.688195 0.725525 0.876792 -0.48087
--0.82489 -0.565294 -0.925422 -0.378939
--0.987214 -0.159399 -0.955281 -0.295701
-0.888726 -0.458438 -0.877661 0.479282
-0.567316 0.8235 -0.805678 0.592354
--0.981358 -0.192188 0.882559 0.470202
--0.752563 0.658521 -0.93178 -0.363022
--0.362201 -0.9321 0.804283 0.594247
--0.982918 0.184045 0.942896 0.333088
-0.835583 -0.549365 -0.0409276 -0.999162
--0.393675 0.91925 -0.929371 0.369148
--0.437901 -0.899023 0.22492 -0.974377
-0.365578 0.930781 0.962764 0.270345
--0.803701 0.595033 0.622496 -0.782623
-0.833424 -0.552634 -0.419311 -0.907843
-0.946359 -0.323116 0.0846182 -0.996413
--0.155941 0.987766 -0.998753 0.0499244
-0.523951 0.851748 0.169601 0.985513
-0.795136 -0.606431 -0.684407 -0.7291
-0.735285 -0.677758 0.59998 0.800015
-0.931584 0.363527 0.880428 -0.474179
-0.284913 -0.958553 -0.815489 -0.578772
-0.486764 -0.873533 0.84045 0.541889
--0.282134 -0.959375 -0.946861 0.321643
--0.979977 -0.199111 0.366521 0.93041
-0.276354 -0.961056 -0.962553 0.271094
-0.37386 -0.927485 0.815277 0.57907
-0.882295 0.470696 0.308183 -0.951327
--0.994169 -0.107836 -0.189801 -0.981823
-0.653329 -0.757074 -0.489485 0.872012
-0.458031 -0.888936 -0.898703 -0.438558
--0.605944 -0.795507 -0.638545 -0.769584
--0.966894 0.25518 0.783419 -0.621494
--0.59387 0.804561 0.728832 0.684693
--0.90321 -0.4292 0.929274 0.369391
--0.758675 -0.65147 -0.26304 0.964785
-0.737426 -0.675428 0.321292 0.94698
-0.962359 -0.271782 -0.731782 -0.681539
--0.332443 0.943124 -0.784879 0.619649
--0.60052 0.79961 -0.0124817 0.999922
-0.654822 -0.755783 -0.651017 0.759063
--0.736092 -0.676882 0.500701 -0.86562
-0.981836 0.189732 0.971494 0.237064
-0.942857 0.333199 -0.831984 0.554799
-0.994365 0.106012 -0.365771 -0.930705
-0.923138 -0.384469 -0.192141 -0.981367
-0.999943 0.0106737 0.482408 0.875947
--0.259777 0.965669 0.41178 0.911283
-0.81115 0.584838 0.934562 -0.355799
-0.801564 -0.597909 0.308489 -0.951228
-0.463479 0.886108 -0.481981 0.876182
-0.54305 0.839701 0.654103 -0.756406
--0.344752 -0.938694 -0.802114 0.597171
-0.99965 0.0264609 -0.879874 0.475207
-0.652375 -0.757896 -0.376052 0.926599
-0.150945 0.988542 -0.849606 -0.527418
-0.301687 -0.953407 0.7181 -0.69594
--0.459041 -0.888415 -0.843153 0.537674
--0.332125 0.943235 -0.763581 0.645712
--0.40274 0.915315 -0.819586 -0.572957
--0.972501 -0.232899 -0.0561475 -0.998422
-0.686353 0.727269 0.969415 -0.245429
-0.972177 -0.234247 0.0824037 0.996599
-0.999736 -0.0229742 -0.6645 -0.747288
--0.992736 0.120309 0.874583 0.484875
--0.978619 -0.205683 -0.291559 0.956553
--0.773441 -0.633868 0.895762 -0.444534
--0.650809 0.759241 -0.17817 0.984
--0.997683 0.06803 0.865285 -0.501279
-0.85494 -0.518726 -0.427609 0.903964
--0.216273 -0.976333 -0.981699 -0.190438
--0.601889 0.798579 -0.182813 0.983148
--0.980431 -0.196864 0.568385 0.822763
--0.0271031 -0.999633 -0.908569 -0.417735
--0.833581 0.552397 -0.393352 -0.919388
--0.954036 -0.299691 0.55785 -0.829942
--0.409348 -0.912378 -0.235378 0.971904
--0.83943 0.543468 0.615579 -0.788075
-0.537239 -0.84343 0.986023 0.166607
-0.201552 -0.979478 0.125827 0.992052
--0.347911 0.937527 -0.55974 -0.828668
-0.996369 0.0851396 -0.621222 0.783634
-0.931921 -0.362662 0.832698 0.553728
-0.999994 0.00336753 0.943832 0.330425
-0.993767 0.111475 0.174209 -0.984709
-0.333101 -0.942891 -0.826221 0.563346
-0.147615 0.989045 -0.627613 -0.778525
-0.406088 -0.913834 -0.560198 -0.828359
--0.990586 0.136894 0.393734 -0.919225
--0.981929 -0.189251 0.981937 0.18921
-0.672898 0.739735 -0.0154831 0.99988
-0.995228 0.0975774 -0.939882 -0.3415
--0.536313 -0.844019 0.998341 -0.0575726
-0.827457 0.561529 -0.997755 0.0669636
-0.997207 0.0746871 0.369353 0.929289
-0.633961 0.773365 0.901048 0.433719
--0.694268 -0.719717 0.226851 -0.97393
--0.723939 -0.689864 0.743953 0.668232
--0.999758 -0.0219836 -0.587319 0.809356
-0.741622 0.670819 -0.291921 -0.956443
--0.976775 -0.214266 -0.922179 0.386764
-0.194757 0.980851 0.730702 -0.682696
--0.982076 0.188485 0.993691 -0.112151
-0.915479 0.402365 -0.842368 -0.538903
-0.975213 -0.22127 -0.94908 0.315036
-0.714521 -0.699614 -0.49398 -0.869473
--0.752815 -0.658232 -0.917173 0.398489
--0.601083 -0.799187 -0.0827927 -0.996567
--0.219572 0.975596 -0.989294 -0.145936
--0.959614 0.281319 -0.970745 0.240112
--0.903935 0.42767 0.978229 -0.20753
--0.838256 -0.545276 0.432815 0.901483
--0.980081 0.198596 0.414889 -0.909872
--0.687296 0.726377 0.929484 0.368862
--0.836415 -0.548096 0.110632 0.993861
--0.996111 0.0881042 -0.823681 -0.567053
-0.455955 0.890003 -0.975756 0.21886
-0.418624 -0.90816 0.704312 -0.709891
--0.323996 0.946058 -0.00829839 0.999966
--0.573499 -0.819207 -0.183007 0.983112
--0.582929 0.812523 0.825908 -0.563805
--0.917849 0.39693 -0.999717 -0.02378
--0.490826 -0.871258 0.507738 -0.861512
-0.998417 0.0562363 0.792078 -0.61042
--0.982368 -0.186957 0.999066 -0.0432178
--0.424383 -0.905483 0.988128 0.153633
-0.589467 0.807793 0.978451 -0.206478
-0.547471 0.836825 0.184547 -0.982824
--0.317432 0.948281 0.632458 0.774594
--0.571566 -0.820556 -0.407548 0.913184
--0.155342 0.987861 -0.993888 0.110397
-0.513244 -0.858243 -0.882825 -0.469703
-0.693527 -0.720431 0.32563 0.945497
--0.0336397 -0.999434 -0.975236 0.221166
-0.815191 -0.579192 0.490539 0.871419
-0.516927 -0.85603 -0.606915 -0.794767
--0.723254 -0.690582 0.674045 0.73869
--0.994931 -0.10056 -0.79716 -0.603768
--0.994843 0.101424 -0.74179 0.670632
-0.832536 -0.553971 -0.559028 -0.829149
-0.983039 -0.183394 0.918811 0.394698
-0.855898 -0.517145 -0.586464 0.809976
--0.999946 0.0104081 0.505508 -0.862822
--0.927037 0.374969 0.740329 -0.672245
--0.212613 0.977137 -0.843878 0.536535
-0.842075 0.539361 0.913451 0.406948
-0.890396 -0.455187 -0.990993 0.13391
--0.966596 0.256305 0.705993 -0.708219
-0.842338 -0.538949 0.932243 -0.361832
-0.142149 0.989845 -0.125682 -0.992071
-0.764308 0.644852 0.567056 0.823679
--0.0531147 0.998588 0.565944 -0.824444
--0.52337 -0.852106 0.102055 0.994779
-0.18669 -0.982419 0.997525 -0.0703129
--0.109187 0.994021 -0.0549846 -0.998487
-0.354835 0.934929 0.144952 0.989439
--0.968791 0.247877 0.996485 0.0837747
--0.867326 0.497741 -0.259966 -0.965618
--0.58811 0.808781 0.999194 0.0401359
-0.0724677 -0.997371 0.565344 0.824856
-0.904158 0.427197 0.987735 0.15614
--0.707605 -0.706608 -0.997518 0.0704179
--0.818793 -0.574089 -0.111663 -0.993746
-0.934824 -0.35511 0.174007 0.984744
--0.682405 0.730975 0.957241 -0.289291
--0.99998 0.006246 0.811195 -0.584776
-0.179251 -0.983803 0.677035 -0.735951
-0.99835 -0.0574239 0.858921 0.512109
-0.99554 0.0943434 -0.999721 -0.0236135
--0.0785455 0.996911 -0.00866466 0.999962
-0.799351 -0.600865 -0.055546 -0.998456
-0.995957 -0.089833 -0.909235 -0.416284
-0.44832 0.893873 -0.804864 -0.593459
--0.793054 0.609152 -0.889569 -0.456801
--0.889605 0.456732 -0.952977 0.303042
--0.968755 0.248021 0.997619 0.0689696
--0.996363 0.0852093 -0.626684 -0.779274
--0.584202 0.811608 0.903814 -0.427926
-0.872825 -0.488033 0.753158 -0.65784
--0.793351 0.608764 -0.866188 -0.499718
--0.88641 -0.462901 -0.538126 -0.842865
-0.981816 0.189836 0.968932 0.247328
--0.565766 -0.824566 -0.902204 0.43131
-0.0694803 0.997583 0.783545 -0.621335
-0.369793 -0.929114 0.983924 0.178587
-0.88141 -0.472351 0.480265 0.877123
--0.908015 0.418937 0.728349 0.685206
--0.127946 0.991781 0.965504 0.260387
--0.529361 0.848397 0.722113 -0.691775
-0.195185 -0.980766 0.70026 0.713887
-0.979901 0.199482 0.33106 0.94361
--0.841059 0.540943 0.82127 -0.570539
--0.831131 0.556076 -0.748793 -0.662804
--0.687816 -0.725885 0.900742 -0.434355
--0.594148 0.804356 0.704742 0.709463
-0.160691 -0.987005 -0.908519 -0.417844
-0.692336 0.721575 0.476676 -0.879079
-0.684826 0.728706 0.999265 -0.0383247
-0.103748 -0.994604 -0.566364 -0.824156
-0.621172 0.783674 -0.497301 0.867578
--0.780245 0.625474 0.0296649 0.99956
--0.514691 -0.857376 -0.791424 0.611268
-0.68906 0.724704 0.813322 -0.581814
--0.908894 -0.417027 0.569322 -0.822115
-0.93045 0.36642 0.983254 -0.182242
--0.943986 -0.329984 -0.598764 0.800926
-0.983927 0.178572 0.624667 -0.780891
--0.958288 -0.285804 -0.758206 -0.652016
-0.819297 -0.57337 -0.198435 0.980114
-0.945945 -0.324326 -0.0432285 -0.999065
-0.934247 -0.356628 0.330925 0.943657
--0.991646 0.128988 0.932886 -0.360171
-0.990313 -0.138855 0.205211 -0.978718
--0.822628 -0.56858 -0.705571 -0.708639
--0.197576 -0.980288 0.507172 -0.861845
-0.237199 -0.971461 0.376698 -0.926336
--0.993642 -0.112583 0.282703 -0.959207
-0.590081 0.807344 0.95994 -0.280206
-0.933128 0.359544 0.60491 -0.796294
-0.62151 -0.783406 -0.459412 -0.888223
-0.906991 -0.42115 0.872244 0.489071
-0.842651 0.53846 0.951652 0.307178
--0.0989486 0.995093 -0.884068 -0.467359
--0.519637 0.854387 -0.328971 -0.94434
--0.188728 -0.982029 0.990617 -0.136668
--0.741618 -0.670822 -0.291466 -0.956581
-0.759783 0.650177 -0.0957103 0.995409
-0.577945 -0.816076 0.352062 -0.935977
--0.0190477 -0.999819 -0.327913 -0.944708
-0.725494 -0.688229 0.874579 -0.484883
-0.998541 -0.054003 0.636952 0.770903
-0.640223 0.768189 0.934565 -0.355793
--0.963476 -0.267796 -0.395769 0.91835
-0.727191 0.686435 0.966569 0.256405
--0.261539 -0.965193 0.239566 -0.97088
--0.79834 -0.602207 -0.221779 0.975097
--0.459946 -0.887947 -0.784108 0.620624
--0.0849789 -0.996383 -0.608503 -0.793552
-0.592926 0.805257 0.803932 -0.594721
--0.885954 -0.463773 -0.452688 -0.891669
--0.403539 -0.914963 -0.766505 0.642238
-0.841116 0.540854 0.827254 0.561829
-0.938374 0.345621 -0.74346 -0.66878
--0.526676 -0.850066 0.471275 0.881986
--0.384407 -0.923164 -0.185552 -0.982634
-0.153408 -0.988163 -0.953447 0.301561
--0.950733 0.310011 0.994544 -0.104317
-0.278031 0.960572 -0.995006 -0.0998109
-0.888311 -0.459243 -0.830752 0.556642
--0.998618 -0.0525511 0.518543 -0.855052
-0.925317 0.379194 0.368463 0.929642
-0.61228 -0.790641 -0.996856 0.0792305
--0.81319 -0.581999 0.756125 -0.654427
--0.468892 0.883255 0.10873 -0.994071
-0.357349 0.933971 0.402758 0.915306
--0.418068 0.908416 0.659591 -0.751625
-0.940246 -0.340495 -0.982601 0.185729
--0.335738 0.941955 -0.949653 0.313305
-0.499715 0.86619 -0.471287 -0.88198
--0.358343 -0.93359 0.497667 0.867368
-0.404705 0.914447 -0.67863 0.734481
-0.545763 0.83794 0.379734 -0.925096
-0.487755 -0.872981 0.773706 0.633545
--0.145038 -0.989426 -0.40593 -0.913904
--0.178317 0.983973 0.604239 -0.796803
--0.970162 -0.242459 0.800449 -0.5994
--0.48005 0.877241 0.981172 -0.193137
-0.955732 -0.294238 0.0207262 0.999785
--0.159139 0.987256 -0.962731 -0.270461
--0.991039 0.133576 0.673933 -0.738792
--0.983195 -0.182561 0.882095 -0.471072
-0.967521 -0.25279 0.911638 -0.410993
--0.905824 -0.423655 0.972588 -0.232533
--0.859507 -0.511123 -0.970846 -0.239704
--0.724459 -0.689318 0.792123 0.610361
--0.0428976 0.999079 -0.408961 -0.912552
--0.636929 0.770923 0.997936 -0.0642238
-0.902463 0.430768 0.851472 0.5244
--0.971615 0.236569 0.315836 0.948814
--0.21175 0.977324 -0.793288 0.608847
--0.878579 -0.477598 0.889913 -0.456129
--0.988757 -0.14953 -0.765683 0.643218
-0.643062 0.765814 0.742554 -0.669786
-0.43649 0.899709 0.374382 -0.927274
-0.595694 -0.803212 0.556152 0.831081
--0.48545 0.874264 0.912129 0.409903
--0.999792 0.0203745 -0.450023 -0.893017
-0.286609 -0.958048 -0.700831 -0.713327
--0.660534 -0.750796 -0.99463 -0.103491
--0.51726 -0.855828 -0.575534 0.817778
--0.997128 0.075734 0.269936 -0.962878
-0.419242 -0.907874 0.750998 -0.660304
-0.434831 -0.900512 0.537973 0.842962
--0.42024 0.907413 0.818877 -0.573968
--0.959081 -0.283133 -0.908308 -0.418303
-0.808542 0.588439 0.996739 0.0806917
-0.627711 -0.778446 0.311433 -0.950268
-0.708782 -0.705427 -0.971995 -0.235
-0.945891 0.324485 -0.0600154 0.998197
-0.668633 0.743593 -0.556836 0.830622
--0.608202 0.793782 -0.828676 0.559729
--0.870756 -0.491715 0.417284 0.908776
-0.834889 0.550418 -0.166253 0.986083
-0.887214 -0.461359 -0.675805 0.73708
-0.497094 0.867697 -0.18728 -0.982307
--0.22543 -0.974259 -0.73356 0.679625
-0.422875 0.906188 0.949002 0.31527
--0.985541 -0.16944 -0.249981 -0.968251
-0.216237 -0.976341 -0.981001 0.194003
--0.625247 -0.780427 0.000596343 1
-0.374286 -0.927313 0.787823 0.615901
--0.65628 0.754518 -0.784515 0.620109
-0.501521 0.865146 -0.643674 -0.7653
-0.950839 -0.309686 0.997524 -0.070333
--0.965306 -0.261122 0.281303 0.959619
-0.993648 0.112534 0.278045 -0.960568
--0.190837 0.981622 0.9387 0.344735
-0.970426 0.2414 0.730363 -0.683059
-0.392602 -0.919708 -0.880062 0.474859
-0.863052 -0.505114 -0.897982 -0.440032
--0.295366 -0.955384 0.138242 0.990398
--0.321821 0.9468 0.219672 0.975574
--0.0967521 -0.995309 -0.964938 0.262479
--0.988769 -0.14945 -0.760498 0.649341
--0.723897 -0.689908 0.739833 0.672791
--0.189012 0.981975 0.986256 0.165225
--0.711519 -0.702667 -0.810414 0.585857
--0.991455 0.130452 0.86974 -0.49351
-0.558744 0.82934 -0.919809 -0.392367
--0.445014 -0.895524 -0.536164 -0.844114
--0.759922 -0.650014 -0.0743824 0.99723
--0.998145 -0.0608856 0.981843 -0.189698
--0.0528438 0.998603 0.543378 -0.839488
--0.276671 -0.960965 -0.970985 -0.23914
--0.913658 0.406484 -0.523712 0.851896
--0.892753 0.450547 -0.926399 -0.376544
--0.873859 0.48618 0.874801 -0.484482
--0.754714 -0.656054 -0.765581 0.64334
-0.956184 -0.292765 -0.133007 0.991115
-0.285716 0.958314 -0.764189 0.644992
--0.0401186 0.999195 -0.643796 -0.765197
-0.0864013 -0.99626 -0.715215 0.698905
--0.910575 -0.413345 0.199552 -0.979887
--0.884569 0.466409 -0.17121 0.985235
--0.226375 -0.97404 -0.664288 0.747477
-0.77105 0.636775 0.996453 -0.084151
--0.931438 0.363901 0.898781 0.438398
-0.99934 -0.0363309 -0.881248 0.472653
-0.59453 0.804074 0.670293 -0.742097
--0.0310011 0.999519 -0.99916 0.0409774
-0.844131 -0.536136 0.999328 -0.0366574
-0.592596 -0.8055 0.827634 0.561268
--0.936369 -0.351018 -0.259463 -0.965753
--0.615293 -0.788299 -0.954667 0.297675
--0.706323 0.70789 -0.993868 0.110574
-0.435664 0.900109 0.45779 -0.88906
-0.890387 -0.455204 -0.99073 0.135849
-0.999973 -0.00736732 0.740664 -0.671876
--0.549362 -0.835584 -0.0406018 -0.999175
-0.875018 0.484091 0.964584 0.263775
--0.451599 -0.892221 -0.964257 -0.264969
--0.125669 0.992072 0.999428 0.0338315
--0.84392 -0.536469 0.997107 0.0760058
-0.914838 -0.40382 -0.746394 0.665504
-0.988115 -0.153715 -0.962339 -0.271853
-0.98912 0.147109 -0.586946 0.809626
--0.634784 0.772689 0.94205 -0.335472
--0.78874 0.614726 -0.973563 0.228419
--0.649992 -0.759941 -0.0715107 -0.99744
--0.380754 0.924676 0.207192 0.9783
--0.814457 -0.580224 0.596658 -0.802496
-0.785406 -0.618981 -0.7172 0.696868
-0.888321 0.459224 -0.831926 -0.554887
-0.501791 0.864989 -0.667291 -0.744797
--0.406048 0.913852 -0.563787 -0.82592
-0.246209 -0.969217 0.967403 -0.253241
--0.163897 0.986478 -0.727599 -0.686002
-0.0456565 -0.998957 -0.144639 -0.989484
-0.210834 -0.977522 -0.732828 0.680414
--0.890642 0.454705 -0.996785 0.080127
-0.997062 0.0766033 0.185064 0.982726
--0.346113 -0.938193 -0.707393 0.706821
--0.161526 0.986868 -0.869946 -0.493147
--0.906728 -0.421716 0.901053 -0.433708
--0.526615 0.850104 0.464922 -0.885352
--0.584505 -0.81139 0.919141 0.393929
--0.0154383 -0.999881 0.0269007 -0.999638
--0.0819207 0.996639 -0.340338 0.940303
--0.590467 -0.807062 0.945446 -0.325779
--0.827004 0.562197 -0.999906 0.0137089
--0.554146 0.832419 -0.576313 0.817229
--0.453423 0.891295 -0.997974 0.0636218
--0.453811 -0.891098 -0.999797 -0.0201276
-0.914222 -0.405213 -0.63676 0.771062
--0.0548859 0.998493 0.702542 -0.711643
--0.585392 -0.81075 0.956672 0.291167
-0.963886 -0.266315 -0.250529 -0.968109
--0.736684 -0.676237 0.423093 -0.906086
-0.960112 0.279615 -0.997889 -0.064947
--0.828902 -0.559394 -0.947715 0.319117
-0.905796 -0.423714 0.974086 0.226179
--0.61973 -0.784815 -0.647518 0.76205
--0.997279 0.0737231 0.457318 -0.889303
-0.999217 0.0395694 -0.684863 -0.728672
-0.367881 -0.929873 0.999656 -0.02624
-0.337571 -0.9413 -0.992323 0.123669
-0.284368 -0.958715 -0.847068 -0.531484
-0.857004 0.515309 -0.74535 -0.666674
--0.924906 -0.380196 0.265898 0.964001
--0.877211 -0.480106 0.982384 -0.186871
--0.997598 -0.0692716 0.796372 0.604808
--0.893064 -0.449929 -0.898141 0.439707
--0.146817 0.989164 -0.562847 0.826561
-0.2295 -0.973309 -0.394541 -0.918878
-0.620024 0.784583 -0.618569 0.785731
--0.763575 -0.645719 0.470117 0.882604
--0.923877 0.38269 -0.000666085 -1
-0.774917 -0.632063 0.768807 0.639481
-0.706101 -0.708111 -0.989914 0.141669
-0.854373 0.519661 -0.326409 -0.945229
--0.285516 0.958374 -0.777501 -0.628882
-0.198163 0.980169 0.454724 -0.890632
--0.850564 0.525872 0.385885 0.922547
-0.983575 -0.180498 0.764686 0.644404
-0.578342 0.815794 0.397183 0.91774
--0.478396 -0.878144 0.927624 0.373515
--0.722117 -0.691771 0.543924 0.839134
-0.774714 0.632312 0.788966 -0.614436
--0.241407 0.970424 0.730908 -0.682476
--0.499883 -0.866093 -0.488277 -0.872689
--0.28845 -0.957495 -0.551638 0.834084
-0.192516 0.981294 0.866329 -0.499474
--0.36993 0.92906 0.981201 0.19299
-0.358255 0.933624 0.489479 0.872015
-0.153536 0.988143 -0.957269 -0.289198
-0.727818 0.685771 0.985927 0.167176
-0.999757 -0.022061 -0.593563 -0.804787
-0.991009 0.133799 0.657168 0.753744
-0.270359 0.962759 -0.623408 -0.781897
--0.933069 -0.359699 0.617989 -0.786187
--0.805086 -0.593158 0.786445 0.617661
--0.203018 -0.979175 -0.0235677 -0.999722
-0.671451 0.741049 -0.209349 0.977841
-0.704931 -0.709276 -0.953182 0.302396
--0.999632 -0.0271212 -0.909324 0.416088
--0.165099 0.986277 -0.638823 -0.769353
--0.996261 0.0863983 -0.715004 -0.699121
-0.933916 -0.357492 0.416693 0.909047
-0.495451 0.868636 0.000855552 -1
--0.642281 0.766469 0.806836 0.590775
-0.983687 0.179888 0.723244 -0.690592
--0.973937 0.226818 -0.629547 0.776963
--0.878546 -0.477659 0.893051 -0.449955
--0.931286 0.364288 0.916193 0.400738
--0.917 0.398887 -0.982083 0.18845
--0.118429 -0.992963 0.767646 0.640874
-0.765421 0.64353 0.700201 0.713946
-0.93812 0.346311 -0.692314 -0.721596
-0.536114 -0.844146 0.999423 0.0339591
--0.809275 0.587429 0.999033 0.0439589
--0.169013 -0.985614 -0.291688 0.956513
--0.962907 -0.269832 -0.579644 0.81487
--0.732239 -0.681047 0.887448 -0.460908
-0.978217 0.207585 -0.470802 0.882239
--0.093045 -0.995662 -0.994302 -0.106597
-0.560547 -0.828123 -0.98282 0.184565
-0.569608 0.821916 -0.611666 0.791116
--0.114988 -0.993367 0.504393 0.863474
-0.666309 -0.745676 -0.784993 -0.619505
--0.637309 0.770608 0.999889 -0.0149294
--0.250021 0.96824 0.990561 0.137069
--0.97874 0.205107 -0.23471 -0.972065
-0.883946 0.46759 -0.0384906 -0.999259
--0.885391 0.464848 -0.341405 0.939916
--0.544467 0.838782 0.51767 0.85558
--0.870939 -0.491391 0.45078 0.892635
--0.312292 -0.949986 0.941225 -0.337779
-0.469962 -0.882687 0.228017 -0.973657
--0.989052 -0.147564 -0.62361 0.781735
-0.670466 -0.74194 -0.336974 -0.941514
-0.374705 0.927144 0.759185 -0.650875
--0.946373 -0.323076 0.0888378 0.996046
--0.484706 0.874677 0.943662 0.330911
-0.113663 -0.993519 0.385128 -0.922863
-0.999037 -0.0438761 -0.317761 0.948171
-0.0955785 -0.995422 -0.989114 -0.147148
--0.999988 0.00479812 0.887081 -0.461614
-0.792919 0.609327 -0.899439 0.437046
-0.43439 -0.900725 0.578596 0.815614
--0.532057 0.846709 0.902245 -0.431224
--0.999626 -0.0273291 -0.917782 0.397086
--0.961184 -0.275907 -0.948916 0.31553
-0.740791 -0.671736 -0.171591 0.985168
-0.713353 0.700804 -0.631463 0.775406
--0.882973 -0.469424 0.168378 -0.985722
--0.737749 -0.675075 0.275629 -0.961264
-0.98022 -0.19791 0.477502 -0.878631
--0.117121 -0.993118 0.67683 0.736139
--0.585765 0.810481 0.969052 -0.246857
-0.505552 -0.862796 -0.919151 0.393905
-0.839947 0.542669 0.687745 0.725952
--0.638286 -0.769799 0.993742 -0.1117
--0.317839 0.948145 0.598635 0.801022
-0.488721 0.87244 0.698943 -0.715178
-0.922972 0.384867 -0.234279 0.972169
--0.622234 -0.782831 -0.375442 0.926846
-0.00306279 -0.999995 0.953462 0.301514
-0.0773816 -0.997002 0.107869 0.994165
--0.983421 0.181338 0.816823 0.576889
--0.150593 0.988596 -0.830292 0.557328
--0.687833 -0.725869 0.899671 -0.436568
--0.536619 -0.843825 0.995602 -0.0936837
-0.461908 -0.886928 -0.628886 -0.777498
-0.968298 -0.249799 0.993451 -0.114262
--0.89935 0.437229 0.296976 -0.954885
-0.422549 -0.90634 0.937036 -0.349233
--0.156107 -0.98774 -0.99945 -0.0331661
-0.897242 -0.44154 -0.177346 -0.984148
-0.887304 -0.461184 -0.690175 0.723642
--0.957493 -0.288455 -0.551227 -0.834355
--0.103529 0.994626 -0.584398 -0.811467
--0.899577 0.436763 0.346082 -0.938204
-0.840741 0.541438 0.786332 0.617804
-0.591434 0.806354 0.899709 -0.436491
--0.947801 -0.318861 0.508951 0.860795
--0.488187 -0.872739 0.741384 -0.671081
-0.10802 -0.994149 -0.171597 -0.985167
--0.99216 -0.124975 0.999346 -0.0361494
--0.809556 0.587043 0.9958 0.0915542
-0.742464 0.669886 -0.409483 -0.912318
--0.609416 0.79285 -0.904311 0.426874
--0.998554 0.0537649 0.618392 0.785869
-0.0417735 -0.999127 -0.508826 -0.860869
--0.558041 -0.829813 -0.883288 -0.46883
--0.534921 -0.844902 0.994257 0.107017
-0.423087 -0.906089 0.956118 -0.292981
--0.302372 0.95319 0.766157 -0.642654
--0.846536 0.532331 0.915719 0.401819
--0.870633 -0.491933 0.394407 0.918936
-0.124509 -0.992218 0.996554 -0.0829466
--0.398778 -0.917048 -0.98426 0.176729
-0.241772 0.970333 0.756015 0.654554
--0.904073 0.427379 0.9844 -0.175943
--0.997554 -0.0699049 0.756393 0.654117
-0.476495 0.879177 0.825854 0.563884
-0.626215 -0.77965 0.124338 -0.99224
--0.484873 0.874585 0.937207 0.348773
-0.794014 -0.607899 -0.806698 -0.590964
-0.21762 -0.976034 -0.998562 0.0536034
--0.0268847 0.999639 -0.899224 0.437488
--0.935615 0.353022 -0.0483996 0.998828
-0.948259 0.317498 0.627055 0.778975
--0.41242 -0.910994 0.0992481 0.995063
--0.977749 -0.209777 -0.655138 0.755509
-0.304817 0.952411 0.904182 0.427146
-0.100412 0.994946 -0.806033 0.591871
-0.294244 0.95573 0.0212989 0.999773
-0.979765 -0.200154 0.265656 -0.964068
-0.0247181 -0.999694 -0.78411 0.620622
--0.799262 -0.600983 -0.070324 0.997524
-0.86152 0.507724 -0.988318 0.152407
-0.777545 0.628828 0.444151 -0.895952
-0.830418 0.557141 -0.827411 0.561596
-0.543269 -0.839558 0.634084 0.773264
-0.0879081 -0.996129 -0.812363 0.583152
-0.0265219 -0.999648 -0.882761 0.469823
--0.530865 -0.847457 0.832811 0.553557
-0.922919 0.384994 -0.247633 0.968854
-0.509692 0.860357 -0.997145 0.0755167
-0.0452963 0.998974 -0.180216 0.983627
-0.49691 -0.867802 -0.166416 0.986056
-0.585735 -0.810503 0.968103 -0.250552
--0.958386 0.285476 -0.780084 0.625675
--0.0783627 0.996925 0.00966954 0.999953
--0.64096 0.767574 0.896157 0.443736
--0.70765 -0.706563 -0.997043 0.0768404
-0.728181 0.685385 0.993396 0.114737
--0.360525 -0.932749 0.685122 0.728428
--0.991403 -0.130841 0.849723 0.527229
-0.827425 -0.561576 -0.998118 -0.0613231
-0.942105 -0.335318 -0.934757 -0.355288
-0.973762 -0.22757 -0.567738 0.823209
-0.962913 -0.269814 -0.578106 -0.815962
--0.694016 -0.71996 0.26076 -0.965404
--0.999834 0.0182337 -0.249996 -0.968247
-0.550485 0.834845 -0.174178 -0.984714
-0.646633 -0.762801 0.361213 0.932483
--0.311621 -0.950206 0.962703 -0.270561
-0.706443 0.70777 -0.995603 -0.0936747
--0.746584 -0.665291 -0.86195 -0.506993
--0.321991 0.946743 0.202191 0.979346
-0.249263 0.968436 0.998249 -0.0591562
--0.162149 -0.986766 -0.837077 0.547084
--0.794856 0.606798 -0.717292 -0.696773
-0.948475 0.316851 0.678718 0.734399
--0.9972 0.0747768 0.360977 -0.932575
-0.585503 0.81067 0.960557 0.278083
--0.234995 -0.971997 0.158712 0.987325
--0.949124 -0.314903 0.814139 0.58067
--0.39904 0.916934 -0.978814 -0.204751
-0.960355 -0.278782 -0.999762 -0.0218192
--0.744903 0.667173 -0.708059 0.706153
-0.509446 0.860502 -0.998894 0.0470242
--0.840805 0.541339 0.793549 -0.608506
--0.606749 -0.794894 -0.712967 -0.701198
--0.987034 -0.16051 -0.916032 -0.401104
-0.977485 0.211003 -0.744445 0.667683
-0.102986 -0.994683 -0.627804 -0.778371
-0.206136 0.978523 -0.335418 -0.942069
--0.941475 -0.337084 -0.984595 0.174852
--0.473377 -0.88086 0.578891 0.815405
-0.522318 0.852751 -0.0211708 0.999776
--0.993482 -0.113987 0.415051 -0.909798
--0.693489 -0.720468 0.330679 -0.943743
-0.251449 -0.967871 0.959667 0.28114
-0.995395 0.0958536 -0.98467 -0.174426
-0.219723 -0.975562 -0.986914 -0.161244
--0.575697 -0.817663 0.0844856 0.996425
--0.219106 -0.975701 -0.995138 0.098493
-0.845696 -0.533666 0.96747 0.252984
--0.114177 0.99346 0.432357 -0.901702
-0.994288 0.10673 -0.297667 -0.95467
-0.727622 0.685979 0.980742 0.195309
-0.998827 -0.0484227 0.131391 0.991331
--0.855079 0.518497 -0.451674 0.892183
-0.472779 0.881181 0.522211 0.852816
--0.99241 0.122976 0.971919 0.235316
--0.920982 -0.389606 -0.68196 0.73139
-0.745405 -0.666612 -0.759126 0.650944
-0.980645 0.195793 0.654636 0.755944
-0.724751 -0.689011 0.817265 -0.576262
-0.530014 -0.847989 0.773148 -0.634226
--0.861114 0.508413 -0.997333 -0.0729802
-0.962117 0.272636 -0.789262 0.614056
-0.0134114 0.99991 0.227601 -0.973755
-0.926613 0.376015 0.659892 0.75136
--0.905882 -0.42353 0.96929 -0.245919
--0.197874 0.980227 0.480724 0.876872
-0.469444 -0.882962 0.170554 -0.985348
-0.227699 -0.973731 -0.55679 -0.830653
-0.516712 -0.856159 -0.626641 -0.779308
--0.99999 0.00445975 0.90219 -0.431339
-0.949282 -0.314427 0.842255 -0.53908
--0.610936 0.79168 -0.969101 0.246664
-0.696695 0.717368 -0.108739 -0.99407
--0.0656283 -0.997844 0.959841 -0.280545
--0.684008 0.729474 0.99727 -0.0738462
-0.852917 -0.522047 -0.0529727 0.998596
--0.778118 0.628118 0.360635 0.932707
-0.861619 0.507555 -0.985147 0.171711
-0.44271 -0.896665 -0.303878 0.952711
--0.535167 -0.844746 0.996947 0.0780768
-0.802527 0.596616 0.457173 0.889378
-0.937218 -0.348743 -0.4841 0.875013
--0.575444 -0.817841 0.0535899 0.998563
--0.995568 -0.0940469 -0.999981 0.00617295
-0.750403 0.660981 -0.999027 0.044094
-0.671651 0.740868 -0.182893 0.983133
-0.880259 0.474494 0.677432 -0.735585
-0.999972 -0.00752929 0.729685 -0.683784
-0.513594 0.858033 -0.862922 0.505337
-0.9649 -0.262618 0.129751 -0.991547
-0.523614 -0.851956 0.13048 -0.991451
--0.878498 -0.477746 0.8975 -0.441014
-0.999946 0.0103971 0.506458 0.862264
-0.858902 0.512141 -0.935732 -0.352711
--0.634388 -0.773015 0.923614 0.383325
--0.90143 -0.432925 0.702952 0.711237
--0.671969 0.740579 -0.140547 -0.990074
--0.980352 0.197254 0.535234 -0.844704
--0.626808 0.779174 0.199394 -0.979919
-0.286839 0.957979 -0.6835 0.72995
-0.979463 -0.201624 0.118529 -0.992951
--0.350024 0.936741 -0.360315 -0.932831
--0.933653 -0.358179 0.482328 -0.875991
-0.827025 0.562165 -0.999951 -0.00985392
-0.957693 0.287793 -0.607546 -0.794284
-0.899908 -0.436079 0.416323 -0.909217
-0.99886 0.0477343 0.0628099 -0.998026
--0.925966 0.377607 0.521732 -0.85311
-0.996713 0.0810192 -0.254016 0.9672
-0.485007 -0.87451 0.931743 0.363118
-0.814528 0.580124 0.586747 -0.80977
-0.751551 0.659675 -0.976335 0.216261
-0.149578 -0.98875 -0.768789 0.639502
-0.00573417 -0.999984 0.84005 0.542509
--0.686179 -0.727432 0.974982 -0.222284
-0.765788 -0.643093 0.739843 -0.672779
-0.744707 -0.667392 -0.686997 0.72666
--0.258853 -0.965917 0.496975 -0.867765
-0.760925 -0.64884 0.0798168 -0.99681
-0.955121 0.296215 0.225616 -0.974216
--0.503434 -0.864034 -0.795946 -0.605367
--0.154353 -0.988016 -0.977873 -0.209198
--0.697557 -0.71653 -0.227152 -0.973859
--0.494423 -0.869221 0.118873 -0.992909
-0.37343 -0.927659 0.841241 0.54066
--0.111367 0.993779 0.163504 -0.986543
-0.0693799 0.99759 0.789756 -0.613422
-0.436072 0.899912 0.417059 -0.908879
--0.086848 -0.996222 -0.745824 -0.666143
--0.820784 -0.571239 -0.443631 -0.896209
--0.737014 0.675878 0.378376 0.925652
--0.285926 -0.958252 -0.749849 0.661609
-0.822397 -0.568914 -0.676165 0.73675
-0.9302 -0.367053 0.993364 0.115014
-0.302227 -0.953236 0.756332 -0.654188
-0.951333 -0.308165 0.995991 0.0894572
-0.677031 -0.735954 0.518132 -0.8553
-0.347385 -0.937723 -0.605391 -0.795928
--0.764537 0.64458 0.595957 -0.803017
-0.734432 -0.678683 0.695632 0.718398
--0.651564 -0.758593 -0.275053 -0.961429
--0.996673 0.0815024 -0.300583 -0.953756
-0.999673 -0.025578 -0.834532 -0.550959
--0.847519 0.530766 0.826294 0.563239
-0.0757859 0.997124 0.264915 -0.964272
--0.704561 -0.709643 -0.936123 -0.351672
--0.307688 0.951487 0.990264 -0.139205
-0.721911 0.691986 0.518702 0.854955
--0.503079 0.864241 -0.770398 0.637563
-0.383235 0.923651 -0.0597211 -0.998215
-0.484536 0.874771 0.949939 -0.312436
-1 -0.000411042 0.999155 -0.0410926
-0.853428 -0.52121 -0.150425 0.988621
-0.288809 -0.957387 -0.520049 -0.854136
--0.494781 -0.869018 0.0779709 -0.996956
--0.16481 -0.986325 -0.661052 0.750341
-0.919268 0.393633 -0.927672 0.373396
-0.832596 -0.553881 -0.549976 -0.83518
-0.815737 -0.578423 0.406271 0.913753
-0.312309 -0.949981 0.940615 0.339475
--0.99978 -0.0209946 -0.50451 0.863406
--0.210266 0.977644 -0.692093 0.721808
--0.999618 -0.0276464 -0.929919 0.367765
--0.83416 0.551523 -0.294983 -0.955503
-0.163257 0.986584 -0.770518 0.637418
--0.328465 0.944516 -0.46274 0.886494
--0.623603 0.781741 -0.208324 -0.97806
-0.836611 0.547798 0.145954 0.989291
-0.77159 0.63612 0.985724 -0.168368
--0.0271266 -0.999632 -0.90955 -0.415594
-0.986214 -0.165473 -0.609175 0.793036
--0.0201848 -0.999796 -0.433 -0.901394
-0.108509 0.994095 -0.122979 0.992409
-0.981659 -0.190644 0.945306 -0.326185
-0.547764 0.836633 0.149914 -0.988699
--0.983013 0.183535 0.924373 0.38149
--0.826928 -0.562307 -0.999633 -0.0270882
--0.964586 0.263769 0.0108235 -0.999941
--0.836651 -0.547736 0.153317 0.988177
-0.901979 -0.43178 0.787386 -0.616461
--0.613294 -0.789855 -0.998803 0.0489134
-0.073756 -0.997276 0.454384 0.890806
-0.901801 -0.432151 0.761389 -0.648296
--0.935083 -0.354429 0.101888 -0.994796
--0.933478 -0.358635 0.524568 -0.851369
--0.821741 -0.569862 -0.586956 -0.809619
--0.195472 0.980709 0.679083 0.734062
--0.716945 -0.697129 -0.168729 0.985663
--0.999813 -0.0193184 -0.353366 0.935485
-0.407811 0.913066 -0.394859 0.918742
--0.886168 0.463364 -0.493316 0.86985
-0.999187 0.0403048 -0.629427 -0.777059
--0.978403 0.206707 -0.389876 -0.920867
-0.89864 -0.438688 0.138844 -0.990314
--0.855711 0.517454 -0.556812 0.830639
--0.363665 -0.93153 0.887384 0.461031
-0.119176 0.992873 0.813659 0.581342
-0.129109 -0.99163 0.928412 0.371553
-0.206044 -0.978543 -0.326577 0.945171
--0.539631 0.841902 0.899923 0.436049
--0.994768 -0.102162 -0.690022 -0.723788
-0.0412812 -0.999148 -0.550613 -0.834761
-0.852622 0.522527 0.00338457 -0.999994
--0.00638224 -0.99998 0.803153 -0.595773
--0.149958 -0.988692 -0.792784 -0.609503
-0.0298728 0.999554 -0.988186 -0.15326
-0.189805 0.981822 0.969694 -0.244323
--0.431945 0.9019 0.775983 0.630754
--0.292466 -0.956276 -0.163947 0.986469
-0.378978 -0.925406 0.390105 0.920771
--0.000182851 1 0.999833 0.0182841
--0.575952 0.817484 0.115499 -0.993308
--0.894933 -0.4462 -0.642971 0.765891
-0.431986 0.90188 0.773115 -0.634266
-0.828303 -0.56028 -0.97637 -0.216104
-0.675377 0.737472 0.314774 0.949167
-0.158967 -0.987284 -0.967298 -0.253642
-0.387563 0.921843 -0.504403 -0.863469
-0.0299047 -0.999553 -0.988669 0.150109
--0.17801 0.984029 0.579088 -0.815265
--0.683652 0.729809 0.992473 -0.122467
-0.436656 0.899628 0.357153 -0.934046
--0.217526 0.976054 -0.998003 0.063164
-0.51803 -0.855363 -0.499718 -0.866188
-0.787053 0.616886 -0.87541 -0.48338
--0.318924 -0.94778 0.503234 -0.86415
--0.985185 -0.171494 -0.0441023 -0.999027
--0.518691 0.854962 -0.431276 -0.90222
--0.981024 0.193888 0.788286 -0.615309
--0.370806 0.92871 0.958654 0.284574
--0.439892 -0.898051 0.00529637 -0.999986
-0.995699 -0.0926497 -0.989288 -0.145975
-0.912611 0.408828 -0.290296 -0.956937
-0.0941947 -0.995554 -0.999962 -0.00868086
--0.0990026 -0.995087 -0.881518 0.472151
-0.267352 -0.963599 -0.353115 0.93558
-0.997923 0.0644127 0.986818 0.161832
-0.958207 -0.286076 -0.739445 0.673217
-0.753588 0.657347 -0.864132 0.503266
--0.230262 -0.973129 -0.321428 0.946934
-0.0984033 -0.995147 -0.908339 -0.418234
--0.657485 0.753468 -0.873189 0.487382
-0.928137 0.37224 0.903472 0.428647
--0.532099 0.846682 0.904357 -0.426777
--0.963562 -0.267485 -0.365945 0.930636
-0.977337 -0.21169 -0.789491 -0.613762
--0.983772 0.179422 0.68975 0.724047
--0.417258 0.908788 0.590027 -0.807384
-0.573924 0.818909 -0.131743 0.991284
-0.149923 0.988698 -0.790622 -0.612305
--0.819998 -0.572367 -0.316554 -0.948574
--0.99001 -0.140994 -0.00935097 0.999956
--0.823996 0.566596 -0.854294 0.51979
-0.737032 -0.675857 0.375838 0.926685
--0.633456 0.773779 0.870823 -0.491596
--0.998053 -0.0623704 0.999114 -0.0420804
--0.875622 -0.482998 0.98993 0.141558
-0.75677 -0.653681 -0.529523 -0.848296
-0.571006 -0.820946 -0.46886 -0.883272
-0.952653 0.30406 0.86745 -0.497525
-0.326466 0.945209 -0.266226 -0.963911
--0.988432 -0.151665 -0.885743 0.464176
-0.976726 0.214489 -0.930784 0.365569
--0.0884918 0.996077 -0.845117 0.534581
--0.244096 0.969751 0.889739 -0.456469
-0.116737 -0.993163 0.647899 -0.761727
-0.93616 0.351574 -0.20172 -0.979443
--0.306053 0.952014 0.951882 -0.306464
--0.172261 -0.985051 0.0337218 0.999431
-0.474373 0.880324 0.667233 0.744849
-0.996905 0.0786162 -0.0157607 0.999876
--0.997222 0.074493 0.387365 -0.921926
--0.975189 -0.221374 -0.945646 -0.325197
-0.896 0.444054 -0.442833 0.896604
-0.467548 -0.883967 -0.04314 -0.999069
-0.880441 0.474156 0.648695 -0.761048
-0.969695 0.244317 0.899914 -0.436067
--0.301358 0.953511 0.693617 -0.720344
--0.798278 0.602289 -0.231711 -0.972785
-0.356458 0.934311 0.313709 0.949519
--0.987915 -0.154999 -0.989459 0.144814
-0.999316 -0.0369668 -0.84941 0.527734
--0.221165 -0.975236 -0.952411 0.304817
-0.901859 -0.43203 0.770016 -0.638025
-0.711544 -0.702641 -0.808284 -0.588793
-0.894716 0.446636 -0.679535 0.733643
--0.927049 0.374939 0.742485 -0.669862
--0.962418 0.271573 -0.716796 -0.697283
-0.969052 -0.246858 0.982176 0.187966
--0.221546 0.97515 -0.939793 -0.341745
--0.999425 -0.033918 -0.9687 -0.248234
-0.549695 0.835366 -0.0802989 -0.996771
-0.366879 -0.930269 0.991045 -0.13353
--0.968889 -0.247495 0.992397 -0.123075
--0.880732 0.473615 0.600716 0.799462
-0.812575 0.582856 0.820818 -0.571189
--0.358908 0.933373 0.549223 -0.835676
--0.991017 0.133737 0.661851 -0.749635
--0.803579 0.595199 0.606274 -0.795256
-0.981246 0.192759 0.853721 0.52073
--0.587844 -0.808975 0.999974 -0.00720146
--0.847884 0.530182 0.785602 0.618733
--0.992879 -0.119127 0.810777 -0.585355
-0.394172 0.919037 -0.947964 -0.318378
--0.995133 0.0985367 -0.902648 0.430379
--0.569523 0.821975 -0.619787 -0.78477
--0.0887219 0.996056 -0.857241 0.514916
--0.989051 -0.147577 -0.624632 0.780919
--0.612132 -0.790755 -0.995199 -0.0978696
--0.529089 -0.848567 0.699534 0.714599
--0.214672 -0.976686 -0.93745 -0.348119
-0.482168 0.876079 0.998882 -0.0472814
--0.560096 -0.828428 -0.971309 -0.237819
--0.905022 0.425365 0.998951 0.0458013
-0.81334 0.581789 0.738988 -0.673719
--0.98062 -0.195917 0.645068 0.764125
--0.999721 -0.0236352 -0.712424 0.701749
--0.972142 -0.234394 0.0973889 -0.995246
-0.996972 -0.0777564 0.070429 -0.997517
--0.974616 0.223885 -0.83163 0.55533
-0.443943 -0.896055 -0.431646 0.902043
--0.999036 0.0438963 -0.315842 0.948812
--0.722767 -0.691092 0.620316 0.784352
--0.670699 -0.74173 -0.30733 0.951603
-0.978819 0.204725 -0.196666 0.980471
-0.963875 0.266354 -0.254426 0.967092
--0.112672 -0.993632 0.291283 0.956637
--0.542391 0.840126 0.711342 0.702846
--0.990838 -0.135055 0.556574 0.830798
-0.681949 0.7314 0.937368 0.348339
--0.694161 0.71982 0.241294 0.970452
-0.473202 0.880954 0.562543 0.826768
--0.965989 -0.258585 0.520869 0.853636
-0.774968 -0.632001 0.763695 0.645577
--0.623106 0.782137 -0.270045 -0.962848
-0.986768 0.162141 -0.837549 -0.546362
-0.0781271 0.996943 0.0333006 -0.999445
--0.72377 -0.690042 0.727279 0.686342
--0.952035 -0.30599 0.949825 -0.312783
-0.740514 -0.672041 -0.130956 0.991388
--0.202608 0.97926 0.0182972 0.999833
--0.0944811 0.995527 -0.999299 -0.0374333
-0.945813 0.324712 -0.0839351 0.996471
-0.924726 -0.380633 0.220007 -0.975498
--0.337954 -0.941162 -0.996536 -0.0831636
-0.580353 0.814365 0.609314 0.792929
--0.981378 0.192087 0.887322 -0.46115
-0.315615 0.948887 0.768316 -0.640071
--0.373304 -0.927709 0.8485 -0.529195
--0.963471 0.267814 -0.397512 -0.917597
--0.520046 -0.854139 -0.283504 0.958971
--0.997004 -0.0773491 0.111106 0.993809
-0.950786 -0.309849 0.996178 -0.0873481
--0.214417 0.976742 -0.928033 0.372498
-0.611317 0.791386 -0.979857 -0.199699
-0.994082 -0.108636 -0.110272 0.993901
--0.46683 0.884347 -0.124125 -0.992267
-0.717468 -0.696591 -0.0943768 -0.995537
--0.447913 0.894077 -0.777001 0.6295
-0.581988 -0.813197 0.755288 -0.655393
-0.998763 0.0497162 0.258318 -0.96606
--0.332651 -0.94305 -0.798385 -0.602147
-0.991787 0.127899 0.96674 0.255762
--0.951938 -0.30629 0.959214 -0.282681
--0.853802 -0.520597 -0.220991 -0.975276
--0.718023 0.696019 -0.0148038 -0.99989
--0.88968 -0.456585 -0.957835 -0.287319
-0.452301 -0.891865 -0.982094 0.188391
-0.999966 -0.00829144 0.6755 -0.73736
-0.707296 0.706918 -0.999644 0.0266912
--0.264434 -0.964404 -0.0581577 -0.998307
--0.194482 0.980906 0.749596 0.661895
--0.770582 0.637341 0.999942 0.0107478
-0.0630484 -0.99801 0.999666 0.0258405
-0.193523 0.981096 0.810594 -0.585608
-0.860263 0.50985 -0.995585 -0.093869
-0.849335 -0.527854 0.588621 0.808409
--0.378375 -0.925652 0.449205 -0.893429
--0.212278 0.977209 -0.825006 0.565124
--0.806755 -0.590886 0.927251 0.374439
-0.612456 0.790505 -0.998372 -0.0570407
-0.945066 -0.326878 -0.308045 -0.951372
-0.758634 0.651517 -0.269098 0.963113
-0.827251 0.561832 -0.999538 0.0303835
-0.116638 0.993174 0.640261 0.768158
--0.0518357 0.998656 0.45601 -0.889975
-0.88339 0.468638 0.0800227 -0.996793
--0.932761 -0.360495 0.682745 -0.730657
-0.658464 0.752612 -0.929039 -0.369981
--0.81468 0.57991 0.565303 0.824883
--0.836009 0.548715 0.0368022 -0.999323
-0.620233 0.784418 -0.597412 0.801934
-0.817889 0.575377 0.0453707 -0.99897
--0.899323 0.437284 0.291167 -0.956672
--0.350164 -0.936688 -0.346355 0.938104
--0.398776 -0.917048 -0.984298 0.176514
-0.341377 -0.939926 -0.960878 -0.276972
--0.116144 0.993232 0.601286 -0.799034
--0.99825 -0.0591277 0.93342 -0.358787
-0.333572 -0.942725 -0.853301 0.521418
--0.784282 0.620404 -0.579745 0.814798
-0.206949 0.978352 -0.412465 -0.910973
-0.859851 0.510545 -0.984756 -0.173943
-0.208944 -0.977928 -0.588468 0.80852
-0.989453 -0.144853 -0.388787 -0.921328
--0.334493 0.942398 -0.9001 0.435684
-0.678344 -0.734745 0.661765 -0.749711
-0.763916 -0.645316 0.515961 -0.856612
-0.998897 -0.0469558 -0.015077 0.999886
-0.574002 0.818854 -0.12228 0.992496
--0.997601 0.0692252 0.799175 -0.601099
-0.648899 0.760874 0.0720864 -0.997398
-0.810136 0.586243 0.9819 -0.1894
--0.801915 -0.597438 0.36387 0.93145
-0.109319 0.994007 -0.0417489 0.999128
--0.487749 0.872984 0.774161 0.632989
-0.638203 -0.769868 0.994895 0.100916
--0.369257 0.929327 0.992583 0.121568
-0.769659 -0.638455 0.991052 -0.133476
-0.999646 -0.026612 -0.886959 -0.461847
--0.2381 -0.971241 0.460831 0.887488
--0.293112 0.956078 -0.0969126 -0.995293
-0.640888 0.767634 0.900252 -0.43537
-0.36409 -0.931364 0.907482 -0.420091
--0.154475 -0.987997 -0.980387 -0.197083
-0.494618 -0.869111 0.0966156 0.995322
--0.999296 0.037517 -0.819081 0.573678
--0.981378 -0.192085 0.887446 0.460912
-0.805782 0.592213 0.85339 0.521273
-0.999766 0.0216347 -0.558718 0.829358
--0.508443 0.861096 -0.997587 0.0694329
--0.999371 0.0354489 -0.919481 0.393135
-0.185734 0.9826 0.985975 0.166895
--0.876814 0.48083 0.994456 0.105149
--0.174146 0.98472 0.223227 -0.974766
-0.326108 0.945333 -0.229569 -0.973292
--0.159846 -0.987142 -0.940922 0.338624
-0.605387 0.795932 -0.58307 -0.812422
-0.859157 0.511712 -0.952183 -0.305529
--0.206021 -0.978548 -0.324399 -0.94592
--0.304259 0.952589 0.877623 -0.479351
--0.89252 -0.451009 -0.944613 0.328185
-0.610865 -0.791735 -0.966844 0.255367
--0.804939 0.593357 0.770949 -0.636896
-0.446275 0.894896 -0.649404 -0.760443
-0.853769 0.520652 -0.21478 -0.976662
--0.125383 -0.992108 0.999987 -0.00505796
-0.973766 0.227551 -0.569349 -0.822096
--0.799116 0.601176 -0.0944564 -0.995529
--0.729919 -0.683534 0.990364 -0.138487
-0.979477 0.201557 0.125306 0.992118
-0.774156 0.632994 0.839991 -0.5426
-0.86746 -0.497507 -0.233814 -0.972281
-0.473013 0.881055 0.544746 0.838601
-0.871411 -0.490554 0.534336 -0.845272
--0.625536 -0.780195 0.0376084 0.999293
-0.999695 0.0246849 -0.782047 0.623219
--0.852393 0.522902 0.0472506 0.998883
-0.464024 0.885822 -0.427211 0.904152
-0.790918 0.611923 -0.992259 0.124188
--0.863506 0.504338 -0.854831 -0.518906
--0.998708 -0.0508212 0.363402 -0.931633
--0.812112 -0.583501 0.86354 -0.50428
--0.655945 -0.754809 -0.756239 -0.654296
-0.900117 -0.435648 0.459347 -0.888257
-0.716011 -0.698089 -0.29879 -0.954319
-0.499636 -0.866235 -0.463212 0.886248
--0.573926 -0.818907 -0.131425 0.991326
-0.989094 0.147283 -0.601094 0.799178
-0.872529 -0.488563 0.711837 -0.702345
--0.683098 0.730326 0.98035 -0.197268
--0.44124 0.897389 -0.144448 0.989512
--0.999095 0.0425338 -0.441911 0.897059
-0.160945 0.986963 -0.897469 0.441077
--0.1773 -0.984157 0.518855 0.854862
--0.483935 -0.875104 0.969142 -0.246505
--0.376455 0.926435 0.623542 0.78179
--0.95416 0.299298 0.523172 0.852227
--0.272108 -0.962267 -0.75443 -0.65638
--0.25612 -0.966645 0.719397 -0.694599
-0.90104 0.433737 0.636154 0.771562
--0.0725722 -0.997363 0.556672 -0.830732
-0.413604 -0.910457 0.227398 -0.973802
-0.997403 -0.0720244 0.601434 -0.798922
-0.844404 -0.535706 0.999898 0.0142885
--0.0862094 -0.996277 -0.701621 -0.71255
--0.680105 -0.733115 0.820976 0.570963
-0.857371 -0.514699 -0.790872 0.611981
-0.594439 0.804141 0.678602 -0.734506
-0.333825 -0.942635 -0.866967 0.498366
-0.993066 0.11756 0.708749 -0.705461
--0.918861 -0.394582 -0.96123 0.275748
--0.381299 0.924452 0.149237 0.988801
--0.737884 -0.674927 0.256283 -0.966602
-0.304888 0.952388 0.90734 0.420397
-0.059522 0.998227 0.946861 0.321642
--0.999493 0.031853 -0.999021 0.0442357
-0.977325 0.211743 -0.792867 0.609395
-0.783294 -0.621652 -0.443294 0.896376
--0.993284 -0.115702 0.565154 -0.824986
-0.956194 -0.292732 -0.136386 0.990656
--0.0810578 0.996709 -0.257756 0.96621
-0.542107 -0.84031 0.734698 0.678394
--0.942878 0.333138 -0.828406 -0.560128
--0.996762 0.0804139 -0.194845 -0.980834
--0.923112 -0.384531 -0.198732 0.980054
-0.747822 0.663899 -0.940917 -0.338637
-0.300737 -0.953707 0.645312 -0.763919
-0.995886 0.0906182 -0.939199 0.343373
-0.43536 -0.900257 0.487581 0.873078
--0.998921 -0.0464429 -0.0663822 -0.997794
-0.858028 0.513603 -0.862408 -0.506213
--0.929478 -0.368878 0.996717 0.0809685
--0.455442 0.890265 -0.986749 -0.162253
-0.892792 0.45047 -0.923107 0.384544
--0.982465 0.186445 0.995458 0.0952016
-0.926214 0.376997 0.576711 0.816948
--0.276945 -0.960886 -0.977409 -0.211358
--0.746375 0.665526 -0.845542 0.53391
-0.247419 0.968909 0.991411 0.130785
--0.998216 -0.0597088 0.952714 -0.303867
--0.819439 0.573167 -0.222624 0.974904
-0.15497 -0.987919 -0.989037 0.147665
-0.435817 -0.900035 0.442644 0.896697
-0.991497 0.13013 0.88529 0.465039
-0.988131 -0.153612 -0.959471 -0.281807
-0.92438 0.381472 0.130707 0.991421
--0.995139 -0.0984822 -0.904995 -0.425423
-0.998252 0.0591012 0.932464 -0.361262
-0.961204 -0.275838 -0.946628 -0.322328
-0.977061 0.212961 -0.862429 0.506178
-0.971824 -0.235708 0.230711 0.973022
-0.197017 0.9804 0.555435 -0.83156
-0.708624 -0.705586 -0.977013 -0.213178
--0.837788 0.545996 0.353895 -0.935285
--0.275217 -0.961382 -0.923846 -0.382765
--0.925459 0.378847 0.403089 -0.915161
--0.989002 -0.147899 -0.649708 0.760184
--0.999645 -0.026647 -0.88857 0.458741
--0.955982 0.293425 -0.0643399 0.997928
--0.563719 0.825967 -0.980485 -0.196595
-0.997329 0.0730446 0.516715 0.856158
--0.970963 -0.239228 0.560651 -0.828052
-0.828645 -0.559774 -0.961348 -0.275338
--0.519254 0.85462 -0.370954 -0.928651
--0.759103 -0.650971 -0.199119 0.979975
--0.709748 0.704455 -0.930769 -0.365609
--0.80313 0.595804 0.544727 -0.838613
--0.415279 0.909694 0.401747 -0.915751
-0.0609048 -0.998144 0.982206 -0.187809
--0.775989 -0.630746 0.649727 -0.760168
-0.468855 -0.883275 0.104484 -0.994527
-0.522195 0.852826 -0.0355664 0.999367
--0.743382 0.668867 -0.530354 0.847776
--0.590644 -0.806932 0.938038 -0.346532
-0.406776 0.913528 -0.496232 0.86819
--0.631813 0.775121 0.747769 -0.66396
--0.238158 -0.971226 0.466167 0.884697
--0.314833 -0.949147 0.818435 -0.574599
--0.676519 0.736425 0.457404 -0.889259
--0.49682 -0.867854 -0.156124 -0.987737
--0.10548 -0.994421 -0.414992 0.909825
--0.483875 0.875137 0.970797 0.239902
-0.752962 -0.658064 -0.908079 -0.418798
--0.776395 -0.630246 0.599408 -0.800444
--0.0724363 -0.997373 0.567937 -0.823072
--0.839879 -0.542773 0.678625 0.734485
-0.957289 0.289132 -0.49092 -0.871205
--0.0758709 0.997118 0.256692 0.966493
-0.825118 0.564961 -0.939944 -0.341328
--0.99999 0.00448759 0.900986 -0.433849
--0.780816 -0.624761 -0.0616757 -0.998096
-0.781646 0.623722 -0.193452 -0.98111
-0.972027 0.234869 0.145889 -0.989301
--0.996745 -0.0806245 -0.215522 0.976499
--0.938918 0.34414 -0.839347 0.543595
--0.584975 -0.811051 0.940441 0.339957
-0.764234 -0.644939 0.557617 -0.830098
-0.549034 -0.8358 -0.00134922 0.999999
-0.980736 -0.195337 0.689135 -0.724633
--0.597196 -0.802095 0.391795 -0.920053
--0.953222 0.30227 0.75929 0.650752
-0.287287 -0.957845 -0.648664 -0.761075
-0.372195 -0.928155 0.905536 0.42427
-0.506429 -0.862282 -0.954385 0.298579
--0.9426 0.333925 -0.872208 -0.489135
-0.999295 -0.037541 -0.817703 0.575641
-0.348404 0.937344 -0.515414 0.856941
-0.548804 0.835951 0.0261416 -0.999658
--0.350243 -0.936659 -0.338474 0.940976
--0.925986 -0.377557 0.52629 0.850305
-0.452826 -0.891599 -0.991481 0.13025
--0.89449 0.447087 -0.715659 -0.69845
-0.778476 -0.627674 0.306931 0.951732
--0.245768 -0.969329 0.954892 0.296953
-0.976253 0.216632 -0.988041 0.154189
--0.682415 -0.730965 0.957661 0.287898
--0.31971 0.947515 0.429906 0.902874
-0.871922 0.489646 0.619379 0.785092
-0.780633 -0.62499 -0.0324269 0.999474
--0.799108 0.601188 -0.095911 -0.99539
--0.87411 -0.485728 0.898663 0.43864
--1 0.000292825 0.999571 -0.0292783
--0.999594 -0.0285047 -0.958033 0.286659
--0.735576 -0.677442 0.565052 -0.825055
-0.996768 0.0803326 -0.186839 0.982391
-0.948347 -0.317236 0.648296 -0.761389
--0.119146 0.992877 0.811881 -0.583823
-0.813574 -0.581462 0.711296 0.702893
-0.255529 -0.966802 0.760513 0.649322
-0.0770946 0.997024 0.136438 -0.990649
--0.952251 -0.305317 0.92538 -0.37904
-0.04866 0.998815 0.154903 0.98793
-0.977142 0.212587 -0.84246 0.538759
--0.637805 0.770198 0.99878 0.0493768
-0.885903 0.463871 -0.442813 -0.896614
--0.992042 0.125907 0.998326 -0.0578336
--0.608441 0.793599 -0.845129 0.534563
--0.126154 0.992011 0.996578 0.0826632
--0.649689 -0.7602 -0.031716 -0.999497
-0.956434 0.291949 -0.216957 -0.976181
-0.491358 -0.870958 0.4542 0.8909
--0.97199 0.235024 0.16163 0.986851
--0.986048 0.166464 -0.526546 0.850147
--0.164168 -0.986432 -0.70849 0.705721
-0.4667 0.884416 -0.138709 0.990333
--0.998694 -0.0510989 0.389166 -0.921168
--0.609017 0.793157 -0.881668 0.471869
--0.987206 0.159448 -0.953778 0.300513
--0.845762 -0.53356 0.964243 -0.26502
-0.0202963 0.999794 -0.443032 -0.896506
-0.693025 -0.720913 0.390605 0.920558
-0.480124 0.877201 0.982778 0.184791
--0.0205891 -0.999788 -0.46909 -0.88315
--0.713293 0.700866 -0.638099 -0.769954
-0.241084 -0.970504 0.707783 -0.70643
-0.059793 -0.998211 0.955243 -0.295823
--0.454109 0.890946 -0.999911 -0.0133165
-0.934867 0.354998 0.162205 -0.986757
--0.531775 -0.846886 0.887392 0.461016
-0.74533 0.666696 -0.751799 -0.659392
--0.281869 0.959453 -0.955399 -0.295319
-0.247814 0.968808 0.995918 0.0902576
--0.629638 0.776889 0.534977 -0.844867
--0.479393 0.8776 0.963991 -0.265935
--0.904231 -0.427044 0.990247 0.139323
--0.918174 0.396177 -0.994414 -0.10555
-0.365082 -0.930975 0.946998 -0.321241
-0.889073 -0.457766 -0.911363 0.411604
--0.27718 -0.960818 -0.982285 -0.187391
--0.944917 0.32731 -0.351114 -0.936333
-0.983984 -0.178259 0.599527 0.800355
--0.973027 -0.230693 -0.279208 -0.960231
-0.841524 -0.540219 0.867271 -0.497837
--0.940581 0.339569 -0.996097 0.0882619
--0.0678236 0.997697 0.875471 0.483271
-0.870518 0.492137 0.372726 0.927941
-0.956704 -0.291063 -0.306343 0.951921
--0.750025 -0.661409 -0.999916 -0.0129763
--0.937851 -0.347038 -0.634357 -0.773041
--0.964444 -0.264289 -0.043111 0.99907
-0.64605 -0.763295 0.431361 0.902179
--0.900139 0.435603 0.463846 -0.885916
--0.231218 -0.972902 -0.226988 0.973898
--0.776435 -0.630198 0.594413 -0.80416
-0.336764 -0.941589 -0.978094 0.208162
--0.999948 -0.0101532 0.527332 0.849659
--0.675495 0.737364 0.329919 -0.944009
-0.685977 0.727623 0.980779 -0.195119
--0.931214 -0.364472 0.923943 -0.382529
-0.983675 0.179955 0.727971 -0.685608
-0.0261766 0.999657 -0.866009 -0.500028
-0.612174 -0.790723 -0.995702 0.0926097
-0.0694265 0.997587 0.786881 -0.617105
--0.793104 -0.609086 -0.885752 0.464159
-0.400467 0.916311 -0.93522 0.354067
-0.363236 -0.931697 0.865183 -0.501456
-0.969514 0.245037 0.929796 -0.368076
-0.999266 -0.0382961 -0.77191 0.635731
--0.103557 -0.994624 -0.582094 0.813121
--0.0332941 -0.999446 -0.982299 0.18732
--0.931689 0.363256 0.866285 0.49955
--0.279199 -0.960233 -0.999767 0.021606
--0.198169 0.980168 0.454136 0.890932
--0.587801 0.809005 0.999998 0.00197627
-0.588675 0.80837 0.993958 -0.109763
--0.96447 -0.264191 -0.0329783 0.999456
--0.909833 0.414974 0.370892 0.928676
-0.798474 0.602029 -0.200007 0.979795
-0.548639 0.83606 0.0459445 -0.998944
-0.9973 -0.0734371 0.482627 -0.875826
--0.610973 -0.791651 -0.970261 -0.24206
-0.992608 0.121363 0.921045 -0.389456
--0.865719 0.50053 -0.552044 -0.833815
--0.628931 0.777461 0.455979 -0.88999
--0.694213 -0.71977 0.234296 -0.972165
-0.17975 0.983712 0.71352 0.700635
-0.636792 -0.771036 0.996641 -0.0818937
-0.99967 -0.025686 -0.840434 -0.541914
--0.592467 0.805595 0.836513 0.547946
--0.874011 0.485906 0.889513 -0.45691
-0.987973 0.154629 -0.983352 0.181711
--0.820828 -0.571176 -0.45044 -0.892807
--0.150829 0.98856 -0.843376 0.537324
--0.0856648 0.996324 -0.661646 0.749816
-0.303106 0.952957 0.813383 0.581729
--0.966231 0.257679 0.598493 -0.801128
-0.897156 0.441714 -0.196445 0.980515
-0.060356 0.998177 0.9704 0.241503
--0.955654 0.294493 0.0473192 0.99888
-0.346433 -0.938075 -0.682928 -0.730486
-0.995614 -0.093556 -0.998461 -0.0554526
-0.783396 -0.621523 -0.457999 0.888953
--0.997494 -0.070747 0.698551 0.71556
--0.105599 0.994409 -0.404033 -0.914744
-0.042334 0.999104 -0.459754 0.888046
--0.53001 -0.847991 0.772872 0.634561
-0.364561 -0.931179 0.927571 -0.373647
--0.453119 -0.89145 -0.995226 -0.0975943
-0.0873165 -0.996181 -0.776319 0.63034
-0.978534 -0.206086 -0.330635 -0.943759
--0.517361 -0.855767 -0.565798 0.824544
--0.841976 0.539516 0.905813 -0.423678
-0.996312 -0.0858043 -0.672082 -0.740477
-0.876227 0.481899 0.999862 0.0165862
-0.110092 -0.993921 0.0359625 -0.999353
--0.753412 -0.657549 -0.877332 0.479884
--0.316548 0.948577 0.701801 0.712373
--0.696243 -0.717806 -0.0459994 -0.998941
--0.770053 -0.63798 0.997395 0.0721277
--0.576624 -0.81701 0.196724 0.980459
-0.957311 0.289061 -0.497344 -0.867554
--0.662141 -0.74938 -0.993897 0.11031
-0.00665269 0.999978 0.786748 -0.617275
--0.430145 0.90276 0.885605 0.464439
-0.803347 -0.595511 0.574896 -0.818227
--0.950919 0.309439 0.999014 -0.0444067
-0.182997 -0.983114 0.902104 -0.431519
-0.983773 -0.179417 0.689348 0.724431
--0.366269 -0.930509 0.980167 0.198172
-0.114638 0.993407 0.473723 0.880674
-0.172505 -0.985009 0.0584119 -0.998293
--0.451717 -0.892161 -0.96767 -0.25222
-0.707232 0.706981 -0.999842 0.01777
--0.241759 0.970336 0.755142 -0.655561
-0.934874 -0.35498 0.160253 0.987076
--0.676407 0.736528 0.443902 -0.896076
-0.950972 -0.309278 0.999622 -0.0274809
-0.0102689 -0.999947 0.517464 0.855705
-0.963071 0.269248 -0.529234 0.848476
--0.225062 -0.974345 -0.758704 0.651436
--0.196027 -0.980599 0.636487 -0.771288
--0.267842 -0.963463 -0.400165 -0.916443
-0.71517 0.69895 -0.411244 0.911525
--0.279443 -0.960162 -0.998892 0.0470652
-0.229602 -0.973285 -0.38491 -0.922954
-0.773436 -0.633875 0.896146 0.443759
--0.420818 0.907145 0.853774 -0.520644
-0.850555 0.525886 0.387357 -0.92193
--0.993498 -0.113846 0.402067 -0.91561
-0.902793 -0.430076 0.889103 -0.457707
--0.0607969 -0.99815 0.980117 0.198422
--0.918178 -0.396168 -0.994306 0.106558
--0.920066 -0.391764 -0.833187 0.552992
-0.997724 -0.0674359 0.893586 -0.448893
-0.752594 -0.658485 -0.930053 -0.367426
--0.972432 0.233187 -0.0265229 0.999648
--0.927887 0.372861 0.87277 -0.488132
--0.509643 -0.860386 -0.997555 0.069879
--0.914815 0.403874 -0.742459 0.669891
-0.686807 0.72684 0.952195 -0.305492
-0.796289 -0.604916 -0.534106 -0.845418
-0.240009 0.970771 0.625379 0.780321
-0.338216 -0.941069 -0.998461 0.0554524
-0.990826 0.135145 0.549044 0.835793
--0.999998 -0.00180253 0.983798 0.179279
--0.0178713 -0.99984 -0.214743 -0.976671
--0.76974 0.638358 0.992656 -0.120975
--0.951527 0.307564 0.988353 0.152175
--0.999971 0.00760306 0.72462 -0.689149
--0.913191 0.407533 -0.422703 0.906268
-0.513825 0.857895 -0.849 0.528393
-0.203476 0.97908 -0.0703212 -0.997524
-0.637233 0.770671 0.999694 0.0247253
--0.232153 0.972679 -0.132497 -0.991183
-0.883215 -0.468968 0.117192 0.993109
-0.896392 -0.443262 -0.361972 -0.932189
-0.437001 0.899461 0.32111 -0.947042
-0.0537486 0.998554 0.617112 0.786875
-0.995536 0.0943809 -0.999625 -0.0273766
--0.33176 -0.943364 -0.738014 -0.674786
-0.477978 0.878372 0.908835 0.417156
-0.0336808 -0.999433 -0.974317 -0.22518
--0.0691158 0.997609 0.805716 0.592302
--0.0956577 -0.995414 -0.987913 0.155009
--0.0337935 -0.999429 -0.971717 0.236147
-0.604894 0.796306 -0.531731 -0.846913
-0.325139 0.945666 -0.128752 -0.991677
-0.404005 0.914757 -0.732815 0.680428
-0.37685 -0.926274 0.589613 0.807686
--0.679372 -0.733794 0.759909 0.65003
--0.387409 0.921908 -0.489918 0.871769
--0.260237 -0.965545 0.367917 -0.929859
-0.54929 -0.835632 -0.032001 0.999488
-0.736551 0.676382 0.440822 -0.897595
--0.127361 -0.991856 0.979172 -0.203031
--0.550796 0.83464 -0.21067 0.977557
-0.663111 -0.748521 -0.971318 -0.237786
-0.731194 0.682169 0.947419 -0.319996
-0.267392 -0.963588 -0.356976 0.934113
--0.657401 0.753541 -0.867706 0.497078
--0.945726 -0.324965 -0.110474 0.993879
-0.96405 -0.265721 -0.190506 -0.981686
--0.871543 -0.49032 0.556866 0.830603
--0.352208 -0.935922 -0.135014 0.990844
-0.0346546 0.999399 -0.947789 0.318897
--0.999704 -0.0243328 -0.759619 0.650368
--0.730575 -0.682832 0.972525 -0.232799
--0.883777 0.467909 -0.00233603 0.999997
--0.0294351 -0.999567 -0.980529 -0.196375
--0.662867 -0.748737 -0.978534 0.206087
-0.73461 0.678489 0.676508 -0.736436
-0.863922 -0.503626 -0.809219 -0.587506
--0.770638 0.637273 0.999809 0.0195517
--0.72764 0.685959 0.981265 -0.192661
--0.583957 -0.811784 0.890507 0.454969
-0.662952 0.748662 -0.976149 0.217103
--0.986379 -0.164491 -0.684936 -0.728603
-0.57781 -0.816171 0.336528 -0.941674
--0.417008 0.908903 0.567614 -0.823295
--0.524081 0.851668 0.184635 -0.982807
--0.99145 0.13049 0.867846 -0.496833
--0.676372 -0.73656 0.439639 0.898175
-0.958709 0.284388 -0.845942 -0.533275
--0.435552 0.900164 0.468807 0.883301
-1.31802e-05 -1 0.999999 0.00131802
-0.15997 -0.987122 -0.936594 -0.350415
--0.511412 -0.859335 -0.96224 0.272201
--0.748512 -0.663121 -0.971003 -0.239066
-0.790353 -0.612652 -0.999479 -0.0322836
--0.964793 0.263011 0.0892302 -0.996011
-0.991761 -0.128099 0.96138 -0.275226
--0.946548 0.322564 0.142502 -0.989794
--0.860221 0.509922 -0.994769 0.10215
--0.927172 -0.374637 0.763963 0.64526
-0.635276 0.772285 0.961492 0.274834
--0.539426 -0.842033 0.910256 -0.414045
-0.917781 0.397086 -0.999978 0.00670569
-0.0632243 -0.997999 0.999056 0.0434485
-0.870727 0.491766 0.411918 0.911221
-0.369899 -0.929072 0.981824 0.189796
--0.789148 0.614203 -0.986564 0.163377
-0.305987 0.952036 0.949721 0.313097
--0.148341 -0.988936 -0.683005 -0.730414
-0.216732 -0.976231 -0.989569 0.144057
--0.875706 -0.482845 0.99225 0.124258
--0.716178 0.697917 -0.275905 -0.961185
-0.87455 -0.484935 0.934692 -0.355459
-0.784354 0.620314 -0.589094 -0.808065
-0.155805 0.987788 -0.997972 -0.0636525
-0.0760643 0.997103 0.237896 -0.971291
--0.939367 0.342914 -0.902939 0.429769
--0.28337 -0.959011 -0.897711 0.440585
-0.682978 -0.730439 0.976977 -0.213344
--0.9981 0.0616105 0.993019 0.117956
-0.986689 0.16262 -0.810022 -0.586399
--0.73043 -0.682988 0.977257 -0.212057
--0.0988485 0.995102 -0.888723 -0.458445
--0.364859 -0.931063 0.939055 0.343768
-0.0938323 0.995588 -0.999616 -0.0277205
-0.531526 0.847042 0.873459 0.486898
-0.596894 0.80232 0.426188 -0.904634
-0.220593 0.975366 -0.968639 0.248471
--0.77634 -0.630314 0.606399 -0.795161
--0.922581 -0.385803 -0.331551 0.943437
-0.16088 -0.986974 -0.900333 -0.435202
--0.00640851 -0.999979 0.801584 -0.597882
-0.172805 0.984956 0.0888295 0.996047
-0.539567 -0.841943 0.903231 0.429155
--0.998384 -0.0568273 0.826804 -0.562489
--0.333902 0.942608 -0.871028 0.491233
--0.58264 -0.81273 0.805361 0.592784
-0.822776 -0.568365 -0.723797 0.690013
--0.999566 -0.0294611 -0.981038 0.193817
--0.717309 0.696755 -0.117088 -0.993122
--0.376534 -0.926403 0.616847 -0.787083
-0.861101 0.508435 -0.997518 0.070414
-0.0274436 -0.999623 -0.922268 0.38655
--0.778543 -0.627591 0.296785 -0.954944
-0.360018 0.932945 0.644531 0.764579
-0.991692 -0.128638 0.945003 -0.327061
-0.566554 -0.824025 -0.856924 -0.515443
--0.658109 -0.752922 -0.910564 -0.413369
--0.404381 -0.914591 -0.704241 0.709961
--0.214955 -0.976624 -0.947162 -0.320755
-0.703247 0.710946 -0.855448 -0.517889
--0.250267 -0.968177 0.986771 -0.162118
--0.510012 0.860167 -0.993639 -0.112608
--0.776979 0.629527 0.522832 0.852436
--0.810121 0.586263 0.982363 0.186982
--0.904228 -0.427051 0.990136 0.140109
--0.94622 -0.323523 0.0416232 0.999133
--0.953927 -0.30004 0.587823 -0.80899
-0.217064 -0.976157 -0.993898 0.110304
-0.530667 0.84758 0.819712 0.572776
-0.764318 0.64484 0.568338 0.822795
--0.92852 -0.371281 0.942844 0.333236
-0.844162 -0.536088 0.999521 -0.0309623
--0.503061 0.864251 -0.769057 0.63918
--0.813596 0.58143 0.708596 0.705615
--0.873262 0.48725 0.808992 -0.58782
--0.646677 -0.762764 0.355885 -0.93453
-0.94658 0.32247 0.152399 0.988319
--0.441563 0.89723 -0.179943 0.983677
-0.623924 0.781485 -0.168008 0.985786
--0.903673 0.428224 0.963677 -0.26707
-0.99746 0.0712281 0.663239 0.748408
-0.139928 0.990162 0.0981782 -0.995169
-0.403263 0.915084 -0.785533 0.61882
--0.731863 -0.681452 0.911527 -0.411239
--0.87339 0.487021 0.824164 -0.566352
-0.517627 0.855606 -0.539938 0.841705
--0.976173 0.216994 -0.99308 -0.117439
-0.941475 0.337082 -0.984566 0.175016
-0.573211 -0.819407 -0.217331 -0.976098
-0.421756 0.90671 0.902939 0.429769
-0.422442 0.90639 0.932883 0.360178
--0.936787 -0.3499 -0.372699 -0.927952
--0.995022 -0.099653 -0.8488 -0.528714
--0.898826 -0.438307 0.180712 0.983536
-0.964044 -0.265742 -0.192615 -0.981274
-0.85717 0.515034 -0.76635 -0.642424
-0.708684 0.705526 -0.975162 0.221493
--0.999361 -0.0357537 -0.907065 -0.420992
-0.688815 -0.724937 0.832536 0.553972
--0.221914 0.975066 -0.926218 -0.376988
--0.740774 -0.671755 -0.16913 -0.985594
--0.908735 0.417375 0.600348 0.799739
-0.33539 0.942079 -0.937446 -0.34813
-0.953219 -0.302281 0.760042 0.649874
-0.496669 -0.86794 -0.138904 0.990306
--0.751912 -0.659263 -0.963024 0.269416
--0.846994 -0.531603 0.877814 -0.479002
-0.750021 -0.661414 -0.999907 0.01364
-0.923528 -0.383532 -0.0917287 -0.995784
--0.113021 -0.993593 0.324714 0.945812
--0.39454 0.918879 -0.959944 0.28019
-0.9485 -0.316777 0.684415 -0.729093
-0.968003 -0.25094 0.973123 -0.230287
--0.999955 0.00951218 0.58068 -0.814132
--0.91004 -0.41452 0.324031 -0.946047
--0.723231 0.690606 0.671589 -0.740924
--0.525742 -0.850644 0.371727 0.928342
-0.978305 0.207169 -0.432891 0.901446
--0.913695 0.4064 -0.531549 0.847027
--0.998385 -0.0568018 0.825365 -0.564599
-0.224763 0.974413 -0.778288 0.627907
--0.754341 -0.656483 -0.800955 0.598725
-0.9154 0.402546 -0.831534 -0.555474
--0.126541 -0.991961 0.992594 -0.121476
-0.39028 0.920696 -0.73361 -0.679571
-0.989459 0.144812 -0.384906 0.922956
-0.402426 -0.915452 -0.838713 -0.544573
--0.37299 0.927835 0.865909 0.500202
--0.983649 -0.180096 0.737691 -0.675138
--0.386448 -0.922311 -0.396581 -0.918
--0.821929 -0.56959 -0.61345 -0.789734
-0.607681 0.794181 -0.790178 -0.612878
-0.736128 0.676843 0.496074 -0.86828
-0.260931 -0.965357 0.300147 0.953893
-0.819319 0.573338 -0.202275 -0.979329
-0.953071 -0.302748 0.790957 0.611872
--0.832622 0.553842 -0.546042 -0.837758
--0.389171 -0.921166 -0.646661 -0.762778
-0.514581 -0.857442 -0.799229 -0.601027
--0.556534 0.830825 -0.784138 0.620587
--0.871279 0.490788 0.511464 -0.859305
-0.584863 0.811132 0.935617 0.353015
--0.264686 0.964335 -0.0842097 0.996448
--0.720242 0.693723 0.29983 -0.953992
--0.592552 -0.805532 0.830696 -0.556727
-0.640611 -0.767866 0.9154 0.402546
-0.0418124 -0.999125 -0.505473 -0.862842
--0.373692 0.927553 0.825625 0.56422
-0.785791 -0.618492 -0.759142 0.650925
-0.367841 0.929889 0.999535 0.030493
-0.425775 -0.904829 1 -0.000459514
-0.779284 0.626671 0.18211 -0.983278
-0.332979 -0.942934 -0.818839 0.574023
-0.75399 -0.656886 -0.831789 -0.555092
-0.523022 -0.852319 0.0613174 -0.998118
-0.998111 -0.0614355 0.990798 0.13535
-0.841167 -0.540776 0.832486 -0.554046
--0.56978 -0.821797 -0.594976 0.803743
--0.315283 0.948998 0.790238 0.6128
--0.924805 0.380443 0.24006 -0.970758
--0.537763 0.843096 0.973792 0.227438
-0.79968 -0.600427 -0.000822506 -1
--0.864127 -0.503275 -0.784646 0.619944
--0.966506 0.256646 0.680553 -0.732699
--0.370965 -0.928647 0.953646 -0.300931
--0.419449 -0.907779 0.765843 0.643027
--0.843449 0.53721 0.986606 -0.163121
-0.823197 0.567756 -0.772839 -0.634603
--0.672977 0.739663 -0.00475455 -0.999989
-0.0266035 0.999646 -0.886565 -0.462605
--0.929843 0.367957 0.999838 0.0180027
-0.223333 -0.974742 -0.861727 -0.507373
--0.795286 0.606235 -0.666179 -0.745792
--0.108717 -0.994073 -0.102135 0.994771
-0.515347 0.856982 -0.742402 0.669955
-0.95959 0.281403 -0.968594 -0.248647
--0.83296 -0.553333 -0.493935 0.869499
-0.87778 -0.479064 0.95333 0.301931
--0.619607 0.784912 -0.659404 -0.751789
--0.996765 0.080375 -0.191012 -0.981588
-0.768359 0.640019 0.94368 0.33086
-0.446398 0.894835 -0.659749 -0.751486
--0.827131 -0.562008 -0.999959 0.0090606
-0.859343 -0.5114 -0.962643 0.270772
-0.924384 0.381463 0.131629 0.991299
--0.911618 0.411038 -0.0522713 0.998633
-0.826302 -0.563228 -0.990434 0.137987
-0.983847 -0.17901 0.658805 0.752314
-0.857212 0.514964 -0.771545 -0.636175
-0.273983 0.961735 -0.867237 -0.497896
--0.841764 0.539846 0.888467 -0.45894
--0.895141 0.445783 -0.606633 -0.794982
-0.79655 0.604573 -0.497182 0.867646
-0.999081 -0.0428575 -0.412616 0.910905
-0.75075 -0.660586 -0.995328 -0.0965478
-0.265943 -0.963989 -0.213034 0.977045
--0.457969 -0.888968 -0.901736 0.432287
--0.278346 0.960481 -0.997746 0.067105
-0.766234 -0.642562 0.784676 -0.619906
-0.96574 0.259513 0.43657 0.89967
--0.967546 -0.252696 0.915609 0.402069
--0.476042 0.879422 0.795708 -0.60568
-0.46864 -0.883389 0.0802647 -0.996774
-0.922668 -0.385594 -0.310099 -0.950704
-0.925964 0.377612 0.521243 0.853408
-0.998561 -0.0536361 0.608205 0.79378
-0.993891 -0.110371 0.0639707 0.997952
--0.562346 -0.826902 -0.999498 0.031692
-0.850822 -0.525455 0.340153 0.94037
--0.529191 0.848503 0.708066 -0.706146
-0.626988 0.779029 0.222025 0.975041
-0.990038 0.140804 0.00986461 0.999951
--0.995499 -0.0947681 -0.997805 -0.0662225
--0.0807812 -0.996732 -0.23085 -0.972989
-0.922789 -0.385306 -0.280255 -0.959926
--0.884073 -0.467349 -0.0656939 -0.99784
-0.483336 0.875435 0.983726 -0.179675
-0.545487 -0.838119 0.410031 0.912072
--0.953453 -0.301542 0.707409 -0.706804
--0.0364966 0.999334 -0.873293 -0.487195
-0.955502 0.294983 0.0985222 -0.995135
-0.965368 -0.260891 0.30413 -0.952631
--0.412817 -0.910814 0.142458 0.989801
-0.582766 0.81264 0.814442 0.580246
-0.9533 -0.302025 0.742267 0.670104
--0.911593 -0.411093 -0.0462298 -0.998931
-0.938358 -0.345664 -0.740429 0.672134
--0.705072 -0.709136 -0.959007 -0.283384
-0.648585 -0.761142 0.113159 0.993577
-0.496892 -0.867812 -0.164336 0.986404
--0.496887 -0.867816 -0.163721 -0.986507
--0.819873 0.572545 -0.295877 0.955226
-0.526632 0.850093 0.466681 0.884425
--0.99948 0.0322514 -0.996465 0.0840117
--0.535701 0.844408 0.999889 -0.0149235
-0.166637 0.986018 -0.511522 0.85927
--0.996311 0.0858132 -0.672742 -0.739877
--0.43923 0.898375 0.0788569 0.996886
-0.721633 -0.692276 0.484033 -0.87505
--0.802592 0.596528 0.466923 -0.884298
--0.529837 -0.848099 0.759783 0.650177
-0.991758 0.128124 0.960677 0.277669
--0.87859 0.477578 0.888861 0.458178
-0.44708 0.894494 -0.715059 -0.699064
-0.0475901 -0.998867 0.0483965 -0.998828
--0.626739 0.779229 0.190708 -0.981647
-0.0227895 -0.99974 -0.650579 0.759438
-0.897445 -0.441126 -0.131856 -0.991269
-0.311209 0.950341 0.973528 -0.228566
--0.323192 0.946333 0.0765484 0.997066
-0.408079 0.912947 -0.367792 0.929908
-0.0170264 0.999855 -0.13154 -0.991311
--0.0651098 0.997878 0.973116 0.230315
-0.663063 -0.748564 -0.972819 -0.231568
--0.8026 0.596518 0.468072 -0.88369
-0.239315 0.970942 0.567977 0.823044
--0.912173 0.409805 -0.186347 0.982484
--0.546932 0.837177 0.247384 0.968918
-0.519795 -0.854291 -0.311456 -0.950261
--0.279702 0.960087 -0.99726 -0.0739733
-0.454747 0.890621 -0.996399 0.0847924
--0.999646 -0.0266009 -0.886446 0.462832
--0.320373 -0.947292 0.365728 -0.930722
--0.517626 0.855607 -0.539993 -0.841669
-0.999984 -0.00565295 0.844429 -0.535667
-0.971524 0.236939 0.351797 -0.936076
--0.9299 -0.367813 0.99944 -0.0334683
--0.99581 0.091444 -0.964411 -0.264408
--0.639583 0.768722 0.960903 0.276886
--0.925675 0.37832 0.454475 -0.89076
-0.744681 -0.667421 -0.684122 0.729368
-0.990828 0.135133 0.550053 0.83513
--0.966517 0.256601 0.683939 -0.729539
--0.335523 0.942032 -0.942269 0.334857
-0.322104 0.946704 0.19049 -0.981689
-0.210314 0.977634 -0.695584 -0.718445
--0.523773 -0.851858 0.149013 0.988835
-0.953799 -0.300445 0.621603 0.783332
-0.620005 0.784598 -0.620456 0.784242
-0.646552 -0.76287 0.371083 0.9286
--0.0239395 0.999713 -0.733451 0.679743
--0.463285 0.886209 -0.501074 -0.865405
-0.773767 0.63347 0.871719 -0.490006
--0.996033 -0.0889798 -0.870288 0.492543
-0.356197 0.934411 0.287054 0.957914
--0.998902 -0.0468568 -0.024986 -0.999688
--0.151971 -0.988385 -0.899689 -0.436532
--0.70784 -0.706373 -0.994627 0.103522
-0.585558 -0.81063 0.962434 -0.271516
--0.923362 -0.38393 -0.134605 0.990899
-0.876164 -0.482014 0.99956 -0.0296619
-0.988245 0.152879 -0.935945 0.352146
-0.912822 0.408357 -0.339299 -0.940678
--0.737307 -0.675558 0.33796 -0.941161
--0.642346 0.766415 0.801794 0.5976
-0.915116 0.40319 -0.790405 -0.612585
--0.556245 -0.831018 -0.762105 -0.647454
-0.879215 -0.476425 0.821346 0.570431
--0.948151 -0.317819 0.600303 0.799773
-0.994587 0.103908 -0.553038 -0.833156
--0.633625 0.77364 0.881398 -0.472375
--0.918189 0.396143 -0.994009 -0.1093
-0.971423 0.237356 0.391594 -0.920138
-0.413893 -0.910325 0.258206 -0.96609
--0.0651051 -0.997878 0.973223 -0.229861
-0.0881928 0.996103 -0.828695 -0.559701
-0.977012 0.213182 -0.873687 0.486489
--0.81595 0.578122 0.372318 0.928105
-0.383393 0.923585 -0.076688 -0.997055
-0.43849 0.898736 0.160559 -0.987026
--0.0865227 0.99625 -0.723678 0.690138
--0.932499 0.361172 0.733988 0.679163
--0.999614 -0.0277765 -0.934629 0.355625
--0.698043 0.716056 -0.292671 0.956213
-0.960937 -0.276766 -0.973298 -0.229546
--0.330105 -0.943944 -0.608947 -0.793211
-0.730828 -0.682562 0.963227 0.268688
--0.419586 -0.907715 0.775461 0.631396
--0.433116 0.901338 0.68779 0.725909
--0.125362 -0.992111 0.999996 -0.00293763
-0.0389304 0.999242 -0.73003 0.683415
-0.0549772 0.998488 0.70902 0.705189
-0.0277843 -0.999614 -0.934907 0.354894
--0.372511 0.928028 0.890572 0.454842
-0.634002 -0.773332 0.903316 -0.428976
-0.748272 0.663392 -0.961687 -0.274148
--0.715062 0.699061 -0.425284 -0.90506
--0.995313 -0.0967052 -0.966163 -0.257931
-0.973949 0.226769 -0.633495 -0.773747
-0.900162 -0.435555 0.468543 -0.88344
--0.979877 -0.199603 0.319428 0.947611
--0.792556 0.609799 -0.92386 -0.382731
--0.653977 0.756514 -0.562296 0.826936
--0.904498 -0.426478 0.997019 0.0771613
-0.227082 0.973876 -0.608299 0.793708
-0.797486 0.603337 -0.357159 0.934043
-0.345046 -0.938586 -0.783037 -0.621975
-0.014249 0.999898 0.145332 -0.989383
--0.999512 -0.031248 -0.999867 0.0162797
-0.999152 -0.0411673 -0.560094 0.828429
--0.892397 0.451252 -0.953213 -0.302301
-0.117611 -0.99306 0.712346 -0.701828
--0.91684 0.399255 -0.97374 0.227662
-0.904586 -0.42629 0.998406 -0.056447
-0.628989 0.777414 0.462614 0.88656
--0.770526 0.637409 0.999998 0.00193593
--0.701003 -0.713159 -0.652751 -0.757572
-0.990316 0.138833 0.207395 0.978257
-0.901888 0.43197 0.774237 0.632896
-0.946413 -0.32296 0.100973 -0.994889
-0.0135891 -0.999908 0.210268 0.977644
--0.396532 0.918021 -0.997747 0.0670919
-0.374503 0.927226 0.773176 -0.634191
--0.999144 -0.0413656 -0.543541 -0.839383
--0.704237 -0.709965 -0.919082 -0.394067
-0.954489 0.298247 0.426369 -0.904549
--0.72019 -0.693777 0.2926 0.956235
-0.999882 0.0153651 0.0342169 0.999414
--0.921173 -0.389154 -0.645254 0.763968
--0.544101 -0.83902 0.554523 -0.832169
-0.906748 -0.421672 0.898955 0.438041
-0.82496 0.565191 -0.930057 -0.367416
-0.942864 0.333178 -0.830798 0.556574
--0.273992 0.961732 -0.867711 0.49707
--0.505133 -0.863042 -0.898934 -0.438085
--0.110367 0.993891 0.063616 -0.997974
--0.798753 0.601659 -0.154374 -0.988012
--0.984333 0.176322 0.43142 0.902151
--0.995363 -0.0961939 -0.978133 -0.207979
-0.817164 -0.576406 0.170438 0.985368
--0.976239 0.216694 -0.989004 -0.147889
-0.931666 -0.363316 0.869497 0.493939
--0.476298 -0.879284 0.81297 0.582305
-0.808539 -0.588442 0.996702 -0.0811533
-0.687894 -0.725811 0.895992 0.44407
-0.383982 -0.92334 -0.140157 0.990129
--0.247922 0.96878 0.996857 -0.0792239
--0.999834 0.0182177 -0.248445 -0.968646
-0.508453 -0.861089 -0.997669 0.0682384
--0.642081 0.766636 0.821944 0.569568
--0.940372 0.340148 -0.988782 0.149368
--0.854101 -0.520108 -0.276491 -0.961017
--0.449183 -0.89344 -0.858305 -0.513139
--0.667566 -0.74455 -0.669775 0.742564
-0.831855 0.554993 -0.656377 0.754433
--0.31798 0.948097 0.586642 0.809847
--0.415124 -0.909765 0.386114 0.922451
--0.214052 -0.976822 -0.913471 -0.406903
--0.33251 0.9431 -0.789299 0.614009
-0.0283627 0.999598 -0.953865 -0.300236
--0.703108 0.711083 -0.845152 0.534525
-0.096176 0.995364 -0.978505 0.206221
--0.541566 0.840658 0.776837 0.629701
--0.899853 0.436194 0.404648 -0.914473
--0.983625 -0.180226 0.746553 -0.665326
-0.999086 0.0427493 -0.422462 -0.90638
--0.334215 -0.942497 -0.886878 -0.462004
-0.894108 -0.447851 -0.772599 -0.634895
--0.99097 0.134081 0.635433 -0.772156
-0.242003 0.970275 0.771398 0.636353
-0.472489 -0.881337 0.493925 -0.869505
-0.93837 -0.345633 -0.742639 0.669692
-0.577983 0.816049 0.35641 0.93433
--0.999991 0.00432636 0.907863 -0.419267
-0.555324 -0.831634 -0.685842 0.727751
-0.989888 0.141849 -0.0955677 0.995423
--0.379984 0.924993 0.287885 0.957665
-0.667994 0.744167 -0.626031 0.779798
--0.992308 -0.123792 0.987956 -0.154736
-0.603298 0.797516 -0.352564 -0.935788
--0.999412 0.0342928 -0.958711 0.284383
-0.975246 -0.221122 -0.95376 0.300569
--0.100482 -0.994939 -0.801827 0.597556
-0.479557 0.877511 0.968795 0.247864
--0.815678 -0.578507 0.415612 -0.909542
-0.468597 -0.883412 0.0754841 -0.997147
--0.984455 0.175636 0.367604 0.929983
--0.187698 0.982227 0.999482 0.0321947
--0.96324 -0.268641 -0.474695 0.880151
-0.161699 -0.98684 -0.861166 -0.508323
--0.987155 -0.159763 -0.943705 -0.330789
-0.868288 -0.496061 -0.0692734 -0.997598
-0.997817 0.066039 0.947483 0.319806
-0.668916 -0.743338 -0.524806 -0.851222
--0.564952 0.825124 -0.940307 -0.340327
--0.969576 -0.24479 0.920122 -0.391633
-0.700082 -0.714063 -0.54982 0.835283
-0.966492 0.256696 0.676706 0.736254
--0.976536 0.215356 -0.95953 -0.281605
--0.598018 0.801483 0.295595 0.955313
--0.0151722 0.999885 0.0534926 0.998568
--0.271601 0.96241 -0.718793 0.695224
--0.284143 0.958782 -0.859286 -0.511495
--0.824724 0.565535 -0.913927 0.405879
-0.267435 -0.963576 -0.361081 0.932534
-0.639564 0.768738 0.961575 -0.274542
--0.896605 0.442831 -0.316679 -0.948533
-0.78968 0.613519 -0.997005 -0.0773313
--0.144844 0.989455 -0.387889 0.921706
-0.944528 -0.328432 -0.459637 -0.888107
--0.0128786 0.999917 0.279143 0.96025
-0.110827 -0.99384 0.109755 -0.993959
-0.848524 -0.529158 0.705321 0.708888
-0.99615 -0.0876607 -0.797627 -0.60315
diff --git a/data/points/tore3D_1307.off b/data/points/tore3D_1307.off
deleted file mode 100644
index e214ac4b..00000000
--- a/data/points/tore3D_1307.off
+++ /dev/null
@@ -1,1309 +0,0 @@
-OFF
-1307 0 0
--1.081352 -0.451815 0.237511
--1.062873 -0.492063 -0.246058
--0.490280 -0.890039 0.299674
--1.094597 -0.620156 0.153419
--0.517128 -1.189962 -0.039580
-1.152877 0.300175 -0.231559
-0.502337 1.174528 0.114471
--0.299269 -1.235308 -0.128350
-0.559591 1.172809 -0.019004
-0.184193 -0.676264 -0.024016
--0.888412 0.748820 -0.252659
--0.859062 -0.581840 0.297612
-0.293395 -1.216582 -0.163670
-0.393949 -1.126922 -0.228892
-0.441284 -1.075139 -0.252409
--0.658443 0.286084 0.102036
--0.770782 -0.787327 -0.282279
--0.406644 1.191333 -0.151820
-0.421148 0.751386 0.266188
--0.337991 -1.233999 0.109125
--0.576506 0.405645 -0.054051
-0.359474 0.613240 0.079974
--0.455484 -0.568690 -0.127880
-0.702136 -0.235409 -0.150928
-0.091056 -0.696011 0.037399
--0.064213 -1.043207 -0.296606
--0.066480 -0.708601 -0.083866
--0.866010 -0.584473 -0.296793
-0.476020 0.521113 0.058829
-0.470937 0.518518 -0.020041
-0.436955 0.578033 0.118941
-0.510216 0.479447 0.010043
-0.552069 0.434267 -0.037525
-0.570514 0.483559 0.162698
-0.520778 0.488742 0.091457
-0.007764 -1.064538 0.292870
--0.050586 -1.121647 0.273674
-0.055839 -1.248122 0.166563
--0.032797 -1.208186 0.215517
--0.111026 -1.277187 0.102083
--0.108199 -1.228175 0.189078
--0.130166 -1.089441 0.283875
--0.152281 -0.988000 0.299890
--0.257364 -1.167207 0.227592
--0.171612 -1.165220 0.241502
--1.162998 0.381345 -0.199780
--1.118806 0.446593 -0.219113
--0.969520 0.369639 -0.297369
--1.015149 0.442441 -0.279944
--0.945706 0.502039 -0.291395
--0.907852 0.668109 -0.271495
--0.989109 0.583976 -0.260348
--1.151615 0.505514 -0.153644
--1.207510 0.471993 -0.044521
--1.104315 0.650680 -0.102654
--1.092710 0.584417 -0.180772
--0.520165 0.523045 0.145339
--0.908993 0.242970 0.293971
--0.810558 0.265720 0.261300
--0.897194 0.450947 0.299838
--0.801677 0.368615 0.275680
--0.618631 0.339910 -0.058175
--0.745800 0.194272 0.193649
--0.764778 0.089444 0.192796
--0.677218 0.179465 -0.017122
--0.951381 0.107469 -0.296882
--1.044006 0.122763 -0.295486
--1.130206 0.327437 -0.242377
--1.039272 0.319024 -0.286828
--1.006740 0.250370 -0.297517
--1.074288 0.196042 -0.285418
--1.179201 0.271080 -0.214486
--1.159801 0.205309 -0.241580
--1.262356 0.149537 -0.128957
--1.209803 0.141532 -0.206239
--1.103598 0.056448 -0.281019
--1.069017 -0.026030 -0.291850
--1.230492 -0.003439 -0.192273
--1.186921 0.066026 -0.233374
--1.239215 0.383964 -0.040221
--1.221544 0.353027 -0.127998
--1.231122 0.282629 -0.144722
--1.265581 0.224586 -0.093610
--1.278661 0.235723 -0.002121
--1.258566 0.316739 0.036060
--1.142814 0.618337 0.016377
--1.186973 0.519848 0.048538
--1.002081 0.324515 0.294944
--0.998092 0.428671 0.287072
--1.081725 0.504658 0.228721
--1.161877 0.464839 0.162892
--1.228669 0.307236 0.137309
--1.223687 0.221595 0.175255
--1.094190 0.299505 0.267834
--1.172804 0.362343 0.194898
--1.287785 0.080944 -0.076717
--1.278902 0.004250 -0.110779
--1.296965 0.086769 0.015989
--1.290442 0.014796 0.076047
--1.257240 0.161846 0.135908
--1.285433 0.163110 0.051651
--0.886853 0.152690 -0.282767
--0.904457 0.223940 -0.291991
--0.853657 0.340015 -0.288701
--0.662561 0.323217 -0.144815
--0.688153 0.235729 -0.124945
--0.746102 0.209917 -0.198615
--0.825513 0.260841 -0.268220
--0.814460 0.106161 -0.241124
--0.751881 0.125125 -0.182955
--0.694463 0.087754 -0.002227
--0.718096 0.030274 0.104055
--0.725588 -0.037936 -0.124016
--0.715162 0.057103 -0.100962
--0.589244 0.833226 -0.299481
--0.698686 0.797210 -0.293987
--0.724145 0.963727 -0.218762
--0.772661 0.863564 -0.254443
--0.952389 0.746095 -0.214405
--1.037783 0.734366 -0.127409
--0.906947 0.888998 -0.130794
--0.879694 0.826349 -0.216987
--0.708976 0.691352 -0.299681
--0.795825 0.632666 -0.299354
--1.094557 0.205733 0.277474
--1.166956 0.180982 0.239452
--1.235100 0.093251 0.182145
--1.252852 0.020112 0.161546
--1.122616 0.045423 0.273322
--1.176019 0.104304 0.239683
--0.831534 0.028847 -0.248610
--0.784800 -0.051320 -0.210683
--0.970175 -0.039735 -0.298404
--0.915801 0.031759 -0.287960
--1.017315 0.133847 0.298781
--1.040809 0.053958 0.296991
--0.850253 0.061846 0.261250
--0.922621 0.144598 0.292551
--1.205576 -0.083392 -0.215756
--1.127676 -0.097664 -0.269488
--1.218875 -0.228370 -0.179640
--1.241479 -0.151333 -0.164511
--1.281008 -0.141697 -0.081100
--1.282725 -0.207501 -0.019002
--1.295404 -0.061623 0.045226
--1.294057 -0.065990 -0.051164
--1.266583 -0.280977 -0.040054
--1.240056 -0.292948 -0.121946
--1.272968 -0.133906 0.108272
--1.274739 -0.205619 0.072097
--1.254749 -0.331515 0.036391
--1.230958 -0.414312 0.026169
--1.188467 -0.290913 0.199876
--1.247215 -0.280317 0.111825
--0.714306 -0.076055 0.102946
--0.722893 -0.247937 0.185450
--0.755066 -0.146639 0.191478
--0.892565 -0.032108 0.280205
--0.993747 -0.023773 0.299917
--0.848739 -0.126278 0.264223
--1.137674 -0.030533 0.266157
--1.209182 -0.047928 0.214183
--1.221441 -0.129173 0.194550
--1.160987 -0.202671 0.240867
--1.069850 -0.172552 0.288004
--1.063790 -0.080596 0.292372
--1.158039 -0.249717 -0.236406
--1.100040 -0.186683 -0.276695
--1.150286 -0.337789 -0.224600
--1.074319 -0.379918 -0.265438
--1.211559 -0.436746 -0.083952
--1.207229 -0.363808 -0.148360
--0.931978 -0.130288 -0.293972
--0.829416 -0.140227 -0.254308
--0.987281 -0.311755 -0.297765
--1.005930 -0.209775 -0.298601
--0.521727 0.765192 -0.290775
--1.148019 -0.386210 0.212818
--1.190078 -0.459193 0.118044
--1.158436 -0.559820 0.087646
--1.167821 -0.516767 -0.114878
--1.096278 -0.674600 -0.086267
--1.155066 -0.591214 -0.036592
--0.771608 1.005459 -0.135935
--0.852825 0.959308 -0.097955
--0.814246 1.007568 0.052984
--0.869887 0.966193 -0.005886
--0.965682 0.863491 -0.052417
--1.028122 0.791500 -0.038978
--0.927269 0.875414 0.119585
--0.930881 0.906369 0.024163
--0.566961 0.990224 0.264677
--0.534303 1.091724 0.208631
--0.718230 1.074222 -0.067833
--0.745807 1.063247 0.028303
--0.691291 1.076225 0.109998
--0.602869 1.125480 0.115647
--0.618246 1.129229 -0.085232
--0.561684 1.171822 0.013519
--0.450125 1.218907 0.016890
--0.427083 1.134526 0.212045
--0.271294 1.244331 0.122793
--0.387285 1.213311 0.122658
--1.094776 0.667045 0.101590
--1.058368 0.607909 0.203007
--0.978607 0.795203 0.147752
--1.045755 0.757303 0.071993
--0.801245 0.978278 0.141861
--0.848741 0.906595 0.177594
--0.668853 0.960921 0.246697
--0.722169 1.011591 0.176481
--0.480102 0.515515 0.050987
--0.713545 -0.254054 -0.176596
--0.686648 -0.346332 -0.191457
--0.878900 -0.326981 -0.293245
--0.797228 -0.236768 -0.248167
--0.935677 0.734226 0.232423
--0.967497 0.636933 0.254631
--0.888477 0.555640 0.296089
--0.791078 0.572816 0.298952
--0.705808 0.865927 0.276371
--0.802219 0.847107 0.249569
--0.839916 0.754886 0.270695
--0.771240 0.672138 0.299109
--0.613878 0.599194 0.264134
--0.530763 0.595344 0.221167
--0.640168 0.780483 0.299749
--0.673841 0.682444 0.297213
--1.049085 -0.401913 0.273442
--1.018454 -0.506904 0.266417
--0.767742 -0.615905 0.299286
--0.927725 -0.790117 0.205312
--0.963772 -0.701033 0.230404
--0.397985 0.701026 -0.229017
--0.429407 0.774740 -0.277375
--0.243658 0.752702 -0.215316
--0.314726 0.693460 -0.182081
--0.309573 0.643825 -0.091955
--0.232485 0.661107 -0.021837
--0.406312 0.572607 0.034624
--0.391149 0.590737 -0.071491
--0.551266 -0.809351 0.299338
--0.687239 -0.975305 0.229314
--0.536247 0.795816 0.297073
--0.376939 0.918504 0.299808
--0.494239 0.903007 0.298412
--0.347646 0.634621 0.116610
--0.251386 0.667185 0.087247
--0.585533 -0.668753 0.278789
--0.515444 -0.720691 0.277880
--0.584628 -0.577694 0.241249
--0.675393 -0.440771 0.228850
--0.671482 -0.539889 0.265697
--0.853291 -0.420036 -0.295950
--0.751319 -0.421284 -0.266151
--0.730875 -0.506183 -0.278896
--0.790705 -0.568691 -0.299425
--1.040254 -0.658033 -0.191569
--0.916951 -0.512416 -0.295830
--0.810410 -0.638033 -0.298556
--0.748693 -0.696571 -0.299261
--0.953502 -0.699942 -0.237685
--0.889123 -0.651913 -0.282308
-0.962416 0.841972 -0.111265
-0.913452 0.821515 -0.194271
-0.810323 0.959205 -0.157265
-0.825787 0.882616 -0.215781
-0.654429 0.921109 -0.270355
-0.740022 0.854310 -0.270155
-0.617250 0.707515 -0.293668
-0.729631 0.755312 -0.295664
-0.929579 0.731572 -0.237493
-1.025178 0.659435 -0.204964
-0.815022 0.609543 -0.299435
-0.829173 0.699676 -0.287674
--0.954822 -0.852912 0.106773
--0.920233 -0.786312 -0.213849
--0.888107 -0.920442 -0.110019
--0.950851 -0.845548 -0.125402
--0.204577 1.197671 0.209135
--0.047190 1.054470 0.294865
--0.140538 0.995875 0.299919
--0.183526 0.717846 0.151647
--0.028992 0.841029 0.254906
--0.131597 0.885679 0.281198
--0.893964 -0.927064 0.084480
--0.872584 -0.962902 -0.015965
--0.757646 -1.003637 0.153780
--0.825670 -0.941871 0.162142
--0.562879 1.104166 -0.180672
--0.545627 0.937180 -0.287941
--0.612412 1.007909 -0.240620
--0.617710 -0.377137 -0.116819
--0.280120 -0.643123 0.027697
--0.362574 -0.598874 0.004105
--0.641128 -0.520733 -0.244197
--0.583385 -0.459863 -0.154090
--0.508969 -0.499792 -0.087955
--0.217732 1.280782 0.020568
--0.044103 1.290446 -0.071942
--0.103040 1.295146 0.019918
--0.092171 1.215808 0.204421
--0.026018 1.151911 0.258433
-0.071646 1.277176 0.109400
--0.042088 1.275636 0.116383
--0.428680 0.956160 -0.296166
--0.365528 1.061240 -0.273915
--0.271612 0.843132 -0.277322
--0.375317 0.857960 -0.293228
--0.200079 0.918983 -0.294116
--0.178178 1.215719 -0.194119
--0.075228 1.249002 -0.163810
--0.051371 1.064720 -0.292426
--0.749268 -1.055549 0.055744
--0.800770 -1.021747 -0.030796
--0.810673 -0.939807 -0.178594
--0.676875 -1.042950 -0.174886
--0.764002 -1.010285 -0.137011
--0.607360 -0.978326 -0.258591
--0.639279 -0.869686 -0.289246
--0.099286 0.882593 -0.278219
--0.026016 0.952109 -0.296002
--0.075059 0.785864 -0.213491
-0.022346 0.754006 -0.172106
--0.147283 0.691698 -0.065795
--0.152610 0.736776 -0.169325
--0.378927 -1.218959 -0.116129
--0.460774 -1.212046 -0.046903
--0.673535 -1.110549 0.021351
--0.641230 -1.110616 -0.100066
--0.552196 -1.145175 -0.127541
--0.478087 -1.206587 0.038229
--0.426464 -1.201374 0.120116
--0.602509 -1.137404 0.087065
--0.542556 -1.180242 0.029905
--0.562520 -1.097531 0.188483
--0.460930 -1.132398 0.201171
--0.595745 -1.009843 0.245200
-0.018426 -0.699933 0.003927
--0.220857 -0.669403 -0.053967
--0.136855 -0.687966 -0.029266
--0.039762 -0.737462 -0.147506
-0.013375 -0.765153 -0.187063
--0.161318 -0.763629 -0.204449
--0.102092 -0.735829 -0.155003
--0.501991 -1.011704 -0.270374
--0.385708 -1.151435 -0.209805
--0.481519 -1.109550 -0.214688
--0.084473 -0.912505 0.287939
--0.009384 -0.954155 0.296280
--0.235834 -0.958771 0.299674
--0.264772 -0.680387 0.130846
--0.343569 -0.823271 0.280057
--0.251071 -0.852290 0.278391
--0.090018 -0.814576 0.239527
--0.013113 -0.763248 0.184274
--0.028831 -0.712816 0.088689
--0.115013 -0.698739 0.069244
--0.182891 -0.715992 0.147883
--0.173557 -0.786385 0.228326
--0.299909 -1.096421 -0.266587
--0.140175 -1.059353 -0.292189
--0.198818 -1.124595 -0.263882
--0.182305 -1.281469 0.057550
--0.312375 -1.255560 -0.061168
--0.156831 -1.204198 -0.209697
--0.040651 -1.198621 -0.224542
--0.154841 -1.287160 -0.046290
--0.219968 -1.256120 -0.119186
--0.065222 0.696920 -0.002844
-0.026516 0.706518 -0.064130
--0.007319 0.755929 0.174347
--0.083290 0.717101 0.112792
-0.027699 1.128169 -0.270914
-0.014769 1.214505 -0.209679
-0.061354 1.289607 -0.072153
-0.123107 1.293828 0.011937
-0.194987 1.222109 -0.182960
-0.095568 1.249916 -0.160038
-0.005081 -1.109260 -0.279505
--0.126805 -0.982559 -0.299961
--0.185024 -0.908465 -0.290877
--0.134344 -0.830990 -0.254870
--0.030626 -0.832050 -0.249210
-0.009648 -0.910269 -0.286484
--0.050433 -0.969471 -0.298845
-0.041177 1.007630 0.300057
-0.054442 0.902242 0.284235
-0.113508 1.077381 0.288041
-0.208155 1.053604 0.290424
-0.129841 1.227050 0.187522
-0.075815 1.162148 0.250734
-0.240147 1.215023 0.181620
-0.279879 1.132062 0.249544
-0.457600 1.159578 0.170861
-0.382487 1.106421 0.246255
-0.483023 0.975561 0.286352
-0.398800 1.001107 0.289444
-0.230786 0.939193 0.298007
-0.153231 0.861608 0.272702
-0.326097 0.914284 0.298337
-0.300457 1.251699 0.085600
-0.426068 1.218448 0.073121
-0.274212 1.248636 -0.111198
-0.236083 1.278119 -0.004401
--0.058656 -1.291853 -0.064397
-0.007691 -1.257719 -0.154006
-0.059179 -1.292552 0.059443
--0.033167 -1.297935 0.031239
-0.524254 -1.172829 -0.093831
-0.680024 -1.036405 -0.180477
-0.588607 -1.019811 -0.241688
-0.688092 -0.861809 -0.281993
-0.588081 -0.921022 -0.285347
-0.545699 -0.717525 -0.283527
-0.104077 -1.060046 -0.293005
-0.103169 -0.939224 -0.294890
-0.190046 -0.865922 -0.277689
-0.358496 -1.182321 -0.186063
-0.195163 -1.103773 -0.274883
-0.139164 -1.291090 -0.027577
-0.114294 -1.259480 -0.141230
-0.201509 -1.200514 -0.206958
-0.365868 -1.225732 -0.110196
-0.438981 -1.219682 -0.045834
-0.240009 -1.277322 -0.010875
-0.293495 -1.253573 -0.086921
-0.275945 -0.973380 0.299654
-0.057305 -0.799652 0.224755
-0.052788 -0.894999 0.281478
-0.122150 -0.936773 0.294861
-0.128478 1.083846 -0.285647
-0.211785 1.139038 -0.254607
-0.308977 0.989490 -0.297975
-0.307056 1.090644 -0.268967
-0.381529 1.208847 -0.134663
-0.472080 1.207292 -0.045157
-0.487524 1.067336 -0.244599
-0.395848 1.131245 -0.224775
-0.384004 0.927480 -0.300089
-0.476426 0.961494 -0.290944
-0.554536 0.885807 -0.296415
-0.528181 0.772403 -0.292877
-0.099619 0.801283 -0.229813
-0.072511 0.906825 -0.285850
-0.145019 0.974900 -0.299572
-0.234103 0.933480 -0.297689
-0.356271 0.829250 -0.283622
-0.423502 0.747092 -0.264788
-0.202947 0.768384 -0.218615
-0.262419 0.835079 -0.272805
-0.288495 -1.255384 0.083645
-0.402270 -1.228877 0.063658
-0.232743 -1.215498 0.182993
-0.284587 -1.141892 0.242286
-0.235422 -1.056762 0.288326
-0.148416 -1.038004 0.295980
-0.093182 -1.108653 0.277987
-0.127978 -1.204079 0.213226
-0.247820 0.694114 -0.144552
-0.279902 0.717162 0.192782
-0.175906 0.762650 0.206597
-0.096975 0.728765 0.141098
-0.554793 1.119556 0.166533
-0.557149 1.031838 0.245398
-0.707704 0.981963 0.214120
-0.621770 0.975174 0.255932
-0.499888 0.883087 0.299571
-0.633511 0.819251 0.297640
-0.585835 0.888221 0.292755
-0.382817 -1.129194 0.230101
-0.450111 -1.177304 0.148434
-0.554877 -1.062688 0.224601
-0.547087 -1.134743 0.149614
-0.616089 -1.141655 -0.038338
-0.690686 -1.084182 -0.091947
-0.713191 -1.060448 0.112490
-0.626418 -1.127788 0.075791
-0.622131 -1.005820 0.238017
-0.704955 -1.003844 0.196622
-0.372015 -0.868978 0.294789
-0.353677 -0.965625 0.298543
-0.409685 -1.040978 0.275379
-0.488880 -1.017382 0.270835
-0.592248 -0.930935 0.281773
-0.636318 -0.857503 0.292346
-0.454105 -0.849356 0.297671
-0.509796 -0.931635 0.293481
-0.100362 -0.733003 -0.149052
-0.106011 -0.694022 -0.035885
-0.186966 -0.762933 -0.209494
-0.264656 -0.648763 -0.020676
-0.171153 -0.682499 0.048323
-0.644979 1.109511 0.098613
-0.723575 1.042383 0.133371
-0.643327 1.129261 -0.012966
-0.731125 1.066529 -0.063191
-0.735769 1.021555 -0.151593
-0.661112 1.016580 -0.211551
-0.577174 1.089469 -0.188525
-0.569973 1.153206 -0.089037
-0.496925 0.607536 0.209207
-0.582530 0.553639 0.226988
-0.600442 0.730008 0.294883
-0.499216 0.692742 0.261996
-0.497070 -0.760675 0.285834
-0.595361 -0.774001 0.299140
-0.462269 -0.669636 0.235124
-0.543659 -0.590459 0.226011
-0.366772 -0.666334 0.180901
-0.462710 -0.543362 -0.089479
-0.541941 -0.471227 -0.103146
-0.518095 -0.634633 -0.239425
-0.443382 -0.612238 -0.173940
-0.770376 0.902477 0.234897
-0.728863 0.828294 0.281473
-0.682704 0.684132 0.298120
-0.677508 0.589203 0.282142
-0.867906 0.716179 0.272504
-0.765689 0.743942 0.292183
-0.791940 -1.024801 0.052917
-0.774972 -1.039592 -0.044206
-0.763018 -0.975194 -0.182386
-0.773694 -0.897213 -0.236617
-0.904634 -0.917168 -0.082862
-0.822859 -0.981979 -0.104505
-0.700611 -0.764893 -0.297920
-0.632368 -0.707732 -0.295909
-0.585191 -0.575751 -0.240822
-0.595841 -0.488753 -0.193600
-0.717391 -0.584984 -0.290581
-0.647996 -0.619303 -0.281588
-0.613023 0.606343 -0.266521
-0.711991 0.567597 -0.286250
-0.576003 0.461515 -0.146199
-0.542279 0.550486 -0.195749
-0.800811 1.023281 -0.019748
-0.804401 1.009700 0.073645
-0.920616 0.910473 -0.056411
-0.852528 0.967320 -0.079500
-0.646476 -0.611121 0.278777
-0.665480 -0.711019 0.298794
-0.726785 -0.852133 0.275179
-0.769212 -0.921322 0.223643
-0.854869 -0.722552 0.275257
-0.754953 -0.761594 0.291154
-0.929233 -0.848637 -0.152528
-0.859708 -0.837695 -0.223687
-0.784008 -0.718281 -0.293370
-0.783025 -0.630882 -0.299905
-0.926067 -0.692431 -0.256085
-0.860366 -0.753068 -0.263737
-0.863227 0.882869 0.186969
-0.925960 0.787953 0.208249
-0.939989 0.895718 0.032622
-0.876337 0.936474 0.101820
-0.872470 -0.946356 0.086184
-0.939219 -0.897996 0.014703
-0.921253 -0.791732 0.209547
-0.861473 -0.893730 0.178149
-1.011950 -0.754854 0.145024
-1.015580 -0.807465 0.037848
-0.742315 -0.551148 0.290009
-0.858941 -0.609519 0.294990
-0.934448 -0.430807 0.298546
-0.954522 -0.543808 0.283316
-1.154398 -0.594227 0.030710
-1.146413 -0.433385 0.197503
-1.161911 0.448906 0.172005
-0.882196 0.608502 0.291139
-0.774028 0.543762 0.294907
-0.958682 0.438441 0.295091
-0.976412 0.550518 0.274661
-1.029955 0.785386 -0.052364
-1.008879 0.815541 0.040295
-1.014120 0.759855 0.136049
-0.676848 -0.179346 -0.010685
-0.690110 -0.190866 -0.097051
-0.669004 -0.306090 -0.142069
-0.724850 -0.173534 -0.158843
-0.744120 -0.102561 -0.167415
-0.808341 -0.257098 -0.258833
-0.748255 -0.224531 -0.205765
-0.742118 0.090151 -0.161946
-0.676606 0.180382 0.011167
-0.655121 -0.254165 0.040569
-0.625228 -0.321331 -0.041687
-0.573020 -0.403162 -0.021541
-0.735876 -0.441472 0.264158
-0.831858 -0.387813 0.288421
-0.684045 -0.281952 0.149830
-0.660509 -0.387710 0.187547
-0.858557 0.392168 0.294688
-0.768042 0.439061 0.277044
-0.612020 0.413813 0.147531
-0.591019 0.379264 0.035168
-0.627978 0.309341 0.001827
-0.662612 0.251153 0.072768
-0.701323 0.280691 0.174432
-0.687070 0.380323 0.210031
-1.118092 -0.651290 -0.059560
-1.055819 -0.750298 -0.053264
-1.001667 -0.771773 -0.141811
-0.995520 -0.699458 -0.207720
-1.108977 -0.585948 -0.159087
-1.038365 -0.615304 -0.217255
-0.917814 -0.606493 -0.282803
-0.845411 -0.577835 -0.299133
-0.987525 -0.557775 -0.268346
-0.889943 0.542554 -0.297015
-1.222820 0.415983 0.069436
-1.217593 0.305147 -0.156870
-1.144438 -0.478794 -0.179068
-1.208277 -0.427621 -0.102134
-1.235958 -0.306822 -0.122413
-1.215422 -0.406665 0.102329
-1.206357 -0.483060 0.010549
-1.185614 -0.245192 -0.213354
-0.871611 -0.192130 -0.280159
-0.818725 -0.097645 -0.243261
-1.025984 -0.096418 -0.298406
-0.980099 -0.197894 -0.299969
-0.863848 -0.413479 -0.297150
-0.817636 -0.496759 -0.296888
-0.733302 -0.504268 -0.279179
-0.674549 -0.446113 -0.231166
-0.705405 -0.364418 -0.218107
-0.799773 -0.342705 -0.270286
-1.122262 0.352151 0.242808
-1.021343 0.354050 0.288929
-0.860115 0.286518 0.285114
-0.777918 0.224508 0.231974
-0.959504 0.261832 0.299707
-0.762268 -0.219779 0.217501
-0.839147 -0.280112 0.276984
-1.001574 -0.341729 0.294266
-1.105292 -0.335866 0.256625
-0.980311 -0.132138 0.299837
-0.940644 -0.246220 0.298701
-1.165480 0.233322 -0.232930
-0.656768 0.422261 -0.204497
-0.726403 0.481505 -0.270911
-0.832377 0.463625 -0.296040
-0.863536 0.370322 -0.293756
-0.962370 0.164539 -0.298955
-1.016050 0.073361 -0.299309
-0.963117 -0.010756 -0.297558
-0.859511 -0.010374 -0.264817
-0.814212 0.075072 -0.238101
-0.858030 0.158883 -0.271600
-1.115317 0.045633 -0.276695
-1.185542 0.113619 -0.231393
-1.195818 -0.124843 -0.221636
-1.120924 -0.063365 -0.273934
-0.782512 0.114529 0.215037
-0.775154 -0.108192 0.206922
-1.164754 0.237906 0.233001
-1.094081 -0.111437 0.282761
-1.154254 -0.216724 0.243831
-1.233599 0.006519 0.188448
-1.143764 0.000654 0.263208
-1.265412 -0.086944 0.134226
-1.236869 -0.198568 0.161288
-1.256210 -0.286906 0.080777
-1.275136 -0.241531 -0.032615
-1.259630 -0.062482 -0.147524
-1.256014 0.059308 -0.153941
-1.296757 -0.052817 0.036629
-1.290030 -0.119559 -0.050287
-0.709465 -0.047610 -0.080018
-0.693844 -0.095693 0.017962
-0.723811 -0.052492 0.122263
-0.725727 0.056212 0.127028
-0.694529 0.095815 0.027164
-0.708872 0.042114 -0.076576
-1.270438 0.246598 -0.058191
-1.259910 0.298051 0.055014
-1.242345 0.212671 0.148578
-1.266931 0.099039 0.129284
-1.296990 0.060790 0.031381
-1.287049 0.123373 -0.063715
-0.789145 0.216251 -0.238613
-0.728162 0.172093 -0.163104
-0.682332 0.208230 -0.088440
-0.656445 0.285993 -0.096871
-0.687970 0.335464 -0.186786
-0.780751 0.303558 -0.252109
-0.135508 -0.782976 0.218312
-0.169909 -0.866128 0.275945
-0.243915 -0.884224 0.288209
-0.302182 -0.818153 0.271380
-0.287490 -0.731087 0.209549
-0.192495 -0.720849 0.159476
-0.370903 -1.033939 -0.283443
-0.277237 -1.023820 -0.293778
-0.273185 -0.916310 -0.296699
--0.796540 -0.878001 0.235911
--0.708436 -0.889039 0.267125
--0.646483 -0.815647 0.297459
--0.667236 -0.730681 0.299898
--0.759885 -0.717053 0.296493
--0.834289 -0.799007 0.256798
--0.612888 0.534769 -0.234888
--0.617458 0.636376 -0.277816
--0.538548 0.680382 -0.269273
--0.465081 0.646712 -0.220646
--0.464578 0.578950 -0.153904
--0.542161 0.512962 -0.160492
--0.649026 0.356285 0.149854
--0.592371 0.407559 0.104765
--0.579940 0.472056 0.162251
--0.635487 0.515446 0.238547
--0.711330 0.492828 0.267841
--0.714295 0.398239 0.237973
--0.685261 0.484037 -0.253085
--0.701891 0.392885 -0.227738
--0.790928 0.394196 -0.276596
--0.834396 0.477478 -0.297499
--0.768501 0.533539 -0.293094
--0.762294 -0.319516 0.245107
--0.835549 -0.341110 0.284045
--0.821897 -0.425285 0.290792
--0.745804 -0.402675 0.258445
-0.370568 -0.661759 -0.177739
-0.350364 -0.725302 -0.228616
-0.269312 -0.716197 -0.186586
-0.296292 -0.662405 -0.121866
--0.389697 -0.594860 -0.081527
--0.394159 -0.631719 -0.157238
--0.468058 -0.614941 -0.196464
-1.054329 0.592118 0.215565
-1.118434 0.550900 0.170789
-1.119161 0.626165 0.101492
-1.065042 0.672237 0.150358
-1.202716 0.412027 -0.127709
-1.155164 0.478490 -0.165348
-1.212313 0.466093 -0.026041
-1.057486 -0.660840 0.170278
-1.114889 -0.610178 0.129444
-1.103640 -0.536177 0.196273
-1.038992 -0.580559 0.232303
-0.302600 0.659550 0.122060
-0.285892 0.642011 0.041481
-0.346889 0.607680 -0.000538
-0.413031 -0.929655 -0.299561
-0.356975 -0.871187 -0.294306
-0.397431 -0.787875 -0.276079
-0.491573 -0.790195 -0.292010
-0.503099 -0.880806 -0.299861
--0.230347 1.037901 0.293338
--0.252574 1.115751 0.263669
--0.346938 1.086762 0.265383
--0.325746 1.006858 0.294464
--0.983754 -0.314178 0.298579
--0.900572 -0.294456 0.295570
--0.909603 -0.206607 0.292661
--0.994319 -0.224547 0.299606
--0.565330 0.413696 0.020050
--0.547525 0.461399 -0.098082
--0.527867 0.460442 -0.019763
--0.280076 1.262025 -0.066755
--0.261959 1.232560 -0.149640
--0.386260 1.232627 -0.069757
--0.259011 -1.259173 0.092090
--0.281130 -1.219505 0.163988
--0.312092 -1.260466 0.031755
--0.583252 -0.403921 0.074423
--0.608341 -0.345944 -0.011131
--0.647202 -0.269335 0.026117
--0.662918 -0.289520 0.116611
--0.630989 -0.380907 0.144753
-0.441252 0.822211 0.292631
-0.361679 0.821086 0.282074
-0.339515 0.749680 0.242679
--0.310323 -1.101878 0.262833
--0.301766 -1.024790 0.292255
--0.383030 -1.016220 0.287557
--0.392581 -1.088534 0.255606
--1.010324 -0.812112 -0.047781
--1.008865 -0.815856 0.039056
--1.058848 -0.746022 0.054108
--1.065420 -0.742579 -0.029529
--0.395237 1.137124 -0.220310
--0.471595 1.140205 -0.188323
--0.338405 1.194313 -0.178527
--0.699800 -0.109455 -0.070765
--0.689467 -0.120599 0.010743
--0.671033 -0.199956 -0.014290
--0.688217 -0.191421 -0.092680
-0.408102 0.663417 -0.203096
-0.466253 0.585630 -0.163718
-0.441485 0.557009 -0.079492
-0.377190 0.599405 -0.069782
-0.341626 0.653908 -0.145644
--0.523619 -0.644705 -0.247708
--0.511240 -0.750521 -0.285482
--0.596144 -0.773469 -0.299212
--0.656851 -0.683275 -0.295784
--0.612259 -0.606882 -0.266568
--0.473594 0.725633 0.268886
--0.475706 0.654965 0.231692
--0.393511 0.666313 0.197441
--0.386707 0.728519 0.243539
--0.226713 0.769971 0.226267
--0.213057 0.836123 0.266821
--0.309151 0.845991 0.283220
--0.317285 0.776245 0.252873
--0.213294 1.021565 -0.296975
--0.267976 1.076045 -0.279727
--0.196093 1.141235 -0.255162
--0.146277 1.086413 -0.284270
--0.839221 -0.808840 -0.250598
--0.718594 -0.852266 -0.277379
--0.786471 -0.873174 -0.243957
-0.503781 -0.508397 0.096169
-0.540943 -0.516324 0.162880
-0.590295 -0.440457 0.143772
-0.556546 -0.438798 0.070722
-1.084562 0.281819 -0.274968
-1.002617 0.250258 -0.298497
-0.963113 0.338957 -0.299498
-1.037546 0.369298 -0.282492
--0.532627 -0.474451 0.087948
--0.518299 -0.543742 0.167953
--0.443480 -0.591791 0.149136
--0.424565 -0.565344 0.064974
--0.489497 -0.501100 0.020071
--0.326613 -0.988326 -0.297219
--0.423097 -0.944084 -0.297997
--0.432796 -0.826832 -0.292235
--0.345999 -0.809039 -0.274921
--0.279305 -0.905123 -0.295123
-0.515979 -1.070956 -0.233456
-0.487322 -1.130354 -0.191475
--0.925013 -0.626671 0.276302
--0.865072 -0.495252 0.300282
--0.935223 -0.536835 0.289813
--0.694036 0.225684 0.130812
--0.667444 0.225671 0.053514
--0.638271 0.289192 0.023586
--1.071978 -0.687841 0.123612
--1.033204 -0.671857 0.189812
--1.059406 -0.587136 0.213413
--1.108029 -0.518786 -0.200463
--1.005976 -0.519367 -0.269572
--1.051147 -0.573816 -0.226187
--0.256151 -0.689419 -0.141839
--0.237598 -0.737223 -0.197979
--0.317606 -0.741037 -0.229220
--0.332805 -0.682788 -0.179335
--0.434458 -0.956063 0.295992
--0.418513 -0.880376 0.299329
--0.520850 -0.950210 0.288273
--0.406629 -0.654765 0.193769
--0.435712 -0.703126 0.245543
--0.365948 -0.743199 0.246380
--0.335779 -0.691988 0.191801
-0.845940 -0.044368 0.258445
-0.920449 -0.047701 0.289810
-0.924185 0.051448 0.290867
-0.850188 0.054180 0.261087
-1.002923 0.179360 0.299276
-0.988118 0.102835 0.300023
-1.085193 0.084243 0.286641
-1.098530 0.165028 0.278701
-1.096941 0.491263 -0.222004
-1.047839 0.454144 -0.264349
-0.986637 0.533674 -0.274259
-1.038420 0.573741 -0.235162
-0.345377 -0.609810 0.022919
-0.373212 -0.611043 0.096142
-0.439669 -0.553656 0.065038
-0.418793 -0.561034 -0.005764
-0.197046 0.678459 -0.061239
-0.214682 0.666422 0.011519
-0.131791 0.691916 0.050055
-0.108886 0.692463 -0.025146
-0.959843 -0.396427 -0.297619
-1.020302 -0.294707 -0.293721
-1.106118 -0.311297 -0.260537
-1.092619 -0.419161 -0.247120
-1.008918 -0.464677 -0.278913
-1.149537 0.561453 -0.109365
-1.091539 0.650928 -0.129086
-1.087481 0.700464 -0.061449
-1.136442 0.630776 0.011438
-1.174761 0.553075 -0.030822
-1.133565 0.623716 -0.062652
-1.038339 -0.377038 -0.281436
-0.162973 0.680410 -0.005997
-0.392771 -0.583099 0.044769
-1.046037 0.514975 -0.250228
-1.042142 0.131698 0.296308
-0.887198 0.005667 0.278026
--0.385225 -0.697638 0.220953
--0.287247 -0.712424 -0.190682
--0.361292 -0.892823 -0.298239
--0.480323 -0.532860 0.101348
-1.021875 0.310137 -0.291827
-0.547213 -0.474621 0.119170
--0.208484 1.085819 -0.281035
--0.265340 0.807132 0.259915
--0.432875 0.692462 0.237538
--0.579202 -0.687890 -0.282278
-0.408028 0.608769 -0.136862
--0.685228 -0.154704 -0.040935
--1.038974 -0.782102 0.003329
--0.345953 -1.058978 0.277886
--0.622988 -0.336168 0.068561
--0.333663 1.228897 -0.124423
--0.946411 -0.259107 0.299701
--0.288648 1.060153 0.283369
-0.435763 -0.849970 -0.296752
-1.080817 -0.600194 0.185898
-1.187064 0.491222 -0.095295
-1.092250 0.614291 0.162193
-0.321060 -0.689488 -0.180002
--0.790436 -0.372131 0.272004
--0.750981 0.453802 -0.274045
--0.641491 0.433991 0.198160
--0.538569 0.594090 -0.225269
--0.738466 -0.806338 0.284981
-0.335689 -0.955376 -0.300047
-0.219879 -0.794505 0.243485
-0.714547 0.251899 -0.176459
-1.284759 0.177475 0.041395
-0.701976 -0.000094 0.025814
-1.293667 0.001496 -0.060971
-1.283623 -0.167662 0.057339
-1.196388 -0.100567 0.222714
-1.188741 0.115287 0.227322
-0.781304 0.003527 0.205291
-1.197613 -0.005335 -0.224563
-0.910174 0.076370 -0.287542
-0.754686 0.394175 -0.260221
-1.080500 0.163865 -0.284556
-1.049075 -0.230342 0.290757
-0.863443 -0.156463 0.273149
-0.886441 0.162727 0.283041
-1.065795 0.255608 0.284282
-0.765245 -0.425605 -0.272580
-0.919351 -0.101886 -0.290301
-1.097663 -0.188737 -0.276717
-1.248133 -0.364149 -0.011244
-1.170256 -0.364441 -0.197203
-1.243852 0.364273 -0.044454
-1.133731 0.378613 -0.226953
-0.950037 0.445355 -0.295828
-0.913630 -0.503915 -0.296384
-1.066848 -0.520520 -0.234196
-1.061512 -0.683630 -0.143390
-0.640481 0.333956 0.111468
-0.770423 0.333989 0.252824
-0.745613 -0.331928 0.237063
-0.616144 -0.353610 0.078030
-0.697696 0.128961 -0.076097
-0.656083 0.245281 -0.019514
-0.782450 0.143255 -0.219342
-0.783315 -0.174863 -0.224851
-0.735358 -0.287864 -0.213594
-0.663794 -0.246043 -0.068058
-0.700057 -0.130073 -0.084843
-1.078931 0.719457 0.042099
-0.872559 0.497771 0.299897
-1.064970 0.471428 0.248964
-1.174830 0.533671 0.073146
-1.165577 -0.517894 0.117455
-1.046029 -0.459347 0.263552
-0.843475 -0.495601 0.299050
-1.087216 -0.700345 0.058688
-0.947530 -0.855401 0.116531
-0.946399 0.851423 0.121924
-0.854614 -0.665396 -0.288293
-0.933853 -0.771911 -0.211684
-0.821348 -0.826783 0.249217
-0.755945 -0.660166 0.299903
-0.870917 0.964023 0.010052
-0.630665 0.511276 -0.234018
-0.656377 -0.532049 -0.256787
-0.711577 -0.672076 -0.299239
-0.847823 -0.914921 -0.168488
-0.858428 -0.976098 -0.011968
-0.778314 0.647835 0.299678
-0.825945 0.814106 0.254337
-0.520044 -0.550086 -0.175867
-0.499485 -0.490291 0.002695
-0.454858 -0.586310 0.153266
-0.564152 -0.681757 0.276917
-0.587484 0.639916 0.269631
-0.659302 1.089643 -0.122970
-0.729996 1.073118 0.036291
-0.280777 -0.661310 0.102565
-0.196742 -0.690763 -0.102394
-0.545238 -0.849572 0.299153
-0.430846 -0.945793 0.297467
-0.678016 -0.933021 0.256883
-0.706615 -1.090987 0.012267
-0.631560 -1.075420 0.170197
-0.474461 -1.102604 0.223018
-0.524459 0.792483 0.295663
-0.677042 0.903799 0.271064
-0.638259 1.051658 0.190681
-0.209779 0.689675 0.109820
-0.290751 0.642813 -0.056385
-0.186576 -1.136193 0.258473
-0.342557 -1.203144 0.163966
-0.317527 0.737031 -0.225710
-0.167898 0.865240 -0.275581
-0.452548 0.850725 -0.297566
-0.484132 1.156008 -0.161150
-0.395626 1.031177 -0.280414
-0.222405 1.037605 -0.292985
-0.106590 -0.851849 0.264438
-0.198043 -0.961127 0.299476
-0.309138 -0.900195 0.296481
-0.341555 -1.253686 -0.018260
-0.213467 -1.260160 -0.111836
-0.296387 -1.130088 -0.247429
-0.192045 -0.986292 -0.299564
-0.288130 -0.801942 -0.261039
-0.446086 -0.702796 -0.248639
-0.595047 -0.807409 -0.299158
-0.680988 -0.956747 -0.244088
-0.592480 -1.104059 -0.159214
-0.433448 -1.183813 -0.148564
-0.039850 -1.294161 -0.053755
-0.349873 1.251193 -0.025144
-0.263298 0.817737 0.264375
-0.415561 0.897538 0.299856
-0.477293 1.073650 0.243567
-0.351666 1.193906 0.172983
-0.176656 1.151739 0.250687
-0.134091 0.972600 0.299294
--0.087780 -0.904717 -0.286028
-0.020739 -1.006647 -0.299486
-0.166393 1.275452 -0.089359
-0.113207 1.179685 -0.236258
-0.025541 0.705468 0.058925
--0.103112 -1.258094 -0.143523
--0.243233 -1.276510 -0.006395
--0.220601 -1.012859 -0.297423
--0.096562 -1.128849 -0.269241
--0.097820 -0.741547 0.162203
--0.269248 -0.752295 0.222120
--0.335014 -0.930542 0.299118
--0.014468 -0.848928 0.259489
--0.399618 -1.054522 -0.271504
--0.075808 -0.774613 -0.202316
--0.166639 -0.709791 -0.127486
--0.064692 -0.696862 0.003664
-0.022457 -0.717398 -0.100987
--0.483929 -1.037551 0.262555
--0.516662 -1.164995 0.118062
--0.596990 -1.153686 -0.024490
--0.466923 -1.177271 -0.135536
--0.392522 -1.238452 0.011467
--0.062508 0.720967 -0.116611
-0.000283 0.841427 -0.254475
--0.527635 -0.881717 -0.298495
--0.715712 -0.946184 -0.233992
--0.725448 -1.071146 -0.062676
--0.085621 1.167435 -0.246122
--0.124362 0.990962 -0.299777
--0.306633 0.961511 -0.298678
-0.019507 1.228251 0.194642
-0.010721 1.299333 0.020677
--0.164692 1.274488 -0.090192
--0.542117 -0.550397 -0.195481
--0.354184 -0.629887 0.113838
--0.314622 -0.639677 -0.086426
--0.418548 -0.705238 -0.239834
--0.555494 -0.429030 -0.027770
--0.485255 1.054094 -0.252320
--0.824014 -0.994260 0.072133
--0.120315 0.783749 0.216169
--0.043365 0.945925 0.294151
--0.140639 1.115889 0.272260
--0.868483 -0.866283 -0.195326
--0.949294 -0.887371 -0.012285
-0.934768 0.629323 -0.271342
-0.716838 0.657872 -0.297925
-0.637481 0.815215 -0.298063
-0.741681 0.945776 -0.220741
-0.886355 0.900773 -0.141404
-1.011776 0.749745 -0.150310
--0.849358 -0.722809 -0.276476
--0.963078 -0.604729 -0.266292
--0.820903 -0.503451 -0.296998
--0.715608 -0.600052 -0.291700
--0.591372 -0.476112 0.178584
--0.496234 -0.631264 0.225554
--0.295122 0.706965 0.187750
--0.417277 0.810449 0.286567
--0.758337 -0.941245 0.215972
--0.606537 -0.905749 0.285800
--0.592261 -0.747008 0.295486
--0.319623 0.622724 0.011634
--0.336120 0.766622 -0.251861
--0.230614 0.690614 -0.126746
--1.011110 -0.762588 0.137434
--0.866564 -0.696891 0.277708
--0.768817 -0.504952 0.288830
--0.926781 -0.414174 0.298443
--0.566321 0.687500 0.279264
--0.740593 0.769341 0.291323
--0.869486 0.657424 0.286230
--0.773690 -0.332442 -0.254055
--0.654199 -0.281884 -0.082753
--0.477093 0.522429 -0.063321
--0.761076 0.932961 0.219033
--1.023409 0.705858 0.176122
--0.316669 1.171607 0.208738
--0.333856 1.255383 0.022199
--0.498825 1.182537 -0.097484
--0.662063 1.118218 0.018235
--0.634137 1.050324 0.194884
--0.444113 1.021245 0.276952
--0.989021 0.836556 0.046266
--0.871789 0.945475 0.088068
--0.800765 1.019591 -0.041067
--1.111179 -0.593964 -0.148119
--1.113799 -0.663495 0.041517
--1.113335 -0.501697 0.201047
--0.470258 0.711833 -0.261737
--0.901328 -0.227061 -0.291633
--1.150844 -0.434771 -0.191904
--1.082069 -0.281890 -0.275609
--1.146876 -0.112645 0.258782
--0.965621 -0.122543 0.298437
--0.815534 -0.235538 0.258090
--0.688630 -0.187247 0.089101
--1.218876 -0.364691 0.125998
--1.234556 -0.209229 0.162613
--1.243078 -0.358125 -0.056401
--1.291799 -0.135678 0.012645
--1.179781 -0.165963 -0.231119
--1.262744 -0.217687 -0.104573
--0.948766 0.054904 0.296129
--0.871901 -0.050292 -0.272258
--1.193823 0.030164 0.228481
--1.103530 0.121596 0.278886
--0.695327 0.585352 -0.285173
--0.969277 0.814429 -0.138299
--0.823344 0.923277 -0.183927
--0.660499 0.902212 -0.274850
--0.614177 0.735157 -0.296825
--0.700365 -0.021777 -0.009941
--0.763507 0.038492 -0.185001
--0.744164 0.304834 -0.225524
--0.815437 0.181977 -0.250976
--1.277097 0.090381 0.105103
--1.298741 0.010112 -0.018292
--1.170109 0.266349 0.223723
--1.093022 0.400462 0.251565
--1.134482 0.568923 0.133131
--1.257375 0.301626 -0.061501
--1.263764 0.237232 0.091195
--1.157995 -0.013609 -0.253936
--1.249421 0.073709 -0.162266
--1.224630 0.213093 -0.174756
--1.102260 0.263601 -0.269010
--0.978337 0.179315 -0.300004
--1.009465 0.043444 -0.300077
--0.702293 0.143041 0.097832
--0.652204 0.262211 -0.041095
--0.799087 0.471327 0.290908
--0.901325 0.345953 0.298035
--0.827719 0.162785 0.255674
--0.573771 0.537543 0.210402
--0.608195 0.352016 0.040296
--0.539532 0.459420 0.071839
--1.161672 0.562918 -0.071742
--1.022200 0.663911 -0.205014
--0.873140 0.565987 -0.297309
--0.899071 0.420435 -0.299924
--1.077667 0.384472 -0.263383
--1.194517 0.427458 -0.132809
--0.221954 -1.074123 0.283686
--0.197812 -1.236929 0.161346
--0.027199 -1.269649 0.131024
-0.033153 -1.167080 0.248574
--0.071734 -1.020248 0.299181
-0.553785 0.441919 0.070900
-0.509938 0.535755 0.148952
-0.415637 0.563573 0.011890
-0.504684 0.506203 -0.092321
--0.100478 -1.165557 0.247145
--1.059598 0.514116 -0.241154
--0.716764 0.297246 0.199604
--1.134249 0.133226 -0.264320
--1.223679 0.409124 0.075771
--1.286767 0.157405 -0.040141
--0.931157 0.296156 -0.299125
--0.703442 0.148197 -0.105304
--1.190109 0.324692 -0.187302
--0.816138 0.749402 -0.280168
--1.215038 0.153564 0.197816
--0.876619 0.088736 -0.275358
--1.006467 0.225050 0.298517
--1.262985 -0.073425 -0.140711
--1.271486 -0.262955 0.033891
--0.783521 -0.029131 0.207660
--1.071746 -0.007821 0.291655
--1.199206 -0.295942 -0.186709
--1.264506 -0.056967 0.136794
--1.034512 -0.114702 -0.297369
--1.199315 -0.501852 0.000603
--0.911068 0.920378 -0.055649
--0.499617 1.172257 0.120120
--1.088676 0.709305 -0.014877
--0.758306 1.032974 0.104410
--0.614517 0.425404 -0.161404
--0.739086 -0.145185 -0.170103
--0.699324 0.587635 0.287443
--0.987609 0.533904 0.273485
--0.993118 -0.606965 0.251690
--1.087055 -0.285907 0.272603
--0.388057 0.637913 -0.159614
--0.604151 0.883993 0.291897
--0.446252 0.589326 0.147701
--0.671295 -0.638783 0.291060
-0.832245 0.794109 -0.260058
--1.016082 -0.753739 -0.139099
--0.894835 0.824646 0.207504
--0.247091 0.930871 0.297818
--0.880746 -0.870640 0.179956
--0.672892 1.055080 -0.163345
--0.692494 -0.344178 0.196723
--0.437475 -0.548657 -0.031920
--0.972922 -0.422594 -0.293486
--0.156200 1.264978 0.120963
--0.481776 0.854096 -0.299669
--0.288375 1.159083 -0.228295
--0.831926 -0.977799 -0.098569
--0.685803 -0.773099 -0.298065
--0.172297 0.816041 -0.249909
--0.662959 -0.434336 -0.216522
--0.669757 -1.066680 0.150107
--0.580343 -1.074976 -0.202341
--0.164271 -0.881216 0.281444
--0.280485 -1.197167 -0.193463
--0.157734 0.686583 0.046142
-0.010477 1.266321 -0.139080
--0.197007 -0.676013 0.049491
-0.031927 1.093881 0.285191
--0.241454 -0.811989 -0.258068
-0.305172 1.026459 0.291551
-0.185417 1.269667 0.099601
--0.109657 -1.295002 0.016156
--0.354647 -1.170912 0.199913
-0.482117 -0.991245 -0.281734
-0.296864 1.182822 -0.204655
-0.308390 0.901747 -0.296522
-0.164858 -1.271650 0.100107
-0.129654 0.719653 -0.133167
-0.550309 0.952475 0.283317
-0.522361 -1.187875 0.038151
-0.554652 -0.992806 0.267233
-0.066576 -1.001324 0.299941
-0.084642 -0.823150 -0.243917
-0.078487 -0.720663 0.119464
-0.546613 1.173373 0.054810
-0.048774 1.020560 -0.299526
-0.572081 0.994658 -0.261348
-0.086106 -1.178953 -0.236369
-0.389068 0.664193 0.190664
-0.324206 -1.056296 0.281174
-0.387759 -0.759751 0.261106
-0.368951 -0.608104 -0.081707
-0.682709 0.762105 0.299490
-0.750020 -1.029661 -0.123713
-0.585383 -0.652051 -0.272713
-0.507029 0.656832 -0.246647
-0.790019 1.012750 -0.096791
-0.676726 -0.791754 0.297507
-0.780244 -0.808226 -0.272429
-0.072286 0.802450 0.228718
--0.445675 -0.791086 0.284580
-0.794911 0.966254 0.162237
-0.791395 -0.982968 0.146609
-0.966902 -0.670928 0.241519
-0.979615 0.675052 0.231564
-0.630714 -0.501266 0.228137
-0.664544 0.483615 0.240031
-0.975127 -0.635308 -0.251803
-1.103024 0.571856 -0.176418
-1.168994 -0.543437 -0.080376
-0.907130 -0.302976 -0.296636
-0.931345 0.345940 0.300500
-0.909958 -0.338604 0.298790
-0.889916 0.259396 -0.290507
-0.611543 0.370879 -0.094045
-0.619942 -0.394671 -0.138017
-0.978067 0.854318 -0.032130
-0.983555 -0.839775 -0.064698
-1.050455 -0.009957 -0.296278
-1.019182 -0.004924 0.298903
-1.252915 -0.184549 -0.138450
-0.778990 -0.558492 -0.297438
-0.761885 -0.007291 -0.182637
-0.795919 0.534301 -0.297579
-1.242510 0.182706 -0.157288
-1.196213 -0.316951 0.183497
-0.703267 -0.168386 0.112542
-0.710297 0.170562 0.129136
-1.207701 0.332450 0.162218
-1.279836 0.005212 0.106332
diff --git a/data/points/tore3D_300.off b/data/points/tore3D_300.off
deleted file mode 100644
index 00eecbc2..00000000
--- a/data/points/tore3D_300.off
+++ /dev/null
@@ -1,302 +0,0 @@
-OFF
-300 0 0
-0.959534781242014 -0.418347167310406 0.302236706360499
-2.16795051781987 1.8534755312793 -0.523120176939808
--2.38752605996323 -1.50911089699331 -0.565888742230855
--2.70428287516913 -1.25687539753238 0.188394161758062
--1.2293192351549 -1.6433666240448 -0.998632128417844
--0.541060581221073 0.874317877271137 -0.235772670127843
--0.680895633395962 -1.18447800621889 0.773528325120879
-0.307818039582861 1.45003941576708 0.855593436948771
-0.168334095447179 -1.04004287990976 0.322931047726699
--0.693132044992659 2.91846761160023 -0.0265488214271136
-2.21829768934691 -1.80825620958286 0.507029717781912
-1.39353197432761 -1.00232018065434 -0.95898987509937
-1.25103367489055 0.670258962753535 -0.814097483693208
-0.256075322268679 0.980760885647654 -0.164603689388124
--1.03049290335496 -0.548251215382241 -0.553663669101879
--1.4770698664818 1.55244993730008 -0.989743336676147
-2.81127276382533 -0.973240065906209 -0.222333302099467
-1.92081177957661 0.371630788782385 0.999050476863813
-0.940122029559839 0.781599816466946 0.628994896033071
-0.306997277631142 -2.63033061729372 0.761482466789273
-0.612817640625854 2.28021124717378 -0.932517620554714
--0.749699607389099 1.24801965739463 -0.839010966831176
--0.154361066579755 1.04815680087852 0.339688867662217
--0.262639970818703 1.12445753696261 0.534327877655949
-0.36717667006869 -1.01676645451003 0.394334855760279
-0.424035547682691 -0.917168809434391 -0.144175092700111
-2.08261296666578 -2.05785707858966 -0.373061099708758
-0.651279530942164 -0.91244335335117 0.476884993705875
--2.93865473739998 0.176739480659163 0.330046256428844
-0.0752592625269588 -2.86104297523846 0.506852758144546
-2.42108789315239 -1.57246048079025 -0.46192589897907
--1.61942559663475 -1.10542050497529 0.999228952936353
-0.692389459564839 0.770549419741852 0.265645889867695
-1.51841358234726 -1.00021735880109 -0.98334383059774
-2.85075282389761 0.814388843476368 -0.262995967489467
--0.784392975900731 -0.623934865952297 -0.0675029801783761
-2.95477190325865 -0.01545374755798 0.297209425434383
--2.01178925877753 0.819250335239531 0.98506143304802
--1.06049119415128 -0.640702917987696 0.64876172557636
-0.424777646365108 -0.912213211492002 0.111760882407564
-1.62717960754164 -2.51706084785163 0.0745558427305672
-0.991179499609619 -0.137272754245949 0.0357741533639773
-0.586676853840703 -0.981514568432931 0.516124042728287
-0.996296801968011 0.163993329632496 -0.138970552607153
-0.999735468785909 2.8102215879738 -0.18492224634737
-1.80656679908849 -0.264164139672896 0.984706448083062
--1.41495369339859 2.29441949474757 -0.718394190427821
--0.608066058828841 -1.94541607390611 -0.999268905344167
-2.15894083249888 1.6976186891867 -0.66545230252024
--0.0920339025393292 -1.14740764785059 -0.52854186528706
--0.0803524956678571 -2.82987037713862 0.556256089759466
-1.73755451382877 -1.38298334066552 -0.975330014733214
-1.339576888853 -1.69568142514835 0.986958907306434
-0.941158226372244 1.33453565427992 -0.930230027566694
--1.64738843362436 2.11800058817634 -0.730187211545338
--2.09522315192051 2.14264431725583 -0.0797808501517505
--2.70163529798441 -0.512752030638191 -0.661592848269346
-0.0012406381564526 -2.43305836022187 -0.90136573192226
-1.26857330331965 -0.754387632740404 0.851677186577399
-0.555984630753723 -0.853190194061578 -0.190731240639216
--0.376652419334438 0.953098196145437 -0.221429003703334
-0.575823956072062 -1.52858842228987 0.930397979228448
--0.917665722737145 0.426001305594148 -0.152684444024179
--2.2612659986582 1.45631970411773 0.724147482366059
--2.4975593505263 0.336020143137794 -0.854128541403725
--1.21733135240706 -0.635660112064281 -0.779262523564629
--0.869857012314377 2.58076078125195 -0.690415729999257
--1.40500337086406 -0.601791852462944 -0.881844312277268
-2.31904992184587 -1.05819185575653 -0.835775763770501
-1.19729717177012 -1.57894012102566 -0.999829933326901
-1.49128833410868 -0.646133202611446 0.927124838238863
--0.646639588616155 1.64689880969244 0.973024656841064
--1.07933947117704 0.185618755846084 -0.425802800488271
--2.25890103703752 0.840567429045019 -0.911984072088236
-1.02056337401279 -0.444785727078535 -0.46229962045738
--2.01362172913345 1.77850332507576 0.727048210112551
--1.7152404634659 -1.95129617448897 0.801495726550204
-0.24904814258364 -1.73684228270244 0.969423708704471
--0.97192898217864 0.340274559305984 -0.242197940224517
-0.335252717095645 1.05330582776341 0.446812017005886
-0.0757351764289982 -1.003454918955 0.112151625141631
--2.12620574772059 -1.59311887240156 0.754033287759111
--0.325964621805956 -0.967660697886875 -0.204281119631407
-0.847444429135404 -2.75134349865297 0.477009941828313
--2.52939644202034 1.59075929357512 0.154220894882662
--1.51910975922194 2.47536837366441 -0.426830229587188
--1.23951192974026 -2.45646514226776 -0.659762364526391
-0.00537063209046765 -2.98895632800773 -0.148175024086866
-0.578604147500042 -1.40605218842367 -0.877514074075442
-1.32814619313677 0.993211756161157 0.939862017190046
-2.21921387799351 1.69625165174388 0.608911392663736
-2.11087050271442 -1.62983612347069 0.745183392373354
-1.20744870574619 0.759485725637224 -0.819168429715268
--1.85454257923694 0.27227622276858 -0.992083907655554
-1.12410933384486 -0.192246452457068 0.511017950537958
-0.508634803443603 -0.874107029353032 -0.150053592184677
-1.8703001619597 0.692655600076433 0.999984548045959
-1.64361625376311 -1.21013144565734 0.999157018995579
-0.840118117818047 -2.50035600571423 0.770266412736703
-2.3287036316336 -1.17791884555773 0.79265889315273
--2.54280253777906 0.888179845147398 -0.720498448371396
--2.06783509487145 -1.09828285186568 -0.939917075668418
-0.200760576094878 0.999051233659456 0.194124743559801
-1.57705178275634 -1.36916375652601 0.9960789528748
-1.27101041453082 -0.844959876278814 -0.880656839462615
-2.26878096107158 -1.9325250189773 0.197654241802863
-1.00297464475457 2.79196340984832 -0.256097547101918
--1.40380898461312 2.64725539056151 0.0843284379977918
--0.0517392801851798 1.58464174765503 0.910043016348823
--0.301340591032907 1.33506850520998 -0.775501362836281
--0.916802035602795 2.82057847024232 -0.259150467395372
--2.3956686819712 1.05176302652714 -0.787450409390176
-0.260687064694077 -0.989291907955316 0.21352399518671
-1.12792686627226 2.77426524629341 0.101946125819402
--0.0684132204807785 -2.16283457272975 0.986474250179203
-2.93446835470829 0.29913341943434 0.313235563230203
-0.032755222852554 1.65788790402753 0.939776880892029
--0.909983475613723 2.25856131650061 -0.900435993208869
--0.654785891138605 -2.77631341957818 -0.522754517843354
--0.637731499509436 0.816845593255333 -0.267023168326767
--2.09200542287803 -0.48535592606264 -0.98905160843396
-2.47346067782732 0.00404347414316116 -0.880813179367053
--1.07226402798667 -1.22257426020764 0.92749836802861
-1.39068341588794 -0.68753111885771 -0.893709581266259
-2.49123495155807 -0.780792651284873 0.791842221382225
-1.52017311675094 -0.606521706417438 0.931673164101109
--1.41022678618765 0.805159290147271 -0.926575312433509
--2.43386589806161 -0.47159898411599 -0.877741390593103
--0.48020605858504 1.36831644955489 -0.835252691435911
-0.87912613023492 0.619156516496662 0.380637258865281
-0.253085874295989 1.43445725355682 -0.839482019455938
-0.517703192423887 2.78341770290716 0.556042888577917
--1.00656408919327 -2.07658747018639 0.951489907279078
--1.40077608835454 0.925515316363222 0.947050044378871
-2.07634345953723 -1.10323384918967 0.936285655309915
--1.57233200628071 -0.286150759083885 0.915709183775737
--1.15178699195696 -0.454341172294152 0.647764766715205
-0.760883532100737 2.73972227857741 -0.537259031193132
-2.40478710552954 0.399947334915386 0.899063394403055
--1.37636264245145 2.1239854039931 0.847405598008672
-0.620060205826966 -0.788865441879053 -0.0822217432568619
--1.31255288285741 0.709433414132035 -0.861362373356423
-2.87811168494233 0.586136824835297 -0.348820144844317
-1.46215508160988 -2.61812761438328 0.050023918341349
-1.59775483991913 2.14438930309337 0.738569238086525
-2.16166999311135 0.234499849009414 -0.984683361538415
--2.627348149981 -1.44784295277905 0.0162526714459874
-1.55466115277639 -2.06080606798315 -0.813580914672985
-1.4768627986643 0.291640310070862 -0.86911101944411
-0.36020381665219 -0.932877801044002 -0.00278947687261815
-1.02111844342504 -0.846230498172804 0.738907750969927
-0.0753375442562172 -2.00343644006518 0.999988226833092
--0.13730950236629 0.991363204668133 -0.0406636790006198
--2.36318789164257 -1.83848352727692 -0.108400279147113
--0.80461379190523 -1.6474745725615 -0.986034710893435
-1.7756647596058 -2.38360544396859 -0.233741336935155
-1.69896254446626 -0.343351559842879 0.963782400468442
-0.0494913193213498 -2.46795356936345 -0.883490137791417
-1.35772824903814 0.589658412058176 -0.854314907317433
--1.96435893659605 -2.22155414885828 -0.260516416434745
-1.35473240963385 0.346732354142229 0.798797675885133
-0.400966681880103 2.47568026636498 0.861391979701686
--1.62104506824445 -0.572439707452304 0.959751471457789
--0.867237113132388 0.754407264547685 0.525890831738318
-1.08774066807182 0.58266518858005 -0.642803142528264
--1.62210891849555 -2.48905492938415 0.239222440583498
-1.29180344928963 0.216732874635193 -0.723674450462894
--2.23977014077204 1.04128789846265 0.8826717211881
--2.15042174348158 -1.07255921184869 -0.915173594366247
-1.20646041838032 2.20670800057226 -0.857204278269845
--1.59665966804813 2.12974640237861 -0.749686641314759
--0.00507896505098647 1.00004934186706 0.0111568054264668
-1.08896774211599 -0.54893426659595 -0.625155433738454
--2.08838518173774 1.31789005319132 0.882958674731457
--2.67026050322772 0.777218712412565 0.624441286594906
-0.134410054836508 1.03453453869622 -0.290843938402197
--1.15657597782331 0.21336107716996 0.566722675765672
--1.12091291528735 -0.197701697854327 -0.507272467213624
-2.20360569490773 2.03438086720851 -0.0424844996967955
--0.190560364964061 -1.95805452687492 0.999465390706348
--1.69646814346356 -0.625828205037699 0.981438239882928
--0.304352636706423 -2.83100688552149 -0.531082871783868
-0.14563390066437 -2.1691590077372 0.984738172749555
--2.34365544864258 -0.143838445921824 0.937470314360672
-1.02710725533131 -0.411656637698526 0.449124549869131
--1.61565579085794 -1.08738989914736 -0.998620980457037
--0.717364891783532 1.50452842131031 0.942855738747352
--0.578567558143299 0.853096156802936 0.246207825092783
-1.11793653693318 0.455945552854421 0.609663175028121
-2.39251443993049 0.176334486690512 0.916949275349228
-2.9155642712549 -0.62746034690765 0.18721929843073
--1.14806683434513 2.59996359591672 0.539229179127317
--0.177857300266215 1.90119125961188 0.995895769538786
-0.35914818712455 2.31920052987544 -0.937922693979931
-1.2743666522523 -0.690075814269372 0.834645084284416
-2.9302841310705 -0.642986734356231 0.000995094268308586
--1.26975451435037 1.91229429559509 -0.955354478719998
-0.0738366615932967 1.2694977539948 -0.685198041292763
--1.69716232712318 1.22850232281973 0.995464670669604
-0.84570997159476 2.13803629884409 -0.954183333932217
-0.352468648163491 -2.9344545563609 -0.294839028922669
-1.60389935177392 1.74998587824519 0.927507865916284
--2.11217212504527 0.760269273860796 0.969564968832133
-1.74217621467257 2.29099479959881 0.47835741399359
-2.92346903414395 0.330804589449986 -0.33526021272958
--2.35952494893432 0.250879618289894 -0.927901668132089
--1.41032225684219 -0.170788763321419 0.815061677973598
--1.01611744261575 -2.68326939535803 -0.494423710160221
--1.59344928656495 2.26723050382079 -0.636622362537764
--0.39580260135079 -2.90869384965014 0.35332697871175
--1.2619469130673 -1.96838196535269 -0.941085144982828
--1.30548566796483 1.57897857482689 0.998809944306817
--1.35584805950535 -0.237100218600359 0.781761994033332
-2.52115787439036 1.0589742629827 0.678574394474946
--1.95614957999606 1.84500176798258 0.724791088391566
-1.4979623349839 1.58854216289188 0.983033167483811
--0.981146595813074 -0.312003286041912 0.241344264758116
-1.8959899672511 0.736814649744932 -0.999417494784511
--0.757097460644456 -0.653318267664153 0.00461774302265985
-1.10316023266325 -2.54112393275506 -0.637744617153837
--1.72022005250621 2.23190220939628 0.575364412789703
-2.94799384971966 0.358547670782175 -0.244227908472639
--1.00994005619833 -0.0359408889344281 0.14507521649066
-1.00132300605616 0.624998791048906 0.572891974870137
-2.3085624824673 1.91312252759207 0.0591476364274699
--1.6659611493105 -1.84465800051153 0.874183099883255
-1.04218128888347 -0.0688739697225331 0.294844086473301
--0.601696551108497 -2.17864473742223 0.965553097225366
-1.08052048270212 2.3454565036691 0.812916093418994
--1.79474335184654 -0.705336370592575 -0.997431127830519
-1.12310671921089 0.346525230427012 0.565643836449263
-0.696749595851333 -1.32918567757458 -0.86644723350324
-2.13602598032304 -0.51308315076563 -0.980446803768366
--1.93196921945397 1.69157833829893 -0.823120136150302
--2.01941018956472 0.0465497013536062 0.999801046182706
--2.59423705179264 1.10327839008222 -0.573659802885399
--0.585219166556388 1.2580168195987 -0.790451471385005
--0.0576402469775295 1.41565353591293 0.812347628291534
-2.3891312946018 1.26300791722059 0.711751109733218
-2.30156990743563 0.405909870828655 0.941472642528813
-0.275589260456702 -1.00168998250037 -0.276232537275217
--1.29248016136238 -0.876528620996052 0.898813208471374
-2.35322045727023 1.36303382650264 -0.694525299956941
-1.54876331953525 -1.90130806390003 -0.891879829401408
-0.16593187575783 1.69907888603775 0.956162102627631
--1.52945389781439 1.36994725318236 0.998579274948504
-0.947255866427042 0.321393560626499 -0.0242347842318913
--0.849266801325161 -1.69619250008471 -0.994673549743623
-1.17007223184327 -1.45748256057479 0.991388144859652
--1.02065656396392 -0.234068996172272 -0.303449207922113
--1.79030334572357 -0.338548456021292 0.984036300930214
--0.202580788439636 -2.9098032393728 -0.399239754145888
-0.556542406671504 0.835949987061395 0.0922790328770012
--0.192048894344178 2.82750618177242 0.551732977447003
--2.4383233660105 1.32432593198794 -0.632262737666956
-1.00457987324054 2.2017998675896 0.907456835650233
-0.258230866817704 1.01719292156891 0.310599733745205
--0.667635905646098 -0.747459126240117 -0.0665059738190087
--0.925217466789865 -0.458919419892981 -0.253939651272238
-0.593031990252279 0.895690762363157 -0.37806299536721
-2.41891123803036 1.29269511281484 -0.669666978131638
-2.86198580293885 0.898401929715067 0.0252390801762425
-0.577555242801644 2.9381443296706 -0.105947290476281
--1.08511464203043 -1.17367759499812 -0.915830310368355
--0.00823512252879893 -2.34071693036362 0.940160678630731
-0.723355997258736 0.693575864721822 -0.0654384491946278
--2.45564096089468 -0.108134097337387 0.888941553150783
-1.0554937129765 2.48105527060468 0.717810492633049
-0.0900114873059034 -1.35462061558498 0.766376101065206
-1.07215905411075 0.711684540080838 -0.701026091958739
-1.7642570870584 -1.10328014310579 -0.996728357140097
--2.42237083502851 -1.22877182282345 0.69789165141999
--2.29573991343012 1.39431631359088 -0.727611414530717
--0.80608542331762 -0.591802110438813 -0.00185677113225586
-0.584373976640234 -1.2455966078976 -0.781316331338531
--0.117129848865082 1.30318973566841 -0.722321820498621
--0.427012578549237 -2.23637426000762 0.960934425748682
-1.84229944864514 -1.55651807400289 -0.911270828095356
-0.203997692272774 1.21919989241584 -0.645392194686482
-0.446215983259144 -1.74060177047245 -0.979155323351272
--2.26029729565112 -1.9493984229134 -0.173628460146742
--1.25890926878714 2.70615042882704 0.174571595362577
-1.56639306015901 0.363207544125242 -0.919944405133645
--1.34865311186347 0.197323883232669 -0.77087378354129
-2.34234493513434 -1.5350786183092 0.599274108730333
--0.128003282153838 2.84277775092986 0.533724957778819
-2.67959573383432 0.576255466056955 -0.671661470652464
--1.22133840956565 1.75573360172354 -0.9903269014343
--2.65079844065683 0.801278641234516 -0.638940464730991
-1.77058917671795 -1.05700903893028 -0.998069966649505
--0.0617876530073753 2.73595305745592 -0.676273466837526
--1.02613271221592 -0.32948466837676 0.386553542254037
-0.289216189984019 2.86987925980331 0.46670029349679
-0.0221376688554938 -1.6367078071517 0.931733618120448
-0.9880285207657 1.3702732104138 -0.95051910813202
--2.35149763797368 -1.28585604226228 -0.733114009304653
--0.984949657118942 -2.15300005263466 -0.929983557964422
-0.815196720196319 0.609995430318387 -0.189686296979061
--1.36318181784209 0.682494702259896 -0.879709239261867
--0.562439533917299 2.60180320419631 -0.749591065583496
diff --git a/data/points/tore3D_300.weights b/data/points/tore3D_300.weights
deleted file mode 100644
index 8087721d..00000000
--- a/data/points/tore3D_300.weights
+++ /dev/null
@@ -1,300 +0,0 @@
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
diff --git a/doc/Alpha_complex/COPYRIGHT b/doc/Alpha_complex/COPYRIGHT
deleted file mode 100644
index 5f1d97cc..00000000
--- a/doc/Alpha_complex/COPYRIGHT
+++ /dev/null
@@ -1,19 +0,0 @@
-The files of this directory are part of the Gudhi Library. The Gudhi library
-(Geometric Understanding in Higher Dimensions) is a generic C++ library for
-computational topology.
-
-Author(s): Vincent Rouvreau
-
-Copyright (C) 2015 Inria
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/doc/Alpha_complex/Intro_alpha_complex.h b/doc/Alpha_complex/Intro_alpha_complex.h
deleted file mode 100644
index 7a375c9f..00000000
--- a/doc/Alpha_complex/Intro_alpha_complex.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef DOC_ALPHA_COMPLEX_INTRO_ALPHA_COMPLEX_H_
-#define DOC_ALPHA_COMPLEX_INTRO_ALPHA_COMPLEX_H_
-
-// needs namespace for Doxygen to link on classes
-namespace Gudhi {
-// needs namespace for Doxygen to link on classes
-namespace alpha_complex {
-
-/** \defgroup alpha_complex Alpha complex
- *
- * \author Vincent Rouvreau
- *
- * @{
- *
- * \section definition Definition
- *
- * Alpha_complex is a <a target="_blank" href="https://en.wikipedia.org/wiki/Simplicial_complex">simplicial complex</a>
- * constructed from the finite cells of a Delaunay Triangulation.
- *
- * The filtration value of each simplex is computed as the square of the circumradius of the simplex if the
- * circumsphere is empty (the simplex is then said to be Gabriel), and as the minimum of the filtration
- * values of the codimension 1 cofaces that make it not Gabriel otherwise.
- *
- * All simplices that have a filtration value strictly greater than a given alpha squared value are not inserted into
- * the complex.
- *
- * \image html "alpha_complex_representation.png" "Alpha-complex representation"
- *
- * Alpha_complex is constructing a <a target="_blank"
- * href="http://doc.cgal.org/latest/Triangulation/index.html#Chapter_Triangulations">Delaunay Triangulation</a>
- * \cite cgal:hdj-t-15b from <a target="_blank" href="http://www.cgal.org/">CGAL</a> (the Computational Geometry
- * Algorithms Library \cite cgal:eb-15b) and is able to create a `SimplicialComplexForAlpha`.
- *
- * The complex is a template class requiring an Epick_d <a target="_blank"
- * href="http://doc.cgal.org/latest/Kernel_d/index.html#Chapter_dD_Geometry_Kernel">dD Geometry Kernel</a>
- * \cite cgal:s-gkd-15b from CGAL as template parameter.
- *
- * \remark
- * - When the simplicial complex is constructed with an infinite value of alpha, the complex is a Delaunay
- * complex.
- * - For people only interested in the topology of the \ref alpha_complex (for instance persistence),
- * \ref alpha_complex is equivalent to the \ref cech_complex and much smaller if you do not bound the radii.
- * \ref cech_complex can still make sense in higher dimension precisely because you can bound the radii.
- *
- * \section pointsexample Example from points
- *
- * This example builds the Delaunay triangulation from the given points in a 2D static kernel, and creates a
- * `Simplex_tree` with it.
- *
- * Then, it is asked to display information about the simplicial complex.
- *
- * \include Alpha_complex/Alpha_complex_from_points.cpp
- *
- * When launching:
- *
- * \code $> ./Alpha_complex_example_from_points
- * \endcode
- *
- * the program output is:
- *
- * \include Alpha_complex/alphaoffreader_for_doc_60.txt
- *
- * \section createcomplexalgorithm Create complex algorithm
- *
- * \subsection datastructure Data structure
- *
- * In order to create the simplicial complex, first, it is built from the cells of the Delaunay Triangulation.
- * The filtration values are set to NaN, which stands for unknown value.
- *
- * In example, :
- * \image html "alpha_complex_doc.png" "Simplicial complex structure construction example"
- *
- * \subsection filtrationcomputation Filtration value computation algorithm
- * <br>
- * \f$
- * \textbf{for } \text{i : dimension } \rightarrow 0 \textbf{ do}\\
- * \quad \textbf{for all } \sigma \text{ of dimension i}\\
- * \quad\quad \textbf{if } \text{filtration(} \sigma ) \text{ is NaN} \textbf{ then}\\
- * \quad\quad\quad \text{filtration(} \sigma ) = \alpha^2( \sigma )\\
- * \quad\quad \textbf{end if}\\
- * \quad\quad \textbf{for all } \tau \text{ face of } \sigma \textbf{ do}\quad\quad
- * \textit{// propagate alpha filtration value}\\
- * \quad\quad\quad \textbf{if } \text{filtration(} \tau ) \text{ is not NaN} \textbf{ then}\\
- * \quad\quad\quad\quad \text{filtration(} \tau \text{) = min( filtration(} \tau \text{), filtration(} \sigma
- * \text{) )}\\
- * \quad\quad\quad \textbf{else}\\
- * \quad\quad\quad\quad \textbf{if } \textbf{if } \tau \text{ is not Gabriel for } \sigma \textbf{ then}\\
- * \quad\quad\quad\quad\quad \text{filtration(} \tau \text{) = filtration(} \sigma \text{)}\\
- * \quad\quad\quad\quad \textbf{end if}\\
- * \quad\quad\quad \textbf{end if}\\
- * \quad\quad \textbf{end for}\\
- * \quad \textbf{end for}\\
- * \textbf{end for}\\
- * \text{make_filtration_non_decreasing()}\\
- * \text{prune_above_filtration()}\\
- * \f$
- *
- * \subsubsection dimension2 Dimension 2
- *
- * From the example above, it means the algorithm looks into each triangle ([0,1,2], [0,2,4], [1,2,3], ...),
- * computes the filtration value of the triangle, and then propagates the filtration value as described
- * here :
- * \image html "alpha_complex_doc_420.png" "Filtration value propagation example"
- *
- * \subsubsection dimension1 Dimension 1
- *
- * Then, the algorithm looks into each edge ([0,1], [0,2], [1,2], ...),
- * computes the filtration value of the edge (in this case, propagation will have no effect).
- *
- * \subsubsection dimension0 Dimension 0
- *
- * Finally, the algorithm looks into each vertex ([0], [1], [2], [3], [4], [5] and [6]) and
- * sets the filtration value (0 in case of a vertex - propagation will have no effect).
- *
- * \subsubsection nondecreasing Non decreasing filtration values
- *
- * As the squared radii computed by CGAL are an approximation, it might happen that these alpha squared values do not
- * quite define a proper filtration (i.e. non-decreasing with respect to inclusion).
- * We fix that up by calling `SimplicialComplexForAlpha::make_filtration_non_decreasing()`.
- *
- * \subsubsection pruneabove Prune above given filtration value
- *
- * The simplex tree is pruned from the given maximum alpha squared value (cf.
- * `SimplicialComplexForAlpha::prune_above_filtration()`).
- * In the following example, the value is given by the user as argument of the program.
- *
- *
- * \section offexample Example from OFF file
- *
- * This example builds the Delaunay triangulation in a dynamic kernel, and initializes the alpha complex with it.
- *
- *
- * Then, it is asked to display information about the alpha complex.
- *
- * \include Alpha_complex/Alpha_complex_from_off.cpp
- *
- * When launching:
- *
- * \code $> ./Alpha_complex_example_from_off ../../data/points/alphacomplexdoc.off 32.0
- * \endcode
- *
- * the program output is:
- *
- * \include Alpha_complex/alphaoffreader_for_doc_32.txt
- *
- */
-/** @} */ // end defgroup alpha_complex
-
-} // namespace alpha_complex
-
-namespace alphacomplex = alpha_complex;
-
-} // namespace Gudhi
-
-#endif // DOC_ALPHA_COMPLEX_INTRO_ALPHA_COMPLEX_H_
diff --git a/doc/Alpha_complex/alpha_complex_doc.ipe b/doc/Alpha_complex/alpha_complex_doc.ipe
deleted file mode 100644
index 71e5ce6c..00000000
--- a/doc/Alpha_complex/alpha_complex_doc.ipe
+++ /dev/null
@@ -1,296 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE ipe SYSTEM "ipe.dtd">
-<ipe version="70107" creator="Ipe 7.1.10">
-<info created="D:20150603143945" modified="D:20160921180211"/>
-<ipestyle name="basic">
-<symbol name="arrow/arc(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/farc(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="mark/circle(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</symbol>
-<symbol name="mark/disk(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-</path>
-</symbol>
-<symbol name="mark/fdisk(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
-0.5 0 0 0.5 0 0 e
-</path>
-<path fill="sym-stroke" fillrule="eofill">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</group>
-</symbol>
-<symbol name="mark/box(sx)" transformations="translations">
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</symbol>
-<symbol name="mark/square(sx)" transformations="translations">
-<path fill="sym-stroke">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
-</path>
-</symbol>
-<symbol name="mark/fsquare(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
--0.5 -0.5 m
-0.5 -0.5 l
-0.5 0.5 l
--0.5 0.5 l
-h
-</path>
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="mark/cross(sx)" transformations="translations">
-<group>
-<path fill="sym-stroke">
--0.43 -0.57 m
-0.57 0.43 l
-0.43 0.57 l
--0.57 -0.43 l
-h
-</path>
-<path fill="sym-stroke">
--0.43 0.57 m
-0.57 -0.43 l
-0.43 -0.57 l
--0.57 0.43 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="arrow/fnormal(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/pointed(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/fpointed(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/linear(spx)">
-<path stroke="sym-stroke" pen="sym-pen">
--1 0.333 m
-0 0 l
--1 -0.333 l
-</path>
-</symbol>
-<symbol name="arrow/fdouble(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/double(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<pen name="heavier" value="0.8"/>
-<pen name="fat" value="1.2"/>
-<pen name="ultrafat" value="2"/>
-<symbolsize name="large" value="5"/>
-<symbolsize name="small" value="2"/>
-<symbolsize name="tiny" value="1.1"/>
-<arrowsize name="large" value="10"/>
-<arrowsize name="small" value="5"/>
-<arrowsize name="tiny" value="3"/>
-<color name="red" value="1 0 0"/>
-<color name="green" value="0 1 0"/>
-<color name="blue" value="0 0 1"/>
-<color name="yellow" value="1 1 0"/>
-<color name="orange" value="1 0.647 0"/>
-<color name="gold" value="1 0.843 0"/>
-<color name="purple" value="0.627 0.125 0.941"/>
-<color name="gray" value="0.745"/>
-<color name="brown" value="0.647 0.165 0.165"/>
-<color name="navy" value="0 0 0.502"/>
-<color name="pink" value="1 0.753 0.796"/>
-<color name="seagreen" value="0.18 0.545 0.341"/>
-<color name="turquoise" value="0.251 0.878 0.816"/>
-<color name="violet" value="0.933 0.51 0.933"/>
-<color name="darkblue" value="0 0 0.545"/>
-<color name="darkcyan" value="0 0.545 0.545"/>
-<color name="darkgray" value="0.663"/>
-<color name="darkgreen" value="0 0.392 0"/>
-<color name="darkmagenta" value="0.545 0 0.545"/>
-<color name="darkorange" value="1 0.549 0"/>
-<color name="darkred" value="0.545 0 0"/>
-<color name="lightblue" value="0.678 0.847 0.902"/>
-<color name="lightcyan" value="0.878 1 1"/>
-<color name="lightgray" value="0.827"/>
-<color name="lightgreen" value="0.565 0.933 0.565"/>
-<color name="lightyellow" value="1 1 0.878"/>
-<dashstyle name="dashed" value="[4] 0"/>
-<dashstyle name="dotted" value="[1 3] 0"/>
-<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>
-<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>
-<textsize name="large" value="\large"/>
-<textsize name="small" value="\small"/>
-<textsize name="tiny" value="\tiny"/>
-<textsize name="Large" value="\Large"/>
-<textsize name="LARGE" value="\LARGE"/>
-<textsize name="huge" value="\huge"/>
-<textsize name="Huge" value="\Huge"/>
-<textsize name="footnote" value="\footnotesize"/>
-<textstyle name="center" begin="\begin{center}" end="\end{center}"/>
-<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>
-<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>
-<gridsize name="4 pts" value="4"/>
-<gridsize name="8 pts (~3 mm)" value="8"/>
-<gridsize name="16 pts (~6 mm)" value="16"/>
-<gridsize name="32 pts (~12 mm)" value="32"/>
-<gridsize name="10 pts (~3.5 mm)" value="10"/>
-<gridsize name="20 pts (~7 mm)" value="20"/>
-<gridsize name="14 pts (~5 mm)" value="14"/>
-<gridsize name="28 pts (~10 mm)" value="28"/>
-<gridsize name="56 pts (~20 mm)" value="56"/>
-<anglesize name="90 deg" value="90"/>
-<anglesize name="60 deg" value="60"/>
-<anglesize name="45 deg" value="45"/>
-<anglesize name="30 deg" value="30"/>
-<anglesize name="22.5 deg" value="22.5"/>
-<tiling name="falling" angle="-60" step="4" width="1"/>
-<tiling name="rising" angle="30" step="4" width="1"/>
-</ipestyle>
-<page>
-<layer name="alpha"/>
-<view layers="alpha" active="alpha"/>
-<path layer="alpha" matrix="1 0 0 1 -240 0" stroke="darkcyan">
-320 580 m
-350 520 l
-290 530 l
-320 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 -240 0" stroke="darkcyan">
-320 580 m
-280 660 l
-290 530 l
-320 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 -240 0" stroke="darkcyan">
-320 580 m
-370 580 l
-350 520 l
-320 580 l
-</path>
-<text matrix="1 0 0 1 -260 0" transformations="translations" pos="380 530" stroke="darkcyan" type="label" width="118.196" height="8.307" depth="2.32" valign="baseline" size="large">Delaunay triangulation</text>
-<text matrix="1 0 0 1 -242.155 -3.50128" transformations="translations" pos="282.952 524.893" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text>
-<text matrix="1 0 0 1 -240 0" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
-<text matrix="1 0 0 1 -240 0" transformations="translations" pos="310.693 578.759" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
-<text matrix="1 0 0 1 -240 0" transformations="translations" pos="375.332 578.49" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
-<text matrix="1 0 0 1 -240 0" transformations="translations" pos="272.179 660.635" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
-<text matrix="1 0 0 1 -239.3 -10.1537" transformations="translations" pos="296.419 724.197" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
-<text matrix="1 0 0 1 -240 0" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text>
-<path matrix="1 0 0 1 -240 0" stroke="darkcyan">
-280 660 m
-300 710 l
-370 690 l
-280 660 l
-</path>
-<path matrix="1 0 0 1 -240 0" stroke="darkcyan">
-320 580 m
-370 690 l
-370 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 -240 0" stroke="darkcyan">
-280 660 m
-370 690 l
-320 580 l
-280 660 l
-</path>
-<text matrix="1 0 0 1 76 36" transformations="translations" pos="180 620" stroke="black" type="label" width="153.148" height="6.926" depth="1.93" valign="baseline">Simplicial complex data structure :</text>
-<use matrix="1 0 0 1 -239.3 -10.1537" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -240 0" name="mark/fdisk(sfx)" pos="370 690" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -240 0" name="mark/fdisk(sfx)" pos="280 660" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -240 0" name="mark/fdisk(sfx)" pos="320 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -240 0" name="mark/fdisk(sfx)" pos="370 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -240 0" name="mark/fdisk(sfx)" pos="350 520" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -240 0" name="mark/fdisk(sfx)" pos="290 530" size="normal" stroke="black" fill="white"/>
-<text matrix="1 0 0 1 -20 -32" transformations="translations" pos="288 672" stroke="black" type="label" width="148.582" height="7.473" depth="2.49" valign="baseline">insert simplex and subfaces [0,1,2]</text>
-<text matrix="1 0 0 1 -20 -56" transformations="translations" pos="288 672" stroke="black" type="label" width="148.582" height="7.473" depth="2.49" valign="baseline">insert simplex and subfaces [1,2,3]</text>
-<text matrix="1 0 0 1 -20 -44" transformations="translations" pos="288 672" stroke="black" type="label" width="148.582" height="7.473" depth="2.49" valign="baseline">insert simplex and subfaces [0,2,4]</text>
-<text matrix="1 0 0 1 -20 -68" transformations="translations" pos="288 672" stroke="black" type="label" width="148.582" height="7.473" depth="2.49" valign="baseline">insert simplex and subfaces [2,3,6]</text>
-<text matrix="1 0 0 1 -20 -80" transformations="translations" pos="288 672" stroke="black" type="label" width="148.582" height="7.473" depth="2.49" valign="baseline">insert simplex and subfaces [2,4,6]</text>
-<text matrix="1 0 0 1 -20 -92" transformations="translations" pos="288 672" stroke="black" type="label" width="148.582" height="7.473" depth="2.49" valign="baseline">insert simplex and subfaces [4,5,6]</text>
-</page>
-</ipe>
diff --git a/doc/Alpha_complex/alpha_complex_doc.png b/doc/Alpha_complex/alpha_complex_doc.png
deleted file mode 100644
index 170bae80..00000000
--- a/doc/Alpha_complex/alpha_complex_doc.png
+++ /dev/null
Binary files differ
diff --git a/doc/Alpha_complex/alpha_complex_doc_420.ipe b/doc/Alpha_complex/alpha_complex_doc_420.ipe
deleted file mode 100644
index 5d1d29d4..00000000
--- a/doc/Alpha_complex/alpha_complex_doc_420.ipe
+++ /dev/null
@@ -1,514 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE ipe SYSTEM "ipe.dtd">
-<ipe version="70107" creator="Ipe 7.1.10">
-<info created="D:20150603143945" modified="D:20151130095019"/>
-<ipestyle name="basic">
-<symbol name="arrow/arc(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/farc(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="mark/circle(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</symbol>
-<symbol name="mark/disk(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-</path>
-</symbol>
-<symbol name="mark/fdisk(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
-0.5 0 0 0.5 0 0 e
-</path>
-<path fill="sym-stroke" fillrule="eofill">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</group>
-</symbol>
-<symbol name="mark/box(sx)" transformations="translations">
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</symbol>
-<symbol name="mark/square(sx)" transformations="translations">
-<path fill="sym-stroke">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
-</path>
-</symbol>
-<symbol name="mark/fsquare(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
--0.5 -0.5 m
-0.5 -0.5 l
-0.5 0.5 l
--0.5 0.5 l
-h
-</path>
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="mark/cross(sx)" transformations="translations">
-<group>
-<path fill="sym-stroke">
--0.43 -0.57 m
-0.57 0.43 l
-0.43 0.57 l
--0.57 -0.43 l
-h
-</path>
-<path fill="sym-stroke">
--0.43 0.57 m
-0.57 -0.43 l
-0.43 -0.57 l
--0.57 0.43 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="arrow/fnormal(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/pointed(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/fpointed(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/linear(spx)">
-<path stroke="sym-stroke" pen="sym-pen">
--1 0.333 m
-0 0 l
--1 -0.333 l
-</path>
-</symbol>
-<symbol name="arrow/fdouble(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/double(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<pen name="heavier" value="0.8"/>
-<pen name="fat" value="1.2"/>
-<pen name="ultrafat" value="2"/>
-<symbolsize name="large" value="5"/>
-<symbolsize name="small" value="2"/>
-<symbolsize name="tiny" value="1.1"/>
-<arrowsize name="large" value="10"/>
-<arrowsize name="small" value="5"/>
-<arrowsize name="tiny" value="3"/>
-<color name="red" value="1 0 0"/>
-<color name="green" value="0 1 0"/>
-<color name="blue" value="0 0 1"/>
-<color name="yellow" value="1 1 0"/>
-<color name="orange" value="1 0.647 0"/>
-<color name="gold" value="1 0.843 0"/>
-<color name="purple" value="0.627 0.125 0.941"/>
-<color name="gray" value="0.745"/>
-<color name="brown" value="0.647 0.165 0.165"/>
-<color name="navy" value="0 0 0.502"/>
-<color name="pink" value="1 0.753 0.796"/>
-<color name="seagreen" value="0.18 0.545 0.341"/>
-<color name="turquoise" value="0.251 0.878 0.816"/>
-<color name="violet" value="0.933 0.51 0.933"/>
-<color name="darkblue" value="0 0 0.545"/>
-<color name="darkcyan" value="0 0.545 0.545"/>
-<color name="darkgray" value="0.663"/>
-<color name="darkgreen" value="0 0.392 0"/>
-<color name="darkmagenta" value="0.545 0 0.545"/>
-<color name="darkorange" value="1 0.549 0"/>
-<color name="darkred" value="0.545 0 0"/>
-<color name="lightblue" value="0.678 0.847 0.902"/>
-<color name="lightcyan" value="0.878 1 1"/>
-<color name="lightgray" value="0.827"/>
-<color name="lightgreen" value="0.565 0.933 0.565"/>
-<color name="lightyellow" value="1 1 0.878"/>
-<dashstyle name="dashed" value="[4] 0"/>
-<dashstyle name="dotted" value="[1 3] 0"/>
-<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>
-<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>
-<textsize name="large" value="\large"/>
-<textsize name="small" value="\small"/>
-<textsize name="tiny" value="\tiny"/>
-<textsize name="Large" value="\Large"/>
-<textsize name="LARGE" value="\LARGE"/>
-<textsize name="huge" value="\huge"/>
-<textsize name="Huge" value="\Huge"/>
-<textsize name="footnote" value="\footnotesize"/>
-<textstyle name="center" begin="\begin{center}" end="\end{center}"/>
-<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>
-<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>
-<gridsize name="4 pts" value="4"/>
-<gridsize name="8 pts (~3 mm)" value="8"/>
-<gridsize name="16 pts (~6 mm)" value="16"/>
-<gridsize name="32 pts (~12 mm)" value="32"/>
-<gridsize name="10 pts (~3.5 mm)" value="10"/>
-<gridsize name="20 pts (~7 mm)" value="20"/>
-<gridsize name="14 pts (~5 mm)" value="14"/>
-<gridsize name="28 pts (~10 mm)" value="28"/>
-<gridsize name="56 pts (~20 mm)" value="56"/>
-<anglesize name="90 deg" value="90"/>
-<anglesize name="60 deg" value="60"/>
-<anglesize name="45 deg" value="45"/>
-<anglesize name="30 deg" value="30"/>
-<anglesize name="22.5 deg" value="22.5"/>
-<tiling name="falling" angle="-60" step="4" width="1"/>
-<tiling name="rising" angle="30" step="4" width="1"/>
-</ipestyle>
-<page>
-<layer name="alpha"/>
-<view layers="alpha" active="alpha"/>
-<path layer="alpha" matrix="1 0 0 1 0 80" stroke="lightgray">
-320 580 m
-350 520 l
-290 530 l
-320 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 0 80" stroke="darkcyan" pen="heavier">
-320 580 m
-280 660 l
-290 530 l
-320 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 0 80" stroke="lightgray">
-320 580 m
-370 580 l
-350 520 l
-320 580 l
-</path>
-<text matrix="1 0 0 1 0 80" transformations="translations" pos="380 530" stroke="darkcyan" type="label" width="54.628" height="8.965" depth="2.99" valign="baseline" size="large">Cell [4,2,0]</text>
-<text matrix="1 0 0 1 -2.15463 76.4987" transformations="translations" pos="282.952 524.893" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text>
-<text matrix="1 0 0 1 0 80" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
-<text matrix="1 0 0 1 0 80" transformations="translations" pos="310.693 578.759" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
-<text matrix="1 0 0 1 0 80" transformations="translations" pos="375.332 578.49" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
-<text matrix="1 0 0 1 0 80" transformations="translations" pos="272.179 660.635" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
-<text matrix="1 0 0 1 0.700256 69.8463" transformations="translations" pos="296.419 724.197" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
-<text matrix="1 0 0 1 0 80" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text>
-<path matrix="1 0 0 1 0 80" stroke="lightgray">
-280 660 m
-300 710 l
-370 690 l
-280 660 l
-</path>
-<path matrix="1 0 0 1 0 80" stroke="lightgray">
-320 580 m
-370 690 l
-370 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 0 80" stroke="lightgray">
-280 660 m
-370 690 l
-320 580 l
-280 660 l
-</path>
-<path matrix="1 0 0 1 0 80" stroke="darkcyan">
-77.2727 0 0 77.2727 243.636 591.818 e
-</path>
-<path matrix="1 0 0 1 0 80" stroke="darkcyan">
-243.428 591.569 m
-186.061 643.28 l
-</path>
-<text matrix="1 0 0 1 0 80" transformations="translations" pos="212.724 627.389" stroke="darkcyan" type="label" width="18.785" height="4.294" depth="1.49" valign="baseline">$\alpha_{420}$</text>
-<path matrix="1 0 0 1 -264 -162" stroke="lightgray">
-320 580 m
-350 520 l
-290 530 l
-320 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 -264 -162" stroke="lightgray">
-320 580 m
-280 660 l
-290 530 l
-320 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 -264 -162" stroke="lightgray">
-320 580 m
-370 580 l
-350 520 l
-320 580 l
-</path>
-<text matrix="0.582962 0 0 1 -211.265 -209.555" transformations="translations" pos="380 530" stroke="darkcyan" type="label" width="231.798" height="8.965" depth="2.99" valign="baseline" size="large">[2,0] is Gabriel $\rightarrow$ $\alpha_{20}$ is not$\\$
-modified (NaN)
-</text>
-<text matrix="1 0 0 1 -266.155 -165.501" transformations="translations" pos="282.952 524.893" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text>
-<text matrix="1 0 0 1 -264 -162" transformations="translations" pos="310.693 578.759" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
-<text matrix="1 0 0 1 -264 -162" transformations="translations" pos="375.332 578.49" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
-<text matrix="1 0 0 1 -264 -172" transformations="translations" pos="272.179 660.635" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
-<text matrix="1 0 0 1 -263.3 -172.154" transformations="translations" pos="296.419 724.197" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
-<text matrix="1 0 0 1 -264 -162" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text>
-<path matrix="1 0 0 1 -264 -162" stroke="lightgray">
-280 660 m
-300 710 l
-370 690 l
-280 660 l
-</path>
-<path matrix="1 0 0 1 -264 -162" stroke="lightgray">
-320 580 m
-370 690 l
-370 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 -264 -162" stroke="lightgray">
-280 660 m
-370 690 l
-320 580 l
-280 660 l
-</path>
-<text matrix="1 0 0 1 -166.834 -240.52" transformations="translations" pos="212.724 627.389" stroke="darkcyan" type="label" width="14.814" height="4.294" depth="1.49" valign="baseline">$\alpha_{20}$</text>
-<path matrix="1 0 0 1 -264 -162" stroke="darkcyan" pen="heavier">
-290 530 m
-320 580 l
-</path>
-<path matrix="1 0 0 1 -264 -162" stroke="darkcyan">
-29.1548 0 0 29.1548 305 555 e
-</path>
-<path matrix="1 0 0 1 -264 -162" stroke="darkcyan">
-304.883 555.015 m
-334.509 555.015 l
-</path>
-<path matrix="1 0 0 1 -37.2997 -163.65" stroke="lightgray">
-320 580 m
-350 520 l
-290 530 l
-320 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 -38 -164" stroke="lightgray">
-320 580 m
-280 660 l
-290 530 l
-320 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 -38 -164" stroke="lightgray">
-320 580 m
-370 580 l
-350 520 l
-320 580 l
-</path>
-<text matrix="1 0 0 1 -199.21 -189.117" transformations="translations" pos="380 530" stroke="darkred" type="label" width="168.308" height="8.965" depth="2.99" valign="baseline" size="large">[0,4] is not Gabriel $\rightarrow$ $\alpha_{40} = \alpha_{420}$</text>
-<text matrix="1 0 0 1 -40.1546 -167.501" transformations="translations" pos="282.952 524.893" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text>
-<text matrix="1 0 0 1 -38 -164" transformations="translations" pos="375.332 578.49" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
-<text matrix="1 0 0 1 -37.2997 -174.154" transformations="translations" pos="296.419 724.197" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
-<text matrix="1 0 0 1 -38 -164" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text>
-<path matrix="1 0 0 1 -38 -164" stroke="lightgray">
-280 660 m
-300 710 l
-370 690 l
-280 660 l
-</path>
-<path matrix="1 0 0 1 -38 -164" stroke="lightgray">
-320 580 m
-370 690 l
-370 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 -38 -164" stroke="lightgray">
-280 660 m
-370 690 l
-320 580 l
-280 660 l
-</path>
-<text matrix="1 0 0 1 52.4654 -193.97" transformations="translations" pos="212.724 627.389" stroke="darkcyan" type="label" width="14.814" height="4.294" depth="1.49" valign="baseline">$\alpha_{40}$</text>
-<path matrix="1 0 0 1 -38 -164" stroke="darkcyan" pen="heavier">
-290 530 m
-280 660 l
-</path>
-<path matrix="1 0 0 1 126 -162" stroke="lightgray">
-320 580 m
-350 520 l
-290 530 l
-320 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 126 -162" stroke="lightgray">
-320 580 m
-280 660 l
-290 530 l
-320 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 126 -162" stroke="lightgray">
-320 580 m
-370 580 l
-350 520 l
-320 580 l
-</path>
-<text matrix="1 0 0 1 123.845 -165.501" transformations="translations" pos="282.952 524.893" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text>
-<text matrix="1 0 0 1 126 -162" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
-<text matrix="1 0 0 1 126 -162" transformations="translations" pos="310.693 578.759" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
-<text matrix="1 0 0 1 126 -162" transformations="translations" pos="375.332 578.49" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
-<text matrix="1 0 0 1 126.7 -172.154" transformations="translations" pos="296.419 724.197" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
-<text matrix="1 0 0 1 126 -162" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text>
-<path matrix="1 0 0 1 126 -162" stroke="lightgray">
-280 660 m
-300 710 l
-370 690 l
-280 660 l
-</path>
-<path matrix="1 0 0 1 126 -162" stroke="lightgray">
-320 580 m
-370 690 l
-370 580 l
-320 580 l
-</path>
-<path matrix="1 0 0 1 126 -162" stroke="lightgray">
-280 660 m
-370 690 l
-320 580 l
-280 660 l
-</path>
-<text matrix="1 0 0 1 225.859 -165.729" transformations="translations" pos="212.724 627.389" stroke="darkcyan" type="label" width="14.814" height="4.294" depth="1.49" valign="baseline">$\alpha_{42}$</text>
-<text matrix="1 0 0 1 122 -164" transformations="translations" pos="272.179 660.635" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
-<path stroke="darkcyan" pen="heavier">
-406.093 497.775 m
-446.094 418.092 l
-</path>
-<path stroke="darkcyan">
-44.5799 0 0 44.5799 425.934 457.774 e
-</path>
-<path stroke="darkcyan">
-425.854 457.774 m
-470.795 457.774 l
-</path>
-<text matrix="1 0 0 1 -48.9756 -209.799" transformations="translations" pos="380 530" stroke="darkcyan" type="label" width="231.798" height="8.965" depth="2.99" valign="baseline" size="large">[2,4] is Gabriel $\rightarrow$ $\alpha_{42}$ is not modified (NaN)
-</text>
-<path stroke="darkblue" arrow="normal/normal">
-205.028 596.091 m
-110.946 544.02 l
-</path>
-<path stroke="darkblue" arrow="normal/normal">
-280.768 588.99 m
-280.768 547.57 l
-</path>
-<path stroke="darkblue" arrow="normal/normal">
-341.123 594.316 m
-413.904 554.079 l
-</path>
-<text matrix="1 0 0 1 39.645 -2.36686" transformations="translations" pos="199.703 569.464" stroke="darkblue" type="label" width="93.206" height="7.473" depth="2.49" valign="baseline">For all faces of [4,2,0]</text>
-<text matrix="1 0 0 1 -93.391 2.68003" transformations="translations" pos="104.437 300.174" stroke="black" type="label" width="208.621" height="6.926" depth="1.93" valign="baseline">N.B. : is Gabriel on a single point has no sense.</text>
-<text matrix="1 0 0 1 -36.9231 10" transformations="translations" pos="48 784" stroke="black" type="label" width="118.324" height="7.473" depth="2.49" valign="baseline">Dimension =2 - $\sigma$ = [4,2,0]</text>
-<path stroke="darkcyan">
-247.333 430.892 m
-311.764 430.892 l
-</path>
-<use matrix="1 0 0 1 0.700256 69.8463" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 0 80" name="mark/fdisk(sfx)" pos="370 690" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 0 80" name="mark/fdisk(sfx)" pos="280 660" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 0 80" name="mark/fdisk(sfx)" pos="243.636 591.818" size="normal" stroke="darkcyan" fill="white"/>
-<use matrix="1 0 0 1 0 80" name="mark/fdisk(sfx)" pos="370 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 0 80" name="mark/fdisk(sfx)" pos="350 520" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 0 80" name="mark/fdisk(sfx)" pos="320 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 0 80" name="mark/fdisk(sfx)" pos="290 530" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -263.3 -172.154" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -264 -162" name="mark/fdisk(sfx)" pos="280 660" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -264 -162" name="mark/fdisk(sfx)" pos="370 690" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -264 -162" name="mark/fdisk(sfx)" pos="370 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -264 -162" name="mark/fdisk(sfx)" pos="350 520" size="normal" stroke="black" fill="white"/>
-<text matrix="1 0 0 1 -264 -162" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
-<use matrix="1 0 0 1 -264 -162" name="mark/fdisk(sfx)" pos="305 555" size="normal" stroke="darkcyan" fill="white"/>
-<use matrix="1 0 0 1 -264 -162" name="mark/fdisk(sfx)" pos="290 530" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -264 -162" name="mark/fdisk(sfx)" pos="320 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -37.2997 -174.154" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -38 -164" name="mark/fdisk(sfx)" pos="370 690" size="normal" stroke="black" fill="white"/>
-<text matrix="1 0 0 1 -38 -164" transformations="translations" pos="272.179 660.635" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
-<use name="mark/fdisk(sfx)" pos="247 431" size="normal" stroke="darkcyan" fill="white"/>
-<use matrix="1 0 0 1 -38 -164" name="mark/fdisk(sfx)" pos="350 520" size="normal" stroke="black" fill="white"/>
-<text matrix="1 0 0 1 -38 -164" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
-<use matrix="1 0 0 1 -38 -164" name="mark/fdisk(sfx)" pos="370 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -38 -164" name="mark/fdisk(sfx)" pos="320 580" size="normal" stroke="darkred" fill="white"/>
-<text matrix="1 0 0 1 -38 -164" transformations="translations" pos="310.693 578.759" stroke="darkred" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
-<path matrix="1 0 0 1 -38 -164" stroke="darkred" pen="heavier">
-65.192 0 0 65.192 285 595 e
-</path>
-<use matrix="1 0 0 1 -38 -164" name="mark/fdisk(sfx)" pos="290 530" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 126 -162" name="mark/fdisk(sfx)" pos="290 530" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 126.7 -172.154" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 126 -162" name="mark/fdisk(sfx)" pos="370 690" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 126 -162" name="mark/fdisk(sfx)" pos="280 660" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="425.934 457.774" size="normal" stroke="darkcyan" fill="white"/>
-<use matrix="1 0 0 1 126 -162" name="mark/fdisk(sfx)" pos="320 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 126 -162" name="mark/fdisk(sfx)" pos="370 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 126 -162" name="mark/fdisk(sfx)" pos="350 520" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -38 -164" name="mark/fdisk(sfx)" pos="280 660" size="normal" stroke="black" fill="white"/>
-</page>
-</ipe>
diff --git a/doc/Alpha_complex/alpha_complex_doc_420.png b/doc/Alpha_complex/alpha_complex_doc_420.png
deleted file mode 100644
index ef7187f7..00000000
--- a/doc/Alpha_complex/alpha_complex_doc_420.png
+++ /dev/null
Binary files differ
diff --git a/doc/Alpha_complex/alpha_complex_representation.ipe b/doc/Alpha_complex/alpha_complex_representation.ipe
deleted file mode 100644
index e8096b93..00000000
--- a/doc/Alpha_complex/alpha_complex_representation.ipe
+++ /dev/null
@@ -1,321 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE ipe SYSTEM "ipe.dtd">
-<ipe version="70107" creator="Ipe 7.1.10">
-<info created="D:20150603143945" modified="D:20160404172133"/>
-<ipestyle name="basic">
-<symbol name="arrow/arc(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/farc(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="mark/circle(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</symbol>
-<symbol name="mark/disk(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-</path>
-</symbol>
-<symbol name="mark/fdisk(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
-0.5 0 0 0.5 0 0 e
-</path>
-<path fill="sym-stroke" fillrule="eofill">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</group>
-</symbol>
-<symbol name="mark/box(sx)" transformations="translations">
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</symbol>
-<symbol name="mark/square(sx)" transformations="translations">
-<path fill="sym-stroke">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
-</path>
-</symbol>
-<symbol name="mark/fsquare(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
--0.5 -0.5 m
-0.5 -0.5 l
-0.5 0.5 l
--0.5 0.5 l
-h
-</path>
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="mark/cross(sx)" transformations="translations">
-<group>
-<path fill="sym-stroke">
--0.43 -0.57 m
-0.57 0.43 l
-0.43 0.57 l
--0.57 -0.43 l
-h
-</path>
-<path fill="sym-stroke">
--0.43 0.57 m
-0.57 -0.43 l
-0.43 -0.57 l
--0.57 0.43 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="arrow/fnormal(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/pointed(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/fpointed(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/linear(spx)">
-<path stroke="sym-stroke" pen="sym-pen">
--1 0.333 m
-0 0 l
--1 -0.333 l
-</path>
-</symbol>
-<symbol name="arrow/fdouble(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/double(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<pen name="heavier" value="0.8"/>
-<pen name="fat" value="1.2"/>
-<pen name="ultrafat" value="2"/>
-<symbolsize name="large" value="5"/>
-<symbolsize name="small" value="2"/>
-<symbolsize name="tiny" value="1.1"/>
-<arrowsize name="large" value="10"/>
-<arrowsize name="small" value="5"/>
-<arrowsize name="tiny" value="3"/>
-<color name="red" value="1 0 0"/>
-<color name="green" value="0 1 0"/>
-<color name="blue" value="0 0 1"/>
-<color name="yellow" value="1 1 0"/>
-<color name="orange" value="1 0.647 0"/>
-<color name="gold" value="1 0.843 0"/>
-<color name="purple" value="0.627 0.125 0.941"/>
-<color name="gray" value="0.745"/>
-<color name="brown" value="0.647 0.165 0.165"/>
-<color name="navy" value="0 0 0.502"/>
-<color name="pink" value="1 0.753 0.796"/>
-<color name="seagreen" value="0.18 0.545 0.341"/>
-<color name="turquoise" value="0.251 0.878 0.816"/>
-<color name="violet" value="0.933 0.51 0.933"/>
-<color name="darkblue" value="0 0 0.545"/>
-<color name="darkcyan" value="0 0.545 0.545"/>
-<color name="darkgray" value="0.663"/>
-<color name="darkgreen" value="0 0.392 0"/>
-<color name="darkmagenta" value="0.545 0 0.545"/>
-<color name="darkorange" value="1 0.549 0"/>
-<color name="darkred" value="0.545 0 0"/>
-<color name="lightblue" value="0.678 0.847 0.902"/>
-<color name="lightcyan" value="0.878 1 1"/>
-<color name="lightgray" value="0.827"/>
-<color name="lightgreen" value="0.565 0.933 0.565"/>
-<color name="lightyellow" value="1 1 0.878"/>
-<dashstyle name="dashed" value="[4] 0"/>
-<dashstyle name="dotted" value="[1 3] 0"/>
-<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>
-<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>
-<textsize name="large" value="\large"/>
-<textsize name="small" value="\small"/>
-<textsize name="tiny" value="\tiny"/>
-<textsize name="Large" value="\Large"/>
-<textsize name="LARGE" value="\LARGE"/>
-<textsize name="huge" value="\huge"/>
-<textsize name="Huge" value="\Huge"/>
-<textsize name="footnote" value="\footnotesize"/>
-<textstyle name="center" begin="\begin{center}" end="\end{center}"/>
-<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>
-<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>
-<gridsize name="4 pts" value="4"/>
-<gridsize name="8 pts (~3 mm)" value="8"/>
-<gridsize name="16 pts (~6 mm)" value="16"/>
-<gridsize name="32 pts (~12 mm)" value="32"/>
-<gridsize name="10 pts (~3.5 mm)" value="10"/>
-<gridsize name="20 pts (~7 mm)" value="20"/>
-<gridsize name="14 pts (~5 mm)" value="14"/>
-<gridsize name="28 pts (~10 mm)" value="28"/>
-<gridsize name="56 pts (~20 mm)" value="56"/>
-<anglesize name="90 deg" value="90"/>
-<anglesize name="60 deg" value="60"/>
-<anglesize name="45 deg" value="45"/>
-<anglesize name="30 deg" value="30"/>
-<anglesize name="22.5 deg" value="22.5"/>
-<tiling name="falling" angle="-60" step="4" width="1"/>
-<tiling name="rising" angle="30" step="4" width="1"/>
-</ipestyle>
-<page>
-<layer name="alpha"/>
-<view layers="alpha" active="alpha"/>
-<path layer="alpha" fill="lightblue">
-109.771 601.912 m
-159.595 601.797 l
-140.058 541.915 l
-h
-</path>
-<path fill="lightblue">
-79.8776 552.169 m
-109.756 601.699 l
-139.812 542.209 l
-h
-</path>
-<path fill="lightblue">
-69.8453 682.419 m
-159.925 712.208 l
-90.12 732.039 l
-h
-</path>
-<text matrix="1 0 0 1 -230.178 22.1775" transformations="translations" pos="380 530" stroke="seagreen" type="label" width="76.735" height="8.307" depth="2.32" valign="baseline" size="large">Alpha complex</text>
-<text matrix="1 0 0 1 -212.333 18.6762" transformations="translations" pos="282.952 524.893" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text>
-<text matrix="1 0 0 1 -210.178 22.1775" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
-<text matrix="1 0 0 1 -210.178 22.1775" transformations="translations" pos="310.693 578.759" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
-<text matrix="1 0 0 1 -210.178 22.1775" transformations="translations" pos="375.332 578.49" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
-<text matrix="1 0 0 1 -210.178 22.1775" transformations="translations" pos="272.179 660.635" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
-<text matrix="1 0 0 1 -209.478 12.0238" transformations="translations" pos="296.419 724.197" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
-<text matrix="1 0 0 1 -210.178 22.1775" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text>
-<path matrix="1 0 0 1 31.9779 -58.7483" stroke="darkgray">
-58.1341 0 0 58.1341 218.925 692.601 e
-</path>
-<path matrix="1 0 0 1 29.8225 22.1775" stroke="black" pen="heavier">
-60 710 m
-40 660 l
-</path>
-<path matrix="1 0 0 1 29.8225 22.1775" stroke="black" pen="heavier">
-40 660 m
-130 690 l
-</path>
-<path matrix="1 0 0 1 29.8225 22.1775" stroke="black" pen="heavier">
-130 690 m
-60 710 l
-</path>
-<path matrix="1 0 0 1 29.8225 22.1775" stroke="black" pen="heavier">
-40 660 m
-80 580 l
-</path>
-<path matrix="1 0 0 1 29.8225 22.1775" stroke="black" pen="heavier">
-80 580 m
-130 580 l
-130 580 l
-</path>
-<path matrix="1 0 0 1 29.8225 22.1775" stroke="black" pen="heavier">
-130 580 m
-110 520 l
-</path>
-<path matrix="1 0 0 1 29.8225 22.1775" stroke="black" pen="heavier">
-110 520 m
-50 530 l
-50 530 l
-50 530 l
-</path>
-<path matrix="1 0 0 1 29.8225 22.1775" stroke="black" pen="heavier">
-50 530 m
-80 580 l
-</path>
-<path matrix="1 0 0 1 29.8225 22.1775" stroke="black" pen="heavier">
-130 580 m
-130 690 l
-</path>
-<use matrix="1 0 0 1 142.618 -109.867" name="mark/fdisk(sfx)" pos="108.285 743.72" size="normal" stroke="darkgray" fill="white"/>
-<path matrix="1 0 0 1 142.618 -109.867" stroke="darkgray">
-108.275 743.531 m
-166.45 743.531 l
-</path>
-<text matrix="1 0 0 1 142.618 -109.867" transformations="translations" pos="127.397 746.763" stroke="darkgray" type="label" width="6.41" height="4.289" depth="0" valign="baseline">$\alpha$</text>
-<use matrix="1 0 0 1 -209.478 12.0238" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 22.1775" name="mark/fdisk(sfx)" pos="280 660" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 22.1775" name="mark/fdisk(sfx)" pos="370 690" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 22.1775" name="mark/fdisk(sfx)" pos="370 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 22.1775" name="mark/fdisk(sfx)" pos="290 530" size="normal" stroke="black" fill="white"/>
-<path matrix="1 0 0 1 -40 -8" stroke="black" pen="heavier">
-150.038 609.9 m
-179.929 549.727 l
-</path>
-<use matrix="1 0 0 1 -210.178 22.1775" name="mark/fdisk(sfx)" pos="320 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 22.1775" name="mark/fdisk(sfx)" pos="350 520" size="normal" stroke="black" fill="white"/>
-</page>
-</ipe>
diff --git a/doc/Alpha_complex/alpha_complex_representation.png b/doc/Alpha_complex/alpha_complex_representation.png
deleted file mode 100644
index 7b81cd69..00000000
--- a/doc/Alpha_complex/alpha_complex_representation.png
+++ /dev/null
Binary files differ
diff --git a/doc/Bitmap_cubical_complex/COPYRIGHT b/doc/Bitmap_cubical_complex/COPYRIGHT
deleted file mode 100644
index 2b14dcb9..00000000
--- a/doc/Bitmap_cubical_complex/COPYRIGHT
+++ /dev/null
@@ -1,19 +0,0 @@
-The files of this directory are part of the Gudhi Library. The Gudhi library
-(Geometric Understanding in Higher Dimensions) is a generic C++ library for
-computational topology.
-
-Author(s): Pawel Dlotko
-
-Copyright (C) 2015 Inria
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/doc/Bitmap_cubical_complex/Cubical_complex_representation.ipe b/doc/Bitmap_cubical_complex/Cubical_complex_representation.ipe
deleted file mode 100644
index bec245e7..00000000
--- a/doc/Bitmap_cubical_complex/Cubical_complex_representation.ipe
+++ /dev/null
@@ -1,732 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE ipe SYSTEM "ipe.dtd">
-<ipe version="70107" creator="Ipe 7.1.10">
-<info created="D:20160330102945" modified="D:20160330104654"/>
-<ipestyle name="basic">
-<symbol name="arrow/arc(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/farc(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/ptarc(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/fptarc(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="mark/circle(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</symbol>
-<symbol name="mark/disk(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-</path>
-</symbol>
-<symbol name="mark/fdisk(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
-0.5 0 0 0.5 0 0 e
-</path>
-<path fill="sym-stroke" fillrule="eofill">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</group>
-</symbol>
-<symbol name="mark/box(sx)" transformations="translations">
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</symbol>
-<symbol name="mark/square(sx)" transformations="translations">
-<path fill="sym-stroke">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
-</path>
-</symbol>
-<symbol name="mark/fsquare(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
--0.5 -0.5 m
-0.5 -0.5 l
-0.5 0.5 l
--0.5 0.5 l
-h
-</path>
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="mark/cross(sx)" transformations="translations">
-<group>
-<path fill="sym-stroke">
--0.43 -0.57 m
-0.57 0.43 l
-0.43 0.57 l
--0.57 -0.43 l
-h
-</path>
-<path fill="sym-stroke">
--0.43 0.57 m
-0.57 -0.43 l
-0.43 -0.57 l
--0.57 0.43 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="arrow/fnormal(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/pointed(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/fpointed(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/linear(spx)">
-<path stroke="sym-stroke" pen="sym-pen">
--1 0.333 m
-0 0 l
--1 -0.333 l
-</path>
-</symbol>
-<symbol name="arrow/fdouble(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/double(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<pen name="heavier" value="0.8"/>
-<pen name="fat" value="1.2"/>
-<pen name="ultrafat" value="2"/>
-<symbolsize name="large" value="5"/>
-<symbolsize name="small" value="2"/>
-<symbolsize name="tiny" value="1.1"/>
-<arrowsize name="large" value="10"/>
-<arrowsize name="small" value="5"/>
-<arrowsize name="tiny" value="3"/>
-<color name="red" value="1 0 0"/>
-<color name="green" value="0 1 0"/>
-<color name="blue" value="0 0 1"/>
-<color name="yellow" value="1 1 0"/>
-<color name="orange" value="1 0.647 0"/>
-<color name="gold" value="1 0.843 0"/>
-<color name="purple" value="0.627 0.125 0.941"/>
-<color name="gray" value="0.745"/>
-<color name="brown" value="0.647 0.165 0.165"/>
-<color name="navy" value="0 0 0.502"/>
-<color name="pink" value="1 0.753 0.796"/>
-<color name="seagreen" value="0.18 0.545 0.341"/>
-<color name="turquoise" value="0.251 0.878 0.816"/>
-<color name="violet" value="0.933 0.51 0.933"/>
-<color name="darkblue" value="0 0 0.545"/>
-<color name="darkcyan" value="0 0.545 0.545"/>
-<color name="darkgray" value="0.663"/>
-<color name="darkgreen" value="0 0.392 0"/>
-<color name="darkmagenta" value="0.545 0 0.545"/>
-<color name="darkorange" value="1 0.549 0"/>
-<color name="darkred" value="0.545 0 0"/>
-<color name="lightblue" value="0.678 0.847 0.902"/>
-<color name="lightcyan" value="0.878 1 1"/>
-<color name="lightgray" value="0.827"/>
-<color name="lightgreen" value="0.565 0.933 0.565"/>
-<color name="lightyellow" value="1 1 0.878"/>
-<dashstyle name="dashed" value="[4] 0"/>
-<dashstyle name="dotted" value="[1 3] 0"/>
-<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>
-<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>
-<textsize name="large" value="\large"/>
-<textsize name="Large" value="\Large"/>
-<textsize name="LARGE" value="\LARGE"/>
-<textsize name="huge" value="\huge"/>
-<textsize name="Huge" value="\Huge"/>
-<textsize name="small" value="\small"/>
-<textsize name="footnote" value="\footnotesize"/>
-<textsize name="tiny" value="\tiny"/>
-<textstyle name="center" begin="\begin{center}" end="\end{center}"/>
-<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>
-<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>
-<gridsize name="4 pts" value="4"/>
-<gridsize name="8 pts (~3 mm)" value="8"/>
-<gridsize name="16 pts (~6 mm)" value="16"/>
-<gridsize name="32 pts (~12 mm)" value="32"/>
-<gridsize name="10 pts (~3.5 mm)" value="10"/>
-<gridsize name="20 pts (~7 mm)" value="20"/>
-<gridsize name="14 pts (~5 mm)" value="14"/>
-<gridsize name="28 pts (~10 mm)" value="28"/>
-<gridsize name="56 pts (~20 mm)" value="56"/>
-<anglesize name="90 deg" value="90"/>
-<anglesize name="60 deg" value="60"/>
-<anglesize name="45 deg" value="45"/>
-<anglesize name="30 deg" value="30"/>
-<anglesize name="22.5 deg" value="22.5"/>
-<opacity name="10%" value="0.1"/>
-<opacity name="30%" value="0.3"/>
-<opacity name="50%" value="0.5"/>
-<opacity name="75%" value="0.75"/>
-<tiling name="falling" angle="-60" step="4" width="1"/>
-<tiling name="rising" angle="30" step="4" width="1"/>
-</ipestyle>
-<page>
-<layer name="alpha"/>
-<view layers="alpha" active="alpha"/>
-<path layer="alpha" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<text transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text>
-<path stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<text transformations="translations" pos="212 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
-<path matrix="1 0 0 1 64 0" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<text matrix="1 0 0 1 64 0" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
-<path matrix="1 0 0 1 64 0" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<text matrix="1 0 0 1 64 0" transformations="translations" pos="212 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
-<path matrix="1 0 0 1 128 0" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<text matrix="1 0 0 1 128 0" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
-<path matrix="1 0 0 1 128 0" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<text matrix="1 0 0 1 128 0" transformations="translations" pos="212 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
-<path matrix="1 0 0 1 192 0" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<text matrix="1 0 0 1 192 0" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text>
-<path matrix="1 0 0 1 192 0" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<text matrix="1 0 0 1 192 0" transformations="translations" pos="212 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">7</text>
-<path matrix="1 0 0 1 256 0" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<text matrix="1 0 0 1 256 0" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">8</text>
-<path matrix="1 0 0 1 0 -32" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<text matrix="1 0 0 1 0 -48" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
-<path matrix="1 0 0 1 0 -32" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<path matrix="1 0 0 1 64 -32" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<text matrix="1 0 0 1 64 -48" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
-<path matrix="1 0 0 1 64 -32" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<text matrix="1 0 0 1 96 -48" transformations="translations" pos="212 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
-<path matrix="1 0 0 1 128 -32" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<text matrix="1 0 0 1 192 -48" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
-<path matrix="1 0 0 1 128 -32" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<text matrix="1 0 0 1 224 -48" transformations="translations" pos="212 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
-<path matrix="1 0 0 1 192 -32" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path matrix="1 0 0 1 192 -32" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<path matrix="1 0 0 1 256 -32" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path matrix="1 0 0 1 -32 0" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path stroke="black" fill="lightgreen">
-160 496 m
-160 544 l
-144 544 l
-144 496 l
-h
-</path>
-<path matrix="1 0 0 1 -32 64" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path matrix="1 0 0 1 0 64" stroke="black" fill="lightgreen">
-160 496 m
-160 544 l
-144 544 l
-144 496 l
-h
-</path>
-<path matrix="1 0 0 1 -32 128" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<text transformations="translations" pos="132 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
-<text transformations="translations" pos="132 548" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
-<text transformations="translations" pos="132 612" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
-<path matrix="1 0 0 1 32 0" stroke="black" fill="lightgreen">
-160 496 m
-160 544 l
-144 544 l
-144 496 l
-h
-</path>
-<text transformations="translations" pos="180 516" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">9</text>
-<path matrix="1 0 0 1 96 0" stroke="black" fill="lightgreen">
-160 496 m
-160 544 l
-144 544 l
-144 496 l
-h
-</path>
-<text transformations="translations" pos="244 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">11</text>
-<path matrix="1 0 0 1 160 0" stroke="black" fill="lightgreen">
-160 496 m
-160 544 l
-144 544 l
-144 496 l
-h
-</path>
-<path matrix="1 0 0 1 224 0" stroke="black" fill="lightgreen">
-160 496 m
-160 544 l
-144 544 l
-144 496 l
-h
-</path>
-<path matrix="1 0 0 1 288 0" stroke="black" fill="lightgreen">
-160 496 m
-160 544 l
-144 544 l
-144 496 l
-h
-</path>
-<path matrix="1 0 0 1 0 64" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path matrix="1 0 0 1 0 64" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<path matrix="1 0 0 1 64 64" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path matrix="1 0 0 1 64 64" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<path matrix="1 0 0 1 128 64" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path matrix="1 0 0 1 128 64" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<path matrix="1 0 0 1 192 64" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path matrix="1 0 0 1 192 64" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<path matrix="1 0 0 1 256 64" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path matrix="1 0 0 1 0 128" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path matrix="1 0 0 1 0 128" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<path matrix="1 0 0 1 64 128" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path matrix="1 0 0 1 64 128" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<path matrix="1 0 0 1 128 128" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path matrix="1 0 0 1 128 128" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<path matrix="1 0 0 1 192 128" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path matrix="1 0 0 1 192 128" stroke="black" fill="lightgreen">
-192 496 m
-192 480 l
-240 480 l
-240 496 l
-h
-</path>
-<path matrix="1 0 0 1 256 128" stroke="black" fill="lightblue">
-176 496 m
-176 480 l
-192 480 l
-192 496 l
-h
-</path>
-<path matrix="1 0 0 1 32 64" stroke="black" fill="lightgreen">
-160 496 m
-160 544 l
-144 544 l
-144 496 l
-h
-</path>
-<path matrix="1 0 0 1 96 64" stroke="black" fill="lightgreen">
-160 496 m
-160 544 l
-144 544 l
-144 496 l
-h
-</path>
-<path matrix="1 0 0 1 160 64" stroke="black" fill="lightgreen">
-160 496 m
-160 544 l
-144 544 l
-144 496 l
-h
-</path>
-<path matrix="1 0 0 1 224 64" stroke="black" fill="lightgreen">
-160 496 m
-160 544 l
-144 544 l
-144 496 l
-h
-</path>
-<path matrix="1 0 0 1 288 64" stroke="black" fill="lightgreen">
-160 496 m
-160 544 l
-144 544 l
-144 496 l
-h
-</path>
-<path stroke="black" fill="lightgray">
-192 544 m
-192 496 l
-240 496 l
-240 544 l
-h
-</path>
-<path matrix="1 0 0 1 64 0" stroke="black" fill="lightgray">
-192 544 m
-192 496 l
-240 496 l
-240 544 l
-h
-</path>
-<path matrix="1 0 0 1 128 0" stroke="black" fill="lightgray">
-192 544 m
-192 496 l
-240 496 l
-240 544 l
-h
-</path>
-<path matrix="1 0 0 1 192 0" stroke="black" fill="lightgray">
-192 544 m
-192 496 l
-240 496 l
-240 544 l
-h
-</path>
-<path matrix="1 0 0 1 0 64" stroke="black" fill="lightgray">
-192 544 m
-192 496 l
-240 496 l
-240 544 l
-h
-</path>
-<path matrix="1 0 0 1 64 64" stroke="black" fill="lightgray">
-192 544 m
-192 496 l
-240 496 l
-240 544 l
-h
-</path>
-<path matrix="1 0 0 1 128 64" stroke="black" fill="lightgray">
-192 544 m
-192 496 l
-240 496 l
-240 544 l
-h
-</path>
-<path matrix="1 0 0 1 192 64" stroke="black" fill="lightgray">
-192 544 m
-192 496 l
-240 496 l
-240 544 l
-h
-</path>
-<text transformations="translations" pos="212 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">10</text>
-<text transformations="translations" pos="276 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">12</text>
-<text transformations="translations" pos="308 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">13</text>
-<text transformations="translations" pos="340 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">14</text>
-<text transformations="translations" pos="372 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">15</text>
-<text transformations="translations" pos="404 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">16</text>
-<text transformations="translations" pos="436 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">17</text>
-<text transformations="translations" pos="180 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">18</text>
-<text transformations="translations" pos="212 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">19</text>
-<text transformations="translations" pos="244 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">20</text>
-<text transformations="translations" pos="276 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">21</text>
-<text transformations="translations" pos="308 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">22</text>
-<text transformations="translations" pos="340 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">23</text>
-<text transformations="translations" pos="372 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">24</text>
-<text transformations="translations" pos="404 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">25</text>
-<text transformations="translations" pos="436 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">26</text>
-<text transformations="translations" pos="180 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">27</text>
-<text transformations="translations" pos="212 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">28</text>
-<text transformations="translations" pos="244 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">29</text>
-<text transformations="translations" pos="276 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">30</text>
-<text transformations="translations" pos="308 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">31</text>
-<text transformations="translations" pos="340 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">32</text>
-<text transformations="translations" pos="372 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">33</text>
-<text transformations="translations" pos="404 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">34</text>
-<text transformations="translations" pos="436 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">35</text>
-<text transformations="translations" pos="180 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">36</text>
-<text transformations="translations" pos="212 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">37</text>
-<text transformations="translations" pos="244 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">38</text>
-<text transformations="translations" pos="276 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">39</text>
-<text transformations="translations" pos="308 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">40</text>
-<text transformations="translations" pos="340 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">41</text>
-<text transformations="translations" pos="372 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">42</text>
-<text transformations="translations" pos="404 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">43</text>
-<text transformations="translations" pos="436 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">44</text>
-<path stroke="black" arrow="normal/normal">
-152 456 m
-472 456 l
-</path>
-<path stroke="black" arrow="normal/normal">
-152 456 m
-152 648 l
-</path>
-</page>
-</ipe>
diff --git a/doc/Bitmap_cubical_complex/Cubical_complex_representation.png b/doc/Bitmap_cubical_complex/Cubical_complex_representation.png
deleted file mode 100644
index afb2a75e..00000000
--- a/doc/Bitmap_cubical_complex/Cubical_complex_representation.png
+++ /dev/null
Binary files differ
diff --git a/doc/Bitmap_cubical_complex/Gudhi_Cubical_Complex_doc.h b/doc/Bitmap_cubical_complex/Gudhi_Cubical_Complex_doc.h
deleted file mode 100644
index d1836ef0..00000000
--- a/doc/Bitmap_cubical_complex/Gudhi_Cubical_Complex_doc.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-#ifndef DOC_GUDHI_CUBICAL_COMPLEX_COMPLEX_H_
-#define DOC_GUDHI_CUBICAL_COMPLEX_COMPLEX_H_
-
-namespace Gudhi {
-
-namespace cubical_complex {
-
-/** \defgroup cubical_complex Cubical complex
- *
- * \author Pawel Dlotko
- *
- * @{
- *
-
- * Bitmap_cubical_complex is an example of a structured complex useful in computational mathematics (specially rigorous
- * numerics) and image analysis. The presented implementation of cubical complexes is based on the following
- * definition.
- *
- * An <em>elementary interval</em> is an interval of a form \f$ [n,n+1] \f$, or \f$[n,n]\f$, for \f$ n \in \mathcal{Z}
- * \f$. The first one is called <em>non-degenerate</em>, while the second one is \a degenerate interval. A
- * <em>boundary of a elementary interval</em> is a chain \f$\partial [n,n+1] = [n+1,n+1]-[n,n] \f$ in case of
- * non-degenerated elementary interval and \f$\partial [n,n] = 0 \f$ in case of degenerate elementary interval. An
- * <em>elementary cube</em> \f$ C \f$ is a product of elementary intervals, \f$C=I_1 \times \ldots \times I_n\f$.
- * <em>Embedding dimension</em> of a cube is n, the number of elementary intervals (degenerate or not) in the product.
- * A <em>dimension of a cube</em> \f$C=I_1 \times ... \times I_n\f$ is the number of non degenerate elementary
- * intervals in the product. A <em>boundary of a cube</em> \f$C=I_1 \times \ldots \times I_n\f$ is a chain obtained
- * in the following way:
- * \f[\partial C = (\partial I_1 \times \ldots \times I_n) + (I_1 \times \partial I_2 \times \ldots \times I_n) +
- * \ldots + (I_1 \times I_2 \times \ldots \times \partial I_n).\f]
- * A <em>cubical complex</em> \f$\mathcal{K}\f$ is a collection of cubes closed under operation of taking boundary
- * (i.e. boundary of every cube from the collection is in the collection). A cube \f$C\f$ in cubical complex
- * \f$\mathcal{K}\f$ is <em>maximal</em> if it is not in a boundary of any other cube in \f$\mathcal{K}\f$. A \a
- * support of a cube \f$C\f$ is the set in \f$\mathbb{R}^n\f$ occupied by \f$C\f$ (\f$n\f$ is the embedding dimension
- * of \f$C\f$).
- *
- * Cubes may be equipped with a filtration values in which case we have filtered cubical complex. All the cubical
- * complexes considered in this implementation are filtered cubical complexes (although, the range of a filtration may
- * be a set of two elements).
- *
- * For further details and theory of cubical complexes, please consult \cite kaczynski2004computational as well as the
- * following paper \cite peikert2012topological .
- *
- * \section cubicalcomplexdatastructure Data structure
- *
- * The implementation of Cubical complex provides a representation of complexes that occupy a rectangular region in
- * \f$\mathbb{R}^n\f$. This extra assumption allows for a memory efficient way of storing cubical complexes in a form
- * of so called bitmaps. Let \f$R = [b_1,e_1] \times \ldots \times [b_n,e_n]\f$, for \f$b_1,...b_n,e_1,...,e_n \in
- * \mathbb{Z}\f$, \f$b_i \leq d_i\f$ be the considered rectangular region and let \f$\mathcal{K}\f$ be a filtered
- * cubical complex having the rectangle \f$R\f$ as its support. Note that the structure of the coordinate system gives
- * a way a lexicographical ordering of cells of \f$\mathcal{K}\f$. This ordering is a base of the presented
- * bitmap-based implementation. In this implementation, the whole cubical complex is stored as a vector of the values
- * of filtration. This, together with dimension of \f$\mathcal{K}\f$ and the sizes of \f$\mathcal{K}\f$ in all
- * directions, allows to determine, dimension, neighborhood, boundary and coboundary of every cube \f$C \in
- * \mathcal{K}\f$.
- *
- * \image html "Cubical_complex_representation.png" Cubical complex.
- *
- * Note that the cubical complex in the figure above is, in a natural way, a product of one dimensional cubical
- * complexes in \f$\mathbb{R}\f$. The number of all cubes in each direction is equal \f$2n+1\f$, where \f$n\f$ is the
- * number of maximal cubes in the considered direction. Let us consider a cube at the position \f$k\f$ in the bitmap.
- * Knowing the sizes of the bitmap, by a series of modulo operation, we can determine which elementary intervals are
- * present in the product that gives the cube \f$C\f$. In a similar way, we can compute boundary and the coboundary of
- * each cube. Further details can be found in the literature.
- *
- * \section inputformat Input Format
- *
- * In the current implantation, filtration is given at the maximal cubes, and it is then extended by the lower star
- * filtration to all cubes. There are a number of constructors that can be used to construct cubical complex by users
- * who want to use the code directly. They can be found in the \a Bitmap_cubical_complex class.
- * Currently one input from a text file is used. It uses a format used already in Perseus software
- * (http://www.sas.upenn.edu/~vnanda/perseus/) by Vidit Nanda. The file format is described here: \ref FileFormatsPerseus.
- *
- * \section PeriodicBoundaryConditions Periodic boundary conditions
- * Often one would like to impose periodic boundary conditions to the cubical complex. Let \f$ I_1\times ... \times
- * I_n \f$ be a box that is decomposed with a cubical complex \f$ \mathcal{K} \f$. Imposing periodic boundary
- * conditions in the direction i, means that the left and the right side of a complex \f$ \mathcal{K} \f$ are
- * considered the same. In particular, if for a bitmap \f$ \mathcal{K} \f$ periodic boundary conditions are imposed
- * in all directions, then complex \f$ \mathcal{K} \f$ became n-dimensional torus. One can use various constructors
- * from the file Bitmap_cubical_complex_periodic_boundary_conditions_base.h to construct cubical complex with periodic
- * boundary conditions. One can also use Perseus style input files (see \ref FileFormatsPerseus).
- *
- * \section BitmapExamples Examples
- * End user programs are available in example/Bitmap_cubical_complex and utilities/Bitmap_cubical_complex folders.
- *
- */
-/** @} */ // end defgroup cubical_complex
-
-} // namespace cubical_complex
-
-namespace Cubical_complex = cubical_complex;
-
-} // namespace Gudhi
-
-#endif // DOC_GUDHI_CUBICAL_COMPLEX_COMPLEX_H_
diff --git a/doc/Bitmap_cubical_complex/bitmapAllCubes.png b/doc/Bitmap_cubical_complex/bitmapAllCubes.png
deleted file mode 100644
index 77167b13..00000000
--- a/doc/Bitmap_cubical_complex/bitmapAllCubes.png
+++ /dev/null
Binary files differ
diff --git a/doc/Bitmap_cubical_complex/exampleBitmap.png b/doc/Bitmap_cubical_complex/exampleBitmap.png
deleted file mode 100644
index 069c6eb2..00000000
--- a/doc/Bitmap_cubical_complex/exampleBitmap.png
+++ /dev/null
Binary files differ
diff --git a/doc/Bottleneck_distance/COPYRIGHT b/doc/Bottleneck_distance/COPYRIGHT
deleted file mode 100644
index 1c2016b1..00000000
--- a/doc/Bottleneck_distance/COPYRIGHT
+++ /dev/null
@@ -1,19 +0,0 @@
-The files of this directory are part of the Gudhi Library. The Gudhi library
-(Geometric Understanding in Higher Dimensions) is a generic C++ library for
-computational topology.
-
-Author(s): François Godi
-
-Copyright (C) 2015 Inria
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/doc/Bottleneck_distance/Intro_bottleneck_distance.h b/doc/Bottleneck_distance/Intro_bottleneck_distance.h
deleted file mode 100644
index f8fce96c..00000000
--- a/doc/Bottleneck_distance/Intro_bottleneck_distance.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author: François Godi
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef DOC_BOTTLENECK_DISTANCE_INTRO_BOTTLENECK_DISTANCE_H_
-#define DOC_BOTTLENECK_DISTANCE_INTRO_BOTTLENECK_DISTANCE_H_
-
-// needs namespace for Doxygen to link on classes
-namespace Gudhi {
-// needs namespace for Doxygen to link on classes
-namespace persistence_diagram {
-
-/** \defgroup bottleneck_distance Bottleneck distance
- *
- * \author Fran&ccedil;ois Godi
- * @{
- *
- * \section bottleneckdefinition Definition
- *
- * The bottleneck distance measures the similarity between two persistence diagrams. It is the shortest distance b for
- * which there exists a perfect matching between the points of the two diagrams (completed with all the points on the
- * diagonal in order to ignore cardinality mismatchs) such that any couple of matched points are at distance at most b.
- *
- * \image html perturb_pd.png On this picture, the red edges represent the matching. The bottleneck distance is the length of the longest edge.
- *
- */
-/** @} */ // end defgroup bottleneck_distance
-
-} // namespace persistence_diagram
-
-} // namespace Gudhi
-
-#endif // DOC_BOTTLENECK_DISTANCE_INTRO_BOTTLENECK_DISTANCE_H_
diff --git a/doc/Bottleneck_distance/perturb_pd.png b/doc/Bottleneck_distance/perturb_pd.png
deleted file mode 100644
index be638de0..00000000
--- a/doc/Bottleneck_distance/perturb_pd.png
+++ /dev/null
Binary files differ
diff --git a/doc/Cech_complex/COPYRIGHT b/doc/Cech_complex/COPYRIGHT
deleted file mode 100644
index 5f1d97cc..00000000
--- a/doc/Cech_complex/COPYRIGHT
+++ /dev/null
@@ -1,19 +0,0 @@
-The files of this directory are part of the Gudhi Library. The Gudhi library
-(Geometric Understanding in Higher Dimensions) is a generic C++ library for
-computational topology.
-
-Author(s): Vincent Rouvreau
-
-Copyright (C) 2015 Inria
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/doc/Cech_complex/Intro_cech_complex.h b/doc/Cech_complex/Intro_cech_complex.h
deleted file mode 100644
index 4483bcb9..00000000
--- a/doc/Cech_complex/Intro_cech_complex.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2018 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef DOC_CECH_COMPLEX_INTRO_CECH_COMPLEX_H_
-#define DOC_CECH_COMPLEX_INTRO_CECH_COMPLEX_H_
-
-namespace Gudhi {
-
-namespace cech_complex {
-
-/** \defgroup cech_complex Čech complex
- *
- * \author Vincent Rouvreau
- *
- * @{
- *
- * \section cechdefinition Čech complex definition
- *
- * Čech complex
- * <a target="_blank" href="https://en.wikipedia.org/wiki/%C4%8Cech_cohomology">(Wikipedia)</a> is a
- * <a target="_blank" href="https://en.wikipedia.org/wiki/Simplicial_complex">simplicial complex</a> constructed
- * from a proximity graph. The set of all simplices is filtered by the radius of their minimal enclosing ball.
- *
- * The input shall be a point cloud in an Euclidean space.
- *
- * \remark For people only interested in the topology of the \ref cech_complex (for instance persistence),
- * \ref alpha_complex is equivalent to the \ref cech_complex and much smaller if you do not bound the radii.
- * \ref cech_complex can still make sense in higher dimension precisely because you can bound the radii.
- *
- * \subsection cechalgorithm Algorithm
- *
- * Cech_complex first builds a proximity graph from a point cloud.
- * The filtration value of each edge of the `Gudhi::Proximity_graph` is computed from
- * `Gudhi::Minimal_enclosing_ball_radius` function.
- *
- * All edges that have a filtration value strictly greater than a user given maximal radius value, \f$max\_radius\f$,
- * are not inserted into the complex.
- *
- * Vertex name correspond to the index of the point in the given range (aka. the point cloud).
- *
- * \image html "cech_one_skeleton.png" "Čech complex proximity graph representation"
- *
- * When creating a simplicial complex from this proximity graph, Cech_complex inserts the proximity graph into the
- * simplicial complex data structure, and then expands the simplicial complex when required.
- *
- * On this example, as edges \f$(x,y)\f$, \f$(y,z)\f$ and \f$(z,y)\f$ are in the complex, the minimal ball radius
- * containing the points \f$(x,y,z)\f$ is computed.
- *
- * \f$(x,y,z)\f$ is inserted to the simplicial complex with the filtration value set with
- * \f$mini\_ball\_radius(x,y,z))\f$ iff \f$mini\_ball\_radius(x,y,z)) \leq max\_radius\f$.
- *
- * And so on for higher dimensions.
- *
- * \image html "cech_complex_representation.png" "Čech complex expansion"
- *
- * The minimal ball radius computation is insured by
- * <a target="_blank" href="https://people.inf.ethz.ch/gaertner/subdir/software/miniball.html">
- * the miniball software (V3.0)</a> - Smallest Enclosing Balls of Points - and distributed with GUDHI.
- * Please refer to
- * <a target="_blank" href="https://people.inf.ethz.ch/gaertner/subdir/texts/own_work/esa99_final.pdf">
- * the miniball software design description</a> for more information about this computation.
- *
- * This radius computation is the reason why the Cech_complex is taking much more time to be computed than the
- * \ref rips_complex but it offers more topological guarantees.
- *
- * If the Cech_complex interfaces are not detailed enough for your need, please refer to
- * <a href="_cech_complex_2cech_complex_step_by_step_8cpp-example.html">
- * cech_complex_step_by_step.cpp</a> example, where the graph construction over the Simplex_tree is more detailed.
- *
- * \subsection cechpointscloudexample Example from a point cloud
- *
- * This example builds the proximity graph from the given points, and maximal radius values.
- * Then it creates a `Simplex_tree` with it.
- *
- * Then, it is asked to display information about the simplicial complex.
- *
- * \include Cech_complex/cech_complex_example_from_points.cpp
- *
- * When launching (maximal enclosing ball radius is 1., is expanded until dimension 2):
- *
- * \code $> ./Cech_complex_example_from_points
- * \endcode
- *
- * the program output is:
- *
- * \include Cech_complex/cech_complex_example_from_points_for_doc.txt
- *
- */
-/** @} */ // end defgroup cech_complex
-
-} // namespace cech_complex
-
-} // namespace Gudhi
-
-#endif // DOC_CECH_COMPLEX_INTRO_CECH_COMPLEX_H_
diff --git a/doc/Cech_complex/cech_complex_representation.ipe b/doc/Cech_complex/cech_complex_representation.ipe
deleted file mode 100644
index 377745a3..00000000
--- a/doc/Cech_complex/cech_complex_representation.ipe
+++ /dev/null
@@ -1,330 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE ipe SYSTEM "ipe.dtd">
-<ipe version="70107" creator="Ipe 7.1.10">
-<info created="D:20150603143945" modified="D:20180305162524"/>
-<ipestyle name="basic">
-<symbol name="arrow/arc(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/farc(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="mark/circle(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</symbol>
-<symbol name="mark/disk(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-</path>
-</symbol>
-<symbol name="mark/fdisk(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
-0.5 0 0 0.5 0 0 e
-</path>
-<path fill="sym-stroke" fillrule="eofill">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</group>
-</symbol>
-<symbol name="mark/box(sx)" transformations="translations">
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</symbol>
-<symbol name="mark/square(sx)" transformations="translations">
-<path fill="sym-stroke">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
-</path>
-</symbol>
-<symbol name="mark/fsquare(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
--0.5 -0.5 m
-0.5 -0.5 l
-0.5 0.5 l
--0.5 0.5 l
-h
-</path>
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="mark/cross(sx)" transformations="translations">
-<group>
-<path fill="sym-stroke">
--0.43 -0.57 m
-0.57 0.43 l
-0.43 0.57 l
--0.57 -0.43 l
-h
-</path>
-<path fill="sym-stroke">
--0.43 0.57 m
-0.57 -0.43 l
-0.43 -0.57 l
--0.57 0.43 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="arrow/fnormal(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/pointed(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/fpointed(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/linear(spx)">
-<path stroke="sym-stroke" pen="sym-pen">
--1 0.333 m
-0 0 l
--1 -0.333 l
-</path>
-</symbol>
-<symbol name="arrow/fdouble(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/double(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<pen name="heavier" value="0.8"/>
-<pen name="fat" value="1.2"/>
-<pen name="ultrafat" value="2"/>
-<symbolsize name="large" value="5"/>
-<symbolsize name="small" value="2"/>
-<symbolsize name="tiny" value="1.1"/>
-<arrowsize name="large" value="10"/>
-<arrowsize name="small" value="5"/>
-<arrowsize name="tiny" value="3"/>
-<color name="red" value="1 0 0"/>
-<color name="green" value="0 1 0"/>
-<color name="blue" value="0 0 1"/>
-<color name="yellow" value="1 1 0"/>
-<color name="orange" value="1 0.647 0"/>
-<color name="gold" value="1 0.843 0"/>
-<color name="purple" value="0.627 0.125 0.941"/>
-<color name="gray" value="0.745"/>
-<color name="brown" value="0.647 0.165 0.165"/>
-<color name="navy" value="0 0 0.502"/>
-<color name="pink" value="1 0.753 0.796"/>
-<color name="seagreen" value="0.18 0.545 0.341"/>
-<color name="turquoise" value="0.251 0.878 0.816"/>
-<color name="violet" value="0.933 0.51 0.933"/>
-<color name="darkblue" value="0 0 0.545"/>
-<color name="darkcyan" value="0 0.545 0.545"/>
-<color name="darkgray" value="0.663"/>
-<color name="darkgreen" value="0 0.392 0"/>
-<color name="darkmagenta" value="0.545 0 0.545"/>
-<color name="darkorange" value="1 0.549 0"/>
-<color name="darkred" value="0.545 0 0"/>
-<color name="lightblue" value="0.678 0.847 0.902"/>
-<color name="lightcyan" value="0.878 1 1"/>
-<color name="lightgray" value="0.827"/>
-<color name="lightgreen" value="0.565 0.933 0.565"/>
-<color name="lightyellow" value="1 1 0.878"/>
-<dashstyle name="dashed" value="[4] 0"/>
-<dashstyle name="dotted" value="[1 3] 0"/>
-<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>
-<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>
-<textsize name="large" value="\large"/>
-<textsize name="small" value="\small"/>
-<textsize name="tiny" value="\tiny"/>
-<textsize name="Large" value="\Large"/>
-<textsize name="LARGE" value="\LARGE"/>
-<textsize name="huge" value="\huge"/>
-<textsize name="Huge" value="\Huge"/>
-<textsize name="footnote" value="\footnotesize"/>
-<textstyle name="center" begin="\begin{center}" end="\end{center}"/>
-<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>
-<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>
-<gridsize name="4 pts" value="4"/>
-<gridsize name="8 pts (~3 mm)" value="8"/>
-<gridsize name="16 pts (~6 mm)" value="16"/>
-<gridsize name="32 pts (~12 mm)" value="32"/>
-<gridsize name="10 pts (~3.5 mm)" value="10"/>
-<gridsize name="20 pts (~7 mm)" value="20"/>
-<gridsize name="14 pts (~5 mm)" value="14"/>
-<gridsize name="28 pts (~10 mm)" value="28"/>
-<gridsize name="56 pts (~20 mm)" value="56"/>
-<anglesize name="90 deg" value="90"/>
-<anglesize name="60 deg" value="60"/>
-<anglesize name="45 deg" value="45"/>
-<anglesize name="30 deg" value="30"/>
-<anglesize name="22.5 deg" value="22.5"/>
-<tiling name="falling" angle="-60" step="4" width="1"/>
-<tiling name="rising" angle="30" step="4" width="1"/>
-</ipestyle>
-<page>
-<layer name="alpha"/>
-<view layers="alpha" active="alpha"/>
-<path layer="alpha" stroke="black" fill="darkcyan">
-48 640 m
-80 672 l
-48 672 l
-h
-</path>
-<text matrix="1 0 0 1 -222.178 174.178" transformations="translations" pos="380 530" stroke="seagreen" type="label" width="70.886" height="8.307" depth="2.32" valign="baseline" size="large">Cech complex</text>
-<text matrix="1 0 0 1 -212.333 10.6762" transformations="translations" pos="282.952 524.893" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text>
-<text matrix="1 0 0 1 -314.178 58.1775" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
-<text matrix="1 0 0 1 -194.178 -13.8225" transformations="translations" pos="310.693 578.759" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
-<text matrix="1 0 0 1 -226.178 18.1775" transformations="translations" pos="375.332 578.49" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
-<text matrix="1 0 0 1 -218.178 -21.8225" transformations="translations" pos="272.179 660.635" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
-<text matrix="1 0 0 1 -89.478 -87.9762" transformations="translations" pos="296.419 724.197" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
-<text matrix="1 0 0 1 -302.178 -13.8225" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text>
-<use name="mark/circle(sx)" pos="80 544" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="48 576" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="112 576" size="normal" stroke="black"/>
-<use name="mark/fdisk(sfx)" pos="48 672" size="normal" stroke="black" fill="white"/>
-<use name="mark/circle(sx)" pos="48 640" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="48 672" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="80 672" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="144 672" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="144 608" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="200 640" size="normal" stroke="black"/>
-<use matrix="1 0 0 1 -100 -96" name="mark/circle(sx)" pos="304 672" size="normal" stroke="darkgray"/>
-<use matrix="1 0 0 1 -100 -96" name="mark/circle(sx)" pos="336 672" size="normal" stroke="darkgray"/>
-<path matrix="1 0 0 1 -100 -96" stroke="darkgray">
-32 0 0 32 304 672 e
-</path>
-<path matrix="1 0 0 1 -100 -96" stroke="darkgray" pen="fat">
-304 672 m
-336 672 l
-</path>
-<text matrix="1 0 0 1 -214.178 50.178" transformations="translations" pos="380 530" stroke="darkgray" type="label" width="80.052" height="8.302" depth="0" valign="baseline" size="large">Maximal radius</text>
-<text matrix="1 0 0 1 -226.178 -13.8225" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">7</text>
-<text matrix="1 0 0 1 -258.178 30.1775" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">8</text>
-<text matrix="1 0 0 1 -334.178 -13.8225" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">9</text>
-<path stroke="black">
-112 576 m
-144 608 l
-</path>
-<path stroke="black">
-144 672 m
-144 608 l
-200 640 l
-h
-</path>
-<path stroke="black" fill="darkcyan">
-48 576 m
-112 576 l
-80 544 l
-h
-</path>
-<use name="mark/fdisk(sfx)" pos="112 728" size="normal" stroke="black"/>
-<path stroke="black">
-80 672 m
-144 672 l
-112 728 l
-h
-</path>
-<use name="mark/fdisk(sfx)" pos="112 728" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="80 672" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="144 672" size="normal" stroke="black" fill="white"/>
-<path stroke="black" fill="darkcyan">
-48 576 m
-48 640 l
-32 608 l
-h
-</path>
-<use name="mark/fdisk(sfx)" pos="200 640" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="144 608" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="112 576" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="80 544" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="48 576" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="48 640" size="normal" stroke="black" fill="white"/>
-<path stroke="darkcyan">
-32 0 0 32 80 576 e
-</path>
-<path stroke="darkcyan">
-22.6274 0 0 22.6274 64 656 e
-</path>
-<path stroke="darkorange">
-37.1429 0 0 37.1429 112 690.857 e
-</path>
-<path stroke="darkorange">
-37.1429 0 0 37.1429 162.857 640 e
-</path>
-<use name="mark/fdisk(sfx)" pos="32 608" size="normal" stroke="black"/>
-<text matrix="1 0 0 1 -334.178 94.1775" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">10</text>
-<path stroke="darkcyan">
-32 0 0 32 48 608 e
-</path>
-<use name="mark/fdisk(sfx)" pos="204 576" size="normal" stroke="darkgray" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="236 576" size="normal" stroke="darkgray" fill="white"/>
-</page>
-</ipe>
diff --git a/doc/Cech_complex/cech_complex_representation.png b/doc/Cech_complex/cech_complex_representation.png
deleted file mode 100644
index d0eb85a5..00000000
--- a/doc/Cech_complex/cech_complex_representation.png
+++ /dev/null
Binary files differ
diff --git a/doc/Cech_complex/cech_one_skeleton.ipe b/doc/Cech_complex/cech_one_skeleton.ipe
deleted file mode 100644
index ed66e132..00000000
--- a/doc/Cech_complex/cech_one_skeleton.ipe
+++ /dev/null
@@ -1,314 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE ipe SYSTEM "ipe.dtd">
-<ipe version="70107" creator="Ipe 7.1.10">
-<info created="D:20150603143945" modified="D:20180305162558"/>
-<ipestyle name="basic">
-<symbol name="arrow/arc(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/farc(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="mark/circle(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</symbol>
-<symbol name="mark/disk(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-</path>
-</symbol>
-<symbol name="mark/fdisk(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
-0.5 0 0 0.5 0 0 e
-</path>
-<path fill="sym-stroke" fillrule="eofill">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</group>
-</symbol>
-<symbol name="mark/box(sx)" transformations="translations">
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</symbol>
-<symbol name="mark/square(sx)" transformations="translations">
-<path fill="sym-stroke">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
-</path>
-</symbol>
-<symbol name="mark/fsquare(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
--0.5 -0.5 m
-0.5 -0.5 l
-0.5 0.5 l
--0.5 0.5 l
-h
-</path>
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="mark/cross(sx)" transformations="translations">
-<group>
-<path fill="sym-stroke">
--0.43 -0.57 m
-0.57 0.43 l
-0.43 0.57 l
--0.57 -0.43 l
-h
-</path>
-<path fill="sym-stroke">
--0.43 0.57 m
-0.57 -0.43 l
-0.43 -0.57 l
--0.57 0.43 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="arrow/fnormal(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/pointed(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/fpointed(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/linear(spx)">
-<path stroke="sym-stroke" pen="sym-pen">
--1 0.333 m
-0 0 l
--1 -0.333 l
-</path>
-</symbol>
-<symbol name="arrow/fdouble(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/double(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<pen name="heavier" value="0.8"/>
-<pen name="fat" value="1.2"/>
-<pen name="ultrafat" value="2"/>
-<symbolsize name="large" value="5"/>
-<symbolsize name="small" value="2"/>
-<symbolsize name="tiny" value="1.1"/>
-<arrowsize name="large" value="10"/>
-<arrowsize name="small" value="5"/>
-<arrowsize name="tiny" value="3"/>
-<color name="red" value="1 0 0"/>
-<color name="green" value="0 1 0"/>
-<color name="blue" value="0 0 1"/>
-<color name="yellow" value="1 1 0"/>
-<color name="orange" value="1 0.647 0"/>
-<color name="gold" value="1 0.843 0"/>
-<color name="purple" value="0.627 0.125 0.941"/>
-<color name="gray" value="0.745"/>
-<color name="brown" value="0.647 0.165 0.165"/>
-<color name="navy" value="0 0 0.502"/>
-<color name="pink" value="1 0.753 0.796"/>
-<color name="seagreen" value="0.18 0.545 0.341"/>
-<color name="turquoise" value="0.251 0.878 0.816"/>
-<color name="violet" value="0.933 0.51 0.933"/>
-<color name="darkblue" value="0 0 0.545"/>
-<color name="darkcyan" value="0 0.545 0.545"/>
-<color name="darkgray" value="0.663"/>
-<color name="darkgreen" value="0 0.392 0"/>
-<color name="darkmagenta" value="0.545 0 0.545"/>
-<color name="darkorange" value="1 0.549 0"/>
-<color name="darkred" value="0.545 0 0"/>
-<color name="lightblue" value="0.678 0.847 0.902"/>
-<color name="lightcyan" value="0.878 1 1"/>
-<color name="lightgray" value="0.827"/>
-<color name="lightgreen" value="0.565 0.933 0.565"/>
-<color name="lightyellow" value="1 1 0.878"/>
-<dashstyle name="dashed" value="[4] 0"/>
-<dashstyle name="dotted" value="[1 3] 0"/>
-<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>
-<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>
-<textsize name="large" value="\large"/>
-<textsize name="small" value="\small"/>
-<textsize name="tiny" value="\tiny"/>
-<textsize name="Large" value="\Large"/>
-<textsize name="LARGE" value="\LARGE"/>
-<textsize name="huge" value="\huge"/>
-<textsize name="Huge" value="\Huge"/>
-<textsize name="footnote" value="\footnotesize"/>
-<textstyle name="center" begin="\begin{center}" end="\end{center}"/>
-<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>
-<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>
-<gridsize name="4 pts" value="4"/>
-<gridsize name="8 pts (~3 mm)" value="8"/>
-<gridsize name="16 pts (~6 mm)" value="16"/>
-<gridsize name="32 pts (~12 mm)" value="32"/>
-<gridsize name="10 pts (~3.5 mm)" value="10"/>
-<gridsize name="20 pts (~7 mm)" value="20"/>
-<gridsize name="14 pts (~5 mm)" value="14"/>
-<gridsize name="28 pts (~10 mm)" value="28"/>
-<gridsize name="56 pts (~20 mm)" value="56"/>
-<anglesize name="90 deg" value="90"/>
-<anglesize name="60 deg" value="60"/>
-<anglesize name="45 deg" value="45"/>
-<anglesize name="30 deg" value="30"/>
-<anglesize name="22.5 deg" value="22.5"/>
-<tiling name="falling" angle="-60" step="4" width="1"/>
-<tiling name="rising" angle="30" step="4" width="1"/>
-</ipestyle>
-<page>
-<layer name="alpha"/>
-<view layers="alpha" active="alpha"/>
-<text layer="alpha" matrix="1 0 0 1 -222.178 174.178" transformations="translations" pos="380 530" stroke="seagreen" type="label" width="84.053" height="8.307" depth="2.32" valign="baseline" size="large">Proximity graph</text>
-<text matrix="1 0 0 1 -212.333 10.6762" transformations="translations" pos="282.952 524.893" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text>
-<text matrix="1 0 0 1 -314.178 58.1775" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
-<path matrix="1 0 0 1 -100 -96" stroke="darkgray" pen="fat">
-304 672 m
-336 672 l
-</path>
-<text matrix="1 0 0 1 -194.178 -13.8225" transformations="translations" pos="310.693 578.759" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
-<text matrix="1 0 0 1 -226.178 18.1775" transformations="translations" pos="375.332 578.49" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
-<text matrix="1 0 0 1 -218.178 -21.8225" transformations="translations" pos="272.179 660.635" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
-<text matrix="1 0 0 1 -89.478 -87.9762" transformations="translations" pos="296.419 724.197" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
-<text matrix="1 0 0 1 -302.178 -13.8225" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text>
-<use name="mark/circle(sx)" pos="80 544" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="48 576" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="112 576" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="48 640" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="48 672" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="80 672" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="144 672" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="144 608" size="normal" stroke="black"/>
-<use name="mark/circle(sx)" pos="200 640" size="normal" stroke="black"/>
-<use matrix="1 0 0 1 -100 -96" name="mark/circle(sx)" pos="336 672" size="normal" stroke="darkgray"/>
-<path matrix="1 0 0 1 -100 -96" stroke="darkgray">
-32 0 0 32 304 672 e
-</path>
-<text matrix="1 0 0 1 -214.178 50.178" transformations="translations" pos="380 530" stroke="darkgray" type="label" width="80.052" height="8.302" depth="0" valign="baseline" size="large">Maximal radius</text>
-<text matrix="1 0 0 1 -226.178 -13.8225" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">7</text>
-<text matrix="1 0 0 1 -258.178 30.1775" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">8</text>
-<text matrix="1 0 0 1 -334.178 -13.8225" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">9</text>
-<path stroke="black">
-112 576 m
-144 608 l
-</path>
-<path stroke="black">
-144 672 m
-144 608 l
-200 640 l
-h
-</path>
-<path stroke="black">
-48 640 m
-80 672 l
-48 672 l
-h
-</path>
-<path stroke="black">
-48 576 m
-112 576 l
-80 544 l
-h
-</path>
-<use name="mark/fdisk(sfx)" pos="112 728" size="normal" stroke="black"/>
-<path stroke="black">
-80 672 m
-144 672 l
-112 728 l
-h
-</path>
-<use name="mark/fdisk(sfx)" pos="112 728" size="normal" stroke="black" fill="white"/>
-<path stroke="black">
-48 576 m
-48 640 l
-32 608 l
-h
-</path>
-<use name="mark/fdisk(sfx)" pos="80 672" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="144 672" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="200 640" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="144 608" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="112 576" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="80 544" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="48 576" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="48 640" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="48 672" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="32 608" size="normal" stroke="black" fill="white"/>
-<text matrix="1 0 0 1 -334.178 94.1775" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">10</text>
-<use name="mark/fdisk(sfx)" pos="204 576" size="normal" stroke="darkgray" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="236 576" size="normal" stroke="darkgray" fill="white"/>
-</page>
-</ipe>
diff --git a/doc/Cech_complex/cech_one_skeleton.png b/doc/Cech_complex/cech_one_skeleton.png
deleted file mode 100644
index cc636616..00000000
--- a/doc/Cech_complex/cech_one_skeleton.png
+++ /dev/null
Binary files differ
diff --git a/doc/Contraction/COPYRIGHT b/doc/Contraction/COPYRIGHT
deleted file mode 100644
index 5b606ac2..00000000
--- a/doc/Contraction/COPYRIGHT
+++ /dev/null
@@ -1,18 +0,0 @@
-The files of this directory are part of the Gudhi Library. The Gudhi library
-(Geometric Understanding in Higher Dimensions) is a generic C++ library for
-computational topology.
-
-Author(s): David Salinas
-Copyright (C) 2015 Inria
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/doc/Contraction/SO3_rips.png b/doc/Contraction/SO3_rips.png
deleted file mode 100644
index 60452f86..00000000
--- a/doc/Contraction/SO3_rips.png
+++ /dev/null
Binary files differ
diff --git a/doc/Contraction/SO3_simplified.png b/doc/Contraction/SO3_simplified.png
deleted file mode 100644
index f70a1903..00000000
--- a/doc/Contraction/SO3_simplified.png
+++ /dev/null
Binary files differ
diff --git a/doc/Contraction/SO3points.png b/doc/Contraction/SO3points.png
deleted file mode 100644
index 0362d98f..00000000
--- a/doc/Contraction/SO3points.png
+++ /dev/null
Binary files differ
diff --git a/doc/Contraction/so3.png b/doc/Contraction/so3.png
deleted file mode 100644
index e66acae1..00000000
--- a/doc/Contraction/so3.png
+++ /dev/null
Binary files differ
diff --git a/doc/Contraction/so3.svg b/doc/Contraction/so3.svg
deleted file mode 100644
index adea3f38..00000000
--- a/doc/Contraction/so3.svg
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="744.09448819"
- height="1052.3622047"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="so3.svg"
- inkscape:export-filename="/home/dsalinas/Documents/CodeSVN/gudhi_depot/trunk/src/Contraction/doc/so3.png"
- inkscape:export-xdpi="200.20428"
- inkscape:export-ydpi="200.20428">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Lend"
- style="overflow:visible;">
- <path
- id="path3888"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
- transform="scale(0.8) rotate(180) translate(12.5,0)" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="2.8"
- inkscape:cx="302.8754"
- inkscape:cy="816.37285"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="2560"
- inkscape:window-height="1523"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <image
- y="175.32289"
- x="87.6194"
- id="image3026"
- xlink:href="file:///user/dsalinas/home/Documents/CodeSVN/gudhi_depot/trunk/src/Contraction/doc/SO3points.png"
- height="107.55493"
- width="121.70161" />
- <image
- y="174.31145"
- x="250.86069"
- id="image3037"
- xlink:href="file:///user/dsalinas/home/Documents/CodeSVN/gudhi_depot/trunk/src/Contraction/doc/SO3_rips.png"
- height="107.95626"
- width="121.70161" />
- <image
- y="174.31216"
- x="415.46198"
- id="image3048"
- xlink:href="file:///user/dsalinas/home/Documents/CodeSVN/gudhi_depot/trunk/src/Contraction/doc/SO3_simplified.png"
- height="107.85593"
- width="122.0026" />
- <rect
- style="color:#000000;fill:none;stroke:#000000;stroke-width:0.10033109;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect3080-2"
- width="27.49983"
- height="26.862415"
- x="160.74173"
- y="176.24422" />
- <image
- y="124.78581"
- x="168.92697"
- id="image3077"
- xlink:href="file:///user/dsalinas/home/Documents/CodeSVN/gudhi_depot/trunk/src/Contraction/doc/zoom.png"
- height="59.596668"
- width="60.499645" />
- <rect
- style="color:#000000;fill:none;stroke:#000000;stroke-width:0.20066218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect3080"
- width="61.215229"
- height="59.796326"
- x="168.33478"
- y="124.91287" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.20066218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
- d="m 163.59862,176.17779 c -2.13689,-4.88892 1.1683,-8.41755 4.60541,-9.6451"
- id="path3879"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <text
- xml:space="preserve"
- style="font-size:6.70418215px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
- x="151.0036"
- y="300.44409"
- id="text4507"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan4509"
- x="152.07077"
- y="300.44409"
- style="text-align:center;text-anchor:middle">Point cloud sampling SO3 </tspan><tspan
- sodipodi:role="line"
- x="151.0036"
- y="308.82431"
- id="tspan4513"
- style="text-align:center;text-anchor:middle">(points are in R but projected into R</tspan><tspan
- sodipodi:role="line"
- x="151.0036"
- y="317.20456"
- id="tspan4515"
- style="text-align:center;text-anchor:middle">for vizualization)</tspan><tspan
- sodipodi:role="line"
- x="151.0036"
- y="325.58478"
- id="tspan4511"
- style="text-align:center;text-anchor:middle" /></text>
- <text
- xml:space="preserve"
- style="font-size:4.58914995px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
- x="141.32632"
- y="304.69067"
- id="text4517"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan4519"
- x="141.32632"
- y="304.69067">9 </tspan></text>
- <text
- xml:space="preserve"
- style="font-size:4.58914995px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
- x="210.88516"
- y="304.76022"
- id="text4521"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan4523"
- x="210.88516"
- y="304.76022">3</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.70418215px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
- x="309.4176"
- y="300.58682"
- id="text4507-8"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- x="309.4176"
- y="300.58682"
- id="tspan4515-4"
- style="text-align:center;text-anchor:middle">Rips complex built uppon these points</tspan><tspan
- sodipodi:role="line"
- x="309.4176"
- y="308.96704"
- style="text-align:center;text-anchor:middle"
- id="tspan4599">20 millions simplices</tspan><tspan
- sodipodi:role="line"
- x="309.4176"
- y="317.34729"
- id="tspan4511-3"
- style="text-align:center;text-anchor:middle" /></text>
- <text
- xml:space="preserve"
- style="font-size:6.70418215px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
- x="476.61395"
- y="300.4592"
- id="text4507-8-0"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- x="476.61395"
- y="300.4592"
- id="tspan4511-3-9"
- style="text-align:center;text-anchor:middle">Simplicial complex obtained after simplification</tspan><tspan
- sodipodi:role="line"
- x="476.61395"
- y="308.83942"
- style="text-align:center;text-anchor:middle"
- id="tspan4601">714 simplices</tspan></text>
- </g>
-</svg>
diff --git a/doc/Contraction/sphere_contraction_representation.png b/doc/Contraction/sphere_contraction_representation.png
deleted file mode 100644
index edf37bf3..00000000
--- a/doc/Contraction/sphere_contraction_representation.png
+++ /dev/null
Binary files differ
diff --git a/doc/Contraction/zoom.png b/doc/Contraction/zoom.png
deleted file mode 100644
index 38d2b520..00000000
--- a/doc/Contraction/zoom.png
+++ /dev/null
Binary files differ
diff --git a/doc/Nerve_GIC/COPYRIGHT b/doc/Nerve_GIC/COPYRIGHT
deleted file mode 100644
index 6b33053e..00000000
--- a/doc/Nerve_GIC/COPYRIGHT
+++ /dev/null
@@ -1,19 +0,0 @@
-The files of this directory are part of the Gudhi Library. The Gudhi library
-(Geometric Understanding in Higher Dimensions) is a generic C++ library for
-computational topology.
-
-Author(s): Mathieu Carrière
-
-Copyright (C) 2017 Inria
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/doc/Nerve_GIC/GIC.jpg b/doc/Nerve_GIC/GIC.jpg
deleted file mode 100644
index cb1b9b7f..00000000
--- a/doc/Nerve_GIC/GIC.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/Nerve_GIC/GIC.pdf b/doc/Nerve_GIC/GIC.pdf
deleted file mode 100644
index 30525745..00000000
--- a/doc/Nerve_GIC/GIC.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/Nerve_GIC/Intro_graph_induced_complex.h b/doc/Nerve_GIC/Intro_graph_induced_complex.h
deleted file mode 100644
index bc8aecc3..00000000
--- a/doc/Nerve_GIC/Intro_graph_induced_complex.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Mathieu Carriere
- *
- * Copyright (C) 2017 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef DOC_COVER_COMPLEX_INTRO_COVER_COMPLEX_H_
-#define DOC_COVER_COMPLEX_INTRO_COVER_COMPLEX_H_
-
-namespace Gudhi {
-
-namespace cover_complex {
-
-/** \defgroup cover_complex Cover complex
- *
- * \author Mathieu Carrière
- *
- * @{
- *
- * Visualizations of the simplicial complexes can be done with either
- * neato (from <a target="_blank" href="http://www.graphviz.org/">graphviz</a>),
- * <a target="_blank" href="http://www.geomview.org/">geomview</a>,
- * <a target="_blank" href="https://github.com/MLWave/kepler-mapper">KeplerMapper</a>.
- * Input point clouds are assumed to be
- * <a target="_blank" href="http://www.geomview.org/docs/html/OFF.html">OFF files</a>.
- *
- * \section covers Covers
- *
- * Nerves and Graph Induced Complexes require a cover C of the input point cloud P,
- * that is a set of subsets of P whose union is P itself.
- * Very often, this cover is obtained from the preimage of a family of intervals covering
- * the image of some scalar-valued function f defined on P. This family is parameterized
- * by its resolution, which can be either the number or the length of the intervals,
- * and its gain, which is the overlap percentage between consecutive intervals (ordered by their first values).
- *
- * \section nerves Nerves
- *
- * \subsection nervedefinition Nerve definition
- *
- * Assume you are given a cover C of your point cloud P. Then, the Nerve of this cover
- * is the simplicial complex that has one k-simplex per k-fold intersection of cover elements.
- * See also <a target="_blank" href="https://en.wikipedia.org/wiki/Nerve_of_a_covering"> Wikipedia </a>.
- *
- * \image html "nerve.png" "Nerve of a double torus"
- *
- * \subsection nerveexample Example
- *
- * This example builds the Nerve of a point cloud sampled on a 3D human shape (human.off).
- * The cover C comes from the preimages of intervals (10 intervals with gain 0.3)
- * covering the height function (coordinate 2),
- * which are then refined into their connected components using the triangulation of the .OFF file.
- *
- * \include Nerve_GIC/Nerve.cpp
- *
- * When launching:
- *
- * \code $> ./Nerve ../../data/points/human.off 2 10 0.3 -v
- * \endcode
- *
- * the program output is:
- *
- * \include Nerve_GIC/Nerve.txt
- *
- * The program also writes a file ../../data/points/human_sc.txt. The first three lines in this file are the location
- * of the input point cloud and the function used to compute the cover.
- * The fourth line contains the number of vertices nv and edges ne of the Nerve.
- * The next nv lines represent the vertices. Each line contains the vertex ID,
- * the number of data points it contains, and their average color function value.
- * Finally, the next ne lines represent the edges, characterized by the ID of their vertices.
- *
- * Using KeplerMapper, one can obtain the following visualization:
- *
- * \image html "nervevisu.jpg" "Visualization with KeplerMapper"
- *
- * \section gic Graph Induced Complexes (GIC)
- *
- * \subsection gicdefinition GIC definition
- *
- * Again, assume you are given a cover C of your point cloud P. Moreover, assume
- * you are also given a graph G built on top of P. Then, for any clique in G
- * whose nodes all belong to different elements of C, the GIC includes a corresponding
- * simplex, whose dimension is the number of nodes in the clique minus one.
- * See \cite Dey13 for more details.
- *
- * \image html "GIC.jpg" "GIC of a point cloud."
- *
- * \subsection gicexamplevor Example with cover from Voronoï
- *
- * This example builds the GIC of a point cloud sampled on a 3D human shape (human.off).
- * We randomly subsampled 100 points in the point cloud, which act as seeds of
- * a geodesic Voronoï diagram. Each cell of the diagram is then an element of C.
- * The graph G (used to compute both the geodesics for Voronoï and the GIC)
- * comes from the triangulation of the human shape. Note that the resulting simplicial complex is in dimension 3
- * in this example.
- *
- * \include Nerve_GIC/VoronoiGIC.cpp
- *
- * When launching:
- *
- * \code $> ./VoronoiGIC ../../data/points/human.off 700 -v
- * \endcode
- *
- * the program outputs SC.off. Using e.g.
- *
- * \code $> geomview ../../data/points/human_sc.off
- * \endcode
- *
- * one can obtain the following visualization:
- *
- * \image html "gicvoronoivisu.jpg" "Visualization with Geomview"
- *
- * \subsection functionalGICdefinition Functional GIC
- *
- * If one restricts to the cliques in G whose nodes all belong to preimages of consecutive
- * intervals (assuming the cover of the height function is minimal, i.e. no more than
- * two intervals can intersect at a time), the GIC is of dimension one, i.e. a graph.
- * We call this graph the functional GIC. See \cite Carriere16 for more details.
- *
- * \subsection functionalGICexample Example
- *
- * Functional GIC comes with automatic selection of the Rips threshold,
- * the resolution and the gain of the function cover. See \cite Carriere17c for more details. In this example,
- * we compute the functional GIC of a Klein bottle embedded in R^5,
- * where the graph G comes from a Rips complex with automatic threshold,
- * and the cover C comes from the preimages of intervals covering the first coordinate,
- * with automatic resolution and gain. Note that automatic threshold, resolution and gain
- * can be computed as well for the Nerve.
- *
- * \include Nerve_GIC/CoordGIC.cpp
- *
- * When launching:
- *
- * \code $> ./CoordGIC ../../data/points/KleinBottle5D.off 0 -v
- * \endcode
- *
- * the program outputs SC.dot. Using e.g.
- *
- * \code $> neato SC.dot -Tpdf -o SC.pdf
- * \endcode
- *
- * one can obtain the following visualization:
- *
- * \image html "coordGICvisu2.jpg" "Visualization with Neato"
- *
- * where nodes are colored by the filter function values and, for each node, the first number is its ID
- * and the second is the number of data points that its contain.
- *
- * We also provide an example on a set of 72 pictures taken around the same object (lucky_cat.off).
- * The function is now the first eigenfunction given by PCA, whose values
- * are written in a file (lucky_cat_PCA1). Threshold, resolution and gain are automatically selected as before.
- *
- * \include Nerve_GIC/FuncGIC.cpp
- *
- * When launching:
- *
- * \code $> ./FuncGIC ../../data/points/COIL_database/lucky_cat.off ../../data/points/COIL_database/lucky_cat_PCA1 -v
- * \endcode
- *
- * the program outputs again SC.dot which gives the following visualization after using neato:
- *
- * \image html "funcGICvisu.jpg" "Visualization with neato"
- *
- */
-/** @} */ // end defgroup cover_complex
-
-} // namespace cover_complex
-
-} // namespace Gudhi
-
-#endif // DOC_COVER_COMPLEX_INTRO_COVER_COMPLEX_H_
diff --git a/doc/Nerve_GIC/coordGICvisu.pdf b/doc/Nerve_GIC/coordGICvisu.pdf
deleted file mode 100644
index 313aa1b5..00000000
--- a/doc/Nerve_GIC/coordGICvisu.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/Nerve_GIC/coordGICvisu2.jpg b/doc/Nerve_GIC/coordGICvisu2.jpg
deleted file mode 100644
index 046feb2a..00000000
--- a/doc/Nerve_GIC/coordGICvisu2.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/Nerve_GIC/funcGICvisu.jpg b/doc/Nerve_GIC/funcGICvisu.jpg
deleted file mode 100644
index 36b64dde..00000000
--- a/doc/Nerve_GIC/funcGICvisu.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/Nerve_GIC/funcGICvisu.pdf b/doc/Nerve_GIC/funcGICvisu.pdf
deleted file mode 100644
index d7456cd3..00000000
--- a/doc/Nerve_GIC/funcGICvisu.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/Nerve_GIC/gicvisu.jpg b/doc/Nerve_GIC/gicvisu.jpg
deleted file mode 100644
index 576dae47..00000000
--- a/doc/Nerve_GIC/gicvisu.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/Nerve_GIC/gicvoronoivisu.jpg b/doc/Nerve_GIC/gicvoronoivisu.jpg
deleted file mode 100644
index cd86c411..00000000
--- a/doc/Nerve_GIC/gicvoronoivisu.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/Nerve_GIC/nerve.png b/doc/Nerve_GIC/nerve.png
deleted file mode 100644
index b66da4a4..00000000
--- a/doc/Nerve_GIC/nerve.png
+++ /dev/null
Binary files differ
diff --git a/doc/Nerve_GIC/nervevisu.jpg b/doc/Nerve_GIC/nervevisu.jpg
deleted file mode 100644
index 67ae1d7e..00000000
--- a/doc/Nerve_GIC/nervevisu.jpg
+++ /dev/null
Binary files differ
diff --git a/doc/Persistence_representations/Persistence_representations_doc.h b/doc/Persistence_representations/Persistence_representations_doc.h
deleted file mode 100644
index 4d850a02..00000000
--- a/doc/Persistence_representations/Persistence_representations_doc.h
+++ /dev/null
@@ -1,259 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef DOC_GUDHI_STAT_H_
-#define DOC_GUDHI_STAT_H_
-
-namespace Gudhi {
-
-namespace Persistence_representations {
-
-/** \defgroup Persistence_representations Persistence representations
- *
- * \author Pawel Dlotko
- *
- * @{
- *\section Persistence_representations_idea Idea
-
- In order to perform most of the statistical tests and machine learning algorithms on a data one need to be able to
- perform only a very limited number of operations on them. Let us fix a representation of
- data of a type A. To perform most of the statistical and machine learning operations one need to be able to compute
- average of objects of type A (so that the averaged object is also of a type A), to
- compute distance between objects of a type A, to vectorize object of a type A and to compute scalar product of a pair
- objects of a type A.
-
- To put this statement into a context, let us assume we have two collections \f$ c_1,\ldots,c_n\f$ and
- \f$d_1,...,d_n\f$ of objects of a type A. We want to verify if the average of those two collections
- are different by performing a permutation test.
- First of all, we compute averages of those two collections: C average of \f$ c_1,\ldots,c_n \f$ and D average of
- \f$d_1,\ldots,d_n\f$. Note that both C and D are of a type A. Then we compute \f$d(C,D)\f$,
- a distance between C and D.
- Later we put the two collections into one bin:
- \f[B = \{ c_1,...,c_n,d_1,...,d_n \}\f]
- Then we shuffle B, and we divide the shuffled version of B into two classes: \f$B_1\f$ and \f$B_2\f$ (in this case, of
- the same cardinality). Then we compute averages \f$\hat{B_1}\f$ and \f$\hat{B_2}\f$
- of elements in \f$B_1\f$ and \f$B_2\f$. Note that again, \f$\hat{B_1}\f$ and \f$\hat{B_2}\f$ are of a type A.
- Then we compute their distance \f$d(\hat{B_1},\hat{B_2})\f$. The procedure of shuffling and dividing the set \f$B\f$
- is repeated \f$N\f$ times (where \f$N\f$ is reasonably large number).
- Then the p-value of a statement that the averages of \f$c_1,...,c_n\f$ and \f$d_1,...,d_n\f$ is approximated by the
- number of times \f$d(\hat{B_1},\hat{B_2}) > d(C,D)\f$ divided by \f$N\f$.
-
- The permutation test reminded above can be performed for any type A which can be averaged, and which allows for
- computations of distances.
-
- The Persistence\_representations contains a collection of various representations of persistent homology that
- implements various concepts described below:
-
- \li Concept of a representation of persistence that allows averaging (so that the average object is of the same type).
- \li Concept of representation of persistence that allows computations of distances.
- \li Concept of representation of persistence that allows computations of scalar products.
- \li Concept of representation of persistence that allows vectorization.
- \li Concept of representation of persistence that allows computations of real-valued characteristics of objects.
-
-
- At the moment an implementation of the following representations of persistence are available (further details of
- those representations will be discussed later):
-
- \li Exact persistence landscapes (allow averaging, computation of distances, scalar products, vectorizations and real
- value characteristics).
- \li Persistence landscapes on a grid (allow averaging, computation of distances scalar products, vectorizations and
- real value characteristics).
- \li Persistence heat maps – various representations where one put some weighted or not Gaussian kernel for each point
- of diagram (allow averaging, computation of distances, scalar products,
- vectorizations and real value characteristics).
- \li Persistence vectors (allow averaging, computation of distances, scalar products, vectorizations and real value
- characteristics).
- \li Persistence diagrams / barcodes (allow computation of distances, vectorizations and real value characteristics).
-
-
- Note that at the while functionalities like averaging, distances and scalar products are fixed, there is no canonical
- way of vectorizing and computing real valued characteristics of objects. Therefore the
- vectorizations and computation of real value characteristics procedures are quite likely to evolve in the furthering
- versions of the library.
-
- The main aim of this implementation is to be able to implement various statistical methods, both on the level of C++
- and on the level of python. The methods will operate on the functionalities offered
- by concepts. That means that the statistical and ML methods will be able to operate on any representation that
- implement the required concept (including the ones that are not in the library at the moment).
- That gives provides a framework, that is very easy to extend, for topological statistics.
-
- Below we are discussing the representations which are currently implemented in Persistence\_representations package:
-
- \section sec_persistence_landscapes Persistence Landscapes
- <b>Reference manual:</b> \ref Gudhi::Persistence_representations::Persistence_landscape <br>
- Persistence landscapes were originally proposed by Bubenik in \cite bubenik_landscapes_2015. Efficient algorithms to
- compute them rigorously were proposed by Bubenik and Dlotko in \cite bubenik_dlotko_landscapes_2016. The idea of
- persistence landscapes is shortly summarized in below.
-
- To begin with, suppose we are given a point \f$(b,d) \in \mathbb{R}^2\f$ in a
- persistence diagram. With this point, we associate a piecewise
- linear function \f$f_{(b,d)} : \mathbb{R} \rightarrow [0,\infty)\f$, which is
- defined as
-
- \f[f_{(b,d)}(x) =
- \left\{ \begin{array}{ccl}
- 0 & \mbox{ if } & x \not\in (b, d) \; , \\
- x - b & \mbox{ if } & x \in \left( b, \frac{b+d}{2}
- \right] \; , \\
- d - x & \mbox{ if } & x \in \left(\frac{b+d}{2},
- d \right) \; .
- \end{array} \right.
- \f]
-
- A persistence landscape of the birth-death
- pairs \f$(b_i , d_i)\f$, where \f$i = 1,\ldots,m\f$, which constitute the given
- persistence diagram is the sequence of functions \f$\lambda_k : \mathbb{R} \rightarrow [0,\infty)\f$ for \f$k \in
- \mathbb{N}\f$, where \f$\lambda_k(x)\f$
- denotes the \f$k^{\rm th}\f$ largest value of the numbers \f$f_{(b_i,d_i)}(x)\f$,
- for \f$i = 1, \ldots, m\f$, and we define \f$\lambda_k(x) = 0\f$ if \f$k > m\f$.
- Equivalently, this sequence of functions can be combined into a single
- function \f$L : \mathbb{N} \times \mathbb{R} \to [0,\infty)\f$ of two
- variables, if we define \f$L(k,t) = \lambda_k(t)\f$.
-
- The detailed description of algorithms used to compute persistence landscapes can be found in
- \cite bubenik_dlotko_landscapes_2016.
- Note that this implementation provides exact representation of landscapes. That have many advantages, but also a few
- drawbacks. For instance, as discussed
- in \cite bubenik_dlotko_landscapes_2016, the exact representation of landscape may be of quadratic size with respect
- to the input persistence diagram. It may therefore happen
- that, for very large diagrams, using this representation may be memory--prohibitive. In such a case, there are two
- possible ways to proceed:
-
- \li Use non exact representation on a grid described in the Section \ref sec_landscapes_on_grid.
- \li Compute just a number of initial nonzero landscapes. This option is available from C++ level as a last parameter of
- the constructor of persistence landscape (set by default to std::numeric_limits<size_t>::max()).
-
-
-
- \section sec_landscapes_on_grid Persistence Landscapes on a grid
- <b>Reference manual:</b> \ref Gudhi::Persistence_representations::Persistence_landscape_on_grid <br>
- This is an alternative, not--exact, representation of persistence landscapes defined in the Section \ref
- sec_persistence_landscapes. Unlike in the Section \ref sec_persistence_landscapes we build a
- representation of persistence landscape by sampling its values on a finite, equally distributed grid of points.
- Since, the persistence landscapes that originate from persistence diagrams have slope \f$1\f$ or \f$-1\f$, we have an
- estimate of a region between the grid points where the landscape cab be located.
- That allows to estimate an error make when performing various operations on landscape. Note that for average
- landscapes the slope is in range \f$[-1,1]\f$ and similar estimate can be used.
-
- Due to a lack of rigorous description of the algorithms to deal with this non--rigorous representation of persistence
- landscapes in the literature, we are providing a short discussion of them in below.
-
- Let us assume that we want to compute persistence landscape on a interval \f$[x,y]\f$. Let us assume that we want to
- use \f$N\f$ grid points for that purpose.
- Then we will sample the persistence landscape on points \f$x_1 = x , x_2 = x + \frac{y-x}{N}, \ldots , x_{N} = y\f$.
- Persistence landscapes are represented as a vector of
- vectors of real numbers. Assume that i-th vector consist of \f$n_i\f$ numbers sorted from larger to smaller. They
- represent the values of the functions
- \f$\lambda_1,\ldots,\lambda_{n_i}\f$ ,\f$\lambda_{n_i+1}\f$ and the functions with larger indices are then zero
- functions) on the i-th point of a grid, i.e. \f$x + i \frac{y-x}{N}\f$.
-
- When averaging two persistence landscapes represented by a grid we need to make sure that they are defined in a
- compatible grids. I.e. the intervals \f$[x,y]\f$ on which they are defined are
- the same, and the numbers of grid points \f$N\f$ are the same in both cases. If this is the case, we simply compute
- point-wise averages of the entries of corresponding
- vectors (In this whole section we assume that if one vector of numbers is shorter than another, we extend the shorter
- one with zeros so that they have the same length.)
-
- Computations of distances between two persistence landscapes on a grid is not much different than in the rigorous
- case. In this case, we sum up the distances between the same levels of
- corresponding landscapes. For fixed level, we approximate the landscapes between the corresponding constitutive
- points of landscapes by linear functions, and compute the \f$L^p\f$ distance between them.
-
- Similarly as in case of distance, when computing the scalar product of two persistence landscapes on a grid, we sum up
- the scalar products of corresponding levels of landscapes. For each level,
- we assume that the persistence landscape on a grid between two grid points is approximated by linear function.
- Therefore to compute scalar product of two corresponding levels of landscapes,
- we sum up the integrals of products of line segments for every pair of constitutive grid points.
-
- Note that for this representation we need to specify a few parameters:
-
- \li Begin and end point of a grid -- the interval \f$[x,y]\f$ (real numbers).
- \li Number of points in a grid (positive integer \f$N\f$).
-
-
- Note that the same representation is used in TDA R-package \cite Fasy_Kim_Lecci_Maria_tda.
-
- \section sec_persistence_heat_maps Persistence heat maps
- <b>Reference manual:</b> \ref Gudhi::Persistence_representations::Persistence_heat_maps <br>
- This is a general class of discrete structures which are based on idea of placing a kernel in the points of
- persistence diagrams.
- This idea appeared in work by many authors over the last 15 years. As far as we know this idea was firstly described
- in the work of Bologna group in \cite Ferri_Frosini_comparision_sheme_1 and \cite Ferri_Frosini_comparision_sheme_2.
- Later it has been described by Colorado State University group in \cite Persistence_Images_2017. The presented paper
- in the first time provide a discussion of stability of the representation.
- Also, the same ideas are used in construction of two recent kernels used for machine learning:
- \cite Kusano_Fukumizu_Hiraoka_PWGK and \cite Reininghaus_Huber_ALL_PSSK. Both the kernel's construction uses
- interesting ideas to ensure stability of the representation with respect to Wasserstein metric. In the kernel
- presented in \cite Kusano_Fukumizu_Hiraoka_PWGK, a scaling function is used to multiply the Gaussian kernel in the
- way that the points close to diagonal got low weight and consequently do not have a big influence on the resulting
- distribution. In \cite Reininghaus_Huber_ALL_PSSK for every point \f$(b,d)\f$ two Gaussian kernels
- are added: first, with a weight 1 in a point \f$(b,d)\f$, and the second, with the weight -1 for a point \f$(b,d)\f$.
- In both cases, the representations are stable with respect to 1-Wasserstein distance.
-
- In Persistence\_representations package we currently implement a discretization of the distributions described above.
- The base of this implementation is 2-dimensional array of pixels. Each pixel have assigned a real value which
- is a sum of values of distributions induced by each point of the persistence diagram. At the moment we compute the
- sum of values on a center of a pixels. It can be easily extended to any other function
- (like for instance sum of integrals of the intermediate distribution on a pixel).
-
- The parameters that determine the structure are the following:
-
- \li A positive integer k determining the size of the kernel we used (we always assume that the kernels are square).
- \li A filter: in practice a square matrix of a size \f$2k+1 \times 2k+1\f$. By default, this is a discretization of
- N(0,1) kernel.
- \li The box \f$[x_0,x_1]\times [y_0,y_1]\f$ bounding the domain of the persistence image.
- \li Scaling function. Each Gaussian kernel at point \f$(p,q)\f$ gets multiplied by the value of this function at the
- point \f$(p,q)\f$.
- \li A boolean value determining if the space below diagonal should be erased or not. To be precise: when points close
- to diagonal are given then sometimes the kernel have support that reaches the region
- below the diagonal. If the value of this parameter is true, then the values below diagonal can be erased.
-
-
- \section sec_persistence_vectors Persistence vectors
- <b>Reference manual:</b> \ref Gudhi::Persistence_representations::Vector_distances_in_diagram <br>
- This is a representation of persistent homology in a form of a vector which was designed for an application in 3d
- graphic in \cite Carriere_Oudot_Ovsjanikov_top_signatures_3d. Below we provide a short description of this
- representation.
-
- Given a persistence diagram \f$D = \{ (b_i,d_i) \}\f$, for every pair of birth--death points \f$(b_1,d_1)\f$ and
- \f$(b_2,d_2)\f$ we compute the following three distances:
-
- \li \f$d( (b_1,d_1) , (b_2,d_2) )\f$.
- \li \f$d( (b_1,d_1) , (\frac{b_1,d_1}{2},\frac{b_1,d_1}{2}) )\f$.
- \li \f$d( (b_2,d_2) , (\frac{b_2,d_2}{2},\frac{b_2,d_2}{2}) )\f$.
-
- We pick the smallest of those and add it to a vector. The obtained vector of numbers is then sorted in decreasing
- order. This way we obtain a persistence vector representing the diagram.
-
- Given two persistence vectors, the computation of distances, averages and scalar products is straightforward. Average
- is simply a coordinate-wise average of a collection of vectors. In this section we
- assume that the vectors are extended by zeros if they are of a different size. To compute distances we compute
- absolute value of differences between coordinates. A scalar product is a sum of products of
- values at the corresponding positions of two vectors.
-
- */
-/** @} */ // end defgroup Persistence_representations
-
-} // namespace Persistence_representations
-} // namespace Gudhi
-
-#endif // Persistence_representations
diff --git a/doc/Persistence_representations/average_landscape.png b/doc/Persistence_representations/average_landscape.png
deleted file mode 100644
index ea59926b..00000000
--- a/doc/Persistence_representations/average_landscape.png
+++ /dev/null
Binary files differ
diff --git a/doc/Persistent_cohomology/3DTorus_poch.png b/doc/Persistent_cohomology/3DTorus_poch.png
deleted file mode 100644
index 1c9d8328..00000000
--- a/doc/Persistent_cohomology/3DTorus_poch.png
+++ /dev/null
Binary files differ
diff --git a/doc/Persistent_cohomology/COPYRIGHT b/doc/Persistent_cohomology/COPYRIGHT
deleted file mode 100644
index 6cde9520..00000000
--- a/doc/Persistent_cohomology/COPYRIGHT
+++ /dev/null
@@ -1,19 +0,0 @@
-The files of this directory are part of the Gudhi Library. The Gudhi library
-(Geometric Understanding in Higher Dimensions) is a generic C++ library for
-computational topology.
-
-Author(s): Clément Maria
-
-Copyright (C) 2015 Inria
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/doc/Persistent_cohomology/Intro_persistent_cohomology.h b/doc/Persistent_cohomology/Intro_persistent_cohomology.h
deleted file mode 100644
index 5fb9d4d2..00000000
--- a/doc/Persistent_cohomology/Intro_persistent_cohomology.h
+++ /dev/null
@@ -1,270 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef DOC_PERSISTENT_COHOMOLOGY_INTRO_PERSISTENT_COHOMOLOGY_H_
-#define DOC_PERSISTENT_COHOMOLOGY_INTRO_PERSISTENT_COHOMOLOGY_H_
-
-// needs namespace for Doxygen to link on classes
-namespace Gudhi {
-// needs namespace for Doxygen to link on classes
-namespace persistent_cohomology {
-
-/** \defgroup persistent_cohomology Persistent Cohomology
-
- \author Clément Maria
-
- Computation of persistent cohomology using the algorithm of
- \cite DBLP:journals/dcg/SilvaMV11 and \cite DBLP:journals/corr/abs-1208-5018
- and the Compressed Annotation Matrix
- implementation of \cite DBLP:conf/esa/BoissonnatDM13
-
- The theory of homology consists in attaching to a topological space a sequence of
- (homology) groups,
- capturing global topological features
- like connected components, holes, cavities, etc. Persistent homology studies the evolution
- -- birth, life and death -- of
- these features when the topological space is changing. Consequently, the theory is essentially
- composed of three elements:
- topological spaces, their homology groups and an evolution scheme.
-
- \section persistencetopolocalspaces Topological Spaces
- Topological spaces are represented by simplicial complexes.
- Let \f$V = \{1, \cdots ,|V|\}\f$ be a set of <EM>vertices</EM>.
- A <EM>simplex</EM> \f$\sigma\f$ is a subset of vertices
- \f$\sigma \subseteq V\f$. A <EM>simplicial complex</EM> \f$\mathbf{K}\f$
- on \f$V\f$ is a collection of simplices \f$\{\sigma\}\f$,
- \f$\sigma \subseteq V\f$, such that \f$\tau \subseteq \sigma \in \mathbf{K}
- \Rightarrow \tau \in \mathbf{K}\f$. The dimension \f$n=|\sigma|-1\f$ of \f$\sigma\f$
- is its number of elements minus 1. A <EM>filtration</EM> of a simplicial complex is
- a function \f$f:\mathbf{K} \rightarrow \mathbb{R}\f$ satisfying \f$f(\tau)\leq
- f(\sigma)\f$ whenever \f$\tau \subseteq \sigma\f$.
-
- We define the concept FilteredComplex which enumerates the requirements for a class
- to represent a filtered complex from which persistent homology may be computed.
- We use the vocabulary of simplicial complexes, but the concept
- is valid for any type of cell complex. The main requirements
- are the definition of:
- \li type <CODE>Indexing_tag</CODE>, which is a model of the concept
- <CODE>IndexingTag</CODE>,
- describing the nature of the indexing scheme,
- \li type Simplex_handle to manipulate simplices,
- \li method <CODE>int dimension(Simplex_handle)</CODE> returning
- the dimension of a simplex,
- \li type and method <CODE>Boundary_simplex_range
- boundary_simplex_range(Simplex_handle)</CODE> that returns
- a range giving access to the codimension 1 subsimplices of the
- input simplex, as-well-as the coefficients \f$(-1)^i\f$ in the
- definition of the operator \f$\partial\f$. The iterators have
- value type <CODE>Simplex_handle</CODE>,
- \li type and method
- <CODE>Filtration_simplex_range filtration_simplex_range ()</CODE>
- that returns a range giving
- access to all the simplices of the complex read in the order
- assigned by the indexing scheme,
- \li type and method
- <CODE>Filtration_value filtration (Simplex_handle)</CODE> that returns the value of
- the filtration on the simplex represented by the handle.
-
- \section persistencehomology Homology
- For a ring \f$\mathcal{R}\f$, the group of <EM>n-chains</EM>,
- denoted \f$\mathbf{C}_n(\mathbf{K},\mathcal{R})\f$, of \f$\mathbf{K}\f$ is the
- group of formal sums of
- n-simplices with \f$\mathcal{R}\f$ coefficients. The <EM>boundary operator</EM> is a
- linear operator
- \f$\partial_n: \mathbf{C}_n(\mathbf{K},\mathcal{R}) \rightarrow \mathbf{C}_{n-1}(\mathbf{K},\mathcal{R})\f$
- such that \f$\partial_n \sigma = \partial_n [v_0, \cdots , v_n] =
- \sum_{i=0}^n (-1)^{i}[v_0,\cdots ,\widehat{v_i}, \cdots,v_n]\f$,
- where \f$\widehat{v_i}\f$ means \f$v_i\f$ is omitted from the list. The chain
- groups form a sequence:
-
- \f[\cdots \ \ \mathbf{C}_n(\mathbf{K},\mathcal{R}) \xrightarrow{\ \partial_n\ } \mathbf{C}_{n-1}(\mathbf{K},\mathcal{R})
- \xrightarrow{\partial_{n-1}} \cdots \xrightarrow{\ \partial_2 \ }
- \mathbf{C}_1(\mathbf{K},\mathcal{R}) \xrightarrow{\ \partial_1 \ } \mathbf{C}_0(\mathbf{K},\mathcal{R}) \f]
-
- of finitely many groups \f$\mathbf{C}_n(\mathbf{K},\mathcal{R})\f$ and homomorphisms
- \f$\partial_n\f$, indexed by the dimension \f$n \geq 0\f$.
- The boundary operators satisfy the property \f$\partial_n \circ \partial_{n+1}=0\f$
- for every \f$n > 0\f$
- and we define the homology groups:
-
- \f[\mathbf{H}_n(\mathbf{K},\mathcal{R}) = \ker \partial_n / \mathrm{im} \ \partial_{n+1}\f]
-
- We refer to \cite Munkres-elementsalgtop1984 for an introduction to homology
- theory and to \cite DBLP:books/daglib/0025666 for an introduction to persistent homology.
-
- \section persistenceindexingscheme Indexing Scheme
- "Changing" a simplicial complex consists in applying a simplicial map.
- An <EM>indexing scheme</EM> is a directed graph together with a traversal
- order, such that two
- consecutive nodes in the graph are connected by an arrow (either forward or backward).
- The nodes represent simplicial complexes and the directed edges simplicial maps.
-
- From the computational point of view, there are two types of indexing schemes of
- interest
- in persistent homology: <EM>linear</EM> ones
- \f$\bullet \longrightarrow \bullet \longrightarrow \cdots \longrightarrow \bullet
- \longrightarrow \bullet\f$
- in persistent homology \cite DBLP:journals/dcg/ZomorodianC05 ,
- and <EM>zigzag</EM> ones
- \f$\bullet \longrightarrow \bullet \longleftarrow \cdots
- \longrightarrow \bullet
- \longleftarrow \bullet \f$ in zigzag persistent
- homology \cite DBLP:journals/focm/CarlssonS10.
- These indexing schemes have a natural left-to-right traversal order, and we
- describe them with ranges and iterators.
- In the current release of the Gudhi library, only the linear case is implemented.
-
- In the following, we consider the case where the indexing scheme is induced
- by a filtration.
- Ordering the simplices
- by increasing filtration values (breaking ties so as a simplex appears after
- its subsimplices of same filtration value) provides an indexing scheme.
-
-\section pcohexamples Examples
-
-We provide several example files: run these examples with -h for details on their use, and read the README file.
-
-\li <a href="_rips_complex_2rips_persistence_8cpp-example.html">
-Rips_complex/rips_persistence.cpp</a> computes the Rips complex of a point cloud and outputs its persistence
-diagram.
-\code $> ./rips_persistence ../../data/points/tore3D_1307.off -r 0.25 -m 0.5 -d 3 -p 3 \endcode
-\code The complex contains 177838 simplices
- and has dimension 3
-3 0 0 inf
-3 1 0.0983494 inf
-3 1 0.104347 inf
-3 2 0.138335 inf \endcode
-
-\li <a href="_persistent_cohomology_2rips_multifield_persistence_8cpp-example.html">
-Persistent_cohomology/rips_multifield_persistence.cpp</a> computes the Rips complex of a point cloud and outputs its
-persistence diagram with a family of field coefficients.
-
-\li <a href="_rips_complex_2rips_distance_matrix_persistence_8cpp-example.html">
-Rips_complex/rips_distance_matrix_persistence.cpp</a> computes the Rips complex of a distance matrix and
-outputs its persistence diagram.
-
-The file should contain square or lower triangular distance matrix with semicolons as separators.
-The code do not check if it is dealing with a distance matrix. It is the user responsibility to provide a valid input.
-Please refer to data/distance_matrix/lower_triangular_distance_matrix.csv for an example of a file.
-
-\li <a href="_rips_complex_2rips_correlation_matrix_persistence_8cpp-example.html">
-Rips_complex/rips_correlation_matrix_persistence.cpp</a>
-computes the Rips complex of a correlation matrix and outputs its persistence diagram.
-
-Note that no check is performed if the matrix given as the input is a correlation matrix.
-It is the user responsibility to ensure that this is the case. The input is to be given either as a square or a lower
-triangular matrix.
-Please refer to data/correlation_matrix/lower_triangular_correlation_matrix.csv for an example of a file.
-
-\li <a href="_alpha_complex_2alpha_complex_3d_persistence_8cpp-example.html">
-Alpha_complex/alpha_complex_3d_persistence.cpp</a> computes the persistent homology with
-\f$\mathbb{Z}/2\mathbb{Z}\f$ coefficients of the alpha complex on points sampling from an OFF file.
-\code $> ./alpha_complex_3d_persistence ../../data/points/tore3D_300.off -p 2 -m 0.45 \endcode
-\code Simplex_tree dim: 3
-2 0 0 inf
-2 1 0.0682162 1.0001
-2 1 0.0934117 1.00003
-2 2 0.56444 1.03938 \endcode
-
-\li <a href="_alpha_complex_2exact_alpha_complex_3d_persistence_8cpp-example.html">
-Alpha_complex/exact_alpha_complex_3d_persistence.cpp</a> computes the persistent homology with
-\f$\mathbb{Z}/2\mathbb{Z}\f$ coefficients of the alpha complex on points sampling from an OFF file.
-Here, as CGAL computes the exact values, it is slower, but it is necessary when points are on a grid
-for instance.
-\code $> ./exact_alpha_complex_3d_persistence ../../data/points/sphere3D_pts_on_grid.off -p 2 -m 0.1 \endcode
-\code Simplex_tree dim: 3
-2 0 0 inf
-2 2 0.0002 0.2028 \endcode
-
-\li <a href="_alpha_complex_2weighted_alpha_complex_3d_persistence_8cpp-example.html">
-Alpha_complex/weighted_alpha_complex_3d_persistence.cpp</a> computes the persistent homology with
-\f$\mathbb{Z}/2\mathbb{Z}\f$ coefficients of the weighted alpha complex on points sampling from an OFF file
-and a weights file.
-\code $> ./weighted_alpha_complex_3d_persistence ../../data/points/tore3D_300.off
-../../data/points/tore3D_300.weights -p 2 -m 0.45 \endcode
-\code Simplex_tree dim: 3
-2 0 -1 inf
-2 1 -0.931784 0.000103311
-2 1 -0.906588 2.60165e-05
-2 2 -0.43556 0.0393798 \endcode
-
-\li <a href="_alpha_complex_2alpha_complex_persistence_8cpp-example.html">
-Alpha_complex/alpha_complex_persistence.cpp</a> computes the persistent homology with
-\f$\mathbb{Z}/p\mathbb{Z}\f$ coefficients of the alpha complex on points sampling from an OFF file.
-\code $> ./alpha_complex_persistence -r 32 -p 2 -m 0.45 ../../data/points/tore3D_300.off \endcode
-\code Alpha complex is of dimension 3 - 9273 simplices - 300 vertices.
-Simplex_tree dim: 3
-2 0 0 inf
-2 1 0.0682162 1.0001
-2 1 0.0934117 1.00003
-2 2 0.56444 1.03938 \endcode
-
-\li <a href="_alpha_complex_2periodic_alpha_complex_3d_persistence_8cpp-example.html">
-Alpha_complex/periodic_alpha_complex_3d_persistence.cpp</a> computes the persistent homology with
-\f$\mathbb{Z}/2\mathbb{Z}\f$ coefficients of the periodic alpha complex on points sampling from an OFF file.
-The second parameter is a \ref FileFormatsIsoCuboid file with coordinates of the periodic cuboid.
-Note that the lengths of the sides of the periodic cuboid have to be the same.
-\code $> ./periodic_alpha_complex_3d_persistence ../../data/points/grid_10_10_10_in_0_1.off
-../../data/points/iso_cuboid_3_in_0_1.txt -p 3 -m 1.0 \endcode
-\code Periodic Delaunay computed.
-Simplex_tree dim: 3
-3 0 0 inf
-3 1 0.0025 inf
-3 1 0.0025 inf
-3 1 0.0025 inf
-3 2 0.005 inf
-3 2 0.005 inf
-3 2 0.005 inf
-3 3 0.0075 inf \endcode
-
-\li <a href="_persistent_cohomology_2weighted_periodic_alpha_complex_3d_persistence_8cpp-example.html">
-Persistent_cohomology/weighted_periodic_alpha_complex_3d_persistence.cpp</a> computes the persistent homology with
-\f$\mathbb{Z}/2\mathbb{Z}\f$ coefficients of the periodic alpha complex on weighted points from an OFF file. The
-additional parameters of this program are:<br>
-(a) The file with the weights of points. The file consist of a sequence of numbers (as many as points).
-Note that the weight of each single point have to be bounded by 1/64 times the square of the cuboid edge length.<br>
-(b) A \ref FileFormatsIsoCuboid file with coordinates of the periodic cuboid.
-Note that the lengths of the sides of the periodic cuboid have to be the same.<br>
-\code $> ./weighted_periodic_alpha_complex_3d_persistence ../../data/points/shifted_sphere.off
-../../data/points/shifted_sphere.weights ../../data/points/iso_cuboid_3_in_0_10.txt 3 1.0 \endcode
-\code Weighted Periodic Delaunay computed.
-Simplex_tree dim: 3
-3 0 -0.0001 inf
-3 1 16.0264 inf
-3 1 16.0273 inf
-3 1 16.0303 inf
-3 2 36.8635 inf
-3 2 36.8704 inf
-3 2 36.8838 inf
-3 3 58.6783 inf \endcode
-
-\li <a href="_persistent_cohomology_2plain_homology_8cpp-example.html">
-Persistent_cohomology/plain_homology.cpp</a> computes the plain homology of a simple simplicial complex without
-filtration values.
-
- */
-
-} // namespace persistent_cohomology
-
-} // namespace Gudhi
-
-#endif // DOC_PERSISTENT_COHOMOLOGY_INTRO_PERSISTENT_COHOMOLOGY_H_
diff --git a/doc/Rips_complex/COPYRIGHT b/doc/Rips_complex/COPYRIGHT
deleted file mode 100644
index 2c31a0d6..00000000
--- a/doc/Rips_complex/COPYRIGHT
+++ /dev/null
@@ -1,19 +0,0 @@
-The files of this directory are part of the Gudhi Library. The Gudhi library
-(Geometric Understanding in Higher Dimensions) is a generic C++ library for
-computational topology.
-
-Author(s): Clément Maria, Pawel Dlotko, Vincent Rouvreau
-
-Copyright (C) 2015 Inria
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/doc/Rips_complex/Intro_rips_complex.h b/doc/Rips_complex/Intro_rips_complex.h
deleted file mode 100644
index 712d3b6e..00000000
--- a/doc/Rips_complex/Intro_rips_complex.h
+++ /dev/null
@@ -1,243 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria, Pawel Dlotko, Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef DOC_RIPS_COMPLEX_INTRO_RIPS_COMPLEX_H_
-#define DOC_RIPS_COMPLEX_INTRO_RIPS_COMPLEX_H_
-
-namespace Gudhi {
-
-namespace rips_complex {
-
-/** \defgroup rips_complex Rips complex
- *
- * \author Clément Maria, Pawel Dlotko, Vincent Rouvreau, Marc Glisse
- *
- * @{
- *
- * \section ripsdefinition Rips complex definition
- *
- * The Vietoris-Rips complex
- * <a target="_blank" href="https://en.wikipedia.org/wiki/Vietoris%E2%80%93Rips_complex">(Wikipedia)</a>
- * is an abstract simplicial complex
- * defined on a finite metric space, where each simplex corresponds to a subset
- * of point whose diameter is smaller that some given threshold.
- * Varying the threshold, we can also see the Rips complex as a filtration of
- * the \f$(n-1)-\f$dimensional simplex, where the filtration value of each
- * simplex is the diameter of the corresponding subset of points.
- *
- * This filtered complex is most often used as an approximation of the
- * Čech complex. After rescaling (Rips using the length of the edges and Čech
- * the half-length), they share the same 1-skeleton and are multiplicatively
- * 2-interleaved or better. While it is slightly bigger, it is also much
- * easier to compute.
- *
- * The number of simplices in the full Rips complex is exponential in the
- * number of vertices, it is thus usually restricted, by excluding all the
- * simplices with filtration value larger than some threshold, and keeping only
- * the dim_max-skeleton.
- *
- * In order to build this complex, the algorithm first builds the graph.
- * The filtration value of each edge is computed from a user-given distance
- * function, or directly read from the distance matrix.
- * In a second step, this graph is inserted in a simplicial complex, which then
- * gets expanded to a flag complex.
- *
- * The input can be given as a range of points and a distance function, or as a
- * distance matrix.
- *
- * Vertex name correspond to the index of the point in the given range (aka. the point cloud).
- *
- * \image html "rips_complex_representation.png" "Rips-complex one skeleton graph representation"
- *
- * On this example, as edges (4,5), (4,6) and (5,6) are in the complex, simplex (4,5,6) is added with the filtration
- * value set with \f$max(filtration(4,5), filtration(4,6), filtration(5,6))\f$.
- * And so on for simplex (0,1,2,3).
- *
- * If the Rips_complex interfaces are not detailed enough for your need, please refer to
- * <a href="_persistent_cohomology_2rips_persistence_step_by_step_8cpp-example.html">
- * rips_persistence_step_by_step.cpp</a> example, where the constructions of the graph and
- * the Simplex_tree are more detailed.
- *
- * \section sparserips Sparse Rips complex
- *
- * Even truncated in filtration value and dimension, the Rips complex remains
- * quite large. However, it is possible to approximate it by a much smaller
- * filtered simplicial complex (linear size, with constants that depend on
- * &epsilon; and the doubling dimension of the space) that is
- * \f$(1+O(\epsilon))-\f$interleaved with it (in particular, their persistence
- * diagrams are at log-bottleneck distance at most \f$O(\epsilon)\f$).
- *
- * The sparse Rips filtration was introduced by Don Sheehy
- * \cite sheehy13linear. We are using the version described in
- * \cite buchet16efficient (except that we multiply all filtration values
- * by 2, to match the usual Rips complex), which proves a
- * \f$\frac{1+\epsilon}{1-\epsilon}\f$-interleaving, although in practice the
- * error is usually smaller.
- * A more intuitive presentation of the idea is available in
- * \cite cavanna15geometric, and in a video \cite cavanna15visualizing.
- *
- * The interface of `Sparse_rips_complex` is similar to the one for the usual
- * `Rips_complex`, except that one has to specify the approximation factor, and
- * there is no option to limit the maximum filtration value (the way the
- * approximation is done means that larger filtration values are much cheaper
- * to handle than low filtration values, so the gain would be too small).
- *
- * Theoretical guarantees are only available for \f$\epsilon<1\f$. The
- * construction accepts larger values of &epsilon;, and the size of the complex
- * keeps decreasing, but there is no guarantee on the quality of the result.
- *
- * \section ripspointsdistance Point cloud and distance function
- *
- * \subsection ripspointscloudexample Example from a point cloud and a distance function
- *
- * This example builds the one skeleton graph from the given points, threshold value, and distance function.
- * Then it creates a `Simplex_tree` with it.
- *
- * Then, it is asked to display information about the simplicial complex.
- *
- * \include Rips_complex/example_one_skeleton_rips_from_points.cpp
- *
- * When launching (Rips maximal distance between 2 points is 12.0, is expanded until dimension 1 - one skeleton graph
- * in other words):
- *
- * \code $> ./Rips_complex_example_one_skeleton_from_points
- * \endcode
- *
- * the program output is:
- *
- * \include Rips_complex/one_skeleton_rips_for_doc.txt
- *
- * \subsection ripsoffexample Example from OFF file
- *
- * This example builds the Rips_complex from the given points in an OFF file, threshold value, and distance
- * function.
- * Then it creates a `Simplex_tree` with it.
- *
- *
- * Then, it is asked to display information about the Rips complex.
- *
- * \include Rips_complex/example_rips_complex_from_off_file.cpp
- *
- * When launching:
- *
- * \code $> ./Rips_complex_example_from_off ../../data/points/alphacomplexdoc.off 12.0 3
- * \endcode
- *
- * the program output is:
- *
- * \include Rips_complex/full_skeleton_rips_for_doc.txt
- *
- *
- * \subsection sparseripspointscloudexample Example of a sparse Rips from a point cloud
- *
- * This example builds the full sparse Rips of a set of 2D Euclidean points, then prints some minimal
- * information about the complex.
- *
- * \include Rips_complex/example_sparse_rips.cpp
- *
- * When launching:
- *
- * \code $> ./Rips_complex_example_sparse
- * \endcode
- *
- * the program output may be (the exact output varies from one run to the next):
- *
- * \code Sparse Rips complex is of dimension 2 - 19 simplices - 7 vertices.
- * \endcode
- *
- *
- *
- * \section ripsdistancematrix Distance matrix
- *
- * \subsection ripsdistancematrixexample Example from a distance matrix
- *
- * This example builds the one skeleton graph from the given distance matrix and threshold value.
- * Then it creates a `Simplex_tree` with it.
- *
- * Then, it is asked to display information about the simplicial complex.
- *
- * \include Rips_complex/example_one_skeleton_rips_from_distance_matrix.cpp
- *
- * When launching (Rips maximal distance between 2 points is 1.0, is expanded until dimension 1 - one skeleton graph
- * with other words):
- *
- * \code $> ./Rips_complex_example_one_skeleton_from_distance_matrix
- * \endcode
- *
- * the program output is:
- *
- * \include Rips_complex/one_skeleton_rips_for_doc.txt
- *
- * \subsection ripscsvdistanceexample Example from a distance matrix read in a csv file
- *
- * This example builds the one skeleton graph from the given distance matrix read in a csv file and threshold value.
- * Then it creates a `Simplex_tree` with it.
- *
- *
- * Then, it is asked to display information about the Rips complex.
- *
- * \include Rips_complex/example_rips_complex_from_csv_distance_matrix_file.cpp
- *
- * When launching:
- *
- * \code $> ./Rips_complex_example_from_csv_distance_matrix ../../data/distance_matrix/full_square_distance_matrix.csv 1.0 3
- * \endcode
- *
- * the program output is:
- *
- * \include Rips_complex/full_skeleton_rips_for_doc.txt
- *
- *
- * \section ripscorrelationematrix Correlation matrix
- *
- * Analogously to the case of distance matrix, Rips complexes can be also constructed based on correlation matrix.
- * Given a correlation matrix M, comportment-wise 1-M is a distance matrix.
- * This example builds the one skeleton graph from the given corelation matrix and threshold value.
- * Then it creates a `Simplex_tree` with it.
- *
- * Then, it is asked to display information about the simplicial complex.
- *
- * \include Rips_complex/example_one_skeleton_rips_from_correlation_matrix.cpp
- *
- * When launching:
- *
- * \code $> ./example_one_skeleton_from_correlation_matrix
- * \endcode
- *
- * the program output is:
- *
- * \include Rips_complex/one_skeleton_rips_from_correlation_matrix_for_doc.txt
- *
- * All the other constructions discussed for Rips complex for distance matrix can be also performed for Rips complexes
- * construction from correlation matrices.
- *
- * @warning As persistence diagrams points will be under the diagonal, bottleneck distance and persistence graphical
- * tool will not work properly, this is a known issue.
- *
- */
-/** @} */ // end defgroup rips_complex
-
-} // namespace rips_complex
-
-} // namespace Gudhi
-
-#endif // DOC_RIPS_COMPLEX_INTRO_RIPS_COMPLEX_H_
diff --git a/doc/Rips_complex/rips_complex_representation.ipe b/doc/Rips_complex/rips_complex_representation.ipe
deleted file mode 100644
index 7f6028f4..00000000
--- a/doc/Rips_complex/rips_complex_representation.ipe
+++ /dev/null
@@ -1,326 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE ipe SYSTEM "ipe.dtd">
-<ipe version="70107" creator="Ipe 7.1.10">
-<info created="D:20150603143945" modified="D:20160928121844"/>
-<ipestyle name="basic">
-<symbol name="arrow/arc(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/farc(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="mark/circle(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</symbol>
-<symbol name="mark/disk(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-</path>
-</symbol>
-<symbol name="mark/fdisk(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
-0.5 0 0 0.5 0 0 e
-</path>
-<path fill="sym-stroke" fillrule="eofill">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</group>
-</symbol>
-<symbol name="mark/box(sx)" transformations="translations">
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</symbol>
-<symbol name="mark/square(sx)" transformations="translations">
-<path fill="sym-stroke">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
-</path>
-</symbol>
-<symbol name="mark/fsquare(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
--0.5 -0.5 m
-0.5 -0.5 l
-0.5 0.5 l
--0.5 0.5 l
-h
-</path>
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="mark/cross(sx)" transformations="translations">
-<group>
-<path fill="sym-stroke">
--0.43 -0.57 m
-0.57 0.43 l
-0.43 0.57 l
--0.57 -0.43 l
-h
-</path>
-<path fill="sym-stroke">
--0.43 0.57 m
-0.57 -0.43 l
-0.43 -0.57 l
--0.57 0.43 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="arrow/fnormal(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/pointed(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/fpointed(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/linear(spx)">
-<path stroke="sym-stroke" pen="sym-pen">
--1 0.333 m
-0 0 l
--1 -0.333 l
-</path>
-</symbol>
-<symbol name="arrow/fdouble(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/double(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<pen name="heavier" value="0.8"/>
-<pen name="fat" value="1.2"/>
-<pen name="ultrafat" value="2"/>
-<symbolsize name="large" value="5"/>
-<symbolsize name="small" value="2"/>
-<symbolsize name="tiny" value="1.1"/>
-<arrowsize name="large" value="10"/>
-<arrowsize name="small" value="5"/>
-<arrowsize name="tiny" value="3"/>
-<color name="red" value="1 0 0"/>
-<color name="green" value="0 1 0"/>
-<color name="blue" value="0 0 1"/>
-<color name="yellow" value="1 1 0"/>
-<color name="orange" value="1 0.647 0"/>
-<color name="gold" value="1 0.843 0"/>
-<color name="purple" value="0.627 0.125 0.941"/>
-<color name="gray" value="0.745"/>
-<color name="brown" value="0.647 0.165 0.165"/>
-<color name="navy" value="0 0 0.502"/>
-<color name="pink" value="1 0.753 0.796"/>
-<color name="seagreen" value="0.18 0.545 0.341"/>
-<color name="turquoise" value="0.251 0.878 0.816"/>
-<color name="violet" value="0.933 0.51 0.933"/>
-<color name="darkblue" value="0 0 0.545"/>
-<color name="darkcyan" value="0 0.545 0.545"/>
-<color name="darkgray" value="0.663"/>
-<color name="darkgreen" value="0 0.392 0"/>
-<color name="darkmagenta" value="0.545 0 0.545"/>
-<color name="darkorange" value="1 0.549 0"/>
-<color name="darkred" value="0.545 0 0"/>
-<color name="lightblue" value="0.678 0.847 0.902"/>
-<color name="lightcyan" value="0.878 1 1"/>
-<color name="lightgray" value="0.827"/>
-<color name="lightgreen" value="0.565 0.933 0.565"/>
-<color name="lightyellow" value="1 1 0.878"/>
-<dashstyle name="dashed" value="[4] 0"/>
-<dashstyle name="dotted" value="[1 3] 0"/>
-<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>
-<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>
-<textsize name="large" value="\large"/>
-<textsize name="small" value="\small"/>
-<textsize name="tiny" value="\tiny"/>
-<textsize name="Large" value="\Large"/>
-<textsize name="LARGE" value="\LARGE"/>
-<textsize name="huge" value="\huge"/>
-<textsize name="Huge" value="\Huge"/>
-<textsize name="footnote" value="\footnotesize"/>
-<textstyle name="center" begin="\begin{center}" end="\end{center}"/>
-<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>
-<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>
-<gridsize name="4 pts" value="4"/>
-<gridsize name="8 pts (~3 mm)" value="8"/>
-<gridsize name="16 pts (~6 mm)" value="16"/>
-<gridsize name="32 pts (~12 mm)" value="32"/>
-<gridsize name="10 pts (~3.5 mm)" value="10"/>
-<gridsize name="20 pts (~7 mm)" value="20"/>
-<gridsize name="14 pts (~5 mm)" value="14"/>
-<gridsize name="28 pts (~10 mm)" value="28"/>
-<gridsize name="56 pts (~20 mm)" value="56"/>
-<anglesize name="90 deg" value="90"/>
-<anglesize name="60 deg" value="60"/>
-<anglesize name="45 deg" value="45"/>
-<anglesize name="30 deg" value="30"/>
-<anglesize name="22.5 deg" value="22.5"/>
-<tiling name="falling" angle="-60" step="4" width="1"/>
-<tiling name="rising" angle="30" step="4" width="1"/>
-</ipestyle>
-<page>
-<layer name="alpha"/>
-<view layers="alpha" active="alpha"/>
-<path layer="alpha" matrix="1 0 0 1 0 -8" fill="darkblue">
-109.771 601.912 m
-159.595 601.797 l
-140.058 541.915 l
-h
-</path>
-<path matrix="1 0 0 1 0 -8" fill="darkblue">
-79.8776 552.169 m
-109.756 601.699 l
-139.812 542.209 l
-h
-</path>
-<path matrix="1 0 0 1 0 -8" fill="lightblue">
-69.8453 682.419 m
-159.925 712.208 l
-90.12 732.039 l
-h
-</path>
-<text matrix="1 0 0 1 -230.178 14.1775" transformations="translations" pos="380 530" stroke="seagreen" type="label" width="68.836" height="8.307" depth="2.32" valign="baseline" size="large">Rips complex</text>
-<text matrix="1 0 0 1 -212.333 10.6762" transformations="translations" pos="282.952 524.893" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text>
-<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
-<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="310.693 578.759" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
-<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="375.332 578.49" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
-<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="272.179 660.635" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
-<text matrix="1 0 0 1 -209.478 4.0238" transformations="translations" pos="296.419 724.197" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
-<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-60 710 m
-40 660 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-40 660 m
-130 690 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-130 690 m
-60 710 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-40 660 m
-80 580 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-80 580 m
-130 580 l
-130 580 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-130 580 m
-110 520 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-110 520 m
-50 530 l
-50 530 l
-50 530 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-50 530 m
-80 580 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-130 580 m
-130 690 l
-</path>
-<use matrix="1 0 0 1 -209.478 4.0238" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="280 660" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="370 690" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="370 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="290 530" size="normal" stroke="black" fill="white"/>
-<path matrix="1 0 0 1 -40 -16" stroke="black" pen="heavier">
-150.038 609.9 m
-179.929 549.727 l
-</path>
-<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="320 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="350 520" size="normal" stroke="black" fill="white"/>
-<path stroke="black" pen="heavier">
-158.7 593.269 m
-81.4925 544.805 l
-</path>
-<path matrix="1 0 0 1 -17.9662 -17.9662" stroke="gray">
-256.324 639.958 m
-370.055 639.958 l
-</path>
-<path matrix="1 0 0 1 -17.9662 -17.9662" stroke="gray">
-56.8567 0 0 56.8567 313.217 639.756 e
-</path>
-<use matrix="1 0 0 1 52.1387 -98.0941" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="gray" fill="white"/>
-<use matrix="1 0 0 1 -61.4926 -98.0942" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="gray" fill="white"/>
-<text matrix="1 0 0 1 -26.6167 -33.2708" transformations="translations" pos="295.735 657.944" stroke="gray" type="label" width="63.374" height="6.926" depth="1.93" valign="baseline">Rips threshold</text>
-</page>
-</ipe>
diff --git a/doc/Rips_complex/rips_complex_representation.png b/doc/Rips_complex/rips_complex_representation.png
deleted file mode 100644
index e901d92e..00000000
--- a/doc/Rips_complex/rips_complex_representation.png
+++ /dev/null
Binary files differ
diff --git a/doc/Rips_complex/rips_one_skeleton.ipe b/doc/Rips_complex/rips_one_skeleton.ipe
deleted file mode 100644
index 3a35970c..00000000
--- a/doc/Rips_complex/rips_one_skeleton.ipe
+++ /dev/null
@@ -1,326 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE ipe SYSTEM "ipe.dtd">
-<ipe version="70107" creator="Ipe 7.1.10">
-<info created="D:20150603143945" modified="D:20160928130224"/>
-<ipestyle name="basic">
-<symbol name="arrow/arc(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/farc(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="mark/circle(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</symbol>
-<symbol name="mark/disk(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-</path>
-</symbol>
-<symbol name="mark/fdisk(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
-0.5 0 0 0.5 0 0 e
-</path>
-<path fill="sym-stroke" fillrule="eofill">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</group>
-</symbol>
-<symbol name="mark/box(sx)" transformations="translations">
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</symbol>
-<symbol name="mark/square(sx)" transformations="translations">
-<path fill="sym-stroke">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
-</path>
-</symbol>
-<symbol name="mark/fsquare(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
--0.5 -0.5 m
-0.5 -0.5 l
-0.5 0.5 l
--0.5 0.5 l
-h
-</path>
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="mark/cross(sx)" transformations="translations">
-<group>
-<path fill="sym-stroke">
--0.43 -0.57 m
-0.57 0.43 l
-0.43 0.57 l
--0.57 -0.43 l
-h
-</path>
-<path fill="sym-stroke">
--0.43 0.57 m
-0.57 -0.43 l
-0.43 -0.57 l
--0.57 0.43 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="arrow/fnormal(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/pointed(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/fpointed(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/linear(spx)">
-<path stroke="sym-stroke" pen="sym-pen">
--1 0.333 m
-0 0 l
--1 -0.333 l
-</path>
-</symbol>
-<symbol name="arrow/fdouble(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/double(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<pen name="heavier" value="0.8"/>
-<pen name="fat" value="1.2"/>
-<pen name="ultrafat" value="2"/>
-<symbolsize name="large" value="5"/>
-<symbolsize name="small" value="2"/>
-<symbolsize name="tiny" value="1.1"/>
-<arrowsize name="large" value="10"/>
-<arrowsize name="small" value="5"/>
-<arrowsize name="tiny" value="3"/>
-<color name="red" value="1 0 0"/>
-<color name="green" value="0 1 0"/>
-<color name="blue" value="0 0 1"/>
-<color name="yellow" value="1 1 0"/>
-<color name="orange" value="1 0.647 0"/>
-<color name="gold" value="1 0.843 0"/>
-<color name="purple" value="0.627 0.125 0.941"/>
-<color name="gray" value="0.745"/>
-<color name="brown" value="0.647 0.165 0.165"/>
-<color name="navy" value="0 0 0.502"/>
-<color name="pink" value="1 0.753 0.796"/>
-<color name="seagreen" value="0.18 0.545 0.341"/>
-<color name="turquoise" value="0.251 0.878 0.816"/>
-<color name="violet" value="0.933 0.51 0.933"/>
-<color name="darkblue" value="0 0 0.545"/>
-<color name="darkcyan" value="0 0.545 0.545"/>
-<color name="darkgray" value="0.663"/>
-<color name="darkgreen" value="0 0.392 0"/>
-<color name="darkmagenta" value="0.545 0 0.545"/>
-<color name="darkorange" value="1 0.549 0"/>
-<color name="darkred" value="0.545 0 0"/>
-<color name="lightblue" value="0.678 0.847 0.902"/>
-<color name="lightcyan" value="0.878 1 1"/>
-<color name="lightgray" value="0.827"/>
-<color name="lightgreen" value="0.565 0.933 0.565"/>
-<color name="lightyellow" value="1 1 0.878"/>
-<dashstyle name="dashed" value="[4] 0"/>
-<dashstyle name="dotted" value="[1 3] 0"/>
-<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>
-<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>
-<textsize name="large" value="\large"/>
-<textsize name="small" value="\small"/>
-<textsize name="tiny" value="\tiny"/>
-<textsize name="Large" value="\Large"/>
-<textsize name="LARGE" value="\LARGE"/>
-<textsize name="huge" value="\huge"/>
-<textsize name="Huge" value="\Huge"/>
-<textsize name="footnote" value="\footnotesize"/>
-<textstyle name="center" begin="\begin{center}" end="\end{center}"/>
-<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>
-<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>
-<gridsize name="4 pts" value="4"/>
-<gridsize name="8 pts (~3 mm)" value="8"/>
-<gridsize name="16 pts (~6 mm)" value="16"/>
-<gridsize name="32 pts (~12 mm)" value="32"/>
-<gridsize name="10 pts (~3.5 mm)" value="10"/>
-<gridsize name="20 pts (~7 mm)" value="20"/>
-<gridsize name="14 pts (~5 mm)" value="14"/>
-<gridsize name="28 pts (~10 mm)" value="28"/>
-<gridsize name="56 pts (~20 mm)" value="56"/>
-<anglesize name="90 deg" value="90"/>
-<anglesize name="60 deg" value="60"/>
-<anglesize name="45 deg" value="45"/>
-<anglesize name="30 deg" value="30"/>
-<anglesize name="22.5 deg" value="22.5"/>
-<tiling name="falling" angle="-60" step="4" width="1"/>
-<tiling name="rising" angle="30" step="4" width="1"/>
-</ipestyle>
-<page>
-<layer name="alpha"/>
-<view layers="alpha" active="alpha"/>
-<path layer="alpha" matrix="1 0 0 1 0 -8" stroke="0">
-109.771 601.912 m
-159.595 601.797 l
-140.058 541.915 l
-h
-</path>
-<path matrix="1 0 0 1 0 -8" stroke="0">
-79.8776 552.169 m
-109.756 601.699 l
-139.812 542.209 l
-h
-</path>
-<path matrix="1 0 0 1 0.665417 -8.66542" stroke="0">
-69.8453 682.419 m
-159.925 712.208 l
-90.12 732.039 l
-h
-</path>
-<text matrix="1 0 0 1 -230.178 14.1775" transformations="translations" pos="380 530" stroke="seagreen" type="label" width="98.916" height="8.307" depth="2.32" valign="baseline" size="large">One skeleton graph</text>
-<text matrix="1 0 0 1 -212.333 10.6762" transformations="translations" pos="282.952 524.893" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text>
-<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
-<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="310.693 578.759" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
-<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="375.332 578.49" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
-<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="272.179 660.635" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
-<text matrix="1 0 0 1 -209.478 4.0238" transformations="translations" pos="296.419 724.197" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
-<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text>
-<path matrix="1 0 0 1 30.6497 14.0396" stroke="black" pen="heavier">
-60 710 m
-40 660 l
-</path>
-<path matrix="1 0 0 1 30.3739 13.9018" stroke="black" pen="heavier">
-40 660 m
-130 690 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-130 690 m
-60 710 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-40 660 m
-80 580 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-80 580 m
-130 580 l
-130 580 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-130 580 m
-110 520 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-110 520 m
-50 530 l
-50 530 l
-50 530 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-50 530 m
-80 580 l
-</path>
-<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
-130 580 m
-130 690 l
-</path>
-<use matrix="1 0 0 1 -209.478 4.0238" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="280 660" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="370 690" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="370 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="290 530" size="normal" stroke="black" fill="white"/>
-<path matrix="1 0 0 1 -40 -16" stroke="black" pen="heavier">
-150.038 609.9 m
-179.929 549.727 l
-</path>
-<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="320 580" size="normal" stroke="black" fill="white"/>
-<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="350 520" size="normal" stroke="black" fill="white"/>
-<path stroke="black" pen="heavier">
-158.7 593.269 m
-81.4925 544.805 l
-</path>
-<path matrix="1 0 0 1 -17.9662 -17.9662" stroke="gray">
-256.324 639.958 m
-370.055 639.958 l
-</path>
-<path matrix="1 0 0 1 -17.9662 -17.9662" stroke="gray">
-56.8567 0 0 56.8567 313.217 639.756 e
-</path>
-<use matrix="1 0 0 1 52.1387 -98.0941" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="gray" fill="white"/>
-<use matrix="1 0 0 1 -61.4926 -98.0942" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="gray" fill="white"/>
-<text matrix="1 0 0 1 -26.6167 -33.2708" transformations="translations" pos="295.735 657.944" stroke="gray" type="label" width="63.374" height="6.926" depth="1.93" valign="baseline">Rips threshold</text>
-</page>
-</ipe>
diff --git a/doc/Rips_complex/rips_one_skeleton.png b/doc/Rips_complex/rips_one_skeleton.png
deleted file mode 100644
index 1028770e..00000000
--- a/doc/Rips_complex/rips_one_skeleton.png
+++ /dev/null
Binary files differ
diff --git a/doc/Simplex_tree/COPYRIGHT b/doc/Simplex_tree/COPYRIGHT
deleted file mode 100644
index 6cde9520..00000000
--- a/doc/Simplex_tree/COPYRIGHT
+++ /dev/null
@@ -1,19 +0,0 @@
-The files of this directory are part of the Gudhi Library. The Gudhi library
-(Geometric Understanding in Higher Dimensions) is a generic C++ library for
-computational topology.
-
-Author(s): Clément Maria
-
-Copyright (C) 2015 Inria
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/doc/Simplex_tree/Intro_simplex_tree.h b/doc/Simplex_tree/Intro_simplex_tree.h
deleted file mode 100644
index db399489..00000000
--- a/doc/Simplex_tree/Intro_simplex_tree.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef DOC_SIMPLEX_TREE_INTRO_SIMPLEX_TREE_H_
-#define DOC_SIMPLEX_TREE_INTRO_SIMPLEX_TREE_H_
-
-// needs namespace for Doxygen to link on classes
-namespace Gudhi {
-
-
-/** \defgroup simplex_tree Filtered Complexes
- * @{
- * \author Cl&eacute;ment Maria
- *
- * A simplicial complex \f$\mathbf{K}\f$ on a set of vertices \f$V = \{1, \cdots ,|V|\}\f$ is a collection of
- * simplices \f$\{\sigma\}\f$, \f$\sigma \subseteq V\f$ such that
- * \f$\tau \subseteq \sigma \in \mathbf{K} \rightarrow \tau \in \mathbf{K}\f$. The dimension \f$n=|\sigma|-1\f$ of
- * \f$\sigma\f$ is its number of elements minus \f$1\f$.
- *
- * A filtration of a simplicial complex is a function \f$f:\mathbf{K} \rightarrow \mathbb{R}\f$ satisfying
- * \f$f(\tau)\leq f(\sigma)\f$ whenever \f$\tau \subseteq \sigma\f$. Ordering the simplices by increasing filtration
- * values (breaking ties so as a simplex appears after its subsimplices of same filtration value) provides an
- * indexing scheme.
- *
- * \section filteredcomplexesimplementation Implementations
- * \subsection filteredcomplexessimplextree Simplex tree
- * There are two implementation of complexes. The first on is the Simplex_tree data structure. The simplex tree is an
- * efficient and flexible data structure for representing general (filtered) simplicial complexes. The data structure
- * is described in \cite boissonnatmariasimplextreealgorithmica
- * \image html "Simplex_tree_representation.png" "Simplex tree representation"
- *
- * \subsubsection filteredcomplexessimplextreeexamples Examples
- *
- * Here is a list of simplex tree examples :
- * \li <a href="_simplex_tree_2simple_simplex_tree_8cpp-example.html">
- * Simplex_tree/simple_simplex_tree.cpp</a> - Simple simplex tree construction and basic function use.
- *
- * \li <a href="_simplex_tree_2simplex_tree_from_cliques_of_graph_8cpp-example.html">
- * Simplex_tree/simplex_tree_from_cliques_of_graph.cpp</a> - Simplex tree construction from cliques of graph read in
- * a file.
- *
- * Simplex tree construction with \f$\mathbb{Z}/3\mathbb{Z}\f$ coefficients on weighted graph Klein bottle file:
- * \code $> ./simplex_tree_from_cliques_of_graph ../../data/points/Klein_bottle_complex.txt 3 \endcode
- * \code Insert the 1-skeleton in the simplex tree in 0.000404 s.
-max_dim = 3
-Expand the simplex tree in 3.8e-05 s.
-Information of the Simplex Tree:
-Number of vertices = 10 Number of simplices = 98 \endcode
- *
- * \li <a href="_simplex_tree_2example_alpha_shapes_3_simplex_tree_from_off_file_8cpp-example.html">
- * Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp</a> - Simplex tree is computed and displayed
- * from a 3D alpha complex (Requires CGAL, GMP and GMPXX to be installed).
- *
- * \li <a href="_simplex_tree_2graph_expansion_with_blocker_8cpp-example.html">
- * Simplex_tree/graph_expansion_with_blocker.cpp</a> - Simple simplex tree construction from a one-skeleton graph with
- * a simple blocker expansion method.
- *
- * \subsection filteredcomplexeshassecomplex Hasse complex
- * The second one is the Hasse_complex. The Hasse complex is a data structure representing explicitly all co-dimension
- * 1 incidence relations in a complex. It is consequently faster when accessing the boundary of a simplex, but is less
- * compact and harder to construct from scratch.
- *
- * @}
- */
-
-} // namespace Gudhi
-
-#endif // DOC_SIMPLEX_TREE_INTRO_SIMPLEX_TREE_H_
diff --git a/doc/Simplex_tree/Simplex_tree_representation.png b/doc/Simplex_tree/Simplex_tree_representation.png
deleted file mode 100644
index 9d401520..00000000
--- a/doc/Simplex_tree/Simplex_tree_representation.png
+++ /dev/null
Binary files differ
diff --git a/doc/Skeleton_blocker/COPYRIGHT b/doc/Skeleton_blocker/COPYRIGHT
deleted file mode 100644
index 5b606ac2..00000000
--- a/doc/Skeleton_blocker/COPYRIGHT
+++ /dev/null
@@ -1,18 +0,0 @@
-The files of this directory are part of the Gudhi Library. The Gudhi library
-(Geometric Understanding in Higher Dimensions) is a generic C++ library for
-computational topology.
-
-Author(s): David Salinas
-Copyright (C) 2015 Inria
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/doc/Skeleton_blocker/blocker_curve.svg b/doc/Skeleton_blocker/blocker_curve.svg
deleted file mode 100644
index 0094a379..00000000
--- a/doc/Skeleton_blocker/blocker_curve.svg
+++ /dev/null
@@ -1,2177 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="744.09448819"
- height="1052.3622047"
- id="svg5493"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="New document 8">
- <defs
- id="defs5495">
- <clipPath
- id="clipPath6477"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6479"
- d="m 2963.67,3669.26 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath6465"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6467"
- d="m 2762.07,3669.26 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath6427"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6429"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6409"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6411"
- d="m 720,431.988 4463.98,0 0,3456.02 -4463.98,0 0,-3456.02 z" />
- </clipPath>
- <clipPath
- id="clipPath6399"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6401"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6381"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6383"
- d="m 720,431.988 4463.98,0 0,3456.02 -4463.98,0 0,-3456.02 z" />
- </clipPath>
- <clipPath
- id="clipPath6371"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6373"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6353"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6355"
- d="m 720,431.988 4463.98,0 0,3456.02 -4463.98,0 0,-3456.02 z" />
- </clipPath>
- <clipPath
- id="clipPath6343"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6345"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6325"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6327"
- d="m 720,431.988 4463.98,0 0,3456.02 -4463.98,0 0,-3456.02 z" />
- </clipPath>
- <clipPath
- id="clipPath6315"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6317"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6297"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6299"
- d="m 720,431.988 4463.98,0 0,3456.02 -4463.98,0 0,-3456.02 z" />
- </clipPath>
- <clipPath
- id="clipPath6287"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6289"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6269"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6271"
- d="m 720,431.988 4463.98,0 0,3456.02 -4463.98,0 0,-3456.02 z" />
- </clipPath>
- <clipPath
- id="clipPath6259"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6261"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6241"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6243"
- d="m 720,431.988 4463.98,0 0,3456.02 -4463.98,0 0,-3456.02 z" />
- </clipPath>
- <clipPath
- id="clipPath6231"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6233"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6211"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6213"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6189"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6191"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6169"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6171"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6149"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6151"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6129"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6131"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6109"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6111"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6089"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6091"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath6077"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6079"
- d="m 5151,431 33,0 0,35 -33,0 0,-35 z" />
- </clipPath>
- <clipPath
- id="clipPath6065"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6067"
- d="m 4705,431 66,0 0,34 -66,0 0,-34 z" />
- </clipPath>
- <clipPath
- id="clipPath6053"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6055"
- d="m 4258,431 66,0 0,34 -66,0 0,-34 z" />
- </clipPath>
- <clipPath
- id="clipPath6041"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6043"
- d="m 3812,431 66,0 0,34 -66,0 0,-34 z" />
- </clipPath>
- <clipPath
- id="clipPath6029"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6031"
- d="m 3365,431 66,0 0,34 -66,0 0,-34 z" />
- </clipPath>
- <clipPath
- id="clipPath6017"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6019"
- d="m 2919,431 66,0 0,34 -66,0 0,-34 z" />
- </clipPath>
- <clipPath
- id="clipPath6005"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path6007"
- d="m 2473,431 66,0 0,34 -66,0 0,-34 z" />
- </clipPath>
- <clipPath
- id="clipPath5993"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5995"
- d="m 2026,431 66,0 0,34 -66,0 0,-34 z" />
- </clipPath>
- <clipPath
- id="clipPath5981"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5983"
- d="m 1580,431 66,0 0,34 -66,0 0,-34 z" />
- </clipPath>
- <clipPath
- id="clipPath5969"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5971"
- d="m 1133,431 66,0 0,34 -66,0 0,-34 z" />
- </clipPath>
- <clipPath
- id="clipPath5957"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5959"
- d="m 720,431 42,0 0,34 -42,0 0,-34 z" />
- </clipPath>
- <clipPath
- id="clipPath5947"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5949"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath5935"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5937"
- d="m 5151,539 33,0 0,66 -33,0 0,-66 z" />
- </clipPath>
- <clipPath
- id="clipPath5923"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5925"
- d="m 4705.12,525.621 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5911"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5913"
- d="m 4258.71,513.121 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5899"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5901"
- d="m 3812.3,499.84 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5887"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5889"
- d="m 3365.9,482.852 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5875"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5877"
- d="m 2919.49,469.379 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5863"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5865"
- d="m 2473,454 66,0 0,66 -66,0 0,-66 z" />
- </clipPath>
- <clipPath
- id="clipPath5851"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5853"
- d="m 2026.72,439.648 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5839"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5841"
- d="m 1580,431 66,0 0,60 -66,0 0,-60 z" />
- </clipPath>
- <clipPath
- id="clipPath5827"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5829"
- d="m 1133,431 66,0 0,47 -66,0 0,-47 z" />
- </clipPath>
- <clipPath
- id="clipPath5815"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5817"
- d="m 720,431 42,0 0,34 -42,0 0,-34 z" />
- </clipPath>
- <clipPath
- id="clipPath5805"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5807"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath5793"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5795"
- d="m 5151,3499 33,0 0,66 -33,0 0,-66 z" />
- </clipPath>
- <clipPath
- id="clipPath5781"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5783"
- d="m 4705.12,3186.68 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5769"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5771"
- d="m 4258.71,2878.83 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5757"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5759"
- d="m 3812.3,2568.4 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5745"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5747"
- d="m 3365.9,2251.56 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5733"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5735"
- d="m 2919,1940 66,0 0,66 -66,0 0,-66 z" />
- </clipPath>
- <clipPath
- id="clipPath5721"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5723"
- d="m 2473.09,1628.36 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5709"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5711"
- d="m 2026.72,1312.93 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5697"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5699"
- d="m 1580,1005 66,0 0,66 -66,0 0,-66 z" />
- </clipPath>
- <clipPath
- id="clipPath5685"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5687"
- d="m 1133.91,696.801 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5673"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5675"
- d="m 720,431 42,0 0,37 -42,0 0,-37 z" />
- </clipPath>
- <clipPath
- id="clipPath5663"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5665"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- <clipPath
- id="clipPath5651"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5653"
- d="m 5151,1336 33,0 0,66 -33,0 0,-66 z" />
- </clipPath>
- <clipPath
- id="clipPath5639"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5641"
- d="m 4705.12,1242.11 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5627"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5629"
- d="m 4258.71,1148.95 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5615"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5617"
- d="m 3812.3,1055.12 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5603"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5605"
- d="m 3365.9,959.73 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5591"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5593"
- d="m 2919.49,865.699 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5579"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5581"
- d="m 2473.09,771.52 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5567"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5569"
- d="m 2026.72,676.449 65,0 0,65 -65,0 0,-65 z" />
- </clipPath>
- <clipPath
- id="clipPath5555"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5557"
- d="m 1580,583 66,0 0,66 -66,0 0,-66 z" />
- </clipPath>
- <clipPath
- id="clipPath5543"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5545"
- d="m 1133,490 66,0 0,66 -66,0 0,-66 z" />
- </clipPath>
- <clipPath
- id="clipPath5531"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5533"
- d="m 720,431 42,0 0,35 -42,0 0,-35 z" />
- </clipPath>
- <clipPath
- id="clipPath5521"
- clipPathUnits="userSpaceOnUse">
- <path
- id="path5523"
- d="m 720,431 4464,0 0,3458 -4464,0 0,-3458 z" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.979899"
- inkscape:cx="399.80267"
- inkscape:cy="523.89309"
- inkscape:document-units="px"
- inkscape:current-layer="g5511"
- showgrid="false"
- inkscape:window-width="2560"
- inkscape:window-height="1523"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata5498">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- transform="matrix(1.25,0,0,-1.25,15,802.36218)"
- inkscape:label="ink_ext_XXXXXX"
- id="g5509">
- <g
- transform="scale(0.1,0.1)"
- id="g5511">
- <path
- id="path5513"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 0,0 5760,0 0,4320 L 0,4320 0,0 z"
- inkscape:connector-curvature="0" />
- <path
- id="path5515"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 720,431.988 4463.98,0 0,3456.02 -4463.98,0 0,-3456.02 z"
- inkscape:connector-curvature="0" />
- <g
- id="g5517">
- <g
- clip-path="url(#clipPath5521)"
- id="g5519">
- <path
- id="path5525"
- style="fill:none;stroke:#0000ff;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 728.949,432.969 437.461,89.57 446.4,93.32 446.41,93.09 446.37,95.071 446.4,94.179 446.41,94.031 446.4,95.39 446.41,93.83 446.41,93.16 446.36,94.34"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5527">
- <g
- clip-path="url(#clipPath5531)"
- id="g5529">
- <path
- id="path5535"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 728.949,402.969 c 7.93,0 15.582,3.16 21.211,8.793 5.621,5.617 8.789,13.238 8.789,21.207 0,7.972 -3.168,15.582 -8.789,21.211 -5.629,5.621 -13.281,8.789 -21.211,8.789 -7.969,0 -15.59,-3.168 -21.25,-8.789 -5.629,-5.629 -8.75,-13.239 -8.75,-21.211 0,-7.969 3.121,-15.59 8.75,-21.207 5.66,-5.633 13.281,-8.793 21.25,-8.793"
- inkscape:connector-curvature="0" />
- <path
- id="path5537"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 728.949,402.969 c 7.93,0 15.582,3.16 21.211,8.793 5.621,5.617 8.789,13.238 8.789,21.207 0,7.972 -3.168,15.582 -8.789,21.211 -5.629,5.621 -13.281,8.789 -21.211,8.789 -7.969,0 -15.59,-3.168 -21.25,-8.789 -5.629,-5.629 -8.75,-13.239 -8.75,-21.211 0,-7.969 3.121,-15.59 8.75,-21.207 5.66,-5.633 13.281,-8.793 21.25,-8.793 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5539">
- <g
- clip-path="url(#clipPath5543)"
- id="g5541">
- <path
- id="path5547"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 1166.41,492.539 c 7.97,0 15.58,3.16 21.21,8.789 5.62,5.621 8.79,13.242 8.79,21.211 0,7.93 -3.17,15.582 -8.79,21.211 -5.63,5.629 -13.24,8.789 -21.21,8.789 -7.97,0 -15.59,-3.16 -21.21,-8.789 -5.63,-5.629 -8.79,-13.281 -8.79,-21.211 0,-7.969 3.16,-15.59 8.79,-21.211 5.62,-5.629 13.24,-8.789 21.21,-8.789"
- inkscape:connector-curvature="0" />
- <path
- id="path5549"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 1166.41,492.539 c 7.97,0 15.58,3.16 21.21,8.789 5.62,5.621 8.79,13.242 8.79,21.211 0,7.93 -3.17,15.582 -8.79,21.211 -5.63,5.629 -13.24,8.789 -21.21,8.789 -7.97,0 -15.59,-3.16 -21.21,-8.789 -5.63,-5.629 -8.79,-13.281 -8.79,-21.211 0,-7.969 3.16,-15.59 8.79,-21.211 5.62,-5.629 13.24,-8.789 21.21,-8.789 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5551">
- <g
- clip-path="url(#clipPath5555)"
- id="g5553">
- <path
- id="path5559"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 1612.81,585.859 c 7.93,0 15.59,3.161 21.21,8.789 5.63,5.622 8.79,13.243 8.79,21.211 0,7.969 -3.16,15.59 -8.79,21.211 -5.62,5.629 -13.28,8.789 -21.21,8.789 -7.97,0 -15.58,-3.16 -21.21,-8.789 -5.62,-5.621 -8.79,-13.242 -8.79,-21.211 0,-7.968 3.17,-15.589 8.79,-21.211 5.63,-5.628 13.24,-8.789 21.21,-8.789"
- inkscape:connector-curvature="0" />
- <path
- id="path5561"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 1612.81,585.859 c 7.93,0 15.59,3.161 21.21,8.789 5.63,5.622 8.79,13.243 8.79,21.211 0,7.969 -3.16,15.59 -8.79,21.211 -5.62,5.629 -13.28,8.789 -21.21,8.789 -7.97,0 -15.58,-3.16 -21.21,-8.789 -5.62,-5.621 -8.79,-13.242 -8.79,-21.211 0,-7.968 3.17,-15.589 8.79,-21.211 5.63,-5.628 13.24,-8.789 21.21,-8.789 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5563">
- <g
- clip-path="url(#clipPath5567)"
- id="g5565">
- <path
- id="path5571"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2059.22,678.949 c 7.93,0 15.58,3.16 21.21,8.781 5.62,5.629 8.79,13.29 8.79,21.219 0,7.961 -3.17,15.582 -8.79,21.211 -5.63,5.621 -13.28,8.789 -21.21,8.789 -7.97,0 -15.63,-3.168 -21.25,-8.789 -5.63,-5.629 -8.75,-13.25 -8.75,-21.211 0,-7.929 3.12,-15.59 8.75,-21.219 5.62,-5.621 13.28,-8.781 21.25,-8.781"
- inkscape:connector-curvature="0" />
- <path
- id="path5573"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2059.22,678.949 c 7.93,0 15.58,3.16 21.21,8.781 5.62,5.629 8.79,13.29 8.79,21.219 0,7.961 -3.17,15.582 -8.79,21.211 -5.63,5.621 -13.28,8.789 -21.21,8.789 -7.97,0 -15.63,-3.168 -21.25,-8.789 -5.63,-5.629 -8.75,-13.25 -8.75,-21.211 0,-7.929 3.12,-15.59 8.75,-21.219 5.62,-5.621 13.28,-8.781 21.25,-8.781 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5575">
- <g
- clip-path="url(#clipPath5579)"
- id="g5577">
- <path
- id="path5583"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2505.59,774.02 c 7.96,0 15.58,3.171 21.21,8.789 5.62,5.632 8.79,13.242 8.79,21.211 0,7.968 -3.17,15.589 -8.79,21.21 -5.63,5.629 -13.25,8.79 -21.21,8.79 -7.93,0 -15.59,-3.161 -21.21,-8.79 -5.63,-5.621 -8.79,-13.242 -8.79,-21.21 0,-7.969 3.16,-15.579 8.79,-21.211 5.62,-5.618 13.28,-8.789 21.21,-8.789"
- inkscape:connector-curvature="0" />
- <path
- id="path5585"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2505.59,774.02 c 7.96,0 15.58,3.171 21.21,8.789 5.62,5.632 8.79,13.242 8.79,21.211 0,7.968 -3.17,15.589 -8.79,21.21 -5.63,5.629 -13.25,8.79 -21.21,8.79 -7.93,0 -15.59,-3.161 -21.21,-8.79 -5.63,-5.621 -8.79,-13.242 -8.79,-21.21 0,-7.969 3.16,-15.579 8.79,-21.211 5.62,-5.618 13.28,-8.789 21.21,-8.789 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5587">
- <g
- clip-path="url(#clipPath5591)"
- id="g5589">
- <path
- id="path5595"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2951.99,868.199 c 7.97,0 15.59,3.172 21.21,8.789 5.63,5.633 8.79,13.242 8.79,21.211 0,7.93 -3.16,15.59 -8.79,21.211 -5.62,5.629 -13.24,8.789 -21.21,8.789 -7.93,0 -15.58,-3.16 -21.21,-8.789 -5.62,-5.621 -8.79,-13.281 -8.79,-21.211 0,-7.969 3.17,-15.578 8.79,-21.211 5.63,-5.617 13.28,-8.789 21.21,-8.789"
- inkscape:connector-curvature="0" />
- <path
- id="path5597"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2951.99,868.199 c 7.97,0 15.59,3.172 21.21,8.789 5.63,5.633 8.79,13.242 8.79,21.211 0,7.93 -3.16,15.59 -8.79,21.211 -5.62,5.629 -13.24,8.789 -21.21,8.789 -7.93,0 -15.58,-3.16 -21.21,-8.789 -5.62,-5.621 -8.79,-13.281 -8.79,-21.211 0,-7.969 3.17,-15.578 8.79,-21.211 5.63,-5.617 13.28,-8.789 21.21,-8.789 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5599">
- <g
- clip-path="url(#clipPath5603)"
- id="g5601">
- <path
- id="path5607"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 3398.4,962.23 c 7.97,0 15.58,3.161 21.21,8.79 5.62,5.621 8.79,13.242 8.79,21.21 0,7.93 -3.17,15.58 -8.79,21.21 -5.63,5.62 -13.24,8.79 -21.21,8.79 -7.97,0 -15.59,-3.17 -21.21,-8.79 -5.63,-5.63 -8.79,-13.28 -8.79,-21.21 0,-7.968 3.16,-15.589 8.79,-21.21 5.62,-5.629 13.24,-8.79 21.21,-8.79"
- inkscape:connector-curvature="0" />
- <path
- id="path5609"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 3398.4,962.23 c 7.97,0 15.58,3.161 21.21,8.79 5.62,5.621 8.79,13.242 8.79,21.21 0,7.93 -3.17,15.58 -8.79,21.21 -5.63,5.62 -13.24,8.79 -21.21,8.79 -7.97,0 -15.59,-3.17 -21.21,-8.79 -5.63,-5.63 -8.79,-13.28 -8.79,-21.21 0,-7.968 3.16,-15.589 8.79,-21.21 5.62,-5.629 13.24,-8.79 21.21,-8.79 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5611">
- <g
- clip-path="url(#clipPath5615)"
- id="g5613">
- <path
- id="path5619"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 3844.8,1057.62 c 7.97,0 15.59,3.16 21.22,8.79 5.62,5.62 8.78,13.28 8.78,21.21 0,7.97 -3.16,15.58 -8.78,21.21 -5.63,5.62 -13.25,8.79 -21.22,8.79 -7.96,0 -15.58,-3.17 -21.21,-8.79 -5.62,-5.63 -8.79,-13.24 -8.79,-21.21 0,-7.93 3.17,-15.59 8.79,-21.21 5.63,-5.63 13.25,-8.79 21.21,-8.79"
- inkscape:connector-curvature="0" />
- <path
- id="path5621"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 3844.8,1057.62 c 7.97,0 15.59,3.16 21.22,8.79 5.62,5.62 8.78,13.28 8.78,21.21 0,7.97 -3.16,15.58 -8.78,21.21 -5.63,5.62 -13.25,8.79 -21.22,8.79 -7.96,0 -15.58,-3.17 -21.21,-8.79 -5.62,-5.63 -8.79,-13.24 -8.79,-21.21 0,-7.93 3.17,-15.59 8.79,-21.21 5.63,-5.63 13.25,-8.79 21.21,-8.79 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5623">
- <g
- clip-path="url(#clipPath5627)"
- id="g5625">
- <path
- id="path5631"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 4291.21,1151.45 c 7.93,0 15.59,3.16 21.21,8.78 5.63,5.63 8.79,13.25 8.79,21.22 0,7.93 -3.16,15.58 -8.79,21.21 -5.62,5.62 -13.28,8.79 -21.21,8.79 -7.97,0 -15.59,-3.17 -21.21,-8.79 -5.62,-5.63 -8.79,-13.28 -8.79,-21.21 0,-7.97 3.17,-15.59 8.79,-21.22 5.62,-5.62 13.24,-8.78 21.21,-8.78"
- inkscape:connector-curvature="0" />
- <path
- id="path5633"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 4291.21,1151.45 c 7.93,0 15.59,3.16 21.21,8.78 5.63,5.63 8.79,13.25 8.79,21.22 0,7.93 -3.16,15.58 -8.79,21.21 -5.62,5.62 -13.28,8.79 -21.21,8.79 -7.97,0 -15.59,-3.17 -21.21,-8.79 -5.62,-5.63 -8.79,-13.28 -8.79,-21.21 0,-7.97 3.17,-15.59 8.79,-21.22 5.62,-5.62 13.24,-8.78 21.21,-8.78 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5635">
- <g
- clip-path="url(#clipPath5639)"
- id="g5637">
- <path
- id="path5643"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 4737.62,1244.61 c 7.93,0 15.58,3.16 21.21,8.79 5.62,5.62 8.79,13.24 8.79,21.21 0,7.93 -3.17,15.59 -8.79,21.21 -5.63,5.63 -13.28,8.79 -21.21,8.79 -7.97,0 -15.59,-3.16 -21.21,-8.79 -5.67,-5.62 -8.79,-13.28 -8.79,-21.21 0,-7.97 3.12,-15.59 8.79,-21.21 5.62,-5.63 13.24,-8.79 21.21,-8.79"
- inkscape:connector-curvature="0" />
- <path
- id="path5645"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 4737.62,1244.61 c 7.93,0 15.58,3.16 21.21,8.79 5.62,5.62 8.79,13.24 8.79,21.21 0,7.93 -3.17,15.59 -8.79,21.21 -5.63,5.63 -13.28,8.79 -21.21,8.79 -7.97,0 -15.59,-3.16 -21.21,-8.79 -5.67,-5.62 -8.79,-13.28 -8.79,-21.21 0,-7.97 3.12,-15.59 8.79,-21.21 5.62,-5.63 13.24,-8.79 21.21,-8.79 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5647">
- <g
- clip-path="url(#clipPath5651)"
- id="g5649">
- <path
- id="path5655"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 5183.98,1338.95 c 7.97,0 15.59,3.16 21.22,8.78 5.62,5.63 8.78,13.29 8.78,21.22 0,7.96 -3.16,15.62 -8.78,21.25 -5.63,5.62 -13.25,8.75 -21.22,8.75 -7.93,0 -15.58,-3.13 -21.21,-8.75 -5.62,-5.63 -8.79,-13.29 -8.79,-21.25 0,-7.93 3.17,-15.59 8.79,-21.22 5.63,-5.62 13.28,-8.78 21.21,-8.78"
- inkscape:connector-curvature="0" />
- <path
- id="path5657"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,1338.95 c 7.97,0 15.59,3.16 21.22,8.78 5.62,5.63 8.78,13.29 8.78,21.22 0,7.96 -3.16,15.62 -8.78,21.25 -5.63,5.62 -13.25,8.75 -21.22,8.75 -7.93,0 -15.58,-3.13 -21.21,-8.75 -5.62,-5.63 -8.79,-13.29 -8.79,-21.25 0,-7.93 3.17,-15.59 8.79,-21.22 5.63,-5.62 13.28,-8.78 21.21,-8.78 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5659">
- <g
- clip-path="url(#clipPath5663)"
- id="g5661">
- <path
- id="path5667"
- style="fill:none;stroke:#008000;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 728.949,434.609 437.461,294.692 446.4,308.549 446.41,307.58 446.37,315.43 446.4,311.91 446.41,311.29 446.4,316.84 446.41,310.43 446.41,307.85 446.36,312.7"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5669">
- <g
- clip-path="url(#clipPath5673)"
- id="g5671">
- <path
- id="path5677"
- style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 728.949,404.609 30,60 -60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5679"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 728.949,404.609 30,60 -60,0 30,-60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5681">
- <g
- clip-path="url(#clipPath5685)"
- id="g5683">
- <path
- id="path5689"
- style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 1166.41,699.301 30,60 -60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5691"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 1166.41,699.301 30,60 -60,0 30,-60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5693">
- <g
- clip-path="url(#clipPath5697)"
- id="g5695">
- <path
- id="path5701"
- style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 1612.81,1007.85 30,60 -60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5703"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 1612.81,1007.85 30,60 -60,0 30,-60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5705">
- <g
- clip-path="url(#clipPath5709)"
- id="g5707">
- <path
- id="path5713"
- style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2059.22,1315.43 30,60 -60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5715"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2059.22,1315.43 30,60 -60,0 30,-60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5717">
- <g
- clip-path="url(#clipPath5721)"
- id="g5719">
- <path
- id="path5725"
- style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2505.59,1630.86 30,60 -60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5727"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2505.59,1630.86 30,60 -60,0 30,-60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5729">
- <g
- clip-path="url(#clipPath5733)"
- id="g5731">
- <path
- id="path5737"
- style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2951.99,1942.77 30,60 -60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5739"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2951.99,1942.77 30,60 -60,0 30,-60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5741">
- <g
- clip-path="url(#clipPath5745)"
- id="g5743">
- <path
- id="path5749"
- style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 3398.4,2254.06 30,60 -60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5751"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 3398.4,2254.06 30,60 -60,0 30,-60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5753">
- <g
- clip-path="url(#clipPath5757)"
- id="g5755">
- <path
- id="path5761"
- style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 3844.8,2570.9 30,60 -60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5763"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 3844.8,2570.9 30,60 -60,0 30,-60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5765">
- <g
- clip-path="url(#clipPath5769)"
- id="g5767">
- <path
- id="path5773"
- style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 4291.21,2881.33 30,60 -60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5775"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 4291.21,2881.33 30,60 -60,0 30,-60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5777">
- <g
- clip-path="url(#clipPath5781)"
- id="g5779">
- <path
- id="path5785"
- style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 4737.62,3189.18 30,60 -60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5787"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 4737.62,3189.18 30,60 -60,0 30,-60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5789">
- <g
- clip-path="url(#clipPath5793)"
- id="g5791">
- <path
- id="path5797"
- style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 5183.98,3501.88 30,60 -60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5799"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,3501.88 30,60 -60,0 30,-60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5801">
- <g
- clip-path="url(#clipPath5805)"
- id="g5803">
- <path
- id="path5809"
- style="fill:none;stroke:#ff0000;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 728.949,432.148 437.461,13.122 446.4,13.128 446.41,13.75 446.37,14.692 446.4,15.039 446.41,13.473 446.4,16.988 446.41,13.281 446.41,12.5 446.36,13.399"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5811">
- <g
- clip-path="url(#clipPath5815)"
- id="g5813">
- <path
- id="path5819"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 698.949,402.148 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path5821"
- style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 698.949,402.148 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5823">
- <g
- clip-path="url(#clipPath5827)"
- id="g5825">
- <path
- id="path5831"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 1136.41,415.27 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path5833"
- style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 1136.41,415.27 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5835">
- <g
- clip-path="url(#clipPath5839)"
- id="g5837">
- <path
- id="path5843"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 1582.81,428.398 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path5845"
- style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 1582.81,428.398 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5847">
- <g
- clip-path="url(#clipPath5851)"
- id="g5849">
- <path
- id="path5855"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2029.22,442.148 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path5857"
- style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2029.22,442.148 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5859">
- <g
- clip-path="url(#clipPath5863)"
- id="g5861">
- <path
- id="path5867"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2475.59,456.84 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path5869"
- style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2475.59,456.84 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5871">
- <g
- clip-path="url(#clipPath5875)"
- id="g5873">
- <path
- id="path5879"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2921.99,471.879 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path5881"
- style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2921.99,471.879 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5883">
- <g
- clip-path="url(#clipPath5887)"
- id="g5885">
- <path
- id="path5891"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 3368.4,485.352 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path5893"
- style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 3368.4,485.352 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5895">
- <g
- clip-path="url(#clipPath5899)"
- id="g5897">
- <path
- id="path5903"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 3814.8,502.34 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path5905"
- style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 3814.8,502.34 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5907">
- <g
- clip-path="url(#clipPath5911)"
- id="g5909">
- <path
- id="path5915"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 4261.21,515.621 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path5917"
- style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 4261.21,515.621 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5919">
- <g
- clip-path="url(#clipPath5923)"
- id="g5921">
- <path
- id="path5927"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 4707.62,528.121 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path5929"
- style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 4707.62,528.121 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5931">
- <g
- clip-path="url(#clipPath5935)"
- id="g5933">
- <path
- id="path5939"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 5153.98,541.52 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path5941"
- style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5153.98,541.52 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5943">
- <g
- clip-path="url(#clipPath5947)"
- id="g5945">
- <path
- id="path5951"
- style="fill:none;stroke:#00bfbf;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 728.949,432.07 437.461,0.078 446.4,-0.117 446.41,0.078 446.37,0.161 446.4,0 446.41,-0.079 446.4,-0.043 446.41,-0.078 446.41,0.27 446.36,0.199"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5953">
- <g
- clip-path="url(#clipPath5957)"
- id="g5955">
- <path
- id="path5961"
- style="fill:#00bfbf;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 728.949,462.07 -30,-60 60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5963"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 728.949,462.07 -30,-60 60,0 -30,60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5965">
- <g
- clip-path="url(#clipPath5969)"
- id="g5967">
- <path
- id="path5973"
- style="fill:#00bfbf;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 1166.41,462.148 -30,-60 60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5975"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 1166.41,462.148 -30,-60 60,0 -30,60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5977">
- <g
- clip-path="url(#clipPath5981)"
- id="g5979">
- <path
- id="path5985"
- style="fill:#00bfbf;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 1612.81,462.031 -30,-60 60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5987"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 1612.81,462.031 -30,-60 60,0 -30,60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g5989">
- <g
- clip-path="url(#clipPath5993)"
- id="g5991">
- <path
- id="path5997"
- style="fill:#00bfbf;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2059.22,462.109 -30,-60 60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path5999"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2059.22,462.109 -30,-60 60,0 -30,60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6001">
- <g
- clip-path="url(#clipPath6005)"
- id="g6003">
- <path
- id="path6009"
- style="fill:#00bfbf;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2505.59,462.27 -30,-60 60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6011"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2505.59,462.27 -30,-60 60,0 -30,60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6013">
- <g
- clip-path="url(#clipPath6017)"
- id="g6015">
- <path
- id="path6021"
- style="fill:#00bfbf;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2951.99,462.27 -30,-60 60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6023"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2951.99,462.27 -30,-60 60,0 -30,60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6025">
- <g
- clip-path="url(#clipPath6029)"
- id="g6027">
- <path
- id="path6033"
- style="fill:#00bfbf;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 3398.4,462.191 -30,-60 60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6035"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 3398.4,462.191 -30,-60 60,0 -30,60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6037">
- <g
- clip-path="url(#clipPath6041)"
- id="g6039">
- <path
- id="path6045"
- style="fill:#00bfbf;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 3844.8,462.148 -30,-60 60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6047"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 3844.8,462.148 -30,-60 60,0 -30,60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6049">
- <g
- clip-path="url(#clipPath6053)"
- id="g6051">
- <path
- id="path6057"
- style="fill:#00bfbf;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 4291.21,462.07 -30,-60 60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6059"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 4291.21,462.07 -30,-60 60,0 -30,60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6061">
- <g
- clip-path="url(#clipPath6065)"
- id="g6063">
- <path
- id="path6069"
- style="fill:#00bfbf;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 4737.62,462.301 -30,-60 60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6071"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 4737.62,462.301 -30,-60 60,0 -30,60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6073">
- <g
- clip-path="url(#clipPath6077)"
- id="g6075">
- <path
- id="path6081"
- style="fill:#00bfbf;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 5183.98,462.539 -30,-60 60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6083"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,462.539 -30,-60 60,0 -30,60 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6085">
- <g
- clip-path="url(#clipPath6089)"
- id="g6087">
- <path
- id="path6093"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 720,431.988 0,3456.022"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6095"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,431.988 0,40"
- inkscape:connector-curvature="0" />
- <path
- id="path6097"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,3888.01 0,-40"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6099">
- <text
- id="text6101"
- transform="matrix(1,0,0,-1,68.9766,30.2938)">
- <tspan
- id="tspan6103"
- y="0"
- x="0"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">0</tspan>
- </text>
- </g>
- <g
- id="g6105">
- <g
- clip-path="url(#clipPath6109)"
- id="g6107">
- <path
- id="path6113"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 1612.81,431.988 0,3456.022"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6115"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 1612.81,431.988 0,40"
- inkscape:connector-curvature="0" />
- <path
- id="path6117"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 1612.81,3888.01 0,-40"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6119">
- <text
- id="text6121"
- transform="matrix(1,0,0,-1,147.054,30.2938)">
- <tspan
- id="tspan6123"
- sodipodi:role="line"
- y="0"
- x="0 7.632 15.264 22.896"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">1000</tspan>
- </text>
- </g>
- <g
- id="g6125">
- <g
- clip-path="url(#clipPath6129)"
- id="g6127">
- <path
- id="path6133"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 2505.59,431.988 0,3456.022"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6135"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2505.59,431.988 0,40"
- inkscape:connector-curvature="0" />
- <path
- id="path6137"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2505.59,3888.01 0,-40"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6139">
- <text
- id="text6141"
- transform="matrix(1,0,0,-1,236.115,30.2938)">
- <tspan
- id="tspan6143"
- sodipodi:role="line"
- y="0"
- x="0 7.632 15.264 22.896"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">2000</tspan>
- </text>
- </g>
- <g
- id="g6145">
- <g
- clip-path="url(#clipPath6149)"
- id="g6147">
- <path
- id="path6153"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 3398.4,431.988 0,3456.022"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6155"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 3398.4,431.988 0,40"
- inkscape:connector-curvature="0" />
- <path
- id="path6157"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 3398.4,3888.01 0,-40"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6159">
- <text
- id="text6161"
- transform="matrix(1,0,0,-1,325.418,30.2938)">
- <tspan
- id="tspan6163"
- sodipodi:role="line"
- y="0"
- x="0 7.632 15.264 22.896"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">3000</tspan>
- </text>
- </g>
- <g
- id="g6165">
- <g
- clip-path="url(#clipPath6169)"
- id="g6167">
- <path
- id="path6173"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 4291.21,431.988 0,3456.022"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6175"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 4291.21,431.988 0,40"
- inkscape:connector-curvature="0" />
- <path
- id="path6177"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 4291.21,3888.01 0,-40"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6179">
- <text
- id="text6181"
- transform="matrix(1,0,0,-1,414.534,30.2938)">
- <tspan
- id="tspan6183"
- sodipodi:role="line"
- y="0"
- x="0 7.632 15.264 22.896"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">4000</tspan>
- </text>
- </g>
- <g
- id="g6185">
- <g
- clip-path="url(#clipPath6189)"
- id="g6187">
- <path
- id="path6193"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 5183.98,431.988 0,3456.022"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6195"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,431.988 0,40"
- inkscape:connector-curvature="0" />
- <path
- id="path6197"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,3888.01 0,-40"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6199">
- <text
- id="text6201"
- transform="matrix(1,0,0,-1,503.978,30.2938)">
- <tspan
- id="tspan6203"
- sodipodi:role="line"
- y="0"
- x="0 7.632 15.264 22.896"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">5000</tspan>
- <tspan
- id="tspan6205"
- sodipodi:role="line"
- y="14.2969"
- x="-266.052 -257.07599 -249.468 -237.78 -230.16 -222.78 -217.84801 -214.032 -206.688 -202.464 -198.64799 -191.54401 -184.164 -179.23199 -174.528 -171.192 -164.592 -157.21201"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">Number of vertices</tspan>
- </text>
- </g>
- <g
- id="g6207">
- <g
- clip-path="url(#clipPath6211)"
- id="g6209">
- <path
- id="path6215"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 720,431.988 4463.98,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6217"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,431.988 40,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6219"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,431.988 -40,0"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6221">
- <text
- id="text6223"
- transform="matrix(1,0,0,-1,61.9531,38.8328)">
- <tspan
- id="tspan6225"
- y="0"
- x="0"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">0</tspan>
- </text>
- </g>
- <g
- id="g6227">
- <g
- clip-path="url(#clipPath6231)"
- id="g6229">
- <path
- id="path6235"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 720,863.98 4463.98,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6237">
- <g
- clip-path="url(#clipPath6241)"
- id="g6239">
- <path
- id="path6245"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,863.98 40,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6247"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,863.98 -40,0"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6249">
- <text
- id="text6251"
- transform="matrix(1,0,0,-1,31.4688,82.0328)">
- <tspan
- id="tspan6253"
- sodipodi:role="line"
- y="0"
- x="0 7.632 15.264 22.896 30.528"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">20000</tspan>
- </text>
- </g>
- <g
- id="g6255">
- <g
- clip-path="url(#clipPath6259)"
- id="g6257">
- <path
- id="path6263"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 720,1296.02 4463.98,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6265">
- <g
- clip-path="url(#clipPath6269)"
- id="g6267">
- <path
- id="path6273"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,1296.02 40,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6275"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,1296.02 -40,0"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6277">
- <text
- id="text6279"
- transform="matrix(1,0,0,-1,31.1875,125.233)">
- <tspan
- id="tspan6281"
- sodipodi:role="line"
- y="0"
- x="0 7.632 15.264 22.896 30.528"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">40000</tspan>
- </text>
- </g>
- <g
- id="g6283">
- <g
- clip-path="url(#clipPath6287)"
- id="g6285">
- <path
- id="path6291"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 720,1728.01 4463.98,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6293">
- <g
- clip-path="url(#clipPath6297)"
- id="g6295">
- <path
- id="path6301"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,1728.01 40,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6303"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,1728.01 -40,0"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6305">
- <text
- id="text6307"
- transform="matrix(1,0,0,-1,31.4375,168.433)">
- <tspan
- id="tspan6309"
- sodipodi:role="line"
- y="0"
- x="0 7.632 15.264 22.896 30.528"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">60000</tspan>
- </text>
- </g>
- <g
- id="g6311">
- <g
- clip-path="url(#clipPath6315)"
- id="g6313">
- <path
- id="path6319"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 720,2160 4463.98,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6321">
- <g
- clip-path="url(#clipPath6325)"
- id="g6323">
- <path
- id="path6329"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,2160 40,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6331"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,2160 -40,0"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6333">
- <text
- id="text6335"
- transform="matrix(1,0,0,-1,31.4063,211.633)">
- <tspan
- id="tspan6337"
- sodipodi:role="line"
- y="0"
- x="0 7.632 15.264 22.896 30.528"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">80000</tspan>
- </text>
- </g>
- <g
- id="g6339">
- <g
- clip-path="url(#clipPath6343)"
- id="g6341">
- <path
- id="path6347"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 720,2591.99 4463.98,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6349">
- <g
- clip-path="url(#clipPath6353)"
- id="g6351">
- <path
- id="path6357"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,2591.99 40,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6359"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,2591.99 -40,0"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6361">
- <text
- id="text6363"
- transform="matrix(1,0,0,-1,24.2656,254.833)">
- <tspan
- id="tspan6365"
- sodipodi:role="line"
- y="0"
- x="0 7.632 15.264 22.896 30.528 38.16"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">100000</tspan>
- </text>
- </g>
- <g
- id="g6367">
- <g
- clip-path="url(#clipPath6371)"
- id="g6369">
- <path
- id="path6375"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 720,3023.98 4463.98,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6377">
- <g
- clip-path="url(#clipPath6381)"
- id="g6379">
- <path
- id="path6385"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,3023.98 40,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6387"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,3023.98 -40,0"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6389">
- <text
- id="text6391"
- transform="matrix(1,0,0,-1,24.2656,298.033)">
- <tspan
- id="tspan6393"
- sodipodi:role="line"
- y="0"
- x="0 7.632 15.264 22.896 30.528 38.16"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">120000</tspan>
- </text>
- </g>
- <g
- id="g6395">
- <g
- clip-path="url(#clipPath6399)"
- id="g6397">
- <path
- id="path6403"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 720,3456.02 4463.98,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6405">
- <g
- clip-path="url(#clipPath6409)"
- id="g6407">
- <path
- id="path6413"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,3456.02 40,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6415"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,3456.02 -40,0"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6417">
- <text
- id="text6419"
- transform="matrix(1,0,0,-1,24.2656,341.233)">
- <tspan
- id="tspan6421"
- sodipodi:role="line"
- y="0"
- x="0 7.632 15.264 22.896 30.528 38.16"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">140000</tspan>
- </text>
- </g>
- <g
- id="g6423">
- <g
- clip-path="url(#clipPath6427)"
- id="g6425">
- <path
- id="path6431"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:10, 30;stroke-dashoffset:0"
- d="m 720,3888.01 4463.98,0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6433"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,3888.01 40,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6435"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,3888.01 -40,0"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6437">
- <text
- id="text6439"
- transform="matrix(1,0,0,-1,24.2656,384.433)">
- <tspan
- id="tspan6441"
- sodipodi:role="line"
- y="0"
- x="0 7.632 15.264 22.896 30.528 38.16"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">160000</tspan>
- </text>
- <text
- id="text6443"
- transform="matrix(0,1,1,0,19.0938,204.398)">
- <tspan
- id="tspan6445"
- sodipodi:role="line"
- y="0"
- x="0 7.6199999 10.956 17.256001"
- style="font-size:12px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">Size</tspan>
- </text>
- </g>
- <path
- id="path6447"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,3888.01 4463.98,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6449"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 5183.98,431.988 0,3456.022"
- inkscape:connector-curvature="0" />
- <path
- id="path6451"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,431.988 4463.98,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6453"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 720,431.988 0,3456.022"
- inkscape:connector-curvature="0" />
- <path
- id="path6455"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2693.75,2938.4 2418.24,0 0,877.621 -2418.24,0 0,-877.621 z"
- inkscape:connector-curvature="0" />
- <path
- id="path6457"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2693.75,2938.4 2418.24,0 0,877.621 -2418.24,0 0,-877.621 z"
- inkscape:connector-curvature="0" />
- <path
- id="path6459"
- style="fill:none;stroke:#0000ff;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2794.57,3701.76 201.6,0"
- inkscape:connector-curvature="0" />
- <g
- id="g6461">
- <g
- clip-path="url(#clipPath6465)"
- id="g6463">
- <path
- id="path6469"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2794.57,3671.76 c 7.93,0 15.59,3.16 21.21,8.79 5.63,5.62 8.79,13.28 8.79,21.21 0,7.97 -3.16,15.58 -8.79,21.21 -5.62,5.62 -13.28,8.79 -21.21,8.79 -7.97,0 -15.59,-3.17 -21.21,-8.79 -5.63,-5.63 -8.79,-13.24 -8.79,-21.21 0,-7.93 3.16,-15.59 8.79,-21.21 5.62,-5.63 13.24,-8.79 21.21,-8.79"
- inkscape:connector-curvature="0" />
- <path
- id="path6471"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2794.57,3671.76 c 7.93,0 15.59,3.16 21.21,8.79 5.63,5.62 8.79,13.28 8.79,21.21 0,7.97 -3.16,15.58 -8.79,21.21 -5.62,5.62 -13.28,8.79 -21.21,8.79 -7.97,0 -15.59,-3.17 -21.21,-8.79 -5.63,-5.63 -8.79,-13.24 -8.79,-21.21 0,-7.93 3.16,-15.59 8.79,-21.21 5.62,-5.63 13.24,-8.79 21.21,-8.79 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g6473">
- <g
- clip-path="url(#clipPath6477)"
- id="g6475">
- <path
- id="path6481"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2996.17,3671.76 c 7.93,0 15.59,3.16 21.21,8.79 5.63,5.62 8.79,13.28 8.79,21.21 0,7.97 -3.16,15.58 -8.79,21.21 -5.62,5.62 -13.28,8.79 -21.21,8.79 -7.97,0 -15.58,-3.17 -21.21,-8.79 -5.62,-5.63 -8.79,-13.24 -8.79,-21.21 0,-7.93 3.17,-15.59 8.79,-21.21 5.63,-5.63 13.24,-8.79 21.21,-8.79"
- inkscape:connector-curvature="0" />
- <path
- id="path6483"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2996.17,3671.76 c 7.93,0 15.59,3.16 21.21,8.79 5.63,5.62 8.79,13.28 8.79,21.21 0,7.97 -3.16,15.58 -8.79,21.21 -5.62,5.62 -13.28,8.79 -21.21,8.79 -7.97,0 -15.58,-3.17 -21.21,-8.79 -5.62,-5.63 -8.79,-13.24 -8.79,-21.21 0,-7.93 3.17,-15.59 8.79,-21.21 5.63,-5.63 13.24,-8.79 21.21,-8.79 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- id="path6491"
- style="fill:none;stroke:#008000;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2794.57,3490.39 201.6,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6493"
- style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2794.57,3460.39 30,60 -60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6495"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2794.57,3460.39 30,60 -60,0 30,-60 z"
- inkscape:connector-curvature="0" />
- <path
- id="path6497"
- style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2996.17,3460.39 30,60 -60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6499"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2996.17,3460.39 30,60 -60,0 30,-60 z"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6501">
- <text
- id="text6503"
- transform="matrix(1,0,0,-1,315.455,343.999)">
- <tspan
- id="tspan6505"
- sodipodi:role="line"
- y="0"
- x="0 9.1295996 18.259199 36.864101 44.366501 48.369701 62.395302 71.539299 75.542503 79.5457 87.465698 96.321701"
- style="font-size:14.39999962px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">numsimplices</tspan>
- </text>
- </g>
- <path
- id="path6507"
- style="fill:none;stroke:#ff0000;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2794.57,3282.93 201.6,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6509"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2764.57,3252.93 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path6511"
- style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2764.57,3252.93 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path6513"
- style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2966.17,3252.93 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <path
- id="path6515"
- style="fill:none;stroke:#ff0000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2966.17,3252.93 60,60 m -60,0 60,-60"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6517">
- <text
- id="text6519"
- transform="matrix(1,0,0,-1,315.455,323.252)">
- <tspan
- id="tspan6521"
- sodipodi:role="line"
- y="0"
- x="0 9.1295996 18.259199 32.284801 36.863998 46.007999 50.0112 58.824001 66.744003 75.081596 83.937599 89.856003"
- style="font-size:14.39999962px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">num blockers</tspan>
- </text>
- </g>
- <path
- id="path6523"
- style="fill:none;stroke:#00bfbf;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2794.57,3075.47 201.6,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6525"
- style="fill:#00bfbf;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2794.57,3105.47 -30,-60 60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6527"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2794.57,3105.47 -30,-60 60,0 -30,60 z"
- inkscape:connector-curvature="0" />
- <path
- id="path6529"
- style="fill:#00bfbf;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 2996.17,3105.47 -30,-60 60,0"
- inkscape:connector-curvature="0" />
- <path
- id="path6531"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
- d="m 2996.17,3105.47 -30,-60 60,0 -30,60 z"
- inkscape:connector-curvature="0" />
- <g
- transform="scale(10,10)"
- id="g6533">
- <text
- id="text6535"
- transform="matrix(1,0,0,-1,315.455,302.505)">
- <tspan
- id="tspan6537"
- sodipodi:role="line"
- y="0"
- x="0 9.1295996 18.259199 32.284801 36.863998 45.993599 54.8064 63.936001 68.515198 77.659203 86.472 95.615997 104.4432 113.5872 117.5904 126.4464 131.0256 140.21297 144.21616 153.02896 160.94896 169.28656 178.14256 184.06096"
- style="font-size:14.39999962px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans">num non popable blockers</tspan>
- </text>
- </g>
- <text
- style="font-size:120px"
- y="-3655.6985"
- x="3153.7925"
- id="text6487-0"
- transform="scale(1,-1)">
- <tspan
- id="tspan6489-8"
- sodipodi:role="line"
- style="font-size:144px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVuSans"
- x="3153.7925"
- y="-3655.6985">size of the graph</tspan>
- </text>
- </g>
- </g>
- </g>
-</svg>
diff --git a/doc/Skeleton_blocker/blockers_curve.png b/doc/Skeleton_blocker/blockers_curve.png
deleted file mode 100644
index 58863ece..00000000
--- a/doc/Skeleton_blocker/blockers_curve.png
+++ /dev/null
Binary files differ
diff --git a/doc/Skeleton_blocker/ds_representation.png b/doc/Skeleton_blocker/ds_representation.png
deleted file mode 100644
index 8136621a..00000000
--- a/doc/Skeleton_blocker/ds_representation.png
+++ /dev/null
Binary files differ
diff --git a/doc/Skeleton_blocker/ds_representation.svg b/doc/Skeleton_blocker/ds_representation.svg
deleted file mode 100644
index 981b2874..00000000
--- a/doc/Skeleton_blocker/ds_representation.svg
+++ /dev/null
@@ -1,470 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="434.50912"
- height="113.23431"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="ds_representation.svg"
- inkscape:export-filename="/home/dsalinas/Documents/CodeSVN/gudhi_depot/trunk/src/Skeleton_blocker/doc/ds_representation.png"
- inkscape:export-xdpi="164.24294"
- inkscape:export-ydpi="164.24294">
- <defs
- id="defs4">
- <inkscape:path-effect
- is_visible="true"
- id="path-effect4610"
- effect="spiro" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="3.959798"
- inkscape:cx="393.78845"
- inkscape:cy="51.962328"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="2560"
- inkscape:window-height="1523"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(775.10425,-319.57102)">
- <path
- id="path4432"
- d="m -564.66566,372.78112 -22.51977,46.5698 62.69739,-31.00174 z"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;display:inline"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- d="m -553.17597,345.78586 c 0.75762,1.51523 32.57742,14.89975 32.57742,14.89975"
- id="path3125"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -519.08333,361.44322 31.81981,11.8693"
- id="path3127"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-7"
- style="fill:none;stroke:none"
- d="m -554.02684,345.73906 29.32107,42.08799 7.736,-39.88821"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-1"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -523.3168,376.08402 34.2525,-51.7575"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -564.28765,372.5549 47.47717,-24.4962 -7.82868,39.90103 37.1231,-14.89975 -29.29442,-25.25382 -37.37564,-2.27284 29.54696,42.42641"
- id="path3121"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-691.68016,428.25063)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-669.37366,382.75481)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-4"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-630.26652,397.04052)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-1"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-659.37366,354.89767)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-42"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-622.23081,358.64766)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-3"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-593.12367,383.11196)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-7"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-1-1"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -378.67395,371.32852 34.2525,-51.7575"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -413.6327,367.61658 37.56127,-20.2544 c 0,0 -4.64286,29.64285 -5.35714,31.42857 -0.71429,1.78571 -32.20413,-11.17417 -32.20413,-11.17417 z"
- id="path4091"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccsc" />
- <g
- id="g3909">
- <path
- sodipodi:nodetypes="ccc"
- d="m -409.13145,340.85729 28.31093,41.70918 8.87241,-39.38313"
- style="fill:none;fill-opacity:0.41568603999999998;fill-rule:nonzero;stroke:none;opacity:0.13580247"
- id="path14-3-5"
- inkscape:connector-curvature="0" />
- <path
- sodipodi:nodetypes="cccc"
- inkscape:connector-curvature="0"
- style="opacity:0.13580244;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;display:inline"
- d="m -420.02281,368.02562 -22.51977,46.5698 62.69739,-31.00174 z"
- id="path4432-5" />
- <path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path3125-0"
- d="m -408.53312,341.03036 c 0.75762,1.51523 32.57742,14.89975 32.57742,14.89975"
- style="opacity:0.13580244;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0" />
- <path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path3127-1"
- d="m -374.44048,356.68772 31.81981,11.8693"
- style="opacity:0.13580244;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccccc"
- inkscape:connector-curvature="0"
- id="path3121-0"
- d="m -419.6448,367.7994 47.47717,-24.4962 -7.82868,39.90103 37.1231,-14.89975 -29.29442,-25.25382 -37.37564,-2.27284 29.54696,42.42641"
- style="opacity:0.13580244;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:type="arc"
- style="opacity:0.13580244;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- id="path4584-36"
- sodipodi:cx="93.972473"
- sodipodi:cy="113.9189"
- sodipodi:rx="3.4171808"
- sodipodi:ry="3.4171808"
- d="m 97.389654,113.9189 a 3.4171808,3.4171808 0 1 1 -6.834362,0 3.4171808,3.4171808 0 1 1 6.834362,0 z"
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-547.03731,423.49513)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.13580244;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- id="path4584-4-5"
- sodipodi:cx="93.972473"
- sodipodi:cy="113.9189"
- sodipodi:rx="3.4171808"
- sodipodi:ry="3.4171808"
- d="m 97.389654,113.9189 a 3.4171808,3.4171808 0 1 1 -6.834362,0 3.4171808,3.4171808 0 1 1 6.834362,0 z"
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-524.73081,377.99931)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.13580244;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- id="path4584-1-6"
- sodipodi:cx="93.972473"
- sodipodi:cy="113.9189"
- sodipodi:rx="3.4171808"
- sodipodi:ry="3.4171808"
- d="m 97.389654,113.9189 a 3.4171808,3.4171808 0 1 1 -6.834362,0 3.4171808,3.4171808 0 1 1 6.834362,0 z"
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-485.62367,392.28502)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.13580244;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- id="path4584-42-0"
- sodipodi:cx="93.972473"
- sodipodi:cy="113.9189"
- sodipodi:rx="3.4171808"
- sodipodi:ry="3.4171808"
- d="m 97.389654,113.9189 a 3.4171808,3.4171808 0 1 1 -6.834362,0 3.4171808,3.4171808 0 1 1 6.834362,0 z"
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-514.73081,350.14217)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.13580244;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- id="path4584-3-9"
- sodipodi:cx="93.972473"
- sodipodi:cy="113.9189"
- sodipodi:rx="3.4171808"
- sodipodi:ry="3.4171808"
- d="m 97.389654,113.9189 a 3.4171808,3.4171808 0 1 1 -6.834362,0 3.4171808,3.4171808 0 1 1 6.834362,0 z"
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-477.58796,353.89216)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.13580244;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- id="path4584-7-0"
- sodipodi:cx="93.972473"
- sodipodi:cy="113.9189"
- sodipodi:rx="3.4171808"
- sodipodi:ry="3.4171808"
- d="m 97.389654,113.9189 a 3.4171808,3.4171808 0 1 1 -6.834362,0 3.4171808,3.4171808 0 1 1 6.834362,0 z"
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-448.48082,378.35646)" />
- </g>
- <path
- style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -370.55894,347.61837 23.42349,19.75458 c 0,0 -28.39286,9.99999 -29.10714,11.78571 -0.71429,1.78571 5.68365,-31.54029 5.68365,-31.54029 z"
- id="path4091-7"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccsc" />
- <path
- id="path4432-6"
- d="m -750.37996,370.16849 -22.51977,46.5698 62.69739,-31.00174 z"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;display:inline"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0"
- d="m -738.89027,343.17323 c 0.75762,1.51523 32.57742,14.89975 32.57742,14.89975"
- id="path3125-9"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -704.79763,358.83059 31.81981,11.8693"
- id="path3127-2"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-12"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -750.60027,369.89548 -21.18655,45.87606 60.51647,-29.53414"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-7-8"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -739.74114,343.12643 29.32107,42.08799 7.736,-39.88821"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-8-0"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -702.3655,345.90435 -2.625,13.17237 29.83309,9.73554"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-2-70"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -704.89087,358.7838 -5.27665,26.68316 35.26265,-15.39201"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-3-2"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -739.4886,343.00016 28.31093,41.70918 8.87241,-39.38313"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-1-2"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -709.0311,373.47139 34.2525,-51.7575"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -750.00195,369.94227 47.47717,-24.4962 -7.82868,39.90103 37.1231,-14.89975 -29.29442,-25.25382 -37.37564,-2.27284 29.54696,42.42641"
- id="path3121-6"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-877.39446,425.638)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-79"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-855.08796,380.14218)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-4-9"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-815.98082,394.42789)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-1-61"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-845.08796,352.28504)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-42-8"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-807.94511,356.03503)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-3-5"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-778.83797,380.49933)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-7-1"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="-718.37708"
- y="430.86295"
- id="text6164-6-56-2"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="164.24294"
- inkscape:export-ydpi="164.24294"
- inkscape:export-filename="/home/dsalinas/Documents/CodeSVN/gudhi_depot/trunk/src/Skeleton_blocker/doc/ds_representation.png"><tspan
- sodipodi:role="line"
- id="tspan6166-1-0-6"
- x="-718.37708"
- y="430.86295">Simplicial complex</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="-462.22809"
- y="430.86295"
- id="text6164-6-56-2-3"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="164.24294"
- inkscape:export-ydpi="164.24294"
- inkscape:export-filename="/home/dsalinas/Documents/CodeSVN/gudhi_depot/trunk/src/Skeleton_blocker/doc/ds_representation.png"><tspan
- sodipodi:role="line"
- id="tspan6166-1-0-6-9"
- x="-462.22809"
- y="430.86295">Encoding</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="-535.67126"
- y="334.7963"
- id="text6164-6-56-2-3-0"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan6166-1-0-6-9-9"
- x="-535.67126"
- y="334.7963">Graph</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="-389.50018"
- y="335.10443"
- id="text6164-6-56-2-3-0-3"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan6166-1-0-6-9-9-1"
- x="-389.50018"
- y="335.10443">Blockers</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="-470.03345"
- y="335.56711"
- id="text6164-6-56-2-3-0-36"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan6166-1-0-6-9-9-3"
- x="-470.03345"
- y="335.56711">+</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="-618.52417"
- y="382.18915"
- id="text6164-6-56-2-1"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="164.24294"
- inkscape:export-ydpi="164.24294"
- inkscape:export-filename="/home/dsalinas/Documents/CodeSVN/gudhi_depot/trunk/src/Skeleton_blocker/doc/ds_representation.png"><tspan
- sodipodi:role="line"
- id="tspan6166-1-0-6-4"
- x="-618.52417"
- y="382.18915">=</tspan></text>
- </g>
-</svg>
diff --git a/doc/Skeleton_blocker/ds_scheme.svg b/doc/Skeleton_blocker/ds_scheme.svg
deleted file mode 100644
index f13a6213..00000000
--- a/doc/Skeleton_blocker/ds_scheme.svg
+++ /dev/null
@@ -1,477 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="434.50912"
- height="113.23431"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="ds_scheme.svg"
- inkscape:export-filename="/home/dsalinas/Documents/CodeSVN/gudhi_depot/trunk/src/Skeleton_blocker/doc/ds_representation.png"
- inkscape:export-xdpi="164.24294"
- inkscape:export-ydpi="164.24294">
- <defs
- id="defs4">
- <inkscape:path-effect
- is_visible="true"
- id="path-effect4610"
- effect="spiro" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="2.8"
- inkscape:cx="110.77021"
- inkscape:cy="32.991372"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="2560"
- inkscape:window-height="1523"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(775.10425,-319.57102)">
- <path
- id="path4432"
- d="m -564.66566,372.78112 -22.51977,46.5698 62.69739,-31.00174 z"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;display:inline"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- d="m -553.17597,345.78586 c 0.75762,1.51523 32.57742,14.89975 32.57742,14.89975"
- id="path3125"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -519.08333,361.44322 31.81981,11.8693"
- id="path3127"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-7"
- style="fill:none;stroke:none"
- d="m -554.02684,345.73906 29.32107,42.08799 7.736,-39.88821"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-1"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -523.3168,376.08402 34.2525,-51.7575"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -564.28765,372.5549 47.47717,-24.4962 -7.82868,39.90103 37.1231,-14.89975 -29.29442,-25.25382 -37.37564,-2.27284 29.54696,42.42641"
- id="path3121"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-691.68016,428.25063)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-669.37366,382.75481)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-4"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-630.26652,397.04052)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-1"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-659.37366,354.89767)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-42"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-622.23081,358.64766)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-3"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-593.12367,383.11196)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-7"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- id="path4432-5"
- d="m -420.02281,368.02562 -22.51977,46.5698 62.69739,-31.00174 z"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;display:inline"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0"
- d="m -408.53312,341.03036 c 0.75762,1.51523 32.57742,14.89975 32.57742,14.89975"
- id="path3125-0"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -374.44048,356.68772 31.81981,11.8693"
- id="path3127-1"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-79"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -420.24312,367.75261 -21.18655,45.87606 60.51647,-29.53414"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-7-1"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -409.38399,340.98356 29.32107,42.08799 7.736,-39.88821"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-8-6"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -372.00835,343.76148 -2.625,13.17237 29.83309,9.73554"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-2-7"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -374.53372,356.64093 -5.27665,26.68316 35.26265,-15.39201"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-3-5"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -409.13145,340.85729 28.31093,41.70918 8.87241,-39.38313"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-1-1"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -378.67395,371.32852 34.2525,-51.7575"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -419.6448,367.7994 47.47717,-24.4962 -7.82868,39.90103 37.1231,-14.89975 -29.29442,-25.25382 -37.37564,-2.27284 29.54696,42.42641"
- id="path3121-0"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-547.03731,423.49513)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-36"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-524.73081,377.99931)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-4-5"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-485.62367,392.28502)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-1-6"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-514.73081,350.14217)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-42-0"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-477.58796,353.89216)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-3-9"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-448.48082,378.35646)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-7-0"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -413.6327,367.61658 37.56127,-20.2544 c 0,0 -4.64286,29.64285 -5.35714,31.42857 -0.71429,1.78571 -32.20413,-11.17417 -32.20413,-11.17417 z"
- id="path4091"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccsc" />
- <path
- style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -370.55894,347.61837 23.42349,19.75458 c 0,0 -28.39286,9.99999 -29.10714,11.78571 -0.71429,1.78571 5.68365,-31.54029 5.68365,-31.54029 z"
- id="path4091-7"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccsc" />
- <path
- id="path4432-6"
- d="m -750.37996,370.16849 -22.51977,46.5698 62.69739,-31.00174 z"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;display:inline"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0"
- d="m -738.89027,343.17323 c 0.75762,1.51523 32.57742,14.89975 32.57742,14.89975"
- id="path3125-9"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -704.79763,358.83059 31.81981,11.8693"
- id="path3127-2"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-12"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -750.60027,369.89548 -21.18655,45.87606 60.51647,-29.53414"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-7-8"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -739.74114,343.12643 29.32107,42.08799 7.736,-39.88821"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-8-0"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -702.3655,345.90435 -2.625,13.17237 29.83309,9.73554"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-2-70"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -704.89087,358.7838 -5.27665,26.68316 35.26265,-15.39201"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-3-2"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -739.4886,343.00016 28.31093,41.70918 8.87241,-39.38313"
- sodipodi:nodetypes="ccc" />
- <path
- inkscape:connector-curvature="0"
- id="path14-1-2"
- style="fill:#575e9c;fill-opacity:0.41568604;fill-rule:nonzero;stroke:none"
- d="m -709.0311,373.47139 34.2525,-51.7575"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -750.00195,369.94227 47.47717,-24.4962 -7.82868,39.90103 37.1231,-14.89975 -29.29442,-25.25382 -37.37564,-2.27284 29.54696,42.42641"
- id="path3121-6"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-877.39446,425.638)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-79"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-855.08796,380.14218)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-4-9"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-815.98082,394.42789)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-1-61"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-845.08796,352.28504)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-42-8"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-807.94511,356.03503)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-3-5"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.39947101,-0.59295401,0.59295401,0.39947101,-778.83797,380.49933)"
- d="m 97.389654,113.9189 c 0,1.88726 -1.529924,3.41718 -3.417181,3.41718 -1.887257,0 -3.417181,-1.52992 -3.417181,-3.41718 0,-1.88726 1.529924,-3.41718 3.417181,-3.41718 1.887257,0 3.417181,1.52992 3.417181,3.41718 z"
- sodipodi:ry="3.4171808"
- sodipodi:rx="3.4171808"
- sodipodi:cy="113.9189"
- sodipodi:cx="93.972473"
- id="path4584-7-1"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99118668;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- sodipodi:type="arc" />
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="-718.37708"
- y="430.86295"
- id="text6164-6-56-2"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="164.24294"
- inkscape:export-ydpi="164.24294"
- inkscape:export-filename="/home/dsalinas/Documents/CodeSVN/gudhi_depot/trunk/src/Skeleton_blocker/doc/ds_representation.png"><tspan
- sodipodi:role="line"
- id="tspan6166-1-0-6"
- x="-718.37708"
- y="430.86295">Simplicial complex</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="-462.22809"
- y="430.86295"
- id="text6164-6-56-2-3"
- sodipodi:linespacing="125%"
- inkscape:export-xdpi="164.24294"
- inkscape:export-ydpi="164.24294"
- inkscape:export-filename="/home/dsalinas/Documents/CodeSVN/gudhi_depot/trunk/src/Skeleton_blocker/doc/ds_representation.png"><tspan
- sodipodi:role="line"
- id="tspan6166-1-0-6-9"
- x="-462.22809"
- y="430.86295">Encoding</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="-535.67126"
- y="334.7963"
- id="text6164-6-56-2-3-0"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan6166-1-0-6-9-9"
- x="-535.67126"
- y="334.7963">Graph</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="-389.50018"
- y="335.10443"
- id="text6164-6-56-2-3-0-3"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan6166-1-0-6-9-9-1"
- x="-389.50018"
- y="335.10443">Blockers</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:9px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman,'"
- x="-470.03345"
- y="335.56711"
- id="text6164-6-56-2-3-0-36"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan6166-1-0-6-9-9-3"
- x="-470.03345"
- y="335.56711">+</tspan></text>
- </g>
-</svg>
diff --git a/doc/Skeleton_blocker/sphere_contraction.png b/doc/Skeleton_blocker/sphere_contraction.png
deleted file mode 100644
index 502f73f7..00000000
--- a/doc/Skeleton_blocker/sphere_contraction.png
+++ /dev/null
Binary files differ
diff --git a/doc/Spatial_searching/Intro_spatial_searching.h b/doc/Spatial_searching/Intro_spatial_searching.h
deleted file mode 100644
index f387ab2f..00000000
--- a/doc/Spatial_searching/Intro_spatial_searching.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clement Jamin
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef DOC_SPATIAL_SEARCHING_INTRO_SPATIAL_SEARCHING_H_
-#define DOC_SPATIAL_SEARCHING_INTRO_SPATIAL_SEARCHING_H_
-
-// needs namespaces for Doxygen to link on classes
-namespace Gudhi {
-namespace spatial_searching {
-
-/** \defgroup spatial_searching Spatial_searching
- *
- * \author Cl&eacute;ment Jamin
- *
- * @{
- *
- * \section introduction Introduction
- *
- * This Gudhi component is a wrapper around
- * <a target="_blank" href="http://doc.cgal.org/latest/Spatial_searching/index.html">CGAL dD spatial searching algorithms</a>.
- * It provides a simplified API to perform (approximate) neighbor searches. Contrary to CGAL default behavior, the tree
- * does not store the points themselves, but stores indices.
- *
- * For more details about the data structure or the algorithms, or for more advanced usages, reading
- * <a target="_blank" href="http://doc.cgal.org/latest/Spatial_searching/index.html">CGAL documentation</a>
- * is highly recommended.
- *
- * \section spatial_searching_examples Example
- *
- * This example generates 500 random points, then performs all-near-neighbors searches, and queries for nearest and furthest neighbors using different methods.
- *
- * \include Spatial_searching/example_spatial_searching.cpp
- *
- */
-/** @} */ // end defgroup spatial_searching
-
-} // namespace spatial_searching
-
-} // namespace Gudhi
-
-#endif // DOC_SPATIAL_SEARCHING_INTRO_SPATIAL_SEARCHING_H_
diff --git a/doc/Subsampling/Intro_subsampling.h b/doc/Subsampling/Intro_subsampling.h
deleted file mode 100644
index d88f6bf6..00000000
--- a/doc/Subsampling/Intro_subsampling.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clement Jamin
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef DOC_SUBSAMPLING_INTRO_SUBSAMPLING_H_
-#define DOC_SUBSAMPLING_INTRO_SUBSAMPLING_H_
-
-// needs namespace for Doxygen to link on classes
-namespace Gudhi {
-// needs namespace for Doxygen to link on classes
-namespace subsampling {
-
-/** \defgroup subsampling Subsampling
- *
- * \author Cl&eacute;ment Jamin, Siargey Kachanovich
- *
- * @{
- *
- * \section subsamplingintroduction Introduction
- *
- * This Gudhi component offers methods to subsample a set of points.
- *
- * \section sparsifyexamples Example: sparsify_point_set
- *
- * This example outputs a subset of the input points so that the
- * squared distance between any two points
- * is greater than or equal to 0.4.
- *
- * \include Subsampling/example_sparsify_point_set.cpp
- *
- * \section farthestpointexamples Example: choose_n_farthest_points
- *
- * This example outputs a subset of 100 points obtained by Gonz&aacute;lez algorithm,
- * starting with a random point.
- *
- * \include Subsampling/example_choose_n_farthest_points.cpp
- *
- * \section randompointexamples Example: pick_n_random_points
- *
- * This example outputs a subset of 100 points picked randomly.
- *
- * \include Subsampling/example_pick_n_random_points.cpp
- */
-/** @} */ // end defgroup subsampling
-
-} // namespace subsampling
-
-} // namespace Gudhi
-
-#endif // DOC_SUBSAMPLING_INTRO_SUBSAMPLING_H_
diff --git a/doc/Tangential_complex/COPYRIGHT b/doc/Tangential_complex/COPYRIGHT
deleted file mode 100644
index f9f92471..00000000
--- a/doc/Tangential_complex/COPYRIGHT
+++ /dev/null
@@ -1,19 +0,0 @@
-The files of this directory are part of the Gudhi Library. The Gudhi library
-(Geometric Understanding in Higher Dimensions) is a generic C++ library for
-computational topology.
-
-Author(s): Clement Jamin
-
-Copyright (C) 2015 Inria
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/doc/Tangential_complex/Intro_tangential_complex.h b/doc/Tangential_complex/Intro_tangential_complex.h
deleted file mode 100644
index f4fc8ac7..00000000
--- a/doc/Tangential_complex/Intro_tangential_complex.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clement Jamin
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef DOC_TANGENTIAL_COMPLEX_INTRO_TANGENTIAL_COMPLEX_H_
-#define DOC_TANGENTIAL_COMPLEX_INTRO_TANGENTIAL_COMPLEX_H_
-
-// needs namespaces for Doxygen to link on classes
-namespace Gudhi {
-namespace tangential_complex {
-
-/** \defgroup tangential_complex Tangential complex
-
-\author Cl&eacute;ment Jamin
-
-@{
-
-\section tangentialdefinition Definition
-
-A Tangential Delaunay complex is a <a target="_blank" href="https://en.wikipedia.org/wiki/Simplicial_complex">simplicial complex</a>
-designed to reconstruct a \f$k\f$-dimensional smooth manifold embedded in \f$d\f$-dimensional Euclidean space.
-The input is a point sample coming from an unknown manifold, which means that the points lie close to a structure of "small" intrinsic dimension.
-The running time depends only linearly on the extrinsic dimension \f$ d \f$
-and exponentially on the intrinsic dimension \f$ k \f$.
-
-An extensive description of the Tangential complex can be found in \cite tangentialcomplex2014.
-
-\subsection whatisthetc What is a Tangential Complex?
-
-Let us start with the description of the Tangential complex of a simple example, with \f$ k=1 \f$ and \f$ d=2 \f$.
-The input data is 4 points \f$ P \f$ located on a curve embedded in 2D.
-\image html "tc_example_01.png" "The input"
-For each point \f$ p \f$, estimate its tangent subspace \f$ T_p \f$ (e.g. using PCA).
-\image html "tc_example_02.png" "The estimated normals"
-Let us add the Voronoi diagram of the points in orange. For each point \f$ p \f$, construct its star in the Delaunay triangulation of \f$ P \f$ restricted to \f$ T_p \f$.
-\image html "tc_example_03.png" "The Voronoi diagram"
-The Tangential Delaunay complex is the union of those stars.
-
-In practice, neither the ambient Voronoi diagram nor the ambient Delaunay triangulation is computed.
-Instead, local \f$ k \f$-dimensional regular triangulations are computed with a limited number of points as we only need the star of each point.
-More details can be found in \cite tangentialcomplex2014.
-
-\subsection inconsistencies Inconsistencies
-
-Inconsistencies between the stars can occur.
-An inconsistency occurs when a simplex is not in the star of all its vertices.
-
-Let us take the same example.
-\image html "tc_example_07_before.png" "Before"
-Let us slightly move the tangent subspace \f$ T_q \f$
-\image html "tc_example_07_after.png" "After"
-Now, the star of \f$ Q \f$ contains \f$ QP \f$, but the star of \f$ P \f$ does not contain \f$ QP \f$. We have an inconsistency.
-\image html "tc_example_08.png" "After"
-
-One way to solve inconsistencies is to randomly perturb the positions of the points involved in an inconsistency.
-In the current implementation, this perturbation is done in the tangent subspace of each point.
-The maximum perturbation radius is given as a parameter to the constructor.
-
-In most cases, we recommend to provide a point set where the minimum distance between any two points
-is not too small. This can be achieved using the functions provided by the Subsampling module. Then, a good value to start with for
-the maximum perturbation radius would be around half the minimum distance between any two points.
-The \ref example_with_perturb below shows an example of such a process.
-
-In most cases, this process is able to dramatically reduce the number of inconsistencies, but is not guaranteed to succeed.
-
-\subsection output Output
-
-The result of the computation is exported as a `Simplex_tree`. It is the union of the stars of all the input points.
-A vertex in the Simplex Tree is the index of the point in the range provided by the user.
-The point corresponding to a vertex can also be obtained through the `Tangential_complex::get_point` function.
-Note that even if the positions of the points are perturbed, their original positions are kept (e.g. `Tangential_complex::get_point` returns the original position of the point).
-
-The result can be obtained after the computation of the Tangential complex itself and/or after the perturbation process.
-
-\section simple_example Simple example
-
-This example builds the Tangential complex of point set.
-Note that the dimension of the kernel here is dynamic, which is slower, but more flexible:
-the intrinsic and ambient dimensions does not have to be known at compile-time.
-
-\include Tangential_complex/example_basic.cpp
-
-\section example_with_perturb Example with perturbation
-
-This example builds the Tangential complex of a point set, then tries to solve inconsistencies
-by perturbing the positions of points involved in inconsistent simplices.
-Note that the dimension of the kernel here is static, which is the best choice when the
-dimensions are known at compile-time.
-
-\include Tangential_complex/example_with_perturb.cpp
-
- */
-/** @} */ // end defgroup tangential_complex
-
-} // namespace tangential_complex
-
-} // namespace Gudhi
-
-#endif // DOC_TANGENTIAL_COMPLEX_INTRO_TANGENTIAL_COMPLEX_H_
diff --git a/doc/Tangential_complex/tc_example_01.png b/doc/Tangential_complex/tc_example_01.png
deleted file mode 100644
index 8afe6198..00000000
--- a/doc/Tangential_complex/tc_example_01.png
+++ /dev/null
Binary files differ
diff --git a/doc/Tangential_complex/tc_example_02.png b/doc/Tangential_complex/tc_example_02.png
deleted file mode 100644
index 01591c1d..00000000
--- a/doc/Tangential_complex/tc_example_02.png
+++ /dev/null
Binary files differ
diff --git a/doc/Tangential_complex/tc_example_03.png b/doc/Tangential_complex/tc_example_03.png
deleted file mode 100644
index 5de04e01..00000000
--- a/doc/Tangential_complex/tc_example_03.png
+++ /dev/null
Binary files differ
diff --git a/doc/Tangential_complex/tc_example_05.png b/doc/Tangential_complex/tc_example_05.png
deleted file mode 100644
index fdd5e5fa..00000000
--- a/doc/Tangential_complex/tc_example_05.png
+++ /dev/null
Binary files differ
diff --git a/doc/Tangential_complex/tc_example_06.png b/doc/Tangential_complex/tc_example_06.png
deleted file mode 100644
index 31ad3c43..00000000
--- a/doc/Tangential_complex/tc_example_06.png
+++ /dev/null
Binary files differ
diff --git a/doc/Tangential_complex/tc_example_07.png b/doc/Tangential_complex/tc_example_07.png
deleted file mode 100644
index 47e34de7..00000000
--- a/doc/Tangential_complex/tc_example_07.png
+++ /dev/null
Binary files differ
diff --git a/doc/Tangential_complex/tc_example_07_after.png b/doc/Tangential_complex/tc_example_07_after.png
deleted file mode 100644
index 981350d2..00000000
--- a/doc/Tangential_complex/tc_example_07_after.png
+++ /dev/null
Binary files differ
diff --git a/doc/Tangential_complex/tc_example_07_before.png b/doc/Tangential_complex/tc_example_07_before.png
deleted file mode 100644
index ddc6bc7b..00000000
--- a/doc/Tangential_complex/tc_example_07_before.png
+++ /dev/null
Binary files differ
diff --git a/doc/Tangential_complex/tc_example_08.png b/doc/Tangential_complex/tc_example_08.png
deleted file mode 100644
index 119a87de..00000000
--- a/doc/Tangential_complex/tc_example_08.png
+++ /dev/null
Binary files differ
diff --git a/doc/Tangential_complex/tc_example_09.png b/doc/Tangential_complex/tc_example_09.png
deleted file mode 100644
index 31bac1e0..00000000
--- a/doc/Tangential_complex/tc_example_09.png
+++ /dev/null
Binary files differ
diff --git a/doc/Tangential_complex/tc_examples.png b/doc/Tangential_complex/tc_examples.png
deleted file mode 100644
index b6544afe..00000000
--- a/doc/Tangential_complex/tc_examples.png
+++ /dev/null
Binary files differ
diff --git a/doc/Witness_complex/COPYRIGHT b/doc/Witness_complex/COPYRIGHT
deleted file mode 100644
index 25a700cf..00000000
--- a/doc/Witness_complex/COPYRIGHT
+++ /dev/null
@@ -1,19 +0,0 @@
-The files of this directory are part of the Gudhi Library. The Gudhi library
-(Geometric Understanding in Higher Dimensions) is a generic C++ library for
-computational topology.
-
-Author(s): Siargey Kachanovich
-
-Copyright (C) 2015 Inria
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation, either version 3 of the License, or (at your option) any later
-version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/doc/Witness_complex/Witness_complex_doc.h b/doc/Witness_complex/Witness_complex_doc.h
deleted file mode 100644
index 62203054..00000000
--- a/doc/Witness_complex/Witness_complex_doc.h
+++ /dev/null
@@ -1,122 +0,0 @@
-#ifndef WITNESS_COMPLEX_DOC_H_
-#define WITNESS_COMPLEX_DOC_H_
-
-/**
- \defgroup witness_complex Witness complex
-
- \author Siargey Kachanovich
-
- \image html "Witness_complex_representation.png" "Witness complex representation"
-
- \section witnessdefinitions Definitions
-
- Witness complex is a simplicial complex defined on two sets of points in \f$\mathbb{R}^D\f$:
-
- \li \f$W\f$ set of **witnesses** and
- \li \f$L\f$ set of **landmarks**.
-
- Even though often the set of landmarks \f$L\f$ is a subset of the set of witnesses \f$ W\f$, it is not a requirement for the current implementation.
-
- Landmarks are the vertices of the simplicial complex
- and witnesses help to decide on which simplices are inserted via a predicate "is witnessed".
-
- De Silva and Carlsson in their paper \cite de2004topological differentiate **weak witnessing** and **strong witnessing**:
-
- - *weak*: \f$ \sigma \subset L \f$ is witnessed by \f$ w \in W\f$ if \f$ \forall l \in \sigma,\ \forall l' \in \mathbf{L \setminus \sigma},\ d(w,l) \leq d(w,l') \f$
- - *strong*: \f$ \sigma \subset L \f$ is witnessed by \f$ w \in W\f$ if \f$ \forall l \in \sigma,\ \forall l' \in \mathbf{L},\ d(w,l) \leq d(w,l') \f$
-
- where \f$ d(.,.) \f$ is a distance function.
-
- Both definitions can be relaxed by a real value \f$\alpha\f$:
-
- - *weak*: \f$ \sigma \subset L \f$ is \f$\alpha\f$-witnessed by \f$ w \in W\f$ if \f$ \forall l \in \sigma,\ \forall l' \in \mathbf{L \setminus \sigma},\ d(w,l)^2 \leq d(w,l')^2 + \alpha^2 \f$
- - *strong*: \f$ \sigma \subset L \f$ is \f$\alpha\f$-witnessed by \f$ w \in W\f$ if \f$ \forall l \in \sigma,\ \forall l' \in \mathbf{L},\ d(w,l)^2 \leq d(w,l')^2 + \alpha^2 \f$
-
- which leads to definitions of **weak relaxed witness complex** (or just relaxed witness complex for short) and **strong relaxed witness complex** respectively.
-
- \image html "swit.svg" "Strongly witnessed simplex"
-
- In particular case of 0-relaxation, weak complex corresponds to **witness complex** introduced in \cite de2004topological, whereas 0-relaxed strong witness complex consists of just vertices and is not very interesting.
- Hence for small relaxation weak version is preferable.
- However, to capture the homotopy type (for example using Gudhi::persistent_cohomology::Persistent_cohomology) it is often necessary to work with higher filtration values. In this case strong relaxed witness complex is faster to compute and offers similar results.
-
- \section witnessimplementation Implementation
-
- The two complexes described above are implemented in the corresponding classes
- - Gudhi::witness_complex::Witness_complex
- - Gudhi::witness_complex::Euclidean_witness_complex
- - Gudhi::witness_complex::Strong_witness_complex
- - Gudhi::witness_complex::Euclidean_strong_witness_complex
-
- The construction of the Euclidean versions of complexes follow the same scheme:
- 1. Construct a search tree on landmarks (for that Gudhi::spatial_searching::Kd_tree_search is used internally).
- 2. Construct lists of nearest landmarks for each witness (special structure Gudhi::witness_complex::Active_witness is used internally).
- 3. Construct the witness complex for nearest landmark lists.
-
- In the non-Euclidean classes, the lists of nearest landmarks are supposed to be given as input.
-
- The constructors take on the steps 1 and 2, while the function 'create_complex' executes the step 3.
-
- \section witnessexample1 Example 1: Constructing weak relaxed witness complex from an off file
-
- Let's start with a simple example, which reads an off point file and computes a weak witness complex.
-
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cpp}
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Euclidean_witness_complex.h>
-#include <gudhi/pick_n_random_points.h>
-#include <gudhi/Points_off_io.h>
-
-#include <CGAL/Epick_d.h>
-
-#include <string>
-#include <vector>
-
-typedef CGAL::Epick_d<CGAL::Dynamic_dimension_tag> K;
-typedef typename K::Point_d Point_d;
-typedef typename Gudhi::witness_complex::Euclidean_witness_complex<K> Witness_complex;
-typedef std::vector< Vertex_handle > typeVectorVertex;
-typedef std::vector< Point_d > Point_vector;
-
-int main(int argc, char * const argv[]) {
- std::string file_name = argv[1];
- int nbL = atoi(argv[2]), lim_dim = atoi(argv[4]);
- double alpha2 = atof(argv[3]);
- Gudhi::Simplex_tree<> simplex_tree;
-
- // Read the point file
- Point_vector point_vector, landmarks;
- Gudhi::Points_off_reader<Point_d> off_reader(file_name);
- point_vector = Point_vector(off_reader.get_point_cloud());
-
- // Choose landmarks (one can choose either of the two methods below)
- // Gudhi::subsampling::pick_n_random_points(point_vector, nbL, std::back_inserter(landmarks));
- Gudhi::subsampling::choose_n_farthest_points(K(), point_vector, nbL, Gudhi::subsampling::random_starting_point, std::back_inserter(landmarks));
-
- // Compute witness complex
- Witness_complex witness_complex(landmarks,
- point_vector);
-
- witness_complex.create_complex(simplex_tree, alpha2, lim_dim);
-}
-
-
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- \section witnessexample2 Example2: Computing persistence using strong relaxed witness complex
-
- Here is an example of constructing a strong witness complex filtration and computing persistence on it:
-
- \include Witness_complex/strong_witness_persistence.cpp
-
- \section witnessexample3 Example3: Computing relaxed witness complex persistence from a distance matrix
-
- In this example we compute the relaxed witness complex persistence from a given matrix of closest landmarks to each witness.
- Each landmark is given as the couple (index, distance).
-
- \include Witness_complex/example_nearest_landmark_table.cpp
-
- */
-
-#endif // WITNESS_COMPLEX_DOC_H_
diff --git a/doc/Witness_complex/Witness_complex_representation.ipe b/doc/Witness_complex/Witness_complex_representation.ipe
deleted file mode 100644
index f9c45d5d..00000000
--- a/doc/Witness_complex/Witness_complex_representation.ipe
+++ /dev/null
@@ -1,280 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE ipe SYSTEM "ipe.dtd">
-<ipe version="70107" creator="Ipe 7.1.10">
-<info created="D:20161010162425" modified="D:20161010162828"/>
-<ipestyle name="basic">
-<symbol name="arrow/arc(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/farc(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/ptarc(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/fptarc(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="mark/circle(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</symbol>
-<symbol name="mark/disk(sx)" transformations="translations">
-<path fill="sym-stroke">
-0.6 0 0 0.6 0 0 e
-</path>
-</symbol>
-<symbol name="mark/fdisk(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
-0.5 0 0 0.5 0 0 e
-</path>
-<path fill="sym-stroke" fillrule="eofill">
-0.6 0 0 0.6 0 0 e
-0.4 0 0 0.4 0 0 e
-</path>
-</group>
-</symbol>
-<symbol name="mark/box(sx)" transformations="translations">
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</symbol>
-<symbol name="mark/square(sx)" transformations="translations">
-<path fill="sym-stroke">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
-</path>
-</symbol>
-<symbol name="mark/fsquare(sfx)" transformations="translations">
-<group>
-<path fill="sym-fill">
--0.5 -0.5 m
-0.5 -0.5 l
-0.5 0.5 l
--0.5 0.5 l
-h
-</path>
-<path fill="sym-stroke" fillrule="eofill">
--0.6 -0.6 m
-0.6 -0.6 l
-0.6 0.6 l
--0.6 0.6 l
-h
--0.4 -0.4 m
-0.4 -0.4 l
-0.4 0.4 l
--0.4 0.4 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="mark/cross(sx)" transformations="translations">
-<group>
-<path fill="sym-stroke">
--0.43 -0.57 m
-0.57 0.43 l
-0.43 0.57 l
--0.57 -0.43 l
-h
-</path>
-<path fill="sym-stroke">
--0.43 0.57 m
-0.57 -0.43 l
-0.43 -0.57 l
--0.57 0.43 l
-h
-</path>
-</group>
-</symbol>
-<symbol name="arrow/fnormal(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/pointed(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/fpointed(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--0.8 0 l
--1 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/linear(spx)">
-<path stroke="sym-stroke" pen="sym-pen">
--1 0.333 m
-0 0 l
--1 -0.333 l
-</path>
-</symbol>
-<symbol name="arrow/fdouble(spx)">
-<path stroke="sym-stroke" fill="white" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<symbol name="arrow/double(spx)">
-<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
-0 0 m
--1 0.333 l
--1 -0.333 l
-h
--1 0 m
--2 0.333 l
--2 -0.333 l
-h
-</path>
-</symbol>
-<pen name="heavier" value="0.8"/>
-<pen name="fat" value="1.2"/>
-<pen name="ultrafat" value="2"/>
-<symbolsize name="large" value="5"/>
-<symbolsize name="small" value="2"/>
-<symbolsize name="tiny" value="1.1"/>
-<arrowsize name="large" value="10"/>
-<arrowsize name="small" value="5"/>
-<arrowsize name="tiny" value="3"/>
-<color name="red" value="1 0 0"/>
-<color name="green" value="0 1 0"/>
-<color name="blue" value="0 0 1"/>
-<color name="yellow" value="1 1 0"/>
-<color name="orange" value="1 0.647 0"/>
-<color name="gold" value="1 0.843 0"/>
-<color name="purple" value="0.627 0.125 0.941"/>
-<color name="gray" value="0.745"/>
-<color name="brown" value="0.647 0.165 0.165"/>
-<color name="navy" value="0 0 0.502"/>
-<color name="pink" value="1 0.753 0.796"/>
-<color name="seagreen" value="0.18 0.545 0.341"/>
-<color name="turquoise" value="0.251 0.878 0.816"/>
-<color name="violet" value="0.933 0.51 0.933"/>
-<color name="darkblue" value="0 0 0.545"/>
-<color name="darkcyan" value="0 0.545 0.545"/>
-<color name="darkgray" value="0.663"/>
-<color name="darkgreen" value="0 0.392 0"/>
-<color name="darkmagenta" value="0.545 0 0.545"/>
-<color name="darkorange" value="1 0.549 0"/>
-<color name="darkred" value="0.545 0 0"/>
-<color name="lightblue" value="0.678 0.847 0.902"/>
-<color name="lightcyan" value="0.878 1 1"/>
-<color name="lightgray" value="0.827"/>
-<color name="lightgreen" value="0.565 0.933 0.565"/>
-<color name="lightyellow" value="1 1 0.878"/>
-<dashstyle name="dashed" value="[4] 0"/>
-<dashstyle name="dotted" value="[1 3] 0"/>
-<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>
-<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>
-<textsize name="large" value="\large"/>
-<textsize name="Large" value="\Large"/>
-<textsize name="LARGE" value="\LARGE"/>
-<textsize name="huge" value="\huge"/>
-<textsize name="Huge" value="\Huge"/>
-<textsize name="small" value="\small"/>
-<textsize name="footnote" value="\footnotesize"/>
-<textsize name="tiny" value="\tiny"/>
-<textstyle name="center" begin="\begin{center}" end="\end{center}"/>
-<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>
-<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>
-<gridsize name="4 pts" value="4"/>
-<gridsize name="8 pts (~3 mm)" value="8"/>
-<gridsize name="16 pts (~6 mm)" value="16"/>
-<gridsize name="32 pts (~12 mm)" value="32"/>
-<gridsize name="10 pts (~3.5 mm)" value="10"/>
-<gridsize name="20 pts (~7 mm)" value="20"/>
-<gridsize name="14 pts (~5 mm)" value="14"/>
-<gridsize name="28 pts (~10 mm)" value="28"/>
-<gridsize name="56 pts (~20 mm)" value="56"/>
-<anglesize name="90 deg" value="90"/>
-<anglesize name="60 deg" value="60"/>
-<anglesize name="45 deg" value="45"/>
-<anglesize name="30 deg" value="30"/>
-<anglesize name="22.5 deg" value="22.5"/>
-<opacity name="10%" value="0.1"/>
-<opacity name="30%" value="0.3"/>
-<opacity name="50%" value="0.5"/>
-<opacity name="75%" value="0.75"/>
-<tiling name="falling" angle="-60" step="4" width="1"/>
-<tiling name="rising" angle="30" step="4" width="1"/>
-</ipestyle>
-<page>
-<layer name="alpha"/>
-<view layers="alpha" active="alpha"/>
-<use layer="alpha" name="mark/fdisk(sfx)" pos="288 672" size="normal" stroke="darkblue" fill="white"/>
-<path stroke="darkblue">
-48.8262 0 0 48.8262 288 672 e
-</path>
-<text transformations="translations" pos="292 676" stroke="darkblue" type="label" width="6.559" height="4.289" depth="0" valign="baseline">$\omega$</text>
-<path stroke="black">
-284 720 m
-280 624 l
-268 648 l
-h
-</path>
-<use name="mark/fdisk(sfx)" pos="284 720" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="268 648" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="280 624" size="normal" stroke="black" fill="white"/>
-<text matrix="1 0 0 1 0 8" transformations="translations" pos="268 672" stroke="black" type="label" width="6.05" height="4.289" depth="0" valign="baseline">$\sigma$</text>
-<use name="mark/fdisk(sfx)" pos="344 672" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="356 716" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="364 628" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="244 708" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="196 632" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="200 696" size="normal" stroke="black" fill="white"/>
-<use name="mark/fdisk(sfx)" pos="168 716" size="normal" stroke="black" fill="white"/>
-</page>
-</ipe>
diff --git a/doc/Witness_complex/Witness_complex_representation.png b/doc/Witness_complex/Witness_complex_representation.png
deleted file mode 100644
index 16e0504e..00000000
--- a/doc/Witness_complex/Witness_complex_representation.png
+++ /dev/null
Binary files differ
diff --git a/doc/Witness_complex/bench_Cy8.png b/doc/Witness_complex/bench_Cy8.png
deleted file mode 100644
index d9045294..00000000
--- a/doc/Witness_complex/bench_Cy8.png
+++ /dev/null
Binary files differ
diff --git a/doc/Witness_complex/bench_sphere.png b/doc/Witness_complex/bench_sphere.png
deleted file mode 100644
index ba6bb381..00000000
--- a/doc/Witness_complex/bench_sphere.png
+++ /dev/null
Binary files differ
diff --git a/doc/Witness_complex/swit.svg b/doc/Witness_complex/swit.svg
deleted file mode 100644
index 6ffb5fff..00000000
--- a/doc/Witness_complex/swit.svg
+++ /dev/null
@@ -1,1303 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:ns0="http://www.iki.fi/pav/software/textext/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="113.73116mm"
- height="84.14254mm"
- viewBox="0 0 402.98441 298.14286"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="swit.svg">
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.98994949"
- inkscape:cx="402.72174"
- inkscape:cy="258.46971"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1366"
- inkscape:window-height="704"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0" />
- <defs
- id="defs4">
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend"
- style="overflow:visible"
- inkscape:isstock="true">
- <path
- inkscape:connector-curvature="0"
- id="path5009"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-8"
- style="overflow:visible"
- inkscape:isstock="true">
- <path
- inkscape:connector-curvature="0"
- id="path5009-5"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- </defs>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(-130.29351,-300.82484)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="148.57143"
- cy="449.89627"
- cx="338.71756"
- id="path4136"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 318.19805,571.02449 0,-94.95433 -64.64976,-92.42896 164.14979,-30.80966 42.4264,120.71323 -141.92643,3.03046 100.0051,-123.23861 z"
- id="path4301"
- inkscape:connector-curvature="0" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 318.70313,571.52957 -65.65992,-187.3833 206.5762,88.89343 z"
- id="path4303"
- inkscape:connector-curvature="0" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="450.05875"
- cx="338.13837"
- id="path4138"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <g
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- id="g4147"
- ns0:preamble="/home/siarzhuk/GitDrive/2015Gudhi/Aid/preamble.ini"
- ns0:text="$w$"
- transform="matrix(2.7020226,0,0,2.7020226,-261.85036,103.80999)"
- style="fill:#000080">
- <defs
- id="defs4149">
- <g
- id="g4151">
- <symbol
- id="textext-20f8880a-0"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4154"
- d=""
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-20f8880a-1"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4157"
- d="M 4.609375,-3.375 C 4.65625,-3.59375 4.75,-3.96875 4.75,-4.03125 c 0,-0.171875 -0.140625,-0.265625 -0.28125,-0.265625 -0.125,0 -0.296875,0.078125 -0.375,0.28125 -0.03125,0.0625 -0.5,1.96875 -0.5625,2.234375 C 3.453125,-1.484375 3.4375,-1.3125 3.4375,-1.125 c 0,0.109375 0,0.125 0.015625,0.171875 -0.234375,0.53125 -0.53125,0.84375 -0.921875,0.84375 -0.796875,0 -0.796875,-0.734375 -0.796875,-0.90625 0,-0.3125 0.046875,-0.703125 0.515625,-1.9375 0.109375,-0.296875 0.171875,-0.4375 0.171875,-0.640625 0,-0.4375 -0.328125,-0.8125 -0.8125,-0.8125 -0.953125,0 -1.3125,1.453125 -1.3125,1.53125 0,0.109375 0.09375,0.109375 0.109375,0.109375 0.109375,0 0.109375,-0.03125 0.15625,-0.1875 C 0.84375,-3.875 1.21875,-4.1875 1.578125,-4.1875 c 0.09375,0 0.25,0.015625 0.25,0.328125 0,0.25 -0.109375,0.53125 -0.1875,0.703125 -0.4375,1.171875 -0.546875,1.625 -0.546875,2.015625 0,0.90625 0.65625,1.25 1.40625,1.25 0.171875,0 0.640625,0 1.03125,-0.703125 0.265625,0.640625 0.953125,0.703125 1.25,0.703125 0.75,0 1.1875,-0.625 1.453125,-1.21875 0.328125,-0.78125 0.65625,-2.125 0.65625,-2.59375 0,-0.546875 -0.265625,-0.703125 -0.4375,-0.703125 -0.25,0 -0.5,0.265625 -0.5,0.484375 0,0.125 0.0625,0.1875 0.140625,0.265625 0.109375,0.109375 0.359375,0.359375 0.359375,0.84375 0,0.34375 -0.28125,1.3125 -0.546875,1.828125 -0.25,0.53125 -0.609375,0.875 -1.09375,0.875 -0.46875,0 -0.734375,-0.296875 -0.734375,-0.875 0,-0.265625 0.0625,-0.578125 0.109375,-0.71875 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- </g>
- </defs>
- <g
- id="textext-20f8880a-2"
- style="fill:#000080">
- <g
- id="g4160"
- style="fill:#000080;fill-opacity:1">
- <use
- id="use4162"
- y="134.765"
- x="223.43201"
- xlink:href="#textext-20f8880a-1"
- width="100%"
- height="100%"
- style="fill:#000080" />
- </g>
- </g>
- </g>
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="383.79077"
- cx="252.85715"
- id="path4138-3"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="353.07648"
- cx="418.57144"
- id="path4138-3-7"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="475.93362"
- cx="317.85715"
- id="path4138-3-0"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="570.21936"
- cx="317.85715"
- id="path4138-3-9"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="473.07648"
- cx="459.28571"
- id="path4138-3-3"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="478.07648"
- cx="133.57143"
- id="path4138-3-6"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="320.21936"
- cx="155.71428"
- id="path4138-3-06"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="340.73929"
- cx="490.7774"
- id="path4138-3-2"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="559.76758"
- cx="490.60406"
- id="path4138-3-61"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <g
- id="g4147-8"
- ns0:preamble="/home/siarzhuk/GitDrive/2015Gudhi/Aid/preamble.ini"
- ns0:text="$w$"
- transform="matrix(2.7020226,0,0,2.7020226,-152.29409,72.785446)"
- style="fill:#000000">
- <defs
- id="defs4149-7">
- <g
- id="g4151-9">
- <symbol
- id="textext-20f8880a-0-2"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4154-0"
- d=""
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-20f8880a-1-2"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4157-3"
- d="M 4.609375,-3.375 C 4.65625,-3.59375 4.75,-3.96875 4.75,-4.03125 c 0,-0.171875 -0.140625,-0.265625 -0.28125,-0.265625 -0.125,0 -0.296875,0.078125 -0.375,0.28125 -0.03125,0.0625 -0.5,1.96875 -0.5625,2.234375 C 3.453125,-1.484375 3.4375,-1.3125 3.4375,-1.125 c 0,0.109375 0,0.125 0.015625,0.171875 -0.234375,0.53125 -0.53125,0.84375 -0.921875,0.84375 -0.796875,0 -0.796875,-0.734375 -0.796875,-0.90625 0,-0.3125 0.046875,-0.703125 0.515625,-1.9375 0.109375,-0.296875 0.171875,-0.4375 0.171875,-0.640625 0,-0.4375 -0.328125,-0.8125 -0.8125,-0.8125 -0.953125,0 -1.3125,1.453125 -1.3125,1.53125 0,0.109375 0.09375,0.109375 0.109375,0.109375 0.109375,0 0.109375,-0.03125 0.15625,-0.1875 C 0.84375,-3.875 1.21875,-4.1875 1.578125,-4.1875 c 0.09375,0 0.25,0.015625 0.25,0.328125 0,0.25 -0.109375,0.53125 -0.1875,0.703125 -0.4375,1.171875 -0.546875,1.625 -0.546875,2.015625 0,0.90625 0.65625,1.25 1.40625,1.25 0.171875,0 0.640625,0 1.03125,-0.703125 0.265625,0.640625 0.953125,0.703125 1.25,0.703125 0.75,0 1.1875,-0.625 1.453125,-1.21875 0.328125,-0.78125 0.65625,-2.125 0.65625,-2.59375 0,-0.546875 -0.265625,-0.703125 -0.4375,-0.703125 -0.25,0 -0.5,0.265625 -0.5,0.484375 0,0.125 0.0625,0.1875 0.140625,0.265625 0.109375,0.109375 0.359375,0.359375 0.359375,0.84375 0,0.34375 -0.28125,1.3125 -0.546875,1.828125 -0.25,0.53125 -0.609375,0.875 -1.09375,0.875 -0.46875,0 -0.734375,-0.296875 -0.734375,-0.875 0,-0.265625 0.0625,-0.578125 0.109375,-0.71875 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- </g>
- </defs>
- <g
- id="textext-20f8880a-2-7"
- style="fill:#000000" />
- </g>
- <g
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- id="g4558"
- style="fill:#000080"
- transform="matrix(2.7020226,0,0,2.7020226,-254.3195,202.59004)"
- ns0:preamble="/home/siarzhuk/GitDrive/2015Gudhi/Aid/preamble.ini"
- ns0:text="$\\sigma \\subset L$">
- <defs
- id="defs4560">
- <g
- id="g4562">
- <symbol
- id="textext-b73c230a-0"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4565"
- d=""
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-b73c230a-1"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4568"
- d="m 5.15625,-3.71875 c 0.140625,0 0.5,0 0.5,-0.34375 0,-0.234375 -0.21875,-0.234375 -0.390625,-0.234375 l -2.28125,0 c -1.5,0 -2.609375,1.640625 -2.609375,2.828125 0,0.875 0.59375,1.578125 1.5,1.578125 1.171875,0 2.5,-1.203125 2.5,-2.734375 0,-0.171875 0,-0.65625 -0.3125,-1.09375 z M 1.890625,-0.109375 C 1.390625,-0.109375 1,-0.46875 1,-1.1875 c 0,-0.296875 0.109375,-1.109375 0.46875,-1.703125 0.421875,-0.6875 1.015625,-0.828125 1.359375,-0.828125 0.828125,0 0.90625,0.65625 0.90625,0.96875 0,0.46875 -0.203125,1.28125 -0.53125,1.796875 -0.390625,0.578125 -0.9375,0.84375 -1.3125,0.84375 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-b73c230a-2"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4571"
- d="M 3.734375,-6.03125 C 3.8125,-6.390625 3.84375,-6.5 4.78125,-6.5 c 0.296875,0 0.375,0 0.375,-0.1875 0,-0.125 -0.109375,-0.125 -0.15625,-0.125 -0.328125,0 -1.140625,0.03125 -1.46875,0.03125 -0.296875,0 -1.03125,-0.03125 -1.328125,-0.03125 -0.0625,0 -0.1875,0 -0.1875,0.203125 0,0.109375 0.09375,0.109375 0.28125,0.109375 0.015625,0 0.203125,0 0.375,0.015625 0.171875,0.03125 0.265625,0.03125 0.265625,0.171875 0,0.03125 0,0.0625 -0.03125,0.1875 L 1.5625,-0.78125 c -0.09375,0.390625 -0.109375,0.46875 -0.90625,0.46875 -0.171875,0 -0.265625,0 -0.265625,0.203125 C 0.390625,0 0.484375,0 0.65625,0 l 4.625,0 C 5.515625,0 5.515625,0 5.578125,-0.171875 L 6.375,-2.328125 c 0.03125,-0.109375 0.03125,-0.125 0.03125,-0.140625 0,-0.03125 -0.03125,-0.109375 -0.109375,-0.109375 -0.09375,0 -0.109375,0.0625 -0.171875,0.21875 -0.34375,0.90625 -0.78125,2.046875 -2.5,2.046875 l -0.9375,0 c -0.140625,0 -0.171875,0 -0.21875,0 -0.109375,-0.015625 -0.140625,-0.03125 -0.140625,-0.109375 0,-0.03125 0,-0.046875 0.046875,-0.21875 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-b73c230a-3"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4574"
- d=""
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-b73c230a-4"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4577"
- d="m 6.5625,-4.984375 c 0.171875,0 0.359375,0 0.359375,-0.203125 0,-0.203125 -0.1875,-0.203125 -0.359375,-0.203125 l -2.671875,0 c -1.703125,0 -3.0625,1.296875 -3.0625,2.890625 0,1.609375 1.359375,2.90625 3.0625,2.90625 l 2.671875,0 c 0.171875,0 0.359375,0 0.359375,-0.203125 C 6.921875,0 6.734375,0 6.5625,0 L 3.90625,0 c -1.546875,0 -2.6875,-1.15625 -2.6875,-2.5 0,-1.328125 1.140625,-2.484375 2.6875,-2.484375 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- </g>
- </defs>
- <g
- id="textext-b73c230a-5">
- <g
- id="g4580"
- style="fill:#000000;fill-opacity:1">
- <use
- id="use4582"
- y="134.765"
- x="223.43201"
- xlink:href="#textext-b73c230a-1"
- width="100%"
- height="100%" />
- </g>
- <g
- id="g4584"
- style="fill:#000000;fill-opacity:1">
- <use
- id="use4586"
- y="134.765"
- x="232.25"
- xlink:href="#textext-b73c230a-4"
- width="100%"
- height="100%" />
- </g>
- <g
- id="g4588"
- style="fill:#000000;fill-opacity:1">
- <use
- id="use4590"
- y="134.765"
- x="242.76601"
- xlink:href="#textext-b73c230a-2"
- width="100%"
- height="100%" />
- </g>
- </g>
- </g>
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- style="fill:#000080;fill-rule:evenodd;stroke:#000080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 337.85714,449.50504 148.57143,-8.57143"
- id="path5000"
- inkscape:connector-curvature="0" />
- <g
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- ns0:text="$\\sqrt{d(w,L)^2 + \\alpha^2}$"
- ns0:preamble="/home/siarzhuk/GitDrive/2015Gudhi/Aid/preamble.ini"
- transform="matrix(1.3935573,-0.10159094,0.10159094,1.3935573,55.220877,276.38005)"
- style="fill:#000080;stroke:#000080"
- id="g5407">
- <defs
- id="defs5409">
- <g
- id="g5411">
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-0">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d=""
- id="path5414" />
- </symbol>
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-1">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d="m 4.234375,11.5625 c 0.296875,0 0.3125,-0.01563 0.40625,-0.203125 l 5.453125,-11.375 c 0.07813,-0.140625 0.07813,-0.15625 0.07813,-0.1875 0,-0.109375 -0.07813,-0.203125 -0.203125,-0.203125 -0.125,0 -0.171875,0.09375 -0.21875,0.203125 L 4.609375,10.53125 2.484375,5.578125 1.09375,6.65625 1.25,6.8125 1.953125,6.265625 Z m 0,0"
- id="path5417" />
- </symbol>
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-2">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d=""
- id="path5420" />
- </symbol>
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-3">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d="m 5.140625,-6.8125 c 0,0 0,-0.109375 -0.125,-0.109375 -0.15625,0 -1.09375,0.09375 -1.265625,0.109375 -0.078125,0.015625 -0.140625,0.0625 -0.140625,0.1875 0,0.125 0.09375,0.125 0.234375,0.125 0.484375,0 0.5,0.0625 0.5,0.171875 L 4.3125,-6.125 3.71875,-3.765625 C 3.53125,-4.140625 3.25,-4.40625 2.796875,-4.40625 c -1.15625,0 -2.390625,1.46875 -2.390625,2.921875 0,0.9375 0.546875,1.59375 1.3125,1.59375 0.203125,0 0.703125,-0.046875 1.296875,-0.75 0.078125,0.421875 0.4375,0.75 0.90625,0.75 0.359375,0 0.578125,-0.234375 0.75,-0.546875 0.15625,-0.359375 0.296875,-0.96875 0.296875,-0.984375 0,-0.109375 -0.09375,-0.109375 -0.125,-0.109375 -0.09375,0 -0.109375,0.046875 -0.140625,0.1875 -0.171875,0.640625 -0.34375,1.234375 -0.75,1.234375 -0.28125,0 -0.296875,-0.265625 -0.296875,-0.453125 0,-0.25 0.015625,-0.3125 0.046875,-0.484375 z m -2.0625,5.625 C 3.015625,-1 3.015625,-0.984375 2.875,-0.8125 2.4375,-0.265625 2.03125,-0.109375 1.75,-0.109375 c -0.5,0 -0.640625,-0.546875 -0.640625,-0.9375 0,-0.5 0.3125,-1.71875 0.546875,-2.1875 0.3125,-0.578125 0.75,-0.953125 1.15625,-0.953125 0.640625,0 0.78125,0.8125 0.78125,0.875 0,0.0625 -0.015625,0.125 -0.03125,0.171875 z m 0,0"
- id="path5423" />
- </symbol>
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-4">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d="M 4.609375,-3.375 C 4.65625,-3.59375 4.75,-3.96875 4.75,-4.03125 c 0,-0.171875 -0.140625,-0.265625 -0.28125,-0.265625 -0.125,0 -0.296875,0.078125 -0.375,0.28125 -0.03125,0.0625 -0.5,1.96875 -0.5625,2.234375 C 3.453125,-1.484375 3.4375,-1.3125 3.4375,-1.125 c 0,0.109375 0,0.125 0.015625,0.171875 -0.234375,0.53125 -0.53125,0.84375 -0.921875,0.84375 -0.796875,0 -0.796875,-0.734375 -0.796875,-0.90625 0,-0.3125 0.046875,-0.703125 0.515625,-1.9375 0.109375,-0.296875 0.171875,-0.4375 0.171875,-0.640625 0,-0.4375 -0.328125,-0.8125 -0.8125,-0.8125 -0.953125,0 -1.3125,1.453125 -1.3125,1.53125 0,0.109375 0.09375,0.109375 0.109375,0.109375 0.109375,0 0.109375,-0.03125 0.15625,-0.1875 C 0.84375,-3.875 1.21875,-4.1875 1.578125,-4.1875 c 0.09375,0 0.25,0.015625 0.25,0.328125 0,0.25 -0.109375,0.53125 -0.1875,0.703125 -0.4375,1.171875 -0.546875,1.625 -0.546875,2.015625 0,0.90625 0.65625,1.25 1.40625,1.25 0.171875,0 0.640625,0 1.03125,-0.703125 0.265625,0.640625 0.953125,0.703125 1.25,0.703125 0.75,0 1.1875,-0.625 1.453125,-1.21875 0.328125,-0.78125 0.65625,-2.125 0.65625,-2.59375 0,-0.546875 -0.265625,-0.703125 -0.4375,-0.703125 -0.25,0 -0.5,0.265625 -0.5,0.484375 0,0.125 0.0625,0.1875 0.140625,0.265625 0.109375,0.109375 0.359375,0.359375 0.359375,0.84375 0,0.34375 -0.28125,1.3125 -0.546875,1.828125 -0.25,0.53125 -0.609375,0.875 -1.09375,0.875 -0.46875,0 -0.734375,-0.296875 -0.734375,-0.875 0,-0.265625 0.0625,-0.578125 0.109375,-0.71875 z m 0,0"
- id="path5426" />
- </symbol>
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-5">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d="m 2.03125,-0.015625 c 0,-0.65625 -0.25,-1.046875 -0.640625,-1.046875 -0.328125,0 -0.53125,0.25 -0.53125,0.53125 C 0.859375,-0.265625 1.0625,0 1.390625,0 1.5,0 1.640625,-0.046875 1.734375,-0.125 1.765625,-0.15625 1.78125,-0.15625 1.78125,-0.15625 c 0.015625,0 0.015625,0 0.015625,0.140625 0,0.75 -0.34375,1.34375 -0.671875,1.671875 -0.109375,0.109375 -0.109375,0.125 -0.109375,0.15625 0,0.078125 0.046875,0.109375 0.09375,0.109375 0.109375,0 0.921875,-0.765625 0.921875,-1.9375 z m 0,0"
- id="path5429" />
- </symbol>
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-6">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d="M 3.734375,-6.03125 C 3.8125,-6.390625 3.84375,-6.5 4.78125,-6.5 c 0.296875,0 0.375,0 0.375,-0.1875 0,-0.125 -0.109375,-0.125 -0.15625,-0.125 -0.328125,0 -1.140625,0.03125 -1.46875,0.03125 -0.296875,0 -1.03125,-0.03125 -1.328125,-0.03125 -0.0625,0 -0.1875,0 -0.1875,0.203125 0,0.109375 0.09375,0.109375 0.28125,0.109375 0.015625,0 0.203125,0 0.375,0.015625 0.171875,0.03125 0.265625,0.03125 0.265625,0.171875 0,0.03125 0,0.0625 -0.03125,0.1875 L 1.5625,-0.78125 c -0.09375,0.390625 -0.109375,0.46875 -0.90625,0.46875 -0.171875,0 -0.265625,0 -0.265625,0.203125 C 0.390625,0 0.484375,0 0.65625,0 l 4.625,0 C 5.515625,0 5.515625,0 5.578125,-0.171875 L 6.375,-2.328125 c 0.03125,-0.109375 0.03125,-0.125 0.03125,-0.140625 0,-0.03125 -0.03125,-0.109375 -0.109375,-0.109375 -0.09375,0 -0.109375,0.0625 -0.171875,0.21875 -0.34375,0.90625 -0.78125,2.046875 -2.5,2.046875 l -0.9375,0 c -0.140625,0 -0.171875,0 -0.21875,0 -0.109375,-0.015625 -0.140625,-0.03125 -0.140625,-0.109375 0,-0.03125 0,-0.046875 0.046875,-0.21875 z m 0,0"
- id="path5432" />
- </symbol>
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-7">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d="m 4.75,-2.359375 c 0,-1.5625 -0.921875,-2.046875 -1.65625,-2.046875 -1.375,0 -2.6875,1.421875 -2.6875,2.828125 0,0.9375 0.59375,1.6875 1.625,1.6875 0.625,0 1.34375,-0.234375 2.09375,-0.84375 0.125,0.53125 0.453125,0.84375 0.90625,0.84375 0.53125,0 0.84375,-0.546875 0.84375,-0.703125 0,-0.078125 -0.0625,-0.109375 -0.125,-0.109375 -0.0625,0 -0.09375,0.03125 -0.125,0.109375 -0.1875,0.484375 -0.546875,0.484375 -0.5625,0.484375 -0.3125,0 -0.3125,-0.78125 -0.3125,-1.015625 0,-0.203125 0,-0.234375 0.109375,-0.34375 C 5.796875,-2.65625 6,-3.8125 6,-3.8125 6,-3.84375 5.984375,-3.921875 5.875,-3.921875 c -0.09375,0 -0.09375,0.03125 -0.140625,0.21875 -0.1875,0.625 -0.515625,1.375 -0.984375,1.96875 z m -0.65625,1.375 c -0.890625,0.765625 -1.65625,0.875 -2.046875,0.875 -0.59375,0 -0.90625,-0.453125 -0.90625,-1.09375 0,-0.484375 0.265625,-1.5625 0.578125,-2.0625 C 2.1875,-4 2.734375,-4.1875 3.078125,-4.1875 c 0.984375,0 0.984375,1.3125 0.984375,2.078125 0,0.375 0,0.953125 0.03125,1.125 z m 0,0"
- id="path5435" />
- </symbol>
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-8">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d=""
- id="path5438" />
- </symbol>
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-9">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d="m 3.296875,2.390625 c 0,-0.03125 0,-0.046875 -0.171875,-0.21875 C 1.890625,0.921875 1.5625,-0.96875 1.5625,-2.5 c 0,-1.734375 0.375,-3.46875 1.609375,-4.703125 0.125,-0.125 0.125,-0.140625 0.125,-0.171875 0,-0.078125 -0.03125,-0.109375 -0.09375,-0.109375 -0.109375,0 -1,0.6875 -1.59375,1.953125 -0.5,1.09375 -0.625,2.203125 -0.625,3.03125 0,0.78125 0.109375,1.984375 0.65625,3.125 C 2.25,1.84375 3.09375,2.5 3.203125,2.5 c 0.0625,0 0.09375,-0.03125 0.09375,-0.109375 z m 0,0"
- id="path5441" />
- </symbol>
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-10">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d="m 2.875,-2.5 c 0,-0.765625 -0.109375,-1.96875 -0.65625,-3.109375 -0.59375,-1.21875 -1.453125,-1.875 -1.546875,-1.875 -0.0625,0 -0.109375,0.046875 -0.109375,0.109375 0,0.03125 0,0.046875 0.1875,0.234375 0.984375,0.984375 1.546875,2.5625 1.546875,4.640625 0,1.71875 -0.359375,3.46875 -1.59375,4.71875 C 0.5625,2.34375 0.5625,2.359375 0.5625,2.390625 0.5625,2.453125 0.609375,2.5 0.671875,2.5 0.765625,2.5 1.671875,1.8125 2.25,0.546875 2.765625,-0.546875 2.875,-1.65625 2.875,-2.5 Z m 0,0"
- id="path5444" />
- </symbol>
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-11">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d="m 4.078125,-2.296875 2.78125,0 C 7,-2.296875 7.1875,-2.296875 7.1875,-2.5 7.1875,-2.6875 7,-2.6875 6.859375,-2.6875 l -2.78125,0 0,-2.796875 c 0,-0.140625 0,-0.328125 -0.203125,-0.328125 -0.203125,0 -0.203125,0.1875 -0.203125,0.328125 l 0,2.796875 -2.78125,0 c -0.140625,0 -0.328125,0 -0.328125,0.1875 0,0.203125 0.1875,0.203125 0.328125,0.203125 l 2.78125,0 0,2.796875 c 0,0.140625 0,0.328125 0.203125,0.328125 0.203125,0 0.203125,-0.1875 0.203125,-0.328125 z m 0,0"
- id="path5447" />
- </symbol>
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-12">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d=""
- id="path5450" />
- </symbol>
- <symbol
- style="overflow:visible"
- overflow="visible"
- id="textext-da5ef958-13">
- <path
- inkscape:connector-curvature="0"
- style="stroke:none"
- d="m 3.515625,-1.265625 -0.234375,0 c -0.015625,0.15625 -0.09375,0.5625 -0.1875,0.625 -0.046875,0.046875 -0.578125,0.046875 -0.6875,0.046875 l -1.28125,0 c 0.734375,-0.640625 0.984375,-0.84375 1.390625,-1.171875 0.515625,-0.40625 1,-0.84375 1,-1.5 0,-0.84375 -0.734375,-1.359375 -1.625,-1.359375 -0.859375,0 -1.453125,0.609375 -1.453125,1.25 0,0.34375 0.296875,0.390625 0.375,0.390625 0.15625,0 0.359375,-0.125 0.359375,-0.375 0,-0.125 -0.046875,-0.375 -0.40625,-0.375 C 0.984375,-4.21875 1.453125,-4.375 1.78125,-4.375 c 0.703125,0 1.0625,0.546875 1.0625,1.109375 0,0.609375 -0.4375,1.078125 -0.65625,1.328125 L 0.515625,-0.265625 C 0.4375,-0.203125 0.4375,-0.1875 0.4375,0 l 2.875,0 z m 0,0"
- id="path5453" />
- </symbol>
- </g>
- </defs>
- <g
- style="fill:#000080;stroke:#000080"
- id="textext-da5ef958-14">
- <g
- style="fill:#000080;fill-opacity:1;stroke:#000080"
- id="g5456">
- <use
- style="fill:#000080;stroke:#000080"
- height="100%"
- width="100%"
- xlink:href="#textext-da5ef958-1"
- x="223.43201"
- y="126.247"
- id="use5458" />
- </g>
- <path
- inkscape:connector-curvature="0"
- style="fill:#000080;stroke:#000080;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
- d="m -4.6875e-4,0.001125 59.07031275,0"
- transform="matrix(1,0,0,-1,233.395,126.048)"
- id="path5460" />
- <g
- style="fill:#000080;fill-opacity:1;stroke:#000080"
- id="g5462">
- <use
- style="fill:#000080;stroke:#000080"
- height="100%"
- width="100%"
- xlink:href="#textext-da5ef958-3"
- x="233.395"
- y="134.765"
- id="use5464" />
- </g>
- <g
- style="fill:#000080;fill-opacity:1;stroke:#000080"
- id="g5466">
- <use
- style="fill:#000080;stroke:#000080"
- height="100%"
- width="100%"
- xlink:href="#textext-da5ef958-9"
- x="238.58"
- y="134.765"
- id="use5468" />
- </g>
- <g
- style="fill:#000080;fill-opacity:1;stroke:#000080"
- id="g5470">
- <use
- style="fill:#000080;stroke:#000080"
- height="100%"
- width="100%"
- xlink:href="#textext-da5ef958-4"
- x="242.455"
- y="134.765"
- id="use5472" />
- </g>
- <g
- style="fill:#000080;fill-opacity:1;stroke:#000080"
- id="g5474">
- <use
- style="fill:#000080;stroke:#000080"
- height="100%"
- width="100%"
- xlink:href="#textext-da5ef958-5"
- x="249.85622"
- y="134.765"
- id="use5476" />
- </g>
- <g
- style="fill:#000080;fill-opacity:1;stroke:#000080"
- id="g5478">
- <use
- style="fill:#000080;stroke:#000080"
- height="100%"
- width="100%"
- xlink:href="#textext-da5ef958-6"
- x="254.28758"
- y="134.765"
- id="use5480" />
- </g>
- <g
- style="fill:#000080;fill-opacity:1;stroke:#000080"
- id="g5482">
- <use
- style="fill:#000080;stroke:#000080"
- height="100%"
- width="100%"
- xlink:href="#textext-da5ef958-10"
- x="261.06299"
- y="134.765"
- id="use5484" />
- </g>
- <g
- style="fill:#000080;fill-opacity:1;stroke:#000080"
- id="g5486">
- <use
- style="fill:#000080;stroke:#000080"
- height="100%"
- width="100%"
- xlink:href="#textext-da5ef958-13"
- x="264.93701"
- y="131.88699"
- id="use5488" />
- </g>
- <g
- style="fill:#000080;fill-opacity:1;stroke:#000080"
- id="g5490">
- <use
- style="fill:#000080;stroke:#000080"
- height="100%"
- width="100%"
- xlink:href="#textext-da5ef958-11"
- x="271.621"
- y="134.765"
- id="use5492" />
- </g>
- <g
- style="fill:#000080;fill-opacity:1;stroke:#000080"
- id="g5494">
- <use
- style="fill:#000080;stroke:#000080"
- height="100%"
- width="100%"
- xlink:href="#textext-da5ef958-7"
- x="281.58301"
- y="134.765"
- id="use5496" />
- </g>
- <g
- style="fill:#000080;fill-opacity:1;stroke:#000080"
- id="g5498">
- <use
- style="fill:#000080;stroke:#000080"
- height="100%"
- width="100%"
- xlink:href="#textext-da5ef958-13"
- x="287.99301"
- y="131.88699"
- id="use5500" />
- </g>
- </g>
- </g>
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="148.57143"
- cy="449.89627"
- cx="738.71753"
- id="path4136-7"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="450.05875"
- cx="738.13837"
- id="path4138-8"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <g
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- id="g4147-5"
- ns0:preamble="/home/siarzhuk/GitDrive/2015Gudhi/Aid/preamble.ini"
- ns0:text="$w$"
- transform="matrix(2.7020226,0,0,2.7020226,138.14964,103.80999)"
- style="fill:#000080">
- <defs
- id="defs4149-9">
- <g
- id="g4151-7">
- <symbol
- id="textext-20f8880a-0-5"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4154-3"
- d=""
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-20f8880a-1-8"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4157-8"
- d="M 4.609375,-3.375 C 4.65625,-3.59375 4.75,-3.96875 4.75,-4.03125 c 0,-0.171875 -0.140625,-0.265625 -0.28125,-0.265625 -0.125,0 -0.296875,0.078125 -0.375,0.28125 -0.03125,0.0625 -0.5,1.96875 -0.5625,2.234375 C 3.453125,-1.484375 3.4375,-1.3125 3.4375,-1.125 c 0,0.109375 0,0.125 0.015625,0.171875 -0.234375,0.53125 -0.53125,0.84375 -0.921875,0.84375 -0.796875,0 -0.796875,-0.734375 -0.796875,-0.90625 0,-0.3125 0.046875,-0.703125 0.515625,-1.9375 0.109375,-0.296875 0.171875,-0.4375 0.171875,-0.640625 0,-0.4375 -0.328125,-0.8125 -0.8125,-0.8125 -0.953125,0 -1.3125,1.453125 -1.3125,1.53125 0,0.109375 0.09375,0.109375 0.109375,0.109375 0.109375,0 0.109375,-0.03125 0.15625,-0.1875 C 0.84375,-3.875 1.21875,-4.1875 1.578125,-4.1875 c 0.09375,0 0.25,0.015625 0.25,0.328125 0,0.25 -0.109375,0.53125 -0.1875,0.703125 -0.4375,1.171875 -0.546875,1.625 -0.546875,2.015625 0,0.90625 0.65625,1.25 1.40625,1.25 0.171875,0 0.640625,0 1.03125,-0.703125 0.265625,0.640625 0.953125,0.703125 1.25,0.703125 0.75,0 1.1875,-0.625 1.453125,-1.21875 0.328125,-0.78125 0.65625,-2.125 0.65625,-2.59375 0,-0.546875 -0.265625,-0.703125 -0.4375,-0.703125 -0.25,0 -0.5,0.265625 -0.5,0.484375 0,0.125 0.0625,0.1875 0.140625,0.265625 0.109375,0.109375 0.359375,0.359375 0.359375,0.84375 0,0.34375 -0.28125,1.3125 -0.546875,1.828125 -0.25,0.53125 -0.609375,0.875 -1.09375,0.875 -0.46875,0 -0.734375,-0.296875 -0.734375,-0.875 0,-0.265625 0.0625,-0.578125 0.109375,-0.71875 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- </g>
- </defs>
- <g
- id="textext-20f8880a-2-3"
- style="fill:#000080">
- <g
- id="g4160-1"
- style="fill:#000080;fill-opacity:1">
- <use
- id="use4162-8"
- y="134.765"
- x="223.43201"
- xlink:href="#textext-20f8880a-1-8"
- width="100%"
- height="100%"
- style="fill:#000080" />
- </g>
- </g>
- </g>
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="342.37451"
- cx="681.14148"
- id="path4138-3-96"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="353.07648"
- cx="818.57141"
- id="path4138-3-7-4"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="492.09607"
- cx="668.35968"
- id="path4138-3-0-3"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="570.21936"
- cx="717.85718"
- id="path4138-3-9-3"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="473.07648"
- cx="859.28564"
- id="path4138-3-3-3"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="478.07648"
- cx="533.57141"
- id="path4138-3-6-8"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="350.52393"
- cx="594.1001"
- id="path4138-3-06-6"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="331.64792"
- cx="927.14288"
- id="path4138-3-2-0"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <circle
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- r="2.7779195"
- cy="505.21936"
- cx="930"
- id="path4138-3-61-4"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <g
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- id="g4558-8"
- style="fill:#000080"
- transform="matrix(2.7020226,0,0,2.7020226,145.6805,202.59004)"
- ns0:preamble="/home/siarzhuk/GitDrive/2015Gudhi/Aid/preamble.ini"
- ns0:text="$\\sigma \\subset L$">
- <defs
- id="defs4560-8">
- <g
- id="g4562-8">
- <symbol
- id="textext-b73c230a-0-9"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4565-7"
- d=""
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-b73c230a-1-7"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4568-6"
- d="m 5.15625,-3.71875 c 0.140625,0 0.5,0 0.5,-0.34375 0,-0.234375 -0.21875,-0.234375 -0.390625,-0.234375 l -2.28125,0 c -1.5,0 -2.609375,1.640625 -2.609375,2.828125 0,0.875 0.59375,1.578125 1.5,1.578125 1.171875,0 2.5,-1.203125 2.5,-2.734375 0,-0.171875 0,-0.65625 -0.3125,-1.09375 z M 1.890625,-0.109375 C 1.390625,-0.109375 1,-0.46875 1,-1.1875 c 0,-0.296875 0.109375,-1.109375 0.46875,-1.703125 0.421875,-0.6875 1.015625,-0.828125 1.359375,-0.828125 0.828125,0 0.90625,0.65625 0.90625,0.96875 0,0.46875 -0.203125,1.28125 -0.53125,1.796875 -0.390625,0.578125 -0.9375,0.84375 -1.3125,0.84375 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-b73c230a-2-4"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4571-3"
- d="M 3.734375,-6.03125 C 3.8125,-6.390625 3.84375,-6.5 4.78125,-6.5 c 0.296875,0 0.375,0 0.375,-0.1875 0,-0.125 -0.109375,-0.125 -0.15625,-0.125 -0.328125,0 -1.140625,0.03125 -1.46875,0.03125 -0.296875,0 -1.03125,-0.03125 -1.328125,-0.03125 -0.0625,0 -0.1875,0 -0.1875,0.203125 0,0.109375 0.09375,0.109375 0.28125,0.109375 0.015625,0 0.203125,0 0.375,0.015625 0.171875,0.03125 0.265625,0.03125 0.265625,0.171875 0,0.03125 0,0.0625 -0.03125,0.1875 L 1.5625,-0.78125 c -0.09375,0.390625 -0.109375,0.46875 -0.90625,0.46875 -0.171875,0 -0.265625,0 -0.265625,0.203125 C 0.390625,0 0.484375,0 0.65625,0 l 4.625,0 C 5.515625,0 5.515625,0 5.578125,-0.171875 L 6.375,-2.328125 c 0.03125,-0.109375 0.03125,-0.125 0.03125,-0.140625 0,-0.03125 -0.03125,-0.109375 -0.109375,-0.109375 -0.09375,0 -0.109375,0.0625 -0.171875,0.21875 -0.34375,0.90625 -0.78125,2.046875 -2.5,2.046875 l -0.9375,0 c -0.140625,0 -0.171875,0 -0.21875,0 -0.109375,-0.015625 -0.140625,-0.03125 -0.140625,-0.109375 0,-0.03125 0,-0.046875 0.046875,-0.21875 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-b73c230a-3-0"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4574-3"
- d=""
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-b73c230a-4-0"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path4577-9"
- d="m 6.5625,-4.984375 c 0.171875,0 0.359375,0 0.359375,-0.203125 0,-0.203125 -0.1875,-0.203125 -0.359375,-0.203125 l -2.671875,0 c -1.703125,0 -3.0625,1.296875 -3.0625,2.890625 0,1.609375 1.359375,2.90625 3.0625,2.90625 l 2.671875,0 c 0.171875,0 0.359375,0 0.359375,-0.203125 C 6.921875,0 6.734375,0 6.5625,0 L 3.90625,0 c -1.546875,0 -2.6875,-1.15625 -2.6875,-2.5 0,-1.328125 1.140625,-2.484375 2.6875,-2.484375 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- </g>
- </defs>
- <g
- id="textext-b73c230a-5-2">
- <g
- id="g4580-5"
- style="fill:#000000;fill-opacity:1">
- <use
- id="use4582-4"
- y="134.765"
- x="223.43201"
- xlink:href="#textext-b73c230a-1-7"
- width="100%"
- height="100%" />
- </g>
- <g
- id="g4584-0"
- style="fill:#000000;fill-opacity:1">
- <use
- id="use4586-5"
- y="134.765"
- x="232.25"
- xlink:href="#textext-b73c230a-4-0"
- width="100%"
- height="100%" />
- </g>
- <g
- id="g4588-9"
- style="fill:#000000;fill-opacity:1">
- <use
- id="use4590-4"
- y="134.765"
- x="242.76601"
- xlink:href="#textext-b73c230a-2-4"
- width="100%"
- height="100%" />
- </g>
- </g>
- </g>
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- style="fill:#000080;fill-rule:evenodd;stroke:#000080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-8)"
- d="m 737.85714,449.50504 148.57143,-8.57143"
- id="path5000-6"
- inkscape:connector-curvature="0" />
- <circle
- r="80.779091"
- cy="449.46512"
- cx="737.3952"
- id="path6334"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.98999999;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.06622958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19868871, 3.19868871;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <g
- id="g6495"
- style="fill:#000080;stroke:#000080"
- transform="matrix(1.3952558,-0.07472613,0.07472613,1.3952558,431.03302,272.05923)"
- ns0:preamble="/home/siarzhuk/GitDrive/2015Gudhi/Aid/preamble.ini"
- ns0:text="$\\sqrt{d(w,L \\setminus \\sigma)^2 + \\alpha^2}$">
- <defs
- id="defs6497">
- <g
- id="g6499">
- <symbol
- id="textext-c0d6e8dc-0"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6502"
- d=""
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-1"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6505"
- d="m 4.234375,11.5625 c 0.296875,0 0.3125,-0.01563 0.40625,-0.203125 l 5.453125,-11.375 c 0.07813,-0.140625 0.07813,-0.15625 0.07813,-0.1875 0,-0.109375 -0.07813,-0.203125 -0.203125,-0.203125 -0.125,0 -0.171875,0.09375 -0.21875,0.203125 L 4.609375,10.53125 2.484375,5.578125 1.09375,6.65625 1.25,6.8125 1.953125,6.265625 Z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-2"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6508"
- d=""
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-3"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6511"
- d="m 5.140625,-6.8125 c 0,0 0,-0.109375 -0.125,-0.109375 -0.15625,0 -1.09375,0.09375 -1.265625,0.109375 -0.078125,0.015625 -0.140625,0.0625 -0.140625,0.1875 0,0.125 0.09375,0.125 0.234375,0.125 0.484375,0 0.5,0.0625 0.5,0.171875 L 4.3125,-6.125 3.71875,-3.765625 C 3.53125,-4.140625 3.25,-4.40625 2.796875,-4.40625 c -1.15625,0 -2.390625,1.46875 -2.390625,2.921875 0,0.9375 0.546875,1.59375 1.3125,1.59375 0.203125,0 0.703125,-0.046875 1.296875,-0.75 0.078125,0.421875 0.4375,0.75 0.90625,0.75 0.359375,0 0.578125,-0.234375 0.75,-0.546875 0.15625,-0.359375 0.296875,-0.96875 0.296875,-0.984375 0,-0.109375 -0.09375,-0.109375 -0.125,-0.109375 -0.09375,0 -0.109375,0.046875 -0.140625,0.1875 -0.171875,0.640625 -0.34375,1.234375 -0.75,1.234375 -0.28125,0 -0.296875,-0.265625 -0.296875,-0.453125 0,-0.25 0.015625,-0.3125 0.046875,-0.484375 z m -2.0625,5.625 C 3.015625,-1 3.015625,-0.984375 2.875,-0.8125 2.4375,-0.265625 2.03125,-0.109375 1.75,-0.109375 c -0.5,0 -0.640625,-0.546875 -0.640625,-0.9375 0,-0.5 0.3125,-1.71875 0.546875,-2.1875 0.3125,-0.578125 0.75,-0.953125 1.15625,-0.953125 0.640625,0 0.78125,0.8125 0.78125,0.875 0,0.0625 -0.015625,0.125 -0.03125,0.171875 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-4"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6514"
- d="M 4.609375,-3.375 C 4.65625,-3.59375 4.75,-3.96875 4.75,-4.03125 c 0,-0.171875 -0.140625,-0.265625 -0.28125,-0.265625 -0.125,0 -0.296875,0.078125 -0.375,0.28125 -0.03125,0.0625 -0.5,1.96875 -0.5625,2.234375 C 3.453125,-1.484375 3.4375,-1.3125 3.4375,-1.125 c 0,0.109375 0,0.125 0.015625,0.171875 -0.234375,0.53125 -0.53125,0.84375 -0.921875,0.84375 -0.796875,0 -0.796875,-0.734375 -0.796875,-0.90625 0,-0.3125 0.046875,-0.703125 0.515625,-1.9375 0.109375,-0.296875 0.171875,-0.4375 0.171875,-0.640625 0,-0.4375 -0.328125,-0.8125 -0.8125,-0.8125 -0.953125,0 -1.3125,1.453125 -1.3125,1.53125 0,0.109375 0.09375,0.109375 0.109375,0.109375 0.109375,0 0.109375,-0.03125 0.15625,-0.1875 C 0.84375,-3.875 1.21875,-4.1875 1.578125,-4.1875 c 0.09375,0 0.25,0.015625 0.25,0.328125 0,0.25 -0.109375,0.53125 -0.1875,0.703125 -0.4375,1.171875 -0.546875,1.625 -0.546875,2.015625 0,0.90625 0.65625,1.25 1.40625,1.25 0.171875,0 0.640625,0 1.03125,-0.703125 0.265625,0.640625 0.953125,0.703125 1.25,0.703125 0.75,0 1.1875,-0.625 1.453125,-1.21875 0.328125,-0.78125 0.65625,-2.125 0.65625,-2.59375 0,-0.546875 -0.265625,-0.703125 -0.4375,-0.703125 -0.25,0 -0.5,0.265625 -0.5,0.484375 0,0.125 0.0625,0.1875 0.140625,0.265625 0.109375,0.109375 0.359375,0.359375 0.359375,0.84375 0,0.34375 -0.28125,1.3125 -0.546875,1.828125 -0.25,0.53125 -0.609375,0.875 -1.09375,0.875 -0.46875,0 -0.734375,-0.296875 -0.734375,-0.875 0,-0.265625 0.0625,-0.578125 0.109375,-0.71875 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-5"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6517"
- d="m 2.03125,-0.015625 c 0,-0.65625 -0.25,-1.046875 -0.640625,-1.046875 -0.328125,0 -0.53125,0.25 -0.53125,0.53125 C 0.859375,-0.265625 1.0625,0 1.390625,0 1.5,0 1.640625,-0.046875 1.734375,-0.125 1.765625,-0.15625 1.78125,-0.15625 1.78125,-0.15625 c 0.015625,0 0.015625,0 0.015625,0.140625 0,0.75 -0.34375,1.34375 -0.671875,1.671875 -0.109375,0.109375 -0.109375,0.125 -0.109375,0.15625 0,0.078125 0.046875,0.109375 0.09375,0.109375 0.109375,0 0.921875,-0.765625 0.921875,-1.9375 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-6"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6520"
- d="M 3.734375,-6.03125 C 3.8125,-6.390625 3.84375,-6.5 4.78125,-6.5 c 0.296875,0 0.375,0 0.375,-0.1875 0,-0.125 -0.109375,-0.125 -0.15625,-0.125 -0.328125,0 -1.140625,0.03125 -1.46875,0.03125 -0.296875,0 -1.03125,-0.03125 -1.328125,-0.03125 -0.0625,0 -0.1875,0 -0.1875,0.203125 0,0.109375 0.09375,0.109375 0.28125,0.109375 0.015625,0 0.203125,0 0.375,0.015625 0.171875,0.03125 0.265625,0.03125 0.265625,0.171875 0,0.03125 0,0.0625 -0.03125,0.1875 L 1.5625,-0.78125 c -0.09375,0.390625 -0.109375,0.46875 -0.90625,0.46875 -0.171875,0 -0.265625,0 -0.265625,0.203125 C 0.390625,0 0.484375,0 0.65625,0 l 4.625,0 C 5.515625,0 5.515625,0 5.578125,-0.171875 L 6.375,-2.328125 c 0.03125,-0.109375 0.03125,-0.125 0.03125,-0.140625 0,-0.03125 -0.03125,-0.109375 -0.109375,-0.109375 -0.09375,0 -0.109375,0.0625 -0.171875,0.21875 -0.34375,0.90625 -0.78125,2.046875 -2.5,2.046875 l -0.9375,0 c -0.140625,0 -0.171875,0 -0.21875,0 -0.109375,-0.015625 -0.140625,-0.03125 -0.140625,-0.109375 0,-0.03125 0,-0.046875 0.046875,-0.21875 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-7"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6523"
- d="m 5.15625,-3.71875 c 0.140625,0 0.5,0 0.5,-0.34375 0,-0.234375 -0.21875,-0.234375 -0.390625,-0.234375 l -2.28125,0 c -1.5,0 -2.609375,1.640625 -2.609375,2.828125 0,0.875 0.59375,1.578125 1.5,1.578125 1.171875,0 2.5,-1.203125 2.5,-2.734375 0,-0.171875 0,-0.65625 -0.3125,-1.09375 z M 1.890625,-0.109375 C 1.390625,-0.109375 1,-0.46875 1,-1.1875 c 0,-0.296875 0.109375,-1.109375 0.46875,-1.703125 0.421875,-0.6875 1.015625,-0.828125 1.359375,-0.828125 0.828125,0 0.90625,0.65625 0.90625,0.96875 0,0.46875 -0.203125,1.28125 -0.53125,1.796875 -0.390625,0.578125 -0.9375,0.84375 -1.3125,0.84375 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-8"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6526"
- d="m 4.75,-2.359375 c 0,-1.5625 -0.921875,-2.046875 -1.65625,-2.046875 -1.375,0 -2.6875,1.421875 -2.6875,2.828125 0,0.9375 0.59375,1.6875 1.625,1.6875 0.625,0 1.34375,-0.234375 2.09375,-0.84375 0.125,0.53125 0.453125,0.84375 0.90625,0.84375 0.53125,0 0.84375,-0.546875 0.84375,-0.703125 0,-0.078125 -0.0625,-0.109375 -0.125,-0.109375 -0.0625,0 -0.09375,0.03125 -0.125,0.109375 -0.1875,0.484375 -0.546875,0.484375 -0.5625,0.484375 -0.3125,0 -0.3125,-0.78125 -0.3125,-1.015625 0,-0.203125 0,-0.234375 0.109375,-0.34375 C 5.796875,-2.65625 6,-3.8125 6,-3.8125 6,-3.84375 5.984375,-3.921875 5.875,-3.921875 c -0.09375,0 -0.09375,0.03125 -0.140625,0.21875 -0.1875,0.625 -0.515625,1.375 -0.984375,1.96875 z m -0.65625,1.375 c -0.890625,0.765625 -1.65625,0.875 -2.046875,0.875 -0.59375,0 -0.90625,-0.453125 -0.90625,-1.09375 0,-0.484375 0.265625,-1.5625 0.578125,-2.0625 C 2.1875,-4 2.734375,-4.1875 3.078125,-4.1875 c 0.984375,0 0.984375,1.3125 0.984375,2.078125 0,0.375 0,0.953125 0.03125,1.125 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-9"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6529"
- d=""
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-10"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6532"
- d="m 3.296875,2.390625 c 0,-0.03125 0,-0.046875 -0.171875,-0.21875 C 1.890625,0.921875 1.5625,-0.96875 1.5625,-2.5 c 0,-1.734375 0.375,-3.46875 1.609375,-4.703125 0.125,-0.125 0.125,-0.140625 0.125,-0.171875 0,-0.078125 -0.03125,-0.109375 -0.09375,-0.109375 -0.109375,0 -1,0.6875 -1.59375,1.953125 -0.5,1.09375 -0.625,2.203125 -0.625,3.03125 0,0.78125 0.109375,1.984375 0.65625,3.125 C 2.25,1.84375 3.09375,2.5 3.203125,2.5 c 0.0625,0 0.09375,-0.03125 0.09375,-0.109375 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-11"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6535"
- d="m 2.875,-2.5 c 0,-0.765625 -0.109375,-1.96875 -0.65625,-3.109375 -0.59375,-1.21875 -1.453125,-1.875 -1.546875,-1.875 -0.0625,0 -0.109375,0.046875 -0.109375,0.109375 0,0.03125 0,0.046875 0.1875,0.234375 0.984375,0.984375 1.546875,2.5625 1.546875,4.640625 0,1.71875 -0.359375,3.46875 -1.59375,4.71875 C 0.5625,2.34375 0.5625,2.359375 0.5625,2.390625 0.5625,2.453125 0.609375,2.5 0.671875,2.5 0.765625,2.5 1.671875,1.8125 2.25,0.546875 2.765625,-0.546875 2.875,-1.65625 2.875,-2.5 Z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-12"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6538"
- d="m 4.078125,-2.296875 2.78125,0 C 7,-2.296875 7.1875,-2.296875 7.1875,-2.5 7.1875,-2.6875 7,-2.6875 6.859375,-2.6875 l -2.78125,0 0,-2.796875 c 0,-0.140625 0,-0.328125 -0.203125,-0.328125 -0.203125,0 -0.203125,0.1875 -0.203125,0.328125 l 0,2.796875 -2.78125,0 c -0.140625,0 -0.328125,0 -0.328125,0.1875 0,0.203125 0.1875,0.203125 0.328125,0.203125 l 2.78125,0 0,2.796875 c 0,0.140625 0,0.328125 0.203125,0.328125 0.203125,0 0.203125,-0.1875 0.203125,-0.328125 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-13"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6541"
- d=""
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-14"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6544"
- d="m 4,2.25 c 0.046875,0.140625 0.09375,0.25 0.234375,0.25 0.109375,0 0.1875,-0.09375 0.1875,-0.203125 0,-0.03125 0,-0.046875 -0.046875,-0.15625 l -3.40625,-9.375 c -0.0625,-0.171875 -0.09375,-0.25 -0.21875,-0.25 -0.109375,0 -0.203125,0.09375 -0.203125,0.203125 0,0.03125 0,0.046875 0.046875,0.15625 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-15"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6547"
- d=""
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="textext-c0d6e8dc-16"
- overflow="visible"
- style="overflow:visible">
- <path
- id="path6550"
- d="m 3.515625,-1.265625 -0.234375,0 c -0.015625,0.15625 -0.09375,0.5625 -0.1875,0.625 -0.046875,0.046875 -0.578125,0.046875 -0.6875,0.046875 l -1.28125,0 c 0.734375,-0.640625 0.984375,-0.84375 1.390625,-1.171875 0.515625,-0.40625 1,-0.84375 1,-1.5 0,-0.84375 -0.734375,-1.359375 -1.625,-1.359375 -0.859375,0 -1.453125,0.609375 -1.453125,1.25 0,0.34375 0.296875,0.390625 0.375,0.390625 0.15625,0 0.359375,-0.125 0.359375,-0.375 0,-0.125 -0.046875,-0.375 -0.40625,-0.375 C 0.984375,-4.21875 1.453125,-4.375 1.78125,-4.375 c 0.703125,0 1.0625,0.546875 1.0625,1.109375 0,0.609375 -0.4375,1.078125 -0.65625,1.328125 L 0.515625,-0.265625 C 0.4375,-0.203125 0.4375,-0.1875 0.4375,0 l 2.875,0 z m 0,0"
- style="stroke:none"
- inkscape:connector-curvature="0" />
- </symbol>
- </g>
- </defs>
- <g
- id="textext-c0d6e8dc-17"
- style="fill:#000080;stroke:#000080">
- <g
- id="g6553"
- style="fill:#000080;fill-opacity:1;stroke:#000080">
- <use
- id="use6555"
- y="126.247"
- x="223.43201"
- xlink:href="#textext-c0d6e8dc-1"
- width="100%"
- height="100%"
- style="fill:#000080;stroke:#000080" />
- </g>
- <path
- id="path6557"
- transform="matrix(1,0,0,-1,233.395,126.048)"
- d="m -4.6875e-4,0.001125 74.52734375,0"
- style="fill:#000080;stroke:#000080;stroke-width:0.398;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <g
- id="g6559"
- style="fill:#000080;fill-opacity:1;stroke:#000080">
- <use
- id="use6561"
- y="134.765"
- x="233.395"
- xlink:href="#textext-c0d6e8dc-3"
- width="100%"
- height="100%"
- style="fill:#000080;stroke:#000080" />
- </g>
- <g
- id="g6563"
- style="fill:#000080;fill-opacity:1;stroke:#000080">
- <use
- id="use6565"
- y="134.765"
- x="238.58"
- xlink:href="#textext-c0d6e8dc-10"
- width="100%"
- height="100%"
- style="fill:#000080;stroke:#000080" />
- </g>
- <g
- id="g6567"
- style="fill:#000080;fill-opacity:1;stroke:#000080">
- <use
- id="use6569"
- y="134.765"
- x="242.455"
- xlink:href="#textext-c0d6e8dc-4"
- width="100%"
- height="100%"
- style="fill:#000080;stroke:#000080" />
- </g>
- <g
- id="g6571"
- style="fill:#000080;fill-opacity:1;stroke:#000080">
- <use
- id="use6573"
- y="134.765"
- x="249.85622"
- xlink:href="#textext-c0d6e8dc-5"
- width="100%"
- height="100%"
- style="fill:#000080;stroke:#000080" />
- </g>
- <g
- id="g6575"
- style="fill:#000080;fill-opacity:1;stroke:#000080">
- <use
- id="use6577"
- y="134.765"
- x="254.28758"
- xlink:href="#textext-c0d6e8dc-6"
- width="100%"
- height="100%"
- style="fill:#000080;stroke:#000080" />
- </g>
- <g
- id="g6579"
- style="fill:#000080;fill-opacity:1;stroke:#000080">
- <use
- id="use6581"
- y="134.765"
- x="263.27701"
- xlink:href="#textext-c0d6e8dc-14"
- width="100%"
- height="100%"
- style="fill:#000080;stroke:#000080" />
- </g>
- <g
- id="g6583"
- style="fill:#000080;fill-opacity:1;stroke:#000080">
- <use
- id="use6585"
- y="134.765"
- x="270.47198"
- xlink:href="#textext-c0d6e8dc-7"
- width="100%"
- height="100%"
- style="fill:#000080;stroke:#000080" />
- </g>
- <g
- id="g6587"
- style="fill:#000080;fill-opacity:1;stroke:#000080">
- <use
- id="use6589"
- y="134.765"
- x="276.522"
- xlink:href="#textext-c0d6e8dc-11"
- width="100%"
- height="100%"
- style="fill:#000080;stroke:#000080" />
- </g>
- <g
- id="g6591"
- style="fill:#000080;fill-opacity:1;stroke:#000080">
- <use
- id="use6593"
- y="131.88699"
- x="280.397"
- xlink:href="#textext-c0d6e8dc-16"
- width="100%"
- height="100%"
- style="fill:#000080;stroke:#000080" />
- </g>
- <g
- id="g6595"
- style="fill:#000080;fill-opacity:1;stroke:#000080">
- <use
- id="use6597"
- y="134.765"
- x="287.07999"
- xlink:href="#textext-c0d6e8dc-12"
- width="100%"
- height="100%"
- style="fill:#000080;stroke:#000080" />
- </g>
- <g
- id="g6599"
- style="fill:#000080;fill-opacity:1;stroke:#000080">
- <use
- id="use6601"
- y="134.765"
- x="297.043"
- xlink:href="#textext-c0d6e8dc-8"
- width="100%"
- height="100%"
- style="fill:#000080;stroke:#000080" />
- </g>
- <g
- id="g6603"
- style="fill:#000080;fill-opacity:1;stroke:#000080">
- <use
- id="use6605"
- y="131.88699"
- x="303.453"
- xlink:href="#textext-c0d6e8dc-16"
- width="100%"
- height="100%"
- style="fill:#000080;stroke:#000080" />
- </g>
- </g>
- </g>
- </g>
- <g
- transform="translate(-130.29351,-300.82484)"
- style="display:none"
- inkscape:label="Layer 2"
- id="layer2"
- inkscape:groupmode="layer">
- <circle
- r="32.857143"
- cy="448.79074"
- cx="337.85715"
- id="path5639"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.98999999;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- </g>
-</svg>
diff --git a/doc/common/Gudhi_banner.png b/doc/common/Gudhi_banner.png
deleted file mode 100644
index 18e8a672..00000000
--- a/doc/common/Gudhi_banner.png
+++ /dev/null
Binary files differ
diff --git a/doc/common/examples.h b/doc/common/examples.h
deleted file mode 100644
index 40f202c7..00000000
--- a/doc/common/examples.h
+++ /dev/null
@@ -1,99 +0,0 @@
-// List of GUDHI examples - Doxygen needs at least a file tag to analyse comments
-// In user_version, `find . -name "*.cpp"` in example and utilities folders
-/*! @file Examples
- * @example Alpha_complex/Alpha_complex_from_off.cpp
- * @example Alpha_complex/Alpha_complex_from_points.cpp
- * @example Bottleneck_distance/bottleneck_basic_example.cpp
- * @example Bottleneck_distance/alpha_rips_persistence_bottleneck_distance.cpp
- * @example Witness_complex/example_nearest_landmark_table.cpp
- * @example Witness_complex/example_witness_complex_off.cpp
- * @example Witness_complex/example_witness_complex_sphere.cpp
- * @example Witness_complex/example_strong_witness_complex_off.cpp
- * @example Simplex_tree/mini_simplex_tree.cpp
- * @example Simplex_tree/graph_expansion_with_blocker.cpp
- * @example Simplex_tree/simple_simplex_tree.cpp
- * @example Simplex_tree/simplex_tree_from_cliques_of_graph.cpp
- * @example Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp
- * @example Simplex_tree/cech_complex_cgal_mini_sphere_3d.cpp
- * @example Persistent_cohomology/plain_homology.cpp
- * @example Persistent_cohomology/persistence_from_file.cpp
- * @example Persistent_cohomology/rips_persistence_step_by_step.cpp
- * @example Persistent_cohomology/rips_persistence_via_boundary_matrix.cpp
- * @example Persistent_cohomology/custom_persistence_sort.cpp
- * @example Persistent_cohomology/persistence_from_simple_simplex_tree.cpp
- * @example Persistent_cohomology/rips_multifield_persistence.cpp
- * @example Skeleton_blocker/Skeleton_blocker_from_simplices.cpp
- * @example Skeleton_blocker/Skeleton_blocker_iteration.cpp
- * @example Skeleton_blocker/Skeleton_blocker_link.cpp
- * @example Contraction/Garland_heckbert.cpp
- * @example Contraction/Rips_contraction.cpp
- * @example Bitmap_cubical_complex/Random_bitmap_cubical_complex.cpp
- * @example common/example_CGAL_3D_points_off_reader.cpp
- * @example common/example_vector_double_points_off_reader.cpp
- * @example common/example_CGAL_points_off_reader.cpp
- * @example Rips_complex/example_one_skeleton_rips_from_distance_matrix.cpp
- * @example Rips_complex/example_one_skeleton_rips_from_points.cpp
- * @example Rips_complex/example_rips_complex_from_csv_distance_matrix_file.cpp
- * @example Rips_complex/example_rips_complex_from_off_file.cpp
- * @example Persistence_representations/persistence_intervals.cpp
- * @example Persistence_representations/persistence_vectors.cpp
- * @example Persistence_representations/persistence_heat_maps.cpp
- * @example Persistence_representations/persistence_landscape_on_grid.cpp
- * @example Persistence_representations/persistence_landscape.cpp
- * @example Tangential_complex/example_basic.cpp
- * @example Tangential_complex/example_with_perturb.cpp
- * @example Subsampling/example_custom_kernel.cpp
- * @example Subsampling/example_choose_n_farthest_points.cpp
- * @example Subsampling/example_sparsify_point_set.cpp
- * @example Subsampling/example_pick_n_random_points.cpp
- * @example Nerve_GIC/CoordGIC.cpp
- * @example Nerve_GIC/Nerve.cpp
- * @example Nerve_GIC/FuncGIC.cpp
- * @example Nerve_GIC/VoronoiGIC.cpp
- * @example Spatial_searching/example_spatial_searching.cpp
- * @example Alpha_complex/alpha_complex_3d_persistence.cpp
- * @example Alpha_complex/alpha_complex_persistence.cpp
- * @example Alpha_complex/weighted_periodic_alpha_complex_3d_persistence.cpp
- * @example Alpha_complex/weighted_alpha_complex_3d_persistence.cpp
- * @example Alpha_complex/periodic_alpha_complex_3d_persistence.cpp
- * @example Alpha_complex/exact_alpha_complex_3d_persistence.cpp
- * @example Bottleneck_distance/bottleneck_distance.cpp
- * @example Witness_complex/weak_witness_persistence.cpp
- * @example Witness_complex/strong_witness_persistence.cpp
- * @example Bitmap_cubical_complex/cubical_complex_persistence.cpp
- * @example Bitmap_cubical_complex/periodic_cubical_complex_persistence.cpp
- * @example common/off_file_from_shape_generator.cpp
- * @example Rips_complex/rips_distance_matrix_persistence.cpp
- * @example Rips_complex/rips_persistence.cpp
- * @example Persistence_representations/persistence_landscapes_on_grid/create_landscapes_on_grid.cpp
- * @example Persistence_representations/persistence_landscapes_on_grid/plot_landscapes_on_grid.cpp
- * @example Persistence_representations/persistence_landscapes_on_grid/compute_scalar_product_of_landscapes_on_grid.cpp
- * @example Persistence_representations/persistence_landscapes_on_grid/compute_distance_of_landscapes_on_grid.cpp
- * @example Persistence_representations/persistence_landscapes_on_grid/average_landscapes_on_grid.cpp
- * @example Persistence_representations/persistence_intervals/compute_birth_death_range_in_persistence_diagram.cpp
- * @example Persistence_representations/persistence_intervals/compute_number_of_dominant_intervals.cpp
- * @example Persistence_representations/persistence_intervals/plot_persistence_Betti_numbers.cpp
- * @example Persistence_representations/persistence_intervals/plot_persistence_intervals.cpp
- * @example Persistence_representations/persistence_intervals/plot_histogram_of_intervals_lengths.cpp
- * @example Persistence_representations/persistence_intervals/compute_bottleneck_distance.cpp
- * @example Persistence_representations/persistence_heat_maps/create_pssk.cpp
- * @example Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_arctan_of_their_persistence.cpp
- * @example Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_squared_diag_distance.cpp
- * @example Persistence_representations/persistence_heat_maps/compute_distance_of_persistence_heat_maps.cpp
- * @example Persistence_representations/persistence_heat_maps/compute_scalar_product_of_persistence_heat_maps.cpp
- * @example Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_distance_from_diagonal.cpp
- * @example Persistence_representations/persistence_heat_maps/average_persistence_heat_maps.cpp
- * @example Persistence_representations/persistence_heat_maps/plot_persistence_heat_map.cpp
- * @example Persistence_representations/persistence_heat_maps/create_persistence_heat_maps.cpp
- * @example Persistence_representations/persistence_vectors/plot_persistence_vectors.cpp
- * @example Persistence_representations/persistence_vectors/compute_distance_of_persistence_vectors.cpp
- * @example Persistence_representations/persistence_vectors/average_persistence_vectors.cpp
- * @example Persistence_representations/persistence_vectors/create_persistence_vectors.cpp
- * @example Persistence_representations/persistence_vectors/compute_scalar_product_of_persistence_vectors.cpp
- * @example Persistence_representations/persistence_landscapes/average_landscapes.cpp
- * @example Persistence_representations/persistence_landscapes/compute_scalar_product_of_landscapes.cpp
- * @example Persistence_representations/persistence_landscapes/create_landscapes.cpp
- * @example Persistence_representations/persistence_landscapes/compute_distance_of_landscapes.cpp
- * @example Persistence_representations/persistence_landscapes/plot_landscapes.cpp
- */
-
diff --git a/doc/common/file_formats.h b/doc/common/file_formats.h
deleted file mode 100644
index 523153b8..00000000
--- a/doc/common/file_formats.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
-* (Geometric Understanding in Higher Dimensions) is a generic C++
-* library for computational topology.
-*
-* Author(s): Clément Jamin
-*
-* Copyright (C) 2017 Inria
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, either version 3 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef DOC_COMMON_FILE_FORMAT_H_
-#define DOC_COMMON_FILE_FORMAT_H_
-
-namespace Gudhi {
-
-/*! \page fileformats File formats
-
- \tableofcontents
-
- \section FileFormatsPers Persistence Diagram
-
- Such a file, whose extension is usually `.pers`, contains a list of persistence intervals.<br>
- Lines starting with `#` are ignored (comments).<br>
- Other lines might contain 2, 3 or 4 values (the number of values on each line must be the same for all lines):
- \verbatim
- [[field] dimension] birth death
- \endverbatim
-
- Here is a simple sample file:
- \verbatim
- # Persistence diagram example
- 2 2.7 3.7
- 2 9.6 14.
- # Some comments
- 3 34.2 34.974
- 4 3. inf
- \endverbatim
-
- Other sample files can be found in the `data/persistence_diagram` folder.
-
- Such files can be generated with `Gudhi::persistent_cohomology::Persistent_cohomology::output_diagram()` and read with
- `Gudhi::read_persistence_intervals_and_dimension()`, `Gudhi::read_persistence_intervals_grouped_by_dimension()` or
- `Gudhi::read_persistence_intervals_in_dimension()`.
-
-
- \section FileFormatsIsoCuboid Iso-cuboid
-
- Such a file describes an iso-oriented cuboid with diagonal opposite vertices (min_x, min_y, min_z,...) and (max_x, max_y, max_z, ...). The format is:<br>
- \verbatim
- min_x min_y [min_z ...]
- max_x max_y [max_z ...]
- \endverbatim
-
- Here is a simple sample file in the 3D case:
- \verbatim
- -1. -1. -1.
- 1. 1. 1.
- \endverbatim
-
-
- \section FileFormatsPerseus Perseus
-
- This file format is the format used by the Perseus software
- (http://www.sas.upenn.edu/~vnanda/perseus/) by Vidit Nanda.
- The first line contains a number d begin the dimension of the
- bitmap (2 in the example below). Next d lines are the numbers of top dimensional cubes in each dimensions (3 and 3
- in the example below). Next, in lexicographical order, the filtration of top dimensional cubes is given (1 4 6 8
- 20 4 7 6 5 in the example below).
-
- \image html "exampleBitmap.png" "Example of a input data."
-
- The input file for the following complex is:
- \verbatim
- 2
- 3
- 3
- 1
- 4
- 6
- 8
- 20
- 4
- 7
- 6
- 5
- \endverbatim
-
- To indicate periodic boundary conditions in a
- given direction, then number of top dimensional cells in this direction have to be multiplied by -1. For instance:
-
- \verbatim
- 2
- -3
- 3
- 1
- 4
- 6
- 8
- 20
- 4
- 7
- 6
- 5
- \endverbatim
-
- Indicate that we have imposed periodic boundary conditions in the direction x, but not in the direction y.
-
- Other sample files can be found in the `data/bitmap` folder.
-
-*/
-} // namespace Gudhi
-
-#endif // DOC_COMMON_FILE_FORMAT_H_
diff --git a/doc/common/footer.html b/doc/common/footer.html
deleted file mode 100644
index a557922b..00000000
--- a/doc/common/footer.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!-- HTML footer for doxygen 1.8.6-->
-<!-- start footer part -->
-<table style="width:100%">
- <tr class="no-bullet shadow-black">
- <td class="network-entypo">
-<!--BEGIN PROJECT_NAME--> $projectname
-<!--BEGIN PROJECT_NUMBER-->&#160;Version $projectnumber<!--END PROJECT_NUMBER-->
-<!--BEGIN PROJECT_BRIEF-->&#160;-&#160;$projectbrief<!--END PROJECT_BRIEF-->
-<!--BEGIN PROJECT_BRIEF-->&#160;-&#160;Copyright : GPL v3<!--END PROJECT_BRIEF-->
-<!--END PROJECT_NAME-->
- </td>
- <td class="network-entypo">
-<!--BEGIN GENERATE_TREEVIEW-->
- $generatedby
- <a href="http://www.doxygen.org/index.html">
- Doxygen</a> $doxygenversion
-<!--END GENERATE_TREEVIEW-->
- </td>
- </tr>
-</table>
-
-</body>
-</html>
diff --git a/doc/common/header.html b/doc/common/header.html
deleted file mode 100644
index c12d2816..00000000
--- a/doc/common/header.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!-- HTML header for doxygen 1.8.6-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- GUDHI website : class="no-js" lang="en" is necessary -->
-<html xmlns="http://www.w3.org/1999/xhtml" class="no-js" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen $doxygenversion"/>
-<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
-<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
-<!-- GUDHI website css for header BEGIN -->
-<link rel="stylesheet" type="text/css" href="https://gudhi.inria.fr/assets/css/styles_feeling_responsive.css" />
-<!-- GUDHI website css for header END -->
-<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="$relpath^jquery.js"></script>
-<script type="text/javascript" src="$relpath^dynsections.js"></script>
-$treeview
-$search
-$mathjax
-<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
-$extrastylesheet
-</head>
-<body>
-
-<!-- GUDHI website header BEGIN -->
-<div id="navigation" class="sticky">
- <nav class="top-bar" role="navigation" data-topbar>
- <ul class="title-area">
- <li class="name">
- <h1 class="show-for-small-only"><a href="" class="icon-tree"> GUDHI C++ library</a></h1>
- </li>
- <!-- Remove the class "menu-icon" to get rid of menu icon. Take out "Menu" to just have icon alone -->
- <li class="toggle-topbar menu-icon"><a href="#"><span>Navigation</span></a></li>
- </ul>
- <section class="top-bar-section">
- <ul class="right">
- <li class="divider"></li>
- <li><a href="/contact/">Contact</a></li>
- </ul>
- <ul class="left">
- <li><a href="/"> <img src="/assets/img/home.png" alt="&nbsp;&nbsp;GUDHI">&nbsp;&nbsp;GUDHI </a></li>
- <li class="divider"></li>
- <li class="has-dropdown">
- <a href="#">Project</a>
- <ul class="dropdown">
- <li><a href="/people/">People</a></li>
- <li><a href="/keepintouch/">Keep in touch</a></li>
- <li><a href="/partners/">Partners and Funding</a></li>
- <li><a href="/relatedprojects/">Related projects</a></li>
- <li><a href="/theyaretalkingaboutus/">They are talking about us</a></li>
- </ul>
- </li>
- <li class="divider"></li>
- <li class="has-dropdown">
- <a href="#">Download</a>
- <ul class="dropdown">
- <li><a href="/licensing/">Licensing</a></li>
- <li><a href="https://gforge.inria.fr/frs/download.php/latestzip/5253/library-latest.zip" target="_blank">Get the latest sources</a></li>
- <li><a href="https://gforge.inria.fr/frs/download.php/latestzip/5280/utils_osx-latest.zip" target="_blank">Utils for Mac OSx</a></li>
- <li><a href="https://gforge.inria.fr/frs/download.php/latestzip/5279/utils_win64-latest.zip" target="_blank">Utils for Win x64</a></li>
- </ul>
- </li>
- <li class="divider"></li>
- <li class="has-dropdown">
- <a href="#">Documentation</a>
- <ul class="dropdown">
- <li><a href="/doc/latest/">C++ documentation</a></li>
- <li><a href="/doc/latest/installation.html">C++ installation manual</a></li>
- <li><a href="/python/latest/">Python documentation</a></li>
- <li><a href="/python/latest/installation.html">Python installation manual</a></li>
- <li><a href="/utils/">Utilities</a></li>
- <li><a href="/tutorials/">Tutorials</a></li>
- <li><a href="/dockerfile/">Dockerfile</a></li>
- </ul>
- </li>
- <li class="divider"></li>
- <li><a href="/interfaces/">Interfaces</a></li>
- <li class="divider"></li>
- </ul>
- </section>
- </nav>
-</div><!-- /#navigation -->
-<!-- GUDHI website header BEGIN -->
-
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-
-<!--BEGIN TITLEAREA-->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 30px;">
- <!--BEGIN DISABLE_INDEX-->
- <!--BEGIN SEARCHENGINE-->
- <td>$searchbox</td>
- <!--END SEARCHENGINE-->
- <!--END DISABLE_INDEX-->
- </tr>
- </tbody>
-</table>
-</div>
-<!--END TITLEAREA-->
-<!-- end header part -->
diff --git a/doc/common/installation.h b/doc/common/installation.h
deleted file mode 100644
index c27e4f56..00000000
--- a/doc/common/installation.h
+++ /dev/null
@@ -1,280 +0,0 @@
-/*! \page installation GUDHI installation
- * \tableofcontents
- * As GUDHI is a header only library, there is no need to install the library.
- *
- * Examples of GUDHI headers inclusion can be found in \ref utilities.
- *
- * \section compiling Compiling
- * The library uses c++11 and requires <a target="_blank" href="http://www.boost.org/">Boost</a> &ge; 1.48.0
- * and <a target="_blank" href="https://www.cmake.org/">CMake</a> &ge; 3.1.
- * It is a multi-platform library and compiles on Linux, Mac OSX and Visual Studio 2015.
- *
- * \subsection utilities Utilities and examples
- * To build the utilities, run the following commands in a terminal:
-\verbatim cd /path-to-gudhi/
-mkdir build
-cd build/
-cmake ..
-make \endverbatim
- * By default, examples are disabled. You can activate their compilation with
- * <a href="https://cmake.org/cmake/help/v3.0/manual/ccmake.1.html">ccmake</a> (on Linux and Mac OSX),
- * <a href="https://cmake.org/cmake/help/v3.0/manual/cmake-gui.1.html">cmake-gui</a> (on Windows) or y mofifying the
- * cmake command as follows :
-\verbatim cmake -DWITH_GUDHI_EXAMPLE=ON ..
-make \endverbatim
- * A list of utilities and examples is available <a href="examples.html">here</a>.
- *
- * \subsection libraryinstallation Installation
- * To install the library (headers and activated utilities), run the following command in a terminal:
- * \verbatim make install \endverbatim
- * This action may require to be in the sudoer or administrator of the machine in function of the operating system and
- * of <a href="https://cmake.org/cmake/help/v3.0/variable/CMAKE_INSTALL_PREFIX.html">CMAKE_INSTALL_PREFIX</a>.
- *
- * \subsection testsuites Test suites
- * To test your build, run the following command in a terminal:
- * \verbatim make test \endverbatim
- *
- * \subsection documentationgeneration Documentation
- * To generate the documentation, <a target="_blank" href="http://www.doxygen.org/">Doxygen</a> is required.
- * Run the following command in a terminal:
-\verbatim
-make doxygen
-# Documentation will be generated in the folder YYYY-MM-DD-hh-mm-ss_GUDHI_X.Y.Z/doc/html/
-# You can customize the directory name by calling `cmake -DUSER_VERSION_DIR=/my/custom/folder`
-\endverbatim
- *
- * \subsection helloworld Hello world !
- * The <a target="_blank" href="https://gitlab.inria.fr/GUDHI/hello-gudhi-world">Hello world for GUDHI</a>
- * project is an example to help developers to make their own C++ project on top of the GUDHI library.
- *
- * \section optionallibrary Optional third-party library
- * \subsection gmp GMP
- * The multi-field persistent homology algorithm requires GMP which is a free library for arbitrary-precision
- * arithmetic, operating on signed integers, rational numbers, and floating point numbers.
- *
- * The following example requires the <a target="_blank" href="http://gmplib.org/">GNU Multiple Precision Arithmetic
- * Library</a> (GMP) and will not be built if GMP is not installed:
- * \li <a href="_persistent_cohomology_2rips_multifield_persistence_8cpp-example.html">
- * Persistent_cohomology/rips_multifield_persistence.cpp</a>
- *
- * Having GMP version 4.2 or higher installed is recommended.
- *
- * \subsection cgal CGAL
- * The \ref alpha_complex data structure, \ref bottleneck_distance, and few examples requires CGAL, which is a C++
- * library which provides easy access to efficient and reliable geometric algorithms.
- *
- * \note There is no need to install CGAL, you can just <CODE>cmake . && make</CODE> CGAL (or even
- * <CODE>cmake -DCGAL_HEADER_ONLY=ON .</CODE> for CGAL version &ge; 4.8.0), thereafter you will be able to compile
- * GUDHI by calling <CODE>cmake -DCGAL_DIR=/your/path/to/CGAL-X.Y .. && make</CODE>
- *
- * Having CGAL version 4.4.0 or higher installed is recommended. The procedure to install this library according to
- * your operating system is detailed here http://doc.cgal.org/latest/Manual/installation.html
- *
- * The following examples/utilities require the <a target="_blank" href="http://www.cgal.org/">Computational Geometry Algorithms
- * Library</a> (CGAL \cite cgal:eb-15b) and will not be built if CGAL is not installed:
- * \li <a href="_alpha_complex_2alpha_complex_3d_persistence_8cpp-example.html">
- * Alpha_complex/alpha_complex_3d_persistence.cpp</a>
- * \li <a href="_alpha_complex_2exact_alpha_complex_3d_persistence_8cpp-example.html">
- * Alpha_complex/exact_alpha_complex_3d_persistence.cpp</a>
- * \li <a href="_alpha_complex_2weighted_alpha_complex_3d_persistence_8cpp-example.html">
- * Alpha_complex/weighted_alpha_complex_3d_persistence.cpp</a>
- * \li <a href="_simplex_tree_2example_alpha_shapes_3_simplex_tree_from_off_file_8cpp-example.html">
- * Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp</a>
- *
- * The following examples/utilities require CGAL version &ge; 4.6.0:
- * \li <a href="_witness_complex_2strong_witness_persistence_8cpp-example.html">
- * Witness_complex/strong_witness_persistence.cpp</a>
- * \li <a href="_witness_complex_2weak_witness_persistence_8cpp-example.html">
- * Witness_complex/weak_witness_persistence.cpp</a>
- * \li <a href="_witness_complex_2example_strong_witness_complex_off_8cpp-example.html">
- * Witness_complex/example_strong_witness_complex_off.cpp</a>
- * \li <a href="_witness_complex_2example_witness_complex_off_8cpp-example.html">
- * Witness_complex/example_witness_complex_off.cpp</a>
- * \li <a href="_witness_complex_2example_witness_complex_sphere_8cpp-example.html">
- * Witness_complex/example_witness_complex_sphere.cpp</a>
- *
- * The following example requires CGAL version &ge; 4.7.0:
- * \li <a href="_alpha_complex_2_alpha_complex_from_off_8cpp-example.html">
- * Alpha_complex/Alpha_complex_from_off.cpp</a>
- * \li <a href="_alpha_complex_2_alpha_complex_from_points_8cpp-example.html">
- * Alpha_complex/Alpha_complex_from_points.cpp</a>
- * \li <a href="_alpha_complex_2alpha_complex_persistence_8cpp-example.html">
- * Alpha_complex/alpha_complex_persistence.cpp</a>
- * \li <a href="_alpha_complex_2periodic_alpha_complex_3d_persistence_8cpp-example.html">
- * Alpha_complex/periodic_alpha_complex_3d_persistence.cpp</a>
- * \li <a href="_persistent_cohomology_2custom_persistence_sort_8cpp-example.html">
- * Persistent_cohomology/custom_persistence_sort.cpp</a>
- *
- * The following example requires CGAL version &ge; 4.8.1:
- * \li <a href="_bottleneck_distance_2alpha_rips_persistence_bottleneck_distance_8cpp-example.html">
- * Bottleneck_distance/alpha_rips_persistence_bottleneck_distance.cpp.cpp</a>
- * \li <a href="_bottleneck_distance_2bottleneck_basic_example_8cpp-example.html">
- * Bottleneck_distance/bottleneck_basic_example.cpp</a>
- * \li <a href="_bottleneck_distance_2bottleneck_read_file_8cpp-example.html">
- * Bottleneck_distance/bottleneck_distance.cpp</a>
- * \li <a href="_nerve__g_i_c_2_coord_g_i_c_8cpp-example.html">
- * Nerve_GIC/CoordGIC.cpp</a>
- * \li <a href="_nerve__g_i_c_2_func_g_i_c_8cpp-example.html">
- * Nerve_GIC/FuncGIC.cpp</a>
- * \li <a href="_nerve__g_i_c_2_nerve_8cpp-example.html">
- * Nerve_GIC/Nerve.cpp</a>
- * \li <a href="_nerve__g_i_c_2_voronoi_g_i_c_8cpp-example.html">
- * Nerve_GIC/VoronoiGIC.cpp</a>
- * \li <a href="_spatial_searching_2example_spatial_searching_8cpp-example.html">
- * Spatial_searching/example_spatial_searching.cpp</a>
- * \li <a href="_subsampling_2example_choose_n_farthest_points_8cpp-example.html">
- * Subsampling/example_choose_n_farthest_points.cpp</a>
- * \li <a href="_subsampling_2example_custom_kernel_8cpp-example.html">
- * Subsampling/example_custom_kernel.cpp</a>
- * \li <a href="_subsampling_2example_pick_n_random_points_8cpp-example.html">
- * Subsampling/example_pick_n_random_points.cpp</a>
- * \li <a href="_subsampling_2example_sparsify_point_set_8cpp-example.html">
- * Subsampling/example_sparsify_point_set.cpp</a>
- * \li <a href="_tangential_complex_2example_basic_8cpp-example.html">
- * Tangential_complex/example_basic.cpp</a>
- * \li <a href="_tangential_complex_2example_with_perturb_8cpp-example.html">
- * Tangential_complex/example_with_perturb.cpp</a>
- *
- * \subsection eigen3 Eigen3
- * The \ref alpha_complex data structure and few examples requires
- * <a target="_blank" href="http://eigen.tuxfamily.org/">Eigen3</a> is a C++ template library for linear algebra:
- * matrices, vectors, numerical solvers, and related algorithms.
- *
- * The following examples/utilities require the <a target="_blank" href="http://eigen.tuxfamily.org/">Eigen3</a> and will not be
- * built if Eigen3 is not installed:
- * \li <a href="_alpha_complex_2_alpha_complex_from_off_8cpp-example.html">
- * Alpha_complex/Alpha_complex_from_off.cpp</a>
- * \li <a href="_alpha_complex_2_alpha_complex_from_points_8cpp-example.html">
- * Alpha_complex/Alpha_complex_from_points.cpp</a>
- * \li <a href="_alpha_complex_2alpha_complex_persistence_8cpp-example.html">
- * Alpha_complex/alpha_complex_persistence.cpp</a>
- * \li <a href="_alpha_complex_2periodic_alpha_complex_3d_persistence_8cpp-example.html">
- * Alpha_complex/periodic_alpha_complex_3d_persistence.cpp</a>
- * \li <a href="_bottleneck_distance_2alpha_rips_persistence_bottleneck_distance_8cpp-example.html">
- * Bottleneck_distance/alpha_rips_persistence_bottleneck_distance.cpp.cpp</a>
- * \li <a href="_persistent_cohomology_2custom_persistence_sort_8cpp-example.html">
- * Persistent_cohomology/custom_persistence_sort.cpp</a>
- * \li <a href="_spatial_searching_2example_spatial_searching_8cpp-example.html">
- * Spatial_searching/example_spatial_searching.cpp</a>
- * \li <a href="_subsampling_2example_choose_n_farthest_points_8cpp-example.html">
- * Subsampling/example_choose_n_farthest_points.cpp</a>
- * \li <a href="_subsampling_2example_custom_kernel_8cpp-example.html">
- * Subsampling/example_custom_kernel.cpp</a>
- * \li <a href="_subsampling_2example_pick_n_random_points_8cpp-example.html">
- * Subsampling/example_pick_n_random_points.cpp</a>
- * \li <a href="_subsampling_2example_sparsify_point_set_8cpp-example.html">
- * Subsampling/example_sparsify_point_set.cpp</a>
- * \li <a href="_tangential_complex_2example_basic_8cpp-example.html">
- * Tangential_complex/example_basic.cpp</a>
- * \li <a href="_tangential_complex_2example_with_perturb_8cpp-example.html">
- * Tangential_complex/example_with_perturb.cpp</a>
- * \li <a href="_witness_complex_2strong_witness_persistence_8cpp-example.html">
- * Witness_complex/strong_witness_persistence.cpp</a>
- * \li <a href="_witness_complex_2weak_witness_persistence_8cpp-example.html">
- * Witness_complex/weak_witness_persistence.cpp</a>
- * \li <a href="_witness_complex_2example_strong_witness_complex_off_8cpp-example.html">
- * Witness_complex/example_strong_witness_complex_off.cpp</a>
- * \li <a href="_witness_complex_2example_witness_complex_off_8cpp-example.html">
- * Witness_complex/example_witness_complex_off.cpp</a>
- * \li <a href="_witness_complex_2example_witness_complex_sphere_8cpp-example.html">
- * Witness_complex/example_witness_complex_sphere.cpp</a>
- *
- * \subsection tbb Threading Building Blocks
- * <a target="_blank" href="https://www.threadingbuildingblocks.org/">Intel&reg; TBB</a> lets you easily write parallel
- * C++ programs that take full advantage of multicore performance, that are portable and composable, and that have
- * future-proof scalability.
- *
- * Having Intel&reg; TBB installed is recommended to parallelize and accelerate some GUDHI computations.
- *
- * The following examples/utilities are using Intel&reg; TBB if installed:
- * \li <a href="_alpha_complex_2_alpha_complex_from_off_8cpp-example.html">
- * Alpha_complex/Alpha_complex_from_off.cpp</a>
- * \li <a href="_alpha_complex_2_alpha_complex_from_points_8cpp-example.html">
- * Alpha_complex/Alpha_complex_from_points.cpp</a>
- * \li <a href="_alpha_complex_2alpha_complex_3d_persistence_8cpp-example.html">
- * Alpha_complex/alpha_complex_3d_persistence.cpp</a>
- * \li <a href="_alpha_complex_2alpha_complex_persistence_8cpp-example.html">
- * Alpha_complex/alpha_complex_persistence.cpp</a>
- * \li <a href="_alpha_complex_2exact_alpha_complex_3d_persistence_8cpp-example.html">
- * Alpha_complex/exact_alpha_complex_3d_persistence.cpp</a>
- * \li <a href="_alpha_complex_2periodic_alpha_complex_3d_persistence_8cpp-example.html">
- * Alpha_complex/periodic_alpha_complex_3d_persistence.cpp</a>
- * \li <a href="_alpha_complex_2weighted_alpha_complex_3d_persistence_8cpp-example.html">
- * Alpha_complex/weighted_alpha_complex_3d_persistence.cpp</a>
- * \li <a href="_bitmap_cubical_complex_2_bitmap_cubical_complex_8cpp-example.html">
- * Bitmap_cubical_complex/cubical_complex_persistence.cpp</a>
- * \li <a href="_bitmap_cubical_complex_2_bitmap_cubical_complex_periodic_boundary_conditions_8cpp-example.html">
- * Bitmap_cubical_complex/periodic_cubical_complex_persistence.cpp</a>
- * \li <a href="_bitmap_cubical_complex_2_random_bitmap_cubical_complex_8cpp-example.html">
- * Bitmap_cubical_complex/Random_bitmap_cubical_complex.cpp</a>
- * \li <a href="_nerve__g_i_c_2_coord_g_i_c_8cpp-example.html">
- * Nerve_GIC/CoordGIC.cpp</a>
- * \li <a href="_nerve__g_i_c_2_func_g_i_c_8cpp-example.html">
- * Nerve_GIC/FuncGIC.cpp</a>
- * \li <a href="_nerve__g_i_c_2_nerve_8cpp-example.html">
- * Nerve_GIC/Nerve.cpp</a>
- * \li <a href="_nerve__g_i_c_2_voronoi_g_i_c_8cpp-example.html">
- * Nerve_GIC/VoronoiGIC.cpp</a>
- * \li <a href="_simplex_tree_2simple_simplex_tree_8cpp-example.html">
- * Simplex_tree/simple_simplex_tree.cpp</a>
- * \li <a href="_simplex_tree_2example_alpha_shapes_3_simplex_tree_from_off_file_8cpp-example.html">
- * Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp</a>
- * \li <a href="_simplex_tree_2simplex_tree_from_cliques_of_graph_8cpp-example.html">
- * Simplex_tree/simplex_tree_from_cliques_of_graph.cpp</a>
- * \li <a href="_simplex_tree_2graph_expansion_with_blocker_8cpp-example.html">
- * Simplex_tree/graph_expansion_with_blocker.cpp</a>
- * \li <a href="_persistent_cohomology_2alpha_complex_3d_persistence_8cpp-example.html">
- * Persistent_cohomology/alpha_complex_3d_persistence.cpp</a>
- * \li <a href="_persistent_cohomology_2alpha_complex_persistence_8cpp-example.html">
- * Persistent_cohomology/alpha_complex_persistence.cpp</a>
- * \li <a href="_persistent_cohomology_2rips_persistence_via_boundary_matrix_8cpp-example.html">
- * Persistent_cohomology/rips_persistence_via_boundary_matrix.cpp</a>
- * \li <a href="_persistent_cohomology_2persistence_from_file_8cpp-example.html">
- * Persistent_cohomology/persistence_from_file.cpp</a>
- * \li <a href="_persistent_cohomology_2persistence_from_simple_simplex_tree_8cpp-example.html">
- * Persistent_cohomology/persistence_from_simple_simplex_tree.cpp</a>
- * \li <a href="_persistent_cohomology_2plain_homology_8cpp-example.html">
- * Persistent_cohomology/plain_homology.cpp</a>
- * \li <a href="_persistent_cohomology_2rips_multifield_persistence_8cpp-example.html">
- * Persistent_cohomology/rips_multifield_persistence.cpp</a>
- * \li <a href="_persistent_cohomology_2rips_persistence_step_by_step_8cpp-example.html">
- * Persistent_cohomology/rips_persistence_step_by_step.cpp</a>
- * \li <a href="_persistent_cohomology_2exact_alpha_complex_3d_persistence_8cpp-example.html">
- * Persistent_cohomology/exact_alpha_complex_3d_persistence.cpp</a>
- * \li <a href="_persistent_cohomology_2weighted_alpha_complex_3d_persistence_8cpp-example.html">
- * Persistent_cohomology/weighted_alpha_complex_3d_persistence.cpp</a>
- * \li <a href="_persistent_cohomology_2custom_persistence_sort_8cpp-example.html">
- * Persistent_cohomology/custom_persistence_sort.cpp</a>
- * \li <a href="_rips_complex_2example_one_skeleton_rips_from_points_8cpp-example.html">
- * Rips_complex/example_one_skeleton_rips_from_points.cpp</a>
- * \li <a href="_rips_complex_2example_rips_complex_from_off_file_8cpp-example.html">
- * Rips_complex/example_rips_complex_from_off_file.cpp</a>
- * \li <a href="_rips_complex_2rips_distance_matrix_persistence_8cpp-example.html">
- * Rips_complex/rips_distance_matrix_persistence.cpp</a>
- * \li <a href="_rips_complex_2rips_persistence_8cpp-example.html">
- * Rips_complex/rips_persistence.cpp</a>
- * \li <a href="_witness_complex_2strong_witness_persistence_8cpp-example.html">
- * Witness_complex/strong_witness_persistence.cpp</a>
- * \li <a href="_witness_complex_2weak_witness_persistence_8cpp-example.html">
- * Witness_complex/weak_witness_persistence.cpp</a>
- * \li <a href="_witness_complex_2example_nearest_landmark_table_8cpp-example.html">
- * Witness_complex/example_nearest_landmark_table.cpp</a>
- *
- * \section Contributions Bug reports and contributions
- * Please help us improving the quality of the GUDHI library. You may report bugs or suggestions to:
- * \verbatim Contact: gudhi-users@lists.gforge.inria.fr \endverbatim
- *
- * GUDHI is open to external contributions. If you want to join our development team, please contact us.
- *
-*/
-
-/*! \page Citation Acknowledging the GUDHI library
- * We kindly ask users to cite the GUDHI library as appropriately as possible in their papers, and to mention the use
- * of the GUDHI library on the web pages of their projects using GUDHI and provide us with links to these web pages.
- * Feel free to contact us in case you have any question or remark on this topic.
- *
- * We provide \ref GudhiBibtex entries for the modules of the User and Reference Manual, as well as for publications
- * directly related to the GUDHI library.
- * \section GudhiBibtex GUDHI bibtex
- * \verbinclude biblio/how_to_cite_gudhi.bib
-*/
diff --git a/doc/common/main_page.h b/doc/common/main_page.h
deleted file mode 100644
index db1e80ce..00000000
--- a/doc/common/main_page.h
+++ /dev/null
@@ -1,269 +0,0 @@
-/*! \mainpage The C++ library
- * \tableofcontents
- * \image html "Gudhi_banner.png" "" width=20cm
- *
- * \section Introduction Introduction
- * The GUDHI library (Geometry Understanding in Higher Dimensions) is a generic open source
- * <a class="el" target="_blank" href="http://gudhi.gforge.inria.fr/doc/latest/">C++ library</a> for
- * Computational Topology and Topological Data Analysis
- * (<a class="el" target="_blank" href="https://en.wikipedia.org/wiki/Topological_data_analysis">TDA</a>).
- * The GUDHI library intends to help the development of new algorithmic solutions in TDA and their transfer to
- * applications. It provides robust, efficient, flexible and easy to use implementations of state-of-the-art
- * algorithms and data structures.
- *
- * The current release of the GUDHI library includes:
- *
- * \li Data structures to represent, construct and manipulate simplicial complexes.
- * \li Simplification of simplicial complexes by edge contraction.
- * \li Algorithms to compute persistent homology and bottleneck distance.
- *
- * All data-structures are generic and several of their aspects can be parameterized via template classes.
- * We refer to \cite gudhilibrary_ICMS14 for a detailed description of the design of the library.
- *
- \section DataStructures Data structures
- \subsection AlphaComplexDataStructure Alpha complex
- \image html "alpha_complex_representation.png" "Alpha complex representation"
-<table border="0">
- <tr>
- <td width="25%">
- <b>Author:</b> Vincent Rouvreau<br>
- <b>Introduced in:</b> GUDHI 1.3.0<br>
- <b>Copyright:</b> GPL v3<br>
- <b>Requires:</b> \ref cgal &ge; 4.7.0 and \ref eigen3
- </td>
- <td width="75%">
- Alpha_complex is a simplicial complex constructed from the finite cells of a Delaunay Triangulation.<br>
- The filtration value of each simplex is computed as the square of the circumradius of the simplex if the
- circumsphere is empty (the simplex is then said to be Gabriel), and as the minimum of the filtration
- values of the codimension 1 cofaces that make it not Gabriel otherwise.
- All simplices that have a filtration value strictly greater than a given alpha squared value are not inserted into
- the complex.<br>
- <b>User manual:</b> \ref alpha_complex - <b>Reference manual:</b> Gudhi::alpha_complex::Alpha_complex
- </td>
- </tr>
-</table>
- \subsection CechComplexDataStructure Čech complex
- \image html "cech_complex_representation.png" "Čech complex representation"
-<table border="0">
- <tr>
- <td width="25%">
- <b>Author:</b> Vincent Rouvreau<br>
- <b>Introduced in:</b> GUDHI 2.2.0<br>
- <b>Copyright:</b> GPL v3<br>
- </td>
- <td width="75%">
- The Čech complex is a simplicial complex constructed from a proximity graph.<br>
- The set of all simplices is filtered by the radius of their minimal enclosing ball.<br>
- <b>User manual:</b> \ref cech_complex - <b>Reference manual:</b> Gudhi::cech_complex::Cech_complex
- </td>
- </tr>
-</table>
- \subsection CubicalComplexDataStructure Cubical complex
- \image html "Cubical_complex_representation.png" "Cubical complex representation"
-<table border="0">
- <tr>
- <td width="25%">
- <b>Author:</b> Pawel Dlotko<br>
- <b>Introduced in:</b> GUDHI 1.3.0<br>
- <b>Copyright:</b> GPL v3<br>
- </td>
- <td width="75%">
- The cubical complex is an example of a structured complex useful in computational mathematics (specially
- rigorous numerics) and image analysis.<br>
- <b>User manual:</b> \ref cubical_complex - <b>Reference manual:</b> Gudhi::cubical_complex::Bitmap_cubical_complex
- </td>
- </tr>
-</table>
- \subsection RipsComplexDataStructure Rips complex
- \image html "rips_complex_representation.png" "Rips complex representation"
-<table border="0">
- <tr>
- <td width="25%">
- <b>Author:</b> Cl&eacute;ment Maria, Pawel Dlotko, Vincent Rouvreau, Marc Glisse<br>
- <b>Introduced in:</b> GUDHI 2.0.0<br>
- <b>Copyright:</b> GPL v3<br>
- </td>
- <td width="75%">
- Rips_complex is a simplicial complex constructed from a one skeleton graph.<br>
- The filtration value of each edge is computed from a user-given distance function and is inserted until a
- user-given threshold value.<br>
- This complex can be built from a point cloud and a distance function, or from a distance matrix.<br>
- <b>User manual:</b> \ref rips_complex - <b>Reference manual:</b> Gudhi::rips_complex::Rips_complex
- </td>
- </tr>
-</table>
- \subsection SimplexTreeDataStructure Simplex tree
- \image html "Simplex_tree_representation.png" "Simplex tree representation"
-<table border="0">
- <tr>
- <td width="25%">
- <b>Author:</b> Cl&eacute;ment Maria<br>
- <b>Introduced in:</b> GUDHI 1.0.0<br>
- <b>Copyright:</b> GPL v3<br>
- </td>
- <td width="75%">
- The simplex tree is an efficient and flexible
- data structure for representing general (filtered) simplicial complexes. The data structure
- is described in \cite boissonnatmariasimplextreealgorithmica .<br>
- <b>User manual:</b> \ref simplex_tree - <b>Reference manual:</b> Gudhi::Simplex_tree
- </td>
- </tr>
-</table>
- \subsection CoverComplexDataStructure Cover Complexes
- \image html "gicvisu.jpg" "Graph Induced Complex of a point cloud."
-<table border="0">
- <tr>
- <td width="25%">
- <b>Author:</b> Mathieu Carri&egrave;re<br>
- <b>Introduced in:</b> GUDHI 2.1.0<br>
- <b>Copyright:</b> GPL v3<br>
- <b>Requires:</b> \ref cgal &ge; 4.8.1
- </td>
- <td width="75%">
- Nerves and Graph Induced Complexes are cover complexes, i.e. simplicial complexes that provably contain
- topological information about the input data. They can be computed with a cover of the
- data, that comes i.e. from the preimage of a family of intervals covering the image
- of a scalar-valued function defined on the data. <br>
- <b>User manual:</b> \ref cover_complex - <b>Reference manual:</b> Gudhi::cover_complex::Cover_complex
- </td>
- </tr>
-</table>
- \subsection SkeletonBlockerDataStructure Skeleton blocker
- \image html "ds_representation.png" "Skeleton blocker representation"
-<table border="0">
- <tr>
- <td width="25%">
- <b>Author:</b> David Salinas<br>
- <b>Introduced in:</b> GUDHI 1.1.0<br>
- <b>Copyright:</b> GPL v3<br>
- </td>
- <td width="75%">
- The Skeleton-Blocker data-structure proposes a light encoding for simplicial complexes by storing only an *implicit*
- representation of its simplices \cite socg_blockers_2011,\cite blockers2012. Intuitively, it just stores the
- 1-skeleton of a simplicial complex with a graph and the set of its "missing faces" that is very small in practice.
- This data-structure handles all simplicial complexes operations such as simplex enumeration or simplex removal but
- operations that are particularly efficient are operations that do not require simplex enumeration such as edge
- iteration, link computation or simplex contraction.<br>
- <b>User manual:</b> \ref skbl - <b>Reference manual:</b> Gudhi::skeleton_blocker::Skeleton_blocker_complex
- </td>
- </tr>
-</table>
- \subsection TangentialComplexDataStructure Tangential complex
- \image html "tc_examples.png" "Tangential complex representation"
-<table border="0">
- <tr>
- <td width="25%">
- <b>Author:</b> Cl&eacute;ment Jamin<br>
- <b>Introduced in:</b> GUDHI 2.0.0<br>
- <b>Copyright:</b> GPL v3<br>
- <b>Requires:</b> \ref cgal &ge; 4.8.1 and \ref eigen3
- </td>
- <td width="75%">
- A Tangential Delaunay complex is a <a target="_blank" href="https://en.wikipedia.org/wiki/Simplicial_complex">simplicial complex</a>
- designed to reconstruct a \f$ k \f$-dimensional manifold embedded in \f$ d \f$-dimensional Euclidean space.
- The input is a point sample coming from an unknown manifold.
- The running time depends only linearly on the extrinsic dimension \f$ d \f$
- and exponentially on the intrinsic dimension \f$ k \f$.<br>
- <b>User manual:</b> \ref tangential_complex - <b>Reference manual:</b> Gudhi::tangential_complex::Tangential_complex
- </td>
- </tr>
-</table>
- \subsection WitnessComplexDataStructure Witness complex
- \image html "Witness_complex_representation.png" "Witness complex representation"
-<table border="0">
- <tr>
- <td width="25%">
- <b>Author:</b> Siargey Kachanovich<br>
- <b>Introduced in:</b> GUDHI 1.3.0<br>
- <b>Copyright:</b> GPL v3<br>
- <b>Euclidean version requires:</b> \ref cgal &ge; 4.6.0 and \ref eigen3
- </td>
- <td width="75%">
- Witness complex \f$ Wit(W,L) \f$ is a simplicial complex defined on two sets of points in \f$\mathbb{R}^D\f$.
- The data structure is described in \cite boissonnatmariasimplextreealgorithmica .<br>
- <b>User manual:</b> \ref witness_complex - <b>Reference manual:</b> Gudhi::witness_complex::SimplicialComplexForWitness
- </td>
- </tr>
-</table>
-
- \section Toolbox Toolbox
-
- \subsection BottleneckDistanceToolbox Bottleneck distance
- \image html "perturb_pd.png" "Bottleneck distance is the length of the longest edge"
-<table border="0">
- <tr>
- <td width="25%">
- <b>Author:</b> Fran&ccedil;ois Godi<br>
- <b>Introduced in:</b> GUDHI 2.0.0<br>
- <b>Copyright:</b> GPL v3<br>
- <b>Requires:</b> \ref cgal &ge; 4.8.1
- </td>
- <td width="75%">
- Bottleneck distance measures the similarity between two persistence diagrams.
- It's the shortest distance b for which there exists a perfect matching between
- the points of the two diagrams (+ all the diagonal points) such that
- any couple of matched points are at distance at most b.
- <br>
- <b>User manual:</b> \ref bottleneck_distance
- </td>
- </tr>
-</table>
- \subsection ContractionToolbox Contraction
- \image html "sphere_contraction_representation.png" "Sphere contraction example"
-<table border="0">
- <tr>
- <td width="25%">
- <b>Author:</b> David Salinas<br>
- <b>Introduced in:</b> GUDHI 1.1.0<br>
- <b>Copyright:</b> GPL v3<br>
- </td>
- <td width="75%">
- The purpose of this package is to offer a user-friendly interface for edge contraction simplification of huge
- simplicial complexes. It uses the \ref skbl data-structure whose size remains small during simplification of most
- used geometrical complexes of topological data analysis such as the Rips or the Delaunay complexes. In practice,
- the size of this data-structure is even much lower than the total number of simplices.<br>
- <b>User manual:</b> \ref contr
- </td>
- </tr>
-</table>
- \subsection PersistentCohomologyToolbox Persistent Cohomology
- \image html "3DTorus_poch.png" "Rips Persistent Cohomology on a 3D Torus"
-<table border="0">
- <tr>
- <td width="25%">
- <b>Author:</b> Cl&eacute;ment Maria<br>
- <b>Introduced in:</b> GUDHI 1.0.0<br>
- <b>Copyright:</b> GPL v3<br>
- </td>
- <td width="75%">
- The theory of homology consists in attaching to a topological space a sequence of (homology) groups, capturing
- global topological features like connected components, holes, cavities, etc. Persistent homology studies the
- evolution -- birth, life and death -- of these features when the topological space is changing. Consequently, the
- theory is essentially composed of three elements: topological spaces, their homology groups and an evolution
- scheme.
- Computation of persistent cohomology using the algorithm of \cite DBLP:journals/dcg/SilvaMV11 and
- \cite DBLP:journals/corr/abs-1208-5018 and the Compressed Annotation Matrix implementation of
- \cite DBLP:conf/esa/BoissonnatDM13 .<br>
- <b>User manual:</b> \ref persistent_cohomology - <b>Reference manual:</b> Gudhi::persistent_cohomology::Persistent_cohomology
- </td>
- </tr>
-</table>
- \subsection PersistenceRepresentationsToolbox Persistence representations
- \image html "average_landscape.png" "Persistence representations"
-<table border="0">
- <tr>
- <td width="25%">
- <b>Author:</b> Pawel Dlotko<br>
- <b>Introduced in:</b> GUDHI 2.1.0<br>
- <b>Copyright:</b> GPL v3<br>
- </td>
- <td width="75%">
- It contains implementation of various representations of persistence diagrams; diagrams themselves, persistence
- landscapes (rigorous and grid version), persistence heath maps, vectors and others. It implements basic
- functionalities which are neccessary to use persistence in statistics and machine learning.<br>
- <b>User manual:</b> \ref Persistence_representations
- </td>
- </tr>
-</table>
-
-*/
diff --git a/doc/common/offline_header.html b/doc/common/offline_header.html
deleted file mode 100644
index 6a02a895..00000000
--- a/doc/common/offline_header.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!-- HTML header for doxygen 1.8.6-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- GUDHI website : class="no-js" lang="en" is necessary -->
-<html xmlns="http://www.w3.org/1999/xhtml" class="no-js" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen $doxygenversion"/>
-<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
-<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
-<!-- GUDHI website css for header END -->
-<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="$relpath^jquery.js"></script>
-<script type="text/javascript" src="$relpath^dynsections.js"></script>
-$treeview
-$search
-$mathjax
-<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
-$extrastylesheet
-</head>
-<body>
-
-
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-
-<!--BEGIN TITLEAREA-->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 30px;">
- <!--BEGIN DISABLE_INDEX-->
- <!--BEGIN SEARCHENGINE-->
- <td>$searchbox</td>
- <!--END SEARCHENGINE-->
- <!--END DISABLE_INDEX-->
- </tr>
- </tbody>
-</table>
-</div>
-<!--END TITLEAREA-->
-<!-- end header part -->
diff --git a/doc/common/stylesheet.css b/doc/common/stylesheet.css
deleted file mode 100644
index 1df177a4..00000000
--- a/doc/common/stylesheet.css
+++ /dev/null
@@ -1,1367 +0,0 @@
-/* The standard CSS for doxygen 1.8.6 */
-
-body, table, div, p, dl {
- font: 400 14px/22px Roboto,sans-serif;
-}
-
-/* @group Heading Levels */
-
-h1.groupheader {
- font-size: 150%;
-}
-
-.title {
- font: 400 14px/28px Roboto,sans-serif;
- font-size: 150%;
- font-weight: bold;
- margin: 10px 2px;
-}
-
-h2.groupheader {
- border-bottom: 1px solid #879ECB;
- color: #354C7B;
- font-size: 150%;
- font-weight: normal;
- margin-top: 1.75em;
- padding-top: 8px;
- padding-bottom: 4px;
- width: 100%;
-}
-
-h3.groupheader {
- font-size: 100%;
-}
-
-h1, h2, h3, h4, h5, h6 {
- -webkit-transition: text-shadow 0.5s linear;
- -moz-transition: text-shadow 0.5s linear;
- -ms-transition: text-shadow 0.5s linear;
- -o-transition: text-shadow 0.5s linear;
- transition: text-shadow 0.5s linear;
- margin-right: 15px;
-}
-
-h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
- text-shadow: 0 0 15px cyan;
-}
-
-dt {
- font-weight: bold;
-}
-
-div.multicol {
- -moz-column-gap: 1em;
- -webkit-column-gap: 1em;
- -moz-column-count: 3;
- -webkit-column-count: 3;
-}
-
-p.startli, p.startdd {
- margin-top: 2px;
-}
-
-p.starttd {
- margin-top: 0px;
-}
-
-p.endli {
- margin-bottom: 0px;
-}
-
-p.enddd {
- margin-bottom: 4px;
-}
-
-p.endtd {
- margin-bottom: 2px;
-}
-
-/* @end */
-
-caption {
- font-weight: bold;
-}
-
-span.legend {
- font-size: 70%;
- text-align: center;
-}
-
-h3.version {
- font-size: 90%;
- text-align: center;
-}
-
-div.qindex, div.navtab{
- background-color: #EBEFF6;
- border: 1px solid #A3B4D7;
- text-align: center;
-}
-
-div.qindex, div.navpath {
- width: 100%;
- line-height: 140%;
-}
-
-div.navtab {
- margin-right: 15px;
-}
-
-/* @group Link Styling */
-
-a {
- color: #3D578C;
- font-weight: normal;
- text-decoration: none;
-}
-
-.contents a:visited {
- color: #4665A2;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-a.qindex {
- font-weight: bold;
-}
-
-a.qindexHL {
- font-weight: bold;
- background-color: #9CAFD4;
- color: #ffffff;
- border: 1px double #869DCA;
-}
-
-.contents a.qindexHL:visited {
- color: #ffffff;
-}
-
-a.el {
- font-weight: bold;
-}
-
-a.elRef {
-}
-
-a.code, a.code:visited, a.line, a.line:visited {
- color: #4665A2;
-}
-
-a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
- color: #4665A2;
-}
-
-/* @end */
-
-dl.el {
- margin-left: -1cm;
-}
-
-pre.fragment {
- border: 1px solid #C4CFE5;
- background-color: #FBFCFD;
- padding: 4px 6px;
- margin: 4px 8px 4px 2px;
- overflow: auto;
- word-wrap: break-word;
- font-size: 9pt;
- line-height: 125%;
- font-family: monospace, fixed;
- font-size: 105%;
-}
-
-div.fragment {
- padding: 4px 6px;
- margin: 4px 8px 4px 2px;
- background-color: #FBFCFD;
- border: 1px solid #C4CFE5;
-}
-
-div.line {
- font-family: monospace, fixed;
- font-size: 13px;
- min-height: 13px;
- line-height: 1.0;
- text-wrap: unrestricted;
- white-space: -moz-pre-wrap; /* Moz */
- white-space: -pre-wrap; /* Opera 4-6 */
- white-space: -o-pre-wrap; /* Opera 7 */
- white-space: pre-wrap; /* CSS3 */
- word-wrap: break-word; /* IE 5.5+ */
- text-indent: -53px;
- padding-left: 53px;
- padding-bottom: 0px;
- margin: 0px;
- -webkit-transition-property: background-color, box-shadow;
- -webkit-transition-duration: 0.5s;
- -moz-transition-property: background-color, box-shadow;
- -moz-transition-duration: 0.5s;
- -ms-transition-property: background-color, box-shadow;
- -ms-transition-duration: 0.5s;
- -o-transition-property: background-color, box-shadow;
- -o-transition-duration: 0.5s;
- transition-property: background-color, box-shadow;
- transition-duration: 0.5s;
-}
-
-div.line.glow {
- background-color: cyan;
- box-shadow: 0 0 10px cyan;
-}
-
-
-span.lineno {
- padding-right: 4px;
- text-align: right;
- border-right: 2px solid #0F0;
- background-color: #E8E8E8;
- white-space: pre;
-}
-span.lineno a {
- background-color: #D8D8D8;
-}
-
-span.lineno a:hover {
- background-color: #C8C8C8;
-}
-
-div.ah {
- background-color: black;
- font-weight: bold;
- color: #ffffff;
- margin-bottom: 3px;
- margin-top: 3px;
- padding: 0.2em;
- border: solid thin #333;
- border-radius: 0.5em;
- -webkit-border-radius: .5em;
- -moz-border-radius: .5em;
- box-shadow: 2px 2px 3px #999;
- -webkit-box-shadow: 2px 2px 3px #999;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
- background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
- background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
-}
-
-div.groupHeader {
- margin-left: 16px;
- margin-top: 12px;
- font-weight: bold;
-}
-
-div.groupText {
- margin-left: 16px;
- font-style: italic;
-}
-
-body {
- background-color: white;
- color: black;
- margin: 0;
-}
-
-div.contents {
- margin-top: 10px;
- margin-left: 12px;
- margin-right: 8px;
-}
-
-td.indexkey {
- background-color: #EBEFF6;
- font-weight: bold;
- border: 1px solid #C4CFE5;
- margin: 2px 0px 2px 0;
- padding: 2px 10px;
- white-space: nowrap;
- vertical-align: top;
-}
-
-td.indexvalue {
- background-color: #EBEFF6;
- border: 1px solid #C4CFE5;
- padding: 2px 10px;
- margin: 2px 0px;
-}
-
-tr.memlist {
- background-color: #EEF1F7;
-}
-
-p.formulaDsp {
- text-align: center;
-}
-
-img.formulaDsp {
-
-}
-
-img.formulaInl {
- vertical-align: middle;
-}
-
-div.center {
- text-align: center;
- margin-top: 0px;
- margin-bottom: 0px;
- padding: 0px;
-}
-
-div.center img {
- border: 0px;
-}
-
-address.footer {
- text-align: right;
- padding-right: 12px;
-}
-
-img.footer {
- border: 0px;
- vertical-align: middle;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
- color: #008000
-}
-
-span.keywordtype {
- color: #604020
-}
-
-span.keywordflow {
- color: #e08000
-}
-
-span.comment {
- color: #800000
-}
-
-span.preprocessor {
- color: #806020
-}
-
-span.stringliteral {
- color: #002080
-}
-
-span.charliteral {
- color: #008080
-}
-
-span.vhdldigit {
- color: #ff00ff
-}
-
-span.vhdlchar {
- color: #000000
-}
-
-span.vhdlkeyword {
- color: #700070
-}
-
-span.vhdllogic {
- color: #ff0000
-}
-
-blockquote {
- background-color: #F7F8FB;
- border-left: 2px solid #9CAFD4;
- margin: 0 24px 0 4px;
- padding: 0 12px 0 16px;
-}
-
-/* @end */
-
-/*
-.search {
- color: #003399;
- font-weight: bold;
-}
-
-form.search {
- margin-bottom: 0px;
- margin-top: 0px;
-}
-
-input.search {
- font-size: 75%;
- color: #000080;
- font-weight: normal;
- background-color: #e8eef2;
-}
-*/
-
-td.tiny {
- font-size: 75%;
-}
-
-.dirtab {
- padding: 4px;
- border-collapse: collapse;
- border: 1px solid #A3B4D7;
-}
-
-th.dirtab {
- background: #EBEFF6;
- font-weight: bold;
-}
-
-hr {
- height: 0px;
- border: none;
- border-top: 1px solid #4A6AAA;
-}
-
-hr.footer {
- height: 1px;
-}
-
-/* @group Member Descriptions */
-
-table.memberdecls {
- border-spacing: 0px;
- padding: 0px;
-}
-
-.memberdecls td, .fieldtable tr {
- -webkit-transition-property: background-color, box-shadow;
- -webkit-transition-duration: 0.5s;
- -moz-transition-property: background-color, box-shadow;
- -moz-transition-duration: 0.5s;
- -ms-transition-property: background-color, box-shadow;
- -ms-transition-duration: 0.5s;
- -o-transition-property: background-color, box-shadow;
- -o-transition-duration: 0.5s;
- transition-property: background-color, box-shadow;
- transition-duration: 0.5s;
-}
-
-.memberdecls td.glow, .fieldtable tr.glow {
- background-color: cyan;
- box-shadow: 0 0 15px cyan;
-}
-
-.mdescLeft, .mdescRight,
-.memItemLeft, .memItemRight,
-.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
- background-color: #F9FAFC;
- border: none;
- margin: 4px;
- padding: 1px 0 0 8px;
-}
-
-.mdescLeft, .mdescRight {
- padding: 0px 8px 4px 8px;
- color: #555;
-}
-
-.memSeparator {
- border-bottom: 1px solid #DEE4F0;
- line-height: 1px;
- margin: 0px;
- padding: 0px;
-}
-
-.memItemLeft, .memTemplItemLeft {
- white-space: nowrap;
-}
-
-.memItemRight {
- width: 100%;
-}
-
-.memTemplParams {
- color: #4665A2;
- white-space: nowrap;
- font-size: 80%;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtemplate {
- font-size: 80%;
- color: #4665A2;
- font-weight: normal;
- margin-left: 9px;
-}
-
-.memnav {
- background-color: #EBEFF6;
- border: 1px solid #A3B4D7;
- text-align: center;
- margin: 2px;
- margin-right: 15px;
- padding: 2px;
-}
-
-.mempage {
- width: 100%;
-}
-
-.memitem {
- padding: 0;
- margin-bottom: 10px;
- margin-right: 5px;
- -webkit-transition: box-shadow 0.5s linear;
- -moz-transition: box-shadow 0.5s linear;
- -ms-transition: box-shadow 0.5s linear;
- -o-transition: box-shadow 0.5s linear;
- transition: box-shadow 0.5s linear;
- display: table !important;
- width: 100%;
-}
-
-.memitem.glow {
- box-shadow: 0 0 15px cyan;
-}
-
-.memname {
- font-weight: bold;
- margin-left: 6px;
-}
-
-.memname td {
- vertical-align: bottom;
-}
-
-.memproto, dl.reflist dt {
- border-top: 1px solid #A8B8D9;
- border-left: 1px solid #A8B8D9;
- border-right: 1px solid #A8B8D9;
- padding: 6px 0px 6px 0px;
- color: #253555;
- font-weight: bold;
- text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
- background-image:url('nav_f.png');
- background-repeat:repeat-x;
- background-color: #E2E8F2;
- /* opera specific markup */
- box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- border-top-right-radius: 4px;
- border-top-left-radius: 4px;
- /* firefox specific markup */
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
- -moz-border-radius-topright: 4px;
- -moz-border-radius-topleft: 4px;
- /* webkit specific markup */
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- -webkit-border-top-right-radius: 4px;
- -webkit-border-top-left-radius: 4px;
-
-}
-
-.memdoc, dl.reflist dd {
- border-bottom: 1px solid #A8B8D9;
- border-left: 1px solid #A8B8D9;
- border-right: 1px solid #A8B8D9;
- padding: 6px 10px 2px 10px;
- background-color: #FBFCFD;
- border-top-width: 0;
- background-image:url('nav_g.png');
- background-repeat:repeat-x;
- background-color: #FFFFFF;
- /* opera specific markup */
- border-bottom-left-radius: 4px;
- border-bottom-right-radius: 4px;
- box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- /* firefox specific markup */
- -moz-border-radius-bottomleft: 4px;
- -moz-border-radius-bottomright: 4px;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
- /* webkit specific markup */
- -webkit-border-bottom-left-radius: 4px;
- -webkit-border-bottom-right-radius: 4px;
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-}
-
-dl.reflist dt {
- padding: 5px;
-}
-
-dl.reflist dd {
- margin: 0px 0px 10px 0px;
- padding: 5px;
-}
-
-.paramkey {
- text-align: right;
-}
-
-.paramtype {
- white-space: nowrap;
-}
-
-.paramname {
- color: #602020;
- white-space: nowrap;
-}
-.paramname em {
- font-style: normal;
-}
-.paramname code {
- line-height: 14px;
-}
-
-.params, .retval, .exception, .tparams {
- margin-left: 0px;
- padding-left: 0px;
-}
-
-.params .paramname, .retval .paramname {
- font-weight: bold;
- vertical-align: top;
-}
-
-.params .paramtype {
- font-style: italic;
- vertical-align: top;
-}
-
-.params .paramdir {
- font-family: "courier new",courier,monospace;
- vertical-align: top;
-}
-
-table.mlabels {
- border-spacing: 0px;
-}
-
-td.mlabels-left {
- width: 100%;
- padding: 0px;
-}
-
-td.mlabels-right {
- vertical-align: bottom;
- padding: 0px;
- white-space: nowrap;
-}
-
-span.mlabels {
- margin-left: 8px;
-}
-
-span.mlabel {
- background-color: #728DC1;
- border-top:1px solid #5373B4;
- border-left:1px solid #5373B4;
- border-right:1px solid #C4CFE5;
- border-bottom:1px solid #C4CFE5;
- text-shadow: none;
- color: white;
- margin-right: 4px;
- padding: 2px 3px;
- border-radius: 3px;
- font-size: 7pt;
- white-space: nowrap;
- vertical-align: middle;
-}
-
-
-
-/* @end */
-
-/* these are for tree view when not used as main index */
-
-div.directory {
- margin: 10px 0px;
- border-top: 1px solid #A8B8D9;
- border-bottom: 1px solid #A8B8D9;
- width: 100%;
-}
-
-.directory table {
- border-collapse:collapse;
-}
-
-.directory td {
- margin: 0px;
- padding: 0px;
- vertical-align: top;
-}
-
-.directory td.entry {
- white-space: nowrap;
- padding-right: 6px;
- padding-top: 3px;
-}
-
-.directory td.entry a {
- outline:none;
-}
-
-.directory td.entry a img {
- border: none;
-}
-
-.directory td.desc {
- width: 100%;
- padding-left: 6px;
- padding-right: 6px;
- padding-top: 3px;
- border-left: 1px solid rgba(0,0,0,0.05);
-}
-
-.directory tr.even {
- padding-left: 6px;
- background-color: #F7F8FB;
-}
-
-.directory img {
- vertical-align: -30%;
-}
-
-.directory .levels {
- white-space: nowrap;
- width: 100%;
- text-align: right;
- font-size: 9pt;
-}
-
-.directory .levels span {
- cursor: pointer;
- padding-left: 2px;
- padding-right: 2px;
- color: #3D578C;
-}
-
-div.dynheader {
- margin-top: 8px;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-address {
- font-style: normal;
- color: #2A3D61;
-}
-
-table.doxtable {
- border-collapse:collapse;
- margin-top: 4px;
- margin-bottom: 4px;
-}
-
-table.doxtable td, table.doxtable th {
- border: 1px solid #2D4068;
- padding: 3px 7px 2px;
-}
-
-table.doxtable th {
- background-color: #374F7F;
- color: #FFFFFF;
- font-size: 110%;
- padding-bottom: 4px;
- padding-top: 5px;
-}
-
-table.fieldtable {
- /*width: 100%;*/
- margin-bottom: 10px;
- border: 1px solid #A8B8D9;
- border-spacing: 0px;
- -moz-border-radius: 4px;
- -webkit-border-radius: 4px;
- border-radius: 4px;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
- -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
- box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-}
-
-.fieldtable td, .fieldtable th {
- padding: 3px 7px 2px;
-}
-
-.fieldtable td.fieldtype, .fieldtable td.fieldname {
- white-space: nowrap;
- border-right: 1px solid #A8B8D9;
- border-bottom: 1px solid #A8B8D9;
- vertical-align: top;
-}
-
-.fieldtable td.fieldname {
- padding-top: 3px;
-}
-
-.fieldtable td.fielddoc {
- border-bottom: 1px solid #A8B8D9;
- /*width: 100%;*/
-}
-
-.fieldtable td.fielddoc p:first-child {
- margin-top: 0px;
-}
-
-.fieldtable td.fielddoc p:last-child {
- margin-bottom: 2px;
-}
-
-.fieldtable tr:last-child td {
- border-bottom: none;
-}
-
-.fieldtable th {
- background-image:url('nav_f.png');
- background-repeat:repeat-x;
- background-color: #E2E8F2;
- font-size: 90%;
- color: #253555;
- padding-bottom: 4px;
- padding-top: 5px;
- text-align:left;
- -moz-border-radius-topleft: 4px;
- -moz-border-radius-topright: 4px;
- -webkit-border-top-left-radius: 4px;
- -webkit-border-top-right-radius: 4px;
- border-top-left-radius: 4px;
- border-top-right-radius: 4px;
- border-bottom: 1px solid #A8B8D9;
-}
-
-
-.tabsearch {
- top: 0px;
- left: 10px;
- height: 36px;
- background-image: url('tab_b.png');
- z-index: 101;
- overflow: hidden;
- font-size: 13px;
-}
-
-.navpath ul
-{
- font-size: 11px;
- background-image:url('tab_b.png');
- background-repeat:repeat-x;
- background-position: 0 -5px;
- height:30px;
- line-height:30px;
- color:#8AA0CC;
- border:solid 1px #C2CDE4;
- overflow:hidden;
- margin:0px;
- padding:0px;
-}
-
-.navpath li
-{
- list-style-type:none;
- float:left;
- padding-left:10px;
- padding-right:15px;
- background-image:url('bc_s.png');
- background-repeat:no-repeat;
- background-position:right;
- color:#364D7C;
-}
-
-.navpath li.navelem a
-{
- height:32px;
- display:block;
- text-decoration: none;
- outline: none;
- color: #283A5D;
- font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
- text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
- text-decoration: none;
-}
-
-.navpath li.navelem a:hover
-{
- color:#6884BD;
-}
-
-.navpath li.footer
-{
- list-style-type:none;
- float:right;
- padding-left:10px;
- padding-right:15px;
- background-image:none;
- background-repeat:no-repeat;
- background-position:right;
- color:#364D7C;
- font-size: 8pt;
-}
-
-
-div.summary
-{
- float: right;
- font-size: 8pt;
- padding-right: 5px;
- width: 50%;
- text-align: right;
-}
-
-div.summary a
-{
- white-space: nowrap;
-}
-
-div.ingroups
-{
- font-size: 8pt;
- width: 50%;
- text-align: left;
-}
-
-div.ingroups a
-{
- white-space: nowrap;
-}
-
-div.header
-{
- background-image:url('nav_h.png');
- background-repeat:repeat-x;
- background-color: #F9FAFC;
- margin: 0px;
- border-bottom: 1px solid #C4CFE5;
-}
-
-div.headertitle
-{
- padding: 5px 5px 5px 10px;
-}
-
-dl
-{
- padding: 0 0 0 10px;
-}
-
-/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
-dl.section
-{
- margin-left: 0px;
- padding-left: 0px;
-}
-
-dl.note
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #D0C000;
-}
-
-dl.warning, dl.attention
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #FF0000;
-}
-
-dl.pre, dl.post, dl.invariant
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #00D000;
-}
-
-dl.deprecated
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #505050;
-}
-
-dl.todo
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #00C0E0;
-}
-
-dl.test
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #3030E0;
-}
-
-dl.bug
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #C08050;
-}
-
-dl.section dd {
- margin-bottom: 6px;
-}
-
-
-#projectlogo
-{
- text-align: center;
- vertical-align: bottom;
- border-collapse: separate;
-}
-
-#projectlogo img
-{
- border: 0px none;
-}
-
-#projectname
-{
- border: 0px none;
- font: 300% Tahoma, Arial,sans-serif;
- margin: 0px;
- padding: 2px 0px;
-}
-
-#projectbrief
-{
- font: 60% Tahoma, Arial,sans-serif;
- margin: 0px;
- padding: 0px;
-}
-
-#projectnumber
-{
- font: 80% Tahoma, Arial,sans-serif;
- margin: 0px;
- padding: 0px;
-}
-
-#titlearea
-{
- padding: 0px;
- margin: 0px;
- width: 100%;
- border-bottom: 1px solid #5373B4;
-}
-
-.image
-{
- text-align: center;
-}
-
-.dotgraph
-{
- text-align: center;
-}
-
-.mscgraph
-{
- text-align: center;
-}
-
-.diagraph
-{
- text-align: center;
-}
-
-.caption
-{
- font-weight: bold;
-}
-
-div.zoom
-{
- border: 1px solid #90A5CE;
-}
-
-dl.citelist {
- margin-bottom:50px;
-}
-
-dl.citelist dt {
- color:#334975;
- float:left;
- font-weight:bold;
- margin-right:10px;
- padding:5px;
-}
-
-dl.citelist dd {
- margin:2px 0;
- padding:5px 0;
-}
-
-div.toc {
- padding: 14px 25px;
- background-color: #F4F6FA;
- border: 1px solid #D8DFEE;
- border-radius: 7px 7px 7px 7px;
- float: right;
- height: auto;
- margin: 0 20px 10px 10px;
- width: 200px;
-}
-
-div.toc li {
- background: url("bdwn.png") no-repeat scroll 0 5px transparent;
- font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
- margin-top: 5px;
- padding-left: 10px;
- padding-top: 2px;
-}
-
-div.toc h3 {
- font: bold 12px/1.2 Arial,FreeSans,sans-serif;
- color: #4665A2;
- border-bottom: 0 none;
- margin: 0;
-}
-
-div.toc ul {
- list-style: none outside none;
- border: medium none;
- padding: 0px;
-}
-
-div.toc li.level1 {
- margin-left: 0px;
-}
-
-div.toc li.level2 {
- margin-left: 15px;
-}
-
-div.toc li.level3 {
- margin-left: 30px;
-}
-
-div.toc li.level4 {
- margin-left: 45px;
-}
-
-.inherit_header {
- font-weight: bold;
- color: gray;
- cursor: pointer;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-.inherit_header td {
- padding: 6px 0px 2px 5px;
-}
-
-.inherit {
- display: none;
-}
-
-tr.heading h2 {
- margin-top: 12px;
- margin-bottom: 4px;
-}
-
-/* tooltip related style info */
-
-.ttc {
- position: absolute;
- display: none;
-}
-
-#powerTip {
- cursor: default;
- white-space: nowrap;
- background-color: white;
- border: 1px solid gray;
- border-radius: 4px 4px 4px 4px;
- box-shadow: 1px 1px 7px gray;
- display: none;
- font-size: smaller;
- max-width: 80%;
- opacity: 0.9;
- padding: 1ex 1em 1em;
- position: absolute;
- z-index: 2147483647;
-}
-
-#powerTip div.ttdoc {
- color: grey;
- font-style: italic;
-}
-
-#powerTip div.ttname a {
- font-weight: bold;
-}
-
-#powerTip div.ttname {
- font-weight: bold;
-}
-
-#powerTip div.ttdeci {
- color: #006318;
-}
-
-#powerTip div {
- margin: 0px;
- padding: 0px;
- font: 12px/16px Roboto,sans-serif;
-}
-
-#powerTip:before, #powerTip:after {
- content: "";
- position: absolute;
- margin: 0px;
-}
-
-#powerTip.n:after, #powerTip.n:before,
-#powerTip.s:after, #powerTip.s:before,
-#powerTip.w:after, #powerTip.w:before,
-#powerTip.e:after, #powerTip.e:before,
-#powerTip.ne:after, #powerTip.ne:before,
-#powerTip.se:after, #powerTip.se:before,
-#powerTip.nw:after, #powerTip.nw:before,
-#powerTip.sw:after, #powerTip.sw:before {
- border: solid transparent;
- content: " ";
- height: 0;
- width: 0;
- position: absolute;
-}
-
-#powerTip.n:after, #powerTip.s:after,
-#powerTip.w:after, #powerTip.e:after,
-#powerTip.nw:after, #powerTip.ne:after,
-#powerTip.sw:after, #powerTip.se:after {
- border-color: rgba(255, 255, 255, 0);
-}
-
-#powerTip.n:before, #powerTip.s:before,
-#powerTip.w:before, #powerTip.e:before,
-#powerTip.nw:before, #powerTip.ne:before,
-#powerTip.sw:before, #powerTip.se:before {
- border-color: rgba(128, 128, 128, 0);
-}
-
-#powerTip.n:after, #powerTip.n:before,
-#powerTip.ne:after, #powerTip.ne:before,
-#powerTip.nw:after, #powerTip.nw:before {
- top: 100%;
-}
-
-#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
- border-top-color: #ffffff;
- border-width: 10px;
- margin: 0px -10px;
-}
-#powerTip.n:before {
- border-top-color: #808080;
- border-width: 11px;
- margin: 0px -11px;
-}
-#powerTip.n:after, #powerTip.n:before {
- left: 50%;
-}
-
-#powerTip.nw:after, #powerTip.nw:before {
- right: 14px;
-}
-
-#powerTip.ne:after, #powerTip.ne:before {
- left: 14px;
-}
-
-#powerTip.s:after, #powerTip.s:before,
-#powerTip.se:after, #powerTip.se:before,
-#powerTip.sw:after, #powerTip.sw:before {
- bottom: 100%;
-}
-
-#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
- border-bottom-color: #ffffff;
- border-width: 10px;
- margin: 0px -10px;
-}
-
-#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
- border-bottom-color: #808080;
- border-width: 11px;
- margin: 0px -11px;
-}
-
-#powerTip.s:after, #powerTip.s:before {
- left: 50%;
-}
-
-#powerTip.sw:after, #powerTip.sw:before {
- right: 14px;
-}
-
-#powerTip.se:after, #powerTip.se:before {
- left: 14px;
-}
-
-#powerTip.e:after, #powerTip.e:before {
- left: 100%;
-}
-#powerTip.e:after {
- border-left-color: #ffffff;
- border-width: 10px;
- top: 50%;
- margin-top: -10px;
-}
-#powerTip.e:before {
- border-left-color: #808080;
- border-width: 11px;
- top: 50%;
- margin-top: -11px;
-}
-
-#powerTip.w:after, #powerTip.w:before {
- right: 100%;
-}
-#powerTip.w:after {
- border-right-color: #ffffff;
- border-width: 10px;
- top: 50%;
- margin-top: -10px;
-}
-#powerTip.w:before {
- border-right-color: #808080;
- border-width: 11px;
- top: 50%;
- margin-top: -11px;
-}
-
-@media print
-{
- #top { display: none; }
- #side-nav { display: none; }
- #nav-path { display: none; }
- body { overflow:visible; }
- h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
- .summary { display: none; }
- .memitem { page-break-inside: avoid; }
- #doc-content
- {
- margin-left:0 !important;
- height:auto !important;
- width:auto !important;
- overflow:inherit;
- display:inline;
- }
-}
-
diff --git a/example/Alpha_complex/Alpha_complex_from_off.cpp b/example/Alpha_complex/Alpha_complex_from_off.cpp
deleted file mode 100644
index d411e90a..00000000
--- a/example/Alpha_complex/Alpha_complex_from_off.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-#include <gudhi/Alpha_complex.h>
-// to construct a simplex_tree from alpha complex
-#include <gudhi/Simplex_tree.h>
-
-#include <CGAL/Epick_d.h>
-
-#include <iostream>
-#include <string>
-
-void usage(int nbArgs, char * const progName) {
- std::cerr << "Error: Number of arguments (" << nbArgs << ") is not correct\n";
- std::cerr << "Usage: " << progName << " filename.off alpha_square_max_value [ouput_file.txt]\n";
- std::cerr << " i.e.: " << progName << " ../../data/points/alphacomplexdoc.off 60.0\n";
- exit(-1); // ----- >>
-}
-
-int main(int argc, char **argv) {
- if ((argc != 3) && (argc != 4)) usage(argc, (argv[0] - 1));
-
- std::string off_file_name {argv[1]};
- double alpha_square_max_value {atof(argv[2])};
-
- // ----------------------------------------------------------------------------
- // Init of an alpha complex from an OFF file
- // ----------------------------------------------------------------------------
- using Kernel = CGAL::Epick_d< CGAL::Dynamic_dimension_tag >;
- Gudhi::alpha_complex::Alpha_complex<Kernel> alpha_complex_from_file(off_file_name);
-
- std::streambuf* streambufffer;
- std::ofstream ouput_file_stream;
-
- if (argc == 4) {
- ouput_file_stream.open(std::string(argv[3]));
- streambufffer = ouput_file_stream.rdbuf();
- } else {
- streambufffer = std::cout.rdbuf();
- }
-
- Gudhi::Simplex_tree<> simplex;
- if (alpha_complex_from_file.create_complex(simplex, alpha_square_max_value)) {
- std::ostream output_stream(streambufffer);
-
- // ----------------------------------------------------------------------------
- // Display information about the alpha complex
- // ----------------------------------------------------------------------------
- output_stream << "Alpha complex is of dimension " << simplex.dimension() <<
- " - " << simplex.num_simplices() << " simplices - " <<
- simplex.num_vertices() << " vertices." << std::endl;
-
- output_stream << "Iterator on alpha complex simplices in the filtration order, with [filtration value]:" <<
- std::endl;
- for (auto f_simplex : simplex.filtration_simplex_range()) {
- output_stream << " ( ";
- for (auto vertex : simplex.simplex_vertex_range(f_simplex)) {
- output_stream << vertex << " ";
- }
- output_stream << ") -> " << "[" << simplex.filtration(f_simplex) << "] ";
- output_stream << std::endl;
- }
- }
- ouput_file_stream.close();
- return 0;
-}
diff --git a/example/Alpha_complex/Alpha_complex_from_points.cpp b/example/Alpha_complex/Alpha_complex_from_points.cpp
deleted file mode 100644
index c19f7cc8..00000000
--- a/example/Alpha_complex/Alpha_complex_from_points.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-#include <gudhi/Alpha_complex.h>
-// to construct a simplex_tree from alpha complex
-#include <gudhi/Simplex_tree.h>
-
-#include <CGAL/Epick_d.h>
-
-#include <iostream>
-#include <string>
-#include <vector>
-#include <limits> // for numeric limits
-
-using Kernel = CGAL::Epick_d< CGAL::Dimension_tag<2> >;
-using Point = Kernel::Point_d;
-using Vector_of_points = std::vector<Point>;
-
-void usage(int nbArgs, char * const progName) {
- std::cerr << "Error: Number of arguments (" << nbArgs << ") is not correct\n";
- std::cerr << "Usage: " << progName << " [alpha_square_max_value]\n";
- std::cerr << " i.e.: " << progName << " 60.0\n";
- exit(-1); // ----- >>
-}
-
-int main(int argc, char **argv) {
- if ((argc != 1) && (argc != 2)) usage(argc, (argv[0] - 1));
-
- // Delaunay complex if alpha_square_max_value is not given by the user.
- double alpha_square_max_value {std::numeric_limits<double>::infinity()};
- if (argc == 2)
- alpha_square_max_value = atof(argv[1]);
-
- // ----------------------------------------------------------------------------
- // Init of a list of points
- // ----------------------------------------------------------------------------
- Vector_of_points points;
- points.push_back(Point(1.0, 1.0));
- points.push_back(Point(7.0, 0.0));
- points.push_back(Point(4.0, 6.0));
- points.push_back(Point(9.0, 6.0));
- points.push_back(Point(0.0, 14.0));
- points.push_back(Point(2.0, 19.0));
- points.push_back(Point(9.0, 17.0));
-
- // ----------------------------------------------------------------------------
- // Init of an alpha complex from the list of points
- // ----------------------------------------------------------------------------
- Gudhi::alpha_complex::Alpha_complex<Kernel> alpha_complex_from_points(points);
-
- Gudhi::Simplex_tree<> simplex;
- if (alpha_complex_from_points.create_complex(simplex, alpha_square_max_value)) {
- // ----------------------------------------------------------------------------
- // Display information about the alpha complex
- // ----------------------------------------------------------------------------
- std::cout << "Alpha complex is of dimension " << simplex.dimension() <<
- " - " << simplex.num_simplices() << " simplices - " <<
- simplex.num_vertices() << " vertices." << std::endl;
-
- std::cout << "Iterator on alpha complex simplices in the filtration order, with [filtration value]:" << std::endl;
- for (auto f_simplex : simplex.filtration_simplex_range()) {
- std::cout << " ( ";
- for (auto vertex : simplex.simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << ") -> " << "[" << simplex.filtration(f_simplex) << "] ";
- std::cout << std::endl;
- }
- }
- return 0;
-}
diff --git a/example/Alpha_complex/CMakeLists.txt b/example/Alpha_complex/CMakeLists.txt
deleted file mode 100644
index 2fc62452..00000000
--- a/example/Alpha_complex/CMakeLists.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-project(Alpha_complex_examples)
-
-# need CGAL 4.7
-# cmake -DCGAL_DIR=~/workspace/CGAL-4.7 ..
-if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.7.0)
- add_executable ( Alpha_complex_example_from_points Alpha_complex_from_points.cpp )
- target_link_libraries(Alpha_complex_example_from_points ${CGAL_LIBRARY})
- add_executable ( Alpha_complex_example_from_off Alpha_complex_from_off.cpp )
- target_link_libraries(Alpha_complex_example_from_off ${CGAL_LIBRARY})
- if (TBB_FOUND)
- target_link_libraries(Alpha_complex_example_from_points ${TBB_LIBRARIES})
- target_link_libraries(Alpha_complex_example_from_off ${TBB_LIBRARIES})
- endif()
-
- add_test(NAME Alpha_complex_example_from_points COMMAND $<TARGET_FILE:Alpha_complex_example_from_points>)
-
- add_test(NAME Alpha_complex_example_from_off_60 COMMAND $<TARGET_FILE:Alpha_complex_example_from_off>
- "${CMAKE_SOURCE_DIR}/data/points/alphacomplexdoc.off" "60.0" "${CMAKE_CURRENT_BINARY_DIR}/alphaoffreader_result_60.txt")
- add_test(NAME Alpha_complex_example_from_off_32 COMMAND $<TARGET_FILE:Alpha_complex_example_from_off>
- "${CMAKE_SOURCE_DIR}/data/points/alphacomplexdoc.off" "32.0" "${CMAKE_CURRENT_BINARY_DIR}/alphaoffreader_result_32.txt")
- if (DIFF_PATH)
- # Do not forget to copy test results files in current binary dir
- file(COPY "alphaoffreader_for_doc_32.txt" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
- file(COPY "alphaoffreader_for_doc_60.txt" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
-
- add_test(Alpha_complex_example_from_off_60_diff_files ${DIFF_PATH}
- ${CMAKE_CURRENT_BINARY_DIR}/alphaoffreader_result_60.txt ${CMAKE_CURRENT_BINARY_DIR}/alphaoffreader_for_doc_60.txt)
- add_test(Alpha_complex_example_from_off_32_diff_files ${DIFF_PATH}
- ${CMAKE_CURRENT_BINARY_DIR}/alphaoffreader_result_32.txt ${CMAKE_CURRENT_BINARY_DIR}/alphaoffreader_for_doc_32.txt)
- endif()
-
- install(TARGETS Alpha_complex_example_from_points DESTINATION bin)
- install(TARGETS Alpha_complex_example_from_off DESTINATION bin)
-
-endif(NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.7.0)
diff --git a/example/Alpha_complex/alphaoffreader_for_doc_32.txt b/example/Alpha_complex/alphaoffreader_for_doc_32.txt
deleted file mode 100644
index 13183e86..00000000
--- a/example/Alpha_complex/alphaoffreader_for_doc_32.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Alpha complex is of dimension 2 - 20 simplices - 7 vertices.
-Iterator on alpha complex simplices in the filtration order, with [filtration value]:
- ( 0 ) -> [0]
- ( 1 ) -> [0]
- ( 2 ) -> [0]
- ( 3 ) -> [0]
- ( 4 ) -> [0]
- ( 5 ) -> [0]
- ( 6 ) -> [0]
- ( 3 2 ) -> [6.25]
- ( 5 4 ) -> [7.25]
- ( 2 0 ) -> [8.5]
- ( 1 0 ) -> [9.25]
- ( 3 1 ) -> [10]
- ( 2 1 ) -> [11.25]
- ( 3 2 1 ) -> [12.5]
- ( 2 1 0 ) -> [12.9959]
- ( 6 5 ) -> [13.25]
- ( 4 2 ) -> [20]
- ( 6 4 ) -> [22.7367]
- ( 6 5 4 ) -> [22.7367]
- ( 6 3 ) -> [30.25]
diff --git a/example/Alpha_complex/alphaoffreader_for_doc_60.txt b/example/Alpha_complex/alphaoffreader_for_doc_60.txt
deleted file mode 100644
index 71f29a00..00000000
--- a/example/Alpha_complex/alphaoffreader_for_doc_60.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Alpha complex is of dimension 2 - 25 simplices - 7 vertices.
-Iterator on alpha complex simplices in the filtration order, with [filtration value]:
- ( 0 ) -> [0]
- ( 1 ) -> [0]
- ( 2 ) -> [0]
- ( 3 ) -> [0]
- ( 4 ) -> [0]
- ( 5 ) -> [0]
- ( 6 ) -> [0]
- ( 3 2 ) -> [6.25]
- ( 5 4 ) -> [7.25]
- ( 2 0 ) -> [8.5]
- ( 1 0 ) -> [9.25]
- ( 3 1 ) -> [10]
- ( 2 1 ) -> [11.25]
- ( 3 2 1 ) -> [12.5]
- ( 2 1 0 ) -> [12.9959]
- ( 6 5 ) -> [13.25]
- ( 4 2 ) -> [20]
- ( 6 4 ) -> [22.7367]
- ( 6 5 4 ) -> [22.7367]
- ( 6 3 ) -> [30.25]
- ( 6 2 ) -> [36.5]
- ( 6 3 2 ) -> [36.5]
- ( 6 4 2 ) -> [37.2449]
- ( 4 0 ) -> [59.7107]
- ( 4 2 0 ) -> [59.7107]
diff --git a/example/Bitmap_cubical_complex/CMakeLists.txt b/example/Bitmap_cubical_complex/CMakeLists.txt
deleted file mode 100644
index dc659f2d..00000000
--- a/example/Bitmap_cubical_complex/CMakeLists.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-project(Bitmap_cubical_complex_examples)
-
-add_executable ( Random_bitmap_cubical_complex Random_bitmap_cubical_complex.cpp )
-if (TBB_FOUND)
- target_link_libraries(Random_bitmap_cubical_complex ${TBB_LIBRARIES})
-endif()
-add_test(NAME Bitmap_cubical_complex_example_random COMMAND $<TARGET_FILE:Random_bitmap_cubical_complex>
- "2" "100" "100")
-
-install(TARGETS Random_bitmap_cubical_complex DESTINATION bin)
diff --git a/example/Bitmap_cubical_complex/Random_bitmap_cubical_complex.cpp b/example/Bitmap_cubical_complex/Random_bitmap_cubical_complex.cpp
deleted file mode 100644
index 6eb24040..00000000
--- a/example/Bitmap_cubical_complex/Random_bitmap_cubical_complex.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-// for persistence algorithm
-#include <gudhi/reader_utils.h>
-#include <gudhi/Bitmap_cubical_complex.h>
-#include <gudhi/Persistent_cohomology.h>
-
-// standard stuff
-#include <iostream>
-#include <sstream>
-#include <vector>
-
-int main(int argc, char** argv) {
- srand(time(0));
-
- std::cout
- << "This program computes persistent homology, by using bitmap_cubical_complex class, of cubical "
- << "complexes. The first parameter of the program is the dimension D of the bitmap. The next D parameters are "
- << "number of top dimensional cubes in each dimension of the bitmap. The program will create random cubical "
- << "complex of that sizes and compute persistent homology of it." << std::endl;
-
- int p = 2;
- double min_persistence = 0;
-
- if (argc < 3) {
- std::cerr << "Wrong number of parameters, the program will now terminate\n";
- return 1;
- }
-
- size_t dimensionOfBitmap = (size_t)atoi(argv[1]);
- std::vector<unsigned> sizes;
- size_t multipliers = 1;
- for (size_t dim = 0; dim != dimensionOfBitmap; ++dim) {
- unsigned sizeInThisDimension = (unsigned)atoi(argv[2 + dim]);
- sizes.push_back(sizeInThisDimension);
- multipliers *= sizeInThisDimension;
- }
-
- std::vector<double> data;
- for (size_t i = 0; i != multipliers; ++i) {
- data.push_back(rand() / static_cast<double>(RAND_MAX));
- }
-
- typedef Gudhi::cubical_complex::Bitmap_cubical_complex_base<double> Bitmap_cubical_complex_base;
- typedef Gudhi::cubical_complex::Bitmap_cubical_complex<Bitmap_cubical_complex_base> Bitmap_cubical_complex;
- Bitmap_cubical_complex b(sizes, data);
-
- // Compute the persistence diagram of the complex
- typedef Gudhi::persistent_cohomology::Field_Zp Field_Zp;
- typedef Gudhi::persistent_cohomology::Persistent_cohomology<Bitmap_cubical_complex, Field_Zp> Persistent_cohomology;
- Persistent_cohomology pcoh(b);
- pcoh.init_coefficients(p); // initializes the coefficient field for homology
- pcoh.compute_persistent_cohomology(min_persistence);
-
- std::stringstream ss;
- ss << "randomComplex_persistence";
- std::ofstream out(ss.str().c_str());
- pcoh.output_diagram(out);
- out.close();
-
- return 0;
-}
diff --git a/example/Bottleneck_distance/CMakeLists.txt b/example/Bottleneck_distance/CMakeLists.txt
deleted file mode 100644
index c6f10127..00000000
--- a/example/Bottleneck_distance/CMakeLists.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-project(Bottleneck_distance_examples)
-
-if (NOT CGAL_VERSION VERSION_LESS 4.8.1)
- add_executable (bottleneck_basic_example bottleneck_basic_example.cpp)
- add_executable (alpha_rips_persistence_bottleneck_distance alpha_rips_persistence_bottleneck_distance.cpp)
- target_link_libraries(alpha_rips_persistence_bottleneck_distance ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
- if (TBB_FOUND)
- target_link_libraries(alpha_rips_persistence_bottleneck_distance ${TBB_LIBRARIES})
- target_link_libraries(bottleneck_basic_example ${TBB_LIBRARIES})
- endif(TBB_FOUND)
-
- add_test(NAME Bottleneck_distance_example_basic COMMAND $<TARGET_FILE:bottleneck_basic_example>)
- add_test(NAME Bottleneck_distance_example_alpha_rips_persistence_bottleneck
- COMMAND $<TARGET_FILE:alpha_rips_persistence_bottleneck_distance>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_1307.off" "-r" "0.15" "-m" "0.12" "-d" "3" "-p" "3")
-
- install(TARGETS bottleneck_basic_example DESTINATION bin)
- install(TARGETS alpha_rips_persistence_bottleneck_distance DESTINATION bin)
-
-endif (NOT CGAL_VERSION VERSION_LESS 4.8.1)
diff --git a/example/Bottleneck_distance/README b/example/Bottleneck_distance/README
deleted file mode 100644
index 01bcd74a..00000000
--- a/example/Bottleneck_distance/README
+++ /dev/null
@@ -1,19 +0,0 @@
-# Bottleneck_distance #
-
-## `alpha_rips_persistence_bottleneck_distance` ##
-This program computes the persistent homology with coefficient field Z/pZ of a Rips complex defined on a set of input points. The output diagram contains one bar per line, written with the convention:
-
-`p dim birth death`
-
-where `dim` is the dimension of the homological feature, `birth` and `death` are respectively the birth and death of the feature, and `p` is the characteristic of the field *Z/pZ* used for homology coefficients.
-
-Usage:
-`alpha_rips_persistence_bottleneck_distance [options] <OFF input file>`
-
-Allowed options:
-
-* `-h [ --help ]` Produce help message
-* `-r [ --max-edge-length ]` (default = inf) Maximal length of an edge for the Rips complex construction.`
-* `-d [ --cpx-dimension ]` (default = 1) Maximal dimension of the Rips complex we want to compute.`
-* `-p [ --field-charac ]` (default = 11) Characteristic p of the coefficient field Z/pZ for computing homology.
-* `-m [ --min-persistence ]` (default = 0) Minimal lifetime of homology feature to be recorded. Enter a negative value to see zero length intervals.
diff --git a/example/Bottleneck_distance/alpha_rips_persistence_bottleneck_distance.cpp b/example/Bottleneck_distance/alpha_rips_persistence_bottleneck_distance.cpp
deleted file mode 100644
index 2db1ef80..00000000
--- a/example/Bottleneck_distance/alpha_rips_persistence_bottleneck_distance.cpp
+++ /dev/null
@@ -1,190 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2017 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Alpha_complex.h>
-#include <gudhi/Rips_complex.h>
-#include <gudhi/distance_functions.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Points_off_io.h>
-#include <gudhi/Bottleneck.h>
-
-#include <CGAL/Epick_d.h>
-
-#include <boost/program_options.hpp>
-
-#include <string>
-#include <vector>
-#include <limits> // infinity
-#include <utility> // for pair
-#include <algorithm> // for transform
-
-
-// Types definition
-using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-using Filtration_value = Simplex_tree::Filtration_value;
-using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
-using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp >;
-using Kernel = CGAL::Epick_d< CGAL::Dynamic_dimension_tag >;
-using Point_d = Kernel::Point_d;
-using Points_off_reader = Gudhi::Points_off_reader<Point_d>;
-
-void program_options(int argc, char * argv[]
- , std::string & off_file_points
- , Filtration_value & threshold
- , int & dim_max
- , int & p
- , Filtration_value & min_persistence);
-
-static inline std::pair<double, double> compute_root_square(std::pair<double, double> input) {
- return std::make_pair(std::sqrt(input.first), std::sqrt(input.second));
-}
-
-int main(int argc, char * argv[]) {
- std::string off_file_points;
- Filtration_value threshold;
- int dim_max;
- int p;
- Filtration_value min_persistence;
-
- program_options(argc, argv, off_file_points, threshold, dim_max, p, min_persistence);
-
- Points_off_reader off_reader(off_file_points);
-
- // --------------------------------------------
- // Rips persistence
- // --------------------------------------------
- Rips_complex rips_complex(off_reader.get_point_cloud(), threshold, Gudhi::Euclidean_distance());
-
- // Construct the Rips complex in a Simplex Tree
- Simplex_tree rips_stree;
-
- rips_complex.create_complex(rips_stree, dim_max);
- std::cout << "The Rips complex contains " << rips_stree.num_simplices() << " simplices and has dimension "
- << rips_stree.dimension() << " \n";
-
- // Sort the simplices in the order of the filtration
- rips_stree.initialize_filtration();
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology rips_pcoh(rips_stree);
- // initializes the coefficient field for homology
- rips_pcoh.init_coefficients(p);
- rips_pcoh.compute_persistent_cohomology(min_persistence);
-
- // rips_pcoh.output_diagram();
-
- // --------------------------------------------
- // Alpha persistence
- // --------------------------------------------
- Gudhi::alpha_complex::Alpha_complex<Kernel> alpha_complex(off_reader.get_point_cloud());
-
- Simplex_tree alpha_stree;
- alpha_complex.create_complex(alpha_stree, threshold * threshold);
- std::cout << "The Alpha complex contains " << alpha_stree.num_simplices() << " simplices and has dimension "
- << alpha_stree.dimension() << " \n";
-
- // Sort the simplices in the order of the filtration
- alpha_stree.initialize_filtration();
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology alpha_pcoh(alpha_stree);
- // initializes the coefficient field for homology
- alpha_pcoh.init_coefficients(p);
- alpha_pcoh.compute_persistent_cohomology(min_persistence * min_persistence);
-
- // alpha_pcoh.output_diagram();
-
- // --------------------------------------------
- // Bottleneck distance between both persistence
- // --------------------------------------------
- double max_b_distance {};
- for (int dim = 0; dim < dim_max; dim ++) {
- std::vector< std::pair< Filtration_value , Filtration_value > > rips_intervals;
- std::vector< std::pair< Filtration_value , Filtration_value > > alpha_intervals;
- rips_intervals = rips_pcoh.intervals_in_dimension(dim);
- alpha_intervals = alpha_pcoh.intervals_in_dimension(dim);
- std::transform(alpha_intervals.begin(), alpha_intervals.end(), alpha_intervals.begin(), compute_root_square);
-
- double bottleneck_distance = Gudhi::persistence_diagram::bottleneck_distance(rips_intervals, alpha_intervals);
- std::cout << "In dimension " << dim << ", bottleneck distance = " << bottleneck_distance << std::endl;
- if (bottleneck_distance > max_b_distance)
- max_b_distance = bottleneck_distance;
- }
- std::cout << "================================================================================" << std::endl;
- std::cout << "Bottleneck distance is " << max_b_distance << std::endl;
-
- return 0;
-}
-
-void program_options(int argc, char * argv[]
- , std::string & off_file_points
- , Filtration_value & threshold
- , int & dim_max
- , int & p
- , Filtration_value & min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()
- ("input-file", po::value<std::string>(&off_file_points),
- "Name of an OFF file containing a point set.\n");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()
- ("help,h", "produce help message")
- ("max-edge-length,r",
- po::value<Filtration_value>(&threshold)->default_value(std::numeric_limits<Filtration_value>::infinity()),
- "Maximal length of an edge for the Rips complex construction.")
- ("cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
- "Maximal dimension of the Rips complex we want to compute.")
- ("field-charac,p", po::value<int>(&p)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")
- ("min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length intervals");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).
- options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a Rips complex defined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/example/Bottleneck_distance/bottleneck_basic_example.cpp b/example/Bottleneck_distance/bottleneck_basic_example.cpp
deleted file mode 100644
index 3df7d12d..00000000
--- a/example/Bottleneck_distance/bottleneck_basic_example.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Authors: Francois Godi, small modifications by Pawel Dlotko
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Bottleneck.h>
-
-#include <iostream>
-#include <vector>
-#include <utility> // for pair
-#include <limits> // for numeric_limits
-
-int main() {
- std::vector< std::pair<double, double> > v1, v2;
-
- v1.emplace_back(2.7, 3.7);
- v1.emplace_back(9.6, 14.);
- v1.emplace_back(34.2, 34.974);
- v1.emplace_back(3., std::numeric_limits<double>::infinity());
-
- v2.emplace_back(2.8, 4.45);
- v2.emplace_back(9.5, 14.1);
- v2.emplace_back(3.2, std::numeric_limits<double>::infinity());
-
-
- double b = Gudhi::persistence_diagram::bottleneck_distance(v1, v2);
-
- std::cout << "Bottleneck distance = " << b << std::endl;
-
- b = Gudhi::persistence_diagram::bottleneck_distance(v1, v2, 0.1);
-
- std::cout << "Approx bottleneck distance = " << b << std::endl;
-}
diff --git a/example/Cech_complex/CMakeLists.txt b/example/Cech_complex/CMakeLists.txt
deleted file mode 100644
index ab391215..00000000
--- a/example/Cech_complex/CMakeLists.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-cmake_minimum_required(VERSION 2.6)
-project(Cech_complex_examples)
-
-add_executable ( Cech_complex_example_step_by_step cech_complex_step_by_step.cpp )
-target_link_libraries(Cech_complex_example_step_by_step ${Boost_PROGRAM_OPTIONS_LIBRARY})
-if (TBB_FOUND)
- target_link_libraries(Cech_complex_example_step_by_step ${TBB_LIBRARIES})
-endif()
-add_test(NAME Cech_complex_utility_from_rips_on_tore_3D COMMAND $<TARGET_FILE:Cech_complex_example_step_by_step>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off" "-r" "0.25" "-d" "3")
-
-add_executable ( Cech_complex_example_from_points cech_complex_example_from_points.cpp)
-if (TBB_FOUND)
- target_link_libraries(Cech_complex_example_from_points ${TBB_LIBRARIES})
-endif()
-add_test(NAME Cech_complex_example_from_points COMMAND $<TARGET_FILE:Cech_complex_example_from_points>)
diff --git a/example/Cech_complex/cech_complex_example_from_points.cpp b/example/Cech_complex/cech_complex_example_from_points.cpp
deleted file mode 100644
index 3cc5a4df..00000000
--- a/example/Cech_complex/cech_complex_example_from_points.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-#include <gudhi/Cech_complex.h>
-#include <gudhi/Simplex_tree.h>
-
-#include <iostream>
-#include <string>
-#include <vector>
-#include <array>
-
-int main() {
- // Type definitions
- using Point_cloud = std::vector<std::array<double, 2>>;
- using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
- using Filtration_value = Simplex_tree::Filtration_value;
- using Cech_complex = Gudhi::cech_complex::Cech_complex<Simplex_tree, Point_cloud>;
-
- Point_cloud points;
- points.push_back({1., 0.}); // 0
- points.push_back({0., 1.}); // 1
- points.push_back({2., 1.}); // 2
- points.push_back({3., 2.}); // 3
- points.push_back({0., 3.}); // 4
- points.push_back({3. + std::sqrt(3.), 3.}); // 5
- points.push_back({1., 4.}); // 6
- points.push_back({3., 4.}); // 7
- points.push_back({2., 4. + std::sqrt(3.)}); // 8
- points.push_back({0., 4.}); // 9
- points.push_back({-0.5, 2.}); // 10
-
- // ----------------------------------------------------------------------------
- // Init of a Cech complex from points
- // ----------------------------------------------------------------------------
- Filtration_value max_radius = 1.;
- Cech_complex cech_complex_from_points(points, max_radius);
-
- Simplex_tree stree;
- cech_complex_from_points.create_complex(stree, 2);
- // ----------------------------------------------------------------------------
- // Display information about the one skeleton Cech complex
- // ----------------------------------------------------------------------------
- std::cout << "Cech complex is of dimension " << stree.dimension() << " - " << stree.num_simplices() << " simplices - "
- << stree.num_vertices() << " vertices." << std::endl;
-
- std::cout << "Iterator on Cech complex simplices in the filtration order, with [filtration value]:" << std::endl;
- for (auto f_simplex : stree.filtration_simplex_range()) {
- std::cout << " ( ";
- for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << ") -> "
- << "[" << stree.filtration(f_simplex) << "] ";
- std::cout << std::endl;
- }
- return 0;
-}
diff --git a/example/Cech_complex/cech_complex_example_from_points_for_doc.txt b/example/Cech_complex/cech_complex_example_from_points_for_doc.txt
deleted file mode 100644
index be0afc76..00000000
--- a/example/Cech_complex/cech_complex_example_from_points_for_doc.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-Iterator on Cech complex simplices in the filtration order, with [filtration value]:
- ( 0 ) -> [0]
- ( 1 ) -> [0]
- ( 2 ) -> [0]
- ( 3 ) -> [0]
- ( 4 ) -> [0]
- ( 5 ) -> [0]
- ( 6 ) -> [0]
- ( 7 ) -> [0]
- ( 8 ) -> [0]
- ( 9 ) -> [0]
- ( 10 ) -> [0]
- ( 9 4 ) -> [0.5]
- ( 9 6 ) -> [0.5]
- ( 10 1 ) -> [0.559017]
- ( 10 4 ) -> [0.559017]
- ( 1 0 ) -> [0.707107]
- ( 2 0 ) -> [0.707107]
- ( 3 2 ) -> [0.707107]
- ( 6 4 ) -> [0.707107]
- ( 9 6 4 ) -> [0.707107]
- ( 2 1 ) -> [1]
- ( 2 1 0 ) -> [1]
- ( 4 1 ) -> [1]
- ( 5 3 ) -> [1]
- ( 7 3 ) -> [1]
- ( 7 5 ) -> [1]
- ( 7 6 ) -> [1]
- ( 8 6 ) -> [1]
- ( 8 7 ) -> [1]
- ( 10 4 1 ) -> [1]
diff --git a/example/Cech_complex/cech_complex_step_by_step.cpp b/example/Cech_complex/cech_complex_step_by_step.cpp
deleted file mode 100644
index 6fbbde5b..00000000
--- a/example/Cech_complex/cech_complex_step_by_step.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2018 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/graph_simplicial_complex.h>
-#include <gudhi/distance_functions.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Points_off_io.h>
-
-#include <gudhi/Miniball.hpp>
-
-#include <boost/program_options.hpp>
-
-#include <string>
-#include <vector>
-#include <limits> // infinity
-#include <utility> // for pair
-#include <map>
-
-// ----------------------------------------------------------------------------
-// rips_persistence_step_by_step is an example of each step that is required to
-// build a Rips over a Simplex_tree. Please refer to rips_persistence to see
-// how to do the same thing with the Rips_complex wrapper for less detailed
-// steps.
-// ----------------------------------------------------------------------------
-
-// Types definition
-using Simplex_tree = Gudhi::Simplex_tree<>;
-using Simplex_handle = Simplex_tree::Simplex_handle;
-using Filtration_value = Simplex_tree::Filtration_value;
-using Point = std::vector<double>;
-using Points_off_reader = Gudhi::Points_off_reader<Point>;
-using Proximity_graph = Gudhi::Proximity_graph<Simplex_tree>;
-
-class Cech_blocker {
- private:
- using Point_cloud = std::vector<Point>;
- using Point_iterator = Point_cloud::const_iterator;
- using Coordinate_iterator = Point::const_iterator;
- using Min_sphere = Gudhi::Miniball::Miniball<Gudhi::Miniball::CoordAccessor<Point_iterator, Coordinate_iterator>>;
-
- public:
- bool operator()(Simplex_handle sh) {
- std::vector<Point> points;
- for (auto vertex : simplex_tree_.simplex_vertex_range(sh)) {
- points.push_back(point_cloud_[vertex]);
-#ifdef DEBUG_TRACES
- std::cout << "#(" << vertex << ")#";
-#endif // DEBUG_TRACES
- }
- Filtration_value radius = Gudhi::Minimal_enclosing_ball_radius()(points);
-#ifdef DEBUG_TRACES
- std::cout << "radius = " << radius << " - " << (radius > max_radius_) << std::endl;
-#endif // DEBUG_TRACES
- simplex_tree_.assign_filtration(sh, radius);
- return (radius > max_radius_);
- }
- Cech_blocker(Simplex_tree& simplex_tree, Filtration_value max_radius, const std::vector<Point>& point_cloud)
- : simplex_tree_(simplex_tree), max_radius_(max_radius), point_cloud_(point_cloud) {
- dimension_ = point_cloud_[0].size();
- }
-
- private:
- Simplex_tree simplex_tree_;
- Filtration_value max_radius_;
- std::vector<Point> point_cloud_;
- int dimension_;
-};
-
-void program_options(int argc, char* argv[], std::string& off_file_points, Filtration_value& max_radius, int& dim_max);
-
-int main(int argc, char* argv[]) {
- std::string off_file_points;
- Filtration_value max_radius;
- int dim_max;
-
- program_options(argc, argv, off_file_points, max_radius, dim_max);
-
- // Extract the points from the file filepoints
- Points_off_reader off_reader(off_file_points);
-
- // Compute the proximity graph of the points
- Proximity_graph prox_graph = Gudhi::compute_proximity_graph<Simplex_tree>(off_reader.get_point_cloud(), max_radius,
- Gudhi::Minimal_enclosing_ball_radius());
-
- // Construct the Rips complex in a Simplex Tree
- Simplex_tree st;
- // insert the proximity graph in the simplex tree
- st.insert_graph(prox_graph);
- // expand the graph until dimension dim_max
- st.expansion_with_blockers(dim_max, Cech_blocker(st, max_radius, off_reader.get_point_cloud()));
-
- std::cout << "The complex contains " << st.num_simplices() << " simplices \n";
- std::cout << " and has dimension " << st.dimension() << " \n";
-
- // Sort the simplices in the order of the filtration
- st.initialize_filtration();
-
-#if DEBUG_TRACES
- std::cout << "********************************************************************\n";
- std::cout << "* The complex contains " << st.num_simplices() << " simplices - dimension=" << st.dimension() << "\n";
- std::cout << "* Iterator on Simplices in the filtration, with [filtration value]:\n";
- for (auto f_simplex : st.filtration_simplex_range()) {
- std::cout << " "
- << "[" << st.filtration(f_simplex) << "] ";
- for (auto vertex : st.simplex_vertex_range(f_simplex)) {
- std::cout << static_cast<int>(vertex) << " ";
- }
- std::cout << std::endl;
- }
-#endif // DEBUG_TRACES
-
- return 0;
-}
-
-void program_options(int argc, char* argv[], std::string& off_file_points, Filtration_value& max_radius, int& dim_max) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()("input-file", po::value<std::string>(&off_file_points),
- "Name of an OFF file containing a point set.\n");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()("help,h", "produce help message")(
- "max-radius,r",
- po::value<Filtration_value>(&max_radius)->default_value(std::numeric_limits<Filtration_value>::infinity()),
- "Maximal length of an edge for the Rips complex construction.")(
- "cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
- "Maximal dimension of the Rips complex we want to compute.");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Construct a Cech complex defined on a set of input points.\n \n";
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/example/Contraction/CMakeLists.txt b/example/Contraction/CMakeLists.txt
deleted file mode 100644
index 582b7ab8..00000000
--- a/example/Contraction/CMakeLists.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-project(Contraction_examples)
-
-add_executable(RipsContraction Rips_contraction.cpp)
-
-add_executable(GarlandHeckbert Garland_heckbert.cpp)
-target_link_libraries(GarlandHeckbert ${Boost_TIMER_LIBRARY})
-
-add_test(NAME Contraction_example_tore3D_0.2 COMMAND $<TARGET_FILE:RipsContraction>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_1307.off" "0.2")
-# TODO(DS) : These tests are too long under Windows
-#add_test(NAME Contraction_example_sphere_0.2 COMMAND $<TARGET_FILE:RipsContraction>
-# "${CMAKE_SOURCE_DIR}/data/points/sphere3D_2646.off" "0.2")
-#add_test(NAME Contraction_example_SO3_0.3 COMMAND $<TARGET_FILE:RipsContraction>
-# "${CMAKE_SOURCE_DIR}/data/points/SO3_10000.off" "0.3")
-
-install(TARGETS RipsContraction DESTINATION bin)
-install(TARGETS GarlandHeckbert DESTINATION bin)
diff --git a/example/Contraction/Garland_heckbert.cpp b/example/Contraction/Garland_heckbert.cpp
deleted file mode 100644
index 08dd932e..00000000
--- a/example/Contraction/Garland_heckbert.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-#ifndef GARLAND_HECKBERT_H_
-#define GARLAND_HECKBERT_H_
-
-#include <gudhi/Point.h>
-#include <gudhi/Edge_contraction.h>
-#include <gudhi/Skeleton_blocker.h>
-#include <gudhi/Off_reader.h>
-
-#include <iostream>
-
-#include "Garland_heckbert/Error_quadric.h"
-
-struct Geometry_trait {
- typedef Point_d Point;
-};
-
-/**
- * The vertex stored in the complex contains a quadric.
- */
-struct Garland_heckbert_traits
- : public Gudhi::skeleton_blocker::Skeleton_blocker_simple_geometric_traits<Geometry_trait> {
- public:
- struct Garland_heckbert_vertex : public Simple_geometric_vertex {
- Error_quadric<Geometry_trait::Point> quadric;
- };
- typedef Garland_heckbert_vertex Graph_vertex;
-};
-
-using Complex = Gudhi::skeleton_blocker::Skeleton_blocker_geometric_complex< Garland_heckbert_traits >;
-using EdgeProfile = Gudhi::contraction::Edge_profile<Complex>;
-using Complex_contractor = Gudhi::contraction::Skeleton_blocker_contractor<Complex>;
-
-/**
- * How the new vertex is placed after an edge collapse : here it is placed at
- * the point minimizing the cost of the quadric.
- */
-class GH_placement : public Gudhi::contraction::Placement_policy<EdgeProfile> {
- Complex& complex_;
-
- public:
- typedef Gudhi::contraction::Placement_policy<EdgeProfile>::Placement_type Placement_type;
-
- GH_placement(Complex& complex) : complex_(complex) { (void)complex_; }
-
- Placement_type operator()(const EdgeProfile& profile) const override {
- auto sum_quad(profile.v0().quadric);
- sum_quad += profile.v1().quadric;
-
- boost::optional<Point> min_quadric_pt(sum_quad.min_cost());
- if (min_quadric_pt)
- return Placement_type(*min_quadric_pt);
- else
- return profile.p0();
- }
-};
-
-/**
- * How much cost an edge collapse : here the costs is given by a quadric
- * which expresses a squared distances with triangles planes.
- */
-class GH_cost : public Gudhi::contraction::Cost_policy<EdgeProfile> {
- Complex& complex_;
-
- public:
- typedef Gudhi::contraction::Cost_policy<EdgeProfile>::Cost_type Cost_type;
-
- GH_cost(Complex& complex) : complex_(complex) { (void)complex_; }
-
- Cost_type operator()(EdgeProfile const& profile, boost::optional<Point> const& new_point) const override {
- Cost_type res;
- if (new_point) {
- auto sum_quad(profile.v0().quadric);
- sum_quad += profile.v1().quadric;
- res = sum_quad.cost(*new_point);
- }
- return res;
- }
-};
-
-/**
- * Visitor that is called at several moment.
- * Here we initializes the quadrics of every vertex at the on_started call back
- * and we update them when contracting an edge (the quadric become the sum of both quadrics).
- */
-class GH_visitor : public Gudhi::contraction::Contraction_visitor<EdgeProfile> {
- Complex& complex_;
-
- public:
- GH_visitor(Complex& complex) : complex_(complex) { (void)complex_; }
-
- // Compute quadrics for every vertex v
- // The quadric of v consists in the sum of quadric
- // of every triangles passing through v weighted by its area
-
- void on_started(Complex & complex) override {
- for (auto v : complex.vertex_range()) {
- auto & quadric_v(complex[v].quadric);
- for (auto t : complex.triangle_range(v)) {
- auto t_it = t.begin();
- const auto& p0(complex.point(*t_it++));
- const auto& p1(complex.point(*t_it++));
- const auto& p2(complex.point(*t_it++));
- quadric_v += Error_quadric<Point>(p0, p1, p2);
- }
- }
- }
-
- /**
- * @brief Called when an edge is about to be contracted and replaced by a vertex whose position is *placement.
- */
- void on_contracting(EdgeProfile const &profile, boost::optional< Point > placement)
- override {
- profile.v0().quadric += profile.v1().quadric;
- }
-};
-
-int main(int argc, char *argv[]) {
- if (argc != 4) {
- std::cerr << "Usage " << argv[0] <<
- " input.off output.off N to load the file input.off, contract N edges and save the result to output.off.\n";
- return EXIT_FAILURE;
- }
-
- Complex complex;
- typedef Complex::Vertex_handle Vertex_handle;
-
- // load the points
- Gudhi::skeleton_blocker::Skeleton_blocker_off_reader<Complex> off_reader(argv[1], complex);
- if (!off_reader.is_valid()) {
- std::cerr << "Unable to read file:" << argv[1] << std::endl;
- return EXIT_FAILURE;
- }
-
- if (!complex.empty() && !(complex.point(Vertex_handle(0)).dimension() == 3)) {
- std::cerr << "Only points of dimension 3 are supported." << std::endl;
- return EXIT_FAILURE;
- }
-
- std::cout << "Load complex with " << complex.num_vertices() << " vertices" << std::endl;
-
- int num_contractions = atoi(argv[3]);
-
- // constructs the contractor object with Garland Heckbert policies.
- Complex_contractor contractor(complex,
- new GH_cost(complex),
- new GH_placement(complex),
- Gudhi::contraction::make_link_valid_contraction<EdgeProfile>(),
- new GH_visitor(complex));
-
- std::cout << "Contract " << num_contractions << " edges" << std::endl;
- contractor.contract_edges(num_contractions);
-
- std::cout << "Final complex has " <<
- complex.num_vertices() << " vertices, " <<
- complex.num_edges() << " edges and " <<
- complex.num_triangles() << " triangles." << std::endl;
-
- // write simplified complex
- Gudhi::skeleton_blocker::Skeleton_blocker_off_writer<Complex> off_writer(argv[2], complex);
-
- return EXIT_SUCCESS;
-}
-
-#endif // GARLAND_HECKBERT_H_
-
-
-
-
diff --git a/example/Contraction/Garland_heckbert/Error_quadric.h b/example/Contraction/Garland_heckbert/Error_quadric.h
deleted file mode 100644
index 8bd9b545..00000000
--- a/example/Contraction/Garland_heckbert/Error_quadric.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef GARLAND_HECKBERT_ERROR_QUADRIC_H_
-#define GARLAND_HECKBERT_ERROR_QUADRIC_H_
-
-#include <boost/optional/optional.hpp>
-
-#include <vector>
-#include <utility>
-
-template <typename Point> class Error_quadric {
- private:
- double coeff[10];
-
- public:
- Error_quadric() {
- clear();
- }
-
- /**
- * Quadric corresponding to the L2 distance to the plane.
- *
- * According to the notation of Garland Heckbert, they
- * denote a quadric symetric matrix as :
- * Q = [ q11 q12 q13 q14]
- * [ q12 q22 q23 q24]
- * [ q13 q23 q33 q34]
- * [ q14 q24 q34 q44]
- *
- * which is represented by a vector with 10 elts that
- * are denoted ci for clarity with :
- * Q = [ c0 c1 c2 c3 ]
- * [ c1 c4 c5 c6 ]
- * [ c2 c5 c7 c8 ]
- * [ c3 c6 c8 c9 ]
- *
- * The constructor return the quadrics that represents
- * the squared distance to the plane defined by triangle p0,p1,p2
- * times the area of triangle p0,p1,p2.
- */
- Error_quadric(const Point & p0, const Point & p1, const Point & p2) {
- Point normal(unit_normal(p0, p1, p2));
- double a = normal[0];
- double b = normal[1];
- double c = normal[2];
- double d = -a * p0[0] - b * p0[1] - c * p0[2];
- coeff[0] = a*a;
- coeff[1] = a*b;
- coeff[2] = a*c;
- coeff[3] = a*d;
- coeff[4] = b*b;
- coeff[5] = b*c;
- coeff[6] = b*d;
- coeff[7] = c*c;
- coeff[8] = c*d;
- coeff[9] = d*d;
-
- double area_p0p1p2 = std::sqrt(squared_area(p0, p1, p2));
- for (auto& x : coeff)
- x *= area_p0p1p2;
- }
-
- inline double squared_area(const Point& p0, const Point& p1, const Point& p2) {
- // if (x1,x2,x3) = p1-p0 and (y1,y2,y3) = p2-p0
- // then the squared area is = (u^2+v^2+w^2)/4
- // with: u = x2 * y3 - x3 * y2;
- // v = x3 * y1 - x1 * y3;
- // w = x1 * y2 - x2 * y1;
- Point p0p1(p1 - p0);
- Point p0p2(p2 - p0);
- double A = p0p1[1] * p0p2[2] - p0p1[2] * p0p2[1];
- double B = p0p1[2] * p0p2[0] - p0p1[0] * p0p2[2];
- double C = p0p1[0] * p0p2[1] - p0p1[1] * p0p2[0];
- return 1. / 4. * (A * A + B * B + C * C);
- }
-
- void clear() {
- for (auto& x : coeff)
- x = 0;
- }
-
- Error_quadric& operator+=(const Error_quadric& other) {
- if (this != &other) {
- for (int i = 0; i < 10; ++i)
- coeff[i] += other.coeff[i];
- }
- return *this;
- }
-
- /**
- * @return The quadric quost defined by the scalar product v^T Q v where Q is the quadratic form of Garland/Heckbert
- */
- inline double cost(const Point& point) const {
- double cost =
- coeff[0] * point.x() * point.x() + coeff[4] * point.y() * point.y() + coeff[7] * point.z() * point.z()
- + 2 * (coeff[1] * point.x() * point.y() + coeff[5] * point.y() * point.z() + coeff[2] * point.z() * point.x())
- + 2 * (coeff[3] * point.x() + coeff[6] * point.y() + coeff[8] * point.z())
- + coeff[9];
- if (cost < 0) {
- return 0;
- } else {
- return cost;
- }
- }
-
- inline double grad_determinant() const {
- return
- coeff[0] * coeff[4] * coeff[7]
- - coeff[0] * coeff[5] * coeff[5]
- - coeff[1] * coeff[1] * coeff[7]
- + 2 * coeff[1] * coeff[5] * coeff[2]
- - coeff[4] * coeff[2] * coeff[2];
- }
-
- /**
- * Return the point such that it minimizes the gradient of the quadric.
- * Det must be passed with the determinant value of the gradient (should be non zero).
- */
- inline Point solve_linear_gradient(double det) const {
- return Point({
- (-coeff[1] * coeff[5] * coeff[8] + coeff[1] * coeff[7] * coeff[6] + coeff[2] * coeff[8] * coeff[4] -
- coeff[2] * coeff[5] * coeff[6] - coeff[3] * coeff[4] * coeff[7] + coeff[3] * coeff[5] * coeff[5])
- / det,
- (coeff[0] * coeff[5] * coeff[8] - coeff[0] * coeff[7] * coeff[6] - coeff[5] * coeff[2] * coeff[3] -
- coeff[1] * coeff[2] * coeff[8] + coeff[6] * coeff[2] * coeff[2] + coeff[1] * coeff[3] * coeff[7])
- / det,
- (-coeff[8] * coeff[0] * coeff[4] + coeff[8] * coeff[1] * coeff[1] + coeff[2] * coeff[3] * coeff[4] +
- coeff[5] * coeff[0] * coeff[6] - coeff[5] * coeff[1] * coeff[3] - coeff[1] * coeff[2] * coeff[6])
- / det
- });
- }
-
- /**
- * returns the point that minimizes the quadric.
- * It inverses the quadric if its determinant is higher that a given threshold .
- * If the determinant is lower than this value the returned value is uninitialized.
- */
- boost::optional<Point> min_cost(double scale = 1) const {
- // const double min_determinant = 1e-4 * scale*scale;
- const double min_determinant = 1e-5;
- boost::optional<Point> pt_res;
- double det = grad_determinant();
- if (std::abs(det) > min_determinant)
- pt_res = solve_linear_gradient(det);
- return pt_res;
- }
-
- friend std::ostream& operator<<(std::ostream& stream, const Error_quadric& quadric) {
- stream << "\n[ " << quadric.coeff[0] << "," << quadric.coeff[1] << "," << quadric.coeff[2] << "," <<
- quadric.coeff[3] << ";\n";
- stream << " " << quadric.coeff[1] << "," << quadric.coeff[4] << "," << quadric.coeff[5] << "," <<
- quadric.coeff[6] << ";\n";
- stream << " " << quadric.coeff[2] << "," << quadric.coeff[5] << "," << quadric.coeff[7] << "," <<
- quadric.coeff[8] << ";\n";
- stream << " " << quadric.coeff[3] << "," << quadric.coeff[6] << "," << quadric.coeff[8] << "," <<
- quadric.coeff[9] << "]";
- return stream;
- }
-};
-
-#endif // GARLAND_HECKBERT_ERROR_QUADRIC_H_
diff --git a/example/Contraction/Rips_contraction.cpp b/example/Contraction/Rips_contraction.cpp
deleted file mode 100644
index 7f9b150a..00000000
--- a/example/Contraction/Rips_contraction.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include <gudhi/Edge_contraction.h>
-#include <gudhi/Skeleton_blocker.h>
-#include <gudhi/Off_reader.h>
-#include <gudhi/Point.h>
-#include <gudhi/Clock.h>
-
-#include <iostream>
-
-struct Geometry_trait {
- typedef Point_d Point;
-};
-
-using Complex_geometric_traits = Gudhi::skeleton_blocker::Skeleton_blocker_simple_geometric_traits<Geometry_trait>;
-using Complex = Gudhi::skeleton_blocker::Skeleton_blocker_geometric_complex< Complex_geometric_traits >;
-using Profile = Gudhi::contraction::Edge_profile<Complex>;
-using Complex_contractor = Gudhi::contraction::Skeleton_blocker_contractor<Complex>;
-
-
-template<typename ComplexType>
-void build_rips(ComplexType& complex, double offset) {
- if (offset <= 0) return;
- auto vertices = complex.vertex_range();
- for (auto p = vertices.begin(); p != vertices.end(); ++p)
- for (auto q = p; ++q != vertices.end(); /**/) {
- if (squared_dist(complex.point(*p), complex.point(*q)) < 4 * offset * offset)
- complex.add_edge_without_blockers(*p, *q);
- }
-}
-
-int main(int argc, char *argv[]) {
- if (argc != 3) {
- std::cerr << "Usage " << argv[0] << " ../../../data/meshes/SO3_10000.off 0.3 to load the file " <<
- "../../data/SO3_10000.off and contract the Rips complex built with paremeter 0.3.\n";
- return -1;
- }
-
- Complex complex;
-
- // load only the points
- Gudhi::skeleton_blocker::Skeleton_blocker_off_reader<Complex> off_reader(argv[1], complex, true);
- if (!off_reader.is_valid()) {
- std::cerr << "Unable to read file:" << argv[1] << std::endl;
- return EXIT_FAILURE;
- }
-
- std::cout << "Build the Rips complex with " << complex.num_vertices() << " vertices" << std::endl;
-
- build_rips(complex, atof(argv[2]));
-
- Gudhi::Clock contraction_chrono("Time to simplify and enumerate simplices");
-
- std::cout << "Initial complex has " <<
- complex.num_vertices() << " vertices and " <<
- complex.num_edges() << " edges" << std::endl;
-
- Complex_contractor contractor(complex,
- new Gudhi::contraction::Edge_length_cost<Profile>,
- Gudhi::contraction::make_first_vertex_placement<Profile>(),
- Gudhi::contraction::make_link_valid_contraction<Profile>(),
- Gudhi::contraction::make_remove_popable_blockers_visitor<Profile>());
- contractor.contract_edges();
-
- std::cout << "Counting final number of simplices \n";
- unsigned num_simplices = std::distance(complex.complex_simplex_range().begin(), complex.complex_simplex_range().end());
-
- std::cout << "Final complex has " <<
- complex.num_vertices() << " vertices, " <<
- complex.num_edges() << " edges, " <<
- complex.num_blockers() << " blockers and " <<
- num_simplices << " simplices" << std::endl;
-
- std::cout << contraction_chrono;
-
- return EXIT_SUCCESS;
-}
-
-
diff --git a/example/Nerve_GIC/CMakeLists.txt b/example/Nerve_GIC/CMakeLists.txt
deleted file mode 100644
index fdecf86e..00000000
--- a/example/Nerve_GIC/CMakeLists.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-project(Nerve_GIC_examples)
-
-if (NOT CGAL_VERSION VERSION_LESS 4.8.1)
-
- add_executable ( CoordGIC CoordGIC.cpp )
- add_executable ( FuncGIC FuncGIC.cpp )
-
- if (TBB_FOUND)
- target_link_libraries(CoordGIC ${TBB_LIBRARIES})
- target_link_libraries(FuncGIC ${TBB_LIBRARIES})
- endif()
-
- # Copy files for not to pollute sources when testing
- file(COPY "${CMAKE_SOURCE_DIR}/data/points/tore3D_1307.off" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
- file(COPY "${CMAKE_SOURCE_DIR}/data/points/COIL_database/lucky_cat.off" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
- file(COPY "${CMAKE_SOURCE_DIR}/data/points/COIL_database/lucky_cat_PCA1" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
-
- add_test(NAME Nerve_GIC_example_CoordGIC COMMAND $<TARGET_FILE:CoordGIC>
- "${CMAKE_CURRENT_BINARY_DIR}/tore3D_1307.off" "0")
-
- add_test(NAME Nerve_GIC_example_FuncGIC COMMAND $<TARGET_FILE:FuncGIC>
- "${CMAKE_CURRENT_BINARY_DIR}/lucky_cat.off"
- "${CMAKE_CURRENT_BINARY_DIR}/lucky_cat_PCA1")
-
- install(TARGETS CoordGIC DESTINATION bin)
- install(TARGETS FuncGIC DESTINATION bin)
-
-endif (NOT CGAL_VERSION VERSION_LESS 4.8.1)
diff --git a/example/Nerve_GIC/CoordGIC.cpp b/example/Nerve_GIC/CoordGIC.cpp
deleted file mode 100644
index 9889b198..00000000
--- a/example/Nerve_GIC/CoordGIC.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Mathieu Carrière
- *
- * Copyright (C) 2017 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/GIC.h>
-
-#include <string>
-#include <vector>
-
-void usage(int nbArgs, char *const progName) {
- std::cerr << "Error: Number of arguments (" << nbArgs << ") is not correct\n";
- std::cerr << "Usage: " << progName << " filename.off coordinate [-v] \n";
- std::cerr << " i.e.: " << progName << " ../../data/points/human.off 2 -v \n";
- exit(-1); // ----- >>
-}
-
-int main(int argc, char **argv) {
- if ((argc != 3) && (argc != 4)) usage(argc, argv[0]);
-
- using Point = std::vector<float>;
-
- std::string off_file_name(argv[1]);
- int coord = atoi(argv[2]);
- bool verb = 0;
- if (argc == 4) verb = 1;
-
- // -----------------------------------------
- // Init of a functional GIC from an OFF file
- // -----------------------------------------
-
- Gudhi::cover_complex::Cover_complex<Point> GIC;
- GIC.set_verbose(verb);
-
- bool check = GIC.read_point_cloud(off_file_name);
-
- if (!check) {
- std::cout << "Incorrect OFF file." << std::endl;
- } else {
- GIC.set_type("GIC");
-
- GIC.set_color_from_coordinate(coord);
- GIC.set_function_from_coordinate(coord);
-
- GIC.set_graph_from_automatic_rips(Gudhi::Euclidean_distance());
- GIC.set_automatic_resolution();
- GIC.set_gain();
- GIC.set_cover_from_function();
-
- GIC.find_simplices();
-
- GIC.compute_distribution(10);
- GIC.compute_p_value();
-
- GIC.plot_DOT();
-
- Gudhi::Simplex_tree<> stree;
- GIC.create_complex(stree);
-
- // --------------------------------------------
- // Display information about the functional GIC
- // --------------------------------------------
-
- if (verb) {
- std::cout << "Coordinate GIC is of dimension " << stree.dimension() << " - " << stree.num_simplices()
- << " simplices - " << stree.num_vertices() << " vertices." << std::endl;
-
- std::cout << "Iterator on coordinate GIC simplices" << std::endl;
- for (auto f_simplex : stree.filtration_simplex_range()) {
- for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << std::endl;
- }
- }
- }
-
- return 0;
-}
diff --git a/example/Nerve_GIC/FuncGIC.cpp b/example/Nerve_GIC/FuncGIC.cpp
deleted file mode 100644
index 1f5de999..00000000
--- a/example/Nerve_GIC/FuncGIC.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Mathieu Carrière
- *
- * Copyright (C) 2017 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/GIC.h>
-
-#include <string>
-#include <vector>
-
-void usage(int nbArgs, char *const progName) {
- std::cerr << "Error: Number of arguments (" << nbArgs << ") is not correct\n";
- std::cerr << "Usage: " << progName << " filename.off function [-v] \n";
- std::cerr << " i.e.: " << progName << " ../../data/points/COIL_database/lucky_cat.off "
- "../../data/points/COIL_database/lucky_cat_PCA1 -v \n";
- exit(-1); // ----- >>
-}
-
-int main(int argc, char **argv) {
- if ((argc != 3) && (argc != 4)) usage(argc, argv[0]);
-
- using Point = std::vector<float>;
-
- std::string off_file_name(argv[1]);
- std::string func_file_name = argv[2];
- bool verb = 0;
- if (argc == 4) verb = 1;
-
- // -----------------------------------------
- // Init of a functional GIC from an OFF file
- // -----------------------------------------
-
- Gudhi::cover_complex::Cover_complex<Point> GIC;
- GIC.set_verbose(verb);
-
- bool check = GIC.read_point_cloud(off_file_name);
-
- if (!check) {
- std::cout << "Incorrect OFF file." << std::endl;
- } else {
- GIC.set_type("GIC");
-
- GIC.set_color_from_file(func_file_name);
- GIC.set_function_from_file(func_file_name);
-
- GIC.set_graph_from_automatic_rips(Gudhi::Euclidean_distance());
- GIC.set_automatic_resolution();
- GIC.set_gain();
- GIC.set_cover_from_function();
-
- GIC.find_simplices();
-
- GIC.plot_DOT();
-
- Gudhi::Simplex_tree<> stree;
- GIC.create_complex(stree);
-
- // --------------------------------------------
- // Display information about the functional GIC
- // --------------------------------------------
-
- if (verb) {
- std::cout << "Functional GIC is of dimension " << stree.dimension() << " - " << stree.num_simplices()
- << " simplices - " << stree.num_vertices() << " vertices." << std::endl;
-
- std::cout << "Iterator on functional GIC simplices" << std::endl;
- for (auto f_simplex : stree.filtration_simplex_range()) {
- for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << std::endl;
- }
- }
- }
-
- return 0;
-}
diff --git a/example/Persistence_representations/CMakeLists.txt b/example/Persistence_representations/CMakeLists.txt
deleted file mode 100644
index 33558df3..00000000
--- a/example/Persistence_representations/CMakeLists.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-project(Persistence_representations_example)
-
-add_executable ( Persistence_representations_example_landscape_on_grid persistence_landscape_on_grid.cpp )
-add_test(NAME Persistence_representations_example_landscape_on_grid
- COMMAND $<TARGET_FILE:Persistence_representations_example_landscape_on_grid>)
-install(TARGETS Persistence_representations_example_landscape_on_grid DESTINATION bin)
-
-add_executable ( Persistence_representations_example_landscape persistence_landscape.cpp )
-add_test(NAME Persistence_representations_example_landscape
- COMMAND $<TARGET_FILE:Persistence_representations_example_landscape>)
-install(TARGETS Persistence_representations_example_landscape DESTINATION bin)
-
-add_executable ( Persistence_representations_example_intervals persistence_intervals.cpp )
-add_test(NAME Persistence_representations_example_intervals
- COMMAND $<TARGET_FILE:Persistence_representations_example_intervals>
- "${CMAKE_SOURCE_DIR}/data/persistence_diagram/first.pers")
-install(TARGETS Persistence_representations_example_intervals DESTINATION bin)
-
-add_executable ( Persistence_representations_example_vectors persistence_vectors.cpp )
-add_test(NAME Persistence_representations_example_vectors
- COMMAND $<TARGET_FILE:Persistence_representations_example_vectors>)
-install(TARGETS Persistence_representations_example_vectors DESTINATION bin)
-
-add_executable ( Persistence_representations_example_heat_maps persistence_heat_maps.cpp )
-add_test(NAME Persistence_representations_example_heat_maps
- COMMAND $<TARGET_FILE:Persistence_representations_example_heat_maps>)
-install(TARGETS Persistence_representations_example_heat_maps DESTINATION bin)
-
diff --git a/example/Persistence_representations/persistence_heat_maps.cpp b/example/Persistence_representations/persistence_heat_maps.cpp
deleted file mode 100644
index 323b57e9..00000000
--- a/example/Persistence_representations/persistence_heat_maps.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_heat_maps.h>
-
-#include <iostream>
-#include <vector>
-#include <utility>
-
-using constant_scaling_function = Gudhi::Persistence_representations::constant_scaling_function;
-using Persistence_heat_maps = Gudhi::Persistence_representations::Persistence_heat_maps<constant_scaling_function>;
-
-int main(int argc, char** argv) {
- // create two simple vectors with birth--death pairs:
-
- std::vector<std::pair<double, double> > persistence1;
- std::vector<std::pair<double, double> > persistence2;
-
- persistence1.push_back(std::make_pair(1, 2));
- persistence1.push_back(std::make_pair(6, 8));
- persistence1.push_back(std::make_pair(0, 4));
- persistence1.push_back(std::make_pair(3, 8));
-
- persistence2.push_back(std::make_pair(2, 9));
- persistence2.push_back(std::make_pair(1, 6));
- persistence2.push_back(std::make_pair(3, 5));
- persistence2.push_back(std::make_pair(6, 10));
-
- // over here we define a function we sill put on a top on every birth--death pair in the persistence interval. It can
- // be anything. Over here we will use standard Gaussian
- std::vector<std::vector<double> > filter = Gudhi::Persistence_representations::create_Gaussian_filter(5, 1);
-
- // creating two heat maps.
- Persistence_heat_maps hm1(persistence1, filter, false, 20, 0, 11);
- Persistence_heat_maps hm2(persistence2, filter, false, 20, 0, 11);
-
- std::vector<Persistence_heat_maps*> vector_of_maps;
- vector_of_maps.push_back(&hm1);
- vector_of_maps.push_back(&hm2);
-
- // compute median/mean of a vector of heat maps:
- Persistence_heat_maps mean;
- mean.compute_mean(vector_of_maps);
- Persistence_heat_maps median;
- median.compute_median(vector_of_maps);
-
- // to compute L^1 distance between hm1 and hm2:
- std::cout << "The L^1 distance is : " << hm1.distance(hm2, 1) << std::endl;
-
- // to average of hm1 and hm2:
- std::vector<Persistence_heat_maps*> to_average;
- to_average.push_back(&hm1);
- to_average.push_back(&hm2);
- Persistence_heat_maps av;
- av.compute_average(to_average);
-
- // to compute scalar product of hm1 and hm2:
- std::cout << "Scalar product is : " << hm1.compute_scalar_product(hm2) << std::endl;
-
- return 0;
-}
diff --git a/example/Persistence_representations/persistence_intervals.cpp b/example/Persistence_representations/persistence_intervals.cpp
deleted file mode 100644
index b5dcf25c..00000000
--- a/example/Persistence_representations/persistence_intervals.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_intervals.h>
-
-#include <iostream>
-#include <utility>
-#include <vector>
-
-using Persistence_intervals = Gudhi::Persistence_representations::Persistence_intervals;
-
-int main(int argc, char** argv) {
- if (argc != 2) {
- std::cout << "To run this program, please provide the name of a file with persistence diagram \n";
- return 1;
- }
-
- Persistence_intervals p(argv[1]);
- std::pair<double, double> min_max_ = p.get_x_range();
- std::cout << "Birth-death range : " << min_max_.first << " " << min_max_.second << std::endl;
-
- std::vector<double> dominant_ten_intervals_length = p.length_of_dominant_intervals(10);
- std::cout << "Length of ten dominant intervals : " << std::endl;
- for (size_t i = 0; i != dominant_ten_intervals_length.size(); ++i) {
- std::cout << dominant_ten_intervals_length[i] << std::endl;
- }
-
- std::vector<std::pair<double, double> > ten_dominant_intervals = p.dominant_intervals(10);
- std::cout << "Here are the dominant intervals : " << std::endl;
- for (size_t i = 0; i != ten_dominant_intervals.size(); ++i) {
- std::cout << "( " << ten_dominant_intervals[i].first << "," << ten_dominant_intervals[i].second << std::endl;
- }
-
- std::vector<size_t> histogram = p.histogram_of_lengths(10);
- std::cout << "Here is the histogram of barcode's length : " << std::endl;
- for (size_t i = 0; i != histogram.size(); ++i) {
- std::cout << histogram[i] << " ";
- }
- std::cout << std::endl;
-
- std::vector<size_t> cumulative_histogram = p.cumulative_histogram_of_lengths(10);
- std::cout << "Cumulative histogram : " << std::endl;
- for (size_t i = 0; i != cumulative_histogram.size(); ++i) {
- std::cout << cumulative_histogram[i] << " ";
- }
- std::cout << std::endl;
-
- std::vector<double> char_funct_diag = p.characteristic_function_of_diagram(min_max_.first, min_max_.second);
- std::cout << "Characteristic function of diagram : " << std::endl;
- for (size_t i = 0; i != char_funct_diag.size(); ++i) {
- std::cout << char_funct_diag[i] << " ";
- }
- std::cout << std::endl;
-
- std::vector<double> cumul_char_funct_diag =
- p.cumulative_characteristic_function_of_diagram(min_max_.first, min_max_.second);
- std::cout << "Cumulative characteristic function of diagram : " << std::endl;
- for (size_t i = 0; i != cumul_char_funct_diag.size(); ++i) {
- std::cout << cumul_char_funct_diag[i] << " ";
- }
- std::cout << std::endl;
-
- std::cout << "Persistence Betti numbers \n";
- std::vector<std::pair<double, size_t> > pbns = p.compute_persistent_betti_numbers();
- for (size_t i = 0; i != pbns.size(); ++i) {
- std::cout << pbns[i].first << " " << pbns[i].second << std::endl;
- }
-
- return 0;
-}
diff --git a/example/Persistence_representations/persistence_landscape.cpp b/example/Persistence_representations/persistence_landscape.cpp
deleted file mode 100644
index 27542cf7..00000000
--- a/example/Persistence_representations/persistence_landscape.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_landscape.h>
-
-#include <iostream>
-#include <vector>
-#include <utility>
-
-using Persistence_landscape = Gudhi::Persistence_representations::Persistence_landscape;
-
-int main(int argc, char** argv) {
- // create two simple vectors with birth--death pairs:
-
- std::vector<std::pair<double, double> > persistence1;
- std::vector<std::pair<double, double> > persistence2;
-
- persistence1.push_back(std::make_pair(1, 2));
- persistence1.push_back(std::make_pair(6, 8));
- persistence1.push_back(std::make_pair(0, 4));
- persistence1.push_back(std::make_pair(3, 8));
-
- persistence2.push_back(std::make_pair(2, 9));
- persistence2.push_back(std::make_pair(1, 6));
- persistence2.push_back(std::make_pair(3, 5));
- persistence2.push_back(std::make_pair(6, 10));
-
- // create two persistence landscapes based on persistence1 and persistence2:
- Persistence_landscape l1(persistence1);
- Persistence_landscape l2(persistence2);
-
- // This is how to compute integral of landscapes:
- std::cout << "Integral of the first landscape : " << l1.compute_integral_of_landscape() << std::endl;
- std::cout << "Integral of the second landscape : " << l2.compute_integral_of_landscape() << std::endl;
-
- // And here how to write landscapes to stream:
- std::cout << "l1 : " << l1 << std::endl;
- std::cout << "l2 : " << l2 << std::endl;
-
- // Arithmetic operations on landscapes:
- Persistence_landscape sum = l1 + l2;
- std::cout << "sum : " << sum << std::endl;
-
- // here are the maxima of the functions:
- std::cout << "Maximum of l1 : " << l1.compute_maximum() << std::endl;
- std::cout << "Maximum of l2 : " << l2.compute_maximum() << std::endl;
-
- // here are the norms of landscapes:
- std::cout << "L^1 Norm of l1 : " << l1.compute_norm_of_landscape(1.) << std::endl;
- std::cout << "L^1 Norm of l2 : " << l2.compute_norm_of_landscape(1.) << std::endl;
-
- // here is the average of landscapes:
- Persistence_landscape average;
- average.compute_average({&l1, &l2});
- std::cout << "average : " << average << std::endl;
-
- // here is the distance of landscapes:
- std::cout << "Distance : " << l1.distance(l2) << std::endl;
-
- // here is the scalar product of landscapes:
- std::cout << "Scalar product : " << l1.compute_scalar_product(l2) << std::endl;
-
- // here is how to create a file which is suitable for visualization via gnuplot:
- average.plot("average_landscape");
-
- return 0;
-}
diff --git a/example/Persistence_representations/persistence_landscape_on_grid.cpp b/example/Persistence_representations/persistence_landscape_on_grid.cpp
deleted file mode 100644
index 0f471a67..00000000
--- a/example/Persistence_representations/persistence_landscape_on_grid.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_landscape_on_grid.h>
-
-#include <iostream>
-#include <utility>
-#include <vector>
-
-using Persistence_landscape_on_grid = Gudhi::Persistence_representations::Persistence_landscape_on_grid;
-
-int main(int argc, char** argv) {
- // create two simple vectors with birth--death pairs:
-
- std::vector<std::pair<double, double> > persistence1;
- std::vector<std::pair<double, double> > persistence2;
-
- persistence1.push_back(std::make_pair(1, 2));
- persistence1.push_back(std::make_pair(6, 8));
- persistence1.push_back(std::make_pair(0, 4));
- persistence1.push_back(std::make_pair(3, 8));
-
- persistence2.push_back(std::make_pair(2, 9));
- persistence2.push_back(std::make_pair(1, 6));
- persistence2.push_back(std::make_pair(3, 5));
- persistence2.push_back(std::make_pair(6, 10));
-
- // create two persistence landscapes based on persistence1 and persistence2:
- Persistence_landscape_on_grid l1(persistence1, 0, 11, 20);
- Persistence_landscape_on_grid l2(persistence2, 0, 11, 20);
-
- // This is how to compute integral of landscapes:
- std::cout << "Integral of the first landscape : " << l1.compute_integral_of_landscape() << std::endl;
- std::cout << "Integral of the second landscape : " << l2.compute_integral_of_landscape() << std::endl;
-
- // And here how to write landscapes to stream:
- std::cout << "l1 : " << l1 << std::endl;
- std::cout << "l2 : " << l2 << std::endl;
-
- // here are the maxima of the functions:
- std::cout << "Maximum of l1 : " << l1.compute_maximum() << std::endl;
- std::cout << "Maximum of l2 : " << l2.compute_maximum() << std::endl;
-
- // here are the norms of landscapes:
- std::cout << "L^1 Norm of l1 : " << l1.compute_norm_of_landscape(1.) << std::endl;
- std::cout << "L^1 Norm of l2 : " << l2.compute_norm_of_landscape(1.) << std::endl;
-
- // here is the average of landscapes:
- Persistence_landscape_on_grid average;
- average.compute_average({&l1, &l2});
- std::cout << "average : " << average << std::endl;
-
- // here is the distance of landscapes:
- std::cout << "Distance : " << l1.distance(l2) << std::endl;
-
- // here is the scalar product of landscapes:
- std::cout << "Scalar product : " << l1.compute_scalar_product(l2) << std::endl;
-
- // here is how to create a file which is suitable for visualization via gnuplot:
- average.plot("average_landscape");
-
- return 0;
-}
diff --git a/example/Persistence_representations/persistence_vectors.cpp b/example/Persistence_representations/persistence_vectors.cpp
deleted file mode 100644
index 072e530d..00000000
--- a/example/Persistence_representations/persistence_vectors.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_vectors.h>
-
-#include <iostream>
-#include <vector>
-#include <cmath>
-#include <iomanip>
-#include <limits>
-#include <utility>
-
-using Vector_distances_in_diagram =
- Gudhi::Persistence_representations::Vector_distances_in_diagram<Gudhi::Euclidean_distance>;
-
-int main(int argc, char** argv) {
- // create two simple vectors with birth--death pairs:
-
- std::vector<std::pair<double, double> > persistence1;
- std::vector<std::pair<double, double> > persistence2;
-
- persistence1.push_back(std::make_pair(1, 2));
- persistence1.push_back(std::make_pair(6, 8));
- persistence1.push_back(std::make_pair(0, 4));
- persistence1.push_back(std::make_pair(3, 8));
-
- persistence2.push_back(std::make_pair(2, 9));
- persistence2.push_back(std::make_pair(1, 6));
- persistence2.push_back(std::make_pair(3, 5));
- persistence2.push_back(std::make_pair(6, 10));
-
- // create two persistence vectors based on persistence1 and persistence2:
- Vector_distances_in_diagram v1(persistence1, std::numeric_limits<size_t>::max());
- Vector_distances_in_diagram v2(persistence2, std::numeric_limits<size_t>::max());
-
- // writing to a stream:
- std::cout << "v1 : " << v1 << std::endl;
- std::cout << "v2 : " << v2 << std::endl;
-
- // averages:
- Vector_distances_in_diagram average;
- average.compute_average({&v1, &v2});
- std::cout << "Average : " << average << std::endl;
-
- // computations of distances:
- std::cout << "l^1 distance : " << v1.distance(v2) << std::endl;
-
- // computations of scalar product:
- std::cout << "Scalar product of l1 and l2 : " << v1.compute_scalar_product(v2) << std::endl;
-
- // create a file with a gnuplot script:
- v1.plot("plot_of_vector_representation");
-
- return 0;
-}
diff --git a/example/Persistent_cohomology/CMakeLists.txt b/example/Persistent_cohomology/CMakeLists.txt
deleted file mode 100644
index 0f731519..00000000
--- a/example/Persistent_cohomology/CMakeLists.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-project(Persistent_cohomology_examples)
-
-add_executable(plain_homology plain_homology.cpp)
-
-add_executable(persistence_from_simple_simplex_tree persistence_from_simple_simplex_tree.cpp)
-
-add_executable(rips_persistence_step_by_step rips_persistence_step_by_step.cpp)
-target_link_libraries(rips_persistence_step_by_step ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
-add_executable(rips_persistence_via_boundary_matrix rips_persistence_via_boundary_matrix.cpp)
-target_link_libraries(rips_persistence_via_boundary_matrix ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
-add_executable(persistence_from_file persistence_from_file.cpp)
-target_link_libraries(persistence_from_file ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
-if (TBB_FOUND)
- target_link_libraries(plain_homology ${TBB_LIBRARIES})
- target_link_libraries(persistence_from_simple_simplex_tree ${TBB_LIBRARIES})
- target_link_libraries(rips_persistence_step_by_step ${TBB_LIBRARIES})
- target_link_libraries(rips_persistence_via_boundary_matrix ${TBB_LIBRARIES})
- target_link_libraries(persistence_from_file ${TBB_LIBRARIES})
-endif()
-
-add_test(NAME Persistent_cohomology_example_plain_homology COMMAND $<TARGET_FILE:plain_homology>)
-add_test(NAME Persistent_cohomology_example_from_simple_simplex_tree COMMAND $<TARGET_FILE:persistence_from_simple_simplex_tree>
- "1" "0")
-add_test(NAME Persistent_cohomology_example_from_rips_step_by_step_on_tore_3D COMMAND $<TARGET_FILE:rips_persistence_step_by_step>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_1307.off" "-r" "0.25" "-m" "0.5" "-d" "3" "-p" "3")
-add_test(NAME Persistent_cohomology_example_via_boundary_matrix COMMAND $<TARGET_FILE:rips_persistence_via_boundary_matrix>
- "${CMAKE_SOURCE_DIR}/data/points/Kl.off" "-r" "0.16" "-d" "3" "-p" "3" "-m" "100")
-add_test(NAME Persistent_cohomology_example_from_file_3_2_0 COMMAND $<TARGET_FILE:persistence_from_file>
- "${CMAKE_SOURCE_DIR}/data/filtered_simplicial_complex/bunny_5000_complex.fsc" "-p" "2" "-m" "0")
-add_test(NAME Persistent_cohomology_example_from_file_3_3_100 COMMAND $<TARGET_FILE:persistence_from_file>
- "${CMAKE_SOURCE_DIR}/data/filtered_simplicial_complex/bunny_5000_complex.fsc" "-p" "3" "-m" "100")
-
-install(TARGETS plain_homology DESTINATION bin)
-install(TARGETS persistence_from_simple_simplex_tree DESTINATION bin)
-install(TARGETS rips_persistence_step_by_step DESTINATION bin)
-install(TARGETS rips_persistence_via_boundary_matrix DESTINATION bin)
-install(TARGETS persistence_from_file DESTINATION bin)
-
-if(GMP_FOUND)
- if(GMPXX_FOUND)
- add_executable(rips_multifield_persistence rips_multifield_persistence.cpp )
- target_link_libraries(rips_multifield_persistence
- ${Boost_PROGRAM_OPTIONS_LIBRARY} ${GMPXX_LIBRARIES} ${GMP_LIBRARIES})
- if (TBB_FOUND)
- target_link_libraries(rips_multifield_persistence ${TBB_LIBRARIES})
- endif(TBB_FOUND)
- add_test(NAME Persistent_cohomology_example_multifield_2_71 COMMAND $<TARGET_FILE:rips_multifield_persistence>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_1307.off" "-r" "0.25" "-m" "0.5" "-d" "3" "-p" "2" "-q" "71")
- install(TARGETS rips_multifield_persistence DESTINATION bin)
- endif(GMPXX_FOUND)
-endif(GMP_FOUND)
-
-if(CGAL_FOUND)
- if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.7.0)
- add_executable(custom_persistence_sort custom_persistence_sort.cpp)
- target_link_libraries(custom_persistence_sort ${CGAL_LIBRARY})
-
- if (TBB_FOUND)
- target_link_libraries(custom_persistence_sort ${TBB_LIBRARIES})
- endif(TBB_FOUND)
- add_test(NAME Persistent_cohomology_example_custom_persistence_sort COMMAND $<TARGET_FILE:custom_persistence_sort>)
-
- install(TARGETS custom_persistence_sort DESTINATION bin)
-
- endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.7.0)
-endif(CGAL_FOUND)
diff --git a/example/Persistent_cohomology/README b/example/Persistent_cohomology/README
deleted file mode 100644
index f39d9584..00000000
--- a/example/Persistent_cohomology/README
+++ /dev/null
@@ -1,67 +0,0 @@
-To build the examples, run in a Terminal:
-
-cd /path-to-examples/
-cmake .
-make
-
-***********************************************************************************************************************
-Example of use of RIPS:
-
-Computation of the persistent homology with Z/2Z and Z/3Z coefficients simultaneously of the Rips complex
-on points sampling a 3D torus:
-
-./rips_multifield_persistence ../../data/points/tore3D_1307.off -r 0.25 -m 0.12 -d 3 -p 2 -q 3
-
-output:
-6 0 0 inf
-6 1 0.0983494 inf
-6 1 0.104347 inf
-6 2 0.138335 inf
-6 0 0 0.122545
-6 0 0 0.121171
-6 0 0 0.120964
-6 0 0 0.12057
-6 0 0 0.12047
-6 0 0 0.120414
-
-Every line is of this format: p1*...*pr dim b d
-where
- p1*...*pr is the product of prime numbers pi such that the homology feature exists in homology with Z/piZ coefficients.
- dim is the dimension of the homological feature,
- b and d are respectively the birth and death of the feature and
-
-and the computation with all Z/pZ for 2 <= p <= 71 (20 first prime numbers):
-
- ./rips_multifield_persistence ../../data/points/Kl.off -r 0.25 -m 0.5 -d 3 -p 2 -q 71
-
-output:
-557940830126698960967415390 0 0 inf
-557940830126698960967415390 1 0.0983494 inf
-557940830126698960967415390 1 0.104347 inf
-557940830126698960967415390 2 0.138335 inf
-557940830126698960967415390 0 0 0.122545
-557940830126698960967415390 0 0 0.121171
-557940830126698960967415390 0 0 0.120964
-557940830126698960967415390 0 0 0.12057
-557940830126698960967415390 0 0 0.12047
-557940830126698960967415390 0 0 0.120414
-
-***********************************************************************************************************************
-Example of use of PLAIN HOMOLOGY:
-
-This example computes the plain homology of the following simplicial complex without filtration values:
- /* Complex to build. */
- /* 1 3 */
- /* o---o */
- /* /X\ / */
- /* o---o o */
- /* 2 0 4 */
-
-./plain_homology
-
-output:
-2 0 0 inf
-2 0 0 inf
-2 1 0 inf
-
-Here we retrieve the 2 entities {0,1,2,3} and {4} (Betti numbers[0] = 2) and the hole in {0,1,3} (Betti numbers[1] = 1)
diff --git a/example/Persistent_cohomology/custom_persistence_sort.cpp b/example/Persistent_cohomology/custom_persistence_sort.cpp
deleted file mode 100644
index 35366144..00000000
--- a/example/Persistent_cohomology/custom_persistence_sort.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <CGAL/Epick_d.h>
-#include <CGAL/point_generators_d.h>
-#include <CGAL/algorithm.h>
-#include <CGAL/assertions.h>
-
-#include <gudhi/Alpha_complex.h>
-#include <gudhi/Persistent_cohomology.h>
-// to construct a simplex_tree from alpha complex
-#include <gudhi/Simplex_tree.h>
-
-#include <iostream>
-#include <iterator>
-#include <vector>
-#include <fstream> // for std::ofstream
-#include <algorithm> // for std::sort
-
-
-using Kernel = CGAL::Epick_d< CGAL::Dimension_tag<3> >;
-using Point = Kernel::Point_d;
-using Alpha_complex = Gudhi::alpha_complex::Alpha_complex<Kernel>;
-using Simplex_tree = Gudhi::Simplex_tree<>;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology< Simplex_tree,
- Gudhi::persistent_cohomology::Field_Zp >;
-
-std::vector<Point> random_points() {
- // Instanciate a random point generator
- CGAL::Random rng(0);
-
- // Generate "points_number" random points in a vector
- std::vector<Point> points;
-
- // Generates 1000 random 3D points on a sphere of radius 4.0
- CGAL::Random_points_on_sphere_d<Point> rand_outside(3, 4.0, rng);
- CGAL::cpp11::copy_n(rand_outside, 1000, std::back_inserter(points));
- // Generates 2000 random 3D points in a sphere of radius 3.0
- CGAL::Random_points_in_ball_d<Point> rand_inside(3, 3.0, rng);
- CGAL::cpp11::copy_n(rand_inside, 2000, std::back_inserter(points));
-
- return points;
-}
-
-/*
- * Compare two intervals by dimension, then by length.
- */
-struct cmp_intervals_by_dim_then_length {
- explicit cmp_intervals_by_dim_then_length(Simplex_tree * sc)
- : sc_(sc) { }
-
- template<typename Persistent_interval>
- bool operator()(const Persistent_interval & p1, const Persistent_interval & p2) {
- if (sc_->dimension(get < 0 > (p1)) == sc_->dimension(get < 0 > (p2)))
- return (sc_->filtration(get < 1 > (p1)) - sc_->filtration(get < 0 > (p1))
- > sc_->filtration(get < 1 > (p2)) - sc_->filtration(get < 0 > (p2)));
- else
- return (sc_->dimension(get < 0 > (p1)) > sc_->dimension(get < 0 > (p2)));
- }
- Simplex_tree* sc_;
-};
-
-int main(int argc, char **argv) {
- std::vector<Point> points = random_points();
-
- std::cout << "Points size=" << points.size() << std::endl;
- // Alpha complex persistence computation from generated points
- Alpha_complex alpha_complex_from_points(points);
- std::cout << "alpha_complex_from_points" << std::endl;
-
- Simplex_tree simplex;
- std::cout << "simplex" << std::endl;
- if (alpha_complex_from_points.create_complex(simplex, 0.6)) {
- std::cout << "simplex" << std::endl;
- // ----------------------------------------------------------------------------
- // Display information about the alpha complex
- // ----------------------------------------------------------------------------
- std::cout << "Simplicial complex is of dimension " << simplex.dimension() <<
- " - " << simplex.num_simplices() << " simplices - " <<
- simplex.num_vertices() << " vertices." << std::endl;
-
- // Sort the simplices in the order of the filtration
- simplex.initialize_filtration();
-
- std::cout << "Simplex_tree dim: " << simplex.dimension() << std::endl;
-
- Persistent_cohomology pcoh(simplex);
-
- // initializes the coefficient field for homology - Z/3Z
- pcoh.init_coefficients(3);
- pcoh.compute_persistent_cohomology(0.2);
-
- // Custom sort and output persistence
- cmp_intervals_by_dim_then_length cmp(&simplex);
- auto persistent_pairs = pcoh.get_persistent_pairs();
- std::sort(std::begin(persistent_pairs), std::end(persistent_pairs), cmp);
- for (auto pair : persistent_pairs) {
- std::cout << simplex.dimension(get<0>(pair)) << " "
- << simplex.filtration(get<0>(pair)) << " "
- << simplex.filtration(get<1>(pair)) << std::endl;
- }
-
- // Persistent Betti numbers
- std::cout << "The persistent Betti numbers in interval [0.40, 0.41] are : ";
- for (int dim = 0; dim < simplex.dimension(); dim++)
- std::cout << "b" << dim << " = " << pcoh.persistent_betti_number(dim, 0.40, 0.41) << " ; ";
- std::cout << std::endl;
-
- // Betti numbers
- std::vector<int> betti_numbers = pcoh.betti_numbers();
- std::cout << "The Betti numbers are : ";
- for (std::size_t i = 0; i < betti_numbers.size(); i++)
- std::cout << "b" << i << " = " << betti_numbers[i] << " ; ";
- std::cout << std::endl;
- }
- return 0;
-}
-
diff --git a/example/Persistent_cohomology/persistence_from_file.cpp b/example/Persistent_cohomology/persistence_from_file.cpp
deleted file mode 100644
index 53456919..00000000
--- a/example/Persistent_cohomology/persistence_from_file.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/reader_utils.h>
-#include <gudhi/graph_simplicial_complex.h>
-#include <gudhi/distance_functions.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-
-#include <boost/program_options.hpp>
-
-#include <string>
-
-using namespace Gudhi;
-using namespace Gudhi::persistent_cohomology;
-
-typedef int Vertex_handle;
-typedef double Filtration_value;
-
-void program_options(int argc, char * argv[]
- , std::string & simplex_tree_file
- , std::string & output_file
- , int & p
- , Filtration_value & min_persistence);
-
-int main(int argc, char * argv[]) {
- std::string simplex_tree_file;
- std::string output_file;
- int p;
- Filtration_value min_persistence;
-
- program_options(argc, argv, simplex_tree_file, output_file, p, min_persistence);
-
- std::cout << "Simplex_tree from file=" << simplex_tree_file.c_str() << " - output_file=" << output_file.c_str()
- << std::endl;
- std::cout << " - p=" << p << " - min_persistence=" << min_persistence << std::endl;
-
- // Read the list of simplices from a file.
- Simplex_tree<> simplex_tree;
-
- std::ifstream simplex_tree_stream(simplex_tree_file);
- simplex_tree_stream >> simplex_tree;
-
- std::cout << "The complex contains " << simplex_tree.num_simplices() << " simplices" << std::endl;
- std::cout << " - dimension " << simplex_tree.dimension() << std::endl;
-
- /*
- std::cout << std::endl << std::endl << "Iterator on Simplices in the filtration, with [filtration value]:" << std::endl;
- for( auto f_simplex : simplex_tree.filtration_simplex_range() )
- { std::cout << " " << "[" << simplex_tree.filtration(f_simplex) << "] ";
- for( auto vertex : simplex_tree.simplex_vertex_range(f_simplex) )
- { std::cout << vertex << " "; }
- std::cout << std::endl;
- }*/
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology< Simplex_tree<>, Field_Zp > pcoh(simplex_tree);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(p);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in output_file
- if (output_file.empty()) {
- pcoh.output_diagram();
- } else {
- std::ofstream out(output_file);
- pcoh.output_diagram(out);
- out.close();
- }
-
- return 0;
-}
-
-void program_options(int argc, char * argv[]
- , std::string & simplex_tree_file
- , std::string & output_file
- , int & p
- , Filtration_value & min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()
- ("input-file", po::value<std::string>(&simplex_tree_file),
- "Name of file containing a simplex set. Format is one simplex per line (cf. reader_utils.h - read_simplex): Dim1 X11 X12 ... X1d Fil1 ");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()
- ("help,h", "produce help message")
- ("output-file,o", po::value<std::string>(&output_file)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")
- ("field-charac,p", po::value<int>(&p)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")
- ("min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).
- options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a Rips complex defined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/example/Persistent_cohomology/persistence_from_simple_simplex_tree.cpp b/example/Persistent_cohomology/persistence_from_simple_simplex_tree.cpp
deleted file mode 100644
index ffccfd86..00000000
--- a/example/Persistent_cohomology/persistence_from_simple_simplex_tree.cpp
+++ /dev/null
@@ -1,175 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/graph_simplicial_complex.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-
-#include <iostream>
-#include <ctime>
-#include <utility>
-#include <vector>
-
-// Types definition
-using Simplex_tree = Gudhi::Simplex_tree<>;
-using Filtration_value = Simplex_tree::Filtration_value;
-using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp >;
-using typeVectorVertex = std::vector< Simplex_tree::Vertex_handle >;
-
-void usage(char * const progName) {
- std::cerr << "Usage: " << progName << " coeff_field_characteristic[integer > 0] min_persistence[float >= -1.0]\n";
- exit(-1);
-}
-
-int main(int argc, char * const argv[]) {
- // program args management
- if (argc != 3) {
- std::cerr << "Error: Number of arguments (" << argc << ") is not correct\n";
- usage(argv[0]);
- }
-
- int coeff_field_characteristic = 0;
- int returnedScanValue = sscanf(argv[1], "%d", &coeff_field_characteristic);
- if ((returnedScanValue == EOF) || (coeff_field_characteristic <= 0)) {
- std::cerr << "Error: " << argv[1] << " is not correct\n";
- usage(argv[0]);
- }
-
- Filtration_value min_persistence = 0.0;
- returnedScanValue = sscanf(argv[2], "%lf", &min_persistence);
- if ((returnedScanValue == EOF) || (min_persistence < -1.0)) {
- std::cerr << "Error: " << argv[2] << " is not correct\n";
- usage(argv[0]);
- }
-
- // TEST OF INSERTION
- std::cout << "********************************************************************" << std::endl;
- std::cout << "TEST OF INSERTION" << std::endl;
- Simplex_tree st;
-
- // ++ FIRST
- std::cout << " - INSERT (0,1,2)" << std::endl;
- typeVectorVertex SimplexVector = {0, 1, 2};
- st.insert_simplex_and_subfaces(SimplexVector, 0.3);
-
- // ++ SECOND
- std::cout << " - INSERT 3" << std::endl;
- SimplexVector = {3};
- st.insert_simplex_and_subfaces(SimplexVector, 0.1);
-
- // ++ THIRD
- std::cout << " - INSERT (0,3)" << std::endl;
- SimplexVector = {0, 3};
- st.insert_simplex_and_subfaces(SimplexVector, 0.2);
-
- // ++ FOURTH
- std::cout << " - INSERT (0,1) (already inserted)" << std::endl;
- SimplexVector = {0, 1};
- st.insert_simplex_and_subfaces(SimplexVector, 0.2);
-
- // ++ FIFTH
- std::cout << " - INSERT (3,4,5)" << std::endl;
- SimplexVector = {3, 4, 5};
- st.insert_simplex_and_subfaces(SimplexVector, 0.3);
-
- // ++ SIXTH
- std::cout << " - INSERT (0,1,6,7)" << std::endl;
- SimplexVector = {0, 1, 6, 7};
- st.insert_simplex_and_subfaces(SimplexVector, 0.4);
-
- // ++ SEVENTH
- std::cout << " - INSERT (4,5,8,9)" << std::endl;
- SimplexVector = {4, 5, 8, 9};
- st.insert_simplex_and_subfaces(SimplexVector, 0.4);
-
- // ++ EIGHTH
- std::cout << " - INSERT (9,10,11)" << std::endl;
- SimplexVector = {9, 10, 11};
- st.insert_simplex_and_subfaces(SimplexVector, 0.3);
-
- // ++ NINETH
- std::cout << " - INSERT (2,10,12)" << std::endl;
- SimplexVector = {2, 10, 12};
- st.insert_simplex_and_subfaces(SimplexVector, 0.3);
-
- // ++ TENTH
- std::cout << " - INSERT (11,6)" << std::endl;
- SimplexVector = {6, 11};
- st.insert_simplex_and_subfaces(SimplexVector, 0.2);
-
- // ++ ELEVENTH
- std::cout << " - INSERT (13,14,15)" << std::endl;
- SimplexVector = {13, 14, 15};
- st.insert_simplex_and_subfaces(SimplexVector, 0.25);
-
- /* Inserted simplex: */
- /* 1 6 */
- /* o---o */
- /* /X\7/ 4 2 */
- /* o---o---o---o o */
- /* 2 0 3\X/8\ 10 /X\ */
- /* o---o---o---o */
- /* 5 9\X/ 12 */
- /* o---o */
- /* 11 6 */
- /* In other words: */
- /* A facet [2,1,0] */
- /* An edge [0,3] */
- /* A facet [3,4,5] */
- /* A cell [0,1,6,7] */
- /* A cell [4,5,8,9] */
- /* A facet [9,10,11] */
- /* An edge [11,6] */
- /* An edge [10,12,2] */
-
-
- std::cout << "The complex contains " << st.num_simplices() << " simplices - " << st.num_vertices() << " vertices "
- << std::endl;
- std::cout << " - dimension " << st.dimension() << std::endl;
- std::cout << std::endl << std::endl << "Iterator on Simplices in the filtration, with [filtration value]:"
- << std::endl;
- std::cout << "**************************************************************" << std::endl;
- std::cout << "strict graph G { " << std::endl;
-
- for (auto f_simplex : st.filtration_simplex_range()) {
- std::cout << " " << "[" << st.filtration(f_simplex) << "] ";
- for (auto vertex : st.simplex_vertex_range(f_simplex)) {
- std::cout << static_cast<int>(vertex) << " -- ";
- }
- std::cout << ";" << std::endl;
- }
-
- std::cout << "}" << std::endl;
- std::cout << "**************************************************************" << std::endl;
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(st);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(coeff_field_characteristic);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- pcoh.output_diagram();
- return 0;
-}
diff --git a/example/Persistent_cohomology/plain_homology.cpp b/example/Persistent_cohomology/plain_homology.cpp
deleted file mode 100644
index a2256060..00000000
--- a/example/Persistent_cohomology/plain_homology.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Marc Glisse
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-
-#include <iostream>
-#include <vector>
-#include <cstdint> // for std::uint8_t
-
-/* We could perfectly well use the default Simplex_tree<> (which uses
- * Simplex_tree_options_full_featured), the following simply demonstrates
- * how to save on storage by not storing a filtration value. */
-
-struct MyOptions : Gudhi::Simplex_tree_options_full_featured {
- // Implicitly use 0 as filtration value for all simplices
- static const bool store_filtration = false;
- // The persistence algorithm needs this
- static const bool store_key = true;
- // I have few vertices
- typedef short Vertex_handle;
- // Maximum number of simplices to compute persistence is 2^8 - 1 = 255. One is reserved for null_key
- typedef std::uint8_t Simplex_key;
-};
-
-using ST = Gudhi::Simplex_tree<MyOptions>;
-using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<ST, Field_Zp>;
-
-int main() {
- ST st;
-
- /* Complex to build. */
- /* 1 3 */
- /* o---o */
- /* /X\ / */
- /* o---o o */
- /* 2 0 4 */
-
- const short triangle012[] = {0, 1, 2};
- const short edge03[] = {0, 3};
- const short edge13[] = {1, 3};
- const short vertex4[] = {4};
- st.insert_simplex_and_subfaces(triangle012);
- st.insert_simplex_and_subfaces(edge03);
- st.insert_simplex(edge13);
- st.insert_simplex(vertex4);
-
- // Sort the simplices in the order of the filtration
- st.initialize_filtration();
-
- // Class for homology computation
- Persistent_cohomology pcoh(st);
-
- // Initialize the coefficient field Z/2Z for homology
- pcoh.init_coefficients(2);
-
- // Compute the persistence diagram of the complex
- pcoh.compute_persistent_cohomology();
-
- // Print the result. The format is, on each line: 2 dim 0 inf
- // where 2 represents the field, dim the dimension of the feature.
- // 2 0 0 inf
- // 2 0 0 inf
- // 2 1 0 inf
- // means that in Z/2Z-homology, the Betti numbers are b0=2 and b1=1.
- pcoh.output_diagram();
-
- // Print the Betti numbers are b0=2 and b1=1.
- std::cout << std::endl;
- std::cout << "The Betti numbers are : ";
- for (int i = 0; i < st.dimension(); i++)
- std::cout << "b" << i << " = " << pcoh.betti_number(i) << " ; ";
- std::cout << std::endl;
-}
diff --git a/example/Persistent_cohomology/rips_multifield_persistence.cpp b/example/Persistent_cohomology/rips_multifield_persistence.cpp
deleted file mode 100644
index d6a5bdad..00000000
--- a/example/Persistent_cohomology/rips_multifield_persistence.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Rips_complex.h>
-#include <gudhi/distance_functions.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Persistent_cohomology/Multi_field.h>
-#include <gudhi/Points_off_io.h>
-
-#include <boost/program_options.hpp>
-
-#include <string>
-#include <vector>
-
-// Types definition
-using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-using Filtration_value = Simplex_tree::Filtration_value;
-using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
-using Multi_field = Gudhi::persistent_cohomology::Multi_field;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Multi_field >;
-using Point = std::vector<double>;
-using Points_off_reader = Gudhi::Points_off_reader<Point>;
-
-void program_options(int argc, char * argv[]
- , std::string & off_file_points
- , std::string & filediag
- , Filtration_value & threshold
- , int & dim_max
- , int & min_p
- , int & max_p
- , Filtration_value & min_persistence);
-
-int main(int argc, char * argv[]) {
- std::string off_file_points;
- std::string filediag;
- Filtration_value threshold;
- int dim_max;
- int min_p;
- int max_p;
- Filtration_value min_persistence;
-
- program_options(argc, argv, off_file_points, filediag, threshold, dim_max, min_p, max_p, min_persistence);
-
- Points_off_reader off_reader(off_file_points);
- Rips_complex rips_complex_from_file(off_reader.get_point_cloud(), threshold, Gudhi::Euclidean_distance());
-
- // Construct the Rips complex in a Simplex Tree
- Simplex_tree simplex_tree;
-
- rips_complex_from_file.create_complex(simplex_tree, dim_max);
- std::cout << "The complex contains " << simplex_tree.num_simplices() << " simplices \n";
- std::cout << " and has dimension " << simplex_tree.dimension() << " \n";
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(simplex_tree);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(min_p, max_p);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (filediag.empty()) {
- pcoh.output_diagram();
- } else {
- std::ofstream out(filediag);
- pcoh.output_diagram(out);
- out.close();
- }
-
- return 0;
-}
-
-void program_options(int argc, char * argv[]
- , std::string & off_file_points
- , std::string & filediag
- , Filtration_value & threshold
- , int & dim_max
- , int & min_p
- , int & max_p
- , Filtration_value & min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()
- ("input-file", po::value<std::string>(&off_file_points),
- "Name of an OFF file containing a point set.\n");
-
- po::options_description visible("Allowed options");
- visible.add_options()
- ("help,h", "produce help message")
- ("output-file,o", po::value<std::string>(&filediag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")
- ("max-edge-length,r", po::value<Filtration_value>(&threshold)->default_value(0),
- "Maximal length of an edge for the Rips complex construction.")
- ("cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
- "Maximal dimension of the Rips complex we want to compute.")
- ("min-field-charac,p", po::value<int>(&min_p)->default_value(2),
- "Minimal characteristic p of the coefficient field Z/pZ.")
- ("max-field-charac,q", po::value<int>(&max_p)->default_value(1223),
- "Minimial characteristic q of the coefficient field Z/pZ.")
- ("min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).
- options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with various coefficient fields \n";
- std::cout << "of a Rips complex defined on a set of input points. The coefficient \n";
- std::cout << "fields are all the Z/rZ for a prime number r contained in the \n";
- std::cout << "specified range [p,q]\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p1*...*pr dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p1*...*pr is the product of prime numbers pi such that the homology \n";
- std::cout << "feature exists in homology with Z/piZ coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/example/Persistent_cohomology/rips_persistence_step_by_step.cpp b/example/Persistent_cohomology/rips_persistence_step_by_step.cpp
deleted file mode 100644
index 796cfa3a..00000000
--- a/example/Persistent_cohomology/rips_persistence_step_by_step.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/graph_simplicial_complex.h>
-#include <gudhi/distance_functions.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Points_off_io.h>
-
-#include <boost/program_options.hpp>
-
-#include <string>
-#include <vector>
-#include <limits> // infinity
-#include <utility> // for pair
-#include <map>
-
-// ----------------------------------------------------------------------------
-// rips_persistence_step_by_step is an example of each step that is required to
-// build a Rips over a Simplex_tree. Please refer to rips_persistence to see
-// how to do the same thing with the Rips_complex wrapper for less detailed
-// steps.
-// ----------------------------------------------------------------------------
-
-// Types definition
-using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-using Vertex_handle = Simplex_tree::Vertex_handle;
-using Filtration_value = Simplex_tree::Filtration_value;
-using Proximity_graph = Gudhi::Proximity_graph<Simplex_tree>;
-
-using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp >;
-using Point = std::vector<double>;
-using Points_off_reader = Gudhi::Points_off_reader<Point>;
-
-void program_options(int argc, char * argv[]
- , std::string & off_file_points
- , std::string & filediag
- , Filtration_value & threshold
- , int & dim_max
- , int & p
- , Filtration_value & min_persistence);
-
-int main(int argc, char * argv[]) {
- std::string off_file_points;
- std::string filediag;
- Filtration_value threshold;
- int dim_max;
- int p;
- Filtration_value min_persistence;
-
- program_options(argc, argv, off_file_points, filediag, threshold, dim_max, p, min_persistence);
-
- // Extract the points from the file filepoints
- Points_off_reader off_reader(off_file_points);
-
- // Compute the proximity graph of the points
- Proximity_graph prox_graph = Gudhi::compute_proximity_graph<Simplex_tree>(off_reader.get_point_cloud(),
- threshold,
- Gudhi::Euclidean_distance());
-
- // Construct the Rips complex in a Simplex Tree
- Simplex_tree st;
- // insert the proximity graph in the simplex tree
- st.insert_graph(prox_graph);
- // expand the graph until dimension dim_max
- st.expansion(dim_max);
-
- std::cout << "The complex contains " << st.num_simplices() << " simplices \n";
- std::cout << " and has dimension " << st.dimension() << " \n";
-
- // Sort the simplices in the order of the filtration
- st.initialize_filtration();
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(st);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(p);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (filediag.empty()) {
- pcoh.output_diagram();
- } else {
- std::ofstream out(filediag);
- pcoh.output_diagram(out);
- out.close();
- }
-
- return 0;
-}
-
-void program_options(int argc, char * argv[]
- , std::string & off_file_points
- , std::string & filediag
- , Filtration_value & threshold
- , int & dim_max
- , int & p
- , Filtration_value & min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()
- ("input-file", po::value<std::string>(&off_file_points),
- "Name of an OFF file containing a point set.\n");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()
- ("help,h", "produce help message")
- ("output-file,o", po::value<std::string>(&filediag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")
- ("max-edge-length,r",
- po::value<Filtration_value>(&threshold)->default_value(std::numeric_limits<Filtration_value>::infinity()),
- "Maximal length of an edge for the Rips complex construction.")
- ("cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
- "Maximal dimension of the Rips complex we want to compute.")
- ("field-charac,p", po::value<int>(&p)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")
- ("min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length intervals");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).
- options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a Rips complex defined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/example/Persistent_cohomology/rips_persistence_via_boundary_matrix.cpp b/example/Persistent_cohomology/rips_persistence_via_boundary_matrix.cpp
deleted file mode 100644
index 71fc0802..00000000
--- a/example/Persistent_cohomology/rips_persistence_via_boundary_matrix.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria, Marc Glisse
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Rips_complex.h>
-#include <gudhi/Hasse_complex.h>
-#include <gudhi/Points_off_io.h>
-#include <gudhi/distance_functions.h>
-
-#include <boost/program_options.hpp>
-
-#ifdef GUDHI_USE_TBB
-#include <tbb/task_scheduler_init.h>
-#endif
-
-#include <string>
-#include <vector>
-
-////////////////////////////////////////////////////////////////
-// //
-// WARNING: persistence computation itself is not parallel, //
-// and this uses more memory than rips_persistence. //
-// //
-////////////////////////////////////////////////////////////////
-
-// Types definition
-using Simplex_tree = Gudhi::Simplex_tree<>;
-using Filtration_value = Simplex_tree::Filtration_value;
-using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
-using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
-using Point = std::vector<double>;
-using Points_off_reader = Gudhi::Points_off_reader<Point>;
-
-void program_options(int argc, char * argv[]
- , std::string & off_file_points
- , std::string & filediag
- , Filtration_value & threshold
- , int & dim_max
- , int & p
- , Filtration_value & min_persistence);
-
-int main(int argc, char * argv[]) {
- std::string off_file_points;
- std::string filediag;
- Filtration_value threshold;
- int dim_max;
- int p;
- Filtration_value min_persistence;
-
- program_options(argc, argv, off_file_points, filediag, threshold, dim_max, p, min_persistence);
-
- Points_off_reader off_reader(off_file_points);
- Rips_complex rips_complex_from_file(off_reader.get_point_cloud(), threshold, Gudhi::Euclidean_distance());
-
- // Construct the Rips complex in a Simplex Tree
- Simplex_tree& st = *new Simplex_tree;
- rips_complex_from_file.create_complex(st, dim_max);
-
- std::cout << "The complex contains " << st.num_simplices() << " simplices \n";
- std::cout << " and has dimension " << st.dimension() << " \n";
-
-#ifdef GUDHI_USE_TBB
- // Unnecessary, but clarifies which operations are parallel.
- tbb::task_scheduler_init ts;
-#endif
-
- // Sort the simplices in the order of the filtration
- st.initialize_filtration();
- int count = 0;
- for (auto sh : st.filtration_simplex_range())
- st.assign_key(sh, count++);
-
- // Convert to a more convenient representation.
- Gudhi::Hasse_complex<> hcpx(st);
-
-#ifdef GUDHI_USE_TBB
- ts.terminate();
-#endif
-
- // Free some space.
- delete &st;
-
- // Compute the persistence diagram of the complex
- Gudhi::persistent_cohomology::Persistent_cohomology< Gudhi::Hasse_complex<>, Field_Zp > pcoh(hcpx);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(p);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (filediag.empty()) {
- pcoh.output_diagram();
- } else {
- std::ofstream out(filediag);
- pcoh.output_diagram(out);
- out.close();
- }
-}
-
-void program_options(int argc, char * argv[]
- , std::string & off_file_points
- , std::string & filediag
- , Filtration_value & threshold
- , int & dim_max
- , int & p
- , Filtration_value & min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()
- ("input-file", po::value<std::string>(&off_file_points),
- "Name of file containing a point set. Format is one point per line: X1 ... Xd ");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()
- ("help,h", "produce help message")
- ("output-file,o", po::value<std::string>(&filediag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")
- ("max-edge-length,r", po::value<Filtration_value>(&threshold)->default_value(0),
- "Maximal length of an edge for the Rips complex construction.")
- ("cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
- "Maximal dimension of the Rips complex we want to compute.")
- ("field-charac,p", po::value<int>(&p)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")
- ("min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length intervals");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).
- options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a Rips complex defined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/example/Rips_complex/CMakeLists.txt b/example/Rips_complex/CMakeLists.txt
deleted file mode 100644
index e7772bdb..00000000
--- a/example/Rips_complex/CMakeLists.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-project(Rips_complex_examples)
-
-# Point cloud
-add_executable ( Rips_complex_example_from_off example_rips_complex_from_off_file.cpp )
-
-add_executable ( Rips_complex_example_one_skeleton_from_points example_one_skeleton_rips_from_points.cpp )
-
-# Distance matrix
-add_executable ( Rips_complex_example_one_skeleton_from_distance_matrix example_one_skeleton_rips_from_distance_matrix.cpp )
-
-add_executable ( Rips_complex_example_from_csv_distance_matrix example_rips_complex_from_csv_distance_matrix_file.cpp )
-
-# Sparse rips from points
-add_executable ( Rips_complex_example_sparse example_sparse_rips.cpp )
-
-# Correlation matrix
-add_executable ( Rips_complex_example_one_skeleton_rips_from_correlation_matrix example_one_skeleton_rips_from_correlation_matrix.cpp )
-
-if (TBB_FOUND)
- target_link_libraries(Rips_complex_example_from_off ${TBB_LIBRARIES})
- target_link_libraries(Rips_complex_example_one_skeleton_from_points ${TBB_LIBRARIES})
- target_link_libraries(Rips_complex_example_one_skeleton_from_distance_matrix ${TBB_LIBRARIES})
- target_link_libraries(Rips_complex_example_from_csv_distance_matrix ${TBB_LIBRARIES})
- target_link_libraries(Rips_complex_example_sparse ${TBB_LIBRARIES})
- target_link_libraries(Rips_complex_example_one_skeleton_rips_from_correlation_matrix ${TBB_LIBRARIES})
-endif()
-
-add_test(NAME Rips_complex_example_one_skeleton_from_points
- COMMAND $<TARGET_FILE:Rips_complex_example_one_skeleton_from_points>)
-add_test(NAME Rips_complex_example_one_skeleton_from_distance_matrix
- COMMAND $<TARGET_FILE:Rips_complex_example_one_skeleton_from_distance_matrix>)
-add_test(NAME Rips_complex_example_sparse
- COMMAND $<TARGET_FILE:Rips_complex_example_sparse>)
-add_test(NAME Rips_complex_example_one_skeleton_rips_from_correlation_matrix
- COMMAND $<TARGET_FILE:Rips_complex_example_one_skeleton_rips_from_correlation_matrix>)
-
-add_test(NAME Rips_complex_example_from_off_doc_12_1 COMMAND $<TARGET_FILE:Rips_complex_example_from_off>
- "${CMAKE_SOURCE_DIR}/data/points/alphacomplexdoc.off" "12.0" "1" "${CMAKE_CURRENT_BINARY_DIR}/ripsoffreader_result_12_1.txt")
-add_test(NAME Rips_complex_example_from_off_doc_12_3 COMMAND $<TARGET_FILE:Rips_complex_example_from_off>
- "${CMAKE_SOURCE_DIR}/data/points/alphacomplexdoc.off" "12.0" "3" "${CMAKE_CURRENT_BINARY_DIR}/ripsoffreader_result_12_3.txt")
-
-add_test(NAME Rips_complex_example_from_csv_distance_matrix_doc_12_1 COMMAND $<TARGET_FILE:Rips_complex_example_from_csv_distance_matrix>
- "${CMAKE_SOURCE_DIR}/data/distance_matrix/full_square_distance_matrix.csv" "12.0" "1" "${CMAKE_CURRENT_BINARY_DIR}/ripscsvreader_result_12_1.txt")
-add_test(NAME Rips_complex_example_from_csv_distance_matrix_doc_12_3 COMMAND $<TARGET_FILE:Rips_complex_example_from_csv_distance_matrix>
- "${CMAKE_SOURCE_DIR}/data/distance_matrix/full_square_distance_matrix.csv" "12.0" "3" "${CMAKE_CURRENT_BINARY_DIR}/ripscsvreader_result_12_3.txt")
-
-
-if (DIFF_PATH)
- # Do not forget to copy test results files in current binary dir
- file(COPY "one_skeleton_rips_for_doc.txt" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
- file(COPY "full_skeleton_rips_for_doc.txt" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
-
- add_test(Rips_complex_example_from_off_doc_12_1_diff_files ${DIFF_PATH}
- ${CMAKE_CURRENT_BINARY_DIR}/ripsoffreader_result_12_1.txt
- ${CMAKE_CURRENT_BINARY_DIR}/one_skeleton_rips_for_doc.txt)
- add_test(Rips_complex_example_from_off_doc_12_3_diff_files ${DIFF_PATH}
- ${CMAKE_CURRENT_BINARY_DIR}/ripsoffreader_result_12_3.txt
- ${CMAKE_CURRENT_BINARY_DIR}/full_skeleton_rips_for_doc.txt)
- add_test(Rips_complex_example_from_csv_distance_matrix_doc_12_1_diff_files ${DIFF_PATH}
- ${CMAKE_CURRENT_BINARY_DIR}/ripscsvreader_result_12_1.txt
- ${CMAKE_CURRENT_BINARY_DIR}/one_skeleton_rips_for_doc.txt)
- add_test(Rips_complex_example_from_csv_distance_matrix_doc_12_3_diff_files ${DIFF_PATH}
- ${CMAKE_CURRENT_BINARY_DIR}/ripscsvreader_result_12_3.txt
- ${CMAKE_CURRENT_BINARY_DIR}/full_skeleton_rips_for_doc.txt)
-endif()
-
-install(TARGETS Rips_complex_example_from_off DESTINATION bin)
-install(TARGETS Rips_complex_example_one_skeleton_from_points DESTINATION bin)
-install(TARGETS Rips_complex_example_one_skeleton_from_distance_matrix DESTINATION bin)
-install(TARGETS Rips_complex_example_from_csv_distance_matrix DESTINATION bin)
-install(TARGETS Rips_complex_example_one_skeleton_rips_from_correlation_matrix DESTINATION bin)
diff --git a/example/Rips_complex/example_one_skeleton_rips_from_correlation_matrix.cpp b/example/Rips_complex/example_one_skeleton_rips_from_correlation_matrix.cpp
deleted file mode 100644
index 05bacb9f..00000000
--- a/example/Rips_complex/example_one_skeleton_rips_from_correlation_matrix.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-#include <gudhi/Rips_complex.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/distance_functions.h>
-
-#include <iostream>
-#include <string>
-#include <vector>
-#include <limits> // for std::numeric_limits
-
-int main() {
- // Type definitions
- using Simplex_tree = Gudhi::Simplex_tree<>;
- using Filtration_value = Simplex_tree::Filtration_value;
- using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
- using Distance_matrix = std::vector<std::vector<Filtration_value>>;
-
- // User defined correlation matrix is:
- // |1 0.06 0.23 0.01 0.89|
- // |0.06 1 0.74 0.01 0.61|
- // |0.23 0.74 1 0.72 0.03|
- // |0.01 0.01 0.72 1 0.7 |
- // |0.89 0.61 0.03 0.7 1 |
-
- Distance_matrix correlations;
- correlations.push_back({});
- correlations.push_back({0.06});
- correlations.push_back({0.23, 0.74});
- correlations.push_back({0.01, 0.01, 0.72});
- correlations.push_back({0.89, 0.61, 0.03, 0.7});
-
- // ----------------------------------------------------------------------------
- // Convert correlation matrix to a distance matrix:
- // ----------------------------------------------------------------------------
- double threshold = 0;
- for (size_t i = 0; i != correlations.size(); ++i) {
- for (size_t j = 0; j != correlations[i].size(); ++j) {
- // Here we check if our data comes from corelation matrix.
- if ((correlations[i][j] < -1) || (correlations[i][j] > 1)) {
- std::cerr << "The input matrix is not a correlation matrix. The program will now terminate.\n";
- throw "The input matrix is not a correlation matrix. The program will now terminate.\n";
- }
- correlations[i][j] = 1 - correlations[i][j];
- // Here we make sure that we will get the treshold value equal to maximal
- // distance in the matrix.
- if (correlations[i][j] > threshold) threshold = correlations[i][j];
- }
- }
-
- //-----------------------------------------------------------------------------
- // Now the correlation matrix is a distance matrix and can be processed further.
- //-----------------------------------------------------------------------------
- Distance_matrix distances = correlations;
-
- Rips_complex rips_complex_from_points(distances, threshold);
-
- Simplex_tree stree;
- rips_complex_from_points.create_complex(stree, 1);
- // ----------------------------------------------------------------------------
- // Display information about the one skeleton Rips complex. Note that
- // the filtration displayed here comes from the distance matrix computed
- // above, which is 1 - initial correlation matrix. Only this way, we obtain
- // a complex with filtration. If a correlation matrix is used instead, we would
- // have a reverse filtration (i.e. filtration of boundary of each simplex S
- // is greater or equal to the filtration of S).
- // ----------------------------------------------------------------------------
- std::cout << "Rips complex is of dimension " << stree.dimension() << " - " << stree.num_simplices() << " simplices - "
- << stree.num_vertices() << " vertices." << std::endl;
-
- std::cout << "Iterator on Rips complex simplices in the filtration order, with [filtration value]:" << std::endl;
- for (auto f_simplex : stree.filtration_simplex_range()) {
- std::cout << " ( ";
- for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << ") -> "
- << "[" << stree.filtration(f_simplex) << "] ";
- std::cout << std::endl;
- }
-
- return 0;
-}
diff --git a/example/Rips_complex/example_one_skeleton_rips_from_distance_matrix.cpp b/example/Rips_complex/example_one_skeleton_rips_from_distance_matrix.cpp
deleted file mode 100644
index bbc3c755..00000000
--- a/example/Rips_complex/example_one_skeleton_rips_from_distance_matrix.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-#include <gudhi/Rips_complex.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/distance_functions.h>
-
-#include <iostream>
-#include <string>
-#include <vector>
-#include <limits> // for std::numeric_limits
-
-int main() {
- // Type definitions
- using Simplex_tree = Gudhi::Simplex_tree<>;
- using Filtration_value = Simplex_tree::Filtration_value;
- using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
- using Distance_matrix = std::vector<std::vector<Filtration_value>>;
-
- // User defined distance matrix is:
- // | 0 0.94 0.77 0.99 0.11 |
- // | 0.94 0 0.26 0.99 0.39 |
- // | 0.77 0.26 0 0.28 0.97 |
- // | 0.99 0.99 0.28 0 0.30 |
- // | 0.11 0.39 0.97 0.30 0 |
-
- Distance_matrix distances;
- distances.push_back({});
- distances.push_back({0.94});
- distances.push_back({0.77, 0.26});
- distances.push_back({0.99, 0.99, 0.28});
- distances.push_back({0.11, 0.39, 0.97, 0.30});
-
- // ----------------------------------------------------------------------------
- // Init of a Rips complex from points
- // ----------------------------------------------------------------------------
- double threshold = 1.0;
- Rips_complex rips_complex_from_points(distances, threshold);
-
- Simplex_tree stree;
- rips_complex_from_points.create_complex(stree, 1);
- // ----------------------------------------------------------------------------
- // Display information about the one skeleton Rips complex
- // ----------------------------------------------------------------------------
- std::cout << "Rips complex is of dimension " << stree.dimension() <<
- " - " << stree.num_simplices() << " simplices - " <<
- stree.num_vertices() << " vertices." << std::endl;
-
- std::cout << "Iterator on Rips complex simplices in the filtration order, with [filtration value]:" <<
- std::endl;
- for (auto f_simplex : stree.filtration_simplex_range()) {
- std::cout << " ( ";
- for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << ") -> " << "[" << stree.filtration(f_simplex) << "] ";
- std::cout << std::endl;
- }
-
- return 0;
-}
diff --git a/example/Rips_complex/example_one_skeleton_rips_from_points.cpp b/example/Rips_complex/example_one_skeleton_rips_from_points.cpp
deleted file mode 100644
index a1db8910..00000000
--- a/example/Rips_complex/example_one_skeleton_rips_from_points.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#include <gudhi/Rips_complex.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/distance_functions.h>
-
-#include <iostream>
-#include <string>
-#include <vector>
-#include <limits> // for std::numeric_limits
-
-int main() {
- // Type definitions
- using Point = std::vector<double>;
- using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
- using Filtration_value = Simplex_tree::Filtration_value;
- using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
-
- std::vector<Point> points;
- points.push_back({1.0, 1.0});
- points.push_back({7.0, 0.0});
- points.push_back({4.0, 6.0});
- points.push_back({9.0, 6.0});
- points.push_back({0.0, 14.0});
- points.push_back({2.0, 19.0});
- points.push_back({9.0, 17.0});
-
- // ----------------------------------------------------------------------------
- // Init of a Rips complex from points
- // ----------------------------------------------------------------------------
- double threshold = 12.0;
- Rips_complex rips_complex_from_points(points, threshold, Gudhi::Euclidean_distance());
-
- Simplex_tree stree;
- rips_complex_from_points.create_complex(stree, 1);
- // ----------------------------------------------------------------------------
- // Display information about the one skeleton Rips complex
- // ----------------------------------------------------------------------------
- std::cout << "Rips complex is of dimension " << stree.dimension() <<
- " - " << stree.num_simplices() << " simplices - " <<
- stree.num_vertices() << " vertices." << std::endl;
-
- std::cout << "Iterator on Rips complex simplices in the filtration order, with [filtration value]:" <<
- std::endl;
- for (auto f_simplex : stree.filtration_simplex_range()) {
- std::cout << " ( ";
- for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << ") -> " << "[" << stree.filtration(f_simplex) << "] ";
- std::cout << std::endl;
- }
- return 0;
-}
diff --git a/example/Rips_complex/example_rips_complex_from_csv_distance_matrix_file.cpp b/example/Rips_complex/example_rips_complex_from_csv_distance_matrix_file.cpp
deleted file mode 100644
index 9e182f1e..00000000
--- a/example/Rips_complex/example_rips_complex_from_csv_distance_matrix_file.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-#include <gudhi/Rips_complex.h>
-// to construct Rips_complex from a csv file representing a distance matrix
-#include <gudhi/reader_utils.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/distance_functions.h>
-
-#include <iostream>
-#include <string>
-#include <vector>
-
-void usage(int nbArgs, char * const progName) {
- std::cerr << "Error: Number of arguments (" << nbArgs << ") is not correct\n";
- std::cerr << "Usage: " << progName << " filename.csv threshold dim_max [ouput_file.txt]\n";
- std::cerr << " i.e.: " << progName << " ../../data/distance_matrix/full_square_distance_matrix.csv 1.0 3\n";
- exit(-1); // ----- >>
-}
-
-int main(int argc, char **argv) {
- if ((argc != 4) && (argc != 5)) usage(argc, (argv[0] - 1));
-
- std::string csv_file_name(argv[1]);
- double threshold = atof(argv[2]);
- int dim_max = atoi(argv[3]);
-
- // Type definitions
- using Simplex_tree = Gudhi::Simplex_tree<>;
- using Filtration_value = Simplex_tree::Filtration_value;
- using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
- using Distance_matrix = std::vector<std::vector<Filtration_value>>;
-
- // ----------------------------------------------------------------------------
- // Init of a Rips complex from a distance matrix in a csv file
- // Default separator is ';'
- // ----------------------------------------------------------------------------
- Distance_matrix distances = Gudhi::read_lower_triangular_matrix_from_csv_file<Filtration_value>(csv_file_name);
- Rips_complex rips_complex_from_file(distances, threshold);
-
- std::streambuf* streambufffer;
- std::ofstream ouput_file_stream;
-
- if (argc == 5) {
- ouput_file_stream.open(std::string(argv[4]));
- streambufffer = ouput_file_stream.rdbuf();
- } else {
- streambufffer = std::cout.rdbuf();
- }
-
- Simplex_tree stree;
- rips_complex_from_file.create_complex(stree, dim_max);
- std::ostream output_stream(streambufffer);
-
- // ----------------------------------------------------------------------------
- // Display information about the Rips complex
- // ----------------------------------------------------------------------------
- output_stream << "Rips complex is of dimension " << stree.dimension() <<
- " - " << stree.num_simplices() << " simplices - " <<
- stree.num_vertices() << " vertices." << std::endl;
-
- output_stream << "Iterator on Rips complex simplices in the filtration order, with [filtration value]:" <<
- std::endl;
- for (auto f_simplex : stree.filtration_simplex_range()) {
- output_stream << " ( ";
- for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
- output_stream << vertex << " ";
- }
- output_stream << ") -> " << "[" << stree.filtration(f_simplex) << "] ";
- output_stream << std::endl;
- }
-
- ouput_file_stream.close();
- return 0;
-}
diff --git a/example/Rips_complex/example_rips_complex_from_off_file.cpp b/example/Rips_complex/example_rips_complex_from_off_file.cpp
deleted file mode 100644
index de2e4ea4..00000000
--- a/example/Rips_complex/example_rips_complex_from_off_file.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-#include <gudhi/Rips_complex.h>
-// to construct Rips_complex from a OFF file of points
-#include <gudhi/Points_off_io.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/distance_functions.h>
-
-#include <iostream>
-#include <string>
-#include <vector>
-
-void usage(int nbArgs, char * const progName) {
- std::cerr << "Error: Number of arguments (" << nbArgs << ") is not correct\n";
- std::cerr << "Usage: " << progName << " filename.off threshold dim_max [ouput_file.txt]\n";
- std::cerr << " i.e.: " << progName << " ../../data/points/alphacomplexdoc.off 60.0\n";
- exit(-1); // ----- >>
-}
-
-int main(int argc, char **argv) {
- if ((argc != 4) && (argc != 5)) usage(argc, (argv[0] - 1));
-
- std::string off_file_name(argv[1]);
- double threshold = atof(argv[2]);
- int dim_max = atoi(argv[3]);
-
- // Type definitions
- using Point = std::vector<float>;
- using Simplex_tree = Gudhi::Simplex_tree<>;
- using Filtration_value = Simplex_tree::Filtration_value;
- using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
-
- // ----------------------------------------------------------------------------
- // Init of a Rips complex from an OFF file
- // ----------------------------------------------------------------------------
- Gudhi::Points_off_reader<Point> off_reader(off_file_name);
- Rips_complex rips_complex_from_file(off_reader.get_point_cloud(), threshold, Gudhi::Euclidean_distance());
-
- std::streambuf* streambufffer;
- std::ofstream ouput_file_stream;
-
- if (argc == 5) {
- ouput_file_stream.open(std::string(argv[4]));
- streambufffer = ouput_file_stream.rdbuf();
- } else {
- streambufffer = std::cout.rdbuf();
- }
-
- Simplex_tree stree;
- rips_complex_from_file.create_complex(stree, dim_max);
- std::ostream output_stream(streambufffer);
-
- // ----------------------------------------------------------------------------
- // Display information about the Rips complex
- // ----------------------------------------------------------------------------
- output_stream << "Rips complex is of dimension " << stree.dimension() <<
- " - " << stree.num_simplices() << " simplices - " <<
- stree.num_vertices() << " vertices." << std::endl;
-
- output_stream << "Iterator on Rips complex simplices in the filtration order, with [filtration value]:" <<
- std::endl;
- for (auto f_simplex : stree.filtration_simplex_range()) {
- output_stream << " ( ";
- for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
- output_stream << vertex << " ";
- }
- output_stream << ") -> " << "[" << stree.filtration(f_simplex) << "] ";
- output_stream << std::endl;
- }
-
- ouput_file_stream.close();
- return 0;
-}
diff --git a/example/Rips_complex/example_sparse_rips.cpp b/example/Rips_complex/example_sparse_rips.cpp
deleted file mode 100644
index 1c95b48c..00000000
--- a/example/Rips_complex/example_sparse_rips.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <gudhi/Sparse_rips_complex.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/distance_functions.h>
-
-#include <iostream>
-#include <vector>
-
-int main() {
- using Point = std::vector<double>;
- using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
- using Filtration_value = Simplex_tree::Filtration_value;
- using Sparse_rips = Gudhi::rips_complex::Sparse_rips_complex<Filtration_value>;
-
- Point points[] = {{1.0, 1.0}, {7.0, 0.0}, {4.0, 6.0}, {9.0, 6.0}, {0.0, 14.0}, {2.0, 19.0}, {9.0, 17.0}};
-
- // ----------------------------------------------------------------------------
- // Init from Euclidean points
- // ----------------------------------------------------------------------------
- double epsilon = 2; // very rough, no guarantees
- Sparse_rips sparse_rips(points, Gudhi::Euclidean_distance(), epsilon);
-
- Simplex_tree stree;
- sparse_rips.create_complex(stree, 10);
-
- // ----------------------------------------------------------------------------
- // Display information about the complex
- // ----------------------------------------------------------------------------
- std::cout << "Sparse Rips complex is of dimension " << stree.dimension() << " - " << stree.num_simplices()
- << " simplices - " << stree.num_vertices() << " vertices." << std::endl;
-}
diff --git a/example/Rips_complex/full_skeleton_rips_for_doc.txt b/example/Rips_complex/full_skeleton_rips_for_doc.txt
deleted file mode 100644
index 55de4ab8..00000000
--- a/example/Rips_complex/full_skeleton_rips_for_doc.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-Rips complex is of dimension 3 - 24 simplices - 7 vertices.
-Iterator on Rips complex simplices in the filtration order, with [filtration value]:
- ( 0 ) -> [0]
- ( 1 ) -> [0]
- ( 2 ) -> [0]
- ( 3 ) -> [0]
- ( 4 ) -> [0]
- ( 5 ) -> [0]
- ( 6 ) -> [0]
- ( 3 2 ) -> [5]
- ( 5 4 ) -> [5.38516]
- ( 2 0 ) -> [5.83095]
- ( 1 0 ) -> [6.08276]
- ( 3 1 ) -> [6.32456]
- ( 2 1 ) -> [6.7082]
- ( 2 1 0 ) -> [6.7082]
- ( 3 2 1 ) -> [6.7082]
- ( 6 5 ) -> [7.28011]
- ( 4 2 ) -> [8.94427]
- ( 3 0 ) -> [9.43398]
- ( 3 1 0 ) -> [9.43398]
- ( 3 2 0 ) -> [9.43398]
- ( 3 2 1 0 ) -> [9.43398]
- ( 6 4 ) -> [9.48683]
- ( 6 5 4 ) -> [9.48683]
- ( 6 3 ) -> [11]
diff --git a/example/Rips_complex/one_skeleton_rips_for_doc.txt b/example/Rips_complex/one_skeleton_rips_for_doc.txt
deleted file mode 100644
index 706512a5..00000000
--- a/example/Rips_complex/one_skeleton_rips_for_doc.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Rips complex is of dimension 1 - 18 simplices - 7 vertices.
-Iterator on Rips complex simplices in the filtration order, with [filtration value]:
- ( 0 ) -> [0]
- ( 1 ) -> [0]
- ( 2 ) -> [0]
- ( 3 ) -> [0]
- ( 4 ) -> [0]
- ( 5 ) -> [0]
- ( 6 ) -> [0]
- ( 3 2 ) -> [5]
- ( 5 4 ) -> [5.38516]
- ( 2 0 ) -> [5.83095]
- ( 1 0 ) -> [6.08276]
- ( 3 1 ) -> [6.32456]
- ( 2 1 ) -> [6.7082]
- ( 6 5 ) -> [7.28011]
- ( 4 2 ) -> [8.94427]
- ( 3 0 ) -> [9.43398]
- ( 6 4 ) -> [9.48683]
- ( 6 3 ) -> [11]
diff --git a/example/Rips_complex/one_skeleton_rips_from_correlation_matrix_for_doc.txt b/example/Rips_complex/one_skeleton_rips_from_correlation_matrix_for_doc.txt
deleted file mode 100644
index 640d7083..00000000
--- a/example/Rips_complex/one_skeleton_rips_from_correlation_matrix_for_doc.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-Rips complex is of dimension 1 - 15 simplices - 5 vertices.
-Iterator on Rips complex simplices in the filtration order, with [filtration value]:
- ( 0 ) -> [0]
- ( 1 ) -> [0]
- ( 2 ) -> [0]
- ( 3 ) -> [0]
- ( 4 ) -> [0]
- ( 4 0 ) -> [0.11]
- ( 2 1 ) -> [0.26]
- ( 3 2 ) -> [0.28]
- ( 4 3 ) -> [0.3]
- ( 4 1 ) -> [0.39]
- ( 2 0 ) -> [0.77]
- ( 1 0 ) -> [0.94]
- ( 4 2 ) -> [0.97]
- ( 3 0 ) -> [0.99]
- ( 3 1 ) -> [0.99]
diff --git a/example/Simplex_tree/CMakeLists.txt b/example/Simplex_tree/CMakeLists.txt
deleted file mode 100644
index 857e8518..00000000
--- a/example/Simplex_tree/CMakeLists.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-project(Simplex_tree_examples)
-
-add_executable ( Simplex_tree_example_from_cliques_of_graph simplex_tree_from_cliques_of_graph.cpp )
-if (TBB_FOUND)
- target_link_libraries(Simplex_tree_example_from_cliques_of_graph ${TBB_LIBRARIES})
-endif()
-add_test(NAME Simplex_tree_example_from_cliques_of_graph_2 COMMAND $<TARGET_FILE:Simplex_tree_example_from_cliques_of_graph>
- "${CMAKE_SOURCE_DIR}/data/filtered_simplicial_complex/Klein_bottle_complex.fsc" "2")
-add_test(NAME Simplex_tree_example_from_cliques_of_graph_3 COMMAND $<TARGET_FILE:Simplex_tree_example_from_cliques_of_graph>
- "${CMAKE_SOURCE_DIR}/data/filtered_simplicial_complex/Klein_bottle_complex.fsc" "3")
-
-add_executable ( Simplex_tree_example_simple_simplex_tree simple_simplex_tree.cpp )
-if (TBB_FOUND)
- target_link_libraries(Simplex_tree_example_simple_simplex_tree ${TBB_LIBRARIES})
-endif()
-add_test(NAME Simplex_tree_example_simple_simplex_tree COMMAND $<TARGET_FILE:Simplex_tree_example_simple_simplex_tree>)
-
-add_executable ( Simplex_tree_example_mini_simplex_tree mini_simplex_tree.cpp )
-add_test(NAME Simplex_tree_example_mini_simplex_tree COMMAND $<TARGET_FILE:Simplex_tree_example_mini_simplex_tree>)
-
-install(TARGETS Simplex_tree_example_from_cliques_of_graph DESTINATION bin)
-install(TARGETS Simplex_tree_example_simple_simplex_tree DESTINATION bin)
-install(TARGETS Simplex_tree_example_mini_simplex_tree DESTINATION bin)
-
-# An example with Simplex-tree using CGAL alpha_shapes_3
-if(GMP_FOUND AND CGAL_FOUND)
- add_executable ( Simplex_tree_example_alpha_shapes_3_from_off example_alpha_shapes_3_simplex_tree_from_off_file.cpp )
- target_link_libraries(Simplex_tree_example_alpha_shapes_3_from_off ${GMP_LIBRARIES} ${CGAL_LIBRARY})
- if (TBB_FOUND)
- target_link_libraries(Simplex_tree_example_alpha_shapes_3_from_off ${TBB_LIBRARIES})
- endif()
- add_test(NAME Simplex_tree_example_alpha_shapes_3_from_off COMMAND $<TARGET_FILE:Simplex_tree_example_alpha_shapes_3_from_off>
- "${CMAKE_SOURCE_DIR}/data/points/bunny_5000.off")
-
- install(TARGETS Simplex_tree_example_alpha_shapes_3_from_off DESTINATION bin)
-
- add_executable ( Simplex_tree_example_cech_complex_cgal_mini_sphere_3d cech_complex_cgal_mini_sphere_3d.cpp )
- target_link_libraries(Simplex_tree_example_cech_complex_cgal_mini_sphere_3d ${Boost_PROGRAM_OPTIONS_LIBRARY} ${CGAL_LIBRARY})
- if (TBB_FOUND)
- target_link_libraries(Simplex_tree_example_cech_complex_cgal_mini_sphere_3d ${TBB_LIBRARIES})
- endif()
- add_test(NAME Simplex_tree_example_cech_complex_cgal_mini_sphere_3d COMMAND $<TARGET_FILE:Simplex_tree_example_cech_complex_cgal_mini_sphere_3d>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off" -r 0.3 -d 3)
-
- install(TARGETS Simplex_tree_example_alpha_shapes_3_from_off DESTINATION bin)
-endif()
-
-add_executable ( Simplex_tree_example_graph_expansion_with_blocker graph_expansion_with_blocker.cpp )
-if (TBB_FOUND)
- target_link_libraries(Simplex_tree_example_graph_expansion_with_blocker ${TBB_LIBRARIES})
-endif()
-add_test(NAME Simplex_tree_example_graph_expansion_with_blocker COMMAND $<TARGET_FILE:Simplex_tree_example_graph_expansion_with_blocker>)
-
-install(TARGETS Simplex_tree_example_graph_expansion_with_blocker DESTINATION bin)
diff --git a/example/Simplex_tree/README b/example/Simplex_tree/README
deleted file mode 100644
index a9498173..00000000
--- a/example/Simplex_tree/README
+++ /dev/null
@@ -1,73 +0,0 @@
-To build the example, run in a Terminal:
-
-cd /path-to-gudhi/
-cmake .
-cd /path-to-example/
-make
-
-
-Example of use :
-
-*** Simple simplex tree construction
-
-./Simplex_tree_example_simple_simplex_tree
-
-********************************************************************
-EXAMPLE OF SIMPLE INSERTION
- * INSERT 0
- + 0 INSERTED
- * INSERT 1
- + 1 INSERTED
- * INSERT (0,1)
- + (0,1) INSERTED
- * INSERT 2
- + 2 INSERTED
- * INSERT (2,0)
- + (2,0) INSERTED
- * INSERT (2,1)
- + (2,1) INSERTED
- * INSERT (2,1,0)
- + (2,1,0) INSERTED
- * INSERT 3
- + 3 INSERTED
- * INSERT (3,0)
- + (3,0) INSERTED
- * INSERT 0 (already inserted)
- - 0 NOT INSERTED
- * INSERT (2,1,0) (already inserted)
- - (2,1,0) NOT INSERTED
-********************************************************************
-* The complex contains 9 simplices
- - dimension 2 - filtration 0.4
-* Iterator on Simplices in the filtration, with [filtration value]:
- [0.1] 0
- [0.1] 1
- [0.1] 2
- [0.1] 3
- [0.2] 1 0
- [0.2] 2 0
- [0.2] 2 1
- [0.2] 3 0
- [0.3] 2 1 0
-
-*** Simplex tree construction with Z/2Z coefficients on weighted graph Klein bottle file:
-
-./Simplex_tree_example_from_cliques_of_graph ../../../data/points/Klein_bottle_complex.txt 2
-Insert the 1-skeleton in the simplex tree in 0 s.
-Expand the simplex tree in 0 s.
-Information of the Simplex Tree:
- Number of vertices = 10 Number of simplices = 82
-
-with Z/3Z coefficients:
-
-./Simplex_tree_example_from_cliques_of_graph ../../../data/points/Klein_bottle_complex.txt 3
-
-Insert the 1-skeleton in the simplex tree in 0 s.
-Expand the simplex tree in 0 s.
-Information of the Simplex Tree:
- Number of vertices = 10 Number of simplices = 106
-
-*** Simplex_tree computed and displayed from a 3D alpha complex:
- [ Requires CGAL, GMP and GMPXX to be installed]
-
-./Simplex_tree_example_alpha_shapes_3_from_off ../../../data/points/bunny_5000
diff --git a/example/Simplex_tree/cech_complex_cgal_mini_sphere_3d.cpp b/example/Simplex_tree/cech_complex_cgal_mini_sphere_3d.cpp
deleted file mode 100644
index 34092ef6..00000000
--- a/example/Simplex_tree/cech_complex_cgal_mini_sphere_3d.cpp
+++ /dev/null
@@ -1,221 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2017 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/graph_simplicial_complex.h>
-#include <gudhi/distance_functions.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Points_off_io.h>
-
-#include <CGAL/Epick_d.h>
-#include <CGAL/Min_sphere_of_spheres_d.h>
-#include <CGAL/Min_sphere_of_points_d_traits_d.h>
-
-#include <boost/program_options.hpp>
-
-#include <string>
-#include <vector>
-#include <limits> // infinity
-#include <utility> // for pair
-#include <map>
-
-// -------------------------------------------------------------------------------
-// cech_complex_cgal_mini_sphere_3d is an example of each step that is required to
-// build a Cech over a Simplex_tree. Please refer to cech_persistence to see
-// how to do the same thing with the Cech_complex wrapper for less detailed
-// steps.
-// -------------------------------------------------------------------------------
-
-// Types definition
-using Simplex_tree = Gudhi::Simplex_tree<>;
-using Vertex_handle = Simplex_tree::Vertex_handle;
-using Simplex_handle = Simplex_tree::Simplex_handle;
-using Filtration_value = Simplex_tree::Filtration_value;
-using Siblings = Simplex_tree::Siblings;
-using Graph_t = boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS,
- boost::property<Gudhi::vertex_filtration_t, Filtration_value>,
- boost::property<Gudhi::edge_filtration_t, Filtration_value> >;
-using Edge_t = std::pair<Vertex_handle, Vertex_handle>;
-
-using Kernel = CGAL::Epick_d<CGAL::Dimension_tag<3> >;
-using Point = Kernel::Point_d;
-using Traits = CGAL::Min_sphere_of_points_d_traits_d<Kernel, Filtration_value, 3>;
-using Min_sphere = CGAL::Min_sphere_of_spheres_d<Traits>;
-
-using Points_off_reader = Gudhi::Points_off_reader<Point>;
-
-class Cech_blocker {
- public:
- bool operator()(Simplex_handle sh) {
- std::vector<Point> points;
-#if DEBUG_TRACES
- std::cout << "Cech_blocker on [";
-#endif // DEBUG_TRACES
- for (auto vertex : simplex_tree_.simplex_vertex_range(sh)) {
- points.push_back(point_cloud_[vertex]);
-#if DEBUG_TRACES
- std::cout << vertex << ", ";
-#endif // DEBUG_TRACES
- }
- Min_sphere ms(points.begin(), points.end());
- Filtration_value radius = ms.radius();
-#if DEBUG_TRACES
- std::cout << "] - radius = " << radius << " - returns " << (radius > threshold_) << std::endl;
-#endif // DEBUG_TRACES
- simplex_tree_.assign_filtration(sh, radius);
- return (radius > threshold_);
- }
- Cech_blocker(Simplex_tree& simplex_tree, Filtration_value threshold, const std::vector<Point>& point_cloud)
- : simplex_tree_(simplex_tree), threshold_(threshold), point_cloud_(point_cloud) {}
-
- private:
- Simplex_tree simplex_tree_;
- Filtration_value threshold_;
- std::vector<Point> point_cloud_;
-};
-
-template <typename InputPointRange>
-Graph_t compute_proximity_graph(InputPointRange& points, Filtration_value threshold);
-
-void program_options(int argc, char* argv[], std::string& off_file_points, Filtration_value& threshold, int& dim_max);
-
-int main(int argc, char* argv[]) {
- std::string off_file_points;
- Filtration_value threshold;
- int dim_max;
-
- program_options(argc, argv, off_file_points, threshold, dim_max);
-
- // Extract the points from the file filepoints
- Points_off_reader off_reader(off_file_points);
-
- // Compute the proximity graph of the points
- Graph_t prox_graph = compute_proximity_graph(off_reader.get_point_cloud(), threshold);
-
- // Min_sphere sph1(off_reader.get_point_cloud()[0], off_reader.get_point_cloud()[1], off_reader.get_point_cloud()[2]);
- // Construct the Rips complex in a Simplex Tree
- Simplex_tree st;
- // insert the proximity graph in the simplex tree
- st.insert_graph(prox_graph);
- // expand the graph until dimension dim_max
- st.expansion_with_blockers(dim_max, Cech_blocker(st, threshold, off_reader.get_point_cloud()));
-
- std::cout << "The complex contains " << st.num_simplices() << " simplices \n";
- std::cout << " and has dimension " << st.dimension() << " \n";
-
- // Sort the simplices in the order of the filtration
- st.initialize_filtration();
-
-#if DEBUG_TRACES
- std::cout << "********************************************************************\n";
- // Display the Simplex_tree - Can not be done in the middle of 2 inserts
- std::cout << "* The complex contains " << st.num_simplices() << " simplices - dimension=" << st.dimension() << "\n";
- std::cout << "* Iterator on Simplices in the filtration, with [filtration value]:\n";
- for (auto f_simplex : st.filtration_simplex_range()) {
- std::cout << " "
- << "[" << st.filtration(f_simplex) << "] ";
- for (auto vertex : st.simplex_vertex_range(f_simplex)) {
- std::cout << static_cast<int>(vertex) << " ";
- }
- std::cout << std::endl;
- }
-#endif // DEBUG_TRACES
- return 0;
-}
-
-void program_options(int argc, char* argv[], std::string& off_file_points, Filtration_value& threshold, int& dim_max) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()("input-file", po::value<std::string>(&off_file_points),
- "Name of an OFF file containing a 3d point set.\n");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()("help,h", "produce help message")(
- "max-edge-length,r",
- po::value<Filtration_value>(&threshold)->default_value(std::numeric_limits<Filtration_value>::infinity()),
- "Maximal length of an edge for the Cech complex construction.")(
- "cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
- "Maximal dimension of the Cech complex we want to compute.");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Construct a Cech complex defined on a set of input points.\n \n";
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
-
-/** Output the proximity graph of the points.
- *
- * If points contains n elements, the proximity graph is the graph
- * with n vertices, and an edge [u,v] iff the distance function between
- * points u and v is smaller than threshold.
- *
- * The type PointCloud furnishes .begin() and .end() methods, that return
- * iterators with value_type Point.
- */
-template <typename InputPointRange>
-Graph_t compute_proximity_graph(InputPointRange& points, Filtration_value threshold) {
- std::vector<Edge_t> edges;
- std::vector<Filtration_value> edges_fil;
-
- Kernel k;
- Vertex_handle idx_u, idx_v;
- Filtration_value fil;
- idx_u = 0;
- for (auto it_u = points.begin(); it_u != points.end(); ++it_u) {
- idx_v = idx_u + 1;
- for (auto it_v = it_u + 1; it_v != points.end(); ++it_v, ++idx_v) {
- fil = k.squared_distance_d_object()(*it_u, *it_v);
- // For Cech Complex, threshold is a radius (distance /2)
- fil = std::sqrt(fil) / 2.;
- if (fil <= threshold) {
- edges.emplace_back(idx_u, idx_v);
- edges_fil.push_back(fil);
- }
- }
- ++idx_u;
- }
-
- Graph_t skel_graph(edges.begin(), edges.end(), edges_fil.begin(),
- idx_u); // number of points labeled from 0 to idx_u-1
-
- auto vertex_prop = boost::get(Gudhi::vertex_filtration_t(), skel_graph);
-
- boost::graph_traits<Graph_t>::vertex_iterator vi, vi_end;
- for (std::tie(vi, vi_end) = boost::vertices(skel_graph); vi != vi_end; ++vi) {
- boost::put(vertex_prop, *vi, 0.);
- }
-
- return skel_graph;
-}
diff --git a/example/Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp b/example/Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp
deleted file mode 100644
index 290a9d9b..00000000
--- a/example/Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp
+++ /dev/null
@@ -1,276 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Points_3D_off_io.h>
-
-#include <boost/variant.hpp>
-
-#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
-#include <CGAL/Delaunay_triangulation_3.h>
-#include <CGAL/Alpha_shape_3.h>
-#include <CGAL/Alpha_shape_vertex_base_3.h>
-#include <CGAL/Alpha_shape_cell_base_3.h>
-#include <CGAL/iterator.h>
-
-#include <fstream>
-#include <cmath>
-#include <string>
-#include <tuple> // for tuple<>
-#include <map>
-#include <utility> // for pair<>
-#include <list>
-#include <vector>
-
-// Alpha_shape_3 templates type definitions
-typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
-typedef CGAL::Alpha_shape_vertex_base_3<Kernel> Vb;
-typedef CGAL::Alpha_shape_cell_base_3<Kernel> Fb;
-typedef CGAL::Triangulation_data_structure_3<Vb, Fb> Tds;
-typedef CGAL::Delaunay_triangulation_3<Kernel, Tds> Triangulation_3;
-typedef CGAL::Alpha_shape_3<Triangulation_3> Alpha_shape_3;
-
-// From file type definition
-typedef Kernel::Point_3 Point;
-
-// filtration with alpha values needed type definition
-typedef Alpha_shape_3::FT Alpha_value_type;
-typedef CGAL::Object Object;
-typedef CGAL::Dispatch_output_iterator<
-CGAL::cpp11::tuple<Object, Alpha_value_type>,
-CGAL::cpp11::tuple<std::back_insert_iterator< std::vector<Object> >,
- std::back_insert_iterator< std::vector<Alpha_value_type> > > > Dispatch;
-typedef Alpha_shape_3::Cell_handle Cell_handle;
-typedef Alpha_shape_3::Facet Facet;
-typedef Alpha_shape_3::Edge Edge;
-typedef std::list<Alpha_shape_3::Vertex_handle> Vertex_list;
-
-// gudhi type definition
-typedef Gudhi::Simplex_tree<> Simplex_tree;
-typedef Simplex_tree::Vertex_handle Simplex_tree_vertex;
-typedef std::map<Alpha_shape_3::Vertex_handle, Simplex_tree_vertex > Alpha_shape_simplex_tree_map;
-typedef std::pair<Alpha_shape_3::Vertex_handle, Simplex_tree_vertex> Alpha_shape_simplex_tree_pair;
-typedef std::vector< Simplex_tree_vertex > Simplex_tree_vector_vertex;
-
-Vertex_list from(const Cell_handle& ch) {
- Vertex_list the_list;
- for (auto i = 0; i < 4; i++) {
-#ifdef DEBUG_TRACES
- std::cout << "from cell[" << i << "]=" << ch->vertex(i)->point() << std::endl;
-#endif // DEBUG_TRACES
- the_list.push_back(ch->vertex(i));
- }
- return the_list;
-}
-
-Vertex_list from(const Facet& fct) {
- Vertex_list the_list;
- for (auto i = 0; i < 4; i++) {
- if (fct.second != i) {
-#ifdef DEBUG_TRACES
- std::cout << "from facet=[" << i << "]" << fct.first->vertex(i)->point() << std::endl;
-#endif // DEBUG_TRACES
- the_list.push_back(fct.first->vertex(i));
- }
- }
- return the_list;
-}
-
-Vertex_list from(const Edge& edg) {
- Vertex_list the_list;
- for (auto i = 0; i < 4; i++) {
- if ((edg.second == i) || (edg.third == i)) {
-#ifdef DEBUG_TRACES
- std::cout << "from edge[" << i << "]=" << edg.first->vertex(i)->point() << std::endl;
-#endif // DEBUG_TRACES
- the_list.push_back(edg.first->vertex(i));
- }
- }
- return the_list;
-}
-
-Vertex_list from(const Alpha_shape_3::Vertex_handle& vh) {
- Vertex_list the_list;
-#ifdef DEBUG_TRACES
- std::cout << "from vertex=" << vh->point() << std::endl;
-#endif // DEBUG_TRACES
- the_list.push_back(vh);
- return the_list;
-}
-
-int main(int argc, char * const argv[]) {
- // program args management
- if (argc != 2) {
- std::cerr << "Usage: " << argv[0]
- << " path_to_off_file \n";
- return 0;
- }
-
- // Read points from file
- std::string offInputFile(argv[1]);
- // Read the OFF file (input file name given as parameter) and triangulate points
- Gudhi::Points_3D_off_reader<Point> off_reader(offInputFile);
- // Check the read operation was correct
- if (!off_reader.is_valid()) {
- std::cerr << "Unable to read file " << argv[1] << std::endl;
- return 0;
- }
- // Retrieve the triangulation
- std::vector<Point> lp = off_reader.get_point_cloud();
-
- // alpha shape construction from points. CGAL has a strange behavior in REGULARIZED mode.
- Alpha_shape_3 as(lp.begin(), lp.end(), 0, Alpha_shape_3::GENERAL);
-#ifdef DEBUG_TRACES
- std::cout << "Alpha shape computed in GENERAL mode" << std::endl;
-#endif // DEBUG_TRACES
-
- // filtration with alpha values from alpha shape
- std::vector<Object> the_objects;
- std::vector<Alpha_value_type> the_alpha_values;
-
- Dispatch disp = CGAL::dispatch_output<Object, Alpha_value_type>(std::back_inserter(the_objects),
- std::back_inserter(the_alpha_values));
-
- as.filtration_with_alpha_values(disp);
-#ifdef DEBUG_TRACES
- std::cout << "filtration_with_alpha_values returns : " << the_objects.size() << " objects" << std::endl;
-#endif // DEBUG_TRACES
-
- Alpha_shape_3::size_type count_vertices = 0;
- Alpha_shape_3::size_type count_edges = 0;
- Alpha_shape_3::size_type count_facets = 0;
- Alpha_shape_3::size_type count_cells = 0;
-
- // Loop on objects vector
- Vertex_list vertex_list;
- Simplex_tree simplex_tree;
- Alpha_shape_simplex_tree_map map_cgal_simplex_tree;
- std::vector<Alpha_value_type>::iterator the_alpha_value_iterator = the_alpha_values.begin();
- for (auto object_iterator : the_objects) {
- // Retrieve Alpha shape vertex list from object
- if (const Cell_handle * cell = CGAL::object_cast<Cell_handle>(&object_iterator)) {
- vertex_list = from(*cell);
- count_cells++;
- } else if (const Facet * facet = CGAL::object_cast<Facet>(&object_iterator)) {
- vertex_list = from(*facet);
- count_facets++;
- } else if (const Edge * edge = CGAL::object_cast<Edge>(&object_iterator)) {
- vertex_list = from(*edge);
- count_edges++;
- } else if (const Alpha_shape_3::Vertex_handle * vertex =
- CGAL::object_cast<Alpha_shape_3::Vertex_handle>(&object_iterator)) {
- count_vertices++;
- vertex_list = from(*vertex);
- }
- // Construction of the vector of simplex_tree vertex from list of alpha_shapes vertex
- Simplex_tree_vector_vertex the_simplex_tree;
- for (auto the_alpha_shape_vertex : vertex_list) {
- Alpha_shape_simplex_tree_map::iterator the_map_iterator = map_cgal_simplex_tree.find(the_alpha_shape_vertex);
- if (the_map_iterator == map_cgal_simplex_tree.end()) {
- // alpha shape not found
- Simplex_tree_vertex vertex = map_cgal_simplex_tree.size();
-#ifdef DEBUG_TRACES
- std::cout << "vertex [" << the_alpha_shape_vertex->point() << "] not found - insert_simplex " << vertex << "\n";
-#endif // DEBUG_TRACES
- the_simplex_tree.push_back(vertex);
- map_cgal_simplex_tree.insert(Alpha_shape_simplex_tree_pair(the_alpha_shape_vertex, vertex));
- } else {
- // alpha shape found
- Simplex_tree_vertex vertex = the_map_iterator->second;
-#ifdef DEBUG_TRACES
- std::cout << "vertex [" << the_alpha_shape_vertex->point() << "] found in " << vertex << std::endl;
-#endif // DEBUG_TRACES
- the_simplex_tree.push_back(vertex);
- }
- }
- // Construction of the simplex_tree
-#ifdef DEBUG_TRACES
- std::cout << "filtration = " << *the_alpha_value_iterator << std::endl;
-#endif // DEBUG_TRACES
- simplex_tree.insert_simplex(the_simplex_tree, std::sqrt(*the_alpha_value_iterator));
- if (the_alpha_value_iterator != the_alpha_values.end())
- ++the_alpha_value_iterator;
- else
- std::cerr << "This shall not happen" << std::endl;
- }
-#ifdef DEBUG_TRACES
- std::cout << "vertices \t\t" << count_vertices << std::endl;
- std::cout << "edges \t\t" << count_edges << std::endl;
- std::cout << "facets \t\t" << count_facets << std::endl;
- std::cout << "cells \t\t" << count_cells << std::endl;
-
-
- std::cout << "Information of the Simplex Tree:\n";
- std::cout << " Number of vertices = " << simplex_tree.num_vertices() << " ";
- std::cout << " Number of simplices = " << simplex_tree.num_simplices() << std::endl << std::endl;
-#endif // DEBUG_TRACES
-
-#ifdef DEBUG_TRACES
- std::cout << "Iterator on vertices: \n";
- for (auto vertex : simplex_tree.complex_vertex_range()) {
- std::cout << vertex << " ";
- }
-#endif // DEBUG_TRACES
-
- std::cout << simplex_tree << std::endl;
-
-#ifdef DEBUG_TRACES
- std::cout << std::endl << std::endl << "Iterator on simplices:\n";
- for (auto simplex : simplex_tree.complex_simplex_range()) {
- std::cout << " ";
- for (auto vertex : simplex_tree.simplex_vertex_range(simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << std::endl;
- }
-#endif // DEBUG_TRACES
-#ifdef DEBUG_TRACES
- std::cout << std::endl << std::endl << "Iterator on Simplices in the filtration, with [filtration value]:\n";
- for (auto f_simplex : simplex_tree.filtration_simplex_range()) {
- std::cout << " " << "[" << simplex_tree.filtration(f_simplex) << "] ";
- for (auto vertex : simplex_tree.simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << std::endl;
- }
-#endif // DEBUG_TRACES
-#ifdef DEBUG_TRACES
- std::cout << std::endl << std::endl << "Iterator on Simplices in the filtration, and their boundary simplices:\n";
- for (auto f_simplex : simplex_tree.filtration_simplex_range()) {
- std::cout << " " << "[" << simplex_tree.filtration(f_simplex) << "] ";
- for (auto vertex : simplex_tree.simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << std::endl;
-
- for (auto b_simplex : simplex_tree.boundary_simplex_range(f_simplex)) {
- std::cout << " " << "[" << simplex_tree.filtration(b_simplex) << "] ";
- for (auto vertex : simplex_tree.simplex_vertex_range(b_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << std::endl;
- }
- }
-#endif // DEBUG_TRACES
-
- return 0;
-}
diff --git a/example/Simplex_tree/graph_expansion_with_blocker.cpp b/example/Simplex_tree/graph_expansion_with_blocker.cpp
deleted file mode 100644
index f39de31f..00000000
--- a/example/Simplex_tree/graph_expansion_with_blocker.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Simplex_tree.h>
-
-#include <iostream>
-
-using Simplex_tree = Gudhi::Simplex_tree<>;
-using Simplex_handle = Simplex_tree::Simplex_handle;
-
-int main(int argc, char* const argv[]) {
- // Construct the Simplex Tree with a 1-skeleton graph example
- Simplex_tree stree;
-
- stree.insert_simplex({0, 1}, 0.);
- stree.insert_simplex({0, 2}, 1.);
- stree.insert_simplex({0, 3}, 2.);
- stree.insert_simplex({1, 2}, 3.);
- stree.insert_simplex({1, 3}, 4.);
- stree.insert_simplex({2, 3}, 5.);
- stree.insert_simplex({2, 4}, 6.);
- stree.insert_simplex({3, 6}, 7.);
- stree.insert_simplex({4, 5}, 8.);
- stree.insert_simplex({4, 6}, 9.);
- stree.insert_simplex({5, 6}, 10.);
- stree.insert_simplex({6}, 10.);
-
- stree.expansion_with_blockers(3, [&](Simplex_handle sh) {
- bool result = false;
- std::cout << "Blocker on [";
- // User can loop on the vertices from the given simplex_handle i.e.
- for (auto vertex : stree.simplex_vertex_range(sh)) {
- // We block the expansion, if the vertex '6' is in the given list of vertices
- if (vertex == 6) result = true;
- std::cout << vertex << ", ";
- }
- std::cout << "] ( " << stree.filtration(sh);
- // User can re-assign a new filtration value directly in the blocker (default is the maximal value of boudaries)
- stree.assign_filtration(sh, stree.filtration(sh) + 1.);
-
- std::cout << " + 1. ) = " << result << std::endl;
-
- return result;
- });
-
- std::cout << "********************************************************************\n";
- std::cout << "* The complex contains " << stree.num_simplices() << " simplices";
- std::cout << " - dimension " << stree.dimension() << "\n";
- std::cout << "* Iterator on Simplices in the filtration, with [filtration value]:\n";
- for (auto f_simplex : stree.filtration_simplex_range()) {
- std::cout << " "
- << "[" << stree.filtration(f_simplex) << "] ";
- for (auto vertex : stree.simplex_vertex_range(f_simplex)) std::cout << "(" << vertex << ")";
- std::cout << std::endl;
- }
-
- return 0;
-}
diff --git a/example/Simplex_tree/mini_simplex_tree.cpp b/example/Simplex_tree/mini_simplex_tree.cpp
deleted file mode 100644
index e7c7177f..00000000
--- a/example/Simplex_tree/mini_simplex_tree.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Marc Glisse
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Simplex_tree.h>
-#include <iostream>
-#include <initializer_list>
-
-struct MyOptions : Gudhi::Simplex_tree_options_full_featured {
- // Not doing persistence, so we don't need those
- static const bool store_key = false;
- static const bool store_filtration = false;
- // I have few vertices
- typedef short Vertex_handle;
-};
-
-using ST = Gudhi::Simplex_tree<MyOptions>;
-
-// Dictionary should be private, but for now this is the easiest way.
-static_assert(sizeof(ST::Dictionary::value_type) < sizeof(Gudhi::Simplex_tree<>::Dictionary::value_type),
- "Not storing the filtration and key should save some space");
-
-int main() {
- ST st;
-
- /* Complex to build. */
- /* 1 */
- /* o */
- /* /X\ */
- /* o---o---o */
- /* 2 0 3 */
-
- auto triangle012 = {0, 1, 2};
- auto edge03 = {0, 3};
- st.insert_simplex_and_subfaces(triangle012);
- st.insert_simplex_and_subfaces(edge03);
-
- auto edge02 = {0, 2};
- ST::Simplex_handle e = st.find(edge02);
- // We are not using filtrations so everything has value 0
- assert(st.filtration(e) == 0);
- for (ST::Simplex_handle t : st.cofaces_simplex_range(e, 1)) {
- // Only coface is 012
- for (ST::Vertex_handle v : st.simplex_vertex_range(t)) // v in { 0, 1, 2 }
- std::cout << v;
- std::cout << '\n';
- }
-}
diff --git a/example/Simplex_tree/simple_simplex_tree.cpp b/example/Simplex_tree/simple_simplex_tree.cpp
deleted file mode 100644
index d71b5608..00000000
--- a/example/Simplex_tree/simple_simplex_tree.cpp
+++ /dev/null
@@ -1,268 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/graph_simplicial_complex.h>
-#include <gudhi/Simplex_tree.h>
-
-#include <iostream>
-#include <utility> // for pair
-#include <vector>
-
-using Simplex_tree = Gudhi::Simplex_tree<>;
-using Vertex_handle = Simplex_tree::Vertex_handle;
-using Filtration_value = Simplex_tree::Filtration_value;
-using typeVectorVertex = std::vector<Vertex_handle>;
-using typePairSimplexBool = std::pair<Simplex_tree::Simplex_handle, bool>;
-
-int main(int argc, char* const argv[]) {
- const Filtration_value FIRST_FILTRATION_VALUE = 0.1;
- const Filtration_value SECOND_FILTRATION_VALUE = 0.2;
- const Filtration_value THIRD_FILTRATION_VALUE = 0.3;
- const Filtration_value FOURTH_FILTRATION_VALUE = 0.4;
-
- // TEST OF INSERTION
- std::cout << "********************************************************************" << std::endl;
- std::cout << "EXAMPLE OF SIMPLE INSERTION" << std::endl;
- // Construct the Simplex Tree
- Simplex_tree simplexTree;
-
- /* Simplex to be inserted: */
- /* 1 */
- /* o */
- /* /X\ */
- /* o---o---o */
- /* 2 0 3 */
-
- // ++ FIRST
- std::cout << " * INSERT 0" << std::endl;
- typeVectorVertex firstSimplexVector = {0};
- typePairSimplexBool returnValue =
- simplexTree.insert_simplex(firstSimplexVector, Filtration_value(FIRST_FILTRATION_VALUE));
-
- if (returnValue.second == true) {
- std::cout << " + 0 INSERTED" << std::endl;
- } else {
- std::cout << " - 0 NOT INSERTED" << std::endl;
- }
-
- // ++ SECOND
- std::cout << " * INSERT 1" << std::endl;
- typeVectorVertex secondSimplexVector = {1};
- returnValue = simplexTree.insert_simplex(secondSimplexVector, Filtration_value(FIRST_FILTRATION_VALUE));
-
- if (returnValue.second == true) {
- std::cout << " + 1 INSERTED" << std::endl;
- } else {
- std::cout << " - 1 NOT INSERTED" << std::endl;
- }
-
- // ++ THIRD
- std::cout << " * INSERT (0,1)" << std::endl;
- typeVectorVertex thirdSimplexVector = {0, 1};
- returnValue = simplexTree.insert_simplex(thirdSimplexVector, Filtration_value(SECOND_FILTRATION_VALUE));
-
- if (returnValue.second == true) {
- std::cout << " + (0,1) INSERTED" << std::endl;
- } else {
- std::cout << " - (0,1) NOT INSERTED" << std::endl;
- }
-
- // ++ FOURTH
- std::cout << " * INSERT 2" << std::endl;
- typeVectorVertex fourthSimplexVector = {2};
- returnValue = simplexTree.insert_simplex(fourthSimplexVector, Filtration_value(FIRST_FILTRATION_VALUE));
-
- if (returnValue.second == true) {
- std::cout << " + 2 INSERTED" << std::endl;
- } else {
- std::cout << " - 2 NOT INSERTED" << std::endl;
- }
-
- // ++ FIFTH
- std::cout << " * INSERT (2,0)" << std::endl;
- typeVectorVertex fifthSimplexVector = {2, 0};
- returnValue = simplexTree.insert_simplex(fifthSimplexVector, Filtration_value(SECOND_FILTRATION_VALUE));
-
- if (returnValue.second == true) {
- std::cout << " + (2,0) INSERTED" << std::endl;
- } else {
- std::cout << " - (2,0) NOT INSERTED" << std::endl;
- }
-
- // ++ SIXTH
- std::cout << " * INSERT (2,1)" << std::endl;
- typeVectorVertex sixthSimplexVector = {2, 1};
- returnValue = simplexTree.insert_simplex(sixthSimplexVector, Filtration_value(SECOND_FILTRATION_VALUE));
-
- if (returnValue.second == true) {
- std::cout << " + (2,1) INSERTED" << std::endl;
- } else {
- std::cout << " - (2,1) NOT INSERTED" << std::endl;
- }
-
- // ++ SEVENTH
- std::cout << " * INSERT (2,1,0)" << std::endl;
- typeVectorVertex seventhSimplexVector = {2, 1, 0};
- returnValue = simplexTree.insert_simplex(seventhSimplexVector, Filtration_value(THIRD_FILTRATION_VALUE));
-
- if (returnValue.second == true) {
- std::cout << " + (2,1,0) INSERTED" << std::endl;
- } else {
- std::cout << " - (2,1,0) NOT INSERTED" << std::endl;
- }
-
- // ++ EIGHTH
- std::cout << " * INSERT 3" << std::endl;
- typeVectorVertex eighthSimplexVector = {3};
- returnValue = simplexTree.insert_simplex(eighthSimplexVector, Filtration_value(FIRST_FILTRATION_VALUE));
-
- if (returnValue.second == true) {
- std::cout << " + 3 INSERTED" << std::endl;
- } else {
- std::cout << " - 3 NOT INSERTED" << std::endl;
- }
-
- // ++ NINETH
- std::cout << " * INSERT (3,0)" << std::endl;
- typeVectorVertex ninethSimplexVector = {3, 0};
- returnValue = simplexTree.insert_simplex(ninethSimplexVector, Filtration_value(SECOND_FILTRATION_VALUE));
-
- if (returnValue.second == true) {
- std::cout << " + (3,0) INSERTED" << std::endl;
- } else {
- std::cout << " - (3,0) NOT INSERTED" << std::endl;
- }
-
- // ++ TENTH
- std::cout << " * INSERT 0 (already inserted)" << std::endl;
- typeVectorVertex tenthSimplexVector = {0};
- // With a different filtration value
- returnValue = simplexTree.insert_simplex(tenthSimplexVector, Filtration_value(FOURTH_FILTRATION_VALUE));
-
- if (returnValue.second == true) {
- std::cout << " + 0 INSERTED" << std::endl;
- } else {
- std::cout << " - 0 NOT INSERTED" << std::endl;
- }
-
- // ++ ELEVENTH
- std::cout << " * INSERT (2,1,0) (already inserted)" << std::endl;
- typeVectorVertex eleventhSimplexVector = {2, 1, 0};
- returnValue = simplexTree.insert_simplex(eleventhSimplexVector, Filtration_value(FOURTH_FILTRATION_VALUE));
-
- if (returnValue.second == true) {
- std::cout << " + (2,1,0) INSERTED" << std::endl;
- } else {
- std::cout << " - (2,1,0) NOT INSERTED" << std::endl;
- }
-
- // ++ GENERAL VARIABLE SET
-
- std::cout << "********************************************************************\n";
- // Display the Simplex_tree - Can not be done in the middle of 2 inserts
- std::cout << "* The complex contains " << simplexTree.num_simplices() << " simplices\n";
- std::cout << " - dimension " << simplexTree.dimension() << "\n";
- std::cout << "* Iterator on Simplices in the filtration, with [filtration value]:\n";
- for (auto f_simplex : simplexTree.filtration_simplex_range()) {
- std::cout << " "
- << "[" << simplexTree.filtration(f_simplex) << "] ";
- for (auto vertex : simplexTree.simplex_vertex_range(f_simplex)) std::cout << "(" << vertex << ")";
- std::cout << std::endl;
- }
- // [0.1] 0
- // [0.1] 1
- // [0.1] 2
- // [0.1] 3
- // [0.2] 1 0
- // [0.2] 2 0
- // [0.2] 2 1
- // [0.2] 3 0
- // [0.3] 2 1 0
-
- // ------------------------------------------------------------------------------------------------------------------
- // Find in the simplex_tree
- // ------------------------------------------------------------------------------------------------------------------
- Simplex_tree::Simplex_handle simplexFound = simplexTree.find(secondSimplexVector);
- std::cout << "**************IS THE SIMPLEX {1} IN THE SIMPLEX TREE ?\n";
- if (simplexFound != simplexTree.null_simplex())
- std::cout << "***+ YES IT IS!\n";
- else
- std::cout << "***- NO IT ISN'T\n";
-
- typeVectorVertex unknownSimplexVector = {15};
- simplexFound = simplexTree.find(unknownSimplexVector);
- std::cout << "**************IS THE SIMPLEX {15} IN THE SIMPLEX TREE ?\n";
- if (simplexFound != simplexTree.null_simplex())
- std::cout << "***+ YES IT IS!\n";
- else
- std::cout << "***- NO IT ISN'T\n";
-
- simplexFound = simplexTree.find(fifthSimplexVector);
- std::cout << "**************IS THE SIMPLEX {2,0} IN THE SIMPLEX TREE ?\n";
- if (simplexFound != simplexTree.null_simplex())
- std::cout << "***+ YES IT IS!\n";
- else
- std::cout << "***- NO IT ISN'T\n";
-
- typeVectorVertex otherSimplexVector = {1, 15};
- simplexFound = simplexTree.find(otherSimplexVector);
- std::cout << "**************IS THE SIMPLEX {15,1} IN THE SIMPLEX TREE ?\n";
- if (simplexFound != simplexTree.null_simplex())
- std::cout << "***+ YES IT IS!\n";
- else
- std::cout << "***- NO IT ISN'T\n";
-
- typeVectorVertex invSimplexVector = {1, 2, 0};
- simplexFound = simplexTree.find(invSimplexVector);
- std::cout << "**************IS THE SIMPLEX {1,2,0} IN THE SIMPLEX TREE ?\n";
- if (simplexFound != simplexTree.null_simplex())
- std::cout << "***+ YES IT IS!\n";
- else
- std::cout << "***- NO IT ISN'T\n";
-
- simplexFound = simplexTree.find({0, 1});
- std::cout << "**************IS THE SIMPLEX {0,1} IN THE SIMPLEX TREE ?\n";
- if (simplexFound != simplexTree.null_simplex())
- std::cout << "***+ YES IT IS!\n";
- else
- std::cout << "***- NO IT ISN'T\n";
-
- std::cout << "**************COFACES OF {0,1} IN CODIMENSION 1 ARE\n";
- for (auto& simplex : simplexTree.cofaces_simplex_range(simplexTree.find({0, 1}), 1)) {
- for (auto vertex : simplexTree.simplex_vertex_range(simplex)) std::cout << "(" << vertex << ")";
- std::cout << std::endl;
- }
-
- std::cout << "**************STARS OF {0,1} ARE\n";
- for (auto& simplex : simplexTree.star_simplex_range(simplexTree.find({0, 1}))) {
- for (auto vertex : simplexTree.simplex_vertex_range(simplex)) std::cout << "(" << vertex << ")";
- std::cout << std::endl;
- }
-
- std::cout << "**************BOUNDARIES OF {0,1,2} ARE\n";
- for (auto& simplex : simplexTree.boundary_simplex_range(simplexTree.find({0, 1, 2}))) {
- for (auto vertex : simplexTree.simplex_vertex_range(simplex)) std::cout << "(" << vertex << ")";
- std::cout << std::endl;
- }
-
- return 0;
-}
diff --git a/example/Simplex_tree/simplex_tree_from_cliques_of_graph.cpp b/example/Simplex_tree/simplex_tree_from_cliques_of_graph.cpp
deleted file mode 100644
index 6d70f3d1..00000000
--- a/example/Simplex_tree/simplex_tree_from_cliques_of_graph.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/reader_utils.h>
-#include <gudhi/Simplex_tree.h>
-
-#include <iostream>
-#include <ctime>
-#include <string>
-#include <utility> // for std::pair
-
-using namespace Gudhi;
-
-typedef int Vertex_handle;
-typedef double Filtration_value;
-typedef boost::adjacency_list < boost::vecS, boost::vecS, boost::undirectedS,
- boost::property < vertex_filtration_t, Filtration_value >,
- boost::property < edge_filtration_t, Filtration_value > > Graph_t;
-
-int main(int argc, char * const argv[]) {
- if (argc != 3) {
- std::cerr << "Usage: " << argv[0]
- << " path_to_file_graph max_dim \n";
- return 0;
- }
- std::string filegraph = argv[1];
- int max_dim = atoi(argv[2]);
-
- clock_t start, end;
- // Construct the Simplex Tree
- Simplex_tree<> st;
-
- start = clock();
- auto g = read_graph<Graph_t, Filtration_value, Vertex_handle>(filegraph);
- // insert the graph in the simplex tree as 1-skeleton
- st.insert_graph(g);
- end = clock();
- std::cout << "Insert the 1-skeleton in the simplex tree in "
- << static_cast<double>(end - start) / CLOCKS_PER_SEC << " s. \n";
-
- start = clock();
- // expand the 1-skeleton until dimension max_dim
- st.expansion(max_dim);
- end = clock();
- std::cout << "max_dim = " << max_dim << "\n";
- std::cout << "Expand the simplex tree in "
- << static_cast<double>(end - start) / CLOCKS_PER_SEC << " s. \n";
-
- std::cout << "Information of the Simplex Tree: " << std::endl;
- std::cout << " Number of vertices = " << st.num_vertices() << " ";
- std::cout << " Number of simplices = " << st.num_simplices() << std::endl;
- std::cout << std::endl << std::endl;
-
- std::cout << "Iterator on vertices: ";
- for (auto vertex : st.complex_vertex_range()) {
- std::cout << vertex << " ";
- }
-
- std::cout << std::endl;
-
- std::cout << std::endl << std::endl;
-
- std::cout << "Iterator on simplices: " << std::endl;
- for (auto simplex : st.complex_simplex_range()) {
- std::cout << " ";
- for (auto vertex : st.simplex_vertex_range(simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << std::endl;
- }
-
- std::cout << std::endl << std::endl;
-
- std::cout << "Iterator on Simplices in the filtration, with [filtration value]:" << std::endl;
- for (auto f_simplex : st.filtration_simplex_range()) {
- std::cout << " " << "[" << st.filtration(f_simplex) << "] ";
- for (auto vertex : st.simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << std::endl;
- }
-
- std::cout << std::endl << std::endl;
-
- std::cout << "Iterator on Simplices in the filtration, and their boundary simplices:" << std::endl;
- for (auto f_simplex : st.filtration_simplex_range()) {
- std::cout << " " << "[" << st.filtration(f_simplex) << "] ";
- for (auto vertex : st.simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << std::endl;
-
- for (auto b_simplex : st.boundary_simplex_range(f_simplex)) {
- std::cout << " " << "[" << st.filtration(b_simplex) << "] ";
- for (auto vertex : st.simplex_vertex_range(b_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << std::endl;
- }
- }
- return 0;
-}
diff --git a/example/Skeleton_blocker/CMakeLists.txt b/example/Skeleton_blocker/CMakeLists.txt
deleted file mode 100644
index 0e5d2f11..00000000
--- a/example/Skeleton_blocker/CMakeLists.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-project(Skeleton_blocker_examples)
-
-add_executable(Skeleton_blocker_example_from_simplices Skeleton_blocker_from_simplices.cpp)
-add_executable(Skeleton_blocker_example_iteration Skeleton_blocker_iteration.cpp)
-add_executable(Skeleton_blocker_example_link Skeleton_blocker_link.cpp)
-
-add_test(NAME Skeleton_blocker_example_from_simplices COMMAND $<TARGET_FILE:Skeleton_blocker_example_from_simplices>)
-add_test(NAME Skeleton_blocker_example_iteration COMMAND $<TARGET_FILE:Skeleton_blocker_example_iteration>)
-add_test(NAME Skeleton_blocker_example_link COMMAND $<TARGET_FILE:Skeleton_blocker_example_link>)
-
-install(TARGETS Skeleton_blocker_example_from_simplices DESTINATION bin)
-install(TARGETS Skeleton_blocker_example_iteration DESTINATION bin)
-install(TARGETS Skeleton_blocker_example_link DESTINATION bin)
diff --git a/example/Skeleton_blocker/Skeleton_blocker_from_simplices.cpp b/example/Skeleton_blocker/Skeleton_blocker_from_simplices.cpp
deleted file mode 100644
index f288e39c..00000000
--- a/example/Skeleton_blocker/Skeleton_blocker_from_simplices.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Skeleton_blocker.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string>
-#include <fstream>
-#include <sstream>
-#include <vector>
-
-typedef Gudhi::skeleton_blocker::Skeleton_blocker_simple_traits Traits;
-typedef Gudhi::skeleton_blocker::Skeleton_blocker_complex<Traits> Complex;
-typedef Complex::Vertex_handle Vertex_handle;
-typedef Complex::Simplex Simplex;
-
-int main(int argc, char *argv[]) {
- std::vector<Simplex> simplices;
-
- // add 4 triangles of a tetrahedron 0123
- simplices.push_back(Simplex(Vertex_handle(0), Vertex_handle(1), Vertex_handle(2)));
- simplices.push_back(Simplex(Vertex_handle(1), Vertex_handle(2), Vertex_handle(3)));
- simplices.push_back(Simplex(Vertex_handle(3), Vertex_handle(0), Vertex_handle(2)));
- simplices.push_back(Simplex(Vertex_handle(3), Vertex_handle(0), Vertex_handle(1)));
-
- // get complex from top faces
- Complex complex(Gudhi::skeleton_blocker::make_complex_from_top_faces<Complex>(simplices.begin(), simplices.end()));
-
-
- std::cout << "Simplices:" << std::endl;
- for (const Simplex & s : complex.complex_simplex_range())
- std::cout << s << " ";
- std::cout << std::endl;
-
- // One blocker as simplex 0123 is not in the complex but all its proper faces are.
- std::cout << "Blockers: " << complex.blockers_to_string() << std::endl;
-
- // now build a complex from its full list of simplices
- simplices.clear();
- simplices.push_back(Simplex(Vertex_handle(0)));
- simplices.push_back(Simplex(Vertex_handle(1)));
- simplices.push_back(Simplex(Vertex_handle(2)));
- simplices.push_back(Simplex(Vertex_handle(0), Vertex_handle(1)));
- simplices.push_back(Simplex(Vertex_handle(1), Vertex_handle(2)));
- simplices.push_back(Simplex(Vertex_handle(2), Vertex_handle(0)));
- complex = Complex(simplices.begin(), simplices.end());
-
- std::cout << "Simplices:" << std::endl;
- for (const Simplex & s : complex.complex_simplex_range())
- std::cout << s << " ";
- std::cout << std::endl;
-
- // One blocker as simplex 012 is not in the complex but all its proper faces are.
- std::cout << "Blockers: " << complex.blockers_to_string() << std::endl;
-
- return EXIT_SUCCESS;
-}
diff --git a/example/Skeleton_blocker/Skeleton_blocker_iteration.cpp b/example/Skeleton_blocker/Skeleton_blocker_iteration.cpp
deleted file mode 100644
index 4d008450..00000000
--- a/example/Skeleton_blocker/Skeleton_blocker_iteration.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Skeleton_blocker.h>
-#include <gudhi/Clock.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string>
-#include <fstream>
-#include <sstream>
-
-typedef Gudhi::skeleton_blocker::Skeleton_blocker_simple_traits Traits;
-typedef Gudhi::skeleton_blocker::Skeleton_blocker_complex<Traits> Complex;
-typedef Complex::Vertex_handle Vertex_handle;
-typedef Complex::Simplex Simplex;
-
-Complex build_complete_complex(int n) {
- // build a full complex with n vertices and 2^n-1 simplices
- Complex complex;
- for (int i = 0; i < n; i++)
- complex.add_vertex();
- for (int i = 0; i < n; i++)
- for (int j = 0; j < i; j++)
- complex.add_edge_without_blockers(Vertex_handle(i), Vertex_handle(j));
- return complex;
-}
-
-int main(int argc, char *argv[]) {
- Gudhi::Clock skbl_chrono("Time to build the complete complex, enumerate simplices and Euler Characteristic");
- const int n = 15;
-
- // build a full complex with n vertices and 2^n-1 simplices
- Complex complex(build_complete_complex(n));
-
- // this is just to illustrate iterators, to count number of vertices
- // or edges, complex.num_vertices() and complex.num_edges() are
- // more appropriated!
- unsigned num_vertices = 0;
- for (auto v : complex.vertex_range()) {
- std::cout << "Vertex " << v << std::endl;
- ++num_vertices;
- }
-
- // such loop can also be done directly with distance as iterators are STL compliant
- auto edges = complex.edge_range();
- unsigned num_edges = std::distance(edges.begin(), edges.end());
-
- unsigned euler = 0;
- unsigned num_simplices = 0;
- // we use a reference to a simplex instead of a copy
- // value here because a simplex is a set of integers
- // and copying it cost time
- for (const Simplex & s : complex.complex_simplex_range()) {
- ++num_simplices;
- if (s.dimension() % 2 == 0)
- euler += 1;
- else
- euler -= 1;
- }
- std::cout << "Saw " << num_vertices << " vertices, " << num_edges << " edges and " << num_simplices << " simplices"
- << std::endl;
- std::cout << "The Euler Characteristic is " << euler << std::endl;
- std::cout << skbl_chrono;
- return EXIT_SUCCESS;
-}
diff --git a/example/Skeleton_blocker/Skeleton_blocker_link.cpp b/example/Skeleton_blocker/Skeleton_blocker_link.cpp
deleted file mode 100644
index 2ec72128..00000000
--- a/example/Skeleton_blocker/Skeleton_blocker_link.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Skeleton_blocker.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string>
-#include <fstream>
-#include <sstream>
-
-typedef Gudhi::skeleton_blocker::Skeleton_blocker_simple_traits Traits;
-typedef Gudhi::skeleton_blocker::Skeleton_blocker_complex<Traits> Complex;
-typedef Complex::Vertex_handle Vertex_handle;
-typedef Complex::Root_vertex_handle Root_vertex_handle;
-typedef Complex::Simplex Simplex;
-
-int main(int argc, char *argv[]) {
- // build a full complex with 4 vertices and 2^4-1 simplices
-
- // Create a complex with four vertices (0,1,2,3)
- Complex complex;
-
- // Add a tetrahedron to this complex
- Simplex tetrahedron(Vertex_handle(0), Vertex_handle(1), Vertex_handle(2), Vertex_handle(3));
- complex.add_simplex(tetrahedron);
-
- std::cout << "complex:" << complex.to_string() << std::endl;
-
- // build the link of vertex 1, eg a triangle {0,2,3}
- auto link = complex.link(Vertex_handle(1));
- std::cout << "link:" << link.to_string() << std::endl;
-
- // Internally link is a subcomplex of 'complex' and its vertices are stored in a vector.
- // They can be accessed via Vertex_handle(x) where x is an index of the vector.
- // In that example, link has three vertices and thus it contains only
- // Vertex_handle(0),Vertex_handle(1) and Vertex_handle(2) are).
- for (int i = 0; i < 5; ++i)
- std::cout << "link.contains_vertex(Vertex_handle(" << i << ")):" << link.contains_vertex(Vertex_handle(i)) <<
- std::endl;
- std::cout << std::endl;
-
- // To access to the initial vertices eg (0,1,2,3,4), Root_vertex_handle must be used.
- // For instance, to test if the link contains the vertex that was labeled i:
- for (int i = 0; i < 5; ++i)
- std::cout << "link.contains_vertex(Root_vertex_handle(" << i << ")):" <<
- link.contains_vertex(Root_vertex_handle(i)) << std::endl;
-
- return EXIT_SUCCESS;
-}
diff --git a/example/Spatial_searching/CMakeLists.txt b/example/Spatial_searching/CMakeLists.txt
deleted file mode 100644
index 0f799987..00000000
--- a/example/Spatial_searching/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-project(Spatial_searching_examples)
-
-if(NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
- add_executable( Spatial_searching_example_spatial_searching example_spatial_searching.cpp )
- target_link_libraries(Spatial_searching_example_spatial_searching ${CGAL_LIBRARY})
- add_test(NAME Spatial_searching_example_spatial_searching
- COMMAND $<TARGET_FILE:Spatial_searching_example_spatial_searching>)
- install(TARGETS Spatial_searching_example_spatial_searching DESTINATION bin)
-endif(NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
diff --git a/example/Spatial_searching/example_spatial_searching.cpp b/example/Spatial_searching/example_spatial_searching.cpp
deleted file mode 100644
index 034ad24a..00000000
--- a/example/Spatial_searching/example_spatial_searching.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-#include <gudhi/Kd_tree_search.h>
-
-#include <CGAL/Epick_d.h>
-#include <CGAL/Random.h>
-
-#include <vector>
-
-namespace gss = Gudhi::spatial_searching;
-
-int main(void) {
- typedef CGAL::Epick_d<CGAL::Dimension_tag<4> > K;
- typedef typename K::Point_d Point;
- typedef std::vector<Point> Points;
-
- typedef gss::Kd_tree_search<K, Points> Points_ds;
-
- CGAL::Random rd;
-
- Points points;
- for (int i = 0; i < 500; ++i)
- points.push_back(Point(rd.get_double(-1., 1), rd.get_double(-1., 1), rd.get_double(-1., 1), rd.get_double(-1., 1)));
-
- Points_ds points_ds(points);
-
- // 10-nearest neighbor query
- std::cout << "10 nearest neighbors from points[20]:\n";
- auto knn_range = points_ds.k_nearest_neighbors(points[20], 10, true);
- for (auto const& nghb : knn_range)
- std::cout << nghb.first << " (sq. dist. = " << nghb.second << ")\n";
-
- // Incremental nearest neighbor query
- std::cout << "Incremental nearest neighbors:\n";
- auto inn_range = points_ds.incremental_nearest_neighbors(points[45]);
- // Get the neighbors in distance order until we hit the first point
- for (auto ins_iterator = inn_range.begin(); ins_iterator->first != 0; ++ins_iterator)
- std::cout << ins_iterator->first << " (sq. dist. = " << ins_iterator->second << ")\n";
-
- // 10-furthest neighbor query
- std::cout << "10 furthest neighbors from points[20]:\n";
- auto kfn_range = points_ds.k_furthest_neighbors(points[20], 10, true);
- for (auto const& nghb : kfn_range)
- std::cout << nghb.first << " (sq. dist. = " << nghb.second << ")\n";
-
- // Incremental furthest neighbor query
- std::cout << "Incremental furthest neighbors:\n";
- auto ifn_range = points_ds.incremental_furthest_neighbors(points[45]);
- // Get the neighbors in distance reverse order until we hit the first point
- for (auto ifs_iterator = ifn_range.begin(); ifs_iterator->first != 0; ++ifs_iterator)
- std::cout << ifs_iterator->first << " (sq. dist. = " << ifs_iterator->second << ")\n";
-
- // All-near-neighbors search
- std::cout << "All-near-neighbors search:\n";
- std::vector<std::size_t> rs_result;
- points_ds.all_near_neighbors(points[45], 0.5, std::back_inserter(rs_result));
- K k;
- for (auto const& p_idx : rs_result)
- std::cout << p_idx << " (sq. dist. = " << k.squared_distance_d_object()(points[p_idx], points[45]) << ")\n";
-
- return 0;
-}
diff --git a/example/Subsampling/CMakeLists.txt b/example/Subsampling/CMakeLists.txt
deleted file mode 100644
index f26d107f..00000000
--- a/example/Subsampling/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-project(Subsampling_examples)
-
-if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
- add_executable(Subsampling_example_pick_n_random_points example_pick_n_random_points.cpp)
- add_executable(Subsampling_example_choose_n_farthest_points example_choose_n_farthest_points.cpp)
- add_executable(Subsampling_example_custom_kernel example_custom_kernel.cpp)
- add_executable(Subsampling_example_sparsify_point_set example_sparsify_point_set.cpp)
- target_link_libraries(Subsampling_example_sparsify_point_set ${CGAL_LIBRARY})
-
- add_test(NAME Subsampling_example_pick_n_random_points
- COMMAND $<TARGET_FILE:Subsampling_example_pick_n_random_points>)
- add_test(NAME Subsampling_example_choose_n_farthest_points
- COMMAND $<TARGET_FILE:Subsampling_example_choose_n_farthest_points>)
- add_test(NAME Subsampling_example_sparsify_point_set
- COMMAND $<TARGET_FILE:Subsampling_example_sparsify_point_set>)
-
- install(TARGETS Subsampling_example_pick_n_random_points DESTINATION bin)
- install(TARGETS Subsampling_example_choose_n_farthest_points DESTINATION bin)
- install(TARGETS Subsampling_example_custom_kernel DESTINATION bin)
- install(TARGETS Subsampling_example_sparsify_point_set DESTINATION bin)
-
-endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
diff --git a/example/Subsampling/example_choose_n_farthest_points.cpp b/example/Subsampling/example_choose_n_farthest_points.cpp
deleted file mode 100644
index ebf631fc..00000000
--- a/example/Subsampling/example_choose_n_farthest_points.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#include <gudhi/choose_n_farthest_points.h>
-
-#include <CGAL/Epick_d.h>
-#include <CGAL/Random.h>
-
-#include <vector>
-#include <iterator>
-
-int main(void) {
- typedef CGAL::Epick_d<CGAL::Dimension_tag<4> > K;
- typedef typename K::Point_d Point_d;
-
- CGAL::Random rd;
-
- std::vector<Point_d> points;
- for (int i = 0; i < 500; ++i)
- points.push_back(Point_d(rd.get_double(-1., 1), rd.get_double(-1., 1),
- rd.get_double(-1., 1), rd.get_double(-1., 1)));
-
- K k;
- std::vector<Point_d> results;
- Gudhi::subsampling::choose_n_farthest_points(k, points, 100,
- Gudhi::subsampling::random_starting_point,
- std::back_inserter(results));
- std::cout << "Before sparsification: " << points.size() << " points.\n";
- std::cout << "After sparsification: " << results.size() << " points.\n";
-
- return 0;
-}
diff --git a/example/Subsampling/example_custom_kernel.cpp b/example/Subsampling/example_custom_kernel.cpp
deleted file mode 100644
index 2d42bdde..00000000
--- a/example/Subsampling/example_custom_kernel.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-#include <gudhi/choose_n_farthest_points.h>
-
-#include <CGAL/Epick_d.h>
-#include <CGAL/Random.h>
-
-#include <vector>
-#include <iterator>
-
-
-/* The class Kernel contains a distance function defined on the set of points {0, 1, 2, 3}
- * and computes a distance according to the matrix:
- * 0 1 2 4
- * 1 0 4 2
- * 2 4 0 1
- * 4 2 1 0
- */
-class Kernel {
- public:
- typedef double FT;
- typedef unsigned Point_d;
-
- // Class Squared_distance_d
- class Squared_distance_d {
- private:
- std::vector<std::vector<FT>> matrix_;
-
- public:
- Squared_distance_d() {
- matrix_.push_back(std::vector<FT>({0, 1, 2, 4}));
- matrix_.push_back(std::vector<FT>({1, 0, 4, 2}));
- matrix_.push_back(std::vector<FT>({2, 4, 0, 1}));
- matrix_.push_back(std::vector<FT>({4, 2, 1, 0}));
- }
-
- FT operator()(Point_d p1, Point_d p2) {
- return matrix_[p1][p2];
- }
- };
-
- // Constructor
- Kernel() {}
-
- // Object of type Squared_distance_d
- Squared_distance_d squared_distance_d_object() const {
- return Squared_distance_d();
- }
-};
-
-int main(void) {
- typedef Kernel K;
- typedef typename K::Point_d Point_d;
-
- K k;
- std::vector<Point_d> points = {0, 1, 2, 3};
- std::vector<Point_d> results;
-
- Gudhi::subsampling::choose_n_farthest_points(k, points, 2,
- Gudhi::subsampling::random_starting_point,
- std::back_inserter(results));
- std::cout << "Before sparsification: " << points.size() << " points.\n";
- std::cout << "After sparsification: " << results.size() << " points.\n";
- std::cout << "Result table: {" << results[0] << "," << results[1] << "}\n";
-
- return 0;
-}
diff --git a/example/Subsampling/example_pick_n_random_points.cpp b/example/Subsampling/example_pick_n_random_points.cpp
deleted file mode 100644
index 1e38e405..00000000
--- a/example/Subsampling/example_pick_n_random_points.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <gudhi/pick_n_random_points.h>
-
-#include <CGAL/Epick_d.h>
-#include <CGAL/Random.h>
-
-#include <vector>
-#include <iterator>
-
-int main(void) {
- typedef CGAL::Epick_d<CGAL::Dimension_tag<4> > K;
- typedef typename K::Point_d Point_d;
-
- CGAL::Random rd;
-
- std::vector<Point_d> points;
- for (int i = 0; i < 500; ++i)
- points.push_back(Point_d(rd.get_double(-1., 1), rd.get_double(-1., 1),
- rd.get_double(-1., 1), rd.get_double(-1., 1)));
-
- K k;
- std::vector<Point_d> results;
- Gudhi::subsampling::pick_n_random_points(points, 100, std::back_inserter(results));
- std::cout << "Before sparsification: " << points.size() << " points.\n";
- std::cout << "After sparsification: " << results.size() << " points.\n";
-
- return 0;
-}
diff --git a/example/Subsampling/example_sparsify_point_set.cpp b/example/Subsampling/example_sparsify_point_set.cpp
deleted file mode 100644
index b35a18d9..00000000
--- a/example/Subsampling/example_sparsify_point_set.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <gudhi/sparsify_point_set.h>
-
-#include <CGAL/Epick_d.h>
-#include <CGAL/Random.h>
-
-#include <vector>
-#include <iterator>
-
-int main(void) {
- typedef CGAL::Epick_d<CGAL::Dimension_tag<4> > K;
- typedef typename K::Point_d Point_d;
-
- CGAL::Random rd;
-
- std::vector<Point_d> points;
- for (int i = 0; i < 500; ++i)
- points.push_back(Point_d(rd.get_double(-1., 1), rd.get_double(-1., 1),
- rd.get_double(-1., 1), rd.get_double(-1., 1)));
-
- K k;
- std::vector<Point_d> results;
- Gudhi::subsampling::sparsify_point_set(k, points, 0.4, std::back_inserter(results));
- std::cout << "Before sparsification: " << points.size() << " points.\n";
- std::cout << "After sparsification: " << results.size() << " points.\n";
-
- return 0;
-}
diff --git a/example/Tangential_complex/CMakeLists.txt b/example/Tangential_complex/CMakeLists.txt
deleted file mode 100644
index af0dac51..00000000
--- a/example/Tangential_complex/CMakeLists.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-project(Tangential_complex_examples)
-
-if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
- add_executable( Tangential_complex_example_basic example_basic.cpp )
- target_link_libraries(Tangential_complex_example_basic ${CGAL_LIBRARY})
- add_executable( Tangential_complex_example_with_perturb example_with_perturb.cpp )
- target_link_libraries(Tangential_complex_example_with_perturb ${CGAL_LIBRARY})
- if (TBB_FOUND)
- target_link_libraries(Tangential_complex_example_basic ${TBB_LIBRARIES})
- target_link_libraries(Tangential_complex_example_with_perturb ${TBB_LIBRARIES})
- endif(TBB_FOUND)
-
- add_test(NAME Tangential_complex_example_basic
- COMMAND $<TARGET_FILE:Tangential_complex_example_basic>)
- add_test(NAME Tangential_complex_example_with_perturb
- COMMAND $<TARGET_FILE:Tangential_complex_example_with_perturb>)
-
- install(TARGETS Tangential_complex_example_basic DESTINATION bin)
- install(TARGETS Tangential_complex_example_with_perturb DESTINATION bin)
-endif(NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
diff --git a/example/Tangential_complex/example_basic.cpp b/example/Tangential_complex/example_basic.cpp
deleted file mode 100644
index 4f2b859e..00000000
--- a/example/Tangential_complex/example_basic.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include <gudhi/Tangential_complex.h>
-#include <gudhi/sparsify_point_set.h>
-
-#include <CGAL/Epick_d.h>
-#include <CGAL/Random.h>
-
-#include <array>
-#include <vector>
-
-namespace tc = Gudhi::tangential_complex;
-
-typedef CGAL::Epick_d<CGAL::Dynamic_dimension_tag> Kernel;
-typedef Kernel::FT FT;
-typedef Kernel::Point_d Point;
-typedef Kernel::Vector_d Vector;
-typedef tc::Tangential_complex<
-Kernel, CGAL::Dynamic_dimension_tag,
-CGAL::Parallel_tag> TC;
-
-int main(void) {
- const int INTRINSIC_DIM = 2;
- const int AMBIENT_DIM = 3;
- const int NUM_POINTS = 1000;
-
- Kernel k;
-
- // Generate points on a 2-sphere
- CGAL::Random_points_on_sphere_d<Point> generator(AMBIENT_DIM, 3.);
- std::vector<Point> points;
- points.reserve(NUM_POINTS);
- for (int i = 0; i < NUM_POINTS; ++i)
- points.push_back(*generator++);
-
- // Compute the TC
- TC tc(points, INTRINSIC_DIM, k);
- tc.compute_tangential_complex();
-
- // Export the TC into a Simplex_tree
- Gudhi::Simplex_tree<> stree;
- tc.create_complex(stree);
-
- // Display stats about inconsistencies
- tc.number_of_inconsistent_simplices(true); // verbose
-
- return 0;
-}
diff --git a/example/Tangential_complex/example_with_perturb.cpp b/example/Tangential_complex/example_with_perturb.cpp
deleted file mode 100644
index d0d877ea..00000000
--- a/example/Tangential_complex/example_with_perturb.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-#include <gudhi/Tangential_complex.h>
-#include <gudhi/sparsify_point_set.h>
-
-#include <CGAL/Epick_d.h>
-#include <CGAL/Random.h>
-
-#include <array>
-#include <vector>
-
-namespace subsampl = Gudhi::subsampling;
-namespace tc = Gudhi::tangential_complex;
-
-typedef CGAL::Epick_d<CGAL::Dimension_tag < 3 >> Kernel;
-typedef Kernel::FT FT;
-typedef Kernel::Point_d Point;
-typedef Kernel::Vector_d Vector;
-typedef tc::Tangential_complex<
-Kernel, CGAL::Dimension_tag<2>,
-CGAL::Parallel_tag> TC;
-
-int main(void) {
- const int INTRINSIC_DIM = 2;
- const int AMBIENT_DIM = 3;
- const int NUM_POINTS = 50;
-
- Kernel k;
-
- // Generate points on a 2-sphere
- CGAL::Random_points_on_sphere_d<Point> generator(AMBIENT_DIM, 3.);
- std::vector<Point> points;
- points.reserve(NUM_POINTS);
- for (int i = 0; i < NUM_POINTS; ++i)
- points.push_back(*generator++);
-
- // Sparsify the point set
- std::vector<Point> sparsified_points;
- subsampl::sparsify_point_set(k, points, 0.1 * 0.1,
- std::back_inserter(sparsified_points));
- sparsified_points.swap(points);
-
- // Compute the TC
- TC tc(points, INTRINSIC_DIM, k);
- tc.compute_tangential_complex();
-
- // Try to fix inconsistencies. Give it 10 seconds to succeed
- tc.fix_inconsistencies_using_perturbation(0.05, 10);
-
- // Export the TC into a Simplex_tree
- Gudhi::Simplex_tree<> stree;
- tc.create_complex(stree);
-
- return 0;
-}
diff --git a/example/Witness_complex/CMakeLists.txt b/example/Witness_complex/CMakeLists.txt
deleted file mode 100644
index 3d838c0d..00000000
--- a/example/Witness_complex/CMakeLists.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-project(Witness_complex_examples)
-
-add_executable ( Witness_complex_example_nearest_landmark_table example_nearest_landmark_table.cpp )
-if (TBB_FOUND)
- target_link_libraries(Witness_complex_example_nearest_landmark_table ${TBB_LIBRARIES})
-endif()
-add_test(NAME Witness_complex_example_nearest_landmark_table
- COMMAND $<TARGET_FILE:Witness_complex_example_nearest_landmark_table>)
-
-install(TARGETS Witness_complex_example_nearest_landmark_table DESTINATION bin)
-
-# CGAL and Eigen3 are required for Euclidean version of Witness
-if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.6.0)
- add_executable( Witness_complex_example_off example_witness_complex_off.cpp )
- add_executable ( Witness_complex_example_sphere example_witness_complex_sphere.cpp )
-
- add_executable( Witness_complex_example_strong_off example_strong_witness_complex_off.cpp )
- target_link_libraries(Witness_complex_example_strong_off)
-
- add_test(NAME Witness_complex_example_off_test_torus
- COMMAND $<TARGET_FILE:Witness_complex_example_off>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_1307.off" "20" "1.0" "3")
- add_test(NAME Witness_complex_example_test_sphere_10
- COMMAND $<TARGET_FILE:Witness_complex_example_sphere> "10")
- add_test(NAME Witness_complex_example_strong_off_test_torus
- COMMAND $<TARGET_FILE:Witness_complex_example_strong_off>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_1307.off" "20" "1.0" "3")
-
- install(TARGETS Witness_complex_example_off DESTINATION bin)
- install(TARGETS Witness_complex_example_sphere DESTINATION bin)
- install(TARGETS Witness_complex_example_strong_off DESTINATION bin)
-
-
-endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.6.0)
diff --git a/example/Witness_complex/example_nearest_landmark_table.cpp b/example/Witness_complex/example_nearest_landmark_table.cpp
deleted file mode 100644
index acaf7c54..00000000
--- a/example/Witness_complex/example_nearest_landmark_table.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-#define BOOST_PARAMETER_MAX_ARITY 12
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Witness_complex.h>
-#include <gudhi/Persistent_cohomology.h>
-
-#include <iostream>
-#include <fstream>
-#include <utility>
-#include <string>
-#include <vector>
-
-int main(int argc, char * const argv[]) {
- using Nearest_landmark_range = std::vector<std::pair<std::size_t, double>>;
- using Nearest_landmark_table = std::vector<Nearest_landmark_range>;
- using Witness_complex = Gudhi::witness_complex::Witness_complex<Nearest_landmark_table>;
- using Simplex_tree = Gudhi::Simplex_tree<>;
- using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
- using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp>;
-
- Simplex_tree simplex_tree;
- Nearest_landmark_table nlt;
-
- // Example contains 5 witnesses and 5 landmarks
- Nearest_landmark_range w0 = {std::make_pair(0, 0), std::make_pair(1, 1), std::make_pair(2, 2),
- std::make_pair(3, 3), std::make_pair(4, 4)}; nlt.push_back(w0);
- Nearest_landmark_range w1 = {std::make_pair(1, 0), std::make_pair(2, 1), std::make_pair(3, 2),
- std::make_pair(4, 3), std::make_pair(0, 4)}; nlt.push_back(w1);
- Nearest_landmark_range w2 = {std::make_pair(2, 0), std::make_pair(3, 1), std::make_pair(4, 2),
- std::make_pair(0, 3), std::make_pair(1, 4)}; nlt.push_back(w2);
- Nearest_landmark_range w3 = {std::make_pair(3, 0), std::make_pair(4, 1), std::make_pair(0, 2),
- std::make_pair(1, 3), std::make_pair(2, 4)}; nlt.push_back(w3);
- Nearest_landmark_range w4 = {std::make_pair(4, 0), std::make_pair(0, 1), std::make_pair(1, 2),
- std::make_pair(2, 3), std::make_pair(3, 4)}; nlt.push_back(w4);
-
- Witness_complex witness_complex(nlt);
- witness_complex.create_complex(simplex_tree, 4.1);
-
- std::cout << "Number of simplices: " << simplex_tree.num_simplices() << std::endl;
-
- Persistent_cohomology pcoh(simplex_tree);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(11);
-
- pcoh.compute_persistent_cohomology(-0.1);
- pcoh.output_diagram();
-}
diff --git a/example/Witness_complex/example_strong_witness_complex_off.cpp b/example/Witness_complex/example_strong_witness_complex_off.cpp
deleted file mode 100644
index 19f73836..00000000
--- a/example/Witness_complex/example_strong_witness_complex_off.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Euclidean_strong_witness_complex.h>
-#include <gudhi/pick_n_random_points.h>
-#include <gudhi/choose_n_farthest_points.h>
-#include <gudhi/Points_off_io.h>
-
-#include <CGAL/Epick_d.h>
-
-#include <iostream>
-#include <fstream>
-#include <ctime>
-#include <string>
-#include <vector>
-
-using K = CGAL::Epick_d<CGAL::Dynamic_dimension_tag>;
-using Point_d = typename K::Point_d;
-using Witness_complex = Gudhi::witness_complex::Euclidean_strong_witness_complex<K>;
-using Point_vector = std::vector<Point_d>;
-
-int main(int argc, char* const argv[]) {
- if (argc != 5) {
- std::cerr << "Usage: " << argv[0] << " path_to_point_file number_of_landmarks max_squared_alpha limit_dimension\n";
- return 0;
- }
-
- std::string file_name = argv[1];
- int nbL = atoi(argv[2]), lim_dim = atoi(argv[4]);
- double alpha2 = atof(argv[3]);
- clock_t start, end;
- Gudhi::Simplex_tree<> simplex_tree;
-
- // Read the point file
- Point_vector point_vector, landmarks;
- Gudhi::Points_off_reader<Point_d> off_reader(file_name);
- if (!off_reader.is_valid()) {
- std::cerr << "Strong witness complex - Unable to read file " << file_name << "\n";
- exit(-1); // ----- >>
- }
- point_vector = Point_vector(off_reader.get_point_cloud());
-
- std::cout << "Successfully read " << point_vector.size() << " points.\n";
- std::cout << "Ambient dimension is " << point_vector[0].dimension() << ".\n";
-
- // Choose landmarks (decomment one of the following two lines)
- // Gudhi::subsampling::pick_n_random_points(point_vector, nbL, std::back_inserter(landmarks));
- Gudhi::subsampling::choose_n_farthest_points(K(), point_vector, nbL, Gudhi::subsampling::random_starting_point,
- std::back_inserter(landmarks));
-
- // Compute witness complex
- start = clock();
- Witness_complex witness_complex(landmarks, point_vector);
-
- witness_complex.create_complex(simplex_tree, alpha2, lim_dim);
- end = clock();
- std::cout << "Strong witness complex took " << static_cast<double>(end - start) / CLOCKS_PER_SEC << " s. \n";
- std::cout << "Number of simplices is: " << simplex_tree.num_simplices() << "\n";
-}
diff --git a/example/Witness_complex/example_witness_complex_off.cpp b/example/Witness_complex/example_witness_complex_off.cpp
deleted file mode 100644
index be11c955..00000000
--- a/example/Witness_complex/example_witness_complex_off.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Euclidean_witness_complex.h>
-#include <gudhi/pick_n_random_points.h>
-#include <gudhi/choose_n_farthest_points.h>
-#include <gudhi/Points_off_io.h>
-
-#include <CGAL/Epick_d.h>
-
-#include <iostream>
-#include <fstream>
-#include <ctime>
-#include <string>
-#include <vector>
-
-using K = CGAL::Epick_d<CGAL::Dynamic_dimension_tag>;
-using Point_d = K::Point_d;
-using Witness_complex = Gudhi::witness_complex::Euclidean_witness_complex<K>;
-using Point_vector = std::vector< Point_d >;
-
-int main(int argc, char * const argv[]) {
- if (argc != 5) {
- std::cerr << "Usage: " << argv[0]
- << " path_to_point_file number_of_landmarks max_squared_alpha limit_dimension\n";
- return 0;
- }
-
- std::string file_name = argv[1];
- int nbL = atoi(argv[2]), lim_dim = atoi(argv[4]);
- double alpha2 = atof(argv[3]);
- clock_t start, end;
- Gudhi::Simplex_tree<> simplex_tree;
-
- // Read the point file
- Point_vector point_vector, landmarks;
- Gudhi::Points_off_reader<Point_d> off_reader(file_name);
- if (!off_reader.is_valid()) {
- std::cerr << "Witness complex - Unable to read file " << file_name << "\n";
- exit(-1); // ----- >>
- }
- point_vector = Point_vector(off_reader.get_point_cloud());
-
- std::cout << "Successfully read " << point_vector.size() << " points.\n";
- std::cout << "Ambient dimension is " << point_vector[0].dimension() << ".\n";
-
- // Choose landmarks (decomment one of the following two lines)
- // Gudhi::subsampling::pick_n_random_points(point_vector, nbL, std::back_inserter(landmarks));
- Gudhi::subsampling::choose_n_farthest_points(K(), point_vector, nbL, Gudhi::subsampling::random_starting_point, std::back_inserter(landmarks));
-
- // Compute witness complex
- start = clock();
- Witness_complex witness_complex(landmarks,
- point_vector);
-
- witness_complex.create_complex(simplex_tree, alpha2, lim_dim);
- end = clock();
- std::cout << "Witness complex took "
- << static_cast<double>(end - start) / CLOCKS_PER_SEC << " s. \n";
- std::cout << "Number of simplices is: " << simplex_tree.num_simplices() << "\n";
-}
diff --git a/example/Witness_complex/example_witness_complex_sphere.cpp b/example/Witness_complex/example_witness_complex_sphere.cpp
deleted file mode 100644
index 9e3c972d..00000000
--- a/example/Witness_complex/example_witness_complex_sphere.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#define BOOST_PARAMETER_MAX_ARITY 12
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Euclidean_witness_complex.h>
-#include <gudhi/pick_n_random_points.h>
-#include <gudhi/choose_n_farthest_points.h>
-#include <gudhi/reader_utils.h>
-
-#include <CGAL/Epick_d.h>
-
-#include <iostream>
-#include <fstream>
-#include <ctime>
-#include <utility>
-#include <string>
-#include <vector>
-
-#include "generators.h"
-
-/** Write a gnuplot readable file.
- * Data range is a random access range of pairs (arg, value)
- */
-template <typename Data_range>
-void write_data(Data_range& data, std::string filename) {
- std::ofstream ofs(filename, std::ofstream::out);
- for (auto entry : data) ofs << entry.first << ", " << entry.second << "\n";
- ofs.close();
-}
-
-int main(int argc, char* const argv[]) {
- using Kernel = CGAL::Epick_d<CGAL::Dynamic_dimension_tag>;
- using Witness_complex = Gudhi::witness_complex::Euclidean_witness_complex<Kernel>;
-
- if (argc != 2) {
- std::cerr << "Usage: " << argv[0] << " number_of_landmarks \n";
- return 0;
- }
-
- int number_of_landmarks = atoi(argv[1]);
-
- std::vector<std::pair<int, double> > l_time;
-
- // Generate points
- for (int nbP = 500; nbP < 10000; nbP += 500) {
- clock_t start, end;
- // Construct the Simplex Tree
- Gudhi::Simplex_tree<> simplex_tree;
- Point_Vector point_vector, landmarks;
- generate_points_sphere(point_vector, nbP, 4);
- std::cout << "Successfully generated " << point_vector.size() << " points.\n";
- std::cout << "Ambient dimension is " << point_vector[0].size() << ".\n";
-
- // Choose landmarks
- start = clock();
- // Gudhi::subsampling::pick_n_random_points(point_vector, number_of_landmarks, std::back_inserter(landmarks));
- Gudhi::subsampling::choose_n_farthest_points(K(), point_vector, number_of_landmarks,
- Gudhi::subsampling::random_starting_point,
- std::back_inserter(landmarks));
-
- // Compute witness complex
- Witness_complex witness_complex(landmarks, point_vector);
- witness_complex.create_complex(simplex_tree, 0);
- end = clock();
- double time = static_cast<double>(end - start) / CLOCKS_PER_SEC;
- std::cout << "Witness complex for " << number_of_landmarks << " landmarks took " << time << " s. \n";
- std::cout << "Number of simplices is: " << simplex_tree.num_simplices() << "\n";
- l_time.push_back(std::make_pair(nbP, time));
- }
- write_data(l_time, "w_time.dat");
-}
diff --git a/example/Witness_complex/generators.h b/example/Witness_complex/generators.h
deleted file mode 100644
index 4b755daa..00000000
--- a/example/Witness_complex/generators.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Siargey Kachanovich
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GENERATORS_H_
-#define GENERATORS_H_
-
-#include <CGAL/Epick_d.h>
-#include <CGAL/point_generators_d.h>
-#include <CGAL/Random.h>
-
-#include <fstream>
-#include <string>
-#include <vector>
-#include <cmath>
-
-using K = CGAL::Epick_d<CGAL::Dynamic_dimension_tag>;
-using FT = K::FT;
-using Point_d = K::Point_d;
-using Point_Vector = std::vector<Point_d>;
-using Random_cube_iterator = CGAL::Random_points_in_cube_d<Point_d>;
-using Random_point_iterator = CGAL::Random_points_in_ball_d<Point_d>;
-
-/**
- * \brief Rock age method of reading off file
- *
- */
-inline void
-off_reader_cust(std::string file_name, std::vector<Point_d> & points) {
- std::ifstream in_file(file_name.c_str(), std::ios::in);
- if (!in_file.is_open()) {
- std::cerr << "Unable to open file " << file_name << std::endl;
- return;
- }
- std::string line;
- double x;
- // Line OFF. No need in it
- if (!getline(in_file, line)) {
- std::cerr << "No line OFF\n";
- return;
- }
- // Line with 3 numbers. No need
- if (!getline(in_file, line)) {
- std::cerr << "No line with 3 numbers\n";
- return;
- }
- // Reading points
- while (getline(in_file, line)) {
- std::vector< double > point;
- std::istringstream iss(line);
- while (iss >> x) {
- point.push_back(x);
- }
- points.push_back(Point_d(point));
- }
- in_file.close();
-}
-
-/**
- * \brief Customized version of read_points
- * which takes into account a possible nbP first line
- *
- */
-inline void
-read_points_cust(std::string file_name, Point_Vector & points) {
- std::ifstream in_file(file_name.c_str(), std::ios::in);
- if (!in_file.is_open()) {
- std::cerr << "Unable to open file " << file_name << std::endl;
- return;
- }
- std::string line;
- double x;
- while (getline(in_file, line)) {
- std::vector< double > point;
- std::istringstream iss(line);
- while (iss >> x) {
- point.push_back(x);
- }
- Point_d p(point.begin(), point.end());
- if (point.size() != 1)
- points.push_back(p);
- }
- in_file.close();
-}
-
-/** \brief Generate points on a grid in a cube of side 2
- * having {+-1}^D as vertices and insert them in W.
- * The grid has "width" points on each side.
- * If torus is true then it is supposed that the cube represents
- * a flat torus, hence the opposite borders are associated.
- * The points on border in this case are not placed twice.
- */
-void generate_points_grid(Point_Vector& W, int width, int D, bool torus) {
- int nb_points = 1;
- for (int i = 0; i < D; ++i)
- nb_points *= width;
- for (int i = 0; i < nb_points; ++i) {
- std::vector<double> point;
- int cell_i = i;
- for (int l = 0; l < D; ++l) {
- if (torus)
- point.push_back(-1 + (2.0 / (width - 1))*(cell_i % width));
- else
- point.push_back(-1 + (2.0 / width)*(cell_i % width));
- // attention: the bottom and the right are covered too!
- cell_i /= width;
- }
- W.push_back(point);
- }
-}
-
-/** \brief Generate nbP points uniformly in a cube of side 2
- * having {+-1}^dim as its vertices and insert them in W.
- */
-void generate_points_random_box(Point_Vector& W, int nbP, int dim) {
- Random_cube_iterator rp(dim, 1.0);
- for (int i = 0; i < nbP; i++) {
- W.push_back(*rp++);
- }
-}
-
-/** \brief Generate nbP points uniformly on a (dim-1)-sphere
- * and insert them in W.
- */
-void generate_points_sphere(Point_Vector& W, int nbP, int dim) {
- CGAL::Random_points_on_sphere_d<Point_d> rp(dim, 1);
- for (int i = 0; i < nbP; i++)
- W.push_back(*rp++);
-}
-
-/** \brief Generate nbP points on a (flat) d-torus embedded in R^{2d}
- *
- */
-void generate_points_torus(Point_Vector& W, int nbP, int dim) {
- CGAL::Random rand;
- const double pi = std::acos(-1);
- for (int i = 0; i < nbP; i++) {
- std::vector<FT> point;
- for (int j = 0; j < dim; j++) {
- double alpha = rand.uniform_real(static_cast<double>(0), 2*pi);
- point.push_back(sin(alpha));
- point.push_back(cos(alpha));
- }
- W.push_back(Point_d(point));
- }
-}
-
-#endif // GENERATORS_H_
diff --git a/example/common/CMakeLists.txt b/example/common/CMakeLists.txt
deleted file mode 100644
index 04015cdc..00000000
--- a/example/common/CMakeLists.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-project(Common_examples)
-
-add_executable ( vector_double_off_reader example_vector_double_points_off_reader.cpp )
-target_link_libraries(vector_double_off_reader ${CGAL_LIBRARY})
-file(COPY "${CMAKE_SOURCE_DIR}/data/points/alphacomplexdoc.off" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
-add_test(NAME Common_example_vector_double_off_reader COMMAND $<TARGET_FILE:vector_double_off_reader>
- "alphacomplexdoc.off")
-
-install(TARGETS vector_double_off_reader DESTINATION bin)
-
-if (DIFF_PATH)
- # Do not forget to copy test results files in current binary dir
- file(COPY "vectordoubleoffreader_result.txt" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
-
- add_test(Common_example_vector_double_off_reader_diff_files ${DIFF_PATH}
- ${CMAKE_CURRENT_BINARY_DIR}/vectordoubleoffreader_result.txt ${CMAKE_CURRENT_BINARY_DIR}/alphacomplexdoc.off.txt)
-endif()
-
-if(CGAL_FOUND)
- add_executable ( cgal_3D_off_reader example_CGAL_3D_points_off_reader.cpp )
- target_link_libraries(cgal_3D_off_reader ${CGAL_LIBRARY})
- add_test(NAME Common_example_vector_cgal_3D_off_reader COMMAND $<TARGET_FILE:cgal_3D_off_reader>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off")
-
- install(TARGETS cgal_3D_off_reader DESTINATION bin)
-
- # need CGAL 4.7 and Eigen3
- if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.7.0)
- add_executable ( cgal_off_reader example_CGAL_points_off_reader.cpp )
- target_link_libraries(cgal_off_reader ${CGAL_LIBRARY})
- add_test(NAME Common_example_vector_cgal_off_reader COMMAND $<TARGET_FILE:cgal_off_reader>
- "${CMAKE_SOURCE_DIR}/data/points/alphacomplexdoc.off")
- install(TARGETS cgal_off_reader DESTINATION bin)
- endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.7.0)
-
-endif()
diff --git a/example/common/cgal3Doffreader_result.txt b/example/common/cgal3Doffreader_result.txt
deleted file mode 100644
index f992c8e3..00000000
--- a/example/common/cgal3Doffreader_result.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Point[1] = (0.959535, -0.418347, 0.302237)
-Point[2] = (2.16795, 1.85348, -0.52312)
-Point[3] = (-2.38753, -1.50911, -0.565889)
-Point[4] = (-2.70428, -1.25688, 0.188394)
-Point[5] = (-1.22932, -1.64337, -0.998632)
-...
-Point[300] = (-0.56244, 2.6018, -0.749591)
-
diff --git a/example/common/example_CGAL_3D_points_off_reader.cpp b/example/common/example_CGAL_3D_points_off_reader.cpp
deleted file mode 100644
index 4658d8d5..00000000
--- a/example/common/example_CGAL_3D_points_off_reader.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#include <gudhi/Points_3D_off_io.h>
-
-#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
-
-#include <iostream>
-#include <string>
-#include <vector>
-
-using Kernel = CGAL::Exact_predicates_inexact_constructions_kernel;
-using Point_3 = Kernel::Point_3;
-
-void usage(char * const progName) {
- std::cerr << "Usage: " << progName << " inputFile.off" << std::endl;
- exit(-1);
-}
-
-int main(int argc, char **argv) {
- if (argc != 2) {
- std::cerr << "Error: Number of arguments (" << argc << ") is not correct" << std::endl;
- usage(argv[0]);
- }
-
- std::string off_input_file(argv[1]);
- // Read the OFF file (input file name given as parameter) and triangulate points
- Gudhi::Points_3D_off_reader<Point_3> off_reader(off_input_file);
- // Check the read operation was correct
- if (!off_reader.is_valid()) {
- std::cerr << "Unable to read file " << off_input_file << std::endl;
- usage(argv[0]);
- }
-
- // Retrieve the triangulation
- std::vector<Point_3> point_cloud = off_reader.get_point_cloud();
-
- int n {};
- for (auto point : point_cloud) {
- ++n;
- std::cout << "Point[" << n << "] = (" << point[0] << ", " << point[1] << ", " << point[2] << ")\n";
- }
- return 0;
-}
diff --git a/example/common/example_CGAL_points_off_reader.cpp b/example/common/example_CGAL_points_off_reader.cpp
deleted file mode 100644
index f45683a5..00000000
--- a/example/common/example_CGAL_points_off_reader.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include <gudhi/Points_off_io.h>
-
-// For CGAL points type in dimension d
-// cf. http://doc.cgal.org/latest/Kernel_d/classCGAL_1_1Point__d.html
-#include <CGAL/Epick_d.h>
-
-#include <iostream>
-#include <string>
-#include <vector>
-
-using Kernel = CGAL::Epick_d< CGAL::Dynamic_dimension_tag >;
-using Point_d = Kernel::Point_d;
-
-void usage(char * const progName) {
- std::cerr << "Usage: " << progName << " inputFile.off" << std::endl;
- exit(-1);
-}
-
-int main(int argc, char **argv) {
- if (argc != 2) {
- std::cerr << "Error: Number of arguments (" << argc << ") is not correct" << std::endl;
- usage(argv[0]);
- }
-
- std::string off_input_file(argv[1]);
- // Read the OFF file (input file name given as parameter) and triangulate points
- Gudhi::Points_off_reader<Point_d> off_reader(off_input_file);
- // Check the read operation was correct
- if (!off_reader.is_valid()) {
- std::cerr << "Unable to read file " << off_input_file << std::endl;
- usage(argv[0]);
- }
-
- // Retrieve the triangulation
- std::vector<Point_d> point_cloud = off_reader.get_point_cloud();
-
- int n {};
- for (auto point : point_cloud) {
- std::cout << "Point[" << n << "] = ";
- for (std::size_t i {0}; i < point.size(); i++)
- std::cout << point[i] << " ";
- std::cout << "\n";
- ++n;
- }
- return 0;
-}
diff --git a/example/common/example_vector_double_points_off_reader.cpp b/example/common/example_vector_double_points_off_reader.cpp
deleted file mode 100644
index 5093da85..00000000
--- a/example/common/example_vector_double_points_off_reader.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <gudhi/Points_off_io.h>
-
-#include <iostream>
-#include <string>
-#include <vector>
-
-using Point_d = std::vector<double>;
-
-void usage(char * const progName) {
- std::cerr << "Usage: " << progName << " inputFile.off" << std::endl;
- exit(-1);
-}
-
-int main(int argc, char **argv) {
- if (argc != 2) {
- std::cerr << "Error: Number of arguments (" << argc << ") is not correct" << std::endl;
- usage(argv[0]);
- }
-
- std::string off_input_file(argv[1]);
- // Read the OFF file (input file name given as parameter) and triangulate points
- Gudhi::Points_off_reader<Point_d> off_reader(off_input_file);
- // Check the read operation was correct
- if (!off_reader.is_valid()) {
- std::cerr << "Unable to read file " << off_input_file << std::endl;
- usage(argv[0]);
- }
-
- // Retrieve the triangulation
- std::vector<Point_d> point_cloud = off_reader.get_point_cloud();
-
- std::ofstream output_file(off_input_file + ".txt");
- int n {0};
- for (auto point : point_cloud) {
- output_file << "Point[" << n << "] = ";
- for (std::size_t i {0}; i < point.size(); i++)
- output_file << point[i] << " ";
- output_file << "\n";
- ++n;
- }
- output_file.close();
- return 0;
-}
diff --git a/example/common/vectordoubleoffreader_result.txt b/example/common/vectordoubleoffreader_result.txt
deleted file mode 100644
index 1deb8dbd..00000000
--- a/example/common/vectordoubleoffreader_result.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Point[0] = 1 1
-Point[1] = 7 0
-Point[2] = 4 6
-Point[3] = 9 6
-Point[4] = 0 14
-Point[5] = 2 19
-Point[6] = 9 17
diff --git a/include/gudhi/Active_witness/Active_witness.h b/include/gudhi/Active_witness/Active_witness.h
deleted file mode 100644
index 8cb8662b..00000000
--- a/include/gudhi/Active_witness/Active_witness.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Siargey Kachanovich
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef ACTIVE_WITNESS_ACTIVE_WITNESS_H_
-#define ACTIVE_WITNESS_ACTIVE_WITNESS_H_
-
-#include <gudhi/Active_witness/Active_witness_iterator.h>
-#include <list>
-
-namespace Gudhi {
-
-namespace witness_complex {
-
- /* \class Active_witness
- * \brief Class representing a list of nearest neighbors to a given witness.
- * \details Every element is a pair of a landmark identifier and the squared distance to it.
- */
-template< typename Id_distance_pair,
- typename INS_range >
-class Active_witness {
- public:
- typedef Active_witness<Id_distance_pair, INS_range> ActiveWitness;
- typedef typename INS_range::iterator INS_iterator;
- typedef Active_witness_iterator< ActiveWitness, Id_distance_pair, INS_iterator > iterator;
- typedef typename std::list<Id_distance_pair> Table;
-
- Table nearest_landmark_table_;
- INS_range search_range_;
- INS_iterator iterator_next_;
- INS_iterator iterator_end_;
-
- Active_witness(const INS_range& search_range)
- : search_range_(search_range), iterator_next_(search_range_.begin()), iterator_end_(search_range_.end()) {
- }
-
- iterator begin() {
- return iterator(this, nearest_landmark_table_.begin());
- }
-
- iterator end() {
- return iterator(this);
- }
-};
-
-} // namespace witness_complex
-} // namespace Gudhi
-
-#endif // ACTIVE_WITNESS_ACTIVE_WITNESS_H_
diff --git a/include/gudhi/Active_witness/Active_witness_iterator.h b/include/gudhi/Active_witness/Active_witness_iterator.h
deleted file mode 100644
index 10d2ec52..00000000
--- a/include/gudhi/Active_witness/Active_witness_iterator.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Siargey Kachanovich
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef ACTIVE_WITNESS_ACTIVE_WITNESS_ITERATOR_H_
-#define ACTIVE_WITNESS_ACTIVE_WITNESS_ITERATOR_H_
-
-#include <boost/iterator/iterator_facade.hpp>
-#include <list>
-
-namespace Gudhi {
-
-namespace witness_complex {
-
-/* \brief Iterator in the nearest landmark list.
- * \details After the iterator reaches the end of the list,
- * the list is augmented by a (nearest landmark, distance) pair if possible.
- * If all the landmarks are present in the list, iterator returns the specific end value
- * of the corresponding 'Active_witness' object.
- */
-template< typename Active_witness,
- typename Id_distance_pair,
- typename INS_iterator >
-class Active_witness_iterator
- : public boost::iterator_facade< Active_witness_iterator <Active_witness, Id_distance_pair, INS_iterator>,
- Id_distance_pair const,
- boost::forward_traversal_tag,
- Id_distance_pair const> {
- friend class boost::iterator_core_access;
-
- typedef typename std::list<Id_distance_pair>::iterator Pair_iterator;
- typedef typename Gudhi::witness_complex::Active_witness_iterator<Active_witness,
- Id_distance_pair,
- INS_iterator> Iterator;
-
- Active_witness *aw_;
- Pair_iterator lh_; // landmark handle
- bool is_end_; // true only if the pointer is end and there are no more neighbors to add
-
- public:
- Active_witness_iterator(Active_witness* aw)
- : aw_(aw), lh_(aw_->nearest_landmark_table_.end()), is_end_(true) {
- }
-
- Active_witness_iterator(Active_witness* aw, const Pair_iterator& lh)
- : aw_(aw), lh_(lh) {
- is_end_ = false;
- if (lh_ == aw_->nearest_landmark_table_.end()) {
- if (aw_->iterator_next_ == aw_->iterator_end_) {
- is_end_ = true;
- } else {
- aw_->nearest_landmark_table_.push_back(*aw_->iterator_next_);
- lh_ = --aw_->nearest_landmark_table_.end();
- ++(aw_->iterator_next_);
- }
- }
- }
-
- private :
- Id_distance_pair& dereference() const {
- return *lh_;
- }
-
- bool equal(const Iterator& other) const {
- return (is_end_ == other.is_end_) || (lh_ == other.lh_);
- }
-
- void increment() {
- // the neighbor search can't be at the end iterator of a list
- GUDHI_CHECK(!is_end_ && lh_ != aw_->nearest_landmark_table_.end(),
- std::logic_error("Wrong active witness increment."));
- // if the id of the current landmark is the same as the last one
-
- lh_++;
- if (lh_ == aw_->nearest_landmark_table_.end()) {
- if (aw_->iterator_next_ == aw_->iterator_end_) {
- is_end_ = true;
- } else {
- aw_->nearest_landmark_table_.push_back(*aw_->iterator_next_);
- lh_ = std::prev(aw_->nearest_landmark_table_.end());
- ++(aw_->iterator_next_);
- }
- }
- }
-};
-
-} // namespace witness_complex
-} // namespace Gudhi
-
-#endif // ACTIVE_WITNESS_ACTIVE_WITNESS_ITERATOR_H_
diff --git a/include/gudhi/Alpha_complex.h b/include/gudhi/Alpha_complex.h
deleted file mode 100644
index 4c07eddb..00000000
--- a/include/gudhi/Alpha_complex.h
+++ /dev/null
@@ -1,434 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef ALPHA_COMPLEX_H_
-#define ALPHA_COMPLEX_H_
-
-#include <gudhi/Debug_utils.h>
-// to construct Alpha_complex from a OFF file of points
-#include <gudhi/Points_off_io.h>
-
-#include <stdlib.h>
-#include <math.h> // isnan, fmax
-
-#include <CGAL/Delaunay_triangulation.h>
-#include <CGAL/Epick_d.h>
-#include <CGAL/Spatial_sort_traits_adapter_d.h>
-#include <CGAL/property_map.h> // for CGAL::Identity_property_map
-#include <CGAL/NT_converter.h>
-
-#include <iostream>
-#include <vector>
-#include <string>
-#include <limits> // NaN
-#include <map>
-#include <utility> // std::pair
-#include <stdexcept>
-#include <numeric> // for std::iota
-
-namespace Gudhi {
-
-namespace alpha_complex {
-
-/**
- * \class Alpha_complex Alpha_complex.h gudhi/Alpha_complex.h
- * \brief Alpha complex data structure.
- *
- * \ingroup alpha_complex
- *
- * \details
- * The data structure is constructing a CGAL Delaunay triangulation (for more informations on CGAL Delaunay
- * triangulation, please refer to the corresponding chapter in page http://doc.cgal.org/latest/Triangulation/) from a
- * range of points or from an OFF file (cf. Points_off_reader).
- *
- * Please refer to \ref alpha_complex for examples.
- *
- * The complex is a template class requiring an Epick_d <a target="_blank"
- * href="http://doc.cgal.org/latest/Kernel_d/index.html#Chapter_dD_Geometry_Kernel">dD Geometry Kernel</a>
- * \cite cgal:s-gkd-15b from CGAL as template, default value is <a target="_blank"
- * href="http://doc.cgal.org/latest/Kernel_d/classCGAL_1_1Epick__d.html">CGAL::Epick_d</a>
- * < <a target="_blank" href="http://doc.cgal.org/latest/Kernel_23/classCGAL_1_1Dynamic__dimension__tag.html">
- * CGAL::Dynamic_dimension_tag </a> >
- *
- * \remark When Alpha_complex is constructed with an infinite value of alpha, the complex is a Delaunay complex.
- *
- */
-template<class Kernel = CGAL::Epick_d<CGAL::Dynamic_dimension_tag>>
-class Alpha_complex {
- public:
- // Add an int in TDS to save point index in the structure
- typedef CGAL::Triangulation_data_structure<typename Kernel::Dimension,
- CGAL::Triangulation_vertex<Kernel, std::ptrdiff_t>,
- CGAL::Triangulation_full_cell<Kernel> > TDS;
- /** \brief A Delaunay triangulation of a set of points in \f$ \mathbb{R}^D\f$.*/
- typedef CGAL::Delaunay_triangulation<Kernel, TDS> Delaunay_triangulation;
-
- /** \brief A point in Euclidean space.*/
- typedef typename Kernel::Point_d Point_d;
- /** \brief Geometric traits class that provides the geometric types and predicates needed by Delaunay
- * triangulations.*/
- typedef Kernel Geom_traits;
-
- private:
- typedef typename Kernel::Compute_squared_radius_d Squared_Radius;
- typedef typename Kernel::Side_of_bounded_sphere_d Is_Gabriel;
- typedef typename Kernel::Point_dimension_d Point_Dimension;
-
- // Type required to compute squared radius, or side of bounded sphere on a vector of points.
- typedef typename std::vector<Point_d> Vector_of_CGAL_points;
-
- // Vertex_iterator type from CGAL.
- typedef typename Delaunay_triangulation::Vertex_iterator CGAL_vertex_iterator;
-
- // size_type type from CGAL.
- typedef typename Delaunay_triangulation::size_type size_type;
-
- // Map type to switch from simplex tree vertex handle to CGAL vertex iterator.
- typedef typename std::map< std::size_t, CGAL_vertex_iterator > Vector_vertex_iterator;
-
- private:
- /** \brief Vertex iterator vector to switch from simplex tree vertex handle to CGAL vertex iterator.
- * Vertex handles are inserted sequentially, starting at 0.*/
- Vector_vertex_iterator vertex_handle_to_iterator_;
- /** \brief Pointer on the CGAL Delaunay triangulation.*/
- Delaunay_triangulation* triangulation_;
- /** \brief Kernel for triangulation_ functions access.*/
- Kernel kernel_;
-
- public:
- /** \brief Alpha_complex constructor from an OFF file name.
- *
- * Uses the Points_off_reader to construct the Delaunay triangulation required to initialize
- * the Alpha_complex.
- *
- * Duplicate points are inserted once in the Alpha_complex. This is the reason why the vertices may be not contiguous.
- *
- * @param[in] off_file_name OFF file [path and] name.
- */
- Alpha_complex(const std::string& off_file_name)
- : triangulation_(nullptr) {
- Gudhi::Points_off_reader<Point_d> off_reader(off_file_name);
- if (!off_reader.is_valid()) {
- std::cerr << "Alpha_complex - Unable to read file " << off_file_name << "\n";
- exit(-1); // ----- >>
- }
-
- init_from_range(off_reader.get_point_cloud());
- }
-
- /** \brief Alpha_complex constructor from a list of points.
- *
- * Duplicate points are inserted once in the Alpha_complex. This is the reason why the vertices may be not contiguous.
- *
- * @param[in] points Range of points to triangulate. Points must be in Kernel::Point_d
- *
- * The type InputPointRange must be a range for which std::begin and
- * std::end return input iterators on a Kernel::Point_d.
- */
- template<typename InputPointRange >
- Alpha_complex(const InputPointRange& points)
- : triangulation_(nullptr) {
- init_from_range(points);
- }
-
- /** \brief Alpha_complex destructor deletes the Delaunay triangulation.
- */
- ~Alpha_complex() {
- delete triangulation_;
- }
-
- // Forbid copy/move constructor/assignment operator
- Alpha_complex(const Alpha_complex& other) = delete;
- Alpha_complex& operator= (const Alpha_complex& other) = delete;
- Alpha_complex (Alpha_complex&& other) = delete;
- Alpha_complex& operator= (Alpha_complex&& other) = delete;
-
- /** \brief get_point returns the point corresponding to the vertex given as parameter.
- *
- * @param[in] vertex Vertex handle of the point to retrieve.
- * @return The point found.
- * @exception std::out_of_range In case vertex is not found (cf. std::vector::at).
- */
- const Point_d& get_point(std::size_t vertex) const {
- return vertex_handle_to_iterator_.at(vertex)->point();
- }
-
- /** \brief number_of_vertices returns the number of vertices (same as the number of points).
- *
- * @return The number of vertices.
- */
- std::size_t number_of_vertices() const {
- return vertex_handle_to_iterator_.size();
- }
-
- private:
- template<typename InputPointRange >
- void init_from_range(const InputPointRange& points) {
- auto first = std::begin(points);
- auto last = std::end(points);
-
- if (first != last) {
- // point_dimension function initialization
- Point_Dimension point_dimension = kernel_.point_dimension_d_object();
-
- // Delaunay triangulation is point dimension.
- triangulation_ = new Delaunay_triangulation(point_dimension(*first));
-
- std::vector<Point_d> point_cloud(first, last);
-
- // Creates a vector {0, 1, ..., N-1}
- std::vector<std::ptrdiff_t> indices(boost::counting_iterator<std::ptrdiff_t>(0),
- boost::counting_iterator<std::ptrdiff_t>(point_cloud.size()));
-
- typedef boost::iterator_property_map<typename std::vector<Point_d>::iterator,
- CGAL::Identity_property_map<std::ptrdiff_t>> Point_property_map;
- typedef CGAL::Spatial_sort_traits_adapter_d<Kernel, Point_property_map> Search_traits_d;
-
- CGAL::spatial_sort(indices.begin(), indices.end(), Search_traits_d(std::begin(point_cloud)));
-
- typename Delaunay_triangulation::Full_cell_handle hint;
- for (auto index : indices) {
- typename Delaunay_triangulation::Vertex_handle pos = triangulation_->insert(point_cloud[index], hint);
- // Save index value as data to retrieve it after insertion
- pos->data() = index;
- hint = pos->full_cell();
- }
- // --------------------------------------------------------------------------------------------
- // double map to retrieve simplex tree vertex handles from CGAL vertex iterator and vice versa
- // Loop on triangulation vertices list
- for (CGAL_vertex_iterator vit = triangulation_->vertices_begin(); vit != triangulation_->vertices_end(); ++vit) {
- if (!triangulation_->is_infinite(*vit)) {
-#ifdef DEBUG_TRACES
- std::cout << "Vertex insertion - " << vit->data() << " -> " << vit->point() << std::endl;
-#endif // DEBUG_TRACES
- vertex_handle_to_iterator_.emplace(vit->data(), vit);
- }
- }
- // --------------------------------------------------------------------------------------------
- }
- }
-
- public:
- template <typename SimplicialComplexForAlpha>
- bool create_complex(SimplicialComplexForAlpha& complex) {
- typedef typename SimplicialComplexForAlpha::Filtration_value Filtration_value;
- return create_complex(complex, std::numeric_limits<Filtration_value>::infinity());
- }
-
- /** \brief Inserts all Delaunay triangulation into the simplicial complex.
- * It also computes the filtration values accordingly to the \ref createcomplexalgorithm
- *
- * \tparam SimplicialComplexForAlpha must meet `SimplicialComplexForAlpha` concept.
- *
- * @param[in] complex SimplicialComplexForAlpha to be created.
- * @param[in] max_alpha_square maximum for alpha square value. Default value is +\f$\infty\f$.
- *
- * @return true if creation succeeds, false otherwise.
- *
- * @pre Delaunay triangulation must be already constructed with dimension strictly greater than 0.
- * @pre The simplicial complex must be empty (no vertices)
- *
- * Initialization can be launched once.
- */
- template <typename SimplicialComplexForAlpha, typename Filtration_value>
- bool create_complex(SimplicialComplexForAlpha& complex, Filtration_value max_alpha_square) {
- // From SimplicialComplexForAlpha type required to insert into a simplicial complex (with or without subfaces).
- typedef typename SimplicialComplexForAlpha::Vertex_handle Vertex_handle;
- typedef typename SimplicialComplexForAlpha::Simplex_handle Simplex_handle;
- typedef std::vector<Vertex_handle> Vector_vertex;
-
- if (triangulation_ == nullptr) {
- std::cerr << "Alpha_complex cannot create_complex from a NULL triangulation\n";
- return false; // ----- >>
- }
- if (triangulation_->maximal_dimension() < 1) {
- std::cerr << "Alpha_complex cannot create_complex from a zero-dimension triangulation\n";
- return false; // ----- >>
- }
- if (complex.num_vertices() > 0) {
- std::cerr << "Alpha_complex create_complex - complex is not empty\n";
- return false; // ----- >>
- }
-
- // --------------------------------------------------------------------------------------------
- // Simplex_tree construction from loop on triangulation finite full cells list
- if (triangulation_->number_of_vertices() > 0) {
- for (auto cit = triangulation_->finite_full_cells_begin(); cit != triangulation_->finite_full_cells_end(); ++cit) {
- Vector_vertex vertexVector;
-#ifdef DEBUG_TRACES
- std::cout << "Simplex_tree insertion ";
-#endif // DEBUG_TRACES
- for (auto vit = cit->vertices_begin(); vit != cit->vertices_end(); ++vit) {
- if (*vit != nullptr) {
-#ifdef DEBUG_TRACES
- std::cout << " " << (*vit)->data();
-#endif // DEBUG_TRACES
- // Vector of vertex construction for simplex_tree structure
- vertexVector.push_back((*vit)->data());
- }
- }
-#ifdef DEBUG_TRACES
- std::cout << std::endl;
-#endif // DEBUG_TRACES
- // Insert each simplex and its subfaces in the simplex tree - filtration is NaN
- complex.insert_simplex_and_subfaces(vertexVector, std::numeric_limits<double>::quiet_NaN());
- }
- }
- // --------------------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------------------
- // Will be re-used many times
- Vector_of_CGAL_points pointVector;
- // ### For i : d -> 0
- for (int decr_dim = triangulation_->maximal_dimension(); decr_dim >= 0; decr_dim--) {
- // ### Foreach Sigma of dim i
- for (Simplex_handle f_simplex : complex.skeleton_simplex_range(decr_dim)) {
- int f_simplex_dim = complex.dimension(f_simplex);
- if (decr_dim == f_simplex_dim) {
- pointVector.clear();
-#ifdef DEBUG_TRACES
- std::cout << "Sigma of dim " << decr_dim << " is";
-#endif // DEBUG_TRACES
- for (auto vertex : complex.simplex_vertex_range(f_simplex)) {
- pointVector.push_back(get_point(vertex));
-#ifdef DEBUG_TRACES
- std::cout << " " << vertex;
-#endif // DEBUG_TRACES
- }
-#ifdef DEBUG_TRACES
- std::cout << std::endl;
-#endif // DEBUG_TRACES
- // ### If filt(Sigma) is NaN : filt(Sigma) = alpha(Sigma)
- if (std::isnan(complex.filtration(f_simplex))) {
- Filtration_value alpha_complex_filtration = 0.0;
- // No need to compute squared_radius on a single point - alpha is 0.0
- if (f_simplex_dim > 0) {
- // squared_radius function initialization
- Squared_Radius squared_radius = kernel_.compute_squared_radius_d_object();
- CGAL::NT_converter<typename Geom_traits::FT, Filtration_value> cv;
-
- alpha_complex_filtration = cv(squared_radius(pointVector.begin(), pointVector.end()));
- }
- complex.assign_filtration(f_simplex, alpha_complex_filtration);
-#ifdef DEBUG_TRACES
- std::cout << "filt(Sigma) is NaN : filt(Sigma) =" << complex.filtration(f_simplex) << std::endl;
-#endif // DEBUG_TRACES
- }
- propagate_alpha_filtration(complex, f_simplex, decr_dim);
- }
- }
- }
- // --------------------------------------------------------------------------------------------
-
- // --------------------------------------------------------------------------------------------
- // As Alpha value is an approximation, we have to make filtration non decreasing while increasing the dimension
- complex.make_filtration_non_decreasing();
- // Remove all simplices that have a filtration value greater than max_alpha_square
- complex.prune_above_filtration(max_alpha_square);
- // --------------------------------------------------------------------------------------------
- return true;
- }
-
- private:
- template <typename SimplicialComplexForAlpha, typename Simplex_handle>
- void propagate_alpha_filtration(SimplicialComplexForAlpha& complex, Simplex_handle f_simplex, int decr_dim) {
- // From SimplicialComplexForAlpha type required to assign filtration values.
- typedef typename SimplicialComplexForAlpha::Filtration_value Filtration_value;
-#ifdef DEBUG_TRACES
- typedef typename SimplicialComplexForAlpha::Vertex_handle Vertex_handle;
-#endif // DEBUG_TRACES
-
- // ### Foreach Tau face of Sigma
- for (auto f_boundary : complex.boundary_simplex_range(f_simplex)) {
-#ifdef DEBUG_TRACES
- std::cout << " | --------------------------------------------------\n";
- std::cout << " | Tau ";
- for (auto vertex : complex.simplex_vertex_range(f_boundary)) {
- std::cout << vertex << " ";
- }
- std::cout << "is a face of Sigma\n";
- std::cout << " | isnan(complex.filtration(Tau)=" << std::isnan(complex.filtration(f_boundary)) << std::endl;
-#endif // DEBUG_TRACES
- // ### If filt(Tau) is not NaN
- if (!std::isnan(complex.filtration(f_boundary))) {
- // ### filt(Tau) = fmin(filt(Tau), filt(Sigma))
- Filtration_value alpha_complex_filtration = fmin(complex.filtration(f_boundary),
- complex.filtration(f_simplex));
- complex.assign_filtration(f_boundary, alpha_complex_filtration);
-#ifdef DEBUG_TRACES
- std::cout << " | filt(Tau) = fmin(filt(Tau), filt(Sigma)) = " << complex.filtration(f_boundary) << std::endl;
-#endif // DEBUG_TRACES
- // ### Else
- } else {
- // No need to compute is_gabriel for dimension <= 2
- // i.e. : Sigma = (3,1) => Tau = 1
- if (decr_dim > 1) {
- // insert the Tau points in a vector for is_gabriel function
- Vector_of_CGAL_points pointVector;
-#ifdef DEBUG_TRACES
- Vertex_handle vertexForGabriel = Vertex_handle();
-#endif // DEBUG_TRACES
- for (auto vertex : complex.simplex_vertex_range(f_boundary)) {
- pointVector.push_back(get_point(vertex));
- }
- // Retrieve the Sigma point that is not part of Tau - parameter for is_gabriel function
- Point_d point_for_gabriel;
- for (auto vertex : complex.simplex_vertex_range(f_simplex)) {
- point_for_gabriel = get_point(vertex);
- if (std::find(pointVector.begin(), pointVector.end(), point_for_gabriel) == pointVector.end()) {
-#ifdef DEBUG_TRACES
- // vertex is not found in Tau
- vertexForGabriel = vertex;
-#endif // DEBUG_TRACES
- // No need to continue loop
- break;
- }
- }
- // is_gabriel function initialization
- Is_Gabriel is_gabriel = kernel_.side_of_bounded_sphere_d_object();
- bool is_gab = is_gabriel(pointVector.begin(), pointVector.end(), point_for_gabriel)
- != CGAL::ON_BOUNDED_SIDE;
-#ifdef DEBUG_TRACES
- std::cout << " | Tau is_gabriel(Sigma)=" << is_gab << " - vertexForGabriel=" << vertexForGabriel << std::endl;
-#endif // DEBUG_TRACES
- // ### If Tau is not Gabriel of Sigma
- if (false == is_gab) {
- // ### filt(Tau) = filt(Sigma)
- Filtration_value alpha_complex_filtration = complex.filtration(f_simplex);
- complex.assign_filtration(f_boundary, alpha_complex_filtration);
-#ifdef DEBUG_TRACES
- std::cout << " | filt(Tau) = filt(Sigma) = " << complex.filtration(f_boundary) << std::endl;
-#endif // DEBUG_TRACES
- }
- }
- }
- }
- }
-};
-
-} // namespace alpha_complex
-
-namespace alphacomplex = alpha_complex;
-
-} // namespace Gudhi
-
-#endif // ALPHA_COMPLEX_H_
diff --git a/include/gudhi/Bitmap_cubical_complex.h b/include/gudhi/Bitmap_cubical_complex.h
deleted file mode 100644
index cc19b8b5..00000000
--- a/include/gudhi/Bitmap_cubical_complex.h
+++ /dev/null
@@ -1,582 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef BITMAP_CUBICAL_COMPLEX_H_
-#define BITMAP_CUBICAL_COMPLEX_H_
-
-#include <gudhi/Bitmap_cubical_complex_base.h>
-#include <gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h>
-
-#ifdef GUDHI_USE_TBB
-#include <tbb/parallel_sort.h>
-#endif
-
-#include <limits>
-#include <utility> // for pair<>
-#include <algorithm> // for sort
-#include <vector>
-#include <numeric> // for iota
-#include <cstddef>
-
-namespace Gudhi {
-
-namespace cubical_complex {
-
-// global variable, was used just for debugging.
-const bool globalDbg = false;
-
-template <typename T>
-class is_before_in_filtration;
-
-/**
- * @brief Cubical complex represented as a bitmap.
- * @ingroup cubical_complex
- * @details This is a Bitmap_cubical_complex class. It joints a functionalities of Bitmap_cubical_complex_base and
- * Bitmap_cubical_complex_periodic_boundary_conditions_base classes into
- * Gudhi persistent homology engine. It is a template class that inherit from its template parameter. The template
- * parameter is supposed to be either Bitmap_cubical_complex_base or
- * Bitmap_cubical_complex_periodic_boundary_conditions_base class.
- **/
-template <typename T>
-class Bitmap_cubical_complex : public T {
- public:
- //*********************************************//
- // Typedefs and typenames
- //*********************************************//
- typedef std::size_t Simplex_key;
- typedef typename T::filtration_type Filtration_value;
- typedef Simplex_key Simplex_handle;
-
- //*********************************************//
- // Constructors
- //*********************************************//
- // Over here we need to define various input types. I am proposing the following ones:
- // Perseus style
- // TODO(PD) H5 files?
- // TODO(PD) binary files with little endiangs / big endians ?
- // TODO(PD) constructor from a vector of elements of a type T. ?
-
- /**
- * Constructor form a Perseus-style file.
- **/
- Bitmap_cubical_complex(const char* perseus_style_file)
- : T(perseus_style_file), key_associated_to_simplex(this->total_number_of_cells + 1) {
- if (globalDbg) {
- std::cerr << "Bitmap_cubical_complex( const char* perseus_style_file )\n";
- }
- for (std::size_t i = 0; i != this->total_number_of_cells; ++i) {
- this->key_associated_to_simplex[i] = i;
- }
- // we initialize this only once, in each constructor, when the bitmap is constructed.
- // If the user decide to change some elements of the bitmap, then this procedure need
- // to be called again.
- this->initialize_simplex_associated_to_key();
- }
-
- /**
- * Constructor that requires vector of elements of type unsigned, which gives number of top dimensional cells
- * in the following directions and vector of element of a type T
- * with filtration on top dimensional cells.
- **/
- Bitmap_cubical_complex(const std::vector<unsigned>& dimensions,
- const std::vector<Filtration_value>& top_dimensional_cells)
- : T(dimensions, top_dimensional_cells), key_associated_to_simplex(this->total_number_of_cells + 1) {
- for (std::size_t i = 0; i != this->total_number_of_cells; ++i) {
- this->key_associated_to_simplex[i] = i;
- }
- // we initialize this only once, in each constructor, when the bitmap is constructed.
- // If the user decide to change some elements of the bitmap, then this procedure need
- // to be called again.
- this->initialize_simplex_associated_to_key();
- }
-
- /**
- * Constructor that requires vector of elements of type unsigned, which gives number of top dimensional cells
- * in the following directions and vector of element of a type Filtration_value
- * with filtration on top dimensional cells. The last parameter of the constructor is a vector of boolean of a length
- * equal to the dimension of cubical complex.
- * If the position i on this vector is true, then we impose periodic boundary conditions in this direction.
- **/
- Bitmap_cubical_complex(const std::vector<unsigned>& dimensions,
- const std::vector<Filtration_value>& top_dimensional_cells,
- std::vector<bool> directions_in_which_periodic_b_cond_are_to_be_imposed)
- : T(dimensions, top_dimensional_cells, directions_in_which_periodic_b_cond_are_to_be_imposed),
- key_associated_to_simplex(this->total_number_of_cells + 1) {
- for (std::size_t i = 0; i != this->total_number_of_cells; ++i) {
- this->key_associated_to_simplex[i] = i;
- }
- // we initialize this only once, in each constructor, when the bitmap is constructed.
- // If the user decide to change some elements of the bitmap, then this procedure need
- // to be called again.
- this->initialize_simplex_associated_to_key();
- }
-
- /**
- * Destructor of the Bitmap_cubical_complex class.
- **/
- virtual ~Bitmap_cubical_complex() {}
-
- //*********************************************//
- // Other 'easy' functions
- //*********************************************//
-
- /**
- * Returns number of all cubes in the complex.
- **/
- std::size_t num_simplices() const { return this->total_number_of_cells; }
-
- /**
- * Returns a Simplex_handle to a cube that do not exist in this complex.
- **/
- static Simplex_handle null_simplex() {
- if (globalDbg) {
- std::cerr << "Simplex_handle null_simplex()\n";
- }
- return std::numeric_limits<Simplex_handle>::max();
- }
-
- /**
- * Returns dimension of the complex.
- **/
- inline std::size_t dimension() const { return this->sizes.size(); }
-
- /**
- * Return dimension of a cell pointed by the Simplex_handle.
- **/
- inline unsigned dimension(Simplex_handle sh) const {
- if (globalDbg) {
- std::cerr << "unsigned dimension(const Simplex_handle& sh)\n";
- }
- if (sh != null_simplex()) return this->get_dimension_of_a_cell(sh);
- return -1;
- }
-
- /**
- * Return the filtration of a cell pointed by the Simplex_handle.
- **/
- Filtration_value filtration(Simplex_handle sh) {
- if (globalDbg) {
- std::cerr << "Filtration_value filtration(const Simplex_handle& sh)\n";
- }
- // Returns the filtration value of a simplex.
- if (sh != null_simplex()) return this->data[sh];
- return std::numeric_limits<Filtration_value>::infinity();
- }
-
- /**
- * Return a key which is not a key of any cube in the considered data structure.
- **/
- static Simplex_key null_key() {
- if (globalDbg) {
- std::cerr << "Simplex_key null_key()\n";
- }
- return std::numeric_limits<Simplex_handle>::max();
- }
-
- /**
- * Return the key of a cube pointed by the Simplex_handle.
- **/
- Simplex_key key(Simplex_handle sh) const {
- if (globalDbg) {
- std::cerr << "Simplex_key key(const Simplex_handle& sh)\n";
- }
- if (sh != null_simplex()) {
- return this->key_associated_to_simplex[sh];
- }
- return this->null_key();
- }
-
- /**
- * Return the Simplex_handle given the key of the cube.
- **/
- Simplex_handle simplex(Simplex_key key) {
- if (globalDbg) {
- std::cerr << "Simplex_handle simplex(Simplex_key key)\n";
- }
- if (key != null_key()) {
- return this->simplex_associated_to_key[key];
- }
- return null_simplex();
- }
-
- /**
- * Assign key to a cube pointed by the Simplex_handle
- **/
- void assign_key(Simplex_handle sh, Simplex_key key) {
- if (globalDbg) {
- std::cerr << "void assign_key(Simplex_handle& sh, Simplex_key key)\n";
- }
- if (key == null_key()) return;
- this->key_associated_to_simplex[sh] = key;
- this->simplex_associated_to_key[key] = sh;
- }
-
- /**
- * Function called from a constructor. It is needed for Filtration_simplex_iterator to work.
- **/
- void initialize_simplex_associated_to_key();
-
- //*********************************************//
- // Iterators
- //*********************************************//
-
- /**
- * Boundary_simplex_range class provides ranges for boundary iterators.
- **/
- typedef typename std::vector<Simplex_handle>::iterator Boundary_simplex_iterator;
- typedef typename std::vector<Simplex_handle> Boundary_simplex_range;
-
- /**
- * Filtration_simplex_iterator class provides an iterator though the whole structure in the order of filtration.
- * Secondary criteria for filtration are:
- * (1) Dimension of a cube (lower dimensional comes first).
- * (2) Position in the data structure (the ones that are earlies in the data structure comes first).
- **/
- class Filtration_simplex_range;
-
- class Filtration_simplex_iterator : std::iterator<std::input_iterator_tag, Simplex_handle> {
- // Iterator over all simplices of the complex in the order of the indexing scheme.
- // 'value_type' must be 'Simplex_handle'.
- public:
- Filtration_simplex_iterator(Bitmap_cubical_complex* b) : b(b), position(0) {}
-
- Filtration_simplex_iterator() : b(NULL), position(0) {}
-
- Filtration_simplex_iterator operator++() {
- if (globalDbg) {
- std::cerr << "Filtration_simplex_iterator operator++\n";
- }
- ++this->position;
- return (*this);
- }
-
- Filtration_simplex_iterator operator++(int) {
- Filtration_simplex_iterator result = *this;
- ++(*this);
- return result;
- }
-
- Filtration_simplex_iterator& operator=(const Filtration_simplex_iterator& rhs) {
- if (globalDbg) {
- std::cerr << "Filtration_simplex_iterator operator =\n";
- }
- this->b = rhs.b;
- this->position = rhs.position;
- return (*this);
- }
-
- bool operator==(const Filtration_simplex_iterator& rhs) const {
- if (globalDbg) {
- std::cerr << "bool operator == ( const Filtration_simplex_iterator& rhs )\n";
- }
- return (this->position == rhs.position);
- }
-
- bool operator!=(const Filtration_simplex_iterator& rhs) const {
- if (globalDbg) {
- std::cerr << "bool operator != ( const Filtration_simplex_iterator& rhs )\n";
- }
- return !(*this == rhs);
- }
-
- Simplex_handle operator*() {
- if (globalDbg) {
- std::cerr << "Simplex_handle operator*()\n";
- }
- return this->b->simplex_associated_to_key[this->position];
- }
-
- friend class Filtration_simplex_range;
-
- private:
- Bitmap_cubical_complex<T>* b;
- std::size_t position;
- };
-
- /**
- * @brief Filtration_simplex_range provides the ranges for Filtration_simplex_iterator.
- **/
- class Filtration_simplex_range {
- // Range over the simplices of the complex in the order of the filtration.
- // .begin() and .end() return type Filtration_simplex_iterator.
- public:
- typedef Filtration_simplex_iterator const_iterator;
- typedef Filtration_simplex_iterator iterator;
-
- Filtration_simplex_range(Bitmap_cubical_complex<T>* b) : b(b) {}
-
- Filtration_simplex_iterator begin() {
- if (globalDbg) {
- std::cerr << "Filtration_simplex_iterator begin() \n";
- }
- return Filtration_simplex_iterator(this->b);
- }
-
- Filtration_simplex_iterator end() {
- if (globalDbg) {
- std::cerr << "Filtration_simplex_iterator end()\n";
- }
- Filtration_simplex_iterator it(this->b);
- it.position = this->b->simplex_associated_to_key.size();
- return it;
- }
-
- private:
- Bitmap_cubical_complex<T>* b;
- };
-
- //*********************************************//
- // Methods to access iterators from the container:
-
- /**
- * boundary_simplex_range creates an object of a Boundary_simplex_range class
- * that provides ranges for the Boundary_simplex_iterator.
- **/
- Boundary_simplex_range boundary_simplex_range(Simplex_handle sh) { return this->get_boundary_of_a_cell(sh); }
-
- /**
- * filtration_simplex_range creates an object of a Filtration_simplex_range class
- * that provides ranges for the Filtration_simplex_iterator.
- **/
- Filtration_simplex_range filtration_simplex_range() {
- if (globalDbg) {
- std::cerr << "Filtration_simplex_range filtration_simplex_range()\n";
- }
- // Returns a range over the simplices of the complex in the order of the filtration
- return Filtration_simplex_range(this);
- }
- //*********************************************//
-
- //*********************************************//
- // Elements which are in Gudhi now, but I (and in all the cases I asked also Marc) do not understand why they are
- // there.
- // TODO(PD) the file IndexingTag.h in the Gudhi library contains an empty structure, so
- // I understand that this is something that was planned (for simplicial maps?)
- // but was never finished. The only idea I have here is to use the same empty structure from
- // IndexingTag.h file, but only if the compiler needs it. If the compiler
- // do not need it, then I would rather not add here elements which I do not understand.
- // typedef Indexing_tag
-
- /**
- * Function needed for compatibility with Gudhi. Not useful for other purposes.
- **/
- std::pair<Simplex_handle, Simplex_handle> endpoints(Simplex_handle sh) {
- std::vector<std::size_t> bdry = this->get_boundary_of_a_cell(sh);
- if (globalDbg) {
- std::cerr << "std::pair<Simplex_handle, Simplex_handle> endpoints( Simplex_handle sh )\n";
- std::cerr << "bdry.size() : " << bdry.size() << "\n";
- }
- // this method returns two first elements from the boundary of sh.
- if (bdry.size() < 2)
- throw(
- "Error in endpoints in Bitmap_cubical_complex class. The cell have less than two elements in the "
- "boundary.");
- return std::make_pair(bdry[0], bdry[1]);
- }
-
- /**
- * Class needed for compatibility with Gudhi. Not useful for other purposes.
- **/
- class Skeleton_simplex_range;
-
- class Skeleton_simplex_iterator : std::iterator<std::input_iterator_tag, Simplex_handle> {
- // Iterator over all simplices of the complex in the order of the indexing scheme.
- // 'value_type' must be 'Simplex_handle'.
- public:
- Skeleton_simplex_iterator(Bitmap_cubical_complex* b, std::size_t d) : b(b), dimension(d) {
- if (globalDbg) {
- std::cerr << "Skeleton_simplex_iterator ( Bitmap_cubical_complex* b , std::size_t d )\n";
- }
- // find the position of the first simplex of a dimension d
- this->position = 0;
- while ((this->position != b->data.size()) &&
- (this->b->get_dimension_of_a_cell(this->position) != this->dimension)) {
- ++this->position;
- }
- }
-
- Skeleton_simplex_iterator() : b(NULL), position(0), dimension(0) {}
-
- Skeleton_simplex_iterator operator++() {
- if (globalDbg) {
- std::cerr << "Skeleton_simplex_iterator operator++()\n";
- }
- // increment the position as long as you did not get to the next element of the dimension dimension.
- ++this->position;
- while ((this->position != this->b->data.size()) &&
- (this->b->get_dimension_of_a_cell(this->position) != this->dimension)) {
- ++this->position;
- }
- return (*this);
- }
-
- Skeleton_simplex_iterator operator++(int) {
- Skeleton_simplex_iterator result = *this;
- ++(*this);
- return result;
- }
-
- Skeleton_simplex_iterator& operator=(const Skeleton_simplex_iterator& rhs) {
- if (globalDbg) {
- std::cerr << "Skeleton_simplex_iterator operator =\n";
- }
- this->b = rhs.b;
- this->position = rhs.position;
- this->dimension = rhs.dimension;
- return (*this);
- }
-
- bool operator==(const Skeleton_simplex_iterator& rhs) const {
- if (globalDbg) {
- std::cerr << "bool operator ==\n";
- }
- return (this->position == rhs.position);
- }
-
- bool operator!=(const Skeleton_simplex_iterator& rhs) const {
- if (globalDbg) {
- std::cerr << "bool operator != ( const Skeleton_simplex_iterator& rhs )\n";
- }
- return !(*this == rhs);
- }
-
- Simplex_handle operator*() {
- if (globalDbg) {
- std::cerr << "Simplex_handle operator*() \n";
- }
- return this->position;
- }
-
- friend class Skeleton_simplex_range;
-
- private:
- Bitmap_cubical_complex<T>* b;
- std::size_t position;
- unsigned dimension;
- };
-
- /**
- * @brief Class needed for compatibility with Gudhi. Not useful for other purposes.
- **/
- class Skeleton_simplex_range {
- // Range over the simplices of the complex in the order of the filtration.
- // .begin() and .end() return type Filtration_simplex_iterator.
- public:
- typedef Skeleton_simplex_iterator const_iterator;
- typedef Skeleton_simplex_iterator iterator;
-
- Skeleton_simplex_range(Bitmap_cubical_complex<T>* b, unsigned dimension) : b(b), dimension(dimension) {}
-
- Skeleton_simplex_iterator begin() {
- if (globalDbg) {
- std::cerr << "Skeleton_simplex_iterator begin()\n";
- }
- return Skeleton_simplex_iterator(this->b, this->dimension);
- }
-
- Skeleton_simplex_iterator end() {
- if (globalDbg) {
- std::cerr << "Skeleton_simplex_iterator end()\n";
- }
- Skeleton_simplex_iterator it(this->b, this->dimension);
- it.position = this->b->data.size();
- return it;
- }
-
- private:
- Bitmap_cubical_complex<T>* b;
- unsigned dimension;
- };
-
- /**
- * Function needed for compatibility with Gudhi. Not useful for other purposes.
- **/
- Skeleton_simplex_range skeleton_simplex_range(unsigned dimension) {
- if (globalDbg) {
- std::cerr << "Skeleton_simplex_range skeleton_simplex_range( unsigned dimension )\n";
- }
- return Skeleton_simplex_range(this, dimension);
- }
-
- friend class is_before_in_filtration<T>;
-
- protected:
- std::vector<std::size_t> key_associated_to_simplex;
- std::vector<std::size_t> simplex_associated_to_key;
-}; // Bitmap_cubical_complex
-
-template <typename T>
-void Bitmap_cubical_complex<T>::initialize_simplex_associated_to_key() {
- if (globalDbg) {
- std::cerr << "void Bitmap_cubical_complex<T>::initialize_elements_ordered_according_to_filtration() \n";
- }
- this->simplex_associated_to_key = std::vector<std::size_t>(this->data.size());
- std::iota(std::begin(simplex_associated_to_key), std::end(simplex_associated_to_key), 0);
-#ifdef GUDHI_USE_TBB
- tbb::parallel_sort(simplex_associated_to_key.begin(), simplex_associated_to_key.end(),
- is_before_in_filtration<T>(this));
-#else
- std::sort(simplex_associated_to_key.begin(), simplex_associated_to_key.end(), is_before_in_filtration<T>(this));
-#endif
-
- // we still need to deal here with a key_associated_to_simplex:
- for (std::size_t i = 0; i != simplex_associated_to_key.size(); ++i) {
- this->key_associated_to_simplex[simplex_associated_to_key[i]] = i;
- }
-}
-
-template <typename T>
-class is_before_in_filtration {
- public:
- explicit is_before_in_filtration(Bitmap_cubical_complex<T>* CC) : CC_(CC) {}
-
- bool operator()(const typename Bitmap_cubical_complex<T>::Simplex_handle& sh1,
- const typename Bitmap_cubical_complex<T>::Simplex_handle& sh2) const {
- // Not using st_->filtration(sh1) because it uselessly tests for null_simplex.
- typedef typename T::filtration_type Filtration_value;
- Filtration_value fil1 = CC_->data[sh1];
- Filtration_value fil2 = CC_->data[sh2];
- if (fil1 != fil2) {
- return fil1 < fil2;
- }
- // in this case they are on the same filtration level, so the dimension decide.
- std::size_t dim1 = CC_->get_dimension_of_a_cell(sh1);
- std::size_t dim2 = CC_->get_dimension_of_a_cell(sh2);
- if (dim1 != dim2) {
- return dim1 < dim2;
- }
- // in this case both filtration and dimensions of the considered cubes are the same. To have stable sort, we simply
- // compare their positions in the bitmap:
- return sh1 < sh2;
- }
-
- protected:
- Bitmap_cubical_complex<T>* CC_;
-};
-
-} // namespace cubical_complex
-
-namespace Cubical_complex = cubical_complex;
-
-} // namespace Gudhi
-
-#endif // BITMAP_CUBICAL_COMPLEX_H_
diff --git a/include/gudhi/Bitmap_cubical_complex/counter.h b/include/gudhi/Bitmap_cubical_complex/counter.h
deleted file mode 100644
index f82d4cc3..00000000
--- a/include/gudhi/Bitmap_cubical_complex/counter.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef BITMAP_CUBICAL_COMPLEX_COUNTER_H_
-#define BITMAP_CUBICAL_COMPLEX_COUNTER_H_
-
-#include <iostream>
-#include <vector>
-#include <cstddef>
-
-namespace Gudhi {
-
-namespace cubical_complex {
-
-/**
- * @brief This is an implementation of a counter being a vector of integers.
- * @details The constructor of the class takes as an input two vectors W and V.
- * It assumes that W < V coordinatewise.
- * If the initial counter W is not specified, it is assumed to be vector of zeros.
- * The class allows to iterate between W and V by using increment() function.
- * The increment() function returns a bool value.
- * The current counter reach the end counter V if the value returned by the increment function is FALSE.
- * This class is needed for the implementation of a bitmapCubicalComplex.
- **/
-class counter {
- public:
- /**
- * Constructor of a counter class. It takes only the parameter which is the end value of the counter.
- * The default beginning value is a vector of the same length as the endd, filled-in with zeros.
- **/
- counter(const std::vector<unsigned>& endd) : begin(endd.size(), 0), end(endd), current(endd.size(), 0) { }
-
- /**
- * Constructor of a counter class. It takes as the input beginn and end vector.
- * It assumes that begin vector is lexicographically below the end vector.
- **/
- counter(const std::vector< unsigned >& beginn, const std::vector< unsigned >& endd) : begin(beginn), end(endd), current(endd.size(), 0) {
- if (beginn.size() != endd.size())
- throw "In constructor of a counter, begin and end vectors do not have the same size. Program terminate";
- }
-
- /**
- * Function to increment the counter. If the value returned by the function is true,
- * then the incrementation process was successful.
- * If the value of the function is false, that means, that the counter have reached its end-value.
- **/
- bool increment() {
- std::size_t i = 0;
- while ((i != this->end.size()) && (this->current[i] == this->end[i])) {
- ++i;
- }
-
- if (i == this->end.size())return false;
- ++this->current[i];
- for (std::size_t j = 0; j != i; ++j) {
- this->current[j] = this->begin[j];
- }
- return true;
- }
-
- /**
- * Function to check if we are at the end of counter.
- **/
- bool isFinal() {
- for (std::size_t i = 0; i != this->current.size(); ++i) {
- if (this->current[i] == this->end[i])return true;
- }
- return false;
- }
-
- /**
- * Function required in the implementation of bitmapCubicalComplexWPeriodicBoundaryCondition.
- * Its aim is to find an counter corresponding to the element the following
- * boundary element is identified with when periodic boundary conditions are imposed.
- **/
- std::vector< unsigned > find_opposite(const std::vector< bool >& directionsForPeriodicBCond) {
- std::vector< unsigned > result;
- for (std::size_t i = 0; i != this->current.size(); ++i) {
- if ((this->current[i] == this->end[i]) && (directionsForPeriodicBCond[i] == true)) {
- result.push_back(this->begin[i]);
- } else {
- result.push_back(this->current[i]);
- }
- }
- return result;
- }
-
- /**
- * Function checking at which positions the current value of a counter is the final value of the counter.
- **/
- std::vector< bool > directions_of_finals() {
- std::vector< bool > result;
- for (std::size_t i = 0; i != this->current.size(); ++i) {
- if (this->current[i] == this->end[i]) {
- result.push_back(true);
- } else {
- result.push_back(false);
- }
- }
- return result;
- }
-
- /**
- * Function to write counter to the stream.
- **/
- friend std::ostream& operator<<(std::ostream& out, const counter& c) {
- // std::cerr << "c.current.size() : " << c.current.size() << endl;
- for (std::size_t i = 0; i != c.current.size(); ++i) {
- out << c.current[i] << " ";
- }
- return out;
- }
-
- private:
- std::vector< unsigned > begin;
- std::vector< unsigned > end;
- std::vector< unsigned > current;
-};
-
-} // namespace cubical_complex
-
-namespace Cubical_complex = cubical_complex;
-
-} // namespace Gudhi
-
-#endif // BITMAP_CUBICAL_COMPLEX_COUNTER_H_
diff --git a/include/gudhi/Bitmap_cubical_complex_base.h b/include/gudhi/Bitmap_cubical_complex_base.h
deleted file mode 100644
index 9b74e267..00000000
--- a/include/gudhi/Bitmap_cubical_complex_base.h
+++ /dev/null
@@ -1,854 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef BITMAP_CUBICAL_COMPLEX_BASE_H_
-#define BITMAP_CUBICAL_COMPLEX_BASE_H_
-
-#include <gudhi/Bitmap_cubical_complex/counter.h>
-
-#include <iostream>
-#include <vector>
-#include <string>
-#include <fstream>
-#include <algorithm>
-#include <iterator>
-#include <limits>
-#include <utility>
-#include <stdexcept>
-#include <cstddef>
-
-namespace Gudhi {
-
-namespace cubical_complex {
-
-/**
- * @brief Cubical complex represented as a bitmap, class with basic implementation.
- * @ingroup cubical_complex
- * @details This is a class implementing a basic bitmap data structure to store cubical complexes.
- * It implements only the most basic subroutines.
- * The idea of the bitmap is the following. Our aim is to have a memory efficient
- * data structure to store d-dimensional cubical complex
- * C being a cubical decomposition
- * of a rectangular region of a space. This is achieved by storing C as a
- * vector of bits (this is where the name 'bitmap' came from).
- * Each cell is represented by a single
- * bit (in case of black and white bitmaps, or by a single element of a type T
- * (here T is a filtration type of a bitmap, typically a double).
- * All the informations needed for homology and
- * persistent homology computations (like dimension of a cell, boundary and
- * coboundary elements of a cell, are then obtained from the
- * position of the element in C.
- * The default filtration used in this implementation is the lower star filtration.
- */
-template <typename T>
-class Bitmap_cubical_complex_base {
- public:
- typedef T filtration_type;
-
- /**
- *Default constructor
- **/
- Bitmap_cubical_complex_base() : total_number_of_cells(0) {}
- /**
- * There are a few constructors of a Bitmap_cubical_complex_base class.
- * First one, that takes vector<unsigned>, creates an empty bitmap of a dimension equal
- * the number of elements in the
- * input vector and size in the i-th dimension equal the number in the position i-of the input vector.
- */
- Bitmap_cubical_complex_base(const std::vector<unsigned>& sizes);
- /**
- * The second constructor takes as a input a Perseus style file. For more details,
- * please consult the documentations of
- * Perseus software as well as examples attached to this
- * implementation.
- **/
- Bitmap_cubical_complex_base(const char* perseus_style_file);
- /**
- * The last constructor of a Bitmap_cubical_complex_base class accepts vector of dimensions (as the first one)
- * together with vector of filtration values of top dimensional cells.
- **/
- Bitmap_cubical_complex_base(const std::vector<unsigned>& dimensions, const std::vector<T>& top_dimensional_cells);
-
- /**
- * Destructor of the Bitmap_cubical_complex_base class.
- **/
- virtual ~Bitmap_cubical_complex_base() {}
-
- /**
- * The functions get_boundary_of_a_cell, get_coboundary_of_a_cell, get_dimension_of_a_cell
- * and get_cell_data are the basic
- * functions that compute boundary / coboundary / dimension and the filtration
- * value form a position of a cell in the structure of a bitmap. The input parameter of all of those function is a
- * non-negative integer, indicating a position of a cube in the data structure.
- * In the case of functions that compute (co)boundary, the output is a vector if non-negative integers pointing to
- * the positions of (co)boundary element of the input cell.
- * The boundary elements are guaranteed to be returned so that the
- * incidence coefficients of boundary elements are alternating.
- */
- virtual inline std::vector<std::size_t> get_boundary_of_a_cell(std::size_t cell) const;
- /**
- * The functions get_coboundary_of_a_cell, get_coboundary_of_a_cell,
- * get_dimension_of_a_cell and get_cell_data are the basic
- * functions that compute boundary / coboundary / dimension and the filtration
- * value form a position of a cell in the structure of a bitmap.
- * The input parameter of all of those function is a non-negative integer,
- * indicating a position of a cube in the data structure.
- * In the case of functions that compute (co)boundary, the output is a vector if
- * non-negative integers pointing to the
- * positions of (co)boundary element of the input cell.
- * Note that unlike in the case of boundary, over here the elements are
- * not guaranteed to be returned with alternating incidence numbers.
- *
- **/
- virtual inline std::vector<std::size_t> get_coboundary_of_a_cell(std::size_t cell) const;
-
- /**
- * This procedure compute incidence numbers between cubes. For a cube \f$A\f$ of
- * dimension n and a cube \f$B \subset A\f$ of dimension n-1, an incidence
- * between \f$A\f$ and \f$B\f$ is the integer with which \f$B\f$ appears in the boundary of \f$A\f$.
- * Note that first parameter is a cube of dimension n,
- * and the second parameter is an adjusted cube in dimension n-1.
- * Given \f$A = [b_1,e_1] \times \ldots \ [b_{j-1},e_{j-1}] \times [b_{j},e_{j}] \times [b_{j+1},e_{j+1}] \times \ldots
- *\times [b_{n},e_{n}] \f$
- * such that \f$ b_{j} \neq e_{j} \f$
- * and \f$B = [b_1,e_1] \times \ldots \ [b_{j-1},e_{j-1}] \times [a,a] \times [b_{j+1},e_{j+1}] \times \ldots \times
- *[b_{n},e_{n}] \f$
- * where \f$ a = b_{j}\f$ or \f$ a = e_{j}\f$, the incidence between \f$A\f$ and \f$B\f$
- * computed by this procedure is given by formula:
- * \f$ c\ (-1)^{\sum_{i=1}^{j-1} dim [b_{i},e_{i}]} \f$
- * Where \f$ dim [b_{i},e_{i}] = 0 \f$ if \f$ b_{i}=e_{i} \f$ and 1 in other case.
- * c is -1 if \f$ a = b_{j}\f$ and 1 if \f$ a = e_{j}\f$.
- * @exception std::logic_error In case when the cube \f$B\f$ is not n-1
- * dimensional face of a cube \f$A\f$.
- **/
- virtual int compute_incidence_between_cells(std::size_t coface, std::size_t face) const {
- // first get the counters for coface and face:
- std::vector<unsigned> coface_counter = this->compute_counter_for_given_cell(coface);
- std::vector<unsigned> face_counter = this->compute_counter_for_given_cell(face);
-
- // coface_counter and face_counter should agree at all positions except from one:
- int number_of_position_in_which_counters_do_not_agree = -1;
- std::size_t number_of_full_faces_that_comes_before = 0;
- for (std::size_t i = 0; i != coface_counter.size(); ++i) {
- if ((coface_counter[i] % 2 == 1) && (number_of_position_in_which_counters_do_not_agree == -1)) {
- ++number_of_full_faces_that_comes_before;
- }
- if (coface_counter[i] != face_counter[i]) {
- if (number_of_position_in_which_counters_do_not_agree != -1) {
- std::cout << "Cells given to compute_incidence_between_cells procedure do not form a pair of coface-face.\n";
- throw std::logic_error(
- "Cells given to compute_incidence_between_cells procedure do not form a pair of coface-face.");
- }
- number_of_position_in_which_counters_do_not_agree = i;
- }
- }
-
- int incidence = 1;
- if (number_of_full_faces_that_comes_before % 2) incidence = -1;
- // if the face cell is on the right from coface cell:
- if (coface_counter[number_of_position_in_which_counters_do_not_agree] + 1 ==
- face_counter[number_of_position_in_which_counters_do_not_agree]) {
- incidence *= -1;
- }
-
- return incidence;
- }
-
- /**
-* In the case of get_dimension_of_a_cell function, the output is a non-negative integer
-* indicating the dimension of a cell.
-* Note that unlike in the case of boundary, over here the elements are
-* not guaranteed to be returned with alternating incidence numbers.
-* To compute incidence between cells use compute_incidence_between_cells
-* procedure
-**/
- inline unsigned get_dimension_of_a_cell(std::size_t cell) const;
-
- /**
- * In the case of get_cell_data, the output parameter is a reference to the value of a cube in a given position.
- * This allows reading and changing the value of filtration. Note that if the value of a filtration is changed, the
- * code do not check if we have a filtration or not. i.e. it do not check if the value of a filtration of a cell is
- * not smaller than the value of a filtration of its boundary and not greater than the value of its coboundary.
- **/
- inline T& get_cell_data(std::size_t cell);
-
- /**
- * Typical input used to construct a baseBitmap class is a filtration given at the top dimensional cells.
- * Then, there are a few ways one can pick the filtration of lower dimensional
- * cells. The most typical one is by so called lower star filtration. This function is always called by any
- * constructor which takes the top dimensional cells. If you use such a constructor,
- * then there is no need to call this function. Call it only if you are putting the filtration
- * of the cells by your own (for instance by using Top_dimensional_cells_iterator).
- **/
- void impose_lower_star_filtration(); // assume that top dimensional cells are already set.
-
- /**
- * Returns dimension of a complex.
- **/
- inline unsigned dimension() const { return sizes.size(); }
-
- /**
- * Returns number of all cubes in the data structure.
- **/
- inline unsigned size() const { return this->data.size(); }
-
- /**
- * Writing to stream operator. By using it we get the values T of cells in order in which they are stored in the
- * structure. This procedure is used for debugging purposes.
- **/
- template <typename K>
- friend std::ostream& operator<<(std::ostream& os, const Bitmap_cubical_complex_base<K>& b);
-
- /**
- * Function that put the input data to bins. By putting data to bins we mean rounding them to a sequence of values
- * equally distributed in the range of data.
- * Sometimes if most of the cells have different birth-death times, the performance of the algorithms to compute
- * persistence gets worst. When dealing with this type of data, one may want to put different values on cells to
- * some number of bins. The function put_data_to_bins( std::size_t number_of_bins ) is designed for that purpose.
- * The parameter of the function is the number of bins (distinct values) we want to have in the cubical complex.
- **/
- void put_data_to_bins(std::size_t number_of_bins);
-
- /**
- * Function that put the input data to bins. By putting data to bins we mean rounding them to a sequence of values
- * equally distributed in the range of data.
- * Sometimes if most of the cells have different birth-death times, the performance of the algorithms to compute
- * persistence gets worst. When dealing with this type of data, one may want to put different values on cells to
- * some number of bins. The function put_data_to_bins( T diameter_of_bin ) is designed for that purpose.
- * The parameter of it is the diameter of each bin. Note that the bottleneck distance between the persistence
- * diagram of the cubical complex before and after using such a function will be bounded by the parameter
- * diameter_of_bin.
- **/
- void put_data_to_bins(T diameter_of_bin);
-
- /**
- * Functions to find min and max values of filtration.
- **/
- std::pair<T, T> min_max_filtration();
-
- // ITERATORS
-
- /**
- * @brief Iterator through all cells in the complex (in order they appear in the structure -- i.e.
- * in lexicographical order).
- **/
- class All_cells_iterator : std::iterator<std::input_iterator_tag, T> {
- public:
- All_cells_iterator() { this->counter = 0; }
-
- All_cells_iterator operator++() {
- // first find first element of the counter that can be increased:
- ++this->counter;
- return *this;
- }
-
- All_cells_iterator operator++(int) {
- All_cells_iterator result = *this;
- ++(*this);
- return result;
- }
-
- All_cells_iterator& operator=(const All_cells_iterator& rhs) {
- this->counter = rhs.counter;
- return *this;
- }
-
- bool operator==(const All_cells_iterator& rhs) const {
- if (this->counter != rhs.counter) return false;
- return true;
- }
-
- bool operator!=(const All_cells_iterator& rhs) const { return !(*this == rhs); }
-
- /*
- * The operator * returns position of a cube in the structure of cubical complex. This position can be then used as
- * an argument of the following functions:
- * get_boundary_of_a_cell, get_coboundary_of_a_cell, get_dimension_of_a_cell to get information about the cell
- * boundary and coboundary and dimension
- * and in function get_cell_data to get a filtration of a cell.
- */
- std::size_t operator*() { return this->counter; }
- friend class Bitmap_cubical_complex_base;
-
- protected:
- std::size_t counter;
- };
-
- /**
- * Function returning a All_cells_iterator to the first cell of the bitmap.
- **/
- All_cells_iterator all_cells_iterator_begin() {
- All_cells_iterator a;
- return a;
- }
-
- /**
- * Function returning a All_cells_iterator to the last cell of the bitmap.
- **/
- All_cells_iterator all_cells_iterator_end() {
- All_cells_iterator a;
- a.counter = this->data.size();
- return a;
- }
-
- /**
- * @brief All_cells_range class provides ranges for All_cells_iterator
- **/
- class All_cells_range {
- public:
- All_cells_range(Bitmap_cubical_complex_base* b) : b(b) {}
-
- All_cells_iterator begin() { return b->all_cells_iterator_begin(); }
-
- All_cells_iterator end() { return b->all_cells_iterator_end(); }
-
- private:
- Bitmap_cubical_complex_base<T>* b;
- };
-
- All_cells_range all_cells_range() { return All_cells_range(this); }
-
- /**
- * Boundary_range class provides ranges for boundary iterators.
- **/
- typedef typename std::vector<std::size_t>::const_iterator Boundary_iterator;
- typedef typename std::vector<std::size_t> Boundary_range;
-
- /**
- * boundary_simplex_range creates an object of a Boundary_simplex_range class
- * that provides ranges for the Boundary_simplex_iterator.
- **/
- Boundary_range boundary_range(std::size_t sh) { return this->get_boundary_of_a_cell(sh); }
-
- /**
- * Coboundary_range class provides ranges for boundary iterators.
- **/
- typedef typename std::vector<std::size_t>::const_iterator Coboundary_iterator;
- typedef typename std::vector<std::size_t> Coboundary_range;
-
- /**
- * boundary_simplex_range creates an object of a Boundary_simplex_range class
- * that provides ranges for the Boundary_simplex_iterator.
- **/
- Coboundary_range coboundary_range(std::size_t sh) { return this->get_coboundary_of_a_cell(sh); }
-
- /**
- * @brief Iterator through top dimensional cells of the complex. The cells appear in order they are stored
- * in the structure (i.e. in lexicographical order)
- **/
- class Top_dimensional_cells_iterator : std::iterator<std::input_iterator_tag, T> {
- public:
- Top_dimensional_cells_iterator(Bitmap_cubical_complex_base& b) : b(b) {
- this->counter = std::vector<std::size_t>(b.dimension());
- // std::fill( this->counter.begin() , this->counter.end() , 0 );
- }
-
- Top_dimensional_cells_iterator operator++() {
- // first find first element of the counter that can be increased:
- std::size_t dim = 0;
- while ((dim != this->b.dimension()) && (this->counter[dim] == this->b.sizes[dim] - 1)) ++dim;
-
- if (dim != this->b.dimension()) {
- ++this->counter[dim];
- for (std::size_t i = 0; i != dim; ++i) {
- this->counter[i] = 0;
- }
- } else {
- ++this->counter[0];
- }
- return *this;
- }
-
- Top_dimensional_cells_iterator operator++(int) {
- Top_dimensional_cells_iterator result = *this;
- ++(*this);
- return result;
- }
-
- Top_dimensional_cells_iterator& operator=(const Top_dimensional_cells_iterator& rhs) {
- this->counter = rhs.counter;
- this->b = rhs.b;
- return *this;
- }
-
- bool operator==(const Top_dimensional_cells_iterator& rhs) const {
- if (&this->b != &rhs.b) return false;
- if (this->counter.size() != rhs.counter.size()) return false;
- for (std::size_t i = 0; i != this->counter.size(); ++i) {
- if (this->counter[i] != rhs.counter[i]) return false;
- }
- return true;
- }
-
- bool operator!=(const Top_dimensional_cells_iterator& rhs) const { return !(*this == rhs); }
-
- /*
- * The operator * returns position of a cube in the structure of cubical complex. This position can be then used as
- * an argument of the following functions:
- * get_boundary_of_a_cell, get_coboundary_of_a_cell, get_dimension_of_a_cell to get information about the cell
- * boundary and coboundary and dimension
- * and in function get_cell_data to get a filtration of a cell.
- */
- std::size_t operator*() { return this->compute_index_in_bitmap(); }
-
- std::size_t compute_index_in_bitmap() const {
- std::size_t index = 0;
- for (std::size_t i = 0; i != this->counter.size(); ++i) {
- index += (2 * this->counter[i] + 1) * this->b.multipliers[i];
- }
- return index;
- }
-
- void print_counter() const {
- for (std::size_t i = 0; i != this->counter.size(); ++i) {
- std::cout << this->counter[i] << " ";
- }
- }
- friend class Bitmap_cubical_complex_base;
-
- protected:
- std::vector<std::size_t> counter;
- Bitmap_cubical_complex_base& b;
- };
-
- /**
- * Function returning a Top_dimensional_cells_iterator to the first top dimensional cell of the bitmap.
- **/
- Top_dimensional_cells_iterator top_dimensional_cells_iterator_begin() {
- Top_dimensional_cells_iterator a(*this);
- return a;
- }
-
- /**
- * Function returning a Top_dimensional_cells_iterator to the last top dimensional cell of the bitmap.
- **/
- Top_dimensional_cells_iterator top_dimensional_cells_iterator_end() {
- Top_dimensional_cells_iterator a(*this);
- for (std::size_t i = 0; i != this->dimension(); ++i) {
- a.counter[i] = this->sizes[i] - 1;
- }
- a.counter[0]++;
- return a;
- }
-
- /**
- * @brief Top_dimensional_cells_iterator_range class provides ranges for Top_dimensional_cells_iterator_range
- **/
- class Top_dimensional_cells_range {
- public:
- Top_dimensional_cells_range(Bitmap_cubical_complex_base* b) : b(b) {}
-
- Top_dimensional_cells_iterator begin() { return b->top_dimensional_cells_iterator_begin(); }
-
- Top_dimensional_cells_iterator end() { return b->top_dimensional_cells_iterator_end(); }
-
- private:
- Bitmap_cubical_complex_base<T>* b;
- };
-
- Top_dimensional_cells_range top_dimensional_cells_range() { return Top_dimensional_cells_range(this); }
-
- //****************************************************************************************************************//
- //****************************************************************************************************************//
- //****************************************************************************************************************//
- //****************************************************************************************************************//
-
- inline std::size_t number_cells() const { return this->total_number_of_cells; }
-
- //****************************************************************************************************************//
- //****************************************************************************************************************//
- //****************************************************************************************************************//
- //****************************************************************************************************************//
-
- protected:
- std::vector<unsigned> sizes;
- std::vector<unsigned> multipliers;
- std::vector<T> data;
- std::size_t total_number_of_cells;
-
- void set_up_containers(const std::vector<unsigned>& sizes) {
- unsigned multiplier = 1;
- for (std::size_t i = 0; i != sizes.size(); ++i) {
- this->sizes.push_back(sizes[i]);
- this->multipliers.push_back(multiplier);
- multiplier *= 2 * sizes[i] + 1;
- }
- this->data = std::vector<T>(multiplier, std::numeric_limits<T>::infinity());
- this->total_number_of_cells = multiplier;
- }
-
- std::size_t compute_position_in_bitmap(const std::vector<unsigned>& counter) {
- std::size_t position = 0;
- for (std::size_t i = 0; i != this->multipliers.size(); ++i) {
- position += this->multipliers[i] * counter[i];
- }
- return position;
- }
-
- std::vector<unsigned> compute_counter_for_given_cell(std::size_t cell) const {
- std::vector<unsigned> counter;
- counter.reserve(this->sizes.size());
- for (std::size_t dim = this->sizes.size(); dim != 0; --dim) {
- counter.push_back(cell / this->multipliers[dim - 1]);
- cell = cell % this->multipliers[dim - 1];
- }
- std::reverse(counter.begin(), counter.end());
- return counter;
- }
- void read_perseus_style_file(const char* perseus_style_file);
- void setup_bitmap_based_on_top_dimensional_cells_list(const std::vector<unsigned>& sizes_in_following_directions,
- const std::vector<T>& top_dimensional_cells);
- Bitmap_cubical_complex_base(const char* perseus_style_file, std::vector<bool> directions);
- Bitmap_cubical_complex_base(const std::vector<unsigned>& sizes, std::vector<bool> directions);
- Bitmap_cubical_complex_base(const std::vector<unsigned>& dimensions, const std::vector<T>& top_dimensional_cells,
- std::vector<bool> directions);
-};
-
-template <typename T>
-void Bitmap_cubical_complex_base<T>::put_data_to_bins(std::size_t number_of_bins) {
- bool dbg = false;
-
- std::pair<T, T> min_max = this->min_max_filtration();
- T dx = (min_max.second - min_max.first) / (T)number_of_bins;
-
- // now put the data into the appropriate bins:
- for (std::size_t i = 0; i != this->data.size(); ++i) {
- if (dbg) {
- std::cerr << "Before binning : " << this->data[i] << std::endl;
- }
- this->data[i] = min_max.first + dx * (this->data[i] - min_max.first) / number_of_bins;
- if (dbg) {
- std::cerr << "After binning : " << this->data[i] << std::endl;
- }
- }
-}
-
-template <typename T>
-void Bitmap_cubical_complex_base<T>::put_data_to_bins(T diameter_of_bin) {
- bool dbg = false;
- std::pair<T, T> min_max = this->min_max_filtration();
-
- std::size_t number_of_bins = (min_max.second - min_max.first) / diameter_of_bin;
- // now put the data into the appropriate bins:
- for (std::size_t i = 0; i != this->data.size(); ++i) {
- if (dbg) {
- std::cerr << "Before binning : " << this->data[i] << std::endl;
- }
- this->data[i] = min_max.first + diameter_of_bin * (this->data[i] - min_max.first) / number_of_bins;
- if (dbg) {
- std::cerr << "After binning : " << this->data[i] << std::endl;
- }
- }
-}
-
-template <typename T>
-std::pair<T, T> Bitmap_cubical_complex_base<T>::min_max_filtration() {
- std::pair<T, T> min_max(std::numeric_limits<T>::infinity(), -std::numeric_limits<T>::infinity());
- for (std::size_t i = 0; i != this->data.size(); ++i) {
- if (this->data[i] < min_max.first) min_max.first = this->data[i];
- if (this->data[i] > min_max.second) min_max.second = this->data[i];
- }
- return min_max;
-}
-
-template <typename K>
-std::ostream& operator<<(std::ostream& out, const Bitmap_cubical_complex_base<K>& b) {
- for (typename Bitmap_cubical_complex_base<K>::all_cells_const_iterator it = b.all_cells_const_begin();
- it != b.all_cells_const_end(); ++it) {
- out << *it << " ";
- }
- return out;
-}
-
-template <typename T>
-Bitmap_cubical_complex_base<T>::Bitmap_cubical_complex_base(const std::vector<unsigned>& sizes) {
- this->set_up_containers(sizes);
-}
-
-template <typename T>
-void Bitmap_cubical_complex_base<T>::setup_bitmap_based_on_top_dimensional_cells_list(
- const std::vector<unsigned>& sizes_in_following_directions, const std::vector<T>& top_dimensional_cells) {
- this->set_up_containers(sizes_in_following_directions);
-
- std::size_t number_of_top_dimensional_elements = 1;
- for (std::size_t i = 0; i != sizes_in_following_directions.size(); ++i) {
- number_of_top_dimensional_elements *= sizes_in_following_directions[i];
- }
- if (number_of_top_dimensional_elements != top_dimensional_cells.size()) {
- std::cerr << "Error in constructor Bitmap_cubical_complex_base ( std::vector<std::size_t> "
- << "sizes_in_following_directions, std::vector<T> top_dimensional_cells ). Number of top dimensional "
- << "elements that follow from sizes_in_following_directions vector is different than the size of "
- << "top_dimensional_cells vector."
- << std::endl;
- throw(
- "Error in constructor Bitmap_cubical_complex_base( std::vector<std::size_t> sizes_in_following_directions,"
- "std::vector<T> top_dimensional_cells ). Number of top dimensional elements that follow from "
- "sizes_in_following_directions vector is different than the size of top_dimensional_cells vector.");
- }
-
- Bitmap_cubical_complex_base<T>::Top_dimensional_cells_iterator it(*this);
- std::size_t index = 0;
- for (it = this->top_dimensional_cells_iterator_begin(); it != this->top_dimensional_cells_iterator_end(); ++it) {
- this->get_cell_data(*it) = top_dimensional_cells[index];
- ++index;
- }
- this->impose_lower_star_filtration();
-}
-
-template <typename T>
-Bitmap_cubical_complex_base<T>::Bitmap_cubical_complex_base(const std::vector<unsigned>& sizes_in_following_directions,
- const std::vector<T>& top_dimensional_cells) {
- this->setup_bitmap_based_on_top_dimensional_cells_list(sizes_in_following_directions, top_dimensional_cells);
-}
-
-template <typename T>
-void Bitmap_cubical_complex_base<T>::read_perseus_style_file(const char* perseus_style_file) {
- bool dbg = false;
- std::ifstream inFiltration;
- inFiltration.open(perseus_style_file);
- unsigned dimensionOfData;
- inFiltration >> dimensionOfData;
-
- if (dbg) {
- std::cerr << "dimensionOfData : " << dimensionOfData << std::endl;
- }
-
- std::vector<unsigned> sizes;
- sizes.reserve(dimensionOfData);
- // all dimensions multiplied
- std::size_t dimensions = 1;
- for (std::size_t i = 0; i != dimensionOfData; ++i) {
- unsigned size_in_this_dimension;
- inFiltration >> size_in_this_dimension;
- sizes.push_back(size_in_this_dimension);
- dimensions *= size_in_this_dimension;
- if (dbg) {
- std::cerr << "size_in_this_dimension : " << size_in_this_dimension << std::endl;
- }
- }
- this->set_up_containers(sizes);
-
- Bitmap_cubical_complex_base<T>::Top_dimensional_cells_iterator it(*this);
- it = this->top_dimensional_cells_iterator_begin();
-
- T filtrationLevel;
- for (std::size_t i = 0; i < dimensions; ++i) {
- if (!(inFiltration >> filtrationLevel) || (inFiltration.eof())) {
- throw std::ios_base::failure("Bad Perseus file format.");
- }
- if (dbg) {
- std::cerr << "Cell of an index : " << it.compute_index_in_bitmap()
- << " and dimension: " << this->get_dimension_of_a_cell(it.compute_index_in_bitmap())
- << " get the value : " << filtrationLevel << std::endl;
- }
- this->get_cell_data(*it) = filtrationLevel;
- ++it;
- }
-
- inFiltration.close();
- this->impose_lower_star_filtration();
-}
-
-template <typename T>
-Bitmap_cubical_complex_base<T>::Bitmap_cubical_complex_base(const char* perseus_style_file,
- std::vector<bool> directions) {
- // this constructor is here just for compatibility with a class that creates cubical complexes with periodic boundary
- // conditions.
- // It ignores the last parameter of the function.
- this->read_perseus_style_file(perseus_style_file);
-}
-
-template <typename T>
-Bitmap_cubical_complex_base<T>::Bitmap_cubical_complex_base(const std::vector<unsigned>& sizes,
- std::vector<bool> directions) {
- // this constructor is here just for compatibility with a class that creates cubical complexes with periodic boundary
- // conditions.
- // It ignores the last parameter of the function.
- this->set_up_containers(sizes);
-}
-
-template <typename T>
-Bitmap_cubical_complex_base<T>::Bitmap_cubical_complex_base(const std::vector<unsigned>& dimensions,
- const std::vector<T>& top_dimensional_cells,
- std::vector<bool> directions) {
- // this constructor is here just for compatibility with a class that creates cubical complexes with periodic boundary
- // conditions.
- // It ignores the last parameter of the function.
- this->setup_bitmap_based_on_top_dimensional_cells_list(dimensions, top_dimensional_cells);
-}
-
-template <typename T>
-Bitmap_cubical_complex_base<T>::Bitmap_cubical_complex_base(const char* perseus_style_file) {
- this->read_perseus_style_file(perseus_style_file);
-}
-
-template <typename T>
-std::vector<std::size_t> Bitmap_cubical_complex_base<T>::get_boundary_of_a_cell(std::size_t cell) const {
- std::vector<std::size_t> boundary_elements;
-
- // Speed traded of for memory. Check if it is better in practice.
- boundary_elements.reserve(this->dimension() * 2);
-
- std::size_t sum_of_dimensions = 0;
- std::size_t cell1 = cell;
- for (std::size_t i = this->multipliers.size(); i != 0; --i) {
- unsigned position = cell1 / this->multipliers[i - 1];
- if (position % 2 == 1) {
- if (sum_of_dimensions % 2) {
- boundary_elements.push_back(cell + this->multipliers[i - 1]);
- boundary_elements.push_back(cell - this->multipliers[i - 1]);
- } else {
- boundary_elements.push_back(cell - this->multipliers[i - 1]);
- boundary_elements.push_back(cell + this->multipliers[i - 1]);
- }
- ++sum_of_dimensions;
- }
- cell1 = cell1 % this->multipliers[i - 1];
- }
-
- return boundary_elements;
-}
-
-template <typename T>
-std::vector<std::size_t> Bitmap_cubical_complex_base<T>::get_coboundary_of_a_cell(std::size_t cell) const {
- std::vector<unsigned> counter = this->compute_counter_for_given_cell(cell);
- std::vector<std::size_t> coboundary_elements;
- std::size_t cell1 = cell;
- for (std::size_t i = this->multipliers.size(); i != 0; --i) {
- unsigned position = cell1 / this->multipliers[i - 1];
- if (position % 2 == 0) {
- if ((cell > this->multipliers[i - 1]) && (counter[i - 1] != 0)) {
- coboundary_elements.push_back(cell - this->multipliers[i - 1]);
- }
- if ((cell + this->multipliers[i - 1] < this->data.size()) && (counter[i - 1] != 2 * this->sizes[i - 1])) {
- coboundary_elements.push_back(cell + this->multipliers[i - 1]);
- }
- }
- cell1 = cell1 % this->multipliers[i - 1];
- }
- return coboundary_elements;
-}
-
-template <typename T>
-unsigned Bitmap_cubical_complex_base<T>::get_dimension_of_a_cell(std::size_t cell) const {
- bool dbg = false;
- if (dbg) std::cerr << "\n\n\n Computing position o a cell of an index : " << cell << std::endl;
- unsigned dimension = 0;
- for (std::size_t i = this->multipliers.size(); i != 0; --i) {
- unsigned position = cell / this->multipliers[i - 1];
-
- if (dbg) {
- std::cerr << "i-1 :" << i - 1 << std::endl;
- std::cerr << "cell : " << cell << std::endl;
- std::cerr << "position : " << position << std::endl;
- std::cerr << "multipliers[" << i - 1 << "] = " << this->multipliers[i - 1] << std::endl;
- }
-
- if (position % 2 == 1) {
- if (dbg) std::cerr << "Nonzero length in this direction \n";
- dimension++;
- }
- cell = cell % this->multipliers[i - 1];
- }
- return dimension;
-}
-
-template <typename T>
-inline T& Bitmap_cubical_complex_base<T>::get_cell_data(std::size_t cell) {
- return this->data[cell];
-}
-
-template <typename T>
-void Bitmap_cubical_complex_base<T>::impose_lower_star_filtration() {
- bool dbg = false;
-
- // this vector will be used to check which elements have already been taken care of in imposing lower star filtration
- std::vector<bool> is_this_cell_considered(this->data.size(), false);
-
- std::size_t size_to_reserve = 1;
- for (std::size_t i = 0; i != this->multipliers.size(); ++i) {
- size_to_reserve *= (std::size_t)((this->multipliers[i] - 1) / 2);
- }
-
- std::vector<std::size_t> indices_to_consider;
- indices_to_consider.reserve(size_to_reserve);
- // we assume here that we already have a filtration on the top dimensional cells and
- // we have to extend it to lower ones.
- typename Bitmap_cubical_complex_base<T>::Top_dimensional_cells_iterator it(*this);
- for (it = this->top_dimensional_cells_iterator_begin(); it != this->top_dimensional_cells_iterator_end(); ++it) {
- indices_to_consider.push_back(it.compute_index_in_bitmap());
- }
-
- while (indices_to_consider.size()) {
- if (dbg) {
- std::cerr << "indices_to_consider in this iteration \n";
- for (std::size_t i = 0; i != indices_to_consider.size(); ++i) {
- std::cout << indices_to_consider[i] << " ";
- }
- }
- std::vector<std::size_t> new_indices_to_consider;
- for (std::size_t i = 0; i != indices_to_consider.size(); ++i) {
- std::vector<std::size_t> bd = this->get_boundary_of_a_cell(indices_to_consider[i]);
- for (std::size_t boundaryIt = 0; boundaryIt != bd.size(); ++boundaryIt) {
- if (dbg) {
- std::cerr << "filtration of a cell : " << bd[boundaryIt] << " is : " << this->data[bd[boundaryIt]]
- << " while of a cell: " << indices_to_consider[i] << " is: " << this->data[indices_to_consider[i]]
- << std::endl;
- }
- if (this->data[bd[boundaryIt]] > this->data[indices_to_consider[i]]) {
- this->data[bd[boundaryIt]] = this->data[indices_to_consider[i]];
- if (dbg) {
- std::cerr << "Setting the value of a cell : " << bd[boundaryIt]
- << " to : " << this->data[indices_to_consider[i]] << std::endl;
- }
- }
- if (is_this_cell_considered[bd[boundaryIt]] == false) {
- new_indices_to_consider.push_back(bd[boundaryIt]);
- is_this_cell_considered[bd[boundaryIt]] = true;
- }
- }
- }
- indices_to_consider.swap(new_indices_to_consider);
- }
-}
-
-template <typename T>
-bool compareFirstElementsOfTuples(const std::pair<std::pair<T, std::size_t>, char>& first,
- const std::pair<std::pair<T, std::size_t>, char>& second) {
- if (first.first.first < second.first.first) {
- return true;
- } else {
- if (first.first.first > second.first.first) {
- return false;
- }
- // in this case first.first.first == second.first.first, so we need to compare dimensions
- return first.second < second.second;
- }
-}
-
-} // namespace cubical_complex
-
-namespace Cubical_complex = cubical_complex;
-
-} // namespace Gudhi
-
-#endif // BITMAP_CUBICAL_COMPLEX_BASE_H_
diff --git a/include/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h b/include/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h
deleted file mode 100644
index 8c35f590..00000000
--- a/include/gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h
+++ /dev/null
@@ -1,396 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef BITMAP_CUBICAL_COMPLEX_PERIODIC_BOUNDARY_CONDITIONS_BASE_H_
-#define BITMAP_CUBICAL_COMPLEX_PERIODIC_BOUNDARY_CONDITIONS_BASE_H_
-
-#include <gudhi/Bitmap_cubical_complex_base.h>
-
-#include <cmath>
-#include <limits> // for numeric_limits<>
-#include <vector>
-#include <stdexcept>
-#include <cstddef>
-
-namespace Gudhi {
-
-namespace cubical_complex {
-
-// in this class, we are storing all the elements which are in normal bitmap (i.e. the bitmap without the periodic
-// boundary conditions). But, we set up the iterators and the procedures to compute boundary and coboundary in the way
-// that it is all right. We assume here that all the cells that are on the left / bottom and so on remains, while all
-// the cells on the right / top are not in the Bitmap_cubical_complex_periodic_boundary_conditions_base
-
-/**
- * @brief Cubical complex with periodic boundary conditions represented as a bitmap.
- * @ingroup cubical_complex
- * @details This is a class implementing a bitmap data structure with periodic boundary conditions. Most of the
- * functions are
- * identical to the functions from Bitmap_cubical_complex_base.
- * The ones that needed to be updated are the constructors and get_boundary_of_a_cell and get_coboundary_of_a_cell.
- */
-template <typename T>
-class Bitmap_cubical_complex_periodic_boundary_conditions_base : public Bitmap_cubical_complex_base<T> {
- public:
- // constructors that take an extra parameter:
-
- /**
- * Default constructor of Bitmap_cubical_complex_periodic_boundary_conditions_base class.
- */
- Bitmap_cubical_complex_periodic_boundary_conditions_base() {}
- /**
- * A constructor of Bitmap_cubical_complex_periodic_boundary_conditions_base class that takes the following
- * parameters: (1) vector with numbers of top dimensional cells in all dimensions and (2) vector of booleans. If
- * at i-th position of this vector there is true value, that means that periodic boundary conditions are to be
- * imposed in this direction. In case of false, the periodic boundary conditions will not be imposed in the direction
- * i.
- */
- Bitmap_cubical_complex_periodic_boundary_conditions_base(
- const std::vector<unsigned>& sizes,
- const std::vector<bool>& directions_in_which_periodic_b_cond_are_to_be_imposed);
- /**
- * A constructor of Bitmap_cubical_complex_periodic_boundary_conditions_base class that takes the name of Perseus
- * style file as an input. Please consult the documentation about the specification of the file.
- */
- Bitmap_cubical_complex_periodic_boundary_conditions_base(const char* perseusStyleFile);
- /**
- * A constructor of Bitmap_cubical_complex_periodic_boundary_conditions_base class that takes the following
- * parameters: (1) vector with numbers of top dimensional cells in all dimensions and (2) vector of top dimensional
- * cells (ordered lexicographically) and (3) vector of booleans. If at i-th position of this vector there is true
- * value, that means that periodic boundary conditions are to be imposed in this direction. In case of false, the
- * periodic boundary conditions will not be imposed in the direction i.
- */
- Bitmap_cubical_complex_periodic_boundary_conditions_base(
- const std::vector<unsigned>& dimensions, const std::vector<T>& topDimensionalCells,
- const std::vector<bool>& directions_in_which_periodic_b_cond_are_to_be_imposed);
-
- /**
- * Destructor of the Bitmap_cubical_complex_periodic_boundary_conditions_base class.
- **/
- virtual ~Bitmap_cubical_complex_periodic_boundary_conditions_base() {}
-
- // overwritten methods co compute boundary and coboundary
- /**
- * A version of a function that return boundary of a given cell for an object of
- * Bitmap_cubical_complex_periodic_boundary_conditions_base class.
- * The boundary elements are guaranteed to be returned so that the
- * incidence coefficients are alternating.
- */
- virtual std::vector<std::size_t> get_boundary_of_a_cell(std::size_t cell) const;
-
- /**
- * A version of a function that return coboundary of a given cell for an object of
- * Bitmap_cubical_complex_periodic_boundary_conditions_base class.
- * Note that unlike in the case of boundary, over here the elements are
- * not guaranteed to be returned with alternating incidence numbers.
- * To compute incidence between cells use compute_incidence_between_cells
- * procedure
- */
- virtual std::vector<std::size_t> get_coboundary_of_a_cell(std::size_t cell) const;
-
- /**
- * This procedure compute incidence numbers between cubes. For a cube \f$A\f$ of
- * dimension n and a cube \f$B \subset A\f$ of dimension n-1, an incidence
- * between \f$A\f$ and \f$B\f$ is the integer with which \f$B\f$ appears in the boundary of \f$A\f$.
- * Note that first parameter is a cube of dimension n,
- * and the second parameter is an adjusted cube in dimension n-1.
- * Given \f$A = [b_1,e_1] \times \ldots \ [b_{j-1},e_{j-1}] \times [b_{j},e_{j}] \times [b_{j+1},e_{j+1}] \times \ldots
- *\times [b_{n},e_{n}] \f$
- * such that \f$ b_{j} \neq e_{j} \f$
- * and \f$B = [b_1,e_1] \times \ldots \ [b_{j-1},e_{j-1}] \times [a,a] \times [b_{j+1},e_{j+1}] \times \ldots \times
- *[b_{n},e_{n}]s \f$
- * where \f$ a = b_{j}\f$ or \f$ a = e_{j}\f$, the incidence between \f$A\f$ and \f$B\f$
- * computed by this procedure is given by formula:
- * \f$ c\ (-1)^{\sum_{i=1}^{j-1} dim [b_{i},e_{i}]} \f$
- * Where \f$ dim [b_{i},e_{i}] = 0 \f$ if \f$ b_{i}=e_{i} \f$ and 1 in other case.
- * c is -1 if \f$ a = b_{j}\f$ and 1 if \f$ a = e_{j}\f$.
- * @exception std::logic_error In case when the cube \f$B\f$ is not n-1
- * dimensional face of a cube \f$A\f$.
- **/
- virtual int compute_incidence_between_cells(std::size_t coface, std::size_t face) {
- // first get the counters for coface and face:
- std::vector<unsigned> coface_counter = this->compute_counter_for_given_cell(coface);
- std::vector<unsigned> face_counter = this->compute_counter_for_given_cell(face);
-
- // coface_counter and face_counter should agree at all positions except from one:
- int number_of_position_in_which_counters_do_not_agree = -1;
- std::size_t number_of_full_faces_that_comes_before = 0;
- for (std::size_t i = 0; i != coface_counter.size(); ++i) {
- if ((coface_counter[i] % 2 == 1) && (number_of_position_in_which_counters_do_not_agree == -1)) {
- ++number_of_full_faces_that_comes_before;
- }
- if (coface_counter[i] != face_counter[i]) {
- if (number_of_position_in_which_counters_do_not_agree != -1) {
- std::cout << "Cells given to compute_incidence_between_cells procedure do not form a pair of coface-face.\n";
- throw std::logic_error(
- "Cells given to compute_incidence_between_cells procedure do not form a pair of coface-face.");
- }
- number_of_position_in_which_counters_do_not_agree = i;
- }
- }
-
- int incidence = 1;
- if (number_of_full_faces_that_comes_before % 2) incidence = -1;
- // if the face cell is on the right from coface cell:
- if ((coface_counter[number_of_position_in_which_counters_do_not_agree] + 1 ==
- face_counter[number_of_position_in_which_counters_do_not_agree]) ||
- ((coface_counter[number_of_position_in_which_counters_do_not_agree] != 1) &&
- (face_counter[number_of_position_in_which_counters_do_not_agree] == 0))) {
- incidence *= -1;
- }
-
- return incidence;
- }
-
- protected:
- std::vector<bool> directions_in_which_periodic_b_cond_are_to_be_imposed;
-
- void set_up_containers(const std::vector<unsigned>& sizes) {
- unsigned multiplier = 1;
- for (std::size_t i = 0; i != sizes.size(); ++i) {
- this->sizes.push_back(sizes[i]);
- this->multipliers.push_back(multiplier);
-
- if (directions_in_which_periodic_b_cond_are_to_be_imposed[i]) {
- multiplier *= 2 * sizes[i];
- } else {
- multiplier *= 2 * sizes[i] + 1;
- }
- }
- // std::reverse( this->sizes.begin() , this->sizes.end() );
- this->data = std::vector<T>(multiplier, std::numeric_limits<T>::infinity());
- this->total_number_of_cells = multiplier;
- }
- Bitmap_cubical_complex_periodic_boundary_conditions_base(const std::vector<unsigned>& sizes);
- Bitmap_cubical_complex_periodic_boundary_conditions_base(const std::vector<unsigned>& dimensions,
- const std::vector<T>& topDimensionalCells);
-
- /**
- * A procedure used to construct the data structures in the class.
- **/
- void construct_complex_based_on_top_dimensional_cells(
- const std::vector<unsigned>& dimensions, const std::vector<T>& topDimensionalCells,
- const std::vector<bool>& directions_in_which_periodic_b_cond_are_to_be_imposed);
-};
-
-template <typename T>
-void Bitmap_cubical_complex_periodic_boundary_conditions_base<T>::construct_complex_based_on_top_dimensional_cells(
- const std::vector<unsigned>& dimensions, const std::vector<T>& topDimensionalCells,
- const std::vector<bool>& directions_in_which_periodic_b_cond_are_to_be_imposed) {
- this->directions_in_which_periodic_b_cond_are_to_be_imposed = directions_in_which_periodic_b_cond_are_to_be_imposed;
- this->set_up_containers(dimensions);
-
- std::size_t i = 0;
- for (auto it = this->top_dimensional_cells_iterator_begin(); it != this->top_dimensional_cells_iterator_end(); ++it) {
- this->get_cell_data(*it) = topDimensionalCells[i];
- ++i;
- }
- this->impose_lower_star_filtration();
-}
-
-template <typename T>
-Bitmap_cubical_complex_periodic_boundary_conditions_base<T>::Bitmap_cubical_complex_periodic_boundary_conditions_base(
- const std::vector<unsigned>& sizes,
- const std::vector<bool>& directions_in_which_periodic_b_cond_are_to_be_imposed) {
- this->directions_in_which_periodic_b_cond_are_to_be_imposed(directions_in_which_periodic_b_cond_are_to_be_imposed);
- this->set_up_containers(sizes);
-}
-
-template <typename T>
-Bitmap_cubical_complex_periodic_boundary_conditions_base<T>::Bitmap_cubical_complex_periodic_boundary_conditions_base(
- const char* perseus_style_file) {
- // for Perseus style files:
- bool dbg = false;
-
- std::ifstream inFiltration;
- inFiltration.open(perseus_style_file);
- unsigned dimensionOfData;
- inFiltration >> dimensionOfData;
-
- this->directions_in_which_periodic_b_cond_are_to_be_imposed = std::vector<bool>(dimensionOfData, false);
-
- std::vector<unsigned> sizes;
- sizes.reserve(dimensionOfData);
- for (std::size_t i = 0; i != dimensionOfData; ++i) {
- int size_in_this_dimension;
- inFiltration >> size_in_this_dimension;
- if (size_in_this_dimension < 0) {
- this->directions_in_which_periodic_b_cond_are_to_be_imposed[i] = true;
- }
- sizes.push_back(abs(size_in_this_dimension));
- }
- this->set_up_containers(sizes);
-
- typename Bitmap_cubical_complex_periodic_boundary_conditions_base<T>::Top_dimensional_cells_iterator it(*this);
- it = this->top_dimensional_cells_iterator_begin();
-
- while (!inFiltration.eof()) {
- double filtrationLevel;
- inFiltration >> filtrationLevel;
- if (inFiltration.eof()) break;
-
- if (dbg) {
- std::cerr << "Cell of an index : " << it.compute_index_in_bitmap()
- << " and dimension: " << this->get_dimension_of_a_cell(it.compute_index_in_bitmap())
- << " get the value : " << filtrationLevel << std::endl;
- }
- this->get_cell_data(*it) = filtrationLevel;
- ++it;
- }
- inFiltration.close();
- this->impose_lower_star_filtration();
-}
-
-template <typename T>
-Bitmap_cubical_complex_periodic_boundary_conditions_base<T>::Bitmap_cubical_complex_periodic_boundary_conditions_base(
- const std::vector<unsigned>& sizes) {
- this->directions_in_which_periodic_b_cond_are_to_be_imposed = std::vector<bool>(sizes.size(), false);
- this->set_up_containers(sizes);
-}
-
-template <typename T>
-Bitmap_cubical_complex_periodic_boundary_conditions_base<T>::Bitmap_cubical_complex_periodic_boundary_conditions_base(
- const std::vector<unsigned>& dimensions, const std::vector<T>& topDimensionalCells) {
- std::vector<bool> directions_in_which_periodic_b_cond_are_to_be_imposed = std::vector<bool>(dimensions.size(), false);
- this->construct_complex_based_on_top_dimensional_cells(dimensions, topDimensionalCells,
- directions_in_which_periodic_b_cond_are_to_be_imposed);
-}
-
-template <typename T>
-Bitmap_cubical_complex_periodic_boundary_conditions_base<T>::Bitmap_cubical_complex_periodic_boundary_conditions_base(
- const std::vector<unsigned>& dimensions, const std::vector<T>& topDimensionalCells,
- const std::vector<bool>& directions_in_which_periodic_b_cond_are_to_be_imposed) {
- this->construct_complex_based_on_top_dimensional_cells(dimensions, topDimensionalCells,
- directions_in_which_periodic_b_cond_are_to_be_imposed);
-}
-
-// ***********************Methods************************ //
-
-template <typename T>
-std::vector<std::size_t> Bitmap_cubical_complex_periodic_boundary_conditions_base<T>::get_boundary_of_a_cell(
- std::size_t cell) const {
- bool dbg = false;
- if (dbg) {
- std::cerr << "Computations of boundary of a cell : " << cell << std::endl;
- }
-
- std::vector<std::size_t> boundary_elements;
- boundary_elements.reserve(this->dimension() * 2);
- std::size_t cell1 = cell;
- std::size_t sum_of_dimensions = 0;
-
- for (std::size_t i = this->multipliers.size(); i != 0; --i) {
- unsigned position = cell1 / this->multipliers[i - 1];
- // this cell have a nonzero length in this direction, therefore we can compute its boundary in this direction.
- if (position % 2 == 1) {
- // if there are no periodic boundary conditions in this direction, we do not have to do anything.
- if (!directions_in_which_periodic_b_cond_are_to_be_imposed[i - 1]) {
- // std::cerr << "A\n";
- if (sum_of_dimensions % 2) {
- boundary_elements.push_back(cell - this->multipliers[i - 1]);
- boundary_elements.push_back(cell + this->multipliers[i - 1]);
- } else {
- boundary_elements.push_back(cell + this->multipliers[i - 1]);
- boundary_elements.push_back(cell - this->multipliers[i - 1]);
- }
- if (dbg) {
- std::cerr << cell - this->multipliers[i - 1] << " " << cell + this->multipliers[i - 1] << " ";
- }
- } else {
- // in this direction we have to do boundary conditions. Therefore, we need to check if we are not at the end.
- if (position != 2 * this->sizes[i - 1] - 1) {
- // std::cerr << "B\n";
- if (sum_of_dimensions % 2) {
- boundary_elements.push_back(cell - this->multipliers[i - 1]);
- boundary_elements.push_back(cell + this->multipliers[i - 1]);
- } else {
- boundary_elements.push_back(cell + this->multipliers[i - 1]);
- boundary_elements.push_back(cell - this->multipliers[i - 1]);
- }
- if (dbg) {
- std::cerr << cell - this->multipliers[i - 1] << " " << cell + this->multipliers[i - 1] << " ";
- }
- } else {
- // std::cerr << "C\n";
- if (sum_of_dimensions % 2) {
- boundary_elements.push_back(cell - this->multipliers[i - 1]);
- boundary_elements.push_back(cell - (2 * this->sizes[i - 1] - 1) * this->multipliers[i - 1]);
- } else {
- boundary_elements.push_back(cell - (2 * this->sizes[i - 1] - 1) * this->multipliers[i - 1]);
- boundary_elements.push_back(cell - this->multipliers[i - 1]);
- }
- if (dbg) {
- std::cerr << cell - this->multipliers[i - 1] << " "
- << cell - (2 * this->sizes[i - 1] - 1) * this->multipliers[i - 1] << " ";
- }
- }
- }
- ++sum_of_dimensions;
- }
- cell1 = cell1 % this->multipliers[i - 1];
- }
- return boundary_elements;
-}
-
-template <typename T>
-std::vector<std::size_t> Bitmap_cubical_complex_periodic_boundary_conditions_base<T>::get_coboundary_of_a_cell(
- std::size_t cell) const {
- std::vector<unsigned> counter = this->compute_counter_for_given_cell(cell);
- std::vector<std::size_t> coboundary_elements;
- std::size_t cell1 = cell;
- for (std::size_t i = this->multipliers.size(); i != 0; --i) {
- unsigned position = cell1 / this->multipliers[i - 1];
- // if the cell has zero length in this direction, then it will have cbd in this direction.
- if (position % 2 == 0) {
- if (!this->directions_in_which_periodic_b_cond_are_to_be_imposed[i - 1]) {
- // no periodic boundary conditions in this direction
- if ((counter[i - 1] != 0) && (cell > this->multipliers[i - 1])) {
- coboundary_elements.push_back(cell - this->multipliers[i - 1]);
- }
- if ((counter[i - 1] != 2 * this->sizes[i - 1]) && (cell + this->multipliers[i - 1] < this->data.size())) {
- coboundary_elements.push_back(cell + this->multipliers[i - 1]);
- }
- } else {
- // we want to have periodic boundary conditions in this direction
- if (counter[i - 1] != 0) {
- coboundary_elements.push_back(cell - this->multipliers[i - 1]);
- coboundary_elements.push_back(cell + this->multipliers[i - 1]);
- } else {
- // in this case counter[i-1] == 0.
- coboundary_elements.push_back(cell + this->multipliers[i - 1]);
- coboundary_elements.push_back(cell + (2 * this->sizes[i - 1] - 1) * this->multipliers[i - 1]);
- }
- }
- }
-
- cell1 = cell1 % this->multipliers[i - 1];
- }
- return coboundary_elements;
-}
-
-} // namespace cubical_complex
-
-namespace Cubical_complex = cubical_complex;
-
-} // namespace Gudhi
-
-#endif // BITMAP_CUBICAL_COMPLEX_PERIODIC_BOUNDARY_CONDITIONS_BASE_H_
diff --git a/include/gudhi/Bottleneck.h b/include/gudhi/Bottleneck.h
deleted file mode 100644
index 7a553006..00000000
--- a/include/gudhi/Bottleneck.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author: Francois Godi
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef BOTTLENECK_H_
-#define BOTTLENECK_H_
-
-#include <gudhi/Graph_matching.h>
-
-#include <vector>
-#include <algorithm> // for max
-#include <limits> // for numeric_limits
-
-#include <cmath>
-#include <cfloat> // FLT_EVAL_METHOD
-
-namespace Gudhi {
-
-namespace persistence_diagram {
-
-inline double bottleneck_distance_approx(Persistence_graph& g, double e) {
- double b_lower_bound = 0.;
- double b_upper_bound = g.diameter_bound();
- const double alpha = std::pow(g.size(), 1. / 5.);
- Graph_matching m(g);
- Graph_matching biggest_unperfect(g);
- while (b_upper_bound - b_lower_bound > 2 * e) {
- double step = b_lower_bound + (b_upper_bound - b_lower_bound) / alpha;
-#if !defined FLT_EVAL_METHOD || FLT_EVAL_METHOD < 0 || FLT_EVAL_METHOD > 1
- // On platforms where double computation is done with excess precision,
- // we force it to its true precision so the following test is reliable.
- volatile double drop_excess_precision = step;
- step = drop_excess_precision;
- // Alternative: step = CGAL::IA_force_to_double(step);
-#endif
- if (step <= b_lower_bound || step >= b_upper_bound) // Avoid precision problem
- break;
- m.set_r(step);
- while (m.multi_augment()) {} // compute a maximum matching (in the graph corresponding to the current r)
- if (m.perfect()) {
- m = biggest_unperfect;
- b_upper_bound = step;
- } else {
- biggest_unperfect = m;
- b_lower_bound = step;
- }
- }
- return (b_lower_bound + b_upper_bound) / 2.;
-}
-
-inline double bottleneck_distance_exact(Persistence_graph& g) {
- std::vector<double> sd = g.sorted_distances();
- long lower_bound_i = 0;
- long upper_bound_i = sd.size() - 1;
- const double alpha = std::pow(g.size(), 1. / 5.);
- Graph_matching m(g);
- Graph_matching biggest_unperfect(g);
- while (lower_bound_i != upper_bound_i) {
- long step = lower_bound_i + static_cast<long> ((upper_bound_i - lower_bound_i - 1) / alpha);
- m.set_r(sd.at(step));
- while (m.multi_augment()) {} // compute a maximum matching (in the graph corresponding to the current r)
- if (m.perfect()) {
- m = biggest_unperfect;
- upper_bound_i = step;
- } else {
- biggest_unperfect = m;
- lower_bound_i = step + 1;
- }
- }
- return sd.at(lower_bound_i);
-}
-
-/** \brief Function to compute the Bottleneck distance between two persistence diagrams.
- *
- * \tparam Persistence_diagram1,Persistence_diagram2
- * models of the concept `PersistenceDiagram`.
- * \param[in] e
- * \parblock
- * If `e` is 0, this uses an expensive algorithm to compute the exact distance.
- *
- * If `e` is not 0, it asks for an additive `e`-approximation, and currently
- * also allows a small multiplicative error (the last 2 or 3 bits of the
- * mantissa may be wrong). This version of the algorithm takes advantage of the
- * limited precision of `double` and is usually a lot faster to compute,
- * whatever the value of `e`.
- *
- * Thus, by default, `e` is the smallest positive double.
- * \endparblock
- *
- * \ingroup bottleneck_distance
- */
-template<typename Persistence_diagram1, typename Persistence_diagram2>
-double bottleneck_distance(const Persistence_diagram1 &diag1, const Persistence_diagram2 &diag2,
- double e = (std::numeric_limits<double>::min)()) {
- Persistence_graph g(diag1, diag2, e);
- if (g.bottleneck_alive() == std::numeric_limits<double>::infinity())
- return std::numeric_limits<double>::infinity();
- return (std::max)(g.bottleneck_alive(), e == 0. ? bottleneck_distance_exact(g) : bottleneck_distance_approx(g, e));
-}
-
-} // namespace persistence_diagram
-
-} // namespace Gudhi
-
-#endif // BOTTLENECK_H_
diff --git a/include/gudhi/Cech_complex.h b/include/gudhi/Cech_complex.h
deleted file mode 100644
index f9b8a269..00000000
--- a/include/gudhi/Cech_complex.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2018 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CECH_COMPLEX_H_
-#define CECH_COMPLEX_H_
-
-#include <gudhi/distance_functions.h> // for Gudhi::Minimal_enclosing_ball_radius
-#include <gudhi/graph_simplicial_complex.h> // for Gudhi::Proximity_graph
-#include <gudhi/Debug_utils.h> // for GUDHI_CHECK
-#include <gudhi/Cech_complex_blocker.h> // for Gudhi::cech_complex::Cech_blocker
-
-#include <iostream>
-#include <stdexcept> // for exception management
-#include <vector>
-
-namespace Gudhi {
-
-namespace cech_complex {
-
-/**
- * \class Cech_complex
- * \brief Cech complex data structure.
- *
- * \ingroup cech_complex
- *
- * \details
- * The data structure is a proximity graph, containing edges when the edge length is less or equal
- * to a given max_radius. Edge length is computed from `Gudhi::Minimal_enclosing_ball_radius` distance function.
- *
- * \tparam SimplicialComplexForProximityGraph furnishes `Vertex_handle` and `Filtration_value` type definition required
- * by `Gudhi::Proximity_graph`.
- *
- * \tparam ForwardPointRange must be a range for which `std::begin()` and `std::end()` methods return input
- * iterators on a point. `std::begin()` and `std::end()` methods are also required for a point.
- */
-template <typename SimplicialComplexForProximityGraph, typename ForwardPointRange>
-class Cech_complex {
- private:
- // Required by compute_proximity_graph
- using Vertex_handle = typename SimplicialComplexForProximityGraph::Vertex_handle;
- using Filtration_value = typename SimplicialComplexForProximityGraph::Filtration_value;
- using Proximity_graph = Gudhi::Proximity_graph<SimplicialComplexForProximityGraph>;
-
- // Retrieve Coordinate type from ForwardPointRange
- using Point_from_range_iterator = typename boost::range_const_iterator<ForwardPointRange>::type;
- using Point_from_range = typename std::iterator_traits<Point_from_range_iterator>::value_type;
- using Coordinate_iterator = typename boost::range_const_iterator<Point_from_range>::type;
- using Coordinate = typename std::iterator_traits<Coordinate_iterator>::value_type;
-
- public:
- // Point and Point_cloud type definition
- using Point = std::vector<Coordinate>;
- using Point_cloud = std::vector<Point>;
-
- public:
- /** \brief Cech_complex constructor from a list of points.
- *
- * @param[in] points Range of points.
- * @param[in] max_radius Maximal radius value.
- *
- * \tparam ForwardPointRange must be a range of Point. Point must be a range of <b>copyable</b> Cartesian coordinates.
- *
- */
- Cech_complex(const ForwardPointRange& points, Filtration_value max_radius) : max_radius_(max_radius) {
- // Point cloud deep copy
- point_cloud_.reserve(boost::size(points));
- for (auto&& point : points) point_cloud_.emplace_back(std::begin(point), std::end(point));
-
- cech_skeleton_graph_ = Gudhi::compute_proximity_graph<SimplicialComplexForProximityGraph>(
- point_cloud_, max_radius_, Gudhi::Minimal_enclosing_ball_radius());
- }
-
- /** \brief Initializes the simplicial complex from the proximity graph and expands it until a given maximal
- * dimension, using the Cech blocker oracle.
- *
- * @param[in] complex SimplicialComplexForCech to be created.
- * @param[in] dim_max graph expansion until this given maximal dimension.
- * @exception std::invalid_argument In debug mode, if `complex.num_vertices()` does not return 0.
- *
- */
- template <typename SimplicialComplexForCechComplex>
- void create_complex(SimplicialComplexForCechComplex& complex, int dim_max) {
- GUDHI_CHECK(complex.num_vertices() == 0,
- std::invalid_argument("Cech_complex::create_complex - simplicial complex is not empty"));
-
- // insert the proximity graph in the simplicial complex
- complex.insert_graph(cech_skeleton_graph_);
- // expand the graph until dimension dim_max
- complex.expansion_with_blockers(dim_max,
- Cech_blocker<SimplicialComplexForCechComplex, Cech_complex>(&complex, this));
- }
-
- /** @return max_radius value given at construction. */
- Filtration_value max_radius() const { return max_radius_; }
-
- /** @param[in] vertex Point position in the range.
- * @return The point.
- */
- const Point& get_point(Vertex_handle vertex) const { return point_cloud_[vertex]; }
-
- private:
- Proximity_graph cech_skeleton_graph_;
- Filtration_value max_radius_;
- Point_cloud point_cloud_;
-};
-
-} // namespace cech_complex
-
-} // namespace Gudhi
-
-#endif // CECH_COMPLEX_H_
diff --git a/include/gudhi/Cech_complex_blocker.h b/include/gudhi/Cech_complex_blocker.h
deleted file mode 100644
index b0d347b1..00000000
--- a/include/gudhi/Cech_complex_blocker.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2018 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CECH_COMPLEX_BLOCKER_H_
-#define CECH_COMPLEX_BLOCKER_H_
-
-#include <gudhi/distance_functions.h> // for Gudhi::Minimal_enclosing_ball_radius
-
-#include <iostream>
-#include <vector>
-#include <cmath> // for std::sqrt
-
-namespace Gudhi {
-
-namespace cech_complex {
-
-/** \internal
- * \class Cech_blocker
- * \brief Čech complex blocker.
- *
- * \ingroup cech_complex
- *
- * \details
- * Čech blocker is an oracle constructed from a Cech_complex and a simplicial complex.
- *
- * \tparam SimplicialComplexForProximityGraph furnishes `Simplex_handle` and `Filtration_value` type definition,
- * `simplex_vertex_range(Simplex_handle sh)`and `assign_filtration(Simplex_handle sh, Filtration_value filt)` methods.
- *
- * \tparam Chech_complex is required by the blocker.
- */
-template <typename SimplicialComplexForCech, typename Cech_complex>
-class Cech_blocker {
- private:
- using Point_cloud = typename Cech_complex::Point_cloud;
-
- using Simplex_handle = typename SimplicialComplexForCech::Simplex_handle;
- using Filtration_value = typename SimplicialComplexForCech::Filtration_value;
-
- public:
- /** \internal \brief Čech complex blocker operator() - the oracle - assigns the filtration value from the simplex
- * radius and returns if the simplex expansion must be blocked.
- * \param[in] sh The Simplex_handle.
- * \return true if the simplex radius is greater than the Cech_complex max_radius*/
- bool operator()(Simplex_handle sh) {
- Point_cloud points;
- for (auto vertex : sc_ptr_->simplex_vertex_range(sh)) {
- points.push_back(cc_ptr_->get_point(vertex));
-#ifdef DEBUG_TRACES
- std::cout << "#(" << vertex << ")#";
-#endif // DEBUG_TRACES
- }
- Filtration_value radius = Gudhi::Minimal_enclosing_ball_radius()(points);
-#ifdef DEBUG_TRACES
- if (radius > cc_ptr_->max_radius()) std::cout << "radius > max_radius => expansion is blocked\n";
-#endif // DEBUG_TRACES
- sc_ptr_->assign_filtration(sh, radius);
- return (radius > cc_ptr_->max_radius());
- }
-
- /** \internal \brief Čech complex blocker constructor. */
- Cech_blocker(SimplicialComplexForCech* sc_ptr, Cech_complex* cc_ptr) : sc_ptr_(sc_ptr), cc_ptr_(cc_ptr) {}
-
- private:
- SimplicialComplexForCech* sc_ptr_;
- Cech_complex* cc_ptr_;
-};
-
-} // namespace cech_complex
-
-} // namespace Gudhi
-
-#endif // CECH_COMPLEX_BLOCKER_H_
diff --git a/include/gudhi/Clock.h b/include/gudhi/Clock.h
deleted file mode 100644
index cdf18cb2..00000000
--- a/include/gudhi/Clock.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CLOCK_H_
-#define CLOCK_H_
-
-#include <iostream>
-#include <string>
-#include <chrono>
-
-namespace Gudhi {
-
-class Clock {
- public:
- // Construct and start the timer
- Clock(const std::string& msg_ = std::string())
- : startTime(std::chrono::system_clock::now()),
- end_called(false),
- msg(msg_) { }
-
- // Restart the timer
- void begin() const {
- end_called = false;
- startTime = std::chrono::system_clock::now();
- }
-
- // Stop the timer
- void end() const {
- end_called = true;
- endTime = std::chrono::system_clock::now();
- }
-
- std::string message() const {
- return msg;
- }
-
- // Print current value to std::cout
- void print() const {
- std::cout << *this << std::endl;
- }
-
- friend std::ostream& operator<<(std::ostream& stream, const Clock& clock) {
- if (!clock.msg.empty())
- stream << clock.msg << ": ";
-
- stream << clock.num_seconds() << "s\n";
- return stream;
- }
-
- // Get the number of seconds between the timer start and:
- // - the last call of end() if it was called
- // - or now otherwise. In this case, the timer is not stopped.
- double num_seconds() const {
- if (!end_called) {
- auto end = std::chrono::system_clock::now();
- return std::chrono::duration_cast<std::chrono::milliseconds>(end-startTime).count() / 1000.;
- } else {
- return std::chrono::duration_cast<std::chrono::milliseconds>(endTime-startTime).count() / 1000.;
- }
- }
-
- private:
- mutable std::chrono::time_point<std::chrono::system_clock> startTime, endTime;
- mutable bool end_called;
- std::string msg;
-};
-
-} // namespace Gudhi
-
-#endif // CLOCK_H_
diff --git a/include/gudhi/Contraction/CGAL_queue/Modifiable_priority_queue.h b/include/gudhi/Contraction/CGAL_queue/Modifiable_priority_queue.h
deleted file mode 100644
index 5a55c513..00000000
--- a/include/gudhi/Contraction/CGAL_queue/Modifiable_priority_queue.h
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (c) 2006-2011 GeometryFactory (France). All rights reserved.
-//
-// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public License as
-// published by the Free Software Foundation; either version 3 of the License,
-// or (at your option) any later version.
-//
-// Licensees holding a valid commercial license may use this file in
-// accordance with the commercial license agreement provided with the software.
-//
-// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// $URL$
-// $Id$
-//
-// Author(s) : Fernando Cacciola <fernando.cacciola@geometryfactory.com>
-//
-#ifndef CONTRACTION_CGAL_QUEUE_MODIFIABLE_PRIORITY_QUEUE_H_
-#define CONTRACTION_CGAL_QUEUE_MODIFIABLE_PRIORITY_QUEUE_H_
-
-#define CGAL_SURFACE_MESH_SIMPLIFICATION_USE_RELAXED_HEAP
-
-#include <boost/optional.hpp>
-#include <boost/pending/relaxed_heap.hpp>
-
-#include <climits> // Neeeded by the following Boost header for CHAR_BIT.
-#include <functional> // for less
-
-namespace CGAL {
-
-template <class IndexedType_, class Compare_ = std::less<IndexedType_>, class ID_ = boost::identity_property_map>
-class Modifiable_priority_queue {
- public:
- typedef Modifiable_priority_queue Self;
-
- typedef IndexedType_ IndexedType;
- typedef Compare_ Compare;
- typedef ID_ ID;
-
- typedef boost::relaxed_heap<IndexedType, Compare, ID> Heap;
- typedef typename Heap::value_type value_type;
- typedef typename Heap::size_type size_type;
-
- typedef bool handle;
-
- public:
- Modifiable_priority_queue(size_type largest_ID, Compare const& c, ID const& id) : mHeap(largest_ID, c, id) { }
-
- handle push(value_type const& v) {
- mHeap.push(v);
- return handle(true);
- }
-
- handle update(value_type const& v, handle h) {
- mHeap.update(v);
- return h;
- }
-
- handle erase(value_type const& v, handle) {
- mHeap.remove(v);
- return null_handle();
- }
-
- value_type top() const {
- return mHeap.top();
- }
-
- void pop() {
- mHeap.pop();
- }
-
- bool empty() const {
- return mHeap.empty();
- }
-
- bool contains(value_type const& v) {
- return mHeap.contains(v);
- }
-
- boost::optional<value_type> extract_top() {
- boost::optional<value_type> r;
- if (!empty()) {
- value_type v = top();
- pop();
- r = boost::optional<value_type>(v);
- }
- return r;
- }
-
- static handle null_handle() {
- return handle(false);
- }
-
- private:
- Heap mHeap;
-};
-
-} // namespace CGAL
-
-#endif // CONTRACTION_CGAL_QUEUE_MODIFIABLE_PRIORITY_QUEUE_H_
diff --git a/include/gudhi/Contraction/Edge_profile.h b/include/gudhi/Contraction/Edge_profile.h
deleted file mode 100644
index 30b1b80a..00000000
--- a/include/gudhi/Contraction/Edge_profile.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONTRACTION_EDGE_PROFILE_H_
-#define CONTRACTION_EDGE_PROFILE_H_
-
-#include <ostream>
-
-namespace Gudhi {
-
-namespace contraction {
-
-template<typename GeometricSimplifiableComplex> class Edge_profile {
- public:
- typedef GeometricSimplifiableComplex Complex;
- typedef typename Complex::GT GT;
-
- typedef typename GeometricSimplifiableComplex::Vertex_handle Vertex_handle;
- typedef typename GeometricSimplifiableComplex::Root_vertex_handle Root_vertex_handle;
-
-
- typedef typename GeometricSimplifiableComplex::Edge_handle Edge_handle;
- typedef typename GeometricSimplifiableComplex::Graph_vertex Graph_vertex;
- typedef typename GeometricSimplifiableComplex::Graph_edge Graph_edge;
- typedef typename GeometricSimplifiableComplex::Point Point;
-
- Edge_profile(GeometricSimplifiableComplex& complex, Edge_handle edge) : complex_(complex), edge_handle_(edge),
- v0_(complex_.first_vertex(edge_handle_)), v1_(complex_.second_vertex(edge_handle_)) {
- assert(complex_.get_address(complex_[edge_handle_].first()));
- assert(complex_.get_address(complex_[edge_handle_].second()));
- assert(complex_.contains_edge(v0_handle(), v1_handle()));
- assert(v0_handle() != v1_handle());
- }
-
- virtual ~Edge_profile() { }
-
- GeometricSimplifiableComplex& complex() const {
- return complex_;
- }
-
- Edge_handle edge_handle() const {
- return edge_handle_;
- }
-
- Graph_edge& edge() const {
- return complex_[edge_handle_];
- }
-
- Graph_vertex& v0() const {
- return complex_[v0_handle()];
- }
-
- Graph_vertex& v1() const {
- return complex_[v1_handle()];
- }
-
- Vertex_handle v0_handle() const {
- return v0_;
- // Root_vertex_handle root = complex_[edge_handle_].first();
- // assert(complex_.get_address(root));
- // return *complex_.get_address(root);
- }
-
- Vertex_handle v1_handle() const {
- return v1_;
- // Root_vertex_handle root = complex_[edge_handle_].second();
- // assert(complex_.get_address(root));
- // return *complex_.get_address(root);
- }
-
- const Point& p0() const {
- return complex_.point(v0_handle());
- }
-
- const Point& p1() const {
- return complex_.point(v1_handle());
- }
-
- friend std::ostream& operator<<(std::ostream& o, const Edge_profile& v) {
- return o << "v0:" << v.v0_handle() << " v1:" << v.v1_handle();
- }
-
- private:
- GeometricSimplifiableComplex& complex_;
-
- Edge_handle edge_handle_;
-
- Vertex_handle v0_;
-
- Vertex_handle v1_;
-};
-
-template<typename EdgeProfile> class Edge_profile_factory {
- public:
- typedef typename EdgeProfile::Edge_handle Edge_handle_;
- typedef typename EdgeProfile::Complex Complex_;
-
- virtual EdgeProfile make_profile(
- Complex_& complex,
- Edge_handle_ edge) const {
- return EdgeProfile(complex, edge);
- }
-
- virtual ~Edge_profile_factory() { }
-};
-
-} // namespace contraction
-
-} // namespace Gudhi
-
-#endif // CONTRACTION_EDGE_PROFILE_H_
diff --git a/include/gudhi/Contraction/policies/Contraction_visitor.h b/include/gudhi/Contraction/policies/Contraction_visitor.h
deleted file mode 100644
index fa02308b..00000000
--- a/include/gudhi/Contraction/policies/Contraction_visitor.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONTRACTION_POLICIES_CONTRACTION_VISITOR_H_
-#define CONTRACTION_POLICIES_CONTRACTION_VISITOR_H_
-
-#include <gudhi/Contraction/Edge_profile.h>
-#include <boost/optional.hpp>
-
-namespace Gudhi {
-
-namespace contraction {
-
-/**
- *@class Contraction_visitor
- *@brief Interface for a visitor of the edge contraction process.
- *@ingroup contr
- */
-template <typename EdgeProfile>
-class Contraction_visitor { // : public Dummy_complex_visitor<typename EdgeProfile::Vertex_handle> {
- public:
- // typedef typename ComplexType::GeometryTrait GT;
- typedef EdgeProfile Profile;
- typedef double FT;
- typedef typename Profile::Complex Complex;
- typedef Complex ComplexType;
- typedef typename ComplexType::Point Point;
-
- virtual ~Contraction_visitor() { }
-
- /**
- * @brief Called before the edge contraction process starts.
- */
- virtual void on_started(ComplexType & complex) { }
-
- /**
- * @brief Called when the algorithm stops.
- */
- virtual void on_stop_condition_reached() { }
-
- /**
- * @brief Called during the collecting phase (when a cost is assigned to the edges), for each edge collected.
- */
- virtual void on_collected(const Profile &profile, boost::optional< FT > cost) { }
-
- /**
- * @brief Called during the processing phase (when edges are contracted), for each edge that is selected.
- */
- virtual void on_selected(const Profile &profile, boost::optional< FT > cost, int initial_count, int current_count) { }
-
- /**
- * @brief Called when an edge is about to be contracted and replaced by a vertex whose position is *placement.
- */
- virtual void on_contracting(const Profile &profile, boost::optional< Point > placement) { }
-
- /**
- * @brief Called when after an edge has been contracted onto a new point placement.
- * A possibility would to remove popable blockers at this point for instance.
- */
- virtual void on_contracted(const Profile &profile, boost::optional< Point > placement) { }
-
- /**
- * @brief Called for each selected edge which cannot be contracted because the ValidContractionPredicate is false
- */
- virtual void on_non_valid(const Profile &profile) { }
-};
-
-} // namespace contraction
-
-} // namespace Gudhi
-
-#endif // CONTRACTION_POLICIES_CONTRACTION_VISITOR_H_
diff --git a/include/gudhi/Contraction/policies/Cost_policy.h b/include/gudhi/Contraction/policies/Cost_policy.h
deleted file mode 100644
index 04ce36b6..00000000
--- a/include/gudhi/Contraction/policies/Cost_policy.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONTRACTION_POLICIES_COST_POLICY_H_
-#define CONTRACTION_POLICIES_COST_POLICY_H_
-
-#include <boost/optional.hpp>
-
-namespace Gudhi {
-
-namespace contraction {
-
-/**
- *@brief Policy to specify the cost of contracting an edge.
- *@ingroup contr
- */
-template< typename EdgeProfile>
-class Cost_policy {
- public:
- typedef typename EdgeProfile::Point Point;
- typedef typename EdgeProfile::Graph_vertex Graph_vertex;
-
- typedef boost::optional<double> Cost_type;
-
- virtual Cost_type operator()(const EdgeProfile& profile, const boost::optional<Point>& placement) const = 0;
-
- virtual ~Cost_policy() { }
-};
-
-} // namespace contraction
-
-} // namespace Gudhi
-
-#endif // CONTRACTION_POLICIES_COST_POLICY_H_
diff --git a/include/gudhi/Contraction/policies/Dummy_valid_contraction.h b/include/gudhi/Contraction/policies/Dummy_valid_contraction.h
deleted file mode 100644
index a5567454..00000000
--- a/include/gudhi/Contraction/policies/Dummy_valid_contraction.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONTRACTION_POLICIES_DUMMY_VALID_CONTRACTION_H_
-#define CONTRACTION_POLICIES_DUMMY_VALID_CONTRACTION_H_
-
-#include <gudhi/Contraction/policies/Valid_contraction_policy.h>
-
-namespace Gudhi {
-
-namespace contraction {
-
-/**
- *@brief Policy that accept all edge contraction.
- */
-template< typename EdgeProfile>
-class Dummy_valid_contraction : public Valid_contraction_policy<EdgeProfile> {
- public:
- typedef typename EdgeProfile::Point Point;
-
- bool operator()(const EdgeProfile& profile, const boost::optional<Point>& placement) {
- return true;
- }
-};
-
-} // namespace contraction
-
-} // namespace Gudhi
-
-#endif // CONTRACTION_POLICIES_DUMMY_VALID_CONTRACTION_H_
diff --git a/include/gudhi/Contraction/policies/Edge_length_cost.h b/include/gudhi/Contraction/policies/Edge_length_cost.h
deleted file mode 100644
index 1b7a825b..00000000
--- a/include/gudhi/Contraction/policies/Edge_length_cost.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONTRACTION_POLICIES_EDGE_LENGTH_COST_H_
-#define CONTRACTION_POLICIES_EDGE_LENGTH_COST_H_
-
-#include <gudhi/Contraction/policies/Cost_policy.h>
-
-namespace Gudhi {
-
-namespace contraction {
-
-/**
- * @brief return a cost corresponding to the squared length of the edge
- */
-template< typename EdgeProfile>
-class Edge_length_cost : public Cost_policy<EdgeProfile> {
- public:
- typedef typename Cost_policy<EdgeProfile>::Cost_type Cost_type;
- typedef typename EdgeProfile::Point Point;
-
- Cost_type operator()(const EdgeProfile& profile, const boost::optional<Point>& placement) const override {
- double res = 0;
- auto p0_coord = profile.p0().begin();
- auto p1_coord = profile.p1().begin();
- for (; p0_coord != profile.p0().end(); p0_coord++, p1_coord++) {
- res += (*p0_coord - *p1_coord) * (*p0_coord - *p1_coord);
- }
- return res;
- }
-};
-
-} // namespace contraction
-
-} // namespace Gudhi
-
-#endif // CONTRACTION_POLICIES_EDGE_LENGTH_COST_H_
diff --git a/include/gudhi/Contraction/policies/First_vertex_placement.h b/include/gudhi/Contraction/policies/First_vertex_placement.h
deleted file mode 100644
index 0b9f8775..00000000
--- a/include/gudhi/Contraction/policies/First_vertex_placement.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONTRACTION_POLICIES_FIRST_VERTEX_PLACEMENT_H_
-#define CONTRACTION_POLICIES_FIRST_VERTEX_PLACEMENT_H_
-
-#include <gudhi/Contraction/policies/Placement_policy.h>
-
-namespace Gudhi {
-
-namespace contraction {
-
-/**
- * @brief Places the contracted point onto the first point of the edge
- */
-template< typename EdgeProfile>
-class First_vertex_placement : public Placement_policy<EdgeProfile> {
- public:
- typedef typename EdgeProfile::Point Point;
- typedef typename EdgeProfile::Edge_handle Edge_handle;
-
- typedef typename Placement_policy<EdgeProfile>::Placement_type Placement_type;
-
- Placement_type operator()(const EdgeProfile& profile) const override {
- return Placement_type(profile.p0());
- }
-};
-
-} // namespace contraction
-
-} // namespace Gudhi
-
-#endif // CONTRACTION_POLICIES_FIRST_VERTEX_PLACEMENT_H_
diff --git a/include/gudhi/Contraction/policies/Link_condition_valid_contraction.h b/include/gudhi/Contraction/policies/Link_condition_valid_contraction.h
deleted file mode 100644
index 8c869830..00000000
--- a/include/gudhi/Contraction/policies/Link_condition_valid_contraction.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONTRACTION_POLICIES_LINK_CONDITION_VALID_CONTRACTION_H_
-#define CONTRACTION_POLICIES_LINK_CONDITION_VALID_CONTRACTION_H_
-
-#include <gudhi/Contraction/policies/Valid_contraction_policy.h>
-#include <gudhi/Debug_utils.h>
-
-
-namespace Gudhi {
-
-namespace contraction {
-
-/**
- *@brief Policy that only accept edges verifying the link condition (and therefore whose contraction preserving homotopy type).
- *@ingroup contr
- */
-template< typename EdgeProfile>
-class Link_condition_valid_contraction : public Valid_contraction_policy<EdgeProfile> {
- public:
- typedef typename EdgeProfile::Edge_handle Edge_handle;
- typedef typename EdgeProfile::Point Point;
- // typedef typename EdgeProfile::Edge_handle Edge_handle;
-
- bool operator()(const EdgeProfile& profile, const boost::optional<Point>& placement) const override {
- Edge_handle edge(profile.edge_handle());
- DBGMSG("Link_condition_valid_contraction:", profile.complex().link_condition(edge));
- return profile.complex().link_condition(edge);
- }
-};
-
-} // namespace contraction
-
-} // namespace Gudhi
-
-#endif // CONTRACTION_POLICIES_LINK_CONDITION_VALID_CONTRACTION_H_
diff --git a/include/gudhi/Contraction/policies/Middle_placement.h b/include/gudhi/Contraction/policies/Middle_placement.h
deleted file mode 100644
index 0ba23a35..00000000
--- a/include/gudhi/Contraction/policies/Middle_placement.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONTRACTION_POLICIES_MIDDLE_PLACEMENT_H_
-#define CONTRACTION_POLICIES_MIDDLE_PLACEMENT_H_
-
-#include <gudhi/Contraction/policies/Placement_policy.h>
-
-namespace Gudhi {
-
-namespace contraction {
-
-template< typename EdgeProfile>
-class Middle_placement : public Placement_policy<EdgeProfile> {
- public:
- typedef typename EdgeProfile::Point Point;
- typedef typename EdgeProfile::Edge_handle Edge_handle;
- typedef typename EdgeProfile::Graph_vertex Graph_vertex;
-
- typedef typename Placement_policy<EdgeProfile>::Placement_type Placement_type;
-
- Placement_type operator()(const EdgeProfile& profile) const override {
- // todo compute the middle
- return Placement_type(profile.p0());
- }
-};
-
-} // namespace contraction
-
-} // namespace Gudhi
-
-#endif // CONTRACTION_POLICIES_MIDDLE_PLACEMENT_H_
diff --git a/include/gudhi/Contraction/policies/Placement_policy.h b/include/gudhi/Contraction/policies/Placement_policy.h
deleted file mode 100644
index 19509fad..00000000
--- a/include/gudhi/Contraction/policies/Placement_policy.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONTRACTION_POLICIES_PLACEMENT_POLICY_H_
-#define CONTRACTION_POLICIES_PLACEMENT_POLICY_H_
-
-#include <boost/optional.hpp>
-
-namespace Gudhi {
-
-namespace contraction {
-
-/**
- *@brief Policy to specify where the merged point had to be placed after an edge contraction.
- *@ingroup contr
- */
-template< typename EdgeProfile>
-class Placement_policy {
- public:
- typedef typename EdgeProfile::Point Point;
- typedef boost::optional<Point> Placement_type;
-
- virtual Placement_type operator()(const EdgeProfile& profile) const = 0;
-
- virtual ~Placement_policy() { }
-};
-
-} // namespace contraction
-
-} // namespace Gudhi
-
-#endif // CONTRACTION_POLICIES_PLACEMENT_POLICY_H_
diff --git a/include/gudhi/Contraction/policies/Valid_contraction_policy.h b/include/gudhi/Contraction/policies/Valid_contraction_policy.h
deleted file mode 100644
index 8a91f0b5..00000000
--- a/include/gudhi/Contraction/policies/Valid_contraction_policy.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONTRACTION_POLICIES_VALID_CONTRACTION_POLICY_H_
-#define CONTRACTION_POLICIES_VALID_CONTRACTION_POLICY_H_
-
-namespace Gudhi {
-
-namespace contraction {
-
-/**
- *@brief Policy to specify if an edge contraction is valid or not.
- *@ingroup contr
- */
-template< typename EdgeProfile>
-class Valid_contraction_policy {
- public:
- typedef typename EdgeProfile::Point Point;
- typedef typename EdgeProfile::Edge_handle Edge_handle;
- typedef typename EdgeProfile::Graph_vertex Graph_vertex;
-
- virtual bool operator()(const EdgeProfile& profile, const boost::optional<Point>& placement) const = 0;
-
- virtual ~Valid_contraction_policy() { }
-};
-
-} // namespace contraction
-
-} // namespace Gudhi
-
-
-#endif // CONTRACTION_POLICIES_VALID_CONTRACTION_POLICY_H_
diff --git a/include/gudhi/Debug_utils.h b/include/gudhi/Debug_utils.h
deleted file mode 100644
index 3f5cb04f..00000000
--- a/include/gudhi/Debug_utils.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef DEBUG_UTILS_H_
-#define DEBUG_UTILS_H_
-
-#include <iostream>
-
-#ifndef NDEBUG
- // GUDHI_DEBUG is the Gudhi official flag for debug mode.
- #define GUDHI_DEBUG
-#endif
-
-// GUDHI_CHECK throw an exception if expression is false in debug mode, but does nothing in release mode
-// Could assert in release mode, but cmake sets NDEBUG (for "NO DEBUG") in this mode, means assert does nothing.
-#ifdef GUDHI_DEBUG
- #define GUDHI_CHECK(expression, excpt) ((expression) ? (void) 0 : (throw excpt))
- #define GUDHI_CHECK_code(CODE) CODE
-#else
- #define GUDHI_CHECK(expression, excpt) (void) 0
- #define GUDHI_CHECK_code(CODE)
-#endif
-
-#define PRINT(a) std::cerr << #a << ": " << (a) << " (DISP)" << std::endl
-
-// #define DBG_VERBOSE
-#ifdef DBG_VERBOSE
- #define DBG(a) std::cout << "DBG: " << (a) << std::endl
- #define DBGMSG(a, b) std::cout << "DBG: " << a << b << std::endl
- #define DBGVALUE(a) std::cout << "DBG: " << #a << ": " << a << std::endl
- #define DBGCONT(a) std::cout << "DBG: container " << #a << " -> "; for (auto x : a) std::cout << x << ","; std::cout << std::endl
-#else
- #define DBG(a) (void) 0
- #define DBGMSG(a, b) (void) 0
- #define DBGVALUE(a) (void) 0
- #define DBGCONT(a) (void) 0
-#endif
-
-#endif // DEBUG_UTILS_H_
diff --git a/include/gudhi/Edge_contraction.h b/include/gudhi/Edge_contraction.h
deleted file mode 100644
index fcd06996..00000000
--- a/include/gudhi/Edge_contraction.h
+++ /dev/null
@@ -1,231 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef EDGE_CONTRACTION_H_
-#define EDGE_CONTRACTION_H_
-
-
-#include <gudhi/Skeleton_blocker_contractor.h>
-#include <gudhi/Contraction/policies/Edge_length_cost.h>
-#include <gudhi/Contraction/policies/First_vertex_placement.h>
-#include <gudhi/Contraction/policies/Valid_contraction_policy.h>
-#include <gudhi/Contraction/policies/Dummy_valid_contraction.h>
-#include <gudhi/Contraction/policies/Link_condition_valid_contraction.h>
-#include <gudhi/Debug_utils.h>
-
-namespace Gudhi {
-
-namespace contraction {
-
-
-/** \defgroup contr Edge contraction
-
-\author David Salinas
-
-\section edgecontractionintroduction Introduction
-
-The purpose of this package is to offer a user-friendly interface for edge contraction simplification of huge simplicial complexes.
-It uses the \ref skbl data-structure whose size remains small during simplification
-of most used geometrical complexes of topological data analysis such as the Rips or the Delaunay complexes. In practice, the
-size of this data-structure is even much lower than the total number of simplices.
-
-The edge contraction operation consists in identifying two vertices of a simplicial complex.
-A lot of algorithms have been developed in computer graphics that allows to reduce efficiently the size of 2-dimensional simplicial complexes
- while preserving its geometry (for instance see \cite Garland \cite Lindstrom).
-These approaches can be extended to higher-dimensional simplicial complexes.
-The main advantage of using the Skeleton-Blocker data structure for edge contraction is that when the number of blockers is small,
-the operations needed for edge contraction algorithms have polynomial complexity regarding the size the graph.
-Therefore, the simplification can be done without enumerating the set of simplices that is often non tracktable in high-dimension and is then very efficient
-(sub-linear with regards to the number of simplices in practice).
-
-A typical application of this package is homology group computation. It is illustrated in the next figure where a Rips complex is built uppon a set of high-dimensional points and
-simplified with edge contractions.
-It has initially a big number of simplices (around 20 millions) but simplifying it to a much reduced form with only 15 vertices (and 714 simplices) takes only few seconds on a desktop machine (see the example bellow).
-One can then compute homology group with a simplicial complex having very few simplices instead of running the homology algorithm on the much bigger initial set of
-simplices which would take much more time and memory.
-
-
-\image html "so3.png" "Edge contraction illustration"
-
-\section Design
-
-This class design is policy based and heavily inspired from the similar edge collapse package of CGAL http://doc.cgal.org/latest/Surface_mesh_simplification/index.html (which is however restricted to 2D triangulations).
-
-
-\subsection Policies
-
-Four policies can be customized in this package:
-
-\li Cost_policy: specify how much cost an edge contraction of a given edge. The edge with lowest cost is iteratively picked and contracted if valid.
-\li Valid_contraction_policy: specify if a given edge contraction is valid. For instance, this policy can check the link condition which ensures that the homotopy type is preserved afer the edge contraction.
-\li Placement_policy: every time an edge is contracted, its points are merge to one point specified by this policy. This may be the middle of the edge of some more sophisticated point such as the minimum of a cost as in
-\cite Garland.
-
-
-\subsection Visitor
-
-A visitor which implements the class Contraction_visitor gets called at several key moments
-during the simplification:
-
-\li when the algorithms starts or ends,
-\li when an edge is seen for the first time,
-\li when an edge is considered for an edge contraction,
-\li before and after an edge is contracted.
-
-This allows to implements most of edge contraction based algorithm with this
-package without having to change the main simplification source code.
-
-
-\section Performance
-
-The next figure shows the computation time to reduce a random 2-sphere to a single tetrahedron with
-this package and with the CGAL equivalent package.
-Despite this package is able to deal with \a arbitrary simplicial complexes (any dimensions, manifold or non manifold),
-it is still \a 65% times faster than the CGAL package which is focused on 2-manifold.
-The main reason is that few blockers appears during the simplification and hence,
-the algorithm only have to deal with the graph and not higher-dimensional simplices
-(in this case triangles). However, we recall that higher-dimensional simplices are \a implicitely
-stored in the \ref skbl data-structure. Hence, one has to store
-simplices in an external map if some information needs to be associated with them (information that could be a filtration value or
-an orientation for instance).
-
-
-\image html "sphere_contraction.png" "Time in seconds to simplify random 2-spheres to a tetrahedron" width=10cm
-
-\section Example
-
-
-This example loads points from an OFF file and builds the Rips complex with an user provided parameter. It then simplifies the built Rips complex
-while ensuring its homotopy type is preserved during the contraction (edge are contracted only when the link condition is valid).
-
- \code{.cpp}
-#include <boost/timer/timer.hpp>
-#include <iostream>
-#include <gudhi/Edge_contraction.h>
-#include <gudhi/Skeleton_blocker.h>
-#include <gudhi/Off_reader.h>
-
-
-using namespace std;
-using namespace Gudhi;
-using namespace skeleton_blocker;
-using namespace contraction;
-
-struct Geometry_trait{
- typedef std::vector<double> Point;
-};
-
-typedef Geometry_trait::Point Point;
-typedef Skeleton_blocker_simple_geometric_traits<Geometry_trait> Complex_geometric_traits;
-typedef Skeleton_blocker_geometric_complex< Complex_geometric_traits > Complex;
-typedef Edge_profile<Complex> Profile;
-typedef Skeleton_blocker_contractor<Complex> Complex_contractor;
-
-template<typename Point>
-double eucl_distance(const Point& a,const Point& b){
- double res = 0;
- auto a_coord = a.begin();
- auto b_coord = b.begin();
- for(; a_coord != a.end(); a_coord++, b_coord++){
- res += (*a_coord - *b_coord) * (*a_coord - *b_coord);
- }
- return sqrt(res);
-}
-
-template<typename ComplexType>
-void build_rips(ComplexType& complex, double offset){
- if (offset<=0) return;
- auto vertices = complex.vertex_range();
- for (auto p = vertices.begin(); p != vertices.end(); ++p)
- for (auto q = p; ++q != vertices.end(); )
- if (eucl_distance(complex.point(*p), complex.point(*q)) < 2 * offset)
- complex.add_edge_without_blockers(*p,*q);
-}
-
-int main (int argc, char *argv[])
-{
- if (argc!=3){
- std::cerr << "Usage "<<argv[0]<<" ../../data/SO3_10000.off 0.3 to load the file ../../data/SO3_10000.off and contract the Rips complex built with paremeter 0.3.\n";
- return -1;
- }
-
- Complex complex;
-
- // load the points
- Skeleton_blocker_off_reader<Complex> off_reader(argv[1],complex,true);
- if(!off_reader.is_valid()){
- std::cerr << "Unable to read file:"<<argv[1]<<std::endl;
- return EXIT_FAILURE;
- }
- std::cout << "Build the Rips complex"<<std::endl;
-
- build_rips(complex,atof(argv[2]));
-
- boost::timer::auto_cpu_timer t;
-
- std::cout << "Initial complex has "<<
- complex.num_vertices()<<" vertices and "<<
- complex.num_edges()<<" edges"<<std::endl;
-
- Complex_contractor contractor(complex,
- new Edge_length_cost<Profile>,
- contraction::make_first_vertex_placement<Profile>(),
- contraction::make_link_valid_contraction<Profile>(),
- contraction::make_remove_popable_blockers_visitor<Profile>());
- contractor.contract_edges();
-
- std::cout << "Counting final number of simplices \n";
- unsigned num_simplices = std::distance(complex.star_simplex_range().begin(),complex.star_simplex_range().end());
-
- std::cout << "Final complex has "<<
- complex.num_vertices()<<" vertices, "<<
- complex.num_edges()<<" edges, "<<
- complex.num_blockers()<<" blockers and "<<
- num_simplices<<" simplices"<<std::endl;
-
-
- std::cout << "Time to simplify and enumerate simplices:\n";
-
- return EXIT_SUCCESS;
-}
-}
- \endcode
-
-\verbatim
-./example/Contraction/RipsContraction ../../data/SO3_10000.off 0.3
-[ 50%] [100%] Built target SkeletonBlockerIteration
-Built target RipsContraction
-Build the Rips complex
-Initial complex has 10000 vertices and 195664 edges
-Counting final number of simplices
-Final complex has 15 vertices, 101 edges, 165 blockers and 714 simplices
-Time to simplify and enumerate simplices:
- 3.166621s wall, 3.150000s user + 0.010000s system = 3.160000s CPU (99.8%)
-\endverbatim
-
-*/
-/** @} */ // end defgroup
-} // namespace contraction
-
-} // namespace Gudhi
-
-#endif // EDGE_CONTRACTION_H_
diff --git a/include/gudhi/Euclidean_strong_witness_complex.h b/include/gudhi/Euclidean_strong_witness_complex.h
deleted file mode 100644
index ea97cd3f..00000000
--- a/include/gudhi/Euclidean_strong_witness_complex.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Siargey Kachanovich
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef EUCLIDEAN_STRONG_WITNESS_COMPLEX_H_
-#define EUCLIDEAN_STRONG_WITNESS_COMPLEX_H_
-
-#include <gudhi/Strong_witness_complex.h>
-#include <gudhi/Active_witness/Active_witness.h>
-#include <gudhi/Kd_tree_search.h>
-
-#include <utility>
-#include <vector>
-
-namespace Gudhi {
-
-namespace witness_complex {
-
-/**
- * \private
- * \class Euclidean_strong_witness_complex
- * \brief Constructs strong witness complex for given sets of witnesses and landmarks in Euclidean space.
- * \ingroup witness_complex
- *
- * \tparam Kernel_ requires a <a target="_blank"
- * href="http://doc.cgal.org/latest/Kernel_d/classCGAL_1_1Epick__d.html">CGAL::Epick_d</a> class.
- */
-template< class Kernel_ >
-class Euclidean_strong_witness_complex
- : public Strong_witness_complex<std::vector<typename Gudhi::spatial_searching::Kd_tree_search<Kernel_,
- std::vector<typename Kernel_::Point_d>>::INS_range>> {
- private:
- typedef Kernel_ K;
- typedef typename K::Point_d Point_d;
- typedef std::vector<Point_d> Point_range;
- typedef Gudhi::spatial_searching::Kd_tree_search<Kernel_, Point_range> Kd_tree;
- typedef typename Kd_tree::INS_range Nearest_landmark_range;
- typedef typename std::vector<Nearest_landmark_range> Nearest_landmark_table;
-
- typedef typename Nearest_landmark_range::Point_with_transformed_distance Id_distance_pair;
- typedef typename Id_distance_pair::first_type Landmark_id;
- typedef Landmark_id Vertex_handle;
-
- private:
- Point_range landmarks_;
- Kd_tree landmark_tree_;
- using Strong_witness_complex<Nearest_landmark_table>::nearest_landmark_table_;
-
- public:
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /* @name Constructor
- */
-
- //@{
-
- /**
- * \brief Initializes member variables before constructing simplicial complex.
- * \details Records landmarks from the range 'landmarks' into a
- * table internally, as well as witnesses from the range 'witnesses'.
- * Both ranges should have value_type Kernel_::Point_d.
- */
- template< typename LandmarkRange,
- typename WitnessRange >
- Euclidean_strong_witness_complex(const LandmarkRange & landmarks,
- const WitnessRange & witnesses)
- : landmarks_(std::begin(landmarks), std::end(landmarks)), landmark_tree_(landmarks_) {
- nearest_landmark_table_.reserve(boost::size(witnesses));
- for (auto w : witnesses)
- nearest_landmark_table_.push_back(landmark_tree_.incremental_nearest_neighbors(w));
- }
-
- /** \brief Returns the point corresponding to the given vertex.
- */
- template <typename Vertex_handle>
- Point_d get_point(Vertex_handle vertex) const {
- return landmarks_[vertex];
- }
-
- //@}
-};
-
-} // namespace witness_complex
-
-} // namespace Gudhi
-
-#endif // EUCLIDEAN_STRONG_WITNESS_COMPLEX_H_
diff --git a/include/gudhi/Euclidean_witness_complex.h b/include/gudhi/Euclidean_witness_complex.h
deleted file mode 100644
index 1dacefa5..00000000
--- a/include/gudhi/Euclidean_witness_complex.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Siargey Kachanovich
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef EUCLIDEAN_WITNESS_COMPLEX_H_
-#define EUCLIDEAN_WITNESS_COMPLEX_H_
-
-#include <gudhi/Witness_complex.h>
-#include <gudhi/Active_witness/Active_witness.h>
-#include <gudhi/Kd_tree_search.h>
-
-#include <utility>
-#include <vector>
-#include <list>
-#include <limits>
-
-namespace Gudhi {
-
-namespace witness_complex {
-
-/**
- * \private
- * \class Euclidean_witness_complex
- * \brief Constructs (weak) witness complex for given sets of witnesses and landmarks in Euclidean space.
- * \ingroup witness_complex
- *
- * \tparam Kernel_ requires a <a target="_blank"
- * href="http://doc.cgal.org/latest/Kernel_d/classCGAL_1_1Epick__d.html">CGAL::Epick_d</a> class.
- */
-template< class Kernel_ >
-class Euclidean_witness_complex
- : public Witness_complex<std::vector<typename Gudhi::spatial_searching::Kd_tree_search<Kernel_,
- std::vector<typename Kernel_::Point_d>>::INS_range>> {
- private:
- typedef Kernel_ K;
- typedef typename K::Point_d Point_d;
- typedef std::vector<Point_d> Point_range;
- typedef Gudhi::spatial_searching::Kd_tree_search<Kernel_, Point_range> Kd_tree;
- typedef typename Kd_tree::INS_range Nearest_landmark_range;
- typedef typename std::vector<Nearest_landmark_range> Nearest_landmark_table;
-
- typedef typename Nearest_landmark_range::Point_with_transformed_distance Id_distance_pair;
- typedef typename Id_distance_pair::first_type Landmark_id;
- typedef Landmark_id Vertex_handle;
-
- private:
- Point_range landmarks_;
- Kd_tree landmark_tree_;
- using Witness_complex<Nearest_landmark_table>::nearest_landmark_table_;
-
- public:
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /* @name Constructor
- */
-
- //@{
-
- /**
- * \brief Initializes member variables before constructing simplicial complex.
- * \details Records landmarks from the range 'landmarks' into a
- * table internally, as well as witnesses from the range 'witnesses'.
- * Both ranges should have value_type Kernel_::Point_d.
- */
- template< typename LandmarkRange,
- typename WitnessRange >
- Euclidean_witness_complex(const LandmarkRange & landmarks,
- const WitnessRange & witnesses)
- : landmarks_(std::begin(landmarks), std::end(landmarks)), landmark_tree_(landmarks) {
- nearest_landmark_table_.reserve(boost::size(witnesses));
- for (auto w : witnesses)
- nearest_landmark_table_.push_back(landmark_tree_.incremental_nearest_neighbors(w));
- }
-
- /** \brief Returns the point corresponding to the given vertex.
- * @param[in] vertex Vertex handle of the point to retrieve.
- */
- Point_d get_point(Vertex_handle vertex) const {
- return landmarks_[vertex];
- }
-
- //@}
-};
-
-} // namespace witness_complex
-
-} // namespace Gudhi
-
-#endif // EUCLIDEAN_WITNESS_COMPLEX_H_
diff --git a/include/gudhi/GIC.h b/include/gudhi/GIC.h
deleted file mode 100644
index fea0b861..00000000
--- a/include/gudhi/GIC.h
+++ /dev/null
@@ -1,1371 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author: Mathieu Carriere
- *
- * Copyright (C) 2017 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GIC_H_
-#define GIC_H_
-
-#ifdef GUDHI_USE_TBB
-#include <tbb/parallel_for.h>
-#include <tbb/mutex.h>
-#endif
-
-#include <gudhi/Debug_utils.h>
-#include <gudhi/graph_simplicial_complex.h>
-#include <gudhi/reader_utils.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Rips_complex.h>
-#include <gudhi/Points_off_io.h>
-#include <gudhi/distance_functions.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Bottleneck.h>
-
-#include <boost/config.hpp>
-#include <boost/graph/graph_traits.hpp>
-#include <boost/graph/adjacency_list.hpp>
-#include <boost/graph/connected_components.hpp>
-#include <boost/graph/dijkstra_shortest_paths.hpp>
-#include <boost/graph/subgraph.hpp>
-#include <boost/graph/graph_utility.hpp>
-
-#include <iostream>
-#include <vector>
-#include <map>
-#include <string>
-#include <limits> // for numeric_limits
-#include <utility> // for std::pair<>
-#include <algorithm> // for std::max
-#include <random>
-#include <cassert>
-#include <cmath>
-
-namespace Gudhi {
-
-namespace cover_complex {
-
-using Simplex_tree = Gudhi::Simplex_tree<>;
-using Filtration_value = Simplex_tree::Filtration_value;
-using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
-using Persistence_diagram = std::vector<std::pair<double, double> >;
-using Graph = boost::subgraph<
- boost::adjacency_list<boost::setS, boost::vecS, boost::undirectedS, boost::no_property,
- boost::property<boost::edge_index_t, int, boost::property<boost::edge_weight_t, double> > > >;
-using Vertex_t = boost::graph_traits<Graph>::vertex_descriptor;
-using Index_map = boost::property_map<Graph, boost::vertex_index_t>::type;
-using Weight_map = boost::property_map<Graph, boost::edge_weight_t>::type;
-
-/**
- * \class Cover_complex
- * \brief Cover complex data structure.
- *
- * \ingroup cover_complex
- *
- * \details
- * The data structure is a simplicial complex, representing a
- * Graph Induced simplicial Complex (GIC) or a Nerve,
- * and whose simplices are computed with a cover C of a point
- * cloud P, which often comes from the preimages of intervals
- * covering the image of a function f defined on P.
- * These intervals are parameterized by their resolution
- * (either their length or their number)
- * and their gain (percentage of overlap).
- * To compute a GIC, one also needs a graph G built on top of P,
- * whose cliques with vertices belonging to different elements of C
- * correspond to the simplices of the GIC.
- *
- */
-template <typename Point>
-class Cover_complex {
- private:
- bool verbose = false; // whether to display information.
- std::string type; // Nerve or GIC
-
- std::vector<Point> point_cloud; // input point cloud.
- std::vector<std::vector<double> > distances; // all pairwise distances.
- int maximal_dim; // maximal dimension of output simplicial complex.
- int data_dimension; // dimension of input data.
- int n; // number of points.
-
- std::vector<double> func; // function used to compute the output simplicial complex.
- std::vector<double> func_color; // function used to compute the colors of the nodes of the output simplicial complex.
- bool functional_cover = false; // whether we use a cover with preimages of a function or not.
-
- Graph one_skeleton_OFF; // one-skeleton given by the input OFF file (if it exists).
- Graph one_skeleton; // one-skeleton used to compute the connected components.
- std::vector<Vertex_t> vertices; // vertices of one_skeleton.
-
- std::vector<std::vector<int> > simplices; // simplices of output simplicial complex.
- std::vector<int> voronoi_subsamples; // Voronoi germs (in case of Voronoi cover).
-
- Persistence_diagram PD;
- std::vector<double> distribution;
-
- std::vector<std::vector<int> >
- cover; // function associating to each data point the vector of cover elements to which it belongs.
- std::map<int, std::vector<int> >
- cover_back; // inverse of cover, in order to get the data points associated to a specific cover element.
- std::map<int, double> cover_std; // standard function (induced by func) used to compute the extended persistence
- // diagram of the output simplicial complex.
- std::map<int, int>
- cover_fct; // integer-valued function that allows to state if two elements of the cover are consecutive or not.
- std::map<int, std::pair<int, double> >
- cover_color; // size and coloring (induced by func_color) of the vertices of the output simplicial complex.
-
- int resolution_int = -1;
- double resolution_double = -1;
- double gain = -1;
- double rate_constant = 10; // Constant in the subsampling.
- double rate_power = 0.001; // Power in the subsampling.
- int mask = 0; // Ignore nodes containing less than mask points.
-
- std::map<int, int> name2id, name2idinv;
-
- std::string cover_name;
- std::string point_cloud_name;
- std::string color_name;
-
- // Remove all edges of a graph.
- void remove_edges(Graph& G) {
- boost::graph_traits<Graph>::edge_iterator ei, ei_end;
- for (boost::tie(ei, ei_end) = boost::edges(G); ei != ei_end; ++ei) boost::remove_edge(*ei, G);
- }
-
- // Thread local is not available on XCode version < V.8
- // If not available, random engine is a class member.
-#ifndef GUDHI_CAN_USE_CXX11_THREAD_LOCAL
- std::default_random_engine re;
-#endif // GUDHI_CAN_USE_CXX11_THREAD_LOCAL
-
- // Find random number in [0,1].
- double GetUniform() {
- // Thread local is not available on XCode version < V.8
- // If available, random engine is defined for each thread.
-#ifdef GUDHI_CAN_USE_CXX11_THREAD_LOCAL
- thread_local std::default_random_engine re;
-#endif // GUDHI_CAN_USE_CXX11_THREAD_LOCAL
- std::uniform_real_distribution<double> Dist(0, 1);
- return Dist(re);
- }
-
- // Subsample points.
- void SampleWithoutReplacement(int populationSize, int sampleSize, std::vector<int>& samples) {
- int t = 0;
- int m = 0;
- double u;
- while (m < sampleSize) {
- u = GetUniform();
- if ((populationSize - t) * u >= sampleSize - m) {
- t++;
- } else {
- samples[m] = t;
- t++;
- m++;
- }
- }
- }
-
- // *******************************************************************************************************************
- // Utils.
- // *******************************************************************************************************************
-
- public:
- /** \brief Specifies whether the type of the output simplicial complex.
- *
- * @param[in] t std::string (either "GIC" or "Nerve").
- *
- */
- void set_type(const std::string& t) { type = t; }
-
- public:
- /** \brief Specifies whether the program should display information or not.
- *
- * @param[in] verb boolean (true = display info, false = do not display info).
- *
- */
- void set_verbose(bool verb = false) { verbose = verb; }
-
- public:
- /** \brief Sets the constants used to subsample the data set. These constants are
- * explained in \cite Carriere17c.
- *
- * @param[in] constant double.
- * @param[in] power double.
- *
- */
- void set_subsampling(double constant, double power) {
- rate_constant = constant;
- rate_power = power;
- }
-
- public:
- /** \brief Sets the mask, which is a threshold integer such that nodes in the complex that contain a number of data
- * points which is less than or equal to
- * this threshold are not displayed.
- *
- * @param[in] nodemask integer.
- *
- */
- void set_mask(int nodemask) { mask = nodemask; }
-
- public:
- /** \brief Reads and stores the input point cloud.
- *
- * @param[in] off_file_name name of the input .OFF or .nOFF file.
- *
- */
- bool read_point_cloud(const std::string& off_file_name) {
- point_cloud_name = off_file_name;
- std::ifstream input(off_file_name);
- std::string line;
-
- char comment = '#';
- while (comment == '#') {
- std::getline(input, line);
- if (!line.empty() && !all_of(line.begin(), line.end(), (int (*)(int))isspace))
- comment = line[line.find_first_not_of(' ')];
- }
- if (strcmp((char*)line.c_str(), "nOFF") == 0) {
- comment = '#';
- while (comment == '#') {
- std::getline(input, line);
- if (!line.empty() && !all_of(line.begin(), line.end(), (int (*)(int))isspace))
- comment = line[line.find_first_not_of(' ')];
- }
- std::stringstream stream(line);
- stream >> data_dimension;
- } else {
- data_dimension = 3;
- }
-
- comment = '#';
- int numedges, numfaces, i, dim;
- while (comment == '#') {
- std::getline(input, line);
- if (!line.empty() && !all_of(line.begin(), line.end(), (int (*)(int))isspace))
- comment = line[line.find_first_not_of(' ')];
- }
- std::stringstream stream(line);
- stream >> n;
- stream >> numfaces;
- stream >> numedges;
-
- i = 0;
- while (i < n) {
- std::getline(input, line);
- if (!line.empty() && line[line.find_first_not_of(' ')] != '#' &&
- !all_of(line.begin(), line.end(), (int (*)(int))isspace)) {
- std::stringstream iss(line);
- std::vector<double> point;
- point.assign(std::istream_iterator<double>(iss), std::istream_iterator<double>());
- point_cloud.emplace_back(point.begin(), point.begin() + data_dimension);
- boost::add_vertex(one_skeleton_OFF);
- vertices.push_back(boost::add_vertex(one_skeleton));
- cover.emplace_back();
- i++;
- }
- }
-
- i = 0;
- while (i < numfaces) {
- std::getline(input, line);
- if (!line.empty() && line[line.find_first_not_of(' ')] != '#' &&
- !all_of(line.begin(), line.end(), (int (*)(int))isspace)) {
- std::vector<int> simplex;
- std::stringstream iss(line);
- simplex.assign(std::istream_iterator<int>(iss), std::istream_iterator<int>());
- dim = simplex[0];
- for (int j = 1; j <= dim; j++)
- for (int k = j + 1; k <= dim; k++)
- boost::add_edge(vertices[simplex[j]], vertices[simplex[k]], one_skeleton_OFF);
- i++;
- }
- }
-
- return input.is_open();
- }
-
- // *******************************************************************************************************************
- // Graphs.
- // *******************************************************************************************************************
-
- public: // Set graph from file.
- /** \brief Creates a graph G from a file containing the edges.
- *
- * @param[in] graph_file_name name of the input graph file.
- * The graph file contains one edge per line,
- * each edge being represented by the IDs of its two nodes.
- *
- */
- void set_graph_from_file(const std::string& graph_file_name) {
- remove_edges(one_skeleton);
- int neighb;
- std::ifstream input(graph_file_name);
- std::string line;
- int source;
- while (std::getline(input, line)) {
- std::stringstream stream(line);
- stream >> source;
- while (stream >> neighb) boost::add_edge(vertices[source], vertices[neighb], one_skeleton);
- }
- }
-
- public: // Set graph from OFF file.
- /** \brief Creates a graph G from the triangulation given by the input .OFF file.
- *
- */
- void set_graph_from_OFF() {
- remove_edges(one_skeleton);
- if (num_edges(one_skeleton_OFF))
- one_skeleton = one_skeleton_OFF;
- else
- std::cout << "No triangulation read in OFF file!" << std::endl;
- }
-
- public: // Set graph from Rips complex.
- /** \brief Creates a graph G from a Rips complex.
- *
- * @param[in] threshold threshold value for the Rips complex.
- * @param[in] distance distance used to compute the Rips complex.
- *
- */
- template <typename Distance>
- void set_graph_from_rips(double threshold, Distance distance) {
- remove_edges(one_skeleton);
- if (distances.size() == 0) compute_pairwise_distances(distance);
- for (int i = 0; i < n; i++) {
- for (int j = i + 1; j < n; j++) {
- if (distances[i][j] <= threshold) {
- boost::add_edge(vertices[i], vertices[j], one_skeleton);
- boost::put(boost::edge_weight, one_skeleton, boost::edge(vertices[i], vertices[j], one_skeleton).first,
- distances[i][j]);
- }
- }
- }
- }
-
- public:
- void set_graph_weights() {
- Index_map index = boost::get(boost::vertex_index, one_skeleton);
- Weight_map weight = boost::get(boost::edge_weight, one_skeleton);
- boost::graph_traits<Graph>::edge_iterator ei, ei_end;
- for (boost::tie(ei, ei_end) = boost::edges(one_skeleton); ei != ei_end; ++ei)
- boost::put(weight, *ei,
- distances[index[boost::source(*ei, one_skeleton)]][index[boost::target(*ei, one_skeleton)]]);
- }
-
- public: // Pairwise distances.
- /** \private \brief Computes all pairwise distances.
- */
- template <typename Distance>
- void compute_pairwise_distances(Distance ref_distance) {
- double d;
- std::vector<double> zeros(n);
- for (int i = 0; i < n; i++) distances.push_back(zeros);
- std::string distance = point_cloud_name + "_dist";
- std::ifstream input(distance, std::ios::out | std::ios::binary);
-
- if (input.good()) {
- if (verbose) std::cout << "Reading distances..." << std::endl;
- for (int i = 0; i < n; i++) {
- for (int j = i; j < n; j++) {
- input.read((char*)&d, 8);
- distances[i][j] = d;
- distances[j][i] = d;
- }
- }
- input.close();
- } else {
- if (verbose) std::cout << "Computing distances..." << std::endl;
- input.close();
- std::ofstream output(distance, std::ios::out | std::ios::binary);
- for (int i = 0; i < n; i++) {
- int state = (int)floor(100 * (i * 1.0 + 1) / n) % 10;
- if (state == 0 && verbose) std::cout << "\r" << state << "%" << std::flush;
- for (int j = i; j < n; j++) {
- double dis = ref_distance(point_cloud[i], point_cloud[j]);
- distances[i][j] = dis;
- distances[j][i] = dis;
- output.write((char*)&dis, 8);
- }
- }
- output.close();
- if (verbose) std::cout << std::endl;
- }
- }
-
- public: // Automatic tuning of Rips complex.
- /** \brief Creates a graph G from a Rips complex whose threshold value is automatically tuned with subsampling---see
- * \cite Carriere17c.
- *
- * @param[in] distance distance between data points.
- * @param[in] N number of subsampling iteration (the default reasonable value is 100, but there is no guarantee on
- * how to choose it).
- * @result delta threshold used for computing the Rips complex.
- *
- */
- template <typename Distance>
- double set_graph_from_automatic_rips(Distance distance, int N = 100) {
- int m = floor(n / std::exp((1 + rate_power) * std::log(std::log(n) / std::log(rate_constant))));
- m = std::min(m, n - 1);
- double delta = 0;
-
- if (verbose) std::cout << n << " points in R^" << data_dimension << std::endl;
- if (verbose) std::cout << "Subsampling " << m << " points" << std::endl;
-
- if (distances.size() == 0) compute_pairwise_distances(distance);
-
- // This cannot be parallelized if thread_local is not defined
- // thread_local is not defined for XCode < v.8
- #if defined(GUDHI_USE_TBB) && defined(GUDHI_CAN_USE_CXX11_THREAD_LOCAL)
- tbb::mutex deltamutex;
- tbb::parallel_for(0, N, [&](int i){
- std::vector<int> samples(m);
- SampleWithoutReplacement(n, m, samples);
- double hausdorff_dist = 0;
- for (int j = 0; j < n; j++) {
- double mj = distances[j][samples[0]];
- for (int k = 1; k < m; k++) mj = std::min(mj, distances[j][samples[k]]);
- hausdorff_dist = std::max(hausdorff_dist, mj);
- }
- deltamutex.lock();
- delta += hausdorff_dist / N;
- deltamutex.unlock();
- });
- #else
- for (int i = 0; i < N; i++) {
- std::vector<int> samples(m);
- SampleWithoutReplacement(n, m, samples);
- double hausdorff_dist = 0;
- for (int j = 0; j < n; j++) {
- double mj = distances[j][samples[0]];
- for (int k = 1; k < m; k++) mj = std::min(mj, distances[j][samples[k]]);
- hausdorff_dist = std::max(hausdorff_dist, mj);
- }
- delta += hausdorff_dist / N;
- }
- #endif
-
- if (verbose) std::cout << "delta = " << delta << std::endl;
- set_graph_from_rips(delta, distance);
- return delta;
- }
-
- // *******************************************************************************************************************
- // Functions.
- // *******************************************************************************************************************
-
- public: // Set function from file.
- /** \brief Creates the function f from a file containing the function values.
- *
- * @param[in] func_file_name name of the input function file.
- *
- */
- void set_function_from_file(const std::string& func_file_name) {
- int i = 0;
- std::ifstream input(func_file_name);
- std::string line;
- double f;
- while (std::getline(input, line)) {
- std::stringstream stream(line);
- stream >> f;
- func.push_back(f);
- i++;
- }
- functional_cover = true;
- cover_name = func_file_name;
- }
-
- public: // Set function from kth coordinate
- /** \brief Creates the function f from the k-th coordinate of the point cloud P.
- *
- * @param[in] k coordinate to use (start at 0).
- *
- */
- void set_function_from_coordinate(int k) {
- for (int i = 0; i < n; i++) func.push_back(point_cloud[i][k]);
- functional_cover = true;
- cover_name = "coordinate " + std::to_string(k);
- }
-
- public: // Set function from vector.
- /** \brief Creates the function f from a vector stored in memory.
- *
- * @param[in] function input vector of values.
- *
- */
- template <class InputRange>
- void set_function_from_range(InputRange const& function) {
- for (int i = 0; i < n; i++) func.push_back(function[i]);
- functional_cover = true;
- }
-
- // *******************************************************************************************************************
- // Covers.
- // *******************************************************************************************************************
-
- public: // Automatic tuning of resolution.
- /** \brief Computes the optimal length of intervals
- * (i.e. the smallest interval length avoiding discretization artifacts---see \cite Carriere17c) for a functional
- * cover.
- *
- * @result reso interval length used to compute the cover.
- *
- */
- double set_automatic_resolution() {
- if (!functional_cover) {
- std::cout << "Cover needs to come from the preimages of a function." << std::endl;
- return 0;
- }
- if (type != "Nerve" && type != "GIC") {
- std::cout << "Type of complex needs to be specified." << std::endl;
- return 0;
- }
-
- double reso = 0;
- Index_map index = boost::get(boost::vertex_index, one_skeleton);
-
- if (type == "GIC") {
- boost::graph_traits<Graph>::edge_iterator ei, ei_end;
- for (boost::tie(ei, ei_end) = boost::edges(one_skeleton); ei != ei_end; ++ei)
- reso = std::max(reso, std::abs(func[index[boost::source(*ei, one_skeleton)]] -
- func[index[boost::target(*ei, one_skeleton)]]));
- if (verbose) std::cout << "resolution = " << reso << std::endl;
- resolution_double = reso;
- }
-
- if (type == "Nerve") {
- boost::graph_traits<Graph>::edge_iterator ei, ei_end;
- for (boost::tie(ei, ei_end) = boost::edges(one_skeleton); ei != ei_end; ++ei)
- reso = std::max(reso, std::abs(func[index[boost::source(*ei, one_skeleton)]] -
- func[index[boost::target(*ei, one_skeleton)]]) /
- gain);
- if (verbose) std::cout << "resolution = " << reso << std::endl;
- resolution_double = reso;
- }
-
- return reso;
- }
-
- public:
- /** \brief Sets a length of intervals from a value stored in memory.
- *
- * @param[in] reso length of intervals.
- *
- */
- void set_resolution_with_interval_length(double reso) { resolution_double = reso; }
- /** \brief Sets a number of intervals from a value stored in memory.
- *
- * @param[in] reso number of intervals.
- *
- */
- void set_resolution_with_interval_number(int reso) { resolution_int = reso; }
- /** \brief Sets a gain from a value stored in memory (default value 0.3).
- *
- * @param[in] g gain.
- *
- */
- void set_gain(double g = 0.3) { gain = g; }
-
- public: // Set cover with preimages of function.
- /** \brief Creates a cover C from the preimages of the function f.
- *
- */
- void set_cover_from_function() {
- if (resolution_double == -1 && resolution_int == -1) {
- std::cout << "Number and/or length of intervals not specified" << std::endl;
- return;
- }
- if (gain == -1) {
- std::cout << "Gain not specified" << std::endl;
- return;
- }
-
- // Read function values and compute min and max
- double minf = std::numeric_limits<float>::max();
- double maxf = std::numeric_limits<float>::lowest();
- for (int i = 0; i < n; i++) {
- minf = std::min(minf, func[i]);
- maxf = std::max(maxf, func[i]);
- }
- if (verbose) std::cout << "Min function value = " << minf << " and Max function value = " << maxf << std::endl;
-
- // Compute cover of im(f)
- std::vector<std::pair<double, double> > intervals;
- int res;
-
- if (resolution_double == -1) { // Case we use an integer for the number of intervals.
- double incr = (maxf - minf) / resolution_int;
- double x = minf;
- double alpha = (incr * gain) / (2 - 2 * gain);
- double y = minf + incr + alpha;
- std::pair<double, double> interm(x, y);
- intervals.push_back(interm);
- for (int i = 1; i < resolution_int - 1; i++) {
- x = minf + i * incr - alpha;
- y = minf + (i + 1) * incr + alpha;
- std::pair<double, double> inter(x, y);
- intervals.push_back(inter);
- }
- x = minf + (resolution_int - 1) * incr - alpha;
- y = maxf;
- std::pair<double, double> interM(x, y);
- intervals.push_back(interM);
- res = intervals.size();
- if (verbose) {
- for (int i = 0; i < res; i++)
- std::cout << "Interval " << i << " = [" << intervals[i].first << ", " << intervals[i].second << "]"
- << std::endl;
- }
- } else {
- if (resolution_int == -1) { // Case we use a double for the length of the intervals.
- double x = minf;
- double y = x + resolution_double;
- while (y <= maxf && maxf - (y - gain * resolution_double) >= resolution_double) {
- std::pair<double, double> inter(x, y);
- intervals.push_back(inter);
- x = y - gain * resolution_double;
- y = x + resolution_double;
- }
- std::pair<double, double> interM(x, maxf);
- intervals.push_back(interM);
- res = intervals.size();
- if (verbose) {
- for (int i = 0; i < res; i++)
- std::cout << "Interval " << i << " = [" << intervals[i].first << ", " << intervals[i].second << "]"
- << std::endl;
- }
- } else { // Case we use an integer and a double for the length of the intervals.
- double x = minf;
- double y = x + resolution_double;
- int count = 0;
- while (count < resolution_int && y <= maxf && maxf - (y - gain * resolution_double) >= resolution_double) {
- std::pair<double, double> inter(x, y);
- intervals.push_back(inter);
- count++;
- x = y - gain * resolution_double;
- y = x + resolution_double;
- }
- res = intervals.size();
- if (verbose) {
- for (int i = 0; i < res; i++)
- std::cout << "Interval " << i << " = [" << intervals[i].first << ", " << intervals[i].second << "]"
- << std::endl;
- }
- }
- }
-
- // Sort points according to function values
- std::vector<int> points(n);
- for (int i = 0; i < n; i++) points[i] = i;
- std::sort(points.begin(), points.end(), [=](const int & p1, const int & p2){return (this->func[p1] < this->func[p2]);});
-
- int id = 0;
- int pos = 0;
- Index_map index = boost::get(boost::vertex_index, one_skeleton); // int maxc = -1;
- std::map<int, std::vector<int> > preimages;
- std::map<int, double> funcstd;
-
- if (verbose) std::cout << "Computing preimages..." << std::endl;
- for (int i = 0; i < res; i++) {
- // Find points in the preimage
- std::pair<double, double> inter1 = intervals[i];
- int tmp = pos;
- double u, v;
-
- if (i != res - 1) {
- if (i != 0) {
- std::pair<double, double> inter3 = intervals[i - 1];
- while (func[points[tmp]] < inter3.second && tmp != n) {
- preimages[i].push_back(points[tmp]);
- tmp++;
- }
- u = inter3.second;
- } else {
- u = inter1.first;
- }
-
- std::pair<double, double> inter2 = intervals[i + 1];
- while (func[points[tmp]] < inter2.first && tmp != n) {
- preimages[i].push_back(points[tmp]);
- tmp++;
- }
- v = inter2.first;
- pos = tmp;
- while (func[points[tmp]] < inter1.second && tmp != n) {
- preimages[i].push_back(points[tmp]);
- tmp++;
- }
-
- } else {
- std::pair<double, double> inter3 = intervals[i - 1];
- while (func[points[tmp]] < inter3.second && tmp != n) {
- preimages[i].push_back(points[tmp]);
- tmp++;
- }
- while (tmp != n) {
- preimages[i].push_back(points[tmp]);
- tmp++;
- }
- u = inter3.second;
- v = inter1.second;
- }
-
- funcstd[i] = 0.5 * (u + v);
- }
-
- #ifdef GUDHI_USE_TBB
- if (verbose) std::cout << "Computing connected components (parallelized)..." << std::endl;
- tbb::mutex covermutex, idmutex;
- tbb::parallel_for(0, res, [&](int i){
- // Compute connected components
- Graph G = one_skeleton.create_subgraph();
- int num = preimages[i].size();
- std::vector<int> component(num);
- for (int j = 0; j < num; j++) boost::add_vertex(index[vertices[preimages[i][j]]], G);
- boost::connected_components(G, &component[0]);
- int max = 0;
-
- // For each point in preimage
- for (int j = 0; j < num; j++) {
- // Update number of components in preimage
- if (component[j] > max) max = component[j];
-
- // Identify component with Cantor polynomial N^2 -> N
- int identifier = ((i + component[j])*(i + component[j]) + 3 * i + component[j]) / 2;
-
- // Update covers
- covermutex.lock();
- cover[preimages[i][j]].push_back(identifier);
- cover_back[identifier].push_back(preimages[i][j]);
- cover_fct[identifier] = i;
- cover_std[identifier] = funcstd[i];
- cover_color[identifier].second += func_color[preimages[i][j]];
- cover_color[identifier].first += 1;
- covermutex.unlock();
- }
-
- // Maximal dimension is total number of connected components
- idmutex.lock();
- id += max + 1;
- idmutex.unlock();
- });
- #else
- if (verbose) std::cout << "Computing connected components..." << std::endl;
- for (int i = 0; i < res; i++) {
- // Compute connected components
- Graph G = one_skeleton.create_subgraph();
- int num = preimages[i].size();
- std::vector<int> component(num);
- for (int j = 0; j < num; j++) boost::add_vertex(index[vertices[preimages[i][j]]], G);
- boost::connected_components(G, &component[0]);
- int max = 0;
-
- // For each point in preimage
- for (int j = 0; j < num; j++) {
- // Update number of components in preimage
- if (component[j] > max) max = component[j];
-
- // Identify component with Cantor polynomial N^2 -> N
- int identifier = (std::pow(i + component[j], 2) + 3 * i + component[j]) / 2;
-
- // Update covers
- cover[preimages[i][j]].push_back(identifier);
- cover_back[identifier].push_back(preimages[i][j]);
- cover_fct[identifier] = i;
- cover_std[identifier] = funcstd[i];
- cover_color[identifier].second += func_color[preimages[i][j]];
- cover_color[identifier].first += 1;
- }
-
- // Maximal dimension is total number of connected components
- id += max + 1;
- }
- #endif
-
- maximal_dim = id - 1;
- for (std::map<int, std::pair<int, double> >::iterator iit = cover_color.begin(); iit != cover_color.end(); iit++)
- iit->second.second /= iit->second.first;
- }
-
- public: // Set cover from file.
- /** \brief Creates the cover C from a file containing the cover elements of each point (the order has to be the same
- * as in the input file!).
- *
- * @param[in] cover_file_name name of the input cover file.
- *
- */
- void set_cover_from_file(const std::string& cover_file_name) {
- int i = 0;
- int cov;
- std::vector<int> cov_elts, cov_number;
- std::ifstream input(cover_file_name);
- std::string line;
- while (std::getline(input, line)) {
- cov_elts.clear();
- std::stringstream stream(line);
- while (stream >> cov) {
- cov_elts.push_back(cov);
- cov_number.push_back(cov);
- cover_fct[cov] = cov;
- cover_color[cov].second += func_color[i];
- cover_color[cov].first++;
- cover_back[cov].push_back(i);
- }
- cover[i] = cov_elts;
- i++;
- }
-
- std::sort(cov_number.begin(), cov_number.end());
- std::vector<int>::iterator it = std::unique(cov_number.begin(), cov_number.end());
- cov_number.resize(std::distance(cov_number.begin(), it));
-
- maximal_dim = cov_number.size() - 1;
- for (int i = 0; i <= maximal_dim; i++) cover_color[i].second /= cover_color[i].first;
- cover_name = cover_file_name;
- }
-
- public: // Set cover from Voronoi
- /** \brief Creates the cover C from the Voronoï cells of a subsampling of the point cloud.
- *
- * @param[in] distance distance between the points.
- * @param[in] m number of points in the subsample.
- *
- */
- template <typename Distance>
- void set_cover_from_Voronoi(Distance distance, int m = 100) {
- voronoi_subsamples.resize(m);
- SampleWithoutReplacement(n, m, voronoi_subsamples);
- if (distances.size() == 0) compute_pairwise_distances(distance);
- set_graph_weights();
- Weight_map weight = boost::get(boost::edge_weight, one_skeleton);
- Index_map index = boost::get(boost::vertex_index, one_skeleton);
- std::vector<double> mindist(n);
- for (int j = 0; j < n; j++) mindist[j] = std::numeric_limits<double>::max();
-
- // Compute the geodesic distances to subsamples with Dijkstra
- #ifdef GUDHI_USE_TBB
- if (verbose) std::cout << "Computing geodesic distances (parallelized)..." << std::endl;
- tbb::mutex coverMutex; tbb::mutex mindistMutex;
- tbb::parallel_for(0, m, [&](int i){
- int seed = voronoi_subsamples[i];
- std::vector<double> dmap(n);
- boost::dijkstra_shortest_paths(
- one_skeleton, vertices[seed],
- boost::weight_map(weight).distance_map(boost::make_iterator_property_map(dmap.begin(), index)));
-
- coverMutex.lock(); mindistMutex.lock();
- for (int j = 0; j < n; j++)
- if (mindist[j] > dmap[j]) {
- mindist[j] = dmap[j];
- if (cover[j].size() == 0)
- cover[j].push_back(i);
- else
- cover[j][0] = i;
- }
- coverMutex.unlock(); mindistMutex.unlock();
- });
- #else
- for (int i = 0; i < m; i++) {
- if (verbose) std::cout << "Computing geodesic distances to seed " << i << "..." << std::endl;
- int seed = voronoi_subsamples[i];
- std::vector<double> dmap(n);
- boost::dijkstra_shortest_paths(
- one_skeleton, vertices[seed],
- boost::weight_map(weight).distance_map(boost::make_iterator_property_map(dmap.begin(), index)));
-
- for (int j = 0; j < n; j++)
- if (mindist[j] > dmap[j]) {
- mindist[j] = dmap[j];
- if (cover[j].size() == 0)
- cover[j].push_back(i);
- else
- cover[j][0] = i;
- }
- }
- #endif
-
- for (int i = 0; i < n; i++) {
- cover_back[cover[i][0]].push_back(i);
- cover_color[cover[i][0]].second += func_color[i];
- cover_color[cover[i][0]].first++;
- }
- for (int i = 0; i < m; i++) cover_color[i].second /= cover_color[i].first;
- maximal_dim = m - 1;
- cover_name = "Voronoi";
- }
-
- public: // return subset of data corresponding to a node
- /** \brief Returns the data subset corresponding to a specific node of the created complex.
- *
- * @param[in] c ID of the node.
- * @result cover_back(c) vector of IDs of data points.
- *
- */
- const std::vector<int>& subpopulation(int c) { return cover_back[name2idinv[c]]; }
-
- // *******************************************************************************************************************
- // Visualization.
- // *******************************************************************************************************************
-
- public: // Set color from file.
- /** \brief Computes the function used to color the nodes of the simplicial complex from a file containing the function
- * values.
- *
- * @param[in] color_file_name name of the input color file.
- *
- */
- void set_color_from_file(const std::string& color_file_name) {
- int i = 0;
- std::ifstream input(color_file_name);
- std::string line;
- double f;
- while (std::getline(input, line)) {
- std::stringstream stream(line);
- stream >> f;
- func_color.push_back(f);
- i++;
- }
- color_name = color_file_name;
- }
-
- public: // Set color from kth coordinate
- /** \brief Computes the function used to color the nodes of the simplicial complex from the k-th coordinate.
- *
- * @param[in] k coordinate to use (start at 0).
- *
- */
- void set_color_from_coordinate(int k = 0) {
- for (int i = 0; i < n; i++) func_color.push_back(point_cloud[i][k]);
- color_name = "coordinate ";
- color_name.append(std::to_string(k));
- }
-
- public: // Set color from vector.
- /** \brief Computes the function used to color the nodes of the simplicial complex from a vector stored in memory.
- *
- * @param[in] color input vector of values.
- *
- */
- void set_color_from_vector(std::vector<double> color) {
- for (unsigned int i = 0; i < color.size(); i++) func_color.push_back(color[i]);
- }
-
- public: // Create a .dot file that can be compiled with neato to produce a .pdf file.
- /** \brief Creates a .dot file called SC.dot for neato (part of the graphviz package) once the simplicial complex is
- * computed to get a visualization
- * of its 1-skeleton in a .pdf file.
- */
- void plot_DOT() {
- std::string mapp = point_cloud_name + "_sc.dot";
- std::ofstream graphic(mapp);
-
- double maxv = std::numeric_limits<double>::lowest();
- double minv = std::numeric_limits<double>::max();
- for (std::map<int, std::pair<int, double> >::iterator iit = cover_color.begin(); iit != cover_color.end(); iit++) {
- maxv = std::max(maxv, iit->second.second);
- minv = std::min(minv, iit->second.second);
- }
-
- int k = 0;
- std::vector<int> nodes;
- nodes.clear();
-
- graphic << "graph GIC {" << std::endl;
- int id = 0;
- for (std::map<int, std::pair<int, double> >::iterator iit = cover_color.begin(); iit != cover_color.end(); iit++) {
- if (iit->second.first > mask) {
- nodes.push_back(iit->first);
- name2id[iit->first] = id;
- name2idinv[id] = iit->first;
- id++;
- graphic << name2id[iit->first] << "[shape=circle fontcolor=black color=black label=\"" << name2id[iit->first]
- << ":" << iit->second.first << "\" style=filled fillcolor=\""
- << (1 - (maxv - iit->second.second) / (maxv - minv)) * 0.6 << ", 1, 1\"]" << std::endl;
- k++;
- }
- }
- int ke = 0;
- int num_simplices = simplices.size();
- for (int i = 0; i < num_simplices; i++)
- if (simplices[i].size() == 2) {
- if (cover_color[simplices[i][0]].first > mask && cover_color[simplices[i][1]].first > mask) {
- graphic << " " << name2id[simplices[i][0]] << " -- " << name2id[simplices[i][1]] << " [weight=15];"
- << std::endl;
- ke++;
- }
- }
- graphic << "}";
- graphic.close();
- std::cout << mapp << " file generated. It can be visualized with e.g. neato." << std::endl;
- }
-
- public: // Create a .txt file that can be compiled with KeplerMapper.
- /** \brief Creates a .txt file called SC.txt describing the 1-skeleton, which can then be plotted with e.g.
- * KeplerMapper.
- */
- void write_info() {
- int num_simplices = simplices.size();
- int num_edges = 0;
- std::string mapp = point_cloud_name + "_sc.txt";
- std::ofstream graphic(mapp);
-
- for (int i = 0; i < num_simplices; i++)
- if (simplices[i].size() == 2)
- if (cover_color[simplices[i][0]].first > mask && cover_color[simplices[i][1]].first > mask) num_edges++;
-
- graphic << point_cloud_name << std::endl;
- graphic << cover_name << std::endl;
- graphic << color_name << std::endl;
- graphic << resolution_double << " " << gain << std::endl;
- graphic << cover_color.size() << " " << num_edges << std::endl;
-
- int id = 0;
- for (std::map<int, std::pair<int, double> >::iterator iit = cover_color.begin(); iit != cover_color.end(); iit++) {
- graphic << id << " " << iit->second.second << " " << iit->second.first << std::endl;
- name2id[iit->first] = id;
- name2idinv[id] = iit->first;
- id++;
- }
-
- for (int i = 0; i < num_simplices; i++)
- if (simplices[i].size() == 2)
- if (cover_color[simplices[i][0]].first > mask && cover_color[simplices[i][1]].first > mask)
- graphic << name2id[simplices[i][0]] << " " << name2id[simplices[i][1]] << std::endl;
- graphic.close();
- std::cout << mapp
- << " generated. It can be visualized with e.g. python KeplerMapperVisuFromTxtFile.py and firefox."
- << std::endl;
- }
-
- public: // Create a .off file that can be visualized (e.g. with Geomview).
- /** \brief Creates a .off file called SC.off for 3D visualization, which contains the 2-skeleton of the GIC.
- * This function assumes that the cover has been computed with Voronoi. If data points are in 1D or 2D,
- * the remaining coordinates of the points embedded in 3D are set to 0.
- */
- void plot_OFF() {
- assert(cover_name == "Voronoi");
-
- int m = voronoi_subsamples.size();
- int numedges = 0;
- int numfaces = 0;
- std::vector<std::vector<int> > edges, faces;
- int numsimplices = simplices.size();
-
- std::string mapp = point_cloud_name + "_sc.off";
- std::ofstream graphic(mapp);
-
- graphic << "OFF" << std::endl;
- for (int i = 0; i < numsimplices; i++) {
- if (simplices[i].size() == 2) {
- numedges++;
- edges.push_back(simplices[i]);
- }
- if (simplices[i].size() == 3) {
- numfaces++;
- faces.push_back(simplices[i]);
- }
- }
- graphic << m << " " << numedges + numfaces << std::endl;
- for (int i = 0; i < m; i++) {
- if (data_dimension <= 3) {
- for (int j = 0; j < data_dimension; j++) graphic << point_cloud[voronoi_subsamples[i]][j] << " ";
- for (int j = data_dimension; j < 3; j++) graphic << 0 << " ";
- graphic << std::endl;
- } else {
- for (int j = 0; j < 3; j++) graphic << point_cloud[voronoi_subsamples[i]][j] << " ";
- }
- }
- for (int i = 0; i < numedges; i++) graphic << 2 << " " << edges[i][0] << " " << edges[i][1] << std::endl;
- for (int i = 0; i < numfaces; i++)
- graphic << 3 << " " << faces[i][0] << " " << faces[i][1] << " " << faces[i][2] << std::endl;
- graphic.close();
- std::cout << mapp << " generated. It can be visualized with e.g. geomview." << std::endl;
- }
-
- // *******************************************************************************************************************
- // Extended Persistence Diagrams.
- // *******************************************************************************************************************
-
- public:
- /** \brief Computes the extended persistence diagram of the complex.
- *
- */
- void compute_PD() {
- Simplex_tree st;
-
- // Compute max and min
- double maxf = std::numeric_limits<double>::lowest();
- double minf = std::numeric_limits<double>::max();
- for (std::map<int, double>::iterator it = cover_std.begin(); it != cover_std.end(); it++) {
- maxf = std::max(maxf, it->second);
- minf = std::min(minf, it->second);
- }
-
- // Build filtration
- for (auto const& simplex : simplices) {
- std::vector<int> splx = simplex; splx.push_back(-2);
- st.insert_simplex_and_subfaces(splx, -3);
- }
-
- for (std::map<int, double>::iterator it = cover_std.begin(); it != cover_std.end(); it++) {
- int vertex = it->first; float val = it->second;
- int vert[] = {vertex}; int edge[] = {vertex, -2};
- st.assign_filtration(st.find(vert), -2 + (val - minf)/(maxf - minf));
- st.assign_filtration(st.find(edge), 2 - (val - minf)/(maxf - minf));
- }
- st.make_filtration_non_decreasing();
-
- // Compute PD
- Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Gudhi::persistent_cohomology::Field_Zp> pcoh(st); pcoh.init_coefficients(2);
- pcoh.compute_persistent_cohomology();
-
- // Output PD
- int max_dim = st.dimension();
- for (int i = 0; i < max_dim; i++) {
- std::vector<std::pair<double, double> > bars = pcoh.intervals_in_dimension(i);
- int num_bars = bars.size(); if(i == 0) num_bars -= 1;
- if(verbose) std::cout << num_bars << " interval(s) in dimension " << i << ":" << std::endl;
- for (int j = 0; j < num_bars; j++) {
- double birth = bars[j].first;
- double death = bars[j].second;
- if (i == 0 && std::isinf(death)) continue;
- if (birth < 0)
- birth = minf + (birth + 2) * (maxf - minf);
- else
- birth = minf + (2 - birth) * (maxf - minf);
- if (death < 0)
- death = minf + (death + 2) * (maxf - minf);
- else
- death = minf + (2 - death) * (maxf - minf);
- PD.push_back(std::pair<double, double>(birth, death));
- if (verbose) std::cout << " [" << birth << ", " << death << "]" << std::endl;
- }
- }
- }
-
- public:
- /** \brief Computes bootstrapped distances distribution.
- *
- * @param[in] N number of bootstrap iterations.
- *
- */
- void compute_distribution(unsigned int N = 100) {
- unsigned int sz = distribution.size();
- if (sz >= N) {
- std::cout << "Already done!" << std::endl;
- } else {
- for (unsigned int i = 0; i < N - sz; i++) {
- if (verbose) std::cout << "Computing " << i << "th bootstrap, bottleneck distance = ";
-
- Cover_complex Cboot; Cboot.n = this->n; Cboot.data_dimension = this->data_dimension; Cboot.type = this->type; Cboot.functional_cover = true;
-
- std::vector<int> boot(this->n);
- for (int j = 0; j < this->n; j++) {
- double u = GetUniform();
- int id = std::floor(u * (this->n)); boot[j] = id;
- Cboot.point_cloud.push_back(this->point_cloud[id]); Cboot.cover.emplace_back(); Cboot.func.push_back(this->func[id]);
- boost::add_vertex(Cboot.one_skeleton_OFF); Cboot.vertices.push_back(boost::add_vertex(Cboot.one_skeleton));
- }
- Cboot.set_color_from_vector(Cboot.func);
-
- for (int j = 0; j < n; j++) {
- std::vector<double> dist(n);
- for (int k = 0; k < n; k++) dist[k] = distances[boot[j]][boot[k]];
- Cboot.distances.push_back(dist);
- }
-
- Cboot.set_graph_from_automatic_rips(Gudhi::Euclidean_distance());
- Cboot.set_gain();
- Cboot.set_automatic_resolution();
- Cboot.set_cover_from_function();
- Cboot.find_simplices();
- Cboot.compute_PD();
- double db = Gudhi::persistence_diagram::bottleneck_distance(this->PD, Cboot.PD);
- if (verbose) std::cout << db << std::endl;
- distribution.push_back(db);
- }
-
- std::sort(distribution.begin(), distribution.end());
- }
- }
-
- public:
- /** \brief Computes the bottleneck distance threshold corresponding to a specific confidence level.
- *
- * @param[in] alpha Confidence level.
- *
- */
- double compute_distance_from_confidence_level(double alpha) {
- unsigned int N = distribution.size();
- double d = distribution[std::floor(alpha * N)];
- if (verbose) std::cout << "Distance corresponding to confidence " << alpha << " is " << d << std::endl;
- return d;
- }
-
- public:
- /** \brief Computes the confidence level of a specific bottleneck distance threshold.
- *
- * @param[in] d Bottleneck distance.
- *
- */
- double compute_confidence_level_from_distance(double d) {
- unsigned int N = distribution.size();
- double level = 1;
- for (unsigned int i = 0; i < N; i++)
- if (distribution[i] > d){ level = i * 1.0 / N; break; }
- if (verbose) std::cout << "Confidence level of distance " << d << " is " << level << std::endl;
- return level;
- }
-
- public:
- /** \brief Computes the p-value, i.e. the opposite of the confidence level of the largest bottleneck
- * distance preserving the points in the persistence diagram of the output simplicial complex.
- *
- */
- double compute_p_value() {
- double distancemin = std::numeric_limits<double>::max(); int N = PD.size();
- for (int i = 0; i < N; i++) distancemin = std::min(distancemin, 0.5 * std::abs(PD[i].second - PD[i].first));
- double p_value = 1 - compute_confidence_level_from_distance(distancemin);
- if (verbose) std::cout << "p value = " << p_value << std::endl;
- return p_value;
- }
-
- // *******************************************************************************************************************
- // Computation of simplices.
- // *******************************************************************************************************************
-
- public:
- /** \brief Creates the simplicial complex.
- *
- * @param[in] complex SimplicialComplex to be created.
- *
- */
- template <typename SimplicialComplex>
- void create_complex(SimplicialComplex& complex) {
- unsigned int dimension = 0;
- for (auto const& simplex : simplices) {
- int numvert = simplex.size();
- double filt = std::numeric_limits<double>::lowest();
- for (int i = 0; i < numvert; i++) filt = std::max(cover_color[simplex[i]].second, filt);
- complex.insert_simplex_and_subfaces(simplex, filt);
- if (dimension < simplex.size() - 1) dimension = simplex.size() - 1;
- }
- }
-
- public:
- /** \brief Computes the simplices of the simplicial complex.
- */
- void find_simplices() {
- if (type != "Nerve" && type != "GIC") {
- std::cout << "Type of complex needs to be specified." << std::endl;
- return;
- }
-
- if (type == "Nerve") {
- for(int i = 0; i < n; i++) simplices.push_back(cover[i]);
- std::sort(simplices.begin(), simplices.end());
- std::vector<std::vector<int> >::iterator it = std::unique(simplices.begin(), simplices.end());
- simplices.resize(std::distance(simplices.begin(), it));
- }
-
- if (type == "GIC") {
- Index_map index = boost::get(boost::vertex_index, one_skeleton);
-
- if (functional_cover) {
- // Computes the simplices in the GIC by looking at all the edges of the graph and adding the
- // corresponding edges in the GIC if the images of the endpoints belong to consecutive intervals.
-
- if (gain >= 0.5)
- throw std::invalid_argument(
- "the output of this function is correct ONLY if the cover is minimal, i.e. the gain is less than 0.5.");
-
- // Loop on all edges.
- boost::graph_traits<Graph>::edge_iterator ei, ei_end;
- for (boost::tie(ei, ei_end) = boost::edges(one_skeleton); ei != ei_end; ++ei) {
- int nums = cover[index[boost::source(*ei, one_skeleton)]].size();
- for (int i = 0; i < nums; i++) {
- int vs = cover[index[boost::source(*ei, one_skeleton)]][i];
- int numt = cover[index[boost::target(*ei, one_skeleton)]].size();
- for (int j = 0; j < numt; j++) {
- int vt = cover[index[boost::target(*ei, one_skeleton)]][j];
- if (cover_fct[vs] == cover_fct[vt] + 1 || cover_fct[vt] == cover_fct[vs] + 1) {
- std::vector<int> edge(2);
- edge[0] = std::min(vs, vt);
- edge[1] = std::max(vs, vt);
- simplices.push_back(edge);
- goto afterLoop;
- }
- }
- }
- afterLoop:;
- }
- std::sort(simplices.begin(), simplices.end());
- std::vector<std::vector<int> >::iterator it = std::unique(simplices.begin(), simplices.end());
- simplices.resize(std::distance(simplices.begin(), it));
-
- } else {
- // Find edges to keep
- Simplex_tree st;
- boost::graph_traits<Graph>::edge_iterator ei, ei_end;
- for (boost::tie(ei, ei_end) = boost::edges(one_skeleton); ei != ei_end; ++ei)
- if (!(cover[index[boost::target(*ei, one_skeleton)]].size() == 1 &&
- cover[index[boost::target(*ei, one_skeleton)]] == cover[index[boost::source(*ei, one_skeleton)]])) {
- std::vector<int> edge(2);
- edge[0] = index[boost::source(*ei, one_skeleton)];
- edge[1] = index[boost::target(*ei, one_skeleton)];
- st.insert_simplex_and_subfaces(edge);
- }
-
- // st.insert_graph(one_skeleton);
-
- // Build the Simplex Tree corresponding to the graph
- st.expansion(maximal_dim);
-
- // Find simplices of GIC
- simplices.clear();
- for (auto simplex : st.complex_simplex_range()) {
- if (!st.has_children(simplex)) {
- std::vector<int> simplx;
- for (auto vertex : st.simplex_vertex_range(simplex)) {
- unsigned int sz = cover[vertex].size();
- for (unsigned int i = 0; i < sz; i++) {
- simplx.push_back(cover[vertex][i]);
- }
- }
- std::sort(simplx.begin(), simplx.end());
- std::vector<int>::iterator it = std::unique(simplx.begin(), simplx.end());
- simplx.resize(std::distance(simplx.begin(), it));
- simplices.push_back(simplx);
- }
- }
- std::sort(simplices.begin(), simplices.end());
- std::vector<std::vector<int> >::iterator it = std::unique(simplices.begin(), simplices.end());
- simplices.resize(std::distance(simplices.begin(), it));
- }
- }
- }
-};
-
-} // namespace cover_complex
-
-} // namespace Gudhi
-
-#endif // GIC_H_
diff --git a/include/gudhi/Graph_matching.h b/include/gudhi/Graph_matching.h
deleted file mode 100644
index 313e7d9c..00000000
--- a/include/gudhi/Graph_matching.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author: Francois Godi
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GRAPH_MATCHING_H_
-#define GRAPH_MATCHING_H_
-
-#include <gudhi/Neighbors_finder.h>
-
-#include <vector>
-#include <unordered_set>
-#include <algorithm>
-
-namespace Gudhi {
-
-namespace persistence_diagram {
-
-/** \internal \brief Structure representing a graph matching. The graph is a Persistence_diagrams_graph.
- *
- * \ingroup bottleneck_distance
- */
-class Graph_matching {
- public:
- /** \internal \brief Constructor constructing an empty matching. */
- explicit Graph_matching(Persistence_graph &g);
- /** \internal \brief Is the matching perfect ? */
- bool perfect() const;
- /** \internal \brief Augments the matching with a maximal set of edge-disjoint shortest augmenting paths. */
- bool multi_augment();
- /** \internal \brief Sets the maximum length of the edges allowed to be added in the matching, 0 initially. */
- void set_r(double r);
-
- private:
- Persistence_graph* gp;
- double r;
- /** \internal \brief Given a point from V, provides its matched point in U, null_point_index() if there isn't. */
- std::vector<int> v_to_u;
- /** \internal \brief All the unmatched points in U. */
- std::unordered_set<int> unmatched_in_u;
-
- /** \internal \brief Provides a Layered_neighbors_finder dividing the graph in layers. Basically a BFS. */
- Layered_neighbors_finder layering() const;
- /** \internal \brief Augments the matching with a simple path no longer than max_depth. Basically a DFS. */
- bool augment(Layered_neighbors_finder & layered_nf, int u_start_index, int max_depth);
- /** \internal \brief Update the matching with the simple augmenting path given as parameter. */
- void update(std::vector<int> & path);
-};
-
-inline Graph_matching::Graph_matching(Persistence_graph& g)
- : gp(&g), r(0.), v_to_u(g.size(), null_point_index()), unmatched_in_u(g.size()) {
- for (int u_point_index = 0; u_point_index < g.size(); ++u_point_index)
- unmatched_in_u.insert(u_point_index);
-}
-
-inline bool Graph_matching::perfect() const {
- return unmatched_in_u.empty();
-}
-
-inline bool Graph_matching::multi_augment() {
- if (perfect())
- return false;
- Layered_neighbors_finder layered_nf(layering());
- int max_depth = layered_nf.vlayers_number()*2 - 1;
- double rn = sqrt(gp->size());
- // verification of a necessary criterion in order to shortcut if possible
- if (max_depth < 0 || (unmatched_in_u.size() > rn && max_depth >= rn))
- return false;
- bool successful = false;
- std::vector<int> tries(unmatched_in_u.cbegin(), unmatched_in_u.cend());
- for (auto it = tries.cbegin(); it != tries.cend(); it++)
- // 'augment' has side-effects which have to be always executed, don't change order
- successful = augment(layered_nf, *it, max_depth) || successful;
- return successful;
-}
-
-inline void Graph_matching::set_r(double r) {
- this->r = r;
-}
-
-inline bool Graph_matching::augment(Layered_neighbors_finder & layered_nf, int u_start_index, int max_depth) {
- // V vertices have at most one successor, thus when we backtrack from U we can directly pop_back 2 vertices.
- std::vector<int> path;
- path.emplace_back(u_start_index);
- do {
- if (static_cast<int> (path.size()) > max_depth) {
- path.pop_back();
- path.pop_back();
- }
- if (path.empty())
- return false;
- path.emplace_back(layered_nf.pull_near(path.back(), static_cast<int> (path.size()) / 2));
- while (path.back() == null_point_index()) {
- path.pop_back();
- path.pop_back();
- if (path.empty())
- return false;
- path.pop_back();
- path.emplace_back(layered_nf.pull_near(path.back(), path.size() / 2));
- }
- path.emplace_back(v_to_u.at(path.back()));
- } while (path.back() != null_point_index());
- // if v_to_u.at(path.back()) has no successor, path.back() is an exposed vertex
- path.pop_back();
- update(path);
- return true;
-}
-
-inline Layered_neighbors_finder Graph_matching::layering() const {
- std::vector<int> u_vertices(unmatched_in_u.cbegin(), unmatched_in_u.cend());
- std::vector<int> v_vertices;
- Neighbors_finder nf(*gp, r);
- for (int v_point_index = 0; v_point_index < gp->size(); ++v_point_index)
- nf.add(v_point_index);
- Layered_neighbors_finder layered_nf(*gp, r);
- for (int layer = 0; !u_vertices.empty(); layer++) {
- // one layer is one step in the BFS
- for (auto it1 = u_vertices.cbegin(); it1 != u_vertices.cend(); ++it1) {
- std::vector<int> u_succ(nf.pull_all_near(*it1));
- for (auto it2 = u_succ.begin(); it2 != u_succ.end(); ++it2) {
- layered_nf.add(*it2, layer);
- v_vertices.emplace_back(*it2);
- }
- }
- // When the above for finishes, we have progress of one half-step (from U to V) in the BFS
- u_vertices.clear();
- bool end = false;
- for (auto it = v_vertices.cbegin(); it != v_vertices.cend(); it++)
- if (v_to_u.at(*it) == null_point_index())
- // we stop when a nearest exposed V vertex (from U exposed vertices) has been found
- end = true;
- else
- u_vertices.emplace_back(v_to_u.at(*it));
- // When the above for finishes, we have progress of one half-step (from V to U) in the BFS
- if (end)
- return layered_nf;
- v_vertices.clear();
- }
- return layered_nf;
-}
-
-inline void Graph_matching::update(std::vector<int>& path) {
- // Must return 1.
- unmatched_in_u.erase(path.front());
- for (auto it = path.cbegin(); it != path.cend(); ++it) {
- // Be careful, the iterator is incremented twice each time
- int tmp = *it;
- v_to_u[*(++it)] = tmp;
- }
-}
-
-
-} // namespace persistence_diagram
-
-} // namespace Gudhi
-
-#endif // GRAPH_MATCHING_H_
diff --git a/include/gudhi/Hasse_complex.h b/include/gudhi/Hasse_complex.h
deleted file mode 100644
index efcaea55..00000000
--- a/include/gudhi/Hasse_complex.h
+++ /dev/null
@@ -1,248 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef HASSE_COMPLEX_H_
-#define HASSE_COMPLEX_H_
-
-#include <gudhi/allocator.h>
-
-#include <boost/iterator/counting_iterator.hpp>
-
-#include <algorithm>
-#include <utility> // for pair
-#include <vector>
-#include <limits> // for infinity value
-
-#ifdef GUDHI_USE_TBB
-#include <tbb/parallel_for.h>
-#endif
-
-namespace Gudhi {
-
-template < class HasseCpx >
-struct Hasse_simplex {
- // Complex_ds must verify that cpx->key(sh) is the order of sh in the filtration
-
- template< class Complex_ds >
- Hasse_simplex(Complex_ds & cpx
- , typename Complex_ds::Simplex_handle sh)
- : filtration_(cpx.filtration(sh))
- , boundary_() {
- boundary_.reserve(cpx.dimension(sh) + 1);
- for (auto b_sh : cpx.boundary_simplex_range(sh)) {
- boundary_.push_back(cpx.key(b_sh));
- }
- }
-
- Hasse_simplex(typename HasseCpx::Simplex_key key
- , typename HasseCpx::Filtration_value fil
- , std::vector<typename HasseCpx::Simplex_handle> const& boundary)
- : key_(key)
- , filtration_(fil)
- , boundary_(boundary) { }
-
- typename HasseCpx::Simplex_key key_;
- typename HasseCpx::Filtration_value filtration_;
- std::vector<typename HasseCpx::Simplex_handle> boundary_;
-};
-
-/** \private
- * \brief Data structure representing a Hasse diagram, i.e.
- * a complex where all codimension 1 incidence
- * relations are explicitly encoded.
- *
- * \implements FilteredComplex
- * \ingroup simplex_tree
- */
-template < typename FiltrationValue = double
-, typename SimplexKey = int
-, typename VertexHandle = int
->
-class Hasse_complex {
- public:
- typedef Hasse_simplex<Hasse_complex> Hasse_simp;
- typedef FiltrationValue Filtration_value;
- typedef SimplexKey Simplex_key;
- typedef int Simplex_handle; // index in vector complex_
-
- typedef boost::counting_iterator< Simplex_handle > Filtration_simplex_iterator;
- typedef boost::iterator_range<Filtration_simplex_iterator> Filtration_simplex_range;
-
- typedef typename std::vector< Simplex_handle >::iterator Boundary_simplex_iterator;
- typedef boost::iterator_range<Boundary_simplex_iterator> Boundary_simplex_range;
-
- typedef typename std::vector< Simplex_handle >::iterator Skeleton_simplex_iterator;
- typedef boost::iterator_range< Skeleton_simplex_iterator > Skeleton_simplex_range;
-
- /* only dimension 0 skeleton_simplex_range(...) */
- Skeleton_simplex_range skeleton_simplex_range(int dim = 0) {
- if (dim != 0) {
- std::cerr << "Dimension must be 0 \n";
- }
- return Skeleton_simplex_range(vertices_.begin(), vertices_.end());
- }
-
- template < class Complex_ds >
- Hasse_complex(Complex_ds & cpx)
- : complex_(cpx.num_simplices())
- , vertices_()
- , num_vertices_()
- , dim_max_(cpx.dimension()) {
- int size = complex_.size();
-#ifdef GUDHI_USE_TBB
- tbb::parallel_for(0, size, [&](int idx){new (&complex_[idx]) Hasse_simp(cpx, cpx.simplex(idx));});
- for (int idx=0; idx < size; ++idx)
- if (complex_[idx].boundary_.empty())
- vertices_.push_back(idx);
-#else
- for (int idx=0; idx < size; ++idx) {
- new (&complex_[idx]) Hasse_simp(cpx, cpx.simplex(idx));
- if (complex_[idx].boundary_.empty())
- vertices_.push_back(idx);
- }
-#endif
- }
-
- Hasse_complex()
- : complex_()
- , vertices_()
- , num_vertices_(0)
- , dim_max_(-1) { }
-
- size_t num_simplices() {
- return complex_.size();
- }
-
- Filtration_simplex_range filtration_simplex_range() {
- return Filtration_simplex_range(Filtration_simplex_iterator(0)
- , Filtration_simplex_iterator(complex_.size()));
- }
-
- Simplex_key key(Simplex_handle sh) {
- return complex_[sh].key_;
- }
-
- Simplex_key null_key() {
- return -1;
- }
-
- Simplex_handle simplex(Simplex_key key) {
- if (key == null_key()) return null_simplex();
- return key;
- }
-
- Simplex_handle null_simplex() {
- return -1;
- }
-
- Filtration_value filtration(Simplex_handle sh) {
- if (sh == null_simplex()) {
- return std::numeric_limits<Filtration_value>::infinity();
- }
- return complex_[sh].filtration_;
- }
-
- int dimension(Simplex_handle sh) {
- if (complex_[sh].boundary_.empty()) return 0;
- return complex_[sh].boundary_.size() - 1;
- }
-
- int dimension() {
- return dim_max_;
- }
-
- std::pair<Simplex_handle, Simplex_handle> endpoints(Simplex_handle sh) {
- return std::pair<Simplex_handle, Simplex_handle>(complex_[sh].boundary_[0]
- , complex_[sh].boundary_[1]);
- }
-
- void assign_key(Simplex_handle sh, Simplex_key key) {
- complex_[sh].key_ = key;
- }
-
- Boundary_simplex_range boundary_simplex_range(Simplex_handle sh) {
- return Boundary_simplex_range(complex_[sh].boundary_.begin()
- , complex_[sh].boundary_.end());
- }
-
- void display_simplex(Simplex_handle sh) {
- std::cout << dimension(sh) << " ";
- for (auto sh_b : boundary_simplex_range(sh)) std::cout << sh_b << " ";
- std::cout << " " << filtration(sh) << " key=" << key(sh);
- }
-
- void initialize_filtration() {
- // Setting the keys is done by pcoh, Simplex_tree doesn't do it either.
-#if 0
- Simplex_key key = 0;
- for (auto & h_simp : complex_)
- h_simp.key_ = key++;
-#endif
- }
-
- std::vector< Hasse_simp, Gudhi::no_init_allocator<Hasse_simp> > complex_;
- std::vector<Simplex_handle> vertices_;
- size_t num_vertices_;
- int dim_max_;
-};
-
-template< typename T1, typename T2, typename T3 >
-std::istream& operator>>(std::istream & is
- , Hasse_complex< T1, T2, T3 > & hcpx) {
- assert(hcpx.num_simplices() == 0);
-
- size_t num_simp;
- is >> num_simp;
- hcpx.complex_.reserve(num_simp);
-
- std::vector< typename Hasse_complex<T1, T2, T3>::Simplex_key > boundary;
- typename Hasse_complex<T1, T2, T3>::Filtration_value fil;
- typename Hasse_complex<T1, T2, T3>::Filtration_value max_fil = 0;
- int max_dim = -1;
- int key = 0;
- // read all simplices in the file as a list of vertices
- while (read_hasse_simplex(is, boundary, fil)) {
- // insert every simplex in the simplex tree
- hcpx.complex_.emplace_back(key, fil, boundary);
-
- if (max_dim < hcpx.dimension(key)) {
- max_dim = hcpx.dimension(key);
- }
- if (hcpx.dimension(key) == 0) {
- hcpx.vertices_.push_back(key);
- }
- if (max_fil < fil) {
- max_fil = fil;
- }
-
- ++key;
- boundary.clear();
- }
-
- hcpx.dim_max_ = max_dim;
-
- return is;
-}
-
-} // namespace Gudhi
-
-#endif // HASSE_COMPLEX_H_
diff --git a/include/gudhi/Internal_point.h b/include/gudhi/Internal_point.h
deleted file mode 100644
index 7f350f64..00000000
--- a/include/gudhi/Internal_point.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author: Francois Godi
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef INTERNAL_POINT_H_
-#define INTERNAL_POINT_H_
-
-namespace Gudhi {
-
-namespace persistence_diagram {
-
-/** \internal \brief Returns the used index for encoding none of the points */
-int null_point_index();
-
-/** \internal \typedef \brief Internal_point is the internal points representation, indexes used outside. */
-struct Internal_point {
- double vec[2];
- int point_index;
-
- Internal_point() { }
-
- Internal_point(double x, double y, int p_i) {
- vec[0] = x;
- vec[1] = y;
- point_index = p_i;
- }
-
- double x() const {
- return vec[ 0 ];
- }
-
- double y() const {
- return vec[ 1 ];
- }
-
- double& x() {
- return vec[ 0 ];
- }
-
- double& y() {
- return vec[ 1 ];
- }
-
- bool operator==(const Internal_point& p) const {
- return point_index == p.point_index;
- }
-
- bool operator!=(const Internal_point& p) const {
- return !(*this == p);
- }
-};
-
-inline int null_point_index() {
- return -1;
-}
-
-struct Construct_coord_iterator {
- typedef const double* result_type;
-
- const double* operator()(const Internal_point& p) const {
- return p.vec;
- }
-
- const double* operator()(const Internal_point& p, int) const {
- return p.vec + 2;
- }
-};
-
-} // namespace persistence_diagram
-
-} // namespace Gudhi
-
-#endif // INTERNAL_POINT_H_
diff --git a/include/gudhi/Kd_tree_search.h b/include/gudhi/Kd_tree_search.h
deleted file mode 100644
index ad1054e5..00000000
--- a/include/gudhi/Kd_tree_search.h
+++ /dev/null
@@ -1,286 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clement Jamin
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef KD_TREE_SEARCH_H_
-#define KD_TREE_SEARCH_H_
-
-#include <CGAL/Orthogonal_k_neighbor_search.h>
-#include <CGAL/Orthogonal_incremental_neighbor_search.h>
-#include <CGAL/Search_traits.h>
-#include <CGAL/Search_traits_adapter.h>
-#include <CGAL/Fuzzy_sphere.h>
-#include <CGAL/property_map.h>
-
-#include <boost/property_map/property_map.hpp>
-#include <boost/iterator/counting_iterator.hpp>
-
-#include <cstddef>
-#include <vector>
-
-namespace Gudhi {
-namespace spatial_searching {
-
-
- /**
- * \class Kd_tree_search Kd_tree_search.h gudhi/Kd_tree_search.h
- * \brief Spatial tree data structure to perform (approximate) nearest and furthest neighbor search.
- *
- * \ingroup spatial_searching
- *
- * \details
- * The class Kd_tree_search is a tree-based data structure, based on
- * <a target="_blank" href="http://doc.cgal.org/latest/Spatial_searching/index.html">CGAL dD spatial searching data structures</a>.
- * It provides a simplified API to perform (approximate) nearest and furthest neighbor searches. Contrary to CGAL default behavior, the tree
- * does not store the points themselves, but stores indices.
- *
- * There are two types of queries: the <i>k-nearest or k-furthest neighbor query</i>, where <i>k</i> is fixed and the <i>k</i> nearest
- * or furthest points are computed right away,
- * and the <i>incremental nearest or furthest neighbor query</i>, where no number of neighbors is provided during the call, as the
- * neighbors will be computed incrementally when the iterator on the range is incremented.
- *
- * \tparam Search_traits must be a model of the <a target="_blank"
- * href="http://doc.cgal.org/latest/Spatial_searching/classSearchTraits.html">SearchTraits</a>
- * concept, such as the <a target="_blank"
- * href="http://doc.cgal.org/latest/Kernel_d/classCGAL_1_1Epick__d.html">CGAL::Epick_d</a> class, which
- * can be static if you know the ambiant dimension at compile-time, or dynamic if you don't.
- * \tparam Point_range is the type of the range that provides the points.
- * It must be a range whose iterator type is a `RandomAccessIterator`.
- */
-template <typename Search_traits, typename Point_range>
-class Kd_tree_search {
- typedef boost::iterator_property_map<
- typename Point_range::const_iterator,
- CGAL::Identity_property_map<std::ptrdiff_t> > Point_property_map;
-
- public:
- /// The Traits.
- typedef Search_traits Traits;
- /// Number type used for distances.
- typedef typename Traits::FT FT;
- /// The point type.
- typedef typename Point_range::value_type Point;
-
- typedef CGAL::Search_traits<
- FT, Point,
- typename Traits::Cartesian_const_iterator_d,
- typename Traits::Construct_cartesian_const_iterator_d> Traits_base;
-
- typedef CGAL::Search_traits_adapter<
- std::ptrdiff_t,
- Point_property_map,
- Traits_base> STraits;
- typedef CGAL::Distance_adapter<
- std::ptrdiff_t,
- Point_property_map,
- CGAL::Euclidean_distance<Traits_base> > Orthogonal_distance;
-
- typedef CGAL::Orthogonal_k_neighbor_search<STraits> K_neighbor_search;
- typedef typename K_neighbor_search::Tree Tree;
- typedef typename K_neighbor_search::Distance Distance;
- /// \brief The range returned by a k-nearest or k-furthest neighbor search.
- /// Its value type is `std::pair<std::size_t, FT>` where `first` is the index
- /// of a point P and `second` is the squared distance between P and the query point.
- typedef K_neighbor_search KNS_range;
-
- typedef CGAL::Orthogonal_incremental_neighbor_search<
- STraits, Distance, CGAL::Sliding_midpoint<STraits>, Tree>
- Incremental_neighbor_search;
- /// \brief The range returned by an incremental nearest or furthest neighbor search.
- /// Its value type is `std::pair<std::size_t, FT>` where `first` is the index
- /// of a point P and `second` is the squared distance between P and the query point.
- typedef Incremental_neighbor_search INS_range;
-
- typedef CGAL::Fuzzy_sphere<STraits> Fuzzy_sphere;
- /// \brief Constructor
- /// @param[in] points Const reference to the point range. This range
- /// is not copied, so it should not be destroyed or modified afterwards.
- Kd_tree_search(Point_range const& points)
- : m_points(points),
- m_tree(boost::counting_iterator<std::ptrdiff_t>(0),
- boost::counting_iterator<std::ptrdiff_t>(points.size()),
- typename Tree::Splitter(),
- STraits(std::begin(points))) {
- // Build the tree now (we don't want to wait for the first query)
- m_tree.build();
- }
-
- /// \brief Constructor
- /// @param[in] points Const reference to the point range. This range
- /// is not copied, so it should not be destroyed or modified afterwards.
- /// @param[in] only_these_points Specifies the indices of the points that
- /// should be actually inserted into the tree. The other points are ignored.
- template <typename Point_indices_range>
- Kd_tree_search(
- Point_range const& points,
- Point_indices_range const& only_these_points)
- : m_points(points),
- m_tree(
- only_these_points.begin(), only_these_points.end(),
- typename Tree::Splitter(),
- STraits(std::begin(points))) {
- // Build the tree now (we don't want to wait for the first query)
- m_tree.build();
- }
-
- /// \brief Constructor
- /// @param[in] points Const reference to the point range. This range
- /// is not copied, so it should not be destroyed or modified afterwards.
- /// @param[in] begin_idx, past_the_end_idx Define the subset of the points that
- /// should be actually inserted into the tree. The other points are ignored.
- Kd_tree_search(
- Point_range const& points,
- std::size_t begin_idx, std::size_t past_the_end_idx)
- : m_points(points),
- m_tree(
- boost::counting_iterator<std::ptrdiff_t>(begin_idx),
- boost::counting_iterator<std::ptrdiff_t>(past_the_end_idx),
- typename Tree::Splitter(),
- STraits(std::begin(points))) {
- // Build the tree now (we don't want to wait for the first query)
- m_tree.build();
- }
-
- // Be careful, this function invalidates the tree,
- // which will be recomputed at the next query
- void insert(std::ptrdiff_t point_idx) {
- m_tree.insert(point_idx);
- }
-
- /// \brief Search for the k-nearest neighbors from a query point.
- /// @param[in] p The query point.
- /// @param[in] k Number of nearest points to search.
- /// @param[in] sorted Indicates if the computed sequence of k-nearest neighbors needs to be sorted.
- /// @param[in] eps Approximation factor.
- /// @return A range (whose `value_type` is `std::size_t`) containing the k-nearest neighbors.
- KNS_range k_nearest_neighbors(
- Point const& p,
- unsigned int k,
- bool sorted = true,
- FT eps = FT(0)) const {
- // Initialize the search structure, and search all N points
- // Note that we need to pass the Distance explicitly since it needs to
- // know the property map
- K_neighbor_search search(
- m_tree,
- p,
- k,
- eps,
- true,
- Orthogonal_distance(std::begin(m_points)), sorted);
-
- return search;
- }
-
- /// \brief Search incrementally for the nearest neighbors from a query point.
- /// @param[in] p The query point.
- /// @param[in] eps Approximation factor.
- /// @return A range (whose `value_type` is `std::size_t`) containing the
- /// neighbors sorted by their distance to p.
- /// All the neighbors are not computed by this function, but they will be
- /// computed incrementally when the iterator on the range is incremented.
- INS_range incremental_nearest_neighbors(Point const& p, FT eps = FT(0)) const {
- // Initialize the search structure, and search all N points
- // Note that we need to pass the Distance explicitly since it needs to
- // know the property map
- Incremental_neighbor_search search(
- m_tree,
- p,
- eps,
- true,
- Orthogonal_distance(std::begin(m_points)) );
-
- return search;
- }
-
- /// \brief Search for the k-furthest points from a query point.
- /// @param[in] p The query point.
- /// @param[in] k Number of furthest points to search.
- /// @param[in] sorted Indicates if the computed sequence of k-furthest neighbors needs to be sorted.
- /// @param[in] eps Approximation factor.
- /// @return A range (whose `value_type` is `std::size_t`) containing the k-furthest neighbors.
- KNS_range k_furthest_neighbors(
- Point const& p,
- unsigned int k,
- bool sorted = true,
- FT eps = FT(0)) const {
- // Initialize the search structure, and search all N points
- // Note that we need to pass the Distance explicitly since it needs to
- // know the property map
- K_neighbor_search search(
- m_tree,
- p,
- k,
- eps,
- false,
- Orthogonal_distance(std::begin(m_points)), sorted);
-
- return search;
- }
-
- /// \brief Search incrementally for the furthest neighbors from a query point.
- /// @param[in] p The query point.
- /// @param[in] eps Approximation factor.
- /// @return A range (whose `value_type` is `std::size_t`)
- /// containing the neighbors sorted by their distance to p.
- /// All the neighbors are not computed by this function, but they will be
- /// computed incrementally when the iterator on the range is incremented.
- INS_range incremental_furthest_neighbors(Point const& p, FT eps = FT(0)) const {
- // Initialize the search structure, and search all N points
- // Note that we need to pass the Distance explicitly since it needs to
- // know the property map
- Incremental_neighbor_search search(
- m_tree,
- p,
- eps,
- false,
- Orthogonal_distance(std::begin(m_points)) );
-
- return search;
- }
-
- /// \brief Search for all the neighbors in a ball.
- /// @param[in] p The query point.
- /// @param[in] radius The search radius
- /// @param[out] it The points that lie inside the sphere of center `p` and radius `radius`.
- /// Note: `it` is used this way: `*it++ = each_point`.
- /// @param[in] eps Approximation factor.
- template <typename OutputIterator>
- void all_near_neighbors(Point const& p,
- FT radius,
- OutputIterator it,
- FT eps = FT(0)) const {
- m_tree.search(it, Fuzzy_sphere(p, radius, eps, m_tree.traits()));
- }
-
- int tree_depth() const {
- return m_tree.root()->depth();
- }
-
- private:
- Point_range const& m_points;
- Tree m_tree;
-};
-
-} // namespace spatial_searching
-} // namespace Gudhi
-
-#endif // KD_TREE_SEARCH_H_
diff --git a/include/gudhi/Miniball.COPYRIGHT b/include/gudhi/Miniball.COPYRIGHT
deleted file mode 100644
index dbe4c553..00000000
--- a/include/gudhi/Miniball.COPYRIGHT
+++ /dev/null
@@ -1,4 +0,0 @@
-The miniball software is available under the GNU General Public License (GPLv3 - https://www.gnu.org/copyleft/gpl.html).
-If your intended use is not compliant with this license, please buy a commercial license (EUR 500 - https://people.inf.ethz.ch/gaertner/subdir/software/miniball/license.html).
-You need a license if the software that you develop using Miniball V3.0 is not open source.
-
diff --git a/include/gudhi/Miniball.README b/include/gudhi/Miniball.README
deleted file mode 100644
index 033d8953..00000000
--- a/include/gudhi/Miniball.README
+++ /dev/null
@@ -1,26 +0,0 @@
-https://people.inf.ethz.ch/gaertner/subdir/software/miniball.html
-
-Smallest Enclosing Balls of Points - Fast and Robust in C++.
-(high-quality software for smallest enclosing balls of balls is available in the computational geometry algorithms library CGAL)
-
-
-This is the miniball software (V3.0) for computing smallest enclosing balls of points in arbitrary dimensions. It consists of a C++ header file Miniball.hpp (around 500 lines of code) and two example programs miniball_example.cpp and miniball_example_containers.cpp that demonstrate the usage. The first example stores the coordinates of the input points in a two-dimensional array, the second example uses a list of vectors to show how generic containers can be used.
-
-Credits: Aditya Gupta and Alexandros Konstantinakis-Karmis have significantly contributed to this version of the software.
-
-Changes - https://people.inf.ethz.ch/gaertner/subdir/software/miniball/changes.txt - from previous versions.
-
-The theory - https://people.inf.ethz.ch/gaertner/subdir/texts/own_work/esa99_final.pdf - behind the miniball software (Proc. 7th Annual European Symposium on Algorithms (ESA), Lecture Notes in Computer Science 1643, Springer-Verlag, pp.325-338, 1999).
-
-Main Features:
-
- Very fast in low dimensions. 1 million points in 5-space are processed within 0.05 seconds on any recent machine.
-
- High numerical stability. Almost all input degeneracies (cospherical points, multiple points, points very close together) are routinely handled.
-
- Easily integrates into your code. You can freely choose the coordinate type of your points and the container to store the points. If you still need to adapt the code, the header is small and readable and contains documentation for all major methods.
-
-
-Changes done for the GUDHI version of MiniBall:
- - Add include guard
- - Move Miniball namespace inside a new Gudhi namespace
diff --git a/include/gudhi/Miniball.hpp b/include/gudhi/Miniball.hpp
deleted file mode 100644
index ce6cbb5b..00000000
--- a/include/gudhi/Miniball.hpp
+++ /dev/null
@@ -1,523 +0,0 @@
-// Copright (C) 1999-2013, Bernd Gaertner
-// $Rev: 3581 $
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-// Contact:
-// --------
-// Bernd Gaertner
-// Institute of Theoretical Computer Science
-// ETH Zuerich
-// CAB G31.1
-// CH-8092 Zuerich, Switzerland
-// http://www.inf.ethz.ch/personal/gaertner
-
-#ifndef MINIBALL_HPP_
-#define MINIBALL_HPP_
-
-#include <cassert>
-#include <algorithm>
-#include <list>
-#include <ctime>
-#include <limits>
-
-namespace Gudhi {
-
-namespace Miniball {
-
- // Global Functions
- // ================
- template <typename NT>
- inline NT mb_sqr (NT r) {return r*r;}
-
- // Functors
- // ========
-
- // functor to map a point iterator to the corresponding coordinate iterator;
- // generic version for points whose coordinate containers have begin()
- template < typename Pit_, typename Cit_ >
- struct CoordAccessor {
- typedef Pit_ Pit;
- typedef Cit_ Cit;
- inline Cit operator() (Pit it) const { return (*it).begin(); }
- };
-
- // partial specialization for points whose coordinate containers are arrays
- template < typename Pit_, typename Cit_ >
- struct CoordAccessor<Pit_, Cit_*> {
- typedef Pit_ Pit;
- typedef Cit_* Cit;
- inline Cit operator() (Pit it) const { return *it; }
- };
-
- // Class Declaration
- // =================
-
- template <typename CoordAccessor>
- class Miniball {
- private:
- // types
- // The iterator type to go through the input points
- typedef typename CoordAccessor::Pit Pit;
- // The iterator type to go through the coordinates of a single point.
- typedef typename CoordAccessor::Cit Cit;
- // The coordinate type
- typedef typename std::iterator_traits<Cit>::value_type NT;
- // The iterator to go through the support points
- typedef typename std::list<Pit>::iterator Sit;
-
- // data members...
- const int d; // dimension
- Pit points_begin;
- Pit points_end;
- CoordAccessor coord_accessor;
- double time;
- const NT nt0; // NT(0)
-
- //...for the algorithms
- std::list<Pit> L;
- Sit support_end;
- int fsize; // number of forced points
- int ssize; // number of support points
-
- // ...for the ball updates
- NT* current_c;
- NT current_sqr_r;
- NT** c;
- NT* sqr_r;
-
- // helper arrays
- NT* q0;
- NT* z;
- NT* f;
- NT** v;
- NT** a;
-
- public:
- // The iterator type to go through the support points
- typedef typename std::list<Pit>::const_iterator SupportPointIterator;
-
- // PRE: [begin, end) is a nonempty range
- // POST: computes the smallest enclosing ball of the points in the range
- // [begin, end); the functor a maps a point iterator to an iterator
- // through the d coordinates of the point
- Miniball (int d_, Pit begin, Pit end, CoordAccessor ca = CoordAccessor());
-
- // POST: returns a pointer to the first element of an array that holds
- // the d coordinates of the center of the computed ball
- const NT* center () const;
-
- // POST: returns the squared radius of the computed ball
- NT squared_radius () const;
-
- // POST: returns the number of support points of the computed ball;
- // the support points form a minimal set with the same smallest
- // enclosing ball as the input set; in particular, the support
- // points are on the boundary of the computed ball, and their
- // number is at most d+1
- int nr_support_points () const;
-
- // POST: returns an iterator to the first support point
- SupportPointIterator support_points_begin () const;
-
- // POST: returns a past-the-end iterator for the range of support points
- SupportPointIterator support_points_end () const;
-
- // POST: returns the maximum excess of any input point w.r.t. the computed
- // ball, divided by the squared radius of the computed ball. The
- // excess of a point is the difference between its squared distance
- // from the center and the squared radius; Ideally, the return value
- // is 0. subopt is set to the absolute value of the most negative
- // coefficient in the affine combination of the support points that
- // yields the center. Ideally, this is a convex combination, and there
- // is no negative coefficient in which case subopt is set to 0.
- NT relative_error (NT& subopt) const;
-
- // POST: return true if the relative error is at most tol, and the
- // suboptimality is 0; the default tolerance is 10 times the
- // coordinate type's machine epsilon
- bool is_valid (NT tol = NT(10) * std::numeric_limits<NT>::epsilon()) const;
-
- // POST: returns the time in seconds taken by the constructor call for
- // computing the smallest enclosing ball
- double get_time() const;
-
- // POST: deletes dynamically allocated arrays
- ~Miniball();
-
- private:
- void mtf_mb (Sit n);
- void mtf_move_to_front (Sit j);
- void pivot_mb (Pit n);
- void pivot_move_to_front (Pit j);
- NT excess (Pit pit) const;
- void pop ();
- bool push (Pit pit);
- NT suboptimality () const;
- void create_arrays();
- void delete_arrays();
- };
-
- // Class Definition
- // ================
- template <typename CoordAccessor>
- Miniball<CoordAccessor>::Miniball (int d_, Pit begin, Pit end,
- CoordAccessor ca)
- : d (d_),
- points_begin (begin),
- points_end (end),
- coord_accessor (ca),
- time (clock()),
- nt0 (NT(0)),
- L(),
- support_end (L.begin()),
- fsize(0),
- ssize(0),
- current_c (NULL),
- current_sqr_r (NT(-1)),
- c (NULL),
- sqr_r (NULL),
- q0 (NULL),
- z (NULL),
- f (NULL),
- v (NULL),
- a (NULL)
- {
- assert (points_begin != points_end);
- create_arrays();
-
- // set initial center
- for (int j=0; j<d; ++j) c[0][j] = nt0;
- current_c = c[0];
-
- // compute miniball
- pivot_mb (points_end);
-
- // update time
- time = (clock() - time) / CLOCKS_PER_SEC;
- }
-
- template <typename CoordAccessor>
- Miniball<CoordAccessor>::~Miniball()
- {
- delete_arrays();
- }
-
- template <typename CoordAccessor>
- void Miniball<CoordAccessor>::create_arrays()
- {
- c = new NT*[d+1];
- v = new NT*[d+1];
- a = new NT*[d+1];
- for (int i=0; i<d+1; ++i) {
- c[i] = new NT[d];
- v[i] = new NT[d];
- a[i] = new NT[d];
- }
- sqr_r = new NT[d+1];
- q0 = new NT[d];
- z = new NT[d+1];
- f = new NT[d+1];
- }
-
- template <typename CoordAccessor>
- void Miniball<CoordAccessor>::delete_arrays()
- {
- delete[] f;
- delete[] z;
- delete[] q0;
- delete[] sqr_r;
- for (int i=0; i<d+1; ++i) {
- delete[] a[i];
- delete[] v[i];
- delete[] c[i];
- }
- delete[] a;
- delete[] v;
- delete[] c;
- }
-
- template <typename CoordAccessor>
- const typename Miniball<CoordAccessor>::NT*
- Miniball<CoordAccessor>::center () const
- {
- return current_c;
- }
-
- template <typename CoordAccessor>
- typename Miniball<CoordAccessor>::NT
- Miniball<CoordAccessor>::squared_radius () const
- {
- return current_sqr_r;
- }
-
- template <typename CoordAccessor>
- int Miniball<CoordAccessor>::nr_support_points () const
- {
- assert (ssize < d+2);
- return ssize;
- }
-
- template <typename CoordAccessor>
- typename Miniball<CoordAccessor>::SupportPointIterator
- Miniball<CoordAccessor>::support_points_begin () const
- {
- return L.begin();
- }
-
- template <typename CoordAccessor>
- typename Miniball<CoordAccessor>::SupportPointIterator
- Miniball<CoordAccessor>::support_points_end () const
- {
- return support_end;
- }
-
- template <typename CoordAccessor>
- typename Miniball<CoordAccessor>::NT
- Miniball<CoordAccessor>::relative_error (NT& subopt) const
- {
- NT e, max_e = nt0;
- // compute maximum absolute excess of support points
- for (SupportPointIterator it = support_points_begin();
- it != support_points_end(); ++it) {
- e = excess (*it);
- if (e < nt0) e = -e;
- if (e > max_e) {
- max_e = e;
- }
- }
- // compute maximum excess of any point
- for (Pit i = points_begin; i != points_end; ++i)
- if ((e = excess (i)) > max_e)
- max_e = e;
-
- subopt = suboptimality();
- assert (current_sqr_r > nt0 || max_e == nt0);
- return (current_sqr_r == nt0 ? nt0 : max_e / current_sqr_r);
- }
-
- template <typename CoordAccessor>
- bool Miniball<CoordAccessor>::is_valid (NT tol) const
- {
- NT suboptimality;
- return ( (relative_error (suboptimality) <= tol) && (suboptimality == 0) );
- }
-
- template <typename CoordAccessor>
- double Miniball<CoordAccessor>::get_time() const
- {
- return time;
- }
-
- template <typename CoordAccessor>
- void Miniball<CoordAccessor>::mtf_mb (Sit n)
- {
- // Algorithm 1: mtf_mb (L_{n-1}, B), where L_{n-1} = [L.begin, n)
- // B: the set of forced points, defining the current ball
- // S: the superset of support points computed by the algorithm
- // --------------------------------------------------------------
- // from B. Gaertner, Fast and Robust Smallest Enclosing Balls, ESA 1999,
- // http://www.inf.ethz.ch/personal/gaertner/texts/own_work/esa99_final.pdf
-
- // PRE: B = S
- assert (fsize == ssize);
-
- support_end = L.begin();
- if ((fsize) == d+1) return;
-
- // incremental construction
- for (Sit i = L.begin(); i != n;)
- {
- // INV: (support_end - L.begin() == |S|-|B|)
- assert (std::distance (L.begin(), support_end) == ssize - fsize);
-
- Sit j = i++;
- if (excess(*j) > nt0)
- if (push(*j)) { // B := B + p_i
- mtf_mb (j); // mtf_mb (L_{i-1}, B + p_i)
- pop(); // B := B - p_i
- mtf_move_to_front(j);
- }
- }
- // POST: the range [L.begin(), support_end) stores the set S\B
- }
-
- template <typename CoordAccessor>
- void Miniball<CoordAccessor>::mtf_move_to_front (Sit j)
- {
- if (support_end == j)
- support_end++;
- L.splice (L.begin(), L, j);
- }
-
- template <typename CoordAccessor>
- void Miniball<CoordAccessor>::pivot_mb (Pit n)
- {
- // Algorithm 2: pivot_mb (L_{n-1}), where L_{n-1} = [L.begin, n)
- // --------------------------------------------------------------
- // from B. Gaertner, Fast and Robust Smallest Enclosing Balls, ESA 1999,
- // http://www.inf.ethz.ch/personal/gaertner/texts/own_work/esa99_final.pdf
- NT old_sqr_r;
- const NT* c;
- Pit pivot, k;
- NT e, max_e, sqr_r;
- Cit p;
- do {
- old_sqr_r = current_sqr_r;
- sqr_r = current_sqr_r;
-
- pivot = points_begin;
- max_e = nt0;
- for (k = points_begin; k != n; ++k) {
- p = coord_accessor(k);
- e = -sqr_r;
- c = current_c;
- for (int j=0; j<d; ++j)
- e += mb_sqr<NT>(*p++-*c++);
- if (e > max_e) {
- max_e = e;
- pivot = k;
- }
- }
-
- if (max_e > nt0) {
- // check if the pivot is already contained in the support set
- if (std::find(L.begin(), support_end, pivot) == support_end) {
- assert (fsize == 0);
- if (push (pivot)) {
- mtf_mb(support_end);
- pop();
- pivot_move_to_front(pivot);
- }
- }
- }
- } while (old_sqr_r < current_sqr_r);
- }
-
- template <typename CoordAccessor>
- void Miniball<CoordAccessor>::pivot_move_to_front (Pit j)
- {
- L.push_front(j);
- if (std::distance(L.begin(), support_end) == d+2)
- support_end--;
- }
-
- template <typename CoordAccessor>
- inline typename Miniball<CoordAccessor>::NT
- Miniball<CoordAccessor>::excess (Pit pit) const
- {
- Cit p = coord_accessor(pit);
- NT e = -current_sqr_r;
- NT* c = current_c;
- for (int k=0; k<d; ++k){
- e += mb_sqr<NT>(*p++-*c++);
- }
- return e;
- }
-
- template <typename CoordAccessor>
- void Miniball<CoordAccessor>::pop ()
- {
- --fsize;
- }
-
- template <typename CoordAccessor>
- bool Miniball<CoordAccessor>::push (Pit pit)
- {
- int i, j;
- NT eps = mb_sqr<NT>(std::numeric_limits<NT>::epsilon());
-
- Cit cit = coord_accessor(pit);
- Cit p = cit;
-
- if (fsize==0) {
- for (i=0; i<d; ++i)
- q0[i] = *p++;
- for (i=0; i<d; ++i)
- c[0][i] = q0[i];
- sqr_r[0] = nt0;
- }
- else {
- // set v_fsize to Q_fsize
- for (i=0; i<d; ++i)
- //v[fsize][i] = p[i]-q0[i];
- v[fsize][i] = *p++-q0[i];
-
- // compute the a_{fsize,i}, i< fsize
- for (i=1; i<fsize; ++i) {
- a[fsize][i] = nt0;
- for (j=0; j<d; ++j)
- a[fsize][i] += v[i][j] * v[fsize][j];
- a[fsize][i]*=(2/z[i]);
- }
-
- // update v_fsize to Q_fsize-\bar{Q}_fsize
- for (i=1; i<fsize; ++i) {
- for (j=0; j<d; ++j)
- v[fsize][j] -= a[fsize][i]*v[i][j];
- }
-
- // compute z_fsize
- z[fsize]=nt0;
- for (j=0; j<d; ++j)
- z[fsize] += mb_sqr<NT>(v[fsize][j]);
- z[fsize]*=2;
-
- // reject push if z_fsize too small
- if (z[fsize]<eps*current_sqr_r) {
- return false;
- }
-
- // update c, sqr_r
- p=cit;
- NT e = -sqr_r[fsize-1];
- for (i=0; i<d; ++i)
- e += mb_sqr<NT>(*p++-c[fsize-1][i]);
- f[fsize]=e/z[fsize];
-
- for (i=0; i<d; ++i)
- c[fsize][i] = c[fsize-1][i]+f[fsize]*v[fsize][i];
- sqr_r[fsize] = sqr_r[fsize-1] + e*f[fsize]/2;
- }
- current_c = c[fsize];
- current_sqr_r = sqr_r[fsize];
- ssize = ++fsize;
- return true;
- }
-
- template <typename CoordAccessor>
- typename Miniball<CoordAccessor>::NT
- Miniball<CoordAccessor>::suboptimality () const
- {
- NT* l = new NT[d+1];
- NT min_l = nt0;
- l[0] = NT(1);
- for (int i=ssize-1; i>0; --i) {
- l[i] = f[i];
- for (int k=ssize-1; k>i; --k)
- l[i]-=a[k][i]*l[k];
- if (l[i] < min_l) min_l = l[i];
- l[0] -= l[i];
- }
- if (l[0] < min_l) min_l = l[0];
- delete[] l;
- if (min_l < nt0)
- return -min_l;
- return nt0;
- }
-} // namespace Miniball
-
-} // namespace Gudhi
-
-#endif // MINIBALL_HPP_
diff --git a/include/gudhi/Neighbors_finder.h b/include/gudhi/Neighbors_finder.h
deleted file mode 100644
index 36a63ea0..00000000
--- a/include/gudhi/Neighbors_finder.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author: Francois Godi
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NEIGHBORS_FINDER_H_
-#define NEIGHBORS_FINDER_H_
-
-// Inclusion order is important for CGAL patch
-#include <CGAL/Kd_tree.h>
-#include <CGAL/Search_traits.h>
-
-#include <gudhi/Persistence_graph.h>
-#include <gudhi/Internal_point.h>
-
-#include <unordered_set>
-#include <vector>
-#include <algorithm> // for std::max
-
-namespace Gudhi {
-
-namespace persistence_diagram {
-
-/** \internal \brief Variant of CGAL::Fuzzy_iso_box to ensure that the box ic closed. It isn't clear how necessary that is.
- */
-struct Square_query {
- typedef CGAL::Dimension_tag<2> D;
- typedef Internal_point Point_d;
- typedef double FT;
- bool contains(Point_d p) const {
- return std::max(std::abs(p.x()-c.x()), std::abs(p.y()-c.y())) <= size;
- }
- bool inner_range_intersects(CGAL::Kd_tree_rectangle<FT, D> const&r) const {
- return
- r.max_coord(0) >= c.x() - size &&
- r.min_coord(0) <= c.x() + size &&
- r.max_coord(1) >= c.y() - size &&
- r.min_coord(1) <= c.y() + size;
- }
- bool outer_range_contains(CGAL::Kd_tree_rectangle<FT, D> const&r) const {
- return
- r.min_coord(0) >= c.x() - size &&
- r.max_coord(0) <= c.x() + size &&
- r.min_coord(1) >= c.y() - size &&
- r.max_coord(1) <= c.y() + size;
- }
- Point_d c;
- FT size;
-};
-
-/** \internal \brief data structure used to find any point (including projections) in V near to a query point from U
- * (which can be a projection).
- *
- * V points have to be added manually using their index and before the first pull. A neighbor pulled is automatically
- * removed.
- *
- * \ingroup bottleneck_distance
- */
-class Neighbors_finder {
- typedef CGAL::Dimension_tag<2> D;
- typedef CGAL::Search_traits<double, Internal_point, const double*, Construct_coord_iterator, D> Traits;
- typedef CGAL::Kd_tree<Traits> Kd_tree;
-
- public:
- /** \internal \brief Constructor taking the near distance definition as parameter. */
- Neighbors_finder(const Persistence_graph& g, double r);
- /** \internal \brief A point added will be possibly pulled. */
- void add(int v_point_index);
- /** \internal \brief Returns and remove a V point near to the U point given as parameter, null_point_index() if
- * there isn't such a point. */
- int pull_near(int u_point_index);
- /** \internal \brief Returns and remove all the V points near to the U point given as parameter. */
- std::vector<int> pull_all_near(int u_point_index);
-
- private:
- const Persistence_graph& g;
- const double r;
- Kd_tree kd_t;
- std::unordered_set<int> projections_f;
-};
-
-/** \internal \brief data structure used to find any point (including projections) in V near to a query point from U
- * (which can be a projection) in a layered graph layer given as parmeter.
- *
- * V points have to be added manually using their index and before the first pull. A neighbor pulled is automatically
- * removed.
- *
- * \ingroup bottleneck_distance
- */
-class Layered_neighbors_finder {
- public:
- /** \internal \brief Constructor taking the near distance definition as parameter. */
- Layered_neighbors_finder(const Persistence_graph& g, double r);
- /** \internal \brief A point added will be possibly pulled. */
- void add(int v_point_index, int vlayer);
- /** \internal \brief Returns and remove a V point near to the U point given as parameter, null_point_index() if
- * there isn't such a point. */
- int pull_near(int u_point_index, int vlayer);
- /** \internal \brief Returns the number of layers. */
- int vlayers_number() const;
-
- private:
- const Persistence_graph& g;
- const double r;
- std::vector<std::unique_ptr<Neighbors_finder>> neighbors_finder;
-};
-
-inline Neighbors_finder::Neighbors_finder(const Persistence_graph& g, double r) :
- g(g), r(r), kd_t(), projections_f() { }
-
-inline void Neighbors_finder::add(int v_point_index) {
- if (g.on_the_v_diagonal(v_point_index))
- projections_f.emplace(v_point_index);
- else
- kd_t.insert(g.get_v_point(v_point_index));
-}
-
-inline int Neighbors_finder::pull_near(int u_point_index) {
- int tmp;
- int c = g.corresponding_point_in_v(u_point_index);
- if (g.on_the_u_diagonal(u_point_index) && !projections_f.empty()) {
- // Any pair of projection is at distance 0
- tmp = *projections_f.cbegin();
- projections_f.erase(tmp);
- } else if (projections_f.count(c) && (g.distance(u_point_index, c) <= r)) {
- // Is the query point near to its projection ?
- tmp = c;
- projections_f.erase(tmp);
- } else {
- // Is the query point near to a V point in the plane ?
- Internal_point u_point = g.get_u_point(u_point_index);
- auto neighbor = kd_t.search_any_point(Square_query{u_point, r});
- if (!neighbor)
- return null_point_index();
- tmp = neighbor->point_index;
- auto point = g.get_v_point(tmp);
- int idx = point.point_index;
- kd_t.remove(point, [idx](Internal_point const&p){return p.point_index == idx;});
- }
- return tmp;
-}
-
-inline std::vector<int> Neighbors_finder::pull_all_near(int u_point_index) {
- std::vector<int> all_pull;
- int last_pull = pull_near(u_point_index);
- while (last_pull != null_point_index()) {
- all_pull.emplace_back(last_pull);
- last_pull = pull_near(u_point_index);
- }
- return all_pull;
-}
-
-inline Layered_neighbors_finder::Layered_neighbors_finder(const Persistence_graph& g, double r) :
- g(g), r(r), neighbors_finder() { }
-
-inline void Layered_neighbors_finder::add(int v_point_index, int vlayer) {
- for (int l = neighbors_finder.size(); l <= vlayer; l++)
- neighbors_finder.emplace_back(std::unique_ptr<Neighbors_finder>(new Neighbors_finder(g, r)));
- neighbors_finder.at(vlayer)->add(v_point_index);
-}
-
-inline int Layered_neighbors_finder::pull_near(int u_point_index, int vlayer) {
- if (static_cast<int> (neighbors_finder.size()) <= vlayer)
- return null_point_index();
- return neighbors_finder.at(vlayer)->pull_near(u_point_index);
-}
-
-inline int Layered_neighbors_finder::vlayers_number() const {
- return static_cast<int> (neighbors_finder.size());
-}
-
-} // namespace persistence_diagram
-
-} // namespace Gudhi
-
-#endif // NEIGHBORS_FINDER_H_
diff --git a/include/gudhi/Null_output_iterator.h b/include/gudhi/Null_output_iterator.h
deleted file mode 100644
index c700af5f..00000000
--- a/include/gudhi/Null_output_iterator.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Marc Glisse
- *
- * Copyright (C) 2017 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NULL_OUTPUT_ITERATOR_H_
-#define NULL_OUTPUT_ITERATOR_H_
-
-#include <iterator>
-
-namespace Gudhi {
-
-/** An output iterator that ignores whatever it is given. */
-struct Null_output_iterator {
- typedef std::output_iterator_tag iterator_category;
- typedef void value_type;
- typedef void difference_type;
- typedef void pointer;
- typedef void reference;
-
- Null_output_iterator& operator++() {return *this;}
- Null_output_iterator operator++(int) {return *this;}
- struct proxy {
- template<class T>
- proxy& operator=(T&&){return *this;}
- };
- proxy operator*()const{return {};}
-};
-} // namespace Gudhi
-
-#endif // NULL_OUTPUT_ITERATOR_H_
diff --git a/include/gudhi/Off_reader.h b/include/gudhi/Off_reader.h
deleted file mode 100644
index 05a1e145..00000000
--- a/include/gudhi/Off_reader.h
+++ /dev/null
@@ -1,187 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-
-#ifndef OFF_READER_H_
-#define OFF_READER_H_
-
-
-#include <sstream>
-#include <iostream>
-#include <iterator>
-#include <string>
-#include <vector>
-#include <fstream>
-
-namespace Gudhi {
-
-/** \brief OFF file reader top class visitor.
- *
- * OFF file must be conform to format described here :
- * http://www.geomview.org/docs/html/OFF.html
- */
-class Off_reader {
- public:
- Off_reader(std::ifstream& stream) : stream_(stream) { }
-
- ~Off_reader() {
- stream_.close();
- }
-
- /** \brief
- * Read an OFF file and calls the following methods :
- *
- * <CODE>void init(int dim,int num_vertices,int num_faces,int num_edges); // from file header - num_edges may not be set
- *
- * void point(const std::vector<double>& point); // for each point read
- *
- * void maximal_face(const std::list<int>& face); // for each face read
- *
- * void done(); // upon file read is finished</CODE>
- *
- * of the visitor when reading a point or a maximal face. Edges are not taken into account.
- */
- template<typename OffVisitor>
- bool read(OffVisitor& off_visitor) {
- bool success_read_off_preambule = read_off_preambule(off_visitor);
- if (!success_read_off_preambule) {
- std::cerr << "could not read off preambule\n";
- return false;
- }
-
- bool success_read_off_points = read_off_points(off_visitor);
- if (!success_read_off_points) {
- std::cerr << "could not read off points\n";
- return false;
- }
-
- bool success_read_off_faces = read_off_faces(off_visitor);
- if (!success_read_off_faces) {
- std::cerr << "could not read off faces\n";
- return false;
- }
-
- off_visitor.done();
- return success_read_off_preambule && success_read_off_points && success_read_off_faces;
- }
-
- private:
- std::ifstream& stream_;
-
- struct Off_info {
- int dim;
- int num_vertices;
- int num_edges;
- int num_faces;
- };
-
- Off_info off_info_;
-
- template<typename OffVisitor>
- bool read_off_preambule(OffVisitor& off_visitor) {
- std::string line;
- if (!goto_next_uncomment_line(line)) return false;
-
- bool is_off_file = (line.find("OFF") != std::string::npos);
- bool is_noff_file = (line.find("nOFF") != std::string::npos);
-
-
-
- if (!is_off_file && !is_noff_file) {
- std::cerr << line << std::endl;
- std::cerr << "missing off header\n";
- return false;
- }
-
- if (is_noff_file) {
- // Should be on a separate line, but we accept it on the same line as the number of vertices
- stream_ >> off_info_.dim;
- } else {
- off_info_.dim = 3;
- }
-
- if (!goto_next_uncomment_line(line)) return false;
- std::istringstream iss(line);
- if (!(iss >> off_info_.num_vertices >> off_info_.num_faces >> off_info_.num_edges)) {
- std::cerr << "incorrect number of vertices/faces/edges\n";
- return false;
- }
- off_visitor.init(off_info_.dim, off_info_.num_vertices, off_info_.num_faces, off_info_.num_edges);
-
- return true;
- }
-
- bool goto_next_uncomment_line(std::string& uncomment_line) {
- do {
- // skip whitespace, including empty lines
- if (!std::ifstream::sentry(stream_)) return false;
- std::getline(stream_, uncomment_line);
- } while (uncomment_line[0] == '#');
- return static_cast<bool>(stream_);
- }
-
- template<typename OffVisitor>
- bool read_off_points(OffVisitor& visitor) {
- int num_vertices_to_read = off_info_.num_vertices;
- while (num_vertices_to_read--) {
- std::string line;
- if (!goto_next_uncomment_line(line)) return false;
- std::vector<double> point;
- std::istringstream iss(line);
- point.assign(std::istream_iterator<double>(iss), std::istream_iterator<double>());
- // if(point.size() != off_info_.dim) return false;
- visitor.point(point);
- }
- return true;
- }
-
- template<typename OffVisitor>
- bool read_off_faces(OffVisitor& visitor) {
- std::string line;
- while (goto_next_uncomment_line(line)) {
- std::istringstream iss(line);
- int num_face_vertices;
- iss >> num_face_vertices;
- std::vector<int> face;
- face.assign(std::istream_iterator<int>(iss), std::istream_iterator<int>());
- // if (face.size() != (off_info_.dim + 1)) return false;
- visitor.maximal_face(face);
- }
- return true;
- }
-};
-
-template<typename OFFVisitor>
-void read_off(const std::string& name_file_off, OFFVisitor& vis) {
- std::ifstream stream(name_file_off);
- if (!stream.is_open()) {
- std::cerr << "could not open file \n";
- } else {
- Off_reader off_reader(stream);
- off_reader.read(vis);
- }
-}
-
-} // namespace Gudhi
-
-#endif // OFF_READER_H_
diff --git a/include/gudhi/PSSK.h b/include/gudhi/PSSK.h
deleted file mode 100644
index e1174455..00000000
--- a/include/gudhi/PSSK.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef PSSK_H_
-#define PSSK_H_
-
-// gudhi include
-#include <gudhi/Persistence_heat_maps.h>
-
-#include <limits>
-#include <utility>
-#include <vector>
-
-namespace Gudhi {
-namespace Persistence_representations {
-
-/**
-* This is a version of a representation presented in https://arxiv.org/abs/1412.6821
-* In that paper the authors are using the representation just to compute kernel. Over here, we extend the usability by
-*far.
-* Note that the version presented here is not exact, since we are discretizing the kernel.
-* The only difference with respect to the original class is the method of creation. We have full (square) image, and for
-*every point (p,q), we add a kernel at (p,q) and the negative kernel
-* at (q,p)
-**/
-
-class PSSK : public Persistence_heat_maps<constant_scaling_function> {
- public:
- PSSK() : Persistence_heat_maps() {}
-
- PSSK(const std::vector<std::pair<double, double> >& interval,
- std::vector<std::vector<double> > filter = create_Gaussian_filter(5, 1), size_t number_of_pixels = 1000,
- double min_ = -1, double max_ = -1)
- : Persistence_heat_maps() {
- this->construct(interval, filter, number_of_pixels, min_, max_);
- }
-
- PSSK(const char* filename, std::vector<std::vector<double> > filter = create_Gaussian_filter(5, 1),
- size_t number_of_pixels = 1000, double min_ = -1, double max_ = -1,
- unsigned dimension = std::numeric_limits<unsigned>::max())
- : Persistence_heat_maps() {
- std::vector<std::pair<double, double> > intervals_;
- if (dimension == std::numeric_limits<unsigned>::max()) {
- intervals_ = read_persistence_intervals_in_one_dimension_from_file(filename);
- } else {
- intervals_ = read_persistence_intervals_in_one_dimension_from_file(filename, dimension);
- }
- this->construct(intervals_, filter, number_of_pixels, min_, max_);
- }
-
- protected:
- void construct(const std::vector<std::pair<double, double> >& intervals_,
- std::vector<std::vector<double> > filter = create_Gaussian_filter(5, 1),
- size_t number_of_pixels = 1000, double min_ = -1, double max_ = -1);
-};
-
-// if min_ == max_, then the program is requested to set up the values itself based on persistence intervals
-void PSSK::construct(const std::vector<std::pair<double, double> >& intervals_,
- std::vector<std::vector<double> > filter, size_t number_of_pixels, double min_, double max_) {
- bool dbg = false;
- if (dbg) {
- std::cerr << "Entering construct procedure \n";
- getchar();
- }
-
- if (min_ == max_) {
- // in this case, we want the program to set up the min_ and max_ values by itself.
- min_ = std::numeric_limits<int>::max();
- max_ = -std::numeric_limits<int>::max();
-
- for (size_t i = 0; i != intervals_.size(); ++i) {
- if (intervals_[i].first < min_) min_ = intervals_[i].first;
- if (intervals_[i].second > max_) max_ = intervals_[i].second;
- }
- // now we have the structure filled in, and moreover we know min_ and max_ values of the interval, so we know the
- // range.
-
- // add some more space:
- min_ -= fabs(max_ - min_) / 100;
- max_ += fabs(max_ - min_) / 100;
- }
-
- if (dbg) {
- std::cerr << "min_ : " << min_ << std::endl;
- std::cerr << "max_ : " << max_ << std::endl;
- std::cerr << "number_of_pixels : " << number_of_pixels << std::endl;
- getchar();
- }
-
- this->min_ = min_;
- this->max_ = max_;
-
- // initialization of the structure heat_map
- std::vector<std::vector<double> > heat_map_;
- for (size_t i = 0; i != number_of_pixels; ++i) {
- std::vector<double> v(number_of_pixels, 0);
- heat_map_.push_back(v);
- }
- this->heat_map = heat_map_;
-
- if (dbg) std::cerr << "Done creating of the heat map, now we will fill in the structure \n";
-
- for (size_t pt_nr = 0; pt_nr != intervals_.size(); ++pt_nr) {
- // compute the value of intervals_[pt_nr] in the grid:
- int x_grid =
- static_cast<int>((intervals_[pt_nr].first - this->min_) / (this->max_ - this->min_) * number_of_pixels);
- int y_grid =
- static_cast<int>((intervals_[pt_nr].second - this->min_) / (this->max_ - this->min_) * number_of_pixels);
-
- if (dbg) {
- std::cerr << "point : " << intervals_[pt_nr].first << " , " << intervals_[pt_nr].second << std::endl;
- std::cerr << "x_grid : " << x_grid << std::endl;
- std::cerr << "y_grid : " << y_grid << std::endl;
- }
-
- // x_grid and y_grid gives a center of the kernel. We want to have its lower left corner. To get this, we need to
- // shift x_grid and y_grid by a grid diameter.
- x_grid -= filter.size() / 2;
- y_grid -= filter.size() / 2;
- // note that the numbers x_grid and y_grid may be negative.
-
- if (dbg) {
- std::cerr << "After shift : \n";
- std::cerr << "x_grid : " << x_grid << std::endl;
- std::cerr << "y_grid : " << y_grid << std::endl;
- std::cerr << "filter.size() : " << filter.size() << std::endl;
- getchar();
- }
-
- for (size_t i = 0; i != filter.size(); ++i) {
- for (size_t j = 0; j != filter.size(); ++j) {
- // if the point (x_grid+i,y_grid+j) is the correct point in the grid.
- if (((x_grid + i) >= 0) && (x_grid + i < this->heat_map.size()) && ((y_grid + j) >= 0) &&
- (y_grid + j < this->heat_map.size())) {
- if (dbg) {
- std::cerr << y_grid + j << " " << x_grid + i << std::endl;
- }
- this->heat_map[y_grid + j][x_grid + i] += filter[i][j];
- this->heat_map[x_grid + i][y_grid + j] += -filter[i][j];
- }
- }
- }
- }
-} // construct
-
-} // namespace Persistence_representations
-} // namespace Gudhi
-
-#endif // PSSK_H_
diff --git a/include/gudhi/Persistence_graph.h b/include/gudhi/Persistence_graph.h
deleted file mode 100644
index cb163623..00000000
--- a/include/gudhi/Persistence_graph.h
+++ /dev/null
@@ -1,188 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author: Francois Godi
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef PERSISTENCE_GRAPH_H_
-#define PERSISTENCE_GRAPH_H_
-
-#include <gudhi/Internal_point.h>
-
-#ifdef GUDHI_USE_TBB
-#include <tbb/parallel_sort.h>
-#endif
-
-#include <vector>
-#include <algorithm>
-#include <limits> // for numeric_limits
-
-namespace Gudhi {
-
-namespace persistence_diagram {
-
-/** \internal \brief Structure representing an euclidean bipartite graph containing
- * the points from the two persistence diagrams (including the projections).
- *
- * \ingroup bottleneck_distance
- */
-class Persistence_graph {
- public:
- /** \internal \brief Constructor taking 2 PersistenceDiagrams (concept) as parameters. */
- template<typename Persistence_diagram1, typename Persistence_diagram2>
- Persistence_graph(const Persistence_diagram1& diag1, const Persistence_diagram2& diag2, double e);
- /** \internal \brief Is the given point from U the projection of a point in V ? */
- bool on_the_u_diagonal(int u_point_index) const;
- /** \internal \brief Is the given point from V the projection of a point in U ? */
- bool on_the_v_diagonal(int v_point_index) const;
- /** \internal \brief Given a point from V, returns the corresponding (projection or projector) point in U. */
- int corresponding_point_in_u(int v_point_index) const;
- /** \internal \brief Given a point from U, returns the corresponding (projection or projector) point in V. */
- int corresponding_point_in_v(int u_point_index) const;
- /** \internal \brief Given a point from U and a point from V, returns the distance between those points. */
- double distance(int u_point_index, int v_point_index) const;
- /** \internal \brief Returns size = |U| = |V|. */
- int size() const;
- /** \internal \brief Is there as many infinite points (alive components) in both diagrams ? */
- double bottleneck_alive() const;
- /** \internal \brief Returns the O(n^2) sorted distances between the points. */
- std::vector<double> sorted_distances() const;
- /** \internal \brief Returns an upper bound for the diameter of the convex hull of all non infinite points */
- double diameter_bound() const;
- /** \internal \brief Returns the corresponding internal point */
- Internal_point get_u_point(int u_point_index) const;
- /** \internal \brief Returns the corresponding internal point */
- Internal_point get_v_point(int v_point_index) const;
-
- private:
- std::vector<Internal_point> u;
- std::vector<Internal_point> v;
- double b_alive;
-};
-
-template<typename Persistence_diagram1, typename Persistence_diagram2>
-Persistence_graph::Persistence_graph(const Persistence_diagram1 &diag1,
- const Persistence_diagram2 &diag2, double e)
- : u(), v(), b_alive(0.) {
- std::vector<double> u_alive;
- std::vector<double> v_alive;
- for (auto it = std::begin(diag1); it != std::end(diag1); ++it) {
- if (std::get<1>(*it) == std::numeric_limits<double>::infinity())
- u_alive.push_back(std::get<0>(*it));
- else if (std::get<1>(*it) - std::get<0>(*it) > e)
- u.push_back(Internal_point(std::get<0>(*it), std::get<1>(*it), u.size()));
- }
- for (auto it = std::begin(diag2); it != std::end(diag2); ++it) {
- if (std::get<1>(*it) == std::numeric_limits<double>::infinity())
- v_alive.push_back(std::get<0>(*it));
- else if (std::get<1>(*it) - std::get<0>(*it) > e)
- v.push_back(Internal_point(std::get<0>(*it), std::get<1>(*it), v.size()));
- }
- if (u.size() < v.size())
- swap(u, v);
- std::sort(u_alive.begin(), u_alive.end());
- std::sort(v_alive.begin(), v_alive.end());
- if (u_alive.size() != v_alive.size()) {
- b_alive = std::numeric_limits<double>::infinity();
- } else {
- for (auto it_u = u_alive.cbegin(), it_v = v_alive.cbegin(); it_u != u_alive.cend(); ++it_u, ++it_v)
- b_alive = (std::max)(b_alive, std::fabs(*it_u - *it_v));
- }
-}
-
-inline bool Persistence_graph::on_the_u_diagonal(int u_point_index) const {
- return u_point_index >= static_cast<int> (u.size());
-}
-
-inline bool Persistence_graph::on_the_v_diagonal(int v_point_index) const {
- return v_point_index >= static_cast<int> (v.size());
-}
-
-inline int Persistence_graph::corresponding_point_in_u(int v_point_index) const {
- return on_the_v_diagonal(v_point_index) ?
- v_point_index - static_cast<int> (v.size()) : v_point_index + static_cast<int> (u.size());
-}
-
-inline int Persistence_graph::corresponding_point_in_v(int u_point_index) const {
- return on_the_u_diagonal(u_point_index) ?
- u_point_index - static_cast<int> (u.size()) : u_point_index + static_cast<int> (v.size());
-}
-
-inline double Persistence_graph::distance(int u_point_index, int v_point_index) const {
- if (on_the_u_diagonal(u_point_index) && on_the_v_diagonal(v_point_index))
- return 0.;
- Internal_point p_u = get_u_point(u_point_index);
- Internal_point p_v = get_v_point(v_point_index);
- return (std::max)(std::fabs(p_u.x() - p_v.x()), std::fabs(p_u.y() - p_v.y()));
-}
-
-inline int Persistence_graph::size() const {
- return static_cast<int> (u.size() + v.size());
-}
-
-inline double Persistence_graph::bottleneck_alive() const {
- return b_alive;
-}
-
-inline std::vector<double> Persistence_graph::sorted_distances() const {
- std::vector<double> distances;
- distances.push_back(0.); // for empty diagrams
- for (int u_point_index = 0; u_point_index < size(); ++u_point_index) {
- distances.push_back(distance(u_point_index, corresponding_point_in_v(u_point_index)));
- for (int v_point_index = 0; v_point_index < size(); ++v_point_index)
- distances.push_back(distance(u_point_index, v_point_index));
- }
-#ifdef GUDHI_USE_TBB
- tbb::parallel_sort(distances.begin(), distances.end());
-#else
- std::sort(distances.begin(), distances.end());
-#endif
- return distances;
-}
-
-inline Internal_point Persistence_graph::get_u_point(int u_point_index) const {
- if (!on_the_u_diagonal(u_point_index))
- return u.at(u_point_index);
- Internal_point projector = v.at(corresponding_point_in_v(u_point_index));
- double m = (projector.x() + projector.y()) / 2.;
- return Internal_point(m, m, u_point_index);
-}
-
-inline Internal_point Persistence_graph::get_v_point(int v_point_index) const {
- if (!on_the_v_diagonal(v_point_index))
- return v.at(v_point_index);
- Internal_point projector = u.at(corresponding_point_in_u(v_point_index));
- double m = (projector.x() + projector.y()) / 2.;
- return Internal_point(m, m, v_point_index);
-}
-
-inline double Persistence_graph::diameter_bound() const {
- double max = 0.;
- for (auto it = u.cbegin(); it != u.cend(); it++)
- max = (std::max)(max, it->y());
- for (auto it = v.cbegin(); it != v.cend(); it++)
- max = (std::max)(max, it->y());
- return max;
-}
-
-} // namespace persistence_diagram
-
-} // namespace Gudhi
-
-#endif // PERSISTENCE_GRAPH_H_
diff --git a/include/gudhi/Persistence_heat_maps.h b/include/gudhi/Persistence_heat_maps.h
deleted file mode 100644
index 35e51e63..00000000
--- a/include/gudhi/Persistence_heat_maps.h
+++ /dev/null
@@ -1,919 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef PERSISTENCE_HEAT_MAPS_H_
-#define PERSISTENCE_HEAT_MAPS_H_
-
-// gudhi include
-#include <gudhi/read_persistence_from_file.h>
-#include <gudhi/common_persistence_representations.h>
-
-// standard include
-#include <vector>
-#include <sstream>
-#include <iostream>
-#include <cmath>
-#include <limits>
-#include <algorithm>
-#include <utility>
-#include <string>
-#include <functional>
-
-namespace Gudhi {
-namespace Persistence_representations {
-
-/**
- * This is a simple procedure to create n by n (or 2*pixel_radius times 2*pixel_radius cubical approximation of a
- *Gaussian kernel.
-**/
-std::vector<std::vector<double> > create_Gaussian_filter(size_t pixel_radius, double sigma) {
- bool dbg = false;
- // we are computing the kernel mask to 2 standard deviations away from the center. We discretize it in a grid of a
- // size 2*pixel_radius times 2*pixel_radius.
-
- double r = 0;
- double sigma_sqr = sigma * sigma;
-
- // sum is for normalization
- double sum = 0;
-
- // initialization of a kernel:
- std::vector<std::vector<double> > kernel(2 * pixel_radius + 1);
- for (size_t i = 0; i != kernel.size(); ++i) {
- std::vector<double> v(2 * pixel_radius + 1, 0);
- kernel[i] = v;
- }
-
- if (dbg) {
- std::cerr << "Kernel initialize \n";
- std::cerr << "pixel_radius : " << pixel_radius << std::endl;
- std::cerr << "kernel.size() : " << kernel.size() << std::endl;
- getchar();
- }
-
- for (int x = -pixel_radius; x <= static_cast<int>(pixel_radius); x++) {
- for (int y = -pixel_radius; y <= static_cast<int>(pixel_radius); y++) {
- double real_x = 2 * sigma * x / pixel_radius;
- double real_y = 2 * sigma * y / pixel_radius;
- r = sqrt(real_x * real_x + real_y * real_y);
- kernel[x + pixel_radius][y + pixel_radius] = (exp(-(r * r) / sigma_sqr)) / (3.141592 * sigma_sqr);
- sum += kernel[x + pixel_radius][y + pixel_radius];
- }
- }
-
- // normalize the kernel
- for (size_t i = 0; i != kernel.size(); ++i) {
- for (size_t j = 0; j != kernel[i].size(); ++j) {
- kernel[i][j] /= sum;
- }
- }
-
- if (dbg) {
- std::cerr << "Here is the kernel : \n";
- for (size_t i = 0; i != kernel.size(); ++i) {
- for (size_t j = 0; j != kernel[i].size(); ++j) {
- std::cerr << kernel[i][j] << " ";
- }
- std::cerr << std::endl;
- }
- }
- return kernel;
-}
-
-/*
-* There are various options to scale the points depending on their location. One can for instance:
-* (1) do nothing (scale all of them with the weight 1), as in the function constant_function
-* (2) Scale them by the distance to the diagonal. This is implemented in function
-* (3) Scale them with the square of their distance to diagonal. This is implemented in function
-* (4) Scale them with
-*/
-
-/**
- * This is one of a scaling functions used to weight points depending on their persistence and/or location in the
- *diagram.
- * This particular functionality is a function which always assign value 1 to a point in the diagram.
-**/
-class constant_scaling_function {
- public:
- double operator()(const std::pair<double, double>& point_in_diagram) { return 1; }
-};
-
-/**
- * This is one of a scaling functions used to weight points depending on their persistence and/or location in the
- *diagram.
- * The scaling given by this function to a point (b,d) is Euclidean distance of (b,d) from diagonal.
-**/
-class distance_from_diagonal_scaling {
- public:
- double operator()(const std::pair<double, double>& point_in_diagram) {
- // (point_in_diagram.first+point_in_diagram.second)/2.0
- return sqrt(pow((point_in_diagram.first - (point_in_diagram.first + point_in_diagram.second) / 2.0), 2) +
- pow((point_in_diagram.second - (point_in_diagram.first + point_in_diagram.second) / 2.0), 2));
- }
-};
-
-/**
- * This is one of a scaling functions used to weight points depending on their persistence and/or location in the
- *diagram.
- * The scaling given by this function to a point (b,d) is a square of Euclidean distance of (b,d) from diagonal.
-**/
-class squared_distance_from_diagonal_scaling {
- public:
- double operator()(const std::pair<double, double>& point_in_diagram) {
- return pow((point_in_diagram.first - (point_in_diagram.first + point_in_diagram.second) / 2.0), 2) +
- pow((point_in_diagram.second - (point_in_diagram.first + point_in_diagram.second) / 2.0), 2);
- }
-};
-
-/**
- * This is one of a scaling functions used to weight points depending on their persistence and/or location in the
- *diagram.
- * The scaling given by this function to a point (b,d) is an arctan of a persistence of a point (i.e. arctan( b-d ).
-**/
-class arc_tan_of_persistence_of_point {
- public:
- double operator()(const std::pair<double, double>& point_in_diagram) {
- return atan(point_in_diagram.second - point_in_diagram.first);
- }
-};
-
-/**
- * This is one of a scaling functions used to weight points depending on their persistence and/or location in the
- *diagram.
- * This scaling function do not only depend on a point (p,d) in the diagram, but it depends on the whole diagram.
- * The longest persistence pair get a scaling 1. Any other pair get a scaling belong to [0,1], which is proportional
- * to the persistence of that pair.
-**/
-class weight_by_setting_maximal_interval_to_have_length_one {
- public:
- weight_by_setting_maximal_interval_to_have_length_one(double len) : letngth_of_maximal_interval(len) {}
- double operator()(const std::pair<double, double>& point_in_diagram) {
- return (point_in_diagram.second - point_in_diagram.first) / this->letngth_of_maximal_interval;
- }
-
- private:
- double letngth_of_maximal_interval;
-};
-
-/**
- * \class Persistence_heat_maps Persistence_heat_maps.h gudhi/Persistence_heat_maps.h
- * \brief A class implementing persistence heat maps.
- *
- * \ingroup Persistence_representations
-**/
-
-// This class implements the following concepts: Vectorized_topological_data, Topological_data_with_distances,
-// Real_valued_topological_data, Topological_data_with_averages, Topological_data_with_scalar_product
-template <typename Scalling_of_kernels = constant_scaling_function>
-class Persistence_heat_maps {
- public:
- /**
- * The default constructor. A scaling function from the diagonal is set up to a constant function. The image is not
- *erased below the diagonal. The Gaussian have diameter 5.
- **/
- Persistence_heat_maps() {
- Scalling_of_kernels f;
- this->f = f;
- this->erase_below_diagonal = false;
- this->min_ = this->max_ = 0;
- this->set_up_parameters_for_basic_classes();
- }
-
- /**
- * Construction that takes at the input the following parameters:
- * (1) A vector of pairs of doubles (representing persistence intervals). All other parameters are optional. They are:
- * (2) a Gaussian filter generated by create_Gaussian_filter filter (the default value of this variable is a Gaussian
- *filter of a radius 5),
- * (3) a boolean value which determines if the area of image below diagonal should, or should not be erased (it will
- *be erased by default).
- * (4) a number of pixels in each direction (set to 1000 by default).
- * (5) a min x and y value of points that are to be taken into account. By default it is set to
- *std::numeric_limits<double>::max(), in which case the program compute the values based on the data,
- * (6) a max x and y value of points that are to be taken into account. By default it is set to
- *std::numeric_limits<double>::max(), in which case the program compute the values based on the data.
- **/
- Persistence_heat_maps(const std::vector<std::pair<double, double> >& interval,
- std::vector<std::vector<double> > filter = create_Gaussian_filter(5, 1),
- bool erase_below_diagonal = false, size_t number_of_pixels = 1000,
- double min_ = std::numeric_limits<double>::max(),
- double max_ = std::numeric_limits<double>::max());
-
- /**
- * Construction that takes at the input a name of a file with persistence intervals, a filter (radius 5 by
- *default), a scaling function (constant by default), a boolean value which determines if the area of image below
- *diagonal should, or should not be erased (should by default). The next parameter is the number of pixels in each
- *direction (set to 1000 by default) and min and max values of images (both set to std::numeric_limits<double>::max()
- *by default. If this is the case, the program will pick the right values based on the data).
- **/
- /**
- * Construction that takes at the input the following parameters:
- * (1) A name of a file with persistence intervals. The file should be readable by the function
- *read_persistence_intervals_in_one_dimension_from_file. All other parameters are optional. They are:
- * (2) a Gaussian filter generated by create_Gaussian_filter filter (the default value of this variable is a Gaussian
- *filter of a radius 5),
- * (3) a boolean value which determines if the area of image below diagonal should, or should not be erased (it will
- *be erased by default).
- * (4) a number of pixels in each direction (set to 1000 by default).
- * (5) a min x and y value of points that are to be taken into account. By default it is set to
- *std::numeric_limits<double>::max(), in which case the program compute the values based on the data,
- * (6) a max x and y value of points that are to be taken into account. By default it is set to
- *std::numeric_limits<double>::max(), in which case the program compute the values based on the data.
- **/
- Persistence_heat_maps(const char* filename, std::vector<std::vector<double> > filter = create_Gaussian_filter(5, 1),
- bool erase_below_diagonal = false, size_t number_of_pixels = 1000,
- double min_ = std::numeric_limits<double>::max(),
- double max_ = std::numeric_limits<double>::max(),
- unsigned dimension = std::numeric_limits<unsigned>::max());
-
- /**
- * Compute a mean value of a collection of heat maps and store it in the current object. Note that all the persistence
- *maps send in a vector to this procedure need to have the same parameters.
- * If this is not the case, the program will throw an exception.
- **/
- void compute_mean(const std::vector<Persistence_heat_maps*>& maps);
-
- /**
- * Compute a median value of a collection of heat maps and store it in the current object. Note that all the
- *persistence maps send in a vector to this procedure need to have the same parameters.
- * If this is not the case, the program will throw an exception.
- **/
- void compute_median(const std::vector<Persistence_heat_maps*>& maps);
-
- /**
- * Compute a percentage of active (i.e) values above the cutoff of a collection of heat maps.
- **/
- void compute_percentage_of_active(const std::vector<Persistence_heat_maps*>& maps, size_t cutoff = 1);
-
- // put to file subroutine
- /**
- * The function outputs the persistence image to a text file. The format as follow:
- * In the first line, the values min and max of the image are stored
- * In the next lines, we have the persistence images in a form of a bitmap image.
- **/
- void print_to_file(const char* filename) const;
-
- /**
- * A function that load a heat map from file to the current object (and erase whatever was stored in the current
- *object before).
- **/
- void load_from_file(const char* filename);
-
- /**
- * The procedure checks if min_, max_ and this->heat_maps sizes are the same.
- **/
- inline bool check_if_the_same(const Persistence_heat_maps& second) const {
- bool dbg = false;
- if (this->heat_map.size() != second.heat_map.size()) {
- if (dbg)
- std::cerr << "this->heat_map.size() : " << this->heat_map.size()
- << " \n second.heat_map.size() : " << second.heat_map.size() << std::endl;
- return false;
- }
- if (this->min_ != second.min_) {
- if (dbg) std::cerr << "this->min_ : " << this->min_ << ", second.min_ : " << second.min_ << std::endl;
- return false;
- }
- if (this->max_ != second.max_) {
- if (dbg) std::cerr << "this->max_ : " << this->max_ << ", second.max_ : " << second.max_ << std::endl;
- return false;
- }
- // in the other case we may assume that the persistence images are defined on the same domain.
- return true;
- }
-
- /**
- * Return minimal range value of persistent image.
- **/
- inline double get_min() const { return this->min_; }
-
- /**
- * Return maximal range value of persistent image.
- **/
- inline double get_max() const { return this->max_; }
-
- /**
- * Operator == to check if to persistence heat maps are the same.
- **/
- bool operator==(const Persistence_heat_maps& rhs) const {
- bool dbg = false;
- if (!this->check_if_the_same(rhs)) {
- if (dbg) std::cerr << "The domains are not the same \n";
- return false; // in this case, the domains are not the same, so the maps cannot be the same.
- }
- for (size_t i = 0; i != this->heat_map.size(); ++i) {
- for (size_t j = 0; j != this->heat_map[i].size(); ++j) {
- if (!almost_equal(this->heat_map[i][j], rhs.heat_map[i][j])) {
- if (dbg) {
- std::cerr << "this->heat_map[" << i << "][" << j << "] = " << this->heat_map[i][j] << std::endl;
- std::cerr << "rhs.heat_map[" << i << "][" << j << "] = " << rhs.heat_map[i][j] << std::endl;
- }
- return false;
- }
- }
- }
- return true;
- }
-
- /**
- * Operator != to check if to persistence heat maps are different.
- **/
- bool operator!=(const Persistence_heat_maps& rhs) const { return !((*this) == rhs); }
-
- /**
- * A function to generate a gnuplot script to visualize the persistent image.
- **/
- void plot(const char* filename) const;
-
- template <typename Operation_type>
- friend Persistence_heat_maps operation_on_pair_of_heat_maps(const Persistence_heat_maps& first,
- const Persistence_heat_maps& second,
- Operation_type operation) {
- // first check if the heat maps are compatible
- if (!first.check_if_the_same(second)) {
- std::cerr << "Sizes of the heat maps are not compatible. The program will now terminate \n";
- throw "Sizes of the heat maps are not compatible. The program will now terminate \n";
- }
- Persistence_heat_maps result;
- result.min_ = first.min_;
- result.max_ = first.max_;
- result.heat_map.reserve(first.heat_map.size());
- for (size_t i = 0; i != first.heat_map.size(); ++i) {
- std::vector<double> v;
- v.reserve(first.heat_map[i].size());
- for (size_t j = 0; j != first.heat_map[i].size(); ++j) {
- v.push_back(operation(first.heat_map[i][j], second.heat_map[i][j]));
- }
- result.heat_map.push_back(v);
- }
- return result;
- } // operation_on_pair_of_heat_maps
-
- /**
- * Multiplication of Persistence_heat_maps by scalar (so that all values of the heat map gets multiplied by that
- *scalar).
- **/
- Persistence_heat_maps multiply_by_scalar(double scalar) const {
- Persistence_heat_maps result;
- result.min_ = this->min_;
- result.max_ = this->max_;
- result.heat_map.reserve(this->heat_map.size());
- for (size_t i = 0; i != this->heat_map.size(); ++i) {
- std::vector<double> v;
- v.reserve(this->heat_map[i].size());
- for (size_t j = 0; j != this->heat_map[i].size(); ++j) {
- v.push_back(this->heat_map[i][j] * scalar);
- }
- result.heat_map.push_back(v);
- }
- return result;
- }
-
- /**
- * This function computes a sum of two objects of a type Persistence_heat_maps.
- **/
- friend Persistence_heat_maps operator+(const Persistence_heat_maps& first, const Persistence_heat_maps& second) {
- return operation_on_pair_of_heat_maps(first, second, std::plus<double>());
- }
- /**
-* This function computes a difference of two objects of a type Persistence_heat_maps.
-**/
- friend Persistence_heat_maps operator-(const Persistence_heat_maps& first, const Persistence_heat_maps& second) {
- return operation_on_pair_of_heat_maps(first, second, std::minus<double>());
- }
- /**
-* This function computes a product of an object of a type Persistence_heat_maps with real number.
-**/
- friend Persistence_heat_maps operator*(double scalar, const Persistence_heat_maps& A) {
- return A.multiply_by_scalar(scalar);
- }
- /**
-* This function computes a product of an object of a type Persistence_heat_maps with real number.
-**/
- friend Persistence_heat_maps operator*(const Persistence_heat_maps& A, double scalar) {
- return A.multiply_by_scalar(scalar);
- }
- /**
-* This function computes a product of an object of a type Persistence_heat_maps with real number.
-**/
- Persistence_heat_maps operator*(double scalar) { return this->multiply_by_scalar(scalar); }
- /**
- * += operator for Persistence_heat_maps.
- **/
- Persistence_heat_maps operator+=(const Persistence_heat_maps& rhs) {
- *this = *this + rhs;
- return *this;
- }
- /**
- * -= operator for Persistence_heat_maps.
- **/
- Persistence_heat_maps operator-=(const Persistence_heat_maps& rhs) {
- *this = *this - rhs;
- return *this;
- }
- /**
- * *= operator for Persistence_heat_maps.
- **/
- Persistence_heat_maps operator*=(double x) {
- *this = *this * x;
- return *this;
- }
- /**
- * /= operator for Persistence_heat_maps.
- **/
- Persistence_heat_maps operator/=(double x) {
- if (x == 0) throw("In operator /=, division by 0. Program terminated.");
- *this = *this * (1 / x);
- return *this;
- }
-
- // Implementations of functions for various concepts.
-
- /**
- * This function produce a vector of doubles based on a persistence heat map. It is required in a concept
- * Vectorized_topological_data
- */
- std::vector<double> vectorize(int number_of_function) const;
- /**
- * This function return the number of functions that allows vectorization of persistence heat map. It is required
- *in a concept Vectorized_topological_data.
- **/
- size_t number_of_vectorize_functions() const { return this->number_of_functions_for_vectorization; }
-
- /**
- * This function is required by the Real_valued_topological_data concept. It returns various projections on the
- *persistence heat map to a real line.
- * At the moment this function is not tested, since it is quite likely to be changed in the future. Given this, when
- *using it, keep in mind that it
- * will be most likely changed in the next versions.
- **/
- double project_to_R(int number_of_function) const;
- /**
- * The function gives the number of possible projections to R. This function is required by the
- *Real_valued_topological_data concept.
- **/
- size_t number_of_projections_to_R() const { return this->number_of_functions_for_projections_to_reals; }
-
- /**
- * A function to compute distance between persistence heat maps.
- * The parameter of this function is a const reference to an object of a class Persistence_heat_maps.
- * This function is required in Topological_data_with_distances concept.
-* For max norm distance, set power to std::numeric_limits<double>::max()
- **/
- double distance(const Persistence_heat_maps& second_, double power = 1) const;
-
- /**
- * A function to compute averaged persistence heat map, based on vector of persistence heat maps.
- * This function is required by Topological_data_with_averages concept.
- **/
- void compute_average(const std::vector<Persistence_heat_maps*>& to_average);
-
- /**
- * A function to compute scalar product of persistence heat maps.
- * The parameter of this function is a const reference to an object of a class Persistence_heat_maps.
- * This function is required in Topological_data_with_scalar_product concept.
- **/
- double compute_scalar_product(const Persistence_heat_maps& second_) const;
-
- // end of implementation of functions needed for concepts.
-
- /**
- * The x-range of the persistence heat map.
- **/
- std::pair<double, double> get_x_range() const { return std::make_pair(this->min_, this->max_); }
-
- /**
- * The y-range of the persistence heat map.
- **/
- std::pair<double, double> get_y_range() const { return this->get_x_range(); }
-
- protected:
- // private methods
- std::vector<std::vector<double> > check_and_initialize_maps(const std::vector<Persistence_heat_maps*>& maps);
- size_t number_of_functions_for_vectorization;
- size_t number_of_functions_for_projections_to_reals;
- void construct(const std::vector<std::pair<double, double> >& intervals_,
- std::vector<std::vector<double> > filter = create_Gaussian_filter(5, 1),
-
- bool erase_below_diagonal = false, size_t number_of_pixels = 1000,
- double min_ = std::numeric_limits<double>::max(), double max_ = std::numeric_limits<double>::max());
-
- void set_up_parameters_for_basic_classes() {
- this->number_of_functions_for_vectorization = 1;
- this->number_of_functions_for_projections_to_reals = 1;
- }
-
- // data
- Scalling_of_kernels f;
- bool erase_below_diagonal;
- double min_;
- double max_;
- std::vector<std::vector<double> > heat_map;
-};
-
-// if min_ == max_, then the program is requested to set up the values itself based on persistence intervals
-template <typename Scalling_of_kernels>
-void Persistence_heat_maps<Scalling_of_kernels>::construct(const std::vector<std::pair<double, double> >& intervals_,
- std::vector<std::vector<double> > filter,
- bool erase_below_diagonal, size_t number_of_pixels,
- double min_, double max_) {
- bool dbg = false;
- if (dbg) std::cerr << "Entering construct procedure \n";
- Scalling_of_kernels f;
- this->f = f;
-
- if (dbg) std::cerr << "min and max passed to construct() procedure: " << min_ << " " << max_ << std::endl;
-
- if (min_ == max_) {
- if (dbg) std::cerr << "min and max parameters will be determined based on intervals \n";
- // in this case, we want the program to set up the min_ and max_ values by itself.
- min_ = std::numeric_limits<int>::max();
- max_ = -std::numeric_limits<int>::max();
-
- for (size_t i = 0; i != intervals_.size(); ++i) {
- if (intervals_[i].first < min_) min_ = intervals_[i].first;
- if (intervals_[i].second > max_) max_ = intervals_[i].second;
- }
- // now we have the structure filled in, and moreover we know min_ and max_ values of the interval, so we know the
- // range.
-
- // add some more space:
- min_ -= fabs(max_ - min_) / 100;
- max_ += fabs(max_ - min_) / 100;
- }
-
- if (dbg) {
- std::cerr << "min_ : " << min_ << std::endl;
- std::cerr << "max_ : " << max_ << std::endl;
- std::cerr << "number_of_pixels : " << number_of_pixels << std::endl;
- getchar();
- }
-
- this->min_ = min_;
- this->max_ = max_;
-
- // initialization of the structure heat_map
- std::vector<std::vector<double> > heat_map_;
- for (size_t i = 0; i != number_of_pixels; ++i) {
- std::vector<double> v(number_of_pixels, 0);
- heat_map_.push_back(v);
- }
- this->heat_map = heat_map_;
-
- if (dbg) std::cerr << "Done creating of the heat map, now we will fill in the structure \n";
-
- for (size_t pt_nr = 0; pt_nr != intervals_.size(); ++pt_nr) {
- // compute the value of intervals_[pt_nr] in the grid:
- int x_grid =
- static_cast<int>((intervals_[pt_nr].first - this->min_) / (this->max_ - this->min_) * number_of_pixels);
- int y_grid =
- static_cast<int>((intervals_[pt_nr].second - this->min_) / (this->max_ - this->min_) * number_of_pixels);
-
- if (dbg) {
- std::cerr << "point : " << intervals_[pt_nr].first << " , " << intervals_[pt_nr].second << std::endl;
- std::cerr << "x_grid : " << x_grid << std::endl;
- std::cerr << "y_grid : " << y_grid << std::endl;
- }
-
- // x_grid and y_grid gives a center of the kernel. We want to have its lower left corner. To get this, we need to
- // shift x_grid and y_grid by a grid diameter.
- x_grid -= filter.size() / 2;
- y_grid -= filter.size() / 2;
- // note that the numbers x_grid and y_grid may be negative.
-
- if (dbg) {
- std::cerr << "After shift : \n";
- std::cerr << "x_grid : " << x_grid << std::endl;
- std::cerr << "y_grid : " << y_grid << std::endl;
- }
-
- double scaling_value = this->f(intervals_[pt_nr]);
-
- for (size_t i = 0; i != filter.size(); ++i) {
- for (size_t j = 0; j != filter.size(); ++j) {
- // if the point (x_grid+i,y_grid+j) is the correct point in the grid.
- if (((x_grid + i) >= 0) && (x_grid + i < this->heat_map.size()) && ((y_grid + j) >= 0) &&
- (y_grid + j < this->heat_map.size())) {
- if (dbg) {
- std::cerr << y_grid + j << " " << x_grid + i << std::endl;
- }
- this->heat_map[y_grid + j][x_grid + i] += scaling_value * filter[i][j];
- if (dbg) {
- std::cerr << "Position : (" << x_grid + i << "," << y_grid + j
- << ") got increased by the value : " << filter[i][j] << std::endl;
- }
- }
- }
- }
- }
-
- // now it remains to cut everything below diagonal if the user wants us to.
- if (erase_below_diagonal) {
- for (size_t i = 0; i != this->heat_map.size(); ++i) {
- for (size_t j = i; j != this->heat_map.size(); ++j) {
- this->heat_map[i][j] = 0;
- }
- }
- }
-} // construct
-
-template <typename Scalling_of_kernels>
-Persistence_heat_maps<Scalling_of_kernels>::Persistence_heat_maps(
- const std::vector<std::pair<double, double> >& interval, std::vector<std::vector<double> > filter,
- bool erase_below_diagonal, size_t number_of_pixels, double min_, double max_) {
- this->construct(interval, filter, erase_below_diagonal, number_of_pixels, min_, max_);
- this->set_up_parameters_for_basic_classes();
-}
-
-template <typename Scalling_of_kernels>
-Persistence_heat_maps<Scalling_of_kernels>::Persistence_heat_maps(const char* filename,
- std::vector<std::vector<double> > filter,
- bool erase_below_diagonal, size_t number_of_pixels,
- double min_, double max_, unsigned dimension) {
- std::vector<std::pair<double, double> > intervals_;
- if (dimension == std::numeric_limits<unsigned>::max()) {
- intervals_ = read_persistence_intervals_in_one_dimension_from_file(filename);
- } else {
- intervals_ = read_persistence_intervals_in_one_dimension_from_file(filename, dimension);
- }
- this->construct(intervals_, filter, erase_below_diagonal, number_of_pixels, min_, max_);
- this->set_up_parameters_for_basic_classes();
-}
-
-template <typename Scalling_of_kernels>
-std::vector<std::vector<double> > Persistence_heat_maps<Scalling_of_kernels>::check_and_initialize_maps(
- const std::vector<Persistence_heat_maps*>& maps) {
- // checking if all the heat maps are of the same size:
- for (size_t i = 0; i != maps.size(); ++i) {
- if (maps[i]->heat_map.size() != maps[0]->heat_map.size()) {
- std::cerr << "Sizes of Persistence_heat_maps are not compatible. The program will terminate now \n";
- throw "Sizes of Persistence_heat_maps are not compatible. The program will terminate now \n";
- }
- if (maps[i]->heat_map[0].size() != maps[0]->heat_map[0].size()) {
- std::cerr << "Sizes of Persistence_heat_maps are not compatible. The program will terminate now \n";
- throw "Sizes of Persistence_heat_maps are not compatible. The program will terminate now \n";
- }
- }
- std::vector<std::vector<double> > heat_maps(maps[0]->heat_map.size());
- for (size_t i = 0; i != maps[0]->heat_map.size(); ++i) {
- std::vector<double> v(maps[0]->heat_map[0].size(), 0);
- heat_maps[i] = v;
- }
- return heat_maps;
-}
-
-template <typename Scalling_of_kernels>
-void Persistence_heat_maps<Scalling_of_kernels>::compute_median(const std::vector<Persistence_heat_maps*>& maps) {
- std::vector<std::vector<double> > heat_maps = this->check_and_initialize_maps(maps);
-
- std::vector<double> to_compute_median(maps.size());
- for (size_t i = 0; i != heat_maps.size(); ++i) {
- for (size_t j = 0; j != heat_maps[i].size(); ++j) {
- for (size_t map_no = 0; map_no != maps.size(); ++map_no) {
- to_compute_median[map_no] = maps[map_no]->heat_map[i][j];
- }
- std::nth_element(to_compute_median.begin(), to_compute_median.begin() + to_compute_median.size() / 2,
- to_compute_median.end());
- heat_maps[i][j] = to_compute_median[to_compute_median.size() / 2];
- }
- }
- this->heat_map = heat_maps;
- this->min_ = maps[0]->min_;
- this->max_ = maps[0]->max_;
-}
-
-template <typename Scalling_of_kernels>
-void Persistence_heat_maps<Scalling_of_kernels>::compute_mean(const std::vector<Persistence_heat_maps*>& maps) {
- std::vector<std::vector<double> > heat_maps = this->check_and_initialize_maps(maps);
- for (size_t i = 0; i != heat_maps.size(); ++i) {
- for (size_t j = 0; j != heat_maps[i].size(); ++j) {
- double mean = 0;
- for (size_t map_no = 0; map_no != maps.size(); ++map_no) {
- mean += maps[map_no]->heat_map[i][j];
- }
- heat_maps[i][j] = mean / static_cast<double>(maps.size());
- }
- }
- this->heat_map = heat_maps;
- this->min_ = maps[0]->min_;
- this->max_ = maps[0]->max_;
-}
-
-template <typename Scalling_of_kernels>
-void Persistence_heat_maps<Scalling_of_kernels>::compute_percentage_of_active(
- const std::vector<Persistence_heat_maps*>& maps, size_t cutoff) {
- std::vector<std::vector<double> > heat_maps = this->check_and_initialize_maps(maps);
-
- for (size_t i = 0; i != heat_maps.size(); ++i) {
- for (size_t j = 0; j != heat_maps[i].size(); ++j) {
- size_t number_of_active_levels = 0;
- for (size_t map_no = 0; map_no != maps.size(); ++map_no) {
- if (maps[map_no]->heat_map[i][j]) number_of_active_levels++;
- }
- if (number_of_active_levels > cutoff) {
- heat_maps[i][j] = number_of_active_levels;
- } else {
- heat_maps[i][j] = 0;
- }
- }
- }
- this->heat_map = heat_maps;
- this->min_ = maps[0]->min_;
- this->max_ = maps[0]->max_;
-}
-
-template <typename Scalling_of_kernels>
-void Persistence_heat_maps<Scalling_of_kernels>::plot(const char* filename) const {
- std::ofstream out;
- std::stringstream gnuplot_script;
- gnuplot_script << filename << "_GnuplotScript";
-
- out.open(gnuplot_script.str().c_str());
- out << "plot '-' matrix with image" << std::endl;
- for (size_t i = 0; i != this->heat_map.size(); ++i) {
- for (size_t j = 0; j != this->heat_map[i].size(); ++j) {
- out << this->heat_map[i][j] << " ";
- }
- out << std::endl;
- }
- out.close();
- std::cout << "To visualize, install gnuplot and type the command: gnuplot -persist -e \"load \'"
- << gnuplot_script.str().c_str() << "\'\"" << std::endl;
-}
-
-template <typename Scalling_of_kernels>
-void Persistence_heat_maps<Scalling_of_kernels>::print_to_file(const char* filename) const {
- std::ofstream out;
- out.open(filename);
-
- // First we store this->min_ and this->max_ values:
- out << this->min_ << " " << this->max_ << std::endl;
- for (size_t i = 0; i != this->heat_map.size(); ++i) {
- for (size_t j = 0; j != this->heat_map[i].size(); ++j) {
- out << this->heat_map[i][j] << " ";
- }
- out << std::endl;
- }
- out.close();
-}
-
-template <typename Scalling_of_kernels>
-void Persistence_heat_maps<Scalling_of_kernels>::load_from_file(const char* filename) {
- bool dbg = false;
-
- std::ifstream in;
- in.open(filename);
-
- // checking if the file exist / if it was open.
- if (!in.good()) {
- std::cerr << "The file : " << filename << " do not exist. The program will now terminate \n";
- throw "The persistence landscape file do not exist. The program will now terminate \n";
- }
-
- // now we read the file one by one.
-
- in >> this->min_ >> this->max_;
- if (dbg) {
- std::cerr << "Reading the following values of min and max : " << this->min_ << " , " << this->max_ << std::endl;
- }
-
- std::string temp;
- std::getline(in, temp);
- while (in.good()) {
- std::getline(in, temp);
- std::stringstream lineSS;
- lineSS << temp;
-
- std::vector<double> line_of_heat_map;
- while (lineSS.good()) {
- double point;
-
- lineSS >> point;
- line_of_heat_map.push_back(point);
- if (dbg) {
- std::cout << point << " ";
- }
- }
- if (dbg) {
- std::cout << std::endl;
- getchar();
- }
-
- if (in.good()) this->heat_map.push_back(line_of_heat_map);
- }
- in.close();
- if (dbg) std::cout << "Done \n";
-}
-
-// Concretizations of virtual methods:
-template <typename Scalling_of_kernels>
-std::vector<double> Persistence_heat_maps<Scalling_of_kernels>::vectorize(int number_of_function) const {
- // convert this->heat_map into one large vector:
- size_t size_of_result = 0;
- for (size_t i = 0; i != this->heat_map.size(); ++i) {
- size_of_result += this->heat_map[i].size();
- }
-
- std::vector<double> result;
- result.reserve(size_of_result);
-
- for (size_t i = 0; i != this->heat_map.size(); ++i) {
- for (size_t j = 0; j != this->heat_map[i].size(); ++j) {
- result.push_back(this->heat_map[i][j]);
- }
- }
-
- return result;
-}
-
-template <typename Scalling_of_kernels>
-double Persistence_heat_maps<Scalling_of_kernels>::distance(const Persistence_heat_maps& second, double power) const {
- // first we need to check if (*this) and second are defined on the same domain and have the same dimensions:
- if (!this->check_if_the_same(second)) {
- std::cerr << "The persistence images are of non compatible sizes. We cannot therefore compute distance between "
- "them. The program will now terminate";
- throw "The persistence images are of non compatible sizes. The program will now terminate";
- }
-
- // if we are here, we know that the two persistence images are defined on the same domain, so we can start computing
- // their distances:
-
- double distance = 0;
- if (power < std::numeric_limits<double>::max()) {
- for (size_t i = 0; i != this->heat_map.size(); ++i) {
- for (size_t j = 0; j != this->heat_map[i].size(); ++j) {
- distance += pow(fabs(this->heat_map[i][j] - second.heat_map[i][j]), power);
- }
- }
- } else {
- // in this case, we compute max norm distance
- for (size_t i = 0; i != this->heat_map.size(); ++i) {
- for (size_t j = 0; j != this->heat_map[i].size(); ++j) {
- if (distance < fabs(this->heat_map[i][j] - second.heat_map[i][j])) {
- distance = fabs(this->heat_map[i][j] - second.heat_map[i][j]);
- }
- }
- }
- }
- return distance;
-}
-
-template <typename Scalling_of_kernels>
-double Persistence_heat_maps<Scalling_of_kernels>::project_to_R(int number_of_function) const {
- double result = 0;
- for (size_t i = 0; i != this->heat_map.size(); ++i) {
- for (size_t j = 0; j != this->heat_map[i].size(); ++j) {
- result += this->heat_map[i][j];
- }
- }
- return result;
-}
-
-template <typename Scalling_of_kernels>
-void Persistence_heat_maps<Scalling_of_kernels>::compute_average(
- const std::vector<Persistence_heat_maps*>& to_average) {
- this->compute_mean(to_average);
-}
-
-template <typename Scalling_of_kernels>
-double Persistence_heat_maps<Scalling_of_kernels>::compute_scalar_product(const Persistence_heat_maps& second) const {
- // first we need to check if (*this) and second are defined on the same domain and have the same dimensions:
- if (!this->check_if_the_same(second)) {
- std::cerr << "The persistence images are of non compatible sizes. We cannot therefore compute distance between "
- "them. The program will now terminate";
- throw "The persistence images are of non compatible sizes. The program will now terminate";
- }
-
- // if we are here, we know that the two persistence images are defined on the same domain, so we can start computing
- // their scalar product:
- double scalar_prod = 0;
- for (size_t i = 0; i != this->heat_map.size(); ++i) {
- for (size_t j = 0; j != this->heat_map[i].size(); ++j) {
- scalar_prod += this->heat_map[i][j] * second.heat_map[i][j];
- }
- }
- return scalar_prod;
-}
-
-} // namespace Persistence_representations
-} // namespace Gudhi
-
-#endif // PERSISTENCE_HEAT_MAPS_H_
diff --git a/include/gudhi/Persistence_intervals.h b/include/gudhi/Persistence_intervals.h
deleted file mode 100644
index 76eac7d7..00000000
--- a/include/gudhi/Persistence_intervals.h
+++ /dev/null
@@ -1,570 +0,0 @@
-/* This file is part of the Gudhi hiLibrary. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef PERSISTENCE_INTERVALS_H_
-#define PERSISTENCE_INTERVALS_H_
-
-// gudhi include
-#include <gudhi/read_persistence_from_file.h>
-
-// standard include
-#include <limits>
-#include <iostream>
-#include <fstream>
-#include <vector>
-#include <algorithm>
-#include <cmath>
-#include <functional>
-#include <utility>
-#include <string>
-
-namespace Gudhi {
-namespace Persistence_representations {
-
-/**
- * This class implements the following concepts: Vectorized_topological_data, Topological_data_with_distances,
- *Real_valued_topological_data
-**/
-class Persistence_intervals {
- public:
- /**
- * This is a constructor of a class Persistence_intervals from a text file. Each line of the input file is supposed to
- *contain two numbers of a type double (or convertible to double)
- * representing the birth and the death of the persistence interval. If the pairs are not sorted so that birth <=
- *death, then the constructor will sort then that way.
- * * The second parameter of a constructor is a dimension of intervals to be read from a file. If your file contains
- *only birth-death pairs, use the default value.
- **/
- Persistence_intervals(const char* filename, unsigned dimension = std::numeric_limits<unsigned>::max());
-
- /**
- * This is a constructor of a class Persistence_intervals from a vector of pairs. Each pair is assumed to represent a
- *persistence interval. We assume that the first elements of pairs
- * are smaller or equal the second elements of pairs.
- **/
- Persistence_intervals(const std::vector<std::pair<double, double> >& intervals);
-
- /**
- * This procedure returns x-range of a given persistence diagram.
- **/
- std::pair<double, double> get_x_range() const {
- double min_ = std::numeric_limits<int>::max();
- double max_ = -std::numeric_limits<int>::max();
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- if (this->intervals[i].first < min_) min_ = this->intervals[i].first;
- if (this->intervals[i].second > max_) max_ = this->intervals[i].second;
- }
- return std::make_pair(min_, max_);
- }
-
- /**
- * This procedure returns y-range of a given persistence diagram.
- **/
- std::pair<double, double> get_y_range() const {
- double min_ = std::numeric_limits<int>::max();
- double max_ = -std::numeric_limits<int>::max();
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- if (this->intervals[i].second < min_) min_ = this->intervals[i].second;
- if (this->intervals[i].second > max_) max_ = this->intervals[i].second;
- }
- return std::make_pair(min_, max_);
- }
-
- /**
- * Procedure that compute the vector of lengths of the dominant (i.e. the longest) persistence intervals. The list is
- *truncated at the parameter of the call where_to_cut (set by default to 100).
- **/
- std::vector<double> length_of_dominant_intervals(size_t where_to_cut = 100) const;
-
- /**
- * Procedure that compute the vector of the dominant (i.e. the longest) persistence intervals. The parameter of
- *the procedure (set by default to 100) is the number of dominant intervals returned by the procedure.
- **/
- std::vector<std::pair<double, double> > dominant_intervals(size_t where_to_cut = 100) const;
-
- /**
- * Procedure to compute a histogram of interval's length. A histogram is a block plot. The number of blocks is
- *determined by the first parameter of the function (set by default to 10).
- * For the sake of argument let us assume that the length of the longest interval is 1 and the number of bins is
- *10. In this case the i-th block correspond to a range between i-1/10 and i10.
- * The vale of a block supported at the interval is the number of persistence intervals of a length between x_0
- *and x_1.
- **/
- std::vector<size_t> histogram_of_lengths(size_t number_of_bins = 10) const;
-
- /**
- * Based on a histogram of intervals lengths computed by the function histogram_of_lengths H the procedure below
- *computes the cumulative histogram. The i-th position of the resulting histogram
- * is the sum of values of H for the positions from 0 to i.
- **/
- std::vector<size_t> cumulative_histogram_of_lengths(size_t number_of_bins = 10) const;
-
- /**
- * In this procedure we assume that each barcode is a characteristic function of a hight equal to its length. The
- *persistence diagram is a sum of such a functions. The procedure below construct a function being a
- * sum of the characteristic functions of persistence intervals. The first two parameters are the range in which the
- *function is to be computed and the last parameter is the number of bins in
- * the discretization of the interval [_min,_max].
- **/
- std::vector<double> characteristic_function_of_diagram(double x_min, double x_max, size_t number_of_bins = 10) const;
-
- /**
- * Cumulative version of the function characteristic_function_of_diagram
- **/
- std::vector<double> cumulative_characteristic_function_of_diagram(double x_min, double x_max,
- size_t number_of_bins = 10) const;
-
- /**
- * Compute the function of persistence Betti numbers. The returned value is a vector of pair. First element of each
- *pair is a place where persistence Betti numbers change.
- * Second element of each pair is the value of Persistence Betti numbers at that point.
- **/
- std::vector<std::pair<double, size_t> > compute_persistent_betti_numbers() const;
-
- /**
- *This is a non optimal procedure that compute vector of distances from each point of diagram to its k-th nearest
- *neighbor (k is a parameter of the program). The resulting vector is by default truncated to 10
- *elements (this value can be changed by using the second parameter of the program). The points are returned in order
- *from the ones which are farthest away from their k-th nearest neighbors.
- **/
- std::vector<double> k_n_n(size_t k, size_t where_to_cut = 10) const;
-
- /**
-* Operator that send the diagram to a stream.
-**/
- friend std::ostream& operator<<(std::ostream& out, const Persistence_intervals& intervals) {
- for (size_t i = 0; i != intervals.intervals.size(); ++i) {
- out << intervals.intervals[i].first << " " << intervals.intervals[i].second << std::endl;
- }
- return out;
- }
-
- /**
- * Generating gnuplot script to plot the interval.
- **/
- void plot(const char* filename, double min_x = std::numeric_limits<double>::max(),
- double max_x = std::numeric_limits<double>::max(), double min_y = std::numeric_limits<double>::max(),
- double max_y = std::numeric_limits<double>::max()) const {
- // this program create a gnuplot script file that allows to plot persistence diagram.
- std::ofstream out;
-
- std::stringstream gnuplot_script;
- gnuplot_script << filename << "_GnuplotScript";
-
- out.open(gnuplot_script.str().c_str());
-
- std::pair<double, double> min_max_values = this->get_x_range();
- if (min_x == max_x) {
- out << "set xrange [" << min_max_values.first - 0.1 * (min_max_values.second - min_max_values.first) << " : "
- << min_max_values.second + 0.1 * (min_max_values.second - min_max_values.first) << " ]" << std::endl;
- out << "set yrange [" << min_max_values.first - 0.1 * (min_max_values.second - min_max_values.first) << " : "
- << min_max_values.second + 0.1 * (min_max_values.second - min_max_values.first) << " ]" << std::endl;
- } else {
- out << "set xrange [" << min_x << " : " << max_x << " ]" << std::endl;
- out << "set yrange [" << min_y << " : " << max_y << " ]" << std::endl;
- }
- out << "plot '-' using 1:2 notitle \"" << filename << "\", \\" << std::endl;
- out << " '-' using 1:2 notitle with lp" << std::endl;
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- out << this->intervals[i].first << " " << this->intervals[i].second << std::endl;
- }
- out << "EOF" << std::endl;
- out << min_max_values.first - 0.1 * (min_max_values.second - min_max_values.first) << " "
- << min_max_values.first - 0.1 * (min_max_values.second - min_max_values.first) << std::endl;
- out << min_max_values.second + 0.1 * (min_max_values.second - min_max_values.first) << " "
- << min_max_values.second + 0.1 * (min_max_values.second - min_max_values.first) << std::endl;
-
- out.close();
-
- std::cout << "To visualize, install gnuplot and type the command: gnuplot -persist -e \"load \'"
- << gnuplot_script.str().c_str() << "\'\"" << std::endl;
- }
-
- /**
-* Return number of points in the diagram.
-**/
- size_t size() const { return this->intervals.size(); }
-
- /**
- * Return the persistence interval at the given position. Note that intervals are not sorted with respect to their
- *lengths.
- **/
- inline std::pair<double, double> operator[](size_t i) const {
- if (i >= this->intervals.size()) throw("Index out of range! Operator [], one_d_gaussians class\n");
- return this->intervals[i];
- }
-
- // Implementations of functions for various concepts.
- /**
- * This is a simple function projecting the persistence intervals to a real number. The function we use here is a sum
- *of squared lengths of intervals. It can be naturally interpreted as
- * sum of step function, where the step hight it equal to the length of the interval.
- * At the moment this function is not tested, since it is quite likely to be changed in the future. Given this, when
- *using it, keep in mind that it
- * will be most likely changed in the next versions.
- **/
- double project_to_R(int number_of_function) const;
- /**
- * The function gives the number of possible projections to R. This function is required by the
- *Real_valued_topological_data concept.
- **/
- size_t number_of_projections_to_R() const { return this->number_of_functions_for_projections_to_reals; }
-
- /**
- * Return a family of vectors obtained from the persistence diagram. The i-th vector consist of the length of i
- *dominant persistence intervals.
- **/
- std::vector<double> vectorize(int number_of_function) const {
- return this->length_of_dominant_intervals(number_of_function);
- }
- /**
- * This function return the number of functions that allows vectorization of a persistence diagram. It is required
- *in a concept Vectorized_topological_data.
- **/
- size_t number_of_vectorize_functions() const { return this->number_of_functions_for_vectorization; }
-
- // end of implementation of functions needed for concepts.
-
- // For visualization use output from vectorize and build histograms.
- std::vector<std::pair<double, double> > output_for_visualization() { return this->intervals; }
-
- protected:
- void set_up_numbers_of_functions_for_vectorization_and_projections_to_reals() {
- // warning, this function can be only called after filling in the intervals vector.
- this->number_of_functions_for_vectorization = this->intervals.size();
- this->number_of_functions_for_projections_to_reals = 1;
- }
-
- std::vector<std::pair<double, double> > intervals;
- size_t number_of_functions_for_vectorization;
- size_t number_of_functions_for_projections_to_reals;
-};
-
-Persistence_intervals::Persistence_intervals(const char* filename, unsigned dimension) {
- if (dimension == std::numeric_limits<unsigned>::max()) {
- this->intervals = read_persistence_intervals_in_one_dimension_from_file(filename);
- } else {
- this->intervals = read_persistence_intervals_in_one_dimension_from_file(filename, dimension);
- }
- this->set_up_numbers_of_functions_for_vectorization_and_projections_to_reals();
-} // Persistence_intervals
-
-Persistence_intervals::Persistence_intervals(const std::vector<std::pair<double, double> >& intervals_)
- : intervals(intervals_) {
- this->set_up_numbers_of_functions_for_vectorization_and_projections_to_reals();
-}
-
-std::vector<double> Persistence_intervals::length_of_dominant_intervals(size_t where_to_cut) const {
- std::vector<double> result(this->intervals.size());
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- result[i] = this->intervals[i].second - this->intervals[i].first;
- }
- std::sort(result.begin(), result.end(), std::greater<double>());
-
- result.resize(std::min(where_to_cut, result.size()));
- return result;
-} // length_of_dominant_intervals
-
-bool compare(const std::pair<size_t, double>& first, const std::pair<size_t, double>& second) {
- return first.second > second.second;
-}
-
-std::vector<std::pair<double, double> > Persistence_intervals::dominant_intervals(size_t where_to_cut) const {
- bool dbg = false;
- std::vector<std::pair<size_t, double> > position_length_vector(this->intervals.size());
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- position_length_vector[i] = std::make_pair(i, this->intervals[i].second - this->intervals[i].first);
- }
-
- std::sort(position_length_vector.begin(), position_length_vector.end(), compare);
-
- std::vector<std::pair<double, double> > result;
- result.reserve(std::min(where_to_cut, position_length_vector.size()));
-
- for (size_t i = 0; i != std::min(where_to_cut, position_length_vector.size()); ++i) {
- result.push_back(this->intervals[position_length_vector[i].first]);
- if (dbg)
- std::cerr << "Position : " << position_length_vector[i].first << " length : " << position_length_vector[i].second
- << std::endl;
- }
-
- return result;
-} // dominant_intervals
-
-std::vector<size_t> Persistence_intervals::histogram_of_lengths(size_t number_of_bins) const {
- bool dbg = false;
-
- if (dbg) std::cerr << "this->intervals.size() : " << this->intervals.size() << std::endl;
- // first find the length of the longest interval:
- double lengthOfLongest = 0;
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- if ((this->intervals[i].second - this->intervals[i].first) > lengthOfLongest) {
- lengthOfLongest = this->intervals[i].second - this->intervals[i].first;
- }
- }
-
- if (dbg) {
- std::cerr << "lengthOfLongest : " << lengthOfLongest << std::endl;
- }
-
- // this is a container we will use to store the resulting histogram
- std::vector<size_t> result(number_of_bins + 1, 0);
-
- // for every persistence interval in our collection.
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- // compute its length relative to the length of the dominant interval:
- double relative_length_of_this_interval = (this->intervals[i].second - this->intervals[i].first) / lengthOfLongest;
-
- // given the relative length (between 0 and 1) compute to which bin should it contribute.
- size_t position = (size_t)(relative_length_of_this_interval * number_of_bins);
-
- ++result[position];
-
- if (dbg) {
- std::cerr << "i : " << i << std::endl;
- std::cerr << "Interval : [" << this->intervals[i].first << " , " << this->intervals[i].second << " ] \n";
- std::cerr << "relative_length_of_this_interval : " << relative_length_of_this_interval << std::endl;
- std::cerr << "position : " << position << std::endl;
- getchar();
- }
- }
-
- if (dbg) {
- for (size_t i = 0; i != result.size(); ++i) std::cerr << result[i] << std::endl;
- }
- return result;
-}
-
-std::vector<size_t> Persistence_intervals::cumulative_histogram_of_lengths(size_t number_of_bins) const {
- std::vector<size_t> histogram = this->histogram_of_lengths(number_of_bins);
- std::vector<size_t> result(histogram.size());
-
- size_t sum = 0;
- for (size_t i = 0; i != histogram.size(); ++i) {
- sum += histogram[i];
- result[i] = sum;
- }
- return result;
-}
-
-std::vector<double> Persistence_intervals::characteristic_function_of_diagram(double x_min, double x_max,
- size_t number_of_bins) const {
- bool dbg = false;
-
- std::vector<double> result(number_of_bins);
- std::fill(result.begin(), result.end(), 0);
-
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- if (dbg) {
- std::cerr << "Interval : " << this->intervals[i].first << " , " << this->intervals[i].second << std::endl;
- }
-
- size_t beginIt = 0;
- if (this->intervals[i].first < x_min) beginIt = 0;
- if (this->intervals[i].first >= x_max) beginIt = result.size();
- if ((this->intervals[i].first > x_min) && (this->intervals[i].first < x_max)) {
- beginIt = number_of_bins * (this->intervals[i].first - x_min) / (x_max - x_min);
- }
-
- size_t endIt = 0;
- if (this->intervals[i].second < x_min) endIt = 0;
- if (this->intervals[i].second >= x_max) endIt = result.size();
- if ((this->intervals[i].second > x_min) && (this->intervals[i].second < x_max)) {
- endIt = number_of_bins * (this->intervals[i].second - x_min) / (x_max - x_min);
- }
-
- if (beginIt > endIt) {
- beginIt = endIt;
- }
-
- if (dbg) {
- std::cerr << "beginIt : " << beginIt << std::endl;
- std::cerr << "endIt : " << endIt << std::endl;
- }
-
- for (size_t pos = beginIt; pos != endIt; ++pos) {
- result[pos] += ((x_max - x_min) / static_cast<double>(number_of_bins)) *
- (this->intervals[i].second - this->intervals[i].first);
- }
- if (dbg) {
- std::cerr << "Result at this stage \n";
- for (size_t aa = 0; aa != result.size(); ++aa) {
- std::cerr << result[aa] << " ";
- }
- std::cerr << std::endl;
- }
- }
- return result;
-} // characteristic_function_of_diagram
-
-std::vector<double> Persistence_intervals::cumulative_characteristic_function_of_diagram(double x_min, double x_max,
- size_t number_of_bins) const {
- std::vector<double> intsOfBars = this->characteristic_function_of_diagram(x_min, x_max, number_of_bins);
- std::vector<double> result(intsOfBars.size());
- double sum = 0;
- for (size_t i = 0; i != intsOfBars.size(); ++i) {
- sum += intsOfBars[i];
- result[i] = sum;
- }
- return result;
-} // cumulative_characteristic_function_of_diagram
-
-template <typename T>
-bool compare_first_element_of_pair(const std::pair<T, bool>& f, const std::pair<T, bool>& s) {
- return (f.first < s.first);
-}
-
-std::vector<std::pair<double, size_t> > Persistence_intervals::compute_persistent_betti_numbers() const {
- std::vector<std::pair<double, bool> > places_where_pbs_change(2 * this->intervals.size());
-
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- places_where_pbs_change[2 * i] = std::make_pair(this->intervals[i].first, true);
- places_where_pbs_change[2 * i + 1] = std::make_pair(this->intervals[i].second, false);
- }
-
- std::sort(places_where_pbs_change.begin(), places_where_pbs_change.end(), compare_first_element_of_pair<double>);
- size_t pbn = 0;
- std::vector<std::pair<double, size_t> > pbns(places_where_pbs_change.size());
- for (size_t i = 0; i != places_where_pbs_change.size(); ++i) {
- if (places_where_pbs_change[i].second == true) {
- ++pbn;
- } else {
- --pbn;
- }
- pbns[i] = std::make_pair(places_where_pbs_change[i].first, pbn);
- }
- return pbns;
-}
-
-inline double compute_euclidean_distance(const std::pair<double, double>& f, const std::pair<double, double>& s) {
- return sqrt((f.first - s.first) * (f.first - s.first) + (f.second - s.second) * (f.second - s.second));
-}
-
-std::vector<double> Persistence_intervals::k_n_n(size_t k, size_t where_to_cut) const {
- bool dbg = false;
- if (dbg) {
- std::cerr << "Here are the intervals : \n";
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- std::cerr << "[ " << this->intervals[i].first << " , " << this->intervals[i].second << "] \n";
- }
- getchar();
- }
-
- std::vector<double> result;
- // compute all to all distance between point in the diagram. Also, consider points in the diagonal with the infinite
- // multiplicity.
- std::vector<std::vector<double> > distances(this->intervals.size());
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- std::vector<double> aa(this->intervals.size());
- std::fill(aa.begin(), aa.end(), 0);
- distances[i] = aa;
- }
- std::vector<double> distances_from_diagonal(this->intervals.size());
- std::fill(distances_from_diagonal.begin(), distances_from_diagonal.end(), 0);
-
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- std::vector<double> distancesFromI;
- for (size_t j = i + 1; j != this->intervals.size(); ++j) {
- distancesFromI.push_back(compute_euclidean_distance(this->intervals[i], this->intervals[j]));
- }
- // also add a distance from this guy to diagonal:
- double distanceToDiagonal = compute_euclidean_distance(
- this->intervals[i], std::make_pair(0.5 * (this->intervals[i].first + this->intervals[i].second),
- 0.5 * (this->intervals[i].first + this->intervals[i].second)));
- distances_from_diagonal[i] = distanceToDiagonal;
-
- if (dbg) {
- std::cerr << "Here are the distances form the point : [" << this->intervals[i].first << " , "
- << this->intervals[i].second << "] in the diagram \n";
- for (size_t aa = 0; aa != distancesFromI.size(); ++aa) {
- std::cerr << "To : " << i + aa << " : " << distancesFromI[aa] << " ";
- }
- std::cerr << std::endl;
- getchar();
- }
-
- // filling in the distances matrix:
- for (size_t j = i + 1; j != this->intervals.size(); ++j) {
- distances[i][j] = distancesFromI[j - i - 1];
- distances[j][i] = distancesFromI[j - i - 1];
- }
- }
- if (dbg) {
- std::cerr << "Here is the distance matrix : \n";
- for (size_t i = 0; i != distances.size(); ++i) {
- for (size_t j = 0; j != distances.size(); ++j) {
- std::cerr << distances[i][j] << " ";
- }
- std::cerr << std::endl;
- }
- std::cerr << std::endl << std::endl << "And here are the distances to the diagonal : " << std::endl;
- for (size_t i = 0; i != distances_from_diagonal.size(); ++i) {
- std::cerr << distances_from_diagonal[i] << " ";
- }
- std::cerr << std::endl << std::endl;
- getchar();
- }
-
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- std::vector<double> distancesFromI = distances[i];
- distancesFromI.push_back(distances_from_diagonal[i]);
-
- // sort it:
- std::sort(distancesFromI.begin(), distancesFromI.end(), std::greater<double>());
-
- if (k > distancesFromI.size()) {
- if (dbg) {
- std::cerr << "There are not enough neighbors in your set. We set the result to plus infty \n";
- }
- result.push_back(std::numeric_limits<double>::max());
- } else {
- if (distances_from_diagonal[i] > distancesFromI[k]) {
- if (dbg) {
- std::cerr << "The k-th n.n. is on a diagonal. Therefore we set up a distance to diagonal \n";
- }
- result.push_back(distances_from_diagonal[i]);
- } else {
- result.push_back(distancesFromI[k]);
- }
- }
- }
- std::sort(result.begin(), result.end(), std::greater<double>());
- result.resize(std::min(result.size(), where_to_cut));
-
- return result;
-}
-
-double Persistence_intervals::project_to_R(int number_of_function) const {
- double result = 0;
-
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- result +=
- (this->intervals[i].second - this->intervals[i].first) * (this->intervals[i].second - this->intervals[i].first);
- }
-
- return result;
-}
-
-} // namespace Persistence_representations
-} // namespace Gudhi
-
-#endif // PERSISTENCE_INTERVALS_H_
diff --git a/include/gudhi/Persistence_intervals_with_distances.h b/include/gudhi/Persistence_intervals_with_distances.h
deleted file mode 100644
index f48d1a3b..00000000
--- a/include/gudhi/Persistence_intervals_with_distances.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* This file is part of the Gudhi hiLibrary. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef PERSISTENCE_INTERVALS_WITH_DISTANCES_H_
-#define PERSISTENCE_INTERVALS_WITH_DISTANCES_H_
-
-#include <gudhi/Persistence_intervals.h>
-#include <gudhi/Bottleneck.h>
-
-#include <limits>
-
-namespace Gudhi {
-namespace Persistence_representations {
-
-class Persistence_intervals_with_distances : public Persistence_intervals {
- public:
- using Persistence_intervals::Persistence_intervals;
-
- /**
- *Computations of distance from the current persistnce diagram to the persistence diagram given as a parameter of this
- *function.
- *The last but one parameter, power, is here in case we would like to compute p=th Wasserstein distance. At the
- *moment, this method only implement Bottleneck distance,
- * which is infinity Wasserstein distance. Therefore any power which is not the default std::numeric_limits< double
- *>::max() will be ignored and an
- * exception will be thrown.
- * The last parameter, tolerance, it is an additiv error of the approimation, set by default to zero.
- **/
- double distance(const Persistence_intervals_with_distances& second, double power = std::numeric_limits<double>::max(),
- double tolerance = (std::numeric_limits<double>::min)()) const {
- if (power >= std::numeric_limits<double>::max()) {
- return Gudhi::persistence_diagram::bottleneck_distance(this->intervals, second.intervals, tolerance);
- } else {
- std::cerr << "At the moment Gudhi do not support Wasserstein distances. We only support Bottleneck distance."
- << std::endl;
- throw "At the moment Gudhi do not support Wasserstein distances. We only support Bottleneck distance.";
- }
- }
-};
-
-} // namespace Persistence_representations
-} // namespace Gudhi
-
-#endif // PERSISTENCE_INTERVALS_WITH_DISTANCES_H_
diff --git a/include/gudhi/Persistence_landscape.h b/include/gudhi/Persistence_landscape.h
deleted file mode 100644
index 9cab0166..00000000
--- a/include/gudhi/Persistence_landscape.h
+++ /dev/null
@@ -1,1383 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef PERSISTENCE_LANDSCAPE_H_
-#define PERSISTENCE_LANDSCAPE_H_
-
-// gudhi include
-#include <gudhi/read_persistence_from_file.h>
-#include <gudhi/common_persistence_representations.h>
-
-// standard include
-#include <cmath>
-#include <iostream>
-#include <vector>
-#include <limits>
-#include <fstream>
-#include <sstream>
-#include <algorithm>
-#include <string>
-#include <utility>
-#include <functional>
-
-namespace Gudhi {
-namespace Persistence_representations {
-
-// pre declaration
-class Persistence_landscape;
-template <typename operation>
-Persistence_landscape operation_on_pair_of_landscapes(const Persistence_landscape& land1,
- const Persistence_landscape& land2);
-
-/**
- * \class Persistence_landscape Persistence_landscape.h gudhi/Persistence_landscape.h
- * \brief A class implementing persistence landscapes data structures.
- *
- * \ingroup Persistence_representations
- *
- * \details
- * For theoretical description, please consult <i>Statistical topological data analysis using persistence
- * landscapes</i>\cite bubenik_landscapes_2015 , and for details of algorithms,
- * <i>A persistence landscapes toolbox for topological statistics</i>\cite bubenik_dlotko_landscapes_2016.
- *
- * Persistence landscapes allow vectorization, computations of distances, computations of projections to Real,
- * computations of averages and scalar products. Therefore they implement suitable interfaces.
- * It implements the following concepts: Vectorized_topological_data, Topological_data_with_distances,
- * Real_valued_topological_data, Topological_data_with_averages, Topological_data_with_scalar_product
- *
- * Note that at the moment, due to rounding errors during the construction of persistence landscapes, elements which
- * are different by 0.000005 are considered the same. If the scale in your persistence diagrams is comparable to this
- * value, please rescale them before use this code.
- *
-**/
-class Persistence_landscape {
- public:
- /**
- * Default constructor.
- **/
- Persistence_landscape() { this->set_up_numbers_of_functions_for_vectorization_and_projections_to_reals(); }
-
- /**
- * Constructor that takes as an input a vector of birth-death pairs.
- **/
- Persistence_landscape(const std::vector<std::pair<double, double> >& p,
- size_t number_of_levels = std::numeric_limits<size_t>::max());
-
- /**
- * Constructor that reads persistence intervals from file and creates persistence landscape. The format of the
- *input file is the following: in each line we put birth-death pair. Last line is assumed
- * to be empty. Even if the points within a line are not ordered, they will be ordered while the input is read.
- **/
- Persistence_landscape(const char* filename, size_t dimension = std::numeric_limits<unsigned>::max(),
- size_t number_of_levels = std::numeric_limits<size_t>::max());
-
- /**
- * This procedure loads a landscape from file. It erase all the data that was previously stored in this landscape.
- **/
- void load_landscape_from_file(const char* filename);
-
- /**
- * The procedure stores a landscape to a file. The file can be later used by a procedure load_landscape_from_file.
- **/
- void print_to_file(const char* filename) const;
-
- /**
- * This function compute integral of the landscape (defined formally as sum of integrals on R of all landscape
- *functions)
- **/
- double compute_integral_of_landscape() const;
-
- /**
- * This function compute integral of the 'level'-level of a landscape.
- **/
- double compute_integral_of_a_level_of_a_landscape(size_t level) const;
-
- /**
- * This function compute integral of the landscape p-th power of a landscape (defined formally as sum of integrals
- *on R of p-th powers of all landscape functions)
- **/
- double compute_integral_of_landscape(double p) const; // this function compute integral of p-th power of landscape.
-
- /**
- * A function that computes the value of a landscape at a given point. The parameters of the function are: unsigned
- *level and double x.
- * The procedure will compute the value of the level-landscape at the point x.
- **/
- double compute_value_at_a_given_point(unsigned level, double x) const;
-
- /**
- * Writing landscape into a stream. A i-th level landscape starts with a string "lambda_i". Then the discontinuity
- *points of the landscapes follows.
- * Shall those points be joined with lines, we will obtain the i-th landscape function.
- **/
- friend std::ostream& operator<<(std::ostream& out, Persistence_landscape& land);
-
- template <typename operation>
- friend Persistence_landscape operation_on_pair_of_landscapes(const Persistence_landscape& land1,
- const Persistence_landscape& land2);
-
- /**
- *\private A function that compute sum of two landscapes.
- **/
- friend Persistence_landscape add_two_landscapes(const Persistence_landscape& land1,
- const Persistence_landscape& land2) {
- return operation_on_pair_of_landscapes<std::plus<double> >(land1, land2);
- }
-
- /**
- *\private A function that compute difference of two landscapes.
- **/
- friend Persistence_landscape subtract_two_landscapes(const Persistence_landscape& land1,
- const Persistence_landscape& land2) {
- return operation_on_pair_of_landscapes<std::minus<double> >(land1, land2);
- }
-
- /**
- * An operator +, that compute sum of two landscapes.
- **/
- friend Persistence_landscape operator+(const Persistence_landscape& first, const Persistence_landscape& second) {
- return add_two_landscapes(first, second);
- }
-
- /**
- * An operator -, that compute difference of two landscapes.
- **/
- friend Persistence_landscape operator-(const Persistence_landscape& first, const Persistence_landscape& second) {
- return subtract_two_landscapes(first, second);
- }
-
- /**
- * An operator * that allows multiplication of a landscape by a real number.
- **/
- friend Persistence_landscape operator*(const Persistence_landscape& first, double con) {
- return first.multiply_lanscape_by_real_number_not_overwrite(con);
- }
-
- /**
- * An operator * that allows multiplication of a landscape by a real number (order of parameters swapped).
- **/
- friend Persistence_landscape operator*(double con, const Persistence_landscape& first) {
- return first.multiply_lanscape_by_real_number_not_overwrite(con);
- }
-
- /**
- * Operator +=. The second parameter is persistence landscape.
- **/
- Persistence_landscape operator+=(const Persistence_landscape& rhs) {
- *this = *this + rhs;
- return *this;
- }
-
- /**
- * Operator -=. The second parameter is a persistence landscape.
- **/
- Persistence_landscape operator-=(const Persistence_landscape& rhs) {
- *this = *this - rhs;
- return *this;
- }
-
- /**
- * Operator *=. The second parameter is a real number by which the y values of all landscape functions are multiplied.
- *The x-values remain unchanged.
- **/
- Persistence_landscape operator*=(double x) {
- *this = *this * x;
- return *this;
- }
-
- /**
- * Operator /=. The second parameter is a real number.
- **/
- Persistence_landscape operator/=(double x) {
- if (x == 0) throw("In operator /=, division by 0. Program terminated.");
- *this = *this * (1 / x);
- return *this;
- }
-
- /**
- * An operator to compare two persistence landscapes.
- **/
- bool operator==(const Persistence_landscape& rhs) const;
-
- /**
- * An operator to compare two persistence landscapes.
- **/
- bool operator!=(const Persistence_landscape& rhs) const { return !((*this) == rhs); }
-
- /**
- * Computations of maximum (y) value of landscape.
- **/
- double compute_maximum() const {
- double maxValue = 0;
- if (this->land.size()) {
- maxValue = -std::numeric_limits<int>::max();
- for (size_t i = 0; i != this->land[0].size(); ++i) {
- if (this->land[0][i].second > maxValue) maxValue = this->land[0][i].second;
- }
- }
- return maxValue;
- }
-
- /**
- *\private Computations of minimum (y) value of landscape.
- **/
- double compute_minimum() const {
- double minValue = 0;
- if (this->land.size()) {
- minValue = std::numeric_limits<int>::max();
- for (size_t i = 0; i != this->land[0].size(); ++i) {
- if (this->land[0][i].second < minValue) minValue = this->land[0][i].second;
- }
- }
- return minValue;
- }
-
- /**
- *\private Computations of a \f$L^i\f$ norm of landscape, where i is the input parameter.
- **/
- double compute_norm_of_landscape(double i) {
- Persistence_landscape l;
- if (i < std::numeric_limits<double>::max()) {
- return compute_distance_of_landscapes(*this, l, i);
- } else {
- return compute_max_norm_distance_of_landscapes(*this, l);
- }
- }
-
- /**
- * An operator to compute the value of a landscape in the level 'level' at the argument 'x'.
- **/
- double operator()(unsigned level, double x) const { return this->compute_value_at_a_given_point(level, x); }
-
- /**
- *\private Computations of \f$L^{\infty}\f$ distance between two landscapes.
- **/
- friend double compute_max_norm_distance_of_landscapes(const Persistence_landscape& first,
- const Persistence_landscape& second);
-
- /**
- *\private Computations of \f$L^{p}\f$ distance between two landscapes. p is the parameter of the procedure.
- **/
- friend double compute_distance_of_landscapes(const Persistence_landscape& first, const Persistence_landscape& second,
- double p);
-
- /**
- * Function to compute absolute value of a PL function. The representation of persistence landscapes allow to store
- *general PL-function. When computing distance between two landscapes, we compute difference between
- * them. In this case, a general PL-function with negative value can appear as a result. Then in order to compute
- *distance, we need to take its absolute value. This is the purpose of this procedure.
- **/
- Persistence_landscape abs();
-
- Persistence_landscape* new_abs();
-
- /**
- * Computes the number of landscape functions.
- **/
- size_t size() const { return this->land.size(); }
-
- /**
- * Compute maximal value of lambda-level landscape.
- **/
- double find_max(unsigned lambda) const;
-
- /**
- *\private Function to compute inner (scalar) product of two landscapes.
- **/
- friend double compute_inner_product(const Persistence_landscape& l1, const Persistence_landscape& l2);
-
- // Implementations of functions for various concepts.
-
- /**
- * The number of projections to R is defined to the number of nonzero landscape functions. I-th projection is an
- *integral of i-th landscape function over whole R.
- * This function is required by the Real_valued_topological_data concept.
- * At the moment this function is not tested, since it is quite likely to be changed in the future. Given this, when
- *using it, keep in mind that it
- * will be most likely changed in the next versions.
- **/
- double project_to_R(int number_of_function) const {
- return this->compute_integral_of_a_level_of_a_landscape((size_t)number_of_function);
- }
-
- /**
- * The function gives the number of possible projections to R. This function is required by the
- *Real_valued_topological_data concept.
- **/
- size_t number_of_projections_to_R() const { return this->number_of_functions_for_projections_to_reals; }
-
- /**
- * This function produce a vector of doubles based on a landscape. It is required in a concept
- * Vectorized_topological_data
- */
- std::vector<double> vectorize(int number_of_function) const {
- // TODO(PD) think of something smarter over here
- std::vector<double> v;
- if ((size_t)number_of_function > this->land.size()) {
- return v;
- }
- v.reserve(this->land[number_of_function].size());
- for (size_t i = 0; i != this->land[number_of_function].size(); ++i) {
- v.push_back(this->land[number_of_function][i].second);
- }
- return v;
- }
- /**
- * This function return the number of functions that allows vectorization of persistence landscape. It is required in
- *a concept Vectorized_topological_data.
- **/
- size_t number_of_vectorize_functions() const { return this->number_of_functions_for_vectorization; }
-
- /**
- * A function to compute averaged persistence landscape, based on vector of persistence landscapes.
- * This function is required by Topological_data_with_averages concept.
- **/
- void compute_average(const std::vector<Persistence_landscape*>& to_average) {
- bool dbg = false;
-
- if (dbg) {
- std::cerr << "to_average.size() : " << to_average.size() << std::endl;
- }
-
- std::vector<Persistence_landscape*> nextLevelMerge(to_average.size());
- for (size_t i = 0; i != to_average.size(); ++i) {
- nextLevelMerge[i] = to_average[i];
- }
- bool is_this_first_level = true; // in the loop, we will create dynamically a number of intermediate complexes. We
- // have to clean that up, but we cannot erase the initial landscapes we have
- // to average. In this case, we simply check if the nextLevelMerge are the input landscapes or the ones created in
- // that loop by using this extra variable.
-
- while (nextLevelMerge.size() != 1) {
- if (dbg) {
- std::cerr << "nextLevelMerge.size() : " << nextLevelMerge.size() << std::endl;
- }
- std::vector<Persistence_landscape*> nextNextLevelMerge;
- nextNextLevelMerge.reserve(to_average.size());
- for (size_t i = 0; i < nextLevelMerge.size(); i = i + 2) {
- if (dbg) {
- std::cerr << "i : " << i << std::endl;
- }
- Persistence_landscape* l = new Persistence_landscape;
- if (i + 1 != nextLevelMerge.size()) {
- (*l) = (*nextLevelMerge[i]) + (*nextLevelMerge[i + 1]);
- } else {
- (*l) = *nextLevelMerge[i];
- }
- nextNextLevelMerge.push_back(l);
- }
- if (dbg) {
- std::cerr << "After this iteration \n";
- getchar();
- }
-
- if (!is_this_first_level) {
- // deallocate the memory if the vector nextLevelMerge do not consist of the initial landscapes
- for (size_t i = 0; i != nextLevelMerge.size(); ++i) {
- delete nextLevelMerge[i];
- }
- }
- is_this_first_level = false;
- nextLevelMerge.swap(nextNextLevelMerge);
- }
- (*this) = (*nextLevelMerge[0]);
- (*this) *= 1 / static_cast<double>(to_average.size());
- }
-
- /**
- * A function to compute distance between persistence landscape.
- * The parameter of this function is a Persistence_landscape.
- * This function is required in Topological_data_with_distances concept.
- * For max norm distance, set power to std::numeric_limits<double>::max()
- **/
- double distance(const Persistence_landscape& second, double power = 1) const {
- if (power < std::numeric_limits<double>::max()) {
- return compute_distance_of_landscapes(*this, second, power);
- } else {
- return compute_max_norm_distance_of_landscapes(*this, second);
- }
- }
-
- /**
- * A function to compute scalar product of persistence landscapes.
- * The parameter of this function is a Persistence_landscape.
- * This function is required in Topological_data_with_scalar_product concept.
- **/
- double compute_scalar_product(const Persistence_landscape& second) const {
- return compute_inner_product((*this), second);
- }
- // end of implementation of functions needed for concepts.
-
- /**
- * This procedure returns y-range of a given level persistence landscape. If a default value is used, the y-range
- * of 0th level landscape is given (and this range contains the ranges of all other landscapes).
- **/
- std::pair<double, double> get_y_range(size_t level = 0) const {
- std::pair<double, double> result;
- if (level < this->land.size()) {
- double maxx = this->compute_maximum();
- double minn = this->compute_minimum();
- result = std::make_pair(minn, maxx);
- } else {
- result = std::make_pair(0, 0);
- }
- return result;
- }
-
- // a function used to create a gnuplot script for visualization of landscapes
- void plot(const char* filename, double xRangeBegin = std::numeric_limits<double>::max(),
- double xRangeEnd = std::numeric_limits<double>::max(),
- double yRangeBegin = std::numeric_limits<double>::max(),
- double yRangeEnd = std::numeric_limits<double>::max(), int from = std::numeric_limits<int>::max(),
- int to = std::numeric_limits<int>::max());
-
- protected:
- std::vector<std::vector<std::pair<double, double> > > land;
- size_t number_of_functions_for_vectorization;
- size_t number_of_functions_for_projections_to_reals;
-
- void construct_persistence_landscape_from_barcode(const std::vector<std::pair<double, double> >& p,
- size_t number_of_levels = std::numeric_limits<size_t>::max());
- Persistence_landscape multiply_lanscape_by_real_number_not_overwrite(double x) const;
- void multiply_lanscape_by_real_number_overwrite(double x);
- friend double compute_maximal_distance_non_symmetric(const Persistence_landscape& pl1,
- const Persistence_landscape& pl2);
-
- void set_up_numbers_of_functions_for_vectorization_and_projections_to_reals() {
- // warning, this function can be only called after filling in the intervals vector.
- this->number_of_functions_for_vectorization = this->land.size();
- this->number_of_functions_for_projections_to_reals = this->land.size();
- }
-};
-
-Persistence_landscape::Persistence_landscape(const char* filename, size_t dimension, size_t number_of_levels) {
- std::vector<std::pair<double, double> > barcode;
- if (dimension < std::numeric_limits<double>::max()) {
- barcode = read_persistence_intervals_in_one_dimension_from_file(filename, dimension);
- } else {
- barcode = read_persistence_intervals_in_one_dimension_from_file(filename);
- }
- this->construct_persistence_landscape_from_barcode(barcode, number_of_levels);
- this->set_up_numbers_of_functions_for_vectorization_and_projections_to_reals();
-}
-
-bool operatorEqualDbg = false;
-bool Persistence_landscape::operator==(const Persistence_landscape& rhs) const {
- if (this->land.size() != rhs.land.size()) {
- if (operatorEqualDbg) std::cerr << "1\n";
- return false;
- }
- for (size_t level = 0; level != this->land.size(); ++level) {
- if (this->land[level].size() != rhs.land[level].size()) {
- if (operatorEqualDbg) std::cerr << "this->land[level].size() : " << this->land[level].size() << "\n";
- if (operatorEqualDbg) std::cerr << "rhs.land[level].size() : " << rhs.land[level].size() << "\n";
- if (operatorEqualDbg) std::cerr << "2\n";
- return false;
- }
- for (size_t i = 0; i != this->land[level].size(); ++i) {
- if (!(almost_equal(this->land[level][i].first, rhs.land[level][i].first) &&
- almost_equal(this->land[level][i].second, rhs.land[level][i].second))) {
- if (operatorEqualDbg)
- std::cerr << "this->land[level][i] : " << this->land[level][i].first << " " << this->land[level][i].second
- << "\n";
- if (operatorEqualDbg)
- std::cerr << "rhs.land[level][i] : " << rhs.land[level][i].first << " " << rhs.land[level][i].second << "\n";
- if (operatorEqualDbg) std::cerr << "3\n";
- return false;
- }
- }
- }
- return true;
-}
-
-Persistence_landscape::Persistence_landscape(const std::vector<std::pair<double, double> >& p,
- size_t number_of_levels) {
- this->construct_persistence_landscape_from_barcode(p, number_of_levels);
- this->set_up_numbers_of_functions_for_vectorization_and_projections_to_reals();
-}
-
-void Persistence_landscape::construct_persistence_landscape_from_barcode(
- const std::vector<std::pair<double, double> >& p, size_t number_of_levels) {
- bool dbg = false;
- if (dbg) {
- std::cerr << "Persistence_landscape::Persistence_landscape( const std::vector< std::pair< double , double > >& p )"
- << std::endl;
- }
-
- // this is a general algorithm to construct persistence landscapes.
- std::vector<std::pair<double, double> > bars;
- bars.insert(bars.begin(), p.begin(), p.end());
- std::sort(bars.begin(), bars.end(), compare_points_sorting);
-
- if (dbg) {
- std::cerr << "Bars : \n";
- for (size_t i = 0; i != bars.size(); ++i) {
- std::cerr << bars[i].first << " " << bars[i].second << "\n";
- }
- getchar();
- }
-
- std::vector<std::pair<double, double> > characteristicPoints(p.size());
- for (size_t i = 0; i != bars.size(); ++i) {
- characteristicPoints[i] =
- std::make_pair((bars[i].first + bars[i].second) / 2.0, (bars[i].second - bars[i].first) / 2.0);
- }
- std::vector<std::vector<std::pair<double, double> > > Persistence_landscape;
- size_t number_of_levels_in_the_landscape = 0;
- while (!characteristicPoints.empty()) {
- if (dbg) {
- for (size_t i = 0; i != characteristicPoints.size(); ++i) {
- std::cout << "(" << characteristicPoints[i].first << " " << characteristicPoints[i].second << ")\n";
- }
- std::cin.ignore();
- }
-
- std::vector<std::pair<double, double> > lambda_n;
- lambda_n.push_back(std::make_pair(-std::numeric_limits<int>::max(), 0));
- lambda_n.push_back(std::make_pair(minus_length(characteristicPoints[0]), 0));
- lambda_n.push_back(characteristicPoints[0]);
-
- if (dbg) {
- std::cerr << "1 Adding to lambda_n : (" << -std::numeric_limits<int>::max() << " " << 0 << ") , ("
- << minus_length(characteristicPoints[0]) << " " << 0 << ") , (" << characteristicPoints[0].first << " "
- << characteristicPoints[0].second << ") \n";
- }
-
- size_t i = 1;
- std::vector<std::pair<double, double> > newCharacteristicPoints;
- while (i < characteristicPoints.size()) {
- size_t p = 1;
- if ((minus_length(characteristicPoints[i]) >= minus_length(lambda_n[lambda_n.size() - 1])) &&
- (birth_plus_deaths(characteristicPoints[i]) > birth_plus_deaths(lambda_n[lambda_n.size() - 1]))) {
- if (minus_length(characteristicPoints[i]) < birth_plus_deaths(lambda_n[lambda_n.size() - 1])) {
- std::pair<double, double> point = std::make_pair(
- (minus_length(characteristicPoints[i]) + birth_plus_deaths(lambda_n[lambda_n.size() - 1])) / 2,
- (birth_plus_deaths(lambda_n[lambda_n.size() - 1]) - minus_length(characteristicPoints[i])) / 2);
- lambda_n.push_back(point);
- if (dbg) {
- std::cerr << "2 Adding to lambda_n : (" << point.first << " " << point.second << ")\n";
- }
-
- if (dbg) {
- std::cerr << "characteristicPoints[i+p] : " << characteristicPoints[i + p].first << " "
- << characteristicPoints[i + p].second << "\n";
- std::cerr << "point : " << point.first << " " << point.second << "\n";
- getchar();
- }
-
- while ((i + p < characteristicPoints.size()) &&
- (almost_equal(minus_length(point), minus_length(characteristicPoints[i + p]))) &&
- (birth_plus_deaths(point) <= birth_plus_deaths(characteristicPoints[i + p]))) {
- newCharacteristicPoints.push_back(characteristicPoints[i + p]);
- if (dbg) {
- std::cerr << "3.5 Adding to newCharacteristicPoints : (" << characteristicPoints[i + p].first << " "
- << characteristicPoints[i + p].second << ")\n";
- getchar();
- }
- ++p;
- }
-
- newCharacteristicPoints.push_back(point);
- if (dbg) {
- std::cerr << "4 Adding to newCharacteristicPoints : (" << point.first << " " << point.second << ")\n";
- }
-
- while ((i + p < characteristicPoints.size()) &&
- (minus_length(point) <= minus_length(characteristicPoints[i + p])) &&
- (birth_plus_deaths(point) >= birth_plus_deaths(characteristicPoints[i + p]))) {
- newCharacteristicPoints.push_back(characteristicPoints[i + p]);
- if (dbg) {
- std::cerr << "characteristicPoints[i+p] : " << characteristicPoints[i + p].first << " "
- << characteristicPoints[i + p].second << "\n";
- std::cerr << "point : " << point.first << " " << point.second << "\n";
- std::cerr << "characteristicPoints[i+p] birth and death : " << minus_length(characteristicPoints[i + p])
- << " , " << birth_plus_deaths(characteristicPoints[i + p]) << "\n";
- std::cerr << "point birth and death : " << minus_length(point) << " , " << birth_plus_deaths(point)
- << "\n";
-
- std::cerr << "3 Adding to newCharacteristicPoints : (" << characteristicPoints[i + p].first << " "
- << characteristicPoints[i + p].second << ")\n";
- getchar();
- }
- ++p;
- }
-
- } else {
- lambda_n.push_back(std::make_pair(birth_plus_deaths(lambda_n[lambda_n.size() - 1]), 0));
- lambda_n.push_back(std::make_pair(minus_length(characteristicPoints[i]), 0));
- if (dbg) {
- std::cerr << "5 Adding to lambda_n : (" << birth_plus_deaths(lambda_n[lambda_n.size() - 1]) << " " << 0
- << ")\n";
- std::cerr << "5 Adding to lambda_n : (" << minus_length(characteristicPoints[i]) << " " << 0 << ")\n";
- }
- }
- lambda_n.push_back(characteristicPoints[i]);
- if (dbg) {
- std::cerr << "6 Adding to lambda_n : (" << characteristicPoints[i].first << " "
- << characteristicPoints[i].second << ")\n";
- }
- } else {
- newCharacteristicPoints.push_back(characteristicPoints[i]);
- if (dbg) {
- std::cerr << "7 Adding to newCharacteristicPoints : (" << characteristicPoints[i].first << " "
- << characteristicPoints[i].second << ")\n";
- }
- }
- i = i + p;
- }
- lambda_n.push_back(std::make_pair(birth_plus_deaths(lambda_n[lambda_n.size() - 1]), 0));
- lambda_n.push_back(std::make_pair(std::numeric_limits<int>::max(), 0));
-
- characteristicPoints = newCharacteristicPoints;
-
- lambda_n.erase(std::unique(lambda_n.begin(), lambda_n.end()), lambda_n.end());
- this->land.push_back(lambda_n);
-
- ++number_of_levels_in_the_landscape;
- if (number_of_levels == number_of_levels_in_the_landscape) {
- break;
- }
- }
-}
-
-// this function find maximum of lambda_n
-double Persistence_landscape::find_max(unsigned lambda) const {
- if (this->land.size() < lambda) return 0;
- double maximum = -std::numeric_limits<int>::max();
- for (size_t i = 0; i != this->land[lambda].size(); ++i) {
- if (this->land[lambda][i].second > maximum) maximum = this->land[lambda][i].second;
- }
- return maximum;
-}
-
-double Persistence_landscape::compute_integral_of_landscape() const {
- double result = 0;
- for (size_t i = 0; i != this->land.size(); ++i) {
- for (size_t nr = 2; nr != this->land[i].size() - 1; ++nr) {
- // it suffices to compute every planar integral and then sum them up for each lambda_n
- result += 0.5 * (this->land[i][nr].first - this->land[i][nr - 1].first) *
- (this->land[i][nr].second + this->land[i][nr - 1].second);
- }
- }
- return result;
-}
-
-double Persistence_landscape::compute_integral_of_a_level_of_a_landscape(size_t level) const {
- double result = 0;
- if (level >= this->land.size()) {
- // this landscape function is constantly equal 0, so is the integral.
- return result;
- }
- // also negative landscapes are assumed to be zero.
- if (level < 0) return 0;
-
- for (size_t nr = 2; nr != this->land[level].size() - 1; ++nr) {
- // it suffices to compute every planar integral and then sum them up for each lambda_n
- result += 0.5 * (this->land[level][nr].first - this->land[level][nr - 1].first) *
- (this->land[level][nr].second + this->land[level][nr - 1].second);
- }
-
- return result;
-}
-
-double Persistence_landscape::compute_integral_of_landscape(double p) const {
- bool dbg = false;
- double result = 0;
- for (size_t i = 0; i != this->land.size(); ++i) {
- for (size_t nr = 2; nr != this->land[i].size() - 1; ++nr) {
- if (dbg) std::cout << "nr : " << nr << "\n";
- // In this interval, the landscape has a form f(x) = ax+b. We want to compute integral of (ax+b)^p = 1/a *
- // (ax+b)^{p+1}/(p+1)
- std::pair<double, double> coef = compute_parameters_of_a_line(this->land[i][nr], this->land[i][nr - 1]);
- double a = coef.first;
- double b = coef.second;
-
- if (dbg)
- std::cout << "(" << this->land[i][nr].first << "," << this->land[i][nr].second << ") , "
- << this->land[i][nr - 1].first << "," << this->land[i][nr].second << ")" << std::endl;
- if (this->land[i][nr].first == this->land[i][nr - 1].first) continue;
- if (a != 0) {
- result += 1 / (a * (p + 1)) *
- (pow((a * this->land[i][nr].first + b), p + 1) - pow((a * this->land[i][nr - 1].first + b), p + 1));
- } else {
- result += (this->land[i][nr].first - this->land[i][nr - 1].first) * (pow(this->land[i][nr].second, p));
- }
- if (dbg) {
- std::cout << "a : " << a << " , b : " << b << std::endl;
- std::cout << "result : " << result << std::endl;
- }
- }
- }
- return result;
-}
-
-// this is O(log(n)) algorithm, where n is number of points in this->land.
-double Persistence_landscape::compute_value_at_a_given_point(unsigned level, double x) const {
- bool compute_value_at_a_given_pointDbg = false;
- // in such a case lambda_level = 0.
- if (level >= this->land.size()) return 0;
-
- // we know that the points in this->land[level] are ordered according to x coordinate. Therefore, we can find the
- // point by using bisection:
- unsigned coordBegin = 1;
- unsigned coordEnd = this->land[level].size() - 2;
-
- if (compute_value_at_a_given_pointDbg) {
- std::cerr << "Here \n";
- std::cerr << "x : " << x << "\n";
- std::cerr << "this->land[level][coordBegin].first : " << this->land[level][coordBegin].first << "\n";
- std::cerr << "this->land[level][coordEnd].first : " << this->land[level][coordEnd].first << "\n";
- }
-
- // in this case x is outside the support of the landscape, therefore the value of the landscape is 0.
- if (x <= this->land[level][coordBegin].first) return 0;
- if (x >= this->land[level][coordEnd].first) return 0;
-
- if (compute_value_at_a_given_pointDbg) std::cerr << "Entering to the while loop \n";
-
- while (coordBegin + 1 != coordEnd) {
- if (compute_value_at_a_given_pointDbg) {
- std::cerr << "coordBegin : " << coordBegin << "\n";
- std::cerr << "coordEnd : " << coordEnd << "\n";
- std::cerr << "this->land[level][coordBegin].first : " << this->land[level][coordBegin].first << "\n";
- std::cerr << "this->land[level][coordEnd].first : " << this->land[level][coordEnd].first << "\n";
- }
-
- unsigned newCord = (unsigned)floor((coordEnd + coordBegin) / 2.0);
-
- if (compute_value_at_a_given_pointDbg) {
- std::cerr << "newCord : " << newCord << "\n";
- std::cerr << "this->land[level][newCord].first : " << this->land[level][newCord].first << "\n";
- std::cin.ignore();
- }
-
- if (this->land[level][newCord].first <= x) {
- coordBegin = newCord;
- if (this->land[level][newCord].first == x) return this->land[level][newCord].second;
- } else {
- coordEnd = newCord;
- }
- }
-
- if (compute_value_at_a_given_pointDbg) {
- std::cout << "x : " << x << " is between : " << this->land[level][coordBegin].first << " a "
- << this->land[level][coordEnd].first << "\n";
- std::cout << "the y coords are : " << this->land[level][coordBegin].second << " a "
- << this->land[level][coordEnd].second << "\n";
- std::cerr << "coordBegin : " << coordBegin << "\n";
- std::cerr << "coordEnd : " << coordEnd << "\n";
- std::cin.ignore();
- }
- return function_value(this->land[level][coordBegin], this->land[level][coordEnd], x);
-}
-
-std::ostream& operator<<(std::ostream& out, Persistence_landscape& land) {
- for (size_t level = 0; level != land.land.size(); ++level) {
- out << "Lambda_" << level << ":" << std::endl;
- for (size_t i = 0; i != land.land[level].size(); ++i) {
- if (land.land[level][i].first == -std::numeric_limits<int>::max()) {
- out << "-inf";
- } else {
- if (land.land[level][i].first == std::numeric_limits<int>::max()) {
- out << "+inf";
- } else {
- out << land.land[level][i].first;
- }
- }
- out << " , " << land.land[level][i].second << std::endl;
- }
- }
- return out;
-}
-
-void Persistence_landscape::multiply_lanscape_by_real_number_overwrite(double x) {
- for (size_t dim = 0; dim != this->land.size(); ++dim) {
- for (size_t i = 0; i != this->land[dim].size(); ++i) {
- this->land[dim][i].second *= x;
- }
- }
-}
-
-bool AbsDbg = false;
-Persistence_landscape Persistence_landscape::abs() {
- Persistence_landscape result;
- for (size_t level = 0; level != this->land.size(); ++level) {
- if (AbsDbg) {
- std::cout << "level: " << level << std::endl;
- }
- std::vector<std::pair<double, double> > lambda_n;
- lambda_n.push_back(std::make_pair(-std::numeric_limits<int>::max(), 0));
- for (size_t i = 1; i != this->land[level].size(); ++i) {
- if (AbsDbg) {
- std::cout << "this->land[" << level << "][" << i << "] : " << this->land[level][i].first << " "
- << this->land[level][i].second << std::endl;
- }
- // if a line segment between this->land[level][i-1] and this->land[level][i] crosses the x-axis, then we have to
- // add one landscape point t o result
- if ((this->land[level][i - 1].second) * (this->land[level][i].second) < 0) {
- double zero =
- find_zero_of_a_line_segment_between_those_two_points(this->land[level][i - 1], this->land[level][i]);
-
- lambda_n.push_back(std::make_pair(zero, 0));
- lambda_n.push_back(std::make_pair(this->land[level][i].first, fabs(this->land[level][i].second)));
- if (AbsDbg) {
- std::cout << "Adding pair : (" << zero << ",0)" << std::endl;
- std::cout << "In the same step adding pair : (" << this->land[level][i].first << ","
- << fabs(this->land[level][i].second) << ") " << std::endl;
- std::cin.ignore();
- }
- } else {
- lambda_n.push_back(std::make_pair(this->land[level][i].first, fabs(this->land[level][i].second)));
- if (AbsDbg) {
- std::cout << "Adding pair : (" << this->land[level][i].first << "," << fabs(this->land[level][i].second)
- << ") " << std::endl;
- std::cin.ignore();
- }
- }
- }
- result.land.push_back(lambda_n);
- }
- return result;
-}
-
-Persistence_landscape* Persistence_landscape::new_abs() {
- Persistence_landscape* result = new Persistence_landscape(*this);
- for (size_t level = 0; level != this->land.size(); ++level) {
- if (AbsDbg) {
- std::cout << "level: " << level << std::endl;
- }
- std::vector<std::pair<double, double> > lambda_n;
- lambda_n.push_back(std::make_pair(-std::numeric_limits<int>::max(), 0));
- for (size_t i = 1; i != this->land[level].size(); ++i) {
- if (AbsDbg) {
- std::cout << "this->land[" << level << "][" << i << "] : " << this->land[level][i].first << " "
- << this->land[level][i].second << std::endl;
- }
- // if a line segment between this->land[level][i-1] and this->land[level][i] crosses the x-axis, then we have to
- // add one landscape point t o result
- if ((this->land[level][i - 1].second) * (this->land[level][i].second) < 0) {
- double zero =
- find_zero_of_a_line_segment_between_those_two_points(this->land[level][i - 1], this->land[level][i]);
-
- lambda_n.push_back(std::make_pair(zero, 0));
- lambda_n.push_back(std::make_pair(this->land[level][i].first, fabs(this->land[level][i].second)));
- if (AbsDbg) {
- std::cout << "Adding pair : (" << zero << ",0)" << std::endl;
- std::cout << "In the same step adding pair : (" << this->land[level][i].first << ","
- << fabs(this->land[level][i].second) << ") " << std::endl;
- std::cin.ignore();
- }
- } else {
- lambda_n.push_back(std::make_pair(this->land[level][i].first, fabs(this->land[level][i].second)));
- if (AbsDbg) {
- std::cout << "Adding pair : (" << this->land[level][i].first << "," << fabs(this->land[level][i].second)
- << ") " << std::endl;
- std::cin.ignore();
- }
- }
- }
- result->land.push_back(lambda_n);
- }
- return result;
-}
-
-Persistence_landscape Persistence_landscape::multiply_lanscape_by_real_number_not_overwrite(double x) const {
- std::vector<std::vector<std::pair<double, double> > > result(this->land.size());
- for (size_t dim = 0; dim != this->land.size(); ++dim) {
- std::vector<std::pair<double, double> > lambda_dim(this->land[dim].size());
- for (size_t i = 0; i != this->land[dim].size(); ++i) {
- lambda_dim[i] = std::make_pair(this->land[dim][i].first, x * this->land[dim][i].second);
- }
- result[dim] = lambda_dim;
- }
- Persistence_landscape res;
- // CHANGE
- // res.land = result;
- res.land.swap(result);
- return res;
-} // multiply_lanscape_by_real_number_overwrite
-
-void Persistence_landscape::print_to_file(const char* filename) const {
- std::ofstream write;
- write.open(filename);
- for (size_t dim = 0; dim != this->land.size(); ++dim) {
- write << "#lambda_" << dim << std::endl;
- for (size_t i = 1; i != this->land[dim].size() - 1; ++i) {
- write << this->land[dim][i].first << " " << this->land[dim][i].second << std::endl;
- }
- }
- write.close();
-}
-
-void Persistence_landscape::load_landscape_from_file(const char* filename) {
- bool dbg = false;
- // removing the current content of the persistence landscape.
- this->land.clear();
-
- // this constructor reads persistence landscape form a file. This file have to be created by this software before head
- std::ifstream in;
- in.open(filename);
- if (!in.good()) {
- std::cerr << "The file : " << filename << " do not exist. The program will now terminate \n";
- throw "The persistence landscape file do not exist. The program will now terminate \n";
- }
-
- std::string line;
- std::vector<std::pair<double, double> > landscapeAtThisLevel;
-
- bool isThisAFirsLine = true;
- while (in.good()) {
- getline(in, line);
- if (!(line.length() == 0 || line[0] == '#')) {
- std::stringstream lineSS;
- lineSS << line;
- double beginn, endd;
- lineSS >> beginn;
- lineSS >> endd;
- landscapeAtThisLevel.push_back(std::make_pair(beginn, endd));
- if (dbg) {
- std::cerr << "Reading a point : " << beginn << " , " << endd << std::endl;
- }
- } else {
- if (dbg) {
- std::cout << "IGNORE LINE\n";
- getchar();
- }
- if (!isThisAFirsLine) {
- landscapeAtThisLevel.push_back(std::make_pair(std::numeric_limits<int>::max(), 0));
- this->land.push_back(landscapeAtThisLevel);
- std::vector<std::pair<double, double> > newLevelOdLandscape;
- landscapeAtThisLevel.swap(newLevelOdLandscape);
- }
- landscapeAtThisLevel.push_back(std::make_pair(-std::numeric_limits<int>::max(), 0));
- isThisAFirsLine = false;
- }
- }
- if (landscapeAtThisLevel.size() > 1) {
- // seems that the last line of the file is not finished with the newline sign. We need to put what we have in
- // landscapeAtThisLevel to the constructed landscape.
- landscapeAtThisLevel.push_back(std::make_pair(std::numeric_limits<int>::max(), 0));
- this->land.push_back(landscapeAtThisLevel);
- }
-
- in.close();
-}
-
-template <typename T>
-Persistence_landscape operation_on_pair_of_landscapes(const Persistence_landscape& land1,
- const Persistence_landscape& land2) {
- bool operation_on_pair_of_landscapesDBG = false;
- if (operation_on_pair_of_landscapesDBG) {
- std::cout << "operation_on_pair_of_landscapes\n";
- std::cin.ignore();
- }
- Persistence_landscape result;
- std::vector<std::vector<std::pair<double, double> > > land(std::max(land1.land.size(), land2.land.size()));
- result.land = land;
- T oper;
-
- if (operation_on_pair_of_landscapesDBG) {
- for (size_t i = 0; i != std::min(land1.land.size(), land2.land.size()); ++i) {
- std::cerr << "land1.land[" << i << "].size() : " << land1.land[i].size() << std::endl;
- std::cerr << "land2.land[" << i << "].size() : " << land2.land[i].size() << std::endl;
- }
- getchar();
- }
-
- for (size_t i = 0; i != std::min(land1.land.size(), land2.land.size()); ++i) {
- std::vector<std::pair<double, double> > lambda_n;
- size_t p = 0;
- size_t q = 0;
- while ((p + 1 < land1.land[i].size()) && (q + 1 < land2.land[i].size())) {
- if (operation_on_pair_of_landscapesDBG) {
- std::cerr << "p : " << p << "\n";
- std::cerr << "q : " << q << "\n";
- std::cerr << "land1.land.size() : " << land1.land.size() << std::endl;
- std::cerr << "land2.land.size() : " << land2.land.size() << std::endl;
- std::cerr << "land1.land[" << i << "].size() : " << land1.land[i].size() << std::endl;
- std::cerr << "land2.land[" << i << "].size() : " << land2.land[i].size() << std::endl;
- std::cout << "land1.land[i][p].first : " << land1.land[i][p].first << "\n";
- std::cout << "land2.land[i][q].first : " << land2.land[i][q].first << "\n";
- }
-
- if (land1.land[i][p].first < land2.land[i][q].first) {
- if (operation_on_pair_of_landscapesDBG) {
- std::cout << "first \n";
- std::cout << " function_value(land2.land[i][q-1],land2.land[i][q],land1.land[i][p].first) : "
- << function_value(land2.land[i][q - 1], land2.land[i][q], land1.land[i][p].first) << "\n";
- }
- lambda_n.push_back(
- std::make_pair(land1.land[i][p].first,
- oper(static_cast<double>(land1.land[i][p].second),
- function_value(land2.land[i][q - 1], land2.land[i][q], land1.land[i][p].first))));
- ++p;
- continue;
- }
- if (land1.land[i][p].first > land2.land[i][q].first) {
- if (operation_on_pair_of_landscapesDBG) {
- std::cout << "Second \n";
- std::cout << "function_value(" << land1.land[i][p - 1].first << " " << land1.land[i][p - 1].second << " ,"
- << land1.land[i][p].first << " " << land1.land[i][p].second << ", " << land2.land[i][q].first
- << " ) : " << function_value(land1.land[i][p - 1], land1.land[i][p - 1], land2.land[i][q].first)
- << "\n";
- std::cout << "oper( " << function_value(land1.land[i][p], land1.land[i][p - 1], land2.land[i][q].first) << ","
- << land2.land[i][q].second << " : "
- << oper(land2.land[i][q].second,
- function_value(land1.land[i][p], land1.land[i][p - 1], land2.land[i][q].first))
- << "\n";
- }
- lambda_n.push_back(std::make_pair(
- land2.land[i][q].first, oper(function_value(land1.land[i][p], land1.land[i][p - 1], land2.land[i][q].first),
- land2.land[i][q].second)));
- ++q;
- continue;
- }
- if (land1.land[i][p].first == land2.land[i][q].first) {
- if (operation_on_pair_of_landscapesDBG) std::cout << "Third \n";
- lambda_n.push_back(
- std::make_pair(land2.land[i][q].first, oper(land1.land[i][p].second, land2.land[i][q].second)));
- ++p;
- ++q;
- }
- if (operation_on_pair_of_landscapesDBG) {
- std::cout << "Next iteration \n";
- }
- }
- while ((p + 1 < land1.land[i].size()) && (q + 1 >= land2.land[i].size())) {
- if (operation_on_pair_of_landscapesDBG) {
- std::cout << "New point : " << land1.land[i][p].first
- << " oper(land1.land[i][p].second,0) : " << oper(land1.land[i][p].second, 0) << std::endl;
- }
- lambda_n.push_back(std::make_pair(land1.land[i][p].first, oper(land1.land[i][p].second, 0)));
- ++p;
- }
- while ((p + 1 >= land1.land[i].size()) && (q + 1 < land2.land[i].size())) {
- if (operation_on_pair_of_landscapesDBG) {
- std::cout << "New point : " << land2.land[i][q].first
- << " oper(0,land2.land[i][q].second) : " << oper(0, land2.land[i][q].second) << std::endl;
- }
- lambda_n.push_back(std::make_pair(land2.land[i][q].first, oper(0, land2.land[i][q].second)));
- ++q;
- }
- lambda_n.push_back(std::make_pair(std::numeric_limits<int>::max(), 0));
- // CHANGE
- // result.land[i] = lambda_n;
- result.land[i].swap(lambda_n);
- }
- if (land1.land.size() > std::min(land1.land.size(), land2.land.size())) {
- if (operation_on_pair_of_landscapesDBG) {
- std::cout << "land1.land.size() > std::min( land1.land.size() , land2.land.size() )" << std::endl;
- }
- for (size_t i = std::min(land1.land.size(), land2.land.size()); i != std::max(land1.land.size(), land2.land.size());
- ++i) {
- std::vector<std::pair<double, double> > lambda_n(land1.land[i]);
- for (size_t nr = 0; nr != land1.land[i].size(); ++nr) {
- lambda_n[nr] = std::make_pair(land1.land[i][nr].first, oper(land1.land[i][nr].second, 0));
- }
- // CHANGE
- // result.land[i] = lambda_n;
- result.land[i].swap(lambda_n);
- }
- }
- if (land2.land.size() > std::min(land1.land.size(), land2.land.size())) {
- if (operation_on_pair_of_landscapesDBG) {
- std::cout << "( land2.land.size() > std::min( land1.land.size() , land2.land.size() ) ) " << std::endl;
- }
- for (size_t i = std::min(land1.land.size(), land2.land.size()); i != std::max(land1.land.size(), land2.land.size());
- ++i) {
- std::vector<std::pair<double, double> > lambda_n(land2.land[i]);
- for (size_t nr = 0; nr != land2.land[i].size(); ++nr) {
- lambda_n[nr] = std::make_pair(land2.land[i][nr].first, oper(0, land2.land[i][nr].second));
- }
- // CHANGE
- // result.land[i] = lambda_n;
- result.land[i].swap(lambda_n);
- }
- }
- if (operation_on_pair_of_landscapesDBG) {
- std::cout << "operation_on_pair_of_landscapes END\n";
- std::cin.ignore();
- }
- return result;
-} // operation_on_pair_of_landscapes
-
-double compute_maximal_distance_non_symmetric(const Persistence_landscape& pl1, const Persistence_landscape& pl2) {
- bool dbg = false;
- if (dbg) std::cerr << " compute_maximal_distance_non_symmetric \n";
- // this distance is not symmetric. It compute ONLY distance between inflection points of pl1 and pl2.
- double maxDist = 0;
- size_t minimalNumberOfLevels = std::min(pl1.land.size(), pl2.land.size());
- for (size_t level = 0; level != minimalNumberOfLevels; ++level) {
- if (dbg) {
- std::cerr << "Level : " << level << std::endl;
- std::cerr << "PL1 : \n";
- for (size_t i = 0; i != pl1.land[level].size(); ++i) {
- std::cerr << "(" << pl1.land[level][i].first << "," << pl1.land[level][i].second << ") \n";
- }
- std::cerr << "PL2 : \n";
- for (size_t i = 0; i != pl2.land[level].size(); ++i) {
- std::cerr << "(" << pl2.land[level][i].first << "," << pl2.land[level][i].second << ") \n";
- }
- std::cin.ignore();
- }
-
- int p2Count = 0;
- // In this case, I consider points at the infinity
- for (size_t i = 1; i != pl1.land[level].size() - 1; ++i) {
- while (true) {
- if ((pl1.land[level][i].first >= pl2.land[level][p2Count].first) &&
- (pl1.land[level][i].first <= pl2.land[level][p2Count + 1].first))
- break;
- p2Count++;
- }
- double val =
- fabs(function_value(pl2.land[level][p2Count], pl2.land[level][p2Count + 1], pl1.land[level][i].first) -
- pl1.land[level][i].second);
- if (maxDist <= val) maxDist = val;
-
- if (dbg) {
- std::cerr << pl1.land[level][i].first << "in [" << pl2.land[level][p2Count].first << ","
- << pl2.land[level][p2Count + 1].first << "] \n";
- std::cerr << "pl1[level][i].second : " << pl1.land[level][i].second << std::endl;
- std::cerr << "function_value( pl2[level][p2Count] , pl2[level][p2Count+1] , pl1[level][i].first ) : "
- << function_value(pl2.land[level][p2Count], pl2.land[level][p2Count + 1], pl1.land[level][i].first)
- << std::endl;
- std::cerr << "val : " << val << std::endl;
- std::cin.ignore();
- }
- }
- }
-
- if (dbg) std::cerr << "minimalNumberOfLevels : " << minimalNumberOfLevels << std::endl;
-
- if (minimalNumberOfLevels < pl1.land.size()) {
- for (size_t level = minimalNumberOfLevels; level != pl1.land.size(); ++level) {
- for (size_t i = 0; i != pl1.land[level].size(); ++i) {
- if (dbg) std::cerr << "pl1[level][i].second : " << pl1.land[level][i].second << std::endl;
- if (maxDist < pl1.land[level][i].second) maxDist = pl1.land[level][i].second;
- }
- }
- }
- return maxDist;
-}
-
-double compute_distance_of_landscapes(const Persistence_landscape& first, const Persistence_landscape& second,
- double p) {
- bool dbg = false;
- // This is what we want to compute: (\int_{- \infty}^{+\infty}| first-second |^p)^(1/p). We will do it one step at a
- // time:
-
- // first-second :
- Persistence_landscape lan = first - second;
-
- //| first-second |:
- lan = lan.abs();
-
- if (dbg) {
- std::cerr << "Abs of difference ; " << lan << std::endl;
- getchar();
- }
-
- if (p < std::numeric_limits<double>::max()) {
- // \int_{- \infty}^{+\infty}| first-second |^p
- double result;
- if (p != 1) {
- if (dbg) std::cerr << "Power != 1, compute integral to the power p\n";
- result = lan.compute_integral_of_landscape(p);
- } else {
- if (dbg) std::cerr << "Power = 1, compute integral \n";
- result = lan.compute_integral_of_landscape();
- }
- // (\int_{- \infty}^{+\infty}| first-second |^p)^(1/p)
- return pow(result, 1.0 / p);
- } else {
- // p == infty
- if (dbg) std::cerr << "Power = infty, compute maximum \n";
- return lan.compute_maximum();
- }
-}
-
-double compute_max_norm_distance_of_landscapes(const Persistence_landscape& first,
- const Persistence_landscape& second) {
- return std::max(compute_maximal_distance_non_symmetric(first, second),
- compute_maximal_distance_non_symmetric(second, first));
-}
-
-bool comparePairsForMerging(std::pair<double, unsigned> first, std::pair<double, unsigned> second) {
- return (first.first < second.first);
-}
-
-double compute_inner_product(const Persistence_landscape& l1, const Persistence_landscape& l2) {
- bool dbg = false;
- double result = 0;
-
- for (size_t level = 0; level != std::min(l1.size(), l2.size()); ++level) {
- if (dbg) {
- std::cerr << "Computing inner product for a level : " << level << std::endl;
- getchar();
- }
- auto&& l1_land_level = l1.land[level];
- auto&& l2_land_level = l2.land[level];
-
- if (l1_land_level.size() * l2_land_level.size() == 0) continue;
-
- // endpoints of the interval on which we will compute the inner product of two locally linear functions:
- double x1 = -std::numeric_limits<int>::max();
- double x2;
- if (l1_land_level[1].first < l2_land_level[1].first) {
- x2 = l1_land_level[1].first;
- } else {
- x2 = l2_land_level[1].first;
- }
-
- // iterators for the landscapes l1 and l2
- size_t l1It = 0;
- size_t l2It = 0;
-
- while ((l1It < l1_land_level.size() - 1) && (l2It < l2_land_level.size() - 1)) {
- // compute the value of a inner product on a interval [x1,x2]
-
- double a, b, c, d;
-
- if (l1_land_level[l1It + 1].first != l1_land_level[l1It].first) {
- a = (l1_land_level[l1It + 1].second - l1_land_level[l1It].second) /
- (l1_land_level[l1It + 1].first - l1_land_level[l1It].first);
- } else {
- a = 0;
- }
- b = l1_land_level[l1It].second - a * l1_land_level[l1It].first;
- if (l2_land_level[l2It + 1].first != l2_land_level[l2It].first) {
- c = (l2_land_level[l2It + 1].second - l2_land_level[l2It].second) /
- (l2_land_level[l2It + 1].first - l2_land_level[l2It].first);
- } else {
- c = 0;
- }
- d = l2_land_level[l2It].second - c * l2_land_level[l2It].first;
-
- double contributionFromThisPart = (a * c * x2 * x2 * x2 / 3 + (a * d + b * c) * x2 * x2 / 2 + b * d * x2) -
- (a * c * x1 * x1 * x1 / 3 + (a * d + b * c) * x1 * x1 / 2 + b * d * x1);
-
- result += contributionFromThisPart;
-
- if (dbg) {
- std::cerr << "[l1_land_level[l1It].first,l1_land_level[l1It+1].first] : " << l1_land_level[l1It].first
- << " , " << l1_land_level[l1It + 1].first << std::endl;
- std::cerr << "[l2_land_level[l2It].first,l2_land_level[l2It+1].first] : " << l2_land_level[l2It].first
- << " , " << l2_land_level[l2It + 1].first << std::endl;
- std::cerr << "a : " << a << ", b : " << b << " , c: " << c << ", d : " << d << std::endl;
- std::cerr << "x1 : " << x1 << " , x2 : " << x2 << std::endl;
- std::cerr << "contributionFromThisPart : " << contributionFromThisPart << std::endl;
- std::cerr << "result : " << result << std::endl;
- getchar();
- }
-
- // we have two intervals in which functions are constant:
- // [l1_land_level[l1It].first , l1_land_level[l1It+1].first]
- // and
- // [l2_land_level[l2It].first , l2_land_level[l2It+1].first]
- // We also have an interval [x1,x2]. Since the intervals in the landscapes cover the whole R, then it is clear
- // that x2
- // is either l1_land_level[l1It+1].first of l2_land_level[l2It+1].first or both. Lets test it.
- if (x2 == l1_land_level[l1It + 1].first) {
- if (x2 == l2_land_level[l2It + 1].first) {
- // in this case, we increment both:
- ++l2It;
- if (dbg) {
- std::cerr << "Incrementing both \n";
- }
- } else {
- if (dbg) {
- std::cerr << "Incrementing first \n";
- }
- }
- ++l1It;
- } else {
- // in this case we increment l2It
- ++l2It;
- if (dbg) {
- std::cerr << "Incrementing second \n";
- }
- }
-
- if ( l1It + 1 >= l1_land_level.size() )break;
- if ( l2It + 1 >= l2_land_level.size() )break;
-
- // Now, we shift x1 and x2:
- x1 = x2;
- if (l1_land_level[l1It + 1].first < l2_land_level[l2It + 1].first) {
- x2 = l1_land_level[l1It + 1].first;
- } else {
- x2 = l2_land_level[l2It + 1].first;
- }
- }
- }
- return result;
-}
-
-void Persistence_landscape::plot(const char* filename, double xRangeBegin, double xRangeEnd, double yRangeBegin,
- double yRangeEnd, int from, int to) {
- // this program create a gnuplot script file that allows to plot persistence diagram.
- std::ofstream out;
-
- std::ostringstream gnuplot_script;
- gnuplot_script << filename << "_GnuplotScript";
- out.open(gnuplot_script.str().c_str());
-
- if ((xRangeBegin != std::numeric_limits<double>::max()) || (xRangeEnd != std::numeric_limits<double>::max()) ||
- (yRangeBegin != std::numeric_limits<double>::max()) || (yRangeEnd != std::numeric_limits<double>::max())) {
- out << "set xrange [" << xRangeBegin << " : " << xRangeEnd << "]" << std::endl;
- out << "set yrange [" << yRangeBegin << " : " << yRangeEnd << "]" << std::endl;
- }
-
- if (from == std::numeric_limits<int>::max()) {
- from = 0;
- }
- if (to == std::numeric_limits<int>::max()) {
- to = this->land.size();
- }
-
- out << "plot ";
- for (size_t lambda = std::min((size_t)from, this->land.size()); lambda != std::min((size_t)to, this->land.size());
- ++lambda) {
- // out << " '-' using 1:2 title 'l" << lambda << "' with lp";
- out << " '-' using 1:2 notitle with lp";
- if (lambda + 1 != std::min((size_t)to, this->land.size())) {
- out << ", \\";
- }
- out << std::endl;
- }
-
- for (size_t lambda = std::min((size_t)from, this->land.size()); lambda != std::min((size_t)to, this->land.size());
- ++lambda) {
- for (size_t i = 1; i != this->land[lambda].size() - 1; ++i) {
- out << this->land[lambda][i].first << " " << this->land[lambda][i].second << std::endl;
- }
- out << "EOF" << std::endl;
- }
- std::cout << "To visualize, install gnuplot and type the command: gnuplot -persist -e \"load \'"
- << gnuplot_script.str().c_str() << "\'\"" << std::endl;
-}
-
-} // namespace Persistence_representations
-} // namespace Gudhi
-
-#endif // PERSISTENCE_LANDSCAPE_H_
diff --git a/include/gudhi/Persistence_landscape_on_grid.h b/include/gudhi/Persistence_landscape_on_grid.h
deleted file mode 100644
index fd8a181c..00000000
--- a/include/gudhi/Persistence_landscape_on_grid.h
+++ /dev/null
@@ -1,1348 +0,0 @@
-/** This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifndef PERSISTENCE_LANDSCAPE_ON_GRID_H_
-#define PERSISTENCE_LANDSCAPE_ON_GRID_H_
-
-// gudhi include
-#include <gudhi/read_persistence_from_file.h>
-#include <gudhi/common_persistence_representations.h>
-
-// standard include
-#include <iostream>
-#include <vector>
-#include <limits>
-#include <fstream>
-#include <sstream>
-#include <algorithm>
-#include <cmath>
-#include <functional>
-#include <utility>
-#include <string>
-#include <cstdint>
-
-namespace Gudhi {
-namespace Persistence_representations {
-
-// pre declaration
-class Persistence_landscape_on_grid;
-template <typename operation>
-Persistence_landscape_on_grid operation_on_pair_of_landscapes_on_grid(const Persistence_landscape_on_grid& land1,
- const Persistence_landscape_on_grid& land2);
-
-/**
- * \class Persistence_landscape_on_grid Persistence_landscape_on_grid.h gudhi/Persistence_landscape_on_grid.h
- * \brief A class implementing persistence landscapes by approximating them on a collection of grid points.
- *
- * \ingroup Persistence_representations
- *
- * \details
- * Persistence landscapes on grid allows vectorization, computations of distances, computations of projections to Real,
- * computations of averages and scalar products. Therefore they implement suitable interfaces.
- * It implements the following concepts: Vectorized_topological_data, Topological_data_with_distances,
- * Real_valued_topological_data, Topological_data_with_averages, Topological_data_with_scalar_product
- *
- * Note that at the moment, due to rounding errors during the construction of persistence landscapes on a grid,
- * elements which are different by 0.000005 are considered the same. If the scale in your persistence diagrams
- * is comparable to this value, please rescale them before use this code.
-**/
-
-// this class implements the following concepts: Vectorized_topological_data, Topological_data_with_distances,
-// Real_valued_topological_data, Topological_data_with_averages, Topological_data_with_scalar_product
-class Persistence_landscape_on_grid {
- public:
- /**
- * Default constructor.
- **/
- Persistence_landscape_on_grid() {
- this->set_up_numbers_of_functions_for_vectorization_and_projections_to_reals();
- this->grid_min = this->grid_max = 0;
- }
-
- /**
- * Constructor that takes as an input a vector of birth-death pairs.
- **/
- Persistence_landscape_on_grid(const std::vector<std::pair<double, double> >& p, double grid_min_, double grid_max_,
- size_t number_of_points_);
-
- /**
- * Constructor that takes as an input a vector of birth-death pairs, parameters of the grid and number of
- *landscape function to be created.
- **/
- Persistence_landscape_on_grid(const std::vector<std::pair<double, double> >& p, double grid_min_, double grid_max_,
- size_t number_of_points_, unsigned number_of_levels_of_landscape);
-
- /**
- * Constructor that reads persistence intervals from file and creates persistence landscape. The format of the
- *input file is the following: in each line we put birth-death pair. Last line is assumed
- * to be empty. Even if the points within a line are not ordered, they will be ordered while the input is read.
- *The additional parameters of this procedure are: ranges of grid, resolution of a grid
- * number of landscape functions to be created and the dimension of intervals that are need to be read from a file
- *(in case of Gudhi format files).
- **/
- Persistence_landscape_on_grid(const char* filename, double grid_min_, double grid_max_, size_t number_of_points_,
- unsigned number_of_levels_of_landscape,
- uint16_t dimension_ = std::numeric_limits<uint16_t>::max());
-
- /**
- * Constructor that reads persistence intervals from file and creates persistence landscape. The format of the
- *input file is the following: in each line we put birth-death pair. Last line is assumed
- * to be empty. Even if the points within a line are not ordered, they will be ordered while the input is read. The
- *additional parameters of this procedure are: ranges of grid, resolution of a grid
- * and the dimension of intervals that are need to be read from a file (in case of Gudhi format files).
- **/
- Persistence_landscape_on_grid(const char* filename, double grid_min_, double grid_max_, size_t number_of_points_,
- uint16_t dimension_ = std::numeric_limits<uint16_t>::max());
-
- /**
- * Constructor that reads persistence intervals from file and creates persistence landscape. The format of the
- *input file is the following: in each line we put birth-death pair. Last line is assumed
- * to be empty. Even if the points within a line are not ordered, they will be ordered while the input is read.
- *The additional parameter is the resolution of a grid and the number of landscape
- * functions to be created. The remaining parameters are calculated based on data.
- **/
- Persistence_landscape_on_grid(const char* filename, size_t number_of_points, unsigned number_of_levels_of_landscape,
- uint16_t dimension = std::numeric_limits<uint16_t>::max());
-
- /**
- * Constructor that reads persistence intervals from file and creates persistence landscape. The format of the input
- *file is the following: in each line we put birth-death pair. Last line is assumed
- * to be empty. Even if the points within a line are not ordered, they will be ordered while the input is read. The
- *additional parameter is the resolution of a grid. The last parameter is the dimension
- * of a persistence to read from the file. If your file contains only persistence pair in a single dimension, please
- *set it up to std::numeric_limits<unsigned>::max().
- * The remaining parameters are calculated based on data.
- **/
- Persistence_landscape_on_grid(const char* filename, size_t number_of_points,
- uint16_t dimension = std::numeric_limits<uint16_t>::max());
-
- /**
- * This procedure loads a landscape from file. It erase all the data that was previously stored in this landscape.
- **/
- void load_landscape_from_file(const char* filename);
-
- /**
- * The procedure stores a landscape to a file. The file can be later used by a procedure load_landscape_from_file.
- **/
- void print_to_file(const char* filename) const;
-
- /**
- * This function compute integral of the landscape (defined formally as sum of integrals on R of all landscape
- *functions)
- **/
- double compute_integral_of_landscape() const {
- size_t maximal_level = this->number_of_nonzero_levels();
- double result = 0;
- for (size_t i = 0; i != maximal_level; ++i) {
- result += this->compute_integral_of_landscape(i);
- }
- return result;
- }
-
- /**
- * This function compute integral of the 'level'-level of a landscape.
- **/
- double compute_integral_of_landscape(size_t level) const {
- bool dbg = false;
- double result = 0;
- double dx = (this->grid_max - this->grid_min) / static_cast<double>(this->values_of_landscapes.size() - 1);
-
- if (dbg) {
- std::cerr << "this->grid_max : " << this->grid_max << std::endl;
- std::cerr << "this->grid_min : " << this->grid_min << std::endl;
- std::cerr << "this->values_of_landscapes.size() : " << this->values_of_landscapes.size() << std::endl;
- getchar();
- }
-
- double previous_x = this->grid_min - dx;
- double previous_y = 0;
- for (size_t i = 0; i != this->values_of_landscapes.size(); ++i) {
- double current_x = previous_x + dx;
- double current_y = 0;
- if (this->values_of_landscapes[i].size() > level) current_y = this->values_of_landscapes[i][level];
-
- if (dbg) {
- std::cerr << "this->values_of_landscapes[i].size() : " << this->values_of_landscapes[i].size()
- << " , level : " << level << std::endl;
- if (this->values_of_landscapes[i].size() > level)
- std::cerr << "this->values_of_landscapes[i][level] : " << this->values_of_landscapes[i][level] << std::endl;
- std::cerr << "previous_y : " << previous_y << std::endl;
- std::cerr << "current_y : " << current_y << std::endl;
- std::cerr << "dx : " << dx << std::endl;
- std::cerr << "0.5*dx*( previous_y + current_y ); " << 0.5 * dx * (previous_y + current_y) << std::endl;
- }
-
- result += 0.5 * dx * (previous_y + current_y);
- previous_x = current_x;
- previous_y = current_y;
- }
- return result;
- }
-
- /**
- * This function compute integral of the landscape p-th power of a landscape (defined formally as sum of integrals on
- *R of p-th powers of all landscape functions)
- **/
- double compute_integral_of_landscape(double p) const {
- size_t maximal_level = this->number_of_nonzero_levels();
- double result = 0;
- for (size_t i = 0; i != maximal_level; ++i) {
- result += this->compute_integral_of_landscape(p, i);
- }
- return result;
- }
-
- /**
- * This function compute integral of the landscape p-th power of a level of a landscape (defined formally as sum
- *of integrals on R of p-th powers of all landscape functions)
- **/
- double compute_integral_of_landscape(double p, size_t level) const {
- bool dbg = false;
-
- double result = 0;
- double dx = (this->grid_max - this->grid_min) / static_cast<double>(this->values_of_landscapes.size() - 1);
- double previous_x = this->grid_min;
- double previous_y = 0;
- if (this->values_of_landscapes[0].size() > level) previous_y = this->values_of_landscapes[0][level];
-
- if (dbg) {
- std::cerr << "dx : " << dx << std::endl;
- std::cerr << "previous_x : " << previous_x << std::endl;
- std::cerr << "previous_y : " << previous_y << std::endl;
- std::cerr << "power : " << p << std::endl;
- getchar();
- }
-
- for (size_t i = 0; i != this->values_of_landscapes.size(); ++i) {
- double current_x = previous_x + dx;
- double current_y = 0;
- if (this->values_of_landscapes[i].size() > level) current_y = this->values_of_landscapes[i][level];
-
- if (dbg) std::cerr << "current_y : " << current_y << std::endl;
-
- if (current_y == previous_y) continue;
-
- std::pair<double, double> coef =
- compute_parameters_of_a_line(std::make_pair(previous_x, previous_y), std::make_pair(current_x, current_y));
- double a = coef.first;
- double b = coef.second;
-
- if (dbg) {
- std::cerr << "A line passing through points : (" << previous_x << "," << previous_y << ") and (" << current_x
- << "," << current_y << ") is : " << a << "x+" << b << std::endl;
- }
-
- // In this interval, the landscape has a form f(x) = ax+b. We want to compute integral of (ax+b)^p = 1/a *
- // (ax+b)^{p+1}/(p+1)
- double value_to_add = 0;
- if (a != 0) {
- value_to_add = 1 / (a * (p + 1)) * (pow((a * current_x + b), p + 1) - pow((a * previous_x + b), p + 1));
- } else {
- value_to_add = (current_x - previous_x) * (pow(b, p));
- }
- result += value_to_add;
- if (dbg) {
- std::cerr << "Increasing result by : " << value_to_add << std::endl;
- std::cerr << "result : " << result << std::endl;
- getchar();
- }
- previous_x = current_x;
- previous_y = current_y;
- }
- if (dbg) std::cerr << "The total result is : " << result << std::endl;
- return result;
- }
-
- /**
-* Writing landscape into a stream. A i-th level landscape starts with a string "lambda_i". Then the discontinuity points
-*of the landscapes follows.
-* Shall those points be joined with lines, we will obtain the i-th landscape function.
-**/
- friend std::ostream& operator<<(std::ostream& out, const Persistence_landscape_on_grid& land) {
- double dx = (land.grid_max - land.grid_min) / static_cast<double>(land.values_of_landscapes.size() - 1);
- double x = land.grid_min;
- for (size_t i = 0; i != land.values_of_landscapes.size(); ++i) {
- out << x << " : ";
- for (size_t j = 0; j != land.values_of_landscapes[i].size(); ++j) {
- out << land.values_of_landscapes[i][j] << " ";
- }
- out << std::endl;
- x += dx;
- }
- return out;
- }
-
- template <typename oper>
- friend Persistence_landscape_on_grid operation_on_pair_of_landscapes_on_grid(
- const Persistence_landscape_on_grid& land1, const Persistence_landscape_on_grid& land2);
-
- /**
- * A function that computes the value of a landscape at a given point. The parameters of the function are: unsigned
- *level and double x.
- * The procedure will compute the value of the level-landscape at the point x.
- **/
- double compute_value_at_a_given_point(unsigned level, double x) const {
- bool dbg = false;
- if ((x < this->grid_min) || (x > this->grid_max)) return 0;
-
- // find a position of a vector closest to x:
- double dx = (this->grid_max - this->grid_min) / static_cast<double>(this->values_of_landscapes.size() - 1);
- size_t position = size_t((x - this->grid_min) / dx);
-
- if (dbg) {
- std::cerr << "This is a procedure compute_value_at_a_given_point \n";
- std::cerr << "level : " << level << std::endl;
- std::cerr << "x : " << x << std::endl;
- std::cerr << "position : " << position << std::endl;
- }
- // check if we are not exactly in the grid point:
- if (almost_equal(position * dx + this->grid_min, x)) {
- if (this->values_of_landscapes[position].size() < level) {
- return this->values_of_landscapes[position][level];
- } else {
- return 0;
- }
- }
- // in the other case, approximate with a line:
- std::pair<double, double> line;
- if ((this->values_of_landscapes[position].size() > level) &&
- (this->values_of_landscapes[position + 1].size() > level)) {
- line = compute_parameters_of_a_line(
- std::make_pair(position * dx + this->grid_min, this->values_of_landscapes[position][level]),
- std::make_pair((position + 1) * dx + this->grid_min, this->values_of_landscapes[position + 1][level]));
- } else {
- if ((this->values_of_landscapes[position].size() > level) ||
- (this->values_of_landscapes[position + 1].size() > level)) {
- if ((this->values_of_landscapes[position].size() > level)) {
- line = compute_parameters_of_a_line(
- std::make_pair(position * dx + this->grid_min, this->values_of_landscapes[position][level]),
- std::make_pair((position + 1) * dx + this->grid_min, 0));
- } else {
- line = compute_parameters_of_a_line(
- std::make_pair(position * dx + this->grid_min, 0),
- std::make_pair((position + 1) * dx + this->grid_min, this->values_of_landscapes[position + 1][level]));
- }
- } else {
- return 0;
- }
- }
- // compute the value of the linear function parametrized by line on a point x:
- return line.first * x + line.second;
- }
-
- public:
- /**
- *\private A function that compute sum of two landscapes.
- **/
- friend Persistence_landscape_on_grid add_two_landscapes(const Persistence_landscape_on_grid& land1,
- const Persistence_landscape_on_grid& land2) {
- return operation_on_pair_of_landscapes_on_grid<std::plus<double> >(land1, land2);
- }
-
- /**
- *\private A function that compute difference of two landscapes.
- **/
- friend Persistence_landscape_on_grid subtract_two_landscapes(const Persistence_landscape_on_grid& land1,
- const Persistence_landscape_on_grid& land2) {
- return operation_on_pair_of_landscapes_on_grid<std::minus<double> >(land1, land2);
- }
-
- /**
- * An operator +, that compute sum of two landscapes.
- **/
- friend Persistence_landscape_on_grid operator+(const Persistence_landscape_on_grid& first,
- const Persistence_landscape_on_grid& second) {
- return add_two_landscapes(first, second);
- }
-
- /**
- * An operator -, that compute difference of two landscapes.
- **/
- friend Persistence_landscape_on_grid operator-(const Persistence_landscape_on_grid& first,
- const Persistence_landscape_on_grid& second) {
- return subtract_two_landscapes(first, second);
- }
-
- /**
- * An operator * that allows multiplication of a landscape by a real number.
- **/
- friend Persistence_landscape_on_grid operator*(const Persistence_landscape_on_grid& first, double con) {
- return first.multiply_lanscape_by_real_number_not_overwrite(con);
- }
-
- /**
- * An operator * that allows multiplication of a landscape by a real number (order of parameters swapped).
- **/
- friend Persistence_landscape_on_grid operator*(double con, const Persistence_landscape_on_grid& first) {
- return first.multiply_lanscape_by_real_number_not_overwrite(con);
- }
-
- friend bool check_if_defined_on_the_same_domain(const Persistence_landscape_on_grid& land1,
- const Persistence_landscape_on_grid& land2) {
- if (land1.values_of_landscapes.size() != land2.values_of_landscapes.size()) return false;
- if (land1.grid_min != land2.grid_min) return false;
- if (land1.grid_max != land2.grid_max) return false;
- return true;
- }
-
- /**
- * Operator +=. The second parameter is persistence landscape.
- **/
- Persistence_landscape_on_grid operator+=(const Persistence_landscape_on_grid& rhs) {
- *this = *this + rhs;
- return *this;
- }
-
- /**
- * Operator -=. The second parameter is persistence landscape.
- **/
- Persistence_landscape_on_grid operator-=(const Persistence_landscape_on_grid& rhs) {
- *this = *this - rhs;
- return *this;
- }
-
- /**
- * Operator *=. The second parameter is a real number by which the y values of all landscape functions are multiplied.
- *The x-values remain unchanged.
- **/
- Persistence_landscape_on_grid operator*=(double x) {
- *this = *this * x;
- return *this;
- }
-
- /**
- * Operator /=. The second parameter is a real number.
- **/
- Persistence_landscape_on_grid operator/=(double x) {
- if (x == 0) throw("In operator /=, division by 0. Program terminated.");
- *this = *this * (1 / x);
- return *this;
- }
-
- /**
- * An operator to compare two persistence landscapes.
- **/
- bool operator==(const Persistence_landscape_on_grid& rhs) const {
- bool dbg = true;
- if (this->values_of_landscapes.size() != rhs.values_of_landscapes.size()) {
- if (dbg) std::cerr << "values_of_landscapes of incompatible sizes\n";
- return false;
- }
- if (!almost_equal(this->grid_min, rhs.grid_min)) {
- if (dbg) std::cerr << "grid_min not equal\n";
- return false;
- }
- if (!almost_equal(this->grid_max, rhs.grid_max)) {
- if (dbg) std::cerr << "grid_max not equal\n";
- return false;
- }
- for (size_t i = 0; i != this->values_of_landscapes.size(); ++i) {
- for (size_t aa = 0; aa != this->values_of_landscapes[i].size(); ++aa) {
- if (!almost_equal(this->values_of_landscapes[i][aa], rhs.values_of_landscapes[i][aa])) {
- if (dbg) {
- std::cerr << "Problem in the position : " << i << " of values_of_landscapes. \n";
- std::cerr << this->values_of_landscapes[i][aa] << " " << rhs.values_of_landscapes[i][aa] << std::endl;
- }
- return false;
- }
- }
- }
- return true;
- }
-
- /**
- * An operator to compare two persistence landscapes.
- **/
- bool operator!=(const Persistence_landscape_on_grid& rhs) const { return !((*this) == rhs); }
-
- /**
- * Computations of maximum (y) value of landscape.
- **/
- double compute_maximum() const {
- // since the function can only be entirely positive or negative, the maximal value will be an extremal value in the
- // arrays:
- double max_value = -std::numeric_limits<double>::max();
- for (size_t i = 0; i != this->values_of_landscapes.size(); ++i) {
- if (this->values_of_landscapes[i].size()) {
- if (this->values_of_landscapes[i][0] > max_value) max_value = this->values_of_landscapes[i][0];
- if (this->values_of_landscapes[i][this->values_of_landscapes[i].size() - 1] > max_value)
- max_value = this->values_of_landscapes[i][this->values_of_landscapes[i].size() - 1];
- }
- }
- return max_value;
- }
-
- /**
- * Computations of minimum and maximum value of landscape.
- **/
- std::pair<double, double> compute_minimum_maximum() const {
- // since the function can only be entirely positive or negative, the maximal value will be an extremal value in the
- // arrays:
- double max_value = -std::numeric_limits<double>::max();
- double min_value = 0;
- for (size_t i = 0; i != this->values_of_landscapes.size(); ++i) {
- if (this->values_of_landscapes[i].size()) {
- if (this->values_of_landscapes[i][0] > max_value) max_value = this->values_of_landscapes[i][0];
- if (this->values_of_landscapes[i][this->values_of_landscapes[i].size() - 1] > max_value)
- max_value = this->values_of_landscapes[i][this->values_of_landscapes[i].size() - 1];
-
- if (this->values_of_landscapes[i][0] < min_value) min_value = this->values_of_landscapes[i][0];
- if (this->values_of_landscapes[i][this->values_of_landscapes[i].size() - 1] < min_value)
- min_value = this->values_of_landscapes[i][this->values_of_landscapes[i].size() - 1];
- }
- }
- return std::make_pair(min_value, max_value);
- }
-
- /**
- * This procedure returns x-range of a given level persistence landscape. If a default value is used, the x-range
- * of 0th level landscape is given (and this range contains the ranges of all other landscapes).
- **/
- std::pair<double, double> get_x_range(size_t level = 0) const {
- return std::make_pair(this->grid_min, this->grid_max);
- }
-
- /**
- * This procedure returns y-range of a persistence landscape. If a default value is used, the y-range
- * of 0th level landscape is given (and this range contains the ranges of all other landscapes).
- **/
- std::pair<double, double> get_y_range(size_t level = 0) const { return this->compute_minimum_maximum(); }
-
- /**
- * This function computes maximal lambda for which lambda-level landscape is nonzero.
- **/
- size_t number_of_nonzero_levels() const {
- size_t result = 0;
- for (size_t i = 0; i != this->values_of_landscapes.size(); ++i) {
- if (this->values_of_landscapes[i].size() > result) result = this->values_of_landscapes[i].size();
- }
- return result;
- }
-
- /**
- * Computations of a \f$L^i\f$ norm of landscape, where i is the input parameter.
- **/
- double compute_norm_of_landscape(double i) const {
- std::vector<std::pair<double, double> > p;
- Persistence_landscape_on_grid l(p, this->grid_min, this->grid_max, this->values_of_landscapes.size() - 1);
-
- if (i < std::numeric_limits<double>::max()) {
- return compute_distance_of_landscapes_on_grid(*this, l, i);
- } else {
- return compute_max_norm_distance_of_landscapes(*this, l);
- }
- }
-
- /**
- * An operator to compute the value of a landscape in the level 'level' at the argument 'x'.
- **/
- double operator()(unsigned level, double x) const { return this->compute_value_at_a_given_point(level, x); }
-
- /**
- * Computations of \f$L^{\infty}\f$ distance between two landscapes.
- **/
- friend double compute_max_norm_distance_of_landscapes(const Persistence_landscape_on_grid& first,
- const Persistence_landscape_on_grid& second);
-
- /**
- * Function to compute absolute value of a PL function. The representation of persistence landscapes allow to store
- *general PL-function. When computing distance between two landscapes, we compute difference between
- * them. In this case, a general PL-function with negative value can appear as a result. Then in order to compute
- *distance, we need to take its absolute value. This is the purpose of this procedure.
- **/
- void abs() {
- for (size_t i = 0; i != this->values_of_landscapes.size(); ++i) {
- for (size_t j = 0; j != this->values_of_landscapes[i].size(); ++j) {
- this->values_of_landscapes[i][j] = std::abs(this->values_of_landscapes[i][j]);
- }
- }
- }
-
- /**
- * Computes the number of landscape functions.
- **/
- size_t size() const { return this->number_of_nonzero_levels(); }
-
- /**
- * Compute maximal value of lambda-level landscape.
- **/
- double find_max(unsigned lambda) const {
- double max_value = -std::numeric_limits<double>::max();
- for (size_t i = 0; i != this->values_of_landscapes.size(); ++i) {
- if (this->values_of_landscapes[i].size() > lambda) {
- if (this->values_of_landscapes[i][lambda] > max_value) max_value = this->values_of_landscapes[i][lambda];
- }
- }
- return max_value;
- }
-
- /**
- * Function to compute inner (scalar) product of two landscapes.
- **/
- friend double compute_inner_product(const Persistence_landscape_on_grid& l1,
- const Persistence_landscape_on_grid& l2) {
- if (!check_if_defined_on_the_same_domain(l1, l2))
- throw "Landscapes are not defined on the same grid, the program will now terminate";
- size_t maximal_level = l1.number_of_nonzero_levels();
- double result = 0;
- for (size_t i = 0; i != maximal_level; ++i) {
- result += compute_inner_product(l1, l2, i);
- }
- return result;
- }
-
- /**
- * Function to compute inner (scalar) product of given levels of two landscapes.
- **/
- friend double compute_inner_product(const Persistence_landscape_on_grid& l1, const Persistence_landscape_on_grid& l2,
- size_t level) {
- bool dbg = false;
-
- if (!check_if_defined_on_the_same_domain(l1, l2))
- throw "Landscapes are not defined on the same grid, the program will now terminate";
- double result = 0;
-
- double dx = (l1.grid_max - l1.grid_min) / static_cast<double>(l1.values_of_landscapes.size() - 1);
-
- double previous_x = l1.grid_min - dx;
- double previous_y_l1 = 0;
- double previous_y_l2 = 0;
- for (size_t i = 0; i != l1.values_of_landscapes.size(); ++i) {
- if (dbg) std::cerr << "i : " << i << std::endl;
-
- double current_x = previous_x + dx;
- double current_y_l1 = 0;
- if (l1.values_of_landscapes[i].size() > level) current_y_l1 = l1.values_of_landscapes[i][level];
-
- double current_y_l2 = 0;
- if (l2.values_of_landscapes[i].size() > level) current_y_l2 = l2.values_of_landscapes[i][level];
-
- if (dbg) {
- std::cerr << "previous_x : " << previous_x << std::endl;
- std::cerr << "previous_y_l1 : " << previous_y_l1 << std::endl;
- std::cerr << "current_y_l1 : " << current_y_l1 << std::endl;
- std::cerr << "previous_y_l2 : " << previous_y_l2 << std::endl;
- std::cerr << "current_y_l2 : " << current_y_l2 << std::endl;
- }
-
- std::pair<double, double> l1_coords = compute_parameters_of_a_line(std::make_pair(previous_x, previous_y_l1),
- std::make_pair(current_x, current_y_l1));
- std::pair<double, double> l2_coords = compute_parameters_of_a_line(std::make_pair(previous_x, previous_y_l2),
- std::make_pair(current_x, current_y_l2));
-
- // let us assume that the first line is of a form y = ax+b, and the second one is of a form y = cx + d. Then here
- // are a,b,c,d:
- double a = l1_coords.first;
- double b = l1_coords.second;
-
- double c = l2_coords.first;
- double d = l2_coords.second;
-
- if (dbg) {
- std::cerr << "Here are the formulas for a line: \n";
- std::cerr << "a : " << a << std::endl;
- std::cerr << "b : " << b << std::endl;
- std::cerr << "c : " << c << std::endl;
- std::cerr << "d : " << d << std::endl;
- }
-
- // now, to compute the inner product in this interval we need to compute the integral of (ax+b)(cx+d) = acx^2 +
- // (ad+bc)x + bd in the interval from previous_x to current_x:
- // The integral is ac/3*x^3 + (ac+bd)/2*x^2 + bd*x
-
- double added_value = (a * c / 3 * current_x * current_x * current_x +
- (a * d + b * c) / 2 * current_x * current_x + b * d * current_x) -
- (a * c / 3 * previous_x * previous_x * previous_x +
- (a * d + b * c) / 2 * previous_x * previous_x + b * d * previous_x);
-
- if (dbg) {
- std::cerr << "Value of the integral on the left end i.e. : " << previous_x << " is : "
- << a * c / 3 * previous_x * previous_x * previous_x + (a * d + b * c) / 2 * previous_x * previous_x +
- b * d * previous_x
- << std::endl;
- std::cerr << "Value of the integral on the right end i.e. : " << current_x << " is "
- << a * c / 3 * current_x * current_x * current_x + (a * d + b * c) / 2 * current_x * current_x +
- b * d * current_x
- << std::endl;
- }
-
- result += added_value;
-
- if (dbg) {
- std::cerr << "added_value : " << added_value << std::endl;
- std::cerr << "result : " << result << std::endl;
- getchar();
- }
-
- previous_x = current_x;
- previous_y_l1 = current_y_l1;
- previous_y_l2 = current_y_l2;
- }
- return result;
- }
-
- /**
- * Computations of \f$L^{p}\f$ distance between two landscapes on a grid. p is the parameter of the procedure.
- * FIXME: Note that, due to the grid representation, the method below may give non--accurate results in case when the
- *landscape P and Q the difference of which we want to compute
- * are intersecting. This is a consequence of a general way they are computed. In the future, an integral of absolute
- *value of a difference of P and Q will be given as a separated
- * function to fix that inaccuracy.
- **/
- friend double compute_distance_of_landscapes_on_grid(const Persistence_landscape_on_grid& first,
- const Persistence_landscape_on_grid& second, double p) {
- bool dbg = false;
- // This is what we want to compute: (\int_{- \infty}^{+\infty}| first-second |^p)^(1/p). We will do it one step at a
- // time:
-
- if (dbg) {
- std::cerr << "first : " << first << std::endl;
- std::cerr << "second : " << second << std::endl;
- getchar();
- }
-
- // first-second :
- Persistence_landscape_on_grid lan = first - second;
-
- if (dbg) {
- std::cerr << "Difference : " << lan << std::endl;
- }
-
- //| first-second |:
- lan.abs();
-
- if (dbg) {
- std::cerr << "Abs : " << lan << std::endl;
- }
-
- if (p < std::numeric_limits<double>::max()) {
- // \int_{- \infty}^{+\infty}| first-second |^p
- double result;
- if (p != 1) {
- if (dbg) {
- std::cerr << "p : " << p << std::endl;
- getchar();
- }
- result = lan.compute_integral_of_landscape(p);
- if (dbg) {
- std::cerr << "integral : " << result << std::endl;
- getchar();
- }
- } else {
- result = lan.compute_integral_of_landscape();
- if (dbg) {
- std::cerr << "integral, without power : " << result << std::endl;
- getchar();
- }
- }
- // (\int_{- \infty}^{+\infty}| first-second |^p)^(1/p)
- return pow(result, 1.0 / p);
- } else {
- // p == infty
- return lan.compute_maximum();
- }
- }
-
- // Functions that are needed for that class to implement the concept.
-
- /**
- * The number of projections to R is defined to the number of nonzero landscape functions. I-th projection is an
- *integral of i-th landscape function over whole R.
- * This function is required by the Real_valued_topological_data concept.
- * At the moment this function is not tested, since it is quite likely to be changed in the future. Given this, when
- *using it, keep in mind that it
- * will be most likely changed in the next versions.
- **/
- double project_to_R(int number_of_function) const {
- return this->compute_integral_of_landscape((size_t)number_of_function);
- }
-
- /**
- * The function gives the number of possible projections to R. This function is required by the
- *Real_valued_topological_data concept.
- **/
- size_t number_of_projections_to_R() const { return number_of_functions_for_projections_to_reals; }
-
- /**
- * This function produce a vector of doubles based on a landscape. It is required in a concept
- * Vectorized_topological_data
- */
- std::vector<double> vectorize(int number_of_function) const {
- // TODO(PD) think of something smarter over here
- if ((number_of_function < 0) || ((size_t)number_of_function >= this->values_of_landscapes.size())) {
- throw "Wrong number of function\n";
- }
- std::vector<double> v(this->values_of_landscapes.size());
- for (size_t i = 0; i != this->values_of_landscapes.size(); ++i) {
- v[i] = 0;
- if (this->values_of_landscapes[i].size() > (size_t)number_of_function) {
- v[i] = this->values_of_landscapes[i][number_of_function];
- }
- }
- return v;
- }
-
- /**
- * This function return the number of functions that allows vectorization of persistence landscape. It is required in
- *a concept Vectorized_topological_data.
- **/
- size_t number_of_vectorize_functions() const { return number_of_functions_for_vectorization; }
-
- /**
- * A function to compute averaged persistence landscape on a grid, based on vector of persistence landscapes on grid.
- * This function is required by Topological_data_with_averages concept.
- **/
- void compute_average(const std::vector<Persistence_landscape_on_grid*>& to_average) {
- bool dbg = false;
- // After execution of this procedure, the average is supposed to be in the current object. To make sure that this is
- // the case, we need to do some cleaning first.
- this->values_of_landscapes.clear();
- this->grid_min = this->grid_max = 0;
-
- // if there is nothing to average, then the average is a zero landscape.
- if (to_average.size() == 0) return;
-
- // now we need to check if the grids in all objects of to_average are the same:
- for (size_t i = 0; i != to_average.size(); ++i) {
- if (!check_if_defined_on_the_same_domain(*(to_average[0]), *(to_average[i])))
- throw "Two grids are not compatible";
- }
-
- this->values_of_landscapes = std::vector<std::vector<double> >((to_average[0])->values_of_landscapes.size());
- this->grid_min = (to_average[0])->grid_min;
- this->grid_max = (to_average[0])->grid_max;
-
- if (dbg) {
- std::cerr << "Computations of average. The data from the current landscape have been cleared. We are ready to do "
- "the computations. \n";
- }
-
- // for every point in the grid:
- for (size_t grid_point = 0; grid_point != (to_average[0])->values_of_landscapes.size(); ++grid_point) {
- // set up a vector of the correct size:
- size_t maximal_size_of_vector = 0;
- for (size_t land_no = 0; land_no != to_average.size(); ++land_no) {
- if ((to_average[land_no])->values_of_landscapes[grid_point].size() > maximal_size_of_vector)
- maximal_size_of_vector = (to_average[land_no])->values_of_landscapes[grid_point].size();
- }
- this->values_of_landscapes[grid_point] = std::vector<double>(maximal_size_of_vector);
-
- if (dbg) {
- std::cerr << "We are considering the point : " << grid_point
- << " of the grid. In this point, there are at most : " << maximal_size_of_vector
- << " nonzero landscape functions \n";
- }
-
- // and compute an arithmetic average:
- for (size_t land_no = 0; land_no != to_average.size(); ++land_no) {
- // summing:
- for (size_t i = 0; i != (to_average[land_no])->values_of_landscapes[grid_point].size(); ++i) {
- // compute the average in a smarter way.
- this->values_of_landscapes[grid_point][i] += (to_average[land_no])->values_of_landscapes[grid_point][i];
- }
- }
- // normalizing:
- for (size_t i = 0; i != this->values_of_landscapes[grid_point].size(); ++i) {
- this->values_of_landscapes[grid_point][i] /= static_cast<double>(to_average.size());
- }
- }
- } // compute_average
-
- /**
- * A function to compute distance between persistence landscape on a grid.
- * The parameter of this function is a Persistence_landscape_on_grid.
- * This function is required in Topological_data_with_distances concept.
- * For max norm distance, set power to std::numeric_limits<double>::max()
- **/
- double distance(const Persistence_landscape_on_grid& second, double power = 1) const {
- if (power < std::numeric_limits<double>::max()) {
- return compute_distance_of_landscapes_on_grid(*this, second, power);
- } else {
- return compute_max_norm_distance_of_landscapes(*this, second);
- }
- }
-
- /**
- * A function to compute scalar product of persistence landscape on a grid.
- * The parameter of this function is a Persistence_landscape_on_grid.
- * This function is required in Topological_data_with_scalar_product concept.
- **/
- double compute_scalar_product(const Persistence_landscape_on_grid& second) {
- return compute_inner_product((*this), second);
- }
-
- // end of implementation of functions needed for concepts.
-
- /**
- * A function that returns values of landscapes. It can be used for visualization
- **/
- std::vector<std::vector<double> > output_for_visualization() const { return this->values_of_landscapes; }
-
- /**
- * function used to create a gnuplot script for visualization of landscapes. Over here we need to specify which
- *landscapes do we want to plot.
- * In addition, the user may specify the range (min and max) where landscape is plot. The default values for min and
- *max are std::numeric_limits<double>::max(). If the procedure detect those
- * values, it will determine the range so that the whole landscape is supported there. If at least one min or max value
- *is different from std::numeric_limits<double>::max(), then the values
- * provided by the user will be used.
- **/
- void plot(const char* filename, size_t from_, size_t to_) const {
- this->plot(filename, std::numeric_limits<double>::max(), std::numeric_limits<double>::max(),
- std::numeric_limits<double>::max(), std::numeric_limits<double>::max(), from_, to_);
- }
-
- /**
- * function used to create a gnuplot script for visualization of landscapes. Over here we can restrict also x and y
- *range of the landscape.
- **/
- void plot(const char* filename, double min_x = std::numeric_limits<double>::max(),
- double max_x = std::numeric_limits<double>::max(), double min_y = std::numeric_limits<double>::max(),
- double max_y = std::numeric_limits<double>::max(), size_t from_ = std::numeric_limits<size_t>::max(),
- size_t to_ = std::numeric_limits<size_t>::max()) const;
-
- protected:
- double grid_min;
- double grid_max;
- std::vector<std::vector<double> > values_of_landscapes;
- size_t number_of_functions_for_vectorization;
- size_t number_of_functions_for_projections_to_reals;
-
- void set_up_numbers_of_functions_for_vectorization_and_projections_to_reals() {
- // warning, this function can be only called after filling in the values_of_landscapes vector.
- this->number_of_functions_for_vectorization = this->values_of_landscapes.size();
- this->number_of_functions_for_projections_to_reals = this->values_of_landscapes.size();
- }
- void set_up_values_of_landscapes(const std::vector<std::pair<double, double> >& p, double grid_min_, double grid_max_,
- size_t number_of_points_,
- unsigned number_of_levels = std::numeric_limits<unsigned>::max());
- Persistence_landscape_on_grid multiply_lanscape_by_real_number_not_overwrite(double x) const;
-};
-
-void Persistence_landscape_on_grid::set_up_values_of_landscapes(const std::vector<std::pair<double, double> >& p,
- double grid_min_, double grid_max_,
- size_t number_of_points_, unsigned number_of_levels) {
- bool dbg = false;
- if (dbg) {
- std::cerr << "Here is the procedure : set_up_values_of_landscapes. The parameters are : grid_min_ : " << grid_min_
- << ", grid_max_ : " << grid_max_ << ", number_of_points_ : " << number_of_points_
- << ", number_of_levels: " << number_of_levels << std::endl;
- std::cerr << "Here are the intervals at our disposal : \n";
- for (size_t i = 0; i != p.size(); ++i) {
- std::cerr << p[i].first << " , " << p[i].second << std::endl;
- }
- }
-
- if ((grid_min_ == std::numeric_limits<double>::max()) || (grid_max_ == std::numeric_limits<double>::max())) {
- // in this case, we need to find grid_min_ and grid_min_ based on the data.
- double min = std::numeric_limits<double>::max();
- double max = std::numeric_limits<double>::min();
- for (size_t i = 0; i != p.size(); ++i) {
- if (p[i].first < min) min = p[i].first;
- if (p[i].second > max) max = p[i].second;
- }
- if (grid_min_ == std::numeric_limits<double>::max()) {
- grid_min_ = min;
- } else {
- // in this case grid_max_ == std::numeric_limits<double>::max()
- grid_max_ = max;
- }
- }
-
- // if number_of_levels == std::numeric_limits<size_t>::max(), then we will have all the nonzero values of landscapes,
- // and will store them in a vector
- // if number_of_levels != std::numeric_limits<size_t>::max(), then we will use those vectors as heaps.
- this->values_of_landscapes = std::vector<std::vector<double> >(number_of_points_ + 1);
-
- this->grid_min = grid_min_;
- this->grid_max = grid_max_;
-
- if (grid_max_ <= grid_min_) {
- throw "Wrong parameters of grid_min and grid_max given to the procedure. The program will now terminate.\n";
- }
-
- double dx = (grid_max_ - grid_min_) / static_cast<double>(number_of_points_);
- // for every interval in the diagram:
- for (size_t int_no = 0; int_no != p.size(); ++int_no) {
- size_t grid_interval_begin = (p[int_no].first - grid_min_) / dx;
- size_t grid_interval_end = (p[int_no].second - grid_min_) / dx;
- size_t grid_interval_midpoint = (size_t)(0.5 * (grid_interval_begin + grid_interval_end));
-
- if (dbg) {
- std::cerr << "Considering an interval : " << p[int_no].first << "," << p[int_no].second << std::endl;
-
- std::cerr << "grid_interval_begin : " << grid_interval_begin << std::endl;
- std::cerr << "grid_interval_end : " << grid_interval_end << std::endl;
- std::cerr << "grid_interval_midpoint : " << grid_interval_midpoint << std::endl;
- }
-
- double landscape_value = dx;
- for (size_t i = grid_interval_begin + 1; i < grid_interval_midpoint; ++i) {
- if (dbg) {
- std::cerr << "Adding landscape value (going up) for a point : " << i << " equal : " << landscape_value
- << std::endl;
- }
- if (number_of_levels != std::numeric_limits<unsigned>::max()) {
- // we have a heap of no more that number_of_levels values.
- // Note that if we are using heaps, we want to know the shortest distance in the heap.
- // This is achieved by putting -distance to the heap.
- if (this->values_of_landscapes[i].size() >= number_of_levels) {
- // in this case, the full heap is build, and we need to check if the landscape_value is not larger than the
- // smallest element in the heap.
- if (-landscape_value < this->values_of_landscapes[i].front()) {
- // if it is, we remove the largest value in the heap, and move on.
- std::pop_heap(this->values_of_landscapes[i].begin(), this->values_of_landscapes[i].end());
- this->values_of_landscapes[i][this->values_of_landscapes[i].size() - 1] = -landscape_value;
- std::push_heap(this->values_of_landscapes[i].begin(), this->values_of_landscapes[i].end());
- }
- } else {
- // in this case we are still filling in the array.
- this->values_of_landscapes[i].push_back(-landscape_value);
- if (this->values_of_landscapes[i].size() == number_of_levels - 1) {
- // this->values_of_landscapes[i].size() == number_of_levels
- // in this case we need to create the heap.
- std::make_heap(this->values_of_landscapes[i].begin(), this->values_of_landscapes[i].end());
- }
- }
- } else {
- // we have vector of all values
- this->values_of_landscapes[i].push_back(landscape_value);
- }
- landscape_value += dx;
- }
- for (size_t i = grid_interval_midpoint; i <= grid_interval_end; ++i) {
- if (landscape_value > 0) {
- if (number_of_levels != std::numeric_limits<unsigned>::max()) {
- // we have a heap of no more that number_of_levels values
- if (this->values_of_landscapes[i].size() >= number_of_levels) {
- // in this case, the full heap is build, and we need to check if the landscape_value is not larger than the
- // smallest element in the heap.
- if (-landscape_value < this->values_of_landscapes[i].front()) {
- // if it is, we remove the largest value in the heap, and move on.
- std::pop_heap(this->values_of_landscapes[i].begin(), this->values_of_landscapes[i].end());
- this->values_of_landscapes[i][this->values_of_landscapes[i].size() - 1] = -landscape_value;
- std::push_heap(this->values_of_landscapes[i].begin(), this->values_of_landscapes[i].end());
- }
- } else {
- // in this case we are still filling in the array.
- this->values_of_landscapes[i].push_back(-landscape_value);
- if (this->values_of_landscapes[i].size() == number_of_levels - 1) {
- // this->values_of_landscapes[i].size() == number_of_levels
- // in this case we need to create the heap.
- std::make_heap(this->values_of_landscapes[i].begin(), this->values_of_landscapes[i].end());
- }
- }
- } else {
- this->values_of_landscapes[i].push_back(landscape_value);
- }
-
- if (dbg) {
- std::cerr << "Adding landscape value (going down) for a point : " << i << " equal : " << landscape_value
- << std::endl;
- }
- }
- landscape_value -= dx;
- }
- }
-
- if (number_of_levels != std::numeric_limits<unsigned>::max()) {
- // in this case, vectors are used as heaps. And, since we want to have the smallest element at the top of
- // each heap, we store minus distances. To get if right at the end, we need to multiply each value
- // in the heap by -1 to get real vector of distances.
- for (size_t pt = 0; pt != this->values_of_landscapes.size(); ++pt) {
- for (size_t j = 0; j != this->values_of_landscapes[pt].size(); ++j) {
- this->values_of_landscapes[pt][j] *= -1;
- }
- }
- }
-
- // and now we need to sort the values:
- for (size_t pt = 0; pt != this->values_of_landscapes.size(); ++pt) {
- std::sort(this->values_of_landscapes[pt].begin(), this->values_of_landscapes[pt].end(), std::greater<double>());
- }
-} // set_up_values_of_landscapes
-
-Persistence_landscape_on_grid::Persistence_landscape_on_grid(const std::vector<std::pair<double, double> >& p,
- double grid_min_, double grid_max_,
- size_t number_of_points_) {
- this->set_up_values_of_landscapes(p, grid_min_, grid_max_, number_of_points_);
-} // Persistence_landscape_on_grid
-
-Persistence_landscape_on_grid::Persistence_landscape_on_grid(const std::vector<std::pair<double, double> >& p,
- double grid_min_, double grid_max_,
- size_t number_of_points_,
- unsigned number_of_levels_of_landscape) {
- this->set_up_values_of_landscapes(p, grid_min_, grid_max_, number_of_points_, number_of_levels_of_landscape);
-}
-
-Persistence_landscape_on_grid::Persistence_landscape_on_grid(const char* filename, double grid_min_, double grid_max_,
- size_t number_of_points_, uint16_t dimension) {
- std::vector<std::pair<double, double> > p;
- if (dimension == std::numeric_limits<uint16_t>::max()) {
- p = read_persistence_intervals_in_one_dimension_from_file(filename);
- } else {
- p = read_persistence_intervals_in_one_dimension_from_file(filename, dimension);
- }
- this->set_up_values_of_landscapes(p, grid_min_, grid_max_, number_of_points_);
-}
-
-Persistence_landscape_on_grid::Persistence_landscape_on_grid(const char* filename, double grid_min_, double grid_max_,
- size_t number_of_points_,
- unsigned number_of_levels_of_landscape,
- uint16_t dimension) {
- std::vector<std::pair<double, double> > p;
- if (dimension == std::numeric_limits<uint16_t>::max()) {
- p = read_persistence_intervals_in_one_dimension_from_file(filename);
- } else {
- p = read_persistence_intervals_in_one_dimension_from_file(filename, dimension);
- }
- this->set_up_values_of_landscapes(p, grid_min_, grid_max_, number_of_points_, number_of_levels_of_landscape);
-}
-
-Persistence_landscape_on_grid::Persistence_landscape_on_grid(const char* filename, size_t number_of_points_,
- uint16_t dimension) {
- std::vector<std::pair<double, double> > p;
- if (dimension == std::numeric_limits<uint16_t>::max()) {
- p = read_persistence_intervals_in_one_dimension_from_file(filename);
- } else {
- p = read_persistence_intervals_in_one_dimension_from_file(filename, dimension);
- }
- double grid_min_ = std::numeric_limits<double>::max();
- double grid_max_ = -std::numeric_limits<double>::max();
- for (size_t i = 0; i != p.size(); ++i) {
- if (p[i].first < grid_min_) grid_min_ = p[i].first;
- if (p[i].second > grid_max_) grid_max_ = p[i].second;
- }
- this->set_up_values_of_landscapes(p, grid_min_, grid_max_, number_of_points_);
-}
-
-Persistence_landscape_on_grid::Persistence_landscape_on_grid(const char* filename, size_t number_of_points_,
- unsigned number_of_levels_of_landscape,
- uint16_t dimension) {
- std::vector<std::pair<double, double> > p;
- if (dimension == std::numeric_limits<uint16_t>::max()) {
- p = read_persistence_intervals_in_one_dimension_from_file(filename);
- } else {
- p = read_persistence_intervals_in_one_dimension_from_file(filename, dimension);
- }
- double grid_min_ = std::numeric_limits<double>::max();
- double grid_max_ = -std::numeric_limits<double>::max();
- for (size_t i = 0; i != p.size(); ++i) {
- if (p[i].first < grid_min_) grid_min_ = p[i].first;
- if (p[i].second > grid_max_) grid_max_ = p[i].second;
- }
- this->set_up_values_of_landscapes(p, grid_min_, grid_max_, number_of_points_, number_of_levels_of_landscape);
-}
-
-void Persistence_landscape_on_grid::load_landscape_from_file(const char* filename) {
- std::ifstream in;
- in.open(filename);
- // check if the file exist.
- if (!in.good()) {
- std::cerr << "The file : " << filename << " do not exist. The program will now terminate \n";
- throw "The persistence landscape file do not exist. The program will now terminate \n";
- }
-
- size_t number_of_points_in_the_grid = 0;
- in >> this->grid_min >> this->grid_max >> number_of_points_in_the_grid;
-
- std::vector<std::vector<double> > v(number_of_points_in_the_grid);
- std::string line;
- std::getline(in, line);
- double number;
- for (size_t i = 0; i != number_of_points_in_the_grid; ++i) {
- // read a line of a file and convert it to a vector.
- std::vector<double> vv;
- std::getline(in, line);
- std::istringstream stream(line);
- while (stream >> number) {
- vv.push_back(number);
- }
- v[i] = vv;
- }
- this->values_of_landscapes = v;
- in.close();
-}
-
-void Persistence_landscape_on_grid::print_to_file(const char* filename) const {
- std::ofstream out;
- out.open(filename);
-
- // first we store the parameters of the grid:
- out << grid_min << std::endl << grid_max << std::endl << this->values_of_landscapes.size() << std::endl;
-
- // and now in the following lines, the values of this->values_of_landscapes for the following arguments:
- for (size_t i = 0; i != this->values_of_landscapes.size(); ++i) {
- for (size_t j = 0; j != this->values_of_landscapes[i].size(); ++j) {
- out << this->values_of_landscapes[i][j] << " ";
- }
- out << std::endl;
- }
-
- out.close();
-}
-
-void Persistence_landscape_on_grid::plot(const char* filename, double min_x, double max_x, double min_y, double max_y,
- size_t from_, size_t to_) const {
- // this program create a gnuplot script file that allows to plot persistence diagram.
- std::ofstream out;
-
- std::ostringstream gnuplot_script;
- gnuplot_script << filename << "_GnuplotScript";
- out.open(gnuplot_script.str().c_str());
-
- if (min_x == max_x) {
- std::pair<double, double> min_max = compute_minimum_maximum();
- out << "set xrange [" << this->grid_min << " : " << this->grid_max << "]" << std::endl;
- out << "set yrange [" << min_max.first << " : " << min_max.second << "]" << std::endl;
- } else {
- out << "set xrange [" << min_x << " : " << max_x << "]" << std::endl;
- out << "set yrange [" << min_y << " : " << max_y << "]" << std::endl;
- }
-
- size_t number_of_nonzero_levels = this->number_of_nonzero_levels();
- double dx = (this->grid_max - this->grid_min) / static_cast<double>(this->values_of_landscapes.size() - 1);
-
- size_t from = 0;
- if (from_ != std::numeric_limits<size_t>::max()) {
- if (from_ < number_of_nonzero_levels) {
- from = from_;
- } else {
- return;
- }
- }
- size_t to = number_of_nonzero_levels;
- if (to_ != std::numeric_limits<size_t>::max()) {
- if (to_ < number_of_nonzero_levels) {
- to = to_;
- }
- }
-
- out << "plot ";
- for (size_t lambda = from; lambda != to; ++lambda) {
- out << " '-' using 1:2 notitle with lp";
- if (lambda + 1 != to) {
- out << ", \\";
- }
- out << std::endl;
- }
-
- for (size_t lambda = from; lambda != to; ++lambda) {
- double point = this->grid_min;
- for (size_t i = 0; i != this->values_of_landscapes.size(); ++i) {
- double value = 0;
- if (this->values_of_landscapes[i].size() > lambda) {
- value = this->values_of_landscapes[i][lambda];
- }
- out << point << " " << value << std::endl;
- point += dx;
- }
- out << "EOF" << std::endl;
- }
- std::cout << "To visualize, install gnuplot and type the command: gnuplot -persist -e \"load \'"
- << gnuplot_script.str().c_str() << "\'\"" << std::endl;
-}
-
-template <typename T>
-Persistence_landscape_on_grid operation_on_pair_of_landscapes_on_grid(const Persistence_landscape_on_grid& land1,
- const Persistence_landscape_on_grid& land2) {
- // first we need to check if the domains are the same:
- if (!check_if_defined_on_the_same_domain(land1, land2)) throw "Two grids are not compatible";
-
- T oper;
- Persistence_landscape_on_grid result;
- result.values_of_landscapes = std::vector<std::vector<double> >(land1.values_of_landscapes.size());
- result.grid_min = land1.grid_min;
- result.grid_max = land1.grid_max;
-
- // now we perform the operations:
- for (size_t grid_point = 0; grid_point != land1.values_of_landscapes.size(); ++grid_point) {
- result.values_of_landscapes[grid_point] = std::vector<double>(
- std::max(land1.values_of_landscapes[grid_point].size(), land2.values_of_landscapes[grid_point].size()));
- for (size_t lambda = 0; lambda != std::max(land1.values_of_landscapes[grid_point].size(),
- land2.values_of_landscapes[grid_point].size());
- ++lambda) {
- double value1 = 0;
- double value2 = 0;
- if (lambda < land1.values_of_landscapes[grid_point].size())
- value1 = land1.values_of_landscapes[grid_point][lambda];
- if (lambda < land2.values_of_landscapes[grid_point].size())
- value2 = land2.values_of_landscapes[grid_point][lambda];
- result.values_of_landscapes[grid_point][lambda] = oper(value1, value2);
- }
- }
-
- return result;
-}
-
-Persistence_landscape_on_grid Persistence_landscape_on_grid::multiply_lanscape_by_real_number_not_overwrite(
- double x) const {
- Persistence_landscape_on_grid result;
- result.values_of_landscapes = std::vector<std::vector<double> >(this->values_of_landscapes.size());
- result.grid_min = this->grid_min;
- result.grid_max = this->grid_max;
-
- for (size_t grid_point = 0; grid_point != this->values_of_landscapes.size(); ++grid_point) {
- result.values_of_landscapes[grid_point] = std::vector<double>(this->values_of_landscapes[grid_point].size());
- for (size_t i = 0; i != this->values_of_landscapes[grid_point].size(); ++i) {
- result.values_of_landscapes[grid_point][i] = x * this->values_of_landscapes[grid_point][i];
- }
- }
-
- return result;
-}
-
-double compute_max_norm_distance_of_landscapes(const Persistence_landscape_on_grid& first,
- const Persistence_landscape_on_grid& second) {
- double result = 0;
-
- // first we need to check if first and second is defined on the same domain"
- if (!check_if_defined_on_the_same_domain(first, second)) throw "Two grids are not compatible";
-
- for (size_t i = 0; i != first.values_of_landscapes.size(); ++i) {
- for (size_t j = 0; j != std::min(first.values_of_landscapes[i].size(), second.values_of_landscapes[i].size());
- ++j) {
- if (result < abs(first.values_of_landscapes[i][j] - second.values_of_landscapes[i][j])) {
- result = abs(first.values_of_landscapes[i][j] - second.values_of_landscapes[i][j]);
- }
- }
- if (first.values_of_landscapes[i].size() ==
- std::min(first.values_of_landscapes[i].size(), second.values_of_landscapes[i].size())) {
- for (size_t j = first.values_of_landscapes[i].size(); j != second.values_of_landscapes[i].size(); ++j) {
- if (result < second.values_of_landscapes[i][j]) result = second.values_of_landscapes[i][j];
- }
- }
- if (second.values_of_landscapes[i].size() ==
- std::min(first.values_of_landscapes[i].size(), second.values_of_landscapes[i].size())) {
- for (size_t j = second.values_of_landscapes[i].size(); j != first.values_of_landscapes[i].size(); ++j) {
- if (result < first.values_of_landscapes[i][j]) result = first.values_of_landscapes[i][j];
- }
- }
- }
- return result;
-}
-
-} // namespace Persistence_representations
-} // namespace Gudhi
-
-#endif // PERSISTENCE_LANDSCAPE_ON_GRID_H_
diff --git a/include/gudhi/Persistence_vectors.h b/include/gudhi/Persistence_vectors.h
deleted file mode 100644
index 9c04be1d..00000000
--- a/include/gudhi/Persistence_vectors.h
+++ /dev/null
@@ -1,640 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef PERSISTENCE_VECTORS_H_
-#define PERSISTENCE_VECTORS_H_
-
-// gudhi include
-#include <gudhi/read_persistence_from_file.h>
-#include <gudhi/common_persistence_representations.h>
-#include <gudhi/distance_functions.h>
-
-#include <fstream>
-#include <cmath>
-#include <algorithm>
-#include <iostream>
-#include <limits>
-#include <functional>
-#include <utility>
-#include <vector>
-
-namespace Gudhi {
-namespace Persistence_representations {
-
-template <typename T>
-struct Maximum_distance {
- double operator()(const std::pair<T, T>& f, const std::pair<T, T>& s) {
- return std::max(fabs(f.first - s.first), fabs(f.second - s.second));
- }
-};
-
-/**
- * \class Vector_distances_in_diagram Persistence_vectors.h gudhi/Persistence_vectors.h
- * \brief A class implementing persistence vectors.
- *
- * \ingroup Persistence_representations
- *
- * \details
- * This is an implementation of idea presented in the paper <i>Stable Topological Signatures for Points on 3D
- * Shapes</i> \cite Carriere_Oudot_Ovsjanikov_top_signatures_3d .<br>
- * The parameter of the class is the class that computes distance used to construct the vectors. The typical function
- * is either Euclidean of maximum (Manhattan) distance.
- *
- * This class implements the following concepts: Vectorized_topological_data, Topological_data_with_distances,
- * Real_valued_topological_data, Topological_data_with_averages, Topological_data_with_scalar_product
- **/
-template <typename F>
-class Vector_distances_in_diagram {
- public:
- /**
- * The default constructor.
- **/
- Vector_distances_in_diagram() {}
-
- /**
- * The constructor that takes as an input a multiset of persistence intervals (given as vector of birth-death
- *pairs). The second parameter is the desired length of the output vectors.
- **/
- Vector_distances_in_diagram(const std::vector<std::pair<double, double> >& intervals, size_t where_to_cut);
-
- /**
- * The constructor taking as an input a file with birth-death pairs. The second parameter is the desired length of
- *the output vectors.
- **/
- Vector_distances_in_diagram(const char* filename, size_t where_to_cut,
- unsigned dimension = std::numeric_limits<unsigned>::max());
-
- /**
- * Writing to a stream.
- **/
- template <typename K>
- friend std::ostream& operator<<(std::ostream& out, const Vector_distances_in_diagram<K>& d) {
- for (size_t i = 0; i != std::min(d.sorted_vector_of_distances.size(), d.where_to_cut); ++i) {
- out << d.sorted_vector_of_distances[i] << " ";
- }
- return out;
- }
-
- /**
- * This procedure gives the value of a vector on a given position.
- **/
- inline double vector_in_position(size_t position) const {
- if (position >= this->sorted_vector_of_distances.size())
- throw("Wrong position in accessing Vector_distances_in_diagram::sorted_vector_of_distances\n");
- return this->sorted_vector_of_distances[position];
- }
-
- /**
- * Return a size of a vector.
- **/
- inline size_t size() const { return this->sorted_vector_of_distances.size(); }
-
- /**
- * Write a vector to a file.
- **/
- void write_to_file(const char* filename) const;
-
- /**
- * Write a vector to a file.
- **/
- void print_to_file(const char* filename) const { this->write_to_file(filename); }
-
- /**
- * Loading a vector to a file.
- **/
- void load_from_file(const char* filename);
-
- /**
- * Comparison operators:
- **/
- bool operator==(const Vector_distances_in_diagram& second) const {
- if (this->sorted_vector_of_distances.size() != second.sorted_vector_of_distances.size()) return false;
- for (size_t i = 0; i != this->sorted_vector_of_distances.size(); ++i) {
- if (!almost_equal(this->sorted_vector_of_distances[i], second.sorted_vector_of_distances[i])) return false;
- }
- return true;
- }
-
- bool operator!=(const Vector_distances_in_diagram& second) const { return !(*this == second); }
-
- // Implementations of functions for various concepts.
- /**
- * Compute projection to real numbers of persistence vector. This function is required by the
- *Real_valued_topological_data concept
- * At the moment this function is not tested, since it is quite likely to be changed in the future. Given this, when
- *using it, keep in mind that it
- * will be most likely changed in the next versions.
- **/
- double project_to_R(int number_of_function) const;
- /**
- * The function gives the number of possible projections to R. This function is required by the
- *Real_valued_topological_data concept.
- **/
- size_t number_of_projections_to_R() const { return this->number_of_functions_for_projections_to_reals; }
-
- /**
- * Compute a vectorization of a persistent vectors. It is required in a concept Vectorized_topological_data.
- **/
- std::vector<double> vectorize(int number_of_function) const;
- /**
- * This function return the number of functions that allows vectorization of a persistence vector. It is required
- *in a concept Vectorized_topological_data.
- **/
- size_t number_of_vectorize_functions() const { return this->number_of_functions_for_vectorization; }
-
- /**
- * Compute a average of two persistent vectors. This function is required by Topological_data_with_averages concept.
- **/
- void compute_average(const std::vector<Vector_distances_in_diagram*>& to_average);
-
- /**
- * Compute a distance of two persistent vectors. This function is required in Topological_data_with_distances concept.
- * For max norm distance, set power to std::numeric_limits<double>::max()
- **/
- double distance(const Vector_distances_in_diagram& second, double power = 1) const;
-
- /**
- * Compute a scalar product of two persistent vectors. This function is required in
- *Topological_data_with_scalar_product concept.
- **/
- double compute_scalar_product(const Vector_distances_in_diagram& second) const;
- // end of implementation of functions needed for concepts.
-
- /**
- * For visualization use output from vectorize and build histograms.
- **/
- std::vector<double> output_for_visualization() const { return this->sorted_vector_of_distances; }
-
- /**
- * Create a gnuplot script to visualize the data structure.
- **/
- void plot(const char* filename) const {
- std::stringstream gnuplot_script;
- gnuplot_script << filename << "_GnuplotScript";
- std::ofstream out;
- out.open(gnuplot_script.str().c_str());
- out << "set style data histogram" << std::endl;
- out << "set style histogram cluster gap 1" << std::endl;
- out << "set style fill solid border -1" << std::endl;
- out << "plot '-' notitle" << std::endl;
- for (size_t i = 0; i != this->sorted_vector_of_distances.size(); ++i) {
- out << this->sorted_vector_of_distances[i] << std::endl;
- }
- out << std::endl;
- out.close();
- std::cout << "To visualize, install gnuplot and type the command: gnuplot -persist -e \"load \'"
- << gnuplot_script.str().c_str() << "\'\"" << std::endl;
- }
-
- /**
- * The x-range of the persistence vector.
- **/
- std::pair<double, double> get_x_range() const { return std::make_pair(0, this->sorted_vector_of_distances.size()); }
-
- /**
- * The y-range of the persistence vector.
- **/
- std::pair<double, double> get_y_range() const {
- if (this->sorted_vector_of_distances.size() == 0) return std::make_pair(0, 0);
- return std::make_pair(this->sorted_vector_of_distances[0], 0);
- }
-
- // arithmetic operations:
- template <typename Operation_type>
- friend Vector_distances_in_diagram operation_on_pair_of_vectors(const Vector_distances_in_diagram& first,
- const Vector_distances_in_diagram& second,
- Operation_type opertion) {
- Vector_distances_in_diagram result;
- // Operation_type operation;
- result.sorted_vector_of_distances.reserve(
- std::max(first.sorted_vector_of_distances.size(), second.sorted_vector_of_distances.size()));
- for (size_t i = 0; i != std::min(first.sorted_vector_of_distances.size(), second.sorted_vector_of_distances.size());
- ++i) {
- result.sorted_vector_of_distances.push_back(
- opertion(first.sorted_vector_of_distances[i], second.sorted_vector_of_distances[i]));
- }
- if (first.sorted_vector_of_distances.size() ==
- std::min(first.sorted_vector_of_distances.size(), second.sorted_vector_of_distances.size())) {
- for (size_t i = std::min(first.sorted_vector_of_distances.size(), second.sorted_vector_of_distances.size());
- i != std::max(first.sorted_vector_of_distances.size(), second.sorted_vector_of_distances.size()); ++i) {
- result.sorted_vector_of_distances.push_back(opertion(0, second.sorted_vector_of_distances[i]));
- }
- } else {
- for (size_t i = std::min(first.sorted_vector_of_distances.size(), second.sorted_vector_of_distances.size());
- i != std::max(first.sorted_vector_of_distances.size(), second.sorted_vector_of_distances.size()); ++i) {
- result.sorted_vector_of_distances.push_back(opertion(first.sorted_vector_of_distances[i], 0));
- }
- }
- return result;
- } // operation_on_pair_of_vectors
-
- /**
- * This function implements an operation of multiplying Vector_distances_in_diagram by a scalar.
- **/
- Vector_distances_in_diagram multiply_by_scalar(double scalar) const {
- Vector_distances_in_diagram result;
- result.sorted_vector_of_distances.reserve(this->sorted_vector_of_distances.size());
- for (size_t i = 0; i != this->sorted_vector_of_distances.size(); ++i) {
- result.sorted_vector_of_distances.push_back(scalar * this->sorted_vector_of_distances[i]);
- }
- return result;
- } // multiply_by_scalar
-
- /**
- * This function computes a sum of two objects of a type Vector_distances_in_diagram.
- **/
- friend Vector_distances_in_diagram operator+(const Vector_distances_in_diagram& first,
- const Vector_distances_in_diagram& second) {
- return operation_on_pair_of_vectors(first, second, std::plus<double>());
- }
- /**
-* This function computes a difference of two objects of a type Vector_distances_in_diagram.
-**/
- friend Vector_distances_in_diagram operator-(const Vector_distances_in_diagram& first,
- const Vector_distances_in_diagram& second) {
- return operation_on_pair_of_vectors(first, second, std::minus<double>());
- }
- /**
-* This function computes a product of an object of a type Vector_distances_in_diagram with real number.
-**/
- friend Vector_distances_in_diagram operator*(double scalar, const Vector_distances_in_diagram& A) {
- return A.multiply_by_scalar(scalar);
- }
- /**
-* This function computes a product of an object of a type Vector_distances_in_diagram with real number.
-**/
- friend Vector_distances_in_diagram operator*(const Vector_distances_in_diagram& A, double scalar) {
- return A.multiply_by_scalar(scalar);
- }
- /**
-* This function computes a product of an object of a type Vector_distances_in_diagram with real number.
-**/
- Vector_distances_in_diagram operator*(double scalar) { return this->multiply_by_scalar(scalar); }
- /**
- * += operator for Vector_distances_in_diagram.
- **/
- Vector_distances_in_diagram operator+=(const Vector_distances_in_diagram& rhs) {
- *this = *this + rhs;
- return *this;
- }
- /**
- * -= operator for Vector_distances_in_diagram.
- **/
- Vector_distances_in_diagram operator-=(const Vector_distances_in_diagram& rhs) {
- *this = *this - rhs;
- return *this;
- }
- /**
- * *= operator for Vector_distances_in_diagram.
- **/
- Vector_distances_in_diagram operator*=(double x) {
- *this = *this * x;
- return *this;
- }
- /**
- * /= operator for Vector_distances_in_diagram.
- **/
- Vector_distances_in_diagram operator/=(double x) {
- if (x == 0) throw("In operator /=, division by 0. Program terminated.");
- *this = *this * (1 / x);
- return *this;
- }
-
- private:
- std::vector<std::pair<double, double> > intervals;
- std::vector<double> sorted_vector_of_distances;
- size_t number_of_functions_for_vectorization;
- size_t number_of_functions_for_projections_to_reals;
- size_t where_to_cut;
-
- void compute_sorted_vector_of_distances_via_heap(size_t where_to_cut);
- void compute_sorted_vector_of_distances_via_vector_sorting(size_t where_to_cut);
-
- Vector_distances_in_diagram(const std::vector<double>& sorted_vector_of_distances_)
- : sorted_vector_of_distances(sorted_vector_of_distances_) {
- this->set_up_numbers_of_functions_for_vectorization_and_projections_to_reals();
- }
-
- void set_up_numbers_of_functions_for_vectorization_and_projections_to_reals() {
- // warning, this function can be only called after filling in the intervals vector.
- this->number_of_functions_for_vectorization = this->sorted_vector_of_distances.size();
- this->number_of_functions_for_projections_to_reals = this->sorted_vector_of_distances.size();
- }
-};
-
-template <typename F>
-Vector_distances_in_diagram<F>::Vector_distances_in_diagram(const std::vector<std::pair<double, double> >& intervals_,
- size_t where_to_cut_)
- : where_to_cut(where_to_cut_) {
- std::vector<std::pair<double, double> > i(intervals_);
- this->intervals = i;
- // this->compute_sorted_vector_of_distances_via_heap( where_to_cut );
- this->compute_sorted_vector_of_distances_via_vector_sorting(where_to_cut);
- this->set_up_numbers_of_functions_for_vectorization_and_projections_to_reals();
-}
-
-template <typename F>
-Vector_distances_in_diagram<F>::Vector_distances_in_diagram(const char* filename, size_t where_to_cut,
- unsigned dimension)
- : where_to_cut(where_to_cut) {
- std::vector<std::pair<double, double> > intervals;
- if (dimension == std::numeric_limits<unsigned>::max()) {
- intervals = read_persistence_intervals_in_one_dimension_from_file(filename);
- } else {
- intervals = read_persistence_intervals_in_one_dimension_from_file(filename, dimension);
- }
- this->intervals = intervals;
- this->compute_sorted_vector_of_distances_via_heap(where_to_cut);
- // this->compute_sorted_vector_of_distances_via_vector_sorting( where_to_cut );
- set_up_numbers_of_functions_for_vectorization_and_projections_to_reals();
-}
-
-template <typename F>
-void Vector_distances_in_diagram<F>::compute_sorted_vector_of_distances_via_heap(size_t where_to_cut) {
- bool dbg = false;
- if (dbg) {
- std::cerr << "Here are the intervals : \n";
- for (size_t i = 0; i != this->intervals.size(); ++i) {
- std::cerr << this->intervals[i].first << " , " << this->intervals[i].second << std::endl;
- }
- }
- where_to_cut = std::min(
- where_to_cut, (size_t)(0.5 * this->intervals.size() * (this->intervals.size() - 1) + this->intervals.size()));
-
- std::vector<double> heap(where_to_cut, std::numeric_limits<int>::max());
- std::make_heap(heap.begin(), heap.end());
- F f;
-
- // for every pair of points in the diagram, compute the minimum of their distance, and distance of those points from
- // diagonal
- for (size_t i = 0; i < this->intervals.size(); ++i) {
- for (size_t j = i + 1; j < this->intervals.size(); ++j) {
- double value = std::min(
- f(this->intervals[i], this->intervals[j]),
- std::min(
- f(this->intervals[i], std::make_pair(0.5 * (this->intervals[i].first + this->intervals[i].second),
- 0.5 * (this->intervals[i].first + this->intervals[i].second))),
- f(this->intervals[j], std::make_pair(0.5 * (this->intervals[j].first + this->intervals[j].second),
- 0.5 * (this->intervals[j].first + this->intervals[j].second)))));
-
- if (dbg) {
- std::cerr << "Value : " << value << std::endl;
- std::cerr << "heap.front() : " << heap.front() << std::endl;
- getchar();
- }
-
- if (-value < heap.front()) {
- if (dbg) {
- std::cerr << "Replacing : " << heap.front() << " with : " << -value << std::endl;
- getchar();
- }
- // remove the first element from the heap
- std::pop_heap(heap.begin(), heap.end());
- // heap.pop_back();
- // and put value there instead:
- // heap.push_back(-value);
- heap[where_to_cut - 1] = -value;
- std::push_heap(heap.begin(), heap.end());
- }
- }
- }
-
- // now add distances of all points from diagonal
- for (size_t i = 0; i < this->intervals.size(); ++i) {
- double value = f(this->intervals[i], std::make_pair(0.5 * (this->intervals[i].first + this->intervals[i].second),
- 0.5 * (this->intervals[i].first + this->intervals[i].second)));
- if (-value < heap.front()) {
- // remove the first element from the heap
- std::pop_heap(heap.begin(), heap.end());
- // heap.pop_back();
- // and put value there instead:
- // heap.push_back(-value);
- heap[where_to_cut - 1] = -value;
- std::push_heap(heap.begin(), heap.end());
- }
- }
-
- std::sort_heap(heap.begin(), heap.end());
- for (size_t i = 0; i != heap.size(); ++i) {
- if (heap[i] == std::numeric_limits<int>::max()) {
- heap[i] = 0;
- } else {
- heap[i] *= -1;
- }
- }
-
- if (dbg) {
- std::cerr << "This is the heap after all the operations :\n";
- for (size_t i = 0; i != heap.size(); ++i) {
- std::cout << heap[i] << " ";
- }
- std::cout << std::endl;
- }
-
- this->sorted_vector_of_distances = heap;
-}
-
-template <typename F>
-void Vector_distances_in_diagram<F>::compute_sorted_vector_of_distances_via_vector_sorting(size_t where_to_cut) {
- std::vector<double> distances;
- distances.reserve((size_t)(0.5 * this->intervals.size() * (this->intervals.size() - 1) + this->intervals.size()));
- F f;
-
- // for every pair of points in the diagram, compute the minimum of their distance, and distance of those points from
- // diagonal
- for (size_t i = 0; i < this->intervals.size(); ++i) {
- // add distance of i-th point in the diagram from the diagonal to the distances vector
- distances.push_back(
- f(this->intervals[i], std::make_pair(0.5 * (this->intervals[i].first + this->intervals[i].second),
- 0.5 * (this->intervals[i].first + this->intervals[i].second))));
- for (size_t j = i + 1; j < this->intervals.size(); ++j) {
- double value = std::min(
- f(this->intervals[i], this->intervals[j]),
- std::min(
- f(this->intervals[i], std::make_pair(0.5 * (this->intervals[i].first + this->intervals[i].second),
- 0.5 * (this->intervals[i].first + this->intervals[i].second))),
- f(this->intervals[j], std::make_pair(0.5 * (this->intervals[j].first + this->intervals[j].second),
- 0.5 * (this->intervals[j].first + this->intervals[j].second)))));
- distances.push_back(value);
- }
- }
- std::sort(distances.begin(), distances.end(), std::greater<double>());
- if (distances.size() > where_to_cut) distances.resize(where_to_cut);
-
- this->sorted_vector_of_distances = distances;
-}
-
-// Implementations of functions for various concepts.
-template <typename F>
-double Vector_distances_in_diagram<F>::project_to_R(int number_of_function) const {
- if ((size_t)number_of_function > this->number_of_functions_for_projections_to_reals)
- throw "Wrong index of a function in a method Vector_distances_in_diagram<F>::project_to_R";
- if (number_of_function < 0)
- throw "Wrong index of a function in a method Vector_distances_in_diagram<F>::project_to_R";
-
- double result = 0;
- for (size_t i = 0; i != (size_t)number_of_function; ++i) {
- result += sorted_vector_of_distances[i];
- }
- return result;
-}
-
-template <typename F>
-void Vector_distances_in_diagram<F>::compute_average(const std::vector<Vector_distances_in_diagram*>& to_average) {
- if (to_average.size() == 0) {
- (*this) = Vector_distances_in_diagram<F>();
- return;
- }
-
- size_t maximal_length_of_vector = 0;
- for (size_t i = 0; i != to_average.size(); ++i) {
- if (to_average[i]->sorted_vector_of_distances.size() > maximal_length_of_vector) {
- maximal_length_of_vector = to_average[i]->sorted_vector_of_distances.size();
- }
- }
-
- std::vector<double> av(maximal_length_of_vector, 0);
- for (size_t i = 0; i != to_average.size(); ++i) {
- for (size_t j = 0; j != to_average[i]->sorted_vector_of_distances.size(); ++j) {
- av[j] += to_average[i]->sorted_vector_of_distances[j];
- }
- }
-
- for (size_t i = 0; i != maximal_length_of_vector; ++i) {
- av[i] /= static_cast<double>(to_average.size());
- }
- this->sorted_vector_of_distances = av;
- this->where_to_cut = av.size();
-}
-
-template <typename F>
-double Vector_distances_in_diagram<F>::distance(const Vector_distances_in_diagram& second_, double power) const {
- bool dbg = false;
-
- if (dbg) {
- std::cerr << "Entering double Vector_distances_in_diagram<F>::distance( const Abs_Topological_data_with_distances* "
- "second , double power ) procedure \n";
- std::cerr << "Power : " << power << std::endl;
- std::cerr << "This : " << *this << std::endl;
- std::cerr << "second : " << second_ << std::endl;
- }
-
- double result = 0;
- for (size_t i = 0; i != std::min(this->sorted_vector_of_distances.size(), second_.sorted_vector_of_distances.size());
- ++i) {
- if (power == 1) {
- if (dbg) {
- std::cerr << "|" << this->sorted_vector_of_distances[i] << " - " << second_.sorted_vector_of_distances[i]
- << " | : " << fabs(this->sorted_vector_of_distances[i] - second_.sorted_vector_of_distances[i])
- << std::endl;
- }
- result += fabs(this->sorted_vector_of_distances[i] - second_.sorted_vector_of_distances[i]);
- } else {
- if (power < std::numeric_limits<double>::max()) {
- result += std::pow(fabs(this->sorted_vector_of_distances[i] - second_.sorted_vector_of_distances[i]), power);
- } else {
- // max norm
- if (result < fabs(this->sorted_vector_of_distances[i] - second_.sorted_vector_of_distances[i]))
- result = fabs(this->sorted_vector_of_distances[i] - second_.sorted_vector_of_distances[i]);
- }
- if (dbg) {
- std::cerr << "| " << this->sorted_vector_of_distances[i] << " - " << second_.sorted_vector_of_distances[i]
- << " : " << fabs(this->sorted_vector_of_distances[i] - second_.sorted_vector_of_distances[i])
- << std::endl;
- }
- }
- }
- if (this->sorted_vector_of_distances.size() != second_.sorted_vector_of_distances.size()) {
- if (this->sorted_vector_of_distances.size() > second_.sorted_vector_of_distances.size()) {
- for (size_t i = second_.sorted_vector_of_distances.size(); i != this->sorted_vector_of_distances.size(); ++i) {
- result += fabs(this->sorted_vector_of_distances[i]);
- }
- } else {
- // this->sorted_vector_of_distances.size() < second_.sorted_vector_of_distances.size()
- for (size_t i = this->sorted_vector_of_distances.size(); i != second_.sorted_vector_of_distances.size(); ++i) {
- result += fabs(second_.sorted_vector_of_distances[i]);
- }
- }
- }
-
- if (power != 1) {
- result = std::pow(result, (1.0 / power));
- }
- return result;
-}
-
-template <typename F>
-std::vector<double> Vector_distances_in_diagram<F>::vectorize(int number_of_function) const {
- if ((size_t)number_of_function > this->number_of_functions_for_vectorization)
- throw "Wrong index of a function in a method Vector_distances_in_diagram<F>::vectorize";
- if (number_of_function < 0) throw "Wrong index of a function in a method Vector_distances_in_diagram<F>::vectorize";
-
- std::vector<double> result(std::min((size_t)number_of_function, this->sorted_vector_of_distances.size()));
- for (size_t i = 0; i != std::min((size_t)number_of_function, this->sorted_vector_of_distances.size()); ++i) {
- result[i] = this->sorted_vector_of_distances[i];
- }
- return result;
-}
-
-template <typename F>
-void Vector_distances_in_diagram<F>::write_to_file(const char* filename) const {
- std::ofstream out;
- out.open(filename);
-
- for (size_t i = 0; i != this->sorted_vector_of_distances.size(); ++i) {
- out << this->sorted_vector_of_distances[i] << " ";
- }
-
- out.close();
-}
-
-template <typename F>
-void Vector_distances_in_diagram<F>::load_from_file(const char* filename) {
- std::ifstream in;
- in.open(filename);
- // check if the file exist.
- if (!in.good()) {
- std::cerr << "The file : " << filename << " do not exist. The program will now terminate \n";
- throw "The persistence landscape file do not exist. The program will now terminate \n";
- }
-
- double number;
- while (in >> number) {
- this->sorted_vector_of_distances.push_back(number);
- }
- in.close();
-}
-
-template <typename F>
-double Vector_distances_in_diagram<F>::compute_scalar_product(const Vector_distances_in_diagram& second_vector) const {
- double result = 0;
- for (size_t i = 0;
- i != std::min(this->sorted_vector_of_distances.size(), second_vector.sorted_vector_of_distances.size()); ++i) {
- result += this->sorted_vector_of_distances[i] * second_vector.sorted_vector_of_distances[i];
- }
- return result;
-}
-
-} // namespace Persistence_representations
-} // namespace Gudhi
-
-#endif // PERSISTENCE_VECTORS_H_
diff --git a/include/gudhi/Persistent_cohomology.h b/include/gudhi/Persistent_cohomology.h
deleted file mode 100644
index c51e47a5..00000000
--- a/include/gudhi/Persistent_cohomology.h
+++ /dev/null
@@ -1,769 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef PERSISTENT_COHOMOLOGY_H_
-#define PERSISTENT_COHOMOLOGY_H_
-
-#include <gudhi/Persistent_cohomology/Persistent_cohomology_column.h>
-#include <gudhi/Persistent_cohomology/Field_Zp.h>
-#include <gudhi/Simple_object_pool.h>
-
-#include <boost/intrusive/set.hpp>
-#include <boost/pending/disjoint_sets.hpp>
-#include <boost/intrusive/list.hpp>
-
-#include <map>
-#include <utility>
-#include <list>
-#include <vector>
-#include <set>
-#include <fstream> // std::ofstream
-#include <limits> // for numeric_limits<>
-#include <tuple>
-#include <algorithm>
-#include <string>
-#include <stdexcept> // for std::out_of_range
-
-namespace Gudhi {
-
-namespace persistent_cohomology {
-
-/** \brief Computes the persistent cohomology of a filtered complex.
- *
- * \ingroup persistent_cohomology
- *
- * The computation is implemented with a Compressed Annotation Matrix
- * (CAM)\cite DBLP:conf/esa/BoissonnatDM13,
- * and is adapted to the computation of Multi-Field Persistent Homology (MF)
- * \cite boissonnat:hal-00922572 .
- *
- * \implements PersistentHomology
- *
- */
-// TODO(CM): Memory allocation policy: classic, use a mempool, etc.
-template<class FilteredComplex, class CoefficientField>
-class Persistent_cohomology {
- public:
- typedef FilteredComplex Complex_ds;
- // Data attached to each simplex to interface with a Property Map.
- typedef typename Complex_ds::Simplex_key Simplex_key;
- typedef typename Complex_ds::Simplex_handle Simplex_handle;
- typedef typename Complex_ds::Filtration_value Filtration_value;
- typedef typename CoefficientField::Element Arith_element;
- // Compressed Annotation Matrix types:
- // Column type
- typedef Persistent_cohomology_column<Simplex_key, Arith_element> Column; // contains 1 set_hook
- // Cell type
- typedef typename Column::Cell Cell; // contains 2 list_hooks
- // Remark: constant_time_size must be false because base_hook_cam_h has auto_unlink link_mode
- typedef boost::intrusive::list<Cell,
- boost::intrusive::constant_time_size<false>,
- boost::intrusive::base_hook<base_hook_cam_h> > Hcell;
-
- typedef boost::intrusive::set<Column,
- boost::intrusive::constant_time_size<false> > Cam;
- // Sparse column type for the annotation of the boundary of an element.
- typedef std::vector<std::pair<Simplex_key, Arith_element> > A_ds_type;
- // Persistent interval type. The Arith_element field is used for the multi-field framework.
- typedef std::tuple<Simplex_handle, Simplex_handle, Arith_element> Persistent_interval;
-
- /** \brief Initializes the Persistent_cohomology class.
- *
- * @param[in] cpx Complex for which the persistent homology is computed.
- * cpx is a model of FilteredComplex
- * @exception std::out_of_range In case the number of simplices is more than Simplex_key type numeric limit.
- */
- explicit Persistent_cohomology(Complex_ds& cpx)
- : cpx_(&cpx),
- dim_max_(cpx.dimension()), // upper bound on the dimension of the simplices
- coeff_field_(), // initialize the field coefficient structure.
- num_simplices_(cpx_->num_simplices()), // num_simplices save to avoid to call thrice the function
- ds_rank_(num_simplices_), // union-find
- ds_parent_(num_simplices_), // union-find
- ds_repr_(num_simplices_, NULL), // union-find -> annotation vectors
- dsets_(&ds_rank_[0], &ds_parent_[0]), // union-find
- cam_(), // collection of annotation vectors
- zero_cocycles_(), // union-find -> Simplex_key of creator for 0-homology
- transverse_idx_(), // key -> row
- persistent_pairs_(),
- interval_length_policy(&cpx, 0),
- column_pool_(), // memory pools for the CAM
- cell_pool_() {
- if (cpx_->num_simplices() > std::numeric_limits<Simplex_key>::max()) {
- // num_simplices must be strictly lower than the limit, because a value is reserved for null_key.
- throw std::out_of_range("The number of simplices is more than Simplex_key type numeric limit.");
- }
- Simplex_key idx_fil = 0;
- for (auto sh : cpx_->filtration_simplex_range()) {
- cpx_->assign_key(sh, idx_fil);
- ++idx_fil;
- dsets_.make_set(cpx_->key(sh));
- }
- }
-
- /** \brief Initializes the Persistent_cohomology class.
- *
- * @param[in] cpx Complex for which the persistent homology is compiuted.
- * cpx is a model of FilteredComplex
- *
- * @param[in] persistence_dim_max if true, the persistent homology for the maximal dimension in the
- * complex is computed. If false, it is ignored. Default is false.
- */
- Persistent_cohomology(Complex_ds& cpx, bool persistence_dim_max)
- : Persistent_cohomology(cpx) {
- if (persistence_dim_max) {
- ++dim_max_;
- }
- }
-
- ~Persistent_cohomology() {
- // Clean the transversal lists
- for (auto & transverse_ref : transverse_idx_) {
- // Destruct all the cells
- transverse_ref.second.row_->clear_and_dispose([&](Cell*p){p->~Cell();});
- delete transverse_ref.second.row_;
- }
- }
-
- private:
- struct length_interval {
- length_interval(Complex_ds * cpx, Filtration_value min_length)
- : cpx_(cpx),
- min_length_(min_length) {
- }
-
- bool operator()(Simplex_handle sh1, Simplex_handle sh2) {
- return cpx_->filtration(sh2) - cpx_->filtration(sh1) > min_length_;
- }
-
- void set_length(Filtration_value new_length) {
- min_length_ = new_length;
- }
-
- Complex_ds * cpx_;
- Filtration_value min_length_;
- };
-
- public:
- /** \brief Initializes the coefficient field.*/
- void init_coefficients(int charac) {
- coeff_field_.init(charac);
- }
- /** \brief Initializes the coefficient field for multi-field persistent homology.*/
- void init_coefficients(int charac_min, int charac_max) {
- coeff_field_.init(charac_min, charac_max);
- }
-
- /** \brief Compute the persistent homology of the filtered simplicial
- * complex.
- *
- * @param[in] min_interval_length the computation discards all intervals of length
- * less or equal than min_interval_length
- *
- * Assumes that the filtration provided by the simplicial complex is
- * valid. Undefined behavior otherwise. */
- void compute_persistent_cohomology(Filtration_value min_interval_length = 0) {
- interval_length_policy.set_length(min_interval_length);
- // Compute all finite intervals
- for (auto sh : cpx_->filtration_simplex_range()) {
- int dim_simplex = cpx_->dimension(sh);
- switch (dim_simplex) {
- case 0:
- break;
- case 1:
- update_cohomology_groups_edge(sh);
- break;
- default:
- update_cohomology_groups(sh, dim_simplex);
- break;
- }
- }
- // Compute infinite intervals of dimension 0
- Simplex_key key;
- for (auto v_sh : cpx_->skeleton_simplex_range(0)) { // for all 0-dimensional simplices
- key = cpx_->key(v_sh);
-
- if (ds_parent_[key] == key // root of its tree
- && zero_cocycles_.find(key) == zero_cocycles_.end()) {
- persistent_pairs_.emplace_back(
- cpx_->simplex(key), cpx_->null_simplex(), coeff_field_.characteristic());
- }
- }
- for (auto zero_idx : zero_cocycles_) {
- persistent_pairs_.emplace_back(
- cpx_->simplex(zero_idx.second), cpx_->null_simplex(), coeff_field_.characteristic());
- }
- // Compute infinite interval of dimension > 0
- for (auto cocycle : transverse_idx_) {
- persistent_pairs_.emplace_back(
- cpx_->simplex(cocycle.first), cpx_->null_simplex(), cocycle.second.characteristics_);
- }
- }
-
- private:
- /** \brief Update the cohomology groups under the insertion of an edge.
- *
- * The 0-homology is maintained with a simple Union-Find data structure, which
- * explains the existance of a specific function of edge insertions. */
- void update_cohomology_groups_edge(Simplex_handle sigma) {
- Simplex_handle u, v;
- boost::tie(u, v) = cpx_->endpoints(sigma);
-
- Simplex_key ku = dsets_.find_set(cpx_->key(u));
- Simplex_key kv = dsets_.find_set(cpx_->key(v));
-
- if (ku != kv) { // Destroy a connected component
- dsets_.link(ku, kv);
- // Keys of the simplices which created the connected components containing
- // respectively u and v.
- Simplex_key idx_coc_u, idx_coc_v;
- auto map_it_u = zero_cocycles_.find(ku);
- // If the index of the cocycle representing the class is already ku.
- if (map_it_u == zero_cocycles_.end()) {
- idx_coc_u = ku;
- } else {
- idx_coc_u = map_it_u->second;
- }
-
- auto map_it_v = zero_cocycles_.find(kv);
- // If the index of the cocycle representing the class is already kv.
- if (map_it_v == zero_cocycles_.end()) {
- idx_coc_v = kv;
- } else {
- idx_coc_v = map_it_v->second;
- }
-
- if (cpx_->filtration(cpx_->simplex(idx_coc_u))
- < cpx_->filtration(cpx_->simplex(idx_coc_v))) { // Kill cocycle [idx_coc_v], which is younger.
- if (interval_length_policy(cpx_->simplex(idx_coc_v), sigma)) {
- persistent_pairs_.emplace_back(
- cpx_->simplex(idx_coc_v), sigma, coeff_field_.characteristic());
- }
- // Maintain the index of the 0-cocycle alive.
- if (kv != idx_coc_v) {
- zero_cocycles_.erase(map_it_v);
- }
- if (kv == dsets_.find_set(kv)) {
- if (ku != idx_coc_u) {
- zero_cocycles_.erase(map_it_u);
- }
- zero_cocycles_[kv] = idx_coc_u;
- }
- } else { // Kill cocycle [idx_coc_u], which is younger.
- if (interval_length_policy(cpx_->simplex(idx_coc_u), sigma)) {
- persistent_pairs_.emplace_back(
- cpx_->simplex(idx_coc_u), sigma, coeff_field_.characteristic());
- }
- // Maintain the index of the 0-cocycle alive.
- if (ku != idx_coc_u) {
- zero_cocycles_.erase(map_it_u);
- }
- if (ku == dsets_.find_set(ku)) {
- if (kv != idx_coc_v) {
- zero_cocycles_.erase(map_it_v);
- }
- zero_cocycles_[ku] = idx_coc_v;
- }
- }
- cpx_->assign_key(sigma, cpx_->null_key());
- } else if (dim_max_ > 1) { // If ku == kv, same connected component: create a 1-cocycle class.
- create_cocycle(sigma, coeff_field_.multiplicative_identity(), coeff_field_.characteristic());
- }
- }
-
- /*
- * Compute the annotation of the boundary of a simplex.
- */
- void annotation_of_the_boundary(
- std::map<Simplex_key, Arith_element> & map_a_ds, Simplex_handle sigma,
- int dim_sigma) {
- // traverses the boundary of sigma, keeps track of the annotation vectors,
- // with multiplicity. We used to sum the coefficients directly in
- // annotations_in_boundary by using a map, we now do it later.
- typedef std::pair<Column *, int> annotation_t;
-#ifdef GUDHI_CAN_USE_CXX11_THREAD_LOCAL
- thread_local
-#endif // GUDHI_CAN_USE_CXX11_THREAD_LOCAL
- std::vector<annotation_t> annotations_in_boundary;
- annotations_in_boundary.clear();
- int sign = 1 - 2 * (dim_sigma % 2); // \in {-1,1} provides the sign in the
- // alternate sum in the boundary.
- Simplex_key key;
- Column * curr_col;
-
- for (auto sh : cpx_->boundary_simplex_range(sigma)) {
- key = cpx_->key(sh);
- if (key != cpx_->null_key()) { // A simplex with null_key is a killer, and have null annotation
- // Find its annotation vector
- curr_col = ds_repr_[dsets_.find_set(key)];
- if (curr_col != NULL) { // and insert it in annotations_in_boundary with multyiplicative factor "sign".
- annotations_in_boundary.emplace_back(curr_col, sign);
- }
- }
- sign = -sign;
- }
- // Place identical annotations consecutively so we can easily sum their multiplicities.
- std::sort(annotations_in_boundary.begin(), annotations_in_boundary.end(),
- [](annotation_t const& a, annotation_t const& b) { return a.first < b.first; });
-
- // Sum the annotations with multiplicity, using a map<key,coeff>
- // to represent a sparse vector.
- std::pair<typename std::map<Simplex_key, Arith_element>::iterator, bool> result_insert_a_ds;
-
- for (auto ann_it = annotations_in_boundary.begin(); ann_it != annotations_in_boundary.end(); /**/) {
- Column* col = ann_it->first;
- int mult = ann_it->second;
- while (++ann_it != annotations_in_boundary.end() && ann_it->first == col) {
- mult += ann_it->second;
- }
- // The following test is just a heuristic, it is not required, and it is fine that is misses p == 0.
- if (mult != coeff_field_.additive_identity()) { // For all columns in the boundary,
- for (auto cell_ref : col->col_) { // insert every cell in map_a_ds with multiplicity
- Arith_element w_y = coeff_field_.times(cell_ref.coefficient_, mult); // coefficient * multiplicity
-
- if (w_y != coeff_field_.additive_identity()) { // if != 0
- result_insert_a_ds = map_a_ds.insert(std::pair<Simplex_key, Arith_element>(cell_ref.key_, w_y));
- if (!(result_insert_a_ds.second)) { // if cell_ref.key_ already a Key in map_a_ds
- result_insert_a_ds.first->second = coeff_field_.plus_equal(result_insert_a_ds.first->second, w_y);
- if (result_insert_a_ds.first->second == coeff_field_.additive_identity()) {
- map_a_ds.erase(result_insert_a_ds.first);
- }
- }
- }
- }
- }
- }
- }
-
- /*
- * Update the cohomology groups under the insertion of a simplex.
- */
- void update_cohomology_groups(Simplex_handle sigma, int dim_sigma) {
-// Compute the annotation of the boundary of sigma:
- std::map<Simplex_key, Arith_element> map_a_ds;
- annotation_of_the_boundary(map_a_ds, sigma, dim_sigma);
-// Update the cohomology groups:
- if (map_a_ds.empty()) { // sigma is a creator in all fields represented in coeff_field_
- if (dim_sigma < dim_max_) {
- create_cocycle(sigma, coeff_field_.multiplicative_identity(),
- coeff_field_.characteristic());
- }
- } else { // sigma is a destructor in at least a field in coeff_field_
- // Convert map_a_ds to a vector
- A_ds_type a_ds; // admits reverse iterators
- for (auto map_a_ds_ref : map_a_ds) {
- a_ds.push_back(
- std::pair<Simplex_key, Arith_element>(map_a_ds_ref.first,
- map_a_ds_ref.second));
- }
-
- Arith_element inv_x, charac;
- Arith_element prod = coeff_field_.characteristic(); // Product of characteristic of the fields
- for (auto a_ds_rit = a_ds.rbegin();
- (a_ds_rit != a_ds.rend())
- && (prod != coeff_field_.multiplicative_identity()); ++a_ds_rit) {
- std::tie(inv_x, charac) = coeff_field_.inverse(a_ds_rit->second, prod);
-
- if (inv_x != coeff_field_.additive_identity()) {
- destroy_cocycle(sigma, a_ds, a_ds_rit->first, inv_x, charac);
- prod /= charac;
- }
- }
- if (prod != coeff_field_.multiplicative_identity()
- && dim_sigma < dim_max_) {
- create_cocycle(sigma, coeff_field_.multiplicative_identity(prod), prod);
- }
- }
- }
-
- /* \brief Create a new cocycle class.
- *
- * The class is created by the insertion of the simplex sigma.
- * The methods adds a cocycle, representing the new cocycle class,
- * to the matrix representing the cohomology groups.
- * The new cocycle has value 0 on every simplex except on sigma
- * where it worths 1.*/
- void create_cocycle(Simplex_handle sigma, Arith_element x,
- Arith_element charac) {
- Simplex_key key = cpx_->key(sigma);
- // Create a column containing only one cell,
- Column * new_col = column_pool_.construct(key);
- Cell * new_cell = cell_pool_.construct(key, x, new_col);
- new_col->col_.push_back(*new_cell);
- // and insert it in the matrix, in constant time thanks to the hint cam_.end().
- // Indeed *new_col has the biggest lexicographic value because key is the
- // biggest key used so far.
- cam_.insert(cam_.end(), *new_col);
- // Update the disjoint sets data structure.
- Hcell * new_hcell = new Hcell;
- new_hcell->push_back(*new_cell);
- transverse_idx_[key] = cocycle(charac, new_hcell); // insert the new row
- ds_repr_[key] = new_col;
- }
-
- /* \brief Destroy a cocycle class.
- *
- * The cocycle class is destroyed by the insertion of sigma.
- * The methods proceeds to a reduction of the matrix representing
- * the cohomology groups using Gauss pivoting. The reduction zeros-out
- * the row containing the cell with highest key in
- * a_ds, the annotation of the boundary of simplex sigma. This key
- * is "death_key".*/
- void destroy_cocycle(Simplex_handle sigma, A_ds_type const& a_ds,
- Simplex_key death_key, Arith_element inv_x,
- Arith_element charac) {
- // Create a finite persistent interval for which the interval exists
- if (interval_length_policy(cpx_->simplex(death_key), sigma)) {
- persistent_pairs_.emplace_back(cpx_->simplex(death_key) // creator
- , sigma // destructor
- , charac); // fields
- }
-
- auto death_key_row = transverse_idx_.find(death_key); // Find the beginning of the row.
- std::pair<typename Cam::iterator, bool> result_insert_cam;
-
- auto row_cell_it = death_key_row->second.row_->begin();
-
- while (row_cell_it != death_key_row->second.row_->end()) { // Traverse all cells in
- // the row at index death_key.
- Arith_element w = coeff_field_.times_minus(inv_x, row_cell_it->coefficient_);
-
- if (w != coeff_field_.additive_identity()) {
- Column * curr_col = row_cell_it->self_col_;
- ++row_cell_it;
- // Disconnect the column from the rows in the CAM.
- for (auto& col_cell : curr_col->col_) {
- col_cell.base_hook_cam_h::unlink();
- }
-
- // Remove the column from the CAM before modifying its value
- cam_.erase(cam_.iterator_to(*curr_col));
- // Proceed to the reduction of the column
- plus_equal_column(*curr_col, a_ds, w);
-
- if (curr_col->col_.empty()) { // If the column is null
- ds_repr_[curr_col->class_key_] = NULL;
- column_pool_.destroy(curr_col); // delete curr_col;
- } else {
- // Find whether the column obtained is already in the CAM
- result_insert_cam = cam_.insert(*curr_col);
- if (result_insert_cam.second) { // If it was not in the CAM before: insertion has succeeded
- for (auto& col_cell : curr_col->col_) {
- // re-establish the row links
- transverse_idx_[col_cell.key_].row_->push_front(col_cell);
- }
- } else { // There is already an identical column in the CAM:
- // merge two disjoint sets.
- dsets_.link(curr_col->class_key_,
- result_insert_cam.first->class_key_);
-
- Simplex_key key_tmp = dsets_.find_set(curr_col->class_key_);
- ds_repr_[key_tmp] = &(*(result_insert_cam.first));
- result_insert_cam.first->class_key_ = key_tmp;
- // intrusive containers don't own their elements, we have to release them manually
- curr_col->col_.clear_and_dispose([&](Cell*p){cell_pool_.destroy(p);});
- column_pool_.destroy(curr_col); // delete curr_col;
- }
- }
- } else {
- ++row_cell_it;
- } // If w == 0, pass.
- }
-
- // Because it is a killer simplex, set the data of sigma to null_key().
- if (charac == coeff_field_.characteristic()) {
- cpx_->assign_key(sigma, cpx_->null_key());
- }
- if (death_key_row->second.characteristics_ == charac) {
- delete death_key_row->second.row_;
- transverse_idx_.erase(death_key_row);
- } else {
- death_key_row->second.characteristics_ /= charac;
- }
- }
-
- /*
- * Assign: target <- target + w * other.
- */
- void plus_equal_column(Column & target, A_ds_type const& other // value_type is pair<Simplex_key,Arith_element>
- , Arith_element w) {
- auto target_it = target.col_.begin();
- auto other_it = other.begin();
- while (target_it != target.col_.end() && other_it != other.end()) {
- if (target_it->key_ < other_it->first) {
- ++target_it;
- } else {
- if (target_it->key_ > other_it->first) {
- Cell * cell_tmp = cell_pool_.construct(Cell(other_it->first // key
- , coeff_field_.additive_identity(), &target));
-
- cell_tmp->coefficient_ = coeff_field_.plus_times_equal(cell_tmp->coefficient_, other_it->second, w);
-
- target.col_.insert(target_it, *cell_tmp);
-
- ++other_it;
- } else { // it1->key == it2->key
- // target_it->coefficient_ <- target_it->coefficient_ + other_it->second * w
- target_it->coefficient_ = coeff_field_.plus_times_equal(target_it->coefficient_, other_it->second, w);
- if (target_it->coefficient_ == coeff_field_.additive_identity()) {
- auto tmp_it = target_it;
- ++target_it;
- ++other_it; // iterators remain valid
- Cell * tmp_cell_ptr = &(*tmp_it);
- target.col_.erase(tmp_it); // removed from column
-
- cell_pool_.destroy(tmp_cell_ptr); // delete from memory
- } else {
- ++target_it;
- ++other_it;
- }
- }
- }
- }
- while (other_it != other.end()) {
- Cell * cell_tmp = cell_pool_.construct(Cell(other_it->first, coeff_field_.additive_identity(), &target));
- cell_tmp->coefficient_ = coeff_field_.plus_times_equal(cell_tmp->coefficient_, other_it->second, w);
- target.col_.insert(target.col_.end(), *cell_tmp);
-
- ++other_it;
- }
- }
-
- /*
- * Compare two intervals by length.
- */
- struct cmp_intervals_by_length {
- explicit cmp_intervals_by_length(Complex_ds * sc)
- : sc_(sc) {
- }
- bool operator()(const Persistent_interval & p1, const Persistent_interval & p2) {
- return (sc_->filtration(get < 1 > (p1)) - sc_->filtration(get < 0 > (p1))
- > sc_->filtration(get < 1 > (p2)) - sc_->filtration(get < 0 > (p2)));
- }
- Complex_ds * sc_;
- };
-
- public:
- /** \brief Output the persistence diagram in ostream.
- *
- * The file format is the following:
- * p1*...*pr dim b d
- *
- * where "dim" is the dimension of the homological feature,
- * b and d are respectively the birth and death of the feature and
- * p1*...*pr is the product of prime numbers pi such that the homology
- * feature exists in homology with Z/piZ coefficients.
- */
- void output_diagram(std::ostream& ostream = std::cout) {
- cmp_intervals_by_length cmp(cpx_);
- std::sort(std::begin(persistent_pairs_), std::end(persistent_pairs_), cmp);
- bool has_infinity = std::numeric_limits<Filtration_value>::has_infinity;
- for (auto pair : persistent_pairs_) {
- // Special case on windows, inf is "1.#INF" (cf. unitary tests and R package TDA)
- if (has_infinity && cpx_->filtration(get<1>(pair)) == std::numeric_limits<Filtration_value>::infinity()) {
- ostream << get<2>(pair) << " " << cpx_->dimension(get<0>(pair)) << " "
- << cpx_->filtration(get<0>(pair)) << " inf " << std::endl;
- } else {
- ostream << get<2>(pair) << " " << cpx_->dimension(get<0>(pair)) << " "
- << cpx_->filtration(get<0>(pair)) << " "
- << cpx_->filtration(get<1>(pair)) << " " << std::endl;
- }
- }
- }
-
- void write_output_diagram(std::string diagram_name) {
- std::ofstream diagram_out(diagram_name.c_str());
- cmp_intervals_by_length cmp(cpx_);
- std::sort(std::begin(persistent_pairs_), std::end(persistent_pairs_), cmp);
- bool has_infinity = std::numeric_limits<Filtration_value>::has_infinity;
- for (auto pair : persistent_pairs_) {
- // Special case on windows, inf is "1.#INF"
- if (has_infinity && cpx_->filtration(get<1>(pair)) == std::numeric_limits<Filtration_value>::infinity()) {
- diagram_out << cpx_->dimension(get<0>(pair)) << " "
- << cpx_->filtration(get<0>(pair)) << " inf" << std::endl;
- } else {
- diagram_out << cpx_->dimension(get<0>(pair)) << " "
- << cpx_->filtration(get<0>(pair)) << " "
- << cpx_->filtration(get<1>(pair)) << std::endl;
- }
- }
- }
-
- /** @brief Returns Betti numbers.
- * @return A vector of Betti numbers.
- */
- std::vector<int> betti_numbers() const {
- // Init Betti numbers vector with zeros until Simplicial complex dimension
- std::vector<int> betti_numbers(dim_max_, 0);
-
- for (auto pair : persistent_pairs_) {
- // Count never ended persistence intervals
- if (cpx_->null_simplex() == get<1>(pair)) {
- // Increment corresponding betti number
- betti_numbers[cpx_->dimension(get<0>(pair))] += 1;
- }
- }
- return betti_numbers;
- }
-
- /** @brief Returns the Betti number of the dimension passed by parameter.
- * @param[in] dimension The Betti number dimension to get.
- * @return Betti number of the given dimension
- *
- */
- int betti_number(int dimension) const {
- int betti_number = 0;
-
- for (auto pair : persistent_pairs_) {
- // Count never ended persistence intervals
- if (cpx_->null_simplex() == get<1>(pair)) {
- if (cpx_->dimension(get<0>(pair)) == dimension) {
- // Increment betti number found
- ++betti_number;
- }
- }
- }
- return betti_number;
- }
-
- /** @brief Returns the persistent Betti numbers.
- * @param[in] from The persistence birth limit to be added in the number \f$(persistent birth \leq from)\f$.
- * @param[in] to The persistence death limit to be added in the number \f$(persistent death > to)\f$.
- * @return A vector of persistent Betti numbers.
- */
- std::vector<int> persistent_betti_numbers(Filtration_value from, Filtration_value to) const {
- // Init Betti numbers vector with zeros until Simplicial complex dimension
- std::vector<int> betti_numbers(dim_max_, 0);
- for (auto pair : persistent_pairs_) {
- // Count persistence intervals that covers the given interval
- // null_simplex test : if the function is called with to=+infinity, we still get something useful. And it will
- // still work if we change the complex filtration function to reject null simplices.
- if (cpx_->filtration(get<0>(pair)) <= from &&
- (get<1>(pair) == cpx_->null_simplex() || cpx_->filtration(get<1>(pair)) > to)) {
- // Increment corresponding betti number
- betti_numbers[cpx_->dimension(get<0>(pair))] += 1;
- }
- }
- return betti_numbers;
- }
-
- /** @brief Returns the persistent Betti number of the dimension passed by parameter.
- * @param[in] dimension The Betti number dimension to get.
- * @param[in] from The persistence birth limit to be added in the number \f$(persistent birth \leq from)\f$.
- * @param[in] to The persistence death limit to be added in the number \f$(persistent death > to)\f$.
- * @return Persistent Betti number of the given dimension
- */
- int persistent_betti_number(int dimension, Filtration_value from, Filtration_value to) const {
- int betti_number = 0;
-
- for (auto pair : persistent_pairs_) {
- // Count persistence intervals that covers the given interval
- // null_simplex test : if the function is called with to=+infinity, we still get something useful. And it will
- // still work if we change the complex filtration function to reject null simplices.
- if (cpx_->filtration(get<0>(pair)) <= from &&
- (get<1>(pair) == cpx_->null_simplex() || cpx_->filtration(get<1>(pair)) > to)) {
- if (cpx_->dimension(get<0>(pair)) == dimension) {
- // Increment betti number found
- ++betti_number;
- }
- }
- }
- return betti_number;
- }
-
- /** @brief Returns the persistent pairs.
- * @return Persistent pairs
- *
- */
- const std::vector<Persistent_interval>& get_persistent_pairs() const {
- return persistent_pairs_;
- }
-
- /** @brief Returns persistence intervals for a given dimension.
- * @param[in] dimension Dimension to get the birth and death pairs from.
- * @return A vector of persistence intervals (birth and death) on a fixed dimension.
- */
- std::vector< std::pair< Filtration_value , Filtration_value > >
- intervals_in_dimension(int dimension) {
- std::vector< std::pair< Filtration_value , Filtration_value > > result;
- // auto && pair, to avoid unnecessary copying
- for (auto && pair : persistent_pairs_) {
- if (cpx_->dimension(get<0>(pair)) == dimension) {
- result.emplace_back(cpx_->filtration(get<0>(pair)), cpx_->filtration(get<1>(pair)));
- }
- }
- return result;
- }
-
- private:
- /*
- * Structure representing a cocycle.
- */
- struct cocycle {
- cocycle()
- : row_(nullptr),
- characteristics_() {
- }
- cocycle(Arith_element characteristics, Hcell * row)
- : row_(row),
- characteristics_(characteristics) {
- }
-
- Hcell * row_; // points to the corresponding row in the CAM
- Arith_element characteristics_; // product of field characteristics for which the cocycle exist
- };
-
- public:
- Complex_ds * cpx_;
- int dim_max_;
- CoefficientField coeff_field_;
- size_t num_simplices_;
-
- /* Disjoint sets data structure to link the model of FilteredComplex
- * with the compressed annotation matrix.
- * ds_rank_ is a property map Simplex_key -> int, ds_parent_ is a property map
- * Simplex_key -> simplex_key_t */
- std::vector<int> ds_rank_;
- std::vector<Simplex_key> ds_parent_;
- std::vector<Column *> ds_repr_;
- boost::disjoint_sets<int *, Simplex_key *> dsets_;
- /* The compressed annotation matrix fields.*/
- Cam cam_;
- /* Dictionary establishing the correspondance between the Simplex_key of
- * the root vertex in the union-find ds and the Simplex_key of the vertex which
- * created the connected component as a 0-dimension homology feature.*/
- std::map<Simplex_key, Simplex_key> zero_cocycles_;
- /* Key -> row. */
- std::map<Simplex_key, cocycle> transverse_idx_;
- /* Persistent intervals. */
- std::vector<Persistent_interval> persistent_pairs_;
- length_interval interval_length_policy;
-
- Simple_object_pool<Column> column_pool_;
- Simple_object_pool<Cell> cell_pool_;
-};
-
-} // namespace persistent_cohomology
-
-} // namespace Gudhi
-
-#endif // PERSISTENT_COHOMOLOGY_H_
diff --git a/include/gudhi/Persistent_cohomology/Field_Zp.h b/include/gudhi/Persistent_cohomology/Field_Zp.h
deleted file mode 100644
index e98b4bb4..00000000
--- a/include/gudhi/Persistent_cohomology/Field_Zp.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef PERSISTENT_COHOMOLOGY_FIELD_ZP_H_
-#define PERSISTENT_COHOMOLOGY_FIELD_ZP_H_
-
-#include <utility>
-#include <vector>
-
-namespace Gudhi {
-
-namespace persistent_cohomology {
-
-/** \brief Structure representing the coefficient field \f$\mathbb{Z}/p\mathbb{Z}\f$
- *
- * \implements CoefficientField
- * \ingroup persistent_cohomology
- */
-class Field_Zp {
- public:
- typedef int Element;
-
- Field_Zp()
- : Prime(0),
- inverse_() {
- }
-
- void init(int charac) {
- assert(charac > 0); // division by zero + non negative values
- Prime = charac;
- inverse_.clear();
- inverse_.reserve(charac);
- inverse_.push_back(0);
- for (int i = 1; i < Prime; ++i) {
- int inv = 1;
- while (((inv * i) % Prime) != 1)
- ++inv;
- inverse_.push_back(inv);
- }
- }
-
- /** Set x <- x + w * y*/
- Element plus_times_equal(const Element& x, const Element& y, const Element& w) {
- assert(Prime > 0); // division by zero + non negative values
- Element result = (x + w * y) % Prime;
- if (result < 0)
- result += Prime;
- return result;
- }
-
-// operator= defined on Element
-
- /** Returns y * w */
- Element times(const Element& y, const Element& w) {
- return plus_times_equal(0, y, (Element)w);
- }
-
- Element plus_equal(const Element& x, const Element& y) {
- return plus_times_equal(x, y, (Element)1);
- }
-
- /** \brief Returns the additive idendity \f$0_{\Bbbk}\f$ of the field.*/
- Element additive_identity() const {
- return 0;
- }
- /** \brief Returns the multiplicative identity \f$1_{\Bbbk}\f$ of the field.*/
- Element multiplicative_identity(Element = 0) const {
- return 1;
- }
- /** Returns the inverse in the field. Modifies P. ??? */
- std::pair<Element, Element> inverse(Element x, Element P) {
- return std::pair<Element, Element>(inverse_[x], P);
- } // <------ return the product of field characteristic for which x is invertible
-
- /** Returns -x * y.*/
- Element times_minus(Element x, Element y) {
- assert(Prime > 0); // division by zero + non negative values
- Element out = (-x * y) % Prime;
- return (out < 0) ? out + Prime : out;
- }
-
- /** \brief Returns the characteristic \f$p\f$ of the field.*/
- int characteristic() const {
- return Prime;
- }
-
- private:
- int Prime;
- /** Property map Element -> Element, which associate to an element its inverse in the field.*/
- std::vector<Element> inverse_;
-};
-
-} // namespace persistent_cohomology
-
-} // namespace Gudhi
-
-#endif // PERSISTENT_COHOMOLOGY_FIELD_ZP_H_
diff --git a/include/gudhi/Persistent_cohomology/Multi_field.h b/include/gudhi/Persistent_cohomology/Multi_field.h
deleted file mode 100644
index 2bae8654..00000000
--- a/include/gudhi/Persistent_cohomology/Multi_field.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef PERSISTENT_COHOMOLOGY_MULTI_FIELD_H_
-#define PERSISTENT_COHOMOLOGY_MULTI_FIELD_H_
-
-#include <gmpxx.h>
-
-#include <vector>
-#include <utility>
-
-namespace Gudhi {
-
-namespace persistent_cohomology {
-
-/** \brief Structure representing coefficients in a set of finite fields simultaneously
- * using the chinese remainder theorem.
- *
- * \implements CoefficientField
- * \ingroup persistent_cohomology
-
- * Details on the algorithms may be found in \cite boissonnat:hal-00922572
- */
-class Multi_field {
- public:
- typedef mpz_class Element;
-
- Multi_field()
- : prod_characteristics_(0),
- mult_id_all(0),
- add_id_all(0) {
- }
-
- /* Initialize the multi-field. The generation of prime numbers might fail with
- * a very small probability.*/
- void init(int min_prime, int max_prime) {
- if (max_prime < 2) {
- std::cerr << "There is no prime less than " << max_prime << std::endl;
- }
- if (min_prime > max_prime) {
- std::cerr << "No prime in [" << min_prime << ":" << max_prime << "]"
- << std::endl;
- }
- // fill the list of prime numbers
- int curr_prime = min_prime;
- mpz_t tmp_prime;
- mpz_init_set_ui(tmp_prime, min_prime);
- // test if min_prime is prime
- int is_prime = mpz_probab_prime_p(tmp_prime, 25); // probabilistic primality test
-
- if (is_prime == 0) { // min_prime is composite
- mpz_nextprime(tmp_prime, tmp_prime);
- curr_prime = mpz_get_ui(tmp_prime);
- }
-
- while (curr_prime <= max_prime) {
- primes_.push_back(curr_prime);
- mpz_nextprime(tmp_prime, tmp_prime);
- curr_prime = mpz_get_ui(tmp_prime);
- }
- mpz_clear(tmp_prime);
- // set m to primorial(bound_prime)
- prod_characteristics_ = 1;
- for (auto p : primes_) {
- prod_characteristics_ *= p;
- }
-
- // Uvect_
- Element Ui;
- Element tmp_elem;
- for (auto p : primes_) {
- assert(p > 0); // division by zero + non negative values
- tmp_elem = prod_characteristics_ / p;
- // Element tmp_elem_bis = 10;
- mpz_powm_ui(tmp_elem.get_mpz_t(), tmp_elem.get_mpz_t(), p - 1,
- prod_characteristics_.get_mpz_t());
- Uvect_.push_back(tmp_elem);
- }
- mult_id_all = 0;
- for (auto uvect : Uvect_) {
- assert(prod_characteristics_ > 0); // division by zero + non negative values
- mult_id_all = (mult_id_all + uvect) % prod_characteristics_;
- }
- }
-
- /** \brief Returns the additive idendity \f$0_{\Bbbk}\f$ of the field.*/
- const Element& additive_identity() const {
- return add_id_all;
- }
- /** \brief Returns the multiplicative identity \f$1_{\Bbbk}\f$ of the field.*/
- const Element& multiplicative_identity() const {
- return mult_id_all;
- } // 1 everywhere
-
- Element multiplicative_identity(Element Q) {
- if (Q == prod_characteristics_) {
- return multiplicative_identity();
- }
-
- assert(prod_characteristics_ > 0); // division by zero + non negative values
- Element mult_id = 0;
- for (unsigned int idx = 0; idx < primes_.size(); ++idx) {
- assert(primes_[idx] > 0); // division by zero + non negative values
- if ((Q % primes_[idx]) == 0) {
- mult_id = (mult_id + Uvect_[idx]) % prod_characteristics_;
- }
- }
- return mult_id;
- }
-
- /** Returns y * w */
- Element times(const Element& y, const Element& w) {
- return plus_times_equal(0, y, w);
- }
-
- Element plus_equal(const Element& x, const Element& y) {
- return plus_times_equal(x, y, (Element)1);
- }
-
- /** \brief Returns the characteristic \f$p\f$ of the field.*/
- const Element& characteristic() const {
- return prod_characteristics_;
- }
-
- /** Returns the inverse in the field. Modifies P. ??? */
- std::pair<Element, Element> inverse(Element x, Element QS) {
- Element QR;
- mpz_gcd(QR.get_mpz_t(), x.get_mpz_t(), QS.get_mpz_t()); // QR <- gcd(x,QS)
- if (QR == QS)
- return std::pair<Element, Element>(additive_identity(), multiplicative_identity()); // partial inverse is 0
- Element QT = QS / QR;
- Element inv_qt;
- mpz_invert(inv_qt.get_mpz_t(), x.get_mpz_t(), QT.get_mpz_t());
-
- assert(prod_characteristics_ > 0); // division by zero + non negative values
- return { (inv_qt * multiplicative_identity(QT)) % prod_characteristics_, QT };
- }
- /** Returns -x * y.*/
- Element times_minus(const Element& x, const Element& y) {
- assert(prod_characteristics_ > 0); // division by zero + non negative values
- /* This assumes that (x*y)%pc cannot be zero, but Field_Zp has specific code for the 0 case ??? */
- return prod_characteristics_ - ((x * y) % prod_characteristics_);
- }
-
- /** Set x <- x + w * y*/
- Element plus_times_equal(const Element& x, const Element& y, const Element& w) {
- assert(prod_characteristics_ > 0); // division by zero + non negative values
- Element result = (x + w * y) % prod_characteristics_;
- if (result < 0)
- result += prod_characteristics_;
- return result;
- }
-
- Element prod_characteristics_; // product of characteristics of the fields
- // represented by the multi-field class
- std::vector<int> primes_; // all the characteristics of the fields
- std::vector<Element> Uvect_;
- Element mult_id_all;
- const Element add_id_all;
-};
-
-} // namespace persistent_cohomology
-
-} // namespace Gudhi
-
-#endif // PERSISTENT_COHOMOLOGY_MULTI_FIELD_H_
diff --git a/include/gudhi/Persistent_cohomology/Persistent_cohomology_column.h b/include/gudhi/Persistent_cohomology/Persistent_cohomology_column.h
deleted file mode 100644
index de6c0750..00000000
--- a/include/gudhi/Persistent_cohomology/Persistent_cohomology_column.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef PERSISTENT_COHOMOLOGY_PERSISTENT_COHOMOLOGY_COLUMN_H_
-#define PERSISTENT_COHOMOLOGY_PERSISTENT_COHOMOLOGY_COLUMN_H_
-
-#include <boost/intrusive/set.hpp>
-#include <boost/intrusive/list.hpp>
-
-#include <list>
-
-namespace Gudhi {
-
-namespace persistent_cohomology {
-
-template<typename SimplexKey, typename ArithmeticElement>
-class Persistent_cohomology_column;
-
-struct cam_h_tag;
-// for horizontal traversal in the CAM
-struct cam_v_tag;
-// for vertical traversal in the CAM
-
-typedef boost::intrusive::list_base_hook<boost::intrusive::tag<cam_h_tag>,
- boost::intrusive::link_mode<boost::intrusive::auto_unlink> // allows .unlink()
-> base_hook_cam_h;
-
-typedef boost::intrusive::list_base_hook<boost::intrusive::tag<cam_v_tag>,
- boost::intrusive::link_mode<boost::intrusive::normal_link> // faster hook, less safe
-> base_hook_cam_v;
-
-/** \internal
- * \brief
- *
- */
-template<typename SimplexKey, typename ArithmeticElement>
-class Persistent_cohomology_cell : public base_hook_cam_h,
- public base_hook_cam_v {
- public:
- template<class T1, class T2> friend class Persistent_cohomology;
- friend class Persistent_cohomology_column<SimplexKey, ArithmeticElement>;
-
- typedef Persistent_cohomology_column<SimplexKey, ArithmeticElement> Column;
-
- Persistent_cohomology_cell(SimplexKey key, ArithmeticElement x,
- Column * self_col)
- : key_(key),
- coefficient_(x),
- self_col_(self_col) {
- }
-
- SimplexKey key_;
- ArithmeticElement coefficient_;
- Column * self_col_;
-};
-
-/*
- * \brief Sparse column for the Compressed Annotation Matrix.
- *
- * The non-zero coefficients of the column are stored in a
- * boost::intrusive::list. Contains a hook to be stored in a
- * boost::intrusive::set.
- *
- * Movable but not Copyable.
- */
-template<typename SimplexKey, typename ArithmeticElement>
-class Persistent_cohomology_column : public boost::intrusive::set_base_hook<
- boost::intrusive::link_mode<boost::intrusive::normal_link> > {
- template<class T1, class T2> friend class Persistent_cohomology;
-
- public:
- typedef Persistent_cohomology_cell<SimplexKey, ArithmeticElement> Cell;
- typedef boost::intrusive::list<Cell,
- boost::intrusive::constant_time_size<false>,
- boost::intrusive::base_hook<base_hook_cam_v> > Col_type;
-
- /** \brief Creates an empty column.*/
- explicit Persistent_cohomology_column(SimplexKey key)
- : col_(),
- class_key_(key) {}
-
- /** \brief Returns true iff the column is null.*/
- bool is_null() const {
- return col_.empty();
- }
- /** \brief Returns the key of the representative simplex of
- * the set of simplices having this column as annotation vector
- * in the compressed annotation matrix.*/
- SimplexKey class_key() const {
- return class_key_;
- }
-
- /** \brief Lexicographic comparison of two columns.*/
- friend bool operator<(const Persistent_cohomology_column& c1,
- const Persistent_cohomology_column& c2) {
- typename Col_type::const_iterator it1 = c1.col_.begin();
- typename Col_type::const_iterator it2 = c2.col_.begin();
- while (it1 != c1.col_.end() && it2 != c2.col_.end()) {
- if (it1->key_ == it2->key_) {
- if (it1->coefficient_ == it2->coefficient_) {
- ++it1;
- ++it2;
- } else {
- return it1->coefficient_ < it2->coefficient_;
- }
- } else {
- return it1->key_ < it2->key_;
- }
- }
- return (it2 != c2.col_.end());
- }
-
- Col_type col_;
- SimplexKey class_key_;
-};
-
-} // namespace persistent_cohomology
-
-} // namespace Gudhi
-
-#endif // PERSISTENT_COHOMOLOGY_PERSISTENT_COHOMOLOGY_COLUMN_H_
diff --git a/include/gudhi/Point.h b/include/gudhi/Point.h
deleted file mode 100644
index 345a8465..00000000
--- a/include/gudhi/Point.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef POINT_H_
-#define POINT_H_
-
-#include <cmath>
-#include <vector>
-#include <cassert>
-#include <cstddef>
-#include <initializer_list>
-
-class Point_d {
- public:
- Point_d(size_t dim = 3) : coords_(dim, 0) { }
-
- Point_d(const Point_d& other) : coords_(other.coords_) { }
-
- Point_d(const std::initializer_list<double>& list) : coords_(list) { }
-
- template<typename CoordsIt>
- Point_d(CoordsIt begin, CoordsIt end) : coords_(begin, end) { }
-
- size_t dimension() const {
- return coords_.size();
- }
-
- double x() const {
- return coords_[0];
- }
-
- double y() const {
- return coords_[1];
- }
-
- double z() const {
- return coords_[2];
- }
-
- double& x() {
- return coords_[0];
- }
-
- double& y() {
- return coords_[1];
- }
-
- double& z() {
- return coords_[2];
- }
-
- std::vector<double>::const_iterator begin() const {
- return coords_.begin();
- }
-
- std::vector<double>::const_iterator end() const {
- return coords_.end();
- }
-
- double& operator[](unsigned i) {
- return coords_[i];
- }
-
- const double& operator[](unsigned i) const {
- return coords_[i];
- }
-
- double squared_norm() const {
- double res = 0;
- for (auto x : coords_)
- res += x * x;
- return res;
- }
-
- friend double squared_dist(const Point_d& p1, const Point_d& p2) {
- assert(p1.dimension() == p2.dimension());
- double res = 0;
- for (unsigned i = 0; i < p1.coords_.size(); ++i)
- res += (p1[i] - p2[i])*(p1[i] - p2[i]);
- return res;
- }
-
- /**
- * dot product
- */
- double operator*(const Point_d& other) const {
- assert(dimension() == other.dimension());
- double res = 0;
- for (unsigned i = 0; i < coords_.size(); ++i)
- res += coords_[i] * other[i];
- return res;
- }
-
- /**
- * only if points have dimension 3
- */
- Point_d cross_product(const Point_d& other) {
- assert(dimension() == 3 && other.dimension() == 3);
- Point_d res(3);
- res[0] = (*this)[1] * other[2] - (*this)[2] * other[1];
- res[1] = (*this)[2] * other[0] - (*this)[0] * other[2];
- res[2] = (*this)[0] * other[1] - (*this)[1] * other[0];
- return res;
- }
-
- Point_d operator+(const Point_d& other) const {
- assert(dimension() == other.dimension());
- Point_d res(dimension());
- for (unsigned i = 0; i < coords_.size(); ++i)
- res[i] = (*this)[i] + other[i];
- return res;
- }
-
- Point_d operator*(double lambda) const {
- Point_d res(dimension());
- for (unsigned i = 0; i < coords_.size(); ++i)
- res[i] = (*this)[i] * lambda;
- return res;
- }
-
- Point_d operator/(double lambda) const {
- Point_d res(dimension());
- for (unsigned i = 0; i < coords_.size(); ++i)
- res[i] = (*this)[i] / lambda;
- return res;
- }
-
- Point_d operator-(const Point_d& other) const {
- assert(dimension() == other.dimension());
- Point_d res(dimension());
- for (unsigned i = 0; i < coords_.size(); ++i)
- res[i] = (*this)[i] - other[i];
- return res;
- }
-
- friend Point_d unit_normal(const Point_d& p1, const Point_d& p2, const Point_d& p3) {
- assert(p1.dimension() == 3);
- assert(p2.dimension() == 3);
- assert(p3.dimension() == 3);
- Point_d p1p2 = p2 - p1;
- Point_d p1p3 = p3 - p1;
- Point_d res(p1p2.cross_product(p1p3));
- return res / std::sqrt(res.squared_norm());
- }
-
- private:
- std::vector<double> coords_;
-};
-
-#endif // POINT_H_
diff --git a/include/gudhi/Points_3D_off_io.h b/include/gudhi/Points_3D_off_io.h
deleted file mode 100644
index 704f73a7..00000000
--- a/include/gudhi/Points_3D_off_io.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef POINTS_3D_OFF_IO_H_
-#define POINTS_3D_OFF_IO_H_
-
-#include <gudhi/Off_reader.h>
-
-#include <string>
-#include <vector>
-#include <fstream>
-#include <map>
-
-namespace Gudhi {
-
-/**
- * @brief OFF file visitor implementation according to Off_reader in order to read points from an OFF file.
- */
-template<typename Point_3>
-class Points_3D_off_visitor_reader {
- private:
- std::vector<Point_3> point_cloud_;
- bool valid_;
-
- public:
- /** @brief Off_reader visitor init implementation.
- *
- * The init parameters are set from OFF file header.
- * Dimension value is required and the value must be 3.
- *
- * @param[in] dim space dimension of vertices.
- * @param[in] num_vertices number of vertices in the OFF file (not used).
- * @param[in] num_faces number of faces in the OFF file (not used).
- * @param[in] num_edges number of edges in the OFF file (not used).
- */
- void init(int dim, int num_vertices, int num_faces, int num_edges) {
-#ifdef DEBUG_TRACES
- std::cout << "Points_3D_off_visitor_reader::init - dim=" << dim << " - num_vertices=" <<
- num_vertices << " - num_faces=" << num_faces << " - num_edges=" << num_edges << std::endl;
-#endif // DEBUG_TRACES
- if (dim == 3) {
- valid_ = true;
- } else {
- valid_ = false;
- std::cerr << "Points_3D_off_reader::Points_3D_off_reader cannot read OFF files in dimension " << dim << "\n";
- }
-
- if (num_faces > 0) {
- std::cerr << "Points_3D_off_visitor_reader::init faces are not taken into account from OFF file for Points.\n";
- }
- if (num_edges > 0) {
- std::cerr << "Points_3D_off_visitor_reader::init edges are not taken into account from OFF file for Points.\n";
- }
- }
-
- /** @brief Off_reader visitor point implementation.
- *
- * The point function is called on each vertex line from OFF file.
- * This function inserts the vertex in the vector of points.
- *
- * @param[in] point vector of vertex coordinates.
- *
- * @details
- * Point_3 must have a constructor with the following form:
- *
- * @code template<class InputIterator > Point_3::Point_3(double x, double y, double z) @endcode
- */
- void point(const std::vector<double>& point) {
- if (valid_) {
-#ifdef DEBUG_TRACES
- std::cout << "Points_3D_off_visitor_reader::point ";
- for (auto coordinate : point) {
- std::cout << coordinate << " | ";
- }
- std::cout << std::endl;
-#endif // DEBUG_TRACES
- // Fill the point cloud
- point_cloud_.push_back(Point_3(point[0], point[1], point[2]));
- }
- }
-
- // Off_reader visitor maximal_face implementation - Only points are read
-
- void maximal_face(const std::vector<int>& face) { }
-
- // Off_reader visitor done implementation - Only points are read
-
- void done() { }
-
- /** @brief Point cloud getter.
- *
- * @return The point cloud.
- */
- const std::vector<Point_3>& get_point_cloud() const {
- return point_cloud_;
- }
-
- /** @brief Returns if the OFF file read operation was successful or not.
- *
- * @return OFF file read status.
- */
- bool is_valid() const {
- return valid_;
- }
-};
-
-/**
- * \@brief OFF file reader implementation in order to read dimension 3 points from an OFF file.
- *
- * @details
- * This class is using the Points_3D_off_visitor_reader to visit the OFF file according to Off_reader.
- *
- * Point_3 must have a constructor with the following form:
- *
- * @code template<class InputIterator > Point_3::Point_3(double x, double y, double z) @endcode
- *
- * @section point3doffioexample Example
- *
- * This example loads points from an OFF file and builds a vector of CGAL points in dimension 3.
- * Then, it is asked to display the points.
- *
- * @include common/example_CGAL_3D_points_off_reader.cpp
- *
- * When launching:
- *
- * @code $> ./cgal3Doffreader ../../data/points/tore3D_300.off
- * @endcode
- *
- * the program output is:
- *
- * @include common/cgal3Doffreader_result.txt
- */
-template<typename Point_3>
-class Points_3D_off_reader {
- public:
- /** @brief Reads the OFF file and constructs a vector of points from the points
- * that are in the OFF file.
- *
- * @param[in] name_file OFF file to read.
- *
- * @post Check with is_valid() function to see if read operation was successful.
- */
- Points_3D_off_reader(const std::string& name_file)
- : valid_(false) {
- std::ifstream stream(name_file);
- if (stream.is_open()) {
- Off_reader off_reader(stream);
- Points_3D_off_visitor_reader<Point_3> off_visitor;
- valid_ = off_reader.read(off_visitor);
- valid_ = valid_ && off_visitor.is_valid();
- if (valid_) {
- point_cloud = off_visitor.get_point_cloud();
- }
- } else {
- std::cerr << "Points_3D_off_reader::Points_3D_off_reader could not open file " << name_file << "\n";
- }
- }
-
- /** @brief Returns if the OFF file read operation was successful or not.
- *
- * @return OFF file read status.
- */
- bool is_valid() const {
- return valid_;
- }
-
- /** @brief Point cloud getter.
- *
- * @return point_cloud.
- */
- const std::vector<Point_3>& get_point_cloud() const {
- return point_cloud;
- }
-
- private:
- /** @brief point_cloud.*/
- std::vector<Point_3> point_cloud;
- /** @brief OFF file read status.*/
- bool valid_;
-};
-
-} // namespace Gudhi
-
-#endif // POINTS_3D_OFF_IO_H_
diff --git a/include/gudhi/Points_off_io.h b/include/gudhi/Points_off_io.h
deleted file mode 100644
index 38029658..00000000
--- a/include/gudhi/Points_off_io.h
+++ /dev/null
@@ -1,183 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef POINTS_OFF_IO_H_
-#define POINTS_OFF_IO_H_
-
-#include <gudhi/Off_reader.h>
-
-#include <string>
-#include <vector>
-#include <fstream>
-#include <map>
-
-namespace Gudhi {
-
-/**
- * \brief OFF file visitor implementation according to Off_reader in order to read points from an OFF file.
- */
-template<typename Point_d>
-class Points_off_visitor_reader {
- private:
- std::vector<Point_d> point_cloud;
-
- public:
- /** \brief Off_reader visitor init implementation.
- *
- * The init parameters are set from OFF file header.
- * Dimension value is required in order to construct a vector of points.
- *
- * @param[in] dim space dimension of vertices.
- * @param[in] num_vertices number of vertices in the OFF file (not used).
- * @param[in] num_faces number of faces in the OFF file (not used).
- * @param[in] num_edges number of edges in the OFF file (not used).
- */
- void init(int dim, int num_vertices, int num_faces, int num_edges) {
-#ifdef DEBUG_TRACES
- std::cout << "Points_off_visitor_reader::init - dim=" << dim << " - num_vertices=" <<
- num_vertices << " - num_faces=" << num_faces << " - num_edges=" << num_edges << std::endl;
-#endif // DEBUG_TRACES
- if (num_faces > 0) {
- std::cerr << "Points_off_visitor_reader::init faces are not taken into account from OFF file for Points.\n";
- }
- if (num_edges > 0) {
- std::cerr << "Points_off_visitor_reader::init edges are not taken into account from OFF file for Points.\n";
- }
- }
-
- /** @brief Off_reader visitor point implementation.
- *
- * The point function is called on each vertex line from OFF file.
- * This function inserts the vertex in the vector of points.
- *
- * @param[in] point vector of vertex coordinates.
- *
- * @details
- * Point_d must have a constructor with the following form:
- *
- * @code template<class InputIterator > Point_d::Point_d(InputIterator first, InputIterator last) @endcode
- *
- */
- void point(const std::vector<double>& point) {
-#ifdef DEBUG_TRACES
- std::cout << "Points_off_visitor_reader::point ";
- for (auto coordinate : point) {
- std::cout << coordinate << " | ";
- }
- std::cout << std::endl;
-#endif // DEBUG_TRACES
- // Fill the point cloud
- point_cloud.push_back(Point_d(point.begin(), point.end()));
- }
-
- // Off_reader visitor maximal_face implementation - Only points are read
- void maximal_face(const std::vector<int>& face) { }
-
- // Off_reader visitor done implementation - Only points are read
- void done() { }
-
- /** \brief Point cloud getter.
- *
- * @return point_cloud.
- */
- const std::vector<Point_d>& get_point_cloud() const {
- return point_cloud;
- }
-};
-
-/**
- * \brief OFF file reader implementation in order to read points from an OFF file.
- *
- * This class is using the Points_off_visitor_reader to visit the OFF file according to Off_reader.
- *
- * Point_d must have a constructor with the following form:
- *
- * \code template<class InputIterator > Point_d::Point_d(int d, InputIterator first, InputIterator last) \endcode
- *
- * where d is the point dimension.
- *
- * \section pointoffioexample Example
- *
- * This example loads points from an OFF file and builds a vector of points (vector of double).
- * Then, it is asked to display the points.
- *
- * \include common/example_vector_double_points_off_reader.cpp
- *
- * When launching:
- *
- * \code $> ./vector_double_off_reader ../../data/points/alphacomplexdoc.off
- * \endcode
- *
- * the program outputs a file ../../data/points/alphacomplexdoc.off.txt:
- *
- * \include common/vectordoubleoffreader_result.txt
- */
-template<typename Point_d>
-class Points_off_reader {
- public:
- /** \brief Reads the OFF file and constructs a vector of points from the points
- * that are in the OFF file.
- *
- * @param[in] name_file OFF file to read.
- *
- * \post Check with is_valid() function to see if read operation was successful.
- */
- Points_off_reader(const std::string& name_file)
- : valid_(false) {
- std::ifstream stream(name_file);
- if (stream.is_open()) {
- Off_reader off_reader(stream);
- Points_off_visitor_reader<Point_d> off_visitor;
- valid_ = off_reader.read(off_visitor);
- if (valid_) {
- point_cloud = off_visitor.get_point_cloud();
- }
- } else {
- std::cerr << "Points_off_reader::Points_off_reader could not open file " << name_file << "\n";
- }
- }
-
- /** \brief Returns if the OFF file read operation was successful or not.
- *
- * @return OFF file read status.
- */
- bool is_valid() const {
- return valid_;
- }
-
- /** \brief Point cloud getter.
- *
- * @return point_cloud.
- */
- const std::vector<Point_d>& get_point_cloud() const {
- return point_cloud;
- }
-
- private:
- /** \brief point_cloud.*/
- std::vector<Point_d> point_cloud;
- /** \brief OFF file read status.*/
- bool valid_;
-};
-
-} // namespace Gudhi
-
-#endif // POINTS_OFF_IO_H_
diff --git a/include/gudhi/Rips_complex.h b/include/gudhi/Rips_complex.h
deleted file mode 100644
index f0fe57f4..00000000
--- a/include/gudhi/Rips_complex.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria, Pawel Dlotko, Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef RIPS_COMPLEX_H_
-#define RIPS_COMPLEX_H_
-
-#include <gudhi/Debug_utils.h>
-#include <gudhi/graph_simplicial_complex.h>
-
-#include <boost/graph/adjacency_list.hpp>
-
-#include <iostream>
-#include <vector>
-#include <map>
-#include <string>
-#include <limits> // for numeric_limits
-#include <utility> // for pair<>
-
-
-namespace Gudhi {
-
-namespace rips_complex {
-
-/**
- * \class Rips_complex
- * \brief Rips complex data structure.
- *
- * \ingroup rips_complex
- *
- * \details
- * The data structure is a one skeleton graph, or Rips graph, containing edges when the edge length is less or equal
- * to a given threshold. Edge length is computed from a user given point cloud with a given distance function, or a
- * distance matrix.
- *
- * \tparam Filtration_value is the type used to store the filtration values of the simplicial complex.
- */
-template<typename Filtration_value>
-class Rips_complex {
- public:
- /**
- * \brief Type of the one skeleton graph stored inside the Rips complex structure.
- */
- typedef typename boost::adjacency_list < boost::vecS, boost::vecS, boost::undirectedS
- , boost::property < vertex_filtration_t, Filtration_value >
- , boost::property < edge_filtration_t, Filtration_value >> OneSkeletonGraph;
-
- private:
- typedef int Vertex_handle;
-
- public:
- /** \brief Rips_complex constructor from a list of points.
- *
- * @param[in] points Range of points.
- * @param[in] threshold Rips value.
- * @param[in] distance distance function that returns a `Filtration_value` from 2 given points.
- *
- * \tparam ForwardPointRange must be a range for which `std::begin` and `std::end` return input iterators on a
- * point.
- *
- * \tparam Distance furnishes `operator()(const Point& p1, const Point& p2)`, where
- * `Point` is a point from the `ForwardPointRange`, and that returns a `Filtration_value`.
- */
- template<typename ForwardPointRange, typename Distance >
- Rips_complex(const ForwardPointRange& points, Filtration_value threshold, Distance distance) {
- compute_proximity_graph(points, threshold, distance);
- }
-
- /** \brief Rips_complex constructor from a distance matrix.
- *
- * @param[in] distance_matrix Range of distances.
- * @param[in] threshold Rips value.
- *
- * \tparam DistanceMatrix must have a `size()` method and on which `distance_matrix[i][j]` returns
- * the distance between points \f$i\f$ and \f$j\f$ as long as \f$ 0 \leqslant i < j \leqslant
- * distance\_matrix.size().\f$
- */
- template<typename DistanceMatrix>
- Rips_complex(const DistanceMatrix& distance_matrix, Filtration_value threshold) {
- compute_proximity_graph(boost::irange((size_t)0, distance_matrix.size()), threshold,
- [&](size_t i, size_t j){return distance_matrix[j][i];});
- }
-
- /** \brief Initializes the simplicial complex from the Rips graph and expands it until a given maximal
- * dimension.
- *
- * \tparam SimplicialComplexForRips must meet `SimplicialComplexForRips` concept.
- *
- * @param[in] complex SimplicialComplexForRips to be created.
- * @param[in] dim_max graph expansion for Rips until this given maximal dimension.
- * @exception std::invalid_argument In debug mode, if `complex.num_vertices()` does not return 0.
- *
- */
- template <typename SimplicialComplexForRips>
- void create_complex(SimplicialComplexForRips& complex, int dim_max) {
- GUDHI_CHECK(complex.num_vertices() == 0,
- std::invalid_argument("Rips_complex::create_complex - simplicial complex is not empty"));
-
- // insert the proximity graph in the simplicial complex
- complex.insert_graph(rips_skeleton_graph_);
- // expand the graph until dimension dim_max
- complex.expansion(dim_max);
- }
-
- private:
- /** \brief Computes the proximity graph of the points.
- *
- * If points contains n elements, the proximity graph is the graph with n vertices, and an edge [u,v] iff the
- * distance function between points u and v is smaller than threshold.
- *
- * \tparam ForwardPointRange furnishes `.begin()` and `.end()`
- * methods.
- *
- * \tparam Distance furnishes `operator()(const Point& p1, const Point& p2)`, where
- * `Point` is a point from the `ForwardPointRange`, and that returns a `Filtration_value`.
- */
- template< typename ForwardPointRange, typename Distance >
- void compute_proximity_graph(const ForwardPointRange& points, Filtration_value threshold,
- Distance distance) {
- std::vector< std::pair< Vertex_handle, Vertex_handle > > edges;
- std::vector< Filtration_value > edges_fil;
-
- // Compute the proximity graph of the points.
- // If points contains n elements, the proximity graph is the graph with n vertices, and an edge [u,v] iff the
- // distance function between points u and v is smaller than threshold.
- // --------------------------------------------------------------------------------------------
- // Creates the vector of edges and its filtration values (returned by distance function)
- Vertex_handle idx_u = 0;
- for (auto it_u = std::begin(points); it_u != std::end(points); ++it_u, ++idx_u) {
- Vertex_handle idx_v = idx_u + 1;
- for (auto it_v = it_u + 1; it_v != std::end(points); ++it_v, ++idx_v) {
- Filtration_value fil = distance(*it_u, *it_v);
- if (fil <= threshold) {
- edges.emplace_back(idx_u, idx_v);
- edges_fil.push_back(fil);
- }
- }
- }
-
- // --------------------------------------------------------------------------------------------
- // Creates the proximity graph from edges and sets the property with the filtration value.
- // Number of points is labeled from 0 to idx_u-1
- // --------------------------------------------------------------------------------------------
- // Do not use : rips_skeleton_graph_ = OneSkeletonGraph(...) -> deep copy of the graph (boost graph is not
- // move-enabled)
- rips_skeleton_graph_.~OneSkeletonGraph();
- new(&rips_skeleton_graph_)OneSkeletonGraph(edges.begin(), edges.end(), edges_fil.begin(), idx_u);
-
- auto vertex_prop = boost::get(vertex_filtration_t(), rips_skeleton_graph_);
-
- using vertex_iterator = typename boost::graph_traits<OneSkeletonGraph>::vertex_iterator;
- vertex_iterator vi, vi_end;
- for (std::tie(vi, vi_end) = boost::vertices(rips_skeleton_graph_);
- vi != vi_end; ++vi) {
- boost::put(vertex_prop, *vi, 0.);
- }
- }
-
- private:
- OneSkeletonGraph rips_skeleton_graph_;
-};
-
-} // namespace rips_complex
-
-} // namespace Gudhi
-
-#endif // RIPS_COMPLEX_H_
diff --git a/include/gudhi/Simple_object_pool.h b/include/gudhi/Simple_object_pool.h
deleted file mode 100644
index 47283521..00000000
--- a/include/gudhi/Simple_object_pool.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Marc Glisse
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SIMPLE_OBJECT_POOL_H_
-#define SIMPLE_OBJECT_POOL_H_
-
-#include <boost/pool/pool.hpp>
-#include <utility>
-
-namespace Gudhi {
-
-/** \private
- * This is a simpler version of boost::object_pool, that requires
- * that users explicitly destroy all objects. This lets the
- * performance scale much better, see
- * https://svn.boost.org/trac/boost/ticket/3789 .
- */
-template <class T>
-class Simple_object_pool : protected boost::pool<boost::default_user_allocator_malloc_free> {
- protected:
- typedef boost::pool<boost::default_user_allocator_malloc_free> Base;
- typedef T* pointer;
-
- Base& base() {
- return *this;
- }
-
- Base const& base()const {
- return *this;
- }
-
- public:
- typedef T element_type;
- typedef boost::default_user_allocator_malloc_free user_allocator;
- typedef typename Base::size_type size_type;
- typedef typename Base::difference_type difference_type;
-
- template<class...U>
- Simple_object_pool(U&&...u) : Base(sizeof (T), std::forward<U>(u)...) { }
-
- template<class...U>
- pointer construct(U&&...u) {
- void* p = base().malloc BOOST_PREVENT_MACRO_SUBSTITUTION();
- assert(p);
- try {
- new(p) T(std::forward<U>(u)...);
- } catch (...) {
- base().free BOOST_PREVENT_MACRO_SUBSTITUTION(p);
- throw;
- }
- return static_cast<pointer> (p);
- }
-
- void destroy(pointer p) {
- p->~T();
- base().free BOOST_PREVENT_MACRO_SUBSTITUTION(p);
- }
-};
-
-} // namespace Gudhi
-
-#endif // SIMPLE_OBJECT_POOL_H_
diff --git a/include/gudhi/Simplex_tree.h b/include/gudhi/Simplex_tree.h
deleted file mode 100644
index 3ab23c12..00000000
--- a/include/gudhi/Simplex_tree.h
+++ /dev/null
@@ -1,1483 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SIMPLEX_TREE_H_
-#define SIMPLEX_TREE_H_
-
-#include <gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h>
-#include <gudhi/Simplex_tree/Simplex_tree_siblings.h>
-#include <gudhi/Simplex_tree/Simplex_tree_iterators.h>
-#include <gudhi/Simplex_tree/indexing_tag.h>
-
-#include <gudhi/reader_utils.h>
-#include <gudhi/graph_simplicial_complex.h>
-#include <gudhi/Debug_utils.h>
-
-#include <boost/container/flat_map.hpp>
-#include <boost/iterator/transform_iterator.hpp>
-#include <boost/graph/adjacency_list.hpp>
-#include <boost/range/adaptor/reversed.hpp>
-
-#ifdef GUDHI_USE_TBB
-#include <tbb/parallel_sort.h>
-#endif
-
-#include <utility>
-#include <vector>
-#include <functional> // for greater<>
-#include <stdexcept>
-#include <limits> // Inf
-#include <initializer_list>
-#include <algorithm> // for std::max
-#include <cstdint> // for std::uint32_t
-#include <iterator> // for std::distance
-
-namespace Gudhi {
-
-struct Simplex_tree_options_full_featured;
-
-/**
- * \class Simplex_tree Simplex_tree.h gudhi/Simplex_tree.h
- * \brief Simplex Tree data structure for representing simplicial complexes.
- *
- * \details Every simplex \f$[v_0, \cdots ,v_d]\f$ admits a canonical orientation
- * induced by the order relation on vertices \f$ v_0 < \cdots < v_d \f$.
- *
- * Details may be found in \cite boissonnatmariasimplextreealgorithmica.
- *
- * \implements FilteredComplex
- *
- */
-
-template<typename SimplexTreeOptions = Simplex_tree_options_full_featured>
-class Simplex_tree {
- public:
- typedef SimplexTreeOptions Options;
- typedef typename Options::Indexing_tag Indexing_tag;
- /** \brief Type for the value of the filtration function.
- *
- * Must be comparable with <. */
- typedef typename Options::Filtration_value Filtration_value;
- /** \brief Key associated to each simplex.
- *
- * Must be an integer type. */
- typedef typename Options::Simplex_key Simplex_key;
- /** \brief Type for the vertex handle.
- *
- * Must be a signed integer type. It admits a total order <. */
- typedef typename Options::Vertex_handle Vertex_handle;
-
- /* Type of node in the simplex tree. */
- typedef Simplex_tree_node_explicit_storage<Simplex_tree> Node;
- /* Type of dictionary Vertex_handle -> Node for traversing the simplex tree. */
- // Note: this wastes space when Vertex_handle is 32 bits and Node is aligned on 64 bits. It would be better to use a
- // flat_set (with our own comparator) where we can control the layout of the struct (put Vertex_handle and
- // Simplex_key next to each other).
- typedef typename boost::container::flat_map<Vertex_handle, Node> Dictionary;
-
- /* \brief Set of nodes sharing a same parent in the simplex tree. */
- /* \brief Set of nodes sharing a same parent in the simplex tree. */
- typedef Simplex_tree_siblings<Simplex_tree, Dictionary> Siblings;
-
- struct Key_simplex_base_real {
- Key_simplex_base_real() : key_(-1) {}
- void assign_key(Simplex_key k) { key_ = k; }
- Simplex_key key() const { return key_; }
- private:
- Simplex_key key_;
- };
- struct Key_simplex_base_dummy {
- Key_simplex_base_dummy() {}
- // Undefined so it will not link
- void assign_key(Simplex_key);
- Simplex_key key() const;
- };
- typedef typename std::conditional<Options::store_key, Key_simplex_base_real, Key_simplex_base_dummy>::type
- Key_simplex_base;
-
- struct Filtration_simplex_base_real {
- Filtration_simplex_base_real() : filt_(0) {}
- void assign_filtration(Filtration_value f) { filt_ = f; }
- Filtration_value filtration() const { return filt_; }
- private:
- Filtration_value filt_;
- };
- struct Filtration_simplex_base_dummy {
- Filtration_simplex_base_dummy() {}
- void assign_filtration(Filtration_value GUDHI_CHECK_code(f)) { GUDHI_CHECK(f == 0, "filtration value specified for a complex that does not store them"); }
- Filtration_value filtration() const { return 0; }
- };
- typedef typename std::conditional<Options::store_filtration, Filtration_simplex_base_real,
- Filtration_simplex_base_dummy>::type Filtration_simplex_base;
-
- public:
- /** \brief Handle type to a simplex contained in the simplicial complex represented
- * by the simplex tree. */
- typedef typename Dictionary::iterator Simplex_handle;
-
- private:
- typedef typename Dictionary::iterator Dictionary_it;
- typedef typename Dictionary_it::value_type Dit_value_t;
-
- struct return_first {
- Vertex_handle operator()(const Dit_value_t& p_sh) const {
- return p_sh.first;
- }
- };
-
- public:
- /** \name Range and iterator types
- *
- * The naming convention is Container_content_(iterator/range). A Container_content_range is
- * essentially an object on which the methods begin() and end() can be called. They both return
- * an object of type Container_content_iterator, and allow the traversal of the range
- * [ begin();end() ).
- * @{ */
-
- /** \brief Iterator over the vertices of the simplicial complex.
- *
- * 'value_type' is Vertex_handle. */
- typedef boost::transform_iterator<return_first, Dictionary_it> Complex_vertex_iterator;
- /** \brief Range over the vertices of the simplicial complex. */
- typedef boost::iterator_range<Complex_vertex_iterator> Complex_vertex_range;
- /** \brief Iterator over the vertices of a simplex.
- *
- * 'value_type' is Vertex_handle. */
- typedef Simplex_tree_simplex_vertex_iterator<Simplex_tree> Simplex_vertex_iterator;
- /** \brief Range over the vertices of a simplex. */
- typedef boost::iterator_range<Simplex_vertex_iterator> Simplex_vertex_range;
- /** \brief Range over the cofaces of a simplex. */
- typedef std::vector<Simplex_handle> Cofaces_simplex_range;
- /** \brief Iterator over the simplices of the boundary of a simplex.
- *
- * 'value_type' is Simplex_handle. */
- typedef Simplex_tree_boundary_simplex_iterator<Simplex_tree> Boundary_simplex_iterator;
- /** \brief Range over the simplices of the boundary of a simplex. */
- typedef boost::iterator_range<Boundary_simplex_iterator> Boundary_simplex_range;
- /** \brief Iterator over the simplices of the simplicial complex.
- *
- * 'value_type' is Simplex_handle. */
- typedef Simplex_tree_complex_simplex_iterator<Simplex_tree> Complex_simplex_iterator;
- /** \brief Range over the simplices of the simplicial complex. */
- typedef boost::iterator_range<Complex_simplex_iterator> Complex_simplex_range;
- /** \brief Iterator over the simplices of the skeleton of the simplicial complex, for a given
- * dimension.
- *
- * 'value_type' is Simplex_handle. */
- typedef Simplex_tree_skeleton_simplex_iterator<Simplex_tree> Skeleton_simplex_iterator;
- /** \brief Range over the simplices of the skeleton of the simplicial complex, for a given
- * dimension. */
- typedef boost::iterator_range<Skeleton_simplex_iterator> Skeleton_simplex_range;
- /** \brief Range over the simplices of the simplicial complex, ordered by the filtration. */
- typedef std::vector<Simplex_handle> Filtration_simplex_range;
- /** \brief Iterator over the simplices of the simplicial complex, ordered by the filtration.
- *
- * 'value_type' is Simplex_handle. */
- typedef typename Filtration_simplex_range::const_iterator Filtration_simplex_iterator;
-
- /* @} */ // end name range and iterator types
- /** \name Range and iterator methods
- * @{ */
-
- /** \brief Returns a range over the vertices of the simplicial complex.
- * The order is increasing according to < on Vertex_handles.*/
- Complex_vertex_range complex_vertex_range() {
- return Complex_vertex_range(
- boost::make_transform_iterator(root_.members_.begin(), return_first()),
- boost::make_transform_iterator(root_.members_.end(), return_first()));
- }
-
- /** \brief Returns a range over the simplices of the simplicial complex.
- *
- * In the Simplex_tree, the tree is traverse in a depth-first fashion.
- * Consequently, simplices are ordered according to lexicographic order on the list of
- * Vertex_handles of a simplex, read in increasing < order for Vertex_handles. */
- Complex_simplex_range complex_simplex_range() {
- return Complex_simplex_range(Complex_simplex_iterator(this),
- Complex_simplex_iterator());
- }
-
- /** \brief Returns a range over the simplices of the dim-skeleton of the simplicial complex.
- *
- * The \f$d\f$-skeleton of a simplicial complex \f$\mathbf{K}\f$ is the simplicial complex containing the
- * simplices of \f$\mathbf{K}\f$ of dimension at most \f$d\f$.
- *
- * @param[in] dim The maximal dimension of the simplices in the skeleton.
- *
- * The simplices are ordered according to lexicographic order on the list of
- * Vertex_handles of a simplex, read in increasing < order for Vertex_handles. */
- Skeleton_simplex_range skeleton_simplex_range(int dim) {
- return Skeleton_simplex_range(Skeleton_simplex_iterator(this, dim),
- Skeleton_simplex_iterator());
- }
-
- /** \brief Returns a range over the simplices of the simplicial complex,
- * in the order of the filtration.
- *
- * The filtration is a monotonic function \f$ f: \mathbf{K} \rightarrow \mathbb{R} \f$, i.e. if two simplices
- * \f$\tau\f$ and \f$\sigma\f$ satisfy \f$\tau \subseteq \sigma\f$ then
- * \f$f(\tau) \leq f(\sigma)\f$.
- *
- * The method returns simplices ordered according to increasing filtration values. Ties are
- * resolved by considering inclusion relation (subsimplices appear before their cofaces). If two
- * simplices have same filtration value but are not comparable w.r.t. inclusion, lexicographic
- * order is used.
- *
- * The filtration must be valid. If the filtration has not been initialized yet, the
- * method initializes it (i.e. order the simplices). If the complex has changed since the last time the filtration
- * was initialized, please call `initialize_filtration()` to recompute it. */
- Filtration_simplex_range const& filtration_simplex_range(Indexing_tag = Indexing_tag()) {
- if (filtration_vect_.empty()) {
- initialize_filtration();
- }
- return filtration_vect_;
- }
-
- /** \brief Returns a range over the vertices of a simplex.
- *
- * The order in which the vertices are visited is the decreasing order for < on Vertex_handles,
- * which is consequenlty
- * equal to \f$(-1)^{\text{dim} \sigma}\f$ the canonical orientation on the simplex.
- */
- Simplex_vertex_range simplex_vertex_range(Simplex_handle sh) {
- assert(sh != null_simplex()); // Empty simplex
- return Simplex_vertex_range(Simplex_vertex_iterator(this, sh),
- Simplex_vertex_iterator(this));
- }
-
- /** \brief Returns a range over the simplices of the boundary of a simplex.
- *
- * The boundary of a simplex is the set of codimension \f$1\f$ subsimplices of the simplex.
- * If the simplex is \f$[v_0, \cdots ,v_d]\f$, with canonical orientation
- * induced by \f$ v_0 < \cdots < v_d \f$, the iterator enumerates the
- * simplices of the boundary in the order:
- * \f$[v_0,\cdots,\widehat{v_i},\cdots,v_d]\f$ for \f$i\f$ from \f$0\f$ to \f$d\f$,
- * where \f$\widehat{v_i}\f$ means that the vertex \f$v_i\f$ is omitted.
- *
- * We note that the alternate sum of the simplices given by the iterator
- * gives \f$(-1)^{\text{dim} \sigma}\f$ the chains corresponding to the boundary
- * of the simplex.
- *
- * @param[in] sh Simplex for which the boundary is computed. */
- template<class SimplexHandle>
- Boundary_simplex_range boundary_simplex_range(SimplexHandle sh) {
- return Boundary_simplex_range(Boundary_simplex_iterator(this, sh),
- Boundary_simplex_iterator(this));
- }
-
- /** @} */ // end range and iterator methods
- /** \name Constructor/Destructor
- * @{ */
-
- /** \brief Constructs an empty simplex tree. */
- Simplex_tree()
- : null_vertex_(-1),
- root_(nullptr, null_vertex_),
- filtration_vect_(),
- dimension_(-1) { }
-
- /** \brief User-defined copy constructor reproduces the whole tree structure. */
- Simplex_tree(const Simplex_tree& simplex_source)
- : null_vertex_(simplex_source.null_vertex_),
- root_(nullptr, null_vertex_ , simplex_source.root_.members_),
- filtration_vect_(),
- dimension_(simplex_source.dimension_) {
- auto root_source = simplex_source.root_;
- rec_copy(&root_, &root_source);
- }
-
- /** \brief depth first search, inserts simplices when reaching a leaf. */
- void rec_copy(Siblings *sib, Siblings *sib_source) {
- for (auto sh = sib->members().begin(), sh_source = sib_source->members().begin();
- sh != sib->members().end(); ++sh, ++sh_source) {
- if (has_children(sh_source)) {
- Siblings * newsib = new Siblings(sib, sh_source->first);
- newsib->members_.reserve(sh_source->second.children()->members().size());
- for (auto & child : sh_source->second.children()->members())
- newsib->members_.emplace_hint(newsib->members_.end(), child.first, Node(newsib, child.second.filtration()));
- rec_copy(newsib, sh_source->second.children());
- sh->second.assign_children(newsib);
- }
- }
- }
-
- /** \brief User-defined move constructor moves the whole tree structure. */
- Simplex_tree(Simplex_tree && old)
- : null_vertex_(std::move(old.null_vertex_)),
- root_(std::move(old.root_)),
- filtration_vect_(std::move(old.filtration_vect_)),
- dimension_(std::move(old.dimension_)) {
- old.dimension_ = -1;
- old.root_ = Siblings(nullptr, null_vertex_);
- }
-
- /** \brief Destructor; deallocates the whole tree structure. */
- ~Simplex_tree() {
- for (auto sh = root_.members().begin(); sh != root_.members().end(); ++sh) {
- if (has_children(sh)) {
- rec_delete(sh->second.children());
- }
- }
- }
- /** @} */ // end constructor/destructor
- private:
- // Recursive deletion
- void rec_delete(Siblings * sib) {
- for (auto sh = sib->members().begin(); sh != sib->members().end(); ++sh) {
- if (has_children(sh)) {
- rec_delete(sh->second.children());
- }
- }
- delete sib;
- }
-
- public:
- /** \brief Checks if two simplex trees are equal. */
- bool operator==(Simplex_tree& st2) {
- if ((null_vertex_ != st2.null_vertex_) ||
- (dimension_ != st2.dimension_))
- return false;
- return rec_equal(&root_, &st2.root_);
- }
-
- /** \brief Checks if two simplex trees are different. */
- bool operator!=(Simplex_tree& st2) {
- return (!(*this == st2));
- }
-
- private:
- /** rec_equal: Checks recursively whether or not two simplex trees are equal, using depth first search. */
- bool rec_equal(Siblings* s1, Siblings* s2) {
- if (s1->members().size() != s2->members().size())
- return false;
- for (auto sh1 = s1->members().begin(), sh2 = s2->members().begin();
- (sh1 != s1->members().end() && sh2 != s2->members().end()); ++sh1, ++sh2) {
- if (sh1->first != sh2->first || sh1->second.filtration() != sh2->second.filtration())
- return false;
- if (has_children(sh1) != has_children(sh2))
- return false;
- // Recursivity on children only if both have children
- else if (has_children(sh1))
- if (!rec_equal(sh1->second.children(), sh2->second.children()))
- return false;
- }
- return true;
- }
-
- public:
- /** \brief Returns the key associated to a simplex.
- *
- * The filtration must be initialized.
- * \pre SimplexTreeOptions::store_key
- */
- static Simplex_key key(Simplex_handle sh) {
- return sh->second.key();
- }
-
- /** \brief Returns the simplex that has index idx in the filtration.
- *
- * The filtration must be initialized.
- * \pre SimplexTreeOptions::store_key
- */
- Simplex_handle simplex(Simplex_key idx) const {
- return filtration_vect_[idx];
- }
-
- /** \brief Returns the filtration value of a simplex.
- *
- * Called on the null_simplex, it returns infinity.
- * If SimplexTreeOptions::store_filtration is false, returns 0.
- */
- static Filtration_value filtration(Simplex_handle sh) {
- if (sh != null_simplex()) {
- return sh->second.filtration();
- } else {
- return std::numeric_limits<Filtration_value>::infinity();
- }
- }
-
- /** \brief Sets the filtration value of a simplex.
- * \exception std::invalid_argument In debug mode, if sh is a null_simplex.
- */
- void assign_filtration(Simplex_handle sh, Filtration_value fv) {
- GUDHI_CHECK(sh != null_simplex(),
- std::invalid_argument("Simplex_tree::assign_filtration - cannot assign filtration on null_simplex"));
- sh->second.assign_filtration(fv);
- }
-
- /** \brief Returns a Simplex_handle different from all Simplex_handles
- * associated to the simplices in the simplicial complex.
- *
- * One can call filtration(null_simplex()). */
- static Simplex_handle null_simplex() {
- return Dictionary_it(nullptr);
- }
-
- /** \brief Returns a key different for all keys associated to the
- * simplices of the simplicial complex. */
- static Simplex_key null_key() {
- return -1;
- }
-
- /** \brief Returns a Vertex_handle different from all Vertex_handles associated
- * to the vertices of the simplicial complex. */
- Vertex_handle null_vertex() const {
- return null_vertex_;
- }
-
- /** \brief Returns the number of vertices in the complex. */
- size_t num_vertices() const {
- return root_.members_.size();
- }
-
- public:
- /** \brief returns the number of simplices in the simplex_tree. */
- size_t num_simplices() {
- return num_simplices(&root_);
- }
-
- private:
- /** \brief returns the number of simplices in the simplex_tree. */
- size_t num_simplices(Siblings * sib) {
- auto sib_begin = sib->members().begin();
- auto sib_end = sib->members().end();
- size_t simplices_number = sib_end - sib_begin;
- for (auto sh = sib_begin; sh != sib_end; ++sh) {
- if (has_children(sh)) {
- simplices_number += num_simplices(sh->second.children());
- }
- }
- return simplices_number;
- }
-
- public:
- /** \brief Returns the dimension of a simplex.
- *
- * Must be different from null_simplex().*/
- int dimension(Simplex_handle sh) {
- Siblings * curr_sib = self_siblings(sh);
- int dim = 0;
- while (curr_sib != nullptr) {
- ++dim;
- curr_sib = curr_sib->oncles();
- }
- return dim - 1;
- }
-
- /** \brief Returns an upper bound on the dimension of the simplicial complex. */
- int upper_bound_dimension() const {
- return dimension_;
- }
-
- /** \brief Returns the dimension of the simplicial complex.
- \details This function is not constant time because it can recompute dimension if required (can be triggered by
- `remove_maximal_simplex()` or `prune_above_filtration()`).
- */
- int dimension() {
- if (dimension_to_be_lowered_)
- lower_upper_bound_dimension();
- return dimension_;
- }
-
- /** \brief Returns true if the node in the simplex tree pointed by
- * sh has children.*/
- template<class SimplexHandle>
- bool has_children(SimplexHandle sh) const {
- // Here we rely on the root using null_vertex(), which cannot match any real vertex.
- return (sh->second.children()->parent() == sh->first);
- }
-
- /** \brief Given a range of Vertex_handles, returns the Simplex_handle
- * of the simplex in the simplicial complex containing the corresponding
- * vertices. Return null_simplex() if the simplex is not in the complex.
- *
- * The type InputVertexRange must be a range of <CODE>Vertex_handle</CODE>
- * on which we can call std::begin() function
- */
- template<class InputVertexRange = std::initializer_list<Vertex_handle>>
- Simplex_handle find(const InputVertexRange & s) {
- auto first = std::begin(s);
- auto last = std::end(s);
-
- if (first == last)
- return null_simplex(); // ----->>
-
- // Copy before sorting
- std::vector<Vertex_handle> copy(first, last);
- std::sort(std::begin(copy), std::end(copy));
- return find_simplex(copy);
- }
-
- private:
- /** Find function, with a sorted range of vertices. */
- Simplex_handle find_simplex(const std::vector<Vertex_handle> & simplex) {
- Siblings * tmp_sib = &root_;
- Dictionary_it tmp_dit;
- auto vi = simplex.begin();
- if (Options::contiguous_vertices) {
- // Equivalent to the first iteration of the normal loop
- GUDHI_CHECK(contiguous_vertices(), "non-contiguous vertices");
- Vertex_handle v = *vi++;
- if(v < 0 || v >= static_cast<Vertex_handle>(root_.members_.size()))
- return null_simplex();
- tmp_dit = root_.members_.begin() + v;
- if (vi == simplex.end())
- return tmp_dit;
- if (!has_children(tmp_dit))
- return null_simplex();
- tmp_sib = tmp_dit->second.children();
- }
- for (;;) {
- tmp_dit = tmp_sib->members_.find(*vi++);
- if (tmp_dit == tmp_sib->members_.end())
- return null_simplex();
- if (vi == simplex.end())
- return tmp_dit;
- if (!has_children(tmp_dit))
- return null_simplex();
- tmp_sib = tmp_dit->second.children();
- }
- }
-
- /** \brief Returns the Simplex_handle corresponding to the 0-simplex
- * representing the vertex with Vertex_handle v. */
- Simplex_handle find_vertex(Vertex_handle v) {
- if (Options::contiguous_vertices) {
- assert(contiguous_vertices());
- return root_.members_.begin() + v;
- } else {
- return root_.members_.find(v);
- }
- }
-
- public:
- /** \private \brief Test if the vertices have contiguous numbering: 0, 1, etc. */
- bool contiguous_vertices() const {
- if (root_.members_.empty()) return true;
- if (root_.members_.begin()->first != 0) return false;
- if (std::prev(root_.members_.end())->first != static_cast<Vertex_handle>(root_.members_.size() - 1)) return false;
- return true;
- }
-
- private:
- /** \brief Inserts a simplex represented by a vector of vertex.
- * @param[in] simplex vector of Vertex_handles, representing the vertices of the new simplex. The vector must be
- * sorted by increasing vertex handle order.
- * @param[in] filtration the filtration value assigned to the new simplex.
- * @return If the new simplex is inserted successfully (i.e. it was not in the
- * simplicial complex yet) the bool is set to true and the Simplex_handle is the handle assigned
- * to the new simplex.
- * If the insertion fails (the simplex is already there), the bool is set to false. If the insertion
- * fails and the simplex already in the complex has a filtration value strictly bigger than 'filtration',
- * we assign this simplex with the new value 'filtration', and set the Simplex_handle field of the
- * output pair to the Simplex_handle of the simplex. Otherwise, we set the Simplex_handle part to
- * null_simplex.
- *
- */
- std::pair<Simplex_handle, bool> insert_vertex_vector(const std::vector<Vertex_handle>& simplex,
- Filtration_value filtration) {
- Siblings * curr_sib = &root_;
- std::pair<Simplex_handle, bool> res_insert;
- auto vi = simplex.begin();
- for (; vi != simplex.end() - 1; ++vi) {
- GUDHI_CHECK(*vi != null_vertex(), "cannot use the dummy null_vertex() as a real vertex");
- res_insert = curr_sib->members_.emplace(*vi, Node(curr_sib, filtration));
- if (!(has_children(res_insert.first))) {
- res_insert.first->second.assign_children(new Siblings(curr_sib, *vi));
- }
- curr_sib = res_insert.first->second.children();
- }
- GUDHI_CHECK(*vi != null_vertex(), "cannot use the dummy null_vertex() as a real vertex");
- res_insert = curr_sib->members_.emplace(*vi, Node(curr_sib, filtration));
- if (!res_insert.second) {
- // if already in the complex
- if (res_insert.first->second.filtration() > filtration) {
- // if filtration value modified
- res_insert.first->second.assign_filtration(filtration);
- return res_insert;
- }
- // if filtration value unchanged
- return std::pair<Simplex_handle, bool>(null_simplex(), false);
- }
- // otherwise the insertion has succeeded - size is a size_type
- if (static_cast<int>(simplex.size()) - 1 > dimension_) {
- // Update dimension if needed
- dimension_ = static_cast<int>(simplex.size()) - 1;
- }
- return res_insert;
- }
-
- public:
- /** \brief Insert a simplex, represented by a range of Vertex_handles, in the simplicial complex.
- *
- * @param[in] simplex range of Vertex_handles, representing the vertices of the new simplex
- * @param[in] filtration the filtration value assigned to the new simplex.
- * @return If the new simplex is inserted successfully (i.e. it was not in the
- * simplicial complex yet) the bool is set to true and the Simplex_handle is the handle assigned
- * to the new simplex.
- * If the insertion fails (the simplex is already there), the bool is set to false. If the insertion
- * fails and the simplex already in the complex has a filtration value strictly bigger than 'filtration',
- * we assign this simplex with the new value 'filtration', and set the Simplex_handle field of the
- * output pair to the Simplex_handle of the simplex. Otherwise, we set the Simplex_handle part to
- * null_simplex.
- *
- * All subsimplices do not necessary need to be already in the simplex tree to proceed to an
- * insertion. However, the property of being a simplicial complex will be violated. This allows
- * us to insert a stream of simplices contained in a simplicial complex without considering any
- * order on them.
- *
- * The filtration value
- * assigned to the new simplex must preserve the monotonicity of the filtration.
- *
- * The type InputVertexRange must be a range for which .begin() and
- * .end() return input iterators, with 'value_type' Vertex_handle. */
- template<class InputVertexRange = std::initializer_list<Vertex_handle>>
- std::pair<Simplex_handle, bool> insert_simplex(const InputVertexRange & simplex,
- Filtration_value filtration = 0) {
- auto first = std::begin(simplex);
- auto last = std::end(simplex);
-
- if (first == last)
- return std::pair<Simplex_handle, bool>(null_simplex(), true); // ----->>
-
- // Copy before sorting
- std::vector<Vertex_handle> copy(first, last);
- std::sort(std::begin(copy), std::end(copy));
- return insert_vertex_vector(copy, filtration);
- }
-
- /** \brief Insert a N-simplex and all his subfaces, from a N-simplex represented by a range of
- * Vertex_handles, in the simplicial complex.
- *
- * @param[in] Nsimplex range of Vertex_handles, representing the vertices of the new N-simplex
- * @param[in] filtration the filtration value assigned to the new N-simplex.
- * @return If the new simplex is inserted successfully (i.e. it was not in the
- * simplicial complex yet) the bool is set to true and the Simplex_handle is the handle assigned
- * to the new simplex.
- * If the insertion fails (the simplex is already there), the bool is set to false. If the insertion
- * fails and the simplex already in the complex has a filtration value strictly bigger than 'filtration',
- * we assign this simplex with the new value 'filtration', and set the Simplex_handle field of the
- * output pair to the Simplex_handle of the simplex. Otherwise, we set the Simplex_handle part to
- * null_simplex.
- */
- template<class InputVertexRange = std::initializer_list<Vertex_handle>>
- std::pair<Simplex_handle, bool> insert_simplex_and_subfaces(const InputVertexRange& Nsimplex,
- Filtration_value filtration = 0) {
- auto first = std::begin(Nsimplex);
- auto last = std::end(Nsimplex);
-
- if (first == last)
- return { null_simplex(), true }; // ----->>
-
- // Copy before sorting
- // Thread local is not available on XCode version < V.8 - It will slow down computation
-#ifdef GUDHI_CAN_USE_CXX11_THREAD_LOCAL
- thread_local
-#endif // GUDHI_CAN_USE_CXX11_THREAD_LOCAL
- std::vector<Vertex_handle> copy;
- copy.clear();
- copy.insert(copy.end(), first, last);
- std::sort(std::begin(copy), std::end(copy));
- GUDHI_CHECK_code(
- for (Vertex_handle v : copy)
- GUDHI_CHECK(v != null_vertex(), "cannot use the dummy null_vertex() as a real vertex");
- )
-
- return insert_simplex_and_subfaces_sorted(copy, filtration);
- }
-
- private:
- /// Same as insert_simplex_and_subfaces but assumes that the range of vertices is sorted
- template<class ForwardVertexRange = std::initializer_list<Vertex_handle>>
- std::pair<Simplex_handle, bool> insert_simplex_and_subfaces_sorted(const ForwardVertexRange& Nsimplex, Filtration_value filt = 0) {
- auto first = std::begin(Nsimplex);
- auto last = std::end(Nsimplex);
- if (first == last)
- return { null_simplex(), true }; // FIXME: false would make more sense to me.
- GUDHI_CHECK(std::is_sorted(first, last), "simplex vertices listed in unsorted order");
- // Update dimension if needed. We could wait to see if the insertion succeeds, but I doubt there is much to gain.
- dimension_ = (std::max)(dimension_, static_cast<int>(std::distance(first, last)) - 1);
- return rec_insert_simplex_and_subfaces_sorted(root(), first, last, filt);
- }
- // To insert {1,2,3,4}, we insert {2,3,4} twice, once at the root, and once below 1.
- template<class ForwardVertexIterator>
- std::pair<Simplex_handle, bool> rec_insert_simplex_and_subfaces_sorted(Siblings* sib, ForwardVertexIterator first, ForwardVertexIterator last, Filtration_value filt) {
- // An alternative strategy would be:
- // - try to find the complete simplex, if found (and low filtration) exit
- // - insert all the vertices at once in sib
- // - loop over those (new or not) simplices, with a recursive call(++first, last)
- Vertex_handle vertex_one = *first;
- auto&& dict = sib->members();
- auto insertion_result = dict.emplace(vertex_one, Node(sib, filt));
- Simplex_handle simplex_one = insertion_result.first;
- bool one_is_new = insertion_result.second;
- if (!one_is_new) {
- if (filtration(simplex_one) > filt) {
- assign_filtration(simplex_one, filt);
- } else {
- // FIXME: this interface makes no sense, and it doesn't seem to be tested.
- insertion_result.first = null_simplex();
- }
- }
- if (++first == last) return insertion_result;
- if (!has_children(simplex_one))
- // TODO: have special code here, we know we are building the whole subtree from scratch.
- simplex_one->second.assign_children(new Siblings(sib, vertex_one));
- auto res = rec_insert_simplex_and_subfaces_sorted(simplex_one->second.children(), first, last, filt);
- // No need to continue if the full simplex was already there with a low enough filtration value.
- if (res.first != null_simplex()) rec_insert_simplex_and_subfaces_sorted(sib, first, last, filt);
- return res;
- }
-
- public:
- /** \brief Assign a value 'key' to the key of the simplex
- * represented by the Simplex_handle 'sh'. */
- void assign_key(Simplex_handle sh, Simplex_key key) {
- sh->second.assign_key(key);
- }
-
- /** Returns the two Simplex_handle corresponding to the endpoints of
- * and edge. sh must point to a 1-dimensional simplex. This is an
- * optimized version of the boundary computation. */
- std::pair<Simplex_handle, Simplex_handle> endpoints(Simplex_handle sh) {
- assert(dimension(sh) == 1);
- return { find_vertex(sh->first), find_vertex(self_siblings(sh)->parent()) };
- }
-
- /** Returns the Siblings containing a simplex.*/
- template<class SimplexHandle>
- Siblings* self_siblings(SimplexHandle sh) {
- if (sh->second.children()->parent() == sh->first)
- return sh->second.children()->oncles();
- else
- return sh->second.children();
- }
-
- public:
- /** Returns a pointer to the root nodes of the simplex tree. */
- Siblings * root() {
- return &root_;
- }
-
- /** \brief Set a dimension for the simplicial complex.
- * \details This function must be used with caution because it disables dimension recomputation when required
- * (this recomputation can be triggered by `remove_maximal_simplex()` or `prune_above_filtration()`).
- */
- void set_dimension(int dimension) {
- dimension_to_be_lowered_ = false;
- dimension_ = dimension;
- }
-
- public:
- /** \brief Initializes the filtrations, i.e. sort the
- * simplices according to their order in the filtration and initializes all Simplex_keys.
- *
- * After calling this method, filtration_simplex_range() becomes valid, and each simplex is
- * assigned a Simplex_key corresponding to its order in the filtration (from 0 to m-1 for a
- * simplicial complex with m simplices).
- *
- * Will be automatically called when calling filtration_simplex_range()
- * if the filtration has never been initialized yet. */
- void initialize_filtration() {
- filtration_vect_.clear();
- filtration_vect_.reserve(num_simplices());
- for (Simplex_handle sh : complex_simplex_range())
- filtration_vect_.push_back(sh);
-
- /* We use stable_sort here because with libstdc++ it is faster than sort.
- * is_before_in_filtration is now a total order, but we used to call
- * stable_sort for the following heuristic:
- * The use of a depth-first traversal of the simplex tree, provided by
- * complex_simplex_range(), combined with a stable sort is meant to
- * optimize the order of simplices with same filtration value. The
- * heuristic consists in inserting the cofaces of a simplex as soon as
- * possible.
- */
-#ifdef GUDHI_USE_TBB
- tbb::parallel_sort(filtration_vect_.begin(), filtration_vect_.end(), is_before_in_filtration(this));
-#else
- std::stable_sort(filtration_vect_.begin(), filtration_vect_.end(), is_before_in_filtration(this));
-#endif
- }
-
- private:
- /** Recursive search of cofaces
- * This function uses DFS
- *\param vertices contains a list of vertices, which represent the vertices of the simplex not found yet.
- *\param curr_nbVertices represents the number of vertices of the simplex we reached by going through the tree.
- *\param cofaces contains a list of Simplex_handle, representing all the cofaces asked.
- *\param star true if we need the star of the simplex
- *\param nbVertices number of vertices of the cofaces we search
- * Prefix actions : When the bottom vertex matches with the current vertex in the tree, we remove the bottom vertex from vertices.
- * Infix actions : Then we call or not the recursion.
- * Postfix actions : Finally, we add back the removed vertex into vertices, and remove this vertex from curr_nbVertices so that we didn't change the parameters.
- * If the vertices list is empty, we need to check if curr_nbVertices matches with the dimension of the cofaces asked.
- */
- void rec_coface(std::vector<Vertex_handle> &vertices, Siblings *curr_sib, int curr_nbVertices,
- std::vector<Simplex_handle>& cofaces, bool star, int nbVertices) {
- if (!(star || curr_nbVertices <= nbVertices)) // dimension of actual simplex <= nbVertices
- return;
- for (Simplex_handle simplex = curr_sib->members().begin(); simplex != curr_sib->members().end(); ++simplex) {
- if (vertices.empty()) {
- // If we reached the end of the vertices, and the simplex has more vertices than the given simplex
- // => we found a coface
-
- // Add a coface if we wan't the star or if the number of vertices of the current simplex matches with nbVertices
- bool addCoface = (star || curr_nbVertices == nbVertices);
- if (addCoface)
- cofaces.push_back(simplex);
- if ((!addCoface || star) && has_children(simplex)) // Rec call
- rec_coface(vertices, simplex->second.children(), curr_nbVertices + 1, cofaces, star, nbVertices);
- } else {
- if (simplex->first == vertices.back()) {
- // If curr_sib matches with the top vertex
- bool equalDim = (star || curr_nbVertices == nbVertices); // dimension of actual simplex == nbVertices
- bool addCoface = vertices.size() == 1 && equalDim;
- if (addCoface)
- cofaces.push_back(simplex);
- if ((!addCoface || star) && has_children(simplex)) {
- // Rec call
- Vertex_handle tmp = vertices.back();
- vertices.pop_back();
- rec_coface(vertices, simplex->second.children(), curr_nbVertices + 1, cofaces, star, nbVertices);
- vertices.push_back(tmp);
- }
- } else if (simplex->first > vertices.back()) {
- return;
- } else {
- // (simplex->first < vertices.back()
- if (has_children(simplex))
- rec_coface(vertices, simplex->second.children(), curr_nbVertices + 1, cofaces, star, nbVertices);
- }
- }
- }
- }
-
- public:
- /** \brief Compute the star of a n simplex
- * \param simplex represent the simplex of which we search the star
- * \return Vector of Simplex_handle, empty vector if no cofaces found.
- */
-
- Cofaces_simplex_range star_simplex_range(const Simplex_handle simplex) {
- return cofaces_simplex_range(simplex, 0);
- }
-
- /** \brief Compute the cofaces of a n simplex
- * \param simplex represent the n-simplex of which we search the n+codimension cofaces
- * \param codimension The function returns the n+codimension-cofaces of the n-simplex. If codimension = 0,
- * return all cofaces (equivalent of star function)
- * \return Vector of Simplex_handle, empty vector if no cofaces found.
- */
-
- Cofaces_simplex_range cofaces_simplex_range(const Simplex_handle simplex, int codimension) {
- Cofaces_simplex_range cofaces;
- // codimension must be positive or null integer
- assert(codimension >= 0);
- Simplex_vertex_range rg = simplex_vertex_range(simplex);
- std::vector<Vertex_handle> copy(rg.begin(), rg.end());
- if (codimension + static_cast<int>(copy.size()) > dimension_ + 1 ||
- (codimension == 0 && static_cast<int>(copy.size()) > dimension_)) // n+codimension greater than dimension_
- return cofaces;
- // must be sorted in decreasing order
- assert(std::is_sorted(copy.begin(), copy.end(), std::greater<Vertex_handle>()));
- bool star = codimension == 0;
- rec_coface(copy, &root_, 1, cofaces, star, codimension + static_cast<int>(copy.size()));
- return cofaces;
- }
-
- private:
- /** \brief Returns true iff the list of vertices of sh1
- * is smaller than the list of vertices of sh2 w.r.t.
- * lexicographic order on the lists read in reverse.
- *
- * It defines a StrictWeakOrdering on simplices. The Simplex_vertex_iterators
- * must traverse the Vertex_handle in decreasing order. Reverse lexicographic order satisfy
- * the property that a subsimplex of a simplex is always strictly smaller with this order. */
- bool reverse_lexicographic_order(Simplex_handle sh1, Simplex_handle sh2) {
- Simplex_vertex_range rg1 = simplex_vertex_range(sh1);
- Simplex_vertex_range rg2 = simplex_vertex_range(sh2);
- Simplex_vertex_iterator it1 = rg1.begin();
- Simplex_vertex_iterator it2 = rg2.begin();
- while (it1 != rg1.end() && it2 != rg2.end()) {
- if (*it1 == *it2) {
- ++it1;
- ++it2;
- } else {
- return *it1 < *it2;
- }
- }
- return ((it1 == rg1.end()) && (it2 != rg2.end()));
- }
-
- /** \brief StrictWeakOrdering, for the simplices, defined by the filtration.
- *
- * It corresponds to the partial order
- * induced by the filtration values, with ties resolved using reverse lexicographic order.
- * Reverse lexicographic order has the property to always consider the subsimplex of a simplex
- * to be smaller. The filtration function must be monotonic. */
- struct is_before_in_filtration {
- explicit is_before_in_filtration(Simplex_tree * st)
- : st_(st) { }
-
- bool operator()(const Simplex_handle sh1, const Simplex_handle sh2) const {
- // Not using st_->filtration(sh1) because it uselessly tests for null_simplex.
- if (sh1->second.filtration() != sh2->second.filtration()) {
- return sh1->second.filtration() < sh2->second.filtration();
- }
- // is sh1 a proper subface of sh2
- return st_->reverse_lexicographic_order(sh1, sh2);
- }
-
- Simplex_tree * st_;
- };
-
- public:
- /** \brief Inserts a 1-skeleton in an empty Simplex_tree.
- *
- * The Simplex_tree must contain no simplex when the method is
- * called.
- *
- * Inserts all vertices and edges given by a OneSkeletonGraph.
- * OneSkeletonGraph must be a model of
- * <a href="http://www.boost.org/doc/libs/1_65_1/libs/graph/doc/EdgeListGraph.html">boost::EdgeListGraph</a>
- * and <a href="http://www.boost.org/doc/libs/1_65_1/libs/graph/doc/PropertyGraph.html">boost::PropertyGraph</a>.
- *
- * The vertex filtration value is accessible through the property tag
- * vertex_filtration_t.
- * The edge filtration value is accessible through the property tag
- * edge_filtration_t.
- *
- * boost::graph_traits<OneSkeletonGraph>::vertex_descriptor
- * must be Vertex_handle.
- * boost::graph_traits<OneSkeletonGraph>::directed_category
- * must be undirected_tag.
- *
- * If an edge appears with multiplicity, the function will arbitrarily pick
- * one representative to read the filtration value. */
- template<class OneSkeletonGraph>
- void insert_graph(const OneSkeletonGraph& skel_graph) {
- // the simplex tree must be empty
- assert(num_simplices() == 0);
-
- if (boost::num_vertices(skel_graph) == 0) {
- return;
- }
- if (num_edges(skel_graph) == 0) {
- dimension_ = 0;
- } else {
- dimension_ = 1;
- }
-
- root_.members_.reserve(boost::num_vertices(skel_graph));
-
- typename boost::graph_traits<OneSkeletonGraph>::vertex_iterator v_it,
- v_it_end;
- for (std::tie(v_it, v_it_end) = boost::vertices(skel_graph); v_it != v_it_end;
- ++v_it) {
- root_.members_.emplace_hint(
- root_.members_.end(), *v_it,
- Node(&root_, boost::get(vertex_filtration_t(), skel_graph, *v_it)));
- }
- typename boost::graph_traits<OneSkeletonGraph>::edge_iterator e_it,
- e_it_end;
- for (std::tie(e_it, e_it_end) = boost::edges(skel_graph); e_it != e_it_end;
- ++e_it) {
- auto u = source(*e_it, skel_graph);
- auto v = target(*e_it, skel_graph);
- if (u == v) throw "Self-loops are not simplicial";
- // We cannot skip edges with the wrong orientation and expect them to
- // come a second time with the right orientation, that does not always
- // happen in practice. emplace() should be a NOP when an element with the
- // same key is already there, so seeing the same edge multiple times is
- // ok.
- // Should we actually forbid multiple edges? That would be consistent
- // with rejecting self-loops.
- if (v < u) std::swap(u, v);
- auto sh = find_vertex(u);
- if (!has_children(sh)) {
- sh->second.assign_children(new Siblings(&root_, sh->first));
- }
-
- sh->second.children()->members().emplace(v,
- Node(sh->second.children(), boost::get(edge_filtration_t(), skel_graph, *e_it)));
- }
- }
-
- /** \brief Expands the Simplex_tree containing only its one skeleton
- * until dimension max_dim.
- *
- * The expanded simplicial complex until dimension \f$d\f$
- * attached to a graph \f$G\f$ is the maximal simplicial complex of
- * dimension at most \f$d\f$ admitting the graph \f$G\f$ as \f$1\f$-skeleton.
- * The filtration value assigned to a simplex is the maximal filtration
- * value of one of its edges.
- *
- * The Simplex_tree must contain no simplex of dimension bigger than
- * 1 when calling the method. */
- void expansion(int max_dim) {
- dimension_ = max_dim;
- for (Dictionary_it root_it = root_.members_.begin();
- root_it != root_.members_.end(); ++root_it) {
- if (has_children(root_it)) {
- siblings_expansion(root_it->second.children(), max_dim - 1);
- }
- }
- dimension_ = max_dim - dimension_;
- }
-
- private:
- /** \brief Recursive expansion of the simplex tree.*/
- void siblings_expansion(Siblings * siblings, // must contain elements
- int k) {
- if (dimension_ > k) {
- dimension_ = k;
- }
- if (k == 0)
- return;
- Dictionary_it next = siblings->members().begin();
- ++next;
-
-#ifdef GUDHI_CAN_USE_CXX11_THREAD_LOCAL
- thread_local
-#endif // GUDHI_CAN_USE_CXX11_THREAD_LOCAL
- std::vector<std::pair<Vertex_handle, Node> > inter;
- for (Dictionary_it s_h = siblings->members().begin();
- s_h != siblings->members().end(); ++s_h, ++next) {
- Simplex_handle root_sh = find_vertex(s_h->first);
- if (has_children(root_sh)) {
- intersection(
- inter, // output intersection
- next, // begin
- siblings->members().end(), // end
- root_sh->second.children()->members().begin(),
- root_sh->second.children()->members().end(),
- s_h->second.filtration());
- if (inter.size() != 0) {
- Siblings * new_sib = new Siblings(siblings, // oncles
- s_h->first, // parent
- inter); // boost::container::ordered_unique_range_t
- inter.clear();
- s_h->second.assign_children(new_sib);
- siblings_expansion(new_sib, k - 1);
- } else {
- // ensure the children property
- s_h->second.assign_children(siblings);
- inter.clear();
- }
- }
- }
- }
-
- /** \brief Intersects Dictionary 1 [begin1;end1) with Dictionary 2 [begin2,end2)
- * and assigns the maximal possible Filtration_value to the Nodes. */
- static void intersection(std::vector<std::pair<Vertex_handle, Node> >& intersection,
- Dictionary_it begin1, Dictionary_it end1,
- Dictionary_it begin2, Dictionary_it end2,
- Filtration_value filtration_) {
- if (begin1 == end1 || begin2 == end2)
- return; // ----->>
- while (true) {
- if (begin1->first == begin2->first) {
- Filtration_value filt = (std::max)({begin1->second.filtration(), begin2->second.filtration(), filtration_});
- intersection.emplace_back(begin1->first, Node(nullptr, filt));
- if (++begin1 == end1 || ++begin2 == end2)
- return; // ----->>
- } else if (begin1->first < begin2->first) {
- if (++begin1 == end1)
- return;
- } else /* begin1->first > begin2->first */ {
- if (++begin2 == end2)
- return; // ----->>
- }
- }
- }
-
- public:
- /** \brief Expands a simplex tree containing only a graph. Simplices corresponding to cliques in the graph are added
- * incrementally, faces before cofaces, unless the simplex has dimension larger than `max_dim` or `block_simplex`
- * returns true for this simplex.
- *
- * @param[in] max_dim Expansion maximal dimension value.
- * @param[in] block_simplex Blocker oracle. Its concept is <CODE>bool block_simplex(Simplex_handle sh)</CODE>
- *
- * The function identifies a candidate simplex whose faces are all already in the complex, inserts
- * it with a filtration value corresponding to the maximum of the filtration values of the faces, then calls
- * `block_simplex` on a `Simplex_handle` for this new simplex. If `block_simplex` returns true, the simplex is
- * removed, otherwise it is kept. Note that the evaluation of `block_simplex` is a good time to update the
- * filtration value of the simplex if you want a customized value. The algorithm then proceeds with the next
- * candidate.
- *
- * @warning several candidates of the same dimension may be inserted simultaneously before calling `block_simplex`,
- * so if you examine the complex in `block_simplex`, you may hit a few simplices of the same dimension that have not
- * been vetted by `block_simplex` yet, or have already been rejected but not yet removed.
- */
- template< typename Blocker >
- void expansion_with_blockers(int max_dim, Blocker block_simplex) {
- // Loop must be from the end to the beginning, as higher dimension simplex are always on the left part of the tree
- for (auto& simplex : boost::adaptors::reverse(root_.members())) {
- if (has_children(&simplex)) {
- siblings_expansion_with_blockers(simplex.second.children(), max_dim, max_dim - 1, block_simplex);
- }
- }
- }
-
- private:
- /** \brief Recursive expansion with blockers of the simplex tree.*/
- template< typename Blocker >
- void siblings_expansion_with_blockers(Siblings* siblings, int max_dim, int k, Blocker block_simplex) {
- if (dimension_ < max_dim - k) {
- dimension_ = max_dim - k;
- }
- if (k == 0)
- return;
- // No need to go deeper
- if (siblings->members().size() < 2)
- return;
- // Reverse loop starting before the last one for 'next' to be the last one
- for (auto simplex = siblings->members().rbegin() + 1; simplex != siblings->members().rend(); simplex++) {
- std::vector<std::pair<Vertex_handle, Node> > intersection;
- for(auto next = siblings->members().rbegin(); next != simplex; next++) {
- bool to_be_inserted = true;
- Filtration_value filt = simplex->second.filtration();
- // If all the boundaries are present, 'next' needs to be inserted
- for (Simplex_handle border : boundary_simplex_range(simplex)) {
- Simplex_handle border_child = find_child(border, next->first);
- if (border_child == null_simplex()) {
- to_be_inserted=false;
- break;
- }
- filt = (std::max)(filt, filtration(border_child));
- }
- if (to_be_inserted) {
- intersection.emplace_back(next->first, Node(nullptr, filt));
- }
- }
- if (intersection.size() != 0) {
- // Reverse the order to insert
- Siblings * new_sib = new Siblings(siblings, // oncles
- simplex->first, // parent
- boost::adaptors::reverse(intersection)); // boost::container::ordered_unique_range_t
- std::vector<Vertex_handle> blocked_new_sib_vertex_list;
- // As all intersections are inserted, we can call the blocker function on all new_sib members
- for (auto new_sib_member = new_sib->members().begin();
- new_sib_member != new_sib->members().end();
- new_sib_member++) {
- bool blocker_result = block_simplex(new_sib_member);
- // new_sib member has been blocked by the blocker function
- // add it to the list to be removed - do not perform it while looping on it
- if (blocker_result) {
- blocked_new_sib_vertex_list.push_back(new_sib_member->first);
- }
- }
- if (blocked_new_sib_vertex_list.size() == new_sib->members().size()) {
- // Specific case where all have to be deleted
- delete new_sib;
- // ensure the children property
- simplex->second.assign_children(siblings);
- } else {
- for (auto& blocked_new_sib_member : blocked_new_sib_vertex_list) {
- new_sib->members().erase(blocked_new_sib_member);
- }
- // ensure recursive call
- simplex->second.assign_children(new_sib);
- siblings_expansion_with_blockers(new_sib, max_dim, k - 1, block_simplex);
- }
- } else {
- // ensure the children property
- simplex->second.assign_children(siblings);
- }
- }
- }
-
- /* \private Returns the Simplex_handle composed of the vertex list (from the Simplex_handle), plus the given
- * Vertex_handle if the Vertex_handle is found in the Simplex_handle children list.
- * Returns null_simplex() if it does not exist
- */
- Simplex_handle find_child(Simplex_handle sh, Vertex_handle vh) const {
- if (!has_children(sh))
- return null_simplex();
-
- Simplex_handle child = sh->second.children()->find(vh);
- // Specific case of boost::flat_map does not find, returns boost::flat_map::end()
- // in simplex tree we want a null_simplex()
- if (child == sh->second.children()->members().end())
- return null_simplex();
-
- return child;
- }
-
- public:
- /** \brief Write the hasse diagram of the simplicial complex in os.
- *
- * Each row in the file correspond to a simplex. A line is written:
- * dim idx_1 ... idx_k fil where dim is the dimension of the simplex,
- * idx_1 ... idx_k are the row index (starting from 0) of the simplices of the boundary
- * of the simplex, and fil is its filtration value. */
- void print_hasse(std::ostream& os) {
- os << num_simplices() << " " << std::endl;
- for (auto sh : filtration_simplex_range()) {
- os << dimension(sh) << " ";
- for (auto b_sh : boundary_simplex_range(sh)) {
- os << key(b_sh) << " ";
- }
- os << filtration(sh) << " \n";
- }
- }
-
- public:
- /** \brief This function ensures that each simplex has a higher filtration value than its faces by increasing the
- * filtration values.
- * @return The filtration modification information.
- * \post Some simplex tree functions require the filtration to be valid. `make_filtration_non_decreasing()`
- * function is not launching `initialize_filtration()` but returns the filtration modification information. If the
- * complex has changed , please call `initialize_filtration()` to recompute it.
- */
- bool make_filtration_non_decreasing() {
- bool modified = false;
- // Loop must be from the end to the beginning, as higher dimension simplex are always on the left part of the tree
- for (auto& simplex : boost::adaptors::reverse(root_.members())) {
- if (has_children(&simplex)) {
- modified |= rec_make_filtration_non_decreasing(simplex.second.children());
- }
- }
- return modified;
- }
-
- private:
- /** \brief Recursively Browse the simplex tree to ensure the filtration is not decreasing.
- * @param[in] sib Siblings to be parsed.
- * @return The filtration modification information in order to trigger initialize_filtration.
- */
- bool rec_make_filtration_non_decreasing(Siblings * sib) {
- bool modified = false;
-
- // Loop must be from the end to the beginning, as higher dimension simplex are always on the left part of the tree
- for (auto& simplex : boost::adaptors::reverse(sib->members())) {
- // Find the maximum filtration value in the border
- Boundary_simplex_range boundary = boundary_simplex_range(&simplex);
- Boundary_simplex_iterator max_border = std::max_element(std::begin(boundary), std::end(boundary),
- [](Simplex_handle sh1, Simplex_handle sh2) {
- return filtration(sh1) < filtration(sh2);
- });
-
- Filtration_value max_filt_border_value = filtration(*max_border);
- if (simplex.second.filtration() < max_filt_border_value) {
- // Store the filtration modification information
- modified = true;
- simplex.second.assign_filtration(max_filt_border_value);
- }
- if (has_children(&simplex)) {
- modified |= rec_make_filtration_non_decreasing(simplex.second.children());
- }
- }
- // Make the modified information to be traced by upper call
- return modified;
- }
-
- public:
- /** \brief Prune above filtration value given as parameter.
- * @param[in] filtration Maximum threshold value.
- * @return The filtration modification information.
- * \post Some simplex tree functions require the filtration to be valid. `prune_above_filtration()`
- * function is not launching `initialize_filtration()` but returns the filtration modification information. If the
- * complex has changed , please call `initialize_filtration()` to recompute it.
- * \post Note that the dimension of the simplicial complex may be lower after calling `prune_above_filtration()`
- * than it was before. However, `upper_bound_dimension()` will return the old value, which remains a valid upper
- * bound. If you care, you can call `dimension()` to recompute the exact dimension.
- */
- bool prune_above_filtration(Filtration_value filtration) {
- return rec_prune_above_filtration(root(), filtration);
- }
-
- private:
- bool rec_prune_above_filtration(Siblings* sib, Filtration_value filt) {
- auto&& list = sib->members();
- auto last = std::remove_if(list.begin(), list.end(), [=](Dit_value_t& simplex) {
- if (simplex.second.filtration() <= filt) return false;
- if (has_children(&simplex)) rec_delete(simplex.second.children());
- // dimension may need to be lowered
- dimension_to_be_lowered_ = true;
- return true;
- });
-
- bool modified = (last != list.end());
- if (last == list.begin() && sib != root()) {
- // Removing the whole siblings, parent becomes a leaf.
- sib->oncles()->members()[sib->parent()].assign_children(sib->oncles());
- delete sib;
- // dimension may need to be lowered
- dimension_to_be_lowered_ = true;
- return true;
- } else {
- // Keeping some elements of siblings. Remove the others, and recurse in the remaining ones.
- list.erase(last, list.end());
- for (auto&& simplex : list)
- if (has_children(&simplex))
- modified |= rec_prune_above_filtration(simplex.second.children(), filt);
- }
- return modified;
- }
-
- private:
- /** \brief Deep search simplex tree dimension recompute.
- * @return True if the dimension was modified, false otherwise.
- * \pre Be sure the simplex tree has not a too low dimension value as the deep search stops when the former dimension
- * has been reached (cf. `upper_bound_dimension()` and `set_dimension()` methods).
- */
- bool lower_upper_bound_dimension() {
- // reset automatic detection to recompute
- dimension_to_be_lowered_ = false;
- int new_dimension = -1;
- // Browse the tree from the left to the right as higher dimension cells are more likely on the left part of the tree
- for (Simplex_handle sh : complex_simplex_range()) {
-#ifdef DEBUG_TRACES
- for (auto vertex : simplex_vertex_range(sh)) {
- std::cout << " " << vertex;
- }
- std::cout << std::endl;
-#endif // DEBUG_TRACES
-
- int sh_dimension = dimension(sh);
- if (sh_dimension >= dimension_)
- // Stop browsing as soon as the dimension is reached, no need to go furter
- return false;
- new_dimension = (std::max)(new_dimension, sh_dimension);
- }
- dimension_ = new_dimension;
- return true;
- }
-
-
- public:
- /** \brief Remove a maximal simplex.
- * @param[in] sh Simplex handle on the maximal simplex to remove.
- * \pre Please check the simplex has no coface before removing it.
- * \exception std::invalid_argument In debug mode, if sh has children.
- * \post Be aware that removing is shifting data in a flat_map (initialize_filtration to be done).
- * \post Note that the dimension of the simplicial complex may be lower after calling `remove_maximal_simplex()`
- * than it was before. However, `upper_bound_dimension()` will return the old value, which remains a valid upper
- * bound. If you care, you can call `dimension()` to recompute the exact dimension.
- */
- void remove_maximal_simplex(Simplex_handle sh) {
- // Guarantee the simplex has no children
- GUDHI_CHECK(!has_children(sh),
- std::invalid_argument("Simplex_tree::remove_maximal_simplex - argument has children"));
-
- // Simplex is a leaf, it means the child is the Siblings owning the leaf
- Siblings* child = sh->second.children();
-
- if ((child->size() > 1) || (child == root())) {
- // Not alone, just remove it from members
- // Special case when child is the root of the simplex tree, just remove it from members
- child->erase(sh);
- } else {
- // Sibling is emptied : must be deleted, and its parent must point on his own Sibling
- child->oncles()->members().at(child->parent()).assign_children(child->oncles());
- delete child;
- // dimension may need to be lowered
- dimension_to_be_lowered_ = true;
- }
- }
-
- private:
- Vertex_handle null_vertex_;
- /** \brief Total number of simplices in the complex, without the empty simplex.*/
- /** \brief Set of simplex tree Nodes representing the vertices.*/
- Siblings root_;
- /** \brief Simplices ordered according to a filtration.*/
- std::vector<Simplex_handle> filtration_vect_;
- /** \brief Upper bound on the dimension of the simplicial complex.*/
- int dimension_;
- bool dimension_to_be_lowered_ = false;
-};
-
-// Print a Simplex_tree in os.
-template<typename...T>
-std::ostream& operator<<(std::ostream & os, Simplex_tree<T...> & st) {
- for (auto sh : st.filtration_simplex_range()) {
- os << st.dimension(sh) << " ";
- for (auto v : st.simplex_vertex_range(sh)) {
- os << v << " ";
- }
- os << st.filtration(sh) << "\n"; // TODO(VR): why adding the key ?? not read ?? << " " << st.key(sh) << " \n";
- }
- return os;
-}
-
-template<typename...T>
-std::istream& operator>>(std::istream & is, Simplex_tree<T...> & st) {
- typedef Simplex_tree<T...> ST;
- std::vector<typename ST::Vertex_handle> simplex;
- typename ST::Filtration_value fil;
- int max_dim = -1;
- while (read_simplex(is, simplex, fil)) {
- // read all simplices in the file as a list of vertices
- // Warning : simplex_size needs to be casted in int - Can be 0
- int dim = static_cast<int> (simplex.size() - 1);
- if (max_dim < dim) {
- max_dim = dim;
- }
- // insert every simplex in the simplex tree
- st.insert_simplex(simplex, fil);
- simplex.clear();
- }
- st.set_dimension(max_dim);
-
- return is;
-}
-
-/** Model of SimplexTreeOptions.
- *
- * Maximum number of simplices to compute persistence is <CODE>std::numeric_limits<std::uint32_t>::max()</CODE>
- * (about 4 billions of simplices). */
-struct Simplex_tree_options_full_featured {
- typedef linear_indexing_tag Indexing_tag;
- typedef int Vertex_handle;
- typedef double Filtration_value;
- typedef std::uint32_t Simplex_key;
- static const bool store_key = true;
- static const bool store_filtration = true;
- static const bool contiguous_vertices = false;
-};
-
-/** Model of SimplexTreeOptions, faster than `Simplex_tree_options_full_featured` but note the unsafe
- * `contiguous_vertices` option.
- *
- * Maximum number of simplices to compute persistence is <CODE>std::numeric_limits<std::uint32_t>::max()</CODE>
- * (about 4 billions of simplices). */
-
-struct Simplex_tree_options_fast_persistence {
- typedef linear_indexing_tag Indexing_tag;
- typedef int Vertex_handle;
- typedef float Filtration_value;
- typedef std::uint32_t Simplex_key;
- static const bool store_key = true;
- static const bool store_filtration = true;
- static const bool contiguous_vertices = true;
-};
-
-/** @} */ // end defgroup simplex_tree
-
-} // namespace Gudhi
-
-#endif // SIMPLEX_TREE_H_
diff --git a/include/gudhi/Simplex_tree/Simplex_tree_iterators.h b/include/gudhi/Simplex_tree/Simplex_tree_iterators.h
deleted file mode 100644
index 02c8bb64..00000000
--- a/include/gudhi/Simplex_tree/Simplex_tree_iterators.h
+++ /dev/null
@@ -1,354 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SIMPLEX_TREE_SIMPLEX_TREE_ITERATORS_H_
-#define SIMPLEX_TREE_SIMPLEX_TREE_ITERATORS_H_
-
-#include <gudhi/Debug_utils.h>
-
-#include <boost/iterator/iterator_facade.hpp>
-#include <boost/version.hpp>
-#if BOOST_VERSION >= 105600
-# include <boost/container/static_vector.hpp>
-#endif
-
-#include <vector>
-
-namespace Gudhi {
-
-/* \addtogroup simplex_tree
- * Iterators and range types for the Simplex_tree.
- * @{
- */
-
-/* \brief Iterator over the vertices of a simplex
- * in a SimplexTree.
- *
- * Forward iterator, 'value_type' is SimplexTree::Vertex_handle.*/
-template<class SimplexTree>
-class Simplex_tree_simplex_vertex_iterator : public boost::iterator_facade<
- Simplex_tree_simplex_vertex_iterator<SimplexTree>,
- typename SimplexTree::Vertex_handle const, boost::forward_traversal_tag,
- typename SimplexTree::Vertex_handle const> {
- public:
- typedef typename SimplexTree::Simplex_handle Simplex_handle;
- typedef typename SimplexTree::Siblings Siblings;
- typedef typename SimplexTree::Vertex_handle Vertex_handle;
-
- explicit Simplex_tree_simplex_vertex_iterator(SimplexTree * st)
- : // any end() iterator
- sib_(nullptr),
- v_(st->null_vertex()) {
- }
-
- Simplex_tree_simplex_vertex_iterator(SimplexTree * st, Simplex_handle sh)
- : sib_(st->self_siblings(sh)),
- v_(sh->first) {
- }
-
- private:
- friend class boost::iterator_core_access;
-
- bool equal(Simplex_tree_simplex_vertex_iterator const &other) const {
- return sib_ == other.sib_ && v_ == other.v_;
- }
-
- Vertex_handle const& dereference() const {
- return v_;
- }
-
- void increment() {
- v_ = sib_->parent();
- sib_ = sib_->oncles();
- }
-
- Siblings * sib_;
- Vertex_handle v_;
-};
-
-/*---------------------------------------------------------------------------*/
-/* \brief Iterator over the simplices of the boundary of a
- * simplex.
- *
- * Forward iterator, value_type is SimplexTree::Simplex_handle.*/
-template<class SimplexTree>
-class Simplex_tree_boundary_simplex_iterator : public boost::iterator_facade<
- Simplex_tree_boundary_simplex_iterator<SimplexTree>,
- typename SimplexTree::Simplex_handle const, boost::forward_traversal_tag> {
- public:
- typedef typename SimplexTree::Simplex_handle Simplex_handle;
- typedef typename SimplexTree::Vertex_handle Vertex_handle;
- typedef typename SimplexTree::Siblings Siblings;
-
-// any end() iterator
- explicit Simplex_tree_boundary_simplex_iterator(SimplexTree * st)
- : last_(st->null_vertex()),
- next_(st->null_vertex()),
- sib_(nullptr),
- sh_(st->null_simplex()),
- st_(st) {
- }
-
- template<class SimplexHandle>
- Simplex_tree_boundary_simplex_iterator(SimplexTree * st, SimplexHandle sh)
- : last_(sh->first),
- next_(st->null_vertex()),
- sib_(nullptr),
- sh_(st->null_simplex()),
- st_(st) {
- // Only check once at the beginning instead of for every increment, as this is expensive.
- if (SimplexTree::Options::contiguous_vertices)
- GUDHI_CHECK(st_->contiguous_vertices(), "The set of vertices is not { 0, ..., n } without holes");
- Siblings * sib = st->self_siblings(sh);
- next_ = sib->parent();
- sib_ = sib->oncles();
- if (sib_ != nullptr) {
- if (SimplexTree::Options::contiguous_vertices && sib_->oncles() == nullptr)
- // Only relevant for edges
- sh_ = sib_->members_.begin()+next_;
- else
- sh_ = sib_->find(next_);
- }
- }
-
- private:
- friend class boost::iterator_core_access;
-// valid when iterating along the SAME boundary.
- bool equal(Simplex_tree_boundary_simplex_iterator const& other) const {
- return sh_ == other.sh_;
- }
-
- Simplex_handle const& dereference() const {
- assert(sh_ != st_->null_simplex());
- return sh_;
- }
-
- void increment() {
- if (sib_ == nullptr) {
- sh_ = st_->null_simplex();
- return;
- }
-
- Siblings * for_sib = sib_;
- Siblings * new_sib = sib_->oncles();
- auto rit = suffix_.rbegin();
- if (SimplexTree::Options::contiguous_vertices && new_sib == nullptr) {
- // We reached the root, use a short-cut to find a vertex.
- if (rit == suffix_.rend()) {
- // Segment, this vertex is the last boundary simplex
- sh_ = for_sib->members_.begin()+last_;
- sib_ = nullptr;
- return;
- } else {
- // Dim >= 2, initial step of the descent
- sh_ = for_sib->members_.begin()+*rit;
- for_sib = sh_->second.children();
- ++rit;
- }
- }
- for (; rit != suffix_.rend(); ++rit) {
- sh_ = for_sib->find(*rit);
- for_sib = sh_->second.children();
- }
- sh_ = for_sib->find(last_); // sh_ points to the right simplex now
- suffix_.push_back(next_);
- next_ = sib_->parent();
- sib_ = new_sib;
- }
-
- // Most of the storage should be moved to the range, iterators should be light.
- Vertex_handle last_; // last vertex of the simplex
- Vertex_handle next_; // next vertex to push in suffix_
-#if BOOST_VERSION >= 105600
- // 40 seems a conservative bound on the dimension of a Simplex_tree for now,
- // as it would not fit on the biggest hard-drive.
- boost::container::static_vector<Vertex_handle, 40> suffix_;
- // static_vector still has some overhead compared to a trivial hand-made
- // version using std::aligned_storage, or compared to making suffix_ static.
-#else
- std::vector<Vertex_handle> suffix_;
-#endif
- Siblings * sib_; // where the next search will start from
- Simplex_handle sh_; // current Simplex_handle in the boundary
- SimplexTree * st_; // simplex containing the simplicial complex
-};
-/*---------------------------------------------------------------------------*/
-/* \brief Iterator over the simplices of a simplicial complex.
- *
- * Forward iterator, value_type is SimplexTree::Simplex_handle.*/
-template<class SimplexTree>
-class Simplex_tree_complex_simplex_iterator : public boost::iterator_facade<
- Simplex_tree_complex_simplex_iterator<SimplexTree>,
- typename SimplexTree::Simplex_handle const, boost::forward_traversal_tag> {
- public:
- typedef typename SimplexTree::Simplex_handle Simplex_handle;
- typedef typename SimplexTree::Siblings Siblings;
- typedef typename SimplexTree::Vertex_handle Vertex_handle;
-
-// any end() iterator
- Simplex_tree_complex_simplex_iterator()
- : sib_(nullptr),
- st_(nullptr) {
- }
-
- explicit Simplex_tree_complex_simplex_iterator(SimplexTree * st)
- : sib_(nullptr),
- st_(st) {
- if (st == nullptr || st->root() == nullptr || st->root()->members().empty()) {
- st_ = nullptr;
- } else {
- sh_ = st->root()->members().begin();
- sib_ = st->root();
- while (st->has_children(sh_)) {
- sib_ = sh_->second.children();
- sh_ = sib_->members().begin();
- }
- }
- }
- private:
- friend class boost::iterator_core_access;
-
-// valid when iterating along the SAME boundary.
- bool equal(Simplex_tree_complex_simplex_iterator const& other) const {
- if (other.st_ == nullptr) {
- return (st_ == nullptr);
- }
- if (st_ == nullptr) {
- return false;
- }
- return (&(sh_->second) == &(other.sh_->second));
- }
-
- Simplex_handle const& dereference() const {
- return sh_;
- }
-
-// Depth first traversal.
- void increment() {
- ++sh_;
- if (sh_ == sib_->members().end()) {
- if (sib_->oncles() == nullptr) {
- st_ = nullptr;
- return;
- } // reach the end
- sh_ = sib_->oncles()->members().find(sib_->parent());
- sib_ = sib_->oncles();
- return;
- }
- while (st_->has_children(sh_)) {
- sib_ = sh_->second.children();
- sh_ = sib_->members().begin();
- }
- }
-
- Simplex_handle sh_;
- Siblings * sib_;
- SimplexTree * st_;
-};
-
-/* \brief Iterator over the simplices of the skeleton of a given
- * dimension of the simplicial complex.
- *
- * Forward iterator, value_type is SimplexTree::Simplex_handle.*/
-template<class SimplexTree>
-class Simplex_tree_skeleton_simplex_iterator : public boost::iterator_facade<
- Simplex_tree_skeleton_simplex_iterator<SimplexTree>,
- typename SimplexTree::Simplex_handle const, boost::forward_traversal_tag> {
- public:
- typedef typename SimplexTree::Simplex_handle Simplex_handle;
- typedef typename SimplexTree::Siblings Siblings;
- typedef typename SimplexTree::Vertex_handle Vertex_handle;
-
-// any end() iterator
- Simplex_tree_skeleton_simplex_iterator()
- : sib_(nullptr),
- st_(nullptr),
- dim_skel_(0),
- curr_dim_(0) {
- }
-
- Simplex_tree_skeleton_simplex_iterator(SimplexTree * st, int dim_skel)
- : sib_(nullptr),
- st_(st),
- dim_skel_(dim_skel),
- curr_dim_(0) {
- if (st == nullptr || st->root() == nullptr || st->root()->members().empty()) {
- st_ = nullptr;
- } else {
- sh_ = st->root()->members().begin();
- sib_ = st->root();
- while (st->has_children(sh_) && curr_dim_ < dim_skel_) {
- sib_ = sh_->second.children();
- sh_ = sib_->members().begin();
- ++curr_dim_;
- }
- }
- }
- private:
- friend class boost::iterator_core_access;
-
-// valid when iterating along the SAME boundary.
- bool equal(Simplex_tree_skeleton_simplex_iterator const& other) const {
- if (other.st_ == nullptr) {
- return (st_ == nullptr);
- }
- if (st_ == nullptr) {
- return false;
- }
- return (&(sh_->second) == &(other.sh_->second));
- }
-
- Simplex_handle const& dereference() const {
- return sh_;
- }
-
-// Depth first traversal of the skeleton.
- void increment() {
- ++sh_;
- if (sh_ == sib_->members().end()) {
- if (sib_->oncles() == nullptr) {
- st_ = nullptr;
- return;
- } // reach the end
- sh_ = sib_->oncles()->members().find(sib_->parent());
- sib_ = sib_->oncles();
- --curr_dim_;
- return;
- }
- while (st_->has_children(sh_) && curr_dim_ < dim_skel_) {
- sib_ = sh_->second.children();
- sh_ = sib_->members().begin();
- ++curr_dim_;
- }
- }
-
- Simplex_handle sh_;
- Siblings * sib_;
- SimplexTree * st_;
- int dim_skel_;
- int curr_dim_;
-};
-
-/* @} */ // end addtogroup simplex_tree
-} // namespace Gudhi
-
-#endif // SIMPLEX_TREE_SIMPLEX_TREE_ITERATORS_H_
diff --git a/include/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h b/include/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h
deleted file mode 100644
index 3a75ec72..00000000
--- a/include/gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SIMPLEX_TREE_SIMPLEX_TREE_NODE_EXPLICIT_STORAGE_H_
-#define SIMPLEX_TREE_SIMPLEX_TREE_NODE_EXPLICIT_STORAGE_H_
-
-#include <vector>
-
-namespace Gudhi {
-
-/* \addtogroup simplex_tree
- * Represents a node of a Simplex_tree.
- * @{
- */
-
-/*
- * \brief Node of a simplex tree with filtration value
- * and simplex key.
- *
- * It stores explicitely its own filtration value and its own Simplex_key.
- */
-template<class SimplexTree>
-struct Simplex_tree_node_explicit_storage : SimplexTree::Filtration_simplex_base, SimplexTree::Key_simplex_base {
- typedef typename SimplexTree::Siblings Siblings;
- typedef typename SimplexTree::Filtration_value Filtration_value;
- typedef typename SimplexTree::Simplex_key Simplex_key;
-
- Simplex_tree_node_explicit_storage(Siblings * sib = nullptr,
- Filtration_value filtration = 0)
- : children_(sib) {
- this->assign_filtration(filtration);
- }
-
- /*
- * Assign children to the node
- */
- void assign_children(Siblings * children) {
- children_ = children;
- }
-
- /* Careful -> children_ can be NULL*/
- Siblings * children() {
- return children_;
- }
-
- private:
- Siblings * children_;
-};
-
-/* @} */ // end addtogroup simplex_tree
-} // namespace Gudhi
-
-#endif // SIMPLEX_TREE_SIMPLEX_TREE_NODE_EXPLICIT_STORAGE_H_
diff --git a/include/gudhi/Simplex_tree/Simplex_tree_siblings.h b/include/gudhi/Simplex_tree/Simplex_tree_siblings.h
deleted file mode 100644
index ab2ca707..00000000
--- a/include/gudhi/Simplex_tree/Simplex_tree_siblings.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SIMPLEX_TREE_SIMPLEX_TREE_SIBLINGS_H_
-#define SIMPLEX_TREE_SIMPLEX_TREE_SIBLINGS_H_
-
-#include <gudhi/Simplex_tree/Simplex_tree_node_explicit_storage.h>
-
-#include <boost/container/flat_map.hpp>
-
-#include <utility>
-#include <vector>
-
-namespace Gudhi {
-
-/* \addtogroup simplex_tree
- * Represents a set of node of a Simplex_tree that share the same parent.
- * @{
- */
-
-/* \brief Data structure to store a set of nodes in a SimplexTree sharing
- * the same parent node.*/
-template<class SimplexTree, class MapContainer>
-class Simplex_tree_siblings {
-// private:
-// friend SimplexTree;
- public:
- template<class T> friend class Simplex_tree_simplex_vertex_iterator;
- template<class T> friend class Simplex_tree_boundary_simplex_iterator;
- template<class T> friend class Simplex_tree_complex_simplex_iterator;
- template<class T> friend class Simplex_tree_skeleton_simplex_iterator;
-
- typedef typename SimplexTree::Vertex_handle Vertex_handle;
- typedef typename SimplexTree::Filtration_value Filtration_value;
- typedef typename SimplexTree::Node Node;
- typedef MapContainer Dictionary;
- typedef typename MapContainer::iterator Dictionary_it;
-
- /* Default constructor.*/
- Simplex_tree_siblings()
- : oncles_(nullptr),
- parent_(-1),
- members_() {
- }
-
- /* Constructor with values.*/
- Simplex_tree_siblings(Simplex_tree_siblings * oncles, Vertex_handle parent)
- : oncles_(oncles),
- parent_(parent),
- members_() {
- }
-
- /* \brief Constructor with initialized set of members.
- *
- * 'members' must be sorted and unique.*/
- template<typename RandomAccessVertexRange>
- Simplex_tree_siblings(Simplex_tree_siblings * oncles, Vertex_handle parent, const RandomAccessVertexRange & members)
- : oncles_(oncles),
- parent_(parent),
- members_(boost::container::ordered_unique_range, members.begin(),
- members.end()) {
- for (auto& map_el : members_) {
- map_el.second.assign_children(this);
- }
- }
-
- /*
- * \brief Inserts a Node in the set of siblings nodes.
- *
- * If already present, assigns the minimal filtration value
- * between input filtration_value and the value already
- * present in the node.
- */
- void insert(Vertex_handle v, Filtration_value filtration_value) {
- auto ins = members_.emplace(v, Node(this, filtration_value));
- if (!ins.second && filtration(ins.first) > filtration_value)
- ins.first->second.assign_filtration(filtration_value);
- }
-
- Dictionary_it find(Vertex_handle v) {
- return members_.find(v);
- }
-
- Simplex_tree_siblings * oncles() {
- return oncles_;
- }
-
- Vertex_handle parent() const {
- return parent_;
- }
-
- Dictionary & members() {
- return members_;
- }
-
- size_t size() const {
- return members_.size();
- }
-
- void erase(const Dictionary_it iterator) {
- members_.erase(iterator);
- }
-
- Simplex_tree_siblings * oncles_;
- Vertex_handle parent_;
- Dictionary members_;
-};
-
-/* @} */ // end addtogroup simplex_tree
-} // namespace Gudhi
-
-#endif // SIMPLEX_TREE_SIMPLEX_TREE_SIBLINGS_H_
diff --git a/include/gudhi/Simplex_tree/indexing_tag.h b/include/gudhi/Simplex_tree/indexing_tag.h
deleted file mode 100644
index ec4461f3..00000000
--- a/include/gudhi/Simplex_tree/indexing_tag.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SIMPLEX_TREE_INDEXING_TAG_H_
-#define SIMPLEX_TREE_INDEXING_TAG_H_
-
-namespace Gudhi {
-
-/** \brief Tag for a linear ordering of simplices.
- *
- * \implements IndexingTag
- */
-struct linear_indexing_tag {
-};
-
-/* \brief Tag for a zigzag ordering of simplices. */
-// struct zigzag_indexing_tag {};
-} // namespace Gudhi
-
-#endif // SIMPLEX_TREE_INDEXING_TAG_H_
diff --git a/include/gudhi/Skeleton_blocker.h b/include/gudhi/Skeleton_blocker.h
deleted file mode 100644
index e8b6fde8..00000000
--- a/include/gudhi/Skeleton_blocker.h
+++ /dev/null
@@ -1,250 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_H_
-#define SKELETON_BLOCKER_H_
-
-#include <gudhi/Skeleton_blocker_complex.h>
-#include <gudhi/Skeleton_blocker_geometric_complex.h>
-#include <gudhi/Skeleton_blocker_simplifiable_complex.h>
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_off_io.h>
-
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_simple_traits.h>
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_simple_geometric_traits.h>
-
-#include <gudhi/Debug_utils.h>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/** \defgroup skbl Skeleton-Blocker
-@{
-
-\author David Salinas
-
-\section skblintroduction Introduction
-The Skeleton-Blocker data-structure proposes a light encoding for simplicial complexes by storing only an *implicit* representation of its
-simplices
-\cite socg_blockers_2011,\cite blockers2012.
-Intuitively, it just stores the 1-skeleton of a simplicial complex with a graph and the set of its "missing faces" that
-is very small in practice (see next section for a formal definition).
-This data-structure handles all simplicial complexes operations such as
- as simplex enumeration or simplex removal but operations that are particularly efficient
- are operations that do not require simplex enumeration such as edge iteration, link computation or simplex contraction.
-
-
-\section skbldefinitions Definitions
-
-We recall briefly classical definitions of simplicial complexes
- \cite Munkres-elementsalgtop1984.
-An abstract simplex is a finite non-empty set and its dimension is its number of elements minus 1.
-Whenever \f$\tau \subset \sigma\f$ and \f$\tau \neq \emptyset \f$, \f$ \tau \f$ is called a face of
-\f$ \sigma\f$ and \f$ \sigma\f$ is called a coface of \f$ \tau \f$ . Furthermore,
-when \f$ \tau \neq \sigma\f$ we say that \f$ \tau\f$ is a proper-face of \f$ \sigma\f$.
-An abstract simplicial complex is a set of simplices that contains all the faces of its simplices.
-The 1-skeleton of a simplicial complex (or its graph) consists of its elements of dimension lower than 2.
-
- *\image html "ds_representation.png" "Skeleton-blocker representation" width=20cm
-
-
-To encode, a simplicial complex, one can encodes all its simplices.
-In case when this number gets too large,
-a lighter and implicit version consists of encoding only its graph plus some elements called missing faces or blockers.
-A blocker is a simplex of dimension greater than 1
-that does not belong to the complex but whose all proper faces does.
-
-
-Remark that for a clique complex (i.e. a simplicial complex whose simplices are cliques of its graph), the set of blockers
-is empty and the data-structure is then particularly sparse.
-One famous example of clique-complex is the Rips complex which is intensively used
-in topological data-analysis.
-In practice, the set of blockers of a simplicial complex
-remains also small when simplifying a Rips complex with edge contractions
-but also for most of the simplicial complexes used in topological data-analysis such as Delaunay, Cech or Witness complexes.
-For instance, the numbers of blockers is depicted for random 3-dimensional spheres embedded into \f$R^4\f$
-in next figure. Storing the graph and blockers of such simplicial complexes is much compact in this case than storing
-their simplices.
-
-
- *\image html "blockers_curve.png" "Number of blockers of random triangulations of 3-spheres" width=10cm
-
-
-
-
-\section API
-
-\subsection Overview
-
-Two main classes of this package are Skeleton_blocker_complex and Skeleton_blocker_geometric_complex.
-The first one can be used to represent an abstract simplicial complex and supports most used
-operations in a simplicial complex such as :
-
-\li vertex/edge/simplex enumeration
-\li simplifications operations such as remove star, add star (e.g. general form of collapse),
-edge contractions
-
-The class Skeleton_blocker_geometric_complex supports the same methods as Skeleton_blocker_complex
-and point access in addition.
-
-
-
-\subsection skblvisitor Visitor
-
-The class Skeleton_blocker_complex has a visitor that is called when usual operations such as adding an edge or remove a vertex are called.
-You may want to use this visitor to compute statistics or to update another data-structure (for instance this visitor is heavily used in the \ref contr package).
-
-
-
-
-\section skblexample Example
-
-
-\subsection Iterating Iterating through vertices, edges, blockers and simplices
-
-Iteration through vertices, edges, simplices or blockers is straightforward with c++11 for range loops.
-Note that simplex iteration with this implicit data-structure just takes
-a few more time compared to iteration via an explicit representation
-such as the Simplex Tree. The following example computes the Euler Characteristic
-of a simplicial complex.
-
- \code{.cpp}
- typedef Skeleton_blocker_complex<Skeleton_blocker_simple_traits> Complex;
- typedef Complex::Vertex_handle Vertex_handle;
- typedef Complex::Simplex Simplex;
-
- const int n = 15;
-
- // build a full complex with 10 vertices and 2^n-1 simplices
- Complex complex;
- for(int i=0;i<n;i++)
- complex.add_vertex();
- for(int i=0;i<n;i++)
- for(int j=0;j<i;j++)
- complex.add_edge_without_blockers(Vertex_handle(i),Vertex_handle(j));
-
- // this is just to illustrate iterators, to count number of vertices
- // or edges, complex.num_vertices() and complex.num_edges() are
- // more appropriated!
- unsigned num_vertices = 0;
- for(auto v : complex.vertex_range()){
- ++num_vertices;
- }
-
- unsigned num_edges = 0;
- for(auto e : complex.edge_range())
- ++num_edges;
-
- unsigned euler = 0;
- unsigned num_simplices = 0;
- // we use a reference to a simplex instead of a copy
- // value here because a simplex is a set of integers
- // and copying it cost time
- for(const Simplex & s : complex.star_simplex_range()){
- ++num_simplices;
- if(s.dimension()%2 == 0)
- euler += 1;
- else
- euler -= 1;
- }
- std::cout << "Saw "<<num_vertices<<" vertices, "<<num_edges<<" edges and "<<num_simplices<<" simplices"<<std::endl;
- std::cout << "The Euler Characteristic is "<<euler<<std::endl;
- \endcode
-
-
-\verbatim
-./SkeletonBlockerIteration
-Saw 15 vertices, 105 edges and 32767 simplices
-The Euler Characteristic is 1
- 0.537302s wall, 0.530000s user + 0.000000s system = 0.530000s CPU (98.6%)
-\endverbatim
-
-
-\subsection s Constructing a skeleton-blockers from a list of maximal faces or from a list of faces
-
- \code{.cpp}
- std::vector<Simplex> simplices;
-
- //add 4 triangles of a tetrahedron 0123
- simplices.push_back(Simplex(Vertex_handle(0),Vertex_handle(1),Vertex_handle(2)));
- simplices.push_back(Simplex(Vertex_handle(1),Vertex_handle(2),Vertex_handle(3)));
- simplices.push_back(Simplex(Vertex_handle(3),Vertex_handle(0),Vertex_handle(2)));
- simplices.push_back(Simplex(Vertex_handle(3),Vertex_handle(0),Vertex_handle(1)));
-
- Complex complex;
- //get complex from top faces
- make_complex_from_top_faces(complex,simplices.begin(),simplices.end());
-
- std::cout << "Simplices:"<<std::endl;
- for(const Simplex & s : complex.star_simplex_range())
- std::cout << s << " ";
- std::cout << std::endl;
-
- //One blocker as simplex 0123 is not in the complex but all its proper faces are.
- std::cout << "Blockers: "<<complex.blockers_to_string()<<std::endl;
-
- //now build a complex from its full list of simplices
- simplices.clear();
- simplices.push_back(Simplex(Vertex_handle(0)));
- simplices.push_back(Simplex(Vertex_handle(1)));
- simplices.push_back(Simplex(Vertex_handle(2)));
- simplices.push_back(Simplex(Vertex_handle(0),Vertex_handle(1)));
- simplices.push_back(Simplex(Vertex_handle(1),Vertex_handle(2)));
- simplices.push_back(Simplex(Vertex_handle(2),Vertex_handle(0)));
- complex = Complex(simplices.begin(),simplices.end());
-
- std::cout << "Simplices:"<<std::endl;
- for(const Simplex & s : complex.star_simplex_range())
- std::cout << s << " ";
- std::cout << std::endl;
-
- //One blocker as simplex 012 is not in the complex but all its proper faces are.
- std::cout << "Blockers: "<<complex.blockers_to_string()<<std::endl;
- \endcode
-\verbatim
-./SkeletonBlockerFromSimplices
-Simplices:
-{0} {0,1} {0,2} {0,3} {0,1,2} {0,1,3} {0,2,3} {1} {1,2} {1,3} {1,2,3} {2} {2,3} {3}
-Blockers: {0,1,2,3}
-
-Simplices:
-{0} {0,1} {0,2} {1} {1,2} {2}
-Blockers: {0,1,2}
-\endverbatim
-
-
-\section Acknowledgements
-The author wishes to thank Dominique Attali and André Lieutier for
-their collaboration to write the two initial papers
-\cite socg_blockers_2011,\cite blockers2012
- about this data-structure
- and also Dominique for leaving him use a prototype.
-
-@} */
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_H_
diff --git a/include/gudhi/Skeleton_blocker/Skeleton_blocker_complex_visitor.h b/include/gudhi/Skeleton_blocker/Skeleton_blocker_complex_visitor.h
deleted file mode 100644
index 6c6a8638..00000000
--- a/include/gudhi/Skeleton_blocker/Skeleton_blocker_complex_visitor.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_SKELETON_BLOCKER_COMPLEX_VISITOR_H_
-#define SKELETON_BLOCKER_SKELETON_BLOCKER_COMPLEX_VISITOR_H_
-
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_simplex.h>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-// TODO(DS): to be constified
-
-/**
- *@class Skeleton_blocker_complex_visitor
- *@brief Interface for a visitor of a simplicial complex.
- */
-template<typename Vertex_handle>
-class Skeleton_blocker_complex_visitor {
- public:
- virtual ~Skeleton_blocker_complex_visitor() { }
-
- virtual void on_add_vertex(Vertex_handle) = 0;
- virtual void on_remove_vertex(Vertex_handle) = 0;
-
- virtual void on_add_edge_without_blockers(Vertex_handle a, Vertex_handle b) = 0;
- virtual void on_remove_edge(Vertex_handle a, Vertex_handle b) = 0;
-
- /**
- * @brief Called when an edge changes, during the contraction of
- * an edge
- */
- virtual void on_changed_edge(Vertex_handle a, Vertex_handle b) = 0;
-
- /**
- * @brief Called when performing an edge contraction when
- * an edge bx is replaced by an edge ax (not already present).
- * Precisely, this methods is called this way in contract_edge :
- * add_edge_without_blockers(a,x)
- * on_swaped_edge(a,b,x)
- * remove_edge(b,x)
- */
- virtual void on_swaped_edge(Vertex_handle a, Vertex_handle b,
- Vertex_handle x) = 0;
- virtual void on_add_blocker(
- const Skeleton_blocker_simplex<Vertex_handle>&) = 0;
- virtual void on_delete_blocker(
- const Skeleton_blocker_simplex<Vertex_handle>*) = 0;
-};
-
-/**
- *@class Dummy_complex_visitor
- *@brief A dummy visitor of a simplicial complex that does nothing
- *
- */
-template<typename Vertex_handle>
-class Dummy_complex_visitor : public Skeleton_blocker_complex_visitor<
-Vertex_handle> {
- public:
- void on_add_vertex(Vertex_handle) { }
-
- void on_remove_vertex(Vertex_handle) { }
-
- void on_add_edge_without_blockers(Vertex_handle a, Vertex_handle b) { }
-
- void on_remove_edge(Vertex_handle a, Vertex_handle b) { }
-
- void on_changed_edge(Vertex_handle a, Vertex_handle b) { }
-
- void on_swaped_edge(Vertex_handle a, Vertex_handle b, Vertex_handle x) { }
-
- void on_add_blocker(const Skeleton_blocker_simplex<Vertex_handle>&) { }
-
- void on_delete_blocker(const Skeleton_blocker_simplex<Vertex_handle>*) { }
-};
-
-/**
- *@class Print_complex_visitor
- *@brief A visitor that prints the visit information.
- *
- */
-template<typename Vertex_handle>
-class Print_complex_visitor : public Skeleton_blocker_complex_visitor<
-Vertex_handle> {
- public:
- void on_add_vertex(Vertex_handle v) {
- std::cerr << "on_add_vertex:" << v << std::endl;
- }
-
- void on_remove_vertex(Vertex_handle v) {
- std::cerr << "on_remove_vertex:" << v << std::endl;
- }
-
- void on_add_edge_without_blockers(Vertex_handle a, Vertex_handle b) {
- std::cerr << "on_add_edge_without_blockers:" << a << "," << b << std::endl;
- }
-
- void on_remove_edge(Vertex_handle a, Vertex_handle b) {
- std::cerr << "on_remove_edge:" << a << "," << b << std::endl;
- }
-
- void on_changed_edge(Vertex_handle a, Vertex_handle b) {
- std::cerr << "on_changed_edge:" << a << "," << b << std::endl;
- }
-
- void on_swaped_edge(Vertex_handle a, Vertex_handle b, Vertex_handle x) {
- std::cerr << "on_swaped_edge:" << a << "," << b << "," << x << std::endl;
- }
-
- void on_add_blocker(const Skeleton_blocker_simplex<Vertex_handle>& b) {
- std::cerr << "on_add_blocker:" << b << std::endl;
- }
-
- void on_delete_blocker(const Skeleton_blocker_simplex<Vertex_handle>* b) {
- std::cerr << "on_delete_blocker:" << b << std::endl;
- }
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_SKELETON_BLOCKER_COMPLEX_VISITOR_H_
diff --git a/include/gudhi/Skeleton_blocker/Skeleton_blocker_link_superior.h b/include/gudhi/Skeleton_blocker/Skeleton_blocker_link_superior.h
deleted file mode 100644
index feab7b3f..00000000
--- a/include/gudhi/Skeleton_blocker/Skeleton_blocker_link_superior.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_SKELETON_BLOCKER_LINK_SUPERIOR_H_
-#define SKELETON_BLOCKER_SKELETON_BLOCKER_LINK_SUPERIOR_H_
-
-#include <gudhi/Skeleton_blocker_link_complex.h>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-template<class ComplexType> class Skeleton_blocker_sub_complex;
-
-/**
- * \brief Class representing the link of a simplicial complex encoded by a skeleton/blockers pair.
- * It computes only vertices greater than the simplex used to build the link.
- */
-template<typename ComplexType>
-class Skeleton_blocker_link_superior : public Skeleton_blocker_link_complex<
-ComplexType> {
- typedef typename ComplexType::Edge_handle Edge_handle;
-
- typedef typename ComplexType::boost_vertex_handle boost_vertex_handle;
-
- public:
- typedef typename ComplexType::Vertex_handle Vertex_handle;
- typedef typename ComplexType::Root_vertex_handle Root_vertex_handle;
- typedef typename ComplexType::Simplex Simplex;
- typedef typename ComplexType::Root_simplex_handle Root_simplex_handle;
- typedef typename ComplexType::BlockerMap BlockerMap;
- typedef typename ComplexType::BlockerPair BlockerPair;
- typedef typename ComplexType::BlockerMapIterator BlockerMapIterator;
- typedef typename ComplexType::BlockerMapConstIterator BlockerMapConstIterator;
- typedef typename ComplexType::Simplex::Simplex_vertex_const_iterator AddressSimplexConstIterator;
- typedef typename ComplexType::Root_simplex_handle::Simplex_vertex_const_iterator IdSimplexConstIterator;
-
- Skeleton_blocker_link_superior()
- : Skeleton_blocker_link_complex<ComplexType>(true) { }
-
- Skeleton_blocker_link_superior(const ComplexType & parent_complex,
- Simplex& alpha_parent_adress)
- : Skeleton_blocker_link_complex<ComplexType>(parent_complex,
- alpha_parent_adress, true) { }
-
- Skeleton_blocker_link_superior(const ComplexType & parent_complex,
- Vertex_handle a_parent_adress)
- : Skeleton_blocker_link_complex<ComplexType>(parent_complex,
- a_parent_adress, true) { }
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_SKELETON_BLOCKER_LINK_SUPERIOR_H_
diff --git a/include/gudhi/Skeleton_blocker/Skeleton_blocker_off_io.h b/include/gudhi/Skeleton_blocker/Skeleton_blocker_off_io.h
deleted file mode 100644
index 56009daf..00000000
--- a/include/gudhi/Skeleton_blocker/Skeleton_blocker_off_io.h
+++ /dev/null
@@ -1,203 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_SKELETON_BLOCKER_OFF_IO_H_
-#define SKELETON_BLOCKER_SKELETON_BLOCKER_OFF_IO_H_
-
-#include <gudhi/Off_reader.h>
-
-#include <string>
-#include <vector>
-#include <map>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/**
- *@brief Off reader visitor that can be passed to Off_reader to read a Skeleton_blocker_complex.
- */
-template<typename Complex>
-class Skeleton_blocker_off_flag_visitor_reader {
- Complex& complex_;
- typedef typename Complex::Vertex_handle Vertex_handle;
- typedef typename Complex::Point Point;
-
- const bool load_only_points_;
-
- public:
- explicit Skeleton_blocker_off_flag_visitor_reader(Complex& complex, bool load_only_points = false) :
- complex_(complex),
- load_only_points_(load_only_points) { }
-
- void init(int dim, int num_vertices, int num_faces, int num_edges) {
- // TODO(DS): do an assert to check that this number are correctly read
- // TODO(DS): reserve size for vector points
- }
-
- void point(const std::vector<double>& point) {
- complex_.add_vertex(Point(point.begin(), point.end()));
- }
-
- void maximal_face(const std::vector<int>& face) {
- if (!load_only_points_) {
- for (size_t i = 0; i < face.size(); ++i)
- for (size_t j = i + 1; j < face.size(); ++j) {
- complex_.add_edge_without_blockers(Vertex_handle(face[i]), Vertex_handle(face[j]));
- }
- }
- }
-
- void done() { }
-};
-
-/**
- *@brief Off reader visitor that can be passed to Off_reader to read a Skeleton_blocker_complex.
- */
-template<typename Complex>
-class Skeleton_blocker_off_visitor_reader {
- Complex& complex_;
- typedef typename Complex::Vertex_handle Vertex_handle;
- typedef typename Complex::Simplex Simplex;
- typedef typename Complex::Point Point;
-
- const bool load_only_points_;
- std::vector<Point> points_;
- std::vector<Simplex> maximal_faces_;
-
- public:
- explicit Skeleton_blocker_off_visitor_reader(Complex& complex, bool load_only_points = false) :
- complex_(complex),
- load_only_points_(load_only_points) { }
-
- void init(int dim, int num_vertices, int num_faces, int num_edges) {
- maximal_faces_.reserve(num_faces);
- points_.reserve(num_vertices);
- }
-
- void point(const std::vector<double>& point) {
- points_.emplace_back(point.begin(), point.end());
- }
-
- void maximal_face(const std::vector<int>& face) {
- if (!load_only_points_) {
- Simplex s;
- for (auto x : face)
- s.add_vertex(Vertex_handle(x));
- maximal_faces_.emplace_back(s);
- }
- }
-
- void done() {
- complex_ = make_complex_from_top_faces<Complex>(maximal_faces_.begin(), maximal_faces_.end(),
- points_.begin(), points_.end());
- }
-};
-
-/**
- *@brief Class that allows to load a Skeleton_blocker_complex from an off file.
- */
-template<typename Complex>
-class Skeleton_blocker_off_reader {
- public:
- /**
- * name_file : file to read
- * read_complex : complex that will receive the file content
- * read_only_points : specify true if only the points must be read
- */
- Skeleton_blocker_off_reader(const std::string & name_file, Complex& read_complex,
- bool read_only_points = false, bool is_flag = false) : valid_(false) {
- std::ifstream stream(name_file);
- if (stream.is_open()) {
- if (is_flag || read_only_points) {
- Skeleton_blocker_off_flag_visitor_reader<Complex> off_visitor(read_complex, read_only_points);
- Off_reader off_reader(stream);
- valid_ = off_reader.read(off_visitor);
- } else {
- Skeleton_blocker_off_visitor_reader<Complex> off_visitor(read_complex, read_only_points);
- Off_reader off_reader(stream);
- valid_ = off_reader.read(off_visitor);
- }
- }
- }
-
- /**
- * return true if reading did not meet problems.
- */
- bool is_valid() const {
- return valid_;
- }
-
- private:
- bool valid_;
-};
-
-template<typename Complex>
-class Skeleton_blocker_off_writer {
- public:
- /**
- * name_file : file where the off will be written
- * save_complex : complex that be outputted in the file
- * for now only save triangles.
- */
- Skeleton_blocker_off_writer(const std::string & name_file, const Complex& save_complex) {
- typedef typename Complex::Vertex_handle Vertex_handle;
-
- std::ofstream stream(name_file);
- if (stream.is_open()) {
- stream << "OFF\n";
- size_t num_triangles = std::distance(save_complex.triangle_range().begin(), save_complex.triangle_range().end());
- stream << save_complex.num_vertices() << " " << num_triangles << " 0 \n";
-
- // in case the complex has deactivated some vertices, eg only has vertices 0 2 5 7 for instance
- // we compute a map from 0 2 5 7 to 0 1 2 3
- std::map<Vertex_handle, size_t> vertex_num;
- size_t current_vertex = 0;
-
- for (auto v : save_complex.vertex_range()) {
- vertex_num[v] = current_vertex++;
- const auto& pt(save_complex.point(v));
- for (auto x : pt)
- stream << x << " ";
- stream << std::endl;
- }
-
- for (const auto & t : save_complex.triangle_range()) {
- stream << "3 ";
- for (auto x : t)
- stream << vertex_num[x] << " ";
- stream << std::endl;
- }
- stream.close();
- } else {
- std::cerr << "could not open file " << name_file << std::endl;
- }
- }
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_SKELETON_BLOCKER_OFF_IO_H_
diff --git a/include/gudhi/Skeleton_blocker/Skeleton_blocker_simple_geometric_traits.h b/include/gudhi/Skeleton_blocker/Skeleton_blocker_simple_geometric_traits.h
deleted file mode 100644
index 22c1668e..00000000
--- a/include/gudhi/Skeleton_blocker/Skeleton_blocker_simple_geometric_traits.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_SKELETON_BLOCKER_SIMPLE_GEOMETRIC_TRAITS_H_
-#define SKELETON_BLOCKER_SKELETON_BLOCKER_SIMPLE_GEOMETRIC_TRAITS_H_
-
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_simple_traits.h>
-
-#include <string>
-#include <sstream>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/**
- * @extends SkeletonBlockerGeometricDS
- * @ingroup skbl
- * @brief Simple traits that is a model of SkeletonBlockerGeometricDS and
- * can be passed as a template argument to Skeleton_blocker_geometric_complex
- */
-template<typename GeometryTrait>
-struct Skeleton_blocker_simple_geometric_traits :
-public Skeleton_blocker_simple_traits {
- public:
- typedef GeometryTrait GT;
- typedef typename GT::Point Point;
- typedef typename Skeleton_blocker_simple_traits::Root_vertex_handle Root_vertex_handle;
- typedef typename Skeleton_blocker_simple_traits::Graph_vertex Simple_vertex;
-
- /**
- * @brief Vertex with a point attached.
- */
- class Simple_geometric_vertex : public Simple_vertex {
- template<class ComplexGeometricTraits> friend class Skeleton_blocker_geometric_complex;
- private:
- Point point_;
-
- Point& point() {
- return point_;
- }
-
- const Point& point() const {
- return point_;
- }
- };
-
- class Simple_geometric_edge :
- public Skeleton_blocker_simple_traits::Graph_edge {
- int index_;
- public:
- Simple_geometric_edge()
- : Skeleton_blocker_simple_traits::Graph_edge(),
- index_(-1) { }
-
- /**
- * @brief Allows to modify the index of the edge.
- * The indices of the edge are used to store heap information
- * in the edge contraction algorithm.
- */
- int& index() {
- return index_;
- }
-
- int index() const {
- return index_;
- }
- };
-
- typedef Simple_geometric_vertex Graph_vertex;
- typedef Skeleton_blocker_simple_traits::Graph_edge Graph_edge;
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_SKELETON_BLOCKER_SIMPLE_GEOMETRIC_TRAITS_H_
diff --git a/include/gudhi/Skeleton_blocker/Skeleton_blocker_simple_traits.h b/include/gudhi/Skeleton_blocker/Skeleton_blocker_simple_traits.h
deleted file mode 100644
index 144f1fd0..00000000
--- a/include/gudhi/Skeleton_blocker/Skeleton_blocker_simple_traits.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_SKELETON_BLOCKER_SIMPLE_TRAITS_H_
-#define SKELETON_BLOCKER_SKELETON_BLOCKER_SIMPLE_TRAITS_H_
-
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_simplex.h>
-
-#include <string>
-#include <sstream>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/**
- * @extends SkeletonBlockerDS
- * @ingroup skbl
- * @brief Simple traits that is a model of SkeletonBlockerDS and
- * can be passed as a template argument to Skeleton_blocker_complex
- */
-struct Skeleton_blocker_simple_traits {
- /**
- * @brief Global and local handle similar to <a href="http://www.boost.org/doc/libs/1_38_0/libs/graph/doc/subgraph.html">boost subgraphs</a>.
- * Vertices are stored in a vector.
- * For the root simplicial complex, the local and global descriptors are the same.
- * For a subcomplex L and one of its vertices 'v', the local descriptor of 'v' is its position in
- * the vertex vector of the subcomplex L whereas its global descriptor is the position of 'v'
- * in the vertex vector of the root simplicial complex.
- */
- struct Root_vertex_handle {
- typedef int boost_vertex_handle;
-
- explicit Root_vertex_handle(boost_vertex_handle val = -1)
- : vertex(val) { }
- boost_vertex_handle vertex;
-
- bool operator!=(const Root_vertex_handle& other) const {
- return !(this->vertex == other.vertex);
- }
-
- bool operator==(const Root_vertex_handle& other) const {
- return this->vertex == other.vertex;
- }
-
- bool operator<(const Root_vertex_handle& other) const {
- return this->vertex < other.vertex;
- }
-
- friend std::ostream& operator<<(std::ostream& o,
- const Root_vertex_handle & v) {
- o << v.vertex;
- return o;
- }
- };
-
- struct Vertex_handle {
- typedef int boost_vertex_handle;
-
- explicit Vertex_handle(boost_vertex_handle val = -1)
- : vertex(val) { }
-
- operator int() const {
- return static_cast<int> (vertex);
- }
-
- boost_vertex_handle vertex;
-
- bool operator==(const Vertex_handle& other) const {
- return this->vertex == other.vertex;
- }
-
- bool operator!=(const Vertex_handle& other) const {
- return this->vertex != other.vertex;
- }
-
- bool operator<(const Vertex_handle& other) const {
- return this->vertex < other.vertex;
- }
-
- friend std::ostream& operator<<(std::ostream& o, const Vertex_handle & v) {
- o << v.vertex;
- return o;
- }
- };
-
- class Graph_vertex {
- bool is_active_;
- Root_vertex_handle id_;
-
- public:
- virtual ~Graph_vertex() { }
-
- void activate() {
- is_active_ = true;
- }
-
- void deactivate() {
- is_active_ = false;
- }
-
- bool is_active() const {
- return is_active_;
- }
-
- void set_id(Root_vertex_handle i) {
- id_ = i;
- }
-
- Root_vertex_handle get_id() const {
- return id_;
- }
-
- virtual std::string to_string() const {
- std::ostringstream res;
- res << id_;
- return res.str();
- }
-
- friend std::ostream& operator<<(std::ostream& o, const Graph_vertex & v) {
- o << v.to_string();
- return o;
- }
- };
-
- class Graph_edge {
- Root_vertex_handle a_;
- Root_vertex_handle b_;
- int index_;
-
- public:
- Graph_edge()
- : a_(-1),
- b_(-1),
- index_(-1) { }
-
- int& index() {
- return index_;
- }
-
- int index() const {
- return index_;
- }
-
- void setId(Root_vertex_handle a, Root_vertex_handle b) {
- a_ = a;
- b_ = b;
- }
-
- Root_vertex_handle first() const {
- return a_;
- }
-
- Root_vertex_handle second() const {
- return b_;
- }
-
- friend std::ostream& operator<<(std::ostream& o, const Graph_edge & v) {
- o << "(" << v.a_ << "," << v.b_ << " - id = " << v.index();
- return o;
- }
- };
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_SKELETON_BLOCKER_SIMPLE_TRAITS_H_
diff --git a/include/gudhi/Skeleton_blocker/Skeleton_blocker_simplex.h b/include/gudhi/Skeleton_blocker/Skeleton_blocker_simplex.h
deleted file mode 100644
index d7193157..00000000
--- a/include/gudhi/Skeleton_blocker/Skeleton_blocker_simplex.h
+++ /dev/null
@@ -1,374 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_SKELETON_BLOCKER_SIMPLEX_H_
-#define SKELETON_BLOCKER_SKELETON_BLOCKER_SIMPLEX_H_
-
-#include <cassert>
-#include <iostream>
-#include <set>
-#include <vector>
-#include <initializer_list>
-#include <string>
-#include <algorithm>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/**
- *@brief Abstract simplex used in Skeleton blockers data-structure.
- *
- * An abstract simplex is represented as an ordered set of T elements,
- * each element representing a vertex.
- *
- * The element representing a vertex can be SkeletonBlockerDS::Vertex_handle or SkeletonBlockerDS::Root_vertex_handle.
- *
- *
- */
-template<typename T>
-
-class Skeleton_blocker_simplex {
- private:
- std::set<T> simplex_set;
-
- public:
- typedef typename T::boost_vertex_handle boost_vertex_handle;
-
- typedef T Vertex_handle;
-
- typedef typename std::set<T>::const_iterator Simplex_vertex_const_iterator;
- typedef typename std::set<T>::iterator Simplex_vertex_iterator;
-
- /** @name Constructors / Destructors / Initialization
- */
- //@{
-
- void clear() {
- simplex_set.clear();
- }
-
- Skeleton_blocker_simplex(std::initializer_list<T>& list) {
- std::for_each(list.begin(), list.end(), [&] (T const& elt) {
- add_vertex(elt);
- });
- }
-
- template<typename ... Args>
- explicit Skeleton_blocker_simplex(Args ... args) {
- add_vertices(args...);
- }
-
- template<typename ... Args>
- void add_vertices(T v, Args ... args) {
- add_vertex(v);
- add_vertices(args...);
- }
-
- void add_vertices(T v) {
- add_vertex(v);
- }
-
- void add_vertices() { }
-
- /**
- * Initialize a simplex with a string such as {0,1,2}
- */
- explicit Skeleton_blocker_simplex(std::string token) {
- clear();
- if ((token[0] == '{') && (token[token.size() - 1] == '}')) {
- token.erase(0, 1);
- token.erase(token.size() - 1, 1);
- while (token.size() != 0) {
- int coma_position = token.find_first_of(',');
- // cout << "coma_position:"<<coma_position<<endl;
- std::string n = token.substr(0, coma_position);
- // cout << "token:"<<token<<endl;
- token.erase(0, n.size() + 1);
- add_vertex((T) (atoi(n.c_str())));
- }
- }
- }
-
- //@}
-
- /** @name Simplex manipulation
- */
- //@{
- /**
- * Add the vertex v to the simplex:
- * Note that adding two times the same vertex is
- * the same that adding it once.
- */
- void add_vertex(T v) {
- simplex_set.insert(v);
- }
-
- /**
- * Remove the vertex v from the simplex:
- */
- void remove_vertex(T v) {
- simplex_set.erase(v);
- }
-
- /**
- * Intersects the simplex with the simplex a.
- */
- void intersection(const Skeleton_blocker_simplex & a) {
- std::vector<T> v;
- v.reserve((std::min)(simplex_set.size(), a.simplex_set.size()));
-
- set_intersection(simplex_set.begin(), simplex_set.end(),
- a.simplex_set.begin(), a.simplex_set.end(),
- std::back_inserter(v));
- clear();
- for (auto i : v)
- simplex_set.insert(i);
- }
-
- /**
- * Substracts a from the simplex.
- */
- void difference(const Skeleton_blocker_simplex & a) {
- std::vector<T> v;
- v.reserve(simplex_set.size());
-
- set_difference(simplex_set.begin(), simplex_set.end(),
- a.simplex_set.begin(), a.simplex_set.end(),
- std::back_inserter(v));
-
- clear();
- for (auto i : v)
- simplex_set.insert(i);
- }
-
- /**
- * Add vertices of a to the simplex.
- */
- void union_vertices(const Skeleton_blocker_simplex & a) {
- std::vector<T> v;
- v.reserve(simplex_set.size() + a.simplex_set.size());
-
- set_union(simplex_set.begin(), simplex_set.end(), a.simplex_set.begin(),
- a.simplex_set.end(), std::back_inserter(v));
- clear();
- simplex_set.insert(v.begin(), v.end());
- }
-
- typename std::set<T>::const_iterator begin() const {
- return simplex_set.cbegin();
- }
-
- typename std::set<T>::const_iterator end() const {
- return simplex_set.cend();
- }
-
- typename std::set<T>::const_reverse_iterator rbegin() const {
- return simplex_set.crbegin();
- }
-
- typename std::set<T>::const_reverse_iterator rend() const {
- return simplex_set.crend();
- }
-
- typename std::set<T>::iterator begin() {
- return simplex_set.begin();
- }
-
- typename std::set<T>::iterator end() {
- return simplex_set.end();
- }
-
- //@}
-
- /** @name Queries
- */
- //@{
- /**
- * Returns the dimension of the simplex.
- */
- int dimension() const {
- return (simplex_set.size() - 1);
- }
-
- bool empty() const {
- return simplex_set.empty();
- }
-
- /**
- * Returns the first and smallest vertex of the simplex.
- *
- * Be careful : assumes the simplex is non-empty.
- */
- T first_vertex() const {
- assert(!empty());
- return *(begin());
- }
-
- /**
- * Returns the last and greatest vertex of the simplex.
- *
- * Be careful : assumes the simplex is non-empty.
- */
- T last_vertex() const {
- assert(!empty());
- return *(simplex_set.rbegin());
- }
-
- /**
- * @return true iff the simplex contains the simplex a.
- */
- bool contains(const Skeleton_blocker_simplex & a) const {
- return includes(simplex_set.cbegin(), simplex_set.cend(),
- a.simplex_set.cbegin(), a.simplex_set.cend());
- }
-
- /**
- * @return true iff the simplex contains the difference \f$ a \setminus b \f$.
- */
- bool contains_difference(const Skeleton_blocker_simplex& a,
- const Skeleton_blocker_simplex& b) const {
- auto first1 = begin();
- auto last1 = end();
-
- auto first2 = a.begin();
- auto last2 = a.end();
-
- while (first2 != last2) {
- // we ignore vertices of b
- if (b.contains(*first2)) {
- ++first2;
- } else {
- if ((first1 == last1) || (*first2 < *first1))
- return false;
- if (!(*first1 < *first2))
- ++first2;
- ++first1;
- }
- }
- return true;
- }
-
- /**
- * @return true iff the simplex contains the difference \f$ a \setminus \{ x \} \f$.
- */
- bool contains_difference(const Skeleton_blocker_simplex& a, T x) const {
- auto first1 = begin();
- auto last1 = end();
-
- auto first2 = a.begin();
- auto last2 = a.end();
-
- while (first2 != last2) {
- // we ignore vertices x
- if (x == *first2) {
- ++first2;
- } else {
- if ((first1 == last1) || (*first2 < *first1))
- return false;
- if (!(*first1 < *first2))
- ++first2;
- ++first1;
- }
- }
- return true;
- }
-
- /**
- * @return true iff the simplex contains the difference \f$ a \setminus \{ x,y \} \f$.
- */
- bool contains_difference(const Skeleton_blocker_simplex& a, T x, T y) const {
- auto first1 = begin();
- auto last1 = end();
-
- auto first2 = a.begin();
- auto last2 = a.end();
-
- while (first2 != last2) {
- // we ignore vertices of x,y
- if (x == *first2 || y == *first2) {
- ++first2;
- } else {
- if ((first1 == last1) || (*first2 < *first1))
- return false;
- if (!(*first1 < *first2))
- ++first2;
- ++first1;
- }
- }
- return true;
- }
-
- bool contains(T v) const {
- return (simplex_set.find(v) != simplex_set.end());
- }
-
- bool disjoint(const Skeleton_blocker_simplex& a) const {
- std::vector<T> v;
- v.reserve(std::min(simplex_set.size(), a.simplex_set.size()));
-
- set_intersection(simplex_set.cbegin(), simplex_set.cend(),
- a.simplex_set.cbegin(), a.simplex_set.cend(),
- std::back_inserter(v));
-
- return (v.size() == 0);
- }
-
- bool operator==(const Skeleton_blocker_simplex& other) const {
- return (this->simplex_set == other.simplex_set);
- }
-
- bool operator!=(const Skeleton_blocker_simplex& other) const {
- return (this->simplex_set != other.simplex_set);
- }
-
- bool operator<(const Skeleton_blocker_simplex& other) const {
- return (std::lexicographical_compare(this->simplex_set.begin(),
- this->simplex_set.end(), other.begin(),
- other.end()));
- }
-
- //@}
-
- friend std::ostream& operator<<(std::ostream& o,
- const Skeleton_blocker_simplex & sigma) {
- bool first = true;
- o << "{";
- for (auto i : sigma) {
- if (first)
- first = false;
- else
- o << ",";
- o << i;
- }
- o << "}";
- return o;
- }
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_SKELETON_BLOCKER_SIMPLEX_H_
diff --git a/include/gudhi/Skeleton_blocker/Skeleton_blocker_sub_complex.h b/include/gudhi/Skeleton_blocker/Skeleton_blocker_sub_complex.h
deleted file mode 100644
index dbfb4042..00000000
--- a/include/gudhi/Skeleton_blocker/Skeleton_blocker_sub_complex.h
+++ /dev/null
@@ -1,273 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_SKELETON_BLOCKER_SUB_COMPLEX_H_
-#define SKELETON_BLOCKER_SKELETON_BLOCKER_SUB_COMPLEX_H_
-
-#include <gudhi/Skeleton_blocker_complex.h>
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_simplex.h>
-#include <gudhi/Debug_utils.h>
-
-#include <map>
-#include <vector>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/**
- * @brief Simplicial subcomplex of a complex represented by a skeleton/blockers pair.
- * @extends Skeleton_blocker_complex
- * @details Stores a subcomplex of a simplicial complex.
- * To simplify explanations below, we will suppose that :
- * - K is the root simplicial complex
- * - L is a subcomplex of K.
- *
- * One vertex of K may exists in L but with a different address.
- * To be able to locate the vertices in K from vertices of L, the class
- * stores a map 'adresses' between vertices of K and vertices of L.
- *
- * Note that the type for handle of vertices of L is 'Vertex_handle' and
- * the type for handle of vertices of K is 'Root_vertex_handle'.
- *
- * The template ComplexType is type of the root complex. It allows to know
- * if the subcomplex is geometric or not.
- * It has to be either 'Skeleton_blockers_complex' or 'Skeleton_blockers_geometric_complex'.
- *
- */
-template<typename ComplexType>
-class Skeleton_blocker_sub_complex : public ComplexType {
- protected:
- template<class T> friend class Skeleton_blocker_link_complex;
-
- typedef typename ComplexType::Graph Graph;
- typedef typename ComplexType::Edge_handle Edge_handle;
-
- typedef typename ComplexType::boost_vertex_handle boost_vertex_handle;
-
- public:
- using ComplexType::add_vertex;
- using ComplexType::add_edge_without_blockers;
- using ComplexType::add_blocker;
-
- typedef typename ComplexType::Vertex_handle Vertex_handle;
- typedef typename ComplexType::Root_vertex_handle Root_vertex_handle;
- typedef typename ComplexType::Simplex Simplex;
- typedef typename ComplexType::Root_simplex_handle Root_simplex_handle;
-
- protected:
- /**
- * @brief Determines whether all proper faces of simplex 'sigma' belong to 'link1' \cup 'link2'
- * where 'link1' and 'link2' are subcomplexes of the same complex of type ComplexType
- */
- typedef std::map<Root_vertex_handle, Vertex_handle> IdAddressMap;
- typedef typename IdAddressMap::value_type AddressPair;
- typedef typename IdAddressMap::iterator IdAddressMapIterator;
- typedef typename IdAddressMap::const_iterator IdAddressMapConstIterator;
- std::map<Root_vertex_handle, Vertex_handle> adresses;
-
- public:
- /**
- * Add a vertex 'global' of K to L. When added to L, this vertex will receive
- * another number, addresses(global), its local adress.
- * return the adress where the vertex lay on L.
- * The vertex corresponding to 'global' must not be already present
- * in the complex.
- */
- Vertex_handle add_vertex(Root_vertex_handle global) {
- assert(!this->contains_vertex(global));
- Vertex_handle address(boost::add_vertex(this->skeleton));
- this->num_vertices_++;
- (*this)[address].activate();
- (*this)[address].set_id(global);
- adresses.insert(AddressPair(global, address));
- this->degree_.push_back(0);
- return address;
- }
-
- /**
- * Add an edge (v1_root,v2_root) to the sub-complex.
- * It assumes that both vertices corresponding to v1_root and v2_root are present
- * in the sub-complex.
- */
- void add_edge_without_blockers(Root_vertex_handle v1_root, Root_vertex_handle v2_root) {
- auto v1_sub(this->get_address(v1_root));
- auto v2_sub(this->get_address(v2_root));
- assert(v1_sub && v2_sub);
- this->ComplexType::add_edge_without_blockers(*v1_sub, *v2_sub);
- }
-
- /**
- * Add a blocker to the sub-complex.
- * It assumes that all vertices of blocker_root are present
- * in the sub-complex.
- */
- void add_blocker(const Root_simplex_handle& blocker_root) {
- auto blocker_sub = this->get_address(blocker_root);
- assert(blocker_sub);
- this->add_blocker(new Simplex(*blocker_sub));
- }
-
- public:
- /**
- * Constructs the restricted complex of 'parent_complex' to
- * vertices of 'simplex'.
- */
- void make_restricted_complex(const ComplexType & parent_complex,
- const Simplex& simplex) {
- this->clear();
- // add vertices to the sub complex
- for (auto x : simplex) {
- assert(parent_complex.contains_vertex(x));
- auto x_local = this->add_vertex(parent_complex[x].get_id());
- (*this)[x_local] = parent_complex[x];
- }
-
- // add edges to the sub complex
- for (auto x : simplex) {
- // x_neigh is the neighbor of x intersected with vertices_simplex
- Simplex x_neigh;
- parent_complex.add_neighbours(x, x_neigh, true);
- x_neigh.intersection(simplex);
- for (auto y : x_neigh) {
- this->add_edge_without_blockers(parent_complex[x].get_id(), parent_complex[y].get_id());
- }
- }
-
- // add blockers to the sub complex
- for (auto blocker : parent_complex.const_blocker_range()) {
- // check if it is the first time we encounter the blocker
- if (simplex.contains(*blocker)) {
- Root_simplex_handle blocker_root(parent_complex.get_id(*(blocker)));
- Simplex blocker_restr(
- *(this->get_simplex_address(blocker_root)));
- this->add_blocker(new Simplex(blocker_restr));
- }
- }
- }
-
- void clear() {
- adresses.clear();
- ComplexType::clear();
- }
-
- /**
- * Compute the local vertex in L corresponding to the vertex global in K.
- * runs in O(log n) if n = num_vertices()
- */
- boost::optional<Vertex_handle> get_address(Root_vertex_handle global) const {
- boost::optional < Vertex_handle > res;
- IdAddressMapConstIterator it = adresses.find(global);
- if (it == adresses.end())
- res.reset();
- else
- res = (*it).second;
- return res;
- }
-
- // /**
- // * Allocates a simplex in L corresponding to the simplex s in K
- // * with its local adresses and returns an AddressSimplex.
- // */
- // boost::optional<Simplex> get_address(const Root_simplex_handle & s) const;
-
- // private:
- /**
- * same as get_address except that it will return a simplex in any case.
- * The vertices that were not found are not added.
- */
- // @remark should be private but problem with VS
-
- std::vector<boost::optional<Vertex_handle> > get_addresses(
- const Root_simplex_handle & s) const {
- std::vector < boost::optional<Vertex_handle> > res;
- for (auto i : s) {
- res.push_back(get_address(i));
- }
- return res;
- }
-};
-
-/**
- * @remark remarque perte de temps a creer un nouveau simplexe a chaque fois
- * alors qu'on pourrait utiliser a la place de 'addresses_sigma_in_link'
- * un simplex avec des valeurs sp�ciales ComplexDS::null_vertex par exemple
- * pour indiquer qu'un vertex n'appartient pas au complex
- */
-template<typename ComplexType>
-bool proper_face_in_union(
- Skeleton_blocker_sub_complex<ComplexType> & link,
- std::vector<boost::optional<typename ComplexType::Vertex_handle> > & addresses_sigma_in_link,
- std::size_t vertex_to_be_ignored) {
- // we test that all vertices of 'addresses_sigma_in_link' but 'vertex_to_be_ignored'
- // are in link1 if it is the case we construct the corresponding simplex
- bool vertices_sigma_are_in_link = true;
- typename ComplexType::Simplex sigma_in_link;
- for (std::size_t i = 0; i < addresses_sigma_in_link.size(); ++i) {
- if (i != vertex_to_be_ignored) {
- if (!addresses_sigma_in_link[i]) {
- vertices_sigma_are_in_link = false;
- break;
- } else {
- sigma_in_link.add_vertex(*addresses_sigma_in_link[i]);
- }
- }
- }
- // If one of vertices of the simplex is not in the complex then it returns false
- // Otherwise, it tests if the simplex is in the complex
- return vertices_sigma_are_in_link && link.contains(sigma_in_link);
-}
-
-// Remark: this function should be friend in order to leave get_adresses private
-// however doing so seemes currently not possible due to a visual studio bug c2668
-// "the compiler does not support partial ordering of template functions as specified in the C++ Standard"
-// http://www.serkey.com/error-c2668-ambiguous-call-to-overloaded-function-bb45ft.html
-
-template<typename ComplexType>
-bool proper_faces_in_union(
- Skeleton_blocker_simplex<typename ComplexType::Root_vertex_handle> & sigma,
- Skeleton_blocker_sub_complex<ComplexType> & link1,
- Skeleton_blocker_sub_complex<ComplexType> & link2) {
- typedef typename ComplexType::Vertex_handle Vertex_handle;
- std::vector < boost::optional<Vertex_handle> > addresses_sigma_in_link1 =
- link1.get_addresses(sigma);
- std::vector < boost::optional<Vertex_handle> > addresses_sigma_in_link2 =
- link2.get_addresses(sigma);
-
- for (std::size_t current_index = 0; current_index < addresses_sigma_in_link1.size();
- ++current_index) {
- if (!proper_face_in_union(link1, addresses_sigma_in_link1, current_index)
- && !proper_face_in_union(link2, addresses_sigma_in_link2,
- current_index)) {
- return false;
- }
- }
- return true;
-}
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_SKELETON_BLOCKER_SUB_COMPLEX_H_
diff --git a/include/gudhi/Skeleton_blocker/internal/Top_faces.h b/include/gudhi/Skeleton_blocker/internal/Top_faces.h
deleted file mode 100644
index f80ca4fe..00000000
--- a/include/gudhi/Skeleton_blocker/internal/Top_faces.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_INTERNAL_TOP_FACES_H_
-#define SKELETON_BLOCKER_INTERNAL_TOP_FACES_H_
-
-#include <list>
-#include <vector>
-#include <set>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-template<typename SimplexHandle>
-std::list<SimplexHandle> subfaces(SimplexHandle top_face) {
- std::list<SimplexHandle> res;
- if (top_face.dimension() == -1) return res;
- if (top_face.dimension() == 0) {
- res.push_back(top_face);
- return res;
- } else {
- auto first_vertex = top_face.first_vertex();
- top_face.remove_vertex(first_vertex);
- res = subfaces(top_face);
- std::list<SimplexHandle> copy = res;
- for (auto& simplex : copy) {
- simplex.add_vertex(first_vertex);
- }
- res.push_back(SimplexHandle(first_vertex));
- res.splice(res.end(), copy);
- return res;
- }
-}
-
-/**
- * add all faces of top_face in simplices_per_dimension
- */
-template<typename SimplexHandle>
-void register_faces(std::vector< std::set<SimplexHandle> >& simplices_per_dimension,
- const SimplexHandle& top_face) {
- std::list<SimplexHandle> subfaces_list = subfaces(top_face);
- for (auto& simplex : subfaces_list) {
- simplices_per_dimension[simplex.dimension()].insert(simplex);
- }
-}
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_INTERNAL_TOP_FACES_H_
diff --git a/include/gudhi/Skeleton_blocker/internal/Trie.h b/include/gudhi/Skeleton_blocker/internal/Trie.h
deleted file mode 100644
index 7a5d38eb..00000000
--- a/include/gudhi/Skeleton_blocker/internal/Trie.h
+++ /dev/null
@@ -1,269 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef SKELETON_BLOCKER_INTERNAL_TRIE_H_
-#define SKELETON_BLOCKER_INTERNAL_TRIE_H_
-
-#include <memory>
-#include <vector>
-#include <deque>
-#include <set>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-template<typename SimplexHandle>
-struct Trie {
- typedef SimplexHandle Simplex;
- typedef typename SimplexHandle::Vertex_handle Vertex_handle;
-
- Vertex_handle v;
- std::vector<std::shared_ptr<Trie> > childs;
- // std::vector<std::unique_ptr<Trie> > childs; -> use of deleted function
- private:
- const Trie* parent_;
-
- public:
- Trie() : parent_(0) { }
-
- Trie(Vertex_handle v_) : v(v_), parent_(0) { }
-
- Trie(Vertex_handle v_, Trie* parent) : v(v_), parent_(parent) { }
-
- bool operator==(const Trie& other) const {
- return (v == other.v);
- }
-
- void add_child(Trie* child) {
- if (child) {
- std::shared_ptr<Trie> ptr_to_add(child);
- childs.push_back(ptr_to_add);
- child->parent_ = this;
- }
- }
-
- typedef typename Simplex::Simplex_vertex_const_iterator Simplex_vertex_const_iterator;
-
- Trie* make_trie(Simplex_vertex_const_iterator s_it, Simplex_vertex_const_iterator s_end) {
- if (s_it == s_end) {
- return 0;
- } else {
- Trie* res = new Trie(*s_it);
- Trie* child = make_trie(++s_it, s_end);
- res->add_child(child);
- return res;
- }
- }
-
- private:
- // go down recursively in the tree while advancing the simplex iterator.
- // when it reaches a leaf, it inserts the remaining that is not present
- void add_simplex_helper(Simplex_vertex_const_iterator s_it, Simplex_vertex_const_iterator s_end) {
- assert(*s_it == v);
- ++s_it;
- if (s_it == s_end) return;
- if (!is_leaf()) {
- for (auto child : childs) {
- if (child->v == *s_it)
- return child->add_simplex_helper(s_it, s_end);
- }
- // s_it is not found and needs to be inserted
- }
- // not leaf -> remaining of s needs to be inserted
- Trie * son_with_what_remains_of_s(make_trie(s_it, s_end));
- add_child(son_with_what_remains_of_s);
- return;
- }
-
- void maximal_faces_helper(std::vector<Simplex>& res) const {
- if (is_leaf()) res.push_back(simplex());
- else
- for (auto child : childs)
- child->maximal_faces_helper(res);
- }
-
- public:
- /**
- * adds the simplex to the trie
- */
- void add_simplex(const Simplex& s) {
- if (s.empty()) return;
- assert(v == s.first_vertex());
- add_simplex_helper(s.begin(), s.end());
- }
-
- std::vector<Simplex> maximal_faces() const {
- std::vector<Simplex> res;
- maximal_faces_helper(res);
- return res;
- }
-
- /**
- * Goes to the root in the trie to consitute simplex
- */
- void add_vertices_up_to_the_root(Simplex& res) const {
- res.add_vertex(v);
- if (parent_)
- parent_->add_vertices_up_to_the_root(res);
- }
-
- Simplex simplex() const {
- Simplex res;
- add_vertices_up_to_the_root(res);
- return res;
- }
-
- bool is_leaf() const {
- return childs.empty();
- }
-
- bool is_root() const {
- return parent_ == 0;
- }
-
- const Trie* parent() {
- return parent_;
- }
-
- void remove_leaf() {
- assert(is_leaf());
- if (!is_root())
- parent_->childs.erase(this);
- }
-
- /**
- * true iff the simplex corresponds to one node in the trie
- */
- bool contains(const Simplex& s) const {
- Trie const* current = this;
- if (s.empty()) return true;
- if (current->v != s.first_vertex()) return false;
- auto s_pos = s.begin();
- ++s_pos;
- while (s_pos != s.end() && current != 0) {
- bool found = false;
- for (const auto child : current->childs) {
- if (child->v == *s_pos) {
- ++s_pos;
- current = child.get();
- found = true;
- break;
- }
- }
- if (!found) return false;
- }
- return current != 0;
- }
-
- Trie* go_bottom_left() {
- if (is_leaf())
- return this;
- else
- return (*childs.begin())->go_bottom_left();
- }
-
- friend std::ostream& operator<<(std::ostream& stream, const Trie& trie) {
- stream << "T( " << trie.v << " ";
- for (auto t : trie.childs)
- stream << *t;
- stream << ")";
- return stream;
- }
-};
-
-template<typename SimplexHandle>
-struct Tries {
- typedef typename SimplexHandle::Vertex_handle Vertex_handle;
- typedef SimplexHandle Simplex;
-
- typedef Trie<Simplex> STrie;
-
- template<typename SimpleHandleOutputIterator>
- Tries(unsigned num_vertices, SimpleHandleOutputIterator simplex_begin, SimpleHandleOutputIterator simplex_end) :
- cofaces_(num_vertices, 0) {
- for (auto i = 0u; i < num_vertices; ++i)
- cofaces_[i] = new STrie(Vertex_handle(i));
- for (auto s_it = simplex_begin; s_it != simplex_end; ++s_it) {
- if (s_it->dimension() >= 1)
- cofaces_[s_it->first_vertex()]->add_simplex(*s_it);
- }
- }
-
- ~Tries() {
- for (STrie* t : cofaces_)
- delete t;
- }
-
- // return a simplex that consists in all u such uv is an edge and u>v
-
- Simplex positive_neighbors(Vertex_handle v) const {
- Simplex res;
- for (auto child : cofaces_[v]->childs)
- res.add_vertex(child->v);
- return res;
- }
-
- bool contains(const Simplex& s) const {
- auto first_v = s.first_vertex();
- return cofaces_[first_v]->contains(s);
- }
-
- friend std::ostream& operator<<(std::ostream& stream, const Tries& tries) {
- for (auto trie : tries.cofaces_)
- stream << *trie << std::endl;
- return stream;
- }
-
- // init_next_dimension must be called first
-
- std::vector<Simplex> next_dimension_simplices() const {
- std::vector<Simplex> res;
- while (!(to_see_.empty()) && (to_see_.front()->simplex().dimension() == current_dimension_)) {
- res.emplace_back(to_see_.front()->simplex());
- for (auto child : to_see_.front()->childs)
- to_see_.push_back(child.get());
- to_see_.pop_front();
- }
- ++current_dimension_;
- return res;
- }
-
- void init_next_dimension() const {
- for (auto trie : cofaces_)
- to_see_.push_back(trie);
- }
-
- private:
- mutable std::deque<STrie*> to_see_;
- mutable int current_dimension_ = 0;
- std::vector<STrie*> cofaces_;
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_INTERNAL_TRIE_H_
diff --git a/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_blockers_iterators.h b/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_blockers_iterators.h
deleted file mode 100644
index 95c5f7ef..00000000
--- a/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_blockers_iterators.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_BLOCKERS_ITERATORS_H_
-#define SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_BLOCKERS_ITERATORS_H_
-
-#include <boost/iterator/iterator_facade.hpp>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/**
- * @brief Iterator through the blockers of a vertex.
- */
-// ReturnType = const Simplex* or Simplex*
-// MapIteratorType = BlockerMapConstIterator or BlockerMapIterator
-
-template<typename MapIteratorType, typename ReturnType>
-class Blocker_iterator_internal : public boost::iterator_facade<
-Blocker_iterator_internal<MapIteratorType, ReturnType>,
-ReturnType,
-boost::forward_traversal_tag,
-ReturnType
-> {
- private:
- MapIteratorType current_position;
- MapIteratorType end_of_map;
-
- public:
- Blocker_iterator_internal() : current_position() { }
-
- Blocker_iterator_internal(MapIteratorType position, MapIteratorType end_of_map_) :
- current_position(position), end_of_map(end_of_map_) { }
-
- bool equal(const Blocker_iterator_internal& other) const {
- return current_position == other.current_position;
- }
-
- void increment() {
- goto_next_blocker();
- }
-
- ReturnType dereference() const {
- return (current_position->second);
- }
-
- private:
- /**
- * Let the current pair be (v,sigma) where v is a vertex and sigma is a blocker.
- * If v is not the first vertex of sigma then we already have seen sigma as a blocker
- * and we look for the next one.
- */
- void goto_next_blocker() {
- do {
- ++current_position;
- } while (!(current_position == end_of_map) && !first_time_blocker_is_seen());
- }
-
- bool first_time_blocker_is_seen() const {
- return current_position->first == current_position->second->first_vertex();
- }
-};
-
-/**
- * @brief Iterator through the blockers of a vertex
- */
-// ReturnType = const Simplex* or Simplex*
-// MapIteratorType = BlockerMapConstIterator or BlockerMapIterator
-
-template<typename MapIteratorType, typename ReturnType>
-class Blocker_iterator_around_vertex_internal : public boost::iterator_facade<
-Blocker_iterator_around_vertex_internal<MapIteratorType, ReturnType>,
-ReturnType,
-boost::forward_traversal_tag,
-ReturnType
-> {
- private:
- MapIteratorType current_position_;
-
- public:
- Blocker_iterator_around_vertex_internal() : current_position_() { }
-
- Blocker_iterator_around_vertex_internal(MapIteratorType position) :
- current_position_(position) { }
-
- Blocker_iterator_around_vertex_internal& operator=(Blocker_iterator_around_vertex_internal other) {
- this->current_position_ = other.current_position_;
- return *this;
- }
-
- bool equal(const Blocker_iterator_around_vertex_internal& other) const {
- return current_position_ == other.current_position_;
- }
-
- void increment() {
- current_position_++;
- }
-
- ReturnType dereference() const {
- return (current_position_->second);
- }
-
- MapIteratorType current_position() {
- return this->current_position_;
- }
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_BLOCKERS_ITERATORS_H_
diff --git a/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_edges_iterators.h b/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_edges_iterators.h
deleted file mode 100644
index 5c725aae..00000000
--- a/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_edges_iterators.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_EDGES_ITERATORS_H_
-#define SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_EDGES_ITERATORS_H_
-
-#include <boost/iterator/iterator_facade.hpp>
-#include <boost/graph/adjacency_list.hpp>
-
-#include <utility> // for pair<>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-template<typename SkeletonBlockerComplex>
-class Edge_around_vertex_iterator : public boost::iterator_facade <Edge_around_vertex_iterator<SkeletonBlockerComplex>
-, typename SkeletonBlockerComplex::Edge_handle const, boost::forward_traversal_tag
-, typename SkeletonBlockerComplex::Edge_handle const> {
- friend class boost::iterator_core_access;
-
- typedef SkeletonBlockerComplex Complex;
- typedef typename Complex::boost_adjacency_iterator boost_adjacency_iterator;
- typedef typename Complex::Vertex_handle Vertex_handle;
- typedef typename Complex::Edge_handle Edge_handle;
-
- private:
- const Complex* complex;
- Vertex_handle v;
-
- boost_adjacency_iterator current_;
- boost_adjacency_iterator end_;
-
- public:
- Edge_around_vertex_iterator() : complex(NULL) { }
-
- Edge_around_vertex_iterator(const Complex* complex_, Vertex_handle v_) :
- complex(complex_),
- v(v_) {
- tie(current_, end_) = adjacent_vertices(v.vertex, complex->skeleton);
- }
-
- /**
- * returns an iterator to the end
- */
- Edge_around_vertex_iterator(const Complex* complex_, Vertex_handle v_, int end) :
- complex(complex_),
- v(v_) {
- tie(current_, end_) = adjacent_vertices(v.vertex, complex->skeleton);
- set_end();
- }
-
- bool equal(const Edge_around_vertex_iterator& other) const {
- return (complex == other.complex) && (v == other.v) && (current_ == other.current_) && (end_ == other.end_);
- }
-
- void increment() {
- if (current_ != end_)
- ++current_;
- }
-
- Edge_handle dereference() const {
- return *(*complex)[std::make_pair(v, static_cast<Vertex_handle> (*current_))];
- }
-
- private:
- // remove this ugly hack
- void set_end() {
- current_ = end_;
- }
-};
-
-/**
- *@brief Iterator on the edges of a simplicial complex.
- *
- */
-template<typename SkeletonBlockerComplex>
-class Edge_iterator : public boost::iterator_facade <Edge_iterator<SkeletonBlockerComplex>
-, typename SkeletonBlockerComplex::Edge_handle const
-, boost::forward_traversal_tag
-, typename SkeletonBlockerComplex::Edge_handle const> {
- friend class boost::iterator_core_access;
-
- public:
- typedef SkeletonBlockerComplex Complex;
- typedef typename Complex::boost_edge_iterator boost_edge_iterator;
- typedef typename Complex::Edge_handle Edge_handle;
-
- const Complex* complex;
- std::pair<boost_edge_iterator, boost_edge_iterator> edge_iterator;
-
- Edge_iterator() : complex(NULL) { }
-
- Edge_iterator(const SkeletonBlockerComplex* complex_) :
- complex(complex_),
- edge_iterator(boost::edges(complex_->skeleton)) { }
-
- /**
- * return an iterator to the end
- */
- Edge_iterator(const SkeletonBlockerComplex* complex_, int end) :
- complex(complex_),
- edge_iterator(boost::edges(complex_->skeleton)) {
- edge_iterator.first = edge_iterator.second;
- }
-
- bool equal(const Edge_iterator& other) const {
- return (complex == other.complex) && (edge_iterator == other.edge_iterator);
- }
-
- void increment() {
- if (edge_iterator.first != edge_iterator.second) {
- ++(edge_iterator.first);
- }
- }
-
- Edge_handle dereference() const {
- return (*(edge_iterator.first));
- }
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_EDGES_ITERATORS_H_
diff --git a/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_iterators.h b/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_iterators.h
deleted file mode 100644
index 8054e64f..00000000
--- a/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_iterators.h
+++ /dev/null
@@ -1,32 +0,0 @@
- /* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_ITERATORS_H_
-#define SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_ITERATORS_H_
-
-#include <gudhi/Skeleton_blocker/iterators/Skeleton_blockers_vertices_iterators.h>
-#include <gudhi/Skeleton_blocker/iterators/Skeleton_blockers_edges_iterators.h>
-#include <gudhi/Skeleton_blocker/iterators/Skeleton_blockers_blockers_iterators.h>
-#include <gudhi/Skeleton_blocker/iterators/Skeleton_blockers_triangles_iterators.h>
-#include <gudhi/Skeleton_blocker/iterators/Skeleton_blockers_simplices_iterators.h>
-
-#endif // SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_ITERATORS_H_
diff --git a/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_simplices_iterators.h b/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_simplices_iterators.h
deleted file mode 100644
index e2024652..00000000
--- a/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_simplices_iterators.h
+++ /dev/null
@@ -1,402 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_SIMPLICES_ITERATORS_H_
-#define SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_SIMPLICES_ITERATORS_H_
-
-#include <gudhi/Skeleton_blocker_link_complex.h>
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_link_superior.h>
-#include <gudhi/Skeleton_blocker/internal/Trie.h>
-#include <gudhi/Debug_utils.h>
-
-#include <boost/iterator/iterator_facade.hpp>
-
-#include <memory>
-#include <list>
-#include <iostream>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/**
- * Link may be Skeleton_blocker_link_complex<SkeletonBlockerComplex> to iterate over all
- * simplices around a vertex OR
- * Skeleton_blocker_superior_link_complex<SkeletonBlockerComplex> to iterate over all
- * superior vertices around a vertex.
- * The iteration is done by computing a trie with the link and doing a breadth-first traversal
- * of the trie.
- */
-template<typename SkeletonBlockerComplex, typename Link>
-class Simplex_around_vertex_iterator :
-public boost::iterator_facade < Simplex_around_vertex_iterator<SkeletonBlockerComplex, Link>
-, typename SkeletonBlockerComplex::Simplex
-, boost::forward_traversal_tag
-, typename SkeletonBlockerComplex::Simplex
-> {
- friend class boost::iterator_core_access;
- typedef SkeletonBlockerComplex Complex;
- typedef typename Complex::Vertex_handle Vertex_handle;
- typedef typename Complex::Edge_handle Edge_handle;
- typedef typename Complex::Simplex Simplex;
-
- // Link_vertex_handle == Complex_Vertex_handle but this renaming helps avoiding confusion
- typedef typename Link::Vertex_handle Link_vertex_handle;
-
- typedef typename Gudhi::skeleton_blocker::Trie<Simplex> Trie;
-
- private:
- const Complex* complex;
- Vertex_handle v;
- std::shared_ptr<Link> link_v;
- std::shared_ptr<Trie> trie;
- // TODO(DS): use a deque instead
- std::list<Trie*> nodes_to_be_seen;
-
- public:
- Simplex_around_vertex_iterator() : complex(0) { }
-
- Simplex_around_vertex_iterator(const Complex* complex_, Vertex_handle v_) :
- complex(complex_),
- v(v_),
- link_v(new Link(*complex_, v_)),
- trie(new Trie(v_)) {
- compute_trie_and_nodes_to_be_seen();
- }
-
- // TODO(DS): avoid useless copy
- // TODO(DS): currently just work if copy begin iterator
- Simplex_around_vertex_iterator(const Simplex_around_vertex_iterator& other) :
- complex(other.complex),
- v(other.v),
- link_v(other.link_v),
- trie(other.trie),
- nodes_to_be_seen(other.nodes_to_be_seen) {
- if (!other.is_end()) {
- }
- }
-
- /**
- * returns an iterator to the end
- */
- Simplex_around_vertex_iterator(const Complex* complex_, Vertex_handle v_, bool end) :
- complex(complex_),
- v(v_) {
- set_end();
- }
-
- private:
- void compute_trie_and_nodes_to_be_seen() {
- // once we go through every simplices passing through v0
- // we remove v0. That way, it prevents from passing a lot of times
- // though edges leaving v0.
- // another solution would have been to provides an adjacency iterator
- // to superior vertices that avoids lower ones.
- while (!link_v->empty()) {
- auto v0 = *(link_v->vertex_range().begin());
- trie->add_child(build_trie(v0, trie.get()));
- link_v->remove_vertex(v0);
- }
- nodes_to_be_seen.push_back(trie.get());
- }
-
- Trie* build_trie(Link_vertex_handle link_vh, Trie* parent) {
- Trie* res = new Trie(parent_vertex(link_vh), parent);
- for (Link_vertex_handle nv : link_v->vertex_range(link_vh)) {
- if (link_vh < nv) {
- Simplex simplex_node_plus_nv(res->simplex());
- simplex_node_plus_nv.add_vertex(parent_vertex(nv));
- if (complex->contains(simplex_node_plus_nv)) {
- res->add_child(build_trie(nv, res));
- }
- }
- }
- return res;
- }
-
- bool is_node_in_complex(Trie* trie) {
- return true;
- }
-
- Vertex_handle parent_vertex(Link_vertex_handle link_vh) const {
- return complex->convert_handle_from_another_complex(*link_v, link_vh);
- }
-
- public:
- friend std::ostream& operator<<(std::ostream& stream, const Simplex_around_vertex_iterator& savi) {
- stream << savi.trie << std::endl;
- stream << "(" << savi.nodes_to_be_seen.size() << ") nodes to see\n";
- return stream;
- }
-
- bool equal(const Simplex_around_vertex_iterator& other) const {
- bool same_complex = (complex == other.complex);
- if (!same_complex)
- return false;
-
- if (!(v == other.v))
- return false;
-
- bool both_empty = nodes_to_be_seen.empty() && other.nodes_to_be_seen.empty();
- if (both_empty)
- return true;
-
- bool both_non_empty = !nodes_to_be_seen.empty() && !other.nodes_to_be_seen.empty();
-
- // one is empty the other is not
- if (!both_non_empty) return false;
-
- bool same_node = (**(nodes_to_be_seen.begin()) == **(other.nodes_to_be_seen.begin()));
- return same_node;
- }
-
- void increment() {
- assert(!is_end());
- Trie* first_node = nodes_to_be_seen.front();
-
- nodes_to_be_seen.pop_front();
-
- for (auto childs : first_node->childs) {
- nodes_to_be_seen.push_back(childs.get());
- }
- }
-
- Simplex dereference() const {
- assert(!nodes_to_be_seen.empty());
- Trie* first_node = nodes_to_be_seen.front();
- return first_node->simplex();
- }
-
- Simplex get_trie_address() const {
- assert(!nodes_to_be_seen.empty());
- return nodes_to_be_seen.front();
- }
-
- private:
- void set_end() {
- nodes_to_be_seen.clear();
- }
-
- bool is_end() const {
- return nodes_to_be_seen.empty();
- }
-};
-
-template<typename SkeletonBlockerComplex>
-class Simplex_iterator :
-public boost::iterator_facade < Simplex_iterator<SkeletonBlockerComplex>
-, typename SkeletonBlockerComplex::Simplex
-, boost::forward_traversal_tag
-, typename SkeletonBlockerComplex::Simplex
-> {
- typedef Skeleton_blocker_link_superior<SkeletonBlockerComplex> Link;
-
- friend class boost::iterator_core_access;
-
- template<class SkBlDS> friend class Skeleton_blocker_complex;
-
- typedef SkeletonBlockerComplex Complex;
- typedef typename Complex::Vertex_handle Vertex_handle;
- typedef typename Complex::Edge_handle Edge_handle;
- typedef typename Complex::Simplex Simplex;
- typedef typename Complex::Complex_vertex_iterator Complex_vertex_iterator;
- typedef typename Link::Vertex_handle Link_vertex_handle;
-
- private:
- const Complex* complex_;
- Complex_vertex_iterator current_vertex_;
-
- typedef Simplex_around_vertex_iterator<SkeletonBlockerComplex, Link> SAVI;
- SAVI current_simplex_around_current_vertex_;
- SAVI simplices_around_current_vertex_end_;
-
- public:
- Simplex_iterator() : complex_(0) { }
-
- Simplex_iterator(const Complex* complex) :
- complex_(complex),
- current_vertex_(complex->vertex_range().begin()),
- current_simplex_around_current_vertex_(complex, *current_vertex_),
- simplices_around_current_vertex_end_(complex, *current_vertex_, true) {
- // should not be called if the complex is empty
- assert(!complex->empty());
- }
-
- private:
- Simplex_iterator(const Complex* complex, bool end) :
- complex_(complex) {
- set_end();
- }
-
- public:
- Simplex_iterator(const Simplex_iterator& other)
- :
- complex_(other.complex_),
- current_vertex_(other.current_vertex_),
- current_simplex_around_current_vertex_(other.current_simplex_around_current_vertex_),
- simplices_around_current_vertex_end_(other.simplices_around_current_vertex_end_) { }
-
- friend Simplex_iterator make_begin_iterator(const Complex* complex) {
- if (complex->empty())
- return make_end_simplex_iterator(complex);
- else
- return Simplex_iterator(complex);
- }
-
- friend Simplex_iterator make_end_simplex_iterator(const Complex* complex) {
- return Simplex_iterator(complex, true);
- }
-
- bool equal(const Simplex_iterator& other) const {
- if (complex_ != other.complex_) return false;
- if (current_vertex_ != other.current_vertex_) return false;
- if (is_end() && other.is_end()) return true;
- if (current_simplex_around_current_vertex_ != other.current_simplex_around_current_vertex_)
- return false;
- return true;
- }
-
- void increment() {
- if (current_simplex_around_current_vertex_ != simplices_around_current_vertex_end_) {
- current_simplex_around_current_vertex_.increment();
- if (current_simplex_around_current_vertex_ == simplices_around_current_vertex_end_)
- goto_next_vertex();
- } else {
- goto_next_vertex();
- }
- }
-
- void goto_next_vertex() {
- current_vertex_.increment();
- if (!is_end()) {
- current_simplex_around_current_vertex_ = SAVI(complex_, *current_vertex_);
- simplices_around_current_vertex_end_ = SAVI(complex_, *current_vertex_, true);
- }
- }
-
- Simplex dereference() const {
- return current_simplex_around_current_vertex_.dereference();
- }
-
- private:
- void set_end() {
- current_vertex_ = complex_->vertex_range().end();
- }
-
- bool is_end() const {
- return (current_vertex_ == complex_->vertex_range().end());
- }
-};
-
-/**
- * Iterator through the maximal faces of the coboundary of a simplex.
- */
-template<typename SkeletonBlockerComplex, typename Link>
-class Simplex_coboundary_iterator :
-public boost::iterator_facade < Simplex_coboundary_iterator<SkeletonBlockerComplex, Link>
-, typename SkeletonBlockerComplex::Simplex, boost::forward_traversal_tag, typename SkeletonBlockerComplex::Simplex> {
- friend class boost::iterator_core_access;
- typedef SkeletonBlockerComplex Complex;
- typedef typename Complex::Vertex_handle Vertex_handle;
- typedef typename Complex::Edge_handle Edge_handle;
- typedef typename Complex::Simplex Simplex;
- typedef typename Complex::Complex_vertex_iterator Complex_vertex_iterator;
-
- // Link_vertex_handle == Complex_Vertex_handle but this renaming helps avoiding confusion
- typedef typename Link::Vertex_handle Link_vertex_handle;
-
- private:
- const Complex* complex;
- const Simplex& sigma;
- std::shared_ptr<Link> link;
- Complex_vertex_iterator current_vertex;
- Complex_vertex_iterator link_vertex_end;
-
- public:
- Simplex_coboundary_iterator() : complex(0) { }
-
- Simplex_coboundary_iterator(const Complex* complex_, const Simplex& sigma_) :
- complex(complex_),
- sigma(sigma_),
- // need only vertices of the link hence the true flag
- link(new Link(*complex_, sigma_, false, true)) {
- auto link_vertex_range = link->vertex_range();
- current_vertex = link_vertex_range.begin();
- link_vertex_end = link_vertex_range.end();
- }
-
- Simplex_coboundary_iterator(const Simplex_coboundary_iterator& other) :
- complex(other.complex),
- sigma(other.sigma),
- link(other.link),
- current_vertex(other.current_vertex),
- link_vertex_end(other.link_vertex_end) { }
-
- // returns an iterator to the end
- Simplex_coboundary_iterator(const Complex* complex_, const Simplex& sigma_, bool end) :
- complex(complex_),
- sigma(sigma_) {
- // to represent an end iterator without having to build a useless link, we use
- // the convection that link is not initialized.
- }
-
- private:
- Vertex_handle parent_vertex(Link_vertex_handle link_vh) const {
- return complex->convert_handle_from_another_complex(*link, link_vh);
- }
-
- public:
- friend std::ostream& operator<<(std::ostream& stream, const Simplex_coboundary_iterator& sci) {
- return stream;
- }
-
- // assume that iterator points to the same complex and comes from the same simplex
- bool equal(const Simplex_coboundary_iterator& other) const {
- assert(complex == other.complex && sigma == other.sigma);
- if (is_end()) return other.is_end();
- if (other.is_end()) return is_end();
- return *current_vertex == *(other.current_vertex);
- }
-
- void increment() {
- ++current_vertex;
- }
-
- Simplex dereference() const {
- Simplex res(sigma);
- res.add_vertex(parent_vertex(*current_vertex));
- return res;
- }
-
- private:
- bool is_end() const {
- return !link || current_vertex == link_vertex_end;
- }
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_SIMPLICES_ITERATORS_H_
diff --git a/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_triangles_iterators.h b/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_triangles_iterators.h
deleted file mode 100644
index a834fe1d..00000000
--- a/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_triangles_iterators.h
+++ /dev/null
@@ -1,226 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_TRIANGLES_ITERATORS_H_
-#define SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_TRIANGLES_ITERATORS_H_
-
-#include <boost/iterator/iterator_facade.hpp>
-#include <memory>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/**
- * \brief Iterator over the triangles that are
- * adjacent to a vertex of the simplicial complex.
- * \remark Will be removed soon -> dont look
- */
-template<typename Complex, typename LinkType>
-class Triangle_around_vertex_iterator : public boost::iterator_facade
-< Triangle_around_vertex_iterator <Complex, LinkType>
-, typename Complex::Simplex const
-, boost::forward_traversal_tag
-, typename Complex::Simplex const> {
- friend class boost::iterator_core_access;
- template<typename T> friend class Triangle_iterator;
- private:
- typedef typename LinkType::Vertex_handle Vertex_handle;
- typedef typename LinkType::Root_vertex_handle Root_vertex_handle;
- typedef typename LinkType::Simplex Simplex;
- typedef typename Complex::Complex_edge_iterator Complex_edge_iterator_;
-
- const Complex* complex_;
- Vertex_handle v_;
- std::shared_ptr<LinkType> link_;
- Complex_edge_iterator_ current_edge_;
- bool is_end_;
-
- public:
- Triangle_around_vertex_iterator(const Complex* complex, Vertex_handle v) :
- complex_(complex), v_(v), link_(new LinkType(*complex, v_)),
- current_edge_(link_->edge_range().begin()),
- is_end_(current_edge_ == link_->edge_range().end()) { }
-
- /**
- * @brief ugly hack to get an iterator to the end
- */
- Triangle_around_vertex_iterator(const Complex* complex, Vertex_handle v, bool is_end) :
- complex_(complex), v_(v), link_(0), is_end_(true) { }
-
- /**
- * @brief ugly hack to get an iterator to the end
- */
- Triangle_around_vertex_iterator() :
- complex_(0), v_(-1), link_(0), is_end_(true) { }
-
- Triangle_around_vertex_iterator(const Triangle_around_vertex_iterator& other) {
- v_ = other.v_;
- complex_ = other.complex_;
- is_end_ = other.is_end_;
-
- if (!is_end_) {
- link_ = other.link_;
- current_edge_ = other.current_edge_;
- }
- }
-
- bool equal(const Triangle_around_vertex_iterator& other) const {
- return (complex_ == other.complex_) && ((finished() && other.finished()) || current_edge_ == other.current_edge_);
- }
-
- Simplex dereference() const {
- Root_vertex_handle v1 = (*link_)[*current_edge_].first();
- Root_vertex_handle v2 = (*link_)[*current_edge_].second();
- return Simplex(v_, *(complex_->get_address(v1)), *(complex_->get_address(v2)));
- }
-
- void increment() {
- ++current_edge_;
- }
-
- private:
- bool finished() const {
- return is_end_ || (current_edge_ == link_->edge_range().end());
- }
-};
-
-/**
- * \brief Iterator over the triangles of the
- * simplicial complex.
- * \remark Will be removed soon -> dont look
- *
- */
-template<typename SkeletonBlockerComplex>
-class Triangle_iterator : public boost::iterator_facade<
-Triangle_iterator <SkeletonBlockerComplex>,
-typename SkeletonBlockerComplex::Simplex const
-, boost::forward_traversal_tag
-, typename SkeletonBlockerComplex::Simplex const> {
- friend class boost::iterator_core_access;
- private:
- typedef typename SkeletonBlockerComplex::Vertex_handle Vertex_handle;
- typedef typename SkeletonBlockerComplex::Root_vertex_handle Root_vertex_handle;
- typedef typename SkeletonBlockerComplex::Simplex Simplex;
- typedef typename SkeletonBlockerComplex::Superior_triangle_around_vertex_iterator STAVI;
- typedef typename SkeletonBlockerComplex::Complex_vertex_iterator Complex_vertex_iterator;
-
- const SkeletonBlockerComplex* complex_;
- Complex_vertex_iterator current_vertex_;
- STAVI current_triangle_;
- bool is_end_;
-
- public:
- /*
- * @remark assume that the complex is non-empty
- */
- Triangle_iterator(const SkeletonBlockerComplex* complex) :
- complex_(complex),
- current_vertex_(complex->vertex_range().begin()),
- current_triangle_(complex, *current_vertex_), // this line is problematic is the complex is empty
- is_end_(false) {
- assert(!complex->empty());
- gotoFirstTriangle();
- }
-
- private:
- // goto to the first triangle or to the end if none
- void gotoFirstTriangle() {
- if (!is_finished() && current_triangle_.finished()) {
- goto_next_vertex();
- }
- }
-
- public:
- /**
- * @brief ugly hack to get an iterator to the end
- * @remark assume that the complex is non-empty
- */
- Triangle_iterator(const SkeletonBlockerComplex* complex, bool is_end) :
- complex_(complex),
- current_vertex_(complex->vertex_range().end()),
- current_triangle_(), // xxx this line is problematic is the complex is empty
- is_end_(true) { }
-
- Triangle_iterator& operator=(const Triangle_iterator & other) {
- complex_ = other.complex_;
- Complex_vertex_iterator current_vertex_;
- STAVI current_triangle_;
- return *this;
- }
-
- bool equal(const Triangle_iterator& other) const {
- bool both_are_finished = is_finished() && other.is_finished();
- bool both_arent_finished = !is_finished() && !other.is_finished();
- // if the two iterators are not finished, they must have the same state
- return (complex_ == other.complex_) && (both_are_finished || ((both_arent_finished) &&
- current_vertex_ == other.current_vertex_ &&
- current_triangle_ == other.current_triangle_));
- }
-
- Simplex dereference() const {
- return *current_triangle_;
- }
-
- private:
- // goto the next vertex that has a triangle pending or the
- // end vertex iterator if none exists
- void goto_next_vertex() {
- // we must have consume all triangles passing through the vertex
- assert(current_triangle_.finished());
- // we must not be done
- assert(!is_finished());
-
- ++current_vertex_;
-
- if (!is_finished()) {
- current_triangle_ = STAVI(complex_, *current_vertex_);
- if (current_triangle_.finished())
- goto_next_vertex();
- }
- }
-
- public:
- void increment() {
- if (!current_triangle_.finished()) {
- ++current_triangle_; // problem here
- if (current_triangle_.finished())
- goto_next_vertex();
- } else {
- assert(!is_finished());
- goto_next_vertex();
- }
- }
-
- private:
- bool is_finished() const {
- return is_end_ || current_vertex_ == complex_->vertex_range().end();
- }
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_TRIANGLES_ITERATORS_H_
diff --git a/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_vertices_iterators.h b/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_vertices_iterators.h
deleted file mode 100644
index 3a638ae6..00000000
--- a/include/gudhi/Skeleton_blocker/iterators/Skeleton_blockers_vertices_iterators.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_VERTICES_ITERATORS_H_
-#define SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_VERTICES_ITERATORS_H_
-
-#include <boost/iterator/iterator_facade.hpp>
-
-#include <utility> // for pair<>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/**
- *@brief Iterator on the vertices of a simplicial complex
- *@remark The increment operator go to the next active vertex.
- *@remark Incrementation increases Vertex_handle.
- */
-template<typename SkeletonBlockerComplex>
-class Vertex_iterator : public boost::iterator_facade< Vertex_iterator <SkeletonBlockerComplex>
-, typename SkeletonBlockerComplex::Vertex_handle const
-, boost::forward_traversal_tag
-, typename SkeletonBlockerComplex::Vertex_handle const> {
- friend class boost::iterator_core_access;
-
- typedef typename SkeletonBlockerComplex::boost_vertex_iterator boost_vertex_iterator;
- typedef typename SkeletonBlockerComplex::Vertex_handle Vertex_handle;
- private:
- const SkeletonBlockerComplex* complex;
- std::pair<boost_vertex_iterator, boost_vertex_iterator> vertexIterator;
-
-
- public:
- Vertex_iterator() : complex(NULL) { }
-
- Vertex_iterator(const SkeletonBlockerComplex* complex_) :
- complex(complex_),
- vertexIterator(vertices(complex_->skeleton)) {
- if (!finished() && !is_active()) {
- goto_next_valid();
- }
- }
-
- /**
- * return an iterator to the end.
- */
- Vertex_iterator(const SkeletonBlockerComplex* complex_, int end) :
- complex(complex_), vertexIterator(vertices(complex_->skeleton)) {
- vertexIterator.first = vertexIterator.second;
- }
-
- public:
- void increment() {
- goto_next_valid();
- }
-
- Vertex_handle dereference() const {
- return (Vertex_handle(*(vertexIterator.first)));
- }
-
- bool equal(const Vertex_iterator& other) const {
- return vertexIterator == other.vertexIterator && complex == other.complex;
- }
-
- bool operator<(const Vertex_iterator& other) const {
- return dereference() < other.dereference();
- }
-
- private:
- bool finished() const {
- return vertexIterator.first == vertexIterator.second;
- }
-
- void goto_next_valid() {
- ++vertexIterator.first;
- if (!finished() && !is_active()) {
- goto_next_valid();
- }
- }
-
- bool is_active() const {
- return ((*complex)[Vertex_handle(*vertexIterator.first)]).is_active();
- }
-};
-
-template<typename SkeletonBlockerComplex>
-class Neighbors_vertices_iterator : public boost::iterator_facade < Neighbors_vertices_iterator<SkeletonBlockerComplex>
-, typename SkeletonBlockerComplex::Vertex_handle const
-, boost::forward_traversal_tag
-, typename SkeletonBlockerComplex::Vertex_handle const> {
- friend class boost::iterator_core_access;
-
- typedef SkeletonBlockerComplex Complex;
- typedef typename Complex::boost_adjacency_iterator boost_adjacency_iterator;
- typedef typename Complex::Vertex_handle Vertex_handle;
- typedef typename Complex::Edge_handle Edge_handle;
-
- private:
- const Complex* complex;
- Vertex_handle v;
-
- boost_adjacency_iterator current_;
- boost_adjacency_iterator end_;
-
- public:
- Neighbors_vertices_iterator() : complex(NULL) { }
-
- Neighbors_vertices_iterator(const Complex* complex_, Vertex_handle v_) :
- complex(complex_),
- v(v_) {
- tie(current_, end_) = adjacent_vertices(v.vertex, complex->skeleton);
- }
-
- /**
- * returns an iterator to the end
- */
- Neighbors_vertices_iterator(const Complex* complex_, Vertex_handle v_, int end) :
- complex(complex_),
- v(v_) {
- tie(current_, end_) = adjacent_vertices(v.vertex, complex->skeleton);
- set_end();
- }
-
- void increment() {
- if (current_ != end_)
- ++current_;
- }
-
- Vertex_handle dereference() const {
- return (Vertex_handle(*current_));
- }
-
- bool equal(const Neighbors_vertices_iterator& other) const {
- return (complex == other.complex) && (v == other.v) && (current_ == other.current_) && (end_ == other.end_);
- }
-
- private:
- // TODO(DS): remove this ugly hack
- void set_end() {
- current_ = end_;
- }
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_ITERATORS_SKELETON_BLOCKERS_VERTICES_ITERATORS_H_
diff --git a/include/gudhi/Skeleton_blocker_complex.h b/include/gudhi/Skeleton_blocker_complex.h
deleted file mode 100644
index addd8104..00000000
--- a/include/gudhi/Skeleton_blocker_complex.h
+++ /dev/null
@@ -1,1605 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_COMPLEX_H_
-#define SKELETON_BLOCKER_COMPLEX_H_
-
-#include <gudhi/Skeleton_blocker/iterators/Skeleton_blockers_iterators.h>
-#include <gudhi/Skeleton_blocker_link_complex.h>
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_link_superior.h>
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_sub_complex.h>
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_simplex.h>
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_complex_visitor.h>
-#include <gudhi/Skeleton_blocker/internal/Top_faces.h>
-#include <gudhi/Skeleton_blocker/internal/Trie.h>
-#include <gudhi/Debug_utils.h>
-
-#include <boost/graph/adjacency_list.hpp>
-#include <boost/graph/connected_components.hpp>
-#include <boost/iterator/transform_iterator.hpp>
-#include <boost/range/adaptor/map.hpp>
-
-#include <iostream>
-#include <fstream>
-#include <sstream>
-#include <memory>
-#include <map>
-#include <list>
-#include <set>
-#include <vector>
-#include <string>
-#include <algorithm>
-#include <utility>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/**
- *@class Skeleton_blocker_complex
- *@brief Abstract Simplicial Complex represented with a skeleton/blockers pair.
- *@ingroup skbl
- */
-template<class SkeletonBlockerDS>
-class Skeleton_blocker_complex {
- template<class ComplexType> friend class Vertex_iterator;
- template<class ComplexType> friend class Neighbors_vertices_iterator;
- template<class ComplexType> friend class Edge_iterator;
- template<class ComplexType> friend class Edge_around_vertex_iterator;
-
- template<class ComplexType> friend class Skeleton_blocker_link_complex;
- template<class ComplexType> friend class Skeleton_blocker_link_superior;
- template<class ComplexType> friend class Skeleton_blocker_sub_complex;
-
- public:
- /**
- * @brief The type of stored vertex node, specified by the template SkeletonBlockerDS
- */
- typedef typename SkeletonBlockerDS::Graph_vertex Graph_vertex;
-
- /**
- * @brief The type of stored edge node, specified by the template SkeletonBlockerDS
- */
- typedef typename SkeletonBlockerDS::Graph_edge Graph_edge;
-
- typedef typename SkeletonBlockerDS::Root_vertex_handle Root_vertex_handle;
-
- /**
- * @brief The type of an handle to a vertex of the complex.
- */
- typedef typename SkeletonBlockerDS::Vertex_handle Vertex_handle;
- typedef typename Root_vertex_handle::boost_vertex_handle boost_vertex_handle;
-
- /**
- * @brief A ordered set of integers that represents a simplex.
- */
- typedef Skeleton_blocker_simplex<Vertex_handle> Simplex;
- typedef Skeleton_blocker_simplex<Root_vertex_handle> Root_simplex_handle;
-
- /**
- * @brief Handle to a blocker of the complex.
- */
- typedef Simplex* Blocker_handle;
-
- typedef typename Root_simplex_handle::Simplex_vertex_const_iterator Root_simplex_iterator;
- typedef typename Simplex::Simplex_vertex_const_iterator Simplex_handle_iterator;
-
- protected:
- typedef typename boost::adjacency_list<boost::setS, // edges
- boost::vecS, // vertices
- boost::undirectedS, Graph_vertex, Graph_edge> Graph;
- // todo/remark : edges are not sorted, it heavily penalizes computation for SuperiorLink
- // (eg Link with greater vertices)
- // that burdens simplex iteration / complex initialization via list of simplices.
- // to avoid that, one should modify the graph by storing two lists of adjacency for every
- // vertex, the one with superior and the one with lower vertices, that way there is
- // no more extra cost for computation of SuperiorLink
- typedef typename boost::graph_traits<Graph>::vertex_iterator boost_vertex_iterator;
- typedef typename boost::graph_traits<Graph>::edge_iterator boost_edge_iterator;
-
- protected:
- typedef typename boost::graph_traits<Graph>::adjacency_iterator boost_adjacency_iterator;
-
- public:
- /**
- * @brief Handle to an edge of the complex.
- */
- typedef typename boost::graph_traits<Graph>::edge_descriptor Edge_handle;
-
- protected:
- typedef std::multimap<Vertex_handle, Simplex *> BlockerMap;
- typedef typename std::multimap<Vertex_handle, Simplex *>::value_type BlockerPair;
- typedef typename std::multimap<Vertex_handle, Simplex *>::iterator BlockerMapIterator;
- typedef typename std::multimap<Vertex_handle, Simplex *>::const_iterator BlockerMapConstIterator;
-
- protected:
- size_t num_vertices_;
- size_t num_blockers_;
-
- typedef Skeleton_blocker_complex_visitor<Vertex_handle> Visitor;
- // typedef Visitor* Visitor_ptr;
- Visitor* visitor;
-
- /**
- * @details If 'x' is a Vertex_handle of a vertex in the complex then degree[x] = d is its degree.
- *
- * This quantity is updated when adding/removing edge.
- *
- * This is useful because the operation
- * list.size() is done in linear time.
- */
- std::vector<boost_vertex_handle> degree_;
- Graph skeleton; /** 1-skeleton of the simplicial complex. */
-
- /** Each vertex can access to the blockers passing through it. */
- BlockerMap blocker_map_;
-
- public:
- /////////////////////////////////////////////////////////////////////////////
- /** @name Constructors, Destructors
- */
- //@{
-
- /**
- *@brief constructs a simplicial complex with a given number of vertices and a visitor.
- */
- explicit Skeleton_blocker_complex(size_t num_vertices_ = 0, Visitor* visitor_ = NULL)
- : visitor(visitor_) {
- clear();
- for (size_t i = 0; i < num_vertices_; ++i) {
- add_vertex();
- }
- }
-
- private:
- // typedef Trie<Skeleton_blocker_complex<SkeletonBlockerDS>> STrie;
- typedef Trie<Simplex> STrie;
-
- public:
- /**
- * @brief Constructor with a list of simplices.
- * @details is_flag_complex indicates if the complex is a flag complex or not (to know if blockers have to be computed or not).
- */
- template<typename SimpleHandleOutputIterator>
- Skeleton_blocker_complex(SimpleHandleOutputIterator simplices_begin, SimpleHandleOutputIterator simplices_end,
- bool is_flag_complex = false, Visitor* visitor_ = NULL)
- : num_vertices_(0),
- num_blockers_(0),
- visitor(visitor_) {
- add_vertices_and_edges(simplices_begin, simplices_end);
-
- if (!is_flag_complex)
- // need to compute blockers
- add_blockers(simplices_begin, simplices_end);
- }
-
- private:
- /**
- * Add vertices and edges of a simplex in one pass
- */
- template<typename SimpleHandleOutputIterator>
- void add_vertices_and_edges(SimpleHandleOutputIterator simplices_begin, SimpleHandleOutputIterator simplices_end) {
- std::vector<std::pair<Vertex_handle, Vertex_handle>> edges;
- // first pass to add vertices and edges
- int num_vertex = -1;
- for (auto s_it = simplices_begin; s_it != simplices_end; ++s_it) {
- if (s_it->dimension() == 0) num_vertex = (std::max)(num_vertex, s_it->first_vertex().vertex);
- if (s_it->dimension() == 1) edges.emplace_back(s_it->first_vertex(), s_it->last_vertex());
- }
- while (num_vertex-- >= 0) add_vertex();
-
- for (const auto& e : edges)
- add_edge_without_blockers(e.first, e.second);
- }
-
- template<typename SimpleHandleOutputIterator>
- void add_blockers(SimpleHandleOutputIterator simplices_begin, SimpleHandleOutputIterator simplices_end) {
- Tries<Simplex> tries(num_vertices(), simplices_begin, simplices_end);
- tries.init_next_dimension();
- auto simplices(tries.next_dimension_simplices());
-
- while (!simplices.empty()) {
- simplices = tries.next_dimension_simplices();
- for (auto& sigma : simplices) {
- // common_positive_neighbors is the set of vertices u such that
- // for all s in sigma, us is an edge and u>s
- Simplex common_positive_neighbors(tries.positive_neighbors(sigma.last_vertex()));
- for (auto sigma_it = sigma.rbegin(); sigma_it != sigma.rend(); ++sigma_it)
- if (sigma_it != sigma.rbegin())
- common_positive_neighbors.intersection(tries.positive_neighbors(*sigma_it));
-
- for (auto x : common_positive_neighbors) {
- // first test that all edges sx are here for all s in sigma
- bool all_edges_here = true;
- for (auto s : sigma)
- if (!contains_edge(x, s)) {
- all_edges_here = false;
- break;
- }
- if (!all_edges_here) continue;
-
- // all edges of sigma \cup x are here
- // we have a blocker if all proper faces of sigma \cup x
- // are in the complex and if sigma \cup x is not in the complex
- // the first is equivalent at checking if blocks(sigma \cup x) is true
- // as all blockers of lower dimension have already been computed
- sigma.add_vertex(x);
- if (!tries.contains(sigma) && !blocks(sigma))
- add_blocker(sigma);
- sigma.remove_vertex(x);
- }
- }
- }
- }
-
- public:
- // We cannot use the default copy constructor since we need
- // to make a copy of each of the blockers
-
- Skeleton_blocker_complex(const Skeleton_blocker_complex& copy) {
- visitor = NULL;
- degree_ = copy.degree_;
- skeleton = Graph(copy.skeleton);
- num_vertices_ = copy.num_vertices_;
-
- num_blockers_ = 0;
- // we copy the blockers
- for (auto blocker : copy.const_blocker_range()) {
- add_blocker(*blocker);
- }
- }
-
- /**
- */
- Skeleton_blocker_complex& operator=(const Skeleton_blocker_complex& copy) {
- clear();
- visitor = NULL;
- degree_ = copy.degree_;
- skeleton = Graph(copy.skeleton);
- num_vertices_ = copy.num_vertices_;
-
- num_blockers_ = 0;
- // we copy the blockers
- for (auto blocker : copy.const_blocker_range())
- add_blocker(*blocker);
- return *this;
- }
-
- /**
- * return true if both complexes have the same simplices.
- */
- bool operator==(const Skeleton_blocker_complex& other) const {
- if (other.num_vertices() != num_vertices()) return false;
- if (other.num_edges() != num_edges()) return false;
- if (other.num_blockers() != num_blockers()) return false;
-
- for (auto v : vertex_range())
- if (!other.contains_vertex(v)) return false;
-
- for (auto e : edge_range())
- if (!other.contains_edge(first_vertex(e), second_vertex(e))) return false;
-
- for (const auto b : const_blocker_range())
- if (!other.contains_blocker(*b)) return false;
-
- return true;
- }
-
- bool operator!=(const Skeleton_blocker_complex& other) const {
- return !(*this == other);
- }
-
- /**
- * The destructor delete all blockers allocated.
- */
- virtual ~Skeleton_blocker_complex() {
- clear();
- }
-
- /**
- * @details Clears the simplicial complex. After a call to this function,
- * blockers are destroyed. The 1-skeleton and the set of blockers
- * are both empty.
- */
- virtual void clear() {
- // xxx for now the responsabilty of freeing the visitor is for
- // the user
- visitor = NULL;
-
- degree_.clear();
- num_vertices_ = 0;
-
- remove_blockers();
-
- skeleton.clear();
- }
-
- /**
- *@brief allows to change the visitor.
- */
- void set_visitor(Visitor* other_visitor) {
- visitor = other_visitor;
- }
-
- //@}
-
- /////////////////////////////////////////////////////////////////////////////
- /** @name Vertices operations
- */
- //@{
- public:
- /**
- * @brief Return a local Vertex_handle of a vertex given a global one.
- * @remark Assume that the vertex is present in the complex.
- */
- Vertex_handle operator[](Root_vertex_handle global) const {
- auto local(get_address(global));
- assert(local);
- return *local;
- }
-
- /**
- * @brief Return the vertex node associated to local Vertex_handle.
- * @remark Assume that the vertex is present in the complex.
- */
- Graph_vertex& operator[](Vertex_handle address) {
- assert(
- 0 <= address.vertex && address.vertex < boost::num_vertices(skeleton));
- return skeleton[address.vertex];
- }
-
- /**
- * @brief Return the vertex node associated to local Vertex_handle.
- * @remark Assume that the vertex is present in the complex.
- */
- const Graph_vertex& operator[](Vertex_handle address) const {
- assert(
- 0 <= address.vertex && address.vertex < boost::num_vertices(skeleton));
- return skeleton[address.vertex];
- }
-
- /**
- * @brief Adds a vertex to the simplicial complex and returns its Vertex_handle.
- * @remark Vertex representation is contiguous.
- */
- Vertex_handle add_vertex() {
- Vertex_handle address(boost::add_vertex(skeleton));
- num_vertices_++;
- (*this)[address].activate();
- // safe since we now that we are in the root complex and the field 'address' and 'id'
- // are identical for every vertices
- (*this)[address].set_id(Root_vertex_handle(address.vertex));
- degree_.push_back(0);
- if (visitor)
- visitor->on_add_vertex(address);
- return address;
- }
-
- /**
- * @brief Remove a vertex from the simplicial complex
- * @remark It just deactivates the vertex with a boolean flag but does not
- * remove it from vertices from complexity issues.
- */
- void remove_vertex(Vertex_handle address) {
- assert(contains_vertex(address));
- // We remove b
- boost::clear_vertex(address.vertex, skeleton);
- (*this)[address].deactivate();
- num_vertices_--;
- degree_[address.vertex] = -1;
- if (visitor)
- visitor->on_remove_vertex(address);
- }
-
- /**
- */
- bool contains_vertex(Vertex_handle u) const {
- Vertex_handle num_vertices(boost::num_vertices(skeleton));
- if (u.vertex < 0 || u.vertex >= num_vertices)
- return false;
- return (*this)[u].is_active();
- }
-
- /**
- */
- bool contains_vertex(Root_vertex_handle u) const {
- boost::optional<Vertex_handle> address = get_address(u);
- return address && (*this)[*address].is_active();
- }
-
- /**
- * @return true iff the simplicial complex contains all vertices
- * of simplex sigma
- */
- bool contains_vertices(const Simplex & sigma) const {
- for (auto vertex : sigma)
- if (!contains_vertex(vertex))
- return false;
- return true;
- }
-
- /**
- * @brief Given an Id return the address of the vertex having this Id in the complex.
- * @remark For a simplicial complex, the address is the id but it may not be the case for a SubComplex.
- */
- virtual boost::optional<Vertex_handle> get_address(Root_vertex_handle id) const {
- boost::optional<Vertex_handle> res;
- int num_vertices = boost::num_vertices(skeleton);
- if (id.vertex < num_vertices)
- res = Vertex_handle(id.vertex);
- return res;
- }
-
- /**
- * return the id of a vertex of adress local present in the graph
- */
- Root_vertex_handle get_id(Vertex_handle local) const {
- assert(0 <= local.vertex && local.vertex < boost::num_vertices(skeleton));
- return (*this)[local].get_id();
- }
-
- /**
- * @brief Convert an address of a vertex of a complex to the address in
- * the current complex.
- * @details
- * If the current complex is a sub (or sup) complex of 'other', it converts
- * the address of a vertex v expressed in 'other' to the address of the vertex
- * v in the current one.
- * @remark this methods uses Root_vertex_handle to identify the vertex and
- * assumes the vertex is present in the current complex.
- */
- Vertex_handle convert_handle_from_another_complex(const Skeleton_blocker_complex& other,
- Vertex_handle vh_in_other) const {
- auto vh_in_current_complex = get_address(other.get_id(vh_in_other));
- assert(vh_in_current_complex);
- return *vh_in_current_complex;
- }
-
- /**
- * @brief return the graph degree of a vertex.
- */
- int degree(Vertex_handle local) const {
- assert(0 <= local.vertex && local.vertex < boost::num_vertices(skeleton));
- return degree_[local.vertex];
- }
-
- //@}
-
- /////////////////////////////////////////////////////////////////////////////
- /** @name Edges operations
- */
- //@{
- public:
- /**
- * @brief return an edge handle if the two vertices forms
- * an edge in the complex
- */
- boost::optional<Edge_handle> operator[](
- const std::pair<Vertex_handle, Vertex_handle>& ab) const {
- boost::optional<Edge_handle> res;
- std::pair<Edge_handle, bool> edge_pair(
- boost::edge(ab.first.vertex, ab.second.vertex, skeleton));
- if (edge_pair.second)
- res = edge_pair.first;
- return res;
- }
-
- /**
- * @brief returns the stored node associated to an edge
- */
- Graph_edge& operator[](Edge_handle edge_handle) {
- return skeleton[edge_handle];
- }
-
- /**
- * @brief returns the stored node associated to an edge
- */
- const Graph_edge& operator[](Edge_handle edge_handle) const {
- return skeleton[edge_handle];
- }
-
- /**
- * @brief returns the first vertex of an edge
- * @details it assumes that the edge is present in the complex
- */
- Vertex_handle first_vertex(Edge_handle edge_handle) const {
- return static_cast<Vertex_handle> (source(edge_handle, skeleton));
- }
-
- /**
- * @brief returns the first vertex of an edge
- * @details it assumes that the edge is present in the complex
- */
- Vertex_handle second_vertex(Edge_handle edge_handle) const {
- return static_cast<Vertex_handle> (target(edge_handle, skeleton));
- }
-
- /**
- * @brief returns the simplex made with the two vertices of the edge
- * @details it assumes that the edge is present in the complex
-
- */
- Simplex get_vertices(Edge_handle edge_handle) const {
- auto edge((*this)[edge_handle]);
- return Simplex((*this)[edge.first()], (*this)[edge.second()]);
- }
-
- /**
- * @brief Adds an edge between vertices a and b.
- * @details For instance, the complex contains edge 01 and 12, then calling
- * add_edge with vertex 0 and 2 will create a complex containing
- * the edges 01, 12, 20 but not the triangle 012 (and hence this complex
- * will contains a blocker 012).
- */
- Edge_handle add_edge(Vertex_handle a, Vertex_handle b) {
- // if the edge is already there we musnt go further
- // as we may add blockers that should not be here
- if (contains_edge(a, b))
- return *((*this)[std::make_pair(a, b)]);
- auto res = add_edge_without_blockers(a, b);
- add_blockers_after_simplex_insertion(Simplex(a, b));
- return res;
- }
-
- /**
- * @brief Adds all edges of s in the complex.
- */
- void add_edge(const Simplex& s) {
- for (auto i = s.begin(); i != s.end(); ++i)
- for (auto j = i; ++j != s.end(); /**/)
- add_edge(*i, *j);
- }
-
- /**
- * @brief Adds an edge between vertices a and b without blockers.
- * @details For instance, the complex contains edge 01 and 12, then calling
- * add_edge with vertex 0 and 2 will create a complex containing
- * the triangle 012.
- */
- Edge_handle add_edge_without_blockers(Vertex_handle a, Vertex_handle b) {
- assert(contains_vertex(a) && contains_vertex(b));
- assert(a != b);
-
- auto edge_handle((*this)[std::make_pair(a, b)]);
- if (!edge_handle) {
- edge_handle = boost::add_edge(a.vertex, b.vertex, skeleton).first;
- (*this)[*edge_handle].setId(get_id(a), get_id(b));
- degree_[a.vertex]++;
- degree_[b.vertex]++;
- if (visitor)
- visitor->on_add_edge_without_blockers(a, b);
- }
- return *edge_handle;
- }
-
- /**
- * @brief Adds all edges of s in the complex without adding blockers.
- */
- void add_edge_without_blockers(Simplex s) {
- for (auto i = s.begin(); i != s.end(); ++i) {
- for (auto j = i; ++j != s.end(); /**/)
- add_edge_without_blockers(*i, *j);
- }
- }
-
- /**
- * @brief Removes an edge from the simplicial complex and all its cofaces.
- * @details returns the former Edge_handle representing the edge
- */
- virtual Edge_handle remove_edge(Vertex_handle a, Vertex_handle b) {
- bool found;
- Edge_handle edge;
- tie(edge, found) = boost::edge(a.vertex, b.vertex, skeleton);
- if (found) {
- if (visitor)
- visitor->on_remove_edge(a, b);
- boost::remove_edge(a.vertex, b.vertex, skeleton);
- degree_[a.vertex]--;
- degree_[b.vertex]--;
- }
- return edge;
- }
-
- /**
- * @brief Removes edge and its cofaces from the simplicial complex.
- */
- void remove_edge(Edge_handle edge) {
- assert(contains_vertex(first_vertex(edge)));
- assert(contains_vertex(second_vertex(edge)));
- remove_edge(first_vertex(edge), second_vertex(edge));
- }
-
- /**
- * @brief The complex is reduced to its set of vertices.
- * All the edges and blockers are removed.
- */
- void keep_only_vertices() {
- remove_blockers();
-
- for (auto u : vertex_range()) {
- while (this->degree(u) > 0) {
- Vertex_handle v(*(adjacent_vertices(u.vertex, this->skeleton).first));
- this->remove_edge(u, v);
- }
- }
- }
-
- /**
- * @return true iff the simplicial complex contains an edge between
- * vertices a and b
- */
- bool contains_edge(Vertex_handle a, Vertex_handle b) const {
- // if (a.vertex<0 || b.vertex <0) return false;
- return boost::edge(a.vertex, b.vertex, skeleton).second;
- }
-
- /**
- * @return true iff the simplicial complex contains all vertices
- * and all edges of simplex sigma
- */
- bool contains_edges(const Simplex & sigma) const {
- for (auto i = sigma.begin(); i != sigma.end(); ++i) {
- if (!contains_vertex(*i))
- return false;
- for (auto j = i; ++j != sigma.end();) {
- if (!contains_edge(*i, *j))
- return false;
- }
- }
- return true;
- }
- //@}
-
- /////////////////////////////////////////////////////////////////////////////
- /** @name Blockers operations
- */
- //@{
-
- /**
- * @brief Adds the simplex to the set of blockers and
- * returns a Blocker_handle toward it if was not present before and 0 otherwise.
- */
- Blocker_handle add_blocker(const Simplex& blocker) {
- assert(blocker.dimension() > 1);
- if (contains_blocker(blocker)) {
- return 0;
- } else {
- if (visitor)
- visitor->on_add_blocker(blocker);
- Blocker_handle blocker_pt = new Simplex(blocker);
- num_blockers_++;
- auto vertex = blocker_pt->begin();
- while (vertex != blocker_pt->end()) {
- blocker_map_.insert(BlockerPair(*vertex, blocker_pt));
- ++vertex;
- }
- return blocker_pt;
- }
- }
-
- protected:
- /**
- * @brief Adds the simplex to the set of blockers
- */
- void add_blocker(Blocker_handle blocker) {
- if (contains_blocker(*blocker)) {
- // std::cerr << "ATTEMPT TO ADD A BLOCKER ALREADY THERE ---> BLOCKER IGNORED" << endl;
- return;
- } else {
- if (visitor)
- visitor->on_add_blocker(*blocker);
- num_blockers_++;
- auto vertex = blocker->begin();
- while (vertex != blocker->end()) {
- blocker_map_.insert(BlockerPair(*vertex, blocker));
- ++vertex;
- }
- }
- }
-
- protected:
- /**
- * Removes sigma from the blocker map of vertex v
- */
- void remove_blocker(const Blocker_handle sigma, Vertex_handle v) {
- Complex_blocker_around_vertex_iterator blocker;
- for (blocker = blocker_range(v).begin(); blocker != blocker_range(v).end();
- ++blocker) {
- if (*blocker == sigma)
- break;
- }
- if (*blocker != sigma) {
- std::cerr
- << "bug ((*blocker).second == sigma) ie try to remove a blocker not present\n";
- assert(false);
- } else {
- blocker_map_.erase(blocker.current_position());
- }
- }
-
- public:
- /**
- * @brief Removes the simplex from the set of blockers.
- * @remark sigma has to belongs to the set of blockers
- */
- void remove_blocker(const Blocker_handle sigma) {
- for (auto vertex : *sigma)
- remove_blocker(sigma, vertex);
- num_blockers_--;
- }
-
- /**
- * @brief Remove all blockers, in other words, it expand the simplicial
- * complex to the smallest flag complex that contains it.
- */
- void remove_blockers() {
- // Desallocate the blockers
- while (!blocker_map_.empty()) {
- delete_blocker(blocker_map_.begin()->second);
- }
- num_blockers_ = 0;
- blocker_map_.clear();
- }
-
- protected:
- /**
- * Removes the simplex sigma from the set of blockers.
- * sigma has to belongs to the set of blockers
- *
- * @remark contrarily to delete_blockers does not call the destructor
- */
- void remove_blocker(const Simplex& sigma) {
- assert(contains_blocker(sigma));
- for (auto vertex : sigma)
- remove_blocker(sigma, vertex);
- num_blockers_--;
- }
-
- public:
- /**
- * Removes the simplex s from the set of blockers
- * and desallocate s.
- */
- void delete_blocker(Blocker_handle sigma) {
- if (visitor)
- visitor->on_delete_blocker(sigma);
- remove_blocker(sigma);
- delete sigma;
- }
-
- /**
- * @return true iff s is a blocker of the simplicial complex
- */
- bool contains_blocker(const Blocker_handle s) const {
- if (s->dimension() < 2)
- return false;
-
- Vertex_handle a = s->first_vertex();
-
- for (const auto blocker : const_blocker_range(a)) {
- if (s == *blocker)
- return true;
- }
- return false;
- }
-
- /**
- * @return true iff s is a blocker of the simplicial complex
- */
- bool contains_blocker(const Simplex & s) const {
- if (s.dimension() < 2)
- return false;
-
- Vertex_handle a = s.first_vertex();
-
- for (auto blocker : const_blocker_range(a)) {
- if (s == *blocker)
- return true;
- }
- return false;
- }
-
- private:
- /**
- * @return true iff a blocker of the simplicial complex
- * is a face of sigma.
- */
- bool blocks(const Simplex & sigma) const {
- for (auto s : sigma)
- for (auto blocker : const_blocker_range(s))
- if (sigma.contains(*blocker))
- return true;
- return false;
- }
-
- //@}
-
- protected:
- /**
- * @details Adds to simplex the neighbours of v e.g. \f$ n \leftarrow n \cup N(v) \f$.
- * If keep_only_superior is true then only vertices that are greater than v are added.
- */
- virtual void add_neighbours(Vertex_handle v, Simplex & n,
- bool keep_only_superior = false) const {
- boost_adjacency_iterator ai, ai_end;
- for (tie(ai, ai_end) = adjacent_vertices(v.vertex, skeleton); ai != ai_end;
- ++ai) {
- Vertex_handle value(*ai);
- if (keep_only_superior) {
- if (value > v.vertex) {
- n.add_vertex(value);
- }
- } else {
- n.add_vertex(value);
- }
- }
- }
-
- /**
- * @details Add to simplex res all vertices which are
- * neighbours of alpha: ie \f$ res \leftarrow res \cup N(alpha) \f$.
- *
- * If 'keep_only_superior' is true then only vertices that are greater than alpha are added.
- * todo revoir
- *
- */
- virtual void add_neighbours(const Simplex &alpha, Simplex & res,
- bool keep_only_superior = false) const {
- res.clear();
- auto alpha_vertex = alpha.begin();
- add_neighbours(*alpha_vertex, res, keep_only_superior);
- for (alpha_vertex = (alpha.begin())++; alpha_vertex != alpha.end();
- ++alpha_vertex)
- keep_neighbours(*alpha_vertex, res, keep_only_superior);
- }
-
- /**
- * @details Remove from simplex n all vertices which are
- * not neighbours of v e.g. \f$ res \leftarrow res \cap N(v) \f$.
- * If 'keep_only_superior' is true then only vertices that are greater than v are keeped.
- */
- virtual void keep_neighbours(Vertex_handle v, Simplex& res,
- bool keep_only_superior = false) const {
- Simplex nv;
- add_neighbours(v, nv, keep_only_superior);
- res.intersection(nv);
- }
-
- /**
- * @details Remove from simplex all vertices which are
- * neighbours of v eg \f$ res \leftarrow res \setminus N(v) \f$.
- * If 'keep_only_superior' is true then only vertices that are greater than v are added.
- */
- virtual void remove_neighbours(Vertex_handle v, Simplex & res,
- bool keep_only_superior = false) const {
- Simplex nv;
- add_neighbours(v, nv, keep_only_superior);
- res.difference(nv);
- }
-
- public:
- typedef Skeleton_blocker_link_complex<Skeleton_blocker_complex> Link_complex;
-
- /**
- * Constructs the link of 'simplex' with points coordinates.
- */
- Link_complex link(Vertex_handle v) const {
- return Link_complex(*this, Simplex(v));
- }
-
- /**
- * Constructs the link of 'simplex' with points coordinates.
- */
- Link_complex link(Edge_handle edge) const {
- return Link_complex(*this, edge);
- }
-
- /**
- * Constructs the link of 'simplex' with points coordinates.
- */
- Link_complex link(const Simplex& simplex) const {
- return Link_complex(*this, simplex);
- }
-
- /**
- * @brief Compute the local vertices of 's' in the current complex
- * If one of them is not present in the complex then the return value is uninitialized.
- *
- *
- */
- // xxx rename get_address et place un using dans sub_complex
-
- boost::optional<Simplex> get_simplex_address(
- const Root_simplex_handle& s) const {
- boost::optional<Simplex> res;
-
- Simplex s_address;
- // Root_simplex_const_iterator i;
- for (auto i = s.begin(); i != s.end(); ++i) {
- boost::optional<Vertex_handle> address = get_address(*i);
- if (!address)
- return res;
- else
- s_address.add_vertex(*address);
- }
- res = s_address;
- return res;
- }
-
- /**
- * @brief returns a simplex with vertices which are the id of vertices of the
- * argument.
- */
- Root_simplex_handle get_id(const Simplex& local_simplex) const {
- Root_simplex_handle global_simplex;
- for (auto x = local_simplex.begin(); x != local_simplex.end(); ++x) {
- global_simplex.add_vertex(get_id(*x));
- }
- return global_simplex;
- }
-
- /**
- * @brief returns true iff the simplex s belongs to the simplicial
- * complex.
- */
- virtual bool contains(const Simplex & s) const {
- if (s.dimension() == -1) {
- return false;
- } else if (s.dimension() == 0) {
- return contains_vertex(s.first_vertex());
- } else {
- return (contains_edges(s) && !blocks(s));
- }
- }
-
- /*
- * @brief returnrs true iff the complex is empty.
- */
- bool empty() const {
- return num_vertices() == 0;
- }
-
- /*
- * @brief returns the number of vertices in the complex.
- */
- int num_vertices() const {
- // remark boost::num_vertices(skeleton) counts deactivated vertices
- return num_vertices_;
- }
-
- /*
- * @brief returns the number of edges in the complex.
- * @details currently in O(n)
- */
- // todo cache the value
-
- int num_edges() const {
- return boost::num_edges(skeleton);
- }
-
- int num_triangles() const {
- auto triangles = triangle_range();
- return std::distance(triangles.begin(), triangles.end());
- }
-
- /*
- * @brief returns the number of simplices of a given dimension in the complex.
- */
- size_t num_simplices() const {
- auto simplices = complex_simplex_range();
- return std::distance(simplices.begin(), simplices.end());
- }
-
- /*
- * @brief returns the number of simplices of a given dimension in the complex.
- */
- size_t num_simplices(int dimension) const {
- // TODO(DS): iterator on k-simplices
- size_t res = 0;
- for (const auto& s : complex_simplex_range())
- if (s.dimension() == dimension)
- ++res;
- return res;
- }
-
- /*
- * @brief returns the number of blockers in the complex.
- */
- size_t num_blockers() const {
- return num_blockers_;
- }
-
- /*
- * @brief returns true iff the graph of the 1-skeleton of the complex is complete.
- */
- bool complete() const {
- return (num_vertices() * (num_vertices() - 1)) / 2 == num_edges();
- }
-
- /**
- * @brief returns the number of connected components in the graph of the 1-skeleton.
- */
- int num_connected_components() const {
- int num_vert_collapsed = skeleton.vertex_set().size() - num_vertices();
- std::vector<int> component(skeleton.vertex_set().size());
- return boost::connected_components(this->skeleton, &component[0])
- - num_vert_collapsed;
- }
-
- /**
- * @brief %Test if the complex is a cone.
- * @details Runs in O(n) where n is the number of vertices.
- */
- bool is_cone() const {
- if (num_vertices() == 0)
- return false;
- if (num_vertices() == 1)
- return true;
- for (auto vi : vertex_range()) {
- // xxx todo faire une methode bool is_in_blocker(Vertex_handle)
- if (blocker_map_.find(vi) == blocker_map_.end()) {
- // no blocker passes through the vertex, we just need to
- // check if the current vertex is linked to all others vertices of the complex
- if (degree_[vi.vertex] == num_vertices() - 1)
- return true;
- }
- }
- return false;
- }
-
- //@}
- /** @name Simplification operations
- */
- //@{
-
- /**
- * Returns true iff the blocker 'sigma' is popable.
- * To define popable, let us call 'L' the complex that
- * consists in the current complex without the blocker 'sigma'.
- * A blocker 'sigma' is then "popable" if the link of 'sigma'
- * in L is reducible.
- *
- */
- bool is_popable_blocker(Blocker_handle sigma) const;
-
- /**
- * Removes all the popable blockers of the complex and delete them.
- * @returns the number of popable blockers deleted
- */
- void remove_popable_blockers();
-
- /**
- * Removes all the popable blockers of the complex passing through v and delete them.
- */
- void remove_popable_blockers(Vertex_handle v);
-
- /**
- * @brief Removes all the popable blockers of the complex passing through v and delete them.
- * Also remove popable blockers in the neighborhood if they became popable.
- *
- */
- void remove_all_popable_blockers(Vertex_handle v);
-
- /**
- * Remove the star of the vertex 'v'
- */
- void remove_star(Vertex_handle v);
-
- private:
- /**
- * after removing the star of a simplex, blockers sigma that contains this simplex must be removed.
- * Furthermore, all simplices tau of the form sigma \setminus simplex_to_be_removed must be added
- * whenever the dimension of tau is at least 2.
- */
- void update_blockers_after_remove_star_of_vertex_or_edge(const Simplex& simplex_to_be_removed);
-
- public:
- /**
- * Remove the star of the edge connecting vertices a and b.
- * @returns the number of blocker that have been removed
- */
- void remove_star(Vertex_handle a, Vertex_handle b);
-
- /**
- * Remove the star of the edge 'e'.
- */
- void remove_star(Edge_handle e);
-
- /**
- * Remove the star of the simplex 'sigma' which needs to belong to the complex
- */
- void remove_star(const Simplex& sigma);
-
- /**
- * @brief add a simplex and all its faces.
- * @details the simplex must have dimension greater than one (otherwise use add_vertex or add_edge_without_blockers).
- */
- void add_simplex(const Simplex& sigma);
-
- private:
- void add_blockers_after_simplex_insertion(Simplex s);
-
- /**
- * remove all blockers that contains sigma
- */
- void remove_blocker_containing_simplex(const Simplex& sigma);
-
- /**
- * remove all blockers that contains sigma
- */
- void remove_blocker_include_in_simplex(const Simplex& sigma);
-
- public:
- enum simplifiable_status {
- NOT_HOMOTOPY_EQ, MAYBE_HOMOTOPY_EQ, HOMOTOPY_EQ
- };
-
- simplifiable_status is_remove_star_homotopy_preserving(const Simplex& simplex) {
- // todo write a virtual method 'link' in Skeleton_blocker_complex which will be overloaded by the current one of
- // Skeleton_blocker_geometric_complex
- // then call it there to build the link and return the value of link.is_contractible()
- return MAYBE_HOMOTOPY_EQ;
- }
-
- enum contractible_status {
- NOT_CONTRACTIBLE, MAYBE_CONTRACTIBLE, CONTRACTIBLE
- };
-
- /**
- * @brief %Test if the complex is reducible using a strategy defined in the class
- * (by default it tests if the complex is a cone)
- * @details Note that NO could be returned if some invariant ensures that the complex
- * is not a point (for instance if the euler characteristic is different from 1).
- * This function will surely have to return MAYBE in some case because the
- * associated problem is undecidable but it in practice, it can often
- * be solved with the help of geometry.
- */
- virtual contractible_status is_contractible() const {
- if (this->is_cone()) {
- return CONTRACTIBLE;
- } else {
- return MAYBE_CONTRACTIBLE;
- }
- }
- //@}
-
- /** @name Edge contraction operations
- */
- //@{
-
- /**
- * @return If ignore_popable_blockers is true
- * then the result is true iff the link condition at edge ab is satisfied
- * or equivalently iff no blocker contains ab.
- * If ignore_popable_blockers is false then the
- * result is true iff all blocker containing ab are popable.
- */
- bool link_condition(Vertex_handle a, Vertex_handle b, bool ignore_popable_blockers = false) const {
- for (auto blocker : this->const_blocker_range(a))
- if (blocker->contains(b)) {
- // false if ignore_popable_blockers is false
- // otherwise the blocker has to be popable
- return ignore_popable_blockers && is_popable_blocker(blocker);
- }
- return true;
- }
-
- /**
- * @return If ignore_popable_blockers is true
- * then the result is true iff the link condition at edge ab is satisfied
- * or equivalently iff no blocker contains ab.
- * If ignore_popable_blockers is false then the
- * result is true iff all blocker containing ab are popable.
- */
- bool link_condition(Edge_handle e, bool ignore_popable_blockers = false) const {
- const Graph_edge& edge = (*this)[e];
- assert(this->get_address(edge.first()));
- assert(this->get_address(edge.second()));
- Vertex_handle a(*this->get_address(edge.first()));
- Vertex_handle b(*this->get_address(edge.second()));
- return link_condition(a, b, ignore_popable_blockers);
- }
-
- protected:
- /**
- * Compute simplices beta such that a.beta is an order 0 blocker
- * that may be used to construct a new blocker after contracting ab.
- * It requires that the link condition is satisfied.
- */
- void tip_blockers(Vertex_handle a, Vertex_handle b, std::vector<Simplex> & buffer) const;
-
- private:
- /**
- * @brief "Replace" the edge 'bx' by the edge 'ax'.
- * Assume that the edge 'bx' was present whereas 'ax' was not.
- * Precisely, it does not replace edges, but remove 'bx' and then add 'ax'.
- * The visitor 'on_swaped_edge' is called just after edge 'ax' had been added
- * and just before edge 'bx' had been removed. That way, it can
- * eventually access to information of 'ax'.
- */
- void swap_edge(Vertex_handle a, Vertex_handle b, Vertex_handle x);
-
- private:
- /**
- * @brief removes all blockers passing through the edge 'ab'
- */
- void delete_blockers_around_vertex(Vertex_handle v);
-
- /**
- * @brief removes all blockers passing through the edge 'ab'
- */
- void delete_blockers_around_edge(Vertex_handle a, Vertex_handle b);
-
- public:
- /**
- * Contracts the edge.
- * @remark If the link condition Link(ab) = Link(a) inter Link(b) is not satisfied,
- * it removes first all blockers passing through 'ab'
- */
- void contract_edge(Edge_handle edge) {
- contract_edge(this->first_vertex(edge), this->second_vertex(edge));
- }
-
- /**
- * Contracts the edge connecting vertices a and b.
- * @remark If the link condition Link(ab) = Link(a) inter Link(b) is not satisfied,
- * it removes first all blockers passing through 'ab'
- */
- void contract_edge(Vertex_handle a, Vertex_handle b);
-
- private:
- void get_blockers_to_be_added_after_contraction(Vertex_handle a, Vertex_handle b,
- std::set<Simplex>& blockers_to_add);
- /**
- * delete all blockers that passes through a or b
- */
- void delete_blockers_around_vertices(Vertex_handle a, Vertex_handle b);
- void update_edges_after_contraction(Vertex_handle a, Vertex_handle b);
- void notify_changed_edges(Vertex_handle a);
- //@}
-
- public:
- /////////////////////////////////////////////////////////////////////////////
- /** @name Vertex iterators
- */
- //@{
- typedef Vertex_iterator<Skeleton_blocker_complex> Complex_vertex_iterator;
-
- //
- // Range over the vertices of the simplicial complex.
- // Methods .begin() and .end() return a Complex_vertex_iterator.
- //
- typedef boost::iterator_range<Complex_vertex_iterator> Complex_vertex_range;
-
- /**
- * @brief Returns a Complex_vertex_range over all vertices of the complex
- */
- Complex_vertex_range vertex_range() const {
- auto begin = Complex_vertex_iterator(this);
- auto end = Complex_vertex_iterator(this, 0);
- return Complex_vertex_range(begin, end);
- }
-
- typedef Neighbors_vertices_iterator<Skeleton_blocker_complex> Complex_neighbors_vertices_iterator;
-
-
- typedef boost::iterator_range<Complex_neighbors_vertices_iterator> Complex_neighbors_vertices_range;
-
- /**
- * @brief Returns a Complex_edge_range over all edges of the simplicial complex that passes trough v
- */
- Complex_neighbors_vertices_range vertex_range(Vertex_handle v) const {
- auto begin = Complex_neighbors_vertices_iterator(this, v);
- auto end = Complex_neighbors_vertices_iterator(this, v, 0);
- return Complex_neighbors_vertices_range(begin, end);
- }
-
- //@}
-
- /** @name Edge iterators
- */
- //@{
-
- typedef Edge_iterator<Skeleton_blocker_complex> Complex_edge_iterator;
-
-
- typedef boost::iterator_range<Complex_edge_iterator> Complex_edge_range;
-
- /**
- * @brief Returns a Complex_edge_range over all edges of the simplicial complex
- */
- Complex_edge_range edge_range() const {
- auto begin = Complex_edge_iterator(this);
- auto end = Complex_edge_iterator(this, 0);
- return Complex_edge_range(begin, end);
- }
-
-
- typedef Edge_around_vertex_iterator<Skeleton_blocker_complex> Complex_edge_around_vertex_iterator;
-
-
- typedef boost::iterator_range <Complex_edge_around_vertex_iterator> Complex_edge_around_vertex_range;
-
- /**
- * @brief Returns a Complex_edge_range over all edges of the simplicial complex that passes
- * through 'v'
- */
- Complex_edge_around_vertex_range edge_range(Vertex_handle v) const {
- auto begin = Complex_edge_around_vertex_iterator(this, v);
- auto end = Complex_edge_around_vertex_iterator(this, v, 0);
- return Complex_edge_around_vertex_range(begin, end);
- }
-
- //@}
-
- /** @name Triangles iterators
- */
- //@{
- private:
- typedef Skeleton_blocker_link_complex<Skeleton_blocker_complex<SkeletonBlockerDS> > Link;
- typedef Skeleton_blocker_link_superior<Skeleton_blocker_complex<SkeletonBlockerDS> > Superior_link;
-
- public:
- typedef Triangle_around_vertex_iterator<Skeleton_blocker_complex, Superior_link>
- Superior_triangle_around_vertex_iterator;
- typedef boost::iterator_range < Triangle_around_vertex_iterator<Skeleton_blocker_complex, Link> >
- Complex_triangle_around_vertex_range;
-
- /**
- * @brief Range over triangles around a vertex of the simplicial complex.
- * Methods .begin() and .end() return a Triangle_around_vertex_iterator.
- *
- */
- Complex_triangle_around_vertex_range triangle_range(Vertex_handle v) const {
- auto begin = Triangle_around_vertex_iterator<Skeleton_blocker_complex, Link>(this, v);
- auto end = Triangle_around_vertex_iterator<Skeleton_blocker_complex, Link>(this, v, 0);
- return Complex_triangle_around_vertex_range(begin, end);
- }
-
- typedef boost::iterator_range<Triangle_iterator<Skeleton_blocker_complex> > Complex_triangle_range;
- typedef Triangle_iterator<Skeleton_blocker_complex> Complex_triangle_iterator;
-
- /**
- * @brief Range over triangles of the simplicial complex.
- * Methods .begin() and .end() return a Triangle_around_vertex_iterator.
- *
- */
- Complex_triangle_range triangle_range() const {
- auto end = Triangle_iterator<Skeleton_blocker_complex>(this, 0);
- if (empty()) {
- return Complex_triangle_range(end, end);
- } else {
- auto begin = Triangle_iterator<Skeleton_blocker_complex>(this);
- return Complex_triangle_range(begin, end);
- }
- }
-
- //@}
-
- /** @name Simplices iterators
- */
- //@{
- typedef Simplex_around_vertex_iterator<Skeleton_blocker_complex, Link> Complex_simplex_around_vertex_iterator;
-
- /**
- * @brief Range over the simplices of the simplicial complex around a vertex.
- * Methods .begin() and .end() return a Complex_simplex_around_vertex_iterator.
- */
- typedef boost::iterator_range < Complex_simplex_around_vertex_iterator > Complex_simplex_around_vertex_range;
-
- /**
- * @brief Returns a Complex_simplex_around_vertex_range over all the simplices around a vertex of the complex
- */
- Complex_simplex_around_vertex_range star_simplex_range(Vertex_handle v) const {
- assert(contains_vertex(v));
- return Complex_simplex_around_vertex_range(
- Complex_simplex_around_vertex_iterator(this, v),
- Complex_simplex_around_vertex_iterator(this, v, true));
- }
- typedef Simplex_coboundary_iterator<Skeleton_blocker_complex, Link> Complex_simplex_coboundary_iterator;
-
- /**
- * @brief Range over the simplices of the coboundary of a simplex.
- * Methods .begin() and .end() return a Complex_simplex_coboundary_iterator.
- */
- typedef boost::iterator_range < Complex_simplex_coboundary_iterator > Complex_coboundary_range;
-
- /**
- * @brief Returns a Complex_simplex_coboundary_iterator over the simplices of the coboundary of a simplex.
- */
- Complex_coboundary_range coboundary_range(const Simplex& s) const {
- assert(contains(s));
- return Complex_coboundary_range(Complex_simplex_coboundary_iterator(this, s),
- Complex_simplex_coboundary_iterator(this, s, true));
- }
-
- // typedef Simplex_iterator<Skeleton_blocker_complex,Superior_link> Complex_simplex_iterator;
- typedef Simplex_iterator<Skeleton_blocker_complex> Complex_simplex_iterator;
-
- typedef boost::iterator_range < Complex_simplex_iterator > Complex_simplex_range;
-
- /**
- * @brief Returns a Complex_simplex_range over all the simplices of the complex
- */
- Complex_simplex_range complex_simplex_range() const {
- Complex_simplex_iterator end(this, true);
- if (empty()) {
- return Complex_simplex_range(end, end);
- } else {
- Complex_simplex_iterator begin(this);
- return Complex_simplex_range(begin, end);
- }
- }
-
- //@}
-
- /** @name Blockers iterators
- */
- //@{
- private:
- /**
- * @brief Iterator over the blockers adjacent to a vertex
- */
- typedef Blocker_iterator_around_vertex_internal<
- typename std::multimap<Vertex_handle, Simplex *>::iterator,
- Blocker_handle>
- Complex_blocker_around_vertex_iterator;
-
- /**
- * @brief Iterator over (constant) blockers adjacent to a vertex
- */
- typedef Blocker_iterator_around_vertex_internal<
- typename std::multimap<Vertex_handle, Simplex *>::const_iterator,
- const Blocker_handle>
- Const_complex_blocker_around_vertex_iterator;
-
- typedef boost::iterator_range <Complex_blocker_around_vertex_iterator> Complex_blocker_around_vertex_range;
- typedef boost::iterator_range <Const_complex_blocker_around_vertex_iterator>
- Const_complex_blocker_around_vertex_range;
-
- public:
- /**
- * @brief Returns a range of the blockers of the complex passing through a vertex
- */
- Complex_blocker_around_vertex_range blocker_range(Vertex_handle v) {
- auto begin = Complex_blocker_around_vertex_iterator(blocker_map_.lower_bound(v));
- auto end = Complex_blocker_around_vertex_iterator(blocker_map_.upper_bound(v));
- return Complex_blocker_around_vertex_range(begin, end);
- }
-
- /**
- * @brief Returns a range of the blockers of the complex passing through a vertex
- */
- Const_complex_blocker_around_vertex_range const_blocker_range(Vertex_handle v) const {
- auto begin = Const_complex_blocker_around_vertex_iterator(blocker_map_.lower_bound(v));
- auto end = Const_complex_blocker_around_vertex_iterator(blocker_map_.upper_bound(v));
- return Const_complex_blocker_around_vertex_range(begin, end);
- }
-
- private:
- /**
- * @brief Iterator over the blockers.
- */
- typedef Blocker_iterator_internal<
- typename std::multimap<Vertex_handle, Simplex *>::iterator,
- Blocker_handle>
- Complex_blocker_iterator;
-
- /**
- * @brief Iterator over the (constant) blockers.
- */
- typedef Blocker_iterator_internal<
- typename std::multimap<Vertex_handle, Simplex *>::const_iterator,
- const Blocker_handle>
- Const_complex_blocker_iterator;
-
- typedef boost::iterator_range <Complex_blocker_iterator> Complex_blocker_range;
- typedef boost::iterator_range <Const_complex_blocker_iterator> Const_complex_blocker_range;
-
- public:
- /**
- * @brief Returns a range of the blockers of the complex
- */
- Complex_blocker_range blocker_range() {
- auto begin = Complex_blocker_iterator(blocker_map_.begin(), blocker_map_.end());
- auto end = Complex_blocker_iterator(blocker_map_.end(), blocker_map_.end());
- return Complex_blocker_range(begin, end);
- }
-
- /**
- * @brief Returns a range of the blockers of the complex
- */
- Const_complex_blocker_range const_blocker_range() const {
- auto begin = Const_complex_blocker_iterator(blocker_map_.begin(), blocker_map_.end());
- auto end = Const_complex_blocker_iterator(blocker_map_.end(), blocker_map_.end());
- return Const_complex_blocker_range(begin, end);
- }
-
- //@}
-
- /////////////////////////////////////////////////////////////////////////////
- /** @name Print and IO methods
- */
- //@{
- public:
- std::string to_string() const {
- std::ostringstream stream;
- stream << num_vertices() << " vertices:\n" << vertices_to_string() << std::endl;
- stream << num_edges() << " edges:\n" << edges_to_string() << std::endl;
- stream << num_blockers() << " blockers:\n" << blockers_to_string() << std::endl;
- return stream.str();
- }
-
- std::string vertices_to_string() const {
- std::ostringstream stream;
- for (auto vertex : vertex_range()) {
- stream << "{" << (*this)[vertex].get_id() << "} ";
- }
- stream << std::endl;
- return stream.str();
- }
-
- std::string edges_to_string() const {
- std::ostringstream stream;
- for (auto edge : edge_range())
- stream << "{" << (*this)[edge].first() << "," << (*this)[edge].second() << "} ";
- stream << std::endl;
- return stream.str();
- }
-
- std::string blockers_to_string() const {
- std::ostringstream stream;
-
- for (auto b : const_blocker_range())
- stream << *b << std::endl;
- return stream.str();
- }
- //@}
-};
-
-/**
- * build a simplicial complex from a collection
- * of top faces.
- * return the total number of simplices
- */
-template<typename Complex, typename SimplexHandleIterator>
-Complex make_complex_from_top_faces(SimplexHandleIterator simplices_begin, SimplexHandleIterator simplices_end,
- bool is_flag_complex = false) {
- // TODO(DS): use add_simplex instead! should be more efficient and more elegant :)
- typedef typename Complex::Simplex Simplex;
- std::vector<Simplex> simplices;
- for (auto top_face = simplices_begin; top_face != simplices_end; ++top_face) {
- auto subfaces_topface = subfaces(*top_face);
- simplices.insert(simplices.end(), subfaces_topface.begin(), subfaces_topface.end());
- }
- return Complex(simplices.begin(), simplices.end(), is_flag_complex);
-}
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#include "Skeleton_blocker_simplifiable_complex.h"
-
-#endif // SKELETON_BLOCKER_COMPLEX_H_
diff --git a/include/gudhi/Skeleton_blocker_contractor.h b/include/gudhi/Skeleton_blocker_contractor.h
deleted file mode 100644
index 13086161..00000000
--- a/include/gudhi/Skeleton_blocker_contractor.h
+++ /dev/null
@@ -1,582 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_CONTRACTOR_H_
-#define SKELETON_BLOCKER_CONTRACTOR_H_
-
-// todo remove the queue to be independent from cgald
-#include <gudhi/Contraction/CGAL_queue/Modifiable_priority_queue.h>
-
-#include <gudhi/Contraction/Edge_profile.h>
-#include <gudhi/Contraction/policies/Cost_policy.h>
-#include <gudhi/Contraction/policies/Edge_length_cost.h>
-#include <gudhi/Contraction/policies/Placement_policy.h>
-#include <gudhi/Contraction/policies/First_vertex_placement.h>
-#include <gudhi/Contraction/policies/Valid_contraction_policy.h>
-#include <gudhi/Contraction/policies/Dummy_valid_contraction.h> // xxx remove
-#include <gudhi/Contraction/policies/Link_condition_valid_contraction.h> // xxx remove
-#include <gudhi/Contraction/policies/Contraction_visitor.h>
-
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_complex_visitor.h>
-#include <gudhi/Debug_utils.h>
-
-
-#include <boost/scoped_array.hpp>
-#include <boost/scoped_ptr.hpp>
-
-#include <memory>
-#include <cassert>
-#include <list>
-#include <utility> // for pair
-#include <vector>
-
-namespace Gudhi {
-
-namespace contraction {
-
-template <class Profile>
-Placement_policy<Profile>* make_first_vertex_placement() {
- return new First_vertex_placement<Profile>();
-}
-
-template <class Profile>
-Valid_contraction_policy<Profile>* make_link_valid_contraction() {
- return new Link_condition_valid_contraction<Profile>();
-}
-
-/**
- *@brief Visitor to remove popable blockers after an edge contraction.
- */
-template <class Profile>
-class Contraction_visitor_remove_popable : public Contraction_visitor<Profile> {
- public:
- typedef typename Profile::Point Point;
- typedef typename Profile::Complex Complex;
- typedef typename Complex::Vertex_handle Vertex_handle;
-
- void on_contracted(const Profile &profile, boost::optional< Point > placement) override {
- profile.complex().remove_all_popable_blockers(profile.v0_handle());
- }
-};
-
-template <class Profile>
-Contraction_visitor<Profile>* make_remove_popable_blockers_visitor() {
- return new Contraction_visitor_remove_popable<Profile>();
-}
-
-/**
- *@class Skeleton_blocker_contractor
- *@brief Class that allows to contract iteratively edges of a simplicial complex.
- *@ingroup contr
- *
- * @details The simplification algorithm consists in iteratively picking the
- * edge with lowest cost and performing an edge contraction if the contraction is valid.
- * This class is policy based (and much inspired from the edge collapse package of CGAL http://doc.cgal.org/latest/Surface_mesh_simplification/index.html).
- *
- * Policies that can be changed are :
- * - the cost policy : how much cost an edge contraction
- * - the placement policy : where will be placed the contraction point
- * - the valid contraction policy : is the contraction valid. For instance, it can be
- * a topological condition (link condition) or a geometrical condition (normals messed up).
- *
- */
-template<class GeometricSimplifiableComplex, class EdgeProfile = Edge_profile<GeometricSimplifiableComplex>>
-class Skeleton_blocker_contractor : private skeleton_blocker::Dummy_complex_visitor<
-typename GeometricSimplifiableComplex::Vertex_handle> {
- GeometricSimplifiableComplex& complex_;
-
- public:
- typedef typename GeometricSimplifiableComplex::Graph_vertex Graph_vertex;
- typedef typename GeometricSimplifiableComplex::Vertex_handle Vertex_handle;
- typedef typename GeometricSimplifiableComplex::Simplex Simplex;
- typedef typename GeometricSimplifiableComplex::Root_vertex_handle Root_vertex_handle;
- typedef typename GeometricSimplifiableComplex::Graph_edge Graph_edge;
- typedef typename GeometricSimplifiableComplex::Edge_handle Edge_handle;
- typedef typename GeometricSimplifiableComplex::Point Point;
-
- typedef EdgeProfile Profile;
-
-
- typedef Cost_policy<Profile> Cost_policy_;
- typedef Placement_policy<Profile> Placement_policy_;
- typedef Valid_contraction_policy<Profile> Valid_contraction_policy_;
- typedef Contraction_visitor<EdgeProfile> Contraction_visitor_;
- typedef Edge_profile_factory<EdgeProfile> Edge_profile_factory_;
-
-
-
- typedef boost::optional<double> Cost_type;
- typedef boost::optional<Point> Placement_type;
-
- typedef size_t size_type;
-
- typedef Skeleton_blocker_contractor Self;
-
- private:
- struct Compare_id {
- Compare_id() : algorithm_(0) { }
-
- Compare_id(Self const* aAlgorithm) : algorithm_(aAlgorithm) { }
-
- bool operator()(Edge_handle a, Edge_handle b) const {
- return algorithm_->get_undirected_edge_id(a) < algorithm_->get_undirected_edge_id(b);
- }
-
- Self const* algorithm_;
- };
-
- struct Compare_cost {
- Compare_cost() : algorithm_(0) { }
-
- Compare_cost(Self const* aAlgorithm) : algorithm_(aAlgorithm) { }
-
- bool operator()(Edge_handle a, Edge_handle b) const {
- // NOTE: A cost is an optional<> value.
- // Absent optionals are ordered first; that is, "none < T" and "T > none" for any defined T != none.
- // In consequence, edges with undefined costs will be promoted to the top of the priority queue and popped out
- // first.
- return algorithm_->get_data(a).cost() < algorithm_->get_data(b).cost();
- }
-
- Self const* algorithm_;
- };
-
- struct Undirected_edge_id : boost::put_get_helper<size_type, Undirected_edge_id> {
- typedef boost::readable_property_map_tag category;
- typedef size_type value_type;
- typedef size_type reference;
- typedef Edge_handle key_type;
-
- Undirected_edge_id() : algorithm_(0) { }
-
- Undirected_edge_id(Self const* aAlgorithm) : algorithm_(aAlgorithm) { }
-
- size_type operator[](Edge_handle e) const {
- return algorithm_->get_undirected_edge_id(e);
- }
-
- Self const* algorithm_;
- };
-
- typedef CGAL::Modifiable_priority_queue<Edge_handle, Compare_cost, Undirected_edge_id> PQ;
- typedef typename PQ::handle pq_handle;
-
-
- // An Edge_data is associated with EVERY edge in the complex (collapsible or not).
- // It relates the edge with the PQ-handle needed to update the priority queue
- // It also relates the edge with a policy-based cache
-
- class Edge_data {
- public:
- Edge_data() : PQHandle_(), cost_() { }
-
- Cost_type const& cost() const {
- return cost_;
- }
-
- Cost_type & cost() {
- return cost_;
- }
-
- pq_handle PQ_handle() const {
- return PQHandle_;
- }
-
- bool is_in_PQ() const {
- return PQHandle_ != PQ::null_handle();
- }
-
- void set_PQ_handle(pq_handle h) {
- PQHandle_ = h;
- }
-
- void reset_PQ_handle() {
- PQHandle_ = PQ::null_handle();
- }
-
- private:
- pq_handle PQHandle_;
- Cost_type cost_;
- };
- typedef Edge_data* Edge_data_ptr;
- typedef boost::scoped_array<Edge_data> Edge_data_array;
-
- int get_undirected_edge_id(Edge_handle edge) const {
- return complex_[edge].index();
- }
-
- const Edge_data& get_data(Edge_handle edge) const {
- return edge_data_array_[get_undirected_edge_id(edge)];
- }
-
- Edge_data& get_data(Edge_handle edge) {
- return edge_data_array_[get_undirected_edge_id(edge)];
- }
-
- Cost_type get_cost(const Profile & profile) const {
- return (*cost_policy_)(profile, get_placement(profile));
- }
-
- Profile create_profile(Edge_handle edge) const {
- if (edge_profile_factory_)
- return edge_profile_factory_->make_profile(complex_, edge);
- else
- return Profile(complex_, edge);
- }
-
- void insert_in_PQ(Edge_handle edge, Edge_data& data) {
- data.set_PQ_handle(heap_PQ_->push(edge));
- ++current_num_edges_heap_;
- }
-
- void update_in_PQ(Edge_handle edge, Edge_data& data) {
- data.set_PQ_handle(heap_PQ_->update(edge, data.PQ_handle()));
- }
-
- void remove_from_PQ(Edge_handle edge, Edge_data& data) {
- data.set_PQ_handle(heap_PQ_->erase(edge, data.PQ_handle()));
- --current_num_edges_heap_;
- }
-
- boost::optional<Edge_handle> pop_from_PQ() {
- boost::optional<Edge_handle> edge = heap_PQ_->extract_top();
- if (edge)
- get_data(*edge).reset_PQ_handle();
- return edge;
- }
-
- private:
- /**
- * @brief Collect edges.
- *
- * Iterates over all edges of the simplicial complex and
- * 1) inserts them in the priority queue sorted according to the Cost policy.
- * 2) set the id() field of each edge
- */
- void collect_edges() {
- //
- // Loop over all the edges in the complex in the heap
- //
- size_type size = complex_.num_edges();
- DBG("Collecting edges ...");
- DBGMSG("num edges :", size);
-
- edge_data_array_.reset(new Edge_data[size]);
-
- heap_PQ_.reset(new PQ(size, Compare_cost(this), Undirected_edge_id(this)));
-
- std::size_t id = 0;
-
- // xxx do a parralel for
- for (auto edge : complex_.edge_range()) {
- complex_[edge].index() = id++;
- Profile const& profile = create_profile(edge);
- Edge_data& data = get_data(edge);
- data.cost() = get_cost(profile);
- ++initial_num_edges_heap_;
- insert_in_PQ(edge, data);
- if (contraction_visitor_) contraction_visitor_->on_collected(profile, data.cost());
- }
-
- DBG("Edges collected.");
- }
-
- bool should_stop(double lCost, const Profile &profile) const {
- return false;
- }
-
- boost::optional<Point> get_placement(const Profile& profile) const {
- return (*placement_policy_)(profile);
- }
-
- bool is_contraction_valid(Profile const& profile, Placement_type placement) const {
- if (!valid_contraction_policy_) return true;
- return (*valid_contraction_policy_)(profile, placement);
- }
-
-
- public:
- /**
- * \brief Contract edges.
- *
- * While the heap is not empty, it extracts the edge with the minimum
- * cost in the heap then try to contract it.
- * It stops when the Stop policy says so or when the number of contractions
- * given by 'num_max_contractions' is reached (if this number is positive).
- */
- void contract_edges(int num_max_contractions = -1) {
- DBG("\n\nContract edges");
- int num_contraction = 0;
-
- bool unspecified_num_contractions = (num_max_contractions == -1);
- //
- // Pops and processes each edge from the PQ
- //
- boost::optional<Edge_handle> edge;
- while ((edge = pop_from_PQ()) && ((num_contraction < num_max_contractions) || (unspecified_num_contractions))) {
- Profile const& profile = create_profile(*edge);
- Cost_type cost(get_data(*edge).cost());
- if (contraction_visitor_) contraction_visitor_->on_selected(profile, cost, 0, 0);
-
- DBGMSG("\n\n---- Pop edge - num vertices :", complex_.num_vertices());
-
- if (cost) {
- DBGMSG("sqrt(cost):", std::sqrt(*cost));
- if (should_stop(*cost, profile)) {
- if (contraction_visitor_) contraction_visitor_->on_stop_condition_reached();
- DBG("should_stop");
- break;
- }
- Placement_type placement = get_placement(profile);
- if (is_contraction_valid(profile, placement) && placement) {
- DBG("contraction_valid");
- contract_edge(profile, placement);
- ++num_contraction;
- } else {
- DBG("contraction not valid");
- if (contraction_visitor_) contraction_visitor_->on_non_valid(profile);
- }
- } else {
- DBG("uncomputable cost");
- }
- }
- if (contraction_visitor_) contraction_visitor_->on_stop_condition_reached();
- }
-
- bool is_in_heap(Edge_handle edge) const {
- if (heap_PQ_->empty()) {
- return false;
- } else {
- return edge_data_array_[get_undirected_edge_id(edge)].is_in_PQ();
- }
- }
-
- bool is_heap_empty() const {
- return heap_PQ_->empty();
- }
-
- /**
- * @brief Returns an Edge_handle and a Placement_type. This pair consists in
- * the edge with the lowest cost in the heap together with its placement.
- * The returned value is initialized iff the heap is non-empty.
- */
- boost::optional<std::pair<Edge_handle, Placement_type > > top_edge() {
- boost::optional<std::pair<Edge_handle, Placement_type > > res;
-
- if (!heap_PQ_->empty()) {
- auto edge = heap_PQ_->top();
- Profile const& profile = create_profile(edge);
- Placement_type placement = get_placement(profile);
- res = std::make_pair(edge, placement);
- DBGMSG("top edge:", complex_[edge]);
- }
- return res;
- }
-
- /**
- * @brief Constructor with default policies.
- *
- * @details The default cost, placement, valid and visitor policies
- * are respectively : the edge length, the first point, the link condition
- */
- Skeleton_blocker_contractor(GeometricSimplifiableComplex& complex)
- : complex_(complex),
- cost_policy_(new Edge_length_cost<Profile>),
- placement_policy_(new First_vertex_placement<Profile>),
- valid_contraction_policy_(new Link_condition_valid_contraction<Profile>),
- contraction_visitor_(new Contraction_visitor_()),
- edge_profile_factory_(0),
- initial_num_edges_heap_(0),
- current_num_edges_heap_(0) {
- complex_.set_visitor(this);
- if (contraction_visitor_) contraction_visitor_->on_started(complex);
- collect_edges();
- }
-
- /**
- * @brief Constructor with customed policies.
- * @remark Policies destruction is handle by the class with smart pointers.
- */
- Skeleton_blocker_contractor(GeometricSimplifiableComplex& complex,
- Cost_policy_ *cost_policy,
- Placement_policy_ * placement_policy = new First_vertex_placement<Profile>,
- Valid_contraction_policy_ * valid_contraction_policy =
- new Link_condition_valid_contraction<Profile>,
- Contraction_visitor_* contraction_visitor = new Contraction_visitor_(),
- Edge_profile_factory_* edge_profile_factory = NULL) :
- complex_(complex),
- cost_policy_(cost_policy),
- placement_policy_(placement_policy),
- valid_contraction_policy_(valid_contraction_policy),
- contraction_visitor_(contraction_visitor),
- edge_profile_factory_(edge_profile_factory),
- initial_num_edges_heap_(0),
- current_num_edges_heap_(0) {
- complex_.set_visitor(this);
- if (contraction_visitor) contraction_visitor->on_started(complex);
- collect_edges();
- }
-
- ~Skeleton_blocker_contractor() {
- complex_.set_visitor(0);
- }
-
- private:
- void contract_edge(const Profile& profile, Placement_type placement) {
- if (contraction_visitor_) contraction_visitor_->on_contracting(profile, placement);
-
- assert(complex_.contains_vertex(profile.v0_handle()));
- assert(complex_.contains_vertex(profile.v1_handle()));
- assert(placement);
-
- profile.complex().point(profile.v0_handle()) = *placement;
-
- // remark : this is not necessary since v1 will be deactivated
- // profile.complex().point(profile.v1_handle()) = *placement;
-
- complex_.contract_edge(profile.v0_handle(), profile.v1_handle());
-
- assert(complex_.contains_vertex(profile.v0_handle()));
- assert(!complex_.contains_vertex(profile.v1_handle()));
-
- update_changed_edges();
-
- // the visitor could do something as complex_.remove_popable_blockers();
- if (contraction_visitor_) contraction_visitor_->on_contracted(profile, placement);
- }
-
- private:
- // every time the visitor's method on_changed_edge is called, it adds an
- // edge to changed_edges_
- std::vector< Edge_handle > changed_edges_;
-
- /**
- * @brief we update the cost and the position in the heap of an edge that has
- * been changed
- */
- inline void on_changed_edge(Vertex_handle a, Vertex_handle b) override {
- boost::optional<Edge_handle> ab(complex_[std::make_pair(a, b)]);
- assert(ab);
- changed_edges_.push_back(*ab);
- }
-
- void update_changed_edges() {
- // xxx do a parralel for
- DBG("update edges");
-
- // sequential loop
- for (auto ab : changed_edges_) {
- // 1-get the Edge_handle corresponding to ab
- // 2-change the data in mEdgeArray[ab.id()]
- // 3-update the heap
- Edge_data& data = get_data(ab);
- Profile const& profile = create_profile(ab);
- data.cost() = get_cost(profile);
- if (data.is_in_PQ()) {
- update_in_PQ(ab, data);
- } else {
- insert_in_PQ(ab, data);
- }
- }
- changed_edges_.clear();
- }
-
-
- private:
- void on_remove_edge(Vertex_handle a, Vertex_handle b) override {
- boost::optional<Edge_handle> ab((complex_[std::make_pair(a, b)]));
- assert(ab);
- Edge_data& lData = get_data(*ab);
- if (lData.is_in_PQ()) {
- remove_from_PQ(*ab, lData);
- }
- }
-
- private:
- /**
- * @brief Called when the edge 'ax' has been added while the edge 'bx'
- * is still there but will be removed on next instruction.
- * We assign the index of 'bx' to the edge index of 'ax'
- */
- void on_swaped_edge(Vertex_handle a, Vertex_handle b, Vertex_handle x) override {
- boost::optional<Edge_handle> ax(complex_[std::make_pair(a, x)]);
- boost::optional<Edge_handle> bx(complex_[std::make_pair(b, x)]);
- assert(ax && bx);
- complex_[*ax].index() = complex_[*bx].index();
- }
-
- private:
- /**
- * @brief Called when a blocker is removed.
- * All the edges that passes through the blocker may be edge-contractible
- * again and are thus reinserted in the heap.
- */
- void on_delete_blocker(const Simplex * blocker) override {
- // we go for all pairs xy that belongs to the blocker
- // note that such pairs xy are necessarily edges of the complex
- // by definition of a blocker
-
- // todo uniqument utile pour la link condition
- // laisser a l'utilisateur ? booleen update_heap_on_removed_blocker?
- Simplex blocker_copy(*blocker);
- for (auto x = blocker_copy.begin(); x != blocker_copy.end(); ++x) {
- for (auto y = x; ++y != blocker_copy.end();) {
- auto edge_descr(complex_[std::make_pair(*x, *y)]);
- assert(edge_descr);
- Edge_data& data = get_data(*edge_descr);
- Profile const& profile = create_profile(*edge_descr);
- data.cost() = get_cost(profile);
-
- // If the edge is already in the heap
- // its priority has not changed.
- // If the edge is not present, we reinsert it
- // remark : we could also reinsert the edge
- // only if it is valid
- if (!data.is_in_PQ()) {
- insert_in_PQ(*edge_descr, data);
- }
- }
- }
- }
-
-
- private:
- std::shared_ptr<Cost_policy_> cost_policy_;
- std::shared_ptr<Placement_policy_> placement_policy_;
- std::shared_ptr<Valid_contraction_policy_> valid_contraction_policy_;
- std::shared_ptr<Contraction_visitor_> contraction_visitor_;
-
- // in case the user wants to do something special when the edge profile
- // are created (for instance add some info)
- std::shared_ptr<Edge_profile_factory_> edge_profile_factory_;
- Edge_data_array edge_data_array_;
-
- boost::scoped_ptr<PQ> heap_PQ_;
- int initial_num_edges_heap_;
- int current_num_edges_heap_;
-};
-
-} // namespace contraction
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_CONTRACTOR_H_
diff --git a/include/gudhi/Skeleton_blocker_geometric_complex.h b/include/gudhi/Skeleton_blocker_geometric_complex.h
deleted file mode 100644
index 39b88ceb..00000000
--- a/include/gudhi/Skeleton_blocker_geometric_complex.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_GEOMETRIC_COMPLEX_H_
-#define SKELETON_BLOCKER_GEOMETRIC_COMPLEX_H_
-
-#include <gudhi/Skeleton_blocker_complex.h>
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_sub_complex.h>
-#include <gudhi/Debug_utils.h>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/**
- * @brief Class that represents a geometric complex that can be simplified.
- * The class allows access to points of vertices.
- * @ingroup skbl
- */
-template<typename SkeletonBlockerGeometricDS>
-class Skeleton_blocker_geometric_complex :
-public Skeleton_blocker_complex<SkeletonBlockerGeometricDS> {
- public:
- typedef typename SkeletonBlockerGeometricDS::GT GT;
-
- typedef Skeleton_blocker_complex<SkeletonBlockerGeometricDS> SimplifiableSkeletonblocker;
-
- typedef typename SimplifiableSkeletonblocker::Vertex_handle Vertex_handle;
- typedef typename SimplifiableSkeletonblocker::Root_vertex_handle Root_vertex_handle;
- typedef typename SimplifiableSkeletonblocker::Edge_handle Edge_handle;
- typedef typename SimplifiableSkeletonblocker::Simplex Simplex;
-
- typedef typename SimplifiableSkeletonblocker::Graph_vertex Graph_vertex;
-
- typedef typename SkeletonBlockerGeometricDS::Point Point;
-
- Skeleton_blocker_geometric_complex() { }
-
- /**
- * constructor given a list of points
- */
- template<typename PointIterator>
- explicit Skeleton_blocker_geometric_complex(int num_vertices, PointIterator begin, PointIterator end) {
- for (auto point = begin; point != end; ++point)
- add_vertex(*point);
- }
-
- /**
- * @brief Constructor with a list of simplices.
- * @details is_flag_complex indicates if the complex is a flag complex or not (to know if blockers have to be
- * computed or not).
- */
- template<typename SimpleHandleOutputIterator, typename PointIterator>
- Skeleton_blocker_geometric_complex(
- SimpleHandleOutputIterator simplex_begin, SimpleHandleOutputIterator simplex_end,
- PointIterator points_begin, PointIterator points_end,
- bool is_flag_complex = false)
- : Skeleton_blocker_complex<SkeletonBlockerGeometricDS>(simplex_begin, simplex_end, is_flag_complex) {
- unsigned current = 0;
- for (auto point = points_begin; point != points_end; ++point)
- (*this)[Vertex_handle(current++)].point() = Point(point->begin(), point->end());
- }
-
- /**
- * @brief Constructor with a list of simplices.
- * Points of every vertex are the point constructed with default constructor.
- * @details is_flag_complex indicates if the complex is a flag complex or not (to know if blockers have to be computed or not).
- */
- template<typename SimpleHandleOutputIterator>
- Skeleton_blocker_geometric_complex(
- SimpleHandleOutputIterator simplex_begin, SimpleHandleOutputIterator simplex_end,
- bool is_flag_complex = false)
- : Skeleton_blocker_complex<SkeletonBlockerGeometricDS>(simplex_begin, simplex_end, is_flag_complex) { }
-
- /**
- * @brief Add a vertex to the complex with a default constructed associated point.
- */
- Vertex_handle add_vertex() {
- return SimplifiableSkeletonblocker::add_vertex();
- }
-
- /**
- * @brief Add a vertex to the complex with its associated point.
- */
- Vertex_handle add_vertex(const Point& point) {
- Vertex_handle ad = SimplifiableSkeletonblocker::add_vertex();
- (*this)[ad].point() = point;
- return ad;
- }
-
- /**
- * @brief Returns the Point associated to the vertex v.
- */
- const Point& point(Vertex_handle v) const {
- assert(this->contains_vertex(v));
- return (*this)[v].point();
- }
-
- /**
- * @brief Returns the Point associated to the vertex v.
- */
- Point& point(Vertex_handle v) {
- assert(this->contains_vertex(v));
- return (*this)[v].point();
- }
-
- const Point& point(Root_vertex_handle global_v) const {
- Vertex_handle local_v((*this)[global_v]);
- assert(this->contains_vertex(local_v));
- return (*this)[local_v].point();
- }
-
- Point& point(Root_vertex_handle global_v) {
- Vertex_handle local_v((*this)[global_v]);
- assert(this->contains_vertex(local_v));
- return (*this)[local_v].point();
- }
-
- typedef Skeleton_blocker_link_complex<Skeleton_blocker_geometric_complex> Geometric_link;
-
- /**
- * Constructs the link of 'simplex' with points coordinates.
- */
- Geometric_link link(Vertex_handle v) const {
- Geometric_link link(*this, Simplex(v));
- // we now add the point info
- add_points_to_link(link);
- return link;
- }
-
- /**
- * Constructs the link of 'simplex' with points coordinates.
- */
- Geometric_link link(const Simplex& simplex) const {
- Geometric_link link(*this, simplex);
- // we now add the point info
- add_points_to_link(link);
- return link;
- }
-
- /**
- * Constructs the link of 'simplex' with points coordinates.
- */
- Geometric_link link(Edge_handle edge) const {
- Geometric_link link(*this, edge);
- // we now add the point info
- add_points_to_link(link);
- return link;
- }
-
- typedef Skeleton_blocker_link_complex<Skeleton_blocker_complex<SkeletonBlockerGeometricDS>> Abstract_link;
-
- /**
- * Constructs the abstract link of v (without points coordinates).
- */
- Abstract_link abstract_link(Vertex_handle v) const {
- return Abstract_link(*this, Simplex(v));
- }
-
- /**
- * Constructs the link of 'simplex' with points coordinates.
- */
- Abstract_link abstract_link(const Simplex& simplex) const {
- return Abstract_link(*this, simplex);
- }
-
- /**
- * Constructs the link of 'simplex' with points coordinates.
- */
- Abstract_link abstract_link(Edge_handle edge) const {
- return Abstract_link(*this, edge);
- }
-
- private:
- void add_points_to_link(Geometric_link& link) const {
- for (Vertex_handle v : link.vertex_range()) {
- Root_vertex_handle v_root(link.get_id(v));
- link.point(v) = (*this).point(v_root);
- }
- }
-};
-
-
-template<typename SkeletonBlockerGeometricComplex, typename SimpleHandleOutputIterator, typename PointIterator>
-SkeletonBlockerGeometricComplex make_complex_from_top_faces(
- SimpleHandleOutputIterator simplex_begin,
- SimpleHandleOutputIterator simplex_end,
- PointIterator points_begin,
- PointIterator points_end,
- bool is_flag_complex = false) {
- typedef SkeletonBlockerGeometricComplex SBGC;
- SkeletonBlockerGeometricComplex complex;
- unsigned current = 0;
- complex =
- make_complex_from_top_faces<SBGC>(simplex_begin, simplex_end, is_flag_complex);
- for (auto point = points_begin; point != points_end; ++point)
- // complex.point(Vertex_handle(current++)) = Point(point->begin(),point->end());
- complex.point(typename SBGC::Vertex_handle(current++)) = typename SBGC::Point(*point);
- return complex;
-}
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_GEOMETRIC_COMPLEX_H_
diff --git a/include/gudhi/Skeleton_blocker_link_complex.h b/include/gudhi/Skeleton_blocker_link_complex.h
deleted file mode 100644
index 428d4e9b..00000000
--- a/include/gudhi/Skeleton_blocker_link_complex.h
+++ /dev/null
@@ -1,299 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_LINK_COMPLEX_H_
-#define SKELETON_BLOCKER_LINK_COMPLEX_H_
-
-#include <gudhi/Skeleton_blocker_complex.h>
-#include <gudhi/Debug_utils.h>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-template<class ComplexType> class Skeleton_blocker_sub_complex;
-
-/**
- * \brief Class representing the link of a simplicial complex encoded by a skeleton/blockers pair.
- * It inherits from Skeleton_blocker_sub_complex because such complex is a sub complex of a
- * root complex.
- * \ingroup skbl
- */
-template<typename ComplexType>
-class Skeleton_blocker_link_complex : public Skeleton_blocker_sub_complex<
-ComplexType> {
- template<typename T> friend class Skeleton_blocker_link_superior;
- typedef typename ComplexType::Edge_handle Edge_handle;
-
- typedef typename ComplexType::boost_vertex_handle boost_vertex_handle;
-
- private:
- bool only_superior_vertices_;
-
- public:
- typedef typename ComplexType::Vertex_handle Vertex_handle;
- typedef typename ComplexType::Root_vertex_handle Root_vertex_handle;
-
- typedef typename ComplexType::Simplex Simplex;
- typedef typename ComplexType::Root_simplex_handle Root_simplex_handle;
-
- typedef typename ComplexType::Blocker_handle Blocker_handle;
-
- typedef typename ComplexType::Root_simplex_handle::Simplex_vertex_const_iterator Root_simplex_handle_iterator;
-
- explicit Skeleton_blocker_link_complex(bool only_superior_vertices = false)
- : only_superior_vertices_(only_superior_vertices) { }
-
- /**
- * If the parameter only_superior_vertices is true,
- * only vertices greater than the one of alpha are added.
- * Only vertices are computed if only_vertices is true.
- */
- Skeleton_blocker_link_complex(const ComplexType & parent_complex,
- const Simplex& alpha_parent_adress,
- bool only_superior_vertices = false,
- bool only_vertices = false)
- : only_superior_vertices_(only_superior_vertices) {
- if (!alpha_parent_adress.empty())
- build_link(parent_complex, alpha_parent_adress, only_vertices);
- }
-
- /**
- * If the parameter only_superior_vertices is true,
- * only vertices greater than the one of the vertex are added.
- */
- Skeleton_blocker_link_complex(const ComplexType & parent_complex,
- Vertex_handle a_parent_adress,
- bool only_superior_vertices = false)
- : only_superior_vertices_(only_superior_vertices) {
- Simplex alpha_simplex(a_parent_adress);
- build_link(parent_complex, alpha_simplex);
- }
-
- /**
- * If the parameter only_superior_vertices is true,
- * only vertices greater than the one of the edge are added.
- */
- Skeleton_blocker_link_complex(const ComplexType & parent_complex,
- Edge_handle edge, bool only_superior_vertices =
- false)
- : only_superior_vertices_(only_superior_vertices) {
- Simplex alpha_simplex(parent_complex.first_vertex(edge),
- parent_complex.second_vertex(edge));
- build_link(parent_complex, alpha_simplex);
- }
-
- protected:
- /**
- * @brief compute vertices of the link.
- * If the boolean only_superior_vertices is true, then only the vertices
- * are greater than vertices of alpha_parent_adress are added.
- */
- void compute_link_vertices(const ComplexType & parent_complex,
- const Simplex& alpha_parent_adress,
- bool only_superior_vertices,
- bool is_alpha_blocker = false) {
- if (alpha_parent_adress.dimension() == 0) {
- // for a vertex we know exactly the number of vertices of the link (and the size of the corresponding vector)
- // thus we call a specific function that will reserve a vector with appropriate size
- this->compute_link_vertices(parent_complex,
- alpha_parent_adress.first_vertex(),
- only_superior_vertices_);
- } else {
- // we compute the intersection of neighbors of alpha and store it in link_vertices
- Simplex link_vertices_parent;
- parent_complex.add_neighbours(alpha_parent_adress, link_vertices_parent,
- only_superior_vertices);
- // For all vertex 'v' in this intersection, we go through all its adjacent blockers.
- // If one blocker minus 'v' is included in alpha then the vertex is not in the link complex.
- for (auto v_parent : link_vertices_parent) {
- bool new_vertex = true;
- for (auto beta : parent_complex.const_blocker_range(v_parent)) {
- if (!is_alpha_blocker || *beta != alpha_parent_adress) {
- new_vertex = !(alpha_parent_adress.contains_difference(*beta,
- v_parent));
- if (!new_vertex)
- break;
- }
- }
- if (new_vertex)
- this->add_vertex(parent_complex.get_id(v_parent));
- }
- }
- }
-
- /**
- * @brief compute vertices of the link.
- * If the boolean only_superior_vertices is true, then only the vertices
- * are greater than vertices of alpha_parent_adress are added.
- */
- void compute_link_vertices(const ComplexType & parent_complex,
- Vertex_handle alpha_parent_adress,
- bool only_superior_vertices) {
- // for a vertex we know exactly the number of vertices of the link (and the size of the corresponding vector
- this->skeleton.m_vertices.reserve(
- parent_complex.degree(alpha_parent_adress));
-
- // For all vertex 'v' in this intersection, we go through all its adjacent blockers.
- // If one blocker minus 'v' is included in alpha then the vertex is not in the link complex.
- for (auto v_parent : parent_complex.vertex_range(alpha_parent_adress)) {
- if (!only_superior_vertices
- || v_parent.vertex > alpha_parent_adress.vertex)
- this->add_vertex(parent_complex.get_id(v_parent));
- }
- }
-
- void compute_link_edges(const ComplexType & parent_complex,
- const Simplex& alpha_parent_adress,
- bool is_alpha_blocker = false) {
- if (this->num_vertices() <= 1)
- return;
-
- for (auto x_link = this->vertex_range().begin();
- x_link != this->vertex_range().end(); ++x_link) {
- for (auto y_link = x_link; ++y_link != this->vertex_range().end();) {
- Vertex_handle x_parent = *parent_complex.get_address(
- this->get_id(*x_link));
- Vertex_handle y_parent = *parent_complex.get_address(
- this->get_id(*y_link));
- if (parent_complex.contains_edge(x_parent, y_parent)) {
- // we check that there is no blocker subset of alpha passing trough x and y
- bool new_edge = true;
- for (auto blocker_parent : parent_complex.const_blocker_range(
- x_parent)) {
- if (!is_alpha_blocker || *blocker_parent != alpha_parent_adress) {
- if (blocker_parent->contains(y_parent)) {
- new_edge = !(alpha_parent_adress.contains_difference(
- *blocker_parent, x_parent, y_parent));
- if (!new_edge)
- break;
- }
- }
- }
- if (new_edge)
- this->add_edge_without_blockers(*x_link, *y_link);
- }
- }
- }
- }
-
- /**
- * @brief : Given an address in the current complex, it returns the
- * corresponding address in 'other_complex'.
- * It assumes that other_complex have a vertex 'this.get_id(address)'
- */
- boost::optional<Vertex_handle> give_equivalent_vertex(const ComplexType & other_complex,
- Vertex_handle address) const {
- Root_vertex_handle id((*this)[address].get_id());
- return other_complex.get_address(id);
- }
-
- /*
- * compute the blockers of the link if is_alpha_blocker is false.
- * Otherwise, alpha is a blocker, and the link is computed in the complex where
- * the blocker is anticollapsed.
- */
- void compute_link_blockers(const ComplexType & parent_complex,
- const Simplex& alpha_parent,
- bool is_alpha_blocker = false) {
- for (auto x_link : this->vertex_range()) {
- Vertex_handle x_parent = *this->give_equivalent_vertex(parent_complex,
- x_link);
-
- for (auto blocker_parent : parent_complex.const_blocker_range(x_parent)) {
- if (!is_alpha_blocker || *blocker_parent != alpha_parent) {
- Simplex sigma_parent(*blocker_parent);
-
- sigma_parent.difference(alpha_parent);
-
- if (sigma_parent.dimension() >= 2
- && sigma_parent.first_vertex() == x_parent) {
- Root_simplex_handle sigma_id(parent_complex.get_id(sigma_parent));
- auto sigma_link = this->get_simplex_address(sigma_id);
- // ie if the vertices of sigma are vertices of the link
- if (sigma_link) {
- bool is_new_blocker = true;
- for (auto a : alpha_parent) {
- for (auto eta_parent : parent_complex.const_blocker_range(a)) {
- if (!is_alpha_blocker || *eta_parent != alpha_parent) {
- Simplex eta_minus_alpha(*eta_parent);
- eta_minus_alpha.difference(alpha_parent);
- if (eta_minus_alpha != sigma_parent
- && sigma_parent.contains_difference(*eta_parent,
- alpha_parent)) {
- is_new_blocker = false;
- break;
- }
- }
- }
- if (!is_new_blocker)
- break;
- }
- if (is_new_blocker)
- this->add_blocker(new Simplex(*sigma_link));
- }
- }
- }
- }
- }
- }
-
- public:
- /**
- * @brief compute vertices, edges and blockers of the link.
- * @details If the boolean only_superior_vertices is true, then the link is computed only
- * with vertices that are greater than vertices of alpha_parent_adress.
- */
- void build_link(const ComplexType & parent_complex,
- const Simplex& alpha_parent_adress,
- bool is_alpha_blocker = false,
- bool only_vertices = false) {
- assert(is_alpha_blocker || parent_complex.contains(alpha_parent_adress));
- compute_link_vertices(parent_complex, alpha_parent_adress, only_superior_vertices_);
- if (!only_vertices) {
- compute_link_edges(parent_complex, alpha_parent_adress, is_alpha_blocker);
- compute_link_blockers(parent_complex, alpha_parent_adress, is_alpha_blocker);
- }
- }
-
- /**
- * @brief build the link of a blocker which is the link
- * of the blocker's simplex if this simplex had been
- * removed from the blockers of the complex.
- */
- friend void build_link_of_blocker(const ComplexType & parent_complex,
- Simplex& blocker,
- Skeleton_blocker_link_complex & result) {
- assert(blocker.dimension() >= 2);
- assert(parent_complex.contains_blocker(blocker));
- result.clear();
- result.build_link(parent_complex, blocker, true);
- }
-};
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_LINK_COMPLEX_H_
diff --git a/include/gudhi/Skeleton_blocker_simplifiable_complex.h b/include/gudhi/Skeleton_blocker_simplifiable_complex.h
deleted file mode 100644
index d5adb39d..00000000
--- a/include/gudhi/Skeleton_blocker_simplifiable_complex.h
+++ /dev/null
@@ -1,467 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_SIMPLIFIABLE_COMPLEX_H_
-#define SKELETON_BLOCKER_SIMPLIFIABLE_COMPLEX_H_
-
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_sub_complex.h>
-
-#include <list>
-#include <vector>
-#include <set>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/**
- * Returns true if the blocker 'sigma' is popable.
- * To define popable, let us call 'L' the complex that
- * consists in the current complex without the blocker 'sigma'.
- * A blocker 'sigma' is then "popable" if the link of 'sigma'
- * in L is reducible.
- *
- */
-template<typename SkeletonBlockerDS>
-bool Skeleton_blocker_complex<SkeletonBlockerDS>::is_popable_blocker(Blocker_handle sigma) const {
- assert(this->contains_blocker(*sigma));
- Skeleton_blocker_link_complex<Skeleton_blocker_complex> link_blocker_sigma;
- build_link_of_blocker(*this, *sigma, link_blocker_sigma);
- return link_blocker_sigma.is_contractible() == CONTRACTIBLE;
-}
-
-/**
- * Removes all the popable blockers of the complex and delete them.
- * @returns the number of popable blockers deleted
- */
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::remove_popable_blockers() {
- std::list<Vertex_handle> vertex_to_check;
- for (auto v : this->vertex_range())
- vertex_to_check.push_front(v);
-
- while (!vertex_to_check.empty()) {
- Vertex_handle v = vertex_to_check.front();
- vertex_to_check.pop_front();
-
- bool blocker_popable_found = true;
- while (blocker_popable_found) {
- blocker_popable_found = false;
- for (auto block : this->blocker_range(v)) {
- if (this->is_popable_blocker(block)) {
- for (Vertex_handle nv : *block)
- if (nv != v) vertex_to_check.push_back(nv);
- this->delete_blocker(block);
- blocker_popable_found = true;
- break;
- }
- }
- }
- }
-}
-
-/**
- * Removes all the popable blockers of the complex passing through v and delete them.
- */
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::remove_popable_blockers(Vertex_handle v) {
- bool blocker_popable_found = true;
- while (blocker_popable_found) {
- blocker_popable_found = false;
- for (auto block : this->blocker_range(v)) {
- if (is_popable_blocker(block)) {
- this->delete_blocker(block);
- blocker_popable_found = true;
- }
- }
- }
-}
-
-/**
- * @brief Removes all the popable blockers of the complex passing through v and delete them.
- * Also remove popable blockers in the neighborhood if they became popable.
- *
- */
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::remove_all_popable_blockers(Vertex_handle v) {
- std::list<Vertex_handle> vertex_to_check;
- vertex_to_check.push_front(v);
-
- while (!vertex_to_check.empty()) {
- Vertex_handle v = vertex_to_check.front();
- vertex_to_check.pop_front();
-
- bool blocker_popable_found = true;
- while (blocker_popable_found) {
- blocker_popable_found = false;
- for (auto block : this->blocker_range(v)) {
- if (this->is_popable_blocker(block)) {
- for (Vertex_handle nv : *block)
- if (nv != v) vertex_to_check.push_back(nv);
- this->delete_blocker(block);
- blocker_popable_found = true;
- break;
- }
- }
- }
- }
-}
-
-/**
- * Remove the star of the vertice 'v'
- */
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::remove_star(Vertex_handle v) {
- // we remove the blockers that are not consistent anymore
- update_blockers_after_remove_star_of_vertex_or_edge(Simplex(v));
- while (this->degree(v) > 0) {
- Vertex_handle w(* (adjacent_vertices(v.vertex, this->skeleton).first));
- this->remove_edge(v, w);
- }
- this->remove_vertex(v);
-}
-
-/**
- * after removing the star of a simplex, blockers sigma that contains this simplex must be removed.
- * Furthermore, all simplices tau of the form sigma \setminus simplex_to_be_removed must be added
- * whenever the dimension of tau is at least 2.
- */
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::update_blockers_after_remove_star_of_vertex_or_edge(const Simplex& simplex_to_be_removed) {
- std::list <Blocker_handle> blockers_to_update;
- if (simplex_to_be_removed.empty()) return;
-
- auto v0 = simplex_to_be_removed.first_vertex();
- for (auto blocker : this->blocker_range(v0)) {
- if (blocker->contains(simplex_to_be_removed))
- blockers_to_update.push_back(blocker);
- }
-
- for (auto blocker_to_update : blockers_to_update) {
- Simplex sub_blocker_to_be_added;
- bool sub_blocker_need_to_be_added =
- (blocker_to_update->dimension() - simplex_to_be_removed.dimension()) >= 2;
- if (sub_blocker_need_to_be_added) {
- sub_blocker_to_be_added = *blocker_to_update;
- sub_blocker_to_be_added.difference(simplex_to_be_removed);
- }
- this->delete_blocker(blocker_to_update);
- if (sub_blocker_need_to_be_added)
- this->add_blocker(sub_blocker_to_be_added);
- }
-}
-
-/**
- * Remove the star of the edge connecting vertices a and b.
- * @returns the number of blocker that have been removed
- */
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::remove_star(Vertex_handle a, Vertex_handle b) {
- update_blockers_after_remove_star_of_vertex_or_edge(Simplex(a, b));
- // we remove the edge
- this->remove_edge(a, b);
-}
-
-/**
- * Remove the star of the edge 'e'.
- */
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::remove_star(Edge_handle e) {
- return remove_star(this->first_vertex(e), this->second_vertex(e));
-}
-
-/**
- * Remove the star of the simplex 'sigma' which needs to belong to the complex
- */
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::remove_star(const Simplex& sigma) {
- assert(this->contains(sigma));
- if (sigma.dimension() == 0) {
- remove_star(sigma.first_vertex());
- } else if (sigma.dimension() == 1) {
- remove_star(sigma.first_vertex(), sigma.last_vertex());
- } else {
- remove_blocker_containing_simplex(sigma);
- this->add_blocker(sigma);
- }
-}
-
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::add_simplex(const Simplex& sigma) {
- // to add a simplex s, all blockers included in s are first removed
- // and then all simplex in the coboundary of s are added as blockers
- assert(!this->contains(sigma));
- assert(sigma.dimension() > 1);
- if (!contains_vertices(sigma)) {
- std::cerr << "add_simplex: Some vertices were not present in the complex, adding them" << std::endl;
- size_t num_vertices_to_add = sigma.last_vertex() - this->num_vertices() + 1;
- for (size_t i = 0; i < num_vertices_to_add; ++i)
- this->add_vertex();
- }
- assert(contains_vertices(sigma));
- if (!contains_edges(sigma))
- add_edge(sigma);
- remove_blocker_include_in_simplex(sigma);
- add_blockers_after_simplex_insertion(sigma);
-}
-
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::add_blockers_after_simplex_insertion(Simplex sigma) {
- if (sigma.dimension() < 1) return;
-
- for (auto s : coboundary_range(sigma)) {
- this->add_blocker(s);
- }
-}
-
-/**
- * remove all blockers that contains sigma
- */
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::remove_blocker_containing_simplex(const Simplex& sigma) {
- std::vector <Blocker_handle> blockers_to_remove;
- for (auto blocker : this->blocker_range(sigma.first_vertex())) {
- if (blocker->contains(sigma))
- blockers_to_remove.push_back(blocker);
- }
- for (auto blocker_to_update : blockers_to_remove)
- this->delete_blocker(blocker_to_update);
-}
-
-/**
- * remove all blockers that contains sigma
- */
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::remove_blocker_include_in_simplex(const Simplex& sigma) {
- // TODO(DS): write efficiently by using only superior blockers
- // eg for all s, check blockers whose vertices are all greater than s
- std::set <Blocker_handle> blockers_to_remove;
- for (auto s : sigma) {
- for (auto blocker : this->blocker_range(s)) {
- if (sigma.contains(*blocker))
- blockers_to_remove.insert(blocker);
- }
- }
- for (auto blocker_to_update : blockers_to_remove) {
- auto s = *blocker_to_update;
- this->delete_blocker(blocker_to_update);
- // now if there is a vertex v in the link of s
- // and v is not included in sigma then v.s is a blocker
- // (all faces of v.s are there since v belongs to the link of s)
- for (const auto& b : coboundary_range(s))
- if (!sigma.contains(b))
- this->add_blocker(b);
- }
-}
-
-/**
- * Compute simplices beta such that a.beta is an order 0 blocker
- * that may be used to construct a new blocker after contracting ab.
- * It requires that the link condition is satisfied.
- */
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::tip_blockers(Vertex_handle a, Vertex_handle b,
- std::vector<Simplex> & buffer) const {
- for (auto const & blocker : this->const_blocker_range(a)) {
- Simplex beta = (*blocker);
- beta.remove_vertex(a);
- buffer.push_back(beta);
- }
-
- Simplex n;
- this->add_neighbours(b, n);
- this->remove_neighbours(a, n);
- n.remove_vertex(a);
-
-
- for (Vertex_handle y : n) {
- Simplex beta;
- beta.add_vertex(y);
- buffer.push_back(beta);
- }
-}
-
-/**
- * @brief "Replace" the edge 'bx' by the edge 'ax'.
- * Assume that the edge 'bx' was present whereas 'ax' was not.
- * Precisely, it does not replace edges, but remove 'bx' and then add 'ax'.
- * The visitor 'on_swaped_edge' is called just after edge 'ax' had been added
- * and just before edge 'bx' had been removed. That way, it can
- * eventually access to information of 'ax'.
- */
-template<typename SkeletonBlockerDS>
-void
-Skeleton_blocker_complex<SkeletonBlockerDS>::swap_edge(Vertex_handle a, Vertex_handle b, Vertex_handle x) {
- this->add_edge_without_blockers(a, x);
- if (this->visitor) this->visitor->on_swaped_edge(a, b, x);
- this->remove_edge(b, x);
-}
-
-template<typename SkeletonBlockerDS>
-void
-Skeleton_blocker_complex<SkeletonBlockerDS>::delete_blockers_around_vertex(Vertex_handle v) {
- std::list <Blocker_handle> blockers_to_delete;
- for (auto blocker : this->blocker_range(v)) {
- blockers_to_delete.push_back(blocker);
- }
- while (!blockers_to_delete.empty()) {
- this->remove_blocker(blockers_to_delete.back());
- blockers_to_delete.pop_back();
- }
-}
-
-/**
- * @brief removes all blockers passing through the edge 'ab'
- */
-template<typename SkeletonBlockerDS>
-void
-Skeleton_blocker_complex<SkeletonBlockerDS>::delete_blockers_around_edge(Vertex_handle a, Vertex_handle b) {
- std::list<Blocker_handle> blocker_to_delete;
- for (auto blocker : this->blocker_range(a))
- if (blocker->contains(b)) blocker_to_delete.push_back(blocker);
- while (!blocker_to_delete.empty()) {
- this->delete_blocker(blocker_to_delete.back());
- blocker_to_delete.pop_back();
- }
-}
-
-/**
- * Contracts the edge connecting vertices a and b.
- * @remark If the link condition Link(ab) = Link(a) inter Link(b) is not satisfied,
- * it removes first all blockers passing through 'ab'
- */
-template<typename SkeletonBlockerDS>
-void
-Skeleton_blocker_complex<SkeletonBlockerDS>::contract_edge(Vertex_handle a, Vertex_handle b) {
- assert(this->contains_vertex(a));
- assert(this->contains_vertex(b));
-
- if (this->contains_edge(a, b))
- this->add_edge_without_blockers(a, b);
-
- // if some blockers passes through 'ab', we need to remove them.
- if (!link_condition(a, b))
- delete_blockers_around_edge(a, b);
-
- std::set<Simplex> blockers_to_add;
-
- get_blockers_to_be_added_after_contraction(a, b, blockers_to_add);
-
- delete_blockers_around_vertices(a, b);
-
- update_edges_after_contraction(a, b);
-
- this->remove_vertex(b);
-
- notify_changed_edges(a);
-
- for (auto block : blockers_to_add)
- this->add_blocker(block);
-
- assert(this->contains_vertex(a));
- assert(!this->contains_vertex(b));
-}
-
-template<typename SkeletonBlockerDS>
-void Skeleton_blocker_complex<SkeletonBlockerDS>::get_blockers_to_be_added_after_contraction(Vertex_handle a,
- Vertex_handle b,
- std::set<Simplex>& blockers_to_add) {
- blockers_to_add.clear();
-
- typedef Skeleton_blocker_link_complex<Skeleton_blocker_complex<SkeletonBlockerDS> > LinkComplexType;
-
- LinkComplexType link_a(*this, a);
- LinkComplexType link_b(*this, b);
-
- std::vector<Simplex> vector_alpha, vector_beta;
-
- tip_blockers(a, b, vector_alpha);
- tip_blockers(b, a, vector_beta);
-
- for (auto alpha = vector_alpha.begin(); alpha != vector_alpha.end(); ++alpha) {
- for (auto beta = vector_beta.begin(); beta != vector_beta.end(); ++beta) {
- Simplex sigma = *alpha;
- sigma.union_vertices(*beta);
- Root_simplex_handle sigma_id = this->get_id(sigma);
- if (this->contains(sigma) &&
- proper_faces_in_union<Skeleton_blocker_complex < SkeletonBlockerDS >> (sigma_id, link_a, link_b)) {
- // Blocker_handle blocker = new Simplex(sigma);
- sigma.add_vertex(a);
- blockers_to_add.insert(sigma);
- }
- }
- }
-}
-
-/**
- * delete all blockers that passes through a or b
- */
-template<typename SkeletonBlockerDS>
-void
-Skeleton_blocker_complex<SkeletonBlockerDS>::delete_blockers_around_vertices(Vertex_handle a, Vertex_handle b) {
- std::vector<Blocker_handle> blocker_to_delete;
- for (auto bl : this->blocker_range(a))
- blocker_to_delete.push_back(bl);
- for (auto bl : this->blocker_range(b))
- blocker_to_delete.push_back(bl);
- while (!blocker_to_delete.empty()) {
- this->delete_blocker(blocker_to_delete.back());
- blocker_to_delete.pop_back();
- }
-}
-
-template<typename SkeletonBlockerDS>
-void
-Skeleton_blocker_complex<SkeletonBlockerDS>::update_edges_after_contraction(Vertex_handle a, Vertex_handle b) {
- // We update the set of edges
- this->remove_edge(a, b);
-
- // For all edges {b,x} incident to b,
- // we remove {b,x} and add {a,x} if not already there.
- while (this->degree(b) > 0) {
- Vertex_handle x(*(adjacent_vertices(b.vertex, this->skeleton).first));
- if (!this->contains_edge(a, x))
- // we 'replace' the edge 'bx' by the edge 'ax'
- this->swap_edge(a, b, x);
- else
- this->remove_edge(b, x);
- }
-}
-
-template<typename SkeletonBlockerDS>
-void
-Skeleton_blocker_complex<SkeletonBlockerDS>::notify_changed_edges(Vertex_handle a) {
- // We notify the visitor that all edges incident to 'a' had changed
- boost_adjacency_iterator v, v_end;
-
- for (tie(v, v_end) = adjacent_vertices(a.vertex, this->skeleton); v != v_end; ++v)
- if (this->visitor) this->visitor->on_changed_edge(a, Vertex_handle(*v));
-}
-
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_SIMPLIFIABLE_COMPLEX_H_
diff --git a/include/gudhi/Sparse_rips_complex.h b/include/gudhi/Sparse_rips_complex.h
deleted file mode 100644
index 4dcc08ed..00000000
--- a/include/gudhi/Sparse_rips_complex.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Marc Glisse
- *
- * Copyright (C) 2018 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SPARSE_RIPS_COMPLEX_H_
-#define SPARSE_RIPS_COMPLEX_H_
-
-#include <gudhi/Debug_utils.h>
-#include <gudhi/graph_simplicial_complex.h>
-#include <gudhi/choose_n_farthest_points.h>
-
-#include <boost/graph/adjacency_list.hpp>
-#include <boost/range/metafunctions.hpp>
-
-#include <vector>
-
-namespace Gudhi {
-
-namespace rips_complex {
-
-// The whole interface is copied on Rips_complex. A redesign should be discussed with all complex creation classes in
-// mind.
-
-/**
- * \class Sparse_rips_complex
- * \brief Sparse Rips complex data structure.
- *
- * \ingroup rips_complex
- *
- * \details
- * This class is used to construct a sparse \f$(1+O(\epsilon))\f$-approximation of `Rips_complex`, i.e. a filtered
- * simplicial complex that is multiplicatively \f$(1+O(\epsilon))\f$-interleaved with the Rips filtration.
- *
- * \tparam Filtration_value is the type used to store the filtration values of the simplicial complex.
- */
-template <typename Filtration_value>
-class Sparse_rips_complex {
- private:
- // TODO(MG): use a different graph where we know we can safely insert in parallel.
- typedef typename boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS,
- boost::property<vertex_filtration_t, Filtration_value>,
- boost::property<edge_filtration_t, Filtration_value>>
- Graph;
-
- typedef int Vertex_handle;
-
- public:
- /** \brief Sparse_rips_complex constructor from a list of points.
- *
- * @param[in] points Range of points.
- * @param[in] distance Distance function that returns a `Filtration_value` from 2 given points.
- * @param[in] epsilon Approximation parameter. epsilon must be positive.
- *
- */
- template <typename RandomAccessPointRange, typename Distance>
- Sparse_rips_complex(const RandomAccessPointRange& points, Distance distance, double epsilon) {
- GUDHI_CHECK(epsilon > 0, "epsilon must be positive");
- std::vector<Vertex_handle> sorted_points;
- std::vector<Filtration_value> params;
- auto dist_fun = [&](Vertex_handle i, Vertex_handle j) { return distance(points[i], points[j]); };
- Ker<decltype(dist_fun)> kernel(dist_fun);
- subsampling::choose_n_farthest_points(kernel, boost::irange<Vertex_handle>(0, boost::size(points)), -1, -1,
- std::back_inserter(sorted_points), std::back_inserter(params));
- compute_sparse_graph(sorted_points, params, dist_fun, epsilon);
- }
-
- /** \brief Sparse_rips_complex constructor from a distance matrix.
- *
- * @param[in] distance_matrix Range of range of distances.
- * `distance_matrix[i][j]` returns the distance between points \f$i\f$ and
- * \f$j\f$ as long as \f$ 0 \leqslant i < j \leqslant
- * distance\_matrix.size().\f$
- * @param[in] epsilon Approximation parameter. epsilon must be positive.
- */
- template <typename DistanceMatrix>
- Sparse_rips_complex(const DistanceMatrix& distance_matrix, double epsilon)
- : Sparse_rips_complex(boost::irange<Vertex_handle>(0, boost::size(distance_matrix)),
- [&](Vertex_handle i, Vertex_handle j) { return distance_matrix[j][i]; }, epsilon) {}
-
- /** \brief Fills the simplicial complex with the sparse Rips graph and
- * expands it with all the cliques, stopping at a given maximal dimension.
- *
- * \tparam SimplicialComplexForRips must meet `SimplicialComplexForRips` concept.
- *
- * @param[in] complex the complex to fill
- * @param[in] dim_max maximal dimension of the simplicial complex.
- * @exception std::invalid_argument In debug mode, if `complex.num_vertices()` does not return 0.
- *
- */
- template <typename SimplicialComplexForRips>
- void create_complex(SimplicialComplexForRips& complex, int dim_max) {
- GUDHI_CHECK(complex.num_vertices() == 0,
- std::invalid_argument("Sparse_rips_complex::create_complex - simplicial complex is not empty"));
-
- complex.insert_graph(graph_);
- complex.expansion(dim_max);
- }
-
- private:
- // choose_n_farthest_points wants the distance function in this form...
- template <class Distance>
- struct Ker {
- typedef std::size_t Point_d; // index into point range
- Ker(Distance& d) : dist(d) {}
- // Despite the name, this is not squared...
- typedef Distance Squared_distance_d;
- Squared_distance_d& squared_distance_d_object() const { return dist; }
- Distance& dist;
- };
-
- // PointRange must be random access.
- template <typename PointRange, typename ParamRange, typename Distance>
- void compute_sparse_graph(const PointRange& points, const ParamRange& params, Distance& dist, double epsilon) {
- const int n = boost::size(points);
- graph_.~Graph();
- new (&graph_) Graph(n);
- // for(auto v : vertices(g)) // doesn't work :-(
- typename boost::graph_traits<Graph>::vertex_iterator v_i, v_e;
- for (std::tie(v_i, v_e) = vertices(graph_); v_i != v_e; ++v_i) {
- auto v = *v_i;
- // This whole loop might not be necessary, leave it until someone investigates if it is safe to remove.
- put(vertex_filtration_t(), graph_, v, 0);
- }
-
- // TODO(MG):
- // - make it parallel
- // - only test near-enough neighbors
- for (int i = 0; i < n; ++i)
- for (int j = i + 1; j < n; ++j) {
- auto&& pi = points[i];
- auto&& pj = points[j];
- auto d = dist(pi, pj);
- auto li = params[i];
- auto lj = params[j];
- GUDHI_CHECK(lj <= li, "Bad furthest point sorting");
- Filtration_value alpha;
-
- // The paper has d/2 and d-lj/e to match the Cech, but we use doubles to match the Rips
- if (d * epsilon <= 2 * lj)
- alpha = d;
- else if (d * epsilon <= li + lj && (epsilon >= 1 || d * epsilon <= lj * (1 + 1 / (1 - epsilon))))
- alpha = (d - lj / epsilon) * 2;
- else
- continue;
-
- add_edge(pi, pj, alpha, graph_);
- }
- }
-
- Graph graph_;
-};
-
-} // namespace rips_complex
-
-} // namespace Gudhi
-
-#endif // SPARSE_RIPS_COMPLEX_H_
diff --git a/include/gudhi/Strong_witness_complex.h b/include/gudhi/Strong_witness_complex.h
deleted file mode 100644
index fd6b3f38..00000000
--- a/include/gudhi/Strong_witness_complex.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Siargey Kachanovich
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef STRONG_WITNESS_COMPLEX_H_
-#define STRONG_WITNESS_COMPLEX_H_
-
-#include <gudhi/Active_witness/Active_witness.h>
-
-#include <utility>
-#include <vector>
-#include <list>
-#include <limits>
-
-namespace Gudhi {
-
-namespace witness_complex {
-
- /**
- * \private
- * \class Strong_witness_complex
- * \brief Constructs strong witness complex for a given table of nearest landmarks with respect to witnesses.
- * \ingroup witness_complex
- *
- * \tparam Nearest_landmark_table_ needs to be a range of a range of pairs of nearest landmarks and distances.
- * The class Nearest_landmark_table_::value_type must be a copiable range.
- * The range of pairs must admit a member type 'iterator'. The dereference type
- * of the pair range iterator needs to be 'std::pair<std::size_t, double>'.
- */
-template< class Nearest_landmark_table_ >
-class Strong_witness_complex {
- private:
- typedef typename Nearest_landmark_table_::value_type Nearest_landmark_range;
- typedef std::size_t Witness_id;
- typedef std::size_t Landmark_id;
- typedef std::pair<Landmark_id, double> Id_distance_pair;
- typedef Active_witness<Id_distance_pair, Nearest_landmark_range> ActiveWitness;
- typedef std::list< ActiveWitness > ActiveWitnessList;
- typedef std::vector< Landmark_id > typeVectorVertex;
- typedef std::vector<Nearest_landmark_range> Nearest_landmark_table_internal;
- typedef Landmark_id Vertex_handle;
-
- protected:
- Nearest_landmark_table_internal nearest_landmark_table_;
-
- public:
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /* @name Constructor
- */
-
- //@{
-
- Strong_witness_complex() {
- }
-
- /**
- * \brief Initializes member variables before constructing simplicial complex.
- * \details Records nearest landmark table.
- * @param[in] nearest_landmark_table needs to be a range of a range of pairs of nearest landmarks and distances.
- * The class Nearest_landmark_table_::value_type must be a copiable range.
- * The range of pairs must admit a member type 'iterator'. The dereference type
- * of the pair range iterator needs to be 'std::pair<std::size_t, double>'.
- */
- Strong_witness_complex(Nearest_landmark_table_ const & nearest_landmark_table)
- : nearest_landmark_table_(std::begin(nearest_landmark_table), std::end(nearest_landmark_table)) {
- }
-
- /** \brief Outputs the strong witness complex of relaxation 'max_alpha_square'
- * in a simplicial complex data structure.
- * \details The function returns true if the construction is successful and false otherwise.
- * @param[out] complex Simplicial complex data structure, which is a model of
- * SimplicialComplexForWitness concept.
- * @param[in] max_alpha_square Maximal squared relaxation parameter.
- * @param[in] limit_dimension Represents the maximal dimension of the simplicial complex
- * (default value = no limit).
- */
- template < typename SimplicialComplexForWitness >
- bool create_complex(SimplicialComplexForWitness& complex,
- double max_alpha_square,
- Landmark_id limit_dimension = std::numeric_limits<Landmark_id>::max()) const {
- Landmark_id complex_dim = 0;
- if (complex.num_vertices() > 0) {
- std::cerr << "Strong witness complex cannot create complex - complex is not empty.\n";
- return false;
- }
- if (max_alpha_square < 0) {
- std::cerr << "Strong witness complex cannot create complex - squared relaxation parameter must be "
- << "non-negative.\n";
- return false;
- }
- for (auto w : nearest_landmark_table_) {
- ActiveWitness aw(w);
- typeVectorVertex simplex;
- typename ActiveWitness::iterator aw_it = aw.begin();
- float lim_dist2 = aw.begin()->second + max_alpha_square;
- while ((Landmark_id)simplex.size() <= limit_dimension && aw_it != aw.end() && aw_it->second < lim_dist2) {
- simplex.push_back(aw_it->first);
- complex.insert_simplex_and_subfaces(simplex, aw_it->second - aw.begin()->second);
- aw_it++;
- }
- // continue inserting limD-faces of the following simplices
- typeVectorVertex& vertices = simplex; // 'simplex' now will be called vertices
- while (aw_it != aw.end() && aw_it->second < lim_dist2) {
- typeVectorVertex facet = {};
- add_all_faces_of_dimension(limit_dimension, vertices, vertices.begin(), aw_it,
- aw_it->second - aw.begin()->second, facet, complex);
- vertices.push_back(aw_it->first);
- aw_it++;
- }
- if ((Landmark_id)simplex.size() - 1 > complex_dim)
- complex_dim = simplex.size() - 1;
- }
- return true;
- }
-
- //@}
-
- private:
- /* \brief Adds recursively all the faces of a certain dimension dim-1 witnessed by the same witness.
- * Iterator is needed to know until how far we can take landmarks to form simplexes.
- * simplex is the prefix of the simplexes to insert.
- * The landmark pointed by aw_it is added to all formed simplices.
- */
- template < typename SimplicialComplexForWitness >
- void add_all_faces_of_dimension(Landmark_id dim,
- typeVectorVertex& vertices,
- typename typeVectorVertex::iterator curr_it,
- typename ActiveWitness::iterator aw_it,
- double filtration_value,
- typeVectorVertex& simplex,
- SimplicialComplexForWitness& sc) const {
- if (dim > 0) {
- while (curr_it != vertices.end()) {
- simplex.push_back(*curr_it);
- ++curr_it;
- add_all_faces_of_dimension(dim-1,
- vertices,
- curr_it,
- aw_it,
- filtration_value,
- simplex,
- sc);
- simplex.pop_back();
- add_all_faces_of_dimension(dim,
- vertices,
- curr_it,
- aw_it,
- filtration_value,
- simplex,
- sc);
- }
- } else if (dim == 0) {
- simplex.push_back(aw_it->first);
- sc.insert_simplex_and_subfaces(simplex, filtration_value);
- simplex.pop_back();
- }
- }
-};
-
-} // namespace witness_complex
-
-} // namespace Gudhi
-
-#endif // STRONG_WITNESS_COMPLEX_H_
diff --git a/include/gudhi/Tangential_complex.h b/include/gudhi/Tangential_complex.h
deleted file mode 100644
index d1c846cf..00000000
--- a/include/gudhi/Tangential_complex.h
+++ /dev/null
@@ -1,2008 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clement Jamin
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef TANGENTIAL_COMPLEX_H_
-#define TANGENTIAL_COMPLEX_H_
-
-#include <gudhi/Tangential_complex/config.h>
-#include <gudhi/Tangential_complex/Simplicial_complex.h>
-#include <gudhi/Tangential_complex/utilities.h>
-#include <gudhi/Kd_tree_search.h>
-#include <gudhi/console_color.h>
-#include <gudhi/Clock.h>
-#include <gudhi/Simplex_tree.h>
-
-#include <CGAL/Default.h>
-#include <CGAL/Dimension.h>
-#include <CGAL/function_objects.h> // for CGAL::Identity
-#include <CGAL/Epick_d.h>
-#include <CGAL/Regular_triangulation_traits_adapter.h>
-#include <CGAL/Regular_triangulation.h>
-#include <CGAL/Delaunay_triangulation.h>
-#include <CGAL/Combination_enumerator.h>
-#include <CGAL/point_generators_d.h>
-
-#include <Eigen/Core>
-#include <Eigen/Eigen>
-
-#include <boost/optional.hpp>
-#include <boost/iterator/transform_iterator.hpp>
-#include <boost/range/adaptor/transformed.hpp>
-#include <boost/range/counting_range.hpp>
-#include <boost/math/special_functions/factorials.hpp>
-#include <boost/container/flat_set.hpp>
-
-#include <tuple>
-#include <vector>
-#include <set>
-#include <utility>
-#include <sstream>
-#include <iostream>
-#include <limits>
-#include <algorithm>
-#include <functional>
-#include <iterator>
-#include <cmath> // for std::sqrt
-#include <string>
-#include <cstddef> // for std::size_t
-
-#ifdef GUDHI_USE_TBB
-#include <tbb/parallel_for.h>
-#include <tbb/combinable.h>
-#include <tbb/mutex.h>
-#endif
-
-// #define GUDHI_TC_EXPORT_NORMALS // Only for 3D surfaces (k=2, d=3)
-
-namespace sps = Gudhi::spatial_searching;
-
-namespace Gudhi {
-
-namespace tangential_complex {
-
-using namespace internal;
-
-class Vertex_data {
- public:
- Vertex_data(std::size_t data = (std::numeric_limits<std::size_t>::max)()) : m_data(data) {}
-
- operator std::size_t() { return m_data; }
-
- operator std::size_t() const { return m_data; }
-
- private:
- std::size_t m_data;
-};
-
-/**
- * \class Tangential_complex Tangential_complex.h gudhi/Tangential_complex.h
- * \brief Tangential complex data structure.
- *
- * \ingroup tangential_complex
- *
- * \details
- * The class Tangential_complex represents a tangential complex.
- * After the computation of the complex, an optional post-processing called perturbation can
- * be run to attempt to remove inconsistencies.
- *
- * \tparam Kernel_ requires a <a target="_blank"
- * href="http://doc.cgal.org/latest/Kernel_d/classCGAL_1_1Epick__d.html">CGAL::Epick_d</a> class, which
- * can be static if you know the ambiant dimension at compile-time, or dynamic if you don't.
- * \tparam DimensionTag can be either <a target="_blank"
- * href="http://doc.cgal.org/latest/Kernel_23/classCGAL_1_1Dimension__tag.html">Dimension_tag<d></a>
- * if you know the intrinsic dimension at compile-time,
- * or <a target="_blank"
- * href="http://doc.cgal.org/latest/Kernel_23/classCGAL_1_1Dynamic__dimension__tag.html">CGAL::Dynamic_dimension_tag</a>
- * if you don't.
- * \tparam Concurrency_tag enables sequential versus parallel computation. Possible values are `CGAL::Parallel_tag` (the
- * default) and `CGAL::Sequential_tag`. \tparam Triangulation_ is the type used for storing the local regular
- * triangulations. We highly recommend to use the default value (`CGAL::Regular_triangulation`).
- *
- */
-template <typename Kernel_, // ambiant kernel
- typename DimensionTag, // intrinsic dimension
- typename Concurrency_tag = CGAL::Parallel_tag, typename Triangulation_ = CGAL::Default>
-class Tangential_complex {
- typedef Kernel_ K;
- typedef typename K::FT FT;
- typedef typename K::Point_d Point;
- typedef typename K::Weighted_point_d Weighted_point;
- typedef typename K::Vector_d Vector;
-
- typedef typename CGAL::Default::Get<
- Triangulation_,
- CGAL::Regular_triangulation<
- CGAL::Epick_d<DimensionTag>,
- CGAL::Triangulation_data_structure<
- typename CGAL::Epick_d<DimensionTag>::Dimension,
- CGAL::Triangulation_vertex<CGAL::Regular_triangulation_traits_adapter<CGAL::Epick_d<DimensionTag> >,
- Vertex_data>,
- CGAL::Triangulation_full_cell<
- CGAL::Regular_triangulation_traits_adapter<CGAL::Epick_d<DimensionTag> > > > > >::type Triangulation;
- typedef typename Triangulation::Geom_traits Tr_traits;
- typedef typename Triangulation::Weighted_point Tr_point;
- typedef typename Tr_traits::Base::Point_d Tr_bare_point;
- typedef typename Triangulation::Vertex_handle Tr_vertex_handle;
- typedef typename Triangulation::Full_cell_handle Tr_full_cell_handle;
- typedef typename Tr_traits::Vector_d Tr_vector;
-
-#if defined(GUDHI_USE_TBB)
- typedef tbb::mutex Mutex_for_perturb;
- typedef Vector Translation_for_perturb;
- typedef std::vector<Atomic_wrapper<FT> > Weights;
-#else
- typedef Vector Translation_for_perturb;
- typedef std::vector<FT> Weights;
-#endif
- typedef std::vector<Translation_for_perturb> Translations_for_perturb;
-
- // Store a local triangulation and a handle to its center vertex
-
- struct Tr_and_VH {
- public:
- Tr_and_VH() : m_tr(NULL) {}
-
- Tr_and_VH(int dim) : m_tr(new Triangulation(dim)) {}
-
- ~Tr_and_VH() { destroy_triangulation(); }
-
- Triangulation &construct_triangulation(int dim) {
- delete m_tr;
- m_tr = new Triangulation(dim);
- return tr();
- }
-
- void destroy_triangulation() {
- delete m_tr;
- m_tr = NULL;
- }
-
- Triangulation &tr() { return *m_tr; }
-
- Triangulation const &tr() const { return *m_tr; }
-
- Tr_vertex_handle const &center_vertex() const { return m_center_vertex; }
-
- Tr_vertex_handle &center_vertex() { return m_center_vertex; }
-
- private:
- Triangulation *m_tr;
- Tr_vertex_handle m_center_vertex;
- };
-
- public:
- typedef Basis<K> Tangent_space_basis;
- typedef Basis<K> Orthogonal_space_basis;
- typedef std::vector<Tangent_space_basis> TS_container;
- typedef std::vector<Orthogonal_space_basis> OS_container;
-
- typedef std::vector<Point> Points;
-
- typedef boost::container::flat_set<std::size_t> Simplex;
- typedef std::set<Simplex> Simplex_set;
-
- private:
- typedef sps::Kd_tree_search<K, Points> Points_ds;
- typedef typename Points_ds::KNS_range KNS_range;
- typedef typename Points_ds::INS_range INS_range;
-
- typedef std::vector<Tr_and_VH> Tr_container;
- typedef std::vector<Vector> Vectors;
-
- // An Incident_simplex is the list of the vertex indices
- // except the center vertex
- typedef boost::container::flat_set<std::size_t> Incident_simplex;
- typedef std::vector<Incident_simplex> Star;
- typedef std::vector<Star> Stars_container;
-
- // For transform_iterator
-
- static const Tr_point &vertex_handle_to_point(Tr_vertex_handle vh) { return vh->point(); }
-
- template <typename P, typename VH>
- static const P &vertex_handle_to_point(VH vh) {
- return vh->point();
- }
-
- public:
- typedef internal::Simplicial_complex Simplicial_complex;
-
- /** \brief Constructor from a range of points.
- * Points are copied into the instance, and a search data structure is initialized.
- * Note the complex is not computed: `compute_tangential_complex` must be called after the creation
- * of the object.
- *
- * @param[in] points Range of points (`Point_range::value_type` must be the same as `Kernel_::Point_d`).
- * @param[in] intrinsic_dimension Intrinsic dimension of the manifold.
- * @param[in] k Kernel instance.
- */
- template <typename Point_range>
- Tangential_complex(Point_range points, int intrinsic_dimension,
-#ifdef GUDHI_TC_USE_ANOTHER_POINT_SET_FOR_TANGENT_SPACE_ESTIM
- InputIterator first_for_tse, InputIterator last_for_tse,
-#endif
- const K &k = K())
- : m_k(k),
- m_intrinsic_dim(intrinsic_dimension),
- m_ambient_dim(points.empty() ? 0 : k.point_dimension_d_object()(*points.begin())),
- m_points(points.begin(), points.end()),
- m_weights(m_points.size(), FT(0))
-#if defined(GUDHI_USE_TBB) && defined(GUDHI_TC_PERTURB_POSITION)
- ,
- m_p_perturb_mutexes(NULL)
-#endif
- ,
- m_points_ds(m_points),
- m_last_max_perturb(0.),
- m_are_tangent_spaces_computed(m_points.size(), false),
- m_tangent_spaces(m_points.size(), Tangent_space_basis())
-#ifdef GUDHI_TC_EXPORT_NORMALS
- ,
- m_orth_spaces(m_points.size(), Orthogonal_space_basis())
-#endif
-#ifdef GUDHI_TC_USE_ANOTHER_POINT_SET_FOR_TANGENT_SPACE_ESTIM
- ,
- m_points_for_tse(first_for_tse, last_for_tse),
- m_points_ds_for_tse(m_points_for_tse)
-#endif
- {
- }
-
- /// Destructor
- ~Tangential_complex() {
-#if defined(GUDHI_USE_TBB) && defined(GUDHI_TC_PERTURB_POSITION)
- delete[] m_p_perturb_mutexes;
-#endif
- }
-
- /// Returns the intrinsic dimension of the manifold.
- int intrinsic_dimension() const { return m_intrinsic_dim; }
-
- /// Returns the ambient dimension.
- int ambient_dimension() const { return m_ambient_dim; }
-
- Points const &points() const { return m_points; }
-
- /** \brief Returns the point corresponding to the vertex given as parameter.
- *
- * @param[in] vertex Vertex handle of the point to retrieve.
- * @return The point found.
- */
- Point get_point(std::size_t vertex) const { return m_points[vertex]; }
-
- /** \brief Returns the perturbed position of the point corresponding to the vertex given as parameter.
- *
- * @param[in] vertex Vertex handle of the point to retrieve.
- * @return The perturbed position of the point found.
- */
- Point get_perturbed_point(std::size_t vertex) const { return compute_perturbed_point(vertex); }
-
- /// Returns the number of vertices.
-
- std::size_t number_of_vertices() const { return m_points.size(); }
-
- void set_weights(const Weights &weights) { m_weights = weights; }
-
- void set_tangent_planes(const TS_container &tangent_spaces
-#ifdef GUDHI_TC_EXPORT_NORMALS
- ,
- const OS_container &orthogonal_spaces
-#endif
- ) {
-#ifdef GUDHI_TC_EXPORT_NORMALS
- GUDHI_CHECK(m_points.size() == tangent_spaces.size() && m_points.size() == orthogonal_spaces.size(),
- std::logic_error("Wrong sizes"));
-#else
- GUDHI_CHECK(m_points.size() == tangent_spaces.size(), std::logic_error("Wrong sizes"));
-#endif
- m_tangent_spaces = tangent_spaces;
-#ifdef GUDHI_TC_EXPORT_NORMALS
- m_orth_spaces = orthogonal_spaces;
-#endif
- for (std::size_t i = 0; i < m_points.size(); ++i) m_are_tangent_spaces_computed[i] = true;
- }
-
- /// Computes the tangential complex.
- void compute_tangential_complex() {
-#ifdef GUDHI_TC_PERFORM_EXTRA_CHECKS
- std::cerr << red << "WARNING: GUDHI_TC_PERFORM_EXTRA_CHECKS is defined. "
- << "Computation might be slower than usual.\n"
- << white;
-#endif
-
-#if defined(GUDHI_TC_PROFILING) && defined(GUDHI_USE_TBB)
- Gudhi::Clock t;
-#endif
-
- // We need to do that because we don't want the container to copy the
- // already-computed triangulations (while resizing) since it would
- // invalidate the vertex handles stored beside the triangulations
- m_triangulations.resize(m_points.size());
- m_stars.resize(m_points.size());
- m_squared_star_spheres_radii_incl_margin.resize(m_points.size(), FT(-1));
-#ifdef GUDHI_TC_PERTURB_POSITION
- if (m_points.empty())
- m_translations.clear();
- else
- m_translations.resize(m_points.size(), m_k.construct_vector_d_object()(m_ambient_dim));
-#if defined(GUDHI_USE_TBB)
- delete[] m_p_perturb_mutexes;
- m_p_perturb_mutexes = new Mutex_for_perturb[m_points.size()];
-#endif
-#endif
-
-#ifdef GUDHI_USE_TBB
- // Parallel
- if (boost::is_convertible<Concurrency_tag, CGAL::Parallel_tag>::value) {
- tbb::parallel_for(tbb::blocked_range<size_t>(0, m_points.size()), Compute_tangent_triangulation(*this));
- } else {
-#endif // GUDHI_USE_TBB
- // Sequential
- for (std::size_t i = 0; i < m_points.size(); ++i) compute_tangent_triangulation(i);
-#ifdef GUDHI_USE_TBB
- }
-#endif // GUDHI_USE_TBB
-
-#if defined(GUDHI_TC_PROFILING) && defined(GUDHI_USE_TBB)
- t.end();
- std::cerr << "Tangential complex computed in " << t.num_seconds() << " seconds.\n";
-#endif
- }
-
- /// \brief Type returned by `Tangential_complex::fix_inconsistencies_using_perturbation`.
- struct Fix_inconsistencies_info {
- /// `true` if all inconsistencies could be removed, `false` if the time limit has been reached before
- bool success = false;
- /// number of steps performed
- unsigned int num_steps = 0;
- /// initial number of inconsistent stars
- std::size_t initial_num_inconsistent_stars = 0;
- /// best number of inconsistent stars during the process
- std::size_t best_num_inconsistent_stars = 0;
- /// final number of inconsistent stars
- std::size_t final_num_inconsistent_stars = 0;
- };
-
- /** \brief Attempts to fix inconsistencies by perturbing the point positions.
- *
- * @param[in] max_perturb Maximum length of the translations used by the perturbation.
- * @param[in] time_limit Time limit in seconds. If -1, no time limit is set.
- */
- Fix_inconsistencies_info fix_inconsistencies_using_perturbation(double max_perturb, double time_limit = -1.) {
- Fix_inconsistencies_info info;
-
- if (time_limit == 0.) return info;
-
- Gudhi::Clock t;
-
-#ifdef GUDHI_TC_SHOW_DETAILED_STATS_FOR_INCONSISTENCIES
- std::tuple<std::size_t, std::size_t, std::size_t> stats_before = number_of_inconsistent_simplices(false);
-
- if (std::get<1>(stats_before) == 0) {
-#ifdef DEBUG_TRACES
- std::cerr << "Nothing to fix.\n";
-#endif
- info.success = false;
- return info;
- }
-#endif // GUDHI_TC_SHOW_DETAILED_STATS_FOR_INCONSISTENCIES
-
- m_last_max_perturb = max_perturb;
-
- bool done = false;
- info.best_num_inconsistent_stars = m_triangulations.size();
- info.num_steps = 0;
- while (!done) {
-#ifdef GUDHI_TC_SHOW_DETAILED_STATS_FOR_INCONSISTENCIES
- std::cerr << "\nBefore fix step:\n"
- << " * Total number of simplices in stars (incl. duplicates): " << std::get<0>(stats_before) << "\n"
- << " * Num inconsistent simplices in stars (incl. duplicates): " << red << std::get<1>(stats_before)
- << white << " (" << 100. * std::get<1>(stats_before) / std::get<0>(stats_before) << "%)\n"
- << " * Number of stars containing inconsistent simplices: " << red << std::get<2>(stats_before)
- << white << " (" << 100. * std::get<2>(stats_before) / m_points.size() << "%)\n";
-#endif
-
-#if defined(DEBUG_TRACES) || defined(GUDHI_TC_PROFILING)
- std::cerr << yellow << "\nAttempt to fix inconsistencies using perturbations - step #" << info.num_steps + 1
- << "... " << white;
-#endif
-
- std::size_t num_inconsistent_stars = 0;
- std::vector<std::size_t> updated_points;
-
-#ifdef GUDHI_TC_PROFILING
- Gudhi::Clock t_fix_step;
-#endif
-
- // Parallel
-#if defined(GUDHI_USE_TBB)
- if (boost::is_convertible<Concurrency_tag, CGAL::Parallel_tag>::value) {
- tbb::combinable<std::size_t> num_inconsistencies;
- tbb::combinable<std::vector<std::size_t> > tls_updated_points;
- tbb::parallel_for(tbb::blocked_range<size_t>(0, m_triangulations.size()),
- Try_to_solve_inconsistencies_in_a_local_triangulation(*this, max_perturb, num_inconsistencies,
- tls_updated_points));
- num_inconsistent_stars = num_inconsistencies.combine(std::plus<std::size_t>());
- updated_points =
- tls_updated_points.combine([](std::vector<std::size_t> const &x, std::vector<std::size_t> const &y) {
- std::vector<std::size_t> res;
- res.reserve(x.size() + y.size());
- res.insert(res.end(), x.begin(), x.end());
- res.insert(res.end(), y.begin(), y.end());
- return res;
- });
- } else {
-#endif // GUDHI_USE_TBB
- // Sequential
- for (std::size_t i = 0; i < m_triangulations.size(); ++i) {
- num_inconsistent_stars +=
- try_to_solve_inconsistencies_in_a_local_triangulation(i, max_perturb, std::back_inserter(updated_points));
- }
-#if defined(GUDHI_USE_TBB)
- }
-#endif // GUDHI_USE_TBB
-
-#ifdef GUDHI_TC_PROFILING
- t_fix_step.end();
-#endif
-
-#if defined(GUDHI_TC_SHOW_DETAILED_STATS_FOR_INCONSISTENCIES) || defined(DEBUG_TRACES)
- std::cerr << "\nEncountered during fix:\n"
- << " * Num stars containing inconsistent simplices: " << red << num_inconsistent_stars << white << " ("
- << 100. * num_inconsistent_stars / m_points.size() << "%)\n";
-#endif
-
-#ifdef GUDHI_TC_PROFILING
- std::cerr << yellow << "done in " << t_fix_step.num_seconds() << " seconds.\n" << white;
-#elif defined(DEBUG_TRACES)
- std::cerr << yellow << "done.\n" << white;
-#endif
-
- if (num_inconsistent_stars > 0) refresh_tangential_complex(updated_points);
-
-#ifdef GUDHI_TC_PERFORM_EXTRA_CHECKS
- // Confirm that all stars were actually refreshed
- std::size_t num_inc_1 = std::get<1>(number_of_inconsistent_simplices(false));
- refresh_tangential_complex();
- std::size_t num_inc_2 = std::get<1>(number_of_inconsistent_simplices(false));
- if (num_inc_1 != num_inc_2)
- std::cerr << red << "REFRESHMENT CHECK: FAILED. (" << num_inc_1 << " vs " << num_inc_2 << ")\n" << white;
- else
- std::cerr << green << "REFRESHMENT CHECK: PASSED.\n" << white;
-#endif
-
-#ifdef GUDHI_TC_SHOW_DETAILED_STATS_FOR_INCONSISTENCIES
- std::tuple<std::size_t, std::size_t, std::size_t> stats_after = number_of_inconsistent_simplices(false);
-
- std::cerr << "\nAfter fix:\n"
- << " * Total number of simplices in stars (incl. duplicates): " << std::get<0>(stats_after) << "\n"
- << " * Num inconsistent simplices in stars (incl. duplicates): " << red << std::get<1>(stats_after)
- << white << " (" << 100. * std::get<1>(stats_after) / std::get<0>(stats_after) << "%)\n"
- << " * Number of stars containing inconsistent simplices: " << red << std::get<2>(stats_after) << white
- << " (" << 100. * std::get<2>(stats_after) / m_points.size() << "%)\n";
-
- stats_before = stats_after;
-#endif
-
- if (info.num_steps == 0) info.initial_num_inconsistent_stars = num_inconsistent_stars;
-
- if (num_inconsistent_stars < info.best_num_inconsistent_stars)
- info.best_num_inconsistent_stars = num_inconsistent_stars;
-
- info.final_num_inconsistent_stars = num_inconsistent_stars;
-
- done = (num_inconsistent_stars == 0);
- if (!done) {
- ++info.num_steps;
- if (time_limit > 0. && t.num_seconds() > time_limit) {
-#ifdef DEBUG_TRACES
- std::cerr << red << "Time limit reached.\n" << white;
-#endif
- info.success = false;
- return info;
- }
- }
- }
-
-#ifdef DEBUG_TRACES
- std::cerr << green << "Fixed!\n" << white;
-#endif
- info.success = true;
- return info;
- }
-
- /// \brief Type returned by `Tangential_complex::number_of_inconsistent_simplices`.
- struct Num_inconsistencies {
- /// Total number of simplices in stars (including duplicates that appear in several stars)
- std::size_t num_simplices = 0;
- /// Number of inconsistent simplices
- std::size_t num_inconsistent_simplices = 0;
- /// Number of stars containing at least one inconsistent simplex
- std::size_t num_inconsistent_stars = 0;
- };
-
- /// Returns the number of inconsistencies
- /// @param[in] verbose If true, outputs a message into `std::cerr`.
-
- Num_inconsistencies number_of_inconsistent_simplices(
-#ifdef DEBUG_TRACES
- bool verbose = true
-#else
- bool verbose = false
-#endif
- ) const {
- Num_inconsistencies stats;
-
- // For each triangulation
- for (std::size_t idx = 0; idx < m_points.size(); ++idx) {
- bool is_star_inconsistent = false;
-
- // For each cell
- Star::const_iterator it_inc_simplex = m_stars[idx].begin();
- Star::const_iterator it_inc_simplex_end = m_stars[idx].end();
- for (; it_inc_simplex != it_inc_simplex_end; ++it_inc_simplex) {
- // Don't check infinite cells
- if (is_infinite(*it_inc_simplex)) continue;
-
- Simplex c = *it_inc_simplex;
- c.insert(idx); // Add the missing index
-
- if (!is_simplex_consistent(c)) {
- ++stats.num_inconsistent_simplices;
- is_star_inconsistent = true;
- }
-
- ++stats.num_simplices;
- }
- stats.num_inconsistent_stars += is_star_inconsistent;
- }
-
- if (verbose) {
- std::cerr << "\n==========================================================\n"
- << "Inconsistencies:\n"
- << " * Total number of simplices in stars (incl. duplicates): " << stats.num_simplices << "\n"
- << " * Number of inconsistent simplices in stars (incl. duplicates): "
- << stats.num_inconsistent_simplices << " ("
- << 100. * stats.num_inconsistent_simplices / stats.num_simplices << "%)\n"
- << " * Number of stars containing inconsistent simplices: " << stats.num_inconsistent_stars << " ("
- << 100. * stats.num_inconsistent_stars / m_points.size() << "%)\n"
- << "==========================================================\n";
- }
-
- return stats;
- }
-
- /** \brief Exports the complex into a Simplex_tree.
- *
- * \tparam Simplex_tree_ must be a `Simplex_tree`.
- *
- * @param[out] tree The result, where each `Vertex_handle` is the index of the
- * corresponding point in the range provided to the constructor (it can also be
- * retrieved through the `Tangential_complex::get_point` function.
- * @param[in] export_inconsistent_simplices Also export inconsistent simplices or not?
- * @return The maximal dimension of the simplices.
- */
- template <typename Simplex_tree_>
- int create_complex(Simplex_tree_ &tree,
- bool export_inconsistent_simplices = true
- /// \cond ADVANCED_PARAMETERS
- ,
- bool export_infinite_simplices = false, Simplex_set *p_inconsistent_simplices = NULL
- /// \endcond
- ) const {
-#if defined(DEBUG_TRACES) || defined(GUDHI_TC_PROFILING)
- std::cerr << yellow << "\nExporting the TC as a Simplex_tree... " << white;
-#endif
-#ifdef GUDHI_TC_PROFILING
- Gudhi::Clock t;
-#endif
-
- int max_dim = -1;
-
- // For each triangulation
- for (std::size_t idx = 0; idx < m_points.size(); ++idx) {
- // For each cell of the star
- Star::const_iterator it_inc_simplex = m_stars[idx].begin();
- Star::const_iterator it_inc_simplex_end = m_stars[idx].end();
- for (; it_inc_simplex != it_inc_simplex_end; ++it_inc_simplex) {
- Simplex c = *it_inc_simplex;
-
- // Don't export infinite cells
- if (!export_infinite_simplices && is_infinite(c)) continue;
-
- if (!export_inconsistent_simplices && !is_simplex_consistent(c)) continue;
-
- if (static_cast<int>(c.size()) > max_dim) max_dim = static_cast<int>(c.size());
- // Add the missing center vertex
- c.insert(idx);
-
- // Try to insert the simplex
- bool inserted = tree.insert_simplex_and_subfaces(c).second;
-
- // Inconsistent?
- if (p_inconsistent_simplices && inserted && !is_simplex_consistent(c)) {
- p_inconsistent_simplices->insert(c);
- }
- }
- }
-
-#ifdef GUDHI_TC_PROFILING
- t.end();
- std::cerr << yellow << "done in " << t.num_seconds() << " seconds.\n" << white;
-#elif defined(DEBUG_TRACES)
- std::cerr << yellow << "done.\n" << white;
-#endif
-
- return max_dim;
- }
-
- // First clears the complex then exports the TC into it
- // Returns the max dimension of the simplices
- // check_lower_and_higher_dim_simplices : 0 (false), 1 (true), 2 (auto)
- // If the check is enabled, the function:
- // - won't insert the simplex if it is already in a higher dim simplex
- // - will erase any lower-dim simplices that are faces of the new simplex
- // "auto" (= 2) will enable the check as a soon as it encounters a
- // simplex whose dimension is different from the previous ones.
- // N.B.: The check is quite expensive.
-
- int create_complex(Simplicial_complex &complex, bool export_inconsistent_simplices = true,
- bool export_infinite_simplices = false, int check_lower_and_higher_dim_simplices = 2,
- Simplex_set *p_inconsistent_simplices = NULL) const {
-#if defined(DEBUG_TRACES) || defined(GUDHI_TC_PROFILING)
- std::cerr << yellow << "\nExporting the TC as a Simplicial_complex... " << white;
-#endif
-#ifdef GUDHI_TC_PROFILING
- Gudhi::Clock t;
-#endif
-
- int max_dim = -1;
- complex.clear();
-
- // For each triangulation
- for (std::size_t idx = 0; idx < m_points.size(); ++idx) {
- // For each cell of the star
- Star::const_iterator it_inc_simplex = m_stars[idx].begin();
- Star::const_iterator it_inc_simplex_end = m_stars[idx].end();
- for (; it_inc_simplex != it_inc_simplex_end; ++it_inc_simplex) {
- Simplex c = *it_inc_simplex;
-
- // Don't export infinite cells
- if (!export_infinite_simplices && is_infinite(c)) continue;
-
- if (!export_inconsistent_simplices && !is_simplex_consistent(c)) continue;
-
- // Unusual simplex dim?
- if (check_lower_and_higher_dim_simplices == 2 && max_dim != -1 && static_cast<int>(c.size()) != max_dim) {
- // Let's activate the check
- std::cerr << red
- << "Info: check_lower_and_higher_dim_simplices ACTIVATED. "
- "Export might be take some time...\n"
- << white;
- check_lower_and_higher_dim_simplices = 1;
- }
-
- if (static_cast<int>(c.size()) > max_dim) max_dim = static_cast<int>(c.size());
- // Add the missing center vertex
- c.insert(idx);
-
- // Try to insert the simplex
- bool added = complex.add_simplex(c, check_lower_and_higher_dim_simplices == 1);
-
- // Inconsistent?
- if (p_inconsistent_simplices && added && !is_simplex_consistent(c)) {
- p_inconsistent_simplices->insert(c);
- }
- }
- }
-
-#ifdef GUDHI_TC_PROFILING
- t.end();
- std::cerr << yellow << "done in " << t.num_seconds() << " seconds.\n" << white;
-#elif defined(DEBUG_TRACES)
- std::cerr << yellow << "done.\n" << white;
-#endif
-
- return max_dim;
- }
-
- template <typename ProjectionFunctor = CGAL::Identity<Point> >
- std::ostream &export_to_off(const Simplicial_complex &complex, std::ostream &os,
- Simplex_set const *p_simpl_to_color_in_red = NULL,
- Simplex_set const *p_simpl_to_color_in_green = NULL,
- Simplex_set const *p_simpl_to_color_in_blue = NULL,
- ProjectionFunctor const &point_projection = ProjectionFunctor()) const {
- return export_to_off(os, false, p_simpl_to_color_in_red, p_simpl_to_color_in_green, p_simpl_to_color_in_blue,
- &complex, point_projection);
- }
-
- template <typename ProjectionFunctor = CGAL::Identity<Point> >
- std::ostream &export_to_off(std::ostream &os, bool color_inconsistencies = false,
- Simplex_set const *p_simpl_to_color_in_red = NULL,
- Simplex_set const *p_simpl_to_color_in_green = NULL,
- Simplex_set const *p_simpl_to_color_in_blue = NULL,
- const Simplicial_complex *p_complex = NULL,
- ProjectionFunctor const &point_projection = ProjectionFunctor()) const {
- if (m_points.empty()) return os;
-
- if (m_ambient_dim < 2) {
- std::cerr << "Error: export_to_off => ambient dimension should be >= 2.\n";
- os << "Error: export_to_off => ambient dimension should be >= 2.\n";
- return os;
- }
- if (m_ambient_dim > 3) {
- std::cerr << "Warning: export_to_off => ambient dimension should be "
- "<= 3. Only the first 3 coordinates will be exported.\n";
- }
-
- if (m_intrinsic_dim < 1 || m_intrinsic_dim > 3) {
- std::cerr << "Error: export_to_off => intrinsic dimension should be "
- "between 1 and 3.\n";
- os << "Error: export_to_off => intrinsic dimension should be "
- "between 1 and 3.\n";
- return os;
- }
-
- std::stringstream output;
- std::size_t num_simplices, num_vertices;
- export_vertices_to_off(output, num_vertices, false, point_projection);
- if (p_complex) {
- export_simplices_to_off(*p_complex, output, num_simplices, p_simpl_to_color_in_red, p_simpl_to_color_in_green,
- p_simpl_to_color_in_blue);
- } else {
- export_simplices_to_off(output, num_simplices, color_inconsistencies, p_simpl_to_color_in_red,
- p_simpl_to_color_in_green, p_simpl_to_color_in_blue);
- }
-
-#ifdef GUDHI_TC_EXPORT_NORMALS
- os << "N";
-#endif
-
- os << "OFF \n"
- << num_vertices << " " << num_simplices << " "
- << "0 \n"
- << output.str();
-
- return os;
- }
-
- private:
- void refresh_tangential_complex() {
-#if defined(DEBUG_TRACES) || defined(GUDHI_TC_PROFILING)
- std::cerr << yellow << "\nRefreshing TC... " << white;
-#endif
-
-#ifdef GUDHI_TC_PROFILING
- Gudhi::Clock t;
-#endif
-#ifdef GUDHI_USE_TBB
- // Parallel
- if (boost::is_convertible<Concurrency_tag, CGAL::Parallel_tag>::value) {
- tbb::parallel_for(tbb::blocked_range<size_t>(0, m_points.size()), Compute_tangent_triangulation(*this));
- } else {
-#endif // GUDHI_USE_TBB
- // Sequential
- for (std::size_t i = 0; i < m_points.size(); ++i) compute_tangent_triangulation(i);
-#ifdef GUDHI_USE_TBB
- }
-#endif // GUDHI_USE_TBB
-
-#ifdef GUDHI_TC_PROFILING
- t.end();
- std::cerr << yellow << "done in " << t.num_seconds() << " seconds.\n" << white;
-#elif defined(DEBUG_TRACES)
- std::cerr << yellow << "done.\n" << white;
-#endif
- }
-
- // If the list of perturbed points is provided, it is much faster
- template <typename Point_indices_range>
- void refresh_tangential_complex(Point_indices_range const &perturbed_points_indices) {
-#if defined(DEBUG_TRACES) || defined(GUDHI_TC_PROFILING)
- std::cerr << yellow << "\nRefreshing TC... " << white;
-#endif
-
-#ifdef GUDHI_TC_PROFILING
- Gudhi::Clock t;
-#endif
-
- // ANN tree containing only the perturbed points
- Points_ds updated_pts_ds(m_points, perturbed_points_indices);
-
-#ifdef GUDHI_USE_TBB
- // Parallel
- if (boost::is_convertible<Concurrency_tag, CGAL::Parallel_tag>::value) {
- tbb::parallel_for(tbb::blocked_range<size_t>(0, m_points.size()),
- Refresh_tangent_triangulation(*this, updated_pts_ds));
- } else {
-#endif // GUDHI_USE_TBB
- // Sequential
- for (std::size_t i = 0; i < m_points.size(); ++i) refresh_tangent_triangulation(i, updated_pts_ds);
-#ifdef GUDHI_USE_TBB
- }
-#endif // GUDHI_USE_TBB
-
-#ifdef GUDHI_TC_PROFILING
- t.end();
- std::cerr << yellow << "done in " << t.num_seconds() << " seconds.\n" << white;
-#elif defined(DEBUG_TRACES)
- std::cerr << yellow << "done.\n" << white;
-#endif
- }
-
- void export_inconsistent_stars_to_OFF_files(std::string const &filename_base) const {
- // For each triangulation
- for (std::size_t idx = 0; idx < m_points.size(); ++idx) {
- // We build a SC along the way in case it's inconsistent
- Simplicial_complex sc;
- // For each cell
- bool is_inconsistent = false;
- Star::const_iterator it_inc_simplex = m_stars[idx].begin();
- Star::const_iterator it_inc_simplex_end = m_stars[idx].end();
- for (; it_inc_simplex != it_inc_simplex_end; ++it_inc_simplex) {
- // Skip infinite cells
- if (is_infinite(*it_inc_simplex)) continue;
-
- Simplex c = *it_inc_simplex;
- c.insert(idx); // Add the missing index
-
- sc.add_simplex(c);
-
- // If we do not already know this star is inconsistent, test it
- if (!is_inconsistent && !is_simplex_consistent(c)) is_inconsistent = true;
- }
-
- if (is_inconsistent) {
- // Export star to OFF file
- std::stringstream output_filename;
- output_filename << filename_base << "_" << idx << ".off";
- std::ofstream off_stream(output_filename.str().c_str());
- export_to_off(sc, off_stream);
- }
- }
- }
-
- class Compare_distance_to_ref_point {
- public:
- Compare_distance_to_ref_point(Point const &ref, K const &k) : m_ref(ref), m_k(k) {}
-
- bool operator()(Point const &p1, Point const &p2) {
- typename K::Squared_distance_d sqdist = m_k.squared_distance_d_object();
- return sqdist(p1, m_ref) < sqdist(p2, m_ref);
- }
-
- private:
- Point const &m_ref;
- K const &m_k;
- };
-
-#ifdef GUDHI_USE_TBB
- // Functor for compute_tangential_complex function
- class Compute_tangent_triangulation {
- Tangential_complex &m_tc;
-
- public:
- // Constructor
- Compute_tangent_triangulation(Tangential_complex &tc) : m_tc(tc) {}
-
- // Constructor
- Compute_tangent_triangulation(const Compute_tangent_triangulation &ctt) : m_tc(ctt.m_tc) {}
-
- // operator()
- void operator()(const tbb::blocked_range<size_t> &r) const {
- for (size_t i = r.begin(); i != r.end(); ++i) m_tc.compute_tangent_triangulation(i);
- }
- };
-
- // Functor for refresh_tangential_complex function
- class Refresh_tangent_triangulation {
- Tangential_complex &m_tc;
- Points_ds const &m_updated_pts_ds;
-
- public:
- // Constructor
- Refresh_tangent_triangulation(Tangential_complex &tc, Points_ds const &updated_pts_ds)
- : m_tc(tc), m_updated_pts_ds(updated_pts_ds) {}
-
- // Constructor
- Refresh_tangent_triangulation(const Refresh_tangent_triangulation &ctt)
- : m_tc(ctt.m_tc), m_updated_pts_ds(ctt.m_updated_pts_ds) {}
-
- // operator()
- void operator()(const tbb::blocked_range<size_t> &r) const {
- for (size_t i = r.begin(); i != r.end(); ++i) m_tc.refresh_tangent_triangulation(i, m_updated_pts_ds);
- }
- };
-#endif // GUDHI_USE_TBB
-
- bool is_infinite(Simplex const &s) const { return *s.rbegin() == (std::numeric_limits<std::size_t>::max)(); }
-
- // Output: "triangulation" is a Regular Triangulation containing at least the
- // star of "center_pt"
- // Returns the handle of the center vertex
- Tr_vertex_handle compute_star(std::size_t i, const Point &center_pt, const Tangent_space_basis &tsb,
- Triangulation &triangulation, bool verbose = false) {
- int tangent_space_dim = tsb.dimension();
- const Tr_traits &local_tr_traits = triangulation.geom_traits();
-
- // Kernel functor & objects
- typename K::Squared_distance_d k_sqdist = m_k.squared_distance_d_object();
-
- // Triangulation's traits functor & objects
- typename Tr_traits::Compute_weight_d point_weight = local_tr_traits.compute_weight_d_object();
- typename Tr_traits::Power_center_d power_center = local_tr_traits.power_center_d_object();
-
- //***************************************************
- // Build a minimal triangulation in the tangent space
- // (we only need the star of p)
- //***************************************************
-
- // Insert p
- Tr_point proj_wp;
- if (i == tsb.origin()) {
- // Insert {(0, 0, 0...), m_weights[i]}
- proj_wp = local_tr_traits.construct_weighted_point_d_object()(
- local_tr_traits.construct_point_d_object()(tangent_space_dim, CGAL::ORIGIN), m_weights[i]);
- } else {
- const Weighted_point &wp = compute_perturbed_weighted_point(i);
- proj_wp = project_point_and_compute_weight(wp, tsb, local_tr_traits);
- }
-
- Tr_vertex_handle center_vertex = triangulation.insert(proj_wp);
- center_vertex->data() = i;
- if (verbose) std::cerr << "* Inserted point #" << i << "\n";
-
-#ifdef GUDHI_TC_VERY_VERBOSE
- std::size_t num_attempts_to_insert_points = 1;
- std::size_t num_inserted_points = 1;
-#endif
- // const int NUM_NEIGHBORS = 150;
- // KNS_range ins_range = m_points_ds.k_nearest_neighbors(center_pt, NUM_NEIGHBORS);
- INS_range ins_range = m_points_ds.incremental_nearest_neighbors(center_pt);
-
- // While building the local triangulation, we keep the radius
- // of the sphere "star sphere" centered at "center_vertex"
- // and which contains all the
- // circumspheres of the star of "center_vertex"
- boost::optional<FT> squared_star_sphere_radius_plus_margin = boost::make_optional(false, FT());
- // This is the strange way boost is recommending to get rid of "may be used uninitialized in this function".
- // Former code was :
- // boost::optional<FT> squared_star_sphere_radius_plus_margin;
-
- // Insert points until we find a point which is outside "star sphere"
- for (auto nn_it = ins_range.begin(); nn_it != ins_range.end(); ++nn_it) {
- std::size_t neighbor_point_idx = nn_it->first;
-
- // ith point = p, which is already inserted
- if (neighbor_point_idx != i) {
- // No need to lock the Mutex_for_perturb here since this will not be
- // called while other threads are perturbing the positions
- Point neighbor_pt;
- FT neighbor_weight;
- compute_perturbed_weighted_point(neighbor_point_idx, neighbor_pt, neighbor_weight);
-
- if (squared_star_sphere_radius_plus_margin &&
- k_sqdist(center_pt, neighbor_pt) > *squared_star_sphere_radius_plus_margin)
- break;
-
- Tr_point proj_pt = project_point_and_compute_weight(neighbor_pt, neighbor_weight, tsb, local_tr_traits);
-
-#ifdef GUDHI_TC_VERY_VERBOSE
- ++num_attempts_to_insert_points;
-#endif
-
- Tr_vertex_handle vh = triangulation.insert_if_in_star(proj_pt, center_vertex);
- // Tr_vertex_handle vh = triangulation.insert(proj_pt);
- if (vh != Tr_vertex_handle() && vh->data() == (std::numeric_limits<std::size_t>::max)()) {
-#ifdef GUDHI_TC_VERY_VERBOSE
- ++num_inserted_points;
-#endif
- if (verbose) std::cerr << "* Inserted point #" << neighbor_point_idx << "\n";
-
- vh->data() = neighbor_point_idx;
-
- // Let's recompute squared_star_sphere_radius_plus_margin
- if (triangulation.current_dimension() >= tangent_space_dim) {
- squared_star_sphere_radius_plus_margin = boost::none;
- // Get the incident cells and look for the biggest circumsphere
- std::vector<Tr_full_cell_handle> incident_cells;
- triangulation.incident_full_cells(center_vertex, std::back_inserter(incident_cells));
- for (typename std::vector<Tr_full_cell_handle>::iterator cit = incident_cells.begin();
- cit != incident_cells.end(); ++cit) {
- Tr_full_cell_handle cell = *cit;
- if (triangulation.is_infinite(cell)) {
- squared_star_sphere_radius_plus_margin = boost::none;
- break;
- } else {
- // Note that this uses the perturbed point since it uses
- // the points of the local triangulation
- Tr_point c =
- power_center(boost::make_transform_iterator(cell->vertices_begin(),
- vertex_handle_to_point<Tr_point, Tr_vertex_handle>),
- boost::make_transform_iterator(cell->vertices_end(),
- vertex_handle_to_point<Tr_point, Tr_vertex_handle>));
-
- FT sq_power_sphere_diam = 4 * point_weight(c);
-
- if (!squared_star_sphere_radius_plus_margin ||
- sq_power_sphere_diam > *squared_star_sphere_radius_plus_margin) {
- squared_star_sphere_radius_plus_margin = sq_power_sphere_diam;
- }
- }
- }
-
- // Let's add the margin, now
- // The value depends on whether we perturb weight or position
- if (squared_star_sphere_radius_plus_margin) {
- // "2*m_last_max_perturb" because both points can be perturbed
- squared_star_sphere_radius_plus_margin =
- CGAL::square(std::sqrt(*squared_star_sphere_radius_plus_margin) + 2 * m_last_max_perturb);
-
- // Save it in `m_squared_star_spheres_radii_incl_margin`
- m_squared_star_spheres_radii_incl_margin[i] = *squared_star_sphere_radius_plus_margin;
- } else {
- m_squared_star_spheres_radii_incl_margin[i] = FT(-1);
- }
- }
- }
- }
- }
-
- return center_vertex;
- }
-
- void refresh_tangent_triangulation(std::size_t i, Points_ds const &updated_pts_ds, bool verbose = false) {
- if (verbose) std::cerr << "** Refreshing tangent tri #" << i << " **\n";
-
- if (m_squared_star_spheres_radii_incl_margin[i] == FT(-1)) return compute_tangent_triangulation(i, verbose);
-
- Point center_point = compute_perturbed_point(i);
- // Among updated point, what is the closer from our center point?
- std::size_t closest_pt_index = updated_pts_ds.k_nearest_neighbors(center_point, 1, false).begin()->first;
-
- typename K::Construct_weighted_point_d k_constr_wp = m_k.construct_weighted_point_d_object();
- typename K::Power_distance_d k_power_dist = m_k.power_distance_d_object();
-
- // Construct a weighted point equivalent to the star sphere
- Weighted_point star_sphere = k_constr_wp(compute_perturbed_point(i), m_squared_star_spheres_radii_incl_margin[i]);
- Weighted_point closest_updated_point = compute_perturbed_weighted_point(closest_pt_index);
-
- // Is the "closest point" inside our star sphere?
- if (k_power_dist(star_sphere, closest_updated_point) <= FT(0)) compute_tangent_triangulation(i, verbose);
- }
-
- void compute_tangent_triangulation(std::size_t i, bool verbose = false) {
- if (verbose) std::cerr << "** Computing tangent tri #" << i << " **\n";
- // std::cerr << "***********************************************\n";
-
- // No need to lock the mutex here since this will not be called while
- // other threads are perturbing the positions
- const Point center_pt = compute_perturbed_point(i);
- Tangent_space_basis &tsb = m_tangent_spaces[i];
-
- // Estimate the tangent space
- if (!m_are_tangent_spaces_computed[i]) {
-#ifdef GUDHI_TC_EXPORT_NORMALS
- tsb = compute_tangent_space(center_pt, i, true /*normalize*/, &m_orth_spaces[i]);
-#else
- tsb = compute_tangent_space(center_pt, i);
-#endif
- }
-
-#if defined(GUDHI_TC_PROFILING) && defined(GUDHI_TC_VERY_VERBOSE)
- Gudhi::Clock t;
-#endif
- int tangent_space_dim = tangent_basis_dim(i);
- Triangulation &local_tr = m_triangulations[i].construct_triangulation(tangent_space_dim);
-
- m_triangulations[i].center_vertex() = compute_star(i, center_pt, tsb, local_tr, verbose);
-
-#if defined(GUDHI_TC_PROFILING) && defined(GUDHI_TC_VERY_VERBOSE)
- t.end();
- std::cerr << " - triangulation construction: " << t.num_seconds() << " s.\n";
- t.reset();
-#endif
-
-#ifdef GUDHI_TC_VERY_VERBOSE
- std::cerr << "Inserted " << num_inserted_points << " points / " << num_attempts_to_insert_points
- << " attemps to compute the star\n";
-#endif
-
- update_star(i);
-
-#if defined(GUDHI_TC_PROFILING) && defined(GUDHI_TC_VERY_VERBOSE)
- t.end();
- std::cerr << " - update_star: " << t.num_seconds() << " s.\n";
-#endif
- }
-
- // Updates m_stars[i] directly from m_triangulations[i]
-
- void update_star(std::size_t i) {
- Star &star = m_stars[i];
- star.clear();
- Triangulation &local_tr = m_triangulations[i].tr();
- Tr_vertex_handle center_vertex = m_triangulations[i].center_vertex();
- int cur_dim_plus_1 = local_tr.current_dimension() + 1;
-
- std::vector<Tr_full_cell_handle> incident_cells;
- local_tr.incident_full_cells(center_vertex, std::back_inserter(incident_cells));
-
- typename std::vector<Tr_full_cell_handle>::const_iterator it_c = incident_cells.begin();
- typename std::vector<Tr_full_cell_handle>::const_iterator it_c_end = incident_cells.end();
- // For each cell
- for (; it_c != it_c_end; ++it_c) {
- // Will contain all indices except center_vertex
- Incident_simplex incident_simplex;
- for (int j = 0; j < cur_dim_plus_1; ++j) {
- std::size_t index = (*it_c)->vertex(j)->data();
- if (index != i) incident_simplex.insert(index);
- }
- GUDHI_CHECK(incident_simplex.size() == cur_dim_plus_1 - 1,
- std::logic_error("update_star: wrong size of incident simplex"));
- star.push_back(incident_simplex);
- }
- }
-
- // Estimates tangent subspaces using PCA
-
- Tangent_space_basis compute_tangent_space(const Point &p, const std::size_t i, bool normalize_basis = true,
- Orthogonal_space_basis *p_orth_space_basis = NULL) {
- unsigned int num_pts_for_pca =
- (std::min)(static_cast<unsigned int>(std::pow(GUDHI_TC_BASE_VALUE_FOR_PCA, m_intrinsic_dim)),
- static_cast<unsigned int>(m_points.size()));
-
- // Kernel functors
- typename K::Construct_vector_d constr_vec = m_k.construct_vector_d_object();
- typename K::Compute_coordinate_d coord = m_k.compute_coordinate_d_object();
-
-#ifdef GUDHI_TC_USE_ANOTHER_POINT_SET_FOR_TANGENT_SPACE_ESTIM
- KNS_range kns_range = m_points_ds_for_tse.k_nearest_neighbors(p, num_pts_for_pca, false);
- const Points &points_for_pca = m_points_for_tse;
-#else
- KNS_range kns_range = m_points_ds.k_nearest_neighbors(p, num_pts_for_pca, false);
- const Points &points_for_pca = m_points;
-#endif
-
- // One row = one point
- Eigen::MatrixXd mat_points(num_pts_for_pca, m_ambient_dim);
- auto nn_it = kns_range.begin();
- for (unsigned int j = 0; j < num_pts_for_pca && nn_it != kns_range.end(); ++j, ++nn_it) {
- for (int i = 0; i < m_ambient_dim; ++i) {
- mat_points(j, i) = CGAL::to_double(coord(points_for_pca[nn_it->first], i));
- }
- }
- Eigen::MatrixXd centered = mat_points.rowwise() - mat_points.colwise().mean();
- Eigen::MatrixXd cov = centered.adjoint() * centered;
- Eigen::SelfAdjointEigenSolver<Eigen::MatrixXd> eig(cov);
-
- Tangent_space_basis tsb(i); // p = compute_perturbed_point(i) here
-
- // The eigenvectors are sorted in increasing order of their corresponding
- // eigenvalues
- for (int j = m_ambient_dim - 1; j >= m_ambient_dim - m_intrinsic_dim; --j) {
- if (normalize_basis) {
- Vector v = constr_vec(m_ambient_dim, eig.eigenvectors().col(j).data(),
- eig.eigenvectors().col(j).data() + m_ambient_dim);
- tsb.push_back(normalize_vector(v, m_k));
- } else {
- tsb.push_back(constr_vec(m_ambient_dim, eig.eigenvectors().col(j).data(),
- eig.eigenvectors().col(j).data() + m_ambient_dim));
- }
- }
-
- if (p_orth_space_basis) {
- p_orth_space_basis->set_origin(i);
- for (int j = m_ambient_dim - m_intrinsic_dim - 1; j >= 0; --j) {
- if (normalize_basis) {
- Vector v = constr_vec(m_ambient_dim, eig.eigenvectors().col(j).data(),
- eig.eigenvectors().col(j).data() + m_ambient_dim);
- p_orth_space_basis->push_back(normalize_vector(v, m_k));
- } else {
- p_orth_space_basis->push_back(constr_vec(m_ambient_dim, eig.eigenvectors().col(j).data(),
- eig.eigenvectors().col(j).data() + m_ambient_dim));
- }
- }
- }
-
- m_are_tangent_spaces_computed[i] = true;
-
- return tsb;
- }
-
- // Compute the space tangent to a simplex (p1, p2, ... pn)
- // TODO(CJ): Improve this?
- // Basically, it takes all the neighbor points to p1, p2... pn and runs PCA
- // on it. Note that most points are duplicated.
-
- Tangent_space_basis compute_tangent_space(const Simplex &s, bool normalize_basis = true) {
- unsigned int num_pts_for_pca =
- (std::min)(static_cast<unsigned int>(std::pow(GUDHI_TC_BASE_VALUE_FOR_PCA, m_intrinsic_dim)),
- static_cast<unsigned int>(m_points.size()));
-
- // Kernel functors
- typename K::Construct_vector_d constr_vec = m_k.construct_vector_d_object();
- typename K::Compute_coordinate_d coord = m_k.compute_coordinate_d_object();
- typename K::Squared_length_d sqlen = m_k.squared_length_d_object();
- typename K::Scaled_vector_d scaled_vec = m_k.scaled_vector_d_object();
- typename K::Scalar_product_d scalar_pdct = m_k.scalar_product_d_object();
- typename K::Difference_of_vectors_d diff_vec = m_k.difference_of_vectors_d_object();
-
- // One row = one point
- Eigen::MatrixXd mat_points(s.size() * num_pts_for_pca, m_ambient_dim);
- unsigned int current_row = 0;
-
- for (Simplex::const_iterator it_index = s.begin(); it_index != s.end(); ++it_index) {
- const Point &p = m_points[*it_index];
-
-#ifdef GUDHI_TC_USE_ANOTHER_POINT_SET_FOR_TANGENT_SPACE_ESTIM
- KNS_range kns_range = m_points_ds_for_tse.k_nearest_neighbors(p, num_pts_for_pca, false);
- const Points &points_for_pca = m_points_for_tse;
-#else
- KNS_range kns_range = m_points_ds.k_nearest_neighbors(p, num_pts_for_pca, false);
- const Points &points_for_pca = m_points;
-#endif
-
- auto nn_it = kns_range.begin();
- for (; current_row < num_pts_for_pca && nn_it != kns_range.end(); ++current_row, ++nn_it) {
- for (int i = 0; i < m_ambient_dim; ++i) {
- mat_points(current_row, i) = CGAL::to_double(coord(points_for_pca[nn_it->first], i));
- }
- }
- }
- Eigen::MatrixXd centered = mat_points.rowwise() - mat_points.colwise().mean();
- Eigen::MatrixXd cov = centered.adjoint() * centered;
- Eigen::SelfAdjointEigenSolver<Eigen::MatrixXd> eig(cov);
-
- Tangent_space_basis tsb;
-
- // The eigenvectors are sorted in increasing order of their corresponding
- // eigenvalues
- for (int j = m_ambient_dim - 1; j >= m_ambient_dim - m_intrinsic_dim; --j) {
- if (normalize_basis) {
- Vector v = constr_vec(m_ambient_dim, eig.eigenvectors().col(j).data(),
- eig.eigenvectors().col(j).data() + m_ambient_dim);
- tsb.push_back(normalize_vector(v, m_k));
- } else {
- tsb.push_back(constr_vec(m_ambient_dim, eig.eigenvectors().col(j).data(),
- eig.eigenvectors().col(j).data() + m_ambient_dim));
- }
- }
-
- return tsb;
- }
-
- // Returns the dimension of the ith local triangulation
-
- int tangent_basis_dim(std::size_t i) const { return m_tangent_spaces[i].dimension(); }
-
- Point compute_perturbed_point(std::size_t pt_idx) const {
-#ifdef GUDHI_TC_PERTURB_POSITION
- return m_k.translated_point_d_object()(m_points[pt_idx], m_translations[pt_idx]);
-#else
- return m_points[pt_idx];
-#endif
- }
-
- void compute_perturbed_weighted_point(std::size_t pt_idx, Point &p, FT &w) const {
-#ifdef GUDHI_TC_PERTURB_POSITION
- p = m_k.translated_point_d_object()(m_points[pt_idx], m_translations[pt_idx]);
-#else
- p = m_points[pt_idx];
-#endif
- w = m_weights[pt_idx];
- }
-
- Weighted_point compute_perturbed_weighted_point(std::size_t pt_idx) const {
- typename K::Construct_weighted_point_d k_constr_wp = m_k.construct_weighted_point_d_object();
-
- Weighted_point wp = k_constr_wp(
-#ifdef GUDHI_TC_PERTURB_POSITION
- m_k.translated_point_d_object()(m_points[pt_idx], m_translations[pt_idx]),
-#else
- m_points[pt_idx],
-#endif
- m_weights[pt_idx]);
-
- return wp;
- }
-
- Point unproject_point(const Tr_point &p, const Tangent_space_basis &tsb, const Tr_traits &tr_traits) const {
- typename K::Translated_point_d k_transl = m_k.translated_point_d_object();
- typename K::Scaled_vector_d k_scaled_vec = m_k.scaled_vector_d_object();
- typename Tr_traits::Compute_coordinate_d coord = tr_traits.compute_coordinate_d_object();
-
- Point global_point = compute_perturbed_point(tsb.origin());
- for (int i = 0; i < m_intrinsic_dim; ++i) global_point = k_transl(global_point, k_scaled_vec(tsb[i], coord(p, i)));
-
- return global_point;
- }
-
- // Project the point in the tangent space
- // Resulting point coords are expressed in tsb's space
- Tr_bare_point project_point(const Point &p, const Tangent_space_basis &tsb, const Tr_traits &tr_traits) const {
- typename K::Scalar_product_d scalar_pdct = m_k.scalar_product_d_object();
- typename K::Difference_of_points_d diff_points = m_k.difference_of_points_d_object();
-
- Vector v = diff_points(p, compute_perturbed_point(tsb.origin()));
-
- std::vector<FT> coords;
- // Ambiant-space coords of the projected point
- coords.reserve(tsb.dimension());
- for (std::size_t i = 0; i < m_intrinsic_dim; ++i) {
- // Local coords are given by the scalar product with the vectors of tsb
- FT coord = scalar_pdct(v, tsb[i]);
- coords.push_back(coord);
- }
-
- return tr_traits.construct_point_d_object()(static_cast<int>(coords.size()), coords.begin(), coords.end());
- }
-
- // Project the point in the tangent space
- // The weight will be the squared distance between p and the projection of p
- // Resulting point coords are expressed in tsb's space
-
- Tr_point project_point_and_compute_weight(const Weighted_point &wp, const Tangent_space_basis &tsb,
- const Tr_traits &tr_traits) const {
- typename K::Point_drop_weight_d k_drop_w = m_k.point_drop_weight_d_object();
- typename K::Compute_weight_d k_point_weight = m_k.compute_weight_d_object();
- return project_point_and_compute_weight(k_drop_w(wp), k_point_weight(wp), tsb, tr_traits);
- }
-
- // Same as above, with slightly different parameters
- Tr_point project_point_and_compute_weight(const Point &p, const FT w, const Tangent_space_basis &tsb,
- const Tr_traits &tr_traits) const {
- const int point_dim = m_k.point_dimension_d_object()(p);
-
- typename K::Construct_point_d constr_pt = m_k.construct_point_d_object();
- typename K::Scalar_product_d scalar_pdct = m_k.scalar_product_d_object();
- typename K::Difference_of_points_d diff_points = m_k.difference_of_points_d_object();
- typename K::Compute_coordinate_d coord = m_k.compute_coordinate_d_object();
- typename K::Construct_cartesian_const_iterator_d ccci = m_k.construct_cartesian_const_iterator_d_object();
-
- Point origin = compute_perturbed_point(tsb.origin());
- Vector v = diff_points(p, origin);
-
- // Same dimension? Then the weight is 0
- bool same_dim = (point_dim == tsb.dimension());
-
- std::vector<FT> coords;
- // Ambiant-space coords of the projected point
- std::vector<FT> p_proj(ccci(origin), ccci(origin, 0));
- coords.reserve(tsb.dimension());
- for (int i = 0; i < tsb.dimension(); ++i) {
- // Local coords are given by the scalar product with the vectors of tsb
- FT c = scalar_pdct(v, tsb[i]);
- coords.push_back(c);
-
- // p_proj += c * tsb[i]
- if (!same_dim) {
- for (int j = 0; j < point_dim; ++j) p_proj[j] += c * coord(tsb[i], j);
- }
- }
-
- // Same dimension? Then the weight is 0
- FT sq_dist_to_proj_pt = 0;
- if (!same_dim) {
- Point projected_pt = constr_pt(point_dim, p_proj.begin(), p_proj.end());
- sq_dist_to_proj_pt = m_k.squared_distance_d_object()(p, projected_pt);
- }
-
- return tr_traits.construct_weighted_point_d_object()(
- tr_traits.construct_point_d_object()(static_cast<int>(coords.size()), coords.begin(), coords.end()),
- w - sq_dist_to_proj_pt);
- }
-
- // Project all the points in the tangent space
-
- template <typename Indexed_point_range>
- std::vector<Tr_point> project_points_and_compute_weights(const Indexed_point_range &point_indices,
- const Tangent_space_basis &tsb,
- const Tr_traits &tr_traits) const {
- std::vector<Tr_point> ret;
- for (typename Indexed_point_range::const_iterator it = point_indices.begin(), it_end = point_indices.end();
- it != it_end; ++it) {
- ret.push_back(project_point_and_compute_weight(compute_perturbed_weighted_point(*it), tsb, tr_traits));
- }
- return ret;
- }
-
- // A simplex here is a local tri's full cell handle
-
- bool is_simplex_consistent(Tr_full_cell_handle fch, int cur_dim) const {
- Simplex c;
- for (int i = 0; i < cur_dim + 1; ++i) {
- std::size_t data = fch->vertex(i)->data();
- c.insert(data);
- }
- return is_simplex_consistent(c);
- }
-
- // A simplex here is a list of point indices
- // TODO(CJ): improve it like the other "is_simplex_consistent" below
-
- bool is_simplex_consistent(Simplex const &simplex) const {
- // Check if the simplex is in the stars of all its vertices
- Simplex::const_iterator it_point_idx = simplex.begin();
- // For each point p of the simplex, we parse the incidents cells of p
- // and we check if "simplex" is among them
- for (; it_point_idx != simplex.end(); ++it_point_idx) {
- std::size_t point_idx = *it_point_idx;
- // Don't check infinite simplices
- if (point_idx == (std::numeric_limits<std::size_t>::max)()) continue;
-
- Star const &star = m_stars[point_idx];
-
- // What we're looking for is "simplex" \ point_idx
- Incident_simplex is_to_find = simplex;
- is_to_find.erase(point_idx);
-
- // For each cell
- if (std::find(star.begin(), star.end(), is_to_find) == star.end()) return false;
- }
-
- return true;
- }
-
- // A simplex here is a list of point indices
- // "s" contains all the points of the simplex except "center_point"
- // This function returns the points whose star doesn't contain the simplex
- // N.B.: the function assumes that the simplex is contained in
- // star(center_point)
-
- template <typename OutputIterator> // value_type = std::size_t
- bool is_simplex_consistent(std::size_t center_point,
- Incident_simplex const &s, // without "center_point"
- OutputIterator points_whose_star_does_not_contain_s,
- bool check_also_in_non_maximal_faces = false) const {
- Simplex full_simplex = s;
- full_simplex.insert(center_point);
-
- // Check if the simplex is in the stars of all its vertices
- Incident_simplex::const_iterator it_point_idx = s.begin();
- // For each point p of the simplex, we parse the incidents cells of p
- // and we check if "simplex" is among them
- for (; it_point_idx != s.end(); ++it_point_idx) {
- std::size_t point_idx = *it_point_idx;
- // Don't check infinite simplices
- if (point_idx == (std::numeric_limits<std::size_t>::max)()) continue;
-
- Star const &star = m_stars[point_idx];
-
- // What we're looking for is full_simplex \ point_idx
- Incident_simplex is_to_find = full_simplex;
- is_to_find.erase(point_idx);
-
- if (check_also_in_non_maximal_faces) {
- // For each simplex "is" of the star, check if ic_to_simplex is
- // included in "is"
- bool found = false;
- for (Star::const_iterator is = star.begin(), is_end = star.end(); !found && is != is_end; ++is) {
- if (std::includes(is->begin(), is->end(), is_to_find.begin(), is_to_find.end())) found = true;
- }
-
- if (!found) *points_whose_star_does_not_contain_s++ = point_idx;
- } else {
- // Does the star contain is_to_find?
- if (std::find(star.begin(), star.end(), is_to_find) == star.end())
- *points_whose_star_does_not_contain_s++ = point_idx;
- }
- }
-
- return true;
- }
-
- // A simplex here is a list of point indices
- // It looks for s in star(p).
- // "s" contains all the points of the simplex except p.
- bool is_simplex_in_star(std::size_t p, Incident_simplex const &s, bool check_also_in_non_maximal_faces = true) const {
- Star const &star = m_stars[p];
-
- if (check_also_in_non_maximal_faces) {
- // For each simplex "is" of the star, check if ic_to_simplex is
- // included in "is"
- bool found = false;
- for (Star::const_iterator is = star.begin(), is_end = star.end(); !found && is != is_end; ++is) {
- if (std::includes(is->begin(), is->end(), s.begin(), s.end())) found = true;
- }
-
- return found;
- } else {
- return !(std::find(star.begin(), star.end(), s) == star.end());
- }
- }
-
-#ifdef GUDHI_USE_TBB
- // Functor for try_to_solve_inconsistencies_in_a_local_triangulation function
- class Try_to_solve_inconsistencies_in_a_local_triangulation {
- Tangential_complex &m_tc;
- double m_max_perturb;
- tbb::combinable<std::size_t> &m_num_inconsistencies;
- tbb::combinable<std::vector<std::size_t> > &m_updated_points;
-
- public:
- // Constructor
- Try_to_solve_inconsistencies_in_a_local_triangulation(Tangential_complex &tc, double max_perturb,
- tbb::combinable<std::size_t> &num_inconsistencies,
- tbb::combinable<std::vector<std::size_t> > &updated_points)
- : m_tc(tc),
- m_max_perturb(max_perturb),
- m_num_inconsistencies(num_inconsistencies),
- m_updated_points(updated_points) {}
-
- // Constructor
- Try_to_solve_inconsistencies_in_a_local_triangulation(
- const Try_to_solve_inconsistencies_in_a_local_triangulation &tsilt)
- : m_tc(tsilt.m_tc),
- m_max_perturb(tsilt.m_max_perturb),
- m_num_inconsistencies(tsilt.m_num_inconsistencies),
- m_updated_points(tsilt.m_updated_points) {}
-
- // operator()
- void operator()(const tbb::blocked_range<size_t> &r) const {
- for (size_t i = r.begin(); i != r.end(); ++i) {
- m_num_inconsistencies.local() += m_tc.try_to_solve_inconsistencies_in_a_local_triangulation(
- i, m_max_perturb, std::back_inserter(m_updated_points.local()));
- }
- }
- };
-#endif // GUDHI_USE_TBB
-
- void perturb(std::size_t point_idx, double max_perturb) {
- const Tr_traits &local_tr_traits = m_triangulations[point_idx].tr().geom_traits();
- typename Tr_traits::Compute_coordinate_d coord = local_tr_traits.compute_coordinate_d_object();
- typename K::Translated_point_d k_transl = m_k.translated_point_d_object();
- typename K::Construct_vector_d k_constr_vec = m_k.construct_vector_d_object();
- typename K::Scaled_vector_d k_scaled_vec = m_k.scaled_vector_d_object();
-
- CGAL::Random_points_in_ball_d<Tr_bare_point> tr_point_in_ball_generator(
- m_intrinsic_dim, m_random_generator.get_double(0., max_perturb));
-
- Tr_point local_random_transl =
- local_tr_traits.construct_weighted_point_d_object()(*tr_point_in_ball_generator++, 0);
- Translation_for_perturb global_transl = k_constr_vec(m_ambient_dim);
- const Tangent_space_basis &tsb = m_tangent_spaces[point_idx];
- for (int i = 0; i < m_intrinsic_dim; ++i) {
- global_transl = k_transl(global_transl, k_scaled_vec(tsb[i], coord(local_random_transl, i)));
- }
- // Parallel
-#if defined(GUDHI_USE_TBB)
- m_p_perturb_mutexes[point_idx].lock();
- m_translations[point_idx] = global_transl;
- m_p_perturb_mutexes[point_idx].unlock();
- // Sequential
-#else
- m_translations[point_idx] = global_transl;
-#endif
- }
-
- // Return true if inconsistencies were found
- template <typename OutputIt>
- bool try_to_solve_inconsistencies_in_a_local_triangulation(
- std::size_t tr_index, double max_perturb, OutputIt perturbed_pts_indices = CGAL::Emptyset_iterator()) {
- bool is_inconsistent = false;
-
- Star const &star = m_stars[tr_index];
-
- // For each incident simplex
- Star::const_iterator it_inc_simplex = star.begin();
- Star::const_iterator it_inc_simplex_end = star.end();
- for (; it_inc_simplex != it_inc_simplex_end; ++it_inc_simplex) {
- const Incident_simplex &incident_simplex = *it_inc_simplex;
-
- // Don't check infinite cells
- if (is_infinite(incident_simplex)) continue;
-
- Simplex c = incident_simplex;
- c.insert(tr_index); // Add the missing index
-
- // Perturb the center point
- if (!is_simplex_consistent(c)) {
- is_inconsistent = true;
-
- std::size_t idx = tr_index;
-
- perturb(tr_index, max_perturb);
- *perturbed_pts_indices++ = idx;
-
- // We will try the other cells next time
- break;
- }
- }
-
- return is_inconsistent;
- }
-
- // 1st line: number of points
- // Then one point per line
- std::ostream &export_point_set(std::ostream &os, bool use_perturbed_points = false,
- const char *coord_separator = " ") const {
- if (use_perturbed_points) {
- std::vector<Point> perturbed_points;
- perturbed_points.reserve(m_points.size());
- for (std::size_t i = 0; i < m_points.size(); ++i) perturbed_points.push_back(compute_perturbed_point(i));
-
- return export_point_set(m_k, perturbed_points, os, coord_separator);
- } else {
- return export_point_set(m_k, m_points, os, coord_separator);
- }
- }
-
- template <typename ProjectionFunctor = CGAL::Identity<Point> >
- std::ostream &export_vertices_to_off(std::ostream &os, std::size_t &num_vertices, bool use_perturbed_points = false,
- ProjectionFunctor const &point_projection = ProjectionFunctor()) const {
- if (m_points.empty()) {
- num_vertices = 0;
- return os;
- }
-
- // If m_intrinsic_dim = 1, we output each point two times
- // to be able to export each segment as a flat triangle with 3 different
- // indices (otherwise, Meshlab detects degenerated simplices)
- const int N = (m_intrinsic_dim == 1 ? 2 : 1);
-
- // Kernel functors
- typename K::Compute_coordinate_d coord = m_k.compute_coordinate_d_object();
-
-#ifdef GUDHI_TC_EXPORT_ALL_COORDS_IN_OFF
- int num_coords = m_ambient_dim;
-#else
- int num_coords = (std::min)(m_ambient_dim, 3);
-#endif
-
-#ifdef GUDHI_TC_EXPORT_NORMALS
- OS_container::const_iterator it_os = m_orth_spaces.begin();
-#endif
- typename Points::const_iterator it_p = m_points.begin();
- typename Points::const_iterator it_p_end = m_points.end();
- // For each point p
- for (std::size_t i = 0; it_p != it_p_end; ++it_p, ++i) {
- Point p = point_projection(use_perturbed_points ? compute_perturbed_point(i) : *it_p);
- for (int ii = 0; ii < N; ++ii) {
- int j = 0;
- for (; j < num_coords; ++j) os << CGAL::to_double(coord(p, j)) << " ";
- if (j == 2) os << "0";
-
-#ifdef GUDHI_TC_EXPORT_NORMALS
- for (j = 0; j < num_coords; ++j) os << " " << CGAL::to_double(coord(*it_os->begin(), j));
-#endif
- os << "\n";
- }
-#ifdef GUDHI_TC_EXPORT_NORMALS
- ++it_os;
-#endif
- }
-
- num_vertices = N * m_points.size();
- return os;
- }
-
- std::ostream &export_simplices_to_off(std::ostream &os, std::size_t &num_OFF_simplices,
- bool color_inconsistencies = false,
- Simplex_set const *p_simpl_to_color_in_red = NULL,
- Simplex_set const *p_simpl_to_color_in_green = NULL,
- Simplex_set const *p_simpl_to_color_in_blue = NULL) const {
- // If m_intrinsic_dim = 1, each point is output two times
- // (see export_vertices_to_off)
- num_OFF_simplices = 0;
- std::size_t num_maximal_simplices = 0;
- std::size_t num_inconsistent_maximal_simplices = 0;
- std::size_t num_inconsistent_stars = 0;
- typename Tr_container::const_iterator it_tr = m_triangulations.begin();
- typename Tr_container::const_iterator it_tr_end = m_triangulations.end();
- // For each triangulation
- for (std::size_t idx = 0; it_tr != it_tr_end; ++it_tr, ++idx) {
- bool is_star_inconsistent = false;
-
- Triangulation const &tr = it_tr->tr();
-
- if (tr.current_dimension() < m_intrinsic_dim) continue;
-
- // Color for this star
- std::stringstream color;
- // color << rand()%256 << " " << 100+rand()%156 << " " << 100+rand()%156;
- color << 128 << " " << 128 << " " << 128;
-
- // Gather the triangles here, with an int telling its color
- typedef std::vector<std::pair<Simplex, int> > Star_using_triangles;
- Star_using_triangles star_using_triangles;
-
- // For each cell of the star
- Star::const_iterator it_inc_simplex = m_stars[idx].begin();
- Star::const_iterator it_inc_simplex_end = m_stars[idx].end();
- for (; it_inc_simplex != it_inc_simplex_end; ++it_inc_simplex) {
- Simplex c = *it_inc_simplex;
- c.insert(idx);
- std::size_t num_vertices = c.size();
- ++num_maximal_simplices;
-
- int color_simplex = -1; // -1=no color, 0=yellow, 1=red, 2=green, 3=blue
- if (color_inconsistencies && !is_simplex_consistent(c)) {
- ++num_inconsistent_maximal_simplices;
- color_simplex = 0;
- is_star_inconsistent = true;
- } else {
- if (p_simpl_to_color_in_red && std::find(p_simpl_to_color_in_red->begin(), p_simpl_to_color_in_red->end(),
- c) != p_simpl_to_color_in_red->end()) {
- color_simplex = 1;
- } else if (p_simpl_to_color_in_green &&
- std::find(p_simpl_to_color_in_green->begin(), p_simpl_to_color_in_green->end(), c) !=
- p_simpl_to_color_in_green->end()) {
- color_simplex = 2;
- } else if (p_simpl_to_color_in_blue &&
- std::find(p_simpl_to_color_in_blue->begin(), p_simpl_to_color_in_blue->end(), c) !=
- p_simpl_to_color_in_blue->end()) {
- color_simplex = 3;
- }
- }
-
- // If m_intrinsic_dim = 1, each point is output two times,
- // so we need to multiply each index by 2
- // And if only 2 vertices, add a third one (each vertex is duplicated in
- // the file when m_intrinsic dim = 2)
- if (m_intrinsic_dim == 1) {
- Simplex tmp_c;
- Simplex::iterator it = c.begin();
- for (; it != c.end(); ++it) tmp_c.insert(*it * 2);
- if (num_vertices == 2) tmp_c.insert(*tmp_c.rbegin() + 1);
-
- c = tmp_c;
- }
-
- if (num_vertices <= 3) {
- star_using_triangles.push_back(std::make_pair(c, color_simplex));
- } else {
- // num_vertices >= 4: decompose the simplex in triangles
- std::vector<bool> booleans(num_vertices, false);
- std::fill(booleans.begin() + num_vertices - 3, booleans.end(), true);
- do {
- Simplex triangle;
- Simplex::iterator it = c.begin();
- for (int i = 0; it != c.end(); ++i, ++it) {
- if (booleans[i]) triangle.insert(*it);
- }
- star_using_triangles.push_back(std::make_pair(triangle, color_simplex));
- } while (std::next_permutation(booleans.begin(), booleans.end()));
- }
- }
-
- // For each cell
- Star_using_triangles::const_iterator it_simplex = star_using_triangles.begin();
- Star_using_triangles::const_iterator it_simplex_end = star_using_triangles.end();
- for (; it_simplex != it_simplex_end; ++it_simplex) {
- const Simplex &c = it_simplex->first;
-
- // Don't export infinite cells
- if (is_infinite(c)) continue;
-
- int color_simplex = it_simplex->second;
-
- std::stringstream sstr_c;
-
- Simplex::const_iterator it_point_idx = c.begin();
- for (; it_point_idx != c.end(); ++it_point_idx) {
- sstr_c << *it_point_idx << " ";
- }
-
- os << 3 << " " << sstr_c.str();
- if (color_inconsistencies || p_simpl_to_color_in_red || p_simpl_to_color_in_green || p_simpl_to_color_in_blue) {
- switch (color_simplex) {
- case 0:
- os << " 255 255 0";
- break;
- case 1:
- os << " 255 0 0";
- break;
- case 2:
- os << " 0 255 0";
- break;
- case 3:
- os << " 0 0 255";
- break;
- default:
- os << " " << color.str();
- break;
- }
- }
- ++num_OFF_simplices;
- os << "\n";
- }
- if (is_star_inconsistent) ++num_inconsistent_stars;
- }
-
-#ifdef DEBUG_TRACES
- std::cerr << "\n==========================================================\n"
- << "Export from list of stars to OFF:\n"
- << " * Number of vertices: " << m_points.size() << "\n"
- << " * Total number of maximal simplices: " << num_maximal_simplices << "\n";
- if (color_inconsistencies) {
- std::cerr << " * Number of inconsistent stars: " << num_inconsistent_stars << " ("
- << (m_points.size() > 0 ? 100. * num_inconsistent_stars / m_points.size() : 0.) << "%)\n"
- << " * Number of inconsistent maximal simplices: " << num_inconsistent_maximal_simplices << " ("
- << (num_maximal_simplices > 0 ? 100. * num_inconsistent_maximal_simplices / num_maximal_simplices : 0.)
- << "%)\n";
- }
- std::cerr << "==========================================================\n";
-#endif
-
- return os;
- }
-
- public:
- std::ostream &export_simplices_to_off(const Simplicial_complex &complex, std::ostream &os,
- std::size_t &num_OFF_simplices,
- Simplex_set const *p_simpl_to_color_in_red = NULL,
- Simplex_set const *p_simpl_to_color_in_green = NULL,
- Simplex_set const *p_simpl_to_color_in_blue = NULL) const {
- typedef Simplicial_complex::Simplex Simplex;
- typedef Simplicial_complex::Simplex_set Simplex_set;
-
- // If m_intrinsic_dim = 1, each point is output two times
- // (see export_vertices_to_off)
- num_OFF_simplices = 0;
- std::size_t num_maximal_simplices = 0;
-
- typename Simplex_set::const_iterator it_s = complex.simplex_range().begin();
- typename Simplex_set::const_iterator it_s_end = complex.simplex_range().end();
- // For each simplex
- for (; it_s != it_s_end; ++it_s) {
- Simplex c = *it_s;
- ++num_maximal_simplices;
-
- int color_simplex = -1; // -1=no color, 0=yellow, 1=red, 2=green, 3=blue
- if (p_simpl_to_color_in_red && std::find(p_simpl_to_color_in_red->begin(), p_simpl_to_color_in_red->end(), c) !=
- p_simpl_to_color_in_red->end()) {
- color_simplex = 1;
- } else if (p_simpl_to_color_in_green &&
- std::find(p_simpl_to_color_in_green->begin(), p_simpl_to_color_in_green->end(), c) !=
- p_simpl_to_color_in_green->end()) {
- color_simplex = 2;
- } else if (p_simpl_to_color_in_blue &&
- std::find(p_simpl_to_color_in_blue->begin(), p_simpl_to_color_in_blue->end(), c) !=
- p_simpl_to_color_in_blue->end()) {
- color_simplex = 3;
- }
-
- // Gather the triangles here
- typedef std::vector<Simplex> Triangles;
- Triangles triangles;
-
- int num_vertices = static_cast<int>(c.size());
- // Do not export smaller dimension simplices
- if (num_vertices < m_intrinsic_dim + 1) continue;
-
- // If m_intrinsic_dim = 1, each point is output two times,
- // so we need to multiply each index by 2
- // And if only 2 vertices, add a third one (each vertex is duplicated in
- // the file when m_intrinsic dim = 2)
- if (m_intrinsic_dim == 1) {
- Simplex tmp_c;
- Simplex::iterator it = c.begin();
- for (; it != c.end(); ++it) tmp_c.insert(*it * 2);
- if (num_vertices == 2) tmp_c.insert(*tmp_c.rbegin() + 1);
-
- c = tmp_c;
- }
-
- if (num_vertices <= 3) {
- triangles.push_back(c);
- } else {
- // num_vertices >= 4: decompose the simplex in triangles
- std::vector<bool> booleans(num_vertices, false);
- std::fill(booleans.begin() + num_vertices - 3, booleans.end(), true);
- do {
- Simplex triangle;
- Simplex::iterator it = c.begin();
- for (int i = 0; it != c.end(); ++i, ++it) {
- if (booleans[i]) triangle.insert(*it);
- }
- triangles.push_back(triangle);
- } while (std::next_permutation(booleans.begin(), booleans.end()));
- }
-
- // For each cell
- Triangles::const_iterator it_tri = triangles.begin();
- Triangles::const_iterator it_tri_end = triangles.end();
- for (; it_tri != it_tri_end; ++it_tri) {
- // Don't export infinite cells
- if (is_infinite(*it_tri)) continue;
-
- os << 3 << " ";
- Simplex::const_iterator it_point_idx = it_tri->begin();
- for (; it_point_idx != it_tri->end(); ++it_point_idx) {
- os << *it_point_idx << " ";
- }
-
- if (p_simpl_to_color_in_red || p_simpl_to_color_in_green || p_simpl_to_color_in_blue) {
- switch (color_simplex) {
- case 0:
- os << " 255 255 0";
- break;
- case 1:
- os << " 255 0 0";
- break;
- case 2:
- os << " 0 255 0";
- break;
- case 3:
- os << " 0 0 255";
- break;
- default:
- os << " 128 128 128";
- break;
- }
- }
-
- ++num_OFF_simplices;
- os << "\n";
- }
- }
-
-#ifdef DEBUG_TRACES
- std::cerr << "\n==========================================================\n"
- << "Export from complex to OFF:\n"
- << " * Number of vertices: " << m_points.size() << "\n"
- << " * Total number of maximal simplices: " << num_maximal_simplices << "\n"
- << "==========================================================\n";
-#endif
-
- return os;
- }
-
- private:
- const K m_k;
- const int m_intrinsic_dim;
- const int m_ambient_dim;
-
- Points m_points;
- Weights m_weights;
-#ifdef GUDHI_TC_PERTURB_POSITION
- Translations_for_perturb m_translations;
-#if defined(GUDHI_USE_TBB)
- Mutex_for_perturb *m_p_perturb_mutexes;
-#endif
-#endif
-
- Points_ds m_points_ds;
- double m_last_max_perturb;
- std::vector<bool> m_are_tangent_spaces_computed;
- TS_container m_tangent_spaces;
-#ifdef GUDHI_TC_EXPORT_NORMALS
- OS_container m_orth_spaces;
-#endif
- Tr_container m_triangulations; // Contains the triangulations
- // and their center vertex
- Stars_container m_stars;
- std::vector<FT> m_squared_star_spheres_radii_incl_margin;
-
-#ifdef GUDHI_TC_USE_ANOTHER_POINT_SET_FOR_TANGENT_SPACE_ESTIM
- Points m_points_for_tse;
- Points_ds m_points_ds_for_tse;
-#endif
-
- mutable CGAL::Random m_random_generator;
-}; // /class Tangential_complex
-
-} // end namespace tangential_complex
-} // end namespace Gudhi
-
-#endif // TANGENTIAL_COMPLEX_H_
diff --git a/include/gudhi/Tangential_complex/Simplicial_complex.h b/include/gudhi/Tangential_complex/Simplicial_complex.h
deleted file mode 100644
index f79186b0..00000000
--- a/include/gudhi/Tangential_complex/Simplicial_complex.h
+++ /dev/null
@@ -1,539 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clement Jamin
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef TANGENTIAL_COMPLEX_SIMPLICIAL_COMPLEX_H_
-#define TANGENTIAL_COMPLEX_SIMPLICIAL_COMPLEX_H_
-
-#include <gudhi/Tangential_complex/config.h>
-#include <gudhi/Tangential_complex/utilities.h>
-#include <gudhi/Debug_utils.h>
-#include <gudhi/console_color.h>
-
-#include <CGAL/iterator.h>
-
-// For is_pure_pseudomanifold
-#include <boost/graph/graph_traits.hpp>
-#include <boost/graph/adjacency_list.hpp>
-#include <boost/graph/connected_components.hpp>
-#include <boost/container/flat_set.hpp>
-
-#include <algorithm>
-#include <string>
-#include <fstream>
-#include <map> // for map<>
-#include <vector> // for vector<>
-#include <set> // for set<>
-
-namespace Gudhi {
-namespace tangential_complex {
-namespace internal {
-
-class Simplicial_complex {
- public:
- typedef boost::container::flat_set<std::size_t> Simplex;
- typedef std::set<Simplex> Simplex_set;
-
- // If perform_checks = true, the function:
- // - won't insert the simplex if it is already in a higher dim simplex
- // - will erase any lower-dim simplices that are faces of the new simplex
- // Returns true if the simplex was added
- bool add_simplex(
- const Simplex &s, bool perform_checks = true) {
- if (perform_checks) {
- unsigned int num_pts = static_cast<int> (s.size());
- std::vector<Complex::iterator> to_erase;
- bool check_higher_dim_simpl = true;
- for (Complex::iterator it_simplex = m_complex.begin(),
- it_simplex_end = m_complex.end();
- it_simplex != it_simplex_end;
- ++it_simplex) {
- // Check if the simplex is not already in a higher dim simplex
- if (check_higher_dim_simpl
- && it_simplex->size() > num_pts
- && std::includes(it_simplex->begin(), it_simplex->end(),
- s.begin(), s.end())) {
- // No need to insert it, then
- return false;
- }
- // Check if the simplex includes some lower-dim simplices
- if (it_simplex->size() < num_pts
- && std::includes(s.begin(), s.end(),
- it_simplex->begin(), it_simplex->end())) {
- to_erase.push_back(it_simplex);
- // We don't need to check higher-sim simplices any more
- check_higher_dim_simpl = false;
- }
- }
- for (std::vector<Complex::iterator>::const_iterator it = to_erase.begin();
- it != to_erase.end(); ++it) {
- m_complex.erase(*it);
- }
- }
- return m_complex.insert(s).second;
- }
-
- const Simplex_set &simplex_range() const {
- return m_complex;
- }
-
- bool empty() {
- return m_complex.empty();
- }
-
- void clear() {
- m_complex.clear();
- }
-
- template <typename Test, typename Output_it>
- void get_simplices_matching_test(Test test, Output_it out) {
- for (Complex::const_iterator it_simplex = m_complex.begin(),
- it_simplex_end = m_complex.end();
- it_simplex != it_simplex_end;
- ++it_simplex) {
- if (test(*it_simplex))
- *out++ = *it_simplex;
- }
- }
-
- // When a simplex S has only one co-face C, we can remove S and C
- // without changing the topology
-
- void collapse(int max_simplex_dim, bool quiet = false) {
-#ifdef DEBUG_TRACES
- if (!quiet)
- std::cerr << "Collapsing... ";
-#endif
- // We note k = max_simplex_dim - 1
- int k = max_simplex_dim - 1;
-
- typedef Complex::iterator Simplex_iterator;
- typedef std::vector<Simplex_iterator> Simplex_iterator_list;
- typedef std::map<Simplex, Simplex_iterator_list> Cofaces_map;
-
- std::size_t num_collapsed_maximal_simplices = 0;
- do {
- num_collapsed_maximal_simplices = 0;
- // Create a map associating each non-maximal k-faces to the list of its
- // maximal cofaces
- Cofaces_map cofaces_map;
- for (Complex::const_iterator it_simplex = m_complex.begin(),
- it_simplex_end = m_complex.end();
- it_simplex != it_simplex_end;
- ++it_simplex) {
- if (static_cast<int> (it_simplex->size()) > k + 1) {
- std::vector<Simplex> k_faces;
- // Get the k-faces composing the simplex
- combinations(*it_simplex, k + 1, std::back_inserter(k_faces));
- for (const auto &comb : k_faces)
- cofaces_map[comb].push_back(it_simplex);
- }
- }
-
- // For each non-maximal k-face F, if F has only one maximal coface Cf:
- // - Look for the other k-faces F2, F3... of Cf in the map and:
- // * if the list contains only Cf, clear the list (we don't remove the
- // list since it creates troubles with the iterators) and add the F2,
- // F3... to the complex
- // * otherwise, remove Cf from the associated list
- // - Remove Cf from the complex
- for (Cofaces_map::const_iterator it_map_elt = cofaces_map.begin(),
- it_map_end = cofaces_map.end();
- it_map_elt != it_map_end;
- ++it_map_elt) {
- if (it_map_elt->second.size() == 1) {
- std::vector<Simplex> k_faces;
- const Simplex_iterator_list::value_type &it_Cf =
- *it_map_elt->second.begin();
- GUDHI_CHECK(it_Cf->size() == max_simplex_dim + 1,
- std::logic_error("Wrong dimension"));
- // Get the k-faces composing the simplex
- combinations(*it_Cf, k + 1, std::back_inserter(k_faces));
- for (const auto &f2 : k_faces) {
- // Skip F
- if (f2 != it_map_elt->first) {
- Cofaces_map::iterator it_comb_in_map = cofaces_map.find(f2);
- if (it_comb_in_map->second.size() == 1) {
- it_comb_in_map->second.clear();
- m_complex.insert(f2);
- } else { // it_comb_in_map->second.size() > 1
- Simplex_iterator_list::iterator it = std::find(it_comb_in_map->second.begin(),
- it_comb_in_map->second.end(),
- it_Cf);
- GUDHI_CHECK(it != it_comb_in_map->second.end(),
- std::logic_error("Error: it == it_comb_in_map->second.end()"));
- it_comb_in_map->second.erase(it);
- }
- }
- }
- m_complex.erase(it_Cf);
- ++num_collapsed_maximal_simplices;
- }
- }
- // Repeat until no maximal simplex got removed
- } while (num_collapsed_maximal_simplices > 0);
-
- // Collapse the lower dimension simplices
- if (k > 0)
- collapse(max_simplex_dim - 1, true);
-
-#ifdef DEBUG_TRACES
- if (!quiet)
- std::cerr << "done.\n";
-#endif
- }
-
- void display_stats() const {
- std::cerr << yellow << "Complex stats:\n" << white;
-
- if (m_complex.empty()) {
- std::cerr << " * No simplices.\n";
- } else {
- // Number of simplex for each dimension
- std::map<int, std::size_t> simplex_stats;
-
- for (Complex::const_iterator it_simplex = m_complex.begin(),
- it_simplex_end = m_complex.end();
- it_simplex != it_simplex_end;
- ++it_simplex) {
- ++simplex_stats[static_cast<int> (it_simplex->size()) - 1];
- }
-
- for (std::map<int, std::size_t>::const_iterator it_map = simplex_stats.begin();
- it_map != simplex_stats.end(); ++it_map) {
- std::cerr << " * " << it_map->first << "-simplices: "
- << it_map->second << "\n";
- }
- }
- }
-
- // verbose_level = 0, 1 or 2
- bool is_pure_pseudomanifold__do_not_check_if_stars_are_connected(int simplex_dim,
- bool allow_borders = false,
- bool exit_at_the_first_problem = false,
- int verbose_level = 0,
- std::size_t *p_num_wrong_dim_simplices = NULL,
- std::size_t *p_num_wrong_number_of_cofaces = NULL) const {
- typedef Simplex K_1_face;
- typedef std::map<K_1_face, std::size_t> Cofaces_map;
-
- std::size_t num_wrong_dim_simplices = 0;
- std::size_t num_wrong_number_of_cofaces = 0;
-
- // Counts the number of cofaces of each K_1_face
-
- // Create a map associating each non-maximal k-faces to the list of its
- // maximal cofaces
- Cofaces_map cofaces_map;
- for (Complex::const_iterator it_simplex = m_complex.begin(),
- it_simplex_end = m_complex.end();
- it_simplex != it_simplex_end;
- ++it_simplex) {
- if (static_cast<int> (it_simplex->size()) != simplex_dim + 1) {
- if (verbose_level >= 2)
- std::cerr << "Found a simplex with dim = "
- << it_simplex->size() - 1 << "\n";
- ++num_wrong_dim_simplices;
- } else {
- std::vector<K_1_face> k_1_faces;
- // Get the facets composing the simplex
- combinations(
- *it_simplex, simplex_dim, std::back_inserter(k_1_faces));
- for (const auto &k_1_face : k_1_faces) {
- ++cofaces_map[k_1_face];
- }
- }
- }
-
- for (Cofaces_map::const_iterator it_map_elt = cofaces_map.begin(),
- it_map_end = cofaces_map.end();
- it_map_elt != it_map_end;
- ++it_map_elt) {
- if (it_map_elt->second != 2
- && (!allow_borders || it_map_elt->second != 1)) {
- if (verbose_level >= 2)
- std::cerr << "Found a k-1-face with "
- << it_map_elt->second << " cofaces\n";
-
- if (exit_at_the_first_problem)
- return false;
- else
- ++num_wrong_number_of_cofaces;
- }
- }
-
- bool ret = num_wrong_dim_simplices == 0 && num_wrong_number_of_cofaces == 0;
-
- if (verbose_level >= 1) {
- std::cerr << "Pure pseudo-manifold: ";
- if (ret) {
- std::cerr << green << "YES" << white << "\n";
- } else {
- std::cerr << red << "NO" << white << "\n"
- << " * Number of wrong dimension simplices: "
- << num_wrong_dim_simplices << "\n"
- << " * Number of wrong number of cofaces: "
- << num_wrong_number_of_cofaces << "\n";
- }
- }
-
- if (p_num_wrong_dim_simplices)
- *p_num_wrong_dim_simplices = num_wrong_dim_simplices;
- if (p_num_wrong_number_of_cofaces)
- *p_num_wrong_number_of_cofaces = num_wrong_number_of_cofaces;
-
- return ret;
- }
-
- template <int K>
- std::size_t num_K_simplices() const {
- Simplex_set k_simplices;
-
- for (Complex::const_iterator it_simplex = m_complex.begin(),
- it_simplex_end = m_complex.end();
- it_simplex != it_simplex_end;
- ++it_simplex) {
- if (it_simplex->size() == K + 1) {
- k_simplices.insert(*it_simplex);
- } else if (it_simplex->size() > K + 1) {
- // Get the k-faces composing the simplex
- combinations(
- *it_simplex, K + 1, std::inserter(k_simplices, k_simplices.begin()));
- }
- }
-
- return k_simplices.size();
- }
-
- std::ptrdiff_t euler_characteristic(bool verbose = false) const {
- if (verbose)
- std::cerr << "\nComputing Euler characteristic of the complex...\n";
-
- std::size_t num_vertices = num_K_simplices<0>();
- std::size_t num_edges = num_K_simplices<1>();
- std::size_t num_triangles = num_K_simplices<2>();
-
- std::ptrdiff_t ec =
- (std::ptrdiff_t) num_vertices
- - (std::ptrdiff_t) num_edges
- + (std::ptrdiff_t) num_triangles;
-
- if (verbose)
- std::cerr << "Euler characteristic: V - E + F = "
- << num_vertices << " - " << num_edges << " + " << num_triangles << " = "
- << blue
- << ec
- << white << "\n";
-
- return ec;
- }
-
- // TODO(CJ): ADD COMMENTS
-
- bool is_pure_pseudomanifold(
- int simplex_dim,
- std::size_t num_vertices,
- bool allow_borders = false,
- bool exit_at_the_first_problem = false,
- int verbose_level = 0,
- std::size_t *p_num_wrong_dim_simplices = NULL,
- std::size_t *p_num_wrong_number_of_cofaces = NULL,
- std::size_t *p_num_unconnected_stars = NULL,
- Simplex_set *p_wrong_dim_simplices = NULL,
- Simplex_set *p_wrong_number_of_cofaces_simplices = NULL,
- Simplex_set *p_unconnected_stars_simplices = NULL) const {
- // If simplex_dim == 1, we do not need to check if stars are connected
- if (simplex_dim == 1) {
- if (p_num_unconnected_stars)
- *p_num_unconnected_stars = 0;
- return is_pure_pseudomanifold__do_not_check_if_stars_are_connected(simplex_dim,
- allow_borders,
- exit_at_the_first_problem,
- verbose_level,
- p_num_wrong_dim_simplices,
- p_num_wrong_number_of_cofaces);
- }
- // Associates each vertex (= the index in the vector)
- // to its star (list of simplices)
- typedef std::vector<std::vector<Complex::const_iterator> > Stars;
- std::size_t num_wrong_dim_simplices = 0;
- std::size_t num_wrong_number_of_cofaces = 0;
- std::size_t num_unconnected_stars = 0;
-
- // Fills a Stars data structure
- Stars stars;
- stars.resize(num_vertices);
- for (Complex::const_iterator it_simplex = m_complex.begin(),
- it_simplex_end = m_complex.end();
- it_simplex != it_simplex_end;
- ++it_simplex) {
- if (static_cast<int> (it_simplex->size()) != simplex_dim + 1) {
- if (verbose_level >= 2)
- std::cerr << "Found a simplex with dim = "
- << it_simplex->size() - 1 << "\n";
- ++num_wrong_dim_simplices;
- if (p_wrong_dim_simplices)
- p_wrong_dim_simplices->insert(*it_simplex);
- } else {
- for (Simplex::const_iterator it_point_idx = it_simplex->begin();
- it_point_idx != it_simplex->end();
- ++it_point_idx) {
- stars[*it_point_idx].push_back(it_simplex);
- }
- }
- }
-
- // Now, for each star, we have a vector of its d-simplices
- // i.e. one index for each d-simplex
- // Boost Graph only deals with indexes, so we also need indexes for the
- // (d-1)-simplices
- std::size_t center_vertex_index = 0;
- for (Stars::const_iterator it_star = stars.begin();
- it_star != stars.end();
- ++it_star, ++center_vertex_index) {
- typedef std::map<Simplex, std::vector<std::size_t> >
- Dm1_faces_to_adj_D_faces;
- Dm1_faces_to_adj_D_faces dm1_faces_to_adj_d_faces;
-
- for (std::size_t i_dsimpl = 0; i_dsimpl < it_star->size(); ++i_dsimpl) {
- Simplex dm1_simpl_of_link = *((*it_star)[i_dsimpl]);
- dm1_simpl_of_link.erase(center_vertex_index);
- // Copy it to a vector so that we can use operator[] on it
- std::vector<std::size_t> dm1_simpl_of_link_vec(
- dm1_simpl_of_link.begin(), dm1_simpl_of_link.end());
-
- CGAL::Combination_enumerator<int> dm2_simplices(
- simplex_dim - 1, 0, simplex_dim);
- for (; !dm2_simplices.finished(); ++dm2_simplices) {
- Simplex dm2_simpl;
- for (int j = 0; j < simplex_dim - 1; ++j)
- dm2_simpl.insert(dm1_simpl_of_link_vec[dm2_simplices[j]]);
- dm1_faces_to_adj_d_faces[dm2_simpl].push_back(i_dsimpl);
- }
- }
-
- Adj_graph adj_graph;
- std::vector<Graph_vertex> d_faces_descriptors;
- d_faces_descriptors.resize(it_star->size());
- for (std::size_t j = 0; j < it_star->size(); ++j)
- d_faces_descriptors[j] = boost::add_vertex(adj_graph);
-
- Dm1_faces_to_adj_D_faces::const_iterator dm1_to_d_it =
- dm1_faces_to_adj_d_faces.begin();
- Dm1_faces_to_adj_D_faces::const_iterator dm1_to_d_it_end =
- dm1_faces_to_adj_d_faces.end();
- for (std::size_t i_km1_face = 0;
- dm1_to_d_it != dm1_to_d_it_end;
- ++dm1_to_d_it, ++i_km1_face) {
- Graph_vertex km1_gv = boost::add_vertex(adj_graph);
-
- for (std::vector<std::size_t>::const_iterator kface_it =
- dm1_to_d_it->second.begin();
- kface_it != dm1_to_d_it->second.end();
- ++kface_it) {
- boost::add_edge(km1_gv, *kface_it, adj_graph);
- }
-
- if (dm1_to_d_it->second.size() != 2
- && (!allow_borders || dm1_to_d_it->second.size() != 1)) {
- ++num_wrong_number_of_cofaces;
- if (p_wrong_number_of_cofaces_simplices) {
- for (auto idx : dm1_to_d_it->second)
- p_wrong_number_of_cofaces_simplices->insert(*((*it_star)[idx]));
- }
- }
- }
-
- // What is left is to check the connexity
- bool is_connected = true;
- if (boost::num_vertices(adj_graph) > 0) {
- std::vector<int> components(boost::num_vertices(adj_graph));
- is_connected =
- (boost::connected_components(adj_graph, &components[0]) == 1);
- }
-
- if (!is_connected) {
- if (verbose_level >= 2)
- std::cerr << "Error: star #" << center_vertex_index
- << " is not connected\n";
- ++num_unconnected_stars;
- if (p_unconnected_stars_simplices) {
- for (std::vector<Complex::const_iterator>::const_iterator
- it_simpl = it_star->begin(),
- it_simpl_end = it_star->end();
- it_simpl != it_simpl_end;
- ++it_simpl) {
- p_unconnected_stars_simplices->insert(**it_simpl);
- }
- }
- }
- }
-
- // Each one has been counted several times ("simplex_dim" times)
- num_wrong_number_of_cofaces /= simplex_dim;
-
- bool ret =
- num_wrong_dim_simplices == 0
- && num_wrong_number_of_cofaces == 0
- && num_unconnected_stars == 0;
-
- if (verbose_level >= 1) {
- std::cerr << "Pure pseudo-manifold: ";
- if (ret) {
- std::cerr << green << "YES" << white << "\n";
- } else {
- std::cerr << red << "NO" << white << "\n"
- << " * Number of wrong dimension simplices: "
- << num_wrong_dim_simplices << "\n"
- << " * Number of wrong number of cofaces: "
- << num_wrong_number_of_cofaces << "\n"
- << " * Number of not-connected stars: "
- << num_unconnected_stars << "\n";
- }
- }
-
- if (p_num_wrong_dim_simplices)
- *p_num_wrong_dim_simplices = num_wrong_dim_simplices;
- if (p_num_wrong_number_of_cofaces)
- *p_num_wrong_number_of_cofaces = num_wrong_number_of_cofaces;
- if (p_num_unconnected_stars)
- *p_num_unconnected_stars = num_unconnected_stars;
-
- return ret;
- }
-
- private:
- typedef Simplex_set Complex;
-
- // graph is an adjacency list
- typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS> Adj_graph;
- // map that gives to a certain simplex its node in graph and its dimension
- typedef boost::graph_traits<Adj_graph>::vertex_descriptor Graph_vertex;
- typedef boost::graph_traits<Adj_graph>::edge_descriptor Graph_edge;
-
- Complex m_complex;
-}; // class Simplicial_complex
-
-} // namespace internal
-} // namespace tangential_complex
-} // namespace Gudhi
-
-#endif // TANGENTIAL_COMPLEX_SIMPLICIAL_COMPLEX_H_
diff --git a/include/gudhi/Tangential_complex/config.h b/include/gudhi/Tangential_complex/config.h
deleted file mode 100644
index e1af1ea6..00000000
--- a/include/gudhi/Tangential_complex/config.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clement Jamin
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef TANGENTIAL_COMPLEX_CONFIG_H_
-#define TANGENTIAL_COMPLEX_CONFIG_H_
-
-#include <cstddef>
-
-// ========================= Debugging & profiling =============================
-// #define GUDHI_TC_PROFILING
-// #define GUDHI_TC_VERY_VERBOSE
-// #define GUDHI_TC_PERFORM_EXTRA_CHECKS
-// #define GUDHI_TC_SHOW_DETAILED_STATS_FOR_INCONSISTENCIES
-
-// ========================= Strategy ==========================================
-#define GUDHI_TC_PERTURB_POSITION
-// #define GUDHI_TC_PERTURB_WEIGHT
-
-// ========================= Parameters ========================================
-
-// PCA will use GUDHI_TC_BASE_VALUE_FOR_PCA^intrinsic_dim points
-const std::size_t GUDHI_TC_BASE_VALUE_FOR_PCA = 5;
-
-#endif // TANGENTIAL_COMPLEX_CONFIG_H_
diff --git a/include/gudhi/Tangential_complex/utilities.h b/include/gudhi/Tangential_complex/utilities.h
deleted file mode 100644
index 2dd46118..00000000
--- a/include/gudhi/Tangential_complex/utilities.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clement Jamin
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef TANGENTIAL_COMPLEX_UTILITIES_H_
-#define TANGENTIAL_COMPLEX_UTILITIES_H_
-
-#include <CGAL/Dimension.h>
-#include <CGAL/Combination_enumerator.h>
-#include <CGAL/IO/Triangulation_off_ostream.h>
-
-#include <boost/container/flat_set.hpp>
-
-#include <Eigen/Core>
-#include <Eigen/Eigen>
-
-#include <set>
-#include <vector>
-#include <array>
-#include <fstream>
-#include <atomic>
-#include <cmath> // for std::sqrt
-
-namespace Gudhi {
-namespace tangential_complex {
-namespace internal {
-
-// Provides copy constructors to std::atomic so that
-// it can be used in a vector
-template <typename T>
-struct Atomic_wrapper
-: public std::atomic<T> {
- typedef std::atomic<T> Base;
-
- Atomic_wrapper() { }
-
- Atomic_wrapper(const T &t) : Base(t) { }
-
- Atomic_wrapper(const std::atomic<T> &a) : Base(a.load()) { }
-
- Atomic_wrapper(const Atomic_wrapper &other) : Base(other.load()) { }
-
- Atomic_wrapper &operator=(const T &other) {
- Base::store(other);
- return *this;
- }
-
- Atomic_wrapper &operator=(const std::atomic<T> &other) {
- Base::store(other.load());
- return *this;
- }
-
- Atomic_wrapper &operator=(const Atomic_wrapper &other) {
- Base::store(other.load());
- return *this;
- }
-};
-
-// Modifies v in-place
-template <typename K>
-typename K::Vector_d& normalize_vector(typename K::Vector_d& v,
- K const& k) {
- v = k.scaled_vector_d_object()(
- v, typename K::FT(1) / std::sqrt(k.squared_length_d_object()(v)));
- return v;
-}
-
-template<typename Kernel>
-struct Basis {
- typedef typename Kernel::FT FT;
- typedef typename Kernel::Point_d Point;
- typedef typename Kernel::Vector_d Vector;
- typedef typename std::vector<Vector>::const_iterator const_iterator;
-
- std::size_t m_origin;
- std::vector<Vector> m_vectors;
-
- std::size_t origin() const {
- return m_origin;
- }
-
- void set_origin(std::size_t o) {
- m_origin = o;
- }
-
- const_iterator begin() const {
- return m_vectors.begin();
- }
-
- const_iterator end() const {
- return m_vectors.end();
- }
-
- std::size_t size() const {
- return m_vectors.size();
- }
-
- Vector& operator[](const std::size_t i) {
- return m_vectors[i];
- }
-
- const Vector& operator[](const std::size_t i) const {
- return m_vectors[i];
- }
-
- void push_back(const Vector& v) {
- m_vectors.push_back(v);
- }
-
- void reserve(const std::size_t s) {
- m_vectors.reserve(s);
- }
-
- Basis() { }
-
- Basis(std::size_t origin) : m_origin(origin) { }
-
- Basis(std::size_t origin, const std::vector<Vector>& vectors)
- : m_origin(origin), m_vectors(vectors) { }
-
- int dimension() const {
- return static_cast<int> (m_vectors.size());
- }
-};
-
-// 1st line: number of points
-// Then one point per line
-template <typename Kernel, typename Point_range>
-std::ostream &export_point_set(
- Kernel const& k,
- Point_range const& points,
- std::ostream & os,
- const char *coord_separator = " ") {
- // Kernel functors
- typename Kernel::Construct_cartesian_const_iterator_d ccci =
- k.construct_cartesian_const_iterator_d_object();
-
- os << points.size() << "\n";
-
- typename Point_range::const_iterator it_p = points.begin();
- typename Point_range::const_iterator it_p_end = points.end();
- // For each point p
- for (; it_p != it_p_end; ++it_p) {
- for (auto it = ccci(*it_p); it != ccci(*it_p, 0); ++it)
- os << CGAL::to_double(*it) << coord_separator;
-
- os << "\n";
- }
-
- return os;
-}
-
-// Compute all the k-combinations of elements
-// Output_iterator::value_type must be
-// boost::container::flat_set<std::size_t>
-template <typename Elements_container, typename Output_iterator>
-void combinations(const Elements_container elements, int k,
- Output_iterator combinations) {
- std::size_t n = elements.size();
- std::vector<bool> booleans(n, false);
- std::fill(booleans.begin() + n - k, booleans.end(), true);
- do {
- boost::container::flat_set<std::size_t> combination;
- typename Elements_container::const_iterator it_elt = elements.begin();
- for (std::size_t i = 0; i < n; ++i, ++it_elt) {
- if (booleans[i])
- combination.insert(*it_elt);
- }
- *combinations++ = combination;
- } while (std::next_permutation(booleans.begin(), booleans.end()));
-}
-
-} // namespace internal
-} // namespace tangential_complex
-} // namespace Gudhi
-
-#endif // TANGENTIAL_COMPLEX_UTILITIES_H_
diff --git a/include/gudhi/Unitary_tests_utils.h b/include/gudhi/Unitary_tests_utils.h
deleted file mode 100644
index e07c8d42..00000000
--- a/include/gudhi/Unitary_tests_utils.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2017 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef UNITARY_TESTS_UTILS_H_
-#define UNITARY_TESTS_UTILS_H_
-
-#include <boost/test/unit_test.hpp>
-
-#include <iostream>
-#include <limits> // for std::numeric_limits<>
-
-template<typename FloatingType >
-void GUDHI_TEST_FLOAT_EQUALITY_CHECK(FloatingType a, FloatingType b,
- FloatingType epsilon = std::numeric_limits<FloatingType>::epsilon()) {
-#ifdef DEBUG_TRACES
- std::cout << "GUDHI_TEST_FLOAT_EQUALITY_CHECK - " << a << " versus " << b
- << " | diff = " << std::fabs(a - b) << " - epsilon = " << epsilon << std::endl;
-#endif
- BOOST_CHECK(std::fabs(a - b) < epsilon);
-}
-
-#endif // UNITARY_TESTS_UTILS_H_
diff --git a/include/gudhi/Witness_complex.h b/include/gudhi/Witness_complex.h
deleted file mode 100644
index 67885258..00000000
--- a/include/gudhi/Witness_complex.h
+++ /dev/null
@@ -1,201 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Siargey Kachanovich
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef WITNESS_COMPLEX_H_
-#define WITNESS_COMPLEX_H_
-
-#include <gudhi/Active_witness/Active_witness.h>
-#include <gudhi/Witness_complex/all_faces_in.h>
-
-#include <utility>
-#include <vector>
-#include <list>
-#include <limits>
-
-namespace Gudhi {
-
-namespace witness_complex {
-
-/**
- * \private
- * \class Witness_complex
- * \brief Constructs (weak) witness complex for a given table of nearest landmarks with respect to witnesses.
- * \ingroup witness_complex
- *
- * \tparam Nearest_landmark_table_ needs to be a range of a range of pairs of nearest landmarks and distances.
- * The class Nearest_landmark_table_::value_type must be a copiable range.
- * The range of pairs must admit a member type 'iterator'. The dereference type
- * of the pair range iterator needs to be 'std::pair<std::size_t, double>'.
-*/
-template< class Nearest_landmark_table_ >
-class Witness_complex {
- private:
- typedef typename Nearest_landmark_table_::value_type Nearest_landmark_range;
- typedef std::size_t Witness_id;
- typedef std::size_t Landmark_id;
- typedef std::pair<Landmark_id, double> Id_distance_pair;
- typedef Active_witness<Id_distance_pair, Nearest_landmark_range> ActiveWitness;
- typedef std::list< ActiveWitness > ActiveWitnessList;
- typedef std::vector< Landmark_id > typeVectorVertex;
- typedef std::vector<Nearest_landmark_range> Nearest_landmark_table_internal;
- typedef Landmark_id Vertex_handle;
-
- protected:
- Nearest_landmark_table_internal nearest_landmark_table_;
-
- public:
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /* @name Constructor
- */
-
- //@{
-
- Witness_complex() {
- }
-
- /**
- * \brief Initializes member variables before constructing simplicial complex.
- * \details Records nearest landmark table.
- * @param[in] nearest_landmark_table needs to be a range of a range of pairs of nearest landmarks and distances.
- * The class Nearest_landmark_table_::value_type must be a copiable range.
- * The range of pairs must admit a member type 'iterator'. The dereference type
- * of the pair range iterator needs to be 'std::pair<std::size_t, double>'.
- */
-
- Witness_complex(Nearest_landmark_table_ const & nearest_landmark_table)
- : nearest_landmark_table_(std::begin(nearest_landmark_table), std::end(nearest_landmark_table)) {
- }
-
- /** \brief Outputs the (weak) witness complex of relaxation 'max_alpha_square'
- * in a simplicial complex data structure.
- * \details The function returns true if the construction is successful and false otherwise.
- * @param[out] complex Simplicial complex data structure compatible which is a model of
- * SimplicialComplexForWitness concept.
- * @param[in] max_alpha_square Maximal squared relaxation parameter.
- * @param[in] limit_dimension Represents the maximal dimension of the simplicial complex
- * (default value = no limit).
- */
- template < typename SimplicialComplexForWitness >
- bool create_complex(SimplicialComplexForWitness& complex,
- double max_alpha_square,
- std::size_t limit_dimension = std::numeric_limits<std::size_t>::max()) const {
- if (complex.num_vertices() > 0) {
- std::cerr << "Witness complex cannot create complex - complex is not empty.\n";
- return false;
- }
- if (max_alpha_square < 0) {
- std::cerr << "Witness complex cannot create complex - squared relaxation parameter must be non-negative.\n";
- return false;
- }
- ActiveWitnessList active_witnesses;
- Landmark_id k = 0; /* current dimension in iterative construction */
- for (auto w : nearest_landmark_table_)
- active_witnesses.push_back(ActiveWitness(w));
- while (!active_witnesses.empty() && k <= limit_dimension) {
- typename ActiveWitnessList::iterator aw_it = active_witnesses.begin();
- std::vector<Landmark_id> simplex;
- simplex.reserve(k+1);
- while (aw_it != active_witnesses.end()) {
- bool ok = add_all_faces_of_dimension(k,
- max_alpha_square,
- std::numeric_limits<double>::infinity(),
- aw_it->begin(),
- simplex,
- complex,
- aw_it->end());
- assert(simplex.empty());
- if (!ok)
- active_witnesses.erase(aw_it++); // First increase the iterator and then erase the previous element
- else
- aw_it++;
- }
- k++;
- }
- return true;
- }
-
- //@}
-
- private:
- /* \brief Adds recursively all the faces of a certain dimension dim witnessed by the same witness.
- * Iterator is needed to know until how far we can take landmarks to form simplexes.
- * simplex is the prefix of the simplexes to insert.
- * The output value indicates if the witness rests active or not.
- */
- template < typename SimplicialComplexForWitness >
- bool add_all_faces_of_dimension(int dim,
- double alpha2,
- double norelax_dist2,
- typename ActiveWitness::iterator curr_l,
- std::vector<Landmark_id>& simplex,
- SimplicialComplexForWitness& sc,
- typename ActiveWitness::iterator end) const {
- if (curr_l == end)
- return false;
- bool will_be_active = false;
- typename ActiveWitness::iterator l_it = curr_l;
- if (dim > 0) {
- for (; l_it != end && l_it->second - alpha2 <= norelax_dist2; ++l_it) {
- simplex.push_back(l_it->first);
- if (sc.find(simplex) != sc.null_simplex()) {
- typename ActiveWitness::iterator next_it = l_it;
- will_be_active = add_all_faces_of_dimension(dim-1,
- alpha2,
- norelax_dist2,
- ++next_it,
- simplex,
- sc,
- end) || will_be_active;
- }
- assert(!simplex.empty());
- simplex.pop_back();
- // If norelax_dist is infinity, change to first omitted distance
- if (l_it->second <= norelax_dist2)
- norelax_dist2 = l_it->second;
- }
- } else if (dim == 0) {
- for (; l_it != end && l_it->second - alpha2 <= norelax_dist2; ++l_it) {
- simplex.push_back(l_it->first);
- double filtration_value = 0;
- // if norelax_dist is infinite, relaxation is 0.
- if (l_it->second > norelax_dist2)
- filtration_value = l_it->second - norelax_dist2;
- if (all_faces_in(simplex, &filtration_value, sc)) {
- will_be_active = true;
- sc.insert_simplex(simplex, filtration_value);
- }
- assert(!simplex.empty());
- simplex.pop_back();
- // If norelax_dist is infinity, change to first omitted distance
- if (l_it->second < norelax_dist2)
- norelax_dist2 = l_it->second;
- }
- }
- return will_be_active;
- }
-};
-
-} // namespace witness_complex
-
-} // namespace Gudhi
-
-#endif // WITNESS_COMPLEX_H_
diff --git a/include/gudhi/Witness_complex/all_faces_in.h b/include/gudhi/Witness_complex/all_faces_in.h
deleted file mode 100644
index c7b732b9..00000000
--- a/include/gudhi/Witness_complex/all_faces_in.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Siargey Kachanovich
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef WITNESS_COMPLEX_ALL_FACES_IN_H_
-#define WITNESS_COMPLEX_ALL_FACES_IN_H_
-
-/* \brief Check if the facets of the k-dimensional simplex witnessed
- * by witness witness_id are already in the complex.
- * inserted_vertex is the handle of the (k+1)-th vertex witnessed by witness_id
- */
-template < typename SimplicialComplexForWitness,
- typename Simplex >
- bool all_faces_in(Simplex& simplex,
- double* filtration_value,
- SimplicialComplexForWitness& sc) {
- typedef typename SimplicialComplexForWitness::Simplex_handle Simplex_handle;
-
- if (simplex.size() == 1)
- return true; /* Add vertices unconditionally */
-
- Simplex facet;
- for (typename Simplex::iterator not_it = simplex.begin(); not_it != simplex.end(); ++not_it) {
- facet.clear();
- for (typename Simplex::iterator it = simplex.begin(); it != simplex.end(); ++it)
- if (it != not_it)
- facet.push_back(*it);
- Simplex_handle facet_sh = sc.find(facet);
- if (facet_sh == sc.null_simplex())
- return false;
- else if (sc.filtration(facet_sh) > *filtration_value)
- *filtration_value = sc.filtration(facet_sh);
- }
- return true;
- }
-
-#endif // WITNESS_COMPLEX_ALL_FACES_IN_H_
diff --git a/include/gudhi/allocator.h b/include/gudhi/allocator.h
deleted file mode 100644
index 3de16a49..00000000
--- a/include/gudhi/allocator.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Marc Glisse
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef ALLOCATOR_H_
-#define ALLOCATOR_H_
-
-#include <memory>
-#include <utility>
-
-namespace Gudhi {
-
-/** \private
- * An allocator that can be used to build an uninitialized vector.
- */
-template <class T, class Base = std::allocator<T>>
-struct no_init_allocator : Base {
- typedef std::allocator_traits<Base> Base_traits;
- template <class U> struct rebind {
- typedef no_init_allocator<U, typename Base_traits::template rebind_alloc<U>> other;
- };
-
- // Inherit constructors.
- using Base::Base;
-
- // Do nothing: that's the whole point!
- template<class P>
- void construct(P*) noexcept {}
-
- template<class P, class...U> void construct(P*p, U&&...u) {
- Base_traits::construct(*(Base*)this, p, std::forward<U>(u)...);
- }
-};
-
-} // namespace Gudhi
-
-#endif // ALLOCATOR_H_
diff --git a/include/gudhi/choose_n_farthest_points.h b/include/gudhi/choose_n_farthest_points.h
deleted file mode 100644
index ab1c4c73..00000000
--- a/include/gudhi/choose_n_farthest_points.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Siargey Kachanovich
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CHOOSE_N_FARTHEST_POINTS_H_
-#define CHOOSE_N_FARTHEST_POINTS_H_
-
-#include <boost/range.hpp>
-
-#include <gudhi/Null_output_iterator.h>
-
-#include <iterator>
-#include <vector>
-#include <random>
-#include <limits> // for numeric_limits<>
-
-namespace Gudhi {
-
-namespace subsampling {
-
-/**
- * \ingroup subsampling
- */
-enum : std::size_t {
-/**
- * Argument for `choose_n_farthest_points` to indicate that the starting point should be picked randomly.
- */
- random_starting_point = std::size_t(-1)
-};
-
-/**
- * \ingroup subsampling
- * \brief Subsample by a greedy strategy of iteratively adding the farthest point from the
- * current chosen point set to the subsampling.
- * The iteration starts with the landmark `starting point` or, if `starting point==random_starting_point`, with a random landmark.
- * \tparam Kernel must provide a type Kernel::Squared_distance_d which is a model of the
- * concept <a target="_blank"
- * href="http://doc.cgal.org/latest/Kernel_d/classKernel__d_1_1Squared__distance__d.html">Kernel_d::Squared_distance_d</a> (despite the name, taken from CGAL, this can be any kind of metric or proximity measure).
- * It must also contain a public member `squared_distance_d_object()` that returns an object of this type.
- * \tparam Point_range Range whose value type is Kernel::Point_d. It must provide random-access
- * via `operator[]` and the points should be stored contiguously in memory.
- * \tparam PointOutputIterator Output iterator whose value type is Kernel::Point_d.
- * \tparam DistanceOutputIterator Output iterator for distances.
- * \details It chooses `final_size` points from a random access range
- * `input_pts` and outputs them in the output iterator `output_it`. It also
- * outputs the distance from each of those points to the set of previous
- * points in `dist_it`.
- * @param[in] k A kernel object.
- * @param[in] input_pts Const reference to the input points.
- * @param[in] final_size The size of the subsample to compute.
- * @param[in] starting_point The seed in the farthest point algorithm.
- * @param[out] output_it The output iterator for points.
- * @param[out] dist_it The optional output iterator for distances.
- *
- */
-template < typename Kernel,
-typename Point_range,
-typename PointOutputIterator,
-typename DistanceOutputIterator = Null_output_iterator>
-void choose_n_farthest_points(Kernel const &k,
- Point_range const &input_pts,
- std::size_t final_size,
- std::size_t starting_point,
- PointOutputIterator output_it,
- DistanceOutputIterator dist_it = {}) {
- std::size_t nb_points = boost::size(input_pts);
- if (final_size > nb_points)
- final_size = nb_points;
-
- // Tests to the limit
- if (final_size < 1)
- return;
-
- if (starting_point == random_starting_point) {
- // Choose randomly the first landmark
- std::random_device rd;
- std::mt19937 gen(rd());
- std::uniform_int_distribution<std::size_t> dis(0, nb_points - 1);
- starting_point = dis(gen);
- }
-
- typename Kernel::Squared_distance_d sqdist = k.squared_distance_d_object();
-
- std::size_t current_number_of_landmarks = 0; // counter for landmarks
- const double infty = std::numeric_limits<double>::infinity(); // infinity (see next entry)
- std::vector< double > dist_to_L(nb_points, infty); // vector of current distances to L from input_pts
-
- std::size_t curr_max_w = starting_point;
-
- for (current_number_of_landmarks = 0; current_number_of_landmarks != final_size; current_number_of_landmarks++) {
- // curr_max_w at this point is the next landmark
- *output_it++ = input_pts[curr_max_w];
- *dist_it++ = dist_to_L[curr_max_w];
- std::size_t i = 0;
- for (auto&& p : input_pts) {
- double curr_dist = sqdist(p, *(std::begin(input_pts) + curr_max_w));
- if (curr_dist < dist_to_L[i])
- dist_to_L[i] = curr_dist;
- ++i;
- }
- // choose the next curr_max_w
- double curr_max_dist = 0; // used for defining the furhest point from L
- for (i = 0; i < dist_to_L.size(); i++)
- if (dist_to_L[i] > curr_max_dist) {
- curr_max_dist = dist_to_L[i];
- curr_max_w = i;
- }
- }
-}
-
-} // namespace subsampling
-
-} // namespace Gudhi
-
-#endif // CHOOSE_N_FARTHEST_POINTS_H_
diff --git a/include/gudhi/common_persistence_representations.h b/include/gudhi/common_persistence_representations.h
deleted file mode 100644
index 3d03f1f6..00000000
--- a/include/gudhi/common_persistence_representations.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef COMMON_PERSISTENCE_REPRESENTATIONS_H_
-#define COMMON_PERSISTENCE_REPRESENTATIONS_H_
-
-#include <utility>
-#include <string>
-#include <cmath>
-
-namespace Gudhi {
-namespace Persistence_representations {
-// this file contain an implementation of some common procedures used in Persistence_representations.
-
-// double epsi = std::numeric_limits<double>::epsilon();
-double epsi = 0.000005;
-
-/**
- * A procedure used to compare doubles. Typically given two doubles A and B, comparing A == B is not good idea. In this
- *case, we use the procedure almostEqual with the epsi defined at
- * the top of the file. Setting up the epsi gives the user a tolerance on what should be consider equal.
-**/
-inline bool almost_equal(double a, double b) {
- if (std::fabs(a - b) < epsi) return true;
- return false;
-}
-
-// landscapes
-/**
- * Extra functions needed in construction of barcodes.
-**/
-double minus_length(std::pair<double, double> a) { return a.first - a.second; }
-double birth_plus_deaths(std::pair<double, double> a) { return a.first + a.second; }
-
-// landscapes
-/**
- * Given two points in R^2, the procedure compute the parameters A and B of the line y = Ax + B that crosses those two
- *points.
-**/
-std::pair<double, double> compute_parameters_of_a_line(std::pair<double, double> p1, std::pair<double, double> p2) {
- double a = (p2.second - p1.second) / (p2.first - p1.first);
- double b = p1.second - a * p1.first;
- return std::make_pair(a, b);
-}
-
-// landscapes
-/**
- * This procedure given two points which lies on the opposite sides of x axis, compute x for which the line connecting
- *those two points crosses x axis.
-**/
-double find_zero_of_a_line_segment_between_those_two_points(std::pair<double, double> p1,
- std::pair<double, double> p2) {
- if (p1.first == p2.first) return p1.first;
- if (p1.second * p2.second > 0) {
- std::ostringstream errMessage;
- errMessage << "In function find_zero_of_a_line_segment_between_those_two_points the arguments are: (" << p1.first
- << "," << p1.second << ") and (" << p2.first << "," << p2.second
- << "). There is no zero in line between those two points. Program terminated.";
- std::string errMessageStr = errMessage.str();
- const char* err = errMessageStr.c_str();
- throw(err);
- }
- // we assume here, that x \in [ p1.first, p2.first ] and p1 and p2 are points between which we will put the line
- // segment
- double a = (p2.second - p1.second) / (p2.first - p1.first);
- double b = p1.second - a * p1.first;
- return -b / a;
-}
-
-// landscapes
-/**
- * This method provides a comparison of points that is used in construction of persistence landscapes. The ordering is
- *lexicographical for the first coordinate, and reverse-lexicographical for the
- * second coordinate.
-**/
-bool compare_points_sorting(std::pair<double, double> f, std::pair<double, double> s) {
- if (f.first < s.first) {
- return true;
- } else { // f.first >= s.first
- if (f.first > s.first) {
- return false;
- } else { // f.first == s.first
- if (f.second > s.second) {
- return true;
- } else {
- return false;
- }
- }
- }
-}
-
-// landscapes
-/**
- * This procedure takes two points in R^2 and a double value x. It computes the line parsing through those two points
- *and return the value of that linear function at x.
-**/
-double function_value(std::pair<double, double> p1, std::pair<double, double> p2, double x) {
- // we assume here, that x \in [ p1.first, p2.first ] and p1 and p2 are points between which we will put the line
- // segment
- double a = (p2.second - p1.second) / (p2.first - p1.first);
- double b = p1.second - a * p1.first;
- return (a * x + b);
-}
-
-} // namespace Persistence_representations
-} // namespace Gudhi
-
-#endif // COMMON_PERSISTENCE_REPRESENTATIONS_H_
diff --git a/include/gudhi/console_color.h b/include/gudhi/console_color.h
deleted file mode 100644
index a493e0d0..00000000
--- a/include/gudhi/console_color.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clement Jamin
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONSOLE_COLOR_H_
-#define CONSOLE_COLOR_H_
-
-#include <iostream>
-
-#if defined(WIN32)
-#include <windows.h>
-#endif
-
-inline std::ostream& blue(std::ostream &s) {
-#if defined(WIN32)
- HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleTextAttribute(hStdout,
- FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
-#else
- s << "\x1b[0;34m";
-#endif
- return s;
-}
-
-inline std::ostream& red(std::ostream &s) {
-#if defined(WIN32)
- HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_INTENSITY);
-#else
- s << "\x1b[0;31m";
-#endif
- return s;
-}
-
-inline std::ostream& green(std::ostream &s) {
-#if defined(WIN32)
- HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleTextAttribute(hStdout, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
-#else
- s << "\x1b[0;32m";
-#endif
- return s;
-}
-
-inline std::ostream& yellow(std::ostream &s) {
-#if defined(WIN32)
- HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleTextAttribute(hStdout,
- FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
-#else
- s << "\x1b[0;33m";
-#endif
- return s;
-}
-
-inline std::ostream& white(std::ostream &s) {
-#if defined(WIN32)
- HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleTextAttribute(hStdout,
- FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
-#else
- s << "\x1b[0;37m";
-#endif
- return s;
-}
-
-inline std::ostream& black_on_white(std::ostream &s) {
-#if defined(WIN32)
- HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleTextAttribute(hStdout,
- BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
-#else
- s << "\x1b[0;33m";
-#endif
- return s;
-}
-
-
-#endif // CONSOLE_COLOR_H_
diff --git a/include/gudhi/distance_functions.h b/include/gudhi/distance_functions.h
deleted file mode 100644
index 5ef12f2e..00000000
--- a/include/gudhi/distance_functions.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef DISTANCE_FUNCTIONS_H_
-#define DISTANCE_FUNCTIONS_H_
-
-#include <gudhi/Debug_utils.h>
-
-#include <gudhi/Miniball.hpp>
-
-#include <boost/range/metafunctions.hpp>
-#include <boost/range/size.hpp>
-
-#include <cmath> // for std::sqrt
-#include <type_traits> // for std::decay
-#include <iterator> // for std::begin, std::end
-#include <utility>
-
-namespace Gudhi {
-
-/** @file
- * @brief Global distance functions
- */
-
-/** @brief Compute the Euclidean distance between two Points given by a range of coordinates. The points are assumed to
- * have the same dimension. */
-class Euclidean_distance {
- public:
- // boost::range_value is not SFINAE-friendly so we cannot use it in the return type
- template< typename Point >
- typename std::iterator_traits<typename boost::range_iterator<Point>::type>::value_type
- operator()(const Point& p1, const Point& p2) const {
- auto it1 = std::begin(p1);
- auto it2 = std::begin(p2);
- typedef typename boost::range_value<Point>::type NT;
- NT dist = 0;
- for (; it1 != std::end(p1); ++it1, ++it2) {
- GUDHI_CHECK(it2 != std::end(p2), "inconsistent point dimensions");
- NT tmp = *it1 - *it2;
- dist += tmp*tmp;
- }
- GUDHI_CHECK(it2 == std::end(p2), "inconsistent point dimensions");
- using std::sqrt;
- return sqrt(dist);
- }
- template< typename T >
- T operator() (const std::pair< T, T >& f, const std::pair< T, T >& s) const {
- T dx = f.first - s.first;
- T dy = f.second - s.second;
- using std::sqrt;
- return sqrt(dx*dx + dy*dy);
- }
-};
-
-/** @brief Compute the radius of the minimal enclosing ball between Points given by a range of coordinates.
- * The points are assumed to have the same dimension. */
-class Minimal_enclosing_ball_radius {
- public:
- /** \brief Minimal_enclosing_ball_radius from two points.
- *
- * @param[in] point_1 First point.
- * @param[in] point_2 second point.
- * @return The minimal enclosing ball radius for the two points (aka. Euclidean distance / 2.).
- *
- * \tparam Point must be a range of Cartesian coordinates.
- *
- */
- template< typename Point >
- typename std::iterator_traits<typename boost::range_iterator<Point>::type>::value_type
- operator()(const Point& point_1, const Point& point_2) const {
- return Euclidean_distance()(point_1, point_2) / 2.;
- }
- /** \brief Minimal_enclosing_ball_radius from a point cloud.
- *
- * @param[in] point_cloud The points.
- * @return The minimal enclosing ball radius for the points.
- *
- * \tparam Point_cloud must be a range of points with Cartesian coordinates.
- * Point_cloud is a range over a range of Coordinate.
- *
- */
- template< typename Point_cloud,
- typename Point_iterator = typename boost::range_const_iterator<Point_cloud>::type,
- typename Point = typename std::iterator_traits<Point_iterator>::value_type,
- typename Coordinate_iterator = typename boost::range_const_iterator<Point>::type,
- typename Coordinate = typename std::iterator_traits<Coordinate_iterator>::value_type>
- Coordinate
- operator()(const Point_cloud& point_cloud) const {
- using Min_sphere = Miniball::Miniball<Miniball::CoordAccessor<Point_iterator, Coordinate_iterator>>;
-
- Min_sphere ms(boost::size(*point_cloud.begin()), point_cloud.begin(), point_cloud.end());
-#ifdef DEBUG_TRACES
- std::cout << "Minimal_enclosing_ball_radius = " << std::sqrt(ms.squared_radius()) << " | nb points = "
- << boost::size(point_cloud) << " | dimension = "
- << boost::size(*point_cloud.begin()) << std::endl;
-#endif // DEBUG_TRACES
-
- return std::sqrt(ms.squared_radius());
- }
-};
-
-} // namespace Gudhi
-
-#endif // DISTANCE_FUNCTIONS_H_
diff --git a/include/gudhi/graph_simplicial_complex.h b/include/gudhi/graph_simplicial_complex.h
deleted file mode 100644
index 49fe56cc..00000000
--- a/include/gudhi/graph_simplicial_complex.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GRAPH_SIMPLICIAL_COMPLEX_H_
-#define GRAPH_SIMPLICIAL_COMPLEX_H_
-
-#include <boost/graph/adjacency_list.hpp>
-
-#include <utility> // for pair<>
-#include <vector>
-#include <map>
-#include <tuple> // for std::tie
-
-namespace Gudhi {
-
-/* Edge tag for Boost PropertyGraph. */
-struct edge_filtration_t {
- typedef boost::edge_property_tag kind;
-};
-
-/* Vertex tag for Boost PropertyGraph. */
-struct vertex_filtration_t {
- typedef boost::vertex_property_tag kind;
-};
-
-/** \brief Proximity_graph contains the vertices and edges with their filtration values in order to store the result
- * of `Gudhi::compute_proximity_graph` function.
- *
- * \tparam SimplicialComplexForProximityGraph furnishes `Filtration_value` type definition.
- *
- */
-template <typename SimplicialComplexForProximityGraph>
-using Proximity_graph = typename boost::adjacency_list < boost::vecS, boost::vecS, boost::undirectedS
-, boost::property < vertex_filtration_t, typename SimplicialComplexForProximityGraph::Filtration_value >
-, boost::property < edge_filtration_t, typename SimplicialComplexForProximityGraph::Filtration_value >>;
-
-/** \brief Computes the proximity graph of the points.
- *
- * If points contains n elements, the proximity graph is the graph with n vertices, and an edge [u,v] iff the
- * distance function between points u and v is smaller than threshold.
- *
- * \tparam ForwardPointRange furnishes `.begin()` and `.end()` methods.
- *
- * \tparam Distance furnishes `operator()(const Point& p1, const Point& p2)`, where
- * `Point` is a point from the `ForwardPointRange`, and that returns a `Filtration_value`.
- */
-template< typename SimplicialComplexForProximityGraph
- , typename ForwardPointRange
- , typename Distance >
-Proximity_graph<SimplicialComplexForProximityGraph> compute_proximity_graph(
- const ForwardPointRange& points,
- typename SimplicialComplexForProximityGraph::Filtration_value threshold,
- Distance distance) {
- using Vertex_handle = typename SimplicialComplexForProximityGraph::Vertex_handle;
- using Filtration_value = typename SimplicialComplexForProximityGraph::Filtration_value;
-
- std::vector<std::pair< Vertex_handle, Vertex_handle >> edges;
- std::vector< Filtration_value > edges_fil;
- std::map< Vertex_handle, Filtration_value > vertices;
-
- Vertex_handle idx_u, idx_v;
- Filtration_value fil;
- idx_u = 0;
- for (auto it_u = points.begin(); it_u != points.end(); ++it_u) {
- idx_v = idx_u + 1;
- for (auto it_v = it_u + 1; it_v != points.end(); ++it_v, ++idx_v) {
- fil = distance(*it_u, *it_v);
- if (fil <= threshold) {
- edges.emplace_back(idx_u, idx_v);
- edges_fil.push_back(fil);
- }
- }
- ++idx_u;
- }
-
- // Points are labeled from 0 to idx_u-1
- Proximity_graph<SimplicialComplexForProximityGraph> skel_graph(edges.begin(), edges.end(), edges_fil.begin(), idx_u);
-
- auto vertex_prop = boost::get(vertex_filtration_t(), skel_graph);
-
- typename boost::graph_traits<Proximity_graph<SimplicialComplexForProximityGraph>>::vertex_iterator vi, vi_end;
- for (std::tie(vi, vi_end) = boost::vertices(skel_graph);
- vi != vi_end; ++vi) {
- boost::put(vertex_prop, *vi, 0.);
- }
-
- return skel_graph;
-}
-
-} // namespace Gudhi
-
-#endif // GRAPH_SIMPLICIAL_COMPLEX_H_
diff --git a/include/gudhi/pick_n_random_points.h b/include/gudhi/pick_n_random_points.h
deleted file mode 100644
index 64821e5d..00000000
--- a/include/gudhi/pick_n_random_points.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Siargey Kachanovich
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef PICK_N_RANDOM_POINTS_H_
-#define PICK_N_RANDOM_POINTS_H_
-
-#include <gudhi/Clock.h>
-
-#include <boost/range/size.hpp>
-
-#include <cstddef>
-#include <random> // random_device, mt19937
-#include <algorithm> // shuffle
-#include <numeric> // iota
-#include <iterator>
-#include <vector>
-
-
-namespace Gudhi {
-
-namespace subsampling {
-
-/**
- * \ingroup subsampling
- * \brief Subsample a point set by picking random vertices.
- *
- * \details It chooses `final_size` distinct points from a random access range `points`
- * and outputs them to the output iterator `output_it`.
- * Point_container::iterator should be ValueSwappable and RandomAccessIterator.
- */
-template <typename Point_container,
-typename OutputIterator>
-void pick_n_random_points(Point_container const &points,
- std::size_t final_size,
- OutputIterator output_it) {
-#ifdef GUDHI_SUBSAMPLING_PROFILING
- Gudhi::Clock t;
-#endif
-
- std::size_t nbP = boost::size(points);
- if (final_size > nbP)
- final_size = nbP;
-
- std::vector<int> landmarks(nbP);
- std::iota(landmarks.begin(), landmarks.end(), 0);
-
- std::random_device rd;
- std::mt19937 g(rd());
-
- std::shuffle(landmarks.begin(), landmarks.end(), g);
- landmarks.resize(final_size);
-
- for (int l : landmarks)
- *output_it++ = points[l];
-
-#ifdef GUDHI_SUBSAMPLING_PROFILING
- t.end();
- std::cerr << "Random landmark choice took " << t.num_seconds()
- << " seconds." << std::endl;
-#endif
-}
-
-} // namespace subsampling
-
-} // namespace Gudhi
-
-#endif // PICK_N_RANDOM_POINTS_H_
diff --git a/include/gudhi/random_point_generators.h b/include/gudhi/random_point_generators.h
deleted file mode 100644
index f8107c8b..00000000
--- a/include/gudhi/random_point_generators.h
+++ /dev/null
@@ -1,507 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clement Jamin
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef RANDOM_POINT_GENERATORS_H_
-#define RANDOM_POINT_GENERATORS_H_
-
-#include <CGAL/number_utils.h>
-#include <CGAL/Random.h>
-#include <CGAL/point_generators_d.h>
-
-#include <vector> // for vector<>
-
-namespace Gudhi {
-
-///////////////////////////////////////////////////////////////////////////////
-// Note: All these functions have been tested with the CGAL::Epick_d kernel
-///////////////////////////////////////////////////////////////////////////////
-
-// construct_point: dim 2
-
-template <typename Kernel>
-typename Kernel::Point_d construct_point(const Kernel &k,
- typename Kernel::FT x1, typename Kernel::FT x2) {
- typename Kernel::FT tab[2];
- tab[0] = x1;
- tab[1] = x2;
- return k.construct_point_d_object()(2, &tab[0], &tab[2]);
-}
-
-// construct_point: dim 3
-
-template <typename Kernel>
-typename Kernel::Point_d construct_point(const Kernel &k,
- typename Kernel::FT x1, typename Kernel::FT x2, typename Kernel::FT x3) {
- typename Kernel::FT tab[3];
- tab[0] = x1;
- tab[1] = x2;
- tab[2] = x3;
- return k.construct_point_d_object()(3, &tab[0], &tab[3]);
-}
-
-// construct_point: dim 4
-
-template <typename Kernel>
-typename Kernel::Point_d construct_point(const Kernel &k,
- typename Kernel::FT x1, typename Kernel::FT x2, typename Kernel::FT x3,
- typename Kernel::FT x4) {
- typename Kernel::FT tab[4];
- tab[0] = x1;
- tab[1] = x2;
- tab[2] = x3;
- tab[3] = x4;
- return k.construct_point_d_object()(4, &tab[0], &tab[4]);
-}
-
-// construct_point: dim 5
-
-template <typename Kernel>
-typename Kernel::Point_d construct_point(const Kernel &k,
- typename Kernel::FT x1, typename Kernel::FT x2, typename Kernel::FT x3,
- typename Kernel::FT x4, typename Kernel::FT x5) {
- typename Kernel::FT tab[5];
- tab[0] = x1;
- tab[1] = x2;
- tab[2] = x3;
- tab[3] = x4;
- tab[4] = x5;
- return k.construct_point_d_object()(5, &tab[0], &tab[5]);
-}
-
-// construct_point: dim 6
-
-template <typename Kernel>
-typename Kernel::Point_d construct_point(const Kernel &k,
- typename Kernel::FT x1, typename Kernel::FT x2, typename Kernel::FT x3,
- typename Kernel::FT x4, typename Kernel::FT x5, typename Kernel::FT x6) {
- typename Kernel::FT tab[6];
- tab[0] = x1;
- tab[1] = x2;
- tab[2] = x3;
- tab[3] = x4;
- tab[4] = x5;
- tab[5] = x6;
- return k.construct_point_d_object()(6, &tab[0], &tab[6]);
-}
-
-template <typename Kernel>
-std::vector<typename Kernel::Point_d> generate_points_on_plane(std::size_t num_points, int intrinsic_dim,
- int ambient_dim,
- double coord_min = -5., double coord_max = 5.) {
- typedef typename Kernel::Point_d Point;
- typedef typename Kernel::FT FT;
- Kernel k;
- CGAL::Random rng;
- std::vector<Point> points;
- points.reserve(num_points);
- for (std::size_t i = 0; i < num_points;) {
- std::vector<FT> pt(ambient_dim, FT(0));
- for (int j = 0; j < intrinsic_dim; ++j)
- pt[j] = rng.get_double(coord_min, coord_max);
-
- Point p = k.construct_point_d_object()(ambient_dim, pt.begin(), pt.end());
- points.push_back(p);
- ++i;
- }
- return points;
-}
-
-template <typename Kernel>
-std::vector<typename Kernel::Point_d> generate_points_on_moment_curve(std::size_t num_points, int dim,
- typename Kernel::FT min_x,
- typename Kernel::FT max_x) {
- typedef typename Kernel::Point_d Point;
- typedef typename Kernel::FT FT;
- Kernel k;
- CGAL::Random rng;
- std::vector<Point> points;
- points.reserve(num_points);
- for (std::size_t i = 0; i < num_points;) {
- FT x = rng.get_double(min_x, max_x);
- std::vector<FT> coords;
- coords.reserve(dim);
- for (int p = 1; p <= dim; ++p)
- coords.push_back(std::pow(CGAL::to_double(x), p));
- Point p = k.construct_point_d_object()(
- dim, coords.begin(), coords.end());
- points.push_back(p);
- ++i;
- }
- return points;
-}
-
-
-// R = big radius, r = small radius
-template <typename Kernel/*, typename TC_basis*/>
-std::vector<typename Kernel::Point_d> generate_points_on_torus_3D(std::size_t num_points, double R, double r,
- bool uniform = false) {
- typedef typename Kernel::Point_d Point;
- typedef typename Kernel::FT FT;
- Kernel k;
- CGAL::Random rng;
-
- // if uniform
- std::size_t num_lines = (std::size_t)sqrt(num_points);
-
- std::vector<Point> points;
- points.reserve(num_points);
- for (std::size_t i = 0; i < num_points;) {
- FT u, v;
- if (uniform) {
- std::size_t k1 = i / num_lines;
- std::size_t k2 = i % num_lines;
- u = 6.2832 * k1 / num_lines;
- v = 6.2832 * k2 / num_lines;
- } else {
- u = rng.get_double(0, 6.2832);
- v = rng.get_double(0, 6.2832);
- }
- Point p = construct_point(k,
- (R + r * std::cos(u)) * std::cos(v),
- (R + r * std::cos(u)) * std::sin(v),
- r * std::sin(u));
- points.push_back(p);
- ++i;
- }
- return points;
-}
-
-// "Private" function used by generate_points_on_torus_d
-template <typename Kernel, typename OutputIterator>
-static void generate_uniform_points_on_torus_d(const Kernel &k, int dim, std::size_t num_slices,
- OutputIterator out,
- double radius_noise_percentage = 0.,
- std::vector<typename Kernel::FT> current_point =
- std::vector<typename Kernel::FT>()) {
- CGAL::Random rng;
- int point_size = static_cast<int>(current_point.size());
- if (point_size == 2 * dim) {
- *out++ = k.construct_point_d_object()(point_size, current_point.begin(), current_point.end());
- } else {
- for (std::size_t slice_idx = 0; slice_idx < num_slices; ++slice_idx) {
- double radius_noise_ratio = 1.;
- if (radius_noise_percentage > 0.) {
- radius_noise_ratio = rng.get_double(
- (100. - radius_noise_percentage) / 100.,
- (100. + radius_noise_percentage) / 100.);
- }
- std::vector<typename Kernel::FT> cp2 = current_point;
- double alpha = 6.2832 * slice_idx / num_slices;
- cp2.push_back(radius_noise_ratio * std::cos(alpha));
- cp2.push_back(radius_noise_ratio * std::sin(alpha));
- generate_uniform_points_on_torus_d(
- k, dim, num_slices, out, radius_noise_percentage, cp2);
- }
- }
-}
-
-template <typename Kernel>
-std::vector<typename Kernel::Point_d> generate_points_on_torus_d(std::size_t num_points, int dim, bool uniform = false,
- double radius_noise_percentage = 0.) {
- typedef typename Kernel::Point_d Point;
- typedef typename Kernel::FT FT;
- Kernel k;
- CGAL::Random rng;
-
- std::vector<Point> points;
- points.reserve(num_points);
- if (uniform) {
- std::size_t num_slices = (std::size_t)std::pow(num_points, 1. / dim);
- generate_uniform_points_on_torus_d(
- k, dim, num_slices, std::back_inserter(points), radius_noise_percentage);
- } else {
- for (std::size_t i = 0; i < num_points;) {
- double radius_noise_ratio = 1.;
- if (radius_noise_percentage > 0.) {
- radius_noise_ratio = rng.get_double(
- (100. - radius_noise_percentage) / 100.,
- (100. + radius_noise_percentage) / 100.);
- }
- std::vector<typename Kernel::FT> pt;
- pt.reserve(dim * 2);
- for (int curdim = 0; curdim < dim; ++curdim) {
- FT alpha = rng.get_double(0, 6.2832);
- pt.push_back(radius_noise_ratio * std::cos(alpha));
- pt.push_back(radius_noise_ratio * std::sin(alpha));
- }
-
- Point p = k.construct_point_d_object()(pt.begin(), pt.end());
- points.push_back(p);
- ++i;
- }
- }
- return points;
-}
-
-template <typename Kernel>
-std::vector<typename Kernel::Point_d> generate_points_on_sphere_d(std::size_t num_points, int dim, double radius,
- double radius_noise_percentage = 0.) {
- typedef typename Kernel::Point_d Point;
- Kernel k;
- CGAL::Random rng;
- CGAL::Random_points_on_sphere_d<Point> generator(dim, radius);
- std::vector<Point> points;
- points.reserve(num_points);
- for (std::size_t i = 0; i < num_points;) {
- Point p = *generator++;
- if (radius_noise_percentage > 0.) {
- double radius_noise_ratio = rng.get_double(
- (100. - radius_noise_percentage) / 100.,
- (100. + radius_noise_percentage) / 100.);
-
- typename Kernel::Point_to_vector_d k_pt_to_vec =
- k.point_to_vector_d_object();
- typename Kernel::Vector_to_point_d k_vec_to_pt =
- k.vector_to_point_d_object();
- typename Kernel::Scaled_vector_d k_scaled_vec =
- k.scaled_vector_d_object();
- p = k_vec_to_pt(k_scaled_vec(k_pt_to_vec(p), radius_noise_ratio));
- }
- points.push_back(p);
- ++i;
- }
- return points;
-}
-
-template <typename Kernel>
-std::vector<typename Kernel::Point_d> generate_points_in_ball_d(std::size_t num_points, int dim, double radius) {
- typedef typename Kernel::Point_d Point;
- Kernel k;
- CGAL::Random rng;
- CGAL::Random_points_in_ball_d<Point> generator(dim, radius);
- std::vector<Point> points;
- points.reserve(num_points);
- for (std::size_t i = 0; i < num_points;) {
- Point p = *generator++;
- points.push_back(p);
- ++i;
- }
- return points;
-}
-
-template <typename Kernel>
-std::vector<typename Kernel::Point_d> generate_points_in_cube_d(std::size_t num_points, int dim, double radius) {
- typedef typename Kernel::Point_d Point;
- Kernel k;
- CGAL::Random rng;
- CGAL::Random_points_in_cube_d<Point> generator(dim, radius);
- std::vector<Point> points;
- points.reserve(num_points);
- for (std::size_t i = 0; i < num_points;) {
- Point p = *generator++;
- points.push_back(p);
- ++i;
- }
- return points;
-}
-
-template <typename Kernel>
-std::vector<typename Kernel::Point_d> generate_points_on_two_spheres_d(std::size_t num_points, int dim, double radius,
- double distance_between_centers,
- double radius_noise_percentage = 0.) {
- typedef typename Kernel::FT FT;
- typedef typename Kernel::Point_d Point;
- typedef typename Kernel::Vector_d Vector;
- Kernel k;
- CGAL::Random rng;
- CGAL::Random_points_on_sphere_d<Point> generator(dim, radius);
- std::vector<Point> points;
- points.reserve(num_points);
-
- std::vector<FT> t(dim, FT(0));
- t[0] = distance_between_centers;
- Vector c1_to_c2(t.begin(), t.end());
-
- for (std::size_t i = 0; i < num_points;) {
- Point p = *generator++;
- if (radius_noise_percentage > 0.) {
- double radius_noise_ratio = rng.get_double(
- (100. - radius_noise_percentage) / 100.,
- (100. + radius_noise_percentage) / 100.);
-
- typename Kernel::Point_to_vector_d k_pt_to_vec =
- k.point_to_vector_d_object();
- typename Kernel::Vector_to_point_d k_vec_to_pt =
- k.vector_to_point_d_object();
- typename Kernel::Scaled_vector_d k_scaled_vec =
- k.scaled_vector_d_object();
- p = k_vec_to_pt(k_scaled_vec(k_pt_to_vec(p), radius_noise_ratio));
- }
-
- typename Kernel::Translated_point_d k_transl =
- k.translated_point_d_object();
- Point p2 = k_transl(p, c1_to_c2);
- points.push_back(p);
- points.push_back(p2);
- i += 2;
- }
- return points;
-}
-
-// Product of a 3-sphere and a circle => d = 3 / D = 5
-
-template <typename Kernel>
-std::vector<typename Kernel::Point_d> generate_points_on_3sphere_and_circle(std::size_t num_points,
- double sphere_radius) {
- typedef typename Kernel::FT FT;
- typedef typename Kernel::Point_d Point;
- Kernel k;
- CGAL::Random rng;
- CGAL::Random_points_on_sphere_d<Point> generator(3, sphere_radius);
- std::vector<Point> points;
- points.reserve(num_points);
-
- typename Kernel::Compute_coordinate_d k_coord =
- k.compute_coordinate_d_object();
- for (std::size_t i = 0; i < num_points;) {
- Point p_sphere = *generator++; // First 3 coords
-
- FT alpha = rng.get_double(0, 6.2832);
- std::vector<FT> pt(5);
- pt[0] = k_coord(p_sphere, 0);
- pt[1] = k_coord(p_sphere, 1);
- pt[2] = k_coord(p_sphere, 2);
- pt[3] = std::cos(alpha);
- pt[4] = std::sin(alpha);
- Point p(pt.begin(), pt.end());
- points.push_back(p);
- ++i;
- }
- return points;
-}
-
-// a = big radius, b = small radius
-template <typename Kernel>
-std::vector<typename Kernel::Point_d> generate_points_on_klein_bottle_3D(std::size_t num_points, double a, double b,
- bool uniform = false) {
- typedef typename Kernel::Point_d Point;
- typedef typename Kernel::FT FT;
- Kernel k;
- CGAL::Random rng;
-
- // if uniform
- std::size_t num_lines = (std::size_t)sqrt(num_points);
-
- std::vector<Point> points;
- points.reserve(num_points);
- for (std::size_t i = 0; i < num_points;) {
- FT u, v;
- if (uniform) {
- std::size_t k1 = i / num_lines;
- std::size_t k2 = i % num_lines;
- u = 6.2832 * k1 / num_lines;
- v = 6.2832 * k2 / num_lines;
- } else {
- u = rng.get_double(0, 6.2832);
- v = rng.get_double(0, 6.2832);
- }
- double tmp = cos(u / 2) * sin(v) - sin(u / 2) * sin(2. * v);
- Point p = construct_point(k,
- (a + b * tmp) * cos(u),
- (a + b * tmp) * sin(u),
- b * (sin(u / 2) * sin(v) + cos(u / 2) * sin(2. * v)));
- points.push_back(p);
- ++i;
- }
- return points;
-}
-
-// a = big radius, b = small radius
-template <typename Kernel>
-std::vector<typename Kernel::Point_d> generate_points_on_klein_bottle_4D(std::size_t num_points, double a, double b,
- double noise = 0., bool uniform = false) {
- typedef typename Kernel::Point_d Point;
- typedef typename Kernel::FT FT;
- Kernel k;
- CGAL::Random rng;
-
- // if uniform
- std::size_t num_lines = (std::size_t)sqrt(num_points);
-
- std::vector<Point> points;
- points.reserve(num_points);
- for (std::size_t i = 0; i < num_points;) {
- FT u, v;
- if (uniform) {
- std::size_t k1 = i / num_lines;
- std::size_t k2 = i % num_lines;
- u = 6.2832 * k1 / num_lines;
- v = 6.2832 * k2 / num_lines;
- } else {
- u = rng.get_double(0, 6.2832);
- v = rng.get_double(0, 6.2832);
- }
- Point p = construct_point(k,
- (a + b * cos(v)) * cos(u) + (noise == 0. ? 0. : rng.get_double(0, noise)),
- (a + b * cos(v)) * sin(u) + (noise == 0. ? 0. : rng.get_double(0, noise)),
- b * sin(v) * cos(u / 2) + (noise == 0. ? 0. : rng.get_double(0, noise)),
- b * sin(v) * sin(u / 2) + (noise == 0. ? 0. : rng.get_double(0, noise)));
- points.push_back(p);
- ++i;
- }
- return points;
-}
-
-
-// a = big radius, b = small radius
-
-template <typename Kernel>
-std::vector<typename Kernel::Point_d>
-generate_points_on_klein_bottle_variant_5D(
- std::size_t num_points, double a, double b, bool uniform = false) {
- typedef typename Kernel::Point_d Point;
- typedef typename Kernel::FT FT;
- Kernel k;
- CGAL::Random rng;
-
- // if uniform
- std::size_t num_lines = (std::size_t)sqrt(num_points);
-
- std::vector<Point> points;
- points.reserve(num_points);
- for (std::size_t i = 0; i < num_points;) {
- FT u, v;
- if (uniform) {
- std::size_t k1 = i / num_lines;
- std::size_t k2 = i % num_lines;
- u = 6.2832 * k1 / num_lines;
- v = 6.2832 * k2 / num_lines;
- } else {
- u = rng.get_double(0, 6.2832);
- v = rng.get_double(0, 6.2832);
- }
- FT x1 = (a + b * cos(v)) * cos(u);
- FT x2 = (a + b * cos(v)) * sin(u);
- FT x3 = b * sin(v) * cos(u / 2);
- FT x4 = b * sin(v) * sin(u / 2);
- FT x5 = x1 + x2 + x3 + x4;
-
- Point p = construct_point(k, x1, x2, x3, x4, x5);
- points.push_back(p);
- ++i;
- }
- return points;
-}
-
-} // namespace Gudhi
-
-#endif // RANDOM_POINT_GENERATORS_H_
diff --git a/include/gudhi/read_persistence_from_file.h b/include/gudhi/read_persistence_from_file.h
deleted file mode 100644
index 4a2b9d68..00000000
--- a/include/gudhi/read_persistence_from_file.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef READ_PERSISTENCE_FROM_FILE_H_
-#define READ_PERSISTENCE_FROM_FILE_H_
-
-#include <gudhi/reader_utils.h>
-
-#include <iostream>
-#include <fstream>
-#include <sstream>
-#include <vector>
-#include <algorithm>
-#include <string>
-#include <utility>
-#include <limits> // for std::numeric_limits<>
-
-namespace Gudhi {
-namespace Persistence_representations {
-
-/**
- * Universal procedure to read files with persistence. It ignores the lines starting from # (treat them as comments).
- * It reads the fist line which is not a comment and assume that there are some numerical entries over there. The
- *program assume
- * that each other line in the file, which is not a comment, have the same number of numerical entries (2, 3 or 4).
- * If there are two numerical entries per line, then the function assume that they are birth/death coordinates.
- * If there are three numerical entries per line, then the function assume that they are: dimension and birth/death
- *coordinates.
- * If there are four numerical entries per line, then the function assume that they are: the characteristic of a filed
- *over which
- * persistence was computed, dimension and birth/death coordinates.
- * The 'inf' string can appear only as a last element of a line.
- * The procedure returns vector of persistence pairs.
-**/
-std::vector<std::pair<double, double> > read_persistence_intervals_in_one_dimension_from_file(
- std::string const& filename, int dimension = -1, double what_to_substitute_for_infinite_bar = -1) {
- bool dbg = false;
-
- std::string line;
- std::vector<std::pair<double, double> > barcode_initial =
- read_persistence_intervals_in_dimension(filename, static_cast<int>(dimension));
- std::vector<std::pair<double, double> > final_barcode;
- final_barcode.reserve(barcode_initial.size());
-
- if (dbg) {
- std::cerr << "Here are the intervals that we read from the file : \n";
- for (size_t i = 0; i != barcode_initial.size(); ++i) {
- std::cout << barcode_initial[i].first << " " << barcode_initial[i].second << std::endl;
- }
- getchar();
- }
-
- for (size_t i = 0; i != barcode_initial.size(); ++i) {
- if (dbg) {
- std::cout << "COnsidering interval : " << barcode_initial[i].first << " " << barcode_initial[i].second
- << std::endl;
- }
-
- if (barcode_initial[i].first > barcode_initial[i].second) {
- // note that in this case barcode_initial[i].second != std::numeric_limits<double>::infinity()
- if (dbg) std::cout << "Swap and enter \n";
- // swap them to make sure that birth < death
- final_barcode.push_back(std::pair<double, double>(barcode_initial[i].second, barcode_initial[i].first));
- continue;
- } else {
- if (barcode_initial[i].second != std::numeric_limits<double>::infinity()) {
- if (dbg) std::cout << "Simply enters\n";
- // in this case, due to the previous conditions we know that barcode_initial[i].first <
- // barcode_initial[i].second, so we put them as they are
- final_barcode.push_back(std::pair<double, double>(barcode_initial[i].first, barcode_initial[i].second));
- }
- }
-
- if ((barcode_initial[i].second == std::numeric_limits<double>::infinity()) &&
- (what_to_substitute_for_infinite_bar != -1)) {
- if (barcode_initial[i].first < what_to_substitute_for_infinite_bar) {
- // if only birth < death.
- final_barcode.push_back(
- std::pair<double, double>(barcode_initial[i].first, what_to_substitute_for_infinite_bar));
- }
- } else {
- // if the variable what_to_substitute_for_infinite_bar is not set, then we ignore all the infinite bars.
- }
- }
-
- if (dbg) {
- std::cerr << "Here are the final bars that we are sending further : \n";
- for (size_t i = 0; i != final_barcode.size(); ++i) {
- std::cout << final_barcode[i].first << " " << final_barcode[i].second << std::endl;
- }
- std::cerr << "final_barcode.size() : " << final_barcode.size() << std::endl;
- getchar();
- }
-
- return final_barcode;
-} // read_persistence_intervals_in_one_dimension_from_file
-
-} // namespace Persistence_representations
-} // namespace Gudhi
-
-#endif // READ_PERSISTENCE_FROM_FILE_H_
diff --git a/include/gudhi/reader_utils.h b/include/gudhi/reader_utils.h
deleted file mode 100644
index 26eeb76d..00000000
--- a/include/gudhi/reader_utils.h
+++ /dev/null
@@ -1,369 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clement Maria, Pawel Dlotko, Clement Jamin
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef READER_UTILS_H_
-#define READER_UTILS_H_
-
-#include <gudhi/graph_simplicial_complex.h>
-#include <gudhi/Debug_utils.h>
-
-#include <boost/function_output_iterator.hpp>
-#include <boost/graph/adjacency_list.hpp>
-
-#include <iostream>
-#include <fstream>
-#include <map>
-#include <limits> // for numeric_limits
-#include <string>
-#include <vector>
-#include <utility> // for pair
-#include <tuple> // for std::make_tuple
-
-namespace Gudhi {
-
-// Keep this file tag for Doxygen to parse the code, otherwise, functions are not documented.
-// It is required for global functions and variables.
-
-/** @file
- * @brief This file includes common file reader for GUDHI
- */
-
-/**
- * @brief Read a set of points to turn it into a vector< vector<double> > by filling points.
- *
- * File format: 1 point per line<br>
- * X11 X12 ... X1d<br>
- * X21 X22 ... X2d<br>
- * etc<br>
- */
-inline void read_points(std::string file_name, std::vector<std::vector<double>>& points) {
- std::ifstream in_file(file_name.c_str(), std::ios::in);
- if (!in_file.is_open()) {
- std::cerr << "Unable to open file " << file_name << std::endl;
- return;
- }
-
- std::string line;
- double x;
- while (getline(in_file, line)) {
- std::vector<double> point;
- std::istringstream iss(line);
- while (iss >> x) {
- point.push_back(x);
- }
- // Check for empty lines
- if (!point.empty()) points.push_back(point);
- }
- in_file.close();
-}
-
-/**
- * @brief Read a graph from a file.
- *
- * \tparam Graph_t Type for the return graph. Must be constructible from iterators on pairs of Vertex_handle
- * \tparam Filtration_value Type for the value of the read filtration
- * \tparam Vertex_handle Type for the value of the read vertices
- *
- * File format: 1 simplex per line<br>
- * Dim1 X11 X12 ... X1d Fil1<br>
- * Dim2 X21 X22 ... X2d Fil2<br>
- * etc<br>
- *
- * The vertices must be labeled from 0 to n-1.
- * Every simplex must appear exactly once.
- * Simplices of dimension more than 1 are ignored.
- */
-template <typename Graph_t, typename Filtration_value, typename Vertex_handle>
-Graph_t read_graph(std::string file_name) {
- std::ifstream in_(file_name.c_str(), std::ios::in);
- if (!in_.is_open()) {
- std::string error_str("read_graph - Unable to open file ");
- error_str.append(file_name);
- std::cerr << error_str << std::endl;
- throw std::invalid_argument(error_str);
- }
-
- typedef std::pair<Vertex_handle, Vertex_handle> Edge_t;
- std::vector<Edge_t> edges;
- std::vector<Filtration_value> edges_fil;
- std::map<Vertex_handle, Filtration_value> vertices;
-
- std::string line;
- int dim;
- Vertex_handle u, v, max_h = -1;
- Filtration_value fil;
- while (getline(in_, line)) {
- std::istringstream iss(line);
- while (iss >> dim) {
- switch (dim) {
- case 0: {
- iss >> u;
- iss >> fil;
- vertices[u] = fil;
- if (max_h < u) {
- max_h = u;
- }
- break;
- }
- case 1: {
- iss >> u;
- iss >> v;
- iss >> fil;
- edges.push_back(Edge_t(u, v));
- edges_fil.push_back(fil);
- break;
- }
- default: { break; }
- }
- }
- }
- in_.close();
-
- if ((size_t)(max_h + 1) != vertices.size()) {
- std::cerr << "Error: vertices must be labeled from 0 to n-1 \n";
- }
-
- Graph_t skel_graph(edges.begin(), edges.end(), edges_fil.begin(), vertices.size());
- auto vertex_prop = boost::get(vertex_filtration_t(), skel_graph);
-
- typename boost::graph_traits<Graph_t>::vertex_iterator vi, vi_end;
- auto v_it = vertices.begin();
- for (std::tie(vi, vi_end) = boost::vertices(skel_graph); vi != vi_end; ++vi, ++v_it) {
- boost::put(vertex_prop, *vi, v_it->second);
- }
-
- return skel_graph;
-}
-
-/**
- * @brief Read a face from a file.
- *
- * File format: 1 simplex per line<br>
- * Dim1 X11 X12 ... X1d Fil1<br>
- * Dim2 X21 X22 ... X2d Fil2<br>
- * etc<br>
- *
- * The vertices must be labeled from 0 to n-1.
- * Every simplex must appear exactly once.
- * Simplices of dimension more than 1 are ignored.
- */
-template <typename Vertex_handle, typename Filtration_value>
-bool read_simplex(std::istream& in_, std::vector<Vertex_handle>& simplex, Filtration_value& fil) {
- int dim = 0;
- if (!(in_ >> dim)) return false;
- Vertex_handle v;
- for (int i = 0; i < dim + 1; ++i) {
- in_ >> v;
- simplex.push_back(v);
- }
- in_ >> fil;
- in_.ignore((std::numeric_limits<std::streamsize>::max)(), '\n'); // ignore until the carriage return
- return true;
-}
-
-/**
- * @brief Read a hasse simplex from a file.
- *
- * File format: 1 simplex per line<br>
- * Dim1 k11 k12 ... k1Dim1 Fil1<br>
- * Dim2 k21 k22 ... k2Dim2 Fil2<br>
- * etc<br>
- *
- * The key of a simplex is its position in the filtration order and also the number of its row in the file.
- * Dimi ki1 ki2 ... kiDimi Fili means that the ith simplex in the filtration has dimension Dimi, filtration value
- * fil1 and simplices with key ki1 ... kiDimi in its boundary.*/
-template <typename Simplex_key, typename Filtration_value>
-bool read_hasse_simplex(std::istream& in_, std::vector<Simplex_key>& boundary, Filtration_value& fil) {
- int dim;
- if (!(in_ >> dim)) return false;
- if (dim == 0) {
- in_ >> fil;
- return true;
- }
- Simplex_key key;
- for (int i = 0; i < dim + 1; ++i) {
- in_ >> key;
- boundary.push_back(key);
- }
- in_ >> fil;
- return true;
-}
-
-/**
- * @brief Read a lower triangular distance matrix from a csv file. We assume that the .csv store the whole
- * (square) matrix.
- *
- * @author Pawel Dlotko
- *
- * Square matrix file format:<br>
- * 0;D12;...;D1j<br>
- * D21;0;...;D2j<br>
- * ...<br>
- * Dj1;Dj2;...;0<br>
- *
- * lower matrix file format:<br>
- * 0<br>
- * D21;<br>
- * D31;D32;<br>
- * ...<br>
- * Dj1;Dj2;...;Dj(j-1);<br>
- *
- **/
-template <typename Filtration_value>
-std::vector<std::vector<Filtration_value>> read_lower_triangular_matrix_from_csv_file(const std::string& filename,
- const char separator = ';') {
-#ifdef DEBUG_TRACES
- std::cout << "Using procedure read_lower_triangular_matrix_from_csv_file \n";
-#endif // DEBUG_TRACES
- std::vector<std::vector<Filtration_value>> result;
- std::ifstream in;
- in.open(filename.c_str());
- if (!in.is_open()) {
- return result;
- }
-
- std::string line;
-
- // the first line is emtpy, so we ignore it:
- std::getline(in, line);
- std::vector<Filtration_value> values_in_this_line;
- result.push_back(values_in_this_line);
-
- int number_of_line = 0;
-
- // first, read the file line by line to a string:
- while (std::getline(in, line)) {
- // if line is empty, break
- if (line.size() == 0) break;
-
- // if the last element of a string is comma:
- if (line[line.size() - 1] == separator) {
- // then shrink the string by one
- line.pop_back();
- }
-
- // replace all commas with spaces
- std::replace(line.begin(), line.end(), separator, ' ');
-
- // put the new line to a stream
- std::istringstream iss(line);
- // and now read the doubles.
-
- int number_of_entry = 0;
- std::vector<Filtration_value> values_in_this_line;
- while (iss.good()) {
- double entry;
- iss >> entry;
- if (number_of_entry <= number_of_line) {
- values_in_this_line.push_back(entry);
- }
- ++number_of_entry;
- }
- if (!values_in_this_line.empty()) result.push_back(values_in_this_line);
- ++number_of_line;
- }
- in.close();
-
-#ifdef DEBUG_TRACES
- std::cerr << "Here is the matrix we read : \n";
- for (size_t i = 0; i != result.size(); ++i) {
- for (size_t j = 0; j != result[i].size(); ++j) {
- std::cerr << result[i][j] << " ";
- }
- std::cerr << std::endl;
- }
-#endif // DEBUG_TRACES
-
- return result;
-} // read_lower_triangular_matrix_from_csv_file
-
-/**
-Reads a file containing persistence intervals.
-Each line might contain 2, 3 or 4 values: [[field] dimension] birth death
-The output iterator `out` is used this way: `*out++ = std::make_tuple(dim, birth, death);`
-where `dim` is an `int`, `birth` a `double`, and `death` a `double`.
-Note: the function does not check that birth <= death.
-**/
-template <typename OutputIterator>
-void read_persistence_intervals_and_dimension(std::string const& filename, OutputIterator out) {
- std::ifstream in(filename);
- if (!in.is_open()) {
- std::string error_str("read_persistence_intervals_and_dimension - Unable to open file ");
- error_str.append(filename);
- std::cerr << error_str << std::endl;
- throw std::invalid_argument(error_str);
- }
-
- while (!in.eof()) {
- std::string line;
- getline(in, line);
- if (line.length() != 0 && line[0] != '#') {
- double numbers[4];
- int n = sscanf(line.c_str(), "%lf %lf %lf %lf", &numbers[0], &numbers[1], &numbers[2], &numbers[3]);
- if (n >= 2) {
- int dim = (n >= 3 ? static_cast<int>(numbers[n - 3]) : -1);
- *out++ = std::make_tuple(dim, numbers[n - 2], numbers[n - 1]);
- }
- }
- }
-}
-
-/**
-Reads a file containing persistence intervals.
-Each line might contain 2, 3 or 4 values: [[field] dimension] birth death
-The return value is an `std::map<dim, std::vector<std::pair<birth, death>>>`
-where `dim` is an `int`, `birth` a `double`, and `death` a `double`.
-Note: the function does not check that birth <= death.
-**/
-inline std::map<int, std::vector<std::pair<double, double>>> read_persistence_intervals_grouped_by_dimension(
- std::string const& filename) {
- std::map<int, std::vector<std::pair<double, double>>> ret;
- read_persistence_intervals_and_dimension(
- filename, boost::make_function_output_iterator([&ret](std::tuple<int, double, double> t) {
- ret[get<0>(t)].push_back(std::make_pair(get<1>(t), get<2>(t)));
- }));
- return ret;
-}
-
-/**
-Reads a file containing persistence intervals.
-Each line might contain 2, 3 or 4 values: [[field] dimension] birth death
-If `only_this_dim` = -1, dimension is ignored and all lines are returned.
-If `only_this_dim` is >= 0, only the lines where dimension = `only_this_dim`
-(or where dimension is not specified) are returned.
-The return value is an `std::vector<std::pair<birth, death>>`
-where `dim` is an `int`, `birth` a `double`, and `death` a `double`.
-Note: the function does not check that birth <= death.
-**/
-inline std::vector<std::pair<double, double>> read_persistence_intervals_in_dimension(std::string const& filename,
- int only_this_dim = -1) {
- std::vector<std::pair<double, double>> ret;
- read_persistence_intervals_and_dimension(
- filename, boost::make_function_output_iterator([only_this_dim, &ret](std::tuple<int, double, double> t) {
- if (only_this_dim == get<0>(t) || only_this_dim == -1) ret.emplace_back(get<1>(t), get<2>(t));
- }));
- return ret;
-}
-
-} // namespace Gudhi
-
-#endif // READER_UTILS_H_
diff --git a/include/gudhi/sparsify_point_set.h b/include/gudhi/sparsify_point_set.h
deleted file mode 100644
index db10e0b1..00000000
--- a/include/gudhi/sparsify_point_set.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clement Jamin
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SPARSIFY_POINT_SET_H_
-#define SPARSIFY_POINT_SET_H_
-
-#include <gudhi/Kd_tree_search.h>
-#ifdef GUDHI_SUBSAMPLING_PROFILING
-#include <gudhi/Clock.h>
-#endif
-
-#include <cstddef>
-#include <vector>
-
-namespace Gudhi {
-
-namespace subsampling {
-
-/**
- * \ingroup subsampling
- * \brief Outputs a subset of the input points so that the
- * squared distance between any two points
- * is greater than or equal to `min_squared_dist`.
- *
- * \tparam Kernel must be a model of the <a target="_blank"
- * href="http://doc.cgal.org/latest/Spatial_searching/classSearchTraits.html">SearchTraits</a>
- * concept, such as the <a target="_blank"
- * href="http://doc.cgal.org/latest/Kernel_d/classCGAL_1_1Epick__d.html">CGAL::Epick_d</a> class, which
- * can be static if you know the ambiant dimension at compile-time, or dynamic if you don't.
- * \tparam Point_range Range whose value type is Kernel::Point_d. It must provide random-access
- * via `operator[]` and the points should be stored contiguously in memory.
- * \tparam OutputIterator Output iterator whose value type is Kernel::Point_d.
- *
- * @param[in] k A kernel object.
- * @param[in] input_pts Const reference to the input points.
- * @param[in] min_squared_dist Minimum squared distance separating the output points.
- * @param[out] output_it The output iterator.
- */
-template <typename Kernel, typename Point_range, typename OutputIterator>
-void
-sparsify_point_set(
- const Kernel &k, Point_range const& input_pts,
- typename Kernel::FT min_squared_dist,
- OutputIterator output_it) {
- typedef typename Gudhi::spatial_searching::Kd_tree_search<
- Kernel, Point_range> Points_ds;
-
-#ifdef GUDHI_SUBSAMPLING_PROFILING
- Gudhi::Clock t;
-#endif
-
- Points_ds points_ds(input_pts);
-
- std::vector<bool> dropped_points(input_pts.size(), false);
-
- // Parse the input points, and add them if they are not too close to
- // the other points
- std::size_t pt_idx = 0;
- for (typename Point_range::const_iterator it_pt = input_pts.begin();
- it_pt != input_pts.end();
- ++it_pt, ++pt_idx) {
- if (dropped_points[pt_idx])
- continue;
-
- *output_it++ = *it_pt;
-
- auto ins_range = points_ds.incremental_nearest_neighbors(*it_pt);
-
- // If another point Q is closer that min_squared_dist, mark Q to be dropped
- for (auto const& neighbor : ins_range) {
- std::size_t neighbor_point_idx = neighbor.first;
- // If the neighbor is too close, we drop the neighbor
- if (neighbor.second < min_squared_dist) {
- // N.B.: If neighbor_point_idx < pt_idx,
- // dropped_points[neighbor_point_idx] is already true but adding a
- // test doesn't make things faster, so why bother?
- dropped_points[neighbor_point_idx] = true;
- } else {
- break;
- }
- }
- }
-
-#ifdef GUDHI_SUBSAMPLING_PROFILING
- t.end();
- std::cerr << "Point set sparsified in " << t.num_seconds()
- << " seconds." << std::endl;
-#endif
-}
-
-} // namespace subsampling
-} // namespace Gudhi
-
-#endif // SPARSIFY_POINT_SET_H_
diff --git a/include/gudhi/writing_persistence_to_file.h b/include/gudhi/writing_persistence_to_file.h
deleted file mode 100644
index 34448576..00000000
--- a/include/gudhi/writing_persistence_to_file.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2017 Swansea University, UK
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef WRITING_PERSISTENCE_TO_FILE_H_
-#define WRITING_PERSISTENCE_TO_FILE_H_
-
-#include <iostream>
-#include <string>
-#include <limits>
-
-namespace Gudhi {
-
-/**
-* This is a class to store persistence intervals. Its main purpose is to
-* exchange data in between different packages and provide unified way
-* of writing a collection of persistence intervals to file.
-**/
-template <typename Filtration_type, typename Coefficient_field>
-class Persistence_interval_common {
- public:
- /**
- * Constructor taking as an input birth and death of the pair.
- **/
- Persistence_interval_common(Filtration_type birth, Filtration_type death)
- : birth_(birth),
- death_(death),
- dimension_(std::numeric_limits<unsigned>::max()),
- arith_element_(std::numeric_limits<Coefficient_field>::max()) {}
-
- /**
- * Constructor taking as an input birth, death and dimension of the pair.
- **/
- Persistence_interval_common(Filtration_type birth, Filtration_type death, unsigned dim)
- : birth_(birth), death_(death), dimension_(dim), arith_element_(std::numeric_limits<Coefficient_field>::max()) {}
-
- /**
-* Constructor taking as an input birth, death, dimension of the pair as well
-* as the number p such that this interval is present over Z_p field.
-**/
- Persistence_interval_common(Filtration_type birth, Filtration_type death, unsigned dim, Coefficient_field field)
- : birth_(birth), death_(death), dimension_(dim), arith_element_(field) {}
-
- /**
- * Operator to compare two persistence pairs. During the comparision all the
- * fields: birth, death, dimensiona and arith_element_ are taken into account
- * and they all have to be equal for two pairs to be equal.
- **/
- bool operator==(const Persistence_interval_common& i2) const {
- return ((this->birth_ == i2.birth_) && (this->death_ == i2.death_) && (this->dimension_ == i2.dimension_) &&
- (this->arith_element_ == i2.arith_element_));
- }
-
- /**
- * Check if two persistence paris are not equal.
- **/
- bool operator!=(const Persistence_interval_common& i2) const { return (!((*this) == i2)); }
-
- /**
- * Operator to compare objects of a type Persistence_interval_common.
- * One intervals is smaller than the other if it has lower persistence.
- * Note that this operator do not take Arith_element into account when doing comparisions.
- **/
- bool operator<(const Persistence_interval_common& i2) const {
- return fabs(this->death_ - this->birth_) < fabs(i2.death_ - i2.birth_);
- }
-
- friend std::ostream& operator<<(std::ostream& out, const Persistence_interval_common& it) {
- if (it.arith_element_ != std::numeric_limits<Coefficient_field>::max()) {
- out << it.arith_element_ << " ";
- }
- if (it.dimension_ != std::numeric_limits<unsigned>::max()) {
- out << it.dimension_ << " ";
- }
- out << it.birth_ << " " << it.death_ << " ";
- return out;
- }
-
- private:
- Filtration_type birth_;
- Filtration_type death_;
- unsigned dimension_;
- Coefficient_field arith_element_;
-};
-
-/**
- * This function write a vector<Persistence_interval_common> to a stream
-**/
-template <typename Persistence_interval_range>
-void write_persistence_intervals_to_stream(const Persistence_interval_range& intervals,
- std::ostream& out = std::cout) {
- for (auto interval : intervals) {
- out << interval << "\n";
- }
-}
-
-} // namespace Gudhi
-
-#endif // WRITING_PERSISTENCE_TO_FILE_H_
diff --git a/utilities/Alpha_complex/CMakeLists.txt b/utilities/Alpha_complex/CMakeLists.txt
deleted file mode 100644
index 7ace6064..00000000
--- a/utilities/Alpha_complex/CMakeLists.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-project(Alpha_complex_utilities)
-
-if(CGAL_FOUND)
- add_executable(alpha_complex_3d_persistence alpha_complex_3d_persistence.cpp)
- target_link_libraries(alpha_complex_3d_persistence ${CGAL_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY})
- add_executable(exact_alpha_complex_3d_persistence exact_alpha_complex_3d_persistence.cpp)
- target_link_libraries(exact_alpha_complex_3d_persistence ${CGAL_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY})
- add_executable(weighted_alpha_complex_3d_persistence weighted_alpha_complex_3d_persistence.cpp)
- target_link_libraries(weighted_alpha_complex_3d_persistence ${CGAL_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
- if (TBB_FOUND)
- target_link_libraries(alpha_complex_3d_persistence ${TBB_LIBRARIES})
- target_link_libraries(exact_alpha_complex_3d_persistence ${TBB_LIBRARIES})
- target_link_libraries(weighted_alpha_complex_3d_persistence ${TBB_LIBRARIES})
- endif(TBB_FOUND)
-
- add_test(NAME Alpha_complex_utilities_alpha_complex_3d_persistence COMMAND $<TARGET_FILE:alpha_complex_3d_persistence>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off" "-p" "2" "-m" "0.45")
- add_test(NAME Alpha_complex_utilities_exact_alpha_complex_3d COMMAND $<TARGET_FILE:exact_alpha_complex_3d_persistence>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off" "-p" "2" "-m" "0.45")
- add_test(NAME Alpha_complex_utilities_weighted_alpha_complex_3d COMMAND $<TARGET_FILE:weighted_alpha_complex_3d_persistence>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off" "${CMAKE_SOURCE_DIR}/data/points/tore3D_300.weights" "-p" "2" "-m" "0.45")
-
- install(TARGETS alpha_complex_3d_persistence DESTINATION bin)
- install(TARGETS exact_alpha_complex_3d_persistence DESTINATION bin)
- install(TARGETS weighted_alpha_complex_3d_persistence DESTINATION bin)
-
- if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.7.0)
- add_executable (alpha_complex_persistence alpha_complex_persistence.cpp)
- target_link_libraries(alpha_complex_persistence ${CGAL_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
- add_executable(periodic_alpha_complex_3d_persistence periodic_alpha_complex_3d_persistence.cpp)
- target_link_libraries(periodic_alpha_complex_3d_persistence ${CGAL_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
- if (TBB_FOUND)
- target_link_libraries(alpha_complex_persistence ${TBB_LIBRARIES})
- target_link_libraries(periodic_alpha_complex_3d_persistence ${TBB_LIBRARIES})
- endif(TBB_FOUND)
- add_test(NAME Alpha_complex_utilities_alpha_complex_persistence COMMAND $<TARGET_FILE:alpha_complex_persistence>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off" "-p" "2" "-m" "0.45")
- add_test(NAME Alpha_complex_utilities_periodic_alpha_complex_3d_persistence COMMAND $<TARGET_FILE:periodic_alpha_complex_3d_persistence>
- "${CMAKE_SOURCE_DIR}/data/points/grid_10_10_10_in_0_1.off" "${CMAKE_SOURCE_DIR}/data/points/iso_cuboid_3_in_0_1.txt" "-p" "2" "-m" "0")
-
- install(TARGETS alpha_complex_persistence DESTINATION bin)
- install(TARGETS periodic_alpha_complex_3d_persistence DESTINATION bin)
-
- endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.7.0)
-
- if (NOT CGAL_VERSION VERSION_LESS 4.11.0)
- add_executable(weighted_periodic_alpha_complex_3d_persistence weighted_periodic_alpha_complex_3d_persistence.cpp)
- target_link_libraries(weighted_periodic_alpha_complex_3d_persistence ${CGAL_LIBRARY})
- if (TBB_FOUND)
- target_link_libraries(weighted_periodic_alpha_complex_3d_persistence ${TBB_LIBRARIES})
- endif(TBB_FOUND)
-
- add_test(NAME Alpha_complex_utilities_weigted_periodic_alpha_complex_3d COMMAND $<TARGET_FILE:weighted_periodic_alpha_complex_3d_persistence>
- "${CMAKE_SOURCE_DIR}/data/points/grid_10_10_10_in_0_1.off" "${CMAKE_SOURCE_DIR}/data/points/grid_10_10_10_in_0_1.weights"
- "${CMAKE_SOURCE_DIR}/data/points/iso_cuboid_3_in_0_1.txt" "3" "1.0")
-
- install(TARGETS weighted_periodic_alpha_complex_3d_persistence DESTINATION bin)
-
- endif (NOT CGAL_VERSION VERSION_LESS 4.11.0)
-
-endif(CGAL_FOUND)
diff --git a/utilities/Alpha_complex/alpha_complex_3d_helper.h b/utilities/Alpha_complex/alpha_complex_3d_helper.h
deleted file mode 100644
index a72fd96d..00000000
--- a/utilities/Alpha_complex/alpha_complex_3d_helper.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef ALPHA_COMPLEX_3D_HELPER_H_
-#define ALPHA_COMPLEX_3D_HELPER_H_
-
-template <class Vertex_list, class Cell_handle>
-Vertex_list from_cell(const Cell_handle& ch) {
- Vertex_list the_list;
- for (auto i = 0; i < 4; i++) {
-#ifdef DEBUG_TRACES
- std::cout << "from cell[" << i << "]=" << ch->vertex(i)->point() << std::endl;
-#endif // DEBUG_TRACES
- the_list.push_back(ch->vertex(i));
- }
- return the_list;
-}
-
-template <class Vertex_list, class Facet>
-Vertex_list from_facet(const Facet& fct) {
- Vertex_list the_list;
- for (auto i = 0; i < 4; i++) {
- if (fct.second != i) {
-#ifdef DEBUG_TRACES
- std::cout << "from facet=[" << i << "]" << fct.first->vertex(i)->point() << std::endl;
-#endif // DEBUG_TRACES
- the_list.push_back(fct.first->vertex(i));
- }
- }
- return the_list;
-}
-
-template <class Vertex_list, class Edge_3>
-Vertex_list from_edge(const Edge_3& edg) {
- Vertex_list the_list;
- for (auto i : {edg.second, edg.third}) {
-#ifdef DEBUG_TRACES
- std::cout << "from edge[" << i << "]=" << edg.first->vertex(i)->point() << std::endl;
-#endif // DEBUG_TRACES
- the_list.push_back(edg.first->vertex(i));
- }
- return the_list;
-}
-
-template <class Vertex_list, class Vertex_handle>
-Vertex_list from_vertex(const Vertex_handle& vh) {
- Vertex_list the_list;
-#ifdef DEBUG_TRACES
- std::cout << "from vertex=" << vh->point() << std::endl;
-#endif // DEBUG_TRACES
- the_list.push_back(vh);
- return the_list;
-}
-
-#endif // ALPHA_COMPLEX_3D_HELPER_H_
diff --git a/utilities/Alpha_complex/alpha_complex_3d_persistence.cpp b/utilities/Alpha_complex/alpha_complex_3d_persistence.cpp
deleted file mode 100644
index 6e603155..00000000
--- a/utilities/Alpha_complex/alpha_complex_3d_persistence.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <boost/version.hpp>
-#include <boost/program_options.hpp>
-#include <boost/variant.hpp>
-
-#if BOOST_VERSION >= 105400
-#include <boost/container/static_vector.hpp>
-#endif
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Points_3D_off_io.h>
-
-#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
-#include <CGAL/Delaunay_triangulation_3.h>
-#include <CGAL/Alpha_shape_3.h>
-#include <CGAL/Alpha_shape_cell_base_3.h>
-#include <CGAL/Alpha_shape_vertex_base_3.h>
-#include <CGAL/iterator.h>
-
-#include <fstream>
-#include <cmath>
-#include <string>
-#include <tuple>
-#include <map>
-#include <utility>
-#include <vector>
-#include <cstdlib>
-
-#include "alpha_complex_3d_helper.h"
-
-// Alpha_shape_3 templates type definitions
-using Kernel = CGAL::Exact_predicates_inexact_constructions_kernel;
-using Vb = CGAL::Alpha_shape_vertex_base_3<Kernel>;
-using Fb = CGAL::Alpha_shape_cell_base_3<Kernel>;
-using Tds = CGAL::Triangulation_data_structure_3<Vb, Fb>;
-using Triangulation_3 = CGAL::Delaunay_triangulation_3<Kernel, Tds>;
-using Alpha_shape_3 = CGAL::Alpha_shape_3<Triangulation_3>;
-
-// From file type definition
-using Point_3 = Kernel::Point_3;
-
-// filtration with alpha values needed type definition
-using Alpha_value_type = Alpha_shape_3::FT;
-using Object = CGAL::Object;
-using Dispatch =
- CGAL::Dispatch_output_iterator<CGAL::cpp11::tuple<Object, Alpha_value_type>,
- CGAL::cpp11::tuple<std::back_insert_iterator<std::vector<Object> >,
- std::back_insert_iterator<std::vector<Alpha_value_type> > > >;
-using Cell_handle = Alpha_shape_3::Cell_handle;
-using Facet = Alpha_shape_3::Facet;
-using Edge_3 = Alpha_shape_3::Edge;
-using Vertex_handle = Alpha_shape_3::Vertex_handle;
-
-#if BOOST_VERSION >= 105400
-using Vertex_list = boost::container::static_vector<Alpha_shape_3::Vertex_handle, 4>;
-#else
-using Vertex_list = std::vector<Alpha_shape_3::Vertex_handle>;
-#endif
-
-// gudhi type definition
-using ST = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-using Filtration_value = ST::Filtration_value;
-using Simplex_tree_vertex = ST::Vertex_handle;
-using Alpha_shape_simplex_tree_map = std::map<Alpha_shape_3::Vertex_handle, Simplex_tree_vertex>;
-using Simplex_tree_vector_vertex = std::vector<Simplex_tree_vertex>;
-using Persistent_cohomology =
- Gudhi::persistent_cohomology::Persistent_cohomology<ST, Gudhi::persistent_cohomology::Field_Zp>;
-
-void program_options(int argc, char *argv[], std::string &off_file_points, std::string &output_file_diag,
- int &coeff_field_characteristic, Filtration_value &min_persistence);
-
-int main(int argc, char **argv) {
- std::string off_file_points;
- std::string output_file_diag;
- int coeff_field_characteristic;
- Filtration_value min_persistence;
-
- program_options(argc, argv, off_file_points, output_file_diag, coeff_field_characteristic, min_persistence);
-
- // Read the OFF file (input file name given as parameter) and triangulate points
- Gudhi::Points_3D_off_reader<Point_3> off_reader(off_file_points);
- // Check the read operation was correct
- if (!off_reader.is_valid()) {
- std::cerr << "Unable to read file " << off_file_points << std::endl;
- exit(-1);
- }
-
- // Retrieve the points
- std::vector<Point_3> lp = off_reader.get_point_cloud();
-
- // alpha shape construction from points. CGAL has a strange behavior in REGULARIZED mode.
- Alpha_shape_3 as(lp.begin(), lp.end(), 0, Alpha_shape_3::GENERAL);
-#ifdef DEBUG_TRACES
- std::cout << "Alpha shape computed in GENERAL mode" << std::endl;
-#endif // DEBUG_TRACES
-
- // filtration with alpha values from alpha shape
- std::vector<Object> the_objects;
- std::vector<Alpha_value_type> the_alpha_values;
-
- Dispatch disp = CGAL::dispatch_output<Object, Alpha_value_type>(std::back_inserter(the_objects),
- std::back_inserter(the_alpha_values));
-
- as.filtration_with_alpha_values(disp);
-#ifdef DEBUG_TRACES
- std::cout << "filtration_with_alpha_values returns : " << the_objects.size() << " objects" << std::endl;
-#endif // DEBUG_TRACES
-
- Alpha_shape_3::size_type count_vertices = 0;
- Alpha_shape_3::size_type count_edges = 0;
- Alpha_shape_3::size_type count_facets = 0;
- Alpha_shape_3::size_type count_cells = 0;
-
- // Loop on objects vector
- Vertex_list vertex_list;
- ST simplex_tree;
- Alpha_shape_simplex_tree_map map_cgal_simplex_tree;
- std::vector<Alpha_value_type>::iterator the_alpha_value_iterator = the_alpha_values.begin();
- for (auto object_iterator : the_objects) {
- // Retrieve Alpha shape vertex list from object
- if (const Cell_handle *cell = CGAL::object_cast<Cell_handle>(&object_iterator)) {
- vertex_list = from_cell<Vertex_list, Cell_handle>(*cell);
- count_cells++;
- } else if (const Facet *facet = CGAL::object_cast<Facet>(&object_iterator)) {
- vertex_list = from_facet<Vertex_list, Facet>(*facet);
- count_facets++;
- } else if (const Edge_3 *edge = CGAL::object_cast<Edge_3>(&object_iterator)) {
- vertex_list = from_edge<Vertex_list, Edge_3>(*edge);
- count_edges++;
- } else if (const Vertex_handle *vertex = CGAL::object_cast<Vertex_handle>(&object_iterator)) {
- count_vertices++;
- vertex_list = from_vertex<Vertex_list, Vertex_handle>(*vertex);
- }
- // Construction of the vector of simplex_tree vertex from list of alpha_shapes vertex
- Simplex_tree_vector_vertex the_simplex;
- for (auto the_alpha_shape_vertex : vertex_list) {
- Alpha_shape_simplex_tree_map::iterator the_map_iterator = map_cgal_simplex_tree.find(the_alpha_shape_vertex);
- if (the_map_iterator == map_cgal_simplex_tree.end()) {
- // alpha shape not found
- Simplex_tree_vertex vertex = map_cgal_simplex_tree.size();
-#ifdef DEBUG_TRACES
- std::cout << "vertex [" << the_alpha_shape_vertex->point() << "] not found - insert " << vertex << std::endl;
-#endif // DEBUG_TRACES
- the_simplex.push_back(vertex);
- map_cgal_simplex_tree.emplace(the_alpha_shape_vertex, vertex);
- } else {
- // alpha shape found
- Simplex_tree_vertex vertex = the_map_iterator->second;
-#ifdef DEBUG_TRACES
- std::cout << "vertex [" << the_alpha_shape_vertex->point() << "] found in " << vertex << std::endl;
-#endif // DEBUG_TRACES
- the_simplex.push_back(vertex);
- }
- }
- // Construction of the simplex_tree
- Filtration_value filtr = /*std::sqrt*/ (*the_alpha_value_iterator);
-#ifdef DEBUG_TRACES
- std::cout << "filtration = " << filtr << std::endl;
-#endif // DEBUG_TRACES
- simplex_tree.insert_simplex(the_simplex, filtr);
- GUDHI_CHECK(the_alpha_value_iterator != the_alpha_values.end(), "CGAL provided more simplices than values");
- ++the_alpha_value_iterator;
- }
-
-#ifdef DEBUG_TRACES
- std::cout << "vertices \t\t" << count_vertices << std::endl;
- std::cout << "edges \t\t" << count_edges << std::endl;
- std::cout << "facets \t\t" << count_facets << std::endl;
- std::cout << "cells \t\t" << count_cells << std::endl;
-
- std::cout << "Information of the Simplex Tree: " << std::endl;
- std::cout << " Number of vertices = " << simplex_tree.num_vertices() << " ";
- std::cout << " Number of simplices = " << simplex_tree.num_simplices() << std::endl << std::endl;
- std::cout << " Dimension = " << simplex_tree.dimension() << " ";
-#endif // DEBUG_TRACES
-
-#ifdef DEBUG_TRACES
- std::cout << "Iterator on vertices: " << std::endl;
- for (auto vertex : simplex_tree.complex_vertex_range()) {
- std::cout << vertex << " ";
- }
-#endif // DEBUG_TRACES
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- std::cout << "Simplex_tree dim: " << simplex_tree.dimension() << std::endl;
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(simplex_tree, true);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(coeff_field_characteristic);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (output_file_diag.empty()) {
- pcoh.output_diagram();
- } else {
- std::cout << "Result in file: " << output_file_diag << std::endl;
- std::ofstream out(output_file_diag);
- pcoh.output_diagram(out);
- out.close();
- }
-
- return 0;
-}
-
-void program_options(int argc, char *argv[], std::string &off_file_points, std::string &output_file_diag,
- int &coeff_field_characteristic, Filtration_value &min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()("input-file", po::value<std::string>(&off_file_points),
- "Name of file containing a point set. Format is one point per line: X1 ... Xd ");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()("help,h", "produce help message")(
- "output-file,o", po::value<std::string>(&output_file_diag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")(
- "field-charac,p", po::value<int>(&coeff_field_characteristic)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")(
- "min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length "
- "intervals");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a 3D Alpha complex defined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/utilities/Alpha_complex/alpha_complex_persistence.cpp b/utilities/Alpha_complex/alpha_complex_persistence.cpp
deleted file mode 100644
index 8e6c40b7..00000000
--- a/utilities/Alpha_complex/alpha_complex_persistence.cpp
+++ /dev/null
@@ -1,138 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <boost/program_options.hpp>
-
-#include <CGAL/Epick_d.h>
-
-#include <gudhi/Alpha_complex.h>
-#include <gudhi/Persistent_cohomology.h>
-// to construct a simplex_tree from alpha complex
-#include <gudhi/Simplex_tree.h>
-
-#include <iostream>
-#include <string>
-#include <limits> // for numeric_limits
-
-using Simplex_tree = Gudhi::Simplex_tree<>;
-using Filtration_value = Simplex_tree::Filtration_value;
-
-void program_options(int argc, char *argv[], std::string &off_file_points, std::string &output_file_diag,
- Filtration_value &alpha_square_max_value, int &coeff_field_characteristic,
- Filtration_value &min_persistence);
-
-int main(int argc, char **argv) {
- std::string off_file_points;
- std::string output_file_diag;
- Filtration_value alpha_square_max_value;
- int coeff_field_characteristic;
- Filtration_value min_persistence;
-
- program_options(argc, argv, off_file_points, output_file_diag, alpha_square_max_value, coeff_field_characteristic,
- min_persistence);
-
- // ----------------------------------------------------------------------------
- // Init of an alpha complex from an OFF file
- // ----------------------------------------------------------------------------
- using Kernel = CGAL::Epick_d<CGAL::Dynamic_dimension_tag>;
- Gudhi::alpha_complex::Alpha_complex<Kernel> alpha_complex_from_file(off_file_points);
-
- Simplex_tree simplex;
- if (alpha_complex_from_file.create_complex(simplex, alpha_square_max_value)) {
- // ----------------------------------------------------------------------------
- // Display information about the alpha complex
- // ----------------------------------------------------------------------------
- std::cout << "Simplicial complex is of dimension " << simplex.dimension() << " - " << simplex.num_simplices()
- << " simplices - " << simplex.num_vertices() << " vertices." << std::endl;
-
- // Sort the simplices in the order of the filtration
- simplex.initialize_filtration();
-
- std::cout << "Simplex_tree dim: " << simplex.dimension() << std::endl;
- // Compute the persistence diagram of the complex
- Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Gudhi::persistent_cohomology::Field_Zp> pcoh(
- simplex);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(coeff_field_characteristic);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (output_file_diag.empty()) {
- pcoh.output_diagram();
- } else {
- std::cout << "Result in file: " << output_file_diag << std::endl;
- std::ofstream out(output_file_diag);
- pcoh.output_diagram(out);
- out.close();
- }
- }
-
- return 0;
-}
-
-void program_options(int argc, char *argv[], std::string &off_file_points, std::string &output_file_diag,
- Filtration_value &alpha_square_max_value, int &coeff_field_characteristic,
- Filtration_value &min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()("input-file", po::value<std::string>(&off_file_points),
- "Name of file containing a point set. Format is one point per line: X1 ... Xd ");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()("help,h", "produce help message")(
- "output-file,o", po::value<std::string>(&output_file_diag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")(
- "max-alpha-square-value,r", po::value<Filtration_value>(&alpha_square_max_value)
- ->default_value(std::numeric_limits<Filtration_value>::infinity()),
- "Maximal alpha square value for the Alpha complex construction.")(
- "field-charac,p", po::value<int>(&coeff_field_characteristic)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")(
- "min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length "
- "intervals");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of an Alpha complex defined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/utilities/Alpha_complex/alphacomplex.md b/utilities/Alpha_complex/alphacomplex.md
deleted file mode 100644
index 0fe98837..00000000
--- a/utilities/Alpha_complex/alphacomplex.md
+++ /dev/null
@@ -1,165 +0,0 @@
----
-layout: page
-title: "Alpha complex"
-meta_title: "Alpha complex"
-teaser: ""
-permalink: /alphacomplex/
----
-{::comment}
-Leave the lines above as it is required by the web site generator 'Jekyll'
-{:/comment}
-
-
-## alpha_complex_persistence ##
-
-This program computes the persistent homology with coefficient field Z/pZ of the dD alpha complex built from a dD point cloud.
-The output diagram contains one bar per line, written with the convention:
-
-```
- p dim birth death
-```
-
-where `dim` is the dimension of the homological feature, `birth` and `death` are respectively the birth and death of the feature,
-and `p` is the characteristic of the field *Z/pZ* used for homology coefficients (`p` must be a prime number).
-
-**Usage**
-
-```
- alpha_complex_persistence [options] <input OFF file>
-```
-
-where
-`<input OFF file>` is the path to the input point cloud in [nOFF ASCII format](http://www.geomview.org/docs/html/OFF.html).
-
-**Allowed options**
-
-* `-h [ --help ]` Produce help message
-* `-o [ --output-file ]` Name of file in which the persistence diagram is written. Default print in standard output.
-* `-r [ --max-alpha-square-value ]` (default = inf) Maximal alpha square value for the Alpha complex construction.
-* `-p [ --field-charac ]` (default = 11) Characteristic p of the coefficient field Z/pZ for computing homology.
-* `-m [ --min-persistence ]` (default = 0) Minimal lifetime of homology feature to be recorded. Enter a negative value to see zero length intervals.
-
-**Example**
-
-```
- alpha_complex_persistence -r 32 -p 2 -m 0.45 ../../data/points/tore3D_300.off
-```
-
-N.B.:
-
-* Filtration values are alpha square values.
-
-
-## alpha_complex_3d_persistence ##
-This program computes the persistent homology with coefficient field Z/pZ of the 3D alpha complex built from a 3D point cloud. The output diagram contains one bar per line, written with the convention:
-
-```
-p dim birth death
-```
-
-where `dim` is the dimension of the homological feature, `birth` and `death` are respectively the birth and death of the feature, and `p` is the characteristic of the field *Z/pZ* used for homology coefficients (`p` must be a prime number).
-
-**Usage**
-
-```
- alpha_complex_3d_persistence [options] <input OFF file>
-```
-
-where `<input OFF file>` is the path to the input point cloud in [nOFF ASCII format](http://www.geomview.org/docs/html/OFF.html).
-
-**Allowed options**
-
-* `-h [ --help ]` Produce help message
-* `-o [ --output-file ]` Name of file in which the persistence diagram is written. Default print in standard output.
-* `-p [ --field-charac ]` (default=11) Characteristic p of the coefficient field Z/pZ for computing homology.
-* `-m [ --min-persistence ]` (default = 0) Minimal lifetime of homology feature to be recorded. Enter a negative value to see zero length intervals.
-
-**Example**
-
-```
-alpha_complex_3d_persistence ../../data/points/tore3D_300.off -p 2 -m 0.45
-```
-
-N.B.:
-
-* `alpha_complex_3d_persistence` only accepts OFF files in dimension 3.
-* Filtration values are alpha square values.
-
-
-## exact_alpha_complex_3d_persistence ##
-
-Same as `alpha_complex_3d_persistence`, but using exact computation.
-It is slower, but it is necessary when points are on a grid for instance.
-
-
-
-## weighted_alpha_complex_3d_persistence ##
-
-Same as `alpha_complex_3d_persistence`, but using weighted points.
-
-**Usage**
-
-```
- weighted_alpha_complex_3d_persistence [options] <input OFF file> <weights input file>
-```
-
-where
-
-* `<input OFF file>` is the path to the input point cloud in [nOFF ASCII format](http://www.geomview.org/docs/html/OFF.html).
-* `<input weights file>` is the path to the file containing the weights of the points (one value per line).
-
-**Allowed options**
-
-* `-h [ --help ]` Produce help message
-* `-o [ --output-file ]` Name of file in which the persistence diagram is written. Default print in standard output.
-* `-p [ --field-charac ]` (default=11) Characteristic p of the coefficient field Z/pZ for computing homology.
-* `-m [ --min-persistence ]` (default = 0) Minimal lifetime of homology feature to be recorded. Enter a negative value to see zero length intervals.
-
-**Example**
-
-```
- weighted_alpha_complex_3d_persistence ../../data/points/tore3D_300.off ../../data/points/tore3D_300.weights -p 2 -m 0.45
-```
-
-
-N.B.:
-
-* Weights values are explained on CGAL [Alpha shape](https://doc.cgal.org/latest/Alpha_shapes_3/index.html#title0)
-and [Regular triangulation](https://doc.cgal.org/latest/Triangulation_3/index.html#Triangulation3secclassRegulartriangulation) documentation.
-* Filtration values are alpha square values.
-
-
-## periodic_alpha_complex_3d_persistence ##
-Same as `alpha_complex_3d_persistence`, but using periodic alpha shape 3d.
-Refer to the [CGAL's 3D Periodic Triangulations User Manual](https://doc.cgal.org/latest/Periodic_3_triangulation_3/index.html) for more details.
-
-**Usage**
-
-```
- periodic_alpha_complex_3d_persistence [options] <input OFF file> <cuboid file>
-```
-
-where
-
-* `<input OFF file>` is the path to the input point cloud in [nOFF ASCII format](http://www.geomview.org/docs/html/OFF.html).
-* `<cuboid file>` is the path to the file describing the periodic domain. It must be in the format described
-[here](/doc/latest/fileformats.html#FileFormatsIsoCuboid).
-
-**Allowed options**
-
-* `-h [ --help ]` Produce help message
-* `-o [ --output-file ]` Name of file in which the persistence diagram is written. Default print in standard output.
-* `-p [ --field-charac ]` (default=11) Characteristic p of the coefficient field Z/pZ for computing homology.
-* `-m [ --min-persistence ]` (default = 0) Minimal lifetime of homology feature to be recorded. Enter a negative value to see zero length intervals
-
-
-**Example**
-
-```
-periodic_alpha_complex_3d_persistence ../../data/points/grid_10_10_10_in_0_1.off ../../data/points/iso_cuboid_3_in_0_1.txt -p 3 -m 1.0
-```
-
-N.B.:
-
-* Cuboid file must be in the format described [here](/doc/latest/fileformats.html#FileFormatsIsoCuboid).
-* Filtration values are alpha square values.
diff --git a/utilities/Alpha_complex/exact_alpha_complex_3d_persistence.cpp b/utilities/Alpha_complex/exact_alpha_complex_3d_persistence.cpp
deleted file mode 100644
index 61f49bb1..00000000
--- a/utilities/Alpha_complex/exact_alpha_complex_3d_persistence.cpp
+++ /dev/null
@@ -1,265 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <boost/program_options.hpp>
-#include <boost/variant.hpp>
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Points_3D_off_io.h>
-
-#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
-#include <CGAL/Delaunay_triangulation_3.h>
-#include <CGAL/Alpha_shape_3.h>
-#include <CGAL/Alpha_shape_cell_base_3.h>
-#include <CGAL/Alpha_shape_vertex_base_3.h>
-#include <CGAL/iterator.h>
-
-#include <fstream>
-#include <cmath>
-#include <string>
-#include <tuple>
-#include <map>
-#include <utility>
-#include <vector>
-#include <cstdlib>
-
-#include "alpha_complex_3d_helper.h"
-
-// Alpha_shape_3 templates type definitions
-using Kernel = CGAL::Exact_predicates_inexact_constructions_kernel;
-using Exact_tag = CGAL::Tag_true;
-using Vb = CGAL::Alpha_shape_vertex_base_3<Kernel, CGAL::Default, Exact_tag>;
-using Fb = CGAL::Alpha_shape_cell_base_3<Kernel, CGAL::Default, Exact_tag>;
-using Tds = CGAL::Triangulation_data_structure_3<Vb, Fb>;
-using Triangulation_3 = CGAL::Delaunay_triangulation_3<Kernel, Tds>;
-using Alpha_shape_3 = CGAL::Alpha_shape_3<Triangulation_3, Exact_tag>;
-
-// From file type definition
-using Point_3 = Kernel::Point_3;
-
-// filtration with alpha values needed type definition
-using Alpha_value_type = Alpha_shape_3::FT;
-using Object = CGAL::Object;
-using Dispatch =
- CGAL::Dispatch_output_iterator<CGAL::cpp11::tuple<Object, Alpha_value_type>,
- CGAL::cpp11::tuple<std::back_insert_iterator<std::vector<Object> >,
- std::back_insert_iterator<std::vector<Alpha_value_type> > > >;
-using Cell_handle = Alpha_shape_3::Cell_handle;
-using Facet = Alpha_shape_3::Facet;
-using Edge_3 = Alpha_shape_3::Edge;
-using Vertex_handle = Alpha_shape_3::Vertex_handle;
-using Vertex_list = std::vector<Vertex_handle>;
-
-// gudhi type definition
-using ST = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-using Filtration_value = ST::Filtration_value;
-using Simplex_tree_vertex = ST::Vertex_handle;
-using Alpha_shape_simplex_tree_map = std::map<Alpha_shape_3::Vertex_handle, Simplex_tree_vertex>;
-using Simplex_tree_vector_vertex = std::vector<Simplex_tree_vertex>;
-using Persistent_cohomology =
- Gudhi::persistent_cohomology::Persistent_cohomology<ST, Gudhi::persistent_cohomology::Field_Zp>;
-
-void program_options(int argc, char *argv[], std::string &off_file_points, std::string &output_file_diag,
- int &coeff_field_characteristic, Filtration_value &min_persistence);
-
-int main(int argc, char **argv) {
- std::string off_file_points;
- std::string output_file_diag;
- int coeff_field_characteristic;
- Filtration_value min_persistence;
-
- program_options(argc, argv, off_file_points, output_file_diag, coeff_field_characteristic, min_persistence);
-
- // Read the OFF file (input file name given as parameter) and triangulate points
- Gudhi::Points_3D_off_reader<Point_3> off_reader(off_file_points);
- // Check the read operation was correct
- if (!off_reader.is_valid()) {
- std::cerr << "Unable to read file " << off_file_points << std::endl;
- exit(-1);
- }
-
- // Retrieve the points
- std::vector<Point_3> lp = off_reader.get_point_cloud();
-
- // alpha shape construction from points. CGAL has a strange behavior in REGULARIZED mode.
- Alpha_shape_3 as(lp.begin(), lp.end(), 0, Alpha_shape_3::GENERAL);
-#ifdef DEBUG_TRACES
- std::cout << "Alpha shape computed in GENERAL mode" << std::endl;
-#endif // DEBUG_TRACES
-
- // filtration with alpha values from alpha shape
- std::vector<Object> the_objects;
- std::vector<Alpha_value_type> the_alpha_values;
-
- Dispatch disp = CGAL::dispatch_output<Object, Alpha_value_type>(std::back_inserter(the_objects),
- std::back_inserter(the_alpha_values));
-
- as.filtration_with_alpha_values(disp);
-#ifdef DEBUG_TRACES
- std::cout << "filtration_with_alpha_values returns : " << the_objects.size() << " objects" << std::endl;
-#endif // DEBUG_TRACES
-
- Alpha_shape_3::size_type count_vertices = 0;
- Alpha_shape_3::size_type count_edges = 0;
- Alpha_shape_3::size_type count_facets = 0;
- Alpha_shape_3::size_type count_cells = 0;
-
- // Loop on objects vector
- Vertex_list vertex_list;
- ST simplex_tree;
- Alpha_shape_simplex_tree_map map_cgal_simplex_tree;
- std::vector<Alpha_value_type>::iterator the_alpha_value_iterator = the_alpha_values.begin();
- for (auto object_iterator : the_objects) {
- // Retrieve Alpha shape vertex list from object
- if (const Cell_handle *cell = CGAL::object_cast<Cell_handle>(&object_iterator)) {
- vertex_list = from_cell<Vertex_list, Cell_handle>(*cell);
- count_cells++;
- } else if (const Facet *facet = CGAL::object_cast<Facet>(&object_iterator)) {
- vertex_list = from_facet<Vertex_list, Facet>(*facet);
- count_facets++;
- } else if (const Edge_3 *edge = CGAL::object_cast<Edge_3>(&object_iterator)) {
- vertex_list = from_edge<Vertex_list, Edge_3>(*edge);
- count_edges++;
- } else if (const Vertex_handle *vertex = CGAL::object_cast<Vertex_handle>(&object_iterator)) {
- count_vertices++;
- vertex_list = from_vertex<Vertex_list, Vertex_handle>(*vertex);
- }
- // Construction of the vector of simplex_tree vertex from list of alpha_shapes vertex
- Simplex_tree_vector_vertex the_simplex;
- for (auto the_alpha_shape_vertex : vertex_list) {
- Alpha_shape_simplex_tree_map::iterator the_map_iterator = map_cgal_simplex_tree.find(the_alpha_shape_vertex);
- if (the_map_iterator == map_cgal_simplex_tree.end()) {
- // alpha shape not found
- Simplex_tree_vertex vertex = map_cgal_simplex_tree.size();
-#ifdef DEBUG_TRACES
- std::cout << "vertex [" << the_alpha_shape_vertex->point() << "] not found - insert " << vertex << std::endl;
-#endif // DEBUG_TRACES
- the_simplex.push_back(vertex);
- map_cgal_simplex_tree.emplace(the_alpha_shape_vertex, vertex);
- } else {
- // alpha shape found
- Simplex_tree_vertex vertex = the_map_iterator->second;
-#ifdef DEBUG_TRACES
- std::cout << "vertex [" << the_alpha_shape_vertex->point() << "] found in " << vertex << std::endl;
-#endif // DEBUG_TRACES
- the_simplex.push_back(vertex);
- }
- }
- // Construction of the simplex_tree
- // you can also use the_alpha_value_iterator->exact()
- Filtration_value filtr = /*std::sqrt*/ CGAL::to_double(the_alpha_value_iterator->exact());
-#ifdef DEBUG_TRACES
- std::cout << "filtration = " << filtr << std::endl;
-#endif // DEBUG_TRACES
- simplex_tree.insert_simplex(the_simplex, filtr);
- if (the_alpha_value_iterator != the_alpha_values.end())
- ++the_alpha_value_iterator;
- else
- std::cout << "This shall not happen" << std::endl;
- }
-
-#ifdef DEBUG_TRACES
- std::cout << "vertices \t\t" << count_vertices << std::endl;
- std::cout << "edges \t\t" << count_edges << std::endl;
- std::cout << "facets \t\t" << count_facets << std::endl;
- std::cout << "cells \t\t" << count_cells << std::endl;
-
- std::cout << "Information of the Simplex Tree: " << std::endl;
- std::cout << " Number of vertices = " << simplex_tree.num_vertices() << " ";
- std::cout << " Number of simplices = " << simplex_tree.num_simplices() << std::endl << std::endl;
- std::cout << " Dimension = " << simplex_tree.dimension() << " ";
-#endif // DEBUG_TRACES
-
-#ifdef DEBUG_TRACES
- std::cout << "Iterator on vertices: " << std::endl;
- for (auto vertex : simplex_tree.complex_vertex_range()) {
- std::cout << vertex << " ";
- }
-#endif // DEBUG_TRACES
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- std::cout << "Simplex_tree dim: " << simplex_tree.dimension() << std::endl;
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(simplex_tree, true);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(coeff_field_characteristic);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (output_file_diag.empty()) {
- pcoh.output_diagram();
- } else {
- std::cout << "Result in file: " << output_file_diag << std::endl;
- std::ofstream out(output_file_diag);
- pcoh.output_diagram(out);
- out.close();
- }
-
- return 0;
-}
-
-void program_options(int argc, char *argv[], std::string &off_file_points, std::string &output_file_diag,
- int &coeff_field_characteristic, Filtration_value &min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()("input-file", po::value<std::string>(&off_file_points),
- "Name of file containing a point set. Format is one point per line: X1 ... Xd ");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()("help,h", "produce help message")(
- "output-file,o", po::value<std::string>(&output_file_diag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")(
- "field-charac,p", po::value<int>(&coeff_field_characteristic)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")(
- "min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length "
- "intervals");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a 3D Alpha complex defined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/utilities/Alpha_complex/periodic_alpha_complex_3d_persistence.cpp b/utilities/Alpha_complex/periodic_alpha_complex_3d_persistence.cpp
deleted file mode 100644
index a261c5a3..00000000
--- a/utilities/Alpha_complex/periodic_alpha_complex_3d_persistence.cpp
+++ /dev/null
@@ -1,302 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- * Pawel Dlotko - 2017 - Swansea University, UK
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <boost/program_options.hpp>
-#include <boost/variant.hpp>
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Points_3D_off_io.h>
-
-#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
-#include <CGAL/Periodic_3_Delaunay_triangulation_traits_3.h>
-#include <CGAL/Periodic_3_Delaunay_triangulation_3.h>
-#include <CGAL/Alpha_shape_3.h>
-#include <CGAL/Alpha_shape_cell_base_3.h>
-#include <CGAL/Alpha_shape_vertex_base_3.h>
-#include <CGAL/iterator.h>
-
-#include <fstream>
-#include <cmath>
-#include <string>
-#include <tuple>
-#include <map>
-#include <utility>
-#include <vector>
-#include <cstdlib>
-
-#include "alpha_complex_3d_helper.h"
-
-// Traits
-using K = CGAL::Exact_predicates_inexact_constructions_kernel;
-using PK = CGAL::Periodic_3_Delaunay_triangulation_traits_3<K>;
-// Vertex type
-using DsVb = CGAL::Periodic_3_triangulation_ds_vertex_base_3<>;
-using Vb = CGAL::Triangulation_vertex_base_3<PK, DsVb>;
-using AsVb = CGAL::Alpha_shape_vertex_base_3<PK, Vb>;
-// Cell type
-using DsCb = CGAL::Periodic_3_triangulation_ds_cell_base_3<>;
-using Cb = CGAL::Triangulation_cell_base_3<PK, DsCb>;
-using AsCb = CGAL::Alpha_shape_cell_base_3<PK, Cb>;
-using Tds = CGAL::Triangulation_data_structure_3<AsVb, AsCb>;
-using P3DT3 = CGAL::Periodic_3_Delaunay_triangulation_3<PK, Tds>;
-using Alpha_shape_3 = CGAL::Alpha_shape_3<P3DT3>;
-using Point_3 = PK::Point_3;
-
-// filtration with alpha values needed type definition
-using Alpha_value_type = Alpha_shape_3::FT;
-using Object = CGAL::Object;
-using Dispatch =
- CGAL::Dispatch_output_iterator<CGAL::cpp11::tuple<Object, Alpha_value_type>,
- CGAL::cpp11::tuple<std::back_insert_iterator<std::vector<Object> >,
- std::back_insert_iterator<std::vector<Alpha_value_type> > > >;
-using Cell_handle = Alpha_shape_3::Cell_handle;
-using Facet = Alpha_shape_3::Facet;
-using Edge_3 = Alpha_shape_3::Edge;
-using Vertex_handle = Alpha_shape_3::Vertex_handle;
-using Vertex_list = std::vector<Alpha_shape_3::Vertex_handle>;
-
-// gudhi type definition
-using ST = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-using Filtration_value = ST::Filtration_value;
-using Simplex_tree_vertex = ST::Vertex_handle;
-using Alpha_shape_simplex_tree_map = std::map<Alpha_shape_3::Vertex_handle, Simplex_tree_vertex>;
-using Simplex_tree_vector_vertex = std::vector<Simplex_tree_vertex>;
-using Persistent_cohomology =
- Gudhi::persistent_cohomology::Persistent_cohomology<ST, Gudhi::persistent_cohomology::Field_Zp>;
-
-void program_options(int argc, char *argv[], std::string &off_file_points, std::string &cuboid_file,
- std::string &output_file_diag, int &coeff_field_characteristic, Filtration_value &min_persistence);
-
-int main(int argc, char **argv) {
- std::string off_file_points;
- std::string cuboid_file;
- std::string output_file_diag;
- int coeff_field_characteristic;
- Filtration_value min_persistence;
-
- program_options(argc, argv, off_file_points, cuboid_file, output_file_diag, coeff_field_characteristic,
- min_persistence);
-
- // Read the OFF file (input file name given as parameter) and triangulate points
- Gudhi::Points_3D_off_reader<Point_3> off_reader(off_file_points);
- // Check the read operation was correct
- if (!off_reader.is_valid()) {
- std::cerr << "Unable to read OFF file " << off_file_points << std::endl;
- exit(-1);
- }
-
- // Read iso_cuboid_3 information from file
- std::ifstream iso_cuboid_str(cuboid_file);
- double x_min, y_min, z_min, x_max, y_max, z_max;
- if (iso_cuboid_str.good()) {
- iso_cuboid_str >> x_min >> y_min >> z_min >> x_max >> y_max >> z_max;
- } else {
- std::cerr << "Unable to read file " << cuboid_file << std::endl;
- exit(-1);
- }
- // Checking if the cuboid is the same in x,y and z direction. If not, CGAL will not process it.
- if ((x_max - x_min != y_max - y_min) || (x_max - x_min != z_max - z_min) || (z_max - z_min != y_max - y_min)) {
- std::cerr << "The size of the cuboid in every directions is not the same." << std::endl;
- exit(-1);
- }
-
- // Retrieve the points
- std::vector<Point_3> lp = off_reader.get_point_cloud();
-
- // Define the periodic cube
- P3DT3 pdt(PK::Iso_cuboid_3(x_min, y_min, z_min, x_max, y_max, z_max));
- // Heuristic for inserting large point sets (if pts is reasonably large)
- pdt.insert(lp.begin(), lp.end(), true);
- // As pdt won't be modified anymore switch to 1-sheeted cover if possible
- if (pdt.is_triangulation_in_1_sheet()) {
- pdt.convert_to_1_sheeted_covering();
- } else {
- std::cerr << "ERROR: we were not able to construct a triangulation within a single periodic domain." << std::endl;
- exit(-1);
- }
- std::cout << "Periodic Delaunay computed." << std::endl;
-
- // alpha shape construction from points. CGAL has a strange behavior in REGULARIZED mode. This is the default mode
- // Maybe need to set it to GENERAL mode
- Alpha_shape_3 as(pdt, 0, Alpha_shape_3::GENERAL);
-
- // filtration with alpha values from alpha shape
- std::vector<Object> the_objects;
- std::vector<Alpha_value_type> the_alpha_values;
-
- Dispatch disp = CGAL::dispatch_output<Object, Alpha_value_type>(std::back_inserter(the_objects),
- std::back_inserter(the_alpha_values));
-
- as.filtration_with_alpha_values(disp);
-#ifdef DEBUG_TRACES
- std::cout << "filtration_with_alpha_values returns : " << the_objects.size() << " objects" << std::endl;
-#endif // DEBUG_TRACES
-
- Alpha_shape_3::size_type count_vertices = 0;
- Alpha_shape_3::size_type count_edges = 0;
- Alpha_shape_3::size_type count_facets = 0;
- Alpha_shape_3::size_type count_cells = 0;
-
- // Loop on objects vector
- Vertex_list vertex_list;
- ST simplex_tree;
- Alpha_shape_simplex_tree_map map_cgal_simplex_tree;
- std::vector<Alpha_value_type>::iterator the_alpha_value_iterator = the_alpha_values.begin();
- for (auto object_iterator : the_objects) {
- // Retrieve Alpha shape vertex list from object
- if (const Cell_handle *cell = CGAL::object_cast<Cell_handle>(&object_iterator)) {
- vertex_list = from_cell<Vertex_list, Cell_handle>(*cell);
- count_cells++;
- } else if (const Facet *facet = CGAL::object_cast<Facet>(&object_iterator)) {
- vertex_list = from_facet<Vertex_list, Facet>(*facet);
- count_facets++;
- } else if (const Edge_3 *edge = CGAL::object_cast<Edge_3>(&object_iterator)) {
- vertex_list = from_edge<Vertex_list, Edge_3>(*edge);
- count_edges++;
- } else if (const Vertex_handle *vertex = CGAL::object_cast<Vertex_handle>(&object_iterator)) {
- count_vertices++;
- vertex_list = from_vertex<Vertex_list, Vertex_handle>(*vertex);
- }
- // Construction of the vector of simplex_tree vertex from list of alpha_shapes vertex
- Simplex_tree_vector_vertex the_simplex;
- for (auto the_alpha_shape_vertex : vertex_list) {
- Alpha_shape_simplex_tree_map::iterator the_map_iterator = map_cgal_simplex_tree.find(the_alpha_shape_vertex);
- if (the_map_iterator == map_cgal_simplex_tree.end()) {
- // alpha shape not found
- Simplex_tree_vertex vertex = map_cgal_simplex_tree.size();
-#ifdef DEBUG_TRACES
- std::cout << "vertex [" << the_alpha_shape_vertex->point() << "] not found - insert " << vertex << std::endl;
-#endif // DEBUG_TRACES
- the_simplex.push_back(vertex);
- map_cgal_simplex_tree.emplace(the_alpha_shape_vertex, vertex);
- } else {
- // alpha shape found
- Simplex_tree_vertex vertex = the_map_iterator->second;
-#ifdef DEBUG_TRACES
- std::cout << "vertex [" << the_alpha_shape_vertex->point() << "] found in " << vertex << std::endl;
-#endif // DEBUG_TRACES
- the_simplex.push_back(vertex);
- }
- }
- // Construction of the simplex_tree
- Filtration_value filtr = /*std::sqrt*/ (*the_alpha_value_iterator);
-#ifdef DEBUG_TRACES
- std::cout << "filtration = " << filtr << std::endl;
-#endif // DEBUG_TRACES
- simplex_tree.insert_simplex(the_simplex, filtr);
- if (the_alpha_value_iterator != the_alpha_values.end())
- ++the_alpha_value_iterator;
- else
- std::cout << "This shall not happen" << std::endl;
- }
-
-#ifdef DEBUG_TRACES
- std::cout << "vertices \t\t" << count_vertices << std::endl;
- std::cout << "edges \t\t" << count_edges << std::endl;
- std::cout << "facets \t\t" << count_facets << std::endl;
- std::cout << "cells \t\t" << count_cells << std::endl;
-
- std::cout << "Information of the Simplex Tree: " << std::endl;
- std::cout << " Number of vertices = " << simplex_tree.num_vertices() << " ";
- std::cout << " Number of simplices = " << simplex_tree.num_simplices() << std::endl << std::endl;
- std::cout << " Dimension = " << simplex_tree.dimension() << " ";
-#endif // DEBUG_TRACES
-
-#ifdef DEBUG_TRACES
- std::cout << "Iterator on vertices: " << std::endl;
- for (auto vertex : simplex_tree.complex_vertex_range()) {
- std::cout << vertex << " ";
- }
-#endif // DEBUG_TRACES
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- std::cout << "Simplex_tree dim: " << simplex_tree.dimension() << std::endl;
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(simplex_tree, true);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(coeff_field_characteristic);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (output_file_diag.empty()) {
- pcoh.output_diagram();
- } else {
- std::cout << "Result in file: " << output_file_diag << std::endl;
- std::ofstream out(output_file_diag);
- pcoh.output_diagram(out);
- out.close();
- }
-
- return 0;
-}
-
-void program_options(int argc, char *argv[], std::string &off_file_points, std::string &cuboid_file,
- std::string &output_file_diag, int &coeff_field_characteristic,
- Filtration_value &min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()("input-file", po::value<std::string>(&off_file_points),
- "Name of file containing a point set. Format is one point per line: X1 ... Xd ")(
- "cuboid-file", po::value<std::string>(&cuboid_file),
- "Name of file describing the periodic domain. Format is: min_hx min_hy min_hz\nmax_hx max_hy max_hz");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()("help,h", "produce help message")(
- "output-file,o", po::value<std::string>(&output_file_diag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")(
- "field-charac,p", po::value<int>(&coeff_field_characteristic)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")(
- "min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length "
- "intervals");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
- pos.add("cuboid-file", 2);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file") || !vm.count("cuboid-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a periodic 3D Alpha complex defined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file cuboid-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/utilities/Alpha_complex/weighted_alpha_complex_3d_persistence.cpp b/utilities/Alpha_complex/weighted_alpha_complex_3d_persistence.cpp
deleted file mode 100644
index aa7ddee2..00000000
--- a/utilities/Alpha_complex/weighted_alpha_complex_3d_persistence.cpp
+++ /dev/null
@@ -1,316 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <boost/program_options.hpp>
-#include <boost/variant.hpp>
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Points_3D_off_io.h>
-
-#include <CGAL/config.h>
-#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
-#include <CGAL/Regular_triangulation_3.h>
-#include <CGAL/Alpha_shape_3.h>
-#include <CGAL/Alpha_shape_cell_base_3.h>
-#include <CGAL/Alpha_shape_vertex_base_3.h>
-#include <CGAL/iterator.h>
-
-// For CGAL < 4.11
-#if CGAL_VERSION_NR < 1041100000
-#include <CGAL/Regular_triangulation_euclidean_traits_3.h>
-#endif // CGAL_VERSION_NR < 1041100000
-
-#include <fstream>
-#include <cmath>
-#include <string>
-#include <tuple>
-#include <map>
-#include <utility>
-#include <vector>
-#include <cstdlib>
-
-#include "alpha_complex_3d_helper.h"
-
-// Alpha_shape_3 templates type definitions
-using Kernel = CGAL::Exact_predicates_inexact_constructions_kernel;
-
-// For CGAL < 4.11
-#if CGAL_VERSION_NR < 1041100000
-using Gt = CGAL::Regular_triangulation_euclidean_traits_3<Kernel>;
-using Vb = CGAL::Alpha_shape_vertex_base_3<Gt>;
-using Fb = CGAL::Alpha_shape_cell_base_3<Gt>;
-using Tds = CGAL::Triangulation_data_structure_3<Vb, Fb>;
-using Triangulation_3 = CGAL::Regular_triangulation_3<Gt, Tds>;
-
-// From file type definition
-using Point_3 = Gt::Bare_point;
-using Weighted_point_3 = Gt::Weighted_point;
-
-// For CGAL >= 4.11
-#else // CGAL_VERSION_NR < 1041100000
-using Rvb = CGAL::Regular_triangulation_vertex_base_3<Kernel>;
-using Vb = CGAL::Alpha_shape_vertex_base_3<Kernel, Rvb>;
-using Rcb = CGAL::Regular_triangulation_cell_base_3<Kernel>;
-using Cb = CGAL::Alpha_shape_cell_base_3<Kernel, Rcb>;
-using Tds = CGAL::Triangulation_data_structure_3<Vb, Cb>;
-using Triangulation_3 = CGAL::Regular_triangulation_3<Kernel, Tds>;
-
-// From file type definition
-using Point_3 = Triangulation_3::Bare_point;
-using Weighted_point_3 = Triangulation_3::Weighted_point;
-#endif // CGAL_VERSION_NR < 1041100000
-
-using Alpha_shape_3 = CGAL::Alpha_shape_3<Triangulation_3>;
-
-// filtration with alpha values needed type definition
-using Alpha_value_type = Alpha_shape_3::FT;
-using Object = CGAL::Object;
-using Dispatch =
- CGAL::Dispatch_output_iterator<CGAL::cpp11::tuple<Object, Alpha_value_type>,
- CGAL::cpp11::tuple<std::back_insert_iterator<std::vector<Object> >,
- std::back_insert_iterator<std::vector<Alpha_value_type> > > >;
-using Cell_handle = Alpha_shape_3::Cell_handle;
-using Facet = Alpha_shape_3::Facet;
-using Edge_3 = Alpha_shape_3::Edge;
-using Vertex_handle = Alpha_shape_3::Vertex_handle;
-using Vertex_list = std::vector<Alpha_shape_3::Vertex_handle>;
-
-// gudhi type definition
-using ST = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-using Filtration_value = ST::Filtration_value;
-using Simplex_tree_vertex = ST::Vertex_handle;
-using Alpha_shape_simplex_tree_map = std::map<Alpha_shape_3::Vertex_handle, Simplex_tree_vertex>;
-using Simplex_tree_vector_vertex = std::vector<Simplex_tree_vertex>;
-using Persistent_cohomology =
- Gudhi::persistent_cohomology::Persistent_cohomology<ST, Gudhi::persistent_cohomology::Field_Zp>;
-
-void program_options(int argc, char *argv[], std::string &off_file_points, std::string &weight_file,
- std::string &output_file_diag, int &coeff_field_characteristic, Filtration_value &min_persistence);
-
-int main(int argc, char **argv) {
- std::string off_file_points;
- std::string weight_file;
- std::string output_file_diag;
- int coeff_field_characteristic;
- Filtration_value min_persistence;
-
- program_options(argc, argv, off_file_points, weight_file, output_file_diag, coeff_field_characteristic,
- min_persistence);
-
- // Read the OFF file (input file name given as parameter) and triangulate points
- Gudhi::Points_3D_off_reader<Point_3> off_reader(off_file_points);
- // Check the read operation was correct
- if (!off_reader.is_valid()) {
- std::cerr << "Unable to read OFF file " << off_file_points << std::endl;
- exit(-1);
- }
-
- // Retrieve the points
- std::vector<Point_3> lp = off_reader.get_point_cloud();
-
- // Read weights information from file
- std::ifstream weights_ifstr(weight_file);
- std::vector<Weighted_point_3> wp;
- if (weights_ifstr.good()) {
- double weight = 0.0;
- std::size_t index = 0;
- wp.reserve(lp.size());
- // Attempt read the weight in a double format, return false if it fails
- while ((weights_ifstr >> weight) && (index < lp.size())) {
- wp.push_back(Weighted_point_3(lp[index], weight));
- index++;
- }
- if (index != lp.size()) {
- std::cerr << "Bad number of weights in file " << weight_file << std::endl;
- exit(-1);
- }
- } else {
- std::cerr << "Unable to read weights file " << weight_file << std::endl;
- exit(-1);
- }
-
- // alpha shape construction from points. CGAL has a strange behavior in REGULARIZED mode.
- Alpha_shape_3 as(wp.begin(), wp.end(), 0, Alpha_shape_3::GENERAL);
-#ifdef DEBUG_TRACES
- std::cout << "Alpha shape computed in GENERAL mode" << std::endl;
-#endif // DEBUG_TRACES
-
- // filtration with alpha values from alpha shape
- std::vector<Object> the_objects;
- std::vector<Alpha_value_type> the_alpha_values;
-
- Dispatch disp = CGAL::dispatch_output<Object, Alpha_value_type>(std::back_inserter(the_objects),
- std::back_inserter(the_alpha_values));
-
- as.filtration_with_alpha_values(disp);
-#ifdef DEBUG_TRACES
- std::cout << "filtration_with_alpha_values returns : " << the_objects.size() << " objects" << std::endl;
-#endif // DEBUG_TRACES
-
- Alpha_shape_3::size_type count_vertices = 0;
- Alpha_shape_3::size_type count_edges = 0;
- Alpha_shape_3::size_type count_facets = 0;
- Alpha_shape_3::size_type count_cells = 0;
-
- // Loop on objects vector
- Vertex_list vertex_list;
- ST simplex_tree;
- Alpha_shape_simplex_tree_map map_cgal_simplex_tree;
- std::vector<Alpha_value_type>::iterator the_alpha_value_iterator = the_alpha_values.begin();
- for (auto object_iterator : the_objects) {
- // Retrieve Alpha shape vertex list from object
- if (const Cell_handle *cell = CGAL::object_cast<Cell_handle>(&object_iterator)) {
- vertex_list = from_cell<Vertex_list, Cell_handle>(*cell);
- count_cells++;
- } else if (const Facet *facet = CGAL::object_cast<Facet>(&object_iterator)) {
- vertex_list = from_facet<Vertex_list, Facet>(*facet);
- count_facets++;
- } else if (const Edge_3 *edge = CGAL::object_cast<Edge_3>(&object_iterator)) {
- vertex_list = from_edge<Vertex_list, Edge_3>(*edge);
- count_edges++;
- } else if (const Vertex_handle *vertex = CGAL::object_cast<Vertex_handle>(&object_iterator)) {
- count_vertices++;
- vertex_list = from_vertex<Vertex_list, Vertex_handle>(*vertex);
- }
- // Construction of the vector of simplex_tree vertex from list of alpha_shapes vertex
- Simplex_tree_vector_vertex the_simplex;
- for (auto the_alpha_shape_vertex : vertex_list) {
- Alpha_shape_simplex_tree_map::iterator the_map_iterator = map_cgal_simplex_tree.find(the_alpha_shape_vertex);
- if (the_map_iterator == map_cgal_simplex_tree.end()) {
- // alpha shape not found
- Simplex_tree_vertex vertex = map_cgal_simplex_tree.size();
-#ifdef DEBUG_TRACES
- std::cout << "vertex [" << the_alpha_shape_vertex->point() << "] not found - insert " << vertex << std::endl;
-#endif // DEBUG_TRACES
- the_simplex.push_back(vertex);
- map_cgal_simplex_tree.emplace(the_alpha_shape_vertex, vertex);
- } else {
- // alpha shape found
- Simplex_tree_vertex vertex = the_map_iterator->second;
-#ifdef DEBUG_TRACES
- std::cout << "vertex [" << the_alpha_shape_vertex->point() << "] found in " << vertex << std::endl;
-#endif // DEBUG_TRACES
- the_simplex.push_back(vertex);
- }
- }
- // Construction of the simplex_tree
- Filtration_value filtr = /*std::sqrt*/ (*the_alpha_value_iterator);
-#ifdef DEBUG_TRACES
- std::cout << "filtration = " << filtr << std::endl;
-#endif // DEBUG_TRACES
- simplex_tree.insert_simplex(the_simplex, filtr);
- if (the_alpha_value_iterator != the_alpha_values.end())
- ++the_alpha_value_iterator;
- else
- std::cout << "This shall not happen" << std::endl;
- }
-
-#ifdef DEBUG_TRACES
- std::cout << "vertices \t\t" << count_vertices << std::endl;
- std::cout << "edges \t\t" << count_edges << std::endl;
- std::cout << "facets \t\t" << count_facets << std::endl;
- std::cout << "cells \t\t" << count_cells << std::endl;
-
- std::cout << "Information of the Simplex Tree: " << std::endl;
- std::cout << " Number of vertices = " << simplex_tree.num_vertices() << " ";
- std::cout << " Number of simplices = " << simplex_tree.num_simplices() << std::endl << std::endl;
- std::cout << " Dimension = " << simplex_tree.dimension() << " ";
-#endif // DEBUG_TRACES
-
-#ifdef DEBUG_TRACES
- std::cout << "Iterator on vertices: " << std::endl;
- for (auto vertex : simplex_tree.complex_vertex_range()) {
- std::cout << vertex << " ";
- }
-#endif // DEBUG_TRACES
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- std::cout << "Simplex_tree dim: " << simplex_tree.dimension() << std::endl;
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(simplex_tree, true);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(coeff_field_characteristic);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (output_file_diag.empty()) {
- pcoh.output_diagram();
- } else {
- std::cout << "Result in file: " << output_file_diag << std::endl;
- std::ofstream out(output_file_diag);
- pcoh.output_diagram(out);
- out.close();
- }
-
- return 0;
-}
-
-void program_options(int argc, char *argv[], std::string &off_file_points, std::string &weight_file,
- std::string &output_file_diag, int &coeff_field_characteristic,
- Filtration_value &min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()("input-file", po::value<std::string>(&off_file_points),
- "Name of file containing a point set. Format is one point per line: X1 ... Xd ")(
- "weight-file", po::value<std::string>(&weight_file),
- "Name of file containing a point weights. Format is one weigt per line: W1\n...\nWn ");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()("help,h", "produce help message")(
- "output-file,o", po::value<std::string>(&output_file_diag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")(
- "field-charac,p", po::value<int>(&coeff_field_characteristic)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")(
- "min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length "
- "intervals");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
- pos.add("weight-file", 2);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file") || !vm.count("weight-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a weighted 3D Alpha complex defined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file weight-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/utilities/Alpha_complex/weighted_periodic_alpha_complex_3d_persistence.cpp b/utilities/Alpha_complex/weighted_periodic_alpha_complex_3d_persistence.cpp
deleted file mode 100644
index d030c88c..00000000
--- a/utilities/Alpha_complex/weighted_periodic_alpha_complex_3d_persistence.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- * Pawel Dlotko - 2017 - Swansea University, UK
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <boost/variant.hpp>
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Points_3D_off_io.h>
-
-#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
-#include <CGAL/Periodic_3_regular_triangulation_traits_3.h>
-#include <CGAL/Periodic_3_regular_triangulation_3.h>
-#include <CGAL/Alpha_shape_3.h>
-#include <CGAL/Alpha_shape_cell_base_3.h>
-#include <CGAL/Alpha_shape_vertex_base_3.h>
-#include <CGAL/iterator.h>
-
-#include <fstream>
-#include <cmath>
-#include <string>
-#include <tuple>
-#include <map>
-#include <utility>
-#include <vector>
-#include <cstdlib>
-
-#include "alpha_complex_3d_helper.h"
-
-// Traits
-using Kernel = CGAL::Exact_predicates_inexact_constructions_kernel;
-using PK = CGAL::Periodic_3_regular_triangulation_traits_3<Kernel>;
-
-// Vertex type
-using DsVb = CGAL::Periodic_3_triangulation_ds_vertex_base_3<>;
-using Vb = CGAL::Regular_triangulation_vertex_base_3<PK, DsVb>;
-using AsVb = CGAL::Alpha_shape_vertex_base_3<PK, Vb>;
-// Cell type
-using DsCb = CGAL::Periodic_3_triangulation_ds_cell_base_3<>;
-using Cb = CGAL::Regular_triangulation_cell_base_3<PK, DsCb>;
-using AsCb = CGAL::Alpha_shape_cell_base_3<PK, Cb>;
-using Tds = CGAL::Triangulation_data_structure_3<AsVb, AsCb>;
-using P3RT3 = CGAL::Periodic_3_regular_triangulation_3<PK, Tds>;
-using Alpha_shape_3 = CGAL::Alpha_shape_3<P3RT3>;
-
-using Point_3 = P3RT3::Bare_point;
-using Weighted_point_3 = P3RT3::Weighted_point;
-
-// filtration with alpha values needed type definition
-using Alpha_value_type = Alpha_shape_3::FT;
-using Object = CGAL::Object;
-using Dispatch =
- CGAL::Dispatch_output_iterator<CGAL::cpp11::tuple<Object, Alpha_value_type>,
- CGAL::cpp11::tuple<std::back_insert_iterator<std::vector<Object> >,
- std::back_insert_iterator<std::vector<Alpha_value_type> > > >;
-using Cell_handle = Alpha_shape_3::Cell_handle;
-using Facet = Alpha_shape_3::Facet;
-using Edge_3 = Alpha_shape_3::Edge;
-using Vertex_handle = Alpha_shape_3::Vertex_handle;
-using Vertex_list = std::vector<Alpha_shape_3::Vertex_handle>;
-
-// gudhi type definition
-using ST = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-using Filtration_value = ST::Filtration_value;
-using Simplex_tree_vertex = ST::Vertex_handle;
-using Alpha_shape_simplex_tree_map = std::map<Alpha_shape_3::Vertex_handle, Simplex_tree_vertex>;
-using Simplex_tree_vector_vertex = std::vector<Simplex_tree_vertex>;
-using Persistent_cohomology =
- Gudhi::persistent_cohomology::Persistent_cohomology<ST, Gudhi::persistent_cohomology::Field_Zp>;
-
-void usage(const std::string& progName) {
- std::cerr << "Usage: " << progName << " path_to_the_OFF_file path_to_weight_file path_to_the_cuboid_file "
- "coeff_field_characteristic[integer > 0] min_persistence[float >= -1.0]\n";
- exit(-1);
-}
-
-int main(int argc, char* const argv[]) {
- // program args management
- if (argc != 6) {
- std::cerr << "Error: Number of arguments (" << argc << ") is not correct\n";
- usage(argv[0]);
- }
-
- int coeff_field_characteristic = atoi(argv[4]);
- Filtration_value min_persistence = strtof(argv[5], nullptr);
-
- // Read points from file
- std::string offInputFile(argv[1]);
- // Read the OFF file (input file name given as parameter) and triangulate points
- Gudhi::Points_3D_off_reader<Point_3> off_reader(offInputFile);
- // Check the read operation was correct
- if (!off_reader.is_valid()) {
- std::cerr << "Unable to read file " << offInputFile << std::endl;
- usage(argv[0]);
- }
-
- // Retrieve the points
- std::vector<Point_3> lp = off_reader.get_point_cloud();
-
- // Read iso_cuboid_3 information from file
- std::ifstream iso_cuboid_str(argv[3]);
- double x_min, y_min, z_min, x_max, y_max, z_max;
- if (iso_cuboid_str.is_open()) {
- if (!(iso_cuboid_str >> x_min >> y_min >> z_min >> x_max >> y_max >> z_max)) {
- std::cerr << argv[3] << " - Bad file format." << std::endl;
- usage(argv[0]);
- }
-
- } else {
- std::cerr << "Unable to read file " << argv[3] << std::endl;
- usage(argv[0]);
- }
- // Checking if the cuboid is the same in x,y and z direction. If not, CGAL will not process it.
- if ((x_max - x_min != y_max - y_min) || (x_max - x_min != z_max - z_min) || (z_max - z_min != y_max - y_min)) {
- std::cerr << "The size of the cuboid in every directions is not the same." << std::endl;
- exit(-1);
- }
-
- double maximal_possible_weight = 0.015625 * (x_max - x_min) * (x_max - x_min);
-
- // Read weights information from file
- std::ifstream weights_ifstr(argv[2]);
- std::vector<Weighted_point_3> wp;
- if (weights_ifstr.is_open()) {
- double weight = 0.0;
- std::size_t index = 0;
- wp.reserve(lp.size());
- // Attempt read the weight in a double format, return false if it fails
- while ((weights_ifstr >> weight) && (index < lp.size())) {
- if ((weight >= maximal_possible_weight) || (weight < 0)) {
- std::cerr << "At line " << (index + 1) << ", the weight (" << weight
- << ") is negative or more than or equal to maximal possible weight (" << maximal_possible_weight
- << ") = 1/64*cuboid length squared, which is not an acceptable input." << std::endl;
- exit(-1);
- }
-
- wp.push_back(Weighted_point_3(lp[index], weight));
- index++;
- }
- if (index != lp.size()) {
- std::cerr << "Bad number of weights in file " << argv[2] << std::endl;
- usage(argv[0]);
- }
- } else {
- std::cerr << "Unable to read file " << argv[2] << std::endl;
- usage(argv[0]);
- }
-
- // Define the periodic cube
- P3RT3 prt(PK::Iso_cuboid_3(x_min, y_min, z_min, x_max, y_max, z_max));
- // Heuristic for inserting large point sets (if pts is reasonably large)
- prt.insert(wp.begin(), wp.end(), true);
- // As prt won't be modified anymore switch to 1-sheeted cover if possible
- if (prt.is_triangulation_in_1_sheet()) {
- prt.convert_to_1_sheeted_covering();
- } else {
- std::cerr << "ERROR: we were not able to construct a triangulation within a single periodic domain." << std::endl;
- exit(-1);
- }
- std::cout << "Weighted Periodic Delaunay computed." << std::endl;
-
- // alpha shape construction from points. CGAL has a strange behavior in REGULARIZED mode. This is the default mode
- // Maybe need to set it to GENERAL mode
- Alpha_shape_3 as(prt, 0, Alpha_shape_3::GENERAL);
-
- // filtration with alpha values from alpha shape
- std::vector<Object> the_objects;
- std::vector<Alpha_value_type> the_alpha_values;
-
- Dispatch disp = CGAL::dispatch_output<Object, Alpha_value_type>(std::back_inserter(the_objects),
- std::back_inserter(the_alpha_values));
-
- as.filtration_with_alpha_values(disp);
-#ifdef DEBUG_TRACES
- std::cout << "filtration_with_alpha_values returns : " << the_objects.size() << " objects" << std::endl;
-#endif // DEBUG_TRACES
-
- Alpha_shape_3::size_type count_vertices = 0;
- Alpha_shape_3::size_type count_edges = 0;
- Alpha_shape_3::size_type count_facets = 0;
- Alpha_shape_3::size_type count_cells = 0;
-
- // Loop on objects vector
- Vertex_list vertex_list;
- ST simplex_tree;
- Alpha_shape_simplex_tree_map map_cgal_simplex_tree;
- std::vector<Alpha_value_type>::iterator the_alpha_value_iterator = the_alpha_values.begin();
- for (auto object_iterator : the_objects) {
- // Retrieve Alpha shape vertex list from object
- if (const Cell_handle* cell = CGAL::object_cast<Cell_handle>(&object_iterator)) {
- vertex_list = from_cell<Vertex_list, Cell_handle>(*cell);
- count_cells++;
- } else if (const Facet* facet = CGAL::object_cast<Facet>(&object_iterator)) {
- vertex_list = from_facet<Vertex_list, Facet>(*facet);
- count_facets++;
- } else if (const Edge_3* edge = CGAL::object_cast<Edge_3>(&object_iterator)) {
- vertex_list = from_edge<Vertex_list, Edge_3>(*edge);
- count_edges++;
- } else if (const Vertex_handle* vertex = CGAL::object_cast<Vertex_handle>(&object_iterator)) {
- count_vertices++;
- vertex_list = from_vertex<Vertex_list, Vertex_handle>(*vertex);
- }
- // Construction of the vector of simplex_tree vertex from list of alpha_shapes vertex
- Simplex_tree_vector_vertex the_simplex;
- for (auto the_alpha_shape_vertex : vertex_list) {
- Alpha_shape_simplex_tree_map::iterator the_map_iterator = map_cgal_simplex_tree.find(the_alpha_shape_vertex);
- if (the_map_iterator == map_cgal_simplex_tree.end()) {
- // alpha shape not found
- Simplex_tree_vertex vertex = map_cgal_simplex_tree.size();
-#ifdef DEBUG_TRACES
- std::cout << "vertex [" << the_alpha_shape_vertex->point() << "] not found - insert " << vertex << std::endl;
-#endif // DEBUG_TRACES
- the_simplex.push_back(vertex);
- map_cgal_simplex_tree.emplace(the_alpha_shape_vertex, vertex);
- } else {
- // alpha shape found
- Simplex_tree_vertex vertex = the_map_iterator->second;
-#ifdef DEBUG_TRACES
- std::cout << "vertex [" << the_alpha_shape_vertex->point() << "] found in " << vertex << std::endl;
-#endif // DEBUG_TRACES
- the_simplex.push_back(vertex);
- }
- }
- // Construction of the simplex_tree
- Filtration_value filtr = /*std::sqrt*/ (*the_alpha_value_iterator);
-#ifdef DEBUG_TRACES
- std::cout << "filtration = " << filtr << std::endl;
-#endif // DEBUG_TRACES
- simplex_tree.insert_simplex(the_simplex, filtr);
- if (the_alpha_value_iterator != the_alpha_values.end())
- ++the_alpha_value_iterator;
- else
- std::cout << "This shall not happen" << std::endl;
- }
-
-#ifdef DEBUG_TRACES
- std::cout << "vertices \t\t" << count_vertices << std::endl;
- std::cout << "edges \t\t" << count_edges << std::endl;
- std::cout << "facets \t\t" << count_facets << std::endl;
- std::cout << "cells \t\t" << count_cells << std::endl;
-
- std::cout << "Information of the Simplex Tree: " << std::endl;
- std::cout << " Number of vertices = " << simplex_tree.num_vertices() << " ";
- std::cout << " Number of simplices = " << simplex_tree.num_simplices() << std::endl << std::endl;
- std::cout << " Dimension = " << simplex_tree.dimension() << " ";
-#endif // DEBUG_TRACES
-
-#ifdef DEBUG_TRACES
- std::cout << "Iterator on vertices: " << std::endl;
- for (auto vertex : simplex_tree.complex_vertex_range()) {
- std::cout << vertex << " ";
- }
-#endif // DEBUG_TRACES
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- std::cout << "Simplex_tree dim: " << simplex_tree.dimension() << std::endl;
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(simplex_tree, true);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(coeff_field_characteristic);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- pcoh.output_diagram();
-
- return 0;
-}
diff --git a/utilities/Bitmap_cubical_complex/CMakeLists.txt b/utilities/Bitmap_cubical_complex/CMakeLists.txt
deleted file mode 100644
index 416db67f..00000000
--- a/utilities/Bitmap_cubical_complex/CMakeLists.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-project(Bitmap_cubical_complex_utilities)
-
-add_executable ( cubical_complex_persistence cubical_complex_persistence.cpp )
-if (TBB_FOUND)
- target_link_libraries(cubical_complex_persistence ${TBB_LIBRARIES})
-endif()
-
-add_test(NAME Bitmap_cubical_complex_utility_persistence_one_sphere COMMAND $<TARGET_FILE:cubical_complex_persistence>
- "${CMAKE_SOURCE_DIR}/data/bitmap/CubicalOneSphere.txt")
-
-add_test(NAME Bitmap_cubical_complex_utility_persistence_two_sphere COMMAND $<TARGET_FILE:cubical_complex_persistence>
- "${CMAKE_SOURCE_DIR}/data/bitmap/CubicalTwoSphere.txt")
-
-add_executable ( periodic_cubical_complex_persistence periodic_cubical_complex_persistence.cpp )
-if (TBB_FOUND)
- target_link_libraries(periodic_cubical_complex_persistence ${TBB_LIBRARIES})
-endif()
-
-add_test(NAME Bitmap_cubical_complex_utility_periodic_boundary_conditions_2d_torus
- COMMAND $<TARGET_FILE:periodic_cubical_complex_persistence>
- "${CMAKE_SOURCE_DIR}/data/bitmap/2d_torus.txt")
-
-add_test(NAME Bitmap_cubical_complex_utility_periodic_boundary_conditions_3d_torus
- COMMAND $<TARGET_FILE:periodic_cubical_complex_persistence>
- "${CMAKE_SOURCE_DIR}/data/bitmap/3d_torus.txt")
-
-install(TARGETS cubical_complex_persistence DESTINATION bin)
-install(TARGETS periodic_cubical_complex_persistence DESTINATION bin)
diff --git a/utilities/Bitmap_cubical_complex/cubical_complex_persistence.cpp b/utilities/Bitmap_cubical_complex/cubical_complex_persistence.cpp
deleted file mode 100644
index 170aa684..00000000
--- a/utilities/Bitmap_cubical_complex/cubical_complex_persistence.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/reader_utils.h>
-#include <gudhi/Bitmap_cubical_complex.h>
-#include <gudhi/Persistent_cohomology.h>
-
-// standard stuff
-#include <iostream>
-#include <string>
-#include <vector>
-#include <cstddef>
-
-int main(int argc, char** argv) {
- std::cout
- << "This program computes persistent homology, by using bitmap_cubical_complex class, of cubical "
- << "complexes provided in text files in Perseus style (the only numbered in the first line is a dimension D of a"
- << "bitmap. In the lines I between 2 and D+1 there are numbers of top dimensional cells in the direction I. Let "
- << "N denote product of the numbers in the lines between 2 and D. In the lines D+2 to D+2+N there are "
- << "filtrations of top dimensional cells. We assume that the cells are in the lexicographical order. See "
- << "CubicalOneSphere.txt or CubicalTwoSphere.txt for example.\n"
- << std::endl;
-
- if (argc != 2) {
- std::cerr << "Wrong number of parameters. Please provide the name of a file with a Perseus style bitmap at "
- << "the input. The program will now terminate.\n";
- return 1;
- }
-
- typedef Gudhi::cubical_complex::Bitmap_cubical_complex_base<double> Bitmap_cubical_complex_base;
- typedef Gudhi::cubical_complex::Bitmap_cubical_complex<Bitmap_cubical_complex_base> Bitmap_cubical_complex;
- typedef Gudhi::persistent_cohomology::Field_Zp Field_Zp;
- typedef Gudhi::persistent_cohomology::Persistent_cohomology<Bitmap_cubical_complex, Field_Zp> Persistent_cohomology;
-
- Bitmap_cubical_complex b(argv[1]);
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(b);
- int p = 11;
- double min_persistence = 0;
-
- pcoh.init_coefficients(p); // initializes the coefficient field for homology
- pcoh.compute_persistent_cohomology(min_persistence);
-
- std::string output_file_name(argv[1]);
- output_file_name += "_persistence";
-
- std::size_t last_in_path = output_file_name.find_last_of("/\\");
-
- if (last_in_path != std::string::npos) {
- output_file_name = output_file_name.substr(last_in_path + 1);
- }
-
- std::ofstream out(output_file_name.c_str());
- pcoh.output_diagram(out);
- out.close();
-
- std::cout << "Result in file: " << output_file_name << "\n";
-
- return 0;
-}
diff --git a/utilities/Bitmap_cubical_complex/cubicalcomplex.md b/utilities/Bitmap_cubical_complex/cubicalcomplex.md
deleted file mode 100644
index 5b0404c3..00000000
--- a/utilities/Bitmap_cubical_complex/cubicalcomplex.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-layout: page
-title: "Cubical complex"
-meta_title: "Cubical complex"
-teaser: ""
-permalink: /cubicalcomplex/
----
-{::comment}
-Leave the lines above as it is required by the web site generator 'Jekyll'
-{:/comment}
-
-
-## cubical_complex_persistence ##
-This program computes persistent homology, by using the Bitmap_cubical_complex class, of cubical complexes provided in text files in Perseus style.
-See [here](/doc/latest/fileformats.html#FileFormatsPerseus) for a description of the file format.
-
-**Example**
-
-```
- cubical_complex_persistence data/bitmap/CubicalTwoSphere.txt
-```
-
-* Creates a Cubical Complex from the Perseus style file `CubicalTwoSphere.txt`,
-computes Persistence cohomology from it and writes the results in a persistence file `CubicalTwoSphere.txt_persistence`.
-
-## periodic_cubical_complex_persistence ##
-
-Same as above, but with periodic boundary conditions.
-
-**Example**
-
-```
- periodic_cubical_complex_persistence data/bitmap/3d_torus.txt
-```
-
-* Creates a Periodical Cubical Complex from the Perseus style file `3d_torus.txt`,
-computes Persistence cohomology from it and writes the results in a persistence file `3d_torus.txt_persistence`.
diff --git a/utilities/Bitmap_cubical_complex/periodic_cubical_complex_persistence.cpp b/utilities/Bitmap_cubical_complex/periodic_cubical_complex_persistence.cpp
deleted file mode 100644
index e9ba5495..00000000
--- a/utilities/Bitmap_cubical_complex/periodic_cubical_complex_persistence.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/reader_utils.h>
-#include <gudhi/Bitmap_cubical_complex.h>
-#include <gudhi/Bitmap_cubical_complex_periodic_boundary_conditions_base.h>
-#include <gudhi/Persistent_cohomology.h>
-
-// standard stuff
-#include <iostream>
-#include <sstream>
-#include <vector>
-#include <string>
-
-int main(int argc, char** argv) {
- std::cout
- << "This program computes persistent homology, by using "
- << "Bitmap_cubical_complex_periodic_boundary_conditions class, of cubical complexes provided in text files in "
- << "Perseus style (the only numbered in the first line is a dimension D of a bitmap. In the lines I between 2 "
- << "and D+1 there are numbers of top dimensional cells in the direction I. Let N denote product of the numbers "
- << "in the lines between 2 and D. In the lines D+2 to D+2+N there are filtrations of top dimensional cells. We "
- << "assume that the cells are in the lexicographical order. See CubicalOneSphere.txt or CubicalTwoSphere.txt for"
- << " example.\n"
- << std::endl;
-
- if (argc != 2) {
- std::cerr << "Wrong number of parameters. Please provide the name of a file with a Perseus style bitmap at "
- << "the input. The program will now terminate.\n";
- return 1;
- }
-
- typedef Gudhi::cubical_complex::Bitmap_cubical_complex_periodic_boundary_conditions_base<double> Bitmap_base;
- typedef Gudhi::cubical_complex::Bitmap_cubical_complex<Bitmap_base> Bitmap_cubical_complex;
-
- Bitmap_cubical_complex b(argv[1]);
-
- typedef Gudhi::persistent_cohomology::Field_Zp Field_Zp;
- typedef Gudhi::persistent_cohomology::Persistent_cohomology<Bitmap_cubical_complex, Field_Zp> Persistent_cohomology;
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(b, true);
-
- int p = 11;
- double min_persistence = 0;
- pcoh.init_coefficients(p); // initializes the coefficient field for homology
- pcoh.compute_persistent_cohomology(min_persistence);
-
- std::string output_file_name(argv[1]);
- output_file_name += "_persistence";
-
- std::size_t last_in_path = output_file_name.find_last_of("/\\");
-
- if (last_in_path != std::string::npos) {
- output_file_name = output_file_name.substr(last_in_path + 1);
- }
-
- std::ofstream out(output_file_name.c_str());
- pcoh.output_diagram(out);
- out.close();
-
- std::cout << "Result in file: " << output_file_name << "\n";
-
- return 0;
-}
diff --git a/utilities/Bottleneck_distance/CMakeLists.txt b/utilities/Bottleneck_distance/CMakeLists.txt
deleted file mode 100644
index 2f35885c..00000000
--- a/utilities/Bottleneck_distance/CMakeLists.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-project(Bottleneck_distance_utilities)
-
-if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
- add_executable (bottleneck_distance bottleneck_distance.cpp)
- if (TBB_FOUND)
- target_link_libraries(bottleneck_distance ${TBB_LIBRARIES})
- endif(TBB_FOUND)
-
- add_test(NAME Bottleneck_distance_utilities_Bottleneck_read_file
- COMMAND $<TARGET_FILE:bottleneck_distance>
- "${CMAKE_SOURCE_DIR}/data/persistence_diagram/first.pers" "${CMAKE_SOURCE_DIR}/data/persistence_diagram/second.pers")
-
- install(TARGETS bottleneck_distance DESTINATION bin)
-
-endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
diff --git a/utilities/Bottleneck_distance/bottleneck_distance.cpp b/utilities/Bottleneck_distance/bottleneck_distance.cpp
deleted file mode 100644
index 8f724f95..00000000
--- a/utilities/Bottleneck_distance/bottleneck_distance.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Authors: Francois Godi, small modifications by Pawel Dlotko
- *
- * Copyright (C) 2015 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Bottleneck.h>
-#include <gudhi/reader_utils.h>
-#include <iostream>
-#include <vector>
-#include <utility> // for pair
-#include <string>
-#include <limits> // for numeric_limits
-
-int main(int argc, char** argv) {
- if (argc < 3) {
- std::cout << "To run this program please provide as an input two files with persistence diagrams. Each file" <<
- " should contain a birth-death pair per line. Third, optional parameter is an error bound on the bottleneck" <<
- " distance (set by default to the smallest positive double value). If you set the error bound to 0, be" <<
- " aware this version is exact but expensive. The program will now terminate \n";
- return -1;
- }
- std::vector<std::pair<double, double>> diag1 = Gudhi::read_persistence_intervals_in_dimension(argv[1]);
- std::vector<std::pair<double, double>> diag2 = Gudhi::read_persistence_intervals_in_dimension(argv[2]);
-
- double tolerance = std::numeric_limits<double>::min();
- if (argc == 4) {
- tolerance = atof(argv[3]);
- }
- double b = Gudhi::persistence_diagram::bottleneck_distance(diag1, diag2, tolerance);
- std::cout << "The distance between the diagrams is : " << b << ". The tolerance is : " << tolerance << std::endl;
-
- return 0;
-}
diff --git a/utilities/Bottleneck_distance/bottleneckdistance.md b/utilities/Bottleneck_distance/bottleneckdistance.md
deleted file mode 100644
index 939eb911..00000000
--- a/utilities/Bottleneck_distance/bottleneckdistance.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-layout: page
-title: "Bottleneck distance"
-meta_title: "Bottleneck distance"
-teaser: ""
-permalink: /bottleneckdistance/
----
-{::comment}
-Leave the lines above as it is required by the web site generator 'Jekyll'
-{:/comment}
-
-
-## bottleneck_read_file_example ##
-
-This program computes the Bottleneck distance between two persistence diagram files.
-
-**Usage**
-
-```
- bottleneck_read_file_example <file_1.pers> <file_2.pers> [<tolerance>]
-```
-
-where
-
-* `<file_1.pers>` and `<file_2.pers>` must be in the format described [here](/doc/latest/fileformats.html#FileFormatsPers).
-* `<tolerance>` is an error bound on the bottleneck distance (set by default to the smallest positive double value).
diff --git a/utilities/Cech_complex/CMakeLists.txt b/utilities/Cech_complex/CMakeLists.txt
deleted file mode 100644
index 30b99729..00000000
--- a/utilities/Cech_complex/CMakeLists.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-cmake_minimum_required(VERSION 2.6)
-project(Cech_complex_utilities)
-
-add_executable(cech_persistence cech_persistence.cpp)
-target_link_libraries(cech_persistence ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
-if (TBB_FOUND)
- target_link_libraries(cech_persistence ${TBB_LIBRARIES})
-endif()
-
-add_test(NAME Cech_complex_utility_from_rips_on_tore_3D COMMAND $<TARGET_FILE:cech_persistence>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off" "-r" "0.25" "-m" "0.5" "-d" "3" "-p" "3")
-
-install(TARGETS cech_persistence DESTINATION bin)
diff --git a/utilities/Cech_complex/cech_persistence.cpp b/utilities/Cech_complex/cech_persistence.cpp
deleted file mode 100644
index 93e92695..00000000
--- a/utilities/Cech_complex/cech_persistence.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2018 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Cech_complex.h>
-#include <gudhi/distance_functions.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Points_off_io.h>
-
-#include <boost/program_options.hpp>
-
-#include <string>
-#include <vector>
-#include <limits> // infinity
-
-// Types definition
-using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-using Filtration_value = Simplex_tree::Filtration_value;
-using Point = std::vector<double>;
-using Point_cloud = std::vector<Point>;
-using Points_off_reader = Gudhi::Points_off_reader<Point>;
-using Cech_complex = Gudhi::cech_complex::Cech_complex<Simplex_tree, Point_cloud>;
-using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp>;
-
-void program_options(int argc, char* argv[], std::string& off_file_points, std::string& filediag,
- Filtration_value& max_radius, int& dim_max, int& p, Filtration_value& min_persistence);
-
-int main(int argc, char* argv[]) {
- std::string off_file_points;
- std::string filediag;
- Filtration_value max_radius;
- int dim_max;
- int p;
- Filtration_value min_persistence;
-
- program_options(argc, argv, off_file_points, filediag, max_radius, dim_max, p, min_persistence);
-
- Points_off_reader off_reader(off_file_points);
- Cech_complex cech_complex_from_file(off_reader.get_point_cloud(), max_radius);
-
- // Construct the Cech complex in a Simplex Tree
- Simplex_tree simplex_tree;
-
- cech_complex_from_file.create_complex(simplex_tree, dim_max);
- std::cout << "The complex contains " << simplex_tree.num_simplices() << " simplices \n";
- std::cout << " and has dimension " << simplex_tree.dimension() << " \n";
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(simplex_tree);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(p);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (filediag.empty()) {
- pcoh.output_diagram();
- } else {
- std::ofstream out(filediag);
- pcoh.output_diagram(out);
- out.close();
- }
-
- return 0;
-}
-
-void program_options(int argc, char* argv[], std::string& off_file_points, std::string& filediag,
- Filtration_value& max_radius, int& dim_max, int& p, Filtration_value& min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()("input-file", po::value<std::string>(&off_file_points),
- "Name of an OFF file containing a point set.\n");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()("help,h", "produce help message")(
- "output-file,o", po::value<std::string>(&filediag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")(
- "max-radius,r",
- po::value<Filtration_value>(&max_radius)->default_value(std::numeric_limits<Filtration_value>::infinity()),
- "Maximal length of an edge for the Cech complex construction.")(
- "cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
- "Maximal dimension of the Cech complex we want to compute.")(
- "field-charac,p", po::value<int>(&p)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")(
- "min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length "
- "intervals");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a Cech complex defined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/utilities/Cech_complex/cechcomplex.md b/utilities/Cech_complex/cechcomplex.md
deleted file mode 100644
index f7817dbb..00000000
--- a/utilities/Cech_complex/cechcomplex.md
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-# Čech complex #
-
-## cech_persistence ##
-This program computes the persistent homology with coefficient field *Z/pZ* of
-a Čech complex defined on a set of input points, using Euclidean distance. The
-output diagram contains one bar per line, written with the convention:
-
-`p dim birth death`
-
-where `dim` is the dimension of the homological feature, `birth` and `death`
-are respectively the birth and death of the feature, and `p` is the
-characteristic of the field *Z/pZ* used for homology coefficients (`p` must be
-a prime number).
-
-**Usage**
-
-`cech_persistence [options] <OFF input file>`
-
-**Allowed options**
-
-* `-h [ --help ]` Produce help message
-* `-o [ --output-file ]` Name of file in which the persistence diagram is written. Default print in standard output.
-* `-r [ --max-edge-length ]` (default = inf) Maximal length of an edge for the Čech complex construction.
-* `-d [ --cpx-dimension ]` (default = 1) Maximal dimension of the Čech complex we want to compute.
-* `-p [ --field-charac ]` (default = 11) Characteristic p of the coefficient field Z/pZ for computing homology.
-* `-m [ --min-persistence ]` (default = 0) Minimal lifetime of homology feature to be recorded. Enter a negative value to see zero length intervals.
-
-Beware: this program may use a lot of RAM and take a lot of time if `max-edge-length` is set to a large value.
-
-**Example 1 with Z/2Z coefficients**
-
-`cech_persistence ../../data/points/tore3D_1307.off -r 0.25 -m 0.5 -d 3 -p 2`
-
-**Example 2 with Z/3Z coefficients**
-
-`cech_persistence ../../data/points/tore3D_1307.off -r 0.25 -m 0.5 -d 3 -p 3`
diff --git a/utilities/Nerve_GIC/CMakeLists.txt b/utilities/Nerve_GIC/CMakeLists.txt
deleted file mode 100644
index 215f9dfd..00000000
--- a/utilities/Nerve_GIC/CMakeLists.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-project(Nerve_GIC_examples)
-
-if (NOT CGAL_VERSION VERSION_LESS 4.8.1)
-
- add_executable ( Nerve Nerve.cpp )
- add_executable ( VoronoiGIC VoronoiGIC.cpp )
-
- if (TBB_FOUND)
- target_link_libraries(Nerve ${TBB_LIBRARIES})
- target_link_libraries(VoronoiGIC ${TBB_LIBRARIES})
- endif()
-
- file(COPY KeplerMapperVisuFromTxtFile.py km.py DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
- # Copy files for not to pollute sources when testing
- file(COPY "${CMAKE_SOURCE_DIR}/data/points/human.off" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
-
- add_test(NAME Nerve_GIC_utilities_nerve COMMAND $<TARGET_FILE:Nerve>
- "human.off" "2" "10" "0.3")
-
- add_test(NAME Nerve_GIC_utilities_VoronoiGIC COMMAND $<TARGET_FILE:VoronoiGIC>
- "human.off" "100")
-
- install(TARGETS Nerve DESTINATION bin)
- install(TARGETS VoronoiGIC DESTINATION bin)
- install(FILES KeplerMapperVisuFromTxtFile.py km.py km.py.COPYRIGHT DESTINATION bin)
-
-endif (NOT CGAL_VERSION VERSION_LESS 4.8.1)
diff --git a/utilities/Nerve_GIC/KeplerMapperVisuFromTxtFile.py b/utilities/Nerve_GIC/KeplerMapperVisuFromTxtFile.py
deleted file mode 100755
index 701e7a52..00000000
--- a/utilities/Nerve_GIC/KeplerMapperVisuFromTxtFile.py
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/env python
-
-import km
-import numpy as np
-from collections import defaultdict
-import argparse
-
-"""This file is part of the Gudhi Library. The Gudhi library
- (Geometric Understanding in Higher Dimensions) is a generic C++
- library for computational topology.
-
- Author(s): Mathieu Carriere
-
- Copyright (C) 2017 Inria
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-"""
-
-__author__ = "Mathieu Carriere"
-__copyright__ = "Copyright (C) 2017 Inria"
-__license__ = "GPL v3"
-
-parser = argparse.ArgumentParser(description='Creates an html Keppler Mapper '
- 'file to visualize a SC.txt file.',
- epilog='Example: '
- './KeplerMapperVisuFromTxtFile.py '
- '-f ../../data/points/human.off_sc.txt'
- '- Constructs an human.off_sc.html file.')
-parser.add_argument("-f", "--file", type=str, required=True)
-
-args = parser.parse_args()
-
-with open(args.file, 'r') as f:
- network = {}
- mapper = km.KeplerMapper(verbose=0)
- data = np.zeros((3,3))
- projected_data = mapper.fit_transform( data, projection="sum", scaler=None )
-
- nodes = defaultdict(list)
- links = defaultdict(list)
- custom = defaultdict(list)
-
- dat = f.readline()
- lens = f.readline()
- color = f.readline();
- param = [float(i) for i in f.readline().split(" ")]
-
- nums = [int(i) for i in f.readline().split(" ")]
- num_nodes = nums[0]
- num_edges = nums[1]
-
- for i in range(0,num_nodes):
- point = [float(j) for j in f.readline().split(" ")]
- nodes[ str(int(point[0])) ] = [ int(point[0]), point[1], int(point[2]) ]
- links[ str(int(point[0])) ] = []
- custom[ int(point[0]) ] = point[1]
-
- m = min([custom[i] for i in range(0,num_nodes)])
- M = max([custom[i] for i in range(0,num_nodes)])
-
- for i in range(0,num_edges):
- edge = [int(j) for j in f.readline().split(" ")]
- links[ str(edge[0]) ].append( str(edge[1]) )
- links[ str(edge[1]) ].append( str(edge[0]) )
-
- network["nodes"] = nodes
- network["links"] = links
- network["meta"] = lens
-
- html_output_filename = args.file.rsplit('.', 1)[0] + '.html'
- mapper.visualize(network, color_function = color, path_html=html_output_filename, title=dat,
- graph_link_distance=30, graph_gravity=0.1, graph_charge=-120, custom_tooltips=custom, width_html=0,
- height_html=0, show_tooltips=True, show_title=True, show_meta=True, res=param[0],gain=param[1], minimum=m,maximum=M)
- message = repr(html_output_filename) + " is generated. You can now use your favorite web browser to visualize it."
- print(message)
-
-
- f.close()
diff --git a/utilities/Nerve_GIC/Nerve.cpp b/utilities/Nerve_GIC/Nerve.cpp
deleted file mode 100644
index 667129e0..00000000
--- a/utilities/Nerve_GIC/Nerve.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Mathieu Carrière
- *
- * Copyright (C) 2017 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/GIC.h>
-
-#include <string>
-#include <vector>
-
-void usage(int nbArgs, char *const progName) {
- std::cerr << "Error: Number of arguments (" << nbArgs << ") is not correct\n";
- std::cerr << "Usage: " << progName << " filename.off coordinate resolution gain [-v] \n";
- std::cerr << " i.e.: " << progName << " ../../data/points/human.off 2 10 0.3 -v \n";
- exit(-1); // ----- >>
-}
-
-int main(int argc, char **argv) {
- if ((argc != 5) && (argc != 6)) usage(argc, argv[0]);
-
- using Point = std::vector<float>;
-
- std::string off_file_name(argv[1]);
- int coord = atoi(argv[2]);
- int resolution = atoi(argv[3]);
- double gain = atof(argv[4]);
- bool verb = 0;
- if (argc == 6) verb = 1;
-
- // --------------------------------
- // Init of a Nerve from an OFF file
- // --------------------------------
-
- Gudhi::cover_complex::Cover_complex<Point> SC;
- SC.set_verbose(verb);
-
- bool check = SC.read_point_cloud(off_file_name);
-
- if (!check) {
- std::cout << "Incorrect OFF file." << std::endl;
- } else {
- SC.set_type("Nerve");
-
- SC.set_color_from_coordinate(coord);
- SC.set_function_from_coordinate(coord);
-
- SC.set_graph_from_OFF();
- SC.set_resolution_with_interval_number(resolution);
- SC.set_gain(gain);
- SC.set_cover_from_function();
-
- SC.find_simplices();
-
- SC.write_info();
-
- Gudhi::Simplex_tree<> stree;
- SC.create_complex(stree);
- SC.compute_PD();
-
- // ----------------------------------------------------------------------------
- // Display information about the graph induced complex
- // ----------------------------------------------------------------------------
-
- if (verb) {
- std::cout << "Nerve is of dimension " << stree.dimension() << " - " << stree.num_simplices() << " simplices - "
- << stree.num_vertices() << " vertices." << std::endl;
-
- std::cout << "Iterator on Nerve simplices" << std::endl;
- for (auto f_simplex : stree.filtration_simplex_range()) {
- for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << std::endl;
- }
- }
- }
-
- return 0;
-}
diff --git a/utilities/Nerve_GIC/Nerve.txt b/utilities/Nerve_GIC/Nerve.txt
deleted file mode 100644
index 839ff45e..00000000
--- a/utilities/Nerve_GIC/Nerve.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-Min function value = -0.979672 and Max function value = 0.816414
-Interval 0 = [-0.979672, -0.761576]
-Interval 1 = [-0.838551, -0.581967]
-Interval 2 = [-0.658942, -0.402359]
-Interval 3 = [-0.479334, -0.22275]
-Interval 4 = [-0.299725, -0.0431415]
-Interval 5 = [-0.120117, 0.136467]
-Interval 6 = [0.059492, 0.316076]
-Interval 7 = [0.239101, 0.495684]
-Interval 8 = [0.418709, 0.675293]
-Interval 9 = [0.598318, 0.816414]
-Computing preimages...
-Computing connected components...
-.txt generated. It can be visualized with e.g. python KeplerMapperVisuFromTxtFile.py and firefox.
-5 interval(s) in dimension 0:
- [-0.909111, 0.00817529]
- [-0.171433, 0.367392]
- [-0.171433, 0.367392]
- [-0.909111, 0.745853]
-0 interval(s) in dimension 1:
-Nerve is of dimension 1 - 41 simplices - 21 vertices.
-Iterator on Nerve simplices
-1
-0
-4
-4 0
-2
-2 1
-8
-8 2
-5
-5 4
-9
-9 8
-13
-13 5
-14
-14 9
-19
-19 13
-25
-32
-20
-32 20
-33
-33 25
-26
-26 14
-26 19
-42
-42 26
-34
-34 33
-27
-27 20
-35
-35 27
-35 34
-42 35
-44
-44 35
-54
-54 44 \ No newline at end of file
diff --git a/utilities/Nerve_GIC/VoronoiGIC.cpp b/utilities/Nerve_GIC/VoronoiGIC.cpp
deleted file mode 100644
index 33deca40..00000000
--- a/utilities/Nerve_GIC/VoronoiGIC.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Mathieu Carrière
- *
- * Copyright (C) 2017 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/GIC.h>
-
-#include <string>
-#include <vector>
-
-void usage(int nbArgs, char *const progName) {
- std::cerr << "Error: Number of arguments (" << nbArgs << ") is not correct\n";
- std::cerr << "Usage: " << progName << " filename.off N [-v] \n";
- std::cerr << " i.e.: " << progName << " ../../data/points/human.off 100 -v \n";
- exit(-1); // ----- >>
-}
-
-int main(int argc, char **argv) {
- if ((argc != 3) && (argc != 4)) usage(argc, argv[0]);
-
- using Point = std::vector<float>;
-
- std::string off_file_name(argv[1]);
- int m = atoi(argv[2]);
- bool verb = 0;
- if (argc == 4) verb = 1;
-
- // ----------------------------------------------------------------------------
- // Init of a graph induced complex from an OFF file
- // ----------------------------------------------------------------------------
-
- Gudhi::cover_complex::Cover_complex<Point> GIC;
- GIC.set_verbose(verb);
-
- bool check = GIC.read_point_cloud(off_file_name);
-
- if (!check) {
- std::cout << "Incorrect OFF file." << std::endl;
- } else {
- GIC.set_type("GIC");
-
- GIC.set_color_from_coordinate();
-
- GIC.set_graph_from_OFF();
- GIC.set_cover_from_Voronoi(Gudhi::Euclidean_distance(), m);
-
- GIC.find_simplices();
-
- GIC.plot_OFF();
-
- Gudhi::Simplex_tree<> stree;
- GIC.create_complex(stree);
-
- // ----------------------------------------------------------------------------
- // Display information about the graph induced complex
- // ----------------------------------------------------------------------------
-
- if (verb) {
- std::cout << "Graph induced complex is of dimension " << stree.dimension() << " - " << stree.num_simplices()
- << " simplices - " << stree.num_vertices() << " vertices." << std::endl;
-
- std::cout << "Iterator on graph induced complex simplices" << std::endl;
- for (auto f_simplex : stree.filtration_simplex_range()) {
- for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
- std::cout << vertex << " ";
- }
- std::cout << std::endl;
- }
- }
- }
-
- return 0;
-}
diff --git a/utilities/Nerve_GIC/covercomplex.md b/utilities/Nerve_GIC/covercomplex.md
deleted file mode 100644
index 683c1b75..00000000
--- a/utilities/Nerve_GIC/covercomplex.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-layout: page
-title: "Cover complex"
-meta_title: "Cover complex"
-teaser: ""
-permalink: /covercomplex/
----
-{::comment}
-Leave the lines above as it is required by the web site generator 'Jekyll'
-{:/comment}
-
-
-## Nerve ##
-This program builds the Nerve of a point cloud sampled on an OFF file.
-The cover C comes from the preimages of intervals covering a coordinate function,
-which are then refined into their connected components using the triangulation of the .OFF file.
-
-The program also writes a file SC.txt.
-The first three lines in this file are the location of the input point cloud and the function used to compute the cover.
-The fourth line contains the number of vertices nv and edges ne of the Nerve. The next nv lines represent the vertices.
-Each line contains the vertex ID, the number of data points it contains, and their average color function value.
-Finally, the next ne lines represent the edges, characterized by the ID of their vertices.
-
-**Usage**
-
-`Nerve <OFF input file> coordinate resolution gain [-v]`
-
-where
-
-* `coordinate` is the coordinate function to cover
-* `resolution` is the number of the intervals
-* `gain` is the gain for each interval
-* `-v` is optional, it activates verbose mode.
-
-**Example**
-
-`Nerve ../../data/points/human.off 2 10 0.3`
-
-* Builds the Nerve of a point cloud sampled on a 3D human shape (human.off).
-The cover C comes from the preimages of intervals (10 intervals with gain 0.3) covering the height function (coordinate 2).
-
-`python KeplerMapperVisuFromTxtFile.py -f ../../data/points/human.off_sc.txt`
-
-* Constructs `human.off_sc.html` file. You can now use your favorite web browser to visualize it.
-
-## VoronoiGIC ##
-
-This util builds the Graph Induced Complex (GIC) of a point cloud.
-It subsamples *N* points in the point cloud, which act as seeds of a geodesic Voronoï diagram.
-Each cell of the diagram is then an element of C.
-
-The program also writes a file `*_sc.off`, that is an OFF file that can be visualized with GeomView.
-
-**Usage**
-
-`VoroniGIC <OFF input file> samples_number [-v]`
-
-where
-
-* `samples_number` is the number of samples to take from the point cloud
-* `-v` is optional, it activates verbose mode.
-
-**Example**
-
-`VoroniGIC ../../data/points/human.off 700`
-
-* Builds the Voronoi Graph Induced Complex with 700 subsamples from `human.off` file.
-`../../data/points/human_sc.off` can be visualized with GeomView.
-
diff --git a/utilities/Nerve_GIC/km.py b/utilities/Nerve_GIC/km.py
deleted file mode 100755
index 53024aab..00000000
--- a/utilities/Nerve_GIC/km.py
+++ /dev/null
@@ -1,390 +0,0 @@
-from __future__ import division
-import numpy as np
-from collections import defaultdict
-import json
-import itertools
-from sklearn import cluster, preprocessing, manifold
-from datetime import datetime
-import sys
-
-class KeplerMapper(object):
- # With this class you can build topological networks from (high-dimensional) data.
- #
- # 1) Fit a projection/lens/function to a dataset and transform it.
- # For instance "mean_of_row(x) for x in X"
- # 2) Map this projection with overlapping intervals/hypercubes.
- # Cluster the points inside the interval
- # (Note: we cluster on the inverse image/original data to lessen projection loss).
- # If two clusters/nodes have the same members (due to the overlap), then:
- # connect these with an edge.
- # 3) Visualize the network using HTML and D3.js.
- #
- # functions
- # ---------
- # fit_transform: Create a projection (lens) from a dataset
- # map: Apply Mapper algorithm on this projection and build a simplicial complex
- # visualize: Turns the complex dictionary into a HTML/D3.js visualization
-
- def __init__(self, verbose=2):
- self.verbose = verbose
-
- self.chunk_dist = []
- self.overlap_dist = []
- self.d = []
- self.nr_cubes = 0
- self.overlap_perc = 0
- self.clusterer = False
-
- def fit_transform(self, X, projection="sum", scaler=preprocessing.MinMaxScaler()):
- # Creates the projection/lens from X.
- #
- # Input: X. Input features as a numpy array.
- # Output: projected_X. original data transformed to a projection (lens).
- #
- # parameters
- # ----------
- # projection: Projection parameter is either a string,
- # a scikit class with fit_transform, like manifold.TSNE(),
- # or a list of dimension indices.
- # scaler: if None, do no scaling, else apply scaling to the projection
- # Default: Min-Max scaling
-
- self.scaler = scaler
- self.projection = str(projection)
-
- # Detect if projection is a class (for scikit-learn)
- #if str(type(projection))[1:6] == "class": #TODO: de-ugly-fy
- # reducer = projection
- # if self.verbose > 0:
- # try:
- # projection.set_params(**{"verbose":self.verbose})
- # except:
- # pass
- # print("\n..Projecting data using: \n\t%s\n"%str(projection))
- # X = reducer.fit_transform(X)
-
- # Detect if projection is a string (for standard functions)
- if isinstance(projection, str):
- if self.verbose > 0:
- print("\n..Projecting data using: %s"%(projection))
- # Stats lenses
- if projection == "sum": # sum of row
- X = np.sum(X, axis=1).reshape((X.shape[0],1))
- if projection == "mean": # mean of row
- X = np.mean(X, axis=1).reshape((X.shape[0],1))
- if projection == "median": # mean of row
- X = np.median(X, axis=1).reshape((X.shape[0],1))
- if projection == "max": # max of row
- X = np.max(X, axis=1).reshape((X.shape[0],1))
- if projection == "min": # min of row
- X = np.min(X, axis=1).reshape((X.shape[0],1))
- if projection == "std": # std of row
- X = np.std(X, axis=1).reshape((X.shape[0],1))
-
- if projection == "dist_mean": # Distance of x to mean of X
- X_mean = np.mean(X, axis=0)
- X = np.sum(np.sqrt((X - X_mean)**2), axis=1).reshape((X.shape[0],1))
-
- # Detect if projection is a list (with dimension indices)
- if isinstance(projection, list):
- if self.verbose > 0:
- print("\n..Projecting data using: %s"%(str(projection)))
- X = X[:,np.array(projection)]
-
- # Scaling
- if scaler is not None:
- if self.verbose > 0:
- print("\n..Scaling with: %s\n"%str(scaler))
- X = scaler.fit_transform(X)
-
- return X
-
- def map(self, projected_X, inverse_X=None, clusterer=cluster.DBSCAN(eps=0.5,min_samples=3), nr_cubes=10, overlap_perc=0.1):
- # This maps the data to a simplicial complex. Returns a dictionary with nodes and links.
- #
- # Input: projected_X. A Numpy array with the projection/lens.
- # Output: complex. A dictionary with "nodes", "links" and "meta information"
- #
- # parameters
- # ----------
- # projected_X projected_X. A Numpy array with the projection/lens. Required.
- # inverse_X Numpy array or None. If None then the projection itself is used for clustering.
- # clusterer Scikit-learn API compatible clustering algorithm. Default: DBSCAN
- # nr_cubes Int. The number of intervals/hypercubes to create.
- # overlap_perc Float. The percentage of overlap "between" the intervals/hypercubes.
-
- start = datetime.now()
-
- # Helper function
- def cube_coordinates_all(nr_cubes, nr_dimensions):
- # Helper function to get origin coordinates for our intervals/hypercubes
- # Useful for looping no matter the number of cubes or dimensions
- # Example: if there are 4 cubes per dimension and 3 dimensions
- # return the bottom left (origin) coordinates of 64 hypercubes,
- # as a sorted list of Numpy arrays
- # TODO: elegance-ify...
- l = []
- for x in range(nr_cubes):
- l += [x] * nr_dimensions
- return [np.array(list(f)) for f in sorted(set(itertools.permutations(l,nr_dimensions)))]
-
- nodes = defaultdict(list)
- links = defaultdict(list)
- complex = {}
- self.nr_cubes = nr_cubes
- self.clusterer = clusterer
- self.overlap_perc = overlap_perc
-
- if self.verbose > 0:
- print("Mapping on data shaped %s using dimensions\n"%(str(projected_X.shape)))
-
- # If inverse image is not provided, we use the projection as the inverse image (suffer projection loss)
- if inverse_X is None:
- inverse_X = projected_X
-
- # We chop up the min-max column ranges into 'nr_cubes' parts
- self.chunk_dist = (np.max(projected_X, axis=0) - np.min(projected_X, axis=0))/nr_cubes
-
- # We calculate the overlapping windows distance
- self.overlap_dist = self.overlap_perc * self.chunk_dist
-
- # We find our starting point
- self.d = np.min(projected_X, axis=0)
-
- # Use a dimension index array on the projected X
- # (For now this uses the entire dimensionality, but we keep for experimentation)
- di = np.array([x for x in range(projected_X.shape[1])])
-
- # Prefix'ing the data with ID's
- ids = np.array([x for x in range(projected_X.shape[0])])
- projected_X = np.c_[ids,projected_X]
- inverse_X = np.c_[ids,inverse_X]
-
- # Subdivide the projected data X in intervals/hypercubes with overlap
- if self.verbose > 0:
- total_cubes = len(cube_coordinates_all(nr_cubes,projected_X.shape[1]))
- print("Creating %s hypercubes."%total_cubes)
-
- for i, coor in enumerate(cube_coordinates_all(nr_cubes,di.shape[0])):
- # Slice the hypercube
- hypercube = projected_X[ np.invert(np.any((projected_X[:,di+1] >= self.d[di] + (coor * self.chunk_dist[di])) &
- (projected_X[:,di+1] < self.d[di] + (coor * self.chunk_dist[di]) + self.chunk_dist[di] + self.overlap_dist[di]) == False, axis=1 )) ]
-
- if self.verbose > 1:
- print("There are %s points in cube_%s / %s with starting range %s"%
- (hypercube.shape[0],i,total_cubes,self.d[di] + (coor * self.chunk_dist[di])))
-
- # If at least one sample inside the hypercube
- if hypercube.shape[0] > 0:
- # Cluster the data point(s) in the cube, skipping the id-column
- # Note that we apply clustering on the inverse image (original data samples) that fall inside the cube.
- inverse_x = inverse_X[[int(nn) for nn in hypercube[:,0]]]
-
- clusterer.fit(inverse_x[:,1:])
-
- if self.verbose > 1:
- print("Found %s clusters in cube_%s\n"%(np.unique(clusterer.labels_[clusterer.labels_ > -1]).shape[0],i))
-
- #Now for every (sample id in cube, predicted cluster label)
- for a in np.c_[hypercube[:,0],clusterer.labels_]:
- if a[1] != -1: #if not predicted as noise
- cluster_id = str(coor[0])+"_"+str(i)+"_"+str(a[1])+"_"+str(coor)+"_"+str(self.d[di] + (coor * self.chunk_dist[di])) # TODO: de-rudimentary-ify
- nodes[cluster_id].append( int(a[0]) ) # Append the member id's as integers
- else:
- if self.verbose > 1:
- print("Cube_%s is empty.\n"%(i))
-
- # Create links when clusters from different hypercubes have members with the same sample id.
- candidates = itertools.combinations(nodes.keys(),2)
- for candidate in candidates:
- # if there are non-unique members in the union
- if len(nodes[candidate[0]]+nodes[candidate[1]]) != len(set(nodes[candidate[0]]+nodes[candidate[1]])):
- links[candidate[0]].append( candidate[1] )
-
- # Reporting
- if self.verbose > 0:
- nr_links = 0
- for k in links:
- nr_links += len(links[k])
- print("\ncreated %s edges and %s nodes in %s."%(nr_links,len(nodes),str(datetime.now()-start)))
-
- complex["nodes"] = nodes
- complex["links"] = links
- complex["meta"] = self.projection
-
- return complex
-
- def visualize(self, complex, color_function="", path_html="mapper_visualization_output.html", title="My Data",
- graph_link_distance=30, graph_gravity=0.1, graph_charge=-120, custom_tooltips=None, width_html=0,
- height_html=0, show_tooltips=True, show_title=True, show_meta=True, res=0,gain=0,minimum=0,maximum=0):
- # Turns the dictionary 'complex' in a html file with d3.js
- #
- # Input: complex. Dictionary (output from calling .map())
- # Output: a HTML page saved as a file in 'path_html'.
- #
- # parameters
- # ----------
- # color_function string. Not fully implemented. Default: "" (distance to origin)
- # path_html file path as string. Where to save the HTML page.
- # title string. HTML page document title and first heading.
- # graph_link_distance int. Edge length.
- # graph_gravity float. "Gravity" to center of layout.
- # graph_charge int. charge between nodes.
- # custom_tooltips None or Numpy Array. You could use "y"-label array for this.
- # width_html int. Width of canvas. Default: 0 (full width)
- # height_html int. Height of canvas. Default: 0 (full height)
- # show_tooltips bool. default:True
- # show_title bool. default:True
- # show_meta bool. default:True
-
- # Format JSON for D3 graph
- json_s = {}
- json_s["nodes"] = []
- json_s["links"] = []
- k2e = {} # a key to incremental int dict, used for id's when linking
-
- for e, k in enumerate(complex["nodes"]):
- # Tooltip and node color formatting, TODO: de-mess-ify
- if custom_tooltips is not None:
- tooltip_s = "<h2>Cluster %s</h2>"%k + " ".join(str(custom_tooltips[complex["nodes"][k][0]]).split(" "))
- if maximum == minimum:
- tooltip_i = 0
- else:
- tooltip_i = int(30*(custom_tooltips[complex["nodes"][k][0]]-minimum)/(maximum-minimum))
- json_s["nodes"].append({"name": str(k), "tooltip": tooltip_s, "group": 2 * int(np.log(complex["nodes"][k][2])), "color": tooltip_i})
- else:
- tooltip_s = "<h2>Cluster %s</h2>Contains %s members."%(k,len(complex["nodes"][k]))
- json_s["nodes"].append({"name": str(k), "tooltip": tooltip_s, "group": 2 * int(np.log(len(complex["nodes"][k]))), "color": str(k.split("_")[0])})
- k2e[k] = e
- for k in complex["links"]:
- for link in complex["links"][k]:
- json_s["links"].append({"source": k2e[k], "target":k2e[link],"value":1})
-
- # Width and height of graph in HTML output
- if width_html == 0:
- width_css = "100%"
- width_js = 'document.getElementById("holder").offsetWidth-20'
- else:
- width_css = "%spx" % width_html
- width_js = "%s" % width_html
- if height_html == 0:
- height_css = "100%"
- height_js = 'document.getElementById("holder").offsetHeight-20'
- else:
- height_css = "%spx" % height_html
- height_js = "%s" % height_html
-
- # Whether to show certain UI elements or not
- if show_tooltips == False:
- tooltips_display = "display: none;"
- else:
- tooltips_display = ""
-
- if show_meta == False:
- meta_display = "display: none;"
- else:
- meta_display = ""
-
- if show_title == False:
- title_display = "display: none;"
- else:
- title_display = ""
-
- with open(path_html,"wb") as outfile:
- html = """<!DOCTYPE html>
- <meta charset="utf-8">
- <meta name="generator" content="KeplerMapper">
- <title>%s | KeplerMapper</title>
- <link href='https://fonts.googleapis.com/css?family=Roboto:700,300' rel='stylesheet' type='text/css'>
- <style>
- * {margin: 0; padding: 0;}
- html { height: 100%%;}
- body {background: #111; height: 100%%; font: 100 16px Roboto, Sans-serif;}
- .link { stroke: #999; stroke-opacity: .333; }
- .divs div { border-radius: 50%%; background: red; position: absolute; }
- .divs { position: absolute; top: 0; left: 0; }
- #holder { position: relative; width: %s; height: %s; background: #111; display: block;}
- h1 { %s padding: 20px; color: #fafafa; text-shadow: 0px 1px #000,0px -1px #000; position: absolute; font: 300 30px Roboto, Sans-serif;}
- h2 { text-shadow: 0px 1px #000,0px -1px #000; font: 700 16px Roboto, Sans-serif;}
- .meta { position: absolute; opacity: 0.9; width: 220px; top: 80px; left: 20px; display: block; %s background: #000; line-height: 25px; color: #fafafa; border: 20px solid #000; font: 100 16px Roboto, Sans-serif;}
- div.tooltip { position: absolute; width: 380px; display: block; %s padding: 20px; background: #000; border: 0px; border-radius: 3px; pointer-events: none; z-index: 999; color: #FAFAFA;}
- }
- </style>
- <body>
- <div id="holder">
- <h1>%s</h1>
- <p class="meta">
- <b>Lens</b><br>%s<br><br>
- <b>Length of intervals</b><br>%s<br><br>
- <b>Overlap percentage</b><br>%s%%<br><br>
- <b>Color Function</b><br>%s
- </p>
- </div>
- <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
- <script>
- var width = %s,
- height = %s;
- var color = d3.scale.ordinal()
- .domain(["0","1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30"])
- .range(["#FF0000","#FF1400","#FF2800","#FF3c00","#FF5000","#FF6400","#FF7800","#FF8c00","#FFa000","#FFb400","#FFc800","#FFdc00","#FFf000","#fdff00","#b0ff00","#65ff00","#17ff00","#00ff36","#00ff83","#00ffd0","#00e4ff","#00c4ff","#00a4ff","#00a4ff","#0084ff","#0064ff","#0044ff","#0022ff","#0002ff","#0100ff","#0300ff","#0500ff"]);
- var force = d3.layout.force()
- .charge(%s)
- .linkDistance(%s)
- .gravity(%s)
- .size([width, height]);
- var svg = d3.select("#holder").append("svg")
- .attr("width", width)
- .attr("height", height);
-
- var div = d3.select("#holder").append("div")
- .attr("class", "tooltip")
- .style("opacity", 0.0);
-
- var divs = d3.select('#holder').append('div')
- .attr('class', 'divs')
- .attr('style', function(d) { return 'overflow: hidden; width: ' + width + 'px; height: ' + height + 'px;'; });
-
- graph = %s;
- force
- .nodes(graph.nodes)
- .links(graph.links)
- .start();
- var link = svg.selectAll(".link")
- .data(graph.links)
- .enter().append("line")
- .attr("class", "link")
- .style("stroke-width", function(d) { return Math.sqrt(d.value); });
- var node = divs.selectAll('div')
- .data(graph.nodes)
- .enter().append('div')
- .on("mouseover", function(d) {
- div.transition()
- .duration(200)
- .style("opacity", .9);
- div .html(d.tooltip + "<br/>")
- .style("left", (d3.event.pageX + 100) + "px")
- .style("top", (d3.event.pageY - 28) + "px");
- })
- .on("mouseout", function(d) {
- div.transition()
- .duration(500)
- .style("opacity", 0);
- })
- .call(force.drag);
-
- node.append("title")
- .text(function(d) { return d.name; });
- force.on("tick", function() {
- link.attr("x1", function(d) { return d.source.x; })
- .attr("y1", function(d) { return d.source.y; })
- .attr("x2", function(d) { return d.target.x; })
- .attr("y2", function(d) { return d.target.y; });
- node.attr("cx", function(d) { return d.x; })
- .attr("cy", function(d) { return d.y; })
- .attr('style', function(d) { return 'width: ' + (d.group * 2) + 'px; height: ' + (d.group * 2) + 'px; ' + 'left: '+(d.x-(d.group))+'px; ' + 'top: '+(d.y-(d.group))+'px; background: '+color(d.color)+'; box-shadow: 0px 0px 3px #111; box-shadow: 0px 0px 33px '+color(d.color)+', inset 0px 0px 5px rgba(0, 0, 0, 0.2);'})
- ;
- });
- </script>"""%(title,width_css, height_css, title_display, meta_display, tooltips_display, title,complex["meta"],res,gain*100,color_function,width_js,height_js,graph_charge,graph_link_distance,graph_gravity,json.dumps(json_s))
- outfile.write(html.encode("utf-8"))
- if self.verbose > 0:
- print("\nWrote d3.js graph to '%s'"%path_html)
diff --git a/utilities/Nerve_GIC/km.py.COPYRIGHT b/utilities/Nerve_GIC/km.py.COPYRIGHT
deleted file mode 100644
index bef7b121..00000000
--- a/utilities/Nerve_GIC/km.py.COPYRIGHT
+++ /dev/null
@@ -1,26 +0,0 @@
-km.py is a fork of https://github.com/MLWave/kepler-mapper.
-Only the visualization part has been kept (Mapper part has been removed).
-
-This file has te following Copyright :
-
-The MIT License (MIT)
-
-Copyright (c) 2015 Triskelion - HJ van Veen - info@mlwave.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/utilities/Persistence_representations/CMakeLists.txt b/utilities/Persistence_representations/CMakeLists.txt
deleted file mode 100644
index fc51b1d6..00000000
--- a/utilities/Persistence_representations/CMakeLists.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copy files, otherwise result files are created in sources
-file(COPY "${CMAKE_SOURCE_DIR}/data/persistence_diagram/first.pers" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/")
-file(COPY "${CMAKE_SOURCE_DIR}/data/persistence_diagram/second.pers" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/")
-
-function(add_persistence_representation_creation_utility creation_utility)
- add_executable ( ${creation_utility} ${creation_utility}.cpp )
-
- # as the function is called in a subdirectory level, need to '../' to find persistence files
- # ARGN will add all the other arguments (except creation_utility) sent to the CMake functions
- add_test(NAME Persistence_representation_utilities_${creation_utility} COMMAND $<TARGET_FILE:${creation_utility}>
- ${ARGN} "${CMAKE_CURRENT_BINARY_DIR}/../first.pers"
- "${CMAKE_CURRENT_BINARY_DIR}/../second.pers")
-
- install(TARGETS ${creation_utility} DESTINATION bin)
-endfunction(add_persistence_representation_creation_utility)
-
-function(add_persistence_representation_plot_utility plot_utility tool_extension)
- add_executable ( ${plot_utility} ${plot_utility}.cpp )
-
- # as the function is called in a subdirectory level, need to '../' to find persistence heat maps files
- add_test(NAME Persistence_representation_utilities_${plot_utility}_first COMMAND $<TARGET_FILE:${plot_utility}>
- "${CMAKE_CURRENT_BINARY_DIR}/../first.pers${tool_extension}")
- #add_test(NAME Persistence_representation_utilities_${plot_utility}_second COMMAND $<TARGET_FILE:${plot_utility}>
- # "${CMAKE_CURRENT_BINARY_DIR}/../second.pers${tool_extension}")
- if(GNUPLOT_PATH)
- add_test(NAME Persistence_representation_utilities_${plot_utility}_first_gnuplot COMMAND ${GNUPLOT_PATH}
- "-e" "load '${CMAKE_CURRENT_BINARY_DIR}/../first.pers${tool_extension}_GnuplotScript'")
- #add_test(NAME Persistence_representation_utilities_${plot_utility}_second_gnuplot COMMAND ${GNUPLOT_PATH}
- # "-e" "load '${CMAKE_CURRENT_BINARY_DIR}/../second.pers${tool_extension}_GnuplotScript'")
- endif()
-
- install(TARGETS ${plot_utility} DESTINATION bin)
-endfunction(add_persistence_representation_plot_utility)
-
-function(add_persistence_representation_function_utility function_utility tool_extension)
- add_executable ( ${function_utility} ${function_utility}.cpp )
-
- # ARGV2 is an optional argument
- if (${ARGV2})
- # as the function is called in a subdirectory level, need to '../' to find persistence heat maps files
- add_test(NAME Persistence_representation_utilities_${function_utility} COMMAND $<TARGET_FILE:${function_utility}>
- "${ARGV2}"
- "${CMAKE_CURRENT_BINARY_DIR}/../first.pers${tool_extension}"
- "${CMAKE_CURRENT_BINARY_DIR}/../second.pers${tool_extension}")
- else()
- # as the function is called in a subdirectory level, need to '../' to find persistence heat maps files
- add_test(NAME Persistence_representation_utilities_${function_utility} COMMAND $<TARGET_FILE:${function_utility}>
- "${CMAKE_CURRENT_BINARY_DIR}/../first.pers${tool_extension}"
- "${CMAKE_CURRENT_BINARY_DIR}/../second.pers${tool_extension}")
- endif()
-
- install(TARGETS ${function_utility} DESTINATION bin)
-endfunction(add_persistence_representation_function_utility)
-
-add_subdirectory(persistence_heat_maps)
-add_subdirectory(persistence_intervals)
-add_subdirectory(persistence_landscapes)
-add_subdirectory(persistence_landscapes_on_grid)
-add_subdirectory(persistence_vectors)
diff --git a/utilities/Persistence_representations/persistence_heat_maps/CMakeLists.txt b/utilities/Persistence_representations/persistence_heat_maps/CMakeLists.txt
deleted file mode 100644
index 89ef232f..00000000
--- a/utilities/Persistence_representations/persistence_heat_maps/CMakeLists.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-project(Persistence_representations_heat_maps_utilities)
-
-add_persistence_representation_creation_utility(create_pssk "10" "-1" "-1" "4" "-1")
-add_persistence_representation_creation_utility(create_p_h_m_weighted_by_arctan_of_their_persistence "10" "-1" "-1" "4" "-1")
-add_persistence_representation_creation_utility(create_p_h_m_weighted_by_distance_from_diagonal "10" "-1" "-1" "4" "-1")
-add_persistence_representation_creation_utility(create_p_h_m_weighted_by_squared_diag_distance "10" "-1" "-1" "4" "-1")
-# Need to set grid min and max for further average, distance and scalar_product
-add_persistence_representation_creation_utility(create_persistence_heat_maps "10" "0" "35" "10" "-1")
-
-add_persistence_representation_plot_utility(plot_persistence_heat_map ".mps")
-
-add_persistence_representation_function_utility(average_persistence_heat_maps ".mps")
-add_persistence_representation_function_utility(compute_distance_of_persistence_heat_maps ".mps" "1")
-add_persistence_representation_function_utility(compute_scalar_product_of_persistence_heat_maps ".mps")
diff --git a/utilities/Persistence_representations/persistence_heat_maps/average_persistence_heat_maps.cpp b/utilities/Persistence_representations/persistence_heat_maps/average_persistence_heat_maps.cpp
deleted file mode 100644
index 2cbd812b..00000000
--- a/utilities/Persistence_representations/persistence_heat_maps/average_persistence_heat_maps.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_heat_maps.h>
-
-#include <iostream>
-#include <vector>
-
-using constant_scaling_function = Gudhi::Persistence_representations::constant_scaling_function;
-using Persistence_heat_maps = Gudhi::Persistence_representations::Persistence_heat_maps<constant_scaling_function>;
-
-int main(int argc, char** argv) {
- std::cout << "This program computes average of persistence heat maps stored in files (the files needs to be "
- << "created beforehand).\n"
- << "The parameters of this programs are names of files with persistence heat maps.\n";
-
- if (argc < 3) {
- std::cout << "Wrong number of parameters, the program will now terminate \n";
- return 1;
- }
-
- std::vector<const char*> filenames;
- for (int i = 1; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- std::vector<Persistence_heat_maps*> maps;
- for (size_t i = 0; i != filenames.size(); ++i) {
- Persistence_heat_maps* l = new Persistence_heat_maps;
- l->load_from_file(filenames[i]);
- maps.push_back(l);
- }
-
- Persistence_heat_maps av;
- av.compute_average(maps);
- av.print_to_file("average.mps");
-
- for (size_t i = 0; i != filenames.size(); ++i) {
- delete maps[i];
- }
-
- std::cout << "Average can be found in 'average.mps' file\n";
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_heat_maps/compute_distance_of_persistence_heat_maps.cpp b/utilities/Persistence_representations/persistence_heat_maps/compute_distance_of_persistence_heat_maps.cpp
deleted file mode 100644
index 14d0db8f..00000000
--- a/utilities/Persistence_representations/persistence_heat_maps/compute_distance_of_persistence_heat_maps.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_heat_maps.h>
-
-#include <iostream>
-#include <sstream>
-#include <limits>
-#include <vector>
-
-using constant_scaling_function = Gudhi::Persistence_representations::constant_scaling_function;
-using Persistence_heat_maps = Gudhi::Persistence_representations::Persistence_heat_maps<constant_scaling_function>;
-
-int main(int argc, char** argv) {
- std::cout << "This program computes distance of persistence heat maps stored in files (the files needs to be "
- << "created beforehand).\n"
- << "The first parameter of a program is an integer p. The program compute L^p distance of the two heat "
- << "maps. For L^infty distance choose p = -1. \n"
- << "The remaining parameters of this program are names of files with persistence heat maps.\n";
-
- if (argc < 3) {
- std::cout << "Wrong number of parameters, the program will now terminate \n";
- return 1;
- }
-
- int pp = atoi(argv[1]);
- double p = std::numeric_limits<double>::max();
- if (pp != -1) {
- p = pp;
- }
-
- std::vector<const char*> filenames;
- for (int i = 2; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
- std::vector<Persistence_heat_maps> maps;
- maps.reserve(filenames.size());
- for (size_t file_no = 0; file_no != filenames.size(); ++file_no) {
- Persistence_heat_maps l;
- l.load_from_file(filenames[file_no]);
- maps.push_back(l);
- }
-
- // and now we will compute the scalar product of landscapes.
-
- // first we prepare an array:
- std::vector<std::vector<double> > distance(filenames.size());
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::vector<double> v(filenames.size(), 0);
- distance[i] = v;
- }
-
- // and now we can compute the distances:
- for (size_t i = 0; i != filenames.size(); ++i) {
- for (size_t j = i; j != filenames.size(); ++j) {
- distance[i][j] = distance[j][i] = maps[i].distance(maps[j], p);
- }
- }
-
- // and now output the result to the screen and a file:
- std::ofstream out;
- out.open("distance.mps");
- for (size_t i = 0; i != distance.size(); ++i) {
- for (size_t j = 0; j != distance.size(); ++j) {
- std::cout << distance[i][j] << " ";
- out << distance[i][j] << " ";
- }
- std::cout << std::endl;
- out << std::endl;
- }
- out.close();
-
- std::cout << "Distance can be found in 'distance.mps' file\n";
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_heat_maps/compute_scalar_product_of_persistence_heat_maps.cpp b/utilities/Persistence_representations/persistence_heat_maps/compute_scalar_product_of_persistence_heat_maps.cpp
deleted file mode 100644
index 12fceedc..00000000
--- a/utilities/Persistence_representations/persistence_heat_maps/compute_scalar_product_of_persistence_heat_maps.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_heat_maps.h>
-
-#include <iostream>
-#include <sstream>
-#include <vector>
-
-using constant_scaling_function = Gudhi::Persistence_representations::constant_scaling_function;
-using Persistence_heat_maps = Gudhi::Persistence_representations::Persistence_heat_maps<constant_scaling_function>;
-
-int main(int argc, char** argv) {
- std::cout << "This program computes scalar product of persistence heat maps stored in a file (the file needs to be "
- << "created beforehand). \n"
- << "The parameters of this programs are names of files with persistence heat maps.\n";
-
- if (argc < 3) {
- std::cout << "Wrong number of parameters, the program will now terminate \n";
- return 1;
- }
-
- std::vector<const char*> filenames;
- for (int i = 1; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
- std::vector<Persistence_heat_maps> maps;
- maps.reserve(filenames.size());
- for (size_t file_no = 0; file_no != filenames.size(); ++file_no) {
- Persistence_heat_maps l;
- l.load_from_file(filenames[file_no]);
- maps.push_back(l);
- }
-
- // and now we will compute the scalar product of landscapes.
-
- // first we prepare an array:
- std::vector<std::vector<double> > scalar_product(filenames.size());
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::vector<double> v(filenames.size(), 0);
- scalar_product[i] = v;
- }
-
- // and now we can compute the scalar product:
- for (size_t i = 0; i != maps.size(); ++i) {
- for (size_t j = i; j != maps.size(); ++j) {
- scalar_product[i][j] = scalar_product[j][i] = maps[i].compute_scalar_product(maps[j]);
- }
- }
-
- // and now output the result to the screen and a file:
- std::ofstream out;
- out.open("scalar_product.mps");
- for (size_t i = 0; i != scalar_product.size(); ++i) {
- for (size_t j = 0; j != scalar_product.size(); ++j) {
- std::cout << scalar_product[i][j] << " ";
- out << scalar_product[i][j] << " ";
- }
- std::cout << std::endl;
- out << std::endl;
- }
- out.close();
-
- std::cout << "Distance can be found in 'scalar_product.mps' file\n";
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_arctan_of_their_persistence.cpp b/utilities/Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_arctan_of_their_persistence.cpp
deleted file mode 100644
index 21c553b9..00000000
--- a/utilities/Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_arctan_of_their_persistence.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
-* (Geometric Understanding in Higher Dimensions) is a generic C++
-* library for computational topology.
-*
-* Author(s): Pawel Dlotko
-*
-* Copyright (C) 2016 Inria
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, either version 3 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <gudhi/Persistence_heat_maps.h>
-
-#include <iostream>
-#include <sstream>
-#include <limits>
-#include <vector>
-
-using arc_tan_of_persistence_of_point = Gudhi::Persistence_representations::arc_tan_of_persistence_of_point;
-using Persistence_heat_maps =
- Gudhi::Persistence_representations::Persistence_heat_maps<arc_tan_of_persistence_of_point>;
-
-int main(int argc, char** argv) {
- std::cout << "This program creates persistence heat map files (*.mps) of persistence diagrams files (*.pers) "
- << "provided as an input.The Gaussian kernels are weighted by the arc tangential of their persistence.\n"
- << "The first parameter of a program is an integer, a size of a grid.\n"
- << "The second and third parameters are min and max of the grid. If you want those numbers to be computed "
- << "based on the data, set them both to -1 \n"
- << "The fourth parameter is an integer, the standard deviation of a Gaussian kernel expressed in a number "
- << "of pixels.\n"
- << "The fifth parameter of this program is a dimension of persistence that will be used in creation of "
- << "the persistence heat maps."
- << "If your input files contains persistence pairs of various dimension, as a fifth parameter of the "
- << "procedure please provide the dimension of persistence you want to use."
- << "If in your files there are only birth-death pairs of the same dimension, set the fifth parameter to "
- << "-1.\n"
- << "The remaining parameters are the names of files with persistence diagrams. \n";
-
- if (argc < 7) {
- std::cout << "Wrong parameter list, the program will now terminate \n";
- return 1;
- }
-
- size_t size_of_grid = (size_t)atoi(argv[1]);
- double min_ = atof(argv[2]);
- double max_ = atof(argv[3]);
- size_t stdiv = atof(argv[4]);
-
- unsigned dimension = std::numeric_limits<unsigned>::max();
- int dim = atoi(argv[5]);
- if (dim >= 0) {
- dimension = (unsigned)dim;
- }
-
- std::vector<const char*> filenames;
- for (int i = 6; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- std::vector<std::vector<double> > filter = Gudhi::Persistence_representations::create_Gaussian_filter(stdiv, 1);
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::cout << "Creating a heat map based on a file : " << filenames[i] << std::endl;
- Persistence_heat_maps l(filenames[i], filter, false, size_of_grid, min_, max_, dimension);
-
- std::stringstream ss;
- ss << filenames[i] << ".mps";
- l.print_to_file(ss.str().c_str());
- }
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_distance_from_diagonal.cpp b/utilities/Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_distance_from_diagonal.cpp
deleted file mode 100644
index 99b0bd17..00000000
--- a/utilities/Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_distance_from_diagonal.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_heat_maps.h>
-
-#include <iostream>
-#include <sstream>
-#include <limits>
-#include <vector>
-
-using distance_from_diagonal_scaling = Gudhi::Persistence_representations::distance_from_diagonal_scaling;
-using Persistence_heat_maps = Gudhi::Persistence_representations::Persistence_heat_maps<distance_from_diagonal_scaling>;
-
-int main(int argc, char** argv) {
- std::cout << "This program creates persistence heat map files (*.mps) of persistence diagrams files (*.pers) "
- << "provided as an input.The Gaussian kernels are weighted by the distance of a center from the "
- << "diagonal.\n"
- << "The first parameter of a program is an integer, a size of a grid.\n"
- << "The second and third parameters are min and max of the grid. If you want those numbers to be computed "
- << "based on the data, set them both to -1 \n"
- << "The fourth parameter is an integer, the standard deviation of a Gaussian kernel expressed in a number "
- << "of pixels.\n"
- << "The fifth parameter of this program is a dimension of persistence that will be used in creation of "
- << "the persistence heat maps."
- << "If your input files contains persistence pairs of various dimension, as a fifth parameter of the "
- << "procedure please provide the dimension of persistence you want to use."
- << "If in your files there are only birth-death pairs of the same dimension, set the fifth parameter to "
- << "-1.\n"
- << "The remaining parameters are the names of files with persistence diagrams. \n";
-
- if (argc < 7) {
- std::cout << "Wrong parameter list, the program will now terminate \n";
- return 1;
- }
-
- size_t size_of_grid = (size_t)atoi(argv[1]);
- double min_ = atof(argv[2]);
- double max_ = atof(argv[3]);
- size_t stdiv = atof(argv[4]);
-
- unsigned dimension = std::numeric_limits<unsigned>::max();
- int dim = atoi(argv[5]);
- if (dim >= 0) {
- dimension = (unsigned)dim;
- }
-
- std::vector<const char*> filenames;
- for (int i = 6; i != argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- std::vector<std::vector<double> > filter = Gudhi::Persistence_representations::create_Gaussian_filter(stdiv, 1);
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::cout << "Creating a heat map based on a file : " << filenames[i] << std::endl;
- Persistence_heat_maps l(filenames[i], filter, false, size_of_grid, min_, max_, dimension);
-
- std::stringstream ss;
- ss << filenames[i] << ".mps";
- l.print_to_file(ss.str().c_str());
- }
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_squared_diag_distance.cpp b/utilities/Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_squared_diag_distance.cpp
deleted file mode 100644
index a4b6e458..00000000
--- a/utilities/Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_squared_diag_distance.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_heat_maps.h>
-
-#include <iostream>
-#include <sstream>
-#include <limits>
-#include <vector>
-
-using squared_distance_from_diagonal_scaling =
- Gudhi::Persistence_representations::squared_distance_from_diagonal_scaling;
-using Persistence_heat_maps =
- Gudhi::Persistence_representations::Persistence_heat_maps<squared_distance_from_diagonal_scaling>;
-
-int main(int argc, char** argv) {
- std::cout << "This program creates persistence heat map files (*.mps) of persistence diagrams files (*.pers) "
- << "provided as an input.The Gaussian kernels are weighted by the square of distance of a center from the "
- << "diagonal.\n"
- << "The first parameter of a program is an integer, a size of a grid.\n"
- << "The second and third parameters are min and max of the grid. If you want those numbers to be computed "
- << "based on the data, set them both to -1 \n"
- << "The fourth parameter is an integer, the standard deviation of a Gaussian kernel expressed in a number "
- << "of pixels.\n"
- << "The fifth parameter of this program is a dimension of persistence that will be used in creation of "
- << "the persistence heat maps."
- << "If your input files contains persistence pairs of various dimension, as a fifth parameter of the "
- << "procedure please provide the dimension of persistence you want to use."
- << "If in your files there are only birth-death pairs of the same dimension, set the fifth parameter to "
- << "-1.\n"
- << "The remaining parameters are the names of files with persistence diagrams. \n";
-
- if (argc < 7) {
- std::cout << "Wrong parameter list, the program will now terminate \n";
- return 1;
- }
-
- size_t size_of_grid = (size_t)atoi(argv[1]);
- double min_ = atof(argv[2]);
- double max_ = atof(argv[3]);
- size_t stdiv = atof(argv[4]);
-
- unsigned dimension = std::numeric_limits<unsigned>::max();
- int dim = atoi(argv[5]);
- if (dim >= 0) {
- dimension = (unsigned)dim;
- }
-
- std::vector<const char*> filenames;
- for (int i = 6; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- std::vector<std::vector<double> > filter = Gudhi::Persistence_representations::create_Gaussian_filter(stdiv, 1);
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::cout << "Creating a heat map based on a file : " << filenames[i] << std::endl;
- Persistence_heat_maps l(filenames[i], filter, false, size_of_grid, min_, max_, dimension);
-
- std::stringstream ss;
- ss << filenames[i] << ".mps";
- l.print_to_file(ss.str().c_str());
- }
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_heat_maps/create_persistence_heat_maps.cpp b/utilities/Persistence_representations/persistence_heat_maps/create_persistence_heat_maps.cpp
deleted file mode 100644
index 5960a89f..00000000
--- a/utilities/Persistence_representations/persistence_heat_maps/create_persistence_heat_maps.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_heat_maps.h>
-
-#include <iostream>
-#include <sstream>
-#include <limits>
-#include <vector>
-
-using constant_scaling_function = Gudhi::Persistence_representations::constant_scaling_function;
-using Persistence_heat_maps = Gudhi::Persistence_representations::Persistence_heat_maps<constant_scaling_function>;
-
-int main(int argc, char** argv) {
- std::cout << "This program creates persistence heat map files (*.mps) of persistence diagrams files (*.pers) "
- << "provided as an input.\n"
- << "The first parameter of a program is an integer, a size of a grid.\n"
- << "The second and third parameters are min and max of the grid. If you want those numbers to be computed "
- << "based on the data, set them both to -1 \n"
- << "The fourth parameter is an integer, the standard deviation of a Gaussian kernel expressed in a number "
- << "of pixels.\n"
- << "The fifth parameter of this program is a dimension of persistence that will be used in creation of "
- << "the persistence heat maps."
- << "If your input files contains persistence pairs of various dimension, as a fifth parameter of the "
- << "procedure please provide the dimension of persistence you want to use."
- << "If in your files there are only birth-death pairs of the same dimension, set the fifth parameter to "
- << "-1.\n"
- << "The remaining parameters are the names of files with persistence diagrams. \n";
-
- if (argc < 7) {
- std::cout << "Wrong parameter list, the program will now terminate \n";
- return 1;
- }
- size_t size_of_grid = (size_t)atoi(argv[1]);
- double min_ = atof(argv[2]);
- double max_ = atof(argv[3]);
- size_t stdiv = atof(argv[4]);
-
- unsigned dimension = std::numeric_limits<unsigned>::max();
- int dim = atoi(argv[5]);
- if (dim >= 0) {
- dimension = (unsigned)dim;
- }
- std::vector<const char*> filenames;
- for (int i = 6; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- std::vector<std::vector<double> > filter = Gudhi::Persistence_representations::create_Gaussian_filter(stdiv, 1);
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::cout << "Creating a heat map based on file : " << filenames[i] << std::endl;
- Persistence_heat_maps l(filenames[i], filter, false, size_of_grid, min_, max_, dimension);
-
- std::stringstream ss;
- ss << filenames[i] << ".mps";
- l.print_to_file(ss.str().c_str());
- }
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_heat_maps/create_pssk.cpp b/utilities/Persistence_representations/persistence_heat_maps/create_pssk.cpp
deleted file mode 100644
index 04f33915..00000000
--- a/utilities/Persistence_representations/persistence_heat_maps/create_pssk.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/PSSK.h>
-
-#include <iostream>
-#include <sstream>
-#include <limits>
-#include <vector>
-
-using PSSK = Gudhi::Persistence_representations::PSSK;
-
-int main(int argc, char** argv) {
- std::cout << "This program creates PSSK files (*.pssk) of persistence diagrams files (*.pers) "
- << "provided as an input.\n"
- << "The first parameter of a program is an integer, a size of a grid.\n"
- << "The second and third parameters are min and max of the grid. If you want those numbers to be computed "
- << "based on the data, set them both to -1 \n"
- << "The fourth parameter is an integer, the standard deviation of a Gaussian kernel expressed in a number "
- << "of pixels.\n"
- << "The fifth parameter of this program is a dimension of persistence that will be used in creation of "
- << "the PSSK."
- << "If your input files contains persistence pairs of various dimension, as a fifth parameter of the "
- << "procedure please provide the dimension of persistence you want to use."
- << "If in your files there are only birth-death pairs of the same dimension, set the first parameter to "
- << "-1.\n"
- << "The remaining parameters are the names of files with persistence diagrams. \n";
-
- if (argc < 7) {
- std::cout << "Wrong parameter list, the program will now terminate \n";
- return 1;
- }
-
- size_t size_of_grid = (size_t)atoi(argv[1]);
- double min_ = atof(argv[2]);
- double max_ = atof(argv[3]);
- size_t stdiv = atof(argv[4]);
-
- unsigned dimension = std::numeric_limits<unsigned>::max();
- int dim = atoi(argv[5]);
- if (dim >= 0) {
- dimension = (unsigned)dim;
- }
-
- std::vector<const char*> filenames;
- for (int i = 6; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- std::vector<std::vector<double> > filter = Gudhi::Persistence_representations::create_Gaussian_filter(stdiv, 1);
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::cout << "Creating a PSSK based on a file : " << filenames[i] << std::endl;
- PSSK l(filenames[i], filter, size_of_grid, min_, max_, dimension);
-
- std::stringstream ss;
- ss << filenames[i] << ".pssk";
- l.print_to_file(ss.str().c_str());
- }
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_heat_maps/plot_persistence_heat_map.cpp b/utilities/Persistence_representations/persistence_heat_maps/plot_persistence_heat_map.cpp
deleted file mode 100644
index e4402589..00000000
--- a/utilities/Persistence_representations/persistence_heat_maps/plot_persistence_heat_map.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_heat_maps.h>
-
-#include <iostream>
-#include <sstream>
-
-using constant_scaling_function = Gudhi::Persistence_representations::constant_scaling_function;
-using Persistence_heat_maps = Gudhi::Persistence_representations::Persistence_heat_maps<constant_scaling_function>;
-
-int main(int argc, char** argv) {
- std::cout << "This program creates a gnuplot script from a persistence heat maps stored in a file (the file needs "
- << "to be created beforehand). Please call the code with the name of a single heat maps file \n";
- if (argc != 2) {
- std::cout << "Wrong parameter list, the program will now terminate \n";
- return 1;
- }
- Persistence_heat_maps l;
- l.load_from_file(argv[1]);
- l.plot(argv[1]);
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_intervals/CMakeLists.txt b/utilities/Persistence_representations/persistence_intervals/CMakeLists.txt
deleted file mode 100644
index 649b72cb..00000000
--- a/utilities/Persistence_representations/persistence_intervals/CMakeLists.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-project(Persistence_representations_intervals_utilities)
-
-
-add_executable ( plot_histogram_of_intervals_lengths plot_histogram_of_intervals_lengths.cpp )
-
-add_test(NAME plot_histogram_of_intervals_lengths COMMAND $<TARGET_FILE:plot_histogram_of_intervals_lengths>
- "${CMAKE_CURRENT_BINARY_DIR}/../first.pers" "-1")
-
-install(TARGETS plot_histogram_of_intervals_lengths DESTINATION bin)
-
-add_persistence_representation_plot_utility(plot_persistence_intervals "")
-add_persistence_representation_plot_utility(plot_persistence_Betti_numbers "")
-
-add_persistence_representation_creation_utility(compute_birth_death_range_in_persistence_diagram "-1")
-
-
-add_executable ( compute_number_of_dominant_intervals compute_number_of_dominant_intervals.cpp )
-add_test(NAME Persistence_representation_utilities_compute_number_of_dominant_intervals
- COMMAND $<TARGET_FILE:compute_number_of_dominant_intervals>
- "${CMAKE_CURRENT_BINARY_DIR}/../first.pers" "-1" "2")
-
-install(TARGETS compute_number_of_dominant_intervals DESTINATION bin)
-
-
-if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
- add_executable ( compute_bottleneck_distance compute_bottleneck_distance.cpp )
- if (TBB_FOUND)
- target_link_libraries(compute_bottleneck_distance ${TBB_LIBRARIES})
- endif(TBB_FOUND)
- add_test(NAME Persistence_representation_utilities_compute_bottleneck_distance
- COMMAND $<TARGET_FILE:compute_bottleneck_distance>
- "-1"
- "${CMAKE_CURRENT_BINARY_DIR}/../first.pers"
- "${CMAKE_CURRENT_BINARY_DIR}/../second.pers")
-
- install(TARGETS compute_bottleneck_distance DESTINATION bin)
-endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1)
diff --git a/utilities/Persistence_representations/persistence_intervals/compute_birth_death_range_in_persistence_diagram.cpp b/utilities/Persistence_representations/persistence_intervals/compute_birth_death_range_in_persistence_diagram.cpp
deleted file mode 100644
index 3be3de8f..00000000
--- a/utilities/Persistence_representations/persistence_intervals/compute_birth_death_range_in_persistence_diagram.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_intervals.h>
-
-#include <iostream>
-#include <vector>
-#include <limits>
-#include <utility>
-
-using Persistence_intervals = Gudhi::Persistence_representations::Persistence_intervals;
-
-int main(int argc, char** argv) {
- std::cout << "This program computes the range of birth and death times of persistence pairs in diagrams provided as "
- << "an input.\n"
- << "The first parameter is the dimension of persistence to be used to create persistence intervals. "
- << "If your file contains the information about dimension of persistence pairs, please provide here the "
- << "dimension of persistence pairs you want to use. "
- << "If your input files consist only of birth-death pairs, please set this first parameter to -1.\n"
- << "The remaining parameters of the program are the names of files with persistence diagrams.\n";
-
- if (argc < 3) {
- std::cout << "Wrong parameter list, the program will now terminate \n";
- return 1;
- }
-
- unsigned dimension = std::numeric_limits<unsigned>::max();
- int dim = atoi(argv[1]);
- if (dim >= 0) {
- dimension = (unsigned)dim;
- }
- std::vector<const char*> filenames;
- for (int i = 2; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- double min_ = std::numeric_limits<double>::max();
- double max_ = -std::numeric_limits<double>::max();
-
- for (size_t file_no = 0; file_no != filenames.size(); ++file_no) {
- std::cout << "Creating diagram based on a file : " << filenames[file_no] << std::endl;
- Persistence_intervals p(filenames[file_no], dimension);
- std::pair<double, double> min_max_ = p.get_x_range();
- if (min_max_.first < min_) min_ = min_max_.first;
- if (min_max_.second > max_) max_ = min_max_.second;
- }
- std::cout << "Birth-death range : min: " << min_ << ", max: " << max_ << std::endl;
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_intervals/compute_bottleneck_distance.cpp b/utilities/Persistence_representations/persistence_intervals/compute_bottleneck_distance.cpp
deleted file mode 100644
index a6953b98..00000000
--- a/utilities/Persistence_representations/persistence_intervals/compute_bottleneck_distance.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_intervals_with_distances.h>
-
-#include <iostream>
-#include <sstream>
-#include <limits>
-#include <vector>
-
-using Persistence_intervals_with_distances = Gudhi::Persistence_representations::Persistence_intervals_with_distances;
-
-int main(int argc, char** argv) {
- std::cout << "This program computes the bottleneck distance of persistence pairs in diagrams provided as "
- << "an input.\n"
- << "The first parameter is the dimension of persistence to be used to create persistence intervals. "
- << "If your file contains the information about dimension of persistence pairs, please provide here the "
- << "dimension of persistence pairs you want to use. "
- << "If your input files consist only of birth-death pairs, please set this first parameter to -1.\n"
- << "The remaining parameters of the program are the names of files with persistence diagrams.\n";
-
- if (argc < 3) {
- std::cout << "Wrong number of parameters, the program will now terminate \n";
- return 1;
- }
-
- unsigned dimension = std::numeric_limits<unsigned>::max();
- int dim = atoi(argv[1]);
- if (dim >= 0) {
- dimension = (unsigned)dim;
- }
-
- std::vector<const char*> filenames;
- for (int i = 2; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- // reading the persistence intervals:
- std::vector<Persistence_intervals_with_distances> persistence_intervals;
- for (size_t i = 0; i != filenames.size(); ++i) {
- Persistence_intervals_with_distances pers(filenames[i], dimension);
- persistence_intervals.push_back(pers);
- }
-
- // and now we will compute the scalar product of landscapes.
-
- // first we prepare an array:
- std::vector<std::vector<double> > distance(filenames.size());
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::vector<double> v(filenames.size(), 0);
- distance[i] = v;
- }
-
- // and now we can compute the distances:
- for (size_t i = 0; i != persistence_intervals.size(); ++i) {
- for (size_t j = i + 1; j != persistence_intervals.size(); ++j) {
- distance[i][j] = distance[j][i] = persistence_intervals[i].distance(persistence_intervals[j]);
- }
- }
-
- // and now output the result to the screen and a file:
- std::ofstream out;
- out.open("distance.itv");
- for (size_t i = 0; i != distance.size(); ++i) {
- for (size_t j = 0; j != distance.size(); ++j) {
- std::cout << distance[i][j] << " ";
- out << distance[i][j] << " ";
- }
- std::cout << std::endl;
- out << std::endl;
- }
- out.close();
-
- std::cout << "Distance can be found in 'distance.itv' file\n";
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_intervals/compute_number_of_dominant_intervals.cpp b/utilities/Persistence_representations/persistence_intervals/compute_number_of_dominant_intervals.cpp
deleted file mode 100644
index 4f052f42..00000000
--- a/utilities/Persistence_representations/persistence_intervals/compute_number_of_dominant_intervals.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_intervals.h>
-
-#include <iostream>
-#include <limits>
-#include <vector>
-#include <utility>
-
-using Persistence_intervals = Gudhi::Persistence_representations::Persistence_intervals;
-
-int main(int argc, char** argv) {
- std::cout << "This program compute the dominant intervals. A number of intervals to be displayed is a parameter of "
- "this program. \n";
- if (argc != 4) {
- std::cout << "To run this program, please provide the name of a file with persistence diagram, dimension of "
- "intervals that should be taken into account (if your file contains only persistence pairs in a "
- "single dimension, set it up to -1) and number of dominant intervals you would like to get \n";
- return 1;
- }
- int dim = atoi(argv[2]);
- unsigned dimension = std::numeric_limits<unsigned>::max();
- if (dim >= 0) {
- dimension = (unsigned)dim;
- }
- Persistence_intervals p(argv[1], dimension);
- std::vector<std::pair<double, double> > dominant_intervals = p.dominant_intervals(atoi(argv[3]));
- std::cout << "Here are the dominant intervals : " << std::endl;
- for (size_t i = 0; i != dominant_intervals.size(); ++i) {
- std::cout << " " << dominant_intervals[i].first << "," << dominant_intervals[i].second << " " << std::endl;
- }
-
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_intervals/plot_histogram_of_intervals_lengths.cpp b/utilities/Persistence_representations/persistence_intervals/plot_histogram_of_intervals_lengths.cpp
deleted file mode 100644
index f283971b..00000000
--- a/utilities/Persistence_representations/persistence_intervals/plot_histogram_of_intervals_lengths.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_intervals.h>
-
-#include <iostream>
-#include <vector>
-#include <limits>
-#include <utility>
-
-using Persistence_intervals = Gudhi::Persistence_representations::Persistence_intervals;
-
-int main(int argc, char** argv) {
- std::cout << "This program computes a histogram of barcode's length. A number of bins in the histogram is a "
- << "parameter of this program. \n";
- if ((argc != 3) && (argc != 4)) {
- std::cout << "To run this program, please provide the name of a file with persistence diagram and number of "
- << "dominant intervals you would like to get. Set a negative number dominant intervals value "
- << "If your file contains only birth-death pairs.\n"
- << "The third parameter is the dimension of the persistence that is to be used. If your "
- << "file contains only birth-death pairs, you can skip this parameter\n";
- return 1;
- }
-
- unsigned dominant_interval_number = std::numeric_limits<unsigned>::max();
- int nbr = atoi(argv[2]);
- if (nbr >= 0) {
- dominant_interval_number = static_cast<unsigned>(nbr);
- }
-
- int persistence_dimension = -1;
- if (argc == 4) {
- persistence_dimension = atoi(argv[3]);
- }
-
- Persistence_intervals p(argv[1], dominant_interval_number);
- std::vector<std::pair<double, double> > dominant_intervals = p.dominant_intervals(persistence_dimension);
- std::vector<size_t> histogram = p.histogram_of_lengths(10);
-
- std::stringstream gnuplot_script;
- gnuplot_script << argv[1] << "_GnuplotScript";
- std::ofstream out;
- out.open(gnuplot_script.str().c_str());
-
- out << "set style data histogram" << std::endl;
- out << "set style histogram cluster gap 1" << std::endl;
- out << "set style fill solid border -1" << std::endl;
- out << "plot '-' notitle" << std::endl;
- for (size_t i = 0; i != histogram.size(); ++i) {
- out << histogram[i] << std::endl;
- }
- out << std::endl;
- out.close();
-
- std::cout << "To visualize, install gnuplot and type the command: gnuplot -persist -e \"load \'"
- << gnuplot_script.str().c_str() << "\'\"" << std::endl;
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_intervals/plot_persistence_Betti_numbers.cpp b/utilities/Persistence_representations/persistence_intervals/plot_persistence_Betti_numbers.cpp
deleted file mode 100644
index 1cacbcd0..00000000
--- a/utilities/Persistence_representations/persistence_intervals/plot_persistence_Betti_numbers.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_intervals.h>
-
-#include <iostream>
-#include <vector>
-#include <limits>
-#include <utility>
-
-using Persistence_intervals = Gudhi::Persistence_representations::Persistence_intervals;
-
-int main(int argc, char** argv) {
- if ((argc != 3) && (argc != 2)) {
- std::cout << "This program creates a gnuplot script of Betti numbers from a single persistence diagram file"
- << "(*.pers).\n"
- << "To run this program, please provide the name of a file with persistence diagram.\n"
- << "The second optional parameter of a program is the dimension of the persistence that is to be used. "
- << "If your file contains only birth-death pairs, you can skip this parameter.\n";
- return 1;
- }
-
- unsigned dimension = std::numeric_limits<unsigned>::max();
- int dim = -1;
- if (argc == 3) {
- dim = atoi(argv[2]);
- }
- if (dim >= 0) {
- dimension = (unsigned)dim;
- }
-
- Persistence_intervals p(argv[1], dimension);
- std::vector<std::pair<double, size_t> > pbns = p.compute_persistent_betti_numbers();
-
- // set up the ranges so that we see the image well.
- double xRangeBegin = pbns[0].first;
- double xRangeEnd = pbns[pbns.size() - 1].first;
- double yRangeBegin = 0;
- double yRangeEnd = 0;
- for (size_t i = 0; i != pbns.size(); ++i) {
- if (pbns[i].second > yRangeEnd) yRangeEnd = pbns[i].second;
- }
- xRangeBegin -= (xRangeEnd - xRangeBegin) / 100.0;
- xRangeEnd += (xRangeEnd - xRangeBegin) / 100.0;
- yRangeEnd += yRangeEnd / 100;
-
- std::stringstream gnuplot_script;
- gnuplot_script << argv[1] << "_GnuplotScript";
- std::ofstream out;
- out.open(gnuplot_script.str().c_str());
-
- out << "set xrange [" << xRangeBegin << " : " << xRangeEnd << "]" << std::endl;
- out << "set yrange [" << yRangeBegin << " : " << yRangeEnd << "]" << std::endl;
- out << "plot '-' using 1:2 notitle with lp " << std::endl;
- double previous_y = 0;
- for (size_t i = 0; i != pbns.size(); ++i) {
- out << pbns[i].first << " " << previous_y << std::endl;
- out << pbns[i].first << " " << pbns[i].second << std::endl;
- previous_y = pbns[i].second;
- }
- out << std::endl;
- out.close();
-
- std::cout << "To visualize, install gnuplot and type the command: gnuplot -persist -e \"load \'"
- << gnuplot_script.str().c_str() << "\'\"" << std::endl;
-
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_intervals/plot_persistence_intervals.cpp b/utilities/Persistence_representations/persistence_intervals/plot_persistence_intervals.cpp
deleted file mode 100644
index f92d5782..00000000
--- a/utilities/Persistence_representations/persistence_intervals/plot_persistence_intervals.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_intervals.h>
-
-#include <iostream>
-#include <limits>
-#include <vector>
-#include <utility>
-
-using Persistence_intervals = Gudhi::Persistence_representations::Persistence_intervals;
-
-int main(int argc, char** argv) {
- if ((argc != 3) && (argc != 2)) {
- std::cout << "This program creates a gnuplot script from a single persistence diagram file (*.pers).\n"
- << "To run this program, please provide the name of a file with persistence diagram.\n"
- << "The second optional parameter of a program is the dimension of the persistence that is to be used. "
- << "If your file contains only birth-death pairs, you can skip this parameter.\n";
- return 1;
- }
- unsigned dimension = std::numeric_limits<unsigned>::max();
- int dim = -1;
- if (argc == 3) {
- dim = atoi(argv[2]);
- }
- if (dim >= 0) {
- dimension = (unsigned)dim;
- }
- std::vector<std::pair<double, double> > intervals =
- Gudhi::Persistence_representations::read_persistence_intervals_in_one_dimension_from_file(argv[1], dimension);
- Persistence_intervals b(intervals);
- b.plot(argv[1]);
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_landscapes/CMakeLists.txt b/utilities/Persistence_representations/persistence_landscapes/CMakeLists.txt
deleted file mode 100644
index 6b24d032..00000000
--- a/utilities/Persistence_representations/persistence_landscapes/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-project(Persistence_representations_landscapes_utilities)
-
-add_persistence_representation_creation_utility(create_landscapes "-1")
-
-add_persistence_representation_plot_utility(plot_landscapes ".land")
-
-add_persistence_representation_function_utility(average_landscapes ".land")
-add_persistence_representation_function_utility(compute_distance_of_landscapes ".land" "1")
-add_persistence_representation_function_utility(compute_scalar_product_of_landscapes ".land")
diff --git a/utilities/Persistence_representations/persistence_landscapes/average_landscapes.cpp b/utilities/Persistence_representations/persistence_landscapes/average_landscapes.cpp
deleted file mode 100644
index 4048f508..00000000
--- a/utilities/Persistence_representations/persistence_landscapes/average_landscapes.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_landscape.h>
-
-#include <iostream>
-#include <vector>
-
-using Persistence_landscape = Gudhi::Persistence_representations::Persistence_landscape;
-
-int main(int argc, char** argv) {
- std::cout << "This program computes average of persistence landscapes stored in files (the files needs to be "
- << "created beforehand).\n"
- << "The parameters of this programs are names of files with persistence landscapes.\n";
- std::vector<const char*> filenames;
-
- if (argc < 3) {
- std::cout << "Wrong number of parameters, the program will now terminate \n";
- return 1;
- }
-
- for (int i = 1; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- std::vector<Persistence_landscape*> lands;
- for (size_t i = 0; i != filenames.size(); ++i) {
- Persistence_landscape* l = new Persistence_landscape;
- l->load_landscape_from_file(filenames[i]);
- lands.push_back(l);
- }
-
- Persistence_landscape av;
- av.compute_average(lands);
-
- av.print_to_file("average.land");
-
- for (size_t i = 0; i != filenames.size(); ++i) {
- delete lands[i];
- }
-
- std::cout << "Average can be found in 'average.land' file\n";
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_landscapes/compute_distance_of_landscapes.cpp b/utilities/Persistence_representations/persistence_landscapes/compute_distance_of_landscapes.cpp
deleted file mode 100644
index 253fa273..00000000
--- a/utilities/Persistence_representations/persistence_landscapes/compute_distance_of_landscapes.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_landscape.h>
-
-#include <iostream>
-#include <sstream>
-#include <limits>
-#include <vector>
-
-using Persistence_landscape = Gudhi::Persistence_representations::Persistence_landscape;
-
-int main(int argc, char** argv) {
- std::cout << "This program computes distance of persistence landscapes stored in files (the files needs to be "
- << "created beforehand).\n"
- << "The first parameter of a program is an integer p. The program compute L^p distance of the two heat "
- << "maps. For L^infty distance choose p = -1. \n"
- << "The remaining parameters of this program are names of files with persistence landscapes.\n";
-
- if (argc < 3) {
- std::cout << "Wrong number of parameters, the program will now terminate \n";
- return 1;
- }
-
- int pp = atoi(argv[1]);
- double p = std::numeric_limits<double>::max();
- if (pp != -1) {
- p = pp;
- }
-
- std::vector<const char*> filenames;
- for (int i = 2; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
- std::vector<Persistence_landscape> landscaspes;
- landscaspes.reserve(filenames.size());
- for (size_t file_no = 0; file_no != filenames.size(); ++file_no) {
- Persistence_landscape l;
- l.load_landscape_from_file(filenames[file_no]);
- landscaspes.push_back(l);
- }
-
- // and now we will compute the scalar product of landscapes.
-
- // first we prepare an array:
- std::vector<std::vector<double> > distance(filenames.size());
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::vector<double> v(filenames.size(), 0);
- distance[i] = v;
- }
-
- // and now we can compute the distances:
- for (size_t i = 0; i != landscaspes.size(); ++i) {
- for (size_t j = i; j != landscaspes.size(); ++j) {
- distance[i][j] = distance[j][i] = compute_distance_of_landscapes(landscaspes[i], landscaspes[j], p);
- }
- }
-
- // and now output the result to the screen and a file:
- std::ofstream out;
- out.open("distance.land");
- for (size_t i = 0; i != distance.size(); ++i) {
- for (size_t j = 0; j != distance.size(); ++j) {
- std::cout << distance[i][j] << " ";
- out << distance[i][j] << " ";
- }
- std::cout << std::endl;
- out << std::endl;
- }
- out.close();
-
- std::cout << "Distance can be found in 'distance.land' file\n";
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_landscapes/compute_scalar_product_of_landscapes.cpp b/utilities/Persistence_representations/persistence_landscapes/compute_scalar_product_of_landscapes.cpp
deleted file mode 100644
index 11fe2886..00000000
--- a/utilities/Persistence_representations/persistence_landscapes/compute_scalar_product_of_landscapes.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_landscape.h>
-
-#include <iostream>
-#include <sstream>
-#include <vector>
-
-using Persistence_landscape = Gudhi::Persistence_representations::Persistence_landscape;
-
-int main(int argc, char** argv) {
- std::cout << "This program computes scalar product of persistence landscapes stored in a file (the file needs to be "
- << "created beforehand). \n"
- << "The parameters of this programs are names of files with persistence landscapes.\n";
-
- if (argc < 3) {
- std::cout << "Wrong number of parameters, the program will now terminate \n";
- return 1;
- }
-
- std::vector<const char*> filenames;
- for (int i = 1; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
- std::vector<Persistence_landscape> landscaspes;
- landscaspes.reserve(filenames.size());
- for (size_t file_no = 0; file_no != filenames.size(); ++file_no) {
- Persistence_landscape l;
- l.load_landscape_from_file(filenames[file_no]);
- landscaspes.push_back(l);
- }
-
- // and now we will compute the scalar product of landscapes.
-
- // first we prepare an array:
- std::vector<std::vector<double> > scalar_product(filenames.size());
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::vector<double> v(filenames.size(), 0);
- scalar_product[i] = v;
- }
-
- // and now we can compute the scalar product:
- for (size_t i = 0; i != landscaspes.size(); ++i) {
- for (size_t j = i; j != landscaspes.size(); ++j) {
- scalar_product[i][j] = scalar_product[j][i] = compute_inner_product(landscaspes[i], landscaspes[j]);
- }
- }
-
- // and now output the result to the screen and a file:
- std::ofstream out;
- out.open("scalar_product.land");
- for (size_t i = 0; i != scalar_product.size(); ++i) {
- for (size_t j = 0; j != scalar_product.size(); ++j) {
- std::cout << scalar_product[i][j] << " ";
- out << scalar_product[i][j] << " ";
- }
- std::cout << std::endl;
- out << std::endl;
- }
- out.close();
-
- std::cout << "Distance can be found in 'scalar_product.land' file\n";
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_landscapes/create_landscapes.cpp b/utilities/Persistence_representations/persistence_landscapes/create_landscapes.cpp
deleted file mode 100644
index 59aad2f3..00000000
--- a/utilities/Persistence_representations/persistence_landscapes/create_landscapes.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_landscape.h>
-
-#include <iostream>
-#include <sstream>
-#include <vector>
-#include <limits>
-
-using Persistence_landscape = Gudhi::Persistence_representations::Persistence_landscape;
-
-int main(int argc, char** argv) {
- std::cout << "This program creates persistence landscapes files (*.land) of persistence diagrams files (*.pers) "
- << "provided as an input.\n"
- << "The first parameter of this program is a dimension of persistence that will be used in creation of "
- << "the persistence heat maps."
- << "If your input files contains persistence pairs of various dimension, as a first parameter of the "
- << "procedure please provide the dimension of persistence you want to use."
- << "If in your files there are only birth-death pairs of the same dimension, set the first parameter to "
- << "-1.\n"
- << "The remaining parameters are the names of files with persistence diagrams. \n";
-
- if (argc < 3) {
- std::cout << "Wrong parameter list, the program will now terminate \n";
- return 1;
- }
- std::vector<const char*> filenames;
- int dim = atoi(argv[1]);
- unsigned dimension = std::numeric_limits<unsigned>::max();
- if (dim >= 0) {
- dimension = (unsigned)dim;
- }
- for (int i = 2; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::cout << "Creating a landscape based on file : " << filenames[i] << std::endl;
- Persistence_landscape l(filenames[i], dimension);
- std::stringstream ss;
- ss << filenames[i] << ".land";
- l.print_to_file(ss.str().c_str());
- }
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_landscapes/plot_landscapes.cpp b/utilities/Persistence_representations/persistence_landscapes/plot_landscapes.cpp
deleted file mode 100644
index f32a92a1..00000000
--- a/utilities/Persistence_representations/persistence_landscapes/plot_landscapes.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_landscape.h>
-
-#include <iostream>
-#include <sstream>
-
-using Persistence_landscape = Gudhi::Persistence_representations::Persistence_landscape;
-
-int main(int argc, char** argv) {
- std::cout << "This program creates a gnuplot script from a persistence landscape stored in a file (the file needs "
- << "to be created beforehand). Please call the code with the name of a single landscape file.\n";
- if (argc != 2) {
- std::cout << "Wrong parameter list, the program will now terminate \n";
- return 1;
- }
-
- Persistence_landscape l;
- l.load_landscape_from_file(argv[1]);
- l.plot(argv[1]);
-
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_landscapes_on_grid/CMakeLists.txt b/utilities/Persistence_representations/persistence_landscapes_on_grid/CMakeLists.txt
deleted file mode 100644
index 36f3196b..00000000
--- a/utilities/Persistence_representations/persistence_landscapes_on_grid/CMakeLists.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-project(Persistence_representations_lanscapes_on_grid_utilities)
-
-# Need to set grid min and max for further average, distance and scalar_product
-add_persistence_representation_creation_utility(create_landscapes_on_grid "100" "0" "35" "-1")
-
-add_persistence_representation_plot_utility(plot_landscapes_on_grid ".g_land")
-
-add_persistence_representation_function_utility(average_landscapes_on_grid ".g_land")
-add_persistence_representation_function_utility(compute_distance_of_landscapes_on_grid ".g_land" "1")
-add_persistence_representation_function_utility(compute_scalar_product_of_landscapes_on_grid ".g_land")
diff --git a/utilities/Persistence_representations/persistence_landscapes_on_grid/average_landscapes_on_grid.cpp b/utilities/Persistence_representations/persistence_landscapes_on_grid/average_landscapes_on_grid.cpp
deleted file mode 100644
index 47102087..00000000
--- a/utilities/Persistence_representations/persistence_landscapes_on_grid/average_landscapes_on_grid.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_landscape_on_grid.h>
-
-#include <iostream>
-#include <vector>
-
-using Persistence_landscape_on_grid = Gudhi::Persistence_representations::Persistence_landscape_on_grid;
-
-int main(int argc, char** argv) {
- std::cout << "This program computes average of persistence landscapes on grid stored in files (the files needs to "
- << "be created beforehand).\n"
- << "The parameters of this programs are names of files with persistence landscapes on grid.\n";
-
- if (argc < 3) {
- std::cout << "Wrong number of parameters, the program will now terminate \n";
- return 1;
- }
-
- std::vector<const char*> filenames;
- for (int i = 1; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- std::vector<Persistence_landscape_on_grid*> lands;
- for (size_t i = 0; i != filenames.size(); ++i) {
- Persistence_landscape_on_grid* l = new Persistence_landscape_on_grid;
- l->load_landscape_from_file(filenames[i]);
- lands.push_back(l);
- }
-
- Persistence_landscape_on_grid av;
- av.compute_average(lands);
-
- av.print_to_file("average.g_land");
-
- for (size_t i = 0; i != filenames.size(); ++i) {
- delete lands[i];
- }
-
- std::cout << "Average can be found in 'average.g_land' file\n";
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_landscapes_on_grid/compute_distance_of_landscapes_on_grid.cpp b/utilities/Persistence_representations/persistence_landscapes_on_grid/compute_distance_of_landscapes_on_grid.cpp
deleted file mode 100644
index 6cf2739d..00000000
--- a/utilities/Persistence_representations/persistence_landscapes_on_grid/compute_distance_of_landscapes_on_grid.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_landscape_on_grid.h>
-
-#include <iostream>
-#include <sstream>
-#include <limits>
-#include <vector>
-
-using Persistence_landscape_on_grid = Gudhi::Persistence_representations::Persistence_landscape_on_grid;
-
-int main(int argc, char** argv) {
- std::cout << "This program computes distance of persistence landscapes on grid stored in files (the files needs to "
- << "be created beforehand).\n"
- << "The first parameter of a program is an integer p. The program compute L^p distance of the two heat "
- << "maps. For L^infty distance choose p = -1. \n"
- << "The remaining parameters of this program are names of files with persistence landscapes on grid.\n";
-
- if (argc < 3) {
- std::cout << "Wrong number of parameters, the program will now terminate \n";
- return 1;
- }
-
- int pp = atoi(argv[1]);
- double p = std::numeric_limits<double>::max();
- if (pp != -1) {
- p = pp;
- }
-
- std::vector<const char*> filenames;
- for (int i = 2; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
- std::vector<Persistence_landscape_on_grid> landscaspes;
- landscaspes.reserve(filenames.size());
- for (size_t file_no = 0; file_no != filenames.size(); ++file_no) {
- Persistence_landscape_on_grid l;
- l.load_landscape_from_file(filenames[file_no]);
- landscaspes.push_back(l);
- }
-
- // and now we will compute the scalar product of landscapes.
-
- // first we prepare an array:
- std::vector<std::vector<double> > distance(filenames.size());
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::vector<double> v(filenames.size(), 0);
- distance[i] = v;
- }
-
- // and now we can compute the scalar product:
- for (size_t i = 0; i != landscaspes.size(); ++i) {
- for (size_t j = i; j != landscaspes.size(); ++j) {
- distance[i][j] = distance[j][i] = compute_distance_of_landscapes_on_grid(landscaspes[i], landscaspes[j], p);
- }
- }
-
- // and now output the result to the screen and a file:
- std::ofstream out;
- out.open("distance.g_land");
- for (size_t i = 0; i != distance.size(); ++i) {
- for (size_t j = 0; j != distance.size(); ++j) {
- std::cout << distance[i][j] << " ";
- out << distance[i][j] << " ";
- }
- std::cout << std::endl;
- out << std::endl;
- }
- out.close();
-
- std::cout << "Distance can be found in 'distance.g_land' file\n";
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_landscapes_on_grid/compute_scalar_product_of_landscapes_on_grid.cpp b/utilities/Persistence_representations/persistence_landscapes_on_grid/compute_scalar_product_of_landscapes_on_grid.cpp
deleted file mode 100644
index 9417be6b..00000000
--- a/utilities/Persistence_representations/persistence_landscapes_on_grid/compute_scalar_product_of_landscapes_on_grid.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_landscape_on_grid.h>
-
-#include <iostream>
-#include <sstream>
-#include <vector>
-
-using Persistence_landscape_on_grid = Gudhi::Persistence_representations::Persistence_landscape_on_grid;
-
-int main(int argc, char** argv) {
- std::cout
- << "This program computes scalar product of persistence landscapes on grid stored in a file (the file needs to "
- << "be created beforehand). \n"
- << "The parameters of this programs are names of files with persistence landscapes on grid.\n";
-
- if (argc < 3) {
- std::cout << "Wrong number of parameters, the program will now terminate \n";
- return 1;
- }
-
- std::vector<const char*> filenames;
- for (int i = 1; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
- std::vector<Persistence_landscape_on_grid> landscaspes;
- landscaspes.reserve(filenames.size());
- for (size_t file_no = 0; file_no != filenames.size(); ++file_no) {
- Persistence_landscape_on_grid l;
- l.load_landscape_from_file(filenames[file_no]);
- landscaspes.push_back(l);
- }
-
- // and now we will compute the scalar product of landscapes.
-
- // first we prepare an array:
- std::vector<std::vector<double> > scalar_product(filenames.size());
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::vector<double> v(filenames.size(), 0);
- scalar_product[i] = v;
- }
-
- // and now we can compute the scalar product:
- for (size_t i = 0; i != landscaspes.size(); ++i) {
- for (size_t j = i; j != landscaspes.size(); ++j) {
- scalar_product[i][j] = scalar_product[j][i] = compute_inner_product(landscaspes[i], landscaspes[j]);
- }
- }
-
- // and now output the result to the screen and a file:
- std::ofstream out;
- out.open("scalar_product.g_land");
- for (size_t i = 0; i != scalar_product.size(); ++i) {
- for (size_t j = 0; j != scalar_product.size(); ++j) {
- std::cout << scalar_product[i][j] << " ";
- out << scalar_product[i][j] << " ";
- }
- std::cout << std::endl;
- out << std::endl;
- }
- out.close();
-
- std::cout << "Distance can be found in 'scalar_product.g_land' file\n";
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_landscapes_on_grid/create_landscapes_on_grid.cpp b/utilities/Persistence_representations/persistence_landscapes_on_grid/create_landscapes_on_grid.cpp
deleted file mode 100644
index 46e229bc..00000000
--- a/utilities/Persistence_representations/persistence_landscapes_on_grid/create_landscapes_on_grid.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_landscape_on_grid.h>
-
-#include <iostream>
-#include <sstream>
-#include <limits>
-#include <vector>
-
-using Persistence_landscape_on_grid = Gudhi::Persistence_representations::Persistence_landscape_on_grid;
-
-int main(int argc, char** argv) {
- std::cout << "This program creates persistence landscapes on grid files (*.g_land) of persistence diagrams files "
- << "(*.pers) provided as an input.\n"
- << "The first parameter of a program is an integer, a size of a grid.\n"
- << "The second and third parameters are min and max of the grid. If you want those numbers to be computed "
- << "based on the data, set them both to -1 \n"
- << "The fourth parameter of this program is a dimension of persistence that will be used in creation of "
- << "the persistence heat maps."
- << "If your input files contains persistence pairs of various dimension, as a fourth parameter of the "
- << "procedure please provide the dimension of persistence you want to use."
- << "If in your files there are only birth-death pairs of the same dimension, set the fourth parameter to "
- << "-1.\n"
- << "The remaining parameters are the names of files with persistence diagrams. \n";
-
- if (argc < 6) {
- std::cout << "Wrong parameter list, the program will now terminate \n";
- return 1;
- }
-
- size_t size_of_grid = (size_t)atoi(argv[1]);
- double min_ = atof(argv[2]);
- double max_ = atof(argv[3]);
- int dim = atoi(argv[4]);
- unsigned dimension = std::numeric_limits<unsigned>::max();
- if (dim >= 0) {
- dimension = (unsigned)dim;
- }
-
- std::vector<const char*> filenames;
- for (int i = 5; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::cout << "Creating persistence landscape on a grid based on a file : " << filenames[i] << std::endl;
- Persistence_landscape_on_grid l;
- if ((min_ != -1) || (max_ != -1)) {
- l = Persistence_landscape_on_grid(filenames[i], min_, max_, size_of_grid, dimension);
- } else {
- // (min_ == -1) && (max_ == -1), in this case the program will find min_ and max_ based on the data.
- l = Persistence_landscape_on_grid(filenames[i], size_of_grid, dimension);
- }
- std::stringstream ss;
- ss << filenames[i] << ".g_land";
- l.print_to_file(ss.str().c_str());
- }
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_landscapes_on_grid/plot_landscapes_on_grid.cpp b/utilities/Persistence_representations/persistence_landscapes_on_grid/plot_landscapes_on_grid.cpp
deleted file mode 100644
index 39e438d2..00000000
--- a/utilities/Persistence_representations/persistence_landscapes_on_grid/plot_landscapes_on_grid.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_landscape_on_grid.h>
-
-#include <iostream>
-#include <sstream>
-
-using Persistence_landscape_on_grid = Gudhi::Persistence_representations::Persistence_landscape_on_grid;
-
-int main(int argc, char** argv) {
- std::cout << "This program creates a gnuplot script from a persistence landscape on grid stored in a file (the file "
- << "needs to be created beforehand). Please call the code with the name of a single landscape on grid file"
- << ".\n";
- if (argc != 2) {
- std::cout << "Wrong parameter list, the program will now terminate \n";
- return 1;
- }
-
- Persistence_landscape_on_grid l;
- l.load_landscape_from_file(argv[1]);
- l.plot(argv[1]);
-
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_vectors/CMakeLists.txt b/utilities/Persistence_representations/persistence_vectors/CMakeLists.txt
deleted file mode 100644
index bc982094..00000000
--- a/utilities/Persistence_representations/persistence_vectors/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-project(Persistence_vectors_utilities)
-
-add_persistence_representation_creation_utility(create_persistence_vectors "-1")
-
-add_persistence_representation_plot_utility(plot_persistence_vectors ".vect")
-
-add_persistence_representation_function_utility(average_persistence_vectors ".vect")
-add_persistence_representation_function_utility(compute_distance_of_persistence_vectors ".vect" "1")
-add_persistence_representation_function_utility(compute_scalar_product_of_persistence_vectors ".vect")
diff --git a/utilities/Persistence_representations/persistence_vectors/average_persistence_vectors.cpp b/utilities/Persistence_representations/persistence_vectors/average_persistence_vectors.cpp
deleted file mode 100644
index 45199838..00000000
--- a/utilities/Persistence_representations/persistence_vectors/average_persistence_vectors.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_vectors.h>
-
-#include <iostream>
-#include <vector>
-
-using Euclidean_distance = Gudhi::Euclidean_distance;
-using Vector_distances_in_diagram = Gudhi::Persistence_representations::Vector_distances_in_diagram<Euclidean_distance>;
-
-int main(int argc, char** argv) {
- std::cout << "This program computes average of persistence vectors stored in files (the files needs to "
- << "be created beforehand).\n"
- << "The parameters of this programs are names of files with persistence vectors.\n";
-
- if (argc < 3) {
- std::cout << "Wrong number of parameters, the program will now terminate \n";
- return 1;
- }
-
- std::vector<const char*> filenames;
- for (int i = 1; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- std::vector<Vector_distances_in_diagram*> lands;
- for (size_t i = 0; i != filenames.size(); ++i) {
- Vector_distances_in_diagram* l = new Vector_distances_in_diagram;
- l->load_from_file(filenames[i]);
- lands.push_back(l);
- }
-
- Vector_distances_in_diagram av;
- av.compute_average(lands);
-
- av.print_to_file("average.vect");
-
- for (size_t i = 0; i != filenames.size(); ++i) {
- delete lands[i];
- }
-
- std::cout << "Done \n";
-
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_vectors/compute_distance_of_persistence_vectors.cpp b/utilities/Persistence_representations/persistence_vectors/compute_distance_of_persistence_vectors.cpp
deleted file mode 100644
index 0db7dbec..00000000
--- a/utilities/Persistence_representations/persistence_vectors/compute_distance_of_persistence_vectors.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_vectors.h>
-
-#include <iostream>
-#include <sstream>
-#include <limits>
-#include <vector>
-
-using Euclidean_distance = Gudhi::Euclidean_distance;
-using Vector_distances_in_diagram = Gudhi::Persistence_representations::Vector_distances_in_diagram<Euclidean_distance>;
-
-int main(int argc, char** argv) {
- std::cout << "This program compute distance of persistence vectors stored in a file (the file needs to be created "
- "beforehand). \n";
- std::cout << "The first parameter of a program is an integer p. The program compute l^p distance of the vectors. For "
- "l^infty distance choose p = -1. \n";
- std::cout << "The remaining parameters of this programs are names of files with persistence vectors.\n";
-
- if (argc < 3) {
- std::cout << "Wrong number of parameters, the program will now terminate \n";
- return 1;
- }
-
- int pp = atoi(argv[1]);
- double p = std::numeric_limits<double>::max();
- if (pp != -1) {
- p = pp;
- }
-
- std::vector<const char*> filenames;
- for (int i = 2; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
- std::vector<Vector_distances_in_diagram> vectors;
- vectors.reserve(filenames.size());
- for (size_t file_no = 0; file_no != filenames.size(); ++file_no) {
- Vector_distances_in_diagram l;
- l.load_from_file(filenames[file_no]);
- vectors.push_back(l);
- }
-
- // and now we will compute the scalar product of landscapes.
-
- // first we prepare an array:
- std::vector<std::vector<double> > distance(filenames.size());
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::vector<double> v(filenames.size(), 0);
- distance[i] = v;
- }
-
- // and now we can compute the distances:
- for (size_t i = 0; i != vectors.size(); ++i) {
- for (size_t j = i + 1; j != vectors.size(); ++j) {
- distance[i][j] = distance[j][i] = vectors[i].distance(vectors[j], p);
- }
- }
-
- // and now output the result to the screen and a file:
- std::ofstream out;
- out.open("distance.vect");
- for (size_t i = 0; i != distance.size(); ++i) {
- for (size_t j = 0; j != distance.size(); ++j) {
- std::cout << distance[i][j] << " ";
- out << distance[i][j] << " ";
- }
- std::cout << std::endl;
- out << std::endl;
- }
- out.close();
-
- std::cout << "Distance can be found in 'distance.vect' file\n";
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_vectors/compute_scalar_product_of_persistence_vectors.cpp b/utilities/Persistence_representations/persistence_vectors/compute_scalar_product_of_persistence_vectors.cpp
deleted file mode 100644
index 8e99251b..00000000
--- a/utilities/Persistence_representations/persistence_vectors/compute_scalar_product_of_persistence_vectors.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_vectors.h>
-
-#include <iostream>
-#include <sstream>
-#include <limits>
-#include <vector>
-
-using Euclidean_distance = Gudhi::Euclidean_distance;
-using Vector_distances_in_diagram = Gudhi::Persistence_representations::Vector_distances_in_diagram<Euclidean_distance>;
-
-int main(int argc, char** argv) {
- std::cout << "This program computes scalar product of persistence vectors stored in a file (the file needs to "
- << "be created beforehand). \n"
- << "The parameters of this programs are names of files with persistence vectors.\n";
-
- if (argc < 3) {
- std::cout << "Wrong number of parameters, the program will now terminate \n";
- return 1;
- }
-
- std::vector<const char*> filenames;
- for (int i = 1; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
- std::vector<Vector_distances_in_diagram> vectors;
- vectors.reserve(filenames.size());
- for (size_t file_no = 0; file_no != filenames.size(); ++file_no) {
- Vector_distances_in_diagram l;
- l.load_from_file(filenames[file_no]);
- vectors.push_back(l);
- }
-
- // and now we will compute the scalar product of landscapes.
-
- // first we prepare an array:
- std::vector<std::vector<double> > scalar_product(filenames.size());
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::vector<double> v(filenames.size(), 0);
- scalar_product[i] = v;
- }
-
- // and now we can compute the scalar product:
- for (size_t i = 0; i != vectors.size(); ++i) {
- for (size_t j = i; j != vectors.size(); ++j) {
- scalar_product[i][j] = scalar_product[j][i] = vectors[i].compute_scalar_product(vectors[j]);
- }
- }
-
- // and now output the result to the screen and a file:
- std::ofstream out;
- out.open("scalar_product.vect");
- for (size_t i = 0; i != scalar_product.size(); ++i) {
- for (size_t j = 0; j != scalar_product.size(); ++j) {
- std::cout << scalar_product[i][j] << " ";
- out << scalar_product[i][j] << " ";
- }
- std::cout << std::endl;
- out << std::endl;
- }
- out.close();
-
- std::cout << "Distance can be found in 'scalar_product.vect' file\n";
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_vectors/create_persistence_vectors.cpp b/utilities/Persistence_representations/persistence_vectors/create_persistence_vectors.cpp
deleted file mode 100644
index 364284e5..00000000
--- a/utilities/Persistence_representations/persistence_vectors/create_persistence_vectors.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_vectors.h>
-
-#include <iostream>
-#include <sstream>
-#include <limits>
-#include <vector>
-
-using Euclidean_distance = Gudhi::Euclidean_distance;
-using Vector_distances_in_diagram = Gudhi::Persistence_representations::Vector_distances_in_diagram<Euclidean_distance>;
-
-int main(int argc, char** argv) {
- std::cout << "This program creates persistence vectors files (*.vect) of persistence diagrams files (*.pers) "
- << "provided as an input.\n"
- << "The first parameter of this program is a dimension of persistence that will be used in creation of "
- << "the persistence heat maps."
- << "If your input files contains persistence pairs of various dimension, as a first parameter of the "
- << "procedure please provide the dimension of persistence you want to use."
- << "If in your files there are only birth-death pairs of the same dimension, set the first parameter to "
- << "-1.\n"
- << "The remaining parameters are the names of files with persistence diagrams. \n";
-
- if (argc < 3) {
- std::cout << "Wrong parameter list, the program will now terminate \n";
- return 1;
- }
-
- std::cout << "The remaining parameters are the names of files with persistence diagrams. \n";
- int dim = atoi(argv[1]);
- unsigned dimension = std::numeric_limits<unsigned>::max();
- if (dim >= 0) {
- dimension = (unsigned)dim;
- }
-
- std::vector<const char*> filenames;
- for (int i = 2; i < argc; ++i) {
- filenames.push_back(argv[i]);
- }
-
- for (size_t i = 0; i != filenames.size(); ++i) {
- std::cerr << "Creating persistence vectors based on a file : " << filenames[i] << std::endl;
- Vector_distances_in_diagram l(filenames[i], dimension);
- std::stringstream ss;
- ss << filenames[i] << ".vect";
- l.print_to_file(ss.str().c_str());
- }
- return 0;
-}
diff --git a/utilities/Persistence_representations/persistence_vectors/plot_persistence_vectors.cpp b/utilities/Persistence_representations/persistence_vectors/plot_persistence_vectors.cpp
deleted file mode 100644
index 550e47c5..00000000
--- a/utilities/Persistence_representations/persistence_vectors/plot_persistence_vectors.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Persistence_vectors.h>
-
-#include <iostream>
-#include <sstream>
-
-using Euclidean_distance = Gudhi::Euclidean_distance;
-using Vector_distances_in_diagram = Gudhi::Persistence_representations::Vector_distances_in_diagram<Euclidean_distance>;
-
-int main(int argc, char** argv) {
- std::cout << "This program create a Gnuplot script to plot persistence vector. Please call this program with the "
- "name of file with persistence vector. \n";
- if (argc != 2) {
- std::cout << "Wrong number of parameters, the program will now terminate. \n";
- return 1;
- }
- Vector_distances_in_diagram l;
- l.load_from_file(argv[1]);
- l.plot(argv[1]);
-
- return 0;
-}
diff --git a/utilities/Rips_complex/CMakeLists.txt b/utilities/Rips_complex/CMakeLists.txt
deleted file mode 100644
index 4b565628..00000000
--- a/utilities/Rips_complex/CMakeLists.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-project(Rips_complex_utilities)
-
-add_executable(rips_distance_matrix_persistence rips_distance_matrix_persistence.cpp)
-target_link_libraries(rips_distance_matrix_persistence ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
-add_executable(rips_persistence rips_persistence.cpp)
-target_link_libraries(rips_persistence ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
-add_executable(rips_correlation_matrix_persistence rips_correlation_matrix_persistence.cpp)
-target_link_libraries(rips_correlation_matrix_persistence ${Boost_SYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
-add_executable(sparse_rips_persistence sparse_rips_persistence.cpp)
-target_link_libraries(sparse_rips_persistence ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
-if (TBB_FOUND)
- target_link_libraries(rips_distance_matrix_persistence ${TBB_LIBRARIES})
- target_link_libraries(rips_persistence ${TBB_LIBRARIES})
- target_link_libraries(rips_correlation_matrix_persistence ${TBB_LIBRARIES})
- target_link_libraries(sparse_rips_persistence ${TBB_LIBRARIES})
-endif()
-
-add_test(NAME Rips_complex_utility_from_rips_distance_matrix COMMAND $<TARGET_FILE:rips_distance_matrix_persistence>
- "${CMAKE_SOURCE_DIR}/data/distance_matrix/full_square_distance_matrix.csv" "-r" "1.0" "-d" "3" "-p" "3" "-m" "0")
-add_test(NAME Rips_complex_utility_from_rips_on_tore_3D COMMAND $<TARGET_FILE:rips_persistence>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_1307.off" "-r" "0.25" "-m" "0.5" "-d" "3" "-p" "3")
-add_test(NAME Rips_complex_utility_from_rips_correlation_matrix COMMAND $<TARGET_FILE:rips_correlation_matrix_persistence>
- "${CMAKE_SOURCE_DIR}/data/correlation_matrix/lower_triangular_correlation_matrix.csv" "-c" "0.3" "-d" "3" "-p" "3" "-m" "0")
-add_test(NAME Sparse_rips_complex_utility_on_tore_3D COMMAND $<TARGET_FILE:sparse_rips_persistence>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_300.off" "-e" "0.5" "-m" "0.2" "-d" "3" "-p" "2")
-
-install(TARGETS rips_distance_matrix_persistence DESTINATION bin)
-install(TARGETS rips_persistence DESTINATION bin)
-install(TARGETS rips_correlation_matrix_persistence DESTINATION bin)
-install(TARGETS sparse_rips_persistence DESTINATION bin)
diff --git a/utilities/Rips_complex/rips_correlation_matrix_persistence.cpp b/utilities/Rips_complex/rips_correlation_matrix_persistence.cpp
deleted file mode 100644
index 287e8915..00000000
--- a/utilities/Rips_complex/rips_correlation_matrix_persistence.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko, Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Rips_complex.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/reader_utils.h>
-#include <gudhi/writing_persistence_to_file.h>
-
-#include <boost/program_options.hpp>
-
-#include <string>
-#include <vector>
-#include <limits> // infinity
-#include <algorithm> // for sort
-
-// Types definition
-using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-using Filtration_value = Simplex_tree::Filtration_value;
-using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
-using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp>;
-using Correlation_matrix = std::vector<std::vector<Filtration_value>>;
-using intervals_common = Gudhi::Persistence_interval_common<double, int>;
-
-void program_options(int argc, char* argv[], std::string& csv_matrix_file, std::string& filediag,
- Filtration_value& correlation_min, int& dim_max, int& p, Filtration_value& min_persistence);
-
-int main(int argc, char* argv[]) {
- std::string csv_matrix_file;
- std::string filediag;
- Filtration_value correlation_min;
- int dim_max;
- int p;
- Filtration_value min_persistence;
-
- program_options(argc, argv, csv_matrix_file, filediag, correlation_min, dim_max, p, min_persistence);
-
- Correlation_matrix correlations =
- Gudhi::read_lower_triangular_matrix_from_csv_file<Filtration_value>(csv_matrix_file);
-
- Filtration_value threshold = 0;
-
- // Given a correlation matrix M, we compute component-wise M'[i,j] = 1-M[i,j] to get a distance matrix:
- for (size_t i = 0; i != correlations.size(); ++i) {
- for (size_t j = 0; j != correlations[i].size(); ++j) {
- correlations[i][j] = 1 - correlations[i][j];
- // Here we make sure that the values of corelations lie between -1 and 1.
- // If not, we throw an exception.
- if ((correlations[i][j] < -1) || (correlations[i][j] > 1)) {
- std::cerr << "The input matrix is not a correlation matrix. The program will now terminate. \n";
- throw "The input matrix is not a correlation matrix. The program will now terminate. \n";
- }
- if (correlations[i][j] > threshold) threshold = correlations[i][j];
- }
- }
-
- Rips_complex rips_complex_from_file(correlations, threshold);
-
- // Construct the Rips complex in a Simplex Tree
- Simplex_tree simplex_tree;
-
- rips_complex_from_file.create_complex(simplex_tree, dim_max);
- std::cout << "The complex contains " << simplex_tree.num_simplices() << " simplices \n";
- std::cout << " and has dimension " << simplex_tree.dimension() << " \n";
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(simplex_tree);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(p);
- // compute persistence
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // invert the persistence diagram. The reason for this procedure is the following:
- // The input to the program is a corelation matrix M. When processing it, it is
- // turned into 1-M and the obtained persistence intervals are in '1-M' units.
- // Below we reverse every (birth,death) pair into (1-birth, 1-death) pair
- // so that the input and the output to the program is expressed in the same
- // units.
- auto pairs = pcoh.get_persistent_pairs();
- std::vector<intervals_common> processed_persistence_intervals;
- processed_persistence_intervals.reserve(pairs.size());
- for (auto pair : pairs) {
- double birth = 1 - simplex_tree.filtration(get<0>(pair));
- double death = 1 - simplex_tree.filtration(get<1>(pair));
- unsigned dimension = (unsigned)simplex_tree.dimension(get<0>(pair));
- int field = get<2>(pair);
- processed_persistence_intervals.push_back(intervals_common(birth, death, dimension, field));
- }
-
- // sort the processed intervals:
- std::sort(processed_persistence_intervals.begin(), processed_persistence_intervals.end());
-
- // and write them to a file
- if (filediag.empty()) {
- write_persistence_intervals_to_stream(processed_persistence_intervals);
- } else {
- std::ofstream out(filediag);
- write_persistence_intervals_to_stream(processed_persistence_intervals, out);
- }
- return 0;
-}
-
-void program_options(int argc, char* argv[], std::string& csv_matrix_file, std::string& filediag,
- Filtration_value& correlation_min, int& dim_max, int& p, Filtration_value& min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()(
- "input-file", po::value<std::string>(&csv_matrix_file),
- "Name of file containing a corelation matrix. Can be square or lower triangular matrix. Separator is ';'.");
- po::options_description visible("Allowed options", 100);
- visible.add_options()("help,h", "produce help message")(
- "output-file,o", po::value<std::string>(&filediag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")(
- "min-edge-corelation,c", po::value<Filtration_value>(&correlation_min)->default_value(0),
- "Minimal corelation of an edge for the Rips complex construction.")(
- "cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
- "Maximal dimension of the Rips complex we want to compute.")(
- "field-charac,p", po::value<int>(&p)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")(
- "min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length "
- "intervals");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a Rips complex defined on a corelation matrix.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/utilities/Rips_complex/rips_distance_matrix_persistence.cpp b/utilities/Rips_complex/rips_distance_matrix_persistence.cpp
deleted file mode 100644
index c73152cf..00000000
--- a/utilities/Rips_complex/rips_distance_matrix_persistence.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Pawel Dlotko, Vincent Rouvreau
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Rips_complex.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/reader_utils.h>
-
-#include <boost/program_options.hpp>
-
-#include <string>
-#include <vector>
-#include <limits> // infinity
-
-// Types definition
-using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-using Filtration_value = Simplex_tree::Filtration_value;
-using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
-using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp>;
-using Distance_matrix = std::vector<std::vector<Filtration_value>>;
-
-void program_options(int argc, char* argv[], std::string& csv_matrix_file, std::string& filediag,
- Filtration_value& threshold, int& dim_max, int& p, Filtration_value& min_persistence);
-
-int main(int argc, char* argv[]) {
- std::string csv_matrix_file;
- std::string filediag;
- Filtration_value threshold;
- int dim_max;
- int p;
- Filtration_value min_persistence;
-
- program_options(argc, argv, csv_matrix_file, filediag, threshold, dim_max, p, min_persistence);
-
- Distance_matrix distances = Gudhi::read_lower_triangular_matrix_from_csv_file<Filtration_value>(csv_matrix_file);
- Rips_complex rips_complex_from_file(distances, threshold);
-
- // Construct the Rips complex in a Simplex Tree
- Simplex_tree simplex_tree;
-
- rips_complex_from_file.create_complex(simplex_tree, dim_max);
- std::cout << "The complex contains " << simplex_tree.num_simplices() << " simplices \n";
- std::cout << " and has dimension " << simplex_tree.dimension() << " \n";
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(simplex_tree);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(p);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (filediag.empty()) {
- pcoh.output_diagram();
- } else {
- std::ofstream out(filediag);
- pcoh.output_diagram(out);
- out.close();
- }
- return 0;
-}
-
-void program_options(int argc, char* argv[], std::string& csv_matrix_file, std::string& filediag,
- Filtration_value& threshold, int& dim_max, int& p, Filtration_value& min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()(
- "input-file", po::value<std::string>(&csv_matrix_file),
- "Name of file containing a distance matrix. Can be square or lower triangular matrix. Separator is ';'.");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()("help,h", "produce help message")(
- "output-file,o", po::value<std::string>(&filediag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")(
- "max-edge-length,r",
- po::value<Filtration_value>(&threshold)->default_value(std::numeric_limits<Filtration_value>::infinity()),
- "Maximal length of an edge for the Rips complex construction.")(
- "cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
- "Maximal dimension of the Rips complex we want to compute.")(
- "field-charac,p", po::value<int>(&p)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")(
- "min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length "
- "intervals");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a Rips complex defined on a set of distance matrix.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/utilities/Rips_complex/rips_persistence.cpp b/utilities/Rips_complex/rips_persistence.cpp
deleted file mode 100644
index 9410b9c2..00000000
--- a/utilities/Rips_complex/rips_persistence.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Clément Maria
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Rips_complex.h>
-#include <gudhi/distance_functions.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Points_off_io.h>
-
-#include <boost/program_options.hpp>
-
-#include <string>
-#include <vector>
-#include <limits> // infinity
-
-// Types definition
-using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-using Filtration_value = Simplex_tree::Filtration_value;
-using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
-using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp>;
-using Point = std::vector<double>;
-using Points_off_reader = Gudhi::Points_off_reader<Point>;
-
-void program_options(int argc, char* argv[], std::string& off_file_points, std::string& filediag,
- Filtration_value& threshold, int& dim_max, int& p, Filtration_value& min_persistence);
-
-int main(int argc, char* argv[]) {
- std::string off_file_points;
- std::string filediag;
- Filtration_value threshold;
- int dim_max;
- int p;
- Filtration_value min_persistence;
-
- program_options(argc, argv, off_file_points, filediag, threshold, dim_max, p, min_persistence);
-
- Points_off_reader off_reader(off_file_points);
- Rips_complex rips_complex_from_file(off_reader.get_point_cloud(), threshold, Gudhi::Euclidean_distance());
-
- // Construct the Rips complex in a Simplex Tree
- Simplex_tree simplex_tree;
-
- rips_complex_from_file.create_complex(simplex_tree, dim_max);
- std::cout << "The complex contains " << simplex_tree.num_simplices() << " simplices \n";
- std::cout << " and has dimension " << simplex_tree.dimension() << " \n";
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(simplex_tree);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(p);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (filediag.empty()) {
- pcoh.output_diagram();
- } else {
- std::ofstream out(filediag);
- pcoh.output_diagram(out);
- out.close();
- }
-
- return 0;
-}
-
-void program_options(int argc, char* argv[], std::string& off_file_points, std::string& filediag,
- Filtration_value& threshold, int& dim_max, int& p, Filtration_value& min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()("input-file", po::value<std::string>(&off_file_points),
- "Name of an OFF file containing a point set.\n");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()("help,h", "produce help message")(
- "output-file,o", po::value<std::string>(&filediag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")(
- "max-edge-length,r",
- po::value<Filtration_value>(&threshold)->default_value(std::numeric_limits<Filtration_value>::infinity()),
- "Maximal length of an edge for the Rips complex construction.")(
- "cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
- "Maximal dimension of the Rips complex we want to compute.")(
- "field-charac,p", po::value<int>(&p)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")(
- "min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length "
- "intervals");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a Rips complex defined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/utilities/Rips_complex/ripscomplex.md b/utilities/Rips_complex/ripscomplex.md
deleted file mode 100644
index 6df49310..00000000
--- a/utilities/Rips_complex/ripscomplex.md
+++ /dev/null
@@ -1,109 +0,0 @@
----
-layout: page
-title: "Rips complex"
-meta_title: "Rips complex"
-teaser: ""
-permalink: /ripscomplex/
----
-{::comment}
-Leave the lines above as it is required by the web site generator 'Jekyll'
-{:/comment}
-
-
-## rips_persistence ##
-This program computes the persistent homology with coefficient field *Z/pZ* of a Rips complex defined on a set of input points, using Euclidean distance. The output diagram contains one bar per line, written with the convention:
-
-`p dim birth death`
-
-where `dim` is the dimension of the homological feature, `birth` and `death` are respectively the birth and death of the feature, and `p` is the characteristic of the field *Z/pZ* used for homology coefficients (`p` must be a prime number).
-
-**Usage**
-
-`rips_persistence [options] <OFF input file>`
-
-**Allowed options**
-
-* `-h [ --help ]` Produce help message
-* `-o [ --output-file ]` Name of file in which the persistence diagram is written. Default print in standard output.
-* `-r [ --max-edge-length ]` (default = inf) Maximal length of an edge for the Rips complex construction.
-* `-d [ --cpx-dimension ]` (default = 1) Maximal dimension of the Rips complex we want to compute.
-* `-p [ --field-charac ]` (default = 11) Characteristic p of the coefficient field Z/pZ for computing homology.
-* `-m [ --min-persistence ]` (default = 0) Minimal lifetime of homology feature to be recorded. Enter a negative value to see zero length intervals.
-
-Beware: this program may use a lot of RAM and take a lot of time if `max-edge-length` is set to a large value.
-
-**Example 1 with Z/2Z coefficients**
-
-`rips_persistence ../../data/points/tore3D_1307.off -r 0.25 -m 0.5 -d 3 -p 2`
-
-**Example 2 with Z/3Z coefficients**
-
-`rips_persistence ../../data/points/tore3D_1307.off -r 0.25 -m 0.5 -d 3 -p 3`
-
-
-## rips_distance_matrix_persistence ##
-
-Same as `rips_persistence` but taking a distance matrix as input.
-
-**Usage**
-
-`rips_distance_matrix_persistence [options] <CSV input file>`
-
-where
-`<CSV input file>` is the path to the file containing a distance matrix. Can be square or lower triangular matrix. Separator is ';'.
-The code do not check if it is dealing with a distance matrix. It is the user responsibility to provide a valid input.
-Please refer to data/distance_matrix/lower_triangular_distance_matrix.csv for an example of a file.
-
-**Example**
-
-`rips_distance_matrix_persistence data/distance_matrix/full_square_distance_matrix.csv -r 15 -d 3 -p 3 -m 0`
-
-
-## rips_correlation_matrix_persistence ##
-
-Same as `rips_distance_matrix_persistence` but taking a correlation matrix as input.
-
-**Usage**
-
-`rips_correlation_matrix_persistence [options] <CSV input file>`
-
-where
-`<CSV input file>` is the path to the file containing a correlation matrix. Can be square or lower triangular matrix. Separator is ';'.
-Note that no check is performed if the matrix given as the input is a correlation matrix.
-It is the user responsibility to ensure that this is the case.
-Please refer to data/correlation_matrix/lower_triangular_correlation_matrix.csv for an example of a file.
-
-**Example**
-
-`rips_correlation_matrix_persistence data/distance_matrix/full_square_distance_matrix.csv -r 15 -d 3 -p 3 -m 0`
-
-**Warning**
-
-As persistence diagrams points will be under the diagonal, bottleneck distance and persistence graphical tool will not work
-properly, this is a known issue.
-
-
-## sparse_rips_persistence ##
-This program computes the persistent homology with coefficient field *Z/pZ*
-of a sparse (1+epsilon)-approximation of the Rips complex defined on a set of input Euclidean points. The output diagram contains one bar per line, written with the convention:
-
-`p dim birth death`
-
-where `dim` is the dimension of the homological feature, `birth` and `death` are respectively the birth and death of the feature, and `p` is the characteristic of the field *Z/pZ* used for homology coefficients (`p` must be a prime number).
-
-**Usage**
-
-`sparse_rips_persistence [options] <OFF input file>`
-
-**Allowed options**
-
-* `-h [ --help ]` Produce help message
-* `-o [ --output-file ]` Name of file in which the persistence diagram is written. Default print in standard output.
-* `-e [ --approximation ]` (default = .5) Epsilon, where the sparse Rips complex is a (1+epsilon)-approximation of the Rips complex.
-* `-d [ --cpx-dimension ]` (default = 1) Maximal dimension of the Rips complex we want to compute.
-* `-p [ --field-charac ]` (default = 11) Characteristic p of the coefficient field Z/pZ for computing homology.
-* `-m [ --min-persistence ]` (default = 0) Minimal lifetime of homology feature to be recorded. Enter a negative value to see zero length intervals.
-
-**Example with Z/2Z coefficients**
-
-`sparse_rips_persistence ../../data/points/tore3D_1307.off -e .5 -m .2 -d 3 -p 2`
diff --git a/utilities/Rips_complex/sparse_rips_persistence.cpp b/utilities/Rips_complex/sparse_rips_persistence.cpp
deleted file mode 100644
index 6d4d86fd..00000000
--- a/utilities/Rips_complex/sparse_rips_persistence.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Marc Glisse, Clément Maria
- *
- * Copyright (C) 2018 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Sparse_rips_complex.h>
-#include <gudhi/distance_functions.h>
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Points_off_io.h>
-
-#include <boost/program_options.hpp>
-
-#include <string>
-#include <vector>
-
-// Types definition
-using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
-using Filtration_value = Simplex_tree::Filtration_value;
-using Sparse_rips = Gudhi::rips_complex::Sparse_rips_complex<Filtration_value>;
-using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp>;
-using Point = std::vector<double>;
-using Points_off_reader = Gudhi::Points_off_reader<Point>;
-
-void program_options(int argc, char* argv[], std::string& off_file_points, std::string& filediag, double& epsilon,
- int& dim_max, int& p, Filtration_value& min_persistence);
-
-int main(int argc, char* argv[]) {
- std::string off_file_points;
- std::string filediag;
- double epsilon;
- int dim_max;
- int p;
- Filtration_value min_persistence;
-
- program_options(argc, argv, off_file_points, filediag, epsilon, dim_max, p, min_persistence);
-
- Points_off_reader off_reader(off_file_points);
- Sparse_rips sparse_rips(off_reader.get_point_cloud(), Gudhi::Euclidean_distance(), epsilon);
-
- // Construct the Rips complex in a Simplex Tree
- Simplex_tree simplex_tree;
-
- sparse_rips.create_complex(simplex_tree, dim_max);
- std::cout << "The complex contains " << simplex_tree.num_simplices() << " simplices \n";
- std::cout << " and has dimension " << simplex_tree.dimension() << " \n";
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(simplex_tree);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(p);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (filediag.empty()) {
- pcoh.output_diagram();
- } else {
- std::ofstream out(filediag);
- pcoh.output_diagram(out);
- out.close();
- }
-
- return 0;
-}
-
-void program_options(int argc, char* argv[], std::string& off_file_points, std::string& filediag, double& epsilon,
- int& dim_max, int& p, Filtration_value& min_persistence) {
- namespace po = boost::program_options;
- po::options_description hidden("Hidden options");
- hidden.add_options()("input-file", po::value<std::string>(&off_file_points),
- "Name of an OFF file containing a point set.\n");
-
- po::options_description visible("Allowed options", 100);
- visible.add_options()("help,h", "produce help message")(
- "output-file,o", po::value<std::string>(&filediag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")(
- "approximation,e", po::value<double>(&epsilon)->default_value(.5),
- "Epsilon, where the sparse Rips complex is a (1+epsilon)-approximation of the Rips complex.")(
- "cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
- "Maximal dimension of the Rips complex we want to compute.")(
- "field-charac,p", po::value<int>(&p)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")(
- "min-persistence,m", po::value<Filtration_value>(&min_persistence),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length "
- "intervals");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
-
- po::variables_map vm;
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a sparse (1+epsilon)-approximation of the Rips complex \ndefined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/utilities/Witness_complex/CMakeLists.txt b/utilities/Witness_complex/CMakeLists.txt
deleted file mode 100644
index ce5e29f2..00000000
--- a/utilities/Witness_complex/CMakeLists.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-project(Witness_complex_utilities)
-
-# CGAL and Eigen3 are required for Euclidean version of Witness
-if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.6.0)
-
- add_executable ( Witness_complex_strong_witness_persistence strong_witness_persistence.cpp )
- target_link_libraries(Witness_complex_strong_witness_persistence ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
- add_executable ( Witness_complex_weak_witness_persistence weak_witness_persistence.cpp )
- target_link_libraries(Witness_complex_weak_witness_persistence ${Boost_PROGRAM_OPTIONS_LIBRARY})
-
- if (TBB_FOUND)
- target_link_libraries(Witness_complex_strong_witness_persistence ${TBB_LIBRARIES})
- target_link_libraries(Witness_complex_weak_witness_persistence ${TBB_LIBRARIES})
- endif()
-
- add_test(NAME Witness_complex_strong_test_torus_persistence
- COMMAND $<TARGET_FILE:Witness_complex_strong_witness_persistence>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_1307.off" "-l" "20" "-a" "0.5")
- add_test(NAME Witness_complex_weak_test_torus_persistence
- COMMAND $<TARGET_FILE:Witness_complex_weak_witness_persistence>
- "${CMAKE_SOURCE_DIR}/data/points/tore3D_1307.off" "-l" "20" "-a" "0.5")
-
- install(TARGETS Witness_complex_strong_witness_persistence DESTINATION bin)
- install(TARGETS Witness_complex_weak_witness_persistence DESTINATION bin)
-
-endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.6.0)
diff --git a/utilities/Witness_complex/strong_witness_persistence.cpp b/utilities/Witness_complex/strong_witness_persistence.cpp
deleted file mode 100644
index f386e992..00000000
--- a/utilities/Witness_complex/strong_witness_persistence.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Siargey Kachanovich
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Euclidean_strong_witness_complex.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Points_off_io.h>
-#include <gudhi/pick_n_random_points.h>
-#include <gudhi/choose_n_farthest_points.h>
-
-#include <boost/program_options.hpp>
-
-#include <CGAL/Epick_d.h>
-
-#include <string>
-#include <vector>
-#include <limits> // infinity
-
-using K = CGAL::Epick_d<CGAL::Dynamic_dimension_tag>;
-using Point_d = K::Point_d;
-
-using Point_vector = std::vector<Point_d>;
-using Strong_witness_complex = Gudhi::witness_complex::Euclidean_strong_witness_complex<K>;
-using SimplexTree = Gudhi::Simplex_tree<>;
-
-using Filtration_value = SimplexTree::Filtration_value;
-
-using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<SimplexTree, Field_Zp>;
-
-void program_options(int argc, char* argv[], int& nbL, std::string& file_name, std::string& filediag,
- Filtration_value& max_squared_alpha, int& p, int& dim_max, Filtration_value& min_persistence);
-
-int main(int argc, char* argv[]) {
- std::string file_name;
- std::string filediag;
- Filtration_value max_squared_alpha;
- int p, nbL, lim_d;
- Filtration_value min_persistence;
- SimplexTree simplex_tree;
-
- program_options(argc, argv, nbL, file_name, filediag, max_squared_alpha, p, lim_d, min_persistence);
-
- // Extract the points from the file file_name
- Point_vector witnesses, landmarks;
- Gudhi::Points_off_reader<Point_d> off_reader(file_name);
- if (!off_reader.is_valid()) {
- std::cerr << "Witness complex - Unable to read file " << file_name << "\n";
- exit(-1); // ----- >>
- }
- witnesses = Point_vector(off_reader.get_point_cloud());
- std::cout << "Successfully read " << witnesses.size() << " points.\n";
- std::cout << "Ambient dimension is " << witnesses[0].dimension() << ".\n";
-
- // Choose landmarks (decomment one of the following two lines)
- // Gudhi::subsampling::pick_n_random_points(point_vector, nbL, std::back_inserter(landmarks));
- Gudhi::subsampling::choose_n_farthest_points(K(), witnesses, nbL, Gudhi::subsampling::random_starting_point,
- std::back_inserter(landmarks));
-
- // Compute witness complex
- Strong_witness_complex strong_witness_complex(landmarks, witnesses);
-
- strong_witness_complex.create_complex(simplex_tree, max_squared_alpha, lim_d);
-
- std::cout << "The complex contains " << simplex_tree.num_simplices() << " simplices \n";
- std::cout << " and has dimension " << simplex_tree.dimension() << " \n";
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(simplex_tree);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(p);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (filediag.empty()) {
- pcoh.output_diagram();
- } else {
- std::ofstream out(filediag);
- pcoh.output_diagram(out);
- out.close();
- }
-
- return 0;
-}
-
-void program_options(int argc, char* argv[], int& nbL, std::string& file_name, std::string& filediag,
- Filtration_value& max_squared_alpha, int& p, int& dim_max, Filtration_value& min_persistence) {
- namespace po = boost::program_options;
-
- po::options_description hidden("Hidden options");
- hidden.add_options()("input-file", po::value<std::string>(&file_name),
- "Name of file containing a point set in off format.");
-
- po::options_description visible("Allowed options", 100);
- Filtration_value default_alpha = std::numeric_limits<Filtration_value>::infinity();
- visible.add_options()("help,h", "produce help message")("landmarks,l", po::value<int>(&nbL),
- "Number of landmarks to choose from the point cloud.")(
- "output-file,o", po::value<std::string>(&filediag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")(
- "max-sq-alpha,a", po::value<Filtration_value>(&max_squared_alpha)->default_value(default_alpha),
- "Maximal squared relaxation parameter.")(
- "field-charac,p", po::value<int>(&p)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")(
- "min-persistence,m", po::value<Filtration_value>(&min_persistence)->default_value(0),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length "
- "intervals")("cpx-dimension,d", po::value<int>(&dim_max)->default_value(std::numeric_limits<int>::max()),
- "Maximal dimension of the strong witness complex we want to compute.");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
- po::variables_map vm;
-
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a Strong witness complex defined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/utilities/Witness_complex/weak_witness_persistence.cpp b/utilities/Witness_complex/weak_witness_persistence.cpp
deleted file mode 100644
index ea00cfe7..00000000
--- a/utilities/Witness_complex/weak_witness_persistence.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Siargey Kachanovich
- *
- * Copyright (C) 2016 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/Simplex_tree.h>
-#include <gudhi/Euclidean_witness_complex.h>
-#include <gudhi/Persistent_cohomology.h>
-#include <gudhi/Points_off_io.h>
-#include <gudhi/pick_n_random_points.h>
-#include <gudhi/choose_n_farthest_points.h>
-
-#include <boost/program_options.hpp>
-
-#include <CGAL/Epick_d.h>
-
-#include <string>
-#include <vector>
-#include <limits> // infinity
-
-using K = CGAL::Epick_d<CGAL::Dynamic_dimension_tag>;
-using Point_d = K::Point_d;
-
-using Point_vector = std::vector<Point_d>;
-using Witness_complex = Gudhi::witness_complex::Euclidean_witness_complex<K>;
-using SimplexTree = Gudhi::Simplex_tree<>;
-
-using Filtration_value = SimplexTree::Filtration_value;
-
-using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
-using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<SimplexTree, Field_Zp>;
-
-void program_options(int argc, char* argv[], int& nbL, std::string& file_name, std::string& filediag,
- Filtration_value& max_squared_alpha, int& p, int& dim_max, Filtration_value& min_persistence);
-
-int main(int argc, char* argv[]) {
- std::string file_name;
- std::string filediag;
- Filtration_value max_squared_alpha;
- int p, nbL, lim_d;
- Filtration_value min_persistence;
- SimplexTree simplex_tree;
-
- program_options(argc, argv, nbL, file_name, filediag, max_squared_alpha, p, lim_d, min_persistence);
-
- // Extract the points from the file file_name
- Point_vector witnesses, landmarks;
- Gudhi::Points_off_reader<Point_d> off_reader(file_name);
- if (!off_reader.is_valid()) {
- std::cerr << "Witness complex - Unable to read file " << file_name << "\n";
- exit(-1); // ----- >>
- }
- witnesses = Point_vector(off_reader.get_point_cloud());
- std::cout << "Successfully read " << witnesses.size() << " points.\n";
- std::cout << "Ambient dimension is " << witnesses[0].dimension() << ".\n";
-
- // Choose landmarks (decomment one of the following two lines)
- // Gudhi::subsampling::pick_n_random_points(point_vector, nbL, std::back_inserter(landmarks));
- Gudhi::subsampling::choose_n_farthest_points(K(), witnesses, nbL, Gudhi::subsampling::random_starting_point,
- std::back_inserter(landmarks));
-
- // Compute witness complex
- Witness_complex witness_complex(landmarks, witnesses);
-
- witness_complex.create_complex(simplex_tree, max_squared_alpha, lim_d);
-
- std::cout << "The complex contains " << simplex_tree.num_simplices() << " simplices \n";
- std::cout << " and has dimension " << simplex_tree.dimension() << " \n";
-
- // Sort the simplices in the order of the filtration
- simplex_tree.initialize_filtration();
-
- // Compute the persistence diagram of the complex
- Persistent_cohomology pcoh(simplex_tree);
- // initializes the coefficient field for homology
- pcoh.init_coefficients(p);
-
- pcoh.compute_persistent_cohomology(min_persistence);
-
- // Output the diagram in filediag
- if (filediag.empty()) {
- pcoh.output_diagram();
- } else {
- std::ofstream out(filediag);
- pcoh.output_diagram(out);
- out.close();
- }
-
- return 0;
-}
-
-void program_options(int argc, char* argv[], int& nbL, std::string& file_name, std::string& filediag,
- Filtration_value& max_squared_alpha, int& p, int& dim_max, Filtration_value& min_persistence) {
- namespace po = boost::program_options;
-
- po::options_description hidden("Hidden options");
- hidden.add_options()("input-file", po::value<std::string>(&file_name),
- "Name of file containing a point set in off format.");
-
- Filtration_value default_alpha = std::numeric_limits<Filtration_value>::infinity();
- po::options_description visible("Allowed options", 100);
- visible.add_options()("help,h", "produce help message")("landmarks,l", po::value<int>(&nbL),
- "Number of landmarks to choose from the point cloud.")(
- "output-file,o", po::value<std::string>(&filediag)->default_value(std::string()),
- "Name of file in which the persistence diagram is written. Default print in std::cout")(
- "max-sq-alpha,a", po::value<Filtration_value>(&max_squared_alpha)->default_value(default_alpha),
- "Maximal squared relaxation parameter.")(
- "field-charac,p", po::value<int>(&p)->default_value(11),
- "Characteristic p of the coefficient field Z/pZ for computing homology.")(
- "min-persistence,m", po::value<Filtration_value>(&min_persistence)->default_value(0),
- "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length "
- "intervals")("cpx-dimension,d", po::value<int>(&dim_max)->default_value(std::numeric_limits<int>::max()),
- "Maximal dimension of the weak witness complex we want to compute.");
-
- po::positional_options_description pos;
- pos.add("input-file", 1);
-
- po::options_description all;
- all.add(visible).add(hidden);
- po::variables_map vm;
-
- po::store(po::command_line_parser(argc, argv).options(all).positional(pos).run(), vm);
- po::notify(vm);
-
- if (vm.count("help") || !vm.count("input-file")) {
- std::cout << std::endl;
- std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
- std::cout << "of a Weak witness complex defined on a set of input points.\n \n";
- std::cout << "The output diagram contains one bar per line, written with the convention: \n";
- std::cout << " p dim b d \n";
- std::cout << "where dim is the dimension of the homological feature,\n";
- std::cout << "b and d are respectively the birth and death of the feature and \n";
- std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
-
- std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
- std::cout << visible << std::endl;
- exit(-1);
- }
-}
diff --git a/utilities/Witness_complex/witnesscomplex.md b/utilities/Witness_complex/witnesscomplex.md
deleted file mode 100644
index da453cce..00000000
--- a/utilities/Witness_complex/witnesscomplex.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-layout: page
-title: "Witness complex"
-meta_title: "Witness complex"
-teaser: ""
-permalink: /witnesscomplex/
----
-{::comment}
-Leave the lines above as it is required by the web site generator 'Jekyll'
-{:/comment}
-
-
-For more details about the witness complex, please read the [user manual of the package](/doc/latest/group__witness__complex.html).
-
-## weak_witness_persistence ##
-This program computes the persistent homology with coefficient field *Z/pZ* of a Weak witness complex defined on a set of input points.
-The output diagram contains one bar per line, written with the convention:
-
-`p dim birth death`
-
-where `dim` is the dimension of the homological feature, `birth` and `death` are respectively the birth and death of the feature,
-and `p` is the characteristic of the field *Z/pZ* used for homology coefficients.
-
-**Usage**
-
-`weak_witness_persistence [options] <OFF input file>`
-
-**Allowed options**
-
-* `-h [ --help ]` Produce help message
-* `-l [ --landmarks ]` Number of landmarks to choose from the point cloud.
-* `-o [ --output-file ]` Name of file in which the persistence diagram is written. By default, print in std::cout.
-* `-a [ --max-sq-alpha ]` (default = inf) Maximal squared relaxation parameter.
-* `-p [ --field-charac ]` (default = 11) Characteristic p of the coefficient field Z/pZ for computing homology.
-* `-m [ --min-persistence ]` (default = 0) Minimal lifetime of homology feature to be recorded. Enter a negative value to see zero length intervals.
-* `-d [ --cpx-dimension ]` (default = 2147483647) Maximal dimension of the weak witness complex we want to compute.
-
-**Example**
-
-`weak_witness_persistence data/points/tore3D_1307.off -l 20 -a 0.5 -m 0.006`
-
-N.B.: output is random as the 20 landmarks are chosen randomly.
-
-
-## strong_witness_persistence ##
-
-This program computes the persistent homology with coefficient field *Z/pZ* of a Strong witness complex defined on a set of input points.
-The output diagram contains one bar per line, written with the convention:
-
-`p dim birth death`
-
-where `dim` is the dimension of the homological feature, `birth` and `death` are respectively the birth and death of the feature,
-and `p` is the characteristic of the field *Z/pZ* used for homology coefficients.
-
-**Usage**
-
-`strong_witness_persistence [options] <OFF input file>`
-
-**Allowed options**
-
-* `-h [ --help ]` Produce help message
-* `-l [ --landmarks ]` Number of landmarks to choose from the point cloud.
-* `-o [ --output-file ]` Name of file in which the persistence diagram is written. By default, print in std::cout.
-* `-a [ --max-sq-alpha ]` (default = inf) Maximal squared relaxation parameter.
-* `-p [ --field-charac ]` (default = 11) Characteristic p of the coefficient field Z/pZ for computing homology.
-* `-m [ --min-persistence ]` (default = 0) Minimal lifetime of homology feature to be recorded. Enter a negative value to see zero length intervals.
-* `-d [ --cpx-dimension ]` (default = 2147483647) Maximal dimension of the weak witness complex we want to compute.
-
-**Example**
-
-`strong_witness_persistence data/points/tore3D_1307.off -l 20 -a 0.5 -m 0.06`
-
-N.B.: output is random as the 20 landmarks are chosen randomly.
diff --git a/utilities/common/CMakeLists.txt b/utilities/common/CMakeLists.txt
deleted file mode 100644
index 7f1d1cd7..00000000
--- a/utilities/common/CMakeLists.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-project(off_file_from_shape_generator)
-
-if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.6.0)
- add_executable ( off_file_from_shape_generator off_file_from_shape_generator.cpp )
- add_test(NAME off_file_from_shape_generator_on_sphere_1000_3_15.2 COMMAND $<TARGET_FILE:off_file_from_shape_generator>
- "on" "sphere" "onSphere.off" "1000" "3" "15.2")
- add_test(NAME off_file_from_shape_generator_in_sphere_100_2 COMMAND $<TARGET_FILE:off_file_from_shape_generator>
- "in" "sphere" "inSphere.off" "100" "2")
-
- # on cube is not available in CGAL
- add_test(NAME off_file_from_shape_generator_in_cube_10000_3_5.8 COMMAND $<TARGET_FILE:off_file_from_shape_generator>
- "in" "cube" "inCube.off" "10000" "3" "5.8")
-
- install(TARGETS off_file_from_shape_generator DESTINATION bin)
-
-endif(NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.6.0)
diff --git a/utilities/common/off_file_from_shape_generator.cpp b/utilities/common/off_file_from_shape_generator.cpp
deleted file mode 100644
index 5e3da7f7..00000000
--- a/utilities/common/off_file_from_shape_generator.cpp
+++ /dev/null
@@ -1,189 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Vincent Rouvreau
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <gudhi/random_point_generators.h>
-
-#include <CGAL/Epick_d.h>
-#include <CGAL/algorithm.h>
-#include <CGAL/assertions.h>
-
-#include <iostream>
-#include <iterator>
-#include <vector>
-#include <fstream> // for std::ofstream
-#include <cstdlib>
-
-typedef CGAL::Epick_d< CGAL::Dynamic_dimension_tag > K;
-typedef K::Point_d Point;
-
-void usage(char * const progName) {
- std::cerr << "Usage: " << progName << " in|on sphere|cube off_file_name points_number[integer > 0] " <<
- "dimension[integer > 1] radius[double > 0.0 | default = 1.0]" << std::endl;
- exit(-1);
-}
-
-int main(int argc, char **argv) {
- // program args management
- if ((argc != 6) && (argc != 7)) {
- std::cerr << "Error: Number of arguments (" << argc << ") is not correct" << std::endl;
- usage(argv[0]);
- }
-
- int points_number = atoi(argv[4]);
- if (points_number <= 0) {
- std::cerr << "Error: " << argv[4] << " is not correct" << std::endl;
- usage(argv[0]);
- }
-
- int dimension = atoi(argv[5]);
- if (dimension <= 0) {
- std::cerr << "Error: " << argv[5] << " is not correct" << std::endl;
- usage(argv[0]);
- }
-
- double radius = 1.0;
- if (argc == 7) {
- radius = atof(argv[6]);
- if (radius <= 0.0) {
- std::cerr << "Error: " << argv[6] << " is not correct" << std::endl;
- usage(argv[0]);
- }
- }
-
- bool in = false;
- if (strcmp(argv[1], "in") == 0) {
- in = true;
- } else if (strcmp(argv[1], "on") != 0) {
- std::cerr << "Error: " << argv[1] << " is not correct" << std::endl;
- usage(argv[0]);
- }
-
- enum class Data_shape { sphere, cube, curve, torus, klein, undefined};
-
- Data_shape shape = Data_shape::undefined;
- if (memcmp(argv[2], "sphere", sizeof("sphere")) == 0) {
- shape = Data_shape::sphere;
- } else if (memcmp(argv[2], "cube", sizeof("cube")) == 0) {
- shape = Data_shape::cube;
- } else if (memcmp(argv[2], "curve", sizeof("curve")) == 0) {
- shape = Data_shape::curve;
- } else if (memcmp(argv[2], "torus", sizeof("torus")) == 0) {
- shape = Data_shape::torus;
- } else if (memcmp(argv[2], "klein", sizeof("klein")) == 0) {
- shape = Data_shape::klein;
- } else {
- std::cerr << "Error: " << argv[2] << " is not correct" << std::endl;
- usage(argv[0]);
- }
-
- std::ofstream diagram_out(argv[3]);
- if (dimension == 3) {
- diagram_out << "OFF" << std::endl;
- diagram_out << points_number << " 0 0" << std::endl;
- } else {
- diagram_out << "nOFF" << std::endl;
- diagram_out << dimension << " " << points_number << " 0 0" << std::endl;
- }
-
- if (diagram_out.is_open()) {
- // Generate "points_number" random points in a vector
- std::vector<Point> points;
- if (in) {
- switch (shape) {
- case Data_shape::sphere:
- points = Gudhi::generate_points_in_ball_d<K>(points_number, dimension, radius);
- break;
- case Data_shape::cube:
- points = Gudhi::generate_points_in_ball_d<K>(points_number, dimension, radius);
- break;
- case Data_shape::curve:
- std::cerr << "Sorry: in curve is not available" << std::endl;
- usage(argv[0]);
- break;
- case Data_shape::torus:
- std::cerr << "Sorry: in torus is not available" << std::endl;
- usage(argv[0]);
- break;
- case Data_shape::klein:
- std::cerr << "Sorry: in klein is not available" << std::endl;
- usage(argv[0]);
- break;
- default:
- usage(argv[0]);
- break;
- }
- } else { // means "on"
- switch (shape) {
- case Data_shape::sphere:
- points = Gudhi::generate_points_on_sphere_d<K>(points_number, dimension, radius);
- break;
- case Data_shape::cube:
- std::cerr << "Sorry: on cube is not available" << std::endl;
- usage(argv[0]);
- break;
- case Data_shape::curve:
- points = Gudhi::generate_points_on_moment_curve<K>(points_number, dimension, -radius/2., radius/2.);
- break;
- case Data_shape::torus:
- if (dimension == 3)
- points = Gudhi::generate_points_on_torus_3D<K>(points_number, dimension, radius, radius/2.);
- else
- points = Gudhi::generate_points_on_torus_d<K>(points_number, dimension, true);
- break;
- case Data_shape::klein:
- switch (dimension) {
- case 3:
- points = Gudhi::generate_points_on_klein_bottle_3D<K>(points_number, radius, radius/2., true);
- break;
- case 4:
- points = Gudhi::generate_points_on_klein_bottle_4D<K>(points_number, radius, radius/2., 0., true);
- break;
- case 5:
- points = Gudhi::generate_points_on_klein_bottle_variant_5D<K>(points_number, radius, radius/2., true);
- break;
- default:
- std::cerr << "Sorry: on klein is only available for dimension 3, 4 and 5" << std::endl;
- usage(argv[0]);
- break;
- }
- break;
- default:
- usage(argv[0]);
- break;
- }
- }
-
- for (auto thePoint : points) {
- int i = 0;
- for (; i < dimension - 1; i++) {
- diagram_out << thePoint[i] << " ";
- }
- diagram_out << thePoint[i] << std::endl; // last point + Carriage Return
- }
- } else {
- std::cerr << "Error: " << argv[3] << " cannot be opened" << std::endl;
- usage(argv[0]);
- }
-
- return 0;
-}
-
diff --git a/utilities/common/pointsetgenerator.md b/utilities/common/pointsetgenerator.md
deleted file mode 100644
index c8c819b7..00000000
--- a/utilities/common/pointsetgenerator.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-layout: page
-title: "OFF point set generator"
-meta_title: "OFF point set generator"
-teaser: ""
-permalink: /pointsetgenerator/
----
-{::comment}
-Leave the lines above as it is required by the web site generator 'Jekyll'
-{:/comment}
-
-
-Generates a pointset and save it in an OFF file. Command-line is:
-
-```
-off_file_from_shape_generator on|in sphere|cube|curve|torus|klein <filename> <num_points> <dimension> <parameter1> <parameter2>...
-```
-
-Warning: "on cube" generator is not available!
-
-**Examples**
-
-```
-off_file_from_shape_generator on sphere onSphere.off 1000 3 15.2
-```
-
-* Generates an onSphere.off file with 1000 points randomized on a sphere of dimension 3 and radius 15.2.
-
-```
-off_file_from_shape_generator in sphere inSphere.off 100 2
-```
-
-* Generates an inSphere.off file with 100 points randomized in a sphere of dimension 2 (circle) and radius 1.0 (default).
-
-```
-off_file_from_shape_generator in cube inCube.off 10000 3 5.8
-```
-
-* Generates a inCube.off file with 10000 points randomized in a cube of dimension 3 and side 5.8.