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)