Multipr cision
This presentation is the property of its rightful owner.
Sponsored Links
1 / 35

Multiprécision PowerPoint PPT Presentation


  • 66 Views
  • Uploaded on
  • Presentation posted in: General

Multiprécision. Intérêt. Pour les algorithmes de cryptographie à clés publiques (RSA, ECC, LUC, El-Gamal …), on a besoin de nombres premiers de plusieurs centaines de chiffres Une vérification même approchée de primalité nécessite des additions, multiplications et divisions en multiprécision.

Download Presentation

Multiprécision

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Multipr cision

Multiprécision


Int r t

Intérêt

  • Pour les algorithmes de cryptographie à clés publiques (RSA, ECC, LUC, El-Gamal …), on a besoin de nombres premiers de plusieurs centaines de chiffres

  • Une vérification même approchée de primalité nécessite des additions, multiplications et divisions en multiprécision.

  • Les processeurs possède des unités arithmétiques entières ou flottantes de taille fixe


Comment viter ce cours

Comment éviter ce cours ?

  • La plupart des algorithmes « scolaires » sont suffisant pour des nombres de quelques dizaines de chiffres et deviennent vraiment obsolètes au delà de 100 chiffres

  • Il existe des librairies de multiprécision toutes faites dans la plupart des languages de programmation


Notion de complexit

Notion de complexité

  • On suppose que l’on dispose d’une machine capable de faire des opérations dites élémentaires.

  • Il s’agit d’opérations en temps fixe (Exemple: addition, soustraction en 32 ou 64 bits).

  • On suppose aussi que cette machine dispose d’une mémoire où est stockée les données d’un problème à résoudre.

  • La taille du problème, notée T, est le nombre de bits nécessaires au stockage.

  • La complexité du problème, notée C, est une fonction telle qu’un problème de taille T, nécessite au plus C(T) opérations élémentaires pour être résolu.


Notion de complexit1

n

1

5

10

50

n2/3.log(n)

0

4,66

10,53

51,72

n.log(n)

0

8,05

23,03

195,60

n1,58

1

12,72

38,02

483,48

2n

2

32

1024

1,12e15

Notion de complexité

  • Plutôt que de calculer exactement la fonction C, on se contente le plus souvent d’en donner un équivalent.

  • Exemple: l’addition scolaire a une complexité linéaire, le tri de n entiers a une complexité en n.log(n), l’algorithme de Meissel-Lehmer a une complexité en n2/3.log(n), l’algorithme de Karatsuba a une complexité en n1,58, l’algorithme de Chernikova a une complexité exponentielle.

Comparaison de complexité


Addition scolaire

Addition scolaire

  • A=(an-1an-2 … a1a0) représente A= ai Dioù D=232 ou 264 (suivant la taille des opérateurs)

  • B=(bn-1bn-2 … b1b0). Soit S=(snsn-1 … s1s0) avec S=A+B

  • On calcule par récurrence c0=0, sk=ak+bk+ck-1(mod. D) et ck=1 si bk+ck-1> D-1-ak et 0 sinon.

  • Le modulo se calcule automatiquement et le test se calcule en nombres inférieurs à D

  • La complexité est linéaire (le nombre d’opérations est inférieur à 4n)


Addition complexit

Addition: complexité

  • L’addition scolaire est linéaire

  • Quand on ajoute A=(an-1an-2 … a1a0) et B=(bn-1bn-2 … b1b0), la moindre modification d’un ak ou un bk change le résultat final

  • Un algorithme d’addition doit « connaître » tous les ak et bk.

  • L’algorithme ne peut pas être moins que linéaire


Multiplication scolaire

Multiplication scolaire

  • On veut multiplier A=(an-1an-2 … a1a0) et B=(bn-1bn-2 … b1b0)

  • On forme les produits partiels A.bk et on les ajoute en les décalant (les produits albk sont à calculer en précision double  4 multiplications et 3 additions simples)

  • Le coût d’un calcul A.bk est linéaire.

  • On doit en calculer n et on doit les additionner

  • Le coût global est en n2.


M thode de karatsuba 1962

Méthode de Karatsuba (1962)

  • On veut multiplier A=(a2n-1a2n-2 … a1a0) et B=(b2n-1b2n-2 … b1b0)

  • On a A=A1.Dn+A0 et B=B1Dn+B0 avec A1=(a2n-1a2n-2 … an+1an), A0=(an-1an-2 … a1a0), B1=(b2n-1b2n-2 … bn+1bn), B0=(bn-1bn-2 … b1b0).

  • M=A.B=M2D2n+M1Dn+M0 avec M0=A0.B0, M1=A0.B1+A1.B0, M2=A1.B1.

  • On écrit M1=(A0+A1).(B0+B1)-M0-M2

  • On a besoin de 3 multiplications au lieu de 4 dans le cas de la multiplication scolaire.

  • On continue récursivement (si le nombre de mots est impair, on coupe au mieux).

  • La complexité de la multiplication de deux chiffres de n mots est proportionnel à nlog2(3)n1.58


Karatsuba exemple

Karatsuba: Exemple

  • A=171 659,B=891 512

  • On prend D=1000A1=171, A0=659, B1=891,B0=512

  • M2= A1.B1= 171891= 152 361, M0= A0.B0= 659512= 337 408

  • M1= (A0+A1).(B0+B1)-M0-M1= (8301 403)-M0-M1= 1 243 602-M0-M1= 674 721

  • R=D2.M2+D.M1+M0=153 306 058 408


M thode de toom cook

Méthode de Toom-Cook

  • On coupe en trois parties

  • A=A2D2n+A1Dn+A0, B=B2D2n+B1Dn+B0

  • M=A.B= M4D4n+M3D3n+M2D2n+M1Dn+M0

  • On pose P1=(A2+A1+A0).(B2+B1+B0), P-1=(A2+(-1)nA1+A0).(B2+(-1)nB1+B0), P2=(22nA2+2nA1+A0).(22nB2+2nB1+B0)

  • On a M0=A0B0, M1=2A2B2-(1/2)A0B0-(1/3)P-1+P1-(1/6)P2, M2=-A2B2-A0B0+(1/2)P-1+(1/2)P1et M3= - 2A2B2+(1/2)A0B0 -(1/6)P1-(1/2)P1+(1/6)P2, M4=A2B2

  • On a 5 multiplications seulement.

  • La complexité est proportionnel à nlog3(5)n1.46


Toom cook exemple

Toom-Cook: Exemple

  • A=171 659, B=891 512

  • D=100, A2=17, A1=16, A0=59, B2=89, B1=15, B0=12

  • P1=(A2+A1+A0).(B2+B1+B0)=10 672

  • P-1=(A2-A1+A0).(B2-B1+B0)=5 160

  • P2=(4A2+2A1+A0).(4B2+2B1+B0)=63 282

  • M0=A0B0=708, M4=A2B2=1 513, M1=2M4-(1/2)M0-(1/3)P-1+P1-(1/6)P2=1 077, M2=-M4-M0+(1/2)P-1+(1/2)P1=5 695, M3=-2M4+(1/2)M0-(1/6)P-1-(1/2)P1+(1/6)P2=1 679

  • R=D4.M4+D3.M3+D2M2+D.M1+M0=153 036 058 408


G n ralisation

Généralisation

  • On peut continuer et couper en r=4,5,6… parties

  • La complexité est proportionnelle à nlog(2r-1)/log(r)

  • Théoriquement on peut donc obtenir des algorithmes de multiplications en n(1+) avec >0 aussi petit que possible

  • Mais les calculs intermédiaires sont de plus en plus lourds

  • Pratiquement on n’implémente même pas l’algorithme de Toom-Cook: si besoin, on lui préfère les algorithmes à transformées de Fourier


Transform e de fourier

Transformée de Fourier

  • Multiplier des nombres ou des polynômes, c’est pareil.

  • A=(an-1an-2 … a1a0) et B=(bn-1bn-2 … b1b0)

  • A(X)= an-1Xn-1+an-2Xn-2+ … +a1X1+a0,, B(X)= bn-1Xn-1+bn-2Xn-2+ … +b1X1+b0

  • SiP(X)=A(X).B(X), alors A.B=P(D)

  • P est de degré 2n-2, si on connaît 2n valeurs distinctes de P, on peut déterminer P (par exemple par interpolation de Lagrange)

  • La transformée de Fourier se sert des points wk=exp(2ik/2n), 0k<2n

  • On définit Aj=A(wj), Bj=B(wj) et Pj=P(wj)

  • On a Pj=Aj.Bj


Transform e de fourier1

Transformée de Fourier

  • On calcule les Aj et Bj par transformée de Fourier

  • On calcule les Pj = Aj . Bj

  • On fait une transformée de Fourier inverse pour déterminer les Pi

  • Le calcul des transformées de Fourier et de Fourier inverse se fait en une complexité n.log(n)

  • Le calcul des Pj est linéaire

  • Le coût global est donc en n.log(n)


Multiplication complexit

Multiplication: Complexité

  • L’algorithme scolaire a une complexité en n2

  • L’algorithme de Karatsuba est en n1.58

  • L’algorithme de Toom-Cook est en n1.46

  • L’algorithme par transformée de Fourier de Schonage a une complexité en n.log(n)

  • Mais en fait, Winograd a démontré que la complexité de la multiplication est juste linéaire


Equation f x 0

Equation f(x)=0

  • On suppose f fonction réelle, de classe C1 sur un intervalle ]a,b[ qui s’annule dans l’intervalle

  • On définit par récurrence x0 ]a,b[, et xn+1=xn-f(xn)/f’(xn) pour n1

  • Suivant f et x0, la suite xn converge vers une limite l telle que f(l)=0

  • Méthode de Newton

  • Convergence généralement quadratique (le nombre de décimales exactes double à chaque itération)


Calcul de l inverse

Calcul de l’inverse

  • Soit a un nombre réel positif, on cherche à calculer 1/a

  • On pose f(x)=1/x-a

  • L’itération devient xn+1=xn(2-a.xn)

  • Si xn-1/a= alors xn+1-1/a=a.2

  • Si <1/a, alors a.2 < 

  • Donc si x0]0,2/a[, la suite converge vers 1/a

  • On a donc besoin d’une estimation grossière de 1/a pour initialiser l’algorithme

  • La convergence est quadratique


Inverse exemple

Inverse: Exemple

  • a=0.52369817

  • En regardant les premiers bits de a, on se rend compte que 0.5 < a < 1 donc 1 < 1/a < 2 on peut initialiser avec x0=1.5

  • x1=x0(2-a.x0)=1.82167911

  • x2=x1(2-a.x1)=1.90545810

  • x3=x2(2-a.x2)=1.90948830

  • x4=x3(2-a.x3)=1.90949683


Division enti re

Division entière

  • Soit A et B deux entiers, on veut calculer A/B

  • On calcule q=1/B avec une précision inférieure à 1/A par excès (resp. par défaut)

  • On calcule A.q et on l’arrondit à l’entier par défaut (resp. par excès)


Division enti re exemple

Division entière (Exemple)

  • A=309 641 782 117, B=143 557

  • En regardant les premiers bits de A, on sait que A<51011, on a donc à calculer q avec une précision de 210-12

  • On a q=0.000 006 965 874 à 210-12 près

  • La valeur de q est par excès (l’itération suivante donne une valeur légèrement inférieure)

  • A.q=2 156 925.639 à moins de 1 près

  • On arrondit à l’entier inférieur et on trouve A/B=2 156 925


Calcul d un modulo

Calcul d’un modulo

  • Soient A et B deux entiers, on veut calculer r=A mod B

  • On calcule le quotient entier q=A/B par l’algorithme précédent

  • On calcule alors r=A-q.B

  • Si B est petit par rapport à A, il existe d’autres méthodes


Racine carr e

Racine carrée

  • Soit a un nombre réel positif et soit à calculer a

  • On pose f(x)=x2-a et on utilise la méthode de Newton

  • xn+1=(xn+a/xn)/2

  • Connue depuis l’antiquité sous le nom de méthode de Hénon

  • Problème: nécessite une division


Racine carr e 2 me m thode

Racine carrée: 2ème méthode

  • f(x)=1/x2-a

  • L’itération devient xn+1=(3xn-a.xn3)/2

  • La suite converge vers 1/a, on a plus qu’à multiplier par a pour trouver a.

  • Plus de divisions

  • Si x0]0, 2/a[, la suite converge quadratiquement vers 1/a


Racine carr e exemple

Racine carrée: Exemple

  • a=5, 4<a<16, 2<a<4, 1/4<1/a <1/2 x0=0.375

  • x1=(3x0-a.x03)/2=0.43066406

  • x2=(3x1-a.x13)/2=0.44630628

  • x3=(3x2-a.x23)/2=0.44721083

  • x4=(3x3-a.x33)/2=0.44721359

  • x5=(3x4-a.x43)/2=0.44721360

  • x6=(3x5-a.x53)/2=0.44721360 (x6=x5on s’arrête)

  • a5.x6=2.23606800, la valeur est exacte à 5.10-8 près

  • En fait a= 2.23606797…


It rations d ordre sup rieur

Itérations d’ordre supérieur

  • On cherche à résoudre f(X)=0

  • On suppose que x est proche d’une racine de l’équation

  • f(x+h)=f(x)+h.f’(x)+(h2/2).f’’(x)+ … (Taylor)

  • On résoud en h l’équation f(x)+h.f’(x)+ (h2/2).f’’(x)=0

  • On trouve h=-(f’(x)/f’’(x))(1-(1-g(x))1/2) avec g(x)=2f(x)f’’(x)/f’(x)2

  • f(x) est supposé petit et si f est une fonction suffisamment régulière, g(x) est aussi petit


It rations d ordre sup rieur suite

Itérations d’ordre supérieur (suite)

  • Si  est petit alors 1-(1-)1/2 /2+2/8 (Taylor)

  • On applique a g(x) et on trouve (1-(1-g(x))1/2)(g(x)/2).(1+g(x)/4)

  • D’où h -(f(x)/f’(x)).(1+f(x)f’’(x)/(2.f’(x)2))

  • On pose xn+1=xn-(f(xn)/f’(xn)).(1+f(xn)f’’(xn) /(2.f’(xn)2))

  • La suite converge cubiquement vers la racine de f(X)=0

  • Itération de Householder (1970)


It rations d ordre sup rieur fin

Itérations d’ordre supérieur (fin)

  • On peut continuer et définir des itérations quartiques, quintiques etc …

  • Mais toutes les fonctions ne s’y prêtent pas

  • Il faut que les dérivés successives soient faciles à calculer

  • Il faut que le surcoût en calcul soit rentable en termes de vitesse de convergence


Exemple inverse

Exemple: Inverse

  • Calcul de l’inverse de a

  • f(x)=1/x-a

  • On choisit la valeur initiale x0 proche de 1/a

  • On pose hn=(1-a.xn)

  • Itération quadratique: xn+1=xn+xnhn (Newton)

  • Itération cubique: xn+1=xn+xn(hn+hn2) (Householder)

  • Itération quartique: xn+1=xn+xn(hn+hn2+hn3)

  • Itération quintique: xn+1=xn+xn(hn+hn2+hn3+hn4)

  • Etc …


Exemple inverse1

1.905458103

1.821679118

1.890664087

1.905458103

1.909495007

1.909496839

1.909488296

1.909496839

1.909496839

1.909496839

1.909496839

1.909496839

Exemple: Inverse

  • a=0.52369817, x0=1.5

quadratique

cubique

quartique

n=1

n=2

n=3

n=4


Calcul des fonctions l mentaires

Calcul des fonctions élémentaires

  • Calcul des fonctions sin, cos, log, …

  • On se sert des propriétés de la fonction pour se ramener à un intervalle donné

  • Pour une précision limitée (une dizaine de chiffres décimaux), l’algorithme CORDIC peut faire le calcul avec uniquement des additions (c’est l’algorithme des calculatrices)

  • Pour une plus grande précision, on peut utiliser des développement de Taylor en se plaçant au milieu de l’intervalle pour accélérer la convergence

  • Pour une précision maximale, on utilise des techniques comme le binary splitting ou l’AGM


Exemple sinus

Exemple: sinus

  • On a sin(x+2)=sin(x), sin(x+)=-sin(x), sin(-x)=-sin(x), sin(x)=cos(/2-x)

  • On peut donc se limiter à calculer dans l’intervalle [-/4, /4]

  • sin(x)=x-x3/6+x5/120+…=(-1)nx2n+1/(2n+1)!

  • cos(x)=1-x2/2+x4/24+…=(-1)nx2n/(2n)!

  • Les développements tronqués se calcule par l’algorithme de Horner pour limiter les calculs

  • Exemple: 1-x2/2+x4/24-x6/720=1-(x2/1.2).(1-(x2/3.4)(1-x2/5.6))


Exemple num rique

Exemple numérique

  • Calcul de sin(8) à 5 décimales près

  • sin(8)=sin(3-8)=cos(8-5/2)

  • On a 8-5/26<10-5, on peut donc se limiter aux trois premiers termes du développement de cos(x)

  • On utilise donc cos(x)1-(x2/1.2).(1-(x2/3.4))

  • Le calcul par l’algorithme de Horner est stable (les erreurs d’arrondis ne se propage pas)

  • On trouve numérique sin(8)=0.98935826008034

  • En fait sin(8)=0.98935824662338


Exemple calcul de e 10 d cimales

0.23876388301

0.066666666667

0.10991119991

0.076190476191

0.12332346666

0.30969097075

0.082783882784

0.14041543333

0.43656365692

0.090231990232

0.71828182846

0.16291649048

0.099111999112

0.19381941508

1.7182818285

Exemple: Calcul de e à 10 décimales

  • On a e=1+1/2! + 1/3! + …

  • On a 15! > 1010, on peut donc s’arrêter au 15 ème terme

  • On pose x15=1/15 et xn=(1+xn-1)/n et on a exp(1)1+x0

  • En fait e2.718281828459

  • La valeur trouvée est correcte à 10 décimales près


Pour aller plus loin

Pour aller plus loin …

  • Site web: http://numbers.computation.free.fr

  • Arithmétique en précision arbitraire, Paul Zimmermann, Publication interne INRIA no 4272, septembre 2001

  • AGM: Fast multiple-precision evaluation of elementary functions, Richard P. Brent, Journal of the ACM, vol 2 no 23 pages 242-251 (1976)

  • Calcul de : Pi and the AGM, J.M. et P.B. Borwein sur le site http://www.cecm.sfu.ca


  • Login