matlab精确度,matlab和c的精度差异

我试图对C和Matlab中编写的算法进行等价测试.

该算法在时间上包含某种循环,运行时间超过1000次.它具有算术运算和一些数学函数.

我手动将初始输入提供给两个平台(如a = 1.767,b = 6.65,…),当我检查这些输入的十六进制表示时,它们是相同的.所以没有输入的问题.并通过一个16位十进制数字的文本文件获取c到matlab的输出. (我使用“setprecision(32)”语句)

但这里有问题;虽然在这两个代码的第614步之后,所有的结果是完全一样的,在615的步骤我得到了2.xxx..xxe-19的区别?在这一步之后,错误变得越来越大,在运行结束时它是大约5.xx..xxe-14.

0x3ff1 3e42 a211 6cca —> [C函数] —> 0x3ff4 7619 7005 5a42

0x3ff1 3e42 a211 6cca —> [MATLAB函数] —> ans

ans – 0x3ff4 7619 7005 5a42

= 2.xxx..xxe-19

我搜索了matlab的行为方式,发现了非常有趣的东西,如“非规范尾数”.虽然realmin是关于e-308,通过对尾数进行非规范化matlab具有关于e-324的最小实数.进一步的matlab对于“pi”或“exp(1)”的数字比c更多.

另一方面,matlab帮助说,无论显示的格式如何,matlab在内部使用双精度.

所以,如果有人解释这些差异的确切原因,我真的很感激我们如何在matlab和c上进行等价测试?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值