source: Sophya/trunk/Poubelle/archTOI.old/compress.h@ 315

Last change on this file since 315 was 315, checked in by ansari, 26 years ago

Archeops 24, gestion byte-swap

File size: 3.8 KB
Line 
1
2/************************************************************************/
3/******* *********/
4/******* compresseur de données rangées en ligne *********/
5/******* *********/
6/************************************************************************/
7
8#ifndef int4
9#ifdef __alpha
10#define int4 int
11#else
12#define int4 long
13#endif
14#endif
15
16
17
18/* comprime une suite de n valeures (dans des mots de 32 bit) */
19/* valeures codées sur 22 bit maximum */
20/* resultat de la compression codé sur 7 bit + exposant */
21/* n doit etre multiple de 4 */
22/* le fichier resultat a pour longueur n/4 + 1 mot de 32 bit */
23/* 4 * n octets ==> n + 4 octets */
24/* pour n = 72 en sortie 19 mots = 76 octets */
25
26void compress_7_1(int4* in,int4*out,int n,int pasin);
27void decompress_7_1(int4* in,int4*out,int n);
28
29
30/* comprime une suite de n valeures (dans des mots de 32 bit) */
31/* valeures codées sur 16 bit maximum */
32/* resultat de la compression codé sur 4 bit + exposant */
33/* n doit etre ( multiple de 7 ) + 2 */
34/* le fichier resultat a pour longueur (n-2)/7 + 1 mot de 32 bit */
35/* 4 * n octets ==> 4 * (n-2) / 7 + 4 octets */
36/* pour n = 72 en sortie 11 mots = 44 octets */
37
38void compress_4_1(int4* in,int4*out,int n,int pasin);
39void decompress_4_1(int4* in,int4*out,int n);
40
41
42/* comprime une suite de n valeures (dans des mots de 32 bit) */
43/* valeures codées sur 16 bit maximum */
44/* resultat de la compression codé sur 3 bit + exposant */
45/* n doit etre ( multiple de 9 ) */
46/* le fichier resultat a pour longueur n/9 + 1 mot de 32 bit */
47/* 4 * n octets ==> 4 * n / 9 + 4 octets */
48/* pour n = 72 en sortie 9 mots = 36 octets */
49
50
51void compress_3_1(int4* in,int4*out,int n,int pasin);
52void decompress_3_1(int4* in,int4*out,int n);
53
54/************************************************************************/
55/*********** *********/
56/*********** compresseur de données rangées par paires *********/
57/*********** (data bolo par exemple) *********/
58/*********** *********/
59/************************************************************************/
60
61
62
63/* comprime une suite de n valeures (dans des mots de 32 bit) */
64/* valeures codées sur 21 bit maximum */
65/* resultat de la compression codé sur 7 bit + exposant */
66/* n doit etre multiple de 4 */
67/* le fichier resultat a pour longueur n/4 + 1 mot de 32 bit */
68/* 4 * n octets ==> n + 4 octets */
69/* pour n = 72 en sortie 19 mots = 76 octets */
70
71
72void compress_7_2(int4* in,int4*out,int n,int pasin);
73void decompress_7_2(int4* in,int4*out,int n);
74
75
76
77/* comprime une suite de n valeures (dans des mots de 32 bit) */
78/* valeures codées sur 32 bit maximum */
79/* resultat de la compression codé sur 4 bit + exposant */
80/* n doit etre ( multiple de 7 ) + 2 */
81/* le fichier resultat a pour longueur (n-2)/7 + 2 mot de 32 bit */
82/* 4 * n octets ==> 4 * (n-2) / 7 + 8 octets */
83/* pour n = 72 en sortie 12 mots = 48 octets */
84
85
86
87void compress_4_2(int4* in,int4*out,int n,int pasin);
88void decompress_4_2(int4* in,int4*out,int n);
89
90
91
92/************************************************************************/
93/*********** *********/
94/*********** definitions communes pour les compresseurs *********/
95/*********** *********/
96/************************************************************************/
97
98/*Les valeures de la table d'entree sont consideres comme toujopurs positives */
99/* les ecarts sont calculés signés sur 32 bit avant d'etre tronconnés */
100
101#define shif(ec,k,q) {while(ec>q)if(k<kmax_){k++;q<<=1;}else ec=q;while(ec<-q)if(k<kmax_){k++;q<<=1;}else ec=-q;}
102#define recup(ec,sss,k) {ec=((R>>sss)&emak_);if(ec & sgbi_ ) ec|= sign_ ; ec<<=k;}
103#define arrondi(ec,k) ((ec & filtre[k]) +( (ec & test[k]) <<1 ) )
104
Note: See TracBrowser for help on using the repository browser.