double ks_distance(const histogram<double>& sample1,const histogram<double>& sample2) { //let's include the whole range double _min=std::min(sample1.min(),sample2.min()); double _max=std::max(sample1.max(),sample2.max()); double _range=_max-_min; histogram<double> _s1(sample1); histogram<double> _s2(sample2); _s1.convert_to_commulative(); _s2.convert_to_commulative(); int _size=std::max(_s1.size(),_s2.size())*2; double _bin=_range/_size; double dist=0.0; double v=0.0; for(int i=0;i<_size;i++,v+=_bin) { double d=fabs(_s1[v]-_s2[v]); if(d>dist) dist=d; } return dist; }
//-------------------------------------------------------------- void DataStream::writeInt16BE(i16 n) { #ifdef AZURA_LITTLE_ENDIAN _s2((_2*)&n); #endif writeInt16(n); }
//-------------------------------------------------------------- void DataStream::writeInt16(i16 n) { #ifdef AZURA_BIG_ENDIAN _s2((_2*)&n); #endif _file->write((u8*)&n, sizeof(n)); }
//-------------------------------------------------------------- void DataStream::readUint16BE(u16& n) { _file->read((u8*)&n, sizeof(n)); #ifdef AZURA_LITTLE_ENDIAN _s2((_2*)&n); #endif }
//-------------------------------------------------------------- void DataStream::readInt16(i16& n) { _file->read((u8*)&n, sizeof(n)); #ifdef AZURA_BIG_ENDIAN _s2((_2*)&n); #endif }