Skip to content

Latest commit

 

History

History
235 lines (146 loc) · 5.6 KB

File metadata and controls

235 lines (146 loc) · 5.6 KB

dlaev2

Compute the eigendecomposition of a 2x2 symmetric matrix.

Usage

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

dlaev2( A, B, C, out, ev )

Computes the eigendecomposition of a 2x2 symmetric matrix.

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

var ev = new Float64Array( 2 );
var out = new Float64Array( 2 );
out = dlaev2( 2.0, 3.0, 4.0, out, ev );
// out => <Float64Array>[ ~6.162, ~-0.162 ]
// ev => <Float64Array>[ ~0.585, ~0.811 ]

The function has the following parameters:

  • A: the (0,0) element of a 2x2 symmetric matrix.
  • B: the (0,1) and the conjugate of (1,0) element of a 2x2 symmetric matrix.
  • C: the (1,1) element of a 2x2 symmetric matrix.
  • out: output Float64Array containing the eigenvalues of larger and smaller absolute values respectively.
  • ev: output Float64Array containing CS1 and SN1 which is unit right eigenvector for RT1 giving the decomposition.

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

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

// Initial arrays...
var out0 = new Float64Array( [ 1.0, 2.0, 3.0 ] );
var ev0 = new Float64Array( [ 1.0, 2.0, 3.0 ] );

// Create offset views...
var out1 = new Float64Array( out0.buffer, out0.BYTES_PER_ELEMENT*1 ); // start at 2nd element
var ev1 = new Float64Array( ev0.buffer, ev0.BYTES_PER_ELEMENT*1 ); // start at 2nd element

dlaev2( 2.0, 3.0, 4.0, out1, ev1 );
// out0 => <Float64Array>[ 1.0, ~6.162, ~-0.162 ]
// ev0 => <Float64Array>[ 1.0, ~0.585, ~0.811 ]

dlaev2.ndarray( A, B, C, out, sout, oout, ev, sev, oev )

Computes the eigendecomposition of a 2x2 symmetric matrix using alternative indexing semantics.

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

var ev = new Float64Array( 2 );
var out = new Float64Array( 2 );
out = dlaev2.ndarray( 2.0, 3.0, 4.0, out, 1, 0, ev, 1, 0 );
// out => <Float64Array>[ ~6.162, ~-0.162 ]
// ev => <Float64Array>[ ~0.585, ~0.811 ]

The function has the following additional parameters:

  • sout: stride length for out.
  • oout: starting index of out.
  • sev: stride length for ev.
  • oev: starting index of ev.

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 Float64Array = require( '@stdlib/array/float64' );

var ev = new Float64Array( [ 999.9, 0.0, 999.9, 0.0 ] );
var out = new Float64Array( [ 0.0, 999.9, 0.0 ] );
out = dlaev2.ndarray( 2.0, 3.0, 4.0, out, -2, 2, ev, 2, 1 );
// out => <Float64Array>[ ~-0.162, 999.9, ~6.162 ]
// ev => <Float64Array>[ 999.9, ~0.585, 999.9, ~0.811 ]

Notes

Examples

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

var ev = new Float64Array( 2 );
var out = new Float64Array( 2 );
out = dlaev2( 2.0, 3.0, 4.0, out, ev );
console.log( 'out: ', out );
console.log( 'ev: ', ev );

C APIs

Usage

TODO

TODO

TODO.

TODO

TODO

TODO

Examples

TODO