The normdist : Math « Development Class « C# / C Sharp






The normdist

         
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="Simulator.Utils.cs" company="">
//   
// </copyright>
// <summary>
//   The simulator.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

#region Latence Algo Trading Solution by Sunix First Ltd

// --------------------------------------------------------------------------
// THIS SOURCE FILE IS A PART OF THE LATENCE TRADING SUITE DEDICATED TO EMPOWER ALGORITHMIC TRADING ACTIVITIES.
// BY USING ALL OR ANY PART OF THE SOFTWARE COMPONENT OR SOURCES, YOU AGREE TO THE TERMS OF THE COMMERCIAL LICENCE ISSUED BY SUNIX FIRST LTD.
// DO NOT USE THE SOFTWARE UNTIL YOU HAVE CAREFULLY READ AND AGREED TO THE TERMS AND CONDITIONS OF THE LICENCE.
// THE MATERIALS ARE PROVIDED "AS IS". SUNIX DISCLAIMS ALL EXPRESS OR IMPLIED WARRANTIES WITH RESPECT TO THEM,
// INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, AND FITNESS FOR ANY PARTICULAR PURPOSE.
// SUNIX SHALL NOT BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING,WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
// BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE.
// contact@latence.co.uk
// ---------------------------------------------------------------------------
#endregion

#region

using System;

#endregion

namespace Latence.Providers.Simulator
{
    /// <summary>The simulator.</summary>
    public partial class Simulator
    {
        #region Methods

        /// <summary>The normdist.</summary>
        /// <param name="x">The x.</param>
        /// <param name="mean">The mean.</param>
        /// <param name="std">The std. </param>
        /// <param name="cumulative">The cumulative.</param>
        /// <returns>The normdist.</returns>
        private static double NORMDIST(double x, double mean, double std, bool cumulative)
        {
            if (cumulative)
            {
                return Phi(x, mean, std);
            }

            var tmp = 1/(Math.Sqrt(2*Math.PI)*std);
            return tmp*Math.Exp(-.5*Math.Pow((x - mean)/std, 2));
        }

        // from http://www.cs.princeton.edu/introcs/...Math.java.html
        // fractional error less than 1.2 * 10 ^ -7.

        // cumulative normal distribution
        /// <summary>The phi.</summary>
        /// <param name="z">The z.</param>
        /// <returns>The phi.</returns>
        private static double Phi(double z)
        {
            return 0.5*(1.0 + erf(z/Math.Sqrt(2.0)));
        }

        // cumulative normal distribution with mean mu and std deviation sigma
        /// <summary>The phi.</summary>
        /// <param name="z">The z.</param>
        /// <param name="mu">The mu.</param>
        /// <param name="sigma">The sigma.</param>
        /// <returns>The phi.</returns>
        private static double Phi(double z, double mu, double sigma)
        {
            return Phi((z - mu)/sigma);
        }

        /// <summary>The erf.</summary>
        /// <param name="z">The z.</param>
        /// <returns>The erf.</returns>
        private static double erf(double z)
        {
            var t = 1.0/(1.0 + 0.5*Math.Abs(z));

            // use Horner's method
            var ans = 1 -
                      t*
                      Math.Exp(
                          -z*z - 1.26551223 +
                          t*
                          (1.00002368 +
                           t*
                           (0.37409196 +
                            t*
                            (0.09678418 +
                             t*
                             (-0.18628806 +
                              t*
                              (0.27886807 +
                               t*(-1.13520398 + t*(1.48851587 + t*(-0.82215223 + t*0.17087277)))))))));
            if (z >= 0)
            {
                return ans;
            }

            return -ans;
        }

        #endregion
    }
}

   
    
    
    
    
    
    
    
    
  








Related examples in the same category

1.Demonstrate Math.Sin(), Math.Cos(), and Math.Tan(). Demonstrate Math.Sin(), Math.Cos(), and Math.Tan().
2.Find the radius of a circle given its area. Find the radius of a circle given its area.
3.Math operators
4.Use Math.Round
5.Math.Sign
6.Math.Abs
7.Math.Min
8.Converts a degrees angle into a radians angle.
9.Converts a radians angle into a degrees angle.
10.Converts degrees to radians.
11.Gets the mean value from a list
12.Gets the median from the list
13.Gets the standard deviation
14.Statistical functions: Mean
15.Statistical functions: Standard Deviation
16.The Method converts the temperature in Fahrenheit to Celcius
17.The Method converts the temperature in Celcius to Fahrenheit
18.Returns the maximum value of three numbers
19.Returns the minimum value of three numbers
20.rounds val to the nearest fractional value
21.Combines two input numbers in some proportion.
22.Normalise Angle
23.wraps the mod result to avoid negative results.
24.Method that calculates the Greatest Common Divisor (GCD) of two positive integer numbers.
25.Calculates the floor of the log, base 2, of 'x'.
26.Calculates the Least Common Multiple (LCM) of two strictly positive integer numbers.
27.Get Prime, Is prime
28.Same as System.Math.Acos but if angle is out of range, the result is clamped.
29.Math.Abs returns the absolute value of a Decimal number.
30.Math.Acos
31.Math.Asin returns the angle whose sine is the specified number.
32.Math.Atan Returns the angle whose tangent is the specified number.
33.Math.Atan2 Returns the angle whose tangent is the quotient of two specified numbers.
34.Math.BigMul Produces the full product of two 32-bit numbers.
35.Math.Ceiling Returns the smallest integral value that is greater than or equal to the specified decimal number.
36.Math.Cos Returns the cosine of the specified angle.
37.Math.Cosh returns the hyperbolic cosine
38.Math.DivRem calculates the quotient of integers and returns the remainder in an output parameter.
39.Math.E Field Represents the natural logarithmic base, specified by the constant, e.
40.Math.Exp returns e raised to the specified power.
41.Math.Floor returns the largest integer less than or equal to the specified decimal number.
42.Math.IEEERemainder returns the remainder resulting from the division
43.Math.Log Method returns the natural (base e) logarithm of a specified number.
44.Math.Log Method returns the logarithm of a specified number in a specified base.
45.Math.Log10 Method returns the base 10 logarithm of a specified number.
46.Math.Max Method returns the larger of two 8-bit unsigned integers.
47.Math.Min Method returns the smaller of two 8-bit unsigned integers.
48.Math.PI Field represents the ratio of the circumference of a circle to its diameter,
49.Math.Pow Method returns a specified number raised to the specified power.
50.Math.Round Method rounds a decimal value to the nearest integral value.
51.Math.Sign Method returns a value indicating the sign of a decimal number.
52.Math.Sinh Method returns the hyperbolic sine of the specified angle.
53.Math.Sqrt Method returns the square root of a specified number.
54.Math.Tan Method returns the tangent of the specified angle.
55.Math.Tanh Method returns the hyperbolic tangent of the specified angle.
56.Math.Truncate calculates the integral part of a specified decimal number.
57.double extension method for Radian/Degree conversion
58.Prime Number Utility
59.Fibonacci number
60.Almost equal and Epsilon
61.Is Value in the range
62.Angle Utility
63.Factorial value
64.Mean value
65.Get BMI
66.Conver Kg To Lb
67.Rational Class
68.Generic Max Min
69.Knuth shuffle
70.Calculate Distance between two points
71.Mesh Utilities
72.Generic Pair
73.Permutation demo
74.Calculate Variance