非常大数量的计算而没有精度损失?
给定一个1700位的数字,我们希望存储该值并在其上执行两个函数 没有精度损失,如果计算时间越长越好,但如果更快则更好。
其中x
= 1700位长的数字值
要计算的两个计算是;
X
*(最多四位数值)
( x % 400 )
如果我们不能乘以[X
*(最多四位数值)]然后取模数
处理瓶颈,天花板 - 那么这可以在我们第一次采取的地方完成
原始x
= 1700位的模数,然后乘以四位数值
然后取这个模数?理想情况下,我更喜欢能够做到这一点
第一种情况。
约束我到目前为止都知道这个;
首先,我只在WinXp 32位系统上运行,目前无法升级。
其次,我已经意识到很多问题,错误,python错误,同情, 等。正确处理非常大量的计算。这些问题似乎出现了 通过使用浮动和相关的数据丢失。细节上有很多不同 方法可以在这里查看;
https://groups.google.com/forum/#!topic/sympy/eUfW6C_nHdI https://groups.google.com/forum/#!topic/sympy/hgoQ74iZLkk
虽然我被告知,但我的系统无法正确处理“float128”花车 一个人可以处理这样的计算 - 尽管是概率 似乎float128实际上很少是128浮点数,当然不在我的系统上。 同样由于内部加工特性,似乎大多数花车都会丢失 这些计算的数据。如果我理解正确,最好的之一 获得最准确值的候选人涉及使用 任意精度并将输入表示为字符串,而不仅仅是直接数字 值?另外,理想情况下,Id喜欢能够在没有处理理性的公式 精度损失。所以“x”从一个整数开始,但是当我乘以它时 通过四位数值,Id喜欢该值为任何数值,如整数, 整数或理性如“2243.0456”。
我一直在尝试的方法之一的结构;
from sympy import mpmath
mpmath.mp.dps = 1700
x = (mpmath.mpf" INSERT 1700 DIGIT NUMBER HERE"
(x % 400)
实时数据的示例;
from sympy import mpmath
mpmath.mp.dps = 1700
x = (mpmath.mpf"4224837741562986738552195234618134569391350587851527986076117152972791626026988760293885754068768475423919991676816860701478996539715076968649431668262941552499272851934021744703799728797962346859481772141964720120813934781420732260156446701740408591264289745960985811289070246238359268267313892549883722768575435935465369820850766441187744058828599331364172396647692768693734233545999439071435129082764340446292057962343360114463696515950803159895238667237356887294549618489296157716384494295159851060500050371940523385701946860964162569067371175357615144192344763876540813882107379891591055307476597279137714860430053785074855035948744902479909111840444834198237419177418965268614345042634655648237818899253116247916585686713243193074635608527160273611309051938762676520507404815180792793701259216609316118483835216791263172902470123821111779223204735647931377027227055312940934756325611832463728974558417085791096461266371917752574370345933533929245534623041989305973992490523694190318284666464757159324866096861573704540654160644711274766759520501013633999706244117691235878123489694261724158073725644897527727473450037615295487637338687848351441331386946416003718795419822246935787682977520303924734875834943985619000970655639767984458204513958680501990182471695393372003272654902387493955849775308922901631024199011283441050881608686856746206012270890984260424834329551281249797545775091226433669036680463406283858413423722935297859778786945935751468048494081427689669730664660260908636113264573712854536295005312934569838992758429422872122606102877623867968067833225444280667381025371705347744037508121975424674439904984528128036994803804742198422695627759844248"
(x % 400)
但是我不知道如果准确的结果是这样的,会不会听到任何人的建议?