Prev Next

@(@\newcommand{\W}[1]{ \; #1 \; } \newcommand{\R}[1]{ {\rm #1} } \newcommand{\B}[1]{ {\bf #1} } \newcommand{\D}[2]{ \frac{\partial #1}{\partial #2} } \newcommand{\DD}[3]{ \frac{\partial^2 #1}{\partial #2 \partial #3} } \newcommand{\Dpow}[2]{ \frac{\partial^{#1}}{\partial {#2}^{#1}} } \newcommand{\dpow}[2]{ \frac{ {\rm d}^{#1}}{{\rm d}\, {#2}^{#1}} }@)@This is cppad-20221105 documentation. Here is a link to its current documentation .
Determinant Using Expansion by Lu Factorization

Syntax
# include <cppad/speed/det_by_lu.hpp>
det_by_lu<Scalardet(n)
d = det(a)

Inclusion
The template class det_by_lu is defined in the CppAD namespace by including the file cppad/speed/det_by_lu.hpp (relative to the CppAD distribution directory).

Constructor
The syntax
    det_by_lu<
Scalardet(n)
constructs the object det which can be used for evaluating the determinant of n by n matrices using LU factorization.

Scalar
The type Scalar can be any NumericType

n
The argument n has prototype
    size_t 
n

det
The syntax
    
d = det(a)
returns the determinant of the matrix @(@ A @)@ using LU factorization.

a
The argument a has prototype
    const 
Vector &a
It must be a Vector with length @(@ n * n @)@ and with It must be a Vector with length @(@ n * n @)@ and with elements of type Scalar . The elements of the @(@ n \times n @)@ matrix @(@ A @)@ are defined, for @(@ i = 0 , \ldots , n-1 @)@ and @(@ j = 0 , \ldots , n-1 @)@, by @[@ A_{i,j} = a[ i * m + j] @]@

d
The return value d has prototype
    
Scalar d

Vector
If y is a Vector object, it must support the syntax
    
y[i]
where i has type size_t with value less than @(@ n * n @)@. This must return a Scalar value corresponding to the i-th element of the vector y . This is the only requirement of the type Vector .

Example
The file det_by_lu.cpp contains an example and test of det_by_lu.hpp.

Source Code
The file det_by_lu.hpp contains the source for this template function.
Input File: include/cppad/speed/det_by_lu.hpp