Beispiel #1
0
        private static Decimal DecimalSqrt(Decimal x, Decimal?guess = null)
        {
            Decimal valueOrDefault = guess.GetValueOrDefault(x / new Decimal(2));
            Decimal num1           = x / valueOrDefault;
            Decimal num2           = (valueOrDefault + num1) / new Decimal(2);

            if (num2 == valueOrDefault)
            {
                return(num2);
            }
            return(Aggregates.DecimalSqrt(x, new Decimal?(num2)));
        }
Beispiel #2
0
        public static object StDev(FunctionContext context, IEnumerable data, ExpressionNode node)
        {
            IList <Decimal> numList = (IList <Decimal>) new List <Decimal>();
            Decimal         num1    = new Decimal(0);

            foreach (object obj in Aggregates.NotNullValue(data, node, (object)context))
            {
                StorageType storageType = DataStorageHelper.GetStorageType(obj.GetType());
                if (ExpressionNode.IsNumeric(storageType))
                {
                    Decimal num2 = Convert.ToDecimal(obj);
                    num1 += num2;
                    numList.Add(num2);
                }
                else
                {
                    if (storageType != StorageType.String && storageType != StorageType.SqlString)
                    {
                        throw new NotSupportedException("Standard deviation is not supported for type " + storageType.ToString());
                    }
                    Decimal result;
                    if (Decimal.TryParse(obj.ToString(), out result))
                    {
                        num1 += result;
                        numList.Add(result);
                    }
                }
            }
            if (numList.Count == 0)
            {
                return((object)0);
            }
            Decimal num3 = num1 / (Decimal)numList.Count;
            Decimal num4 = new Decimal(0);

            foreach (Decimal num2 in (IEnumerable <Decimal>)numList)
            {
                Decimal num5 = num2 - num3;
                Decimal num6 = num5 * num5;
                num4 += num6;
            }
            return((object)Aggregates.DecimalSqrt(num4 / (Decimal)numList.Count, new Decimal?()));
        }