Statistiques
| Révision :

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>