im CarryPosition As Long Dim DividedInto As Integer ReDim Answer(1 To LengthOfNumbers) As String * 1 ReDim Divided(1 To LengthOfNumbers) As String * 1
StartPos = 1
For X = 1 To LengthOfNumbers ArcTangent(X) = "0" Divided(X) = "0" Answer(X) = "0" Next X
Select Case ArcTanToFind Case 5 ArcTangent(1) = "2"
Case 239 X = 1 FillInNumbers: If X <= LengthOfNumbers Then ArcTangent(X) = "0": X = X + 1 If X <= LengthOfNumbers Then ArcTangent(X) = "0": X = X + 1 If X <= LengthOfNumbers Then ArcTangent(X) = "4": X = X + 1 If X <= LengthOfNumbers Then ArcTangent(X) = "1": X = X + 1 If X <= LengthOfNumbers Then ArcTangent(X) = "8": X = X + 1 If X <= LengthOfNumbers Then ArcTangent(X) = "4": X = X + 1 If X <= LengthOfNumbers Then ArcTangent(X) = "1": X = X + 1 If X <= LengthOfNumbers Then GoTo FillInNumbers End Select
For X = 1 To LengthOfNumbers Answer(X) = ArcTangent(X) Next X
Divisor = 3 Do Until (Divisor - 1) / 2 = NumberOfLoops + 1 For X = Int(StartPos) To LengthOfNumbers
For X = Int(StartPos) To LengthOfNumbers Remainder = Remainder * 10 Remainder = Remainder + CInt(Divided(X))
Do Until Remainder < Divisor Remainder = Remainder - Divisor DividedInto = DividedInto + 1 Loop
Divided(X) = CStr(DividedInto) DividedInto = 0
DoEvents Next X Remainder = 0 DividedInto = 0 If Divisor Mod 4 = 1 Then For X = LengthOfNumbers To 1 Step -1 Sum = Sum + CInt(Divided(X)) + CInt(ArcTangent(X)) ArcTangent(X) = CStr(Sum Mod 10) Sum = Int(Sum / 10) DoEvents Next X Sum = 0 Else For X = LengthOfNumbers To 1 Step -1 If ArcTangent(X) < Divided(X) Then
CarryPosition = X - 1 Do Until ArcTangent(CarryPosition) <> "0" ArcTangent(CarryPosition) = "9" CarryPosition = CarryPosition - 1 Loop ArcTangent(CarryPosition) = CStr(CInt(ArcTangent(CarryPosition)) - 1) ArcTangent(X) = CStr((CInt(ArcTangent(X)) + 10) - CInt(Divided(X))) Else ArcTangent(X) = CStr(CInt(ArcTangent(X)) - CInt(Divided(X))) End If DoEvents Next X CarryPosition = 0 End If Divisor = Divisor + 2 OutputBox = "Calculating ArcTangent of 1/" & ArcTanToFind & ", Done with iteration " & (Divisor - 1) / 2 DoEvents StartPos = StartPos + 1.25 Loop End Sub Sub MultiplyArray(ArrayToMultiply() As String * 1, NumberToMultiplyBy As Integer, Answer() As String * 1) Dim Position As Integer Dim SmallAnswer As Integer Dim NumberToCarry As Integer For Position = TextBox_LengthOfNumbers + 3 To 1 Step -1 SmallAnswer = (CInt(ArrayToMultiply(Position)) * NumberToMultiplyBy) + NumberToCarry Answer(Position) = Right$(CStr(SmallAnswer), 1) If SmallAnswer < 10 Then NumberToCarry = 0 Else NumberToCarry = CInt(Left$(CStr(SmallAnswer), CInt(Len(CStr(SmallAnswer))) - 1)) End If DoEvents Next Position End Sub