예제 #1
0
        /// <summary>
        /// Compute the arc tangent result.
        /// </summary>
        /// <param name="multiplicand">The multiplicand.</param>
        /// <param name="reciprocal">The reciprocal.</param>
        public SuperDecimal ArcTan(UInt32 multiplicand, UInt32 reciprocal)
        {
            SuperDecimal result = new SuperDecimal(0, _decimalCount);

            SuperDecimal X = new SuperDecimal(multiplicand, _decimalCount);

            X           = X / reciprocal;
            reciprocal *= reciprocal;

            result.AssignValue(X);

            SuperDecimal term         = new SuperDecimal(0, _decimalCount);
            UInt32       divisor      = 1;
            bool         subtractTerm = true;

            while (true)
            {
                X = X / reciprocal;
                term.AssignValue(X);

                divisor += 2;

                term = term / divisor;
                if (term.IsZero())
                {
                    break;
                }

                if (subtractTerm)
                {
                    result = result - term;
                }
                else
                {
                    result = result + term;
                }

                subtractTerm = !subtractTerm;
            }

            return(result);
        }
예제 #2
0
        public override string ToString()
        {
            SuperDecimal temp = new SuperDecimal(0, _decimalCount);

            temp.AssignValue(this);

            StringBuilder sb = new StringBuilder();

            sb.Append(temp.Array[0]);
            sb.Append(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator);

            int digitCount = 0;

            while (digitCount < _decimalCount)
            {
                temp.Array[0] = 0;
                temp          = temp * 100000;
                sb.AppendFormat("{0:D5}", temp.Array[0]);
                digitCount += 5;
            }

            return(sb.ToString());
        }