Do you know Napier’s constant e? The e is also known as the base of the natural logarithm. In the Challenge of the Month – July 2015, I suggested following challenge:
Community Suggestion (By Nonki)
- Calculate Napier's constant e (the base of the natural logarithm).
This idea is from that Small Basic doesn’t have the property Math.E like Visual Basic (But, LitDev Extension has LDMath.E property).
I made three programs for this challenge.
This is the first program: CML298
- This program uses following equation to calculate e.
- This program causes run time error.
- This program can calculate e correctly to 27 places of decimals (accurate as possible for Small Basic).
0!=1 e=1 1!=1 e=2 2!=2 e=2.5 3!=6 e=2.6666666666666666666666666667 : : 24!=620448401733239439360000 e=2.7182818284590452353602874043 25!=15511210043330985984000000 e=2.7182818284590452353602874688 26!=403291461126605635584000000 e=2.7182818284590452353602874713 27!=10888869450418352160768000000 e=2.7182818284590452353602874714 Unhandled Exception: System.OverflowException: Value was either too large or too small for a Decimal. at System.Decimal.FCallMultiply(Decimal& d1, Decimal& d2) at _SmallBasicProgram._Main()
The second one is: DNP836.
- This program uses following equation to calculate e.
- This program can calculate e correctly to 13 places of decimals.
- The calculation is done by bisection method with Math.NaturalLog operation.
Math.NaturalLog(2.5)=0.916290731874155 Math.NaturalLog(2.75)=1.01160091167848 Math.NaturalLog(2.625)=0.965080896043587 : : Math.NaturalLog(2.7182818284586574009153991937)=0.999999999999858 Math.NaturalLog(2.7182818284588847745908424258)=0.999999999999941 Math.NaturalLog(2.7182818284589984614285640418)=0.999999999999983 Math.NaturalLog(2.7182818284590553048474248498)=1 e=2.7182818284590553048474248498 Press any key to continue...
This is the third one: RMF924.
- This program uses following equation to calculate e.
- This program can calculate e correctly to 14 places of decimals.
- If n is larger than about 7.2E16, the result becomes 1.
n=1 1+1/n=2 e=2 n=16 1+1/n=1.0625 e=2.6379284973666 n=256 1+1/n=1.00390625 e=2.71299162425343 n=4096 1+1/n=1.000244140625 e=2.71795008118967 : : n=17592186044416 1+1/n=1.000000000000056843418860808 e=2.71828182845897 n=281474976710656 1+1/n=1.0000000000000035527136788005 e=2.71828182845904 n=4503599627370496 1+1/n=1.000000000000000222044604925 e=2.71828182845904 n=72057594037927936 1+1/n=1.0000000000000000138777878078 e=1 n=1152921504606846976 1+1/n=1.000000000000000000867361738 e=1 n=18446744073709551616 1+1/n=1.0000000000000000000542101086 e=1 : : n=1208925819614629174706176 1+1/n=1.0000000000000000000000008272 e=1 n=19342813113834066795298816 1+1/n=1.0000000000000000000000000517 e=1 n=309485009821345068724781056 1+1/n=1.0000000000000000000000000032 e=1 n=4951760157141521099596496896 1+1/n=1.0000000000000000000000000002 e=1 Unhandled Exception: System.OverflowException: Value was either too large or too small for a Decimal. at System.Decimal.FCallMultiply(Decimal& d1, Decimal& d2) at _SmallBasicProgram._Main()