jmert / AssociatedLegendrePolynomials.jl

A library for calculating the Associated Legendre polynomials
https://jmert.github.io/AssociatedLegendrePolynomials.jl/
MIT License
20 stars 2 forks source link

Add new 4π sphere (geodesy) normalization #24

Closed jmert closed 2 years ago

jmert commented 4 years ago

Defined such that the integrating square of this normalization times the complex exponential in azimuth equals the surface area of the unit sphere. This complements the spherical normalization LegendreSphereNorm which instead integrates over the sphere to unity.

Also adds an intermediate AbstractLegendreSphereNorm <: AbstractLegendreNorm in the abstract type hierarchy to consolidate the coefficients for all three of LegendreFourPiNorm, LegendreOrthoNorm, and LegendreSphereNorm.

The original motivation was to see if replacing the initial condition of 1 / sqrt(4π) which must necessarily be rounded (because π is trancendental) with an exactly-representable value (1.0 for the 4π normalization) could lead to better numerical precision. Namely, I thought that something like summing over many terms could show the accumulated bias, but I haven't actually found that to be true in practice. Nonetheless, having another option for a built-in normalizations is still useful.

codecov[bot] commented 4 years ago

Codecov Report

Merging #24 (8e637bc) into master (d3c9831) will increase coverage by 0.02%. The diff coverage is 100.00%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #24      +/-   ##
==========================================
+ Coverage   96.54%   96.57%   +0.02%     
==========================================
  Files           9        9              
  Lines         347      350       +3     
==========================================
+ Hits          335      338       +3     
  Misses         12       12              
Impacted Files Coverage Δ
src/Legendre.jl 100.00% <ø> (ø)
src/calculation.jl 94.40% <ø> (ø)
src/norm_sphere.jl 97.36% <100.00%> (+0.22%) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 10de346...8e637bc. Read the comment docs.