Skip to content

Releases: jmert/AssociatedLegendrePolynomials.jl

v1.0.1

19 Nov 16:32
Compare
Choose a tag to compare

AssociatedLegendrePolynomials v1.0.1

Diff since v1.0.0

Closed issues:

  • Register the Package? (#28)

Merged pull requests:

  • Calculate the initial condition using only real numbers (#33) (@jmert)

v1.0.0

19 Dec 04:48
Compare
Choose a tag to compare

AssociatedLegendrePolynomials v1.0.0

Diff since v0.2.3

Merged pull requests:

  • Rename this package from Legendre to AssociatedLegendrePolynomials (#30) (@jmert)

v0.2.3

16 Dec 00:15
Compare
Choose a tag to compare

This release will be the last release before jumping to v1.0 which will simultaneously rename the package to AssociatedLegendrePolynomials.jl. The new package will be registered with Julia's General registry.

New features in this release:

  • Added a new LegendreFourPiNorm normalization which is (apparently) common in geodesy. It differs from LegendreSphereNorm by being a factor of √4π, where the 4π-norm version L₂ integrates to 4π over the sphere whereas the spherical-harmonic norm L₂ integrates to unity over the sphere.
  • A new abstract type — AbstractLegendreSphereNorm — is added which is the direct supertype of LegendreFourPiNorm, LegendreOrthoNorm, and LegendreSphereNorm. This simplified the dispatch chain for calculating coefficients, and making it clear that they are all highly related normalizations.

What's Changed

  • Eliminate uses of @fastmath(sqrt) by @jmert in #29
  • Update CI scripts by @jmert in #31
  • Add new 4π sphere (geodesy) normalization by @jmert in #24

Full Changelog: v0.2.2...v0.2.3

v0.2.2

15 May 18:39
Compare
Choose a tag to compare

This release adds the LegendreOrthoNorm normalization, defined as the normalization where the integral of a Legendre function squared is unity. The orthonormal normalization differs from LegendreSphereNorm by only a factor of 1/sqrt(2π), but it is useful for non-spherical calculations (such as the basis of orthogonal polynomials for fitting with weight w(x)=1 on the interval [-1,1]).

v0.2.1

11 Jul 19:00
Compare
Choose a tag to compare

This minor release adds an experimental way to pre-allocate and share the internal work buffers across multiple calls to legendre(). The interface should not be considered stable, but should be useful for experimentation. (If the interface is stabilized in the future, documentation will then follow.)

v0.2.0

17 Jun 18:02
Compare
Choose a tag to compare

This is a major release of the package.

Breaking changes:

  • The functions Plm[!] and λlm[!] have been replaced with constant aliases to the underlying normalization type, which are themselves callable. The calling syntax is the same, but the type of the functions have changed.
  • The functions Pl[!] have been removed to avoid ambiguity with potential future uses of Plm[!]. A call Pl(l, x) should be replaced with Plm(l, 0, x).
  • The normalization coefficient and initial condition functions have all been renamed — Plm_αcoeff_α and similar for β, μ, ν, and Plm_00initcond.
  • The normalization coefficient functions have been slightly redefined by being consistently defined in terms of the effective degree ℓ rather than a mix of degree and order m. Consequently, the mathematical definition of coeff_ν has been updated to match, with the return value changing for the same input arguments.
  • The "broadcasting" interface has been overhauled and is generally less important that previously. Both of the in-place (legendre!) and allocating return (legendre) functions now support vector inputs explicitly. A small shim that specializes broadcasting exists, but only to avoid worst-case performance and should not be considered a stable feature yet.

Enhancements

  • The package now includes precompilation directives for Float32 and Float64 calculations.
  • A bounds checking hook checkbounds_hook has been formalized for use by normalization types.
  • Input and output arrays with arbitrary axes are now supported. The leading dimensions' axes of the output must match the axes of the input.
  • Complex arguments are supported, though the numerical accuracy has not been extensively tested, especially in the generalized domain for abs(x) > 1.
  • Minor improvements to the numerical accuracy of the outputs has been made.
  • The documentation has been broken up into multiple pages, with the goal to make it more readable.
  • Various performance enhancements.