root / www / HPL_perm.html
Historique | Voir | Annoter | Télécharger (2,08 ko)
1 | 1 | equemene | <HTML>
|
---|---|---|---|
2 | 1 | equemene | <HEAD>
|
3 | 1 | equemene | <TITLE>HPL_perm 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_perm</B> Combine 2 index arrays - Generate the permutation. |
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_perm(</CODE> |
16 | 1 | equemene | <CODE>const int</CODE> |
17 | 1 | equemene | <CODE>N</CODE>, |
18 | 1 | equemene | <CODE>int *</CODE> |
19 | 1 | equemene | <CODE>LINDXA</CODE>, |
20 | 1 | equemene | <CODE>int *</CODE> |
21 | 1 | equemene | <CODE>LINDXAU</CODE>, |
22 | 1 | equemene | <CODE>int *</CODE> |
23 | 1 | equemene | <CODE>IWORK</CODE> |
24 | 1 | equemene | <CODE>);</CODE> |
25 | 1 | equemene | |
26 | 1 | equemene | <H1>Description</H1> |
27 | 1 | equemene | <B>HPL_perm</B> |
28 | 1 | equemene | combines two index arrays and generate the corresponding |
29 | 1 | equemene | permutation. First, this function computes the inverse of LINDXA, and |
30 | 1 | equemene | then combine it with LINDXAU. Second, in order to be able to perform |
31 | 1 | equemene | the permutation in place, LINDXAU is overwritten by the sequence of |
32 | 1 | equemene | permutation producing the same result. What we ultimately want to |
33 | 1 | equemene | achieve is: U[LINDXAU[i]] := U[LINDXA[i]] for i in [0..N). After the |
34 | 1 | equemene | call to this function, this in place permutation can be performed by |
35 | 1 | equemene | for i in [0..N) swap U[i] with U[LINDXAU[i]]. |
36 | 1 | equemene | |
37 | 1 | equemene | <H1>Arguments</H1> |
38 | 1 | equemene | <PRE>
|
39 | 1 | equemene | N (global input) const int |
40 | 1 | equemene | On entry, N specifies the length of the arrays LINDXA and |
41 | 1 | equemene | LINDXAU. N should be at least zero. |
42 | 1 | equemene | </PRE>
|
43 | 1 | equemene | <PRE>
|
44 | 1 | equemene | LINDXA (global input/output) int * |
45 | 1 | equemene | On entry, LINDXA is an array of dimension N containing the |
46 | 1 | equemene | source indexes. On exit, LINDXA contains the combined index |
47 | 1 | equemene | array. |
48 | 1 | equemene | </PRE>
|
49 | 1 | equemene | <PRE>
|
50 | 1 | equemene | LINDXAU (global input/output) int * |
51 | 1 | equemene | On entry, LINDXAU is an array of dimension N containing the |
52 | 1 | equemene | target indexes. On exit, LINDXAU contains the sequence of |
53 | 1 | equemene | permutation, that should be applied in increasing order to |
54 | 1 | equemene | permute the underlying array U in place. |
55 | 1 | equemene | </PRE>
|
56 | 1 | equemene | <PRE>
|
57 | 1 | equemene | IWORK (workspace) int * |
58 | 1 | equemene | On entry, IWORK is a workarray of dimension N. |
59 | 1 | equemene | </PRE>
|
60 | 1 | equemene | |
61 | 1 | equemene | <H1>See Also</H1> |
62 | 1 | equemene | <A HREF="HPL_plindx1.html">HPL_plindx1</A>, |
63 | 1 | equemene | <A HREF="HPL_pdlaswp01N.html">HPL_pdlaswp01N</A>, |
64 | 1 | equemene | <A HREF="HPL_pdlaswp01T.html">HPL_pdlaswp01T</A>. |
65 | 1 | equemene | |
66 | 1 | equemene | </BODY>
|
67 | 1 | equemene | </HTML> |