Advertisement
Willcode4cash

Math Extensions

Sep 17th, 2016
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.65 KB | None | 0 0
  1. namespace MyApp.Extensions
  2. {
  3.     using System;
  4.     using System.Collections.Generic;
  5.     using System.Linq;
  6.  
  7.     public static class MathExtensions
  8.     {
  9.         /// <summary>Calculates the Standard Deviation for the collection of integers.</summary>
  10.         /// <param name="collection">The collection.</param>
  11.         /// <returns>A double.</returns>
  12.         public static double StandardDeviation(this IEnumerable<int> collection)
  13.         {
  14.             return CalculateStandardDeviation(collection);
  15.         }
  16.  
  17.         /// <summary>Calculates the Standard Deviation for the collection of double.</summary>
  18.         /// <param name="collection">The collection.</param>
  19.         /// <returns>A double.</returns>
  20.         public static double StandardDeviation(this IEnumerable<double> collection)
  21.         {
  22.             return CalculateStandardDeviation(collection);
  23.         }
  24.  
  25.         /// <summary>Calculates the Standard Deviation for the collection of floats.</summary>
  26.         /// <param name="collection">The collection.</param>
  27.         /// <returns>A float.</returns>
  28.         public static float StandardDeviation(this IEnumerable<float> collection)
  29.         {
  30.             return CalculateStandardDeviation(collection);
  31.         }
  32.  
  33.         /// <summary>Calculates the Standard DeviationP for the collection of integers.</summary>
  34.         /// <param name="collection">The collection.</param>
  35.         /// <returns>A double.</returns>
  36.         public static double StandardDeviationP(this IEnumerable<int> collection)
  37.         {
  38.             return CalculateStandardDeviation(collection);
  39.         }
  40.  
  41.         /// <summary>Calculates the Standard DeviationP for the collection of doubles.</summary>
  42.         /// <param name="collection">The collection.</param>
  43.         /// <returns>A double.</returns>
  44.         public static double StandardDeviationP(this IEnumerable<double> collection)
  45.         {
  46.             return CalculateStandardDeviation(collection, 0);
  47.         }
  48.  
  49.         /// <summary>Calculates the Standard Deviation for the collection of floats.</summary>
  50.         /// <param name="collection">The collection.</param>
  51.         /// <returns>A double.</returns>
  52.         public static double StandardDeviationP(this IEnumerable<float> collection)
  53.         {
  54.             return CalculateStandardDeviation(collection, 0);
  55.         }
  56.  
  57.         /// <summary>Calculates the Standard Deviation for the collection of doubles.</summary>
  58.         /// <exception cref="ArgumentNullException">Thrown when one or more required arguments are null.</exception>
  59.         /// <param name="collection">The collection.</param>
  60.         /// <param name="buffer">    Buffer size(Optional)</param>
  61.         /// <returns>The calculated standard deviation.</returns>
  62.         ///
  63.         /// ### <exception cref="System.ArgumentNullException">Indicates a null collection.</exception>
  64.         private static double CalculateStandardDeviation(this IEnumerable<double> collection, int buffer = 1)
  65.         {
  66.             if (collection == null) throw new ArgumentNullException("collection");
  67.  
  68.             var data = collection.ToList();
  69.             var average = data.Average();
  70.             var differences = data.Select(u => Math.Pow(average - u, 2.0)).ToList();
  71.             return Math.Sqrt(differences.Sum() / (differences.Count() - buffer));
  72.         }
  73.  
  74.         /// <summary>Standards the deviation p.</summary>
  75.         /// <param name="collection">The collection.</param>
  76.         /// <returns>The calculated standard deviation.</returns>
  77.         private static double CalculateStandardDeviation(this IEnumerable<int> collection)
  78.         {
  79.             return CalculateStandardDeviation(collection.Select(x => (double)x));
  80.         }
  81.  
  82.         /// <summary>Standards the deviation p.</summary>
  83.         /// <exception cref="ArgumentNullException">Thrown when one or more required arguments are null.</exception>
  84.         /// <param name="collection">The collection.</param>
  85.         /// <param name="buffer">    Buffer size(Optional)</param>
  86.         /// <returns>The calculated standard deviation.</returns>
  87.         ///
  88.         /// ### <exception cref="System.ArgumentNullException">Indicates a null collection.</exception>
  89.         private static float CalculateStandardDeviation(this IEnumerable<float> collection, int buffer = 1)
  90.         {
  91.             if (collection == null) throw new ArgumentNullException("collection");
  92.  
  93.             var data = collection.ToList();
  94.             var average = data.Average();
  95.             var differences = data.Select(u => Math.Pow(average - u, 2.0)).ToList();
  96.             return (float)Math.Sqrt(differences.Sum() / (differences.Count() - buffer));
  97.         }
  98.     }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement