public double Aggregate(Cern.Colt.Function.DoubleDoubleFunction aggr, Cern.Colt.Function.DoubleFunction f) { int s = Size; if (s == 0) { return(Double.NaN); } double a = f(_elements[s - 1]); for (int i = s - 1; --i >= 0;) { a = aggr(a, f(_elements[i])); } return(a); }
public DoubleMatrix2D Assign(Cern.Colt.Function.DoubleFunction function, Double multialpha = 1) { if (Cern.Jet.Math.Functions.EvaluateDoubleFunctionEquality(function, F1.Mult(multialpha))) { //if (function == F1.Mult()) { // x[i] = mult*x[i] //var mult = new Cern.Jet.Math.Mult(); double alpha = multialpha; //((Cern.Jet.Math.Mult)function).multiplicator; if (alpha == 1) { return(this); } if (alpha == 0) { return(Assign(0)); } if (double.IsNaN(alpha)) { return(Assign(alpha)); // the funny definition of IsNaN()d This should better not happen. } double[] vals = Values.ToArray(); for (int j = Values.Count; --j >= 0;) { vals[j] *= alpha; } /* * forEachNonZero( * new Cern.Colt.Function.IntIntDoubleFunction() { * public double apply(int i, int j, double value) { * return function(value); * } * } * ); */ } else { base.Assign(function); } return(this); }
public DoubleMatrix2D Assign(Cern.Colt.Function.DoubleFunction function, Double multialpha = 1) { if (Cern.Jet.Math.Functions.EvaluateFunctionEquality(function.Method, F2.Mult.Method)) { // x[i] = mult*x[i] double alpha = multialpha; //((Cern.Jet.Math.Mult)function).multiplicator; if (alpha == 1) { return(this); } if (alpha == 0) { return(Assign(0)); } if (double.IsNaN(alpha)) { return(Assign(alpha)); // the funny definition of IsNaN()d This should better not happen. } /* * double[] vals = values.ToArray(); * for (int j=values.Count; --j >= 0; ) { * vals[j] *= alpha; * } */ ForEachNonZero( new Cern.Colt.Function.IntIntDoubleFunction((i, j, value) => { return(function(value)); } )); } else { base.Assign(function); } return(this); }
public void Assign(DoubleMatrix2D A, Cern.Colt.Function.DoubleFunction function) { A.Assign(function); }