private static Rational Dot(Rational[] v1, Rational[] v2) { return v1.Zip(v2, (v1n, v2n) => v1n * v2n).Aggregate((acc, r)=>acc+r); }