Changeset d9ccb8 in git


Ignore:
Timestamp:
Jun 18, 2018, 4:33:19 PM (6 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b4f17ed1d25f93d46dbe29e4b499baecc2fd51bb')
Children:
a6a875048bfb185f59dc11aa3f301173392ef1ea
Parents:
b1f3061bfc36e07816a066e0ae80a4f44ed566d4
Message:
add: tensor(smatrix,smatrix) as kernel cmd.
Location:
Singular
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/matrix.lib

    rb1f3061 rd9ccb8  
    1818 submat(A,r,c);         submatrix of A with rows/cols specified by intvec r/c
    1919 symmat(n[,id]);        generic symmetric nxn matrix [entries from id]
    20  tensor(A,B);           matrix, tensor product of matrices A nd B
    2120 unitmat(n);            unit square matrix of size n
    2221 gauss_col(A);          transform a matrix into col-reduced Gauss normal form
     
    457456   print(symmat(n,i));  // symmetric matrix of generic linear forms
    458457   kill R1;
    459 }
    460 ///////////////////////////////////////////////////////////////////////////////
    461 
    462 proc tensor (matrix A, matrix B)
    463 "USAGE:   tensor(A,B); A,B matrices
    464 RETURN:  matrix, tensor product of A and B
    465 EXAMPLE: example tensor; shows an example
    466 "
    467 {
    468    if (ncols(A)==0)
    469    {
    470      int q=nrows(A)*nrows(B);
    471      matrix D[q][0];
    472      return(D);
    473    }
    474 
    475    int i,j;
    476    matrix C,D;
    477    for( i=1; i<=nrows(A); i++ )
    478    {
    479      C = A[i,1]*B;
    480      for( j=2; j<=ncols(A); j++ )
    481      {
    482        C = concat(C,A[i,j]*B);
    483      }
    484      D = concat(D,transpose(C));
    485    }
    486    D = transpose(D);
    487    return(submat(D,2..nrows(D),1..ncols(D)));
    488 }
    489 example
    490 { "EXAMPLE:"; echo = 2;
    491    ring r=32003,(x,y,z),(c,ds);
    492    matrix A[3][3]=1,2,3,4,5,6,7,8,9;
    493    matrix B[2][2]=x,y,0,z;
    494    print(A);
    495    print(B);
    496    print(tensor(A,B));
    497458}
    498459///////////////////////////////////////////////////////////////////////////////
  • Singular/extra.cc

    rb1f3061 rd9ccb8  
    37733773    }
    37743774    else
    3775 /*==================== tensor =================*/
    3776     if(strcmp(sys_cmd,"tensor")==0)
    3777     {
    3778       const short t[]={2,MODUL_CMD,MODUL_CMD};
    3779       if (iiCheckTypes(h,t,1))
    3780       {
    3781         res->data=(void*)mp_Tensor((ideal)h->Data(),(ideal)h->next->Data(),currRing);
    3782         res->rtyp=MODUL_CMD;
    3783         return FALSE;
    3784       }
    3785       else
    3786         return TRUE;
    3787     }
    3788     else
    37893775/*==================== GF(p,n) ==================================*/
    37903776    if(strcmp(sys_cmd,"GF")==0)
  • Singular/iparith.cc

    rb1f3061 rd9ccb8  
    33953395  if (TEST_OPT_RETURN_SB) setFlag(res,FLAG_STD);
    33963396  return FALSE;
    3397 
     3397}
     3398static BOOLEAN jjTENSOR(leftv res, leftv u, leftv v)
     3399{
     3400  ideal A=(ideal)u->Data();
     3401  ideal B=(ideal)v->Data();
     3402  res->data = (char *)sm_Tensor(A,B,currRing);
     3403  return FALSE;
    33983404}
    33993405static BOOLEAN jjVARSTR2(leftv res, leftv u, leftv v)
  • Singular/table.h

    rb1f3061 rd9ccb8  
    7979//,{  jjWRONG ,       COLS_CMD,        0,              VECTOR_CMD  , ALLOW_NC |ALLOW_RING}
    8080,{D(jjCOLS),       COLS_CMD,        INT_CMD,        MATRIX_CMD    , ALLOW_NC |ALLOW_RING}
     81,{D(jjCOLS),       COLS_CMD,        INT_CMD,        SMATRIX_CMD   , ALLOW_NC |ALLOW_RING}
    8182,{D(jjCOLS),       COLS_CMD,        INT_CMD,        IDEAL_CMD     , ALLOW_NC |ALLOW_RING}
    8283,{D(jjCOLS),       COLS_CMD,        INT_CMD,        MODUL_CMD     , ALLOW_NC |ALLOW_RING}
     
    253254,{D(jjROWS),       ROWS_CMD,        INT_CMD,        MODUL_CMD     , ALLOW_NC |ALLOW_RING}
    254255,{D(jjROWS),       ROWS_CMD,        INT_CMD,        MATRIX_CMD    , ALLOW_NC |ALLOW_RING}
     256,{D(jjROWS),       ROWS_CMD,        INT_CMD,        SMATRIX_CMD   , ALLOW_NC |ALLOW_RING}
    255257,{D(jjROWS_IV),    ROWS_CMD,        INT_CMD,        INTMAT_CMD    , ALLOW_NC |ALLOW_RING}
    256258,{D(jjROWS_BIM),   ROWS_CMD,        INT_CMD,        BIGINTMAT_CMD , ALLOW_NC |ALLOW_RING}
     
    405407,{D(jjTIMES_MA_I2),'*',           MATRIX_CMD,     INT_CMD,    MATRIX_CMD, ALLOW_NC | ALLOW_RING}
    406408,{D(jjTIMES_MA),  '*',            MATRIX_CMD,     MATRIX_CMD, MATRIX_CMD, ALLOW_NC | ALLOW_RING}
    407 ,{D(jjTIMES_SM),  '*',            SMATRIX_CMD,    SMATRIX_CMD,SMATRIX_CMD, ALLOW_NC | ALLOW_RING}
    408409,{D(jjTIMES_MA_BI1),'*',          MATRIX_CMD,     MATRIX_CMD, BIGINT_CMD, ALLOW_NC | ALLOW_RING}
    409410,{D(jjTIMES_MA_BI2),'*',          MATRIX_CMD,     BIGINT_CMD, MATRIX_CMD, ALLOW_NC | ALLOW_RING}
     411,{D(jjTIMES_SM),  '*',            SMATRIX_CMD,    SMATRIX_CMD,SMATRIX_CMD, ALLOW_NC | ALLOW_RING}
    410412,{D(jjTIMES_BIM), '*',            BIGINTMAT_CMD,  BIGINTMAT_CMD, BIGINTMAT_CMD, ALLOW_NC | ALLOW_RING}
    411413,{D(jjOP_BIM_I),  '*',            BIGINTMAT_CMD,  BIGINTMAT_CMD, INT_CMD, ALLOW_NC | ALLOW_RING}
     
    747749,{D(jjSYZ_2),     SYZYGY_CMD,     MODUL_CMD,      IDEAL_CMD,  STRING_CMD, ALLOW_PLURAL |ALLOW_RING}
    748750,{D(jjSYZ_2),     SYZYGY_CMD,     MODUL_CMD,      MODUL_CMD,  STRING_CMD, ALLOW_PLURAL |ALLOW_RING}
     751,{D(jjTENSOR),    TENSOR_CMD,     SMATRIX_CMD,    SMATRIX_CMD,SMATRIX_CMD, ALLOW_PLURAL |ALLOW_RING}
    749752,{D(jjVARSTR2),   VARSTR_CMD,     STRING_CMD,     RING_CMD,   INT_CMD, ALLOW_NC |ALLOW_RING}
    750753,{D(jjWAIT1ST2),  WAIT1ST_CMD,    INT_CMD,        LIST_CMD,   INT_CMD, ALLOW_NC |ALLOW_RING}
     
    11781181  { "system",      0, SYSTEM_CMD,         CMD_M},
    11791182  { "syz",         0, SYZYGY_CMD ,        CMD_12},
     1183  { "tensor",      0, TENSOR_CMD ,        CMD_2},
    11801184  { "test",        0, TEST_CMD ,          CMD_M},
    11811185  { "trace",       0, TRACE_CMD ,         CMD_1},
  • Singular/tok.h

    rb1f3061 rd9ccb8  
    185185  SYSTEM_CMD,
    186186  SYZYGY_CMD,
     187  TENSOR_CMD,
    187188  TEST_CMD,
    188189  TRANSPOSE_CMD,
Note: See TracChangeset for help on using the changeset viewer.