bitvector mantissa implemented
This commit is contained in:
parent
6c22365a48
commit
b63373fe7b
18
bitvector.h
18
bitvector.h
@ -93,6 +93,24 @@ r.clear();
|
|||||||
for(int i=0; i<n; ++i) if(v[i]) r[i]=1;
|
for(int i=0; i<n; ++i) if(v[i]) r[i]=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//mantissa of a floating number between 0 and 1
|
||||||
|
template <typename T>
|
||||||
|
bitvector mantissa(const T &x, int nbits)
|
||||||
|
{
|
||||||
|
if(x<0||x>=1) laerror("number not normalized in bitvector mantissa");
|
||||||
|
bitvector b(nbits);
|
||||||
|
b.clear();
|
||||||
|
T y= x+x;
|
||||||
|
for(int i=0; i<nbits; ++i)
|
||||||
|
{
|
||||||
|
int n= (int) y;
|
||||||
|
if(n&1) b.set(i);
|
||||||
|
y += y;
|
||||||
|
}
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void bitvector_compress(bitvector &r, const NRVec<T> &v)
|
void bitvector_compress(bitvector &r, const NRVec<T> &v)
|
||||||
{
|
{
|
||||||
|
9
t.cc
9
t.cc
@ -2574,7 +2574,7 @@ cout <<test;
|
|||||||
cout <<"Error = "<<(expitszsz-test).norm()<<endl;
|
cout <<"Error = "<<(expitszsz-test).norm()<<endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(1)
|
if(0)
|
||||||
{
|
{
|
||||||
NRVec<double> x({1,2,3});
|
NRVec<double> x({1,2,3});
|
||||||
NRVec<double> y({4,5,6});
|
NRVec<double> y({4,5,6});
|
||||||
@ -2585,4 +2585,11 @@ x.concatme(y);
|
|||||||
cout <<x;
|
cout <<x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(1)
|
||||||
|
{
|
||||||
|
double x;
|
||||||
|
cin>>x;
|
||||||
|
cout <<mantissa(x,20)<<endl;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user