snappy 3.1.1__cp38-cp38-win_amd64.whl → 3.2__cp38-cp38-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (476) hide show
  1. snappy/CyOpenGL.cp38-win_amd64.pyd +0 -0
  2. snappy/SnapPy.cp38-win_amd64.pyd +0 -0
  3. snappy/SnapPyHP.cp38-win_amd64.pyd +0 -0
  4. snappy/__init__.py +299 -402
  5. snappy/app.py +70 -20
  6. snappy/browser.py +18 -17
  7. snappy/canonical.py +249 -0
  8. snappy/{verify/cusp_shapes.py → cusps/__init__.py} +8 -18
  9. snappy/cusps/cusp_area_matrix.py +101 -0
  10. snappy/{verify/cusp_areas.py → cusps/cusp_areas_from_matrix.py} +23 -39
  11. snappy/cusps/maximal_cusp_area_matrix.py +136 -0
  12. snappy/cusps/test.py +21 -0
  13. snappy/cusps/trig_cusp_area_matrix.py +63 -0
  14. snappy/database.py +10 -9
  15. snappy/decorated_isosig.py +337 -114
  16. snappy/dev/extended_ptolemy/complexVolumesClosed.py +40 -7
  17. snappy/dev/extended_ptolemy/extended.py +3 -3
  18. snappy/dev/extended_ptolemy/phc_wrapper.py +10 -10
  19. snappy/dev/vericlosed/oneVertexTruncatedComplex.py +1 -1
  20. snappy/doc/_images/m004_paper_plane_on_systole.jpg +0 -0
  21. snappy/doc/_images/m125_paper_plane.jpg +0 -0
  22. snappy/doc/_images/o9_00000_systole_paper_plane.jpg +0 -0
  23. snappy/doc/_images/o9_00000_systole_paper_plane_closer.jpg +0 -0
  24. snappy/doc/_sources/additional_classes.rst.txt +40 -40
  25. snappy/doc/_sources/bugs.rst.txt +14 -14
  26. snappy/doc/_sources/censuses.rst.txt +51 -51
  27. snappy/doc/_sources/credits.rst.txt +75 -75
  28. snappy/doc/_sources/development.rst.txt +259 -239
  29. snappy/doc/_sources/index.rst.txt +182 -115
  30. snappy/doc/_sources/installing.rst.txt +247 -264
  31. snappy/doc/_sources/manifold.rst.txt +6 -6
  32. snappy/doc/_sources/manifoldhp.rst.txt +46 -46
  33. snappy/doc/_sources/news.rst.txt +355 -283
  34. snappy/doc/_sources/other.rst.txt +25 -25
  35. snappy/doc/_sources/platonic_census.rst.txt +20 -20
  36. snappy/doc/_sources/plink.rst.txt +102 -102
  37. snappy/doc/_sources/ptolemy.rst.txt +66 -66
  38. snappy/doc/_sources/ptolemy_classes.rst.txt +42 -42
  39. snappy/doc/_sources/ptolemy_examples1.rst.txt +298 -297
  40. snappy/doc/_sources/ptolemy_examples2.rst.txt +363 -363
  41. snappy/doc/_sources/ptolemy_examples3.rst.txt +301 -301
  42. snappy/doc/_sources/ptolemy_examples4.rst.txt +61 -61
  43. snappy/doc/_sources/ptolemy_prelim.rst.txt +105 -105
  44. snappy/doc/_sources/screenshots.rst.txt +21 -21
  45. snappy/doc/_sources/snap.rst.txt +87 -87
  46. snappy/doc/_sources/snappy.rst.txt +28 -28
  47. snappy/doc/_sources/spherogram.rst.txt +103 -103
  48. snappy/doc/_sources/todo.rst.txt +47 -47
  49. snappy/doc/_sources/triangulation.rst.txt +11 -11
  50. snappy/doc/_sources/tutorial.rst.txt +49 -49
  51. snappy/doc/_sources/verify.rst.txt +210 -150
  52. snappy/doc/_sources/verify_internals.rst.txt +79 -90
  53. snappy/doc/_static/basic.css +924 -902
  54. snappy/doc/_static/css/badge_only.css +1 -1
  55. snappy/doc/_static/css/theme.css +1 -1
  56. snappy/doc/_static/doctools.js +1 -1
  57. snappy/doc/_static/documentation_options.js +12 -13
  58. snappy/doc/_static/fonts/Lato/lato-bold.eot +0 -0
  59. snappy/doc/_static/fonts/Lato/lato-bold.ttf +0 -0
  60. snappy/doc/_static/fonts/Lato/lato-bold.woff +0 -0
  61. snappy/doc/_static/fonts/Lato/lato-bold.woff2 +0 -0
  62. snappy/doc/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  63. snappy/doc/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  64. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  65. snappy/doc/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  66. snappy/doc/_static/fonts/Lato/lato-italic.eot +0 -0
  67. snappy/doc/_static/fonts/Lato/lato-italic.ttf +0 -0
  68. snappy/doc/_static/fonts/Lato/lato-italic.woff +0 -0
  69. snappy/doc/_static/fonts/Lato/lato-italic.woff2 +0 -0
  70. snappy/doc/_static/fonts/Lato/lato-regular.eot +0 -0
  71. snappy/doc/_static/fonts/Lato/lato-regular.ttf +0 -0
  72. snappy/doc/_static/fonts/Lato/lato-regular.woff +0 -0
  73. snappy/doc/_static/fonts/Lato/lato-regular.woff2 +0 -0
  74. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  75. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  76. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  77. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  78. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  79. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  80. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  81. snappy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  82. snappy/doc/_static/js/versions.js +228 -0
  83. snappy/doc/_static/language_data.js +199 -199
  84. snappy/doc/_static/pygments.css +74 -73
  85. snappy/doc/_static/searchtools.js +125 -71
  86. snappy/doc/_static/snappy_furo.css +33 -33
  87. snappy/doc/_static/snappy_sphinx_rtd_theme.css +42 -42
  88. snappy/doc/_static/sphinx_highlight.js +13 -3
  89. snappy/doc/additional_classes.html +1499 -1330
  90. snappy/doc/bugs.html +131 -134
  91. snappy/doc/censuses.html +426 -445
  92. snappy/doc/credits.html +180 -183
  93. snappy/doc/development.html +383 -363
  94. snappy/doc/genindex.html +1330 -1409
  95. snappy/doc/index.html +261 -206
  96. snappy/doc/installing.html +345 -363
  97. snappy/doc/manifold.html +3451 -2839
  98. snappy/doc/manifoldhp.html +179 -182
  99. snappy/doc/news.html +387 -329
  100. snappy/doc/objects.inv +0 -0
  101. snappy/doc/other.html +160 -162
  102. snappy/doc/platonic_census.html +374 -377
  103. snappy/doc/plink.html +209 -212
  104. snappy/doc/ptolemy.html +253 -255
  105. snappy/doc/ptolemy_classes.html +1143 -1146
  106. snappy/doc/ptolemy_examples1.html +408 -410
  107. snappy/doc/ptolemy_examples2.html +470 -473
  108. snappy/doc/ptolemy_examples3.html +413 -416
  109. snappy/doc/ptolemy_examples4.html +194 -197
  110. snappy/doc/ptolemy_prelim.html +247 -250
  111. snappy/doc/py-modindex.html +164 -167
  112. snappy/doc/screenshots.html +140 -142
  113. snappy/doc/search.html +134 -137
  114. snappy/doc/searchindex.js +1 -1
  115. snappy/doc/snap.html +201 -204
  116. snappy/doc/snappy.html +180 -182
  117. snappy/doc/spherogram.html +1210 -1213
  118. snappy/doc/todo.html +165 -168
  119. snappy/doc/triangulation.html +1583 -1474
  120. snappy/doc/tutorial.html +158 -161
  121. snappy/doc/verify.html +329 -275
  122. snappy/doc/verify_internals.html +1234 -1691
  123. snappy/drilling/__init__.py +153 -235
  124. snappy/drilling/barycentric.py +103 -0
  125. snappy/drilling/constants.py +0 -2
  126. snappy/drilling/crush.py +56 -130
  127. snappy/drilling/cusps.py +12 -6
  128. snappy/drilling/debug.py +2 -1
  129. snappy/drilling/exceptions.py +7 -40
  130. snappy/drilling/moves.py +302 -243
  131. snappy/drilling/perturb.py +63 -37
  132. snappy/drilling/shorten.py +36 -0
  133. snappy/drilling/subdivide.py +0 -5
  134. snappy/drilling/test.py +23 -0
  135. snappy/drilling/test_cases.py +126 -0
  136. snappy/drilling/tracing.py +9 -37
  137. snappy/exceptions.py +18 -5
  138. snappy/exterior_to_link/barycentric_geometry.py +2 -4
  139. snappy/exterior_to_link/main.py +8 -7
  140. snappy/exterior_to_link/mcomplex_with_link.py +2 -2
  141. snappy/exterior_to_link/rational_linear_algebra.py +1 -1
  142. snappy/exterior_to_link/rational_linear_algebra_wrapped.py +1 -1
  143. snappy/exterior_to_link/test.py +21 -33
  144. snappy/geometric_structure/__init__.py +212 -0
  145. snappy/geometric_structure/cusp_neighborhood/__init__.py +3 -0
  146. snappy/geometric_structure/cusp_neighborhood/complex_cusp_cross_section.py +697 -0
  147. snappy/geometric_structure/cusp_neighborhood/cusp_cross_section_base.py +484 -0
  148. snappy/geometric_structure/cusp_neighborhood/exceptions.py +42 -0
  149. snappy/geometric_structure/cusp_neighborhood/real_cusp_cross_section.py +298 -0
  150. snappy/geometric_structure/cusp_neighborhood/tiles_for_cusp_neighborhood.py +159 -0
  151. snappy/geometric_structure/cusp_neighborhood/vertices.py +32 -0
  152. snappy/geometric_structure/geodesic/__init__.py +0 -0
  153. snappy/geometric_structure/geodesic/add_core_curves.py +152 -0
  154. snappy/geometric_structure/geodesic/avoid_core_curves.py +369 -0
  155. snappy/geometric_structure/geodesic/canonical_keys.py +52 -0
  156. snappy/geometric_structure/geodesic/check_away_from_core_curve.py +60 -0
  157. snappy/geometric_structure/geodesic/constants.py +6 -0
  158. snappy/geometric_structure/geodesic/exceptions.py +22 -0
  159. snappy/{drilling → geometric_structure/geodesic}/fixed_points.py +34 -9
  160. snappy/{drilling/geodesic_info.py → geometric_structure/geodesic/geodesic_start_point_info.py} +139 -180
  161. snappy/geometric_structure/geodesic/graph_trace_helper.py +67 -0
  162. snappy/geometric_structure/geodesic/line.py +30 -0
  163. snappy/geometric_structure/geodesic/multiplicity.py +127 -0
  164. snappy/geometric_structure/geodesic/tiles_for_geodesic.py +101 -0
  165. snappy/geometric_structure/test.py +22 -0
  166. snappy/gui.py +23 -13
  167. snappy/horoviewer.py +7 -7
  168. snappy/hyperboloid/__init__.py +96 -31
  169. snappy/hyperboloid/distances.py +245 -0
  170. snappy/hyperboloid/horoball.py +19 -0
  171. snappy/hyperboloid/line.py +35 -0
  172. snappy/hyperboloid/point.py +9 -0
  173. snappy/hyperboloid/triangle.py +29 -0
  174. snappy/isometry_signature.py +382 -0
  175. snappy/len_spec/__init__.py +596 -0
  176. snappy/len_spec/geodesic_info.py +110 -0
  177. snappy/len_spec/geodesic_key_info_dict.py +117 -0
  178. snappy/len_spec/geodesic_piece.py +143 -0
  179. snappy/len_spec/geometric_structure.py +182 -0
  180. snappy/len_spec/geometry.py +80 -0
  181. snappy/len_spec/length_spectrum_geodesic_info.py +170 -0
  182. snappy/len_spec/spine.py +206 -0
  183. snappy/len_spec/test.py +24 -0
  184. snappy/len_spec/test_cases.py +69 -0
  185. snappy/len_spec/tile.py +275 -0
  186. snappy/len_spec/word.py +86 -0
  187. snappy/math_basics.py +39 -13
  188. snappy/matrix.py +52 -9
  189. snappy/number.py +12 -6
  190. snappy/numeric_output_checker.py +2 -3
  191. snappy/pari.py +8 -4
  192. snappy/phone_home.py +2 -1
  193. snappy/polyviewer.py +8 -8
  194. snappy/ptolemy/__init__.py +1 -1
  195. snappy/ptolemy/component.py +2 -2
  196. snappy/ptolemy/coordinates.py +25 -25
  197. snappy/ptolemy/findLoops.py +9 -9
  198. snappy/ptolemy/manifoldMethods.py +27 -29
  199. snappy/ptolemy/polynomial.py +50 -57
  200. snappy/ptolemy/processFileBase.py +60 -0
  201. snappy/ptolemy/ptolemyVariety.py +109 -41
  202. snappy/ptolemy/reginaWrapper.py +4 -4
  203. snappy/ptolemy/rur.py +1 -1
  204. snappy/ptolemy/solutionsToPrimeIdealGroebnerBasis.py +9 -9
  205. snappy/ptolemy/test.py +99 -54
  206. snappy/ptolemy/utilities.py +1 -1
  207. snappy/raytracing/__init__.py +64 -0
  208. snappy/raytracing/additional_horospheres.py +64 -0
  209. snappy/raytracing/additional_len_spec_choices.py +63 -0
  210. snappy/raytracing/cohomology_fractal.py +0 -3
  211. snappy/raytracing/eyeball.py +123 -0
  212. snappy/raytracing/finite_raytracing_data.py +17 -17
  213. snappy/raytracing/finite_viewer.py +15 -15
  214. snappy/raytracing/geodesic_tube_info.py +93 -63
  215. snappy/raytracing/geodesics.py +94 -64
  216. snappy/raytracing/geodesics_window.py +56 -34
  217. snappy/raytracing/gui_utilities.py +21 -6
  218. snappy/raytracing/hyperboloid_navigation.py +29 -4
  219. snappy/raytracing/hyperboloid_utilities.py +73 -73
  220. snappy/raytracing/ideal_raytracing_data.py +121 -91
  221. snappy/raytracing/inside_viewer.py +199 -66
  222. snappy/raytracing/pack.py +22 -0
  223. snappy/raytracing/raytracing_data.py +37 -25
  224. snappy/raytracing/raytracing_view.py +70 -65
  225. snappy/raytracing/shaders/Eye.png +0 -0
  226. snappy/raytracing/shaders/NonGeometric.png +0 -0
  227. snappy/raytracing/shaders/__init__.py +39 -3
  228. snappy/raytracing/shaders/fragment.glsl +451 -133
  229. snappy/raytracing/test.py +29 -0
  230. snappy/raytracing/tooltip.py +146 -0
  231. snappy/raytracing/upper_halfspace_utilities.py +42 -9
  232. snappy/sage_helper.py +67 -134
  233. snappy/settings.py +90 -77
  234. snappy/shell.py +2 -0
  235. snappy/snap/character_varieties.py +2 -2
  236. snappy/snap/find_field.py +4 -3
  237. snappy/snap/fundamental_polyhedron.py +2 -2
  238. snappy/snap/kernel_structures.py +5 -1
  239. snappy/snap/nsagetools.py +9 -8
  240. snappy/snap/peripheral/dual_cellulation.py +4 -3
  241. snappy/snap/peripheral/peripheral.py +2 -2
  242. snappy/snap/peripheral/surface.py +5 -5
  243. snappy/snap/peripheral/test.py +1 -1
  244. snappy/snap/polished_reps.py +8 -8
  245. snappy/snap/slice_obs_HKL.py +16 -14
  246. snappy/snap/t3mlite/arrow.py +3 -3
  247. snappy/snap/t3mlite/edge.py +3 -3
  248. snappy/snap/t3mlite/homology.py +2 -2
  249. snappy/snap/t3mlite/mcomplex.py +3 -3
  250. snappy/snap/t3mlite/simplex.py +12 -0
  251. snappy/snap/t3mlite/spun.py +18 -17
  252. snappy/snap/t3mlite/test_vs_regina.py +4 -4
  253. snappy/snap/test.py +37 -53
  254. snappy/snap/utilities.py +4 -5
  255. snappy/test.py +121 -138
  256. snappy/test_cases.py +263 -0
  257. snappy/testing.py +131 -0
  258. snappy/tiling/__init__.py +2 -0
  259. snappy/tiling/canonical_key_dict.py +59 -0
  260. snappy/tiling/dict_based_set.py +79 -0
  261. snappy/tiling/floor.py +49 -0
  262. snappy/tiling/hyperboloid_dict.py +54 -0
  263. snappy/tiling/iter_utils.py +78 -0
  264. snappy/tiling/lifted_tetrahedron.py +22 -0
  265. snappy/tiling/lifted_tetrahedron_set.py +54 -0
  266. snappy/tiling/real_hash_dict.py +164 -0
  267. snappy/tiling/test.py +23 -0
  268. snappy/tiling/tile.py +215 -0
  269. snappy/tiling/triangle.py +33 -0
  270. snappy/tkterminal.py +113 -84
  271. snappy/twister/main.py +1 -7
  272. snappy/twister/twister_core.cp38-win_amd64.pyd +0 -0
  273. snappy/upper_halfspace/__init__.py +78 -17
  274. snappy/verify/__init__.py +3 -7
  275. snappy/verify/{verifyCanonical.py → canonical.py} +78 -70
  276. snappy/verify/complex_volume/adjust_torsion.py +1 -2
  277. snappy/verify/complex_volume/closed.py +13 -13
  278. snappy/verify/complex_volume/cusped.py +6 -6
  279. snappy/verify/complex_volume/extended_bloch.py +5 -8
  280. snappy/verify/{cuspTranslations.py → cusp_translations.py} +1 -1
  281. snappy/verify/edge_equations.py +80 -0
  282. snappy/verify/exceptions.py +0 -55
  283. snappy/verify/{verifyHyperbolicity.py → hyperbolicity.py} +3 -3
  284. snappy/verify/interval_newton_shapes_engine.py +7 -5
  285. snappy/verify/interval_tree.py +5 -5
  286. snappy/verify/krawczyk_shapes_engine.py +17 -18
  287. snappy/verify/maximal_cusp_area_matrix/__init__.py +7 -74
  288. snappy/verify/maximal_cusp_area_matrix/cusp_tiling_engine.py +3 -4
  289. snappy/verify/maximal_cusp_area_matrix/cusp_translate_engine.py +1 -1
  290. snappy/verify/{realAlgebra.py → real_algebra.py} +1 -1
  291. snappy/verify/shapes.py +5 -3
  292. snappy/verify/short_slopes.py +39 -41
  293. snappy/verify/{squareExtensions.py → square_extensions.py} +14 -11
  294. snappy/verify/test.py +57 -60
  295. snappy/verify/upper_halfspace/extended_matrix.py +1 -1
  296. snappy/verify/upper_halfspace/finite_point.py +3 -4
  297. snappy/verify/upper_halfspace/ideal_point.py +9 -9
  298. snappy/verify/volume.py +2 -2
  299. snappy/version.py +2 -2
  300. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/METADATA +14 -10
  301. snappy-3.2.dist-info/RECORD +503 -0
  302. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/WHEEL +1 -1
  303. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/top_level.txt +6 -1
  304. snappy/__pycache__/__init__.cpython-38.pyc +0 -0
  305. snappy/__pycache__/browser.cpython-38.pyc +0 -0
  306. snappy/__pycache__/cache.cpython-38.pyc +0 -0
  307. snappy/__pycache__/database.cpython-38.pyc +0 -0
  308. snappy/__pycache__/db_utilities.cpython-38.pyc +0 -0
  309. snappy/__pycache__/decorated_isosig.cpython-38.pyc +0 -0
  310. snappy/__pycache__/exceptions.cpython-38.pyc +0 -0
  311. snappy/__pycache__/export_stl.cpython-38.pyc +0 -0
  312. snappy/__pycache__/filedialog.cpython-38.pyc +0 -0
  313. snappy/__pycache__/gui.cpython-38.pyc +0 -0
  314. snappy/__pycache__/horoviewer.cpython-38.pyc +0 -0
  315. snappy/__pycache__/math_basics.cpython-38.pyc +0 -0
  316. snappy/__pycache__/matrix.cpython-38.pyc +0 -0
  317. snappy/__pycache__/number.cpython-38.pyc +0 -0
  318. snappy/__pycache__/numeric_output_checker.cpython-38.pyc +0 -0
  319. snappy/__pycache__/pari.cpython-38.pyc +0 -0
  320. snappy/__pycache__/polyviewer.cpython-38.pyc +0 -0
  321. snappy/__pycache__/sage_helper.cpython-38.pyc +0 -0
  322. snappy/__pycache__/version.cpython-38.pyc +0 -0
  323. snappy/doc/_sources/verify_canon.rst.txt +0 -90
  324. snappy/doc/_static/jquery-3.6.0.js +0 -10881
  325. snappy/doc/_static/js/html5shiv-printshiv.min.js +0 -4
  326. snappy/doc/_static/js/html5shiv.min.js +0 -4
  327. snappy/doc/_static/underscore-1.13.1.js +0 -2042
  328. snappy/doc/_static/underscore.js +0 -6
  329. snappy/doc/verify_canon.html +0 -304
  330. snappy/drilling/__pycache__/__init__.cpython-38.pyc +0 -0
  331. snappy/drilling/__pycache__/constants.cpython-38.pyc +0 -0
  332. snappy/drilling/__pycache__/crush.cpython-38.pyc +0 -0
  333. snappy/drilling/__pycache__/cusps.cpython-38.pyc +0 -0
  334. snappy/drilling/__pycache__/debug.cpython-38.pyc +0 -0
  335. snappy/drilling/__pycache__/epsilons.cpython-38.pyc +0 -0
  336. snappy/drilling/__pycache__/exceptions.cpython-38.pyc +0 -0
  337. snappy/drilling/__pycache__/fixed_points.cpython-38.pyc +0 -0
  338. snappy/drilling/__pycache__/geodesic_info.cpython-38.pyc +0 -0
  339. snappy/drilling/__pycache__/geodesic_tube.cpython-38.pyc +0 -0
  340. snappy/drilling/__pycache__/geometric_structure.cpython-38.pyc +0 -0
  341. snappy/drilling/__pycache__/line.cpython-38.pyc +0 -0
  342. snappy/drilling/__pycache__/moves.cpython-38.pyc +0 -0
  343. snappy/drilling/__pycache__/peripheral_curves.cpython-38.pyc +0 -0
  344. snappy/drilling/__pycache__/perturb.cpython-38.pyc +0 -0
  345. snappy/drilling/__pycache__/quotient_space.cpython-38.pyc +0 -0
  346. snappy/drilling/__pycache__/spatial_dict.cpython-38.pyc +0 -0
  347. snappy/drilling/__pycache__/subdivide.cpython-38.pyc +0 -0
  348. snappy/drilling/__pycache__/tracing.cpython-38.pyc +0 -0
  349. snappy/drilling/geodesic_tube.py +0 -441
  350. snappy/drilling/geometric_structure.py +0 -366
  351. snappy/drilling/line.py +0 -122
  352. snappy/drilling/quotient_space.py +0 -94
  353. snappy/drilling/spatial_dict.py +0 -128
  354. snappy/exterior_to_link/__pycache__/__init__.cpython-38.pyc +0 -0
  355. snappy/exterior_to_link/__pycache__/barycentric_geometry.cpython-38.pyc +0 -0
  356. snappy/exterior_to_link/__pycache__/exceptions.cpython-38.pyc +0 -0
  357. snappy/exterior_to_link/__pycache__/hyp_utils.cpython-38.pyc +0 -0
  358. snappy/exterior_to_link/__pycache__/link_projection.cpython-38.pyc +0 -0
  359. snappy/exterior_to_link/__pycache__/main.cpython-38.pyc +0 -0
  360. snappy/exterior_to_link/__pycache__/mcomplex_with_expansion.cpython-38.pyc +0 -0
  361. snappy/exterior_to_link/__pycache__/mcomplex_with_link.cpython-38.pyc +0 -0
  362. snappy/exterior_to_link/__pycache__/mcomplex_with_memory.cpython-38.pyc +0 -0
  363. snappy/exterior_to_link/__pycache__/pl_utils.cpython-38.pyc +0 -0
  364. snappy/exterior_to_link/__pycache__/put_in_S3.cpython-38.pyc +0 -0
  365. snappy/exterior_to_link/__pycache__/rational_linear_algebra.cpython-38.pyc +0 -0
  366. snappy/exterior_to_link/__pycache__/simplify_to_base_tri.cpython-38.pyc +0 -0
  367. snappy/exterior_to_link/__pycache__/stored_moves.cpython-38.pyc +0 -0
  368. snappy/hyperboloid/__pycache__/__init__.cpython-38.pyc +0 -0
  369. snappy/manifolds/__pycache__/__init__.cpython-38.pyc +0 -0
  370. snappy/ptolemy/__pycache__/__init__.cpython-38.pyc +0 -0
  371. snappy/ptolemy/__pycache__/component.cpython-38.pyc +0 -0
  372. snappy/ptolemy/__pycache__/coordinates.cpython-38.pyc +0 -0
  373. snappy/ptolemy/__pycache__/fieldExtensions.cpython-38.pyc +0 -0
  374. snappy/ptolemy/__pycache__/findLoops.cpython-38.pyc +0 -0
  375. snappy/ptolemy/__pycache__/homology.cpython-38.pyc +0 -0
  376. snappy/ptolemy/__pycache__/manifoldMethods.cpython-38.pyc +0 -0
  377. snappy/ptolemy/__pycache__/matrix.cpython-38.pyc +0 -0
  378. snappy/ptolemy/__pycache__/numericalSolutionsToGroebnerBasis.cpython-38.pyc +0 -0
  379. snappy/ptolemy/__pycache__/polynomial.cpython-38.pyc +0 -0
  380. snappy/ptolemy/__pycache__/processComponents.cpython-38.pyc +0 -0
  381. snappy/ptolemy/__pycache__/processFileBase.cpython-38.pyc +0 -0
  382. snappy/ptolemy/__pycache__/processFileDispatch.cpython-38.pyc +0 -0
  383. snappy/ptolemy/__pycache__/processMagmaFile.cpython-38.pyc +0 -0
  384. snappy/ptolemy/__pycache__/processRurFile.cpython-38.pyc +0 -0
  385. snappy/ptolemy/__pycache__/ptolemyGeneralizedObstructionClass.cpython-38.pyc +0 -0
  386. snappy/ptolemy/__pycache__/ptolemyObstructionClass.cpython-38.pyc +0 -0
  387. snappy/ptolemy/__pycache__/ptolemyVariety.cpython-38.pyc +0 -0
  388. snappy/ptolemy/__pycache__/ptolemyVarietyPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
  389. snappy/ptolemy/__pycache__/rur.cpython-38.pyc +0 -0
  390. snappy/ptolemy/__pycache__/solutionsToPrimeIdealGroebnerBasis.cpython-38.pyc +0 -0
  391. snappy/ptolemy/__pycache__/utilities.cpython-38.pyc +0 -0
  392. snappy/snap/__pycache__/__init__.cpython-38.pyc +0 -0
  393. snappy/snap/__pycache__/character_varieties.cpython-38.pyc +0 -0
  394. snappy/snap/__pycache__/fundamental_polyhedron.cpython-38.pyc +0 -0
  395. snappy/snap/__pycache__/interval_reps.cpython-38.pyc +0 -0
  396. snappy/snap/__pycache__/kernel_structures.cpython-38.pyc +0 -0
  397. snappy/snap/__pycache__/mcomplex_base.cpython-38.pyc +0 -0
  398. snappy/snap/__pycache__/nsagetools.cpython-38.pyc +0 -0
  399. snappy/snap/__pycache__/polished_reps.cpython-38.pyc +0 -0
  400. snappy/snap/__pycache__/shapes.cpython-38.pyc +0 -0
  401. snappy/snap/__pycache__/slice_obs_HKL.cpython-38.pyc +0 -0
  402. snappy/snap/__pycache__/utilities.cpython-38.pyc +0 -0
  403. snappy/snap/peripheral/__pycache__/__init__.cpython-38.pyc +0 -0
  404. snappy/snap/peripheral/__pycache__/dual_cellulation.cpython-38.pyc +0 -0
  405. snappy/snap/peripheral/__pycache__/link.cpython-38.pyc +0 -0
  406. snappy/snap/peripheral/__pycache__/peripheral.cpython-38.pyc +0 -0
  407. snappy/snap/peripheral/__pycache__/surface.cpython-38.pyc +0 -0
  408. snappy/snap/t3mlite/__pycache__/__init__.cpython-38.pyc +0 -0
  409. snappy/snap/t3mlite/__pycache__/arrow.cpython-38.pyc +0 -0
  410. snappy/snap/t3mlite/__pycache__/corner.cpython-38.pyc +0 -0
  411. snappy/snap/t3mlite/__pycache__/edge.cpython-38.pyc +0 -0
  412. snappy/snap/t3mlite/__pycache__/face.cpython-38.pyc +0 -0
  413. snappy/snap/t3mlite/__pycache__/files.cpython-38.pyc +0 -0
  414. snappy/snap/t3mlite/__pycache__/homology.cpython-38.pyc +0 -0
  415. snappy/snap/t3mlite/__pycache__/linalg.cpython-38.pyc +0 -0
  416. snappy/snap/t3mlite/__pycache__/mcomplex.cpython-38.pyc +0 -0
  417. snappy/snap/t3mlite/__pycache__/perm4.cpython-38.pyc +0 -0
  418. snappy/snap/t3mlite/__pycache__/simplex.cpython-38.pyc +0 -0
  419. snappy/snap/t3mlite/__pycache__/spun.cpython-38.pyc +0 -0
  420. snappy/snap/t3mlite/__pycache__/surface.cpython-38.pyc +0 -0
  421. snappy/snap/t3mlite/__pycache__/tetrahedron.cpython-38.pyc +0 -0
  422. snappy/snap/t3mlite/__pycache__/vertex.cpython-38.pyc +0 -0
  423. snappy/togl/__init__.py +0 -3
  424. snappy/togl/darwin-tk8.6/Togl2.1/LICENSE +0 -28
  425. snappy/togl/darwin-tk8.6/Togl2.1/libTogl2.1.dylib +0 -0
  426. snappy/togl/darwin-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  427. snappy/togl/darwin-tk8.7/Togl2.1/LICENSE +0 -28
  428. snappy/togl/darwin-tk8.7/Togl2.1/libTogl2.1.dylib +0 -0
  429. snappy/togl/darwin-tk8.7/Togl2.1/pkgIndex.tcl +0 -5
  430. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  431. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/libTogl2.1.so +0 -0
  432. snappy/togl/linux2-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -5
  433. snappy/togl/win32VC-tk8.6/Togl2.1/LICENSE +0 -28
  434. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.dll +0 -0
  435. snappy/togl/win32VC-tk8.6/Togl2.1/Togl21.lib +0 -0
  436. snappy/togl/win32VC-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  437. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/LICENSE +0 -28
  438. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.dll +0 -0
  439. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/Togl21.lib +0 -0
  440. snappy/togl/win32VC-x86_64-tk8.6/Togl2.1/pkgIndex.tcl +0 -6
  441. snappy/twister/__pycache__/__init__.cpython-38.pyc +0 -0
  442. snappy/twister/__pycache__/main.cpython-38.pyc +0 -0
  443. snappy/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
  444. snappy/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
  445. snappy/verify/__pycache__/__init__.cpython-38.pyc +0 -0
  446. snappy/verify/__pycache__/cuspCrossSection.cpython-38.pyc +0 -0
  447. snappy/verify/__pycache__/cuspTranslations.cpython-38.pyc +0 -0
  448. snappy/verify/__pycache__/cusp_areas.cpython-38.pyc +0 -0
  449. snappy/verify/__pycache__/cusp_shapes.cpython-38.pyc +0 -0
  450. snappy/verify/__pycache__/exceptions.cpython-38.pyc +0 -0
  451. snappy/verify/__pycache__/interval_newton_shapes_engine.cpython-38.pyc +0 -0
  452. snappy/verify/__pycache__/interval_tree.cpython-38.pyc +0 -0
  453. snappy/verify/__pycache__/krawczyk_shapes_engine.cpython-38.pyc +0 -0
  454. snappy/verify/__pycache__/realAlgebra.cpython-38.pyc +0 -0
  455. snappy/verify/__pycache__/shapes.cpython-38.pyc +0 -0
  456. snappy/verify/__pycache__/short_slopes.cpython-38.pyc +0 -0
  457. snappy/verify/__pycache__/squareExtensions.cpython-38.pyc +0 -0
  458. snappy/verify/__pycache__/verifyCanonical.cpython-38.pyc +0 -0
  459. snappy/verify/__pycache__/verifyHyperbolicity.cpython-38.pyc +0 -0
  460. snappy/verify/__pycache__/volume.cpython-38.pyc +0 -0
  461. snappy/verify/complex_volume/__pycache__/__init__.cpython-38.pyc +0 -0
  462. snappy/verify/complex_volume/__pycache__/adjust_torsion.cpython-38.pyc +0 -0
  463. snappy/verify/complex_volume/__pycache__/closed.cpython-38.pyc +0 -0
  464. snappy/verify/complex_volume/__pycache__/compute_ptolemys.cpython-38.pyc +0 -0
  465. snappy/verify/complex_volume/__pycache__/cusped.cpython-38.pyc +0 -0
  466. snappy/verify/complex_volume/__pycache__/extended_bloch.cpython-38.pyc +0 -0
  467. snappy/verify/cuspCrossSection.py +0 -1422
  468. snappy/verify/maximal_cusp_area_matrix/__pycache__/__init__.cpython-38.pyc +0 -0
  469. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_tiling_engine.cpython-38.pyc +0 -0
  470. snappy/verify/maximal_cusp_area_matrix/__pycache__/cusp_translate_engine.cpython-38.pyc +0 -0
  471. snappy/verify/upper_halfspace/__pycache__/__init__.cpython-38.pyc +0 -0
  472. snappy/verify/upper_halfspace/__pycache__/extended_matrix.cpython-38.pyc +0 -0
  473. snappy/verify/upper_halfspace/__pycache__/finite_point.cpython-38.pyc +0 -0
  474. snappy/verify/upper_halfspace/__pycache__/ideal_point.cpython-38.pyc +0 -0
  475. snappy-3.1.1.dist-info/RECORD +0 -575
  476. {snappy-3.1.1.dist-info → snappy-3.2.dist-info}/entry_points.txt +0 -0
@@ -34,9 +34,7 @@ The hierarchy is as follows:
34
34
 
35
35
  - CuspEquationExactVerifyError
36
36
  - CuspEquationLogLiftNumericalVerifyError
37
- - CuspDevelopmentType
38
37
 
39
- - CuspDevelopmentTypeExactVerifyError
40
38
  - TiltType
41
39
 
42
40
  - TiltInequalityNumericalVerifyError
@@ -46,9 +44,6 @@ The hierarchy is as follows:
46
44
  - ShapeType
47
45
 
48
46
  - ShapePositiveImaginaryPartNumericalVerifyError
49
- - ConsistencyWithSnapPeaType
50
-
51
- - ConsistencyWithSnapPeaNumericalVerifyError
52
47
  """
53
48
 
54
49
 
@@ -190,32 +185,6 @@ class CuspEquationLogLiftNumericalVerifyError(LogLiftNumericalVerifyError,
190
185
  '%r == %r' % (self.value, self.expected_value))
191
186
 
192
187
 
193
- class CuspDevelopmentType(CuspConsistencyType):
194
- """
195
- A base class indicating that there was a failure to find a consistent
196
- assignment of side lengths to the Euclidean Horotriangles to form a
197
- Euclidean Horotorus for a cusp.
198
- """
199
-
200
-
201
- class CuspDevelopmentExactVerifyError(ExactVerifyError,
202
- CuspDevelopmentType):
203
- """
204
- Raised when finding a consistent assignment of side lengths to the
205
- Euclidean Horotriangles to form a Euclidean Horotorus for a cusp failed
206
- using exact arithmetic.
207
- """
208
-
209
- def __init__(self, value1, value2):
210
- self.value1 = value1
211
- self.value2 = value2
212
-
213
- def __str__(self):
214
- return ('Inconsistency in the side lengths of the Euclidean '
215
- 'Horotriangles for a cusp: '
216
- '%r = %r' % (self.value1, self.value2))
217
-
218
-
219
188
  class TiltType(EquationType):
220
189
  """
221
190
  A base class relating to tilts.
@@ -283,27 +252,3 @@ class ShapePositiveImaginaryPartNumericalVerifyError(
283
252
  return ('Numerical verification that shape has positive imaginary '
284
253
  'part has failed: Im(%r) > 0' % self.value)
285
254
 
286
-
287
- class ConsistencyWithSnapPeaType(EquationType):
288
- """
289
- A base class for exceptions raised when there is a difference
290
- between the values computed by the SnapPea kernel and by this module
291
- for a given quantity.
292
- """
293
-
294
-
295
- class ConsistencyWithSnapPeaNumericalVerifyError(
296
- NumericalVerifyError,
297
- ConsistencyWithSnapPeaType):
298
- """
299
- Exception raised when there is a significant numerical difference
300
- between the values computed by the SnapPea kernel and by this module
301
- for a given quantity.
302
- """
303
- def __init__(self, value, snappea_value):
304
- self.value = value
305
- self.snappea_value = snappea_value
306
-
307
- def __str__(self):
308
- return ('Inconsistency between SnapPea kernel and verify: '
309
- '%r == %r' % (self.snappea_value, self.value))
@@ -7,8 +7,8 @@ __all__ = [
7
7
  'verify_hyperbolicity' ]
8
8
 
9
9
  if _within_sage:
10
- from sage.all import pi
11
- import sage.all
10
+ from sage.symbolic.constants import pi
11
+ from ..sage_helper import I
12
12
 
13
13
 
14
14
  class FalseTuple(tuple):
@@ -103,7 +103,7 @@ def check_logarithmic_gluing_equations_and_positively_oriented_tets(
103
103
  CIF = shape_intervals[0].parent()
104
104
  RIF = CIF.real_field()
105
105
  # 2 pi i in that field
106
- two_pi_i = CIF(2 * pi * sage.all.I)
106
+ two_pi_i = CIF(2 * pi * I)
107
107
 
108
108
  # Index of the next gluing equation to check
109
109
  LHS_index = 0
@@ -1,4 +1,4 @@
1
- from ..matrix import matrix, vector, mat_solve
1
+ from ..matrix import make_matrix, make_vector, mat_solve
2
2
  from .. import snap
3
3
  from ..sage_helper import _within_sage, sage_method
4
4
 
@@ -142,7 +142,7 @@ class IntervalNewtonShapesEngine:
142
142
  # Take log of the entire product
143
143
  gluing_LHSs.append(prod.log())
144
144
 
145
- return vector(BaseField, gluing_LHSs)
145
+ return make_vector(gluing_LHSs, ring=BaseField)
146
146
 
147
147
  @staticmethod
148
148
  def log_gluing_LHS_derivatives(equations, shapes):
@@ -195,7 +195,7 @@ class IntervalNewtonShapesEngine:
195
195
 
196
196
  gluing_LHS_derivatives.append(row)
197
197
 
198
- return matrix(BaseField, gluing_LHS_derivatives)
198
+ return make_matrix(gluing_LHS_derivatives, ring=BaseField)
199
199
 
200
200
  @staticmethod
201
201
  def interval_vector_mid_points(vec):
@@ -322,7 +322,7 @@ class IntervalNewtonShapesEngine:
322
322
  Given two vectors of intervals, return the vector of their unions,
323
323
  i.e., the smallest interval containing both intervals.
324
324
  """
325
- return vector([a.union(b) for a, b in zip(vecA, vecB)])
325
+ return make_vector([a.union(b) for a, b in zip(vecA, vecB)])
326
326
 
327
327
  @staticmethod
328
328
  def certified_newton_iteration(equations, shape_intervals,
@@ -350,6 +350,7 @@ class IntervalNewtonShapesEngine:
350
350
 
351
351
  Intervals containing the true solution::
352
352
 
353
+ sage: from sage.all import vector
353
354
  sage: good_shapes = vector([
354
355
  ... C.CIF(C.RIF(0.78055, 0.78056), C.RIF(0.91447, 0.91448)),
355
356
  ... C.CIF(C.RIF(0.78055, 0.78056), C.RIF(0.91447, 0.91448)),
@@ -367,6 +368,7 @@ class IntervalNewtonShapesEngine:
367
368
 
368
369
  Intervals not containing a true solution::
369
370
 
371
+ sage: from sage.all import vector
370
372
  sage: bad_shapes = vector([
371
373
  ... C.CIF(C.RIF(0.78054, 0.78055), C.RIF(0.91447, 0.91448)),
372
374
  ... C.CIF(C.RIF(0.78055, 0.78056), C.RIF(0.91447, 0.91448)),
@@ -447,7 +449,7 @@ class IntervalNewtonShapesEngine:
447
449
  raise ValueError("Manifold needs to be orientable")
448
450
 
449
451
  # Initialize the shape intervals, they have zero length
450
- self.initial_shapes = vector(
452
+ self.initial_shapes = make_vector(
451
453
  [self.CIF(shape) for shape in initial_shapes])
452
454
 
453
455
  # Get an independent set of gluing equations from snap
@@ -277,13 +277,13 @@ class _IntervalTreeTester(IntervalTree):
277
277
 
278
278
  def __init__(self):
279
279
  self._entries = []
280
- super(_IntervalTreeTester, self).__init__()
280
+ super().__init__()
281
281
 
282
282
  def insert(self, interval, value):
283
283
  # Insert in plain list for reference
284
284
  self._entries.append((interval, value))
285
285
  # Insert into red black tree
286
- super(_IntervalTreeTester, self).insert(interval, value)
286
+ super().insert(interval, value)
287
287
 
288
288
  def brute_force_find(self, interval):
289
289
  """
@@ -300,7 +300,7 @@ class _IntervalTreeTester(IntervalTree):
300
300
  self.brute_force_find(interval)))
301
301
 
302
302
  def check_consistency(self):
303
- from sage.all import Infinity
303
+ from ..sage_helper import Infinity
304
304
  if self._root.isRed:
305
305
  raise Exception("Red root")
306
306
  _IntervalTreeTester._recursively_check_consistency(
@@ -308,7 +308,7 @@ class _IntervalTreeTester(IntervalTree):
308
308
 
309
309
  @staticmethod
310
310
  def _recursively_check_consistency(node, l, r):
311
- from sage.all import Infinity
311
+ from ..sage_helper import Infinity
312
312
 
313
313
  if not node:
314
314
  return -Infinity, 0
@@ -370,7 +370,7 @@ class _IntervalTreeTester(IntervalTree):
370
370
 
371
371
  @staticmethod
372
372
  def run_test():
373
- from sage.all import RIF, sin, Infinity
373
+ from ..sage_helper import RIF, Infinity, sin
374
374
 
375
375
  intervals = [
376
376
  RIF(sin(1.2 * i), sin(1.2 * i) + sin(1.43 * i) ** 2)
@@ -1,12 +1,10 @@
1
- from snappy import snap
2
- from snappy.sage_helper import _within_sage, sage_method
1
+ from .. import snap
2
+ from ..matrix import make_identity_matrix, make_matrix, make_vector
3
+
4
+ from ..sage_helper import _within_sage, sage_method
3
5
 
4
6
  if _within_sage:
5
- from sage.rings.complex_interval_field import ComplexIntervalField
6
- from sage.rings.real_mpfi import RealIntervalField
7
- from sage.all import ComplexDoubleField
8
- from sage.all import matrix
9
- from sage.modules.free_module_element import vector
7
+ from ..sage_helper import ComplexDoubleField, ComplexIntervalField, RealIntervalField
10
8
  from snappy.pari import prec_dec_to_bits
11
9
 
12
10
  __all__ = ['KrawczykShapesEngine']
@@ -75,12 +73,12 @@ class KrawczykShapesEngine:
75
73
  And here an example where the initial solution is somewhat off::
76
74
 
77
75
  sage: M = Manifold("m019")
78
- sage: shapes = [ 0.78+0.91j, 0.79+0.92j, 0.5 + 0.63j ]
79
- sage: C = KrawczykShapesEngine(M, shapes, bits_prec = 80)
76
+ sage: shapes = [0.780559+0.91449j, 0.780559+0.9144j, 0.46009+0.639j]
77
+ sage: C = KrawczykShapesEngine(M, shapes, bits_prec = 100)
80
78
  sage: C.expand_until_certified()
81
79
  True
82
- sage: C.certified_shapes
83
- (0.78? + 0.92?*I, 0.78? + 0.92?*I, 0.46? + 0.64?*I)
80
+ sage: C.certified_shapes # doctest: +ELLIPSIS
81
+ (0.7806? + 0.9145?*I, 0.7806? + 0.9145?*I, 0.460...? + 0.6326?*I)
84
82
 
85
83
  """
86
84
 
@@ -151,7 +149,7 @@ class KrawczykShapesEngine:
151
149
  # Take log of the entire product
152
150
  gluing_LHSs.append(prod.log())
153
151
 
154
- return vector(BaseField, gluing_LHSs)
152
+ return make_vector(gluing_LHSs, ring=BaseField)
155
153
 
156
154
  def log_gluing_LHS_derivatives(self, shapes):
157
155
  """
@@ -202,7 +200,7 @@ class KrawczykShapesEngine:
202
200
 
203
201
  gluing_LHS_derivatives.append(row)
204
202
 
205
- return matrix(BaseField, gluing_LHS_derivatives)
203
+ return make_matrix(gluing_LHS_derivatives, ring=BaseField)
206
204
 
207
205
  def log_gluing_LHS_derivatives_sparse(self, shapes):
208
206
  """
@@ -254,7 +252,7 @@ class KrawczykShapesEngine:
254
252
  v += d * row[r]
255
253
  result_row.append(v)
256
254
  rows.append(result_row)
257
- return matrix(CIF, rows)
255
+ return make_matrix(rows, ring=CIF)
258
256
 
259
257
  @staticmethod
260
258
  def interval_vector_mid_points(vec):
@@ -290,6 +288,7 @@ class KrawczykShapesEngine:
290
288
 
291
289
  Do several Krawczyk operations to get a better solution::
292
290
 
291
+ sage: from sage.all import vector
293
292
  sage: M = Manifold("m019")
294
293
  sage: shapes = vector(ComplexIntervalField(53), [ 0.5+0.8j, 0.5+0.8j, 0.5+0.8j])
295
294
  sage: for i in range(15):
@@ -352,7 +351,7 @@ class KrawczykShapesEngine:
352
351
  i.e., the smallest interval containing both intervals.
353
352
  """
354
353
 
355
- return vector([a.union(b) for a, b in zip(vecA, vecB)])
354
+ return make_vector([a.union(b) for a, b in zip(vecA, vecB)])
356
355
 
357
356
  @sage_method
358
357
  def __init__(self, M, initial_shapes, bits_prec=None, dec_prec=None):
@@ -391,7 +390,7 @@ class KrawczykShapesEngine:
391
390
 
392
391
  Or some non-hyperbolic manifolds::
393
392
 
394
- sage: Manifold("t02333(1,0)").tetrahedra_shapes(intervals = True)
393
+ sage: Manifold("t02333(1,0)").tetrahedra_shapes(intervals = True) # doctest: +SKIP
395
394
  Traceback (most recent call last):
396
395
  ...
397
396
  RuntimeError: Could not certify shape intervals, either there are degenerate shapes or the precision must be increased.
@@ -415,14 +414,14 @@ class KrawczykShapesEngine:
415
414
  raise Exception("Manifold needs to be orientable")
416
415
 
417
416
  # Initialize the shape intervals, they have zero length
418
- self.initial_shapes = vector(
417
+ self.initial_shapes = make_vector(
419
418
  [self.CIF(shape) for shape in initial_shapes])
420
419
 
421
420
  # Get an independent set of gluing equations from snap
422
421
  self.equations = snap.shapes.enough_gluing_equations(M)
423
422
  self._make_sparse_equations()
424
423
 
425
- self.identity = matrix.identity(self.CIF, len(self.initial_shapes))
424
+ self.identity = make_identity_matrix(ring=self.CIF, n=len(self.initial_shapes))
426
425
 
427
426
  CDF = ComplexDoubleField()
428
427
 
@@ -1,24 +1,18 @@
1
- from ...sage_helper import _within_sage, sage_method
2
- from ..cuspCrossSection import ComplexCuspCrossSection
3
- from ..shapes import compute_hyperbolic_shapes
4
- from ...math_basics import correct_min
5
- from .cusp_tiling_engine import *
6
-
7
- if _within_sage:
8
- from sage.all import matrix
1
+ from ...sage_helper import sage_method
2
+ from ...matrix import matrix
9
3
 
10
- __all__ = ['verified_maximal_cusp_area_matrix',
11
- 'triangulation_dependent_cusp_area_matrix']
4
+ from .cusp_tiling_engine import *
12
5
 
6
+ __all__ = ['legacy_verified_maximal_cusp_area_matrix']
13
7
 
14
8
  @sage_method
15
- def verified_maximal_cusp_area_matrix(snappy_manifold, bits_prec=None):
9
+ def legacy_verified_maximal_cusp_area_matrix(snappy_manifold, bits_prec=None):
16
10
  """
17
11
  TESTS::
18
12
 
19
13
  sage: from snappy import Manifold
20
14
  sage: M = Manifold("s776")
21
- sage: verified_maximal_cusp_area_matrix(M) # doctest: +NUMERIC6
15
+ sage: legacy_verified_maximal_cusp_area_matrix(M) # doctest: +NUMERIC6
22
16
  [28.0000000000? 7.00000000000? 7.00000000000?]
23
17
  [7.00000000000? 28.000000000? 7.00000000000?]
24
18
  [7.00000000000? 7.00000000000? 28.000000000?]
@@ -41,68 +35,7 @@ def verified_maximal_cusp_area_matrix(snappy_manifold, bits_prec=None):
41
35
  rows[i][j] = v
42
36
  rows[j][i] = v
43
37
 
44
- return _to_matrix(rows)
45
-
46
-
47
- def triangulation_dependent_cusp_area_matrix(
48
- snappy_manifold, verified, bits_prec=None):
49
- """
50
- Interesting case: t12521
51
-
52
- Maximal cusp area matrix:
53
-
54
- [ 77.5537626509970512653317518641810890989543820290380458409? 11.40953140648583915022197187043644048603871960228564151087?]
55
- [11.40953140648583915022197187043644048603871960228564151087? 91.1461442179608339668518063027198489593908228325190920?]
56
-
57
- This result:
58
-
59
- [ 77.553762651? 11.409531407?]
60
- [ 11.409531407? 5.508968850234?]
61
-
62
- After M.canonize:
63
-
64
- [ 62.42018359? 11.409531407?]
65
- [ 11.409531407? 15.1140644993?]
66
- """
67
- # Get shapes, as intervals if requested
68
- shapes = compute_hyperbolic_shapes(
69
- snappy_manifold, verified=verified, bits_prec=bits_prec)
70
-
71
- # Compute cusp cross section, the code is agnostic about whether
72
- # the numbers are floating-point or intervals.
73
- # Note that the constructed cusp cross section will always be too "large"
74
- # and we need to scale them down (since during construction the
75
- # cross-section of each cusp will have one edge of length 1, the
76
- # corresponding tetrahedron does not intersect in "standard" form.)
77
- c = ComplexCuspCrossSection.fromManifoldAndShapes(snappy_manifold, shapes)
78
-
79
- # If no areas are given, scale (up or down) all the cusps so that
80
- # they are in standard form.
81
- c.ensure_std_form(allow_scaling_up=True)
82
-
83
- areas = c.cusp_areas()
84
- RIF = areas[0].parent()
85
-
86
- def entry(i, j):
87
- if i > j:
88
- i, j = j, i
89
- result = areas[i] * areas[j]
90
- if (i, j) in c._edge_dict:
91
- result *= correct_min(
92
- [ RIF(1), ComplexCuspCrossSection._exp_distance_of_edges(
93
- c._edge_dict[(i,j)])]) ** 2
94
- return result
95
-
96
- return _to_matrix([[entry(i, j) for i in range(len(areas))]
97
- for j in range(len(areas))])
98
-
99
-
100
- def _to_matrix(m):
101
- # delayed import to avoid cycles
102
- from snappy.SnapPy import matrix
103
-
104
- return matrix(m)
105
-
38
+ return matrix(rows)
106
39
 
107
40
  def _doctest():
108
41
  import doctest
@@ -1,6 +1,7 @@
1
1
  from ...sage_helper import _within_sage
2
2
  from ...math_basics import correct_max
3
3
 
4
+ from ...geometric_structure.cusp_neighborhood.complex_cusp_cross_section import ComplexCuspCrossSection
4
5
  from ...snap.kernel_structures import *
5
6
  from ...snap.fundamental_polyhedron import *
6
7
  from ...snap.mcomplex_base import *
@@ -8,15 +9,13 @@ from ...snap.t3mlite import simplex
8
9
  from ...snap import t3mlite as t3m
9
10
  from ...exceptions import InsufficientPrecisionError
10
11
 
11
- from ..cuspCrossSection import ComplexCuspCrossSection
12
12
  from ..upper_halfspace.ideal_point import *
13
13
  from ..interval_tree import *
14
14
 
15
15
  from .cusp_translate_engine import *
16
16
 
17
17
  if _within_sage:
18
- from sage.all import matrix
19
- import sage.all
18
+ from ...sage_helper import matrix
20
19
 
21
20
  import heapq
22
21
 
@@ -142,7 +141,7 @@ class CuspTilingEngine(McomplexEngine):
142
141
  return CuspTilingEngine(m, original_mcomplex, cusp_areas, translations)
143
142
 
144
143
  def __init__(self, mcomplex, original_mcomplex, cusp_areas, translations):
145
- super(CuspTilingEngine, self).__init__(mcomplex)
144
+ super().__init__(mcomplex)
146
145
 
147
146
  self.original_mcomplex = original_mcomplex
148
147
  self.cusp_areas = cusp_areas
@@ -3,7 +3,7 @@ from ...sage_helper import _within_sage
3
3
  from ..upper_halfspace.finite_point import *
4
4
 
5
5
  if _within_sage:
6
- from sage.all import vector, matrix
6
+ from ...sage_helper import vector, matrix
7
7
 
8
8
  __all__ = ['CuspTranslateEngine']
9
9
 
@@ -26,7 +26,7 @@ def _find_unique_good_factor(polynomial, eval_method):
26
26
  one factor have this property, raise an exception.
27
27
  """
28
28
 
29
- # Factor polynomial. Call eval_method on each factor which is suppsed to
29
+ # Factor polynomial. Call eval_method on each factor which is supposed to
30
30
  # return an interval. Get those factors for which the resulting interval
31
31
  # contains 0.
32
32
  good_factors = [ factor
snappy/verify/shapes.py CHANGED
@@ -1,9 +1,11 @@
1
- from . import verifyHyperbolicity
1
+ from . import hyperbolicity
2
2
 
3
3
  __all__ = ['compute_hyperbolic_shapes']
4
4
 
5
+ from typing import Optional
5
6
 
6
- def compute_hyperbolic_shapes(manifold, verified, bits_prec=None):
7
+ def compute_hyperbolic_shapes(manifold,
8
+ verified : bool, bits_prec : Optional[int] = None):
7
9
 
8
10
  # Get shapes, as intervals if requested
9
11
  shapes = manifold.tetrahedra_shapes('rect', intervals=verified,
@@ -11,7 +13,7 @@ def compute_hyperbolic_shapes(manifold, verified, bits_prec=None):
11
13
 
12
14
  # Check it is a valid hyperbolic structure
13
15
  if verified:
14
- verifyHyperbolicity.check_logarithmic_gluing_equations_and_positively_oriented_tets(
16
+ hyperbolicity.check_logarithmic_gluing_equations_and_positively_oriented_tets(
15
17
  manifold, shapes)
16
18
  else:
17
19
  # If not verified, just ask SnapPea kernel for solution type
@@ -1,33 +1,19 @@
1
1
  from ..sage_helper import _within_sage
2
+ from ..exceptions import InsufficientPrecisionError
3
+ from ..math_basics import is_RealIntervalFieldElement, is_ComplexIntervalFieldElement
2
4
 
3
5
  import math
4
6
 
5
7
  if _within_sage:
6
- from sage.all import gcd
7
-
8
- from sage.rings.real_mpfi import is_RealIntervalFieldElement
9
- from sage.rings.complex_interval import is_ComplexIntervalFieldElement
10
-
11
- # python's sqrt only work for floats
12
- # They would fail or convert to float losing precision
13
- from sage.all import sqrt
8
+ from ..sage_helper import gcd
14
9
  else:
15
- try:
16
- # Python 3 has gcd in math
17
- from math import gcd
18
- except ImportError:
19
- from fractions import gcd
20
-
21
- # Otherwise, define our own sqrt which checks whether
22
- # the given type defines a sqrt method and fallsback
23
- # to python's log and sqrt which has the above drawback of
24
- # potentially losing precision.
25
- def sqrt(x):
26
- if hasattr(x, 'sqrt'):
27
- return x.sqrt()
28
- return math.sqrt(x)
29
-
10
+ # Python 3 has gcd in math
11
+ from math import gcd
30
12
 
13
+ # Reject computing short slopes if intervals for translations
14
+ # are too wide (error is more than 1%).
15
+ _min_diameter_translations = 0.01
16
+
31
17
  def short_slopes_from_cusp_shape_and_area(
32
18
  cusp_shape, cusp_area, length=6):
33
19
  """
@@ -62,35 +48,32 @@ def translations_from_cusp_shape_and_area(
62
48
 
63
49
  if kernel_convention:
64
50
  inv_cusp_shape = 1 / cusp_shape.conjugate()
65
- scale = sqrt(cusp_area / _imag(inv_cusp_shape))
51
+ scale = (cusp_area / _imag(inv_cusp_shape)).sqrt()
66
52
  return (scale * inv_cusp_shape, scale)
67
53
  else:
68
- scale = sqrt(cusp_area / _imag(cusp_shape))
54
+ scale = (cusp_area / _imag(cusp_shape)).sqrt()
69
55
  return (scale, cusp_shape * scale)
70
56
 
71
-
72
57
  def short_slopes_from_translations(translations, length=6):
73
58
 
74
59
  m_tran, l_tran = translations
75
60
 
76
- if _within_sage:
77
- if is_ComplexIntervalFieldElement(m_tran):
78
- raise Exception("Meridian translation expected to be real")
79
- if is_RealIntervalFieldElement(l_tran):
80
- raise Exception("Longitude translation expected to be complex")
61
+ if is_ComplexIntervalFieldElement(m_tran):
62
+ raise Exception("Meridian translation expected to be real")
63
+ if is_RealIntervalFieldElement(l_tran):
64
+ raise Exception("Longitude translation expected to be complex")
81
65
 
82
- is_interval_1 = is_RealIntervalFieldElement(m_tran)
83
- is_interval_2 = is_ComplexIntervalFieldElement(l_tran)
66
+ is_interval_1 = is_RealIntervalFieldElement(m_tran)
67
+ is_interval_2 = is_ComplexIntervalFieldElement(l_tran)
84
68
 
85
- if is_interval_1 != is_interval_2:
86
- raise Exception("Mismatch of non-intervals and intervals.")
69
+ if is_interval_1 != is_interval_2:
70
+ raise Exception("Mismatch of non-intervals and intervals.")
87
71
 
88
- if is_interval_1:
89
- return _verified_short_slopes_from_translations(translations, length)
72
+ if is_interval_1:
73
+ return _verified_short_slopes_from_translations(translations, length)
90
74
 
91
75
  return _unverified_short_slopes_from_translations(translations, length)
92
76
 
93
-
94
77
  def _unverified_short_slopes_from_translations(translations, length=6):
95
78
  m_tran, l_tran = translations
96
79
 
@@ -114,7 +97,7 @@ def _unverified_short_slopes_from_translations(translations, length=6):
114
97
  max_real_range_sqr = length ** 2 - _imag(total_l_tran) ** 2
115
98
 
116
99
  if max_real_range_sqr >= 0:
117
- max_real_range = sqrt(max_real_range_sqr)
100
+ max_real_range = max_real_range_sqr.sqrt()
118
101
 
119
102
  if l == 0:
120
103
  min_m = 1
@@ -136,7 +119,22 @@ def _verified_short_slopes_from_translations(translations, length=6):
136
119
  m_tran, l_tran = translations
137
120
 
138
121
  if not m_tran > 0:
139
- raise Exception("Expected positive meridian translation")
122
+ raise Exception("Expected positive meridian translation.")
123
+
124
+ if not l_tran.imag() != 0:
125
+ raise InsufficientPrecisionError(
126
+ "Could not verify that longitude meridian translation "
127
+ "has non-trivial imaginary part.")
128
+
129
+ if m_tran.diameter() > _min_diameter_translations:
130
+ raise InsufficientPrecisionError(
131
+ "Meridian translation has insufficient precision to compute "
132
+ "a reasonable set of short slopes.")
133
+
134
+ if l_tran.diameter() > _min_diameter_translations:
135
+ raise InsufficientPrecisionError(
136
+ "Longitude translation has insufficient precision to compute "
137
+ "a reasonable set of short slopes.")
140
138
 
141
139
  RIF = m_tran.parent()
142
140
 
@@ -164,7 +162,7 @@ def _verified_short_slopes_from_translations(translations, length=6):
164
162
  (- total_l_tran.real() + max_real_range) / m_tran)
165
163
 
166
164
  for m in range(min_m, max_m + 1):
167
- if gcd(m, l) == 1:
165
+ if gcd(m, l) in [+1, -1]:
168
166
  result.append((m, l))
169
167
 
170
168
  return result