Changeset 4b2155 in git
- Timestamp:
- Apr 16, 1999, 9:53:44 AM (24 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- 0df02761ea5104747ff923eee578ddb4d27f4a45
- Parents:
- 04d56fffcf5bd9bd7b214fdec1609e8a293fd986
- Location:
- Singular
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/grammar.y
r04d56f r4b2155 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: grammar.y,v 1.5 8 1999-04-15 17:28:03 SingularExp $ */4 /* $Id: grammar.y,v 1.59 1999-04-16 07:53:32 obachman Exp $ */ 5 5 /* 6 6 * ABSTRACT: SINGULAR shell grammatik … … 638 638 if(iiExprArith1(&$$,&$3,MATRIX_CMD)) YYERROR; 639 639 } 640 | INTMAT_CMD '(' expr ',' expr ',' expr ')' 641 { 642 if(iiExprArith3(&$$,INTMAT_CMD,&$3,&$5,&$7)) YYERROR; 643 } 640 644 | INTMAT_CMD '(' expr ')' 641 645 { -
Singular/intvec.cc
r04d56f r4b2155 2 2 * Computer Algebra System SINGULAR * 3 3 *****************************************/ 4 /* $Id: intvec.cc,v 1.1 0 1998-09-24 09:59:43 SingularExp $ */4 /* $Id: intvec.cc,v 1.11 1999-04-16 07:53:33 obachman Exp $ */ 5 5 /* 6 6 * ABSTRACT: class intvec: lists/vectors of integers … … 77 77 } 78 78 79 char * intvec::ivString(int mat,int spaces )79 char * intvec::ivString(int mat,int spaces, int dim) 80 80 { 81 81 StringSetS(""); … … 112 112 if (j+1<row) 113 113 { 114 StringAppend("\n");114 if (dim > 1) StringAppend("\n"); 115 115 if (spaces>0) StringAppend("%-*.*s",spaces,spaces," "); 116 116 } … … 120 120 } 121 121 122 char * intvec::String( )123 { 124 return mstrdup(ivString( ));122 char * intvec::String(int dim) 123 { 124 return mstrdup(ivString(0, 0, dim)); 125 125 } 126 126 -
Singular/intvec.h
r04d56f r4b2155 4 4 * Computer Algebra System SINGULAR * 5 5 ****************************************/ 6 /* $Id: intvec.h,v 1. 6 1999-03-16 13:43:38 SingularExp $ */6 /* $Id: intvec.h,v 1.7 1999-04-16 07:53:34 obachman Exp $ */ 7 7 /* 8 8 * ABSTRACT: class intvec: lists/vectors of integers … … 55 55 // keiner (ausser obachman) darf das folgenden benutzen !!! 56 56 int * ivGetVec() { return v; } 57 char * String( );58 char * ivString(int mat=0,int spaces=0 );57 char * String(int dim = 2); 58 char * ivString(int mat=0,int spaces=0, int dim=2); 59 59 ~intvec() 60 60 { -
Singular/iparith.cc
r04d56f r4b2155 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: iparith.cc,v 1.14 1 1999-04-15 09:57:03obachman Exp $ */4 /* $Id: iparith.cc,v 1.142 1999-04-16 07:53:37 obachman Exp $ */ 5 5 6 6 /* … … 2952 2952 return FALSE; 2953 2953 } 2954 static BOOLEAN jjSTRING(leftv res, leftv v)2955 {2956 res->data = (char *)v->String();2957 if (res->data==NULL)2958 {2959 Werror("cannot convert %s to string",Tok2Cmdname(v->Typ()));2960 return TRUE;2961 }2962 return FALSE;2963 }2964 2954 static BOOLEAN jjSort_Id(leftv res, leftv v) 2965 2955 { 2966 2956 res->data = (char *)idSort((ideal)v->Data()); 2967 return FALSE;2968 }2969 static BOOLEAN jjSTRING_PROC(leftv res, leftv v)2970 {2971 procinfov pi = IDPROC((idhdl)v->data);2972 if((pi->language == LANG_SINGULAR) && (pi->data.s.body!=NULL))2973 //if(pi->language == LANG_SINGULAR)2974 {2975 //if(pi->data.s.body==NULL)2976 // iiGetLibProcBuffer(IDPROC((idhdl)v->data));2977 res->data=mstrdup(pi->data.s.body);2978 }2979 else2980 res->data=mstrdup("");2981 2957 return FALSE; 2982 2958 } … … 3559 3535 ,{jjSTD, STD_CMD, MODUL_CMD, MODUL_CMD } 3560 3536 ,{jjDUMMY, STRING_CMD, STRING_CMD, STRING_CMD } 3561 ,{jjSTRING, STRING_CMD, STRING_CMD, INT_CMD }3562 ,{jjSTRING, STRING_CMD, STRING_CMD, POLY_CMD }3563 ,{jjSTRING, STRING_CMD, STRING_CMD, VECTOR_CMD }3564 ,{jjSTRING, STRING_CMD, STRING_CMD, NUMBER_CMD }3565 ,{jjSTRING, STRING_CMD, STRING_CMD, MATRIX_CMD }3566 ,{jjSTRING, STRING_CMD, STRING_CMD, MODUL_CMD }3567 ,{jjSTRING, STRING_CMD, STRING_CMD, IDEAL_CMD }3568 ,{jjSTRING, STRING_CMD, STRING_CMD, MAP_CMD }3569 ,{jjSTRING, STRING_CMD, STRING_CMD, INTVEC_CMD }3570 ,{jjSTRING, STRING_CMD, STRING_CMD, INTMAT_CMD }3571 ,{jjSTRING, STRING_CMD, STRING_CMD, LINK_CMD }3572 ,{jjSTRING_PROC,STRING_CMD, STRING_CMD, PROC_CMD }3573 ,{jjSTRING, STRING_CMD, STRING_CMD, RING_CMD }3574 ,{jjSTRING, STRING_CMD, STRING_CMD, QRING_CMD }3575 3537 ,{jjSYSTEM, SYSTEM_CMD, NONE, STRING_CMD } 3576 3538 ,{jjSYZYGY, SYZYGY_CMD, MODUL_CMD, IDEAL_CMD } … … 3926 3888 return FALSE; 3927 3889 } 3890 static BOOLEAN jjINTMAT3(leftv res, leftv u, leftv v,leftv w) 3891 { 3892 intvec* im= new intvec((int)v->Data(),(int)w->Data(), 0); 3893 intvec* arg = (intvec*) u->Data(); 3894 int i, n = min(im->cols()*im->rows(), arg->cols()*arg->rows()); 3895 3896 for (i=0; i<n; i++) 3897 { 3898 (*im)[i] = (*arg)[i]; 3899 } 3900 3901 res->data = (char *)im; 3902 return FALSE; 3903 } 3928 3904 static BOOLEAN jjJET_P_IV(leftv res, leftv u, leftv v, leftv w) 3929 3905 { … … 4227 4203 //,{jjCALL3MANY, INTERSECT_CMD, NONE, DEF_CMD, DEF_CMD, DEF_CMD } 4228 4204 ,{lInsert3, INSERT_CMD, LIST_CMD, LIST_CMD, DEF_CMD, INT_CMD } 4205 ,{jjINTMAT3, INTMAT_CMD, INTMAT_CMD, INTMAT_CMD, INT_CMD, INT_CMD} 4229 4206 ,{jjCALL3MANY, INTVEC_CMD, INTVEC_CMD, DEF_CMD, DEF_CMD, DEF_CMD } 4230 4207 ,{jjJET_P_IV, JET_CMD, POLY_CMD, POLY_CMD, INT_CMD, INTVEC_CMD } … … 4587 4564 static BOOLEAN jjSTRING_PL(leftv res, leftv v) 4588 4565 { 4589 if ((v!=NULL)&&(v->next==NULL)) 4590 return iiExprArith1(res,v,iiOp); 4591 int sl=0; 4592 leftv h=v,nachher; 4593 sleftv tmpR; 4594 BOOLEAN bo; 4595 char *sum=NULL; 4596 while(h!=NULL) 4597 { 4598 /* convert to string =================================*/ 4599 nachher=h->next; 4600 h->next=NULL; 4601 bo=iiExprArith1(&tmpR,h,iiOp); 4602 if(bo) 4603 { 4604 h->next=nachher; 4605 FreeL(sum); 4606 return TRUE; 4607 } 4608 /* append to 'sum' =================================*/ 4609 if(sum==NULL) 4610 { 4611 sum=(char *)tmpR.data; 4612 sl=strlen(sum); 4613 } 4614 else 4615 { 4616 int nl=strlen((char *)tmpR.data); 4617 char *s=(char *)AllocL(sl+nl+1); 4618 memcpy(s,sum,sl); 4619 memcpy(s+sl,(char *)tmpR.data,nl); 4620 s[sl+nl]='\0'; 4621 sl+=nl; 4622 FreeL(sum); 4623 sum=s; 4624 } 4625 /* next sleftv =================================*/ 4626 h->next=nachher; 4627 h=nachher; 4628 } 4629 if (sum==NULL) sum=mstrdup(""); 4630 res->data=(char *)sum; 4566 if (v == NULL) 4567 { 4568 res->data = mstrdup(""); 4569 return FALSE; 4570 } 4571 int n = v->listLength(); 4572 if (n == 1) 4573 { 4574 res->data = v->String(); 4575 return FALSE; 4576 } 4577 4578 char** slist = (char**) Alloc(n*sizeof(char*)); 4579 int i, j; 4580 4581 for (i=0, j=0; i<n; i++, v = v ->next) 4582 { 4583 slist[i] = v->String(); 4584 assume(slist[i] != NULL); 4585 j+=strlen(slist[i]); 4586 } 4587 char* s = (char*) AllocL((j+1)*sizeof(char)); 4588 *s='\0'; 4589 for (i=0;i<n;i++) 4590 { 4591 strcat(s, slist[i]); 4592 FreeL(slist[i]); 4593 } 4594 Free(slist, n*sizeof(char*)); 4595 res->data = s; 4631 4596 return FALSE; 4632 4597 } -
Singular/ipshell.cc
r04d56f r4b2155 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: ipshell.cc,v 1.3 8 1999-03-15 16:18:53 SingularExp $ */4 /* $Id: ipshell.cc,v 1.39 1999-04-16 07:53:38 obachman Exp $ */ 5 5 /* 6 6 * ABSTRACT: … … 505 505 { 506 506 pString0(*pp++); 507 s=StringAppend("%c\n",ch); 508 } 509 } 510 s[strlen(s)-2]='\0'; 507 s=StringAppend("%c",ch); 508 if (dim > 1) s = StringAppend("\n"); 509 } 510 } 511 s[strlen(s)- (dim > 1 ? 2 : 1)]='\0'; 511 512 return s; 512 513 } -
Singular/lists.cc
r04d56f r4b2155 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: lists.cc,v 1.1 2 1998-10-21 10:25:39 kruegerExp $ */4 /* $Id: lists.cc,v 1.13 1999-04-16 07:53:39 obachman Exp $ */ 5 5 /* 6 6 * ABSTRACT: handling of the list type … … 354 354 } 355 355 356 char* lString(lists l) 357 { 358 if (l->nr == -1) return mstrdup(""); 359 char** slist = (char**) Alloc((l->nr+1) * sizeof(char*)); 360 int i, j, k; 361 char *s; 362 for (i=0, j = 0, k = 0; i<=l->nr; i++) 363 { 364 slist[i] = l->m[i].String(); 365 assume(slist[i] != NULL); 366 if (*(slist[i]) != '\0') 367 { 368 j += strlen(slist[i]); 369 k++; 370 } 371 } 372 s = (char*) AllocL(j+k+1); 373 *s = '\0'; 374 for (i=0; i<=l->nr; i++) 375 { 376 if (*(slist[i]) != '\0') 377 { 378 strcat(s, slist[i]); 379 strcat(s, ","); 380 } 381 FreeL(slist[i]); 382 } 383 if (k > 0) s[strlen(s) - 1] = '\0'; 384 Free(slist, (l->nr+1) * sizeof(char*)); 385 return s; 386 } -
Singular/lists.h
r04d56f r4b2155 4 4 * Computer Algebra System SINGULAR * 5 5 ****************************************/ 6 /* $Id: lists.h,v 1. 6 1998-10-21 10:25:38 kruegerExp $ */6 /* $Id: lists.h,v 1.7 1999-04-16 07:53:40 obachman Exp $ */ 7 7 /* 8 8 * ABSTRACT: handling of the list type … … 56 56 BOOLEAN lAdd(leftv res, leftv u, leftv v); 57 57 BOOLEAN lRingDependend(lists L); 58 char* lString(lists L); 59 58 60 59 61 lists liMakeResolv(resolvente r, int length, int reallen, int typ0, intvec ** weights); -
Singular/ring.cc
r04d56f r4b2155 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: ring.cc,v 1. 49 1999-03-25 20:18:32 SingularExp $ */4 /* $Id: ring.cc,v 1.50 1999-04-16 07:53:41 obachman Exp $ */ 5 5 6 6 /* … … 1736 1736 ring rCopy(ring r) 1737 1737 { 1738 if (r == NULL) return NULL; 1738 1739 int i,j; 1739 1740 int *pi; -
Singular/subexpr.cc
r04d56f r4b2155 638 638 } 639 639 640 char * sleftv::String(void *d )640 char * sleftv::String(void *d, BOOLEAN func) 641 641 { 642 642 #ifdef SIQ … … 658 658 { 659 659 /* create a string, which may be freed by FreeL 660 * leave the switch with return661 * or with break, which copies the string s*/660 * leave the switch with return 661 * or with break, which copies the string s*/ 662 662 char *s; 663 663 const char *n; … … 666 666 switch (Typ()) 667 667 { 668 case INT_CMD: 669 s=(char *)AllocL(MAX_INT_LEN+2); 670 sprintf(s,"%d",(int)d); 671 return s; 672 case STRING_CMD: 673 return (char *)CopyD(STRING_CMD); 674 case POLY_CMD: 675 case VECTOR_CMD: 676 s = pString((poly)d); 677 break; 678 case NUMBER_CMD: 679 StringSetS(""); 680 if ((rtyp==IDHDL)&&(IDTYP((idhdl)data)==NUMBER_CMD)) 681 { 682 nWrite(IDNUMBER((idhdl)data)); 683 } 684 else if (rtyp==NUMBER_CMD) 685 { 686 number n=(number)data; 687 nWrite(n); 688 data=(char *)n; 689 } 690 else if((rtyp==VMINPOLY)&&(rField_is_GF())) 691 { 692 nfShowMipo(); 693 } 694 else 695 { 696 number n=nCopy((number)d); 697 nWrite(n); 698 nDelete(&n); 699 } 700 s = StringAppend(""); 701 break; 702 case MATRIX_CMD: 703 s= iiStringMatrix((matrix)d,2); 704 break; 705 case MODUL_CMD: 706 case IDEAL_CMD: 707 case MAP_CMD: 708 s= iiStringMatrix((matrix)d,1); 709 break; 710 case INTVEC_CMD: 711 case INTMAT_CMD: 712 { 713 intvec *v=(intvec *)d; 714 return v->String(); 715 } 716 case RING_CMD: 717 case QRING_CMD: 718 { 719 return rString((ring)d); 720 } 668 case INT_CMD: 669 s=(char *)AllocL(MAX_INT_LEN+2); 670 sprintf(s,"%d",(int)d); 671 return s; 672 case STRING_CMD: 673 if (d != NULL) return mstrdup((char*)d); 674 return mstrdup(""); 675 case POLY_CMD: 676 case VECTOR_CMD: 677 s = pString((poly)d); 678 break; 679 case NUMBER_CMD: 680 StringSetS(""); 681 if ((rtyp==IDHDL)&&(IDTYP((idhdl)data)==NUMBER_CMD)) 682 { 683 nWrite(IDNUMBER((idhdl)data)); 684 } 685 else if (rtyp==NUMBER_CMD) 686 { 687 number n=(number)data; 688 nWrite(n); 689 data=(char *)n; 690 } 691 else if((rtyp==VMINPOLY)&&(rField_is_GF())) 692 { 693 nfShowMipo(); 694 } 695 else 696 { 697 number n=nCopy((number)d); 698 nWrite(n); 699 nDelete(&n); 700 } 701 s = StringAppend(""); 702 break; 703 case MATRIX_CMD: 704 s= iiStringMatrix((matrix)d,1); 705 break; 706 case MODUL_CMD: 707 case IDEAL_CMD: 708 case MAP_CMD: 709 s= iiStringMatrix((matrix)d,1); 710 break; 711 case INTVEC_CMD: 712 case INTMAT_CMD: 713 { 714 intvec *v=(intvec *)d; 715 return v->String(1); 716 } 717 case RING_CMD: 718 { 719 return rString((ring)d); 720 } 721 case QRING_CMD: 722 { 723 char* r = rString((ring)d); 724 char* i = iiStringMatrix((matrix) ((ring) d)->qideal, 1); 725 s = (char*) AllocL(strlen(r) + strlen(i) + 4); 726 sprintf(s, "%s,(%s)", r, i); 727 FreeL(r); 728 return s; 729 } 730 731 case RESOLUTION_CMD: 732 { 733 lists l = syConvRes((syStrategy)d); 734 s = lString(l); 735 l->Clean(); 736 return (s); 737 } 738 case PROC_CMD: 739 { 740 procinfo* pi = (procinfo*) d; 741 if((pi->language == LANG_SINGULAR) && (pi->data.s.body!=NULL)) 742 return mstrdup(pi->data.s.body); 743 else 744 return mstrdup(""); 745 } 746 721 747 case LINK_CMD: 722 748 { 723 749 return slString((si_link) d); 724 750 } 751 case DEF_CMD: 752 { 753 return mstrdup(""); 754 } 725 755 726 default: 727 #ifdef TEST 728 ::Print("String:unknown type %s(%d)", Tok2Cmdname(Typ()),Typ()); 729 #endif 730 return NULL; 756 case LIST_CMD: 757 { 758 return lString((lists) d); 759 } 760 default: 761 #ifdef TEST 762 ::Print("String:unknown type %s(%d)", Tok2Cmdname(Typ()),Typ()); 763 #endif 764 return mstrdup(""); 731 765 } /* end switch: (Typ()) */ 732 766 return mstrdup(s); 733 767 } 734 return NULL;768 return mstrdup(""); 735 769 } 736 770 -
Singular/subexpr.h
r04d56f r4b2155 4 4 * Computer Algebra System SINGULAR * 5 5 ****************************************/ 6 /* $Id: subexpr.h,v 1.1 5 1999-03-16 15:33:15 SingularExp $ */6 /* $Id: subexpr.h,v 1.16 1999-04-16 07:53:44 obachman Exp $ */ 7 7 /* 8 8 * ABSTRACT: handling of leftv … … 60 60 void Print(leftv store=NULL,int spaces=0); 61 61 void CleanUp(); 62 char * String(void *d=NULL );62 char * String(void *d=NULL, BOOLEAN func = FALSE); 63 63 void Copy(leftv e); 64 64 void * CopyD();
Note: See TracChangeset
for help on using the changeset viewer.