pygeodesy 24.10.24__py2.py3-none-any.whl → 24.12.12__py2.py3-none-any.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 (118) hide show
  1. {PyGeodesy-24.10.24.dist-info → PyGeodesy-24.12.12.dist-info}/METADATA +6 -6
  2. PyGeodesy-24.12.12.dist-info/RECORD +118 -0
  3. {PyGeodesy-24.10.24.dist-info → PyGeodesy-24.12.12.dist-info}/WHEEL +1 -1
  4. pygeodesy/__init__.py +5 -5
  5. pygeodesy/__main__.py +1 -1
  6. pygeodesy/albers.py +5 -5
  7. pygeodesy/auxilats/_CX_4.py +1 -1
  8. pygeodesy/auxilats/_CX_6.py +1 -1
  9. pygeodesy/auxilats/_CX_8.py +1 -1
  10. pygeodesy/auxilats/_CX_Rs.py +1 -1
  11. pygeodesy/auxilats/__init__.py +1 -1
  12. pygeodesy/auxilats/__main__.py +1 -1
  13. pygeodesy/auxilats/auxAngle.py +5 -5
  14. pygeodesy/auxilats/auxDLat.py +6 -6
  15. pygeodesy/auxilats/auxDST.py +2 -2
  16. pygeodesy/auxilats/auxLat.py +5 -5
  17. pygeodesy/auxilats/auxily.py +2 -2
  18. pygeodesy/azimuthal.py +55 -65
  19. pygeodesy/basics.py +35 -34
  20. pygeodesy/booleans.py +37 -37
  21. pygeodesy/cartesianBase.py +26 -65
  22. pygeodesy/clipy.py +1 -1
  23. pygeodesy/constants.py +7 -7
  24. pygeodesy/css.py +8 -9
  25. pygeodesy/datums.py +1 -1
  26. pygeodesy/deprecated/__init__.py +2 -2
  27. pygeodesy/deprecated/bases.py +1 -1
  28. pygeodesy/deprecated/classes.py +10 -10
  29. pygeodesy/deprecated/consterns.py +1 -1
  30. pygeodesy/deprecated/datum.py +1 -1
  31. pygeodesy/deprecated/functions.py +23 -13
  32. pygeodesy/deprecated/nvector.py +1 -1
  33. pygeodesy/deprecated/rhumbBase.py +1 -1
  34. pygeodesy/deprecated/rhumbaux.py +1 -1
  35. pygeodesy/deprecated/rhumbsolve.py +1 -1
  36. pygeodesy/deprecated/rhumbx.py +1 -1
  37. pygeodesy/dms.py +1 -1
  38. pygeodesy/ecef.py +63 -69
  39. pygeodesy/elevations.py +1 -1
  40. pygeodesy/ellipsoidalBase.py +106 -121
  41. pygeodesy/ellipsoidalBaseDI.py +115 -119
  42. pygeodesy/ellipsoidalExact.py +36 -38
  43. pygeodesy/ellipsoidalGeodSolve.py +1 -1
  44. pygeodesy/ellipsoidalKarney.py +1 -1
  45. pygeodesy/ellipsoidalNvector.py +1 -1
  46. pygeodesy/ellipsoidalVincenty.py +6 -5
  47. pygeodesy/ellipsoids.py +7 -8
  48. pygeodesy/elliptic.py +6 -6
  49. pygeodesy/epsg.py +1 -1
  50. pygeodesy/errors.py +25 -25
  51. pygeodesy/etm.py +84 -76
  52. pygeodesy/fmath.py +54 -51
  53. pygeodesy/formy.py +74 -106
  54. pygeodesy/frechet.py +1 -1
  55. pygeodesy/fstats.py +1 -1
  56. pygeodesy/fsums.py +82 -72
  57. pygeodesy/gars.py +1 -1
  58. pygeodesy/geodesici.py +4 -4
  59. pygeodesy/geodesicw.py +16 -15
  60. pygeodesy/geodesicx/_C4_24.py +2 -2
  61. pygeodesy/geodesicx/_C4_27.py +2 -2
  62. pygeodesy/geodesicx/_C4_30.py +2 -2
  63. pygeodesy/geodesicx/__init__.py +3 -3
  64. pygeodesy/geodesicx/__main__.py +1 -1
  65. pygeodesy/geodesicx/gx.py +6 -5
  66. pygeodesy/geodesicx/gxarea.py +2 -2
  67. pygeodesy/geodesicx/gxbases.py +2 -2
  68. pygeodesy/geodesicx/gxline.py +16 -12
  69. pygeodesy/geodsolve.py +8 -17
  70. pygeodesy/geohash.py +1 -1
  71. pygeodesy/geoids.py +6 -6
  72. pygeodesy/hausdorff.py +1 -1
  73. pygeodesy/heights.py +3 -3
  74. pygeodesy/internals.py +64 -80
  75. pygeodesy/interns.py +2 -3
  76. pygeodesy/iters.py +1 -1
  77. pygeodesy/karney.py +4 -4
  78. pygeodesy/ktm.py +20 -21
  79. pygeodesy/latlonBase.py +296 -346
  80. pygeodesy/lazily.py +15 -15
  81. pygeodesy/lcc.py +5 -5
  82. pygeodesy/ltp.py +55 -59
  83. pygeodesy/ltpTuples.py +208 -192
  84. pygeodesy/mgrs.py +9 -10
  85. pygeodesy/named.py +153 -3
  86. pygeodesy/namedTuples.py +58 -7
  87. pygeodesy/nvectorBase.py +122 -105
  88. pygeodesy/osgr.py +10 -13
  89. pygeodesy/points.py +1 -1
  90. pygeodesy/props.py +3 -3
  91. pygeodesy/resections.py +26 -26
  92. pygeodesy/rhumb/__init__.py +2 -2
  93. pygeodesy/rhumb/aux_.py +2 -2
  94. pygeodesy/rhumb/bases.py +2 -2
  95. pygeodesy/rhumb/ekx.py +4 -4
  96. pygeodesy/rhumb/solve.py +4 -4
  97. pygeodesy/simplify.py +291 -403
  98. pygeodesy/solveBase.py +1 -1
  99. pygeodesy/sphericalBase.py +1 -1
  100. pygeodesy/sphericalNvector.py +84 -127
  101. pygeodesy/sphericalTrigonometry.py +66 -71
  102. pygeodesy/streprs.py +10 -5
  103. pygeodesy/trf.py +1 -1
  104. pygeodesy/triaxials.py +23 -16
  105. pygeodesy/units.py +17 -17
  106. pygeodesy/unitsBase.py +1 -1
  107. pygeodesy/ups.py +4 -4
  108. pygeodesy/utily.py +202 -145
  109. pygeodesy/utm.py +10 -10
  110. pygeodesy/utmups.py +1 -1
  111. pygeodesy/utmupsBase.py +1 -1
  112. pygeodesy/vector2d.py +17 -17
  113. pygeodesy/vector3d.py +32 -23
  114. pygeodesy/vector3dBase.py +22 -19
  115. pygeodesy/webmercator.py +5 -5
  116. pygeodesy/wgrs.py +5 -5
  117. PyGeodesy-24.10.24.dist-info/RECORD +0 -118
  118. {PyGeodesy-24.10.24.dist-info → PyGeodesy-24.12.12.dist-info}/top_level.txt +0 -0
pygeodesy/ktm.py CHANGED
@@ -35,7 +35,7 @@ following exceptions:
35
35
  - Evaluating the convergence and scale using the expression for the
36
36
  projection or its inverse.
37
37
 
38
- Copyright (C) U{Charles Karney<mailto:Karney@Alum.MIT.edu>} (2008-2023)
38
+ Copyright (C) U{Charles Karney<mailto:Karney@Alum.MIT.edu>} (2008-2024)
39
39
  and licensed under the MIT/X11 License. For more information, see the
40
40
  U{GeographicLib<https://GeographicLib.SourceForge.io>} documentation.
41
41
  '''
@@ -49,8 +49,7 @@ from pygeodesy.constants import INF, _K0_UTM, PI, PI_2, _0_0s, _0_0, \
49
49
  from pygeodesy.datums import Datum, _spherical_datum, _WGS84, _EWGS84
50
50
  # from pygeodesy.ellipsoids import _EWGS84 # from .datums
51
51
  from pygeodesy.errors import _ValueError, _xkwds_pop2, _Xorder
52
- from pygeodesy.fmath import hypot, hypot1
53
- from pygeodesy.fsums import fsum1f_
52
+ from pygeodesy.fmath import fdot_, hypot, hypot1
54
53
  from pygeodesy.interns import _COMMASPACE_, _singular_
55
54
  from pygeodesy.karney import _atan2d, _diff182, _fix90, _norm180, \
56
55
  _polynomial, _unsigned2
@@ -61,13 +60,13 @@ from pygeodesy.props import property_doc_, Property, Property_RO, \
61
60
  _update_all
62
61
  # from pygeodesy.streprs import pairs # from .named
63
62
  from pygeodesy.units import Degrees, Scalar_, _1mm as _TOL_10 # PYCHOK used!
64
- from pygeodesy.utily import atan1d, _loneg, sincos2, sincos2d_
63
+ from pygeodesy.utily import atan1d, atan2, _loneg, sincos2, sincos2d_
65
64
 
66
65
  from cmath import polar
67
- from math import atan2, asinh, cos, cosh, degrees, fabs, sin, sinh, sqrt, tanh
66
+ from math import asinh, cos, cosh, degrees, fabs, sin, sinh, sqrt, tanh
68
67
 
69
68
  __all__ = _ALL_LAZY.ktm
70
- __version__ = '24.08.31'
69
+ __version__ = '24.11.24'
71
70
 
72
71
 
73
72
  class KTMError(_ValueError):
@@ -149,7 +148,8 @@ class KTransverseMercator(_NamedBase):
149
148
  else:
150
149
  self.ellipsoid = a_earth
151
150
 
152
- self.lon0 = lon0
151
+ if lon0:
152
+ self.lon0 = lon0
153
153
  self.k0 = k0
154
154
  if raiser:
155
155
  self.raiser = True
@@ -426,17 +426,17 @@ class KTransverseMercator(_NamedBase):
426
426
  return _COMMASPACE_.join(pairs(d, **kwds))
427
427
 
428
428
 
429
- def _cma(a, b0, b1, Cn):
430
- '''(INTERNAL) Compute complex M{a * b0 - b1 + Cn} with complex
431
- C{a}, C{b0} and C{b1} and scalar C{Cn}.
429
+ def _cfma(a, b0, b1, Cn):
430
+ '''(INTERNAL) Complex fused-multiply-add M{a * b0 - b1 + Cn} with
431
+ complex C{a}, C{b0} and C{b1} and scalar C{Cn}.
432
432
 
433
433
  @see: CPython function U{_Py_c_prod<https://GitHub.com/python/
434
434
  cpython/blob/main/Objects/complexobject.c>}.
435
435
 
436
- @note: Python function C{cmath.fsum} is no longer available.
436
+ @note: Python function C{cmath.fsum} no longer exists.
437
437
  '''
438
- r = fsum1f_(a.real * b0.real, -a.imag * b0.imag, -b1.real, Cn)
439
- j = fsum1f_(a.real * b0.imag, a.imag * b0.real, -b1.imag)
438
+ r = fdot_(a.real, b0.real, -a.imag, b0.imag, -b1.real, _1_0, start=Cn)
439
+ j = fdot_(a.real, b0.imag, a.imag, b0.real, -b1.imag, _1_0)
440
440
  return complex(r, j)
441
441
 
442
442
 
@@ -461,19 +461,18 @@ def _Cyxgk4(E, xi_, eta_, C):
461
461
  y0 = complex(Cn) # +0j
462
462
  z0 = complex(Cn * (n * 2))
463
463
  n -= 1
464
- _c = _cma
465
464
  while n > 0:
466
465
  Cn = C[n]
467
- y1 = _c(a, y0, y1, Cn)
468
- z1 = _c(a, z0, z1, Cn * (n * 2))
466
+ y1 = _cfma(a, y0, y1, Cn)
467
+ z1 = _cfma(a, z0, z1, Cn * (n * 2))
469
468
  n -= 1
470
469
  Cn = C[n]
471
- y0 = _c(a, y1, y0, Cn)
472
- z0 = _c(a, z1, z0, Cn * (n * 2))
470
+ y0 = _cfma(a, y1, y0, Cn)
471
+ z0 = _cfma(a, z1, z0, Cn * (n * 2))
473
472
  n -= 1
474
473
  # assert n == 0
475
- x = _c(s, y0, -x, _0_0)
476
- c = _c(c, z0, z1, _1_0)
474
+ x = _cfma(s, y0, -x, _0_0)
475
+ c = _cfma(c, z0, z1, _1_0)
477
476
 
478
477
  # Gauss-Schreiber to Gauss-Krueger TM
479
478
  # C{cmath.polar} handles INF, NAN, etc.
@@ -613,7 +612,7 @@ if __name__ == '__main__':
613
612
 
614
613
  # **) MIT License
615
614
  #
616
- # Copyright (C) 2022-2024 -- mrJean1 at Gmail -- All Rights Reserved.
615
+ # Copyright (C) 2022-2025 -- mrJean1 at Gmail -- All Rights Reserved.
617
616
  #
618
617
  # Permission is hereby granted, free of charge, to any person obtaining a
619
618
  # copy of this software and associated documentation files (the "Software"),