Changeset 15e59a in git for Singular/LIB/general.lib
- Timestamp:
- Nov 16, 2006, 11:56:18 AM (16 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a800fe4b3e9d37a38c5a10cc0ae9dfa0c15a4ee6')
- Children:
- 84375a9ec076945718aaeff4eda7ff2df15f6cd9
- Parents:
- 7dfc59a71d8f9f93f9fb6c331496cdf9b42a89ed
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/general.lib
r7dfc59 r15e59a 3 3 //eric, added absValue 11.04.2002 4 4 /////////////////////////////////////////////////////////////////////////////// 5 version="$Id: general.lib,v 1.5 0 2006-07-20 14:51:56Singular Exp $";5 version="$Id: general.lib,v 1.51 2006-11-16 10:55:58 Singular Exp $"; 6 6 category="General purpose"; 7 7 info=" … … 958 958 } 959 959 /////////////////////////////////////////////////////////////////////////////// 960 961 proc lsum (int n, list l) 962 { if (n>10) 963 { return( lsum(n/2,list(l[1..(n/2)])) + lsum(n-n/2, list(l[(n/2+1)..n])) ); 964 } 965 else 966 { def Summe=l[1]; 967 for (int i=2;i<=n;i++) 968 { Summe=Summe+l[i]; 969 } 970 return(Summe); 971 } 972 } 973 974 /////////////////////////////////////////////////////////////////////////////// 975 960 976 proc sum (id, list #) 961 977 "USAGE: sum(id[,v]); id ideal/vector/module/matrix/intvec/intmat/list, … … 1013 1029 } 1014 1030 if( ty=="int" or ty=="intvec" or ty=="intmat" ) 1015 { 1031 { //case: id = intvec 1016 1032 if ( ty == "int" ) { intmat S =id; } 1017 1033 else { intmat S = intmat(id); } 1018 1034 intvec i = S[1..nrows(S),1..ncols(S)]; 1019 1035 kill id; 1020 intvec id = i; //case: id = intvec1036 intvec id = i; 1021 1037 } 1022 1038 //------------------- consider intvec v and empty sum ----------------------- … … 1035 1051 //-------------------------- finally, add objects --------------------------- 1036 1052 n = size(id); 1037 def f(1) = id[1]; 1038 for( j=2; j<=n; j=j+1 ) { def f(j)=f(j-1)+id[j]; } 1039 return(f(n)); int n,j,tt; 1053 if (n>10) 1054 { return( lsum(n/2,list(id[1..(n/2)])) + lsum(n-n/2, list(id[(n/2+1)..n])) ); 1055 } 1056 else 1057 { def Summe=id[1]; 1058 for (int lauf=2;lauf<=n;lauf++) 1059 { Summe=Summe+id[lauf]; 1060 } 1061 return(Summe); 1062 } 1040 1063 } 1041 1064 example 1042 1065 { "EXAMPLE:"; echo = 2; 1043 ring r = 0,(x,y,z),dp;1066 ring r1 = 0,(x,y,z),dp; 1044 1067 vector pv = [xy,xz,yz,x2,y2,z2]; 1045 1068 sum(pv); … … 1050 1073 intvec iv = 1,2,3,4,5,6,7,8,9; 1051 1074 sum(iv,2..4); 1052 } 1075 iv = intvec(1..100); 1076 sum(iv); 1077 ring r2 = 0,(x(1..10)),dp; 1078 sum(x(3..7),intvec(1,3,5)); 1079 } 1080 /////////////////////////////////////////////////////////////////////////////// 1081 1082 1053 1083 /////////////////////////////////////////////////////////////////////////////// 1054 1084
Note: See TracChangeset
for help on using the changeset viewer.