// AngleThetaComplex returns the angle theta between VectorComplex A and VectorComplex B using the dot product
func AngleThetaComplex(vectorA ct.VectorComplex, vectorB ct.VectorComplex) (complex128, error) {
	normA := vectorA.Norm()
	normB := vectorB.Norm()

	if normA == 0 || normB == 0 {
		return nil, errors.New("Either Vector A or Vector B is the zero vector")
	}

	dotProduct, err := InnerProductComplex(vectorA, vectorB)

	if err != nil {
		return nil, err
	}

	theta := cmplx.Acos(dotProduct / (normA * normB))

	return theta
}