##
# This software was developed and / or modified by Raytheon Company,
# pursuant to Contract DG133W-05-CQ-1067 with the US Government.
# 
# U.S. EXPORT CONTROLLED TECHNICAL DATA
# This software product contains export-restricted data whose
# export/transfer/disclosure is restricted by U.S. law. Dissemination
# to non-U.S. persons whether in the United States or abroad requires
# an export license or other authorization.
# 
# Contractor Name:        Raytheon Company
# Contractor Address:     6825 Pine Street, Suite 340
#                         Mail Stop B8
#                         Omaha, NE 68106
#                         402.291.0100
# 
# See the AWIPS II Master Rights File ("Master Rights File.pdf") for
# further licensing information.
##

from Add import execute as Add
from Divide import execute as Divide


def execute(*args):
    """ Calculate the arithmetic average of any number of arguments.
    
    """ 
    if len(args) == 1 and isinstance(args[0], list):
        return execute(*args[0])
    return Divide(Add(*args),float(len(args)))

def test():
    
    from numpy import array

    if not( all(execute(array([1.,2.]),array([3.,4.])) == array([2,3]))):
        raise Exception
    
    from Vector import execute as Vector
    
    Vector1 = Vector(array([1.,2.]),array([0.,270.]),True)
    Vector2 = Vector(array([3.,4.]),array([180.,90.]),True)
    (mag, dir, u, v) = execute(Vector1,Vector2)
    if not( all(mag == array([1., 1.])) and all(dir.round(0) == array([180., 90.]))):
        raise Exception
    
    print "Average Test Complete"