from math import * # Data type of v is a python list or tuple or whatever def magnitude(v): return sqrt(sum([c*c for c in v])) def dot_geo(v1, v2, theta): return magnitude(v1) * magnitude(v2) * cos(theta) def dot_alg(v1, v2): return sum([c1 * c2 for c1, c2 in zip(v1, v2)]) def cos_from_vectors(v1, v2): return dot_alg(normalize(v1), normalize(v2)) def normalize(v): m = magnitude(v) return [c/m for c in v]