Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

iladlr

Find the index of the last non-zero row in a matrix A.

Usage

var iladlr = require( '@stdlib/lapack/base/iladlr' );

iladlr( order, M, N, A, LDA )

Returns the index of the last non-zero row in a matrix A.

var Float64Array = require( '@stdlib/array/float64' );

var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 0.0, 0.0 ] );

/*
    A = [
        [ 1.0, 2.0 ],
        [ 3.0, 4.0 ],
        [ 0.0, 0.0 ]
    ]
*/

var out = iladlr( 'row-major', 3, 2, A, 2 );
// returns 1

The function has the following parameters:

  • order: storage layout.
  • M: number of rows in A.
  • N: number of columns in A.
  • A: input Float64Array.
  • LDA: stride of the first dimension of A (a.k.a., leading dimension of the matrix A).

Note that indexing is relative to the first index. To introduce an offset, use typed array views.

var Float64Array = require( '@stdlib/array/float64' );

// Initial array:
var A0 = new Float64Array( [ 9999.0, 1.0, 2.0, 3.0, 4.0, 0.0, 0.0 ] );

// Create an offset view:
var A1 = new Float64Array( A0.buffer, A0.BYTES_PER_ELEMENT*1 ); // start at 2nd element

var out = iladlr( 'row-major', 3, 2, A1, 2 );
// returns 1

iladlr.ndarray( M, N, A, strideA1, strideA2, offsetA )

Returns the index of the last non-zero row in a matrix A using alternative indexing semantics.

var Float64Array = require( '@stdlib/array/float64' );

var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 0.0, 0.0 ] );

/*
    A = [
        [ 1.0, 2.0 ],
        [ 3.0, 4.0 ],
        [ 0.0, 0.0 ]
    ]
*/

var out = iladlr.ndarray( 3, 2, A, 2, 1, 0 );
// returns 1

The function has the following parameters:

  • M: number of rows in A.
  • N: number of columns in A.
  • A: input Float64Array.
  • strideA1: stride of the first dimension of A.
  • strideA2: stride of the second dimension of A.
  • offsetA: starting index for A.

While typed array views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example,

var Float64Array = require( '@stdlib/array/float64' );

var A = new Float64Array( [ 9999.0, 1.0, 2.0, 3.0, 4.0, 0.0, 0.0 ] );

/*
    A = [
        [ 1.0, 2.0 ],
        [ 3.0, 4.0 ],
        [ 0.0, 0.0 ]
    ]
*/

var out = iladlr.ndarray( 3, 2, A, 2, 1, 1 );
// returns 1

Notes

  • This routine is commonly used throughout LAPACK to shrink work domains (e.g., before bulge-chasing, deflation, or when trimming Householder panels), thus ensuring that higher-level routines operate only on numerically relevant sub-matrices.
  • iladlr() corresponds to the LAPACK routine iladlr.

Examples

var ndarray2array = require( '@stdlib/ndarray/base/to-array' );
var Float64Array = require( '@stdlib/array/float64' );
var shape2strides = require( '@stdlib/ndarray/base/shape2strides' );
var iladlr = require( '@stdlib/lapack/base/iladlr' );

var shape = [ 3, 3 ];
var order = 'row-major';
var strides = shape2strides( shape, order );

var A = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 0.0, 0.0, 0.0 ] );
console.log( ndarray2array( A, shape, strides, 0, order ) );

var out = iladlr( order, shape[ 0 ], shape[ 1 ], A, strides[ 0 ] );
console.log( out );

C APIs

Usage

TODO

TODO

TODO.

TODO

TODO

TODO

Examples

TODO