/// <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); }
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()); }