ParMooN
 All Classes Functions Variables Friends Pages
basic.h
1 #ifndef __BASIC_H
2 #define __BASIC_H
3 
4 #include "config.h"
5 
6 typedef struct {
7  int dim; /* Dimension des Vektors */
8  int *array; /* Array mit Werten */
9 } vec_t;
10 
11 typedef vec_t *vec_p;
12 
13 
14 typedef struct {
15  int dim; /* Dimension des Vektors */
16  fepc_real_t *array; /* Array mit Werten */
17 } vec_real_t;
18 
19 typedef vec_real_t *vec_real_p;
20 
21 
22 int int_round(fepc_real_t d);
23 
24 /* Diese Routinen dienen der Verwaltung multidimensionaler Arrays. Erlaeuterungen zur Speicherung solcher Arrays,
25 sowie zur Funktionsweise der Funktionen entry_d2one und entry_one2d sind in der Dokumentation zu finden */
26 
27 /* Initialisiert einen Vektor der Dimension dim, dessen Eintraege alle mit der Zahl 0 gefuellt sind */
28 vec_p
29 vec_new(int dim);
30 
31 /* Initialisiert einen Vektor der Dimension dim, dessen Eintraege alle mit der Zahl 1.0 gefuellt sind */
33 vec_real_new(int dim);
34 
35 /* Initialisiert einen Vektor der Dimension dim, dessen Eintraege alle mit der Zahl 1 gefuellt sind */
36 vec_p
37 vec_one(int dim);
38 
39 /* Loescht den Vektor s */
40 void
41 vec_del(vec_p s);
42 
43 /* Loescht den Vektor s */
44 void
45 vec_real_del(vec_real_p s);
46 
47 /* Berechnet die Position des Vektors s in einem multidimensionalen Array, dessen Dimension durch den Vektor n bestimmt ist */
48 int
49 entry_d2one(vec_p s,vec_p n);
50 
51 /* Berechnet den zugehoerigen Vektor der Position pos eines multidimensionalen Array, dessen Dimension durch den Vektor n bestimmt ist */
52 vec_p
53 entry_one2d(int pos,vec_p n);
54 
55 /* Berechnet den zugehoerigen Vektor der Position pos eines multidimensionalen Array, dessen Dimension durch den Vektor n bestimmt ist, ohne dabei streng zu sein */
56 vec_p
57 entry_one2d_sloppy(int pos,vec_p n);
58 
59 /* Berechnet den Vektor a*s + b*n */
60 vec_p
61 vec_op(int a, vec_p s, int b, vec_p n);
62 
63 /* Multipliziert den Vektor n mit der ganzen Zahl a */
64 vec_p
65 vec_multi(int a, vec_p n);
66 
67 /* Multipliziert einen reelwertigen Vektor mit einer Konstante */
69 vec_real_multi(fepc_real_t factor, vec_real_p vector);
70 
71 /* Multipliziert einen reelwertigen Vektor mit einer Konstante und speichert das Ergebnis im Eingabevektor */
72 void
73 vec_real_multi2(fepc_real_t factor, vec_real_p vector);
74 
75 /* Dividiert den Vektor n mit der ganzen Zahl a */
76 vec_p
77 vec_div(int a, vec_p n);
78 
79 /* Addiert Vektor s und Vektor n */
80 vec_p
81 vec_add(vec_p s, vec_p n);
82 
83 /* Addiert Vektor s und Vektor n und speichert das Ergebnis in s */
84 void
85 vec_add2(vec_p s, vec_p n);
86 
87 /* Erzeugt eine inhaltliche Kopie des Vektors n */
88 vec_p
89 vec_copy(vec_p n);
90 
91 /* Subtrahiert Vektor s und Vektor n */
93 vec_real_substract(vec_real_p s, vec_real_p n);
94 
95 /* Berechnet das Skalarprodukt der Vektoren r und s */
96 int
97 vec_skalar_prod(vec_p r, vec_p s);
98 
99 /* Berechnet den groessten Vektor n sodass gilt: n<=r und n<=s */
100 vec_p
101 vec_min(vec_p r, vec_p s);
102 
103 /* Berechnet den kleinsten Vektor n sodass gilt: n>=r und n>=s */
104 vec_p
105 vec_max(vec_p r, vec_p s);
106 
107 /* Berechnet r_1 * ... * r_dim */
108 int
109 vec_size(vec_p r);
110 
111 /* Gegeben seien die Vektoren r, n mit n>r>=0 und n > 0. Der Vektor n beschreibt ein multidimensionales Array.
112 Gesucht sind alle ganzen Zahlen t >= 0 fuer die gilt: r<=s<n mit s = vec_entry_one2d( (int) t, (vec_p) n).
113 Die Zahlen t werden in aufsteigender Reihenfolge im Ausgabevektor abgespeichert. */
114 vec_p
115 vec_r_s_n(vec_p r, vec_p n);
116 
117 /* Gegeben seien die Vektoren r, n mit n>r>=0 und n > 0. Der Vektor n beschreibt ein multidimensionales Array.
118 Gesucht sind alle ganzen Zahlen t >= 0 fuer die gilt: 0<=s<=r mit s = vec_entry_one2d( (int) t, (vec_p) n).
119 Die Zahlen t werden in aufsteigender Reihenfolge im Ausgabevektor abgespeichert. */
120 vec_p
121 vec_0_s_r(vec_p r, vec_p n);
122 
123 /* Sei der Vektor n gegeben. Dann wird eine Zerlegung der Form n = 2*s + r berechnet, wobei 0<=r<=1 gilt. Das zurueckgegebene Array
124 besitzt die Groesse 2. Es gilt Array[0] = s , Array[1] = r. */
125 vec_p*
126 vec_zerlegung(vec_p n);
127 
131 void
132 print_vec(vec_p vector);
133 
137 void
138 print_vec_real(vec_real_p vector);
139 
140 /*
141  * Returns the euklidian norm of the vector.
142  */
143 fepc_real_t
144 vec_real_norm(vec_real_p vector);
145 
146 #endif
147 
148 
Definition: basic.h:6
Definition: basic.h:14