Esempio n. 1
0
        private static BigNum EvaluateFunction(Function function, BigNum num)
        {
            switch (function)
            {
            case Function.Sin: return(BigMath.Sin(num));

            case Function.Cos: return(BigMath.Cos(num));

            case Function.Tan: return(BigMath.Tan(num));

            case Function.Csc: return(BigMath.Csc(num));

            case Function.Sec: return(BigMath.Sec(num));

            case Function.Cot: return(BigMath.Cot(num));

            case Function.Abs:   return(BigMath.Abs(num));

            case Function.Ceil:  return(BigMath.Ceiling(num));

            case Function.Floor: return(BigMath.Floor(num));

            case Function.Fact:  return(BigMath.Gamma(num));

            default:
                throw new ExpressionException("Unknown or invalid function");
            }
        }
Esempio n. 2
0
        private static BigNum Modulo(BigNum x, BigNum y)
        {
            // a % b == a  - ( b * Floor[a / b] )

            if (y == 0)
            {
                throw new DivideByZeroException("Divisor y cannot be zero");
            }
            if (x.IsZero)
            {
                return(new BigFloat(0));
            }

            BigNum floored = BigMath.Floor(x / y);
            BigNum multbyb = y * floored;
            BigNum retval  = x - multbyb;

            return(retval);
        }