象征性的,vpa和双决定
17日视图(30天)
显示旧的评论
我正在读下面的链接:
我写了下面的代码:
a =符号(π);
b = vpa(π,3);
c =双(π);
谁
看起来都是使用8个字节,也就是说64位。我的问题是:
1。为什么是c使用64位,尽管它是一个双精度的数据类型?
2。因为他们都使用相同的数字,为什么表说符号使用“最大”的内存和双重使用“至少”内存?
谢谢你!
答案(1)
沃尔特·罗伯森
2017年8月12日
双精度使用64位,在IEEE 754格式;一位是符号位,11位用于指数,52位用于尾数。然而,由于“隐位”代表指数的方法,对所有“标准化”的数字(多数人)有一个隐含的53位之前总是1的52位规范化数据。这给出了一个有效的53位精度。
所有信谊内部变量表示为处理对象;对象有少量的属性,其中没有一个是真正的“价值”的象征。取而代之的是一个属性是一个变量的名字,住在MuPAD象征性的引擎。
所有
符号计算是通过查找MuPAD变量名,这个名字象征引擎;在MATLAB层面,MATLAB没有任何线索,变量的值是什么,所以MATLAB不知道MuPAD引擎使用多少内存来表示变量。真的没有任何办法问MuPAD多少空间变量要么是(计算变得复杂了,子表达式可以共享存储MuPAD。)
8个字节大小,谁报告一个符号的大小对称对象的句柄。
这是同样大小的行为你会看到
无花果= gcf;
谁无花果
的名字大小字节类属性
无花果1 x18matlab.ui.Figure
数据并不占用8个字节,但是
处理
对象占用8个字节。
3评论
沃尔特·罗伯森
2017年8月13日
“在我看来,vpa仍然是一个象征性的算术。”
几乎所有表对速度和内存使用只是一个近似真理。也是一个近似的真相写变量精度算法比符号算术就好像它是不同的东西:它不是。
根据我的一个支持的情况下,是什么把这里称为“可万博1manbetx变精度运算”是表示为两个整数基2 ^ 31。使用32位块可能会容易些,所以我必须假定有良好的技术原因和31位块;例如一个已知indefinite-precision表示方案集在每一块顶部除了最后表明,这个数字是“持续”进一步的块。或者图书馆发现它方便复制符号位每一块。
浮点值的表示就像一对整数的暗示表示是有效尾数为十进制整数分子,连同一个十进制整数分母,在这种情况下,操作将理性的一样。操作将删除计算的差异在适当点,在没有将到最低。
我的测试表明,数字(D),误差
信谊(1)符号(“.000001”)* 1000000
是10 ^ (- d) / 2 ^ 26日除了误差分成二元;例如,
> >数字(10032);log2(信谊(1)符号(“.000001”)* 1000000)
ans =
-33352.0
> > vpa (- (10032 * log2(信谊(10))+ 26))
ans =
-33351.58264 […]
10014位前面的数字值显示一个非零误差,即2 ^ -33292
在这个时候,我不知道如何2 ^ 26因素出现。