LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | List of all members
lsst::geom::polynomials::BinomialMatrix Class Reference

A class that computes binomial coefficients up to a certain power. More...

#include <BinomialMatrix.h>

Public Member Functions

 BinomialMatrix (int nMax)
 Construct an object that can compute binomial coefficients with \(n\) up to and including the given value. More...
 
double operator() (int n, int k) const
 Return the binomial coefficient. More...
 

Detailed Description

A class that computes binomial coefficients up to a certain power.

The binomial coefficient is defined as:

\[ \left(\begin{array}{ c } n \\ k \end{array}\right) = \frac{n!}{k!(n-k)!} \]

with both \(n\) and \(k\) nonnegative integers and \(k \le n\)

This class uses recurrence relations to avoid computing factorials directly, making it both more efficient and numerically stable.

Definition at line 45 of file BinomialMatrix.h.

Constructor & Destructor Documentation

◆ BinomialMatrix()

lsst::geom::polynomials::BinomialMatrix::BinomialMatrix ( int  nMax)
explicit

Construct an object that can compute binomial coefficients with \(n\) up to and including the given value.

Definition at line 27 of file BinomialMatrix.cc.

27  : _matrix(Eigen::MatrixXd::Zero(nMax + 1, nMax + 1)) {
28  _matrix.col(0).setConstant(1);
29  _matrix.diagonal().setConstant(1);
30  for (int i = 2; i <= nMax; ++i) {
31  _matrix(i, 0) = 1.0;
32  _matrix(i, i) = 1.0;
33  for (int j = 1; j < i; ++j) {
34  _matrix(i, j) = _matrix(i - 1, j - 1) *
35  (static_cast<double>(i) / static_cast<double>(j));
36  }
37  }
38 }

Member Function Documentation

◆ operator()()

double lsst::geom::polynomials::BinomialMatrix::operator() ( int  n,
int  k 
) const
inline

Return the binomial coefficient.

No error checking is performed; the behavior of this method is undefined if the given values do not satisfy

n <= nMax && k <= n && n >=0 && k >= 0

Definition at line 63 of file BinomialMatrix.h.

63  {
64  return _matrix(n, k);
65  }

The documentation for this class was generated from the following files: