Exemplo n.º 1
0
 void transpose(const SMat<RT>& A, SMat<RT>& result)
 {
   // result should be the 0 matrix of the correct size.
   M2_ASSERT(&A != &result);  // these cannot be aliased!
   M2_ASSERT(result.numRows() == A.numColumns());
   M2_ASSERT(result.numColumns() == A.numRows());
   throw exc::engine_error("'transpose' not writtten for sparse mutable matrices");
   //TODO: MES: write this!!
 }
Exemplo n.º 2
0
void SMat<CoeffRing>::addInPlace(const SMat<CoeffRing> &B)
// return this + B.  return NULL of sizes or types do not match.
{
  assert(&B.ring() == &ring());
  assert(B.numRows() == numRows());
  assert(B.numColumns() == numColumns());

  for (size_t c = 0; c < numColumns(); c++)
    {
      sparsevec *v = vec_copy(B.columns_[c]);
      vec_add_to(columns_[c], v);
    }
}
Exemplo n.º 3
0
bool SMat<CoeffRing>::is_equal(const SMat &B) const
{
  assert(&ring() == &B.ring());
  if (B.numRows() != numRows()) return false;
  if (B.numColumns() != numColumns()) return false;
  for (size_t c = 0; c < numColumns(); c++)
    {
      sparsevec *v = columns_[c];
      sparsevec *w = B.columns_[c];
      if (!vec_equals(v, w)) return false;
    }
  return true;
}
Exemplo n.º 4
0
void SMat<CoeffRing>::setFromSubmatrix(const SMat &A, M2_arrayint cols)
{
  coeffR = A.coeffR;
  initialize(A.numRows(), cols->len, NULL);
  for (size_t r = 0; r < nrows_; r++)
    for (size_t c = 0; c < cols->len; c++)
      {
        elem f;
        coeffR->init(f);
        //        coeffR->init(f);
        A.get_entry(r, cols->array[c], f);
        set_entry(r, c, f);
      }
}
Exemplo n.º 5
0
void SMat<CoeffRing>::subtractInPlace(const SMat<CoeffRing> &B)
// this -= B.
// assumption:the assert statements below:
{
  assert(&B.ring() == &ring());
  assert(B.numRows() == numRows());
  assert(B.numColumns() == numColumns());

  for (size_t c = 0; c < numColumns(); c++)
    {
      sparsevec *v = vec_copy(B.columns_[c]);
      vec_negate(v);
      vec_add_to(columns_[c], v);
    }
}
Exemplo n.º 6
0
  void addInPlace(SMat<RT>&A, const SMat<RT>& B) 
  {
    M2_ASSERT(&B.ring() == &A.ring());
    M2_ASSERT(B.numRows() == A.numRows());
    M2_ASSERT(B.numColumns() == A.numColumns());

    A.addInPlace(B);
  }
Exemplo n.º 7
0
void addInPlace(SMat<RT>& A, const SMat<RT>& B)
{
  assert(&B.ring() == &A.ring());
  assert(B.numRows() == A.numRows());
  assert(B.numColumns() == A.numColumns());

  A.addInPlace(B);
}
Exemplo n.º 8
0
  void subtractInPlace(SMat<RT>& A, const SMat<RT>& B)
  // A -= B
  {
    M2_ASSERT(&B.ring() == &A.ring());
    M2_ASSERT(B.numRows() == A.numRows());
    M2_ASSERT(B.numColumns() == A.numColumns());

    A.subtractInPlace(B);
  }
Exemplo n.º 9
0
void subtractInPlace(SMat<RT>& A, const SMat<RT>& B)
// A -= B
{
  assert(&B.ring() == &A.ring());
  assert(B.numRows() == A.numRows());
  assert(B.numColumns() == A.numColumns());

  A.subtractInPlace(B);
}
Exemplo n.º 10
0
 void negateInPlace(SMat<RT>& A)
 // A = -A
 {
   A.negateInPlace();
 }
Exemplo n.º 11
0
 void scalarMultInPlace(SMat<RT>& A, const typename RT::ElementType &f)
 // A = f*A
 {
   A.scalarMultInPlace(f);
 }
Exemplo n.º 12
0
 bool isEqual(const SMat<RT>& A, const SMat<RT>& B)
 {
   return A.is_equal(B);
 }
Exemplo n.º 13
0
 bool isZero(const SMat<RT>& A)
 {
   return A.is_zero();
 }
Exemplo n.º 14
0
 void copy_elem(ring_elem &result)
 {
   M->ring().to_ring_elem(result, value());
 }