pygeodesy 24.8.24__py2.py3-none-any.whl → 24.9.24__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 (49) hide show
  1. {PyGeodesy-24.8.24.dist-info → PyGeodesy-24.9.24.dist-info}/METADATA +7 -7
  2. {PyGeodesy-24.8.24.dist-info → PyGeodesy-24.9.24.dist-info}/RECORD +49 -48
  3. pygeodesy/__init__.py +7 -5
  4. pygeodesy/__main__.py +46 -47
  5. pygeodesy/auxilats/_CX_4.py +104 -181
  6. pygeodesy/auxilats/_CX_6.py +152 -277
  7. pygeodesy/auxilats/_CX_8.py +211 -438
  8. pygeodesy/auxilats/_CX_Rs.py +222 -0
  9. pygeodesy/auxilats/__init__.py +2 -2
  10. pygeodesy/auxilats/__main__.py +30 -38
  11. pygeodesy/auxilats/auxLat.py +28 -36
  12. pygeodesy/auxilats/auxily.py +30 -50
  13. pygeodesy/basics.py +24 -14
  14. pygeodesy/booleans.py +13 -14
  15. pygeodesy/clipy.py +7 -7
  16. pygeodesy/constants.py +44 -31
  17. pygeodesy/deprecated/__init__.py +1 -1
  18. pygeodesy/deprecated/functions.py +9 -1
  19. pygeodesy/elliptic.py +154 -88
  20. pygeodesy/errors.py +32 -5
  21. pygeodesy/etm.py +71 -59
  22. pygeodesy/fmath.py +125 -96
  23. pygeodesy/fstats.py +8 -12
  24. pygeodesy/fsums.py +802 -355
  25. pygeodesy/geodesici.py +6 -5
  26. pygeodesy/geodesicx/_C4_24.py +1 -3
  27. pygeodesy/geodesicx/_C4_27.py +1 -3
  28. pygeodesy/geodesicx/_C4_30.py +1 -3
  29. pygeodesy/geodesicx/__init__.py +1 -1
  30. pygeodesy/geodesicx/__main__.py +44 -46
  31. pygeodesy/geodesicx/gxarea.py +3 -3
  32. pygeodesy/geodesicx/gxbases.py +32 -18
  33. pygeodesy/internals.py +50 -9
  34. pygeodesy/interns.py +3 -2
  35. pygeodesy/karney.py +79 -60
  36. pygeodesy/ktm.py +4 -4
  37. pygeodesy/lazily.py +10 -5
  38. pygeodesy/mgrs.py +47 -42
  39. pygeodesy/named.py +4 -1
  40. pygeodesy/points.py +3 -3
  41. pygeodesy/props.py +7 -6
  42. pygeodesy/resections.py +2 -2
  43. pygeodesy/rhumb/__init__.py +1 -1
  44. pygeodesy/rhumb/aux_.py +42 -60
  45. pygeodesy/sphericalNvector.py +4 -4
  46. pygeodesy/sphericalTrigonometry.py +2 -2
  47. pygeodesy/triaxials.py +3 -3
  48. {PyGeodesy-24.8.24.dist-info → PyGeodesy-24.9.24.dist-info}/WHEEL +0 -0
  49. {PyGeodesy-24.8.24.dist-info → PyGeodesy-24.9.24.dist-info}/top_level.txt +0 -0
pygeodesy/rhumb/aux_.py CHANGED
@@ -31,7 +31,8 @@ from __future__ import division as _; del _ # PYCHOK semicolon
31
31
  from pygeodesy.auxilats.auxAngle import AuxMu, AuxPhi, hypot
32
32
  from pygeodesy.auxilats.auxDLat import AuxDLat, _DClenshaw
33
33
  # from pygeodesy.auxilats.auxDST import AuxDST # _MODS
34
- from pygeodesy.auxilats.auxily import _Dlam, _Dp0Dpsi, _Ufloats
34
+ from pygeodesy.auxilats.auxily import _Dlam, _Dp0Dpsi
35
+ from pygeodesy.auxilats._CX_Rs import _Rdict, _Rtuple
35
36
  from pygeodesy.basics import copysign0, _reverange, _xkwds_get1
36
37
  from pygeodesy.constants import EPS_2, MANT_DIG, PI4, isinf, \
37
38
  _0_0, _4_0, _720_0, _log2, _over
@@ -47,7 +48,7 @@ from pygeodesy.rhumb.bases import RhumbBase, RhumbLineBase, \
47
48
  from math import ceil as _ceil, fabs, radians
48
49
 
49
50
  __all__ = _ALL_LAZY.rhumb_aux_
50
- __version__ = '24.06.11'
51
+ __version__ = '24.09.02'
51
52
 
52
53
  # DIGITS = (sizeof(real) * 8) bits
53
54
  # = (ctypes.sizeof(ctypes.c_double(1.0)) * 8) bits
@@ -302,73 +303,54 @@ def _RAseries(auxD):
302
303
  Cs = _RACoeffs[aL]
303
304
  # assert len(Cs) == (aL * (aL + 1)) // 2
304
305
  pP = []
305
- _P = pP.append
306
306
  _p = _polynomial
307
307
  for m in _reverange(aL): # order
308
308
  j = i + m + 1
309
- _P(_p(n, Cs, i, j) * d)
309
+ pP.append(_p(n, Cs, i, j) * d)
310
310
  d *= n
311
311
  i = j
312
312
  # assert i == len(pP)
313
313
  return pP
314
314
 
315
315
 
316
- _f, _u = float, _Ufloats()
317
- _RACoeffs = { # Rhumb Area Coefficients in matrix Q
318
- 4: _u( # GEOGRAPHICLIB_RHUMBAREA_ORDER == 4
319
- 596 / _f(2025), -398 / _f(945), 22 / _f(45), -1 / _f(3),
320
- 1543 / _f(4725), -118 / _f(315), 1 / _f(5),
321
- 152 / _f(945), -17 / _f(315),
322
- 5 / _f(252)),
323
- 5: _u( # GEOGRAPHICLIB_RHUMBAREA_ORDER == 5
324
- -102614 / _f(467775), 596 / _f(2025), -398 / _f(945), 22 / _f(45),
325
- -1 / _f(3),
326
- -24562 / _f(155925), 1543 / _f(4725), -118 / _f(315), 1 / _f(5),
327
- -38068 / _f(155925), 152 / _f(945), -17 / _f(315),
328
- -752 / _f(10395), 5 / _f(252),
329
- -101 / _f(17325)),
330
- 6: _u( # GEOGRAPHICLIB_RHUMBAREA_ORDER == 6
331
- 138734126 / _f(638512875), -102614 / _f(467775), 596 / _f(2025),
332
- -398 / _f(945), 22 / _f(45), -1 / _f(3),
333
- 17749373 / _f(425675250), -24562 / _f(155925), 1543 / _f(4725),
334
- -118 / _f(315), 1 / _f(5),
335
- 1882432 / _f(8513505), -38068 / _f(155925), 152 / _f(945),
336
- -17 / _f(315),
337
- 268864 / _f(2027025), -752 / _f(10395), 5 / _f(252),
338
- 62464 / _f(2027025), -101 / _f(17325),
339
- 11537 / _f(4054050)),
340
- 7: _u( # GEOGRAPHICLIB_RHUMBAREA_ORDER == 7
341
- -565017322 / _f(1915538625), 138734126 / _f(638512875),
342
- -102614 / _f(467775), 596 / _f(2025), -398 / _f(945), 22 / _f(45),
343
- -1 / _f(3),
344
- -1969276 / _f(58046625), 17749373 / _f(425675250), -24562 / _f(155925),
345
- 1543 / _f(4725), -118 / _f(315), 1 / _f(5),
346
- -58573784 / _f(638512875), 1882432 / _f(8513505), -38068 / _f(155925),
347
- 152 / _f(945), -17 / _f(315),
348
- -6975184 / _f(42567525), 268864 / _f(2027025), -752 / _f(10395),
349
- 5 / _f(252),
350
- -112832 / _f(1447875), 62464 / _f(2027025), -101 / _f(17325),
351
- -4096 / _f(289575), 11537 / _f(4054050),
352
- -311 / _f(525525)),
353
- 8: _u( # GEOGRAPHICLIB_RHUMBAREA_ORDER == 8
354
- 188270561816 / _f(488462349375), -565017322 / _f(1915538625),
355
- 138734126 / _f(638512875), -102614 / _f(467775), 596 / _f(2025),
356
- -398 / _f(945), 22 / _f(45), -1 / _f(3),
357
- 2332829602 / _f(23260111875), -1969276 / _f(58046625),
358
- 17749373 / _f(425675250), -24562 / _f(155925), 1543 / _f(4725),
359
- -118 / _f(315), 1 / _f(5),
360
- -41570288 / _f(930404475), -58573784 / _f(638512875),
361
- 1882432 / _f(8513505), -38068 / _f(155925), 152 / _f(945),
362
- -17 / _f(315),
363
- 1538774036 / _f(10854718875), -6975184 / _f(42567525),
364
- 268864 / _f(2027025), -752 / _f(10395), 5 / _f(252),
365
- 436821248 / _f(3618239625), -112832 / _f(1447875),
366
- 62464 / _f(2027025), -101 / _f(17325),
367
- 3059776 / _f(80405325), -4096 / _f(289575), 11537 / _f(4054050),
368
- 4193792 / _f(723647925), -311 / _f(525525),
369
- 1097653 / _f(1929727800))
370
- }
371
- del _f, _u, _Ufloats
316
+ _RACoeffs = _Rdict(110, # Rhumb Area Coefficients in matrix Q
317
+ _Rtuple(4, 10, # GEOGRAPHICLIB_RHUMBAREA_ORDER == 4
318
+ '596/2025, -398/945, 22/45, -1/3',
319
+ '1543/4725, -118/315, 1/5',
320
+ '152/945, -17/315',
321
+ '5/252'),
322
+ _Rtuple(5, 15, # GEOGRAPHICLIB_RHUMBAREA_ORDER == 5
323
+ '-102614/467775, 596/2025, -398/945, 22/45, -1/3',
324
+ '-24562/155925, 1543/4725, -118/315, 1/5',
325
+ '-38068/155925, 152/945, -17/315',
326
+ '-752/10395, 5/252',
327
+ '-101/17325'),
328
+ _Rtuple(6, 21, # GEOGRAPHICLIB_RHUMBAREA_ORDER == 6
329
+ '138734126/638512875, -102614/467775, 596/2025, -398/945, 22/45, -1/3',
330
+ '17749373/425675250, -24562/155925, 1543/4725, -118/315, 1/5',
331
+ '1882432/8513505, -38068/155925, 152/945, -17/315',
332
+ '268864/2027025, -752/10395, 5/252',
333
+ '62464/2027025, -101/17325',
334
+ '11537/4054050'),
335
+ _Rtuple(7, 28, # GEOGRAPHICLIB_RHUMBAREA_ORDER == 7
336
+ '-565017322/1915538625, 138734126/638512875, -102614/467775, 596/2025, -398/945, 22/45, -1/3',
337
+ '-1969276/58046625, 17749373/425675250, -24562/155925, 1543/4725, -118/315, 1/5',
338
+ '-58573784/638512875, 1882432/8513505, -38068/155925, 152/945, -17/315',
339
+ '-6975184/42567525, 268864/2027025, -752/10395, 5/252',
340
+ '-112832/1447875, 62464/2027025, -101/17325',
341
+ '-4096/289575, 11537/4054050',
342
+ '-311/525525'),
343
+ _Rtuple(8, 36, # GEOGRAPHICLIB_RHUMBAREA_ORDER == 8
344
+ '188270561816/488462349375, -565017322/1915538625, 138734126/638512875, -102614/467775, 596/2025, -398/945, 22/45, -1/3',
345
+ '2332829602/23260111875, -1969276/58046625, 17749373/425675250, -24562/155925, 1543/4725, -118/315, 1/5',
346
+ '-41570288/930404475, -58573784/638512875, 1882432/8513505, -38068/155925, 152/945, -17/315',
347
+ '1538774036/10854718875, -6975184/42567525, 268864/2027025, -752/10395, 5/252',
348
+ '436821248/3618239625, -112832/1447875, 62464/2027025, -101/17325',
349
+ '3059776/80405325, -4096/289575, 11537/4054050',
350
+ '4193792/723647925, -311/525525',
351
+ '1097653/1929727800')
352
+ )
353
+ del _Rdict, _Rtuple
372
354
 
373
355
  __all__ += _ALL_DOCS(Caps)
374
356
 
@@ -61,7 +61,7 @@ from pygeodesy.utily import atan2, degrees360, fabs, sincos2, sincos2_, \
61
61
  # from math import atan2, fabs # from utily
62
62
 
63
63
  __all__ = _ALL_LAZY.sphericalNvector
64
- __version__ = '24.06.11'
64
+ __version__ = '24.09.23'
65
65
 
66
66
  _lines_ = 'lines'
67
67
 
@@ -491,7 +491,7 @@ class LatLon(LatLonNvectorBase, LatLonSphericalBase):
491
491
  # an exterior point will sum to 0°. On a sphere, enclosed
492
492
  # point angles will sum to less than 360° (due to spherical
493
493
  # excess), exterior point angles will be small but non-zero.
494
- s = fsum(_subtangles(points, wrap), floats=True) # normal vector
494
+ s = fsum(_subtangles(points, wrap)) # normal vector
495
495
  # XXX are winding number optimisations equally applicable to
496
496
  # spherical surface?
497
497
  return fabs(s) > PI
@@ -846,7 +846,7 @@ def areaOf(points, radius=R_M, wrap=False):
846
846
  # angle between edges is π−α or π+α, where α is angle between
847
847
  # great-circle vectors; so sum α, then take n·π − |Σα| (cannot
848
848
  # use Σ(π−|α|) as concave polygons would fail)
849
- s = fsum(_interangles(points, wrap), floats=True)
849
+ s = fsum(_interangles(points, wrap))
850
850
  # using Girard’s theorem: A = [Σθᵢ − (n−2)·π]·R²
851
851
  # (PI2 - abs(s) == (n*PI - abs(s)) - (n-2)*PI)
852
852
  r = fabs(PI2 - fabs(s))
@@ -1138,7 +1138,7 @@ def perimeterOf(points, closed=False, radius=R_M, wrap=False):
1138
1138
  notImplemented(None, closed=closed, points=_composite_)
1139
1139
  r = points._sum2(LatLon, perimeterOf, closed=True, radius=None, wrap=wrap)
1140
1140
  else:
1141
- r = fsum(_rads(points, closed, wrap), floats=True)
1141
+ r = fsum(_rads(points, closed, wrap))
1142
1142
  return r if radius is None else (Radius(radius) * r)
1143
1143
 
1144
1144
 
@@ -54,7 +54,7 @@ from pygeodesy.vector3d import sumOf, Vector3d
54
54
  from math import asin, atan2, cos, degrees, fabs, radians, sin
55
55
 
56
56
  __all__ = _ALL_LAZY.sphericalTrigonometry
57
- __version__ = '24.08.13'
57
+ __version__ = '24.09.23'
58
58
 
59
59
  _PI_EPS4 = PI - EPS4
60
60
  if _PI_EPS4 >= PI:
@@ -1302,7 +1302,7 @@ def perimeterOf(points, closed=False, radius=R_M, wrap=True):
1302
1302
  raise _ValueError(closed=closed, points=_composite_)
1303
1303
  r = points._sum2(LatLon, perimeterOf, closed=True, radius=radius, wrap=wrap)
1304
1304
  else:
1305
- r = fsum(_rads(points, closed, wrap), floats=True)
1305
+ r = fsum(_rads(points, closed, wrap))
1306
1306
  return _radians2m(r, radius)
1307
1307
 
1308
1308
 
pygeodesy/triaxials.py CHANGED
@@ -33,7 +33,7 @@ from __future__ import division as _; del _ # PYCHOK semicolon
33
33
  from pygeodesy.basics import isLatLon, isscalar, _ValueError
34
34
  from pygeodesy.constants import EPS, EPS0, EPS02, EPS4, INT0, PI2, PI_3, PI4, \
35
35
  _EPS2e4, float0_, isfinite, isnear1, _over, \
36
- _0_0, _0_5, _1_0, _N_1_0, _4_0 # PYCHOK used!
36
+ _0_0, _0_5, _1_0, _N_1_0, _64_0, _4_0 # PYCHOK used!
37
37
  from pygeodesy.datums import Datum, _spherical_datum, _WGS84, Ellipsoid, _EWGS84, Fmt
38
38
  # from pygeodesy.ellipsoids import Ellipsoid, _EWGS84 # from .datums
39
39
  # from pygeodesy.elliptic import Elliptic # _MODS
@@ -59,7 +59,7 @@ from pygeodesy.vector3d import _otherV3d, Vector3d, _ALL_LAZY, _MODS
59
59
  from math import atan2, fabs, sqrt
60
60
 
61
61
  __all__ = _ALL_LAZY.triaxials
62
- __version__ = '24.08.18'
62
+ __version__ = '24.08.26'
63
63
 
64
64
  _not_ordered_ = _not_('ordered')
65
65
  _omega_ = 'omega'
@@ -1157,7 +1157,7 @@ Triaxials = Triaxials(Triaxial, Triaxial_) # PYCHOK singleton
1157
1157
  # <https://link.Springer.com/article/10.1007/s00190-022-01650-9>
1158
1158
  _abc84_35 = (_EWGS84.a + 35), (_EWGS84.a - 35), _EWGS84.b
1159
1159
  Triaxials._assert( # a (Km) b (Km) c (Km) planet
1160
- Amalthea = _lazy('Amalthea', 125.0, 73.0, 64.0), # Jupiter
1160
+ Amalthea = _lazy('Amalthea', 125.0, 73.0, _64_0), # Jupiter
1161
1161
  Ariel = _lazy('Ariel', 581.1, 577.9, 577.7), # Uranus
1162
1162
  Earth = _lazy('Earth', 6378.173435, 6378.1039, 6356.7544),
1163
1163
  Enceladus = _lazy('Enceladus', 256.6, 251.4, 248.3), # Saturn