<filename>mathgenerator/funcs/angleBtwVectorsFunc.py
from .__init__ import *
from ..__init__ import Generator


def angleBtwVectorsFunc(maxEltAmt=20):
    s = 0
    v1 = [random.uniform(0, 1000) for i in range(random.randint(2, maxEltAmt))]
    v2 = [random.uniform(0, 1000) for i in v1]
    for i in v1:
        for j in v2:
            s += i * j

    mags = math.sqrt(sum([i**2 for i in v1])) * math.sqrt(sum([i**2 for i in v2]))
    problem = f"angle between the vectors {v1} and {v2} is:"
    solution = ''
    try:
        solution = str(math.acos(s / mags))
    except MathDomainError:
        print('angleBtwVectorsFunc has some issues with math module, line 16')
        solution = 'NaN'
    # would return the answer in radians
    return problem, solution


angleBtwVectors = Generator(
    "Angle between 2 vectors", 70,
    "Angle Between 2 vectors V1=[v11, v12, ..., v1n] and V2=[v21, v22, ....., v2n]",
    "V1.V2 / (euclidNorm(V1)*euclidNorm(V2))", angleBtwVectorsFunc)

<filename>mathgenerator/funcs/angleBtwVectorsFunc.py
from .__init__ import *
from ..__init__ import Generator


def angleBtwVectorsFunc(maxEltAmt=20):
    s = 0
    v1 = [random.uniform(0, 1000) for i in range(random.randint(2, maxEltAmt))]
    v2 = [random.uniform(0, 1000) for i in v1]
    for i in v1:
        for j in v2:
            s += i * j

    mags = math.sqrt(sum([i**2 for i in v1])) * math.sqrt(sum([i**2 for i in v2]))
    problem = f"angle between the vectors {v1} and {v2} is:"
    solution = ''
    try:
        solution = str(math.acos(s / mags))
    except MathDomainError:
        print('angleBtwVectorsFunc has some issues with math module, line 16')
        solution = 'NaN'
    # would return the answer in radians
    return problem, solution


angleBtwVectors = Generator(
    "Angle between 2 vectors", 70,
    "Angle Between 2 vectors V1=[v11, v12, ..., v1n] and V2=[v21, v22, ....., v2n]",
    "V1.V2 / (euclidNorm(V1)*euclidNorm(V2))", angleBtwVectorsFunc)

# would return the answer in radians