Changeset 1156 in Sophya for trunk/SophyaLib/TArray/basarr.cc


Ignore:
Timestamp:
Aug 29, 2000, 6:10:32 PM (25 years ago)
Author:
ansari
Message:

Introduction du type sa_size_t (taille des tableaux), operateur - (TArray::operator - et NegateElt()) - Reza 29/8/2000

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/TArray/basarr.cc

    r1103 r1156  
    2121     {"???", "Size(int )", "IsPacked(int )"
    2222     ,"Stride(int )", "ElemCheckBound()", "operator()" };
    23 uint_4 BaseArray::max_nprt_ = 50;
    24 uint_4 BaseArray::prt_lev_ = 0;
     23int_4 BaseArray::max_nprt_ = 50;
     24int_4 BaseArray::prt_lev_ = 0;
    2525short  BaseArray::default_memory_mapping = CMemoryMapping;
    2626short  BaseArray::default_vector_type = ColumnVector;
    27 uint_8 BaseArray::openmp_size_threshold = 200000;
     27sa_size_t BaseArray::openmp_size_threshold = 200000;
    2828
    2929// ------ Methodes statiques globales --------
     
    3434  \param lev  : print level
    3535*/
    36 void BaseArray::SetMaxPrint(uint_4 nprt, uint_4 lev)
     36void BaseArray::SetMaxPrint(int_4 nprt, int_4 lev)
    3737{
    3838  max_nprt_ = nprt;
     
    4444  \param thr : thresold value
    4545*/
    46 void BaseArray::SetOpenMPSizeThreshold(uint_8 thr)
     46void BaseArray::SetOpenMPSizeThreshold(sa_size_t thr)
    4747{
    4848  openmp_size_threshold = thr;
     
    5858  \return Total size of the array
    5959*/
    60 uint_8 BaseArray::ComputeTotalSize(uint_4 ndim, const uint_4 * siz, uint_4 step, uint_8 offset)
    61 {
    62   uint_8 rs = step;
    63   for(uint_4 k=0; k<ndim; k++) rs *= siz[k];
     60sa_size_t BaseArray::ComputeTotalSize(int_4 ndim, const sa_size_t * siz, sa_size_t step, sa_size_t offset)
     61{
     62  sa_size_t rs = step;
     63  for(sa_size_t k=0; k<ndim; k++) rs *= siz[k];
    6464  return(rs+offset);
    6565}
     
    251251{
    252252  ndim_ = 0;
    253   for(int k=0; k<BASEARRAY_MAXNDIMS; k++) step_[k] = size_[k] = 0;
     253  for(int_4 k=0; k<BASEARRAY_MAXNDIMS; k++) step_[k] = size_[k] = 0;
    254254  totsize_ = 0;
    255255  minstep_ = 0;
     
    295295  if (arrtype_ == 0) {  // Simple TArray, not a matrix
    296296    smo = true;
    297     for(uint_4 k=0; k<ndim_; k++)
     297    for(int_4 k=0; k<ndim_; k++)
    298298      if (size_[k] != a.size_[k])  return(false);
    299299    return(true);
     
    304304         (size_[macoli_] != a.size_[a.macoli_])  ) return(false);
    305305    if (ndim_ > 2) 
    306       for(uint_4 k=2; k<ndim_; k++)
     306      for(int_4 k=2; k<ndim_; k++)
    307307        if (size_[k] != a.size_[k])  return(false);
    308308    if ( (macoli_ == a.macoli_) && (marowi_ == a.marowi_) ||
     
    316316{
    317317  if (ndim_ < 2)  return;
    318   uint_4 ndim = 0;
    319   uint_4 size[BASEARRAY_MAXNDIMS];
    320   uint_4 step[BASEARRAY_MAXNDIMS];
    321   for(uint_4 k=0; k<ndim_; k++) {
     318  int_4 ndim = 0;
     319  sa_size_t size[BASEARRAY_MAXNDIMS];
     320  sa_size_t step[BASEARRAY_MAXNDIMS];
     321  for(int_4 k=0; k<ndim_; k++) {
    322322    if (size_[k] < 2)  continue;
    323323    size[ndim] = size_[k];
     
    339339{
    340340  if (ndim_ < 2)  return;
    341   uint_4 ndim = 0;
    342   uint_4 size[BASEARRAY_MAXNDIMS];
    343   uint_4 step[BASEARRAY_MAXNDIMS];
    344   for(uint_4 k=0; k<ndim_; k++) {
     341  int_4 ndim = 0;
     342  sa_size_t size[BASEARRAY_MAXNDIMS];
     343  sa_size_t step[BASEARRAY_MAXNDIMS];
     344  for(int_4 k=0; k<ndim_; k++) {
    345345    size[ndim] = size_[k];
    346346    step[ndim] = step_[k];
     
    354354
    355355//! return minimum value for step[ndim]
    356 int  BaseArray::MinStepKA() const
    357 {
    358   for(uint_4 ka=0; ka<ndim_; ka++)
     356int_4  BaseArray::MinStepKA() const
     357{
     358  for(int_4 ka=0; ka<ndim_; ka++)
    359359    if (step_[ka] == minstep_) return((int)ka);
    360360  return(0);
     
    362362
    363363//! return maximum value for step[ndim]
    364 int  BaseArray::MaxSizeKA() const
    365 {
    366   int ka = 0;
    367   uint_4 mx = size_[0];
    368   for(uint_4 k=1; k<ndim_; k++) 
     364int_4  BaseArray::MaxSizeKA() const
     365{
     366  int_4 ka = 0;
     367  sa_size_t mx = size_[0];
     368  for(int_4 k=1; k<ndim_; k++) 
    369369    if (size_[k] > mx) {  ka = k;  mx = size_[k]; }
    370370  return(ka);
     
    377377// --------------------------------------------------
    378378//! return position of first element for vector \b i alond \b ka th axe.
    379 uint_8 BaseArray::Offset(uint_4 ka, uint_8 i) const
     379sa_size_t BaseArray::Offset(int_4 ka, sa_size_t i) const
    380380{
    381381
     
    383383  //#ifdef SO_BOUNDCHECKING
    384384  if (ka >= ndim_)
    385     throw RangeCheckError("BaseArray::Offset(uint_4 ka, uint_8 i) Axe KA Error");
     385    throw RangeCheckError("BaseArray::Offset(int_4 ka, sa_size_t i) Axe KA Error");
    386386  if ( i*size_[ka] >= totsize_ ) 
    387     throw RangeCheckError("BaseArray::Offset(uint_4 ka, uint_8 i) Index Error");
     387    throw RangeCheckError("BaseArray::Offset(int_4 ka, sa_size_t i) Index Error");
    388388  //#endif
    389   uint_4 idx[BASEARRAY_MAXNDIMS];
    390   uint_4 k;
    391   uint_8 rest = i;
     389  sa_size_t idx[BASEARRAY_MAXNDIMS];
     390  int_4 k;
     391  sa_size_t rest = i;
    392392  idx[ka] = 0;
    393393  for(k=0; k<ndim_; k++) {
     
    395395    idx[k] = rest%size_[k];   rest /= size_[k];
    396396  }
    397   uint_8 off = offset_;
     397  sa_size_t off = offset_;
    398398  for(k=0; k<ndim_; k++)  off += idx[k]*step_[k];
    399399  return (off);
     
    401401
    402402//! return position of element \b ip.
    403 uint_8 BaseArray::Offset(uint_8 ip) const
     403sa_size_t BaseArray::Offset(sa_size_t ip) const
    404404{
    405405  if ( (ndim_ < 1) || (ip == 0) )  return(offset_);
    406406  //#ifdef SO_BOUNDCHECKING
    407407  if (ip >= totsize_)
    408     throw RangeCheckError("BaseArray::Offset(uint_8 ip) Out of range index ip");
     408    throw RangeCheckError("BaseArray::Offset(sa_size_t ip) Out of range index ip");
    409409  //#endif
    410410
    411   uint_4 idx[BASEARRAY_MAXNDIMS];
    412   uint_4 k;
    413   uint_8 rest = ip;
     411  sa_size_t idx[BASEARRAY_MAXNDIMS];
     412  int_4 k;
     413  sa_size_t rest = ip;
    414414  for(k=0; k<ndim_; k++) {
    415415    idx[k] = rest%size_[k];   rest /= size_[k];
     
    417417  //#ifdef SO_BOUNDCHECKING
    418418  if (rest != 0)
    419     throw PError("BaseArray::Offset(uint_8 ip) GUG !!! rest != 0");
     419    throw PError("BaseArray::Offset(sa_size_t ip) GUG !!! rest != 0");
    420420  //#endif
    421421//   if (rest != 0) cerr << " BUG ---- BaseArray::Offset( " << ip << " )" << rest << endl;
     
    423423//   for(k=0; k<ndim_; k++) cerr << idx[k] << "," ;
    424424//   cerr << " ZZZZ " << endl;
    425   uint_8 off = offset_;
     425  sa_size_t off = offset_;
    426426  for(k=0; k<ndim_; k++)  off += idx[k]*step_[k];
    427427  return (off);
     
    429429
    430430//! return various parameters for double loop operations on two arrays.
    431 void BaseArray::GetOpeParams(const BaseArray& a, bool smo, int& ax, int& axa, uint_8& step,
    432                              uint_8& stepa, uint_8& gpas, uint_8& naxa)
     431void BaseArray::GetOpeParams(const BaseArray& a, bool smo, int_4& ax, int_4& axa, sa_size_t& step,
     432                             sa_size_t& stepa, sa_size_t& gpas, sa_size_t& naxa)
    433433{
    434434  if (smo) { // Same memory organisation
     
    465465  os << "\n--- " << InfoString() ;
    466466  os << " ND=" << ndim_ << " SizeX*Y*...= " ;
    467   for(uint_4 k=0; k<ndim_; k++) {
     467  for(int_4 k=0; k<ndim_; k++) {
    468468    os << size_[k];
    469469    if (k<ndim_-1)  os << "x";
     
    472472  if (prt_lev_ > 0) {
    473473    os <<  " TotSize= " << totsize_ << " Step(X Y ...)="  ;
    474     for(uint_4 k=0; k<ndim_; k++)     os << step_[k] << "  " ;
     474    for(int_4 k=0; k<ndim_; k++)     os << step_[k] << "  " ;
    475475    os << " Offset= " << offset_  << endl;
    476476  }
     
    509509  \return string \b exmsg for explanation in case of problems
    510510 */
    511 bool BaseArray::UpdateSizes(uint_4 ndim, const uint_4 * siz, uint_4 step, uint_8 offset, string & exmsg)
     511bool BaseArray::UpdateSizes(int_4 ndim, const sa_size_t * siz, sa_size_t step, sa_size_t offset, string & exmsg)
    512512{
    513513  if (ndim >= BASEARRAY_MAXNDIMS) {
     
    524524
    525525  totsize_ = 1;
    526   uint_4 k;
     526  int_4 k;
    527527  for(k=0; k<BASEARRAY_MAXNDIMS; k++) {
    528528    size_[k] = 1;
     
    560560  \return string \b exmsg for explanation in case of problems
    561561 */
    562 bool BaseArray::UpdateSizes(uint_4 ndim, const uint_4 * siz, const uint_4 * step, uint_8 offset, string & exmsg)
     562bool BaseArray::UpdateSizes(int_4 ndim, const sa_size_t * siz, const sa_size_t * step, sa_size_t offset, string & exmsg)
    563563{
    564564  if (ndim >= BASEARRAY_MAXNDIMS) {
     
    570570
    571571  totsize_ = 1;
    572   uint_4 k;
     572  int_4 k;
    573573  for(k=0; k<BASEARRAY_MAXNDIMS; k++) {
    574574    size_[k] = 1;
    575575    step_[k] = 0;
    576576  }
    577   uint_4 minstep = step[0];
     577  sa_size_t minstep = step[0];
    578578  for(k=0; k<ndim; k++) {
    579579    size_[k] = siz[k] ;
     
    588588    exmsg += " Size Error";  return false;
    589589  }
    590   uint_8 plast = 0;
     590  sa_size_t plast = 0;
    591591  for(k=0; k<ndim; k++)   plast += (siz[k]-1)*step[k];
    592592  if (plast == minstep*totsize_ )  moystep_ = minstep;
     
    623623
    624624  totsize_ = 1;
    625   uint_4 k;
     625  int_4 k;
    626626  for(k=0; k<BASEARRAY_MAXNDIMS; k++) {
    627627    size_[k] = 1;
    628628    step_[k] = 0;
    629629  }
    630   uint_4 minstep = a.step_[0];
     630  sa_size_t minstep = a.step_[0];
    631631  for(k=0; k<a.ndim_; k++) {
    632632    size_[k] = a.size_[k] ;
     
    663663  \return string \b exmsg for explanation in case of problems
    664664 */
    665 void BaseArray::UpdateSubArraySizes(BaseArray & ra, uint_4 ndim, uint_4 * siz, uint_4 * pos, uint_4 * step) const
     665void BaseArray::UpdateSubArraySizes(BaseArray & ra, int_4 ndim, sa_size_t * siz, sa_size_t * pos, sa_size_t * step) const
    666666{
    667667  if ( (ndim > ndim_) || (ndim < 1) )
    668668    throw(SzMismatchError("BaseArray::UpdateSubArraySizes( ... ) NDim Error") );
    669   uint_4 k;
     669  int_4 k;
    670670  for(k=0; k<ndim; k++)
    671671    if ( (siz[k]*step[k]+pos[k]) > size_[k] ) 
    672672      throw(SzMismatchError("BaseArray::UpdateSubArraySizes( ... ) Size/Pos Error") );
    673   uint_8 offset = offset_;
     673  sa_size_t offset = offset_;
    674674  for(k=0; k<ndim_; k++) {
    675675    offset += pos[k]*step_[k];
Note: See TracChangeset for help on using the changeset viewer.