private Factor pointwiseProduct(List<Factor> factors) { Factor product = factors[0]; for (int i = 1; i < factors.Count; i++) { product = product.pointwiseProduct(factors[i]); } return product; } }