1 |
// (c) 2009 Jean-Marc Drouet ************************************ bib_m012.h * > |
2 |
// |
3 |
// rév.: 20090314 |
4 |
|
5 |
#ifndef _bib_m012h |
6 |
#define _bib_m012h |
7 |
|
8 |
#include<math.h> |
9 |
|
10 |
#include "bib_0000.h" |
11 |
|
12 |
//****************************************************************************** |
13 |
// types globaux du module bib_m012 |
14 |
|
15 |
//****************************************************************************** |
16 |
// constantes globales du module bib_m012 |
17 |
|
18 |
//****************************************************************************** |
19 |
// variables globales du module bib_m012 |
20 |
|
21 |
//****************************************************************************** |
22 |
// fonctions globales du module bib_m012 |
23 |
|
24 |
//****************************************************************************** |
25 |
// Addition d'une constante aux éléments d'un vecteur vifl h |
26 |
|
27 |
ty_RSLT act_vct(vifl *_vct, ulong _nbr_elmts, vifl _cte); |
28 |
|
29 |
//****************************************************************************** |
30 |
// Addition d'une constante aux éléments d'un vecteur vifl h |
31 |
|
32 |
ty_RSLT act_vct_32x387(vifl *_vct, ulong _nbr_elmts, vifl _cte); |
33 |
|
34 |
//****************************************************************************** |
35 |
// addition de 2 vecteurs h |
36 |
|
37 |
ty_RSLT add_vct( vifl *_vct_1 , // 1er vecteur |
38 |
vifl *_vct_2 , // 2e vecteur |
39 |
vifl *_vct_dst , // destination |
40 |
ulong _nbr_elmts ); // nbre d'éléments à traiter |
41 |
|
42 |
//****************************************************************************** |
43 |
// élévation au carré des éléments d'un vecteur h |
44 |
|
45 |
ty_RSLT car_vct( vifl *_vct_src , // source |
46 |
vifl *_vct_dst , // destination |
47 |
ulong _nbr_elmts ); // nbre d'éléments à traiter |
48 |
|
49 |
//****************************************************************************** |
50 |
// racine carrée des éléments d'un vecteur h |
51 |
|
52 |
ty_RSLT rcar_vct( vifl *_vct_src , // source |
53 |
vifl *_vct_dst , // destination |
54 |
ulong _nbr_elmts ); // nbre d'éléments à traiter |
55 |
|
56 |
//****************************************************************************** |
57 |
// copie d'un vecteur dans un autre h |
58 |
|
59 |
ty_RSLT copie_vct( vifl *_vct_src , // source |
60 |
vifl *_vct_dst , // destination |
61 |
ulong _nbr_elmts ); // nbre d'éléments à copier |
62 |
|
63 |
//****************************************************************************** |
64 |
// soustraction de 2 vecteurs h |
65 |
|
66 |
ty_RSLT sous_vct( vifl *_vct_1 , // 1er vecteur |
67 |
vifl *_vct_2 , // 2e vecteur |
68 |
vifl *_vct_dst , // destination = 1er vecteur - 2e vecteur |
69 |
ulong _nbr_elmts ); // nbre d'éléments à traiter |
70 |
|
71 |
//****************************************************************************** |
72 |
// division des éélééments d'un vecteur par une constante h |
73 |
|
74 |
ty_RSLT dct_vct( vifl *_vct_src , // source |
75 |
vifl *_vct_dst , // destination |
76 |
ulong _nbr_elmts , // nbre d'éléments à traiter |
77 |
vifl _cte ); // constante |
78 |
|
79 |
//****************************************************************************** |
80 |
// division des éléments d'un vecteur vifl par une constante h |
81 |
|
82 |
ty_RSLT dct_vct_32x387(vifl *_vct, ulong _nbr_elmts, vifl _cte); |
83 |
|
84 |
//****************************************************************************** |
85 |
// étendue des éléments d'un vecteur vifl h |
86 |
|
87 |
|
88 |
ty_RSLT etd_vct(vifl *_vct, ulong _nbr_elmts, vifl *_etd); |
89 |
|
90 |
//****************************************************************************** |
91 |
// écart-type échantillonnal des éléments d'un vecteur vifl h |
92 |
|
93 |
|
94 |
ty_RSLT ete_vct(vifl *_vct, ulong _nbr_elmts, vifl *_ete); |
95 |
|
96 |
//****************************************************************************** |
97 |
// écart-type "population" des éléments d'un vecteur vifl h |
98 |
|
99 |
|
100 |
ty_RSLT etp_vct(vifl *_vct, ulong _nbr_elmts, vifl *_etp); |
101 |
|
102 |
//****************************************************************************** |
103 |
// insertion de zéros dans un vct vifl h |
104 |
|
105 |
ty_RSLT ins_vct( vifl *_vct , // vecteur vifl |
106 |
ulong _nbr_elmts , // nbr d'éléments dans le vecteur |
107 |
ulong _idc_ins , // idc où l'insertion doit être effectuée (base 0) |
108 |
ulong _nbr_ins ); // nbr d'insértions |
109 |
|
110 |
//****************************************************************************** |
111 |
// renvoie le max dans un vecteur h |
112 |
|
113 |
ty_RSLT maxi_vct(ulong *_vct, ulong _nbr_elmts, ulong *_maxi ); |
114 |
|
115 |
ty_RSLT maxi_vct( vifl *_vct , |
116 |
ulong _nbr_elmts , |
117 |
vifl *_maxi ); |
118 |
|
119 |
//****************************************************************************** |
120 |
// |
121 |
// renvoie le max dans un vecteur et son indice (base 1) |
122 |
// |
123 |
// attention : dans la version pré 28-07-2007, l'indice était de base 0 |
124 |
// h |
125 |
|
126 |
ty_RSLT maxi_vct(ulong *_vct, ulong _nbr_elmts, ulong *_idc, ulong *_maxi ); |
127 |
|
128 |
ty_RSLT maxi_vct(vifl *_vct, ulong _nbr_elmts, ulong *_idc, vifl *_maxi ); |
129 |
|
130 |
//****************************************************************************** |
131 |
// |
132 |
// recherche du max dans un vct vifl et son idc (base 0) |
133 |
// h |
134 |
|
135 |
ty_RSLT max_vct_32x387(vifl *_vct, ulong _nbr_elmts, ulong *_idc, vifl *_max); |
136 |
|
137 |
//****************************************************************************** |
138 |
// |
139 |
// multiplication des éléments d'un vecteur vifl par une constante |
140 |
// h |
141 |
|
142 |
ty_RSLT mct_vct(vifl *_vct, ulong _nbr_elmts, vifl _cte); |
143 |
|
144 |
//****************************************************************************** |
145 |
// |
146 |
// multiplication des éléments d'un vecteur vifl par une constante |
147 |
// h |
148 |
|
149 |
ty_RSLT mct_vct_32x387(vifl *_vct, ulong _nbr_elmts, vifl _cte); |
150 |
|
151 |
//****************************************************************************** |
152 |
// renvoie le min et le max dans un vecteur h |
153 |
|
154 |
ty_RSLT mini_maxi_vct( ulong *_vct , |
155 |
ulong _nbr_elmts , |
156 |
|
157 |
ulong *_mini , |
158 |
ulong *_maxi ); |
159 |
|
160 |
ty_RSLT mini_maxi_vct( vifl *_vct , |
161 |
ulong _nbr_elmts , |
162 |
|
163 |
vifl *_mini , |
164 |
vifl *_maxi ); |
165 |
|
166 |
//****************************************************************************** |
167 |
// |
168 |
// renvoie le min dans un vecteur et son indice (base 1) (ou pas) |
169 |
// |
170 |
// attention : dans la version pré 28-07-2007, l'indice était de base 0 |
171 |
// h |
172 |
|
173 |
ty_RSLT mini_vct(ulong *_vct, ulong _nbr_elmts, ulong *_mini ); |
174 |
|
175 |
ty_RSLT mini_vct(vifl *_vct, ulong _nbr_elmts, vifl *_mini ); |
176 |
|
177 |
ty_RSLT mini_vct(ulong *_vct, ulong _nbr_elmts, ulong *_idc, ulong *_mini ); |
178 |
|
179 |
ty_RSLT mini_vct(vifl *_vct, ulong _nbr_elmts, ulong *_idc, vifl *_mini ); |
180 |
|
181 |
//****************************************************************************** |
182 |
// |
183 |
// recherche du min dans un vct vifl et son idc (base 0) |
184 |
// h |
185 |
|
186 |
ty_RSLT min_vct_32x387(vifl *_vct, ulong _nbr_elmts, ulong *_idc, vifl *_min); |
187 |
|
188 |
//****************************************************************************** |
189 |
// |
190 |
// moyenne des termes d'un vecteur vifl |
191 |
// h |
192 |
|
193 |
ty_RSLT moy_vct( vifl *_vct , |
194 |
ulong _nbr_termes , |
195 |
vifl *_moy ); |
196 |
|
197 |
//****************************************************************************** |
198 |
// norme d'un vecteur vifl h |
199 |
|
200 |
ty_RSLT norme_vct( vifl *_vct , |
201 |
ulong _nbr_elements , |
202 |
vifl *_norme ); |
203 |
|
204 |
//****************************************************************************** |
205 |
// |
206 |
// norme d'un vecteur vifl |
207 |
// h |
208 |
|
209 |
ty_RSLT nrm_vct_32x387(vifl *_vct, ulong _nbr_elmts, vifl *_nrm); |
210 |
|
211 |
//****************************************************************************** |
212 |
// produit scalaire de 2 vecteurs vifl h |
213 |
|
214 |
ty_RSLT prosca( vifl *_vct_1 , // 1er vecteur |
215 |
vifl *_vct_2 , // 2e vecteur |
216 |
ulong _nbr_elmts , // dimension des vecteurs |
217 |
|
218 |
vifl *_prosca ); // résultat du produit scalaire |
219 |
|
220 |
//****************************************************************************** |
221 |
// produit vectoriel de 2 vecteurs vifl de dimension 3 h |
222 |
|
223 |
ty_RSLT provct( vifl *_vct_1 , // 1er vecteur |
224 |
vifl *_vct_2 , // 2e vecteur |
225 |
|
226 |
vifl *_vct_resu ); // vecteur résultat |
227 |
|
228 |
//****************************************************************************** |
229 |
// |
230 |
// "Root Mean Square" |
231 |
// h |
232 |
|
233 |
ty_RSLT rms_vct(vifl *_vct, ulong _nbr_elmts, vifl *_rms); |
234 |
|
235 |
//****************************************************************************** |
236 |
// |
237 |
// somme des éléments d'un vecteur vifl |
238 |
// h |
239 |
|
240 |
ty_RSLT smm_vct( vifl *_vct, ulong _nbr_elmts, vifl *_smm ); |
241 |
|
242 |
//****************************************************************************** |
243 |
// |
244 |
// somme des éléments d'un vecteur vifl |
245 |
// h |
246 |
|
247 |
ty_RSLT smm_vct_32x387(vifl *_vct, ulong _nbr_elmts, vifl *_smm); |
248 |
|
249 |
//****************************************************************************** |
250 |
// |
251 |
// somme du carré des éléments d'un vecteur vifl |
252 |
// h |
253 |
|
254 |
ty_RSLT sm2_vct(vifl *_vct, ulong _nbr_elmts, vifl *_sm2); |
255 |
|
256 |
//****************************************************************************** |
257 |
// |
258 |
// somme du carré des éléments d'un vecteur vifl |
259 |
// h |
260 |
|
261 |
ty_RSLT sm2_vct_32x387(vifl *_vct, ulong _nbr_elmts, vifl *_sm2); |
262 |
|
263 |
|
264 |
|
265 |
|
266 |
|
267 |
//**************************************************************************[-]* |
268 |
// |
269 |
// trouve si un élément est contenu dans un vecteur |
270 |
// h |
271 |
|
272 |
ty_RSLT trouve_element_dans_vecteur( ulong *_vecteur , |
273 |
ulong _nbr_elements , |
274 |
ulong _element ); |
275 |
|
276 |
ty_RSLT trouve_element_dans_vecteur( ulong *_vecteur , |
277 |
ulong _nbr_elements , |
278 |
ulong _element , |
279 |
|
280 |
ulong *_no_element ); // no (indice) de l'élément dans le vecteur (base 1) si trouvé |
281 |
|
282 |
ty_RSLT trouve_ec_dans_2_vecteurs( ulong *_vecteur_1 , |
283 |
ulong *_vecteur_2 , |
284 |
ulong _nbr_elements ); |
285 |
|
286 |
ty_RSLT trouve_nec_dans_2_vecteurs( ulong *_vecteur_1 , |
287 |
ulong *_vecteur_2 , |
288 |
ulong _nbr_elements , |
289 |
|
290 |
ulong *_nec ); |
291 |
|
292 |
|
293 |
|
294 |
|
295 |
//****************************************************************************** |
296 |
// |
297 |
// variance échantillonnalle des éléments d'un vecteur vifl |
298 |
// h |
299 |
|
300 |
ty_RSLT vre_vct(vifl *_vct, ulong _nbr_elmts, vifl *_vre); |
301 |
|
302 |
//****************************************************************************** |
303 |
// |
304 |
// variance "population" des éléments d'un vecteur vifl |
305 |
// h |
306 |
|
307 |
ty_RSLT vrp_vct(vifl *_vct, ulong _nbr_elmts, vifl *_vrp); |
308 |
|
309 |
#endif |