public void ArcTan(uint multiplicand, uint reciprocal) { var x = new BigNumber(this.maxDigits, multiplicand); x.Divide(reciprocal); reciprocal *= reciprocal; Assign(x); var term = new BigNumber(this.maxDigits); var divisor = 1u; var subtractTerm = true; while (true) { x.Divide(reciprocal); term.Assign(x); divisor += 2; term.Divide(divisor); if (term.IsZero()) { break; } if (subtractTerm) { Subtract(term); } else { Add(term); } subtractTerm = !subtractTerm; } }
public string Print() { var temp = new BigNumber(this.maxDigits); temp.Assign(this); var sb = new StringBuilder(); sb.Append(temp.number[0]); sb.Append(CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator); var digitCount = 0; while (digitCount < this.maxDigits) { temp.number[0] = 0; temp.Multiply(100000); sb.AppendFormat("{0:D5}", temp.number[0]); digitCount += 5; } return sb.ToString(); }