• Aucun résultat trouvé

A new modulo computation algorithm

N/A
N/A
Protected

Academic year: 2022

Partager "A new modulo computation algorithm"

Copied!
8
0
0

Texte intégral

(1)

RAIRO. R ECHERCHE OPÉRATIONNELLE

D AVID N ACCACHE DE P AZ H ALIM M’S ILTI

A new modulo computation algorithm

RAIRO. Recherche opérationnelle, tome 24, no3 (1990), p. 307-313

<http://www.numdam.org/item?id=RO_1990__24_3_307_0>

© AFCET, 1990, tous droits réservés.

L’accès aux archives de la revue « RAIRO. Recherche opérationnelle » implique l’accord avec les conditions générales d’utilisation (http://www.

numdam.org/conditions). Toute utilisation commerciale ou impression systé- matique est constitutive d’une infraction pénale. Toute copie ou impression de ce fichier doit contenir la présente mention de copyright.

Article numérisé dans le cadre du programme Numérisation de documents anciens mathématiques

http://www.numdam.org/

(2)

Recherche opérationnelle/Opérations Research (vol. 24, n° 3, 1990, p. 307 à 313)

A NEW MODULO COMPUTATION ALGORITHM (*) by David NACCACHE DE PAZ (*) and Halim M'SILTI (2)

Abstract. - Let X and Y be a couple of integers suck thaï 2 " "1 £X<^2n-1 A new algorithm which compuîes rapidly Y mod X is presented.

When the algorithm is exécutée for the ftrst time a constant K (dependîng on X and L) is computed.

This Kissavedforfutur recalïs ofthe procedure with other Y s smallers thon 2L~~ L

The computation of K requires one division but in later jumps to the procedure onfy two multiplications, three righi-shifts and at most three subtractions will be needed, provided that X remained unchanged.

The foîîowing note présents the corresponding scheme.

Keywords : Modulo; Algorithm; integer-division ; register right-shifts.

Résumé. - Soient X et Y deux entiers tels que 2" "l ^ X£ 2n - 1 et 0 ^ Y g 2h - L Un nouvel algorithme gui calcule rapidement Y mod X est présenté.

Quand l'algorithme est exécuté pour la première fois, une constante K est calculée.

Ce K est sauvegardé pour des futurs appels de la procédure avec d'autres Y s (toujours inférieurs à2L~-l).

Le calcul de K demande une division^ mais des appels futurs de l'algorithme utiliseront seulement deux multiplications; trois décalages à droite et au plus trois soustractions, étant entendu qu'X n'a pas varié.

La note qui suit présente cette méthode.

Mots clés : Modulo; Algorithme; division entière; décalages de registres.

ï. INTRODUCTION

Solving Ö.R. problems often requires modular field opérations. In practice, it is very frequent to fînd ont that an algorithm is working constantly in the same modular field.

(*) Received in October 1989» revised in December 1989.

(') LB.P.-L.LT.P., Université Pîerre-et-Marie-Curie, Paris-VI, Aile 55-65, 4, place Jussieu, 75230 Paris Cedex 05.

(2) LAMSADE» Université Paris-Dauphine, place du Maréchal-de-Lattre-de-Tassigny, 75775 Paris Cedex 16.

Recherche opérationnelle/Opérations Research, 0399-0559/90/03 307 07/$ 2.70

© AFCET-Gauthier-Viliars

(3)

3 0 8 D. NACCACHE DE PAZ, H, M'SILTI

Wherefrom the natural need to build a fast "module X** function (where X remains unchanged all along the process or changes rarely).

The most common existing scheme to compute R—Y mod X is:

(1) or (in C»like notation):

Unsîgmd common (F, X) Umïgned F, X;

return (Y-X*(Y/X));

This direct formula is often too lengthy since it requires a different division each time, but it has the advantage to work on any couple of integers.

öur idea consists in computing (only once) for each X a constant value K which be reused when modulo X is called with different Ys.

The computation of this K requires one division but in later jumps to the procedure only two multiplications, threç right-shifts and at most three subtractions will be needed,

The intuitive philosophy of the scheme (see section 3) consists in "jumping"

into a weil defined interval in which we refme our calculus by few subtractions, The ujump" is easy to do since the distance is computed by shifts and multiplications.

2. CONVENTIONS

Throughout this paper the following conventions will be used:

CONVENTION 2 . 1 : n will dénote the length of X (in bits).

CONVENTION 2.2: Let L represent the maximal size of the Y s accepted by the procedure.

CONVENTION 2.3: and the minus opération will always be considered as unsigned digit~to-digit (here bit-to-bit) subtraction.

For instance: 10397-21033 = 89364

3. THE ALGOKITHM Unsigned modulo (Y, X) Unsigned F, X;

Static unsigned COPYJK, K;

Unsigned A;

( X) { K^ 2hl(COPY^C *~ X);}

r » ( i ) ) ) » ( L i ) )

; White (A^X) {A*-A-X;}

Return{A);

Recherche opêrationBelle/Öperations Research

(4)

A NEW MODULO COMPUTATION ALGORITHM 3 0 9

It should be pointed out that the while loop is executed at most twice and that the opération % 2n + 2 is simply a subtraction performed on the (w + 2) LSBsof Y and A.

Before proving that modulo (Y, X) works let us show that the algorithm works when the line;

A^Y%2n+2-A%2n + 2; is substituted by:

A+-Y-A;

Proof : prior to the while loop we subtract form Y:

((K(Y)}(n~\))))}(L-n+l)) times X consequently we still have

or :

Y-X((K(Y))(n-\)))»(L-n+l))-AX=R.

Let us evaluate A.

Y-X((K(Y))(n-l)))»(L-n+l))-AX=Y-Xmt

mtl^\

((*( Y » (H - 1))) » (L - n + 1)) + A

= int |~|j

Similarly:

2L 7

vol. 24, n° 3, 1990

(5)

3 1 0 D. NACCACHE DE PAZ, H. M'SILTI

And fînally:

"

n+1

/ I ;_

t

_

L

-

w r

l

1

.

L

- ^ n + -

1

^

T

| » ( ^ " ^ + i )

So that:

-1) e Y a

2L 2L" "+ 1 X X+

yp e +<*_

X X2L X2L 2L~n+1 X

X X2L X2L 2+

L 2L~n+l

+ + < + + < +

X X2L 2L~n+1 X 2L 2L~n+1 X 2L

^ 2L- 1 (see2.1 and 2.2) A<3.

This proves that in the worst case the while loop will be executed twice.

As the length of X is n (bits) 3 X is at most n + 2 bits long.

Consequently the sub traction:

can be done on the n + 2 LSBs of each number and the line:

A*r- Y-A;

replaced by:

Recherche opérationnelle/Opérations Research

(6)

A NEW MODULO COMPUTATION ALGORITHM 3 1 1 4. EXAMPLES

Compute ^ = 48619 mod 93 ( = 73) and 5=47711 mod 93 ( = 2).

L e t L = 1 7

^ = ( 9 3 )1 O =1011101 > n = l K=2L/X =10110000001

y=(48619)10= 1011110111101011 Y))(n-l) =1011110111

7s:* ( 7 » ( n - l ) ) = 10110000001* 1011110111 = 100000101000101110111 (ü:*(y>>(«-i)))>>(L-rc+i) =1000001010

X*(K*(Y))(n-l)))))(L-n+l) =1011110110100010 X * ( ^ * ( 7 » ( « - l ) ) ) » ( L - « + l ) % 2n+2 = 110100010 Y % 2n + 2=111101011

_111101011 110100010

1001001 =(73)10 = iî S = ?

Let 7=(47711)10=1011101001011111 Y))(n-1) =1011101001

^*(7»(«-l))=10110000001 * 1011101001 = 100000000010001101001 ) =1000000000

« + l ) =1011101000000000 X* ((K* (Y)) (n- l))))) (L-n+ l) % 2n + 1 =000000000

001011111 000000000

1011111 _ . . 1 . (While loop) 1011101

10 = (2)10 =

vol. 24, n ' 3, 1990

(7)

312 5. SPEED

D. NACCACHE DE PAZ, H. M'SILTI

In this section we wish to estimate the theoretical gap between the computa- tion times of common (one division, one multiplication and one subtraction) and modulo (two multiplications, three ) ) (Shr)? two % (Sh/)? three subtrac- tions and a division in the first activation).

For «-bit numbers:

The instructions " » n " and " % H " are done in n clock cycles each. A — B and A + B take about 2 n, A * B is of 2 n2 and a division is generally admitted to be equivalent to four multiplications.

Let us dénote by Cn (k) the time required to exécute k commons on n-b\t numbers and by Mn (k) the similar time for modulo.

Then Cn(k) 2 2

For n = 10 we have:

Cl o (k) = 1,020 k and M10 (k) - 500 k+800 C1O(1)<M1O(1) but for any fc>l MlQ(k)>Cl0(k).

6. FURTHER IMPOVEMENTS

It is easy to prove that for all u<L we have:

This can be applied for rewriting the algorithm under an improved form:

Unsigned moduloJi (Y> X) Unsigned 7, X;

Static unsigned int COPYJX, K;

Unsigned int Ay Z, l;

^ X { 2) { L ! ( C X X);}

Number_of„digits

Recherche opérationnelle/Opérations Research

(8)

A NEW MODULO COMPILATION ALGORÏTHM 3 1 3

){A*-A-X;}

Return {A);

To ilhistrate the différence with modulo let us compute:

T= 1000 modulo-1 93 (=70)

Let F=(1000)lo =1111101000 • 1 = 10 y » ( n + l ) =1111

Z = Ü : » ( L - / - 1 ) « 10110000001 » ( 1 7 - 1 0 - 1 ) = 10110 Z * ( F » (»-!))= 10110* 1111 =101001010

=1010

=1110100010

> > ( ) ) ) > > ( ) ) 2n + 2= 110100010 Y % 2n + 2 = 111101000

_111101000 110100010

ioooiio=(70)

lo

=r

While in 1000 modulo 93 we must calculate:

is:*(r»(ii-i))=ioiiooooooi*iiii =101001010001111 (^•(r»(«-i)))»(L-/i+i) =1010

j r * ( ( J t * ( r » ( n - l ) ) ) » ( L - n + l ) ) =1110100010 2T*((A:*(lr>>(n"l)))»(i-w+l))% 2tt+2= 110100010 Y%2B + 2-ïlll01000

111101000 110100010

loooi 10=(70)l o=r

7. DEDICATION

The authors wish to call the presented method Prince Léonard's algorithme as a dedication to His Highness Prince Léonard of the Hutt River Province.

May the Lord bless him, his familly and all the subjects of his prosperous principality.

vol. 24, n* 3, 1990

Références

Documents relatifs

In microsatellite analysis, moderate genetic diversity values were found for Madagascar, together with low mean number of alleles ranging from 2.47 to 3.88 compared to South

In summary, sc injection of 5 mg/kg EGCG 4 times a week led, compared to the other two dose–route protocols, to the highest average reduction in serum CK levels, the second

Layout and Design: Matthew Ronay and Nathan Carter Photos: Karsten Krejcarek, Kimberly Aubuchon, Claudia Schmuckli, Nathan Carter, Matthew Ronay and Miko McGinty Printed and bound

If a number field F contains the 2`-th roots of unity then the wild kernel of F and its logarithmic `-class group have the

639 Superfluid to Mott Insulator Transition in 1D, 2D, and 3D... 641 Superfluid to Mott Insulator Transition in 1D, 2D,

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

Finally, if G F has entwined cycles (set of cycles with common edges), we have designed a deterministic fixed-parameter algorithm for #2SAT, that is, an algorithm whose time

The orientation is confirmed by a pair of creatures or mounts ( v ā hana ) depicted on the pedestal of each Bodhisattva: lions in the East, horses in the South,