513{
514
515
516
517
518
519 switch (strategy)
520 {
521 case 0:
522
523 for (size_t i = 0; i < m; i++)
524 {
525 auto& a =
x.entry(i, 0);
526 x.ring().divide(a, Lv.
entry(i, m), Lv.
entry(i, i));
527 x.ring().negate(a, a);
529 x.ring().negate(a, a);
530 }
531 break;
532 case 1:
533
534 for (size_t i = 0; i < m; i++)
535 {
536 auto& a =
x.entry(i, 0);
537 x.ring().negate(a, Lv.
entry(i, m));
539 x.ring().negate(a, a);
540 }
541 break;
542 case 2:
543
544 for (size_t i = 1; i < m + 1; i++)
545 {
546 auto& a =
x.entry(m - i, 0);
547 x.ring().divide(a, Lv.
entry(m - i, m), Lv.
entry(m - i, m - i));
548 x.ring().negate(a, a);
549 MatElementaryOps<DMat<RT>>::column_op(Lv, m, a, m - i);
550 x.ring().negate(a, a);
551 }
552 break;
553 case 3:
554
555 for (size_t i = 1; i < m + 1; i++)
556 {
557 auto& a =
x.entry(m - i, 0);
558 x.ring().negate(a, Lv.
entry(m - i, m));
559 MatElementaryOps<DMat<RT>>::column_op(Lv, m, a, m - i);
560 x.ring().negate(a, a);
561 }
562 break;
563 }
564}
ElementType & entry(size_t row, size_t column)