Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace MyApp.Extensions
- {
- using System;
- using System.Collections.Generic;
- using System.Linq;
- public static class MathExtensions
- {
- /// <summary>Calculates the Standard Deviation for the collection of integers.</summary>
- /// <param name="collection">The collection.</param>
- /// <returns>A double.</returns>
- public static double StandardDeviation(this IEnumerable<int> collection)
- {
- return CalculateStandardDeviation(collection);
- }
- /// <summary>Calculates the Standard Deviation for the collection of double.</summary>
- /// <param name="collection">The collection.</param>
- /// <returns>A double.</returns>
- public static double StandardDeviation(this IEnumerable<double> collection)
- {
- return CalculateStandardDeviation(collection);
- }
- /// <summary>Calculates the Standard Deviation for the collection of floats.</summary>
- /// <param name="collection">The collection.</param>
- /// <returns>A float.</returns>
- public static float StandardDeviation(this IEnumerable<float> collection)
- {
- return CalculateStandardDeviation(collection);
- }
- /// <summary>Calculates the Standard DeviationP for the collection of integers.</summary>
- /// <param name="collection">The collection.</param>
- /// <returns>A double.</returns>
- public static double StandardDeviationP(this IEnumerable<int> collection)
- {
- return CalculateStandardDeviation(collection);
- }
- /// <summary>Calculates the Standard DeviationP for the collection of doubles.</summary>
- /// <param name="collection">The collection.</param>
- /// <returns>A double.</returns>
- public static double StandardDeviationP(this IEnumerable<double> collection)
- {
- return CalculateStandardDeviation(collection, 0);
- }
- /// <summary>Calculates the Standard Deviation for the collection of floats.</summary>
- /// <param name="collection">The collection.</param>
- /// <returns>A double.</returns>
- public static double StandardDeviationP(this IEnumerable<float> collection)
- {
- return CalculateStandardDeviation(collection, 0);
- }
- /// <summary>Calculates the Standard Deviation for the collection of doubles.</summary>
- /// <exception cref="ArgumentNullException">Thrown when one or more required arguments are null.</exception>
- /// <param name="collection">The collection.</param>
- /// <param name="buffer"> Buffer size(Optional)</param>
- /// <returns>The calculated standard deviation.</returns>
- ///
- /// ### <exception cref="System.ArgumentNullException">Indicates a null collection.</exception>
- private static double CalculateStandardDeviation(this IEnumerable<double> collection, int buffer = 1)
- {
- if (collection == null) throw new ArgumentNullException("collection");
- var data = collection.ToList();
- var average = data.Average();
- var differences = data.Select(u => Math.Pow(average - u, 2.0)).ToList();
- return Math.Sqrt(differences.Sum() / (differences.Count() - buffer));
- }
- /// <summary>Standards the deviation p.</summary>
- /// <param name="collection">The collection.</param>
- /// <returns>The calculated standard deviation.</returns>
- private static double CalculateStandardDeviation(this IEnumerable<int> collection)
- {
- return CalculateStandardDeviation(collection.Select(x => (double)x));
- }
- /// <summary>Standards the deviation p.</summary>
- /// <exception cref="ArgumentNullException">Thrown when one or more required arguments are null.</exception>
- /// <param name="collection">The collection.</param>
- /// <param name="buffer"> Buffer size(Optional)</param>
- /// <returns>The calculated standard deviation.</returns>
- ///
- /// ### <exception cref="System.ArgumentNullException">Indicates a null collection.</exception>
- private static float CalculateStandardDeviation(this IEnumerable<float> collection, int buffer = 1)
- {
- if (collection == null) throw new ArgumentNullException("collection");
- var data = collection.ToList();
- var average = data.Average();
- var differences = data.Select(u => Math.Pow(average - u, 2.0)).ToList();
- return (float)Math.Sqrt(differences.Sum() / (differences.Count() - buffer));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement