# I've almost learned to spell Chebyshev, why has JPL switched to Hermite interpolation for DE438?

According to @ChrisR's thorough answer

One caveat however is that the interpolation in DE438 is a Hermite interpolation, and no longer a Chebychev interpolation, so you may need to update your code.

The JPL Development Ephemerides have been around in some form since the 1960's. If I understand correctly, these as well as the "Spice Kernels" (no, not an all-male version of the Spice Girls) usually if not (until recently) always have contained coefficients for Chebychev polynomial interpolation to produce continuous state vectors; trajectories for bodies and objects in space.

Question: Why would DE438 be released using a different class of polynomials (Hermite) for its interpolation?

fyi #1: I've tried Skyfield using data = load('de438.bsp') and it seems to work, so perhaps at least some existing ephemeride readers are already compatible with both?

fyi #2: according to this answer :

(ephemerides is) pronounced ɛfɪˈmɛrɪdiːz/ ("effih-MERRih-deez", which for some speakers is the same as "effuh-MERRuh-deez").

• Well, this is embarrassing. I know for sure that the ephemeris files generated in GMAT (for a spaceraft trajectory) use the Hermite interpolation (I was helping a coworker debug one earlier today). Moreover, this doc claims that types 5, 9, 10 and 13 are the most used: naif.jpl.nasa.gov/pub/naif/self_training/individual_docs/… . As explained in the Required Reading, naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/req/spk.html that isn't the Chebyshev interpolation. Moreover, the SPICE tool OEM2SPK does not support Chebyshev ... – ChrisR Jun 13 '18 at 4:41
• (continued), cf. this link naif.jpl.nasa.gov/pub/naif/utilities/PC_Linux_32bit/oem2spk.ug . However, a quick search in the code source of Skyfield shows that the Chebyshev test itself reads de421. I also know (from another old code base) that DE403 and DE430 use the Chebyshev polynomials. Therefore, I've edited the answer which you reference to add that a citation is needed concerning the Hermite interpolation. I'm currently working on a SPK file reader, so I'll hopefully be able to provide more information in the coming weeks. – ChrisR Jun 13 '18 at 4:48
• Just for fun - "I've almost learned to spell Chebyshev" - actually the correct spelling should be "Chebyshov", but it migrated to "Chebyshev" even in russian language :) en.wikipedia.org/wiki/Pafnuty_Chebyshev – Heopps Jun 13 '18 at 8:46
• I've not messed as much with Chebyshev interpolation, but Hermite interpolation has a benefit of enforcing global, rather than piecewise, smoothness of the resulting interpolant. This would be useful for an ephemeris set, as it would ensure that positions and velocities remain continuous everywhere. I believe Chebyshev interpolation only enforces continuity everywhere, but smoothness only almost everywhere, i.e., positions remain continuous, but velocities would have a finite number of pointwise discontinuities. – Tristan Jun 13 '18 at 15:04
• To answer your last comment, Chebyshev DE's contain interpolations for both position and velocity. I dissect the format here: github.com/barrycarter/bcapps/blob/master/ASTRO/README.bsp – barrycarter Jun 13 '18 at 16:07

## 1 Answer

Not seeing that. I downloaded de438.bsp, and it in fact uses only Чебышёв position polynomials. (Or Chebyshev, Chebychev, Chebysheff, Chebychov, Chebyshov, Chebycheff, Chebyschev, Chebyschef, Chebyscheff, Tchebyshev, Tchebychev, Tchebysheff, Tchebychov, Tchebyshov, Tchebycheff, Tchebyschev, Tchebyschef, Tchebyscheff, Tschebyshev, Tschebychev, Tschebysheff, Tschebychov, Tschebyshov, Tschebycheff, Tschebyschev, Tschebyschef, or Tschebyscheff polynomials.)

• mysteries solved – uhoh Jun 14 '18 at 2:47
• And just think of Ephemerides as a Greek hero and the pronunciation will come. – C. Towne Springer Jun 14 '18 at 4:49
• Did you write a Python programm to generate all those numerous different transcriptions from cyrillic to latin letters? – Uwe Jun 14 '18 at 10:12
• @Uwe: One line in Mathematica, using the outer product function (Outer[]). – Mark Adler Jun 14 '18 at 16:27