Changeset 813 in Sophya for trunk/SophyaLib/TArray/tarray.cc
- Timestamp:
- Apr 5, 2000, 5:44:19 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/TArray/tarray.cc
r804 r813 234 234 // Possibilite de // , vectorisation 235 235 template <class T> 236 TArray<T>& TArray<T>::Set (Sequence seq)237 { 238 if (NbDimensions() < 1) 239 throw RangeCheckError("TArray<T>::Set (Sequence ) - Not Allocated Array ! ");236 TArray<T>& TArray<T>::SetSeq(Sequence seq) 237 { 238 if (NbDimensions() < 1) 239 throw RangeCheckError("TArray<T>::SetSeq(Sequence ) - Not Allocated Array ! "); 240 240 T * pe; 241 241 uint_8 j,k; … … 246 246 } 247 247 else { // Non regular data spacing ... 248 uint_4 ka = MaxSizeKA(); 248 // uint_4 ka = MaxSizeKA(); 249 uint_4 ka = 0; 249 250 uint_8 step = Step(ka); 250 251 uint_8 gpas = Size(ka); 251 for(j=0; j<totsize_; j += Size(ka)) { 252 pe = mNDBlock.Begin()+Offset(j); 253 for(k=0; k<gpas; k++) pe[k*step] = seq(j+k); 252 uint_8 naxa = Size()/Size(ka); 253 for(j=0; j<naxa; j++) { 254 pe = mNDBlock.Begin()+Offset(ka,j); 255 for(k=0; k<gpas; k++) pe[k*step] = seq(j*gpas+k); 254 256 } 255 257 } … … 260 262 261 263 template <class T> 262 TArray<T>& TArray<T>::Set (T x)263 { 264 if (NbDimensions() < 1) 265 throw RangeCheckError("TArray<T>::Set (T ) - Not Allocated Array ! ");264 TArray<T>& TArray<T>::SetT(T x) 265 { 266 if (NbDimensions() < 1) 267 throw RangeCheckError("TArray<T>::SetT(T ) - Not Allocated Array ! "); 266 268 T * pe; 267 269 uint_8 j,k; … … 276 278 uint_8 step = Step(ka); 277 279 uint_8 gpas = Size(ka)*step; 278 for(j=0; j<totsize_; j += Size(ka)) { 279 pe = mNDBlock.Begin()+Offset(j); 280 uint_8 naxa = Size()/Size(ka); 281 for(j=0; j<naxa; j++) { 282 pe = mNDBlock.Begin()+Offset(ka,j); 280 283 for(k=0; k<gpas; k+=step) pe[k] = x; 281 284 } … … 301 304 uint_8 step = Step(ka); 302 305 uint_8 gpas = Size(ka)*step; 303 for(j=0; j<totsize_; j += Size(ka)) { 304 pe = mNDBlock.Begin()+Offset(j); 306 uint_8 naxa = Size()/Size(ka); 307 for(j=0; j<naxa; j++) { 308 pe = mNDBlock.Begin()+Offset(ka,j); 305 309 for(k=0; k<gpas; k+=step) pe[k] += x; 306 310 } … … 326 330 uint_8 step = Step(ka); 327 331 uint_8 gpas = Size(ka)*step; 328 for(j=0; j<totsize_; j += Size(ka)) { 329 pe = mNDBlock.Begin()+Offset(j); 332 uint_8 naxa = Size()/Size(ka); 333 for(j=0; j<naxa; j++) { 334 pe = mNDBlock.Begin()+Offset(ka,j); 330 335 for(k=0; k<gpas; k+=step) pe[k] -= x; 331 336 } … … 351 356 uint_8 step = Step(ka); 352 357 uint_8 gpas = Size(ka)*step; 353 for(j=0; j<totsize_; j += Size(ka)) { 354 pe = mNDBlock.Begin()+Offset(j); 358 uint_8 naxa = Size()/Size(ka); 359 for(j=0; j<naxa; j++) { 360 pe = mNDBlock.Begin()+Offset(ka,j); 355 361 for(k=0; k<gpas; k+=step) pe[k] *= x; 356 362 } … … 376 382 uint_8 step = Step(ka); 377 383 uint_8 gpas = Size(ka)*step; 378 for(j=0; j<totsize_; j += Size(ka)) { 379 pe = mNDBlock.Begin()+Offset(j); 384 uint_8 naxa = Size()/Size(ka); 385 for(j=0; j<naxa; j++) { 386 pe = mNDBlock.Begin()+Offset(ka,j); 380 387 for(k=0; k<gpas; k+=step) pe[k] /= x; 381 388 } … … 402 409 uint_8 step = Step(ka); 403 410 uint_8 gpas = Size(ka)*step; 404 for(j=0; j<totsize_; j += Size(ka)) { 405 pe = mNDBlock.Begin()+Offset(j); 411 uint_8 naxa = Size()/Size(ka); 412 for(j=0; j<naxa; j++) { 413 pe = mNDBlock.Begin()+Offset(ka,j); 406 414 for(k=0; k<gpas; k+=step) pe[k] = x-pe[k]; 407 415 } … … 427 435 uint_8 step = Step(ka); 428 436 uint_8 gpas = Size(ka)*step; 429 for(j=0; j<totsize_; j += Size(ka)) { 430 pe = mNDBlock.Begin()+Offset(j); 437 uint_8 naxa = Size()/Size(ka); 438 for(j=0; j<naxa; j++) { 439 pe = mNDBlock.Begin()+Offset(ka,j); 431 440 for(k=0; k<gpas; k+=step) pe[k] = x/pe[k]; 432 441 } … … 442 451 if (NbDimensions() < 1) 443 452 throw RangeCheckError("TArray<T>::AddElt(const TArray<T>& ) - Not Allocated Array ! "); 444 if (!CompareSizes(a)) throw(SzMismatchError("TArray<T>::AddElt(const TArray<T>&)")) ; 453 if (!CompareSizes(a)) 454 throw(SzMismatchError("TArray<T>::AddElt(const TArray<T>&) SizeMismatch")) ; 445 455 446 456 T * pe; … … 460 470 uint_8 stepa = a.Step(ax); 461 471 uint_8 gpas = Size(ax)*step; 462 for(j=0; j<totsize_; j += Size(ax)) { 463 pe = mNDBlock.Begin()+Offset(j); 464 pea = a.DataBlock().Begin()+a.Offset(j); 472 uint_8 naxa = Size()/Size(ax); 473 for(j=0; j<naxa; j++) { 474 pe = mNDBlock.Begin()+Offset(ax,j); 475 pea = a.DataBlock().Begin()+a.Offset(ax,j); 465 476 for(k=0, ka=0; k<gpas; k+=step, ka+=stepa) pe[k] += pea[ka]; 466 477 } … … 474 485 if (NbDimensions() < 1) 475 486 throw RangeCheckError("TArray<T>::SubElt(const TArray<T>& ) - Not Allocated Array ! "); 476 if (!CompareSizes(a)) throw(SzMismatchError("TArray<T>::SubElt(const TArray<T>&)")) ; 487 if (!CompareSizes(a)) 488 throw(SzMismatchError("TArray<T>::SubElt(const TArray<T>&) SizeMismatch")) ; 477 489 478 490 T * pe; … … 492 504 uint_8 stepa = a.Step(ax); 493 505 uint_8 gpas = Size(ax)*step; 494 for(j=0; j<totsize_; j += Size(ax)) { 495 pe = mNDBlock.Begin()+Offset(j); 496 pea = a.DataBlock().Begin()+a.Offset(j); 506 uint_8 naxa = Size()/Size(ax); 507 for(j=0; j<naxa; j++) { 508 pe = mNDBlock.Begin()+Offset(ax,j); 509 pea = a.DataBlock().Begin()+a.Offset(ax,j); 497 510 for(k=0, ka=0; k<gpas; k+=step, ka+=stepa) pe[k] -= pea[ka]; 498 511 } … … 507 520 if (NbDimensions() < 1) 508 521 throw RangeCheckError("TArray<T>::MulElt(const TArray<T>& ) - Not Allocated Array ! "); 509 if (!CompareSizes(a)) throw(SzMismatchError("TArray<T>::MulElt(const TArray<T>&)")) ; 522 if (!CompareSizes(a)) 523 throw(SzMismatchError("TArray<T>::MulElt(const TArray<T>&) SizeMismatch")) ; 510 524 511 525 T * pe; … … 525 539 uint_8 stepa = a.Step(ax); 526 540 uint_8 gpas = Size(ax)*step; 527 for(j=0; j<totsize_; j += Size(ax)) { 528 pe = mNDBlock.Begin()+Offset(j); 529 pea = a.DataBlock().Begin()+a.Offset(j); 541 uint_8 naxa = Size()/Size(ax); 542 for(j=0; j<naxa; j++) { 543 pe = mNDBlock.Begin()+Offset(ax,j); 544 pea = a.DataBlock().Begin()+a.Offset(ax,j); 530 545 for(k=0, ka=0; k<gpas; k+=step, ka+=stepa) pe[k] *= pea[ka]; 531 546 } … … 540 555 if (NbDimensions() < 1) 541 556 throw RangeCheckError("TArray<T>::DivElt(const TArray<T>& ) - Not Allocated Array ! "); 542 if (!CompareSizes(a)) throw(SzMismatchError("TArray<T>::DivElt(const TArray<T>&)")) ; 557 if (!CompareSizes(a)) 558 throw(SzMismatchError("TArray<T>::DivElt(const TArray<T>&) SizeMismatch")) ; 543 559 544 560 T * pe; … … 558 574 uint_8 stepa = a.Step(ax); 559 575 uint_8 gpas = Size(ax)*step; 560 for(j=0; j<totsize_; j += Size(ax)) { 561 pe = mNDBlock.Begin()+Offset(j); 562 pea = a.DataBlock().Begin()+a.Offset(j); 576 uint_8 naxa = Size()/Size(ax); 577 for(j=0; j<naxa; j++) { 578 pe = mNDBlock.Begin()+Offset(ax,j); 579 pea = a.DataBlock().Begin()+a.Offset(ax,j); 563 580 for(k=0, ka=0; k<gpas; k+=step, ka+=stepa) pe[k] /= pea[ka]; 564 581 } … … 572 589 if (NbDimensions() < 1) 573 590 throw RangeCheckError("TArray<T>::CopyElt(const TArray<T>& ) - Not Allocated Array ! "); 574 if (!CompareSizes(a)) throw(SzMismatchError("TArray<T>::MultElt(const TArray<T>&)")) ; 591 if (!CompareSizes(a)) 592 throw(SzMismatchError("TArray<T>::MultElt(const TArray<T>&) SizeMismatch")) ; 575 593 576 594 T * pe; … … 590 608 uint_8 stepa = a.Step(ax); 591 609 uint_8 gpas = Size(ax)*step; 592 for(j=0; j<totsize_; j += Size(ax)) { 593 pe = mNDBlock.Begin()+Offset(j); 594 pea = a.DataBlock().Begin()+a.Offset(j); 610 uint_8 naxa = Size()/Size(ax); 611 for(j=0; j<naxa; j++) { 612 pe = mNDBlock.Begin()+Offset(ax,j); 613 pea = a.DataBlock().Begin()+a.Offset(ax,j); 595 614 for(k=0, ka=0; k<gpas; k+=step, ka+=stepa) pe[k] = pea[ka]; 596 615 } … … 619 638 uint_8 step = Step(ka); 620 639 uint_8 gpas = Size(ka)*step; 621 for(j=0; j<totsize_; j += Size(ka)) { 622 pe = mNDBlock.Begin()+Offset(j); 640 uint_8 naxa = Size()/Size(ka); 641 for(j=0; j<naxa; j++) { 642 pe = mNDBlock.Begin()+Offset(ka,j); 623 643 for(k=0; k<gpas; k+=step) ret += pe[k] ; 624 644 } … … 645 665 uint_8 step = Step(ka); 646 666 uint_8 gpas = Size(ka)*step; 647 for(j=0; j<totsize_; j += Size(ka)) { 648 pe = mNDBlock.Begin()+Offset(j); 667 uint_8 naxa = Size()/Size(ka); 668 for(j=0; j<naxa; j++) { 669 pe = mNDBlock.Begin()+Offset(ka,j); 649 670 for(k=0; k<gpas; k+=step) ret *= pe[k] ; 650 671 } … … 660 681 661 682 template <class T> 662 string TArray<T>::DataType() const 663 { 664 string rs = typeid(T).name(); 683 string TArray<T>::InfoString() const 684 { 685 string rs = "TArray<" ; 686 rs += typeid(T).name(); 687 rs += "> "; 665 688 return(rs); 666 689 } … … 693 716 } 694 717 } 695 os << "\n" <<endl;718 os << endl; 696 719 } 697 720
Note:
See TracChangeset
for help on using the changeset viewer.