/// <summary> /// See <see cref="IReducible.Reduce(double, ProcessEntry, ProcessZeros, Reduction.Finalize)"/>. /// </summary> public double Reduce(double identityValue, ProcessEntry processEntry, ProcessZeros processZeros, Finalize finalize) { double accumulator = identityValue; // no zeros implied accumulator = processEntry(data[0], accumulator); accumulator = processEntry(data[1], accumulator); return(finalize(accumulator)); }
/// <summary> /// See <see cref="IReducible.Reduce(double, ProcessEntry, ProcessZeros, Reduction.Finalize)"/>. /// </summary> public double Reduce(double identityValue, ProcessEntry processEntry, ProcessZeros processZeros, Finalize finalize) { double accumulator = identityValue; for (int i = 0; i < data.Length; ++i) { accumulator = processEntry(data[i], accumulator); } // no zeros implied return(finalize(accumulator)); }
/// <summary> /// See <see cref="IReducible.Reduce(double, ProcessEntry, ProcessZeros, Reduction.Finalize)"/>. /// </summary> public double Reduce(double identityValue, ProcessEntry processEntry, ProcessZeros processZeros, Finalize finalize) { double aggregator = identityValue; int nnz = values.Length; for (int i = 0; i < nnz; ++i) { aggregator = processEntry(values[i], aggregator); } aggregator = processZeros(NumRows * NumColumns - nnz, aggregator); return(finalize(aggregator)); }