std::assoc_...oc_legendrel(3)
π std::assoc_legendre, std::assoc_legendref, std::assoc_legendrel β¨
okay bestie so this is from the C++ Standard Library β the std::assoc_...oc_legendrel(3) corner of the manual, and it's literally the page for std::assoc_legendre, std::assoc_legendref, and std::assoc_legendrel. Three icons, one page. Let's get into it π«Ά
πΈ SYNOPSIS πΈ
double assoc_legendre( unsigned int n, unsigned int m, double x );
double assoc_legendre( unsigned int n, unsigned int m, float x );
double assoc_legendre( unsigned int n, unsigned int m, long double x ); (1)
float assoc_legendref( unsigned int n, unsigned int m, float x );
long double assoc_legendrel( unsigned int n, unsigned int m, long double x );
double assoc_legendre( unsigned int n, unsigned int m, IntegralType x ); (2)
So like, here's the breakdown bestie:
(1)β computes the associated Legendre polynomials of the degreen, orderm, and argumentx. that's the whole main character moment.(2)β a whole set of overloads, or a function template, that accepts an argument of any integral type. it's equivalent to(1)after casting the argument todouble. cute little disguise, same function underneath π
β οΈ okay so important caveat time β fr fr: like all special functions,assoc_legendreis only guaranteed to be available in<cmath>if__STDCPP_MATH_SPEC_FUNCS__is defined by the implementation to a value at least201003L, AND if the user defines__STDCPP_WANT_MATH_SPEC_FUNCS__before including any standard library headers. miss one and it's giving "not found" energy π
π PARAMETERS π
nβ the degree of the polynomial, a value of unsigned integer type β¨mβ the order of the polynomial, a value of unsigned integer type β¨xβ the argument, a value of a floating-point or integral type β¨
π¦ RETURN VALUE π¦
If no errors occur, you get the value of the associated Legendre polynomial P<sup>m</sup><sub>n</sub> of x, that is
(1 - xΒ²)^(m/2) Β· dα΅/dxα΅ P_n(x)
returned β where P<sub>n</sub>(x) is the unassociated Legendre polynomial, std::legendre(n, x). yes bestie, it's a whole derivative situation, it's giving calculus main character energy ππ
π ERROR HANDLING π
Errors may be reported as specified in math_errhandling. ngl, here's the vibe check:
- If the argument is
NaN,NaNis returned and domain error is not reported. (silent king behavior β¨) - If
|x| > 1, a domain error may occur. π - If
nis greater or equal to128, the behavior is implementation-defined. so like, don't come for me if it does something weird, okay? π
π NOTES π
- Implementations that do not support TR 29124 but support TR 19768, provide this function in the header
tr1/cmathand namespacestd::tr1. retro icon behavior π - An implementation of this function is also available in
boost.math. slay, alternate route π«Ά - The first few associated Legendre polynomials are literally:
assoc_legendre(0, 0, x) = 1.assoc_legendre(1, 0, x) = x.assoc_legendre(1, 1, x) = -(1 - xΒ²)^(1/2).assoc_legendre(2, 0, x) =1/2(3xΒ² - 1).assoc_legendre(2, 1, x) = -3x(1 - xΒ²)^(1/2).assoc_legendre(2, 2, x) = 3(1 - xΒ²).
β EXAMPLE β
(works as shown with gcc 6.0) β noted, bestie π
// Run this code
#define __STDCPP_WANT_MATH_SPEC_FUNCS__ 1
#include <cmath>
#include <iostream>
double P20(double x)
{
return 0.5 * (3 * x * x - 1);
}
double P21(double x)
{
return -3.0 * x * std::sqrt(1 - x * x);
}
double P22(double x)
{
return 3 * (1 - x * x);
}
int main()
{
// spot-checks
std::cout << std::assoc_legendre(2, 0, 0.5) << '=' << P20(0.5) << '\n'
<< std::assoc_legendre(2, 1, 0.5) << '=' << P21(0.5) << '\n'
<< std::assoc_legendre(2, 2, 0.5) << '=' << P22(0.5) << '\n';
}
Output:
-0.125=-0.125
-1.29904=-1.29904
2.25=2.25
look at that, matching values across the board β we love a consistent queen ππ₯
π§ SEE ALSO π§
legendreβ Legendre polynomialslegendref(function)legendrel
πΈ EXTERNAL LINKS πΈ
Weisstein, Eric W. "Associated Legendre Polynomial." From MathWorld--A Wolfram Web Resource.
π okay that's the whole page bestie, go forth and compute your associated Legendre polynomials responsibly. remember the #define before the includes or it's giving nothing. periodt. π
β with love, from cppreference.com, version 2024.06.10 ππ¦β¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms