[go: up one dir, main page]

Menu

[r3]: / html / hbgvd__itf_8hh.html  Maximize  Restore  History

Download this file

93 lines (85 with data), 9.5 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<!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&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<div class="nav">
<a class="el" href="dir_000000.html">lpp</a>&nbsp;&raquo&nbsp;<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 &nbsp;</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&nbsp;</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&nbsp;</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&lt; float &gt; *ab, const long int *ldab, std::complex&lt; float &gt; *bb, const long int *ldbb, float *ws, const std::complex&lt; float &gt; *z, const long int *ldz, long int *info, workspace&lt; std::complex&lt; float &gt; &gt; &amp;w)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</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&lt; float &gt; *ab, const long int *ldab, std::complex&lt; float &gt; *bb, const long int *ldbb, float *ws, const std::complex&lt; float &gt; *z, const long int *ldz, long int *info)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</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&lt; double &gt; *ab, const long int *ldab, std::complex&lt; double &gt; *bb, const long int *ldbb, double *ws, const std::complex&lt; double &gt; *z, const long int *ldz, long int *info, workspace&lt; std::complex&lt; double &gt; &gt; &amp;w)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</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&lt; double &gt; *ab, const long int *ldab, std::complex&lt; double &gt; *bb, const long int *ldbb, double *ws, const std::complex&lt; double &gt; *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&lt;float&gt;, std::complex&lt;double&gt;<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 &gt;= 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 &gt;= 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 &gt;= 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)&lt;=i&lt;=j; if uplo = 'l', ab(1+i-j,j) = a(i,j) for j&lt;=i&lt;=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 &gt;= 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)&lt;=i&lt;=j; if uplo = 'l', bb(1+i-j,j) = b(i,j) for j&lt;=i&lt;=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 &gt;= 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 &gt;= 1, and if jobz = 'v', ldz &gt;= n.<p>
info (output) long int = 0: successful exit &lt; 0: if info = -i, the i-th argument had an illegal value &gt; 0: if info = i, and i is: &lt;= n: the algorithm failed to converge: i off-diagonal elements of an intermediate tridiagonal form did not converge to zero; &gt; n: if info = n + i, for 1 &lt;= i &lt;= 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">(&nbsp;</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&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</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&lt;double&gt;* ab, const long int* ldab, std::complex&lt;double&gt;* bb, const long int* ldbb, double* ws, const std::complex&lt;double&gt;* 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&nbsp;
<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>