/** * Sample mode * @param numbers List of number * @return Sample median, if table was empty or null then Double.NaN is returned. */ public static double mode(CancellationToken token, params double[] numbers) { if (numbers == null) { return(Double.NaN); } if (numbers.Length == 0) { return(Double.NaN); } if (numbers.Length == 1) { return(numbers[0]); } foreach (double v in numbers) { if (mXparser.isCurrentCalculationCancelled(token)) { return(Double.NaN); } if (Double.IsNaN(v)) { return(Double.NaN); } } double[,] dist = NumberTheory.getDistValues(token, numbers, true); return(dist[0, 0]); }
/** * Greater or equal relation. * * @param a the a number (a >= b) * @param b the b number (a >= b) * * @return if a = Double.NaN or b = Double.NaN return Double.NaN, * else if a >= b return 1, * otherwise return 0. */ public static double geq(double a, double b) { if ((Double.IsNaN(a)) || (Double.IsNaN(b))) { return(Double.NaN); } double eps = NumberTheory.max(epsilon, MathFunctions.ulp(b)); if (Double.IsInfinity(a) || Double.IsInfinity(b)) { eps = 0; } double result = BooleanAlgebra.FALSE; if (epsilonComparison) { if (a >= b - eps) { result = BooleanAlgebra.TRUE; } } else if (a >= b) { result = BooleanAlgebra.TRUE; } return(result); }
/** * Sample median * @param numbers List of number * @return Sample median, if table was empty or null then Double.NaN is returned. */ public static double median(CancellationToken token, params double[] numbers) { if (numbers == null) { return(Double.NaN); } if (numbers.Length == 0) { return(Double.NaN); } if (numbers.Length == 1) { return(numbers[0]); } if (numbers.Length == 2) { return((numbers[0] + numbers[1]) / 2.0); } foreach (double v in numbers) { if (mXparser.isCurrentCalculationCancelled(token)) { return(Double.NaN); } if (Double.IsNaN(v)) { return(Double.NaN); } } NumberTheory.sortAsc(token, numbers); if ((numbers.Length % 2) == 1) { int i = (numbers.Length - 1) / 2; return(numbers[i]); } else { int i = (numbers.Length / 2) - 1; return((numbers[i] + numbers[i + 1]) / 2.0); } }
/** * Greater or equal relation. * * @param a the a number (a >= b) * @param b the b number (a >= b) * * @return if a = Double.NaN or b = Double.NaN return Double.NaN, * else if a >= b return 1, * otherwise return 0. */ public static double geq(double a, double b) { if ((Double.IsNaN(a)) || (Double.IsNaN(b))) { return(Double.NaN); } double eps = NumberTheory.max(epsilon, MathFunctions.ulp(b)); double result = 0; if (epsilonComparison) { if (a >= b - eps) { result = 1; } } else if (a >= b) { result = 1; } return(result); }
/** * Sample median * @param numbers List of number * @return Sample median, if table was empty or null then Double.NaN is returned. */ public static double median(params double[] numbers) { if (numbers == null) { return(Double.NaN); } if (numbers.Length == 0) { return(Double.NaN); } if (numbers.Length == 1) { return(numbers[0]); } if (numbers.Length == 2) { return((numbers[0] + numbers[1]) / 2.0); } foreach (double v in numbers) { if (Double.IsNaN(v)) { return(Double.NaN); } } NumberTheory.sortAsc(numbers); if ((numbers.Length % 2) == 1) { int i = (numbers.Length - 1) / 2; return(numbers[i]); } else { int i = (numbers.Length / 2) - 1; return((numbers[i] + numbers[i + 1]) / 2.0); } }
/** * Sample mode * @param numbers List of number * @return Sample median, if table was empty or null then Double.NaN is returned. */ public static double mode(params double[] numbers) { if (numbers == null) { return(Double.NaN); } if (numbers.Length == 0) { return(Double.NaN); } if (numbers.Length == 1) { return(numbers[0]); } foreach (double v in numbers) { if (Double.IsNaN(v)) { return(Double.NaN); } } double[,] dist = NumberTheory.getDistValues(numbers, true); return(dist[0, 0]); }