Changeset bc36a0 in git
- Timestamp:
- Oct 18, 2004, 8:57:46 PM (20 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 33e05d5d4685ba91116795ac35796c03917339bd
- Parents:
- b39bc1f12466f3f82f8543a8e01764c4e63c6c15
- Location:
- Singular
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/extra.cc
rb39bc1f rbc36a0 2 2 * Computer Algebra System SINGULAR * 3 3 *****************************************/ 4 /* $Id: extra.cc,v 1.21 3 2004-10-11 09:06:52 brickenExp $ */4 /* $Id: extra.cc,v 1.214 2004-10-18 18:57:43 levandov Exp $ */ 5 5 /* 6 6 * ABSTRACT: general interface to internals of Singular ("system" command) … … 955 955 } 956 956 else 957 /*==================== opp ==================================*/ 958 if (strcmp(sys_cmd, "opp")==0) 959 { 960 if ((h!=NULL) && (h->Typ()==RING_CMD)) 961 { 962 ring r=(ring)h->Data(); 963 res->data=rOpposite(r); 964 res->rtyp=RING_CMD; 965 return FALSE; 966 } 967 else 968 { 969 WerrorS("`system(\"opp\",<ring>)` expected"); 970 return TRUE; 971 } 972 } 973 else 974 /*==================== env ==================================*/ 975 if (strcmp(sys_cmd, "env")==0) 976 { 977 if ((h!=NULL) && (h->Typ()==RING_CMD)) 978 { 979 ring r = (ring)h->Data(); 980 res->data = rEnvelope(r); 981 res->rtyp = RING_CMD; 982 return FALSE; 983 } 984 else 985 { 986 WerrorS("`system(\"env\",<ring>)` expected"); 987 return TRUE; 988 } 989 } 990 else 991 /*==================== oppose ==================================*/ 992 if (strcmp(sys_cmd, "oppose")==0) 993 { 994 ring Rop; 995 if ((h!=NULL) && (h->Typ()==RING_CMD)) 996 { 997 Rop = (ring)h->Data(); 998 h = h->next; 999 } 1000 if ((h!=NULL)) 1001 { 1002 idhdl w; 1003 if ((w=Rop->idroot->get(h->Name(),myynest))!=NULL) 1004 { 1005 poly p = (poly)IDDATA(w); 1006 res->data = pOppose(Rop,p); 1007 res->rtyp = POLY_CMD; 1008 return FALSE; 1009 } 1010 } 1011 else 1012 { 1013 WerrorS("`system(\"oppose\",<ring>,<poly>)` expected"); 1014 return TRUE; 1015 } 1016 } 1017 else 957 1018 #endif 958 1019 /*================= Extended system call ========================*/ … … 1672 1733 } 1673 1734 else 1674 /*==================== opp ==================================*/1675 if (strcmp(sys_cmd, "opp")==0)1676 {1677 if ((h!=NULL) && (h->Typ()==RING_CMD))1678 {1679 ring r=(ring)h->Data();1680 res->data=rOpposite(r);1681 res->rtyp=RING_CMD;1682 return FALSE;1683 }1684 else1685 {1686 WerrorS("`system(\"opp\",<ring>)` expected");1687 return TRUE;1688 }1689 }1690 else1691 /*==================== env ==================================*/1692 if (strcmp(sys_cmd, "env")==0)1693 {1694 if ((h!=NULL) && (h->Typ()==RING_CMD))1695 {1696 ring r=(ring)h->Data();1697 res->data=rEnvelope(r);1698 res->rtyp=RING_CMD;1699 return FALSE;1700 }1701 else1702 {1703 WerrorS("`system(\"env\",<ring>)` expected");1704 return TRUE;1705 }1706 }1707 else1708 /*==================== oppose ==================================*/1709 if (strcmp(sys_cmd, "oppose")==0)1710 {1711 ring Rop;1712 if ((h!=NULL) && (h->Typ()==RING_CMD))1713 {1714 Rop =(ring)h->Data();1715 h=h->next;1716 }1717 if ((h!=NULL))1718 {1719 idhdl w;1720 if ((w=Rop->idroot->get(h->Name(),myynest))!=NULL)1721 {1722 poly p = (poly)IDDATA(w);1723 res->data = p_Oppose(Rop,p);1724 res->rtyp = POLY_CMD;1725 return FALSE;1726 }1727 }1728 else1729 {1730 WerrorS("`system(\"oppose\",<ring>,<poly>)` expected");1731 return TRUE;1732 }1733 }1734 else1735 1735 /*==================== Error =================*/ 1736 1736 Werror( "system(\"%s\",...) %s", sys_cmd, feNotImplemented ); -
Singular/iparith.cc
rb39bc1f rbc36a0 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: iparith.cc,v 1.32 8 2004-10-05 13:00:29 SingularExp $ */4 /* $Id: iparith.cc,v 1.329 2004-10-18 18:57:44 levandov Exp $ */ 5 5 6 6 /* … … 187 187 { "eliminate", 0, ELIMINATION_CMD, CMD_23}, 188 188 { "else", 0, ELSE_CMD , ELSE_CMD}, 189 #ifdef HAVE_PLURAL 190 { "envelope", 0, ENVELOPE_CMD , CMD_1}, 191 #endif 189 192 { "eval", 0, EVAL , EVAL}, 190 193 { "example", 0, EXAMPLE_CMD , EXAMPLE_CMD}, … … 277 280 { "nvars", 0, NVARS_CMD , CMD_1}, 278 281 { "open", 0, OPEN_CMD , CMD_1}, 282 #ifdef HAVE_PLURAL 283 { "oppose", 0, OPPOSE_CMD , CMD_2}, 284 { "opposite", 0, OPPOSITE_CMD , CMD_1}, 285 #endif 279 286 { "option", 0, OPTION_CMD , CMD_M}, 280 287 { "or", 0, '|' , LOGIC_OP}, … … 2028 2035 } 2029 2036 2030 static BOOLEAN jjTWOSTD(leftv res, leftv a) 2031 { 2032 if (rIsPluralRing(currRing)) res->data=(ideal)twostd((ideal)a->Data()); 2033 else res->data=(ideal)a->Data(); 2034 setFlag(res,FLAG_STD); 2035 setFlag(res,FLAG_TWOSTD); 2036 return FALSE; 2037 } 2038 2039 #endif 2037 static BOOLEAN jjOPPOSE(leftv res, leftv a, leftv b) 2038 { 2039 /* int, number, poly, vector, intvec */ 2040 /* if (rIsPluralRing(currRing)) -- skipped! */ 2041 ring r = (ring)a->Data(); 2042 if (r == currRing) 2043 { 2044 res->data = b->Data(); 2045 res->rtyp = b->rtyp; 2046 return FALSE; 2047 } 2048 if (!rIsLikeOpposite(currRing, r)) 2049 { 2050 Werror("%s is not an opposite ring to current ring",a->Fullname()); 2051 return TRUE; 2052 } 2053 idhdl w; 2054 if( ((w=r->idroot->get(b->Name(),myynest))!=NULL) && (b->e==NULL)) 2055 { 2056 int argtype = IDTYP(w); 2057 switch (argtype) 2058 { 2059 case NUMBER_CMD: 2060 { 2061 /* since basefields are equal, we can apply nCopy */ 2062 res->data = nCopy((number)IDDATA(w)); 2063 res->rtyp = argtype; 2064 break; 2065 } 2066 case POLY_CMD: 2067 case VECTOR_CMD: 2068 { 2069 poly q = (poly)IDDATA(w); 2070 res->data = pOppose(r,q); 2071 res->rtyp = argtype; 2072 break; 2073 } 2074 case IDEAL_CMD: 2075 case MODUL_CMD: 2076 { 2077 ideal Q = (ideal)IDDATA(w); 2078 res->data = idOppose(r,Q); 2079 res->rtyp = argtype; 2080 break; 2081 } 2082 default: 2083 { 2084 Werror("unsupported type in oppose"); 2085 return TRUE; 2086 } 2087 } 2088 } 2089 else 2090 { 2091 Werror("identifier %s not found in %s",b->Fullname(),a->Fullname()); 2092 return TRUE; 2093 } 2094 return FALSE; 2095 } 2096 2097 // static BOOLEAN jjOPPOSE_ideal(leftv res, leftv a, leftv b) 2098 // { 2099 // /* int, number, poly, vector, intvec */ 2100 // ring A = (ring)a->Data(); 2101 // ideal Q = (ideal)b->Data(); 2102 // // if (rIsPluralRing(currRing)) 2103 // { 2104 // res->data = idOppose(A,Q); 2105 // } 2106 // return FALSE; 2107 // } 2108 2109 // static BOOLEAN jjOPPOSE(leftv res, leftv a, leftv b) 2110 // { 2111 // if (rIsPluralRing(currRing)) 2112 // { 2113 // int btype = (int)b->rtyp; 2114 // ring A = (ring)a->Data(); 2115 // switch (btype) 2116 // { 2117 // case INT_CMD: 2118 // case POLY_CMD: 2119 // case VECTOR_CMD: 2120 // case INTVEC_CMD: 2121 // case NUMBER_CMD: 2122 // { 2123 // poly q = (poly)b->Data(); 2124 // res->data = pOppose(A,q); 2125 // res->rtyp = b->rtyp; 2126 // } 2127 // case IDEAL_CMD: 2128 // case MATRIX_CMD: 2129 // case MODUL_CMD: 2130 // case INTMAT_CMD: 2131 // { 2132 // ideal Q = (ideal)b->Data(); 2133 // res->data = idOppose(A,Q); 2134 // res->rtyp = b->rtyp; 2135 // } 2136 // // TODO case RESOLUTION_CMD: 2137 // default: return FALSE; 2138 // } 2139 // } 2140 // else res->data=NULL; 2141 // return FALSE; 2142 // } 2143 #endif /* HAVE_PLURAL */ 2040 2144 2041 2145 static BOOLEAN jjQUOT(leftv res, leftv u, leftv v) … … 2551 2655 #ifdef HAVE_PLURAL 2552 2656 ,{jjBRACKET, BRACKET_CMD, POLY_CMD, POLY_CMD, POLY_CMD ALLOW_PLURAL} 2657 ,{jjOPPOSE, OPPOSE_CMD, ANY_TYPE/*set by p*/, RING_CMD, POLY_CMD ALLOW_PLURAL} 2658 ,{jjOPPOSE, OPPOSE_CMD, ANY_TYPE/*set by p*/, RING_CMD, DEF_CMD ALLOW_PLURAL} 2659 // ,{jjOPPOSE_poly, OPPOSE_CMD, NUMBER_CMD, RING_CMD, NUMBER_CMD ALLOW_PLURAL} 2660 // ,{jjOPPOSE_poly, OPPOSE_CMD, POLY_CMD, RING_CMD, POLY_CMD ALLOW_PLURAL} 2661 // ,{jjOPPOSE_poly, OPPOSE_CMD, VECTOR_CMD, RING_CMD, VECTOR_CMD ALLOW_PLURAL} 2662 // ,{jjOPPOSE_ideal, OPPOSE_CMD, IDEAL_CMD, RING_CMD, IDEAL_CMD ALLOW_PLURAL} 2663 // ,{jjOPPOSE_ideal, OPPOSE_CMD, MODUL_CMD, RING_CMD, MODUL_CMD ALLOW_PLURAL} 2664 // ,{jjOPPOSE_ideal, OPPOSE_CMD, MATRIX_CMD, RING_CMD, MATRIX_CMD ALLOW_PLURAL} 2553 2665 #endif 2554 2666 ,{jjCOEF, COEF_CMD, MATRIX_CMD, POLY_CMD, POLY_CMD ALLOW_PLURAL} … … 3526 3638 return FALSE; 3527 3639 } 3640 3641 #ifdef HAVE_PLURAL 3642 3643 static BOOLEAN jjOPPOSITE(leftv res, leftv a) 3644 { 3645 ring r = (ring)a->Data(); 3646 if (rIsPluralRing(currRing)) 3647 { 3648 res->data = rOpposite(r); 3649 } 3650 else res->data = rCopy(r); 3651 return FALSE; 3652 } 3653 3654 static BOOLEAN jjENVELOPE(leftv res, leftv a) 3655 { 3656 ring r = (ring)a->Data(); 3657 if (rIsPluralRing(currRing)) 3658 { 3659 // ideal i; 3660 // if (a->rtyp == QRING_CMD) 3661 // { 3662 // i = r->qideal; 3663 // r->qideal = NULL; 3664 // } 3665 ring s = rEnvelope(r); 3666 // if (a->rtyp == QRING_CMD) 3667 // { 3668 // ideal is = idOppose(r,i); /* twostd? */ 3669 // is = idAdd(is,i); 3670 // s->qideal = i; 3671 // } 3672 res->data = s; 3673 } 3674 else res->data = rCopy(r); 3675 return FALSE; 3676 } 3677 3678 static BOOLEAN jjTWOSTD(leftv res, leftv a) 3679 { 3680 if (rIsPluralRing(currRing)) res->data=(ideal)twostd((ideal)a->Data()); 3681 else res->data=(ideal)a->Data(); 3682 setFlag(res,FLAG_STD); 3683 setFlag(res,FLAG_TWOSTD); 3684 return FALSE; 3685 } 3686 #endif 3687 3528 3688 static BOOLEAN jjTYPEOF(leftv res, leftv v) 3529 3689 { … … 4073 4233 ,{jjSYZYGY, SYZYGY_CMD, MODUL_CMD, MODUL_CMD ALLOW_PLURAL} 4074 4234 #ifdef HAVE_PLURAL 4235 ,{jjENVELOPE, ENVELOPE_CMD, RING_CMD, RING_CMD ALLOW_PLURAL} 4236 ,{jjOPPOSITE, OPPOSITE_CMD, RING_CMD, RING_CMD ALLOW_PLURAL} 4075 4237 ,{jjTWOSTD, TWOSTD_CMD, IDEAL_CMD, IDEAL_CMD ALLOW_PLURAL} 4076 4238 #endif -
Singular/tok.h
rb39bc1f rbc36a0 7 7 * ABSTRACT: tokens, types for interpreter; general macros 8 8 */ 9 /* $Id: tok.h,v 1.5 8 2004-04-23 13:52:00 SingularExp $ */9 /* $Id: tok.h,v 1.59 2004-10-18 18:57:46 levandov Exp $ */ 10 10 11 11 #ifndef MYYSTYPE … … 75 75 DUMP_CMD, 76 76 END_GRAMMAR, 77 ENVELOPE_CMD, 77 78 ERROR_CMD, 78 79 EXECUTE_CMD, … … 114 115 NVARS_CMD, 115 116 OPEN_CMD, 117 OPPOSE_CMD, 118 OPPOSITE_CMD, 116 119 OPTION_CMD, 117 120 ORDSTR_CMD,
Note: See TracChangeset
for help on using the changeset viewer.