func dot<V : SIMD>(_ a: V, _ b: V) -> V.Scalar where V.Scalar : FloatingPoint { var total = V.Scalar(0) for i in a.indices { total = total.addingProduct(a[i], b[i]) } return total }