Changeset db2e1c in git for kernel/ring.cc


Ignore:
Timestamp:
Apr 21, 2008, 1:23:12 PM (16 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
fd8c22d40aaba525d2d73c49f8b5c839fffbd1d1
Parents:
3ad53dd58ab62b367f6a39e871372997e9c519bd
Message:
*hannes: preimage via rTensor


git-svn-id: file:///usr/local/Singular/svn/trunk@10675 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/ring.cc

    r3ad53dd rdb2e1c  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ring.cc,v 1.77 2008-03-19 17:44:11 Singular Exp $ */
     4/* $Id: ring.cc,v 1.78 2008-04-21 11:23:12 Singular Exp $ */
    55
    66/*
     
    724724/*2
    725725 *returns -1 for not compatible, (sum is undefined)
    726  *         0 for equal, (and sum)
    727726 *         1 for compatible (and sum)
    728727 */
    729 int rSum(ring r1, ring r2, ring &sum)
    730 {
    731   if (r1==r2)
    732   {
    733     sum=r1;
    734     r1->ref++;
    735     return 0;
    736   }
     728/* vartest: test for variable/paramter names
     729* dp_dp: for comm. rings: use block order dp,dp
     730*/
     731int rTensor(ring r1, ring r2, ring &sum, BOOLEAN vartest, BOOLEAN dp_dp)
     732{
    737733  ring save=currRing;
    738734  ip_sring tmpR;
     
    746742      if (r1->parameter!=NULL)
    747743      {
    748         if (strcmp(r1->parameter[0],r2->parameter[0])==0) /* 1 char */
     744        if (!vartest || (strcmp(r1->parameter[0],r2->parameter[0])==0)) /* 1 par */
    749745        {
    750746          tmpR.parameter=(char **)omAllocBin(char_ptr_bin);
     
    767763          // HANNES: TODO: delete nSetChar
    768764          rChangeCurrRing(r1);
    769           if ((strcmp(r1->parameter[0],r2->parameter[0])==0) /* 1 char */
     765          if ((!vartest || (strcmp(r1->parameter[0],r2->parameter[0])==0)) /* 1 par */
    770766              && n_Equal(r1->minpoly,r2->minpoly, r1))
    771767          {
     
    787783        else
    788784        {
    789           if ((strcmp(r1->parameter[0],r2->parameter[0])==0) /* 1 char */
     785          if ((!vartest || (strcmp(r1->parameter[0],r2->parameter[0])==0)) /* 1 par */
    790786              && (rPar(r2)==1))
    791787          {
     
    806802        if (r2->minpoly!=NULL)
    807803        {
    808           if ((strcmp(r1->parameter[0],r2->parameter[0])==0) /* 1 char */
     804          if ((!vartest || (strcmp(r1->parameter[0],r2->parameter[0])==0)) /* 1 par */
    809805              && (rPar(r1)==1))
    810806          {
     
    832828          for(j=0;j<rPar(r2);j++)
    833829          {
    834             for(l=0;l<i;l++)
     830            if (vartest)
    835831            {
    836               if(strcmp(tmpR.parameter[l],r2->parameter[j])==0)
    837                 break;
     832              for(l=0;l<i;l++)
     833              {
     834                if(strcmp(tmpR.parameter[l],r2->parameter[j])==0)
     835                  break;
     836              }
    838837            }
     838            else
     839              l=i;
    839840            if (l==i)
    840841            {
     
    983984    else if ((r2->parameter!=NULL) && (strlen(r1->names[i])==1))
    984985    {
    985       for(j=0;j<rPar(r2);j++)
    986       {
    987         if (strcmp(r1->names[i],r2->parameter[j])==0)
    988         {
    989           b=FALSE;
    990           break;
     986      if (vartest)
     987      {
     988        for(j=0;j<rPar(r2);j++)
     989        {
     990          if (strcmp(r1->names[i],r2->parameter[j])==0)
     991          {
     992            b=FALSE;
     993            break;
     994          }
    991995        }
    992996      }
     
    10121016    else if ((r1->parameter!=NULL) && (strlen(r2->names[i])==1))
    10131017    {
    1014       for(j=0;j<rPar(r1);j++)
    1015       {
    1016         if (strcmp(r2->names[i],r1->parameter[j])==0)
    1017         {
    1018           b=FALSE;
    1019           break;
     1018      if (vartest)
     1019      {
     1020        for(j=0;j<rPar(r1);j++)
     1021        {
     1022          if (strcmp(r2->names[i],r1->parameter[j])==0)
     1023          {
     1024            b=FALSE;
     1025            break;
     1026          }
    10201027        }
    10211028      }
     
    10241031    if (b)
    10251032    {
    1026       for(j=0;j<r1->N;j++)
    1027       {
    1028         if (strcmp(r1->names[j],r2->names[i])==0)
    1029         {
    1030           b=FALSE;
    1031           break;
     1033      if (vartest)
     1034      {
     1035        for(j=0;j<r1->N;j++)
     1036        {
     1037          if (strcmp(r1->names[j],r2->names[i])==0)
     1038          {
     1039            b=FALSE;
     1040            break;
     1041          }
    10321042        }
    10331043      }
     
    13691379
    13701380/*2
     1381 *returns -1 for not compatible, (sum is undefined)
     1382 *         0 for equal, (and sum)
     1383 *         1 for compatible (and sum)
     1384 */
     1385int rSum(ring r1, ring r2, ring &sum)
     1386{
     1387  if (r1==r2)
     1388  {
     1389    sum=r1;
     1390    r1->ref++;
     1391    return 0;
     1392  }
     1393  return rTensor(r1,r2,sum,TRUE,FALSE);
     1394}
     1395
     1396/*2
    13711397 * create a copy of the ring r, which must be equivalent to currRing
    13721398 * used for qring definition,..
     
    35923618     i++;
    35933619  } while (1);
     3620  WarnS("re-creating ring with comps");
    35943621  last_block=i-1;
    35953622 
Note: See TracChangeset for help on using the changeset viewer.