The reason is that Matlab uses doublefloating point arithmetic by default . A number equal to 688 ^ 79 cannot be represented exactly as double. (The largest integer that can be accurately represented as doubleis of the order of 2 ^ 53 ).
, , , :
>> x = sym('688^79');
>> y = sym('3337');
>> mod(x, y)
ans =
1570