Microsoft Small Basic

Program Listing: FFW588
' scale = "----+----1----+----2----+----3----+----4"
' zeros = "0000000000000000000000000000000000000000"
y = 2
' gross test
For order = 1 To 15
TextWindow.WriteLine("order=" + order)
GetX()
Test()
EndFor
' test for correct answer
For x = 11111111 To 22222222 Step 11111111
Test()
EndFor
For x = 22222222 To 31111110 Step 1111111
Test()
EndFor
For x = 31111110 To 31555554 Step 111111
Test()
EndFor
For x = 31555554 To 31622220 Step 11111
Test()
EndFor
For x = 31622220 To 31622775 Step 111
Test()
EndFor
For x = 31622775 To 31622777
Test()
EndFor
' test for overflow
For x = 111111111111111 To 277777777777776 Step 11111111111111
Test()
EndFor
For x = 277777777777776 To 281111111111109 Step 1111111111111
Test()
EndFor
For x = 281111111111109 To 281444444444442 Step 111111111111
Test()
EndFor
For x = 281444444444442 To 281466666666664 Step 11111111111
Test()
EndFor
For x = 281466666666664 To 281474444444441 Step 1111111111
Test()
EndFor
For x = 281474444444441 To 281474888888885 Step 111111111
Test()
EndFor
For x = 281474888888885 To 281474966666662 Step 11111111
Test()
EndFor
For x = 281474966666662 To 281474976666661 Step 1111111
Test()
EndFor
For x = 281474976666661 To 281474976699994 Step 11111
Test()
EndFor
For x = 281474976699994 To 281474976709993 Step 1111
Test()
EndFor
For x = 281474976709993 To 281474976710458 Step 111
Test()
EndFor
For x = 281474976710458 To 281474976710645 Step 11
Test()
EndFor
For x = 281474976710645 To 281474976710656
Test()
EndFor

Sub Test
' Test x^y
' param x, y
PowerSim()
ShowAnswerSim()
_ans = ans
Power()
ShowAnswer()
TextWindow.ForegroundColor = "Red"
If ans <> _ans Then
TextWindow.WriteLine("Error:" + ans + "<>" + _ans)
EndIf
TextWindow.ForegroundColor = "Gray"
TextWindow.WriteLine("")
EndSub

Sub GetX
' param order
' return x
x = "1" ' Math.GetRandomNumber(9)
For i = 1 To order - 1
x = Text.Append(x, "1") ' (Math.GetRandomNumber(10) - 1))
EndFor
EndSub

Sub ShowAnswerSim
If 0 <= y Then
TextWindow.WriteLine(x + "^" + y + "=" + ans)
Else
TextWindow.WriteLine(x + "^(" + y + ")=" + ans)
EndIf
EndSub

Sub ShowAnswer
TextWindow.WriteLine("Math.Power(" + x + "," + y + ")=" + ans)
EndSub

Sub PowerSim
' param x, y
' return ans = x^y
ans = 1
If y > 0 Then
For i = 1 To y
ans = ans * x
EndFor
Else
For i = 1 To Math.Abs(y)
ans = ans / x
EndFor
EndIf
EndSub

Sub Power
' param x, y
' return ans = x^y
ans = Math.Power(x, y)
EndSub