public double[,] Evaluate(ArrayQuery.Bounds bounds, bool strict) { var vector = Vector.Enumerate(bounds, strict); double[,] matrix; Action <int, double> setFunc; if (Row) { matrix = new double[1, vector.Count]; setFunc = (idx, val) => matrix[0, idx] = val; } else { matrix = new double[vector.Count, 1]; setFunc = (idx, val) => matrix[idx, 0] = val; } var i = 0; foreach (var val in vector) { setFunc(i++, val); } return(matrix); }
public double[,] Evaluate(ArrayQuery.Bounds bounds, bool strict) => Expressions.Aggregate(EmptyMatrix <double> .Instance, (current, expression) => current.Concat(expression.Evaluate(bounds, strict), Row ? MatrixUtils.MatrixDimension.Row : MatrixUtils.MatrixDimension.Col));
public double[,] GetMatrix([NotNull] ArrayQuery.Bounds bounds, bool strict) => _expression?.Evaluate(bounds, strict) ?? EmptyMatrix <double> .Instance;