Raising to the power of large numbers is giving me the wrong answer?
Show older comments
If I try 11^16 in matlab, I get: 45949729863572160
If I try 11**16 in python, I get: 45949729863572161
Notice, the last digits are different.
As the numbers get larger, the problem gets worse: 99^95 in Matlab: 3848960788934848|488282452569509484590776195611314554049114673132510910096787679715604422673797115451807631980373077374162416714994207463122539142978709403811688831410945323915071533162168320
99**95 in python: 3848960788934848|611927795802824596789608451156087366034658627953530148126008534258032267383768627487094610968554286692697374726725853195657679460590239636893953692985541958490801973870359499
Notice, where I placed the line, that's they begin to differ
the way I printed the numbers in Matlab، to control the precision:
num2str(99^95,1000)
the answer I am looking for is the python answer
Accepted Answer
More Answers (1)
Iain
on 30 May 2013
0 votes
Matlab, by default, uses double precision numbers, which puts the useful number of significant figures at around 16. - More than enough for most use.
If you note that where matlab and python start to differ is at the 17th significant figure, then it should be clear to you that that is where the number representation within matlab is limited.
If you force matlab to do the calculations as uint64, you'll get the result accurate to whole numbers of up to 2^64 - 1 (i.e. 18 significant figures)
If you write the appropriate logic/method, you can get matlab to effectively use "uint128", or "uint256", or higher if your needs dictate.
Categories
Find more on Call Python from MATLAB in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!