<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>lpp: /home/jt/devC++/devel/lpp/lapack_cpp_itf/hbgvd_itf.hh File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div>
<div class="nav">
<a class="el" href="dir_000000.html">lpp</a> » <a class="el" href="dir_000001.html">lapack_cpp_itf</a></div>
<h1>hbgvd_itf.hh File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacelpp.html">lpp</a></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="hbgvd__itf_8hh.html#a0">LPP_HBGVD</a>(NAME, T, TBASE)</td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacelpp.html#a588">lpp::hbgvd</a> (const char *jobz, const char *uplo, const long int *n, const long int *ka, const long int *kb, std::complex< float > *ab, const long int *ldab, std::complex< float > *bb, const long int *ldbb, float *ws, const std::complex< float > *z, const long int *ldz, long int *info, workspace< std::complex< float > > &w)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacelpp.html#a589">lpp::hbgvd</a> (const char *jobz, const char *uplo, const long int *n, const long int *ka, const long int *kb, std::complex< float > *ab, const long int *ldab, std::complex< float > *bb, const long int *ldbb, float *ws, const std::complex< float > *z, const long int *ldz, long int *info)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacelpp.html#a590">lpp::hbgvd</a> (const char *jobz, const char *uplo, const long int *n, const long int *ka, const long int *kb, std::complex< double > *ab, const long int *ldab, std::complex< double > *bb, const long int *ldbb, double *ws, const std::complex< double > *z, const long int *ldz, long int *info, workspace< std::complex< double > > &w)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacelpp.html#a591">lpp::hbgvd</a> (const char *jobz, const char *uplo, const long int *n, const long int *ka, const long int *kb, std::complex< double > *ab, const long int *ldab, std::complex< double > *bb, const long int *ldbb, double *ws, const std::complex< double > *z, const long int *ldz, long int *info)</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
(excerpt adapted from xhbgvd.f file commentaries)<p>
DATA TYPE can mean float, double, std::complex<float>, std::complex<double><p>
BASE TYPE can mean respectively float, double, float, double<p>
In some cases only two of these types types are available the two real or the two std::complex ones. CAPITALIZED PARAMETERS are FORTRAN parameters who are not used directly in the C++ calls, but through the workspace parameter, their use is transparent for the caller (see <a class="el" href="lapackworkspace_8hh.html">lapackworkspace.hh</a>)<p>
purpose =======<p>
xhbgvd computes all the eigenvalues, and optionally, the eigenvectors of a DATA TYPE generalized hermitian-definite banded eigenproblem, of the form a*x=(lambda)*b*x. here a and b are assumed to be hermitian and banded, and b is also positive definite. if eigenvectors are desired, it uses a divide and conquer algorithm.<p>
the divide and conquer algorithm makes very mild assumptions about floating point arithmetic. it will WORK on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the cray x-mp, cray y-mp, cray c-90, or cray-2. it could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.<p>
arguments =========<p>
jobz (input) char = 'n': compute eigenvalues only; = 'v': compute eigenvalues and eigenvectors.<p>
uplo (input) char = 'u': upper triangles of a and b are stored; = 'l': lower triangles of a and b are stored.<p>
n (input) long int the order of the matrices a and b. n >= 0.<p>
ka (input) long int the number of superdiagonals of the matrix a if uplo = 'u', or the number of subdiagonals if uplo = 'l'. ka >= 0.<p>
kb (input) long int the number of superdiagonals of the matrix b if uplo = 'u', or the number of subdiagonals if uplo = 'l'. kb >= 0.<p>
ab (input/output) DATA TYPE array, dimension (ldab, n) on entry, the upper or lower triangle of the hermitian band matrix a, stored in the first ka+1 rows of the array. the j-th column of a is stored in the j-th column of the array ab as follows: if uplo = 'u', ab(ka+1+i-j,j) = a(i,j) for max(1,j-ka)<=i<=j; if uplo = 'l', ab(1+i-j,j) = a(i,j) for j<=i<=min(n,j+ka).<p>
on exit, the contents of ab are destroyed.<p>
ldab (input) long int the leading dimension of the array ab. ldab >= ka+1.<p>
bb (input/output) DATA TYPE array, dimension (ldbb, n) on entry, the upper or lower triangle of the hermitian band matrix b, stored in the first kb+1 rows of the array. the j-th column of b is stored in the j-th column of the array bb as follows: if uplo = 'u', bb(kb+1+i-j,j) = b(i,j) for max(1,j-kb)<=i<=j; if uplo = 'l', bb(1+i-j,j) = b(i,j) for j<=i<=min(n,j+kb).<p>
on exit, the factor s from the split cholesky factorization b = s**h*s, as returned by cpbstf.<p>
ldbb (input) long int the leading dimension of the array bb. ldbb >= kb+1.<p>
w (output) BASE DATA TYPE array, dimension (n) if info = 0, the eigenvalues in ascending order.<p>
z (output) DATA TYPE array, dimension (ldz, n) if jobz = 'v', then if info = 0, z contains the matrix z of eigenvectors, with the i-th column of z holding the eigenvector associated with w(i). the eigenvectors are normalized so that z**h*b*z = i. if jobz = 'n', then z is not referenced.<p>
ldz (input) long int the leading dimension of the array z. ldz >= 1, and if jobz = 'v', ldz >= n.<p>
info (output) long int = 0: successful exit < 0: if info = -i, the i-th argument had an illegal value > 0: if info = i, and i is: <= n: the algorithm failed to converge: i off-diagonal elements of an intermediate tridiagonal form did not converge to zero; > n: if info = n + i, for 1 <= i <= n, then cpbstf returned info = i: b is not positive definite. the factorization of b could not be completed and no eigenvalues or eigenvectors were computed.<p>
further details ===============<p>
based on contributions by mark fahey, department of mathematics, univ. of kentucky, usa<hr><h2>Define Documentation</h2>
<a class="anchor" name="a0"></a><!-- doxytag: member="hbgvd_itf.hh::LPP_HBGVD" ref="a0" args="(NAME, T, TBASE)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">#define LPP_HBGVD </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">NAME, <tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>T, <tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>TBASE </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top"> ) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
fn inline void hbgvd( const char* jobz, const char* uplo, const long int* n, const long int* ka, const long int* kb, std::complex<double>* ab, const long int* ldab, std::complex<double>* bb, const long int* ldbb, double* ws, const std::complex<double>* z, const long int* ldz, long int* info) </td>
</tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Mon Jan 30 10:41:19 2006 for lpp by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>