private static double?AGM(IList <double> set, GeometricMeanVariant variant, int iterationsNo) { if (iterationsNo < 0) { return(null); } double previousAM = Arithmetic(set).Value; double previousGM = Geometric(set, variant).Value; double nextAM = default(double); double nextGM = default(double); IList <double> currentSet; for (int i = 1; i < iterationsNo; i++) { currentSet = new List <double>() { previousAM, previousGM }; nextAM = Arithmetic(currentSet).Value; nextGM = Geometric(currentSet, variant).Value; previousAM = nextAM; previousGM = nextGM; } string result = Strings.GetCommon(nextAM, nextGM); if (string.IsNullOrEmpty(result) || result.Equals("-")) { return((nextAM + nextGM) / 2.0); } return(Convert.ToDouble(result, CultureInfo.InvariantCulture)); }
public static double?AGM(IList <double> set, GeometricMeanVariant variant) { if (set == null || set.Count == 0) { return(null); } return(AGM(set, variant, set.Count)); }
public static double?Heronian(IList <double> set, GeometricMeanVariant variant) { if (set == null || set.Count == 0) { return(null); } double weightedAM = (Convert.ToDouble(set.Count) / (set.Count + 1)) * Arithmetic(set).Value; double weightedGM = Geometric(set, variant).Value / (set.Count + 1); return(weightedAM + weightedGM); }
public static IList <double> Heronian(IList <IList <double> > orderedSet, GeometricMeanVariant variant) { if (orderedSet == null || orderedSet.Count == 0) { return(new List <double>().AsReadOnly()); } IList <double> heronians = new List <double>(); for (int x = 0; x < orderedSet.Count; x++) { heronians.Add(Heronian(orderedSet[x], variant).Value); } return(heronians); }
public static IList <double> AGM(IList <IList <double> > orderedSet, GeometricMeanVariant variant) { if (orderedSet == null || orderedSet.Count == 0) { return(new List <double>().AsReadOnly()); } IList <double> agms = new List <double>(); for (int x = 0; x < orderedSet.Count; x++) { agms.Add(AGM(orderedSet[x], variant).Value); } return(agms); }
public static double?Geometric(IList <double> set, GeometricMeanVariant variant) { if (set == null || set.Count == 0) { return(null); } switch (variant) { case GeometricMeanVariant.Sign: return(GeometricMeanOfSign(set)); case GeometricMeanVariant.Parity: return(GeometricMeanOfParity(set)); case GeometricMeanVariant.Absolute: return(GeometricMeanOfAbsolute(set)); case GeometricMeanVariant.Offset: return(GeometricMeanOfOffset(set)); } return(null); }