Mostrar comentarios más antiguos
hi all, i need your help. i want to use (a^b) mod c
but in matlab if i use mod((a^b),c);
it's return inf
because a,b,c are too big.
are you know how to do that with another way, in matlab?? for example use a loop ??
1 comentario
Oleg Komarov
el 29 de Jun. de 2011
- What do you mean by too big?
- Are they scalars?
Respuestas (2)
Jan
el 29 de Jun. de 2011
If b is not prime, but x * y:
(a^b) mod c = (a^x mod c)^y mod c
But if b is prime, this does not help to avoid the overflow. Then I'd try FEX:John's VPI or FEX:Ben Barrowes' Multiple Precision Toolbox.
EDITED: A loop method:
function r = ApowerBmodC(a, b, c)
r = 1;
for i = 1:b
r = mod(a * r, c);
end
Then "ApowerBmodC(1234, 5678, 1256)" replies 1112. For these numbers the "(a^x mod c)^y mod c" does not help, because 5678 = 2*17*167 and "mod(1234^2, 1256)^17" is 4.38e45 such that trailing figures are all zero due to rounding.
3 comentarios
zikrullah muhammad
el 29 de Jun. de 2011
Jan
el 29 de Jun. de 2011
Have you looked at the two posted links?
Sean de Wolski
el 29 de Jun. de 2011
VPI is back !!
Oleg Komarov
el 29 de Jun. de 2011
If you're looking for elementwise elevation to a power then:
mod(a.^b,c)
1 comentario
zikrullah muhammad
el 29 de Jun. de 2011
Categorías
Más información sobre Data Types en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!