Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # calculates Euler e in different bases
- # prints Maya20, Babylon60 with own characters, other in numbers
- # aprroximation for m!,increasing m from on an
- # Stirling: ln(n!) = 0.5*ln(2Οn) + n(ln(n)-1)
- # initial value of 4 until m! > 10^(n+1)
- # ln(10) = 2.302585092994046, ln(2pi)=ln(6.283185307179586)
- # Eulerin luvun e desimaalit ( n kpl)
- # Juhani Kaukoranta 16.2.2022
- function e_calcul(n,b)
- # n digits, b base
- nro="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
- cunei=["π²", "πΉ", "π«", "π", "π", "π", "π", "π", "π", "π", "π", "ππΉ", "ππ«", "ππ", "ππ", "ππ", "ππ", "ππ", "ππ", "ππ", "ππ", "πππΉ", "πππ«", "πππ", "πππ", "πππ", "πππ", "πππ", "πππ", "πππ", "π", "ππΉ", "ππ«", "ππ", "ππ", "ππ", "ππ", "ππ", "ππ", "ππ", "π", "ππΉ", "ππ«", "ππ", "ππ", "ππ", "ππ", "ππ", "ππ", "ππ", "π", "ππΉ", "ππ«", "ππ", "ππ", "ππ", "ππ", "ππ", "ππ", "ππ"]
- print("base ",b," : ",)
- m = 5 # laskentatermien mÀÀrÀ
- test = (n+1)*2.302585092994046
- while m*(log(m)-1.0) + 0.5*log(6.283185307179586*m) <= test
- m += 1
- end
- if b == 2
- print("10.",) # eka e:n binÀÀrinumero
- end
- if b == 20
- println("Maya :")
- println(Char(119522),"."," (kokonaisosa)")
- end
- if b == 60
- print("Babylon60: ",cunei[3]," . ") # eka numeron nuolepÀÀmerkki
- end
- if (!(b==2)&&!(b==20)&&!(b==60))
- print("2.",) # eka e:n numero
- end
- coef = fill(1,m) # array coef contains only 1
- for i in 1:n
- carry = 0
- for j in reverse(2:m)
- temp = coef[j]*b + carry # in base:bin 2,oct 8,dec 10,hex 16
- carry = div(temp,j)
- coef[j] = temp - carry*j
- end # of digit generation
- if b==2
- print(carry,)
- end
- if b==20 # MAYA numeral symbols classic style topdown
- println(Char(119520+carry))
- end
- if b == 60 # Babylon60-nuolenpÀÀmerkit
- print(cunei[carry+1]," ",) # prints e digits, on by one
- end
- if !((b==2)||(b==20)||(b==60))
- print(nro[carry+1],)
- end
- end
- println()
- end
Add Comment
Please, Sign In to add comment