spttrf
Compute the
L * D * L^T
factorization of a real symmetric positive definite tridiagonal matrixA
.
Usage
var spttrf = require( '@stdlib/lapack/base/spttrf' );
spttrf( N, D, E )
Computes the L * D * L^T
factorization of a real symmetric positive definite tridiagonal matrix A
.
var Float32Array = require( '@stdlib/array/float32' );
var D = new Float32Array( [ 4.0, 5.0, 6.0 ] );
var E = new Float32Array( [ 1.0, 2.0 ] );
spttrf( 3, D, E );
// D => <Float32Array>[ 4, 4.75, ~5.15789 ]
// E => <Float32Array>[ 0.25, ~0.4210 ]
The function has the following parameters:
- N: order of matrix
A
. - D: the
N
diagonal elements ofA
as aFloat32Array
. - E: the N-1 subdiagonal elements of
A
as aFloat32Array
.
Note that indexing is relative to the first index. To introduce an offset, use typed array
views.
var Float32Array = require( '@stdlib/array/float32' );
// Initial arrays...
var D0 = new Float32Array( [ 0.0, 4.0, 5.0, 6.0 ] );
var E0 = new Float32Array( [ 0.0, 1.0, 2.0 ] );
// Create offset views...
var D1 = new Float32Array( D0.buffer, D0.BYTES_PER_ELEMENT*1 ); // start at 2nd element
var E1 = new Float32Array( E0.buffer, E0.BYTES_PER_ELEMENT*1 ); // start at 2nd element
spttrf( 3, D1, E1 );
// D0 => <Float32Array>[ 0.0, 4.0, 4.75, ~5.15789 ]
// E0 => <Float32Array>[ 0.0, 0.25, ~0.4210 ]
spttrf.ndarray( N, D, strideD, offsetD, E, strideE, offsetE )
Computes the L * D * L^T
factorization of a real symmetric positive definite tridiagonal matrix A
using alternative indexing semantics.
var Float32Array = require( '@stdlib/array/float32' );
var D = new Float32Array( [ 4.0, 5.0, 6.0 ] );
var E = new Float32Array( [ 1.0, 2.0 ] );
spttrf.ndarray( 3, D, 1, 0, E, 1, 0 );
// D => <Float32Array>[ 4, 4.75, ~5.15789 ]
// E => <Float32Array>[ 0.25, ~0.4210 ]
The function has the following additional parameters:
- strideD: stride length for
D
. - offsetD: starting index for
D
. - strideE: stride length for
E
. - offsetE: starting index for
E
.
While typed array
views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example,
var Float32Array = require( '@stdlib/array/float32' );
var D = new Float32Array( [ 0.0, 4.0, 5.0, 6.0 ] );
var E = new Float32Array( [ 0.0, 1.0, 2.0 ] );
spttrf.ndarray( 3, D, 1, 1, E, 1, 1 );
// D => <Float32Array>[ 0.0, 4.0, 4.75, ~5.15789 ]
// E => <Float32Array>[ 0.0, 0.25, ~0.4210 ]
Notes
Both functions mutate the input arrays
D
andE
.Both functions return a status code indicating success or failure. A status code indicates the following conditions:
0
: factorization was successful.<0
: the k-th argument had an illegal value, where-k
equals the status code value.0 < k < N
: the leading principal minor of orderk
is not positive and factorization could not be completed, wherek
equals the status code value.N
: the leading principal minor of orderN
is not positive, and factorization was completed.
Examples
var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
var spttrf = require( '@stdlib/lapack/base/spttrf' );
var opts = {
'dtype': 'float32'
};
var D = discreteUniform( 5, 1, 5, opts );
console.log( D );
var E = discreteUniform( D.length-1, 1, 5, opts );
console.log( E );
// Perform the `L * D * L^T` factorization:
var info = spttrf( D.length, D, E );
console.log( D );
console.log( E );
console.log( info );
C APIs
Usage
TODO
TODO
TODO.
TODO
TODO
TODO
Examples
TODO