60-digit transfer matrices

← Verification · Spheres · Plane wave
Reference
60-digit transfer matrices
Kind
precision: the same mathematics in mpmath at 60–80 digits, written separately in src/pystratify/references.py and benchmarks/mp_reference.py: proves the numerics, not the formulation
Calculated
Mie coefficients of every shell (six multilayers incl. mie_codes.py's 10-layer graded sphere)
Agreement
1e-10 (1e-7 nearly index-matched)
A 5 nm metal nanoshell on a 15 nm silica core, 600 nm: Mie coefficients against 60-digit transfer matrices T_ℓ = B_host / A_host of the regular solution: the scattered amplitude of each order. The coefficients fall over fifty decades across the orders shown; double precision follows the 60-digit evaluation of the same recursion all the way down.
51015202530354010⁻¹⁸⁵10⁻¹⁶²10⁻¹³⁹10⁻¹¹⁶10⁻⁹³10⁻⁷⁰10⁻⁴⁷10⁻²⁴10⁻¹order ℓ|T_ℓ|
|T_ℓ|, electric (TM), PyStratify |T_ℓ|, magnetic (TE), PyStratify electric, 60 digits magnetic, 60 digits
Hover to read values.
  • largest relative difference over 40 orders: 1.35×10⁻¹⁵
  • PyStratify the lines, the reference the circles

Run it yourself: sphere_checks.py · test_solver.py · figures.py · SPHERE_CHECKS.md on GitHub, PyStratify 97e52a9