September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
|
|
@ -0,0 +1,39 @@
|
|||
Imports System
|
||||
Imports System.Numerics
|
||||
|
||||
Module Module1
|
||||
Function BIP(ByVal leadDig As Char, ByVal numDigs As Integer) As BigInteger
|
||||
Return BigInteger.Parse(leadDig & New String("0", numDigs))
|
||||
End Function
|
||||
|
||||
Function IntSqRoot(ByVal v As BigInteger) As BigInteger
|
||||
Dim digs As Integer = Math.Max(0, v.ToString().Length / 2)
|
||||
Dim term As BigInteger : IntSqRoot = BIP("3", digs)
|
||||
While True
|
||||
term = v / IntSqRoot
|
||||
If Math.Abs(CDbl((term - IntSqRoot))) < 2 Then Exit While
|
||||
IntSqRoot = (IntSqRoot + term) / 2
|
||||
End While
|
||||
End Function
|
||||
|
||||
Function CalcByAGM(ByVal digits As Integer) As BigInteger
|
||||
Dim digs As Integer = digits + CInt((Math.Log(digits) / 2)), c As BigInteger,
|
||||
d2 As Integer = digs * 2,
|
||||
a As BigInteger = BIP("1", digs) ' initial value = 1
|
||||
CalcByAGM = IntSqRoot(BIP("5", d2 - 1)) ' initial value = square root of 0.5
|
||||
While True
|
||||
c = a : a = ((a + CalcByAGM) / 2) : CalcByAGM = IntSqRoot(c * CalcByAGM)
|
||||
If Math.Abs(CDbl((a - CalcByAGM))) <= 1 Then Exit While
|
||||
End While
|
||||
End Function
|
||||
|
||||
Sub Main(ByVal args As String())
|
||||
Dim digits As Integer = 25000
|
||||
If args.Length > 0 Then
|
||||
Integer.TryParse(args(0), digits)
|
||||
If digits < 1 OrElse digits > 999999 Then digits = 25000
|
||||
End If
|
||||
Console.WriteLine("0.{0}", CalcByAGM(digits).ToString())
|
||||
If System.Diagnostics.Debugger.IsAttached Then Console.ReadKey()
|
||||
End Sub
|
||||
End Module
|
||||
Loading…
Add table
Add a link
Reference in a new issue