bug fix for stridedRange

This commit is contained in:
HRN 2025-01-25 19:48:36 +03:30
parent 0fc9eea561
commit debb8fd037
2 changed files with 14 additions and 5 deletions

View File

@ -93,6 +93,7 @@ bool pFlow::contactSearch::boundaryBroadSearch
bTimer_.start(); bTimer_.start();
for(uint32 i=0u; i<6u; i++) for(uint32 i=0u; i<6u; i++)
{ {
output<<" boundarySearch "<< i <<" for iter "<< ti.iter()<<endl;
if(!BoundaryBroadSearch( if(!BoundaryBroadSearch(
i, i,
ti, ti,

View File

@ -154,29 +154,37 @@ inline
bool stridedRange<float>::isMember(float val, float epsilon)const bool stridedRange<float>::isMember(float val, float epsilon)const
{ {
/*if(!isInRange(val)) return false; if(!isInRange(val)) return false;
real dist = val-begin_; real dist = val-begin_;
if(abs( if(abs(
(dist-(static_cast<uint64>((dist+0.01*epsilon)/stride_)*stride_)) (dist-(static_cast<uint64>((dist+0.01*epsilon)/stride_)*stride_))
)<= epsilon) return true; )<= epsilon) return true;
if(equal(val,begin_))return true; if(equal(val,begin_))return true;
if(equal(val,end_))return true; if(equal(val,end_))return true;
return false;*/ return false;
if(!isInRange(val)) return false; /*if(!isInRange(val)) return false;
if(const float dist = val-begin_; abs(remainder(dist,stride_)<= epsilon)) return true; if(const float dist = val-begin_; abs(remainder(dist,stride_)<= epsilon)) return true;
if(equal(val,begin_))return true; if(equal(val,begin_))return true;
if(equal(val,end_))return true; if(equal(val,end_))return true;
return false; return false;*/
} }
template<> template<>
inline inline
bool stridedRange<double>::isMember(double val, double epsilon)const bool stridedRange<double>::isMember(double val, double epsilon)const
{ {
if(!isInRange(val)) return false; /*if(!isInRange(val)) return false;
if(const double dist = val-begin_; abs(remainder(dist,stride_)<= epsilon)) return true; if(const double dist = val-begin_; abs(remainder(dist,stride_)<= epsilon)) return true;
if(equal(val,begin_))return true; if(equal(val,begin_))return true;
if(equal(val,end_))return true; if(equal(val,end_))return true;
return false;*/
if(!isInRange(val)) return false;
real dist = val-begin_;
if(abs(
(dist-(static_cast<uint64>((dist+0.01*epsilon)/stride_)*stride_))
)<= epsilon) return true;
if(equal(val,begin_))return true;
if(equal(val,end_))return true;
return false; return false;
} }