Changeset 2ffd25 in git for Singular/iparith.cc


Ignore:
Timestamp:
Jun 14, 2018, 2:59:48 PM (6 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b4f17ed1d25f93d46dbe29e4b499baecc2fd51bb')
Children:
1f37c3385e83e4bc34dab711cc9b9797b6290c84
Parents:
db48f3ea705fcb451c2ea640a2b72f643bae2f22
Message:
introduce smatrix (sparse matrix)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/iparith.cc

    rdb48f3e r2ffd25  
    834834  return jjPLUSMINUS_Gen(res,u,v);
    835835}
     836static BOOLEAN jjPLUS_SM(leftv res, leftv u, leftv v)
     837{
     838  ideal A=(ideal)u->Data(); ideal B=(ideal)v->Data();
     839  res->data = (char *)(sm_Add(A , B, currRing));
     840  if (res->data==NULL)
     841  {
     842     Werror("matrix size not compatible(%dx%d, %dx%d)",
     843             (int)A->rank,IDELEMS(A),(int)B->rank,IDELEMS(B));
     844     return TRUE;
     845  }
     846  return jjPLUSMINUS_Gen(res,u,v);
     847}
    836848static BOOLEAN jjPLUS_MA_P(leftv res, leftv u, leftv v)
    837849{
     
    951963  return FALSE;
    952964}
     965static BOOLEAN jjMINUS_SM(leftv res, leftv u, leftv v)
     966{
     967  ideal A=(ideal)u->Data(); ideal B=(ideal)v->Data();
     968  res->data = (char *)(sm_Sub(A , B, currRing));
     969  if (res->data==NULL)
     970  {
     971     Werror("matrix size not compatible(%dx%d, %dx%d)",
     972             (int)A->rank,IDELEMS(A),(int)B->rank,IDELEMS(B));
     973     return TRUE;
     974  }
     975  return jjPLUSMINUS_Gen(res,u,v);
     976  return FALSE;
     977}
    953978static BOOLEAN jjTIMES_I(leftv res, leftv u, leftv v)
    954979{
     
    11301155  return FALSE;
    11311156}
     1157static BOOLEAN jjTIMES_SM(leftv res, leftv u, leftv v)
     1158{
     1159  ideal A=(ideal)u->Data(); ideal B=(ideal)v->Data();
     1160  res->data = (char *)sm_Mult(A,B,currRing);
     1161  if (res->data==NULL)
     1162  {
     1163     Werror("matrix size not compatible(%dx%d, %dx%d) in *",
     1164             (int)A->rank,IDELEMS(A),(int)B->rank,IDELEMS(B));
     1165     return TRUE;
     1166  }
     1167  id_Normalize((ideal)res->data,currRing);
     1168  if ((v->next!=NULL) || (u->next!=NULL))
     1169    return jjOP_REST(res,u,v);
     1170  return FALSE;
     1171}
    11321172static BOOLEAN jjGE_BI(leftv res, leftv u, leftv v)
    11331173{
     
    12941334{
    12951335  res->data = (char *)((long)mp_Equal((matrix)u->Data(),(matrix)v->Data(),currRing));
     1336  jjEQUAL_REST(res,u,v);
     1337  return FALSE;
     1338}
     1339static BOOLEAN jjEQUAL_SM(leftv res, leftv u, leftv v)
     1340{
     1341  res->data = (char *)((long)sm_Equal((ideal)u->Data(),(ideal)v->Data(),currRing));
    12961342  jjEQUAL_REST(res,u,v);
    12971343  return FALSE;
     
    54315477    Werror("wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->Fullname(),
    54325478      MATROWS(m),MATCOLS(m));
     5479    return TRUE;
     5480  }
     5481  res->data=u->data; u->data=NULL;
     5482  res->rtyp=u->rtyp; u->rtyp=0;
     5483  res->name=u->name; u->name=NULL;
     5484  Subexpr e=jjMakeSub(v);
     5485          e->next=jjMakeSub(w);
     5486  if (u->e==NULL)
     5487    res->e=e;
     5488  else
     5489  {
     5490    Subexpr h=u->e;
     5491    while (h->next!=NULL) h=h->next;
     5492    h->next=e;
     5493    res->e=u->e;
     5494    u->e=NULL;
     5495  }
     5496  return FALSE;
     5497}
     5498static BOOLEAN jjBRACK_SM(leftv res, leftv u, leftv v,leftv w)
     5499{
     5500  ideal m= (ideal)u->Data();
     5501  int   r = (int)(long)v->Data();
     5502  int   c = (int)(long)w->Data();
     5503  //Print("gen. elem %d, %d\n",r,c);
     5504  if ((r<1)||(r>m->rank)||(c<1)||(c>IDELEMS(m)))
     5505  {
     5506    Werror("wrong range[%d,%d] in matrix %s(%d x %d)",r,c,u->Fullname(),
     5507      (int)m->rank,IDELEMS(m));
    54335508    return TRUE;
    54345509  }
Note: See TracChangeset for help on using the changeset viewer.