root / www / HPL_dgemv.html
Historique | Voir | Annoter | Télécharger (4,34 ko)
1 | 1 | equemene | <HTML>
|
---|---|---|---|
2 | 1 | equemene | <HEAD>
|
3 | 1 | equemene | <TITLE>HPL_dgemv HPL 2.0 Library Functions September 10, 2008</TITLE> |
4 | 1 | equemene | </HEAD>
|
5 | 1 | equemene | |
6 | 1 | equemene | <BODY BGCOLOR="WHITE" TEXT = "#000000" LINK = "#0000ff" VLINK = "#000099" |
7 | 1 | equemene | ALINK = "#ffff00"> |
8 | 1 | equemene | |
9 | 1 | equemene | <H1>Name</H1> |
10 | 1 | equemene | <B>HPL_dgemv</B> y := beta * y + alpha * op(A) * x. |
11 | 1 | equemene | |
12 | 1 | equemene | <H1>Synopsis</H1> |
13 | 1 | equemene | <CODE>#include "hpl.h"</CODE><BR><BR> |
14 | 1 | equemene | <CODE>void</CODE> |
15 | 1 | equemene | <CODE>HPL_dgemv(</CODE> |
16 | 1 | equemene | <CODE>const enum HPL_ORDER</CODE> |
17 | 1 | equemene | <CODE>ORDER</CODE>, |
18 | 1 | equemene | <CODE>const enum HPL_TRANS</CODE> |
19 | 1 | equemene | <CODE>TRANS</CODE>, |
20 | 1 | equemene | <CODE>const int</CODE> |
21 | 1 | equemene | <CODE>M</CODE>, |
22 | 1 | equemene | <CODE>const int</CODE> |
23 | 1 | equemene | <CODE>N</CODE>, |
24 | 1 | equemene | <CODE>const double</CODE> |
25 | 1 | equemene | <CODE>ALPHA</CODE>, |
26 | 1 | equemene | <CODE>const double *</CODE> |
27 | 1 | equemene | <CODE>A</CODE>, |
28 | 1 | equemene | <CODE>const int</CODE> |
29 | 1 | equemene | <CODE>LDA</CODE>, |
30 | 1 | equemene | <CODE>const double *</CODE> |
31 | 1 | equemene | <CODE>X</CODE>, |
32 | 1 | equemene | <CODE>const int</CODE> |
33 | 1 | equemene | <CODE>INCX</CODE>, |
34 | 1 | equemene | <CODE>const double</CODE> |
35 | 1 | equemene | <CODE>BETA</CODE>, |
36 | 1 | equemene | <CODE>double *</CODE> |
37 | 1 | equemene | <CODE>Y</CODE>, |
38 | 1 | equemene | <CODE>const int</CODE> |
39 | 1 | equemene | <CODE>INCY</CODE> |
40 | 1 | equemene | <CODE>);</CODE> |
41 | 1 | equemene | |
42 | 1 | equemene | <H1>Description</H1> |
43 | 1 | equemene | <B>HPL_dgemv</B> |
44 | 1 | equemene | performs one of the matrix-vector operations |
45 | 1 | equemene | |
46 | 1 | equemene | y := alpha * op( A ) * x + beta * y, |
47 | 1 | equemene | |
48 | 1 | equemene | where op( X ) is one of |
49 | 1 | equemene | |
50 | 1 | equemene | op( X ) = X or op( X ) = X^T. |
51 | 1 | equemene | |
52 | 1 | equemene | where alpha and beta are scalars, x and y are vectors and A is an m |
53 | 1 | equemene | by n matrix. |
54 | 1 | equemene | |
55 | 1 | equemene | <H1>Arguments</H1> |
56 | 1 | equemene | <PRE>
|
57 | 1 | equemene | ORDER (local input) const enum HPL_ORDER |
58 | 1 | equemene | On entry, ORDER specifies the storage format of the operands |
59 | 1 | equemene | as follows: |
60 | 1 | equemene | ORDER = HplRowMajor, |
61 | 1 | equemene | ORDER = HplColumnMajor. |
62 | 1 | equemene | </PRE>
|
63 | 1 | equemene | <PRE>
|
64 | 1 | equemene | TRANS (local input) const enum HPL_TRANS |
65 | 1 | equemene | On entry, TRANS specifies the operation to be performed as |
66 | 1 | equemene | follows: |
67 | 1 | equemene | TRANS = HplNoTrans y := alpha*A *x + beta*y, |
68 | 1 | equemene | TRANS = HplTrans y := alpha*A^T*x + beta*y. |
69 | 1 | equemene | </PRE>
|
70 | 1 | equemene | <PRE>
|
71 | 1 | equemene | M (local input) const int |
72 | 1 | equemene | On entry, M specifies the number of rows of the matrix A. |
73 | 1 | equemene | M must be at least zero. |
74 | 1 | equemene | </PRE>
|
75 | 1 | equemene | <PRE>
|
76 | 1 | equemene | N (local input) const int |
77 | 1 | equemene | On entry, N specifies the number of columns of the matrix A. |
78 | 1 | equemene | N must be at least zero. |
79 | 1 | equemene | </PRE>
|
80 | 1 | equemene | <PRE>
|
81 | 1 | equemene | ALPHA (local input) const double |
82 | 1 | equemene | On entry, ALPHA specifies the scalar alpha. When ALPHA is |
83 | 1 | equemene | supplied as zero then A and X need not be set on input. |
84 | 1 | equemene | </PRE>
|
85 | 1 | equemene | <PRE>
|
86 | 1 | equemene | A (local input) const double * |
87 | 1 | equemene | On entry, A points to an array of size equal to or greater |
88 | 1 | equemene | than LDA * n. Before entry, the leading m by n part of the |
89 | 1 | equemene | array A must contain the matrix coefficients. |
90 | 1 | equemene | </PRE>
|
91 | 1 | equemene | <PRE>
|
92 | 1 | equemene | LDA (local input) const int |
93 | 1 | equemene | On entry, LDA specifies the leading dimension of A as |
94 | 1 | equemene | declared in the calling (sub) program. LDA must be at |
95 | 1 | equemene | least MAX(1,m). |
96 | 1 | equemene | </PRE>
|
97 | 1 | equemene | <PRE>
|
98 | 1 | equemene | X (local input) const double * |
99 | 1 | equemene | On entry, X is an incremented array of dimension at least |
100 | 1 | equemene | ( 1 + ( n - 1 ) * abs( INCX ) ) that contains the vector x. |
101 | 1 | equemene | </PRE>
|
102 | 1 | equemene | <PRE>
|
103 | 1 | equemene | INCX (local input) const int |
104 | 1 | equemene | On entry, INCX specifies the increment for the elements of X. |
105 | 1 | equemene | INCX must not be zero. |
106 | 1 | equemene | </PRE>
|
107 | 1 | equemene | <PRE>
|
108 | 1 | equemene | BETA (local input) const double |
109 | 1 | equemene | On entry, BETA specifies the scalar beta. When ALPHA is |
110 | 1 | equemene | supplied as zero then Y need not be set on input. |
111 | 1 | equemene | </PRE>
|
112 | 1 | equemene | <PRE>
|
113 | 1 | equemene | Y (local input/output) double * |
114 | 1 | equemene | On entry, Y is an incremented array of dimension at least |
115 | 1 | equemene | ( 1 + ( n - 1 ) * abs( INCY ) ) that contains the vector y. |
116 | 1 | equemene | Before entry with BETA non-zero, the incremented array Y must |
117 | 1 | equemene | contain the vector y. On exit, Y is overwritten by the |
118 | 1 | equemene | updated vector y. |
119 | 1 | equemene | </PRE>
|
120 | 1 | equemene | <PRE>
|
121 | 1 | equemene | INCY (local input) const int |
122 | 1 | equemene | On entry, INCY specifies the increment for the elements of Y. |
123 | 1 | equemene | INCY must not be zero. |
124 | 1 | equemene | </PRE>
|
125 | 1 | equemene | |
126 | 1 | equemene | <H1>Example</H1> |
127 | 1 | equemene | <CODE>#include "hpl.h"</CODE><BR><BR> |
128 | 1 | equemene | <PRE>
|
129 | 1 | equemene | int main(int argc, char *argv[]) |
130 | 1 | equemene | { |
131 | 1 | equemene | double a[2*2], x[2], y[2]; |
132 | 1 | equemene | a[0] = 1.0; a[1] = 2.0; a[2] = 3.0; a[3] = 3.0; |
133 | 1 | equemene | x[0] = 2.0; x[1] = 1.0; y[2] = 1.0; y[3] = 2.0; |
134 | 1 | equemene | HPL_dgemv( HplColumnMajor, HplNoTrans, 2, 2, 2.0, |
135 | 1 | equemene | a, 2, x, 1, -1.0, y, 1 ); |
136 | 1 | equemene | printf("y=[%f,%f]\n", y[0], y[1]); |
137 | 1 | equemene | exit(0); return(0); |
138 | 1 | equemene | } |
139 | 1 | equemene | </PRE>
|
140 | 1 | equemene | |
141 | 1 | equemene | <H1>See Also</H1> |
142 | 1 | equemene | <A HREF="HPL_dger.html">HPL_dger</A>, |
143 | 1 | equemene | <A HREF="HPL_dtrsv.html">HPL_dtrsv</A>. |
144 | 1 | equemene | |
145 | 1 | equemene | </BODY>
|
146 | 1 | equemene | </HTML> |