00001 __copyright__ = """
00002 Copyright 2008 Sean Ross-Ross
00003 """
00004 __license__ = """
00005 This file is part of SLIMpy .
00006
00007 SLIMpy is free software: you can redistribute it and/or modify
00008 it under the terms of the GNU Lesser General Public License as published by
00009 the Free Software Foundation, either version 3 of the License, or
00010 (at your option) any later version.
00011
00012 SLIMpy is distributed in the hope that it will be useful,
00013 but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00015 GNU Lesser General Public License for more details.
00016
00017 You should have received a copy of the GNU Lesser General Public License
00018 along with SLIMpy . If not, see <http://www.gnu.org/licenses/>.
00019 """
00020
00021 def sum(alist):
00022 """
00023 Returns the sum of any iterable sequence.
00024 Note: to work with slimpy vectors and operators any zeros will not be summed.
00025 """
00026 if len(alist) is 1:
00027 return alist[0]
00028 return reduce( lambda x ,y : (x^y) or x +y , alist,0)
00029
00030 def prod(alist,blist):
00031 """
00032 Returns the element wise product of any iterable sequence.
00033 Note: to work with slimpy vectors and operators any zeros will not be summed.
00034 """
00035
00036 return map(lambda x , y :(x == 1 and y) or (y == 1 and x) or (x and y and x*y ) or 0,alist,blist)