pyephemera 0.4.1__tar.gz

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 (51) hide show
  1. pyephemera-0.4.1/CMakeLists.txt +34 -0
  2. pyephemera-0.4.1/LICENSE +21 -0
  3. pyephemera-0.4.1/PKG-INFO +97 -0
  4. pyephemera-0.4.1/README.md +75 -0
  5. pyephemera-0.4.1/csrc/data/asteroid_data.h +13 -0
  6. pyephemera-0.4.1/csrc/data/corr_data.h +27 -0
  7. pyephemera-0.4.1/csrc/data/delta_t_data.cpp +65 -0
  8. pyephemera-0.4.1/csrc/data/delta_t_data.h +14 -0
  9. pyephemera-0.4.1/csrc/data/elp_data.h +16 -0
  10. pyephemera-0.4.1/csrc/data/pluto_data.h +15 -0
  11. pyephemera-0.4.1/csrc/data/stars_data.h +23 -0
  12. pyephemera-0.4.1/csrc/data/vsop87d_data.h +18 -0
  13. pyephemera-0.4.1/csrc/eph-1as-chiron.bin +0 -0
  14. pyephemera-0.4.1/csrc/include/ephemeris/ephemeris.h +547 -0
  15. pyephemera-0.4.1/csrc/src/asteroids.cpp +48 -0
  16. pyephemera-0.4.1/csrc/src/ayanamsa.cpp +130 -0
  17. pyephemera-0.4.1/csrc/src/compressed.cpp +214 -0
  18. pyephemera-0.4.1/csrc/src/correction.cpp +65 -0
  19. pyephemera-0.4.1/csrc/src/data.cpp +393 -0
  20. pyephemera-0.4.1/csrc/src/data.h +133 -0
  21. pyephemera-0.4.1/csrc/src/eclipses.cpp +664 -0
  22. pyephemera-0.4.1/csrc/src/elp.cpp +103 -0
  23. pyephemera-0.4.1/csrc/src/embedded_none.cpp +12 -0
  24. pyephemera-0.4.1/csrc/src/ephemeris.cpp +639 -0
  25. pyephemera-0.4.1/csrc/src/frames.cpp +350 -0
  26. pyephemera-0.4.1/csrc/src/houses.cpp +320 -0
  27. pyephemera-0.4.1/csrc/src/internal.h +137 -0
  28. pyephemera-0.4.1/csrc/src/minor.cpp +136 -0
  29. pyephemera-0.4.1/csrc/src/moon.cpp +30 -0
  30. pyephemera-0.4.1/csrc/src/orbits.cpp +249 -0
  31. pyephemera-0.4.1/csrc/src/phenomena.cpp +208 -0
  32. pyephemera-0.4.1/csrc/src/pluto.cpp +23 -0
  33. pyephemera-0.4.1/csrc/src/search.cpp +296 -0
  34. pyephemera-0.4.1/csrc/src/stars.cpp +269 -0
  35. pyephemera-0.4.1/csrc/src/time.cpp +220 -0
  36. pyephemera-0.4.1/csrc/src/uranian.cpp +77 -0
  37. pyephemera-0.4.1/csrc/src/util.cpp +101 -0
  38. pyephemera-0.4.1/csrc/src/vsop87.cpp +56 -0
  39. pyephemera-0.4.1/csrc/tools/embed.cmake +38 -0
  40. pyephemera-0.4.1/pyproject.toml +43 -0
  41. pyephemera-0.4.1/src/ephemera/__init__.py +809 -0
  42. pyephemera-0.4.1/src/ephemera/_native.py +165 -0
  43. pyephemera-0.4.1/src/ephemera/data/eph-01as-chiron.bin +0 -0
  44. pyephemera-0.4.1/src/ephemera/data/eph-01as.bin +0 -0
  45. pyephemera-0.4.1/src/ephemera/data/eph-1as-chiron.bin +0 -0
  46. pyephemera-0.4.1/src/ephemera/data/eph-1as.bin +0 -0
  47. pyephemera-0.4.1/src/ephemera/data/eph-asteroids.bin +0 -0
  48. pyephemera-0.4.1/src/ephemera/data/eph-chiron.bin +0 -0
  49. pyephemera-0.4.1/src/ephemera/data/eph-stars.bin +0 -0
  50. pyephemera-0.4.1/src/ephemera/py.typed +0 -0
  51. pyephemera-0.4.1/tests/test_ephemera.py +90 -0
@@ -0,0 +1,34 @@
1
+ # The Python package's native library: Ephemera as a shared library with the
2
+ # 1" series and Chiron (eph-1as-chiron.bin) built in, loaded with ctypes.
3
+ # Built from the sources staged in csrc/ by `make python`.
4
+ cmake_minimum_required(VERSION 3.16)
5
+ project(pyephemera C CXX)
6
+
7
+ set(CMAKE_CXX_STANDARD 17)
8
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
9
+ if(NOT CMAKE_BUILD_TYPE)
10
+ set(CMAKE_BUILD_TYPE Release)
11
+ endif()
12
+
13
+ set(CSRC ${CMAKE_CURRENT_SOURCE_DIR}/csrc)
14
+ set(EMBED_SRC ${CMAKE_CURRENT_BINARY_DIR}/embedded_data.cpp)
15
+ add_custom_command(OUTPUT ${EMBED_SRC}
16
+ COMMAND ${CMAKE_COMMAND} -DIN=${CSRC}/eph-1as-chiron.bin -DOUT=${EMBED_SRC}
17
+ -P ${CSRC}/tools/embed.cmake
18
+ DEPENDS ${CSRC}/eph-1as-chiron.bin ${CSRC}/tools/embed.cmake)
19
+
20
+ file(GLOB SOURCES ${CSRC}/src/*.cpp)
21
+ list(FILTER SOURCES EXCLUDE REGEX "embedded_none\\.cpp$")
22
+
23
+ add_library(ephemera_native SHARED ${SOURCES} ${EMBED_SRC} ${CSRC}/data/delta_t_data.cpp)
24
+ target_include_directories(ephemera_native PRIVATE ${CSRC}/include ${CSRC}/src ${CSRC}/data)
25
+ set_target_properties(ephemera_native PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
26
+ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
27
+ target_compile_options(ephemera_native PRIVATE -O2)
28
+ endif()
29
+ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
30
+ # No dependency on the system's C++ runtime.
31
+ target_link_options(ephemera_native PRIVATE -static-libstdc++ -static-libgcc)
32
+ endif()
33
+
34
+ install(TARGETS ephemera_native LIBRARY DESTINATION ephemera RUNTIME DESTINATION ephemera)
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Intellecat
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,97 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyephemera
3
+ Version: 0.4.1
4
+ Summary: Pocket-sized ephemeris for astrology and astronomy: planets, Moon, Chiron, nodes, houses, ayanamsas, stars, eclipses, Uranian points and 1,000+ asteroids. No dependencies, MIT.
5
+ Keywords: ephemeris,astrology,astronomy,planets,houses,ayanamsa,sidereal,eclipse
6
+ Author: Intellecat
7
+ License-Expression: MIT
8
+ License-File: LICENSE
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: C++
15
+ Classifier: Topic :: Scientific/Engineering :: Astronomy
16
+ Classifier: Typing :: Typed
17
+ Project-URL: Homepage, https://github.com/intellecat/ephemera
18
+ Project-URL: Documentation, https://github.com/intellecat/ephemera/blob/main/docs/guide.md
19
+ Project-URL: Issues, https://github.com/intellecat/ephemera/issues
20
+ Requires-Python: >=3.9
21
+ Description-Content-Type: text/markdown
22
+
23
+ <p align="center"><img alt="Ephemera" src="https://raw.githubusercontent.com/intellecat/ephemera/main/assets/logo/lockup-horizontal-light.svg" width="420"></p>
24
+
25
+ # pyephemera
26
+
27
+ **A pocket-sized, MIT-licensed ephemeris for astrology and astronomy.**
28
+ JPL-grade planetary positions, houses, ayanamsas, eclipses, fixed stars and
29
+ 1,000+ asteroids, from a small C library with no dependencies. Wheels for
30
+ Linux, macOS and Windows; Python 3.9+.
31
+
32
+ - **MIT licensed:** use it in closed-source and commercial apps.
33
+ - **Accurate:** within 0.6″ of NASA JPL's DE440 over 1550–2650 with the
34
+ built-in data, or 0.03″ with the high-precision tables.
35
+ - **Small:** the planets, the Moon and Chiron are built in (204 KB); more
36
+ data files come with the package.
37
+ - **Complete for astrology:** 14 house systems, 42 ayanamsas, nodes and
38
+ Lilith, Uranian points, eclipses, returns and stations, sidereal
39
+ returns, planetary nodes and apsides, and 411 fixed stars.
40
+ - **Independently verified** against JPL, NASA's eclipse canon and
41
+ India's official ephemeris. See the
42
+ [accuracy page](https://github.com/intellecat/ephemera/blob/main/docs/accuracy.md).
43
+
44
+ ```sh
45
+ pip install pyephemera
46
+ ```
47
+
48
+ ```python
49
+ import ephemera as eph
50
+
51
+ jd = eph.julian_date(2026, 1, 1.5) # 1 Jan 2026, 12:00 UT
52
+ moon = eph.position(eph.Body.MOON, jd) # degrees, AU, per day
53
+ cusps = eph.houses(jd, -0.1278, 51.5074, eph.HouseSystem.PLACIDUS) # London
54
+ lahiri = eph.ayanamsa(eph.Ayanamsa.LAHIRI, eph.ut_to_tt(jd)) # sidereal = tropical − ayanamsa
55
+ eclipse = eph.solar_eclipse(eph.ut_to_tt(jd)) # the next solar eclipse
56
+ ```
57
+
58
+ ## Times
59
+
60
+ Positions take a **UT** Julian day; searches, eclipses and orbits take
61
+ **TT**. `utc_to_jd` converts civil time (with leap seconds) and accepts a
62
+ `datetime`:
63
+
64
+ ```python
65
+ from datetime import datetime
66
+ from zoneinfo import ZoneInfo
67
+
68
+ jd_tt, jd_ut = eph.utc_to_jd(datetime(1990, 6, 15, 14, 30, tzinfo=ZoneInfo("Europe/London")))
69
+ ```
70
+
71
+ ## Data files
72
+
73
+ The 1″ series with Chiron is built in. The package also carries:
74
+
75
+ ```python
76
+ eph.load_package_data("stars") # 411 named stars, star-based ayanamsas
77
+ eph.load_package_data("asteroids") # Ceres, Pallas, Juno, Vesta (1600–2500)
78
+ eph.load_package_data("01as") # the 0.2″ series
79
+ eph.load_data("de440-2000.bin") # any file from the repository, by path or bytes
80
+ ```
81
+
82
+ The DE440 tables (0.002″) and the minor-planet files (1,000+ asteroids,
83
+ 1900–2100) are downloads from the
84
+ [repository](https://github.com/intellecat/ephemera/blob/main/docs/data.md).
85
+ Loaded data is shared by the whole process.
86
+
87
+ ## Documentation
88
+
89
+ The [guide](https://github.com/intellecat/ephemera/blob/main/docs/guide.md)
90
+ covers every feature. The Python names follow the JavaScript API in
91
+ snake_case: `houses_info`, `longitude_crossing`, `solar_eclipse_local`,
92
+ `minor_body`; calls that find nothing return `None`.
93
+
94
+ ## License
95
+
96
+ MIT. Built from public data: NASA JPL, NASA's eclipse catalogues and
97
+ Hipparcos. No third-party code is included.
@@ -0,0 +1,75 @@
1
+ <p align="center"><img alt="Ephemera" src="https://raw.githubusercontent.com/intellecat/ephemera/main/assets/logo/lockup-horizontal-light.svg" width="420"></p>
2
+
3
+ # pyephemera
4
+
5
+ **A pocket-sized, MIT-licensed ephemeris for astrology and astronomy.**
6
+ JPL-grade planetary positions, houses, ayanamsas, eclipses, fixed stars and
7
+ 1,000+ asteroids, from a small C library with no dependencies. Wheels for
8
+ Linux, macOS and Windows; Python 3.9+.
9
+
10
+ - **MIT licensed:** use it in closed-source and commercial apps.
11
+ - **Accurate:** within 0.6″ of NASA JPL's DE440 over 1550–2650 with the
12
+ built-in data, or 0.03″ with the high-precision tables.
13
+ - **Small:** the planets, the Moon and Chiron are built in (204 KB); more
14
+ data files come with the package.
15
+ - **Complete for astrology:** 14 house systems, 42 ayanamsas, nodes and
16
+ Lilith, Uranian points, eclipses, returns and stations, sidereal
17
+ returns, planetary nodes and apsides, and 411 fixed stars.
18
+ - **Independently verified** against JPL, NASA's eclipse canon and
19
+ India's official ephemeris. See the
20
+ [accuracy page](https://github.com/intellecat/ephemera/blob/main/docs/accuracy.md).
21
+
22
+ ```sh
23
+ pip install pyephemera
24
+ ```
25
+
26
+ ```python
27
+ import ephemera as eph
28
+
29
+ jd = eph.julian_date(2026, 1, 1.5) # 1 Jan 2026, 12:00 UT
30
+ moon = eph.position(eph.Body.MOON, jd) # degrees, AU, per day
31
+ cusps = eph.houses(jd, -0.1278, 51.5074, eph.HouseSystem.PLACIDUS) # London
32
+ lahiri = eph.ayanamsa(eph.Ayanamsa.LAHIRI, eph.ut_to_tt(jd)) # sidereal = tropical − ayanamsa
33
+ eclipse = eph.solar_eclipse(eph.ut_to_tt(jd)) # the next solar eclipse
34
+ ```
35
+
36
+ ## Times
37
+
38
+ Positions take a **UT** Julian day; searches, eclipses and orbits take
39
+ **TT**. `utc_to_jd` converts civil time (with leap seconds) and accepts a
40
+ `datetime`:
41
+
42
+ ```python
43
+ from datetime import datetime
44
+ from zoneinfo import ZoneInfo
45
+
46
+ jd_tt, jd_ut = eph.utc_to_jd(datetime(1990, 6, 15, 14, 30, tzinfo=ZoneInfo("Europe/London")))
47
+ ```
48
+
49
+ ## Data files
50
+
51
+ The 1″ series with Chiron is built in. The package also carries:
52
+
53
+ ```python
54
+ eph.load_package_data("stars") # 411 named stars, star-based ayanamsas
55
+ eph.load_package_data("asteroids") # Ceres, Pallas, Juno, Vesta (1600–2500)
56
+ eph.load_package_data("01as") # the 0.2″ series
57
+ eph.load_data("de440-2000.bin") # any file from the repository, by path or bytes
58
+ ```
59
+
60
+ The DE440 tables (0.002″) and the minor-planet files (1,000+ asteroids,
61
+ 1900–2100) are downloads from the
62
+ [repository](https://github.com/intellecat/ephemera/blob/main/docs/data.md).
63
+ Loaded data is shared by the whole process.
64
+
65
+ ## Documentation
66
+
67
+ The [guide](https://github.com/intellecat/ephemera/blob/main/docs/guide.md)
68
+ covers every feature. The Python names follow the JavaScript API in
69
+ snake_case: `houses_info`, `longitude_crossing`, `solar_eclipse_local`,
70
+ `minor_body`; calls that find nothing return `None`.
71
+
72
+ ## License
73
+
74
+ MIT. Built from public data: NASA JPL, NASA's eclipse catalogues and
75
+ Hipparcos. No third-party code is included.
@@ -0,0 +1,13 @@
1
+ /* Generated by tools/fit_asteroids.py -- do not edit. */
2
+ #pragma once
3
+
4
+ namespace eph {
5
+ namespace ast {
6
+
7
+ struct Body { const double* t; const float* c;
8
+ int nseg; int ncoef; };
9
+
10
+ extern const Body bodies[5];
11
+
12
+ } // namespace ast
13
+ } // namespace eph
@@ -0,0 +1,27 @@
1
+ /* Generated by tools/fit_correction.py (de440.bsp, 1550-2650) -- do not edit. */
2
+ #pragma once
3
+
4
+ namespace eph {
5
+ namespace corr {
6
+
7
+ /* theta = phase + rate * T (radians; T in centuries from J2000). */
8
+ struct Harmonic {
9
+ double phase, rate;
10
+ };
11
+
12
+ /* Per coordinate (longitude and latitude in radians, distance in
13
+ * AU): n0 Chebyshev coefficients of the secular part, then for each
14
+ * harmonic nh of its cosine and nh of its sine amplitude, all in
15
+ * u = (2T - tmin - tmax) / (tmax - tmin). */
16
+ struct Series {
17
+ double tmin, tmax;
18
+ int n0, nh, nharm;
19
+ const Harmonic* harm;
20
+ const float* coef; /* 3 * (n0 + 2 * nharm * nh) */
21
+ };
22
+
23
+ extern const Series earth, mercury, venus, mars, jupiter,
24
+ saturn, uranus, neptune, moon;
25
+
26
+ } // namespace corr
27
+ } // namespace eph
@@ -0,0 +1,65 @@
1
+ /* Generated by tools/gen_delta_t.py -- do not edit. */
2
+ #include "delta_t_data.h"
3
+
4
+ namespace eph {
5
+ namespace delta_t {
6
+
7
+ const float kTable[kLastYear - kFirstYear + 1] = {
8
+ /* 1620 */ 79.51f, 78.14f, 76.78f, 75.43f, 74.10f, 72.77f, 71.46f, 70.16f, 68.87f, 67.59f,
9
+ /* 1630 */ 66.33f, 65.08f, 63.85f, 62.62f, 61.41f, 60.21f, 59.03f, 57.86f, 56.70f, 55.56f,
10
+ /* 1640 */ 54.43f, 53.31f, 52.21f, 51.13f, 50.06f, 49.00f, 47.96f, 46.93f, 45.92f, 44.92f,
11
+ /* 1650 */ 43.94f, 42.98f, 42.03f, 41.10f, 40.18f, 39.28f, 38.39f, 37.52f, 36.66f, 35.82f,
12
+ /* 1660 */ 35.00f, 34.18f, 33.39f, 32.61f, 31.85f, 31.09f, 30.36f, 29.64f, 28.94f, 28.25f,
13
+ /* 1670 */ 27.57f, 26.91f, 26.27f, 25.64f, 25.02f, 24.42f, 23.84f, 23.27f, 22.71f, 22.17f,
14
+ /* 1680 */ 21.64f, 21.13f, 20.63f, 20.15f, 19.68f, 19.22f, 18.78f, 18.35f, 17.94f, 17.54f,
15
+ /* 1690 */ 17.16f, 16.79f, 16.44f, 16.09f, 15.77f, 15.45f, 15.16f, 14.87f, 14.60f, 14.34f,
16
+ /* 1700 */ 14.10f, 13.87f, 13.65f, 13.45f, 13.26f, 13.09f, 12.92f, 12.78f, 12.64f, 12.52f,
17
+ /* 1710 */ 12.41f, 12.32f, 12.24f, 12.17f, 12.12f, 12.08f, 12.05f, 12.03f, 12.03f, 12.04f,
18
+ /* 1720 */ 12.07f, 12.11f, 12.16f, 12.22f, 12.29f, 12.38f, 12.48f, 12.58f, 12.70f, 12.82f,
19
+ /* 1730 */ 12.96f, 13.10f, 13.26f, 13.42f, 13.58f, 13.76f, 13.94f, 14.12f, 14.31f, 14.51f,
20
+ /* 1740 */ 14.71f, 14.92f, 15.13f, 15.34f, 15.55f, 15.77f, 15.99f, 16.21f, 16.43f, 16.65f,
21
+ /* 1750 */ 16.88f, 17.10f, 17.32f, 17.54f, 17.76f, 17.98f, 18.19f, 18.40f, 18.61f, 18.81f,
22
+ /* 1760 */ 19.01f, 19.21f, 19.40f, 19.58f, 19.76f, 19.93f, 20.10f, 20.25f, 20.40f, 20.54f,
23
+ /* 1770 */ 20.67f, 20.80f, 20.91f, 21.01f, 21.11f, 21.19f, 21.26f, 21.32f, 21.36f, 21.40f,
24
+ /* 1780 */ 21.42f, 21.42f, 21.42f, 21.39f, 21.36f, 21.30f, 21.24f, 21.15f, 21.05f, 20.93f,
25
+ /* 1790 */ 20.79f, 20.64f, 20.47f, 20.28f, 20.06f, 19.83f, 19.58f, 19.31f, 19.02f, 18.70f,
26
+ /* 1800 */ 18.37f, 18.01f, 17.64f, 17.27f, 16.92f, 16.58f, 16.29f, 16.04f, 15.84f, 15.72f,
27
+ /* 1810 */ 15.68f, 15.72f, 15.84f, 16.00f, 16.18f, 16.37f, 16.53f, 16.65f, 16.71f, 16.67f,
28
+ /* 1820 */ 16.52f, 16.23f, 15.84f, 15.34f, 14.77f, 14.14f, 13.47f, 12.78f, 12.10f, 11.43f,
29
+ /* 1830 */ 10.80f, 10.23f, 9.72f, 9.26f, 8.86f, 8.52f, 8.23f, 8.00f, 7.82f, 7.70f,
30
+ /* 1840 */ 7.63f, 7.62f, 7.65f, 7.73f, 7.86f, 8.02f, 8.23f, 8.46f, 8.73f, 9.02f,
31
+ /* 1850 */ 9.34f, 9.67f, 9.98f, 10.23f, 10.37f, 10.36f, 10.18f, 9.88f, 9.54f, 9.24f,
32
+ /* 1860 */ 9.04f, 8.99f, 9.01f, 8.97f, 8.76f, 8.25f, 7.38f, 6.22f, 4.91f, 3.58f,
33
+ /* 1870 */ 2.37f, 1.36f, 0.56f, -0.10f, -0.65f, -1.13f, -1.58f, -2.01f, -2.43f, -2.83f,
34
+ /* 1880 */ -3.21f, -3.58f, -3.91f, -4.17f, -4.34f, -4.39f, -4.31f, -4.14f, -3.97f, -3.86f,
35
+ /* 1890 */ -3.88f, -4.07f, -4.37f, -4.69f, -4.93f, -5.02f, -4.87f, -4.47f, -3.86f, -3.02f,
36
+ /* 1900 */ -1.98f, -0.75f, 0.62f, 2.06f, 3.51f, 4.92f, 6.24f, 7.49f, 8.70f, 9.90f,
37
+ /* 1910 */ 11.14f, 12.43f, 13.75f, 15.06f, 16.32f, 17.48f, 18.52f, 19.44f, 20.25f, 20.98f,
38
+ /* 1920 */ 21.62f, 22.19f, 22.69f, 23.12f, 23.49f, 23.79f, 24.02f, 24.20f, 24.32f, 24.39f,
39
+ /* 1930 */ 24.42f, 24.41f, 24.38f, 24.32f, 24.24f, 24.16f, 24.09f, 24.04f, 24.06f, 24.17f,
40
+ /* 1940 */ 24.42f, 24.83f, 25.35f, 25.92f, 26.51f, 27.05f, 27.51f, 27.89f, 28.24f, 28.58f,
41
+ /* 1950 */ 28.93f, 29.32f, 29.70f, 30.00f, 30.20f, 30.41f, 30.76f, 31.34f, 32.03f, 32.65f,
42
+ /* 1960 */ 33.07f, 33.36f, 33.62f, 33.96f, 34.44f, 35.09f, 35.95f, 36.93f, 37.95f, 38.95f,
43
+ /* 1970 */ 39.93f, 40.95f, 42.14f, 43.37f, 44.48f, 45.48f, 46.46f, 47.52f, 48.53f, 49.59f,
44
+ /* 1980 */ 50.54f, 51.38f, 52.17f, 52.96f, 53.79f, 54.34f, 54.87f, 55.32f, 55.82f, 56.30f,
45
+ /* 1990 */ 56.86f, 57.57f, 58.31f, 59.12f, 59.98f, 60.79f, 61.63f, 62.30f, 62.97f, 63.47f,
46
+ /* 2000 */ 63.83f, 64.09f, 64.30f, 64.47f, 64.57f, 64.69f, 64.85f, 65.15f, 65.46f, 65.78f,
47
+ /* 2010 */ 66.07f, 66.32f, 66.60f, 66.91f, 67.28f, 67.64f, 68.10f, 68.59f, 68.97f, 69.22f,
48
+ /* 2020 */ 69.36f, 69.36f, 69.29f, 69.20f, 69.18f, 69.14f, 69.11f, 69.10f, 69.08f, 69.07f,
49
+ /* 2030 */ 69.08f, 69.09f, 69.12f, 69.16f, 69.20f, 69.26f, 69.33f, 69.41f, 69.51f, 69.61f,
50
+ /* 2040 */ 69.72f, 69.85f, 69.98f, 70.13f, 70.28f, 70.45f, 70.63f, 70.81f, 71.01f, 71.22f,
51
+ /* 2050 */ 71.44f, 71.67f, 71.92f, 72.17f, 72.43f, 72.70f, 72.99f, 73.28f, 73.59f, 73.90f,
52
+ /* 2060 */ 74.23f, 74.57f, 74.92f, 75.28f, 75.64f, 76.02f, 76.41f, 76.82f, 77.23f, 77.65f,
53
+ /* 2070 */ 78.08f, 78.52f, 78.98f, 79.44f, 79.92f, 80.40f, 80.90f, 81.40f, 81.92f, 82.45f,
54
+ /* 2080 */ 82.98f, 83.53f, 84.09f, 84.66f, 85.24f, 85.83f, 86.43f, 87.04f, 87.66f, 88.29f,
55
+ /* 2090 */ 88.94f, 89.59f, 90.25f, 90.93f, 91.61f, 92.30f, 93.01f, 93.72f, 94.45f, 95.18f,
56
+ /* 2100 */ 95.93f, 96.68f, 97.45f, 98.22f, 99.01f, 99.81f, 100.62f, 101.44f, 102.26f, 103.10f,
57
+ /* 2110 */ 103.95f, 104.81f, 105.68f, 106.56f, 107.45f, 108.35f, 109.26f, 110.18f, 111.11f, 112.05f,
58
+ /* 2120 */ 113.00f, 113.97f, 114.94f, 115.92f, 116.91f, 117.91f, 118.93f, 119.95f, 120.98f, 122.03f,
59
+ /* 2130 */ 123.08f, 124.14f, 125.21f, 126.30f, 127.39f, 128.49f, 129.61f, 130.73f, 131.87f, 133.01f,
60
+ /* 2140 */ 134.16f, 135.33f, 136.50f, 137.69f, 138.88f, 140.09f, 141.30f, 142.52f, 143.76f, 145.00f,
61
+ /* 2150 */ 146.26f,
62
+ };
63
+
64
+ } // namespace delta_t
65
+ } // namespace eph
@@ -0,0 +1,14 @@
1
+ /* Generated by tools/gen_delta_t.py -- do not edit. */
2
+ #pragma once
3
+
4
+ namespace eph {
5
+ namespace delta_t {
6
+
7
+ constexpr int kFirstYear = 1620;
8
+ constexpr int kLastYear = 2150;
9
+
10
+ /* Delta-T in seconds at 1 January of each year. */
11
+ extern const float kTable[kLastYear - kFirstYear + 1];
12
+
13
+ } // namespace delta_t
14
+ } // namespace eph
@@ -0,0 +1,16 @@
1
+ /* Generated by tools/gen_elp.py -- do not edit. */
2
+ #pragma once
3
+
4
+ namespace eph {
5
+ namespace elp {
6
+
7
+ struct MainTerm { double ph1, ph2, ph3, ph4; float amp;
8
+ unsigned int packed; };
9
+ struct PertTerm { double ph1; float amp; unsigned int packed; };
10
+ struct Coord { const MainTerm* main; int nmain;
11
+ const PertTerm* pert; int npert; };
12
+
13
+ extern const Coord coords[3];
14
+
15
+ } // namespace elp
16
+ } // namespace eph
@@ -0,0 +1,15 @@
1
+ /* Generated by tools/fit_pluto.py (de440.bsp, 1550-2650) -- do not edit. */
2
+ #pragma once
3
+
4
+ namespace eph {
5
+ namespace pluto_fit {
6
+
7
+ /* Heliocentric x, y, z (AU, mean ecliptic J2000) per interval
8
+ * t[i]..t[i+1] (JD TT), ncoef Chebyshev coefficients each. */
9
+ struct Body { const double* t; const float* c;
10
+ int nseg; int ncoef; };
11
+
12
+ extern const Body body;
13
+
14
+ } // namespace pluto_fit
15
+ } // namespace eph
@@ -0,0 +1,23 @@
1
+ /* Generated by tools/make_stars.py -- do not edit. */
2
+ #pragma once
3
+
4
+ namespace eph {
5
+ namespace stars {
6
+
7
+ /* ICRS position at epoch J2000.0 (radians), proper motion
8
+ * (mas/yr; RA as dRA/dt cos dec), parallax (mas), radial
9
+ * velocity (km/s), V magnitude. */
10
+ struct Star {
11
+ const char* name;
12
+ const char* designation;
13
+ unsigned hip;
14
+ float vmag;
15
+ double ra, dec;
16
+ float pm_ra, pm_dec, parallax, rv;
17
+ };
18
+
19
+ extern const Star catalogue[];
20
+ extern const int count;
21
+
22
+ } // namespace stars
23
+ } // namespace eph
@@ -0,0 +1,18 @@
1
+ /* Generated by tools/gen_vsop87.py -- do not edit by hand. */
2
+ #pragma once
3
+
4
+ namespace eph {
5
+ namespace vsop87d {
6
+
7
+ struct Term { float a; unsigned int b; double c; };
8
+ struct Series { double poly; const Term* terms; int count; };
9
+ struct Body {
10
+ const Series* l; int nl;
11
+ const Series* b; int nb;
12
+ const Series* r; int nr;
13
+ };
14
+
15
+ extern const Body bodies[8];
16
+
17
+ } // namespace vsop87d
18
+ } // namespace eph
Binary file