Changeset 15e59a in git for Singular/LIB/general.lib


Ignore:
Timestamp:
Nov 16, 2006, 11:56:18 AM (17 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
84375a9ec076945718aaeff4eda7ff2df15f6cd9
Parents:
7dfc59a71d8f9f93f9fb6c331496cdf9b42a89ed
Message:
*king: new sum/lsum


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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/general.lib

    r7dfc59 r15e59a  
    33//eric, added absValue 11.04.2002
    44///////////////////////////////////////////////////////////////////////////////
    5 version="$Id: general.lib,v 1.50 2006-07-20 14:51:56 Singular Exp $";
     5version="$Id: general.lib,v 1.51 2006-11-16 10:55:58 Singular Exp $";
    66category="General purpose";
    77info="
     
    958958}
    959959///////////////////////////////////////////////////////////////////////////////
     960
     961proc 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
    960976proc sum (id, list #)
    961977"USAGE:    sum(id[,v]); id ideal/vector/module/matrix/intvec/intmat/list,
     
    10131029   }
    10141030   if( ty=="int" or ty=="intvec" or ty=="intmat" )
    1015    {
     1031   {                                                 //case: id = intvec
    10161032      if ( ty == "int" ) { intmat S =id; }
    10171033      else { intmat S = intmat(id); }
    10181034      intvec i = S[1..nrows(S),1..ncols(S)];
    10191035      kill id;
    1020       intvec id = i;                                 //case: id = intvec
     1036      intvec id = i;
    10211037   }
    10221038//------------------- consider intvec v and empty sum  -----------------------
     
    10351051//-------------------------- finally, add objects  ---------------------------
    10361052   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   }
    10401063}
    10411064example
    10421065{  "EXAMPLE:"; echo = 2;
    1043    ring r= 0,(x,y,z),dp;
     1066   ring r1 = 0,(x,y,z),dp;
    10441067   vector pv = [xy,xz,yz,x2,y2,z2];
    10451068   sum(pv);
     
    10501073   intvec iv = 1,2,3,4,5,6,7,8,9;
    10511074   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
    10531083///////////////////////////////////////////////////////////////////////////////
    10541084
Note: See TracChangeset for help on using the changeset viewer.