Changeset 1156 in Sophya for trunk/SophyaLib/TArray/basarr.cc
- Timestamp:
- Aug 29, 2000, 6:10:32 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/TArray/basarr.cc
r1103 r1156 21 21 {"???", "Size(int )", "IsPacked(int )" 22 22 ,"Stride(int )", "ElemCheckBound()", "operator()" }; 23 uint_4BaseArray::max_nprt_ = 50;24 uint_4BaseArray::prt_lev_ = 0;23 int_4 BaseArray::max_nprt_ = 50; 24 int_4 BaseArray::prt_lev_ = 0; 25 25 short BaseArray::default_memory_mapping = CMemoryMapping; 26 26 short BaseArray::default_vector_type = ColumnVector; 27 uint_8BaseArray::openmp_size_threshold = 200000;27 sa_size_t BaseArray::openmp_size_threshold = 200000; 28 28 29 29 // ------ Methodes statiques globales -------- … … 34 34 \param lev : print level 35 35 */ 36 void BaseArray::SetMaxPrint( uint_4 nprt, uint_4 lev)36 void BaseArray::SetMaxPrint(int_4 nprt, int_4 lev) 37 37 { 38 38 max_nprt_ = nprt; … … 44 44 \param thr : thresold value 45 45 */ 46 void BaseArray::SetOpenMPSizeThreshold( uint_8thr)46 void BaseArray::SetOpenMPSizeThreshold(sa_size_t thr) 47 47 { 48 48 openmp_size_threshold = thr; … … 58 58 \return Total size of the array 59 59 */ 60 uint_8 BaseArray::ComputeTotalSize(uint_4 ndim, const uint_4 * siz, uint_4 step, uint_8offset)61 { 62 uint_8rs = step;63 for( uint_4k=0; k<ndim; k++) rs *= siz[k];60 sa_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]; 64 64 return(rs+offset); 65 65 } … … 251 251 { 252 252 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; 254 254 totsize_ = 0; 255 255 minstep_ = 0; … … 295 295 if (arrtype_ == 0) { // Simple TArray, not a matrix 296 296 smo = true; 297 for( uint_4 k=0; k<ndim_; k++)297 for(int_4 k=0; k<ndim_; k++) 298 298 if (size_[k] != a.size_[k]) return(false); 299 299 return(true); … … 304 304 (size_[macoli_] != a.size_[a.macoli_]) ) return(false); 305 305 if (ndim_ > 2) 306 for( uint_4 k=2; k<ndim_; k++)306 for(int_4 k=2; k<ndim_; k++) 307 307 if (size_[k] != a.size_[k]) return(false); 308 308 if ( (macoli_ == a.macoli_) && (marowi_ == a.marowi_) || … … 316 316 { 317 317 if (ndim_ < 2) return; 318 uint_4 ndim = 0;319 uint_4size[BASEARRAY_MAXNDIMS];320 uint_4step[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++) { 322 322 if (size_[k] < 2) continue; 323 323 size[ndim] = size_[k]; … … 339 339 { 340 340 if (ndim_ < 2) return; 341 uint_4 ndim = 0;342 uint_4size[BASEARRAY_MAXNDIMS];343 uint_4step[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++) { 345 345 size[ndim] = size_[k]; 346 346 step[ndim] = step_[k]; … … 354 354 355 355 //! return minimum value for step[ndim] 356 int BaseArray::MinStepKA() const357 { 358 for( uint_4 ka=0; ka<ndim_; ka++)356 int_4 BaseArray::MinStepKA() const 357 { 358 for(int_4 ka=0; ka<ndim_; ka++) 359 359 if (step_[ka] == minstep_) return((int)ka); 360 360 return(0); … … 362 362 363 363 //! return maximum value for step[ndim] 364 int BaseArray::MaxSizeKA() const365 { 366 int ka = 0;367 uint_4mx = size_[0];368 for( uint_4 k=1; k<ndim_; k++)364 int_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++) 369 369 if (size_[k] > mx) { ka = k; mx = size_[k]; } 370 370 return(ka); … … 377 377 // -------------------------------------------------- 378 378 //! return position of first element for vector \b i alond \b ka th axe. 379 uint_8 BaseArray::Offset(uint_4 ka, uint_8i) const379 sa_size_t BaseArray::Offset(int_4 ka, sa_size_t i) const 380 380 { 381 381 … … 383 383 //#ifdef SO_BOUNDCHECKING 384 384 if (ka >= ndim_) 385 throw RangeCheckError("BaseArray::Offset( uint_4 ka, uint_8i) Axe KA Error");385 throw RangeCheckError("BaseArray::Offset(int_4 ka, sa_size_t i) Axe KA Error"); 386 386 if ( i*size_[ka] >= totsize_ ) 387 throw RangeCheckError("BaseArray::Offset( uint_4 ka, uint_8i) Index Error");387 throw RangeCheckError("BaseArray::Offset(int_4 ka, sa_size_t i) Index Error"); 388 388 //#endif 389 uint_4idx[BASEARRAY_MAXNDIMS];390 uint_4 k;391 uint_8rest = i;389 sa_size_t idx[BASEARRAY_MAXNDIMS]; 390 int_4 k; 391 sa_size_t rest = i; 392 392 idx[ka] = 0; 393 393 for(k=0; k<ndim_; k++) { … … 395 395 idx[k] = rest%size_[k]; rest /= size_[k]; 396 396 } 397 uint_8off = offset_;397 sa_size_t off = offset_; 398 398 for(k=0; k<ndim_; k++) off += idx[k]*step_[k]; 399 399 return (off); … … 401 401 402 402 //! return position of element \b ip. 403 uint_8 BaseArray::Offset(uint_8ip) const403 sa_size_t BaseArray::Offset(sa_size_t ip) const 404 404 { 405 405 if ( (ndim_ < 1) || (ip == 0) ) return(offset_); 406 406 //#ifdef SO_BOUNDCHECKING 407 407 if (ip >= totsize_) 408 throw RangeCheckError("BaseArray::Offset( uint_8ip) Out of range index ip");408 throw RangeCheckError("BaseArray::Offset(sa_size_t ip) Out of range index ip"); 409 409 //#endif 410 410 411 uint_4idx[BASEARRAY_MAXNDIMS];412 uint_4 k;413 uint_8rest = ip;411 sa_size_t idx[BASEARRAY_MAXNDIMS]; 412 int_4 k; 413 sa_size_t rest = ip; 414 414 for(k=0; k<ndim_; k++) { 415 415 idx[k] = rest%size_[k]; rest /= size_[k]; … … 417 417 //#ifdef SO_BOUNDCHECKING 418 418 if (rest != 0) 419 throw PError("BaseArray::Offset( uint_8ip) GUG !!! rest != 0");419 throw PError("BaseArray::Offset(sa_size_t ip) GUG !!! rest != 0"); 420 420 //#endif 421 421 // if (rest != 0) cerr << " BUG ---- BaseArray::Offset( " << ip << " )" << rest << endl; … … 423 423 // for(k=0; k<ndim_; k++) cerr << idx[k] << "," ; 424 424 // cerr << " ZZZZ " << endl; 425 uint_8off = offset_;425 sa_size_t off = offset_; 426 426 for(k=0; k<ndim_; k++) off += idx[k]*step_[k]; 427 427 return (off); … … 429 429 430 430 //! 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)431 void 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) 433 433 { 434 434 if (smo) { // Same memory organisation … … 465 465 os << "\n--- " << InfoString() ; 466 466 os << " ND=" << ndim_ << " SizeX*Y*...= " ; 467 for( uint_4 k=0; k<ndim_; k++) {467 for(int_4 k=0; k<ndim_; k++) { 468 468 os << size_[k]; 469 469 if (k<ndim_-1) os << "x"; … … 472 472 if (prt_lev_ > 0) { 473 473 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] << " " ; 475 475 os << " Offset= " << offset_ << endl; 476 476 } … … 509 509 \return string \b exmsg for explanation in case of problems 510 510 */ 511 bool BaseArray::UpdateSizes( uint_4 ndim, const uint_4 * siz, uint_4 step, uint_8offset, string & exmsg)511 bool BaseArray::UpdateSizes(int_4 ndim, const sa_size_t * siz, sa_size_t step, sa_size_t offset, string & exmsg) 512 512 { 513 513 if (ndim >= BASEARRAY_MAXNDIMS) { … … 524 524 525 525 totsize_ = 1; 526 uint_4 k;526 int_4 k; 527 527 for(k=0; k<BASEARRAY_MAXNDIMS; k++) { 528 528 size_[k] = 1; … … 560 560 \return string \b exmsg for explanation in case of problems 561 561 */ 562 bool BaseArray::UpdateSizes( uint_4 ndim, const uint_4 * siz, const uint_4 * step, uint_8offset, string & exmsg)562 bool BaseArray::UpdateSizes(int_4 ndim, const sa_size_t * siz, const sa_size_t * step, sa_size_t offset, string & exmsg) 563 563 { 564 564 if (ndim >= BASEARRAY_MAXNDIMS) { … … 570 570 571 571 totsize_ = 1; 572 uint_4 k;572 int_4 k; 573 573 for(k=0; k<BASEARRAY_MAXNDIMS; k++) { 574 574 size_[k] = 1; 575 575 step_[k] = 0; 576 576 } 577 uint_4minstep = step[0];577 sa_size_t minstep = step[0]; 578 578 for(k=0; k<ndim; k++) { 579 579 size_[k] = siz[k] ; … … 588 588 exmsg += " Size Error"; return false; 589 589 } 590 uint_8plast = 0;590 sa_size_t plast = 0; 591 591 for(k=0; k<ndim; k++) plast += (siz[k]-1)*step[k]; 592 592 if (plast == minstep*totsize_ ) moystep_ = minstep; … … 623 623 624 624 totsize_ = 1; 625 uint_4 k;625 int_4 k; 626 626 for(k=0; k<BASEARRAY_MAXNDIMS; k++) { 627 627 size_[k] = 1; 628 628 step_[k] = 0; 629 629 } 630 uint_4minstep = a.step_[0];630 sa_size_t minstep = a.step_[0]; 631 631 for(k=0; k<a.ndim_; k++) { 632 632 size_[k] = a.size_[k] ; … … 663 663 \return string \b exmsg for explanation in case of problems 664 664 */ 665 void BaseArray::UpdateSubArraySizes(BaseArray & ra, uint_4 ndim, uint_4 * siz, uint_4 * pos, uint_4* step) const665 void BaseArray::UpdateSubArraySizes(BaseArray & ra, int_4 ndim, sa_size_t * siz, sa_size_t * pos, sa_size_t * step) const 666 666 { 667 667 if ( (ndim > ndim_) || (ndim < 1) ) 668 668 throw(SzMismatchError("BaseArray::UpdateSubArraySizes( ... ) NDim Error") ); 669 uint_4 k;669 int_4 k; 670 670 for(k=0; k<ndim; k++) 671 671 if ( (siz[k]*step[k]+pos[k]) > size_[k] ) 672 672 throw(SzMismatchError("BaseArray::UpdateSubArraySizes( ... ) Size/Pos Error") ); 673 uint_8offset = offset_;673 sa_size_t offset = offset_; 674 674 for(k=0; k<ndim_; k++) { 675 675 offset += pos[k]*step_[k];
Note:
See TracChangeset
for help on using the changeset viewer.