import datetime import decimal import numpy as np from decimal import * getcontext().prec = 1000 # de functie np.log werkt niet in combinatie met de module decimal, dus alles moet met de functie np.log10 # de module math is geen optie, want die is veel te onnauwkeurig # de constanten e en pi moet je zelf nauwkeurig meegeven, want binnen decimal zijn die onnauwkeurig e = Decimal ('2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274274663919320030599218174135966290435729003342952605956307381323286279434907632338298807531952510190115738341879307021540891499348841675092447614606680822648001684774118537423454424371075390777449920695517027618386062613313845830007520449338265602976067371132007093287091274437470472306969772093101416928368190255151086574637721112523897844250569536967707854499699679468644549059879316368892300987931277361782154249992295763514822082698951936680331825288693984964651058209392398294887933203625094431173012381970684161403970198376793206832823764648042953118023287825098194558153017567173613320698112509961818815930416903515988885193458072738667385894228792284998920868058257492796104841984443634632449684875602336248270419786232090021609902353043699418491463140934317381436405462531520961836908887070167683964243781405927145635490613031072085103837505101157477041718986106873969655212671546889570350354') pi = Decimal ('3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989') multi = Decimal ('3') x = Decimal ('100') print (datetime.datetime.now()) while multi < 100.1: x = Decimal (x) * Decimal ('10') lnstirling = Decimal (x) * Decimal (np.log10 (Decimal (x))) / Decimal (np.log10 (Decimal (e))) \ - Decimal (x) \ + Decimal (np.log10 (Decimal (np.sqrt (Decimal ('2') * Decimal (pi) * Decimal (x))))) / Decimal (np.log10 (Decimal (e))) \ + Decimal ('1') / (Decimal ('12') * Decimal (x)) \ - Decimal ('1') / (Decimal ('360') * Decimal (x) ** Decimal ('3')) \ + Decimal ('1') / (Decimal ('1260') * Decimal (x) ** Decimal ('5')) \ - Decimal ('1') / (Decimal ('1680') * Decimal (x) ** Decimal ('7')) \ + Decimal ('1') / (Decimal ('1188') * Decimal (x) ** Decimal ('9')) \ - Decimal ('691') / (Decimal ('360360') * Decimal (x) ** Decimal ('11')) \ + Decimal ('1') / (Decimal ('156') * Decimal (x) ** Decimal ('13')) \ - Decimal ('3617') / (Decimal ('122400') * Decimal (x) ** Decimal ('15')) logstirling = Decimal (lnstirling) * Decimal (np.log10 (Decimal (e))) exponentstirling = Decimal (np.floor (Decimal (logstirling))) logexponentstirling = Decimal (np.log10 (Decimal (exponentstirling))) getalstirling = Decimal ('10') ** (Decimal (logstirling) - Decimal (exponentstirling)) multi = Decimal (multi) + Decimal ('1') print (x) print ('{:162.160f}'.format(getalstirling)) print (exponentstirling) print ('{:54.50f}'.format(logexponentstirling)) print (datetime.datetime.now())