48 cout <<
" Compressed array is empty.\n";
54 cout <<
"\n Number of layers :"<<
nLayer <<
"\n";
65 "|layer|compressed |uncompressed| ratio |",
66 "kBSW|sh,lo| shift | scale | opt |");
72 if ((ncd + 2) >
size())
break;
86 n32 =
data[++ncd] & 0xFFFF;
87 n16 = (
data[ncd]>>16) & 0xFFFF;
90 n32 =
data[++ncd] & 0xFF;
92 Bias = short((
data[ncd]>>16) & 0xFFFF);
96 cout <<
" unCompress() error: invalid layer number "<<
i+1 <<
"\n";
108 n32 *=
sizeof(*data);
109 n16 *=
sizeof(short);
110 r = double(n16)/double(n32);
112 printf(
"|%4d |%10d |%11d |%9.3f |%3d |%2d,%2d|%8d",
120 cout <<
" Total compressed length : " 121 <<
size()*
sizeof(*data) <<
" bytes.\n";
122 cout <<
" Total uncompressed length : " 125 cout <<
" Overall compression ratio : " 126 << double(nSample*2)/double(
size()*
sizeof(*data))<<
"\n\n";
131 if (
this != &a && n > 0) {
145 size_t nA = a.
size();
150 pnew =
new unsigned int[
size() + a.
size()];
151 for (i = 0; i < nZ; i++) pnew[i] =
data[i];
153 for (i = 0; i < nA; i++) pnew[i] = a.
data[i];
155 cout<<nZ<<
" "<<nA<<
"\n";
157 cout<<nZ<<
" "<<nA<<
"\n";
170 const char *
mode =
"wb";
171 if (app == 1) mode = (
char*)
"ab";
174 if ( (fp = fopen(fname, mode)) == NULL ) {
175 cout <<
" DumpRDC() error: cannot open file " << fname <<
". \n";
179 int n =
size() *
sizeof(*data);
180 fwrite(
data, n, 1, fp);
188 if(!F.
size())
return 0.;
192 size_t N = F.
size()-1;
193 register double *pF = F.
data;
194 register double x = 0.;
195 register double y = pF[0];
198 loss = sqrt(0.12*loss);
208 if(x<0)
optz |= 0x80;
209 if(x>0)
optz |= 0x100;
212 if(scale <=0.) scale = 1.;
216 bias = (pF[
N]-pF[0])/(N+1);
223 bias -= (N&1) ? 2*pF[N]/(N+1) : 0.;
234 if(
fabs(pF[i]) >
fabs(y)) y = pF[i];
238 x = (
optz & 0x180) ? pF[0] : bias;
240 y /= (scale>0.) ? scale : 1;
242 bias = double(1<<(
sizeof(
short)*8-1))-1.;
243 scale *= (
fabs(y) > bias) ?
fabs(y)/bias : 1.;
244 if(scale <=0.) scale = 1.;
258 if(!F.
size())
return;
262 size_t n16 = F.
size();
266 register double *pF = F.
data;
267 register short *pS = S.
data;
271 if(n16&1 &&
optz&0x100)
280 pS[i+1] = (
wint(s*pF[i+1]) + x +
mean);
282 if(!(n16&1)) pS[N] = -
wint(s*pF[N])-
wint(s*pF[N-1])+
mean;
288 pS[i+1] =
wint(s*pF[i+1]) - x -
mean;
294 pS[0] = (
optz & 0x100) ? -mean : mean;
298 for(i=0; i<n16; i++){
306 if(!F.
size())
return;
312 register double *pF = F.
data;
313 register short *pS = S.
data;
318 pS[i] = (pF[i]>=0.) ? 1 : -1;
331 if(F.
size()<1)
return 0;
338 if(
Bias |= 0) optz |= 0x8;
339 if(
Scale != 1.) optz |= 0x10;
363 for (i = 0; i < 17; i++) {h[
i]=0; g[
i]=0;}
365 for (i = 0; i < n16; i++) {
368 for(k=0; (1<<
k) < y; k++);
372 if(m == x) g[
k] += 1;
396 for (i = 16; i > 0; i--) {
398 if (m == 0)
kLong = i-1;
399 m0 = g[i-1]<h[0] ? g[i-1] : h[0];
402 if(m+m0 > 0)
for(ksw=0; (1<<ksw) < (n16/(m+m0)+2); ksw++);
403 ksw = ksw<15 ? ksw+2 : 16;
405 L = ((m+m0)*ksw + (n16-m-m0)*(i-1) + m*
kLong)/8 + 1;
434 unsigned int bsw = 0;
436 maxns = (1<<(
kBSW-1)) - 1;
438 int lcd = 6 + Lmin + n16/maxns/2 + 2;
439 unsigned int *
cd =
new unsigned int[lcd];
441 for(i=0; i<lcd; i++) cd[i]=0;
450 jmax = ((j+maxns) < n16) ? j+maxns : n16;
453 while (j<jmax && dt[j]==0) j++;
455 while (j<jmax &&
wabs(dt[j])<=m && dt[
j] !=
Zero) j++;
458 if(ns > maxns) ns = maxns;
464 if(
kShort == 0 && dt[j] != 0) bsw += 1;
502 if(ncd >= (1<<
sizeof(
short)*4))
optz |= 1;
503 if(n16 >= (1<<
sizeof(
short)*4))
optz |= 1;
504 if(ncd >= (1<<
sizeof(
short)*8))
optz |= 2;
505 if(n16 >= (1<<
sizeof(
short)*8))
optz |= 2;
511 cd[0] |= ((
kShort & 0x1F) << 26);
512 cd[0] |= ((
kLong & 0x1F) << 21);
513 cd[0] |= ((
kBSW & 0x1F) << 16);
514 cd[0] |= ((
optz & 0xFFFF) );
522 cd[1] |= (n16 & 0xFFFF) << 16;
523 cd[1] |= (n32 & 0xFFFF);
526 cd[1] |= (*((
unsigned short *)&
Bias) & 0xFFFF) << 16;
527 cd[1] |= (n16 & 0xFF) << 8;
528 cd[1] |= (n32 & 0xFF);
532 cd[nLSW++] |= (*((
unsigned short *)&
Bias) & 0xFFFF);
535 cd[nLSW++] |= (*((
unsigned int *)&
Scale) & 0xFFFF);
542 unsigned int *p =
data + N + nLSW - cdLSW;
544 for(i=0; i<(
int)nLSW; i++)
data[i+N] = cd[i];
545 for(i=cdLSW; i<ncd; i++) p[i] = cd[i];
552 return size()*
sizeof(*data);
569 if(n == 0 || k == 0)
return 0;
572 for (
int i = 0;
i <
n;
i++) {
575 u = x >= 0 ? (u<<1)+1 : u<<1;
629 if (m <=0 || m >
nLayer) {
630 cout <<
" UnCompress() error: layer "<< m<<
" is unavailable.\n";
644 if ((ncd + 2) > (
int)
size()) {
645 cout <<
" unCompress() error: invalid layer number "<< mm <<
"\n";
657 n32 =
data[ncd+1] & 0xFFFF;
658 n16 = (
data[ncd+1]>>16) & 0xFFFF;
661 n32 =
data[ncd+1] & 0xFF;
663 Bias = short((
data[ncd+1]>>16) & 0xFFFF);
670 cout <<
" unCompress() error: invalid layer number "<< mm+1 <<
"\n";
683 if(
optz & 0x2) ncd++;
697 register int *pw = w.
data;
706 cout <<
"WaveRDC:unCompress - memory allocation error.\n";
725 cout <<
" unCompress() error: invalid number of short words "<< ns <<
"\n";
735 for (
int i = 0; i < ns; i++) pw[j+i] = 0;
746 if(j<n16) pw[
j] =
Zero;
755 for(i=1; i<n16; i++) pw[i] += pw[i-1]+mean;
756 if(
optz & 0x100)
for(i=1; i<n16; i+=2) pw[i] *= -1;
772 int lul = 8*
sizeof(u);
773 unsigned int mask = (1<<
k) - 1;
799 if(n == 0 || k == 0)
return 0;
802 for (
int i = 0;
i <
n;
i++) {
static double g(double e)
wavearray< double > a(hp.size())
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<< "\ layers : "<< nLAYERS<< "\ dF(hz) : "<< dF<< "\ 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 &)
std::vector< double > xFF
virtual size_t size() const
void getShort(const waveDouble &, waveShort &)
printf("total live time: non-zero lags = %10.1f \, liveTot)
virtual int DumpRDC(const char *, int=0)
WaveRDC & operator+=(const WaveRDC &)
virtual double mean() const
double fabs(const Complex &x)
Meyer< double > S(1024, 2)
int unCompress(waveFloat &, int level=1)
double getStatistics(double &mean, double &rms) const
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)