30 cout <<
" Compressed array is empty.\n";
36 cout <<
"\n Number of layers :"<<
nLayer <<
"\n";
47 "|layer|compressed |uncompressed| ratio |",
48 "kBSW|sh,lo| shift | scale | opt |");
54 if ((ncd + 2) >
size())
break;
68 n32 =
data[++ncd] & 0xFFFF;
69 n16 = (
data[ncd]>>16) & 0xFFFF;
72 n32 =
data[++ncd] & 0xFF;
73 n16 = (
data[ncd]>>8) & 0xFF;
74 Bias = short((
data[ncd]>>16) & 0xFFFF);
78 cout <<
" unCompress() error: invalid layer number "<<
i+1 <<
"\n";
92 r = double(n16)/double(n32);
94 printf(
"|%4d |%10d |%11d |%9.3f |%3d |%2d,%2d|%8d",
102 cout <<
" Total compressed length : "
103 <<
size()*
sizeof(*data) <<
" bytes.\n";
104 cout <<
" Total uncompressed length : "
107 cout <<
" Overall compression ratio : "
108 << double(nSample*2)/double(
size()*
sizeof(*data))<<
"\n\n";
113 if (
this != &a && n > 0) {
127 size_t nA = a.
size();
132 pnew =
new unsigned int[
size() + a.
size()];
133 for (i = 0; i < nZ; i++) pnew[i] =
data[i];
135 for (i = 0; i < nA; i++) pnew[i] = a.
data[i];
137 cout<<nZ<<
" "<<nA<<
"\n";
139 cout<<nZ<<
" "<<nA<<
"\n";
152 const char *
mode =
"wb";
153 if (app == 1) mode = (
char*)
"ab";
156 if ( (fp = fopen(fname, mode)) == NULL ) {
157 cout <<
" DumpRDC() error: cannot open file " << fname <<
". \n";
161 int n =
size() *
sizeof(*data);
162 fwrite(
data, n, 1, fp);
170 if(!F.
size())
return 0.;
174 size_t N = F.
size()-1;
175 register double *pF = F.
data;
176 register double x = 0.;
177 register double y = pF[0];
180 loss = sqrt(0.12*loss);
190 if(x<0)
optz |= 0x80;
191 if(x>0)
optz |= 0x100;
194 if(scale <=0.) scale = 1.;
198 bias = (pF[
N]-pF[0])/(N+1);
205 bias -= (N&1) ? 2*pF[N]/(N+1) : 0.;
216 if(
fabs(pF[i]) >
fabs(y)) y = pF[i];
220 x = (
optz & 0x180) ? pF[0] : bias;
222 y /= (scale>0.) ? scale : 1;
224 bias = double(1<<(
sizeof(
short)*8-1))-1.;
225 scale *= (
fabs(y) > bias) ?
fabs(y)/bias : 1.;
226 if(scale <=0.) scale = 1.;
240 if(!F.
size())
return;
244 size_t n16 = F.
size();
248 register double *pF = F.
data;
249 register short *pS = S.
data;
253 if(n16&1 &&
optz&0x100)
262 pS[i+1] = (
wint(s*pF[i+1]) + x +
mean);
264 if(!(n16&1)) pS[N] = -
wint(s*pF[N])-
wint(s*pF[N-1])+
mean;
270 pS[i+1] =
wint(s*pF[i+1]) - x -
mean;
276 pS[0] = (
optz & 0x100) ? -mean : mean;
280 for(i=0; i<n16; i++){
288 if(!F.
size())
return;
294 register double *pF = F.
data;
295 register short *pS = S.
data;
300 pS[i] = (pF[i]>=0.) ? 1 : -1;
313 if(F.
size()<1)
return 0;
320 if(
Bias |= 0) optz |= 0x8;
321 if(
Scale != 1.) optz |= 0x10;
345 for (i = 0; i < 17; i++) {h[
i]=0; g[
i]=0;}
347 for (i = 0; i < n16; i++) {
350 for(k=0; (1<<
k) < y; k++);
354 if(m == x) g[
k] += 1;
378 for (i = 16; i > 0; i--) {
380 if (m == 0)
kLong = i-1;
381 m0 = g[i-1]<h[0] ? g[i-1] : h[0];
384 if(m+m0 > 0)
for(ksw=0; (1<<ksw) < (n16/(m+m0)+2); ksw++);
385 ksw = ksw<15 ? ksw+2 : 16;
387 L = ((m+m0)*ksw + (n16-m-m0)*(i-1) + m*
kLong)/8 + 1;
416 unsigned int bsw = 0;
418 maxns = (1<<(
kBSW-1)) - 1;
420 int lcd = 6 + Lmin + n16/maxns/2 + 2;
421 unsigned int *
cd =
new unsigned int[lcd];
423 for(i=0; i<lcd; i++) cd[i]=0;
432 jmax = ((j+maxns) < n16) ? j+maxns : n16;
435 while (j<jmax && dt[j]==0) j++;
437 while (j<jmax &&
wabs(dt[j])<=m && dt[
j] !=
Zero) j++;
440 if(ns > maxns) ns = maxns;
446 if(
kShort == 0 && dt[j] != 0) bsw += 1;
484 if(ncd >= (1<<
sizeof(
short)*4))
optz |= 1;
485 if(n16 >= (1<<
sizeof(
short)*4))
optz |= 1;
486 if(ncd >= (1<<
sizeof(
short)*8))
optz |= 2;
487 if(n16 >= (1<<
sizeof(
short)*8))
optz |= 2;
493 cd[0] |= ((
kShort & 0x1F) << 26);
494 cd[0] |= ((
kLong & 0x1F) << 21);
495 cd[0] |= ((
kBSW & 0x1F) << 16);
496 cd[0] |= ((
optz & 0xFFFF) );
504 cd[1] |= (n16 & 0xFFFF) << 16;
505 cd[1] |= (n32 & 0xFFFF);
508 cd[1] |= (*((
unsigned short *)&
Bias) & 0xFFFF) << 16;
509 cd[1] |= (n16 & 0xFF) << 8;
510 cd[1] |= (n32 & 0xFF);
514 cd[nLSW++] |= (*((
unsigned short *)&
Bias) & 0xFFFF);
517 cd[nLSW++] |= (*((
unsigned int *)&
Scale) & 0xFFFF);
524 unsigned int *p =
data + N + nLSW - cdLSW;
526 for(i=0; i<(
int)nLSW; i++)
data[i+N] = cd[i];
527 for(i=cdLSW; i<ncd; i++) p[i] = cd[i];
534 return size()*
sizeof(*data);
551 if(n == 0 || k == 0)
return 0;
554 for (
int i = 0;
i <
n;
i++) {
557 u = x >= 0 ? (u<<1)+1 : u<<1;
611 if (m <=0 || m >
nLayer) {
612 cout <<
" UnCompress() error: layer "<< m<<
" is unavailable.\n";
626 if ((ncd + 2) > (
int)
size()) {
627 cout <<
" unCompress() error: invalid layer number "<< mm <<
"\n";
639 n32 =
data[ncd+1] & 0xFFFF;
640 n16 = (
data[ncd+1]>>16) & 0xFFFF;
643 n32 =
data[ncd+1] & 0xFF;
644 n16 = (
data[ncd+1]>>8) & 0xFF;
645 Bias = short((
data[ncd+1]>>16) & 0xFFFF);
652 cout <<
" unCompress() error: invalid layer number "<< mm+1 <<
"\n";
665 if(
optz & 0x2) ncd++;
679 register int *pw = w.
data;
688 cout <<
"WaveRDC:unCompress - memory allocation error.\n";
707 cout <<
" unCompress() error: invalid number of short words "<< ns <<
"\n";
717 for (
int i = 0; i < ns; i++) pw[j+i] = 0;
728 if(j<n16) pw[
j] =
Zero;
737 for(i=1; i<n16; i++) pw[i] += pw[i-1]+mean;
738 if(
optz & 0x100)
for(i=1; i<n16; i+=2) pw[i] *= -1;
754 int lul = 8*
sizeof(u);
755 unsigned int mask = (1<<
k) - 1;
781 if(n == 0 || k == 0)
return 0;
784 for (
int i = 0;
i <
n;
i++) {
virtual size_t size() const
static double g(double e)
printf("total live time: non-zero lags = %10.1f \n", liveTot)
wavearray< double > a(hp.size())
double getStatistics(double &mean, double &rms) const
cout<< endl;cout<< "ts size = "<< ts.size()<< " ts rate = "<< ts.rate()<< endl;tf.Forward(ts, wdm);int levels=tf.getLevel();cout<< "tf size = "<< tf.size()<< endl;double dF=tf.resolution();double dT=1./(2 *dF);cout<< "rate(hz) : "<< RATE<< "\t layers : "<< nLAYERS<< "\t dF(hz) : "<< dF<< "\t dT(ms) : "<< dT *1000.<< endl;int itime=TIME_PIXEL_INDEX;int ifreq=FREQ_PIXEL_INDEX;int index=(levels+1)*itime+ifreq;double time=itime *dT;double freq=(ifreq >0)?ifreq *dF:dF/4;cout<< endl;cout<< "PIXEL TIME = "<< time<< " sec "<< endl;cout<< "PIXEL FREQ = "<< freq<< " Hz "<< endl;cout<< endl;wavearray< double > x
size_t getLSW(size_t opt)
float getScale(const waveDouble &, double)
void getSign(const waveDouble &, waveShort &)
void waveAssign(wavearray< Tout > &aout, wavearray< Tin > &ain)
WaveRDC & operator=(const WaveRDC &)
virtual double mean() const
void getShort(const waveDouble &, waveShort &)
virtual int DumpRDC(const char *, int=0)
WaveRDC & operator+=(const WaveRDC &)
double fabs(const Complex &x)
Meyer< double > S(1024, 2)
int unCompress(waveFloat &, int level=1)
int Pop(int *, int, int &, int, int)
int Compress(const waveShort &)
virtual void resize(unsigned int)
int Push(short *, int, unsigned int *, int &, int, int)