Changeset 70
- Timestamp:
- 08/12/08 02:48:21 (5 months ago)
- Files:
-
- 1 modified
-
include/fflas-ffpack/ffpack_ludivine.inl (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
include/fflas-ffpack/ffpack_ludivine.inl
r27 r70 421 421 ip++; 422 422 } 423 if (ip == rowDim) {return 0;} 424 else{ 423 if (ip == rowDim) { 424 return 0; 425 } else { 425 426 size_t oldip = ip; 426 427 if ( Diag == FflasNonUnit ){ … … 463 464 size_t Ndown = rowDim - Nup; 464 465 // Recursive call on NW 465 //cerr<<"LUdivine1..";466 467 //cerr<<"done"<<endl;468 466 size_t R, R2; 469 467 if (trans == FflasTrans){ 470 //cerr<<"LUdivine1..."<<endl;471 468 R = LUdivine (F, Diag, trans, colDim, Nup, A, lda, P, Q, LuTag, cutoff); 472 //cerr<<"done"<<endl;473 469 typename Field::Element *Ar = A + Nup*incRow; // SW 474 470 typename Field::Element *Ac = A + R*incCol; // NE … … 480 476 applyP (F, FflasLeft, FflasNoTrans, Ndown, 0, R, Ar, lda, P); 481 477 // Ar <- L1^-1 Ar 482 //write_field(F,cerr<<"Avant ftrsm"<<endl, A, M, N, lda);483 478 ftrsm( F, FflasLeft, FflasLower, 484 479 FflasNoTrans, Diag, R, Ndown, 485 480 one, A, lda, Ar, lda); 486 481 // An <- An - Ac*Ar 487 //write_field(F,cerr<<"Avant fgemm"<<endl, A, M, N, lda);488 482 fgemm( F, FflasNoTrans, FflasNoTrans, colDim-R, Ndown, R, 489 483 Mone, Ac, lda, Ar, lda, one, An, lda); 490 //write_field(F,cerr<<"Apres fgemm"<<endl, A, M, N, lda);491 492 484 } 493 485 // Recursive call on SE 494 // cerr<<"LUdivine2..";495 // write_field(F,cerr<<"Apres mise a jour"<<endl, A, M, N, lda);496 497 486 R2 = LUdivine (F, Diag, trans, colDim-R, Ndown, An, lda, P + R, Q + Nup, LuTag, cutoff); 498 //cerr<<"done"<<endl;499 487 for (size_t i = R; i < R + R2; ++i) 500 488 P[i] += R; … … 515 503 } else { 516 504 // Ar <- Ar.P 517 518 505 applyP (F, FflasRight, FflasTrans, Ndown, 0, R, Ar, lda, P); 519 506 // Ar <- Ar.U1^-1 … … 524 511 fgemm( F, FflasNoTrans, FflasNoTrans, Ndown, colDim-R, R, 525 512 Mone, Ar, lda, Ac, lda, one, An, lda); 526 // Recursive call on SE513 527 514 } 528 // cerr<<"LUdivine2.."; 529 // write_field(F,cerr<<"Apres mise a jour"<<endl, A, M, N, lda); 515 // Recursive call on SE 530 516 R2=LUdivine (F, Diag, trans, Ndown, N-R, An, lda,P+R, Q+Nup, LuTag, cutoff); 531 //cerr<<"done"<<endl;532 517 for (size_t i = R; i < R + R2; ++i) 533 518 P[i] += R; … … 540 525 } 541 526 // Non zero row permutations 542 for (size_t i = Nup; i < rowDim; i++)527 for (size_t i = Nup; i < Nup + R2; i++) 543 528 Q[i] += Nup; 544 529 if (R < Nup){ … … 638 623 typename Field::Element * Xn = Xr + Nup; // SE 639 624 typename Field::Element * Xi = Xr; 640 if ( computeX ) 625 if ( computeX ){ 641 626 if (MinTag == FfpackDense) 642 627 for (size_t i=0; i< Ndown; ++i, Xi+=ldx){ … … 651 636 fcopy(F, N, u,1,Xi, 1); 652 637 } 653 638 } 654 639 // Apply the permutation on SW 655 applyP( F, FflasRight, FflasTrans, Ndown, 0, R, Xr, ldx, P);640 applyP( F, FflasRight, FflasTrans, Ndown, 0, R, Xr, ldx, P); 656 641 // Triangular block inversion of NW and apply to SW 657 642 // Xr <- Xr.U1^-1
