Changeset bf7809 in git
- Timestamp:
- Jun 22, 2017, 10:19:12 AM (7 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- a9ed33afe407efe033af4b9329d3e00fefd17a35
- Parents:
- 991aba29b3b88762eeea5ba2c4f5e0f8a9319985
- Location:
- Singular
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/rootisolation.lib
r991aba2 rbf7809 52 52 static proc mod_init() 53 53 { 54 //LIB "interval.so"; // use this if integrated into Singular Sources55 LIB "dyn_modules/interval.so";54 LIB "interval.so"; // use this if integrated into Singular Sources 55 //LIB "dyn_modules/interval.so"; 56 56 LIB "atkins.lib"; // for round (tmp?) 57 57 -
Singular/dyn_modules/interval/interval.cc
r991aba2 rbf7809 108 108 */ 109 109 110 int intervalID;111 int boxID;110 static int intervalID; 111 static int boxID; 112 112 113 113 /* … … 115 115 */ 116 116 117 void* interval_Init(blackbox*)117 static void* interval_Init(blackbox*) 118 118 { 119 119 return (void*) new interval(); … … 121 121 122 122 // convert interval to string 123 char* interval_String(blackbox*, void *d)123 static char* interval_String(blackbox*, void *d) 124 124 { 125 125 if (d == NULL) … … 143 143 } 144 144 145 void* interval_Copy(blackbox*, void *d)145 static void* interval_Copy(blackbox*, void *d) 146 146 { 147 147 return (void*) new interval((interval*) d); … … 149 149 150 150 // destroy interval 151 void interval_Destroy(blackbox*, void *d)151 static void interval_Destroy(blackbox*, void *d) 152 152 { 153 153 if (d != NULL) … … 156 156 157 157 // assigning values to intervals 158 BOOLEAN interval_Assign(leftv result, leftv args)158 static BOOLEAN interval_Assign(leftv result, leftv args) 159 159 { 160 160 assume(result->Typ() == intervalID); … … 187 187 else 188 188 { 189 Werror ("Input not supported: first argument not int or number");189 WerrorS("Input not supported: first argument not int or number"); 190 190 return TRUE; 191 191 } … … 212 212 else 213 213 { 214 Werror ("Input not supported: second argument not int or number");214 WerrorS("Input not supported: second argument not int or number"); 215 215 return TRUE; 216 216 } … … 239 239 } 240 240 241 BOOLEAN length(leftv result, leftv arg)241 static BOOLEAN length(leftv result, leftv arg) 242 242 { 243 243 if (arg != NULL && arg->Typ() == intervalID) … … 250 250 } 251 251 252 Werror ("syntax: length(<interval>)");252 WerrorS("syntax: length(<interval>)"); 253 253 return TRUE; 254 254 } … … 256 256 // interval -> interval procedures 257 257 258 interval* intervalScalarMultiply(number a, interval *I)258 static interval* intervalScalarMultiply(number a, interval *I) 259 259 { 260 260 number lo, up; … … 276 276 } 277 277 278 interval* intervalMultiply(interval *I, interval *J)278 static interval* intervalMultiply(interval *I, interval *J) 279 279 { 280 280 number lo, up; … … 313 313 } 314 314 315 interval* intervalAdd(interval *I, interval *J)315 static interval* intervalAdd(interval *I, interval *J) 316 316 { 317 317 number lo = nAdd(I->lower, J->lower), … … 324 324 } 325 325 326 interval* intervalSubtract(interval *I, interval *J)326 static interval* intervalSubtract(interval *I, interval *J) 327 327 { 328 328 number lo = nSub(I->lower, J->upper), … … 335 335 } 336 336 337 bool intervalEqual(interval *I, interval *J)337 static bool intervalEqual(interval *I, interval *J) 338 338 { 339 339 return nEqual(I->lower, J->lower) && nEqual(I->upper, J->upper); … … 341 341 342 342 // ckeck if zero is contained in an interval 343 bool intervalContainsZero(interval *I)343 static bool intervalContainsZero(interval *I) 344 344 { 345 345 number n = nMult(I->lower, I->upper); … … 351 351 } 352 352 353 interval* intervalPower(interval *I, int p)353 static interval* intervalPower(interval *I, int p) 354 354 { 355 355 if (p == 0) … … 411 411 */ 412 412 413 BOOLEAN interval_Op2(int op, leftv result, leftv i1, leftv i2)413 static BOOLEAN interval_Op2(int op, leftv result, leftv i1, leftv i2) 414 414 { 415 415 interval *RES; … … 421 421 if (i1->Typ() != intervalID || i2->Typ() != intervalID) 422 422 { 423 Werror ("syntax: <interval> + <interval>");423 WerrorS("syntax: <interval> + <interval>"); 424 424 return TRUE; 425 425 } … … 435 435 if (i1->Typ() != intervalID || i2->Typ() != intervalID) 436 436 { 437 Werror ("syntax: <interval> - <interval>");437 WerrorS("syntax: <interval> - <interval>"); 438 438 return TRUE; 439 439 } … … 482 482 { n = (number) iscalar->CopyD(); break; } 483 483 default: 484 { Werror ("first argument not int/number/interval"); return TRUE; }484 { WerrorS("first argument not int/number/interval"); return TRUE; } 485 485 } 486 486 … … 504 504 if(intervalContainsZero(I2)) 505 505 { 506 Werror ("second interval contains zero");506 WerrorS("second interval contains zero"); 507 507 return TRUE; 508 508 } … … 538 538 default: 539 539 { 540 Werror ("first argument not int/number/interval");540 WerrorS("first argument not int/number/interval"); 541 541 delete I2inv; 542 542 return TRUE; … … 563 563 default: 564 564 { 565 Werror ("second argument not int/number/interval");565 WerrorS("second argument not int/number/interval"); 566 566 return TRUE; 567 567 } … … 570 570 if (nIsZero(n)) 571 571 { 572 Werror ("<interval>/0 not supported");572 WerrorS("<interval>/0 not supported"); 573 573 return TRUE; 574 574 } … … 588 588 if (i1->Typ() != intervalID || i2->Typ() != INT_CMD) 589 589 { 590 Werror ("syntax: <interval> ^ <int>");590 WerrorS("syntax: <interval> ^ <int>"); 591 591 return TRUE; 592 592 } … … 594 594 if (p < 0) 595 595 { 596 Werror ("<interval> ^ n not implemented for n < 0");596 WerrorS("<interval> ^ n not implemented for n < 0"); 597 597 return TRUE; 598 598 } … … 606 606 if (i1->Typ() != intervalID || i2->Typ() != intervalID) 607 607 { 608 Werror ("syntax: <interval> == <interval>");608 WerrorS("syntax: <interval> == <interval>"); 609 609 return TRUE; 610 610 } … … 623 623 if (i1->Typ() != intervalID || i2->Typ() != INT_CMD) 624 624 { 625 Werror ("syntax: <interval>[<int>]");625 WerrorS("syntax: <interval>[<int>]"); 626 626 return TRUE; 627 627 } … … 641 641 else 642 642 { 643 Werror ("Allowed indices are 1 and 2");643 WerrorS("Allowed indices are 1 and 2"); 644 644 return TRUE; 645 645 } … … 678 678 } 679 679 680 BOOLEAN interval_serialize(blackbox*, void *d, si_link f)680 static BOOLEAN interval_serialize(blackbox*, void *d, si_link f) 681 681 { 682 682 /* … … 714 714 } 715 715 716 BOOLEAN interval_deserialize(blackbox**, void **d, si_link f)716 static BOOLEAN interval_deserialize(blackbox**, void **d, si_link f) 717 717 { 718 718 leftv l; … … 734 734 */ 735 735 736 void* box_Init(blackbox*)736 static void* box_Init(blackbox*) 737 737 { 738 738 return (void*) new box(); 739 739 } 740 740 741 void* box_Copy(blackbox*, void *d)741 static void* box_Copy(blackbox*, void *d) 742 742 { 743 743 return (void*) new box((box*) d); 744 744 } 745 745 746 void box_Destroy(blackbox*, void *d)746 static void box_Destroy(blackbox*, void *d) 747 747 { 748 748 if (d != NULL) … … 750 750 } 751 751 752 char* box_String(blackbox*, void *d)752 static char* box_String(blackbox*, void *d) 753 753 { 754 754 blackbox *b_i = getBlackboxStuff(intervalID); … … 773 773 774 774 // assigning values to intervals 775 BOOLEAN box_Assign(leftv result, leftv args)775 static BOOLEAN box_Assign(leftv result, leftv args) 776 776 { 777 777 assume(result->Typ() == boxID); … … 805 805 if (l->m[i].Typ() != intervalID) 806 806 { 807 Werror ("list contains non-intervals");807 WerrorS("list contains non-intervals"); 808 808 delete RES; 809 809 args->CleanUp(); … … 818 818 if (RES->R->cf != RES->intervals[i]->R->cf) 819 819 { 820 Werror ("Passing interval to ring with different coefficient field");820 WerrorS("Passing interval to ring with different coefficient field"); 821 821 delete RES; 822 822 args->CleanUp(); … … 832 832 else 833 833 { 834 Werror ("Input not supported: first argument not box, list, or interval");834 WerrorS("Input not supported: first argument not box, list, or interval"); 835 835 return TRUE; 836 836 } … … 856 856 } 857 857 858 BOOLEAN box_Op2(int op, leftv result, leftv b1, leftv b2)858 static BOOLEAN box_Op2(int op, leftv result, leftv b1, leftv b2) 859 859 { 860 860 if (b1 == NULL || b1->Typ() != boxID) … … 875 875 if (b2 == NULL || b2->Typ() != INT_CMD) 876 876 { 877 Werror ("second argument not int");877 WerrorS("second argument not int"); 878 878 return TRUE; 879 879 } … … 887 887 if (i < 1 || i > n) 888 888 { 889 Werror ("index out of bounds");889 WerrorS("index out of bounds"); 890 890 return TRUE; 891 891 } … … 907 907 if (b2 == NULL || b2->Typ() != boxID) 908 908 { 909 Werror ("second argument not box");909 WerrorS("second argument not box"); 910 910 } 911 911 if (result->Data() != NULL) … … 939 939 if (b2 == NULL || b2->Typ() != boxID) 940 940 { 941 Werror ("second argument not box");941 WerrorS("second argument not box"); 942 942 } 943 943 box *B2 = (box*) b2->Data(); … … 964 964 } 965 965 966 BOOLEAN box_OpM(int op, leftv result, leftv args)966 static BOOLEAN box_OpM(int op, leftv result, leftv args) 967 967 { 968 968 leftv a = args; … … 973 973 if (args->Typ() != boxID) 974 974 { 975 Werror ("can only intersect boxes");975 WerrorS("can only intersect boxes"); 976 976 return TRUE; 977 977 } … … 992 992 if (args->Typ() != boxID) 993 993 { 994 Werror ("can only intersect boxes");994 WerrorS("can only intersect boxes"); 995 995 return TRUE; 996 996 } … … 1036 1036 } 1037 1037 1038 BOOLEAN box_serialize(blackbox*, void *d, si_link f)1038 static BOOLEAN box_serialize(blackbox*, void *d, si_link f) 1039 1039 { 1040 1040 /* … … 1067 1067 } 1068 1068 1069 BOOLEAN box_deserialize(blackbox**, void **d, si_link f)1069 static BOOLEAN box_deserialize(blackbox**, void **d, si_link f) 1070 1070 { 1071 1071 leftv l; … … 1092 1092 } 1093 1093 1094 BOOLEAN boxSet(leftv result, leftv args)1094 static BOOLEAN boxSet(leftv result, leftv args) 1095 1095 { 1096 1096 assume(result->Typ() == boxID); … … 1109 1109 if (i < 1 || i > n) 1110 1110 { 1111 Werror ("index out of range");1111 WerrorS("index out of range"); 1112 1112 return TRUE; 1113 1113 } … … 1122 1122 if (RES->R->cf != RES->intervals[i-1]->R->cf) 1123 1123 { 1124 Werror ("Passing interval to ring with different coefficient field");1124 WerrorS("Passing interval to ring with different coefficient field"); 1125 1125 delete RES; 1126 1126 args->CleanUp(); … … 1143 1143 */ 1144 1144 1145 BOOLEAN evalPolyAtBox(leftv result, leftv args)1145 static BOOLEAN evalPolyAtBox(leftv result, leftv args) 1146 1146 { 1147 1147 assume(result->Typ() == intervalID); -
Singular/dyn_modules/interval/interval.h
r991aba2 rbf7809 29 29 }; 30 30 31 extern int intervalID;32 extern int boxID;31 //extern int intervalID; 32 //extern int boxID; 33 33 34 34 // helpful functions 35 interval* intervalScalarMultiply(number, interval*);36 interval* intervalMultiply(interval*, interval*);37 interval* intervalAdd(interval*, interval*);38 interval* intervalSubtract(interval*, interval*);39 bool intervalEqual(interval*, interval*);40 bool intervalContainsZero(interval*);35 //interval* intervalScalarMultiply(number, interval*); 36 //interval* intervalMultiply(interval*, interval*); 37 //interval* intervalAdd(interval*, interval*); 38 //interval* intervalSubtract(interval*, interval*); 39 //bool intervalEqual(interval*, interval*); 40 //bool intervalContainsZero(interval*); 41 41 42 42 extern "C" int mod_init(SModulFunctions*);
Note: See TracChangeset
for help on using the changeset viewer.