def dot_product(v1, v2):
    """
    compute dot production of two vectors
    :param v1: vector 1 (a list with 3 floats or CG3dVector)
    :param v2: vector 2 (a list with 3 floats or CG3dVector)
    :return: float
    """
    return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]