ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/optimisation/src/bib_0000.h
Revision: 199
Committed: Tue Jul 21 15:00:12 2009 UTC (15 years, 10 months ago) by picher
Content type: text/plain
File size: 34233 byte(s)
Log Message:
Projet d'optimisation

File Contents

# Content
1 // (c) 2009 Jean-Marc Drouet ************************************ bib_0000.h * >
2 //
3 // ver.: 20090329
4
5 #ifndef _bib_0000_h_
6 #define _bib_0000_h_
7
8 #include<math.h>
9 #include<stdio.h>
10 #include<stdlib.h>
11 #include<string.h>
12 #include<time.h>
13
14 #ifndef LONGDOUBLE
15 #define acosl acos
16 #define asinl asin
17 #define atan2l atan2
18 #define cosl cos
19 #define fabsl fabs
20 #define floorl floor
21 #define logl log
22 #define log10l log10
23 #define modfl modf
24 #define powl pow
25 #define sinl sin
26 #define sqrtl sqrt
27 #endif
28
29 //******************************************************************************
30 // types globaux du module bib_0000
31
32 //-- acronymes -----------------------------------------------------------------
33
34 #ifdef LONGDOUBLE
35 typedef long double vifl ;
36 #else
37 typedef double vifl ;
38 #endif
39
40 typedef short int sint ;
41 typedef short int *psint ;
42
43 typedef unsigned short int usint ;
44 typedef unsigned short int *pusint ;
45
46 typedef unsigned char uchar ;
47 typedef unsigned char *puchar ;
48
49 typedef unsigned int uint ;
50 typedef unsigned int *puint ;
51
52 typedef long int lint ;
53 typedef long int *plint ;
54
55 typedef unsigned long int ulong ;
56 typedef unsigned long int *pulong ;
57
58 //-- type résultat pour le statut d'exécution des procédures -------------------
59
60 typedef int ty_RSLT;
61
62 //-- coordonnées 2D et 3D ------------------------------------------------------
63
64 struct ty_coord_2D {
65
66 vifl x;
67 vifl y;
68
69 };
70
71 struct ty_coord_3D {
72
73 vifl x;
74 vifl y;
75 vifl z;
76
77 };
78
79 //******************************************************************************
80 // constantes globales du module bib_0000
81
82 //------------------------------------------------------------------------------
83 //-- - les drapeaux de signe négatif sont globaux et définis uniquement dans
84 //-- le module bib_0000.h
85 //-- - ils ne peuvent pas être combinés par des opérateurs logiques
86
87 #define co_probleme (ty_RSLT) -1
88 #define co_problema (ty_RSLT) -1
89 #define co_probleme_arg (ty_RSLT) -2
90 #define co_probleme_mem (ty_RSLT) -3
91 #define co_probleme_cnv (ty_RSLT) -4
92 #define co_pas_de_probleme (ty_RSLT) -5
93 #define co_no_problema (ty_RSLT) -5
94
95 #define co_non (ty_RSLT) -6
96 #define co_no (ty_RSLT) -6
97 #define co_oui (ty_RSLT) -7
98 #define co_si (ty_RSLT) -7
99 #define co_peut_etre (ty_RSLT) -8
100
101 #define co_n_existe_pas (ty_RSLT) -9
102 #define co_existe (ty_RSLT) -10
103
104 #define co_pas_de_traitement (ty_RSLT) -11
105 #define co_traitement (ty_RSLT) -12
106
107 #define co_negatif (ty_RSLT) -13
108 #define co_positif (ty_RSLT) -14
109
110 #define co_zero (ty_RSLT) -15
111 #define co_pas_zero (ty_RSLT) -16
112
113 #define co_defini (ty_RSLT) -17
114 #define co_non_defini (ty_RSLT) -18
115
116 #define co_droit (ty_RSLT) -19
117 #define co_droite (ty_RSLT) -19
118 #define co_gauche (ty_RSLT) -20
119 #define co_dessus (ty_RSLT) -21
120
121 #define co_infini (ty_RSLT) -22
122
123 #define co_inchange (ty_RSLT) -23
124 #define co_maj (ty_RSLT) -24
125
126 #define co_probleme_1 (ty_RSLT) -101
127 #define co_probleme_2 (ty_RSLT) -102
128 #define co_probleme_3 (ty_RSLT) -103
129 #define co_probleme_4 (ty_RSLT) -104
130 #define co_probleme_5 (ty_RSLT) -105
131 #define co_probleme_6 (ty_RSLT) -106
132 #define co_probleme_7 (ty_RSLT) -107
133 #define co_probleme_8 (ty_RSLT) -108
134 #define co_probleme_9 (ty_RSLT) -109
135 #define co_probleme_10 (ty_RSLT) -110
136
137 #define co_probleme_101 (ty_RSLT) -1101
138 #define co_probleme_102 (ty_RSLT) -1102
139 #define co_probleme_103 (ty_RSLT) -1103
140 #define co_probleme_104 (ty_RSLT) -1104
141 #define co_probleme_105 (ty_RSLT) -1105
142 #define co_probleme_106 (ty_RSLT) -1106
143 #define co_probleme_107 (ty_RSLT) -1107
144 #define co_probleme_108 (ty_RSLT) -1108
145 #define co_probleme_109 (ty_RSLT) -1109
146 #define co_probleme_110 (ty_RSLT) -1110
147
148 #ifdef LONGDOUBLE
149 #ifdef LINUX
150 #define co_bib_0000_dim_vifl 12
151 #define co_bib_0000_max_vifl 1.0e+4930
152 #define co_bib_0000_ncs_vifl 18 // nombre de chiffres significatifs
153 #endif
154 #ifdef WINDOWS
155 #define co_bib_0000_dim_vifl 10
156 #define co_bib_0000_max_vifl 1.0e+4930
157 #define co_bib_0000_ncs_vifl 18 // nombre de chiffres significatifs
158 #endif
159 #else
160 #define co_bib_0000_dim_vifl 8
161 #define co_bib_0000_max_vifl 1.0e+308
162 #define co_bib_0000_ncs_vifl 15 // nombre de chiffres significatifs
163 #endif
164
165 /*
166 #define co_bib_0000_dim_vifl sizeof(vifl)
167 */
168 #define co_bib_0000_dim_ulong sizeof(ulong)
169
170
171 //-- dimension max d'une CC pour un int ----------------------------------------
172
173 #define co_lcc_max_int 8 // 8 caractères
174
175 //-- dimension max d'une CC pour un vifl ---------------------------------------
176
177 #define co_lcc_max_vifl 40 // 40 caractères
178
179 //-- dimension max d'une CC pour un nom de fichier -----------------------------
180
181 #define co_lcc_max_nf 9 // incluant le '\0'
182
183 //-- dimension max d'une CC pour l'extension d'un fichier ----------------------
184
185 #define co_lcc_max_ef 4 // incluant le '\0'
186
187 //-- dimension max d'une CC pour un fichier ------------------------------------
188
189 #define co_lcc_max_fic 15 // incluant le '\0'
190
191 //-- dimension max d'une CC pour un répertoire ---------------------------------
192
193 #define co_lcc_max_rep 200 // incluant le '\0'
194
195 //-- dimension max d'une CC pour l'adresse -> réperoite + fichier --------------
196
197 #define co_lcc_max_adr 220 // incluant le '\0'
198
199 //-- valeur en dessous de laquelle, on considère un nombre vifl égal à 0 -------
200
201 #define co_zero_vifl (vifl) 1.0e-4900 // en valeur absolue
202
203 //-- nombres de chiffres significatifs pour un vifl ----------------------------
204
205 #define co_0000_csg_vifl 18
206
207 //-- constantes pour le format numérique ---------------------------------------
208
209 #define co_0000_format_dcm 1 // décimales
210 #define co_0000_format_tcd 2 // tous les chiffres disponibles
211
212
213
214 #define co_lcc_max_remplacer_dans_fic 500
215
216
217
218 //******************************************************************************
219 // structures globales du module bib_0000
220
221 //-- données multi-usage (dimension = 70 octets) -------------------------------
222
223 struct ty_0000_dnn {
224
225 int i0; // 5 données de type int
226 int i1;
227 int i2;
228 int i3;
229 int i4;
230
231 uint ui0; // 5 données de type uint
232 uint ui1;
233 uint ui2;
234 uint ui3;
235 uint ui4;
236
237 vifl x0; // 5 données de type vifl
238 vifl x1;
239 vifl x2;
240 vifl x3;
241 vifl x4;
242
243 void *ptr; // 1 pointeur
244
245 };
246
247 //******************************************************************************
248 // variables globales du module bib_0000
249
250 // aucune
251
252 //******************************************************************************
253 // fonctions globales du module bib_0000
254
255
256 //******************************************************************************
257 //
258 // remplacement d'une cc dans un fichier texte
259 // h
260
261 ty_RSLT remplacer_dans_fic( char *_nom_fic_entree ,
262 char *_nom_fic_sortie ,
263 char *_cc_a_chercher ,
264 char *_cc_de_remplacement );
265
266
267 //******************************************************************************
268 // allocation de mémoire
269 //
270 // +--------------------------------------------+-------------------------+
271 // ¦ condition ¦ résultat d'exécution ¦
272 // +--------------------------------------------+-------------------------+
273 // ¦ 1. nbr de termes à allouer = 0 ¦ co_probleme_1 ¦
274 // ¦ 2. impossible d'allouer la mémoire ¦ co_probleme_2 ¦
275 // ¦ 0. OK ¦ co_pas_de_probleme ¦
276 // +--------------------------------------------+-------------------------+ h
277
278 ty_RSLT amem( int **_ptr , // ptr à renvoyer
279 ulong _nbr_int ); // nbr de termes int ou ty_RSLT à allouer
280
281 ty_RSLT amem( lint **_ptr , // ptr à renvoyer
282 ulong _nbr_lint ); // nbr de termes lint à allouer
283
284 ty_RSLT amem( uchar **_ptr , // ptr à renvoyer
285 ulong _nbr_uchar ); // nbr de termes uchar à allouer
286
287 ty_RSLT amem( ulong **_ptr , // ptr à renvoyer
288 ulong _nbr_ulong ); // nbr de termes ulong à allouer
289
290 ty_RSLT amem( vifl **_ptr , // ptr à renvoyer
291 ulong _nbr_vifl ); // nbr de termes vifl à allouer
292
293 //******************************************************************************
294 // copie en mémoire h
295
296 ty_RSLT cop_mem( char *_ptr_src , // ptr de base - source
297 char *_ptr_dst , // ptr de base - destination
298 ulong _nbr_termes ); // nbr de termes char à copier
299
300 ty_RSLT cop_mem( int *_ptr_src , // ptr de base - source
301 int *_ptr_dst , // ptr de base - destination
302 ulong _nbr_termes ); // nbr de termes int à copier
303
304 ty_RSLT cop_mem( uchar *_ptr_src , // ptr de base - source
305 uchar *_ptr_dst , // ptr de base - destination
306 ulong _nbr_termes ); // nbr de termes uchar à copier
307
308 ty_RSLT cop_mem( ulong *_ptr_src , // ptr de base - source
309 ulong *_ptr_dst , // ptr de base - destination
310 ulong _nbr_termes ); // nbr de termes ulong à copier
311
312 ty_RSLT cop_mem( vifl *_ptr_src , // ptr de base - source
313 vifl *_ptr_dst , // ptr de base - destination
314 ulong _nbr_termes ); // nbr de termes vifl à copier
315
316 //******************************************************************************
317 // écriture en mémoire h
318
319 ty_RSLT ect_mem( char *_ptr , // ptr de base
320 ulong _pos , // position (base 1)
321 char _vlr ); // valeur à écrire
322
323 ty_RSLT ect_mem( int *_ptr , // ptr de base
324 ulong _pos , // position (base 1)
325 int _vlr ); // valeur à écrire (int ou ty_RSLT)
326
327 ty_RSLT ect_mem( uchar *_ptr , // ptr de base
328 ulong _pos , // position (base 1)
329 uchar _vlr ); // valeur à écrire
330
331 ty_RSLT ect_mem( ulong *_ptr , // ptr de base
332 ulong _pos , // position (base 1)
333 ulong _vlr ); // valeur à écrire
334
335 ty_RSLT ect_mem( vifl *_ptr , // ptr de base
336 ulong _pos , // position (base 1)
337 vifl _vlr ); // valeur à écrire
338
339 ty_RSLT ect_mem( vifl *_ptr , // ptr de base
340 ulong _pos , // position (base 1)
341 vifl *_vlr ); // valeur à écrire
342
343 ty_RSLT ect_mem( void *_ptr , // ptr de base
344 ulong _pos , // position (base 1)
345 ulong _dim , // dimension en octets de chaque élément
346 void *_vlr ); // élément à écrire
347
348 //******************************************************************************
349 //
350 // écriture dans un tableau
351 // h
352
353 ty_RSLT ect_tab( lint *_ptr , // ptr de base (1ère ligne, 1ère colonne)
354 ulong _nbr_col , // nombre de colonnes du tableau
355 ulong _no_lig , // numéro de la ligne (base 1)
356 ulong _no_col , // numéro de la colonne (base 1)
357 lint _vlr ); // valeur à écrire
358
359 //******************************************************************************
360 //
361 // écriture dans un tableau
362 // h
363
364 ty_RSLT ect_tab( vifl *_ptr , // ptr de base (1ère ligne, 1ère colonne)
365 ulong _nbr_col , // nombre de colonnes du tableau
366 ulong _no_lig , // numéro de la ligne (base 1)
367 ulong _no_col , // numéro de la colonne (base 1)
368 vifl *_vlr ); // valeur à écrire
369
370 //******************************************************************************
371 //
372 // écriture dans un tableau
373 // h
374
375 ty_RSLT ect_tab( ulong *_ptr , // ptr de base (1ère ligne, 1ère colonne)
376 ulong _nbr_col , // nombre de colonnes du tableau
377 ulong _no_lig , // numéro de la ligne (base 1)
378 ulong _no_col , // numéro de la colonne (base 1)
379 ulong _vlr ); // valeur à écrire
380
381 //******************************************************************************
382 //
383 // écriture dans un tableau
384 // h
385
386 ty_RSLT ect_tab( ulong *_ptr , // ptr de base (1ère ligne, 1ère colonne)
387 ulong _nbr_col , // nombre de colonnes du tableau
388 ulong _no_lig , // numéro de la ligne (base 1)
389 ulong _no_col , // numéro de la colonne (base 1)
390 ulong *_vlr ); // valeur à écrire
391
392 //******************************************************************************
393 // initialisation de mémoire (int et ty_RSLT) h
394
395 ty_RSLT ini_mem( int *_ptr ,
396 ulong _nbr_termes ,
397 int _vlr );
398
399 //******************************************************************************
400 // initialisation de mémoire h
401
402 ty_RSLT ini_mem( lint *_ptr ,
403 ulong _nbr_termes ,
404 lint _vlr );
405
406 //******************************************************************************
407 // initialisation de mémoire h
408
409 ty_RSLT ini_mem( ulong *_ptr ,
410 ulong _nbr_termes ,
411 ulong _vlr );
412
413 //******************************************************************************
414 // initialisation de mémoire h
415
416 ty_RSLT ini_mem( vifl *_ptr ,
417 ulong _nbr_termes ,
418 vifl _vlr );
419
420 //******************************************************************************
421 // initialisation de mémoire h
422
423 ty_RSLT ini_mem( vifl *_ptr ,
424 ulong _nbr_termes ,
425 vifl *_vlr );
426
427 //******************************************************************************
428 //
429 // insertion en mémoire (décalage vers la fin)
430 // h
431
432 ty_RSLT ins_mem( ulong *_ptr , // ptr de base
433 ulong _nbr_termes , // nbre de termes total
434 ulong _pos , // position (base 1)
435 ulong _vlr ); // valeur insérée
436
437 //******************************************************************************
438 //
439 // insertion en mémoire (décalage vers la fin)
440 // h
441
442 ty_RSLT ins_mem( vifl *_ptr , // ptr de base
443 ulong _nbr_termes , // nbre de termes total
444 ulong _pos , // position (base 1)
445 vifl *_vlr ); // valeur insérée
446
447 //******************************************************************************
448 //
449 // lecture en mémoire
450 // h
451
452 ty_RSLT lct_mem( char *_ptr , // ptr de base
453 ulong _pos , // position (base 1)
454
455 char *_vlr ); // valeur lue
456
457 //******************************************************************************
458 // lecture en mémoire (int et ty_RSLT) h
459
460 ty_RSLT lct_mem( int *_ptr , // ptr de base
461 ulong _pos , // position (base 1)
462
463 int *_vlr ); // valeur lue
464
465 //******************************************************************************
466 // lecture en mémoire h
467
468 ty_RSLT lct_mem( uchar *_ptr , // ptr de base
469 ulong _pos , // position (base 1)
470
471 uchar *_vlr ); // valeur lue
472
473 //******************************************************************************
474 //
475 // lecture en mémoire
476 // h
477
478 ty_RSLT lct_mem( ulong *_ptr , // ptr de base
479 ulong _pos , // position (base 1)
480
481 ulong *_vlr ); // valeur lue
482
483 //******************************************************************************
484 //
485 // lecture en mémoire
486 // h
487
488 ty_RSLT lct_mem( vifl *_ptr , // ptr de base
489 ulong _pos , // position (base 1)
490
491 vifl *_vlr ); // valeur lue
492
493 //******************************************************************************
494 //
495 // lecture en mémoire
496 // h
497
498 ty_RSLT lct_mem( void *_ptr , // ptr de base
499 ulong _pos , // position (base 1)
500 ulong _dim , // dimension en octets de chaque élément
501
502 void *_vlr ); // élément lu
503
504 //******************************************************************************
505 //
506 // lecture dans un tableau
507 // h
508
509 ty_RSLT lct_tab( lint *_ptr , // ptr de base (1ère ligne, 1ère colonne)
510 ulong _nbr_col , // nombre de colonnes du tableau
511 ulong _no_lig , // numéro de la ligne (base 1)
512 ulong _no_col , // numéro de la colonne (base 1)
513
514 lint *_vlr ); // valeur à lire
515
516 //******************************************************************************
517 //
518 // lecture dans un tableau
519 // h
520
521 ty_RSLT lct_tab( ulong *_ptr , // ptr de base (1ère ligne, 1ère colonne)
522 ulong _nbr_col , // nombre de colonnes du tableau
523 ulong _no_lig , // numéro de la ligne (base 1)
524 ulong _no_col , // numéro de la colonne (base 1)
525
526 ulong *_vlr ); // valeur à lire
527
528 //******************************************************************************
529 //
530 // lecture dans un tableau
531 // h
532
533 ty_RSLT lct_tab( vifl *_ptr , // ptr de base (1ère ligne, 1ère colonne)
534 ulong _nbr_col , // nombre de colonnes du tableau
535 ulong _no_lig , // numéro de la ligne (base 1)
536 ulong _no_col , // numéro de la colonne (base 1)
537
538 vifl *_vlr ); // valeur à lire
539
540 //******************************************************************************
541 //
542 // entrée dans une procédure
543 // h
544
545 ty_RSLT entree_proc( char *_nom_proc );
546
547 //******************************************************************************
548 //
549 // sortie d'une procédure
550 // h
551
552 ty_RSLT sortie_proc( char *_nom_proc );
553
554 //******************************************************************************
555 //
556 // arrêt de l'exécution d'un programme pendant nbr_de_secondes secondes
557 // h
558
559 ty_RSLT delai( double _nbr_de_secondes );
560
561 //******************************************************************************
562 //
563 // départ du chronomètre
564 // h
565
566 ty_RSLT depart_chrono( void );
567
568 //******************************************************************************
569 //
570 // départ du chronomètre
571 // h
572
573 ty_RSLT depart_chrono_2( void );
574
575 //******************************************************************************
576 //
577 // arrêt du chronomètre
578 // h
579
580 ty_RSLT arret_chrono( void );
581
582 //******************************************************************************
583 //
584 // arrêt du chronomètre
585 // h
586
587 ty_RSLT arret_chrono_2( void );
588
589 //******************************************************************************
590 //
591 // affiche le temps chronomètré
592 // h
593
594 ty_RSLT affiche_chrono( void );
595
596 //******************************************************************************
597 //
598 // affiche le temps chronomètré
599 // h
600
601 ty_RSLT affiche_chrono_2( void );
602
603 //******************************************************************************
604 //
605 // conversion d'une chaine de caractères en int
606 //
607 // _ptr_cc -> ptr vers la cc
608 //
609 // _x -> ptr vers le int
610 // h
611
612 ty_RSLT cnv_cc_int(char *_ptr_cc, int *_x);
613
614 //******************************************************************************
615 //
616 // conversion d'une chaine de caractères en vifl
617 //
618 // _ptr_cc -> ptr vers la cc
619 //
620 // _x -> ptr vers le vifl
621 // h
622
623 ty_RSLT cnv_cc_vifl(char *_ptr_cc, vifl *_x);
624
625 //******************************************************************************
626 //
627 // conversion d'une chaine de caractères en uint.
628 //
629 // _ptr_cc -> ptr vers la cc
630 //
631 // _x -> ptr vers le uint.
632 // h
633
634 ty_RSLT cnv_cc_uint(char *_ptr_cc, uint *_x);
635
636 //******************************************************************************
637 //
638 // conversion d'une chaine de caractères en ulong
639 //
640 // _ptr_cc -> ptr vers la cc
641 //
642 // _x -> ptr vers le ulong
643 // h
644
645 ty_RSLT cnv_cc_ulong(char *_ptr_cc, ulong *_x);
646
647 //******************************************************************************
648 //
649 // conversion d'un ulong en chaine de caractères
650 //
651 // _cc doit pourvoir contenir au moins 11 caractères
652 // h
653
654 ty_RSLT cnv_ulong_cc_v1( ulong _x ,
655 char *_cc );
656
657 //******************************************************************************
658 //
659 // conversion d'un ulong en chaine de caractères
660 //
661 // on conserve les zéros à gauche
662 //
663 // _cc doit pourvoir contenir au moins 11 caractères
664 // h
665
666 ty_RSLT cnv_ulong_cc_v2( ulong _x ,
667 char *_cc );
668
669 //******************************************************************************
670 //
671 // conversion d'un vifl en chaine de caractères
672 //
673 // _type_fmt -> basé sur les décimales = co_0000_format_dcm
674 // -> basé sur tous les chiffres disponibles = co_0000_format_tcd
675 //
676 // _ntn_stf -> si l'exposant est toujours présent = co_oui
677 // si l'exposant est jamais présent = co_non
678 // si l'exposant est présent au besoin = co_peut_etre
679 //
680 // _pcs -> précision (nbr de dcm)
681 //
682 // Renvoie co_pas_de_probleme -> si tout s'est bien passé
683 // co_probleme_cnv -> si on ne peut satisfaire les exigences de
684 // formatage
685 // co_probleme -> pour tout autre problème
686 // h
687 /*
688 ty_RSLT cnv_vifl_cc( char *_ptr_cc ,
689 int _type_fmt ,
690 int _ntn_stf ,
691 int _pcs ,
692 vifl *_x );
693 */
694 //******************************************************************************
695 //
696 // élimination des espaces au début d'une chaine de caractères
697 //
698 // _ptr_cc_entree -> ptr vers la cc à l'entrée
699 //
700 // _ptr_cc_sortie -> ptr vers (dans) la cc à la sortie
701 // h
702
703 ty_RSLT elmn_esp_debut(char *_ptr_cc_entree, char **_ptr_cc_sortie);
704
705 //******************************************************************************
706 //
707 // élimination des espaces à la fin d'une chaine de caractères
708 //
709 // _ptr_cc -> ptr vers la cc
710 // h
711
712 ty_RSLT elmn_esp_fin(char *_ptr_cc);
713
714 //******************************************************************************
715 //
716 // ordre de grandeur en base 10
717 //
718 // exemples: *_x ord_grdr
719 //
720 // 5347 3
721 // 347 2
722 // 47 1
723 // 7 0
724 // .8 -1
725 // .08 -2
726 //
727 // ... ...
728 // h
729
730 ty_RSLT ord_grdr(vifl *_x, int *_ord_grdr);
731
732 //******************************************************************************
733 //
734 // initialisation de bib_0000
735 // h
736
737 ty_RSLT init_bib_0000( void );
738
739 //******************************************************************************
740 //
741 // finitialisation de bib_0000
742 // h
743
744 ty_RSLT finit_bib_0000( void );
745
746 #endif

Properties

Name Value
svn:executable