std::assoc_...oc_laguerrel(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– NAME πŸ’–

Okay so bestie, this page is the C++ Standard Library manual, section 3, and the page name is std::assoc_...oc_laguerrel(3). The actual trio is std::assoc_laguerre,std::assoc_laguerref,std::assoc_laguerrel β€” and the description is literally std::assoc_laguerre,std::assoc_laguerref,std::assoc_laguerrel. No cap, that's the whole NAME section. πŸ’…


✨ Synopsis ✨

Here's the signature lineup, exactly as the page gives it:

double      assoc_laguerre ( unsigned int n, unsigned int m, double x );

double      assoc_laguerre ( unsigned int n, unsigned int m, float x );
double      assoc_laguerre ( unsigned int n, unsigned int m, long double x );  (1)
float       assoc_laguerref( unsigned int n, unsigned int m, float x );

long double assoc_laguerrel( unsigned int n, unsigned int m, long double x );
double      assoc_laguerre ( unsigned int n, unsigned int m, IntegralType x ); (2)
  1. Computes the associated Laguerre polynomials of the degree n, order m, and argument x.
  2. A set of overloads or a function template accepting an argument of any integral type. Equivalent to (1) after casting the argument to double.
As all special functions, assoc_laguerre is only guaranteed to be available in <cmath> if __STDCPP_MATH_SPEC_FUNCS__ is defined by the implementation to a value at least 201003L and if the user defines __STDCPP_WANT_MATH_SPEC_FUNCS__ before including any standard library headers. Like, define it before, bestie. The preprocessor does not play. 🫢

🌸 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, the value of the associated Laguerre polynomial of x is returned, and the page spells it out like this:

(-1)m

dm
dxm

L
n + m(x)

...where L n + m(x) is the unassociated Laguerre polynomial, std::laguerre(n + m, x). That's the whole return-value vibe. 🌈


🚨 Error handling 🚨

Errors may be reported as specified in math_errhandling. Yes, that's the whole sentence. Keep it in your notes.

  • If the argument is NaN, NaN is returned and domain error is not reported.
  • If x is negative, a domain error may occur.
  • If n or m is greater or equal to 128, the behavior is implementation-defined.
The 128 thing is highkey important β€” implementation-defined means "your platform gets to decide," so do not treat it as a promise. πŸ”₯

πŸ¦‹ Notes πŸ¦‹

Implementations that do not support TR 29124 but support TR 19768 provide this function in the header tr1/cmath and namespace std::tr1.

An implementation of this function is also available in boost.math.

The associated Laguerre polynomials are the polynomial solutions of the equation:

xy,,
+ (m + 1 - x)y,
+ ny = 0.

The first few are:

  • assoc_laguerre(0, m, x) = 1.
  • assoc_laguerre(1, m, x) = -x + m + 1.
  • assoc_laguerre(2, m, x) =
1
2
[x2
- 2(m + 2)x + (m + 1)(m + 2)].
  • assoc_laguerre(3, m, x) =
1
6
[-x3
- 3(m + 3)x2
- 3(m + 2)(m + 3)x + (m + 1)(m + 2)(m + 3)].

πŸ’» Example πŸ’»

The page literally says // Run this code before the example, so here's the exact code, bestie:

// Run this code

#define __STDCPP_WANT_MATH_SPEC_FUNCS__ 1
#include <cmath>
#include <iostream>

double L1(unsigned m, double x)
{
    return -x + m + 1;
}

double L2(unsigned m, double x)
{
    return 0.5 * (x * x - 2 * (m + 2) * x + (m + 1) * (m + 2));
}

int main()
{
    // spot-checks
    std::cout << std::assoc_laguerre(1, 10, 0.5) << '=' << L1(10, 0.5) << '\n'
                  << std::assoc_laguerre(2, 10, 0.5) << '=' << L2(10, 0.5) << '\n';
}

πŸ“€ Output πŸ“€

10.5=10.5
60.125=60.125

Ate. No crumbs. ✨


πŸ‘€ See also πŸ‘€

  • laguerre β€” Laguerre polynomials
  • laguerref β€” (function)
  • laguerrel

Weisstein, Eric W. "Associated Laguerre Polynomial." From MathWorld β€” A Wolfram Web Resource.


Okay bestie, that's the whole page. Source/version/date sign-off: it came from http://cppreference.com, dated 2024.06.10, page std::assoc_...oc_laguerrel(3). Periodt. πŸ’–πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from