为什么Matlab Mod与Wolfram Alpha不同

Jua*_*ora 4 matlab wolframalpha modulus

688 ^ 79 mod 3337 = 1570.

当我在wolfram alpha尝试这个时,我得到了: 在此输入图像描述

但是当我在Matlab中输入同样的东西时,我得到364作为答案.我做错了.

在此输入图像描述

任何关于此的亮点将不胜感激.

Lui*_*ndo 11

原因是Matlab double默认使用浮点运算.大到688 ^ 79的数字不能准确表示为a double.(可以精确表示为a的最大整数double2 ^ 53的数量级).

要获得正确的结果,您可以使用符号变量,以确保您不会失去准确性:

>> x = sym('688^79');
>> y = sym('3337');
>> mod(x, y)
ans =
1570
Run Code Online (Sandbox Code Playgroud)