multipr cision
Download
Skip this Video
Download Presentation
Multiprécision

Loading in 2 Seconds...

play fullscreen
1 / 35

Multiprécision - PowerPoint PPT Presentation


  • 79 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Multiprécision' - clare-gilliam


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
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
ad