Output of mod() for large input

7 vues (au cours des 30 derniers jours)
the cyclist
the cyclist le 23 Avr 2012
In the Stanford online course in probabilistic graphical models, they use their own linear congruential random number generator. The results from that generator differ between R2012a and earlier versions of MATLAB, and I boiled it down to a difference in the calculation of mod() for a very large number:
mod(25754210418041856,179424673)
Since the first argument is 17 digits, and therefore not accurately stored as an integer, it is no surprise to me that mod() might struggle; but I am wondering if anyone can give me some more specific insight as to why the behavior may have changed from version R2011b to R2012a.
  1 commentaire
Walter Roberson
Walter Roberson le 23 Avr 2012
Perhaps R2012a automatically used uint64?

Connectez-vous pour commenter.

Réponse acceptée

Richard Brown
Richard Brown le 23 Avr 2012
@Walter Roberson is correct, in R2012a MATLAB automatically casts the number into a uint64. For this piece of code
[mod(25754210418041856,179424673), mod(uint64(25754210418041856),179424673)]
In R2011b I get this:
149629568 149629566
In R2012a I get this:
149629566 149629566
  1 commentaire
Richard Brown
Richard Brown le 23 Avr 2012
Also, from the release notes for R2012a:
"The following functions show improved performance:
Arithmetic and similar basic math functions for double, single, and integer data types."

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by