TemidaLib sistem za rad sa velikim brojevima TemidaLib Multiprecision Arithmetic Library

Similar documents
Projektovanje paralelnih algoritama II

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

Mathcad sa algoritmima

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

Uvod u relacione baze podataka

Red veze za benzen. Slika 1.

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

TEORIJA SKUPOVA Zadaci

BROJEVNE KONGRUENCIJE

ZANIMLJIVI ALGEBARSKI ZADACI SA BROJEM 2013 (Interesting algebraic problems with number 2013)

ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS

Ivan Petković ANALIZA PROCESNIH I RAČUNSKIH ITERACIJA PRIMENOM SAVREMENIH RAČUNARSKIH ARITMETIKA

ANALYSIS OF INFLUENCE OF PARAMETERS ON TRANSFER FUNCTIONS OF APERIODIC MECHANISMS UDC Života Živković, Miloš Milošević, Ivan Ivanov

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

Fajl koji je korišćen može se naći na

Primena Katalanovih brojeva i nekih kombinatornih problema u kriptografiji

1.1 Algoritmi. 2 Uvod

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle).

ALGORITAM FAKTORIZACIJE GNFS

Algoritmi za mnoºenje i dijeljenje velikih. brojeva. Marko Pejovi UNIVERZITET CRNE GORE. Prirodno-matemati ki fakultet Podgorica. Podgorica, 2018.

Metrički prostori i Riman-Stiltjesov integral

Konstrukcija i analiza algoritama

Sortiranje podataka. Ključne riječi: algoritmi za sortiranje, merge-sort, rekurzivni algoritmi. Data sorting

Đorđe Đorđević, Dušan Petković, Darko Živković. University of Niš, The Faculty of Civil Engineering and Architecture, Serbia

Šta je to mašinsko učenje?

SIMBOLIČKO IZRAČUNAVANJE HANKELOVIH DETERMINANTI I GENERALISANIH INVERZA MATRICA

Algoritmi i programiranje

AIR CURTAINS VAZDU[NE ZAVESE V H

THE BOUNDARY VALUES OF THE PUNCH DIAMETER IN THE TECHNOLOGY OF THE OPENING MANUFACTURE BY PUNCHING UDC

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4

Metode izračunavanja determinanti matrica n-tog reda

Elastic - plastic analysis of crack on bimaterial interface

VELOCITY PROFILES AT THE OUTLET OF THE DIFFERENT DESIGNED DIES FOR ALUMINIUM EXTRUSION

APPROPRIATENESS OF GENETIC ALGORITHM USE FOR DISASSEMBLY SEQUENCE OPTIMIZATION

Asimetrični kriptografski RSA algoritam

PRIMENA FAZI LOGIKE ZA REŠAVANJE NP-TEŠKIH PROBLEMA RUTIRANJA VOZILA I

DISTRIBUIRANI ALGORITMI I SISTEMI

Jedna familija trokoračnih postupaka šestog reda za rešavanje nelinearnih jednačina

METODE ZA REŠAVANJE PROBLEMA TRIANGULACIJE POLIGONA I NJIHOVA IMPLEMENTACIJA

Programiranje u realnom vremenu Bojan Furlan

Asian Journal of Science and Technology Vol. 4, Issue 08, pp , August, 2013 RESEARCH ARTICLE

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva.

Philippe Jodin. Original scientific paper UDC: :519.6 Paper received:

Kriptologija. Savršena bezbednost

ADAPTIVE NEURO-FUZZY MODELING OF THERMAL VOLTAGE PARAMETERS FOR TOOL LIFE ASSESSMENT IN FACE MILLING

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom.

NAPREDNI FIZIČKI PRAKTIKUM 1 studij Matematika i fizika; smjer nastavnički MJERENJE MALIH OTPORA

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1

Metode praćenja planova

Poređenje kompresionih tehnika digitalne slike primenom DFT, DCT i SVD sa aspekta broja upotrebljenih transformacionih koeficijenata

Uvod u dinamičko programiranje

The temperature dependence of the disproportionation reaction of iodous acid in aqueous sulfuric acid solutions

Napredni standard enkripcije (AES)

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele.

NEURONSKE MREŽE 1. predavanje

AN EXPERIMENTAL METHOD FOR DETERMINATION OF NATURAL CIRCULAR FREQUENCY OF HELICAL TORSIONAL SPRINGS UDC:

SHEME DIGITALNOG POTPISA

DESIGN AND CALCULATION OF RING SPRINGS AS SPRING ELEMENTS OF THE WAGON BUFFER UDC : Jovan Nešović

Dependence of the total -electron energy on a large number of non-bonding molecular orbitals

UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU

U VOD U ALGOR IT ME I S T RUKT URE P ODATAK A

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA

Some Observations on the Topological Resonance Energy of Benzenoid Hydrocarbons*

DEVELOPMENT OF A MATHEMATICAL MODEL TO PREDICT THE PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR HEADED COMPONENTS

Konstekstno slobodne gramatike

MAGNETIC FIELD OF ELECTRICAL RADIANT HEATING SYSTEM

Maja Antolović Algoritmi u teoriji brojeva

IDENTIFICATION OF DONOR LINES FOR IMPROVING FRUIT YIELD OF K 35 x K 12 EGGPLANT HYBRID

Kontinualni lokacijski modeli. Jelena Panić 748/15 Vidosava Antonović 819/15

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008

Fibonaccijev brojevni sustav

Konstrukcija i analiza algoritama

U X. 1. Multivarijantna statistička analiza 1

Neke klase maksimalnih hiperklonova

DETERMINATION OF THE EFFECTIVE STRAIN FLOW IN COLD FORMED MATERIAL

DEVELOPMENT OF MATHEMATICAL MODELS TO PREDICT THE EFFECT OF INPUT PARAMETERS ON FEED RATE OF A RECIPROCATORY TUBE FUNNEL FEEDER

HENDERSON'S APPROACH TO VARIANCE COMPONENTS ESTIMATION FOR UNBALANCED DATA UDC Vera Djordjević, Vinko Lepojević

PRELIMINARY COMMUNICATION Influence of chloride ions on the open circuit potentials of chromium in deaerated sulfuric acid solutions

FTN Novi Sad Katedra za motore i vozila. Drumska vozila Uputstvo za izradu vučnog proračuna motornog vozila. 1. Ulazni podaci IZVOR:

HIBRIDNI KRIPTOSUSTAVI

Zbirka ispitnih zadataka iz Baza Podataka 1 Ispiti i kolokvijumi u periodu

Jedan metod za automatsko dokazivanje teorema geometrije

LLL Seminari u okviru TEMPUS projekta

SITO POLJA BROJEVA. Dario Maltarski PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad. Voditelj rada: Doc. dr. sc.

Jednočlani potpuni skupovi veznika za iskaznu logiku

NASTAVNO NAUČNOM VEĆU MATEMATIČKOG FAKULTETA UNIVERZITETA U BEOGRADU

Preliminarno ispitivanje sadrž aja slike pomoć u histograma slike koris ć enjem SVM algoritma i neuronske mrež e

BLAST-INDUCED DAMAGE AND ITS IMPACT ON STRUCTURAL STABILITY OF UNDERGROUND EXCAVATIONS UTICAJ MINIRANJA NA STRUKTURNU STABILNOST PODZEMNIH PROSTORIJA

VREMENSKE SERIJE U FINANSIJAMA: ARCH I GARCH

Prsten cijelih brojeva

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice

INVESTIGATION OF UPSETTING OF CYLINDER BY CONICAL DIES

A STUDY ON NATURAL CONVECTION HEAT TRANSFER IN COMPLEX BOUNDARIES

Andrea Rožnjik. VaR KAO MERA RIZIKA U OPTIMIZACIJI PORTFOLIA. - magistarska teza - Novi Sad, 2008.

Karakterizacija problema zadovoljenja uslova širine 1

Transcription:

TemidaLib sistem za rad sa velikim brojevima TemidaLib Multiprecision Arithmetic Library Jelena Tomašević i Milena Vujošević-Janičić Matematički fakultet, Univerzitet u Beogradu Studentski trg 16, 11000 Beograd, Srbija www.matf.bg.ac.yu/~jtomasevic, www.matf.bg.ac.yu/~milena July 15, 2006 Apstrakt Izračunavanja nad celim i realnim brojevima sa proizvoljnom tačnošću su vitalna u mnogim primenama računarstva. Postoji mnoštvo metoda i raspoloživih sistema koji se bave ovom problematikom. Naša biblioteka, TemidaLib, je implementirana u programskom jeziku C++. Ona obezbe uje izračunavanja proizvoljne tačnosti nad celim brojevima i razlomcima. Computations with arbitrary precision over integers and reals are often vital in many computer applications. There is a number of systems that address these problems. Our library, TemidaLib, is implemented in programming language C++. It provides support for arithmetic over integers and fractions with arbitrary precision. 1 Uvod Osnovni numerički tipovi podataka koji su dostupni u većini proceduralnih programskih jezika (C, C++, Fortran...) ograničeni su fiksnom veličinom i impliciranom preciznošću koja zavisi od tipa podatka i od procesora. Brojeve koji ne mogu da budu smešteni u osnovni tip podataka (na primer, celi brojevi koji imaju više od 10 cifara) zovemo veliki brojevi. Za ove brojeve, izvo enje čak i osnovnih računskih operacija, zbog svoje vremenske zahtevnosti, nameće razvijanje posebnih metoda. Ti metodi čine oblast koju zovemo računarska aritmetika proizvoljne tačnosti. Temida, u grčkoj mitologiji jedna od titanki, oličava večite zakone koji vladaju u kosmosu. U nastavku ovog teksta, ukratko ćemo opisati aritmetiku proizvoljne tačnosti (poglavlje 2): neke njene metode ( 2.1), njene primene ( 2.2) kao i neke postojeće sisteme koji imaju podršku za aritmetiku proizvoljne tačnosti ( 2.3). U drugom delu rada, prikazaćemo našu biblioteku, TemidaLib za rad sa velikim brojevima (poglavlje 3): motivaciju za njen razvoj ( 3.1), njene funkcionalnosti ( 3.2), interfejs( 3.3) i efikasnost ( 3.4). U poglavlju 4 navešćemo zaključke i moguće pravce za dalji rad. 2 Aritmetika proizvoljne tačnosti Aritmetika proizvoljne tačnosti je računarska tehnika koja omogućava izvršavanje izračunavanja nad celim i realnim brojevima sa proizvoljnom preciznošću. Polazna ideja je da se brojevi u odgovarajućoj osnovi čuvaju kao nizovi cifara promenljive dužine. Na taj način, broj cifara ograničen je samo raspoloživom memorijom sistema. 2.1 Primeri efikasnih operacija za rad sa velikim brojevima Veliki broj u osnovi B sa n cifara može se prikazati na sledeći način: = x 0 + x 1 B + x 2 B 2 +... + x n 1 B n 1 Koeficijenti x i (i = 0, 1,..., n 1) su cifre broja u osnovi B i zadovoljavaju uslov 0 x i < B. 1

Algoritmi za sabiranje i oduzimanje velikih brojeva veličine n, kao i za množenje i deljenje velikog broja veličine n sa brojem osnovnog tipa podatka je složenosti O(n). Množenje velikih brojeva Za množenje dva velika broja veličine n postoje algoritmi za množenje sa složenosti O(n log(n)) zasnovani na brzim Furijeovim transformacijama [12]. Karatsuba algoritam za množenje brojeva je složenosti O(n log(3) log2 ) = O(n 1.5849... ). Karatsuba [14] je prvi primetio da množenje dva velika broja veličine n može biti brže od O(n 2 ). Tehnika je rekurzivne prirode. Polazeći od velikih brojeva i Y veličine n, vrši se njihovo deljenje na dva dela: [ n ] = 0 + B m 1, Y = Y 0 + B m, m = 2 Proizvod brojeva i Y može se prikazati na sledeći način: Y = 0 Y 0 + B m ( 0 + 1 Y 0 ) + B 2m 1. To znači da je za odre ivanje proizvoda brojeva i Y potrebno izračunati sledeća četiri proizvoda: 0 Y 0, 0, 1 Y 0 i 1. Ideja algoritma je da se proizvod brojeva i Y prikaže na sledeći način: Y = P 0 + B m (P 1 P 2 P 0 ) + B 2m P 2 i da se umesto četiri proizvoda, izračunaju sledeća tri: P 0 = 0 Y 0, P 1 = ( 0 + 1 )(Y 0 + ), P 2 = 1. Osim ova tri proizvoda, izvršavaju se i dva puta operacije sabiranja i oduzimanja brojeva veličine n 2. Operacija množenja brojeva i Y se dalje nastavlja rekurzivno pa je složenost algoritma jednaka [2]: O(n log23 ) = O(n 1.5849... ) Deljenje velikih brojeva Deljenje dva velika broja i Y reprezentovana u osnovi B može se ostvariti sledećim postupkom 1, razlikovanjem dva slučaja: 1 Ovaj postupak razvijen je u toku rada na biblioteci Temidalib 1. Ukoliko je Y, broj Y se množi sa B sve dok je manji od (označimo ga sa ). Neka je u tom cilju izvršeno k množenja brojem B. Tada važi: Y = B k, = B k Y (1) Radi efikasnosti, množenje osnovom koja je stepen broja dva može se ostvariti šiftovanjem cifara velikog broja Y ulevo. Neka se n puta sadrži u od broja se oduzima sve dok je pozitivan broj. Novodobijeno je ostatak pri deljenju starog sa. Označimo sa 1 konačnu vrednost tog ostatka. Tada važi: = n + 1, 0 1 < (2) Izračunavanje broja nastavlja se rekurzivno. Na osnovu (1) i (2) dobija se: Y = (n + 1 ) B k 2. Ukoliko je < Y, broj se množi sa B sve dok je manji od Y. Neka je izvršeno l množenja. Tada važi: 1 Y = 1 Y 1 B l, 1 = B l (3) Neka se Y m puta sadrži u 1 od broja 1 se oduzima Y sve dok je 1 pozitivan broj. Novodobijeno 1 je ostatak pri deljenju starog 1 sa Y. Označimo sa 2 konačnu vrednost tog ostatka. Tada važi: 2 Y 1 Y = m + 2 Y, 0 2 < Y (4) se izračunava rekurzivno. Na osnovu (3) i (4), rešenje je Y = (m + 2 Y ) 1 B l Opisani postupak može se koristiti za odre ivanje proizvoljnog broja cifara količnika. 2

2.2 Primene Aritmetika proizvoljne tačnosti ima široku i značajnu primenu u računarstvu. Koristi se za izračunavanje matematičkih konstanti (na primer, broja π) na više miliona tačnih cifara, za izračunavanje velikih prostih brojeva itd. Aritmetika proizvoljne tačnosti koristi se i za rešavanje sistema jednačina u kojima vrednosti nepoznatih mogu da se razlikuju za mnogo redova veličina. Ipak, najznačajnije primene su u kriptografiji. Kriptografija Sa razvojem računarskih mreža kriptografija sve više dobija na značaju. Poruke koje se prenose su ranjive za prisluškivačke taktike i osnovni cilj kriptografije je očuvanje tajnosti poruke. Algoritmi za kriptovanje dele se na simetrične i asimetrične. Simetrični algoritmi ili algoritmi sa tajnim ključem su oni kod kojih se ključ za dešifrovanje može izvesti iz ključa za šifrovanje i obrnuto (ova dva ključa su često identična). Asimetrični algoritmi ili algoritmi sa javnim ključem koriste dva ključa: ključ za šifrovanje koji je javan (dostupan svima) i ključ za dešifrovanje koji je tajni ključ. Svako može šifrovati poruku, ali samo onaj ko ima odgovarajući tajni ključ može da je dešifruje. Asimetrični algoritmi obično se koriste za bezbednu razmenu ključa za neki simetrični algoritam. RSA algoritam je najšire korišćen asimetrični algoritam [2]. Procenjuje se da je više od 95% zaštićene komunikacije zasnivano na korišćenju RSA algoritma. Javni i tajni ključevi izvode se iz para velikih prostih brojeva (od 100 i više dekadnih cifara). Smatra se da je odre ivanje poruke na osnovu šifrovane poruke i ključa za šifrovanje ekvivalentno faktorisanju proizvoda dva velika prosta broja. Upotrebljivost RSA algoritma zasniva se na tome što je, uz korišćenje efikasnih biblioteka za rad sa velikim brojevima, moguće u deliću sekunde generisati ključeve, šifrovati i dešifrovati poruke dok razbijanje RSA algoritma putem faktorisanja velikog broja može, na današnjim računarima, da utroši hiljade godina. Iako su se poslednjih godina granice algoritama celobrojnog faktorisanja veoma proširile, što je delom prouzrokovano bržim računarima, a delom algoritamskim poboljšanjima, još uvek nije poznat nijedan polinomijalni algoritam za faktorisanje. Kriptovanje na bazi eliptičkih krivih je asimetrični sistem koji je najčešće efikasniji i koristi kraće ključeve, a pruža istu ili veću sigurnost u odnosu na RSA algoritam [11]. Zajedničko za RSA algoritam i algoritam kriptovanja eliptičkim krivama je da svoju sigurnost zasnivaju na težini problema koji nastaju pri računanju sa velikim brojevima (sa više stotina cifara). I jedan i drugi zahtevaju efikasne operacije nad velikim brojevima, uključujući izračunavanje diskretnog logaritma, i slične funkcije. 2.3 Postojeći sistemi za rad sa velikim brojevima Jedna od najranijih, široko rasprostranjenih, implementacija aritmetike proizvoljne tačnosti bila je u programskom jeziku MacLisp [10]. Kasnije, VA/VMS operativni sistem nudio je rad sa velikim brojevima kao deo kolekcije string funkcija. Danas su biblioteke za rad sa velikim brojevima dostupne u mnogim programskim jezicima. Matematički paketi (kao što su Mathematica, Maple computer algebra system i Macsyma computer algebra) direktno daju mogućnost rada sa neograničenom preciznošću. Me utim, oni su najčešće veoma neefikasni jer nisu namenjeni numeričkom izračunavanju. Za praktičnu upotrebu, biblioteke u nekim programskim jezicima (najčešće u jezicima C ili C++) su mnogo efikasnije. Neke od kvalitetnih raspoloživih biblioteka za rad sa velikim brojevima su: GNU Multi-Precision Library [15], napisana u programskom jeziku C, podržava rad sa celim, racionalnim i realnim brojevima. Ova biblioteka podržava različite implementacije za sve operacije, u zavisnosti od veličine operanada, u cilju postizanja dobre efikasnosti u svim slučajevima; SIMATH [7], biblioteka fokusirana na algebarsku teoriju brojeva. Podržava rad sa celim, racionalnim i realnim brojevima. MIRACL [8], biblioteka za rad sa celim i racionalnim brojevima napisana u programskom jeziku C++. Podržava sve osnovne aritmetičke operacije kao i sve operacije neophodne za implementiranje RSA algoritma i kriptovanja eliptičkim krivim; 3

CLN (Class Library for Numbers) [16], biblioteka u programskom jeziku C++, za rad sa celim, racionalnim, realnim i kompleksnim brojevima. Podržava sve elementarne operacije i relacije. Lako se integriše u veće softverske pakete; libg++ [9], biblioteka za GCC kompajler sa podrškom za aritmetiku proizvoljne tačnosti celih i racionalnih brojeva. Podržava sve elementarne operacije i relacije. 3 Opis sistema TemidaLib Naša biblioteka TemidaLib razvijena je za rešavanje jednog konkretnog problema ali je otvorena za dalja proširenja. 3.1 Početna motivacija Problem iskazne zadovoljivosti (sat) je tipičan npkompletan problem [5]. Za ovaj problem, kao i za mnoge druge np-kompletne probleme eksperimentalno je uočena tzv. fazna promena: u odnosu na parametar L/N (L je broj klauza, a N broj promenljivih u formuli koja je u konjunktivnonormalnoj formi), procenat zadovoljivih formula pada od 100% do 0%, pri čemu je taj pad nagao i dešava se u okolini tačke fazne promene. Na primer, za 3-sat problem (sve klauze su dužine tri), ta tačka je približno jednaka 4.25. U radu [3], predstavljena je nova klasa sat problema k-gd-sat, koji je generalizacija k-sat i gdsat [4] problema. U k-gd-sat problemu, dužina klauze ima geometrijsku raspodelu, kontrolisanu parametrom p koji predstavlja verovatnoću; za p = 1, k-gd-sat postaje k-sat problem. Razmatra se fazna promena izme u zadovoljivih i nezadovoljivih, slučajno generisanih instanci k-gd-sat formula. Eksperimentalni rezultati ukazuju na to da postoji veza (linearna po parametru 1/p) izme u tačaka fazne promene. Interesantna je i veza izme u tačaka fazne promene za k-sat i k-gd-sat probleme. U cilju dobijanja tačaka fazne promene c k za k-sat probleme ako su poznate tačke fazne promene c φ za k-gdsat probleme (k i p je fiksirano), javlja se potreba za rešavanjem u visokoj tačnosti sistema jednačina (po promenljivim c l ) zasnovanog na Gent-Walsh [6] hipotezi: l=k φ(l) c l = 1 c φ gde je φ(l) verovatnoća generisanja klauze dužine l u k-gd-sat modelu. Za k-gd-sat model sa parametrom p, dobijamo: l=k p(1 p) l k c l = 1 c(k, p) Za fiksirano k, za različite vrednosti p (p i ), ovaj sistem se aproksimira sistemom jednačina (po promenljivim x i ): x 1 + a 1 x 2 +... + a n 1 1 x n = b 1 x 1 + a 2 x 2 +... + a n 1 2 x n = b 2... (5) x 1 + a n x 2 +... + a n 1 n x n = b n pri čemu su a 1, a 2,..., a n parovi me u sobom različitih realnih brojeva i važi a i = 1 p i, b i = 1/(p i c(k, p i )) i x i = 1/(c k+i 1 ). Ovaj sistem ima sledeće (jedinstveno) rešenje [13]: n x j = ( 1) n+j b i f ij (a i=1 i a 1 )... (a i a i 1 )(a i a i+1 )... (a i a n ) (6) gde je f ij suma svih mogućih proizvoda po n j od n 1 brojeva a 1, a 2,..., a i 1, a i+1,..., a n. Za racionalne brojeve p i i racionalnu aproksimaciju vrednosti c(k, p i ), navedeni sistem može se (za proizvoljno veliko n) egzaktno rešiti predstavljanjem nepoznatih u vidu razlomaka i korišćenjem velikih celih brojeva. Sve operacije u toku izračunavanja rešenja sistema mogu se svesti na operacije nad celim brojevima; rešenja sistema, nepoznate x i mogu se izraziti u vidu razlomaka sa celobrojnim imeniocima i brojiocima i tek na kraju prikazati kao decimalni brojevi, aproksimirati na zadat broj tačnih cifara. U toku ovakvog rešavaja sistema dobijaju se brojevi sa stotinama cifara u dekadnom zapisu. 3.2 Funkcionalnosti sistema TemidaLib Naša biblioteka TemidaLib obezbe uje specifičnu podršku za rad sa velikim brojevima: sve osnovne 4

operacije se (efikasno) vrše nad celim brojevima, a na njima se zasniva i rad sa razlomcima. Sva izračunavanja nad razlomcima se vrše egzaktno, a njihova vrednost se može prikazati sa proizvoljnim brojem cifara. Radi efikasnosti, u biblioteci TemidaLib se brojevi ne reprezentuju u dekadnom sistemu. Izbor osnove B u kojoj se čuva valiki broj je važan i mora da zadovolji sledeće uslove: osnova B, s jedne strane, mora da bude što je moguće veća kako bi se smanjila veličina reprezentacije velikog broja i cena algoritama koji rade sa njima; sa druge strane, osnova B treba da bude dovoljno mala da staje u osnovni tip podataka. U sistemu TemidaLib, veliki brojevi su predstavljeni u osnovi 256 čime je omogućeno smeštanje cifara broja u tip koji zauzima samo jedan bajt. Ovim se mogu iskoristiti brzina rutina bitovske aritmetike. Brojevni podaci koje unosi korisnik, kao i svi rezultati, daju se u dekadnom sistemu, što iziskuje interne konverzije. Množenje i deljenje velikih brojeva u sistemu TemidaLib, implementirano je metodama opisanim u poglavlju 2.1. 3.3 Interfejs sistema Sistem TemidaLib je implementiran u programskom jeziku C++. Osnovna je klasa za rad sa velikim brojevima u osnovi 256. Podržane su operacije sabiranja, oduzimanja i množenja u punoj tačnosti, sve operacije pore enja, metode za čitanje brojeva iz ulazne datoteke i ispis brojeva u izlaznu datoteku. Postoji i klasa za rad sa razlomcima velikih brojeva. Za nju su tako e podržane operacije sabiranja, oduzimanja i množenja, sve operacije pore enja kao i čitanja razlomaka iz datoteke i njihov ispis u izlaznu datoteku. Podržana je i operacija konverzije razlomka u tip double što se svodi na deljenje brojioca i imenioca (koji su veliki brojevi). Ova operacija deljenja se vrši sa proizvoljnom tačnošću koja se prenosi kao parametar funkciji. Sistem TemidaLib ima podršku i za rešavanje sistema jednačina (6). Podržana je operacija učitavanja koeficijenata sistema iz ulazne datoteke, operacija konverzije ulaznih podataka koji su u osnovi 10 u razlomke velikih brojeva u osnovi 256. Slika 1: Vreme rešavanja sistema (6) korišćenjem biblioteke TemidaLib 3.4 Efikasnost sistema Na slici 1 prikazano je vreme rešavanja sistema (6) za različite dimenzije sistema (vrednosti n). 4 Zaključci i dalji rad U ovom radu ukratko je predstavljen značaj koji aritmetika proizvoljne tačnosti ima u računarstvu. Pored već postojećih sistema za aritmetiku proizvoljne tačnosti, predstavljen je naš sistem TemidaLib. Prikazane su mogućnosti sistema uz osvrt na već postojeće sisteme za aritmetiku proizvoljne tačnosti kao i na njihovu primenu. Ukratko su opisani osnovni principi na kojima je zasnovan sistem TemidaLib i problemi za koje je specijalizovan. Za dalji rad, planiramo dalje proširivanje i unapre ivanje biblioteke. Jedan od glavnih pravaca daljeg rada je njeno obogaćivanje funkcionalnostima potrebnim za primene u kriptografiji. Literatura [1] Cuyt Annie, Kuterna Peter, Verdonk Brigitte, Vervloet Johan. The class library for exact rational arithmetic in Arithmos.- In: Proceedings Real Numbers and Computers RNC4 / Kornerup P., 2000, p. 141-160 [2] Miodrag Živković. Algoritmi. Matematički fakultet, 2000. [3] Milena Vujošević-Janičić, Jelena Tomašević, and Predrag Janičcić. Random k-gd-sat Model and its Phase Transition. Faculty of Mathematics, University of Belgrade (submitted). [4] Predrag Janičić. GD-sat model and crossover line. Journal of Experimental and Theoretical Artificial Intelligence, 13(3):181198, 2001. [5] Stephen A. Cook. The complexity of theoremproving procedures. In STOC 71: Proceedings of the third annual ACM symposium on Theory of computing, pages 151158. ACM Press, 1971. 5

[6] Ian P. Gent and Toby Walsh. The SAT phase transition. In Proceedings of ECAI-94, pages 105109, 1994. [7] Horst Gunter Zimmer. SIMATH - a Computer Algebra System for Number Theoretic Applications. International Symposium on Symbolic and Algebraic Computation, 1997, p. 365-375. [8] Shamus Software Ltd. MIRACL, Multiprecision Integer and Rational Arithmetic C/C++ Library. [9] D. Lea. User s Guide to the GNU C++ Library. URL: http://www.math.utah.edu/docs/info/libg++ toc.html [10] Fast arithmetic in MacLISP. STEELE, G L, J R NASA. Langley Res. Center Proc. of the 1977 MACSYMA Users Conf. (NASA) p 215-224 (SEE N77-28750 19-59); United States; 1977 [11] Elliptic Curve Cryptography, http://world.std.com/dpj.elliptic.htm [12] FFT based multiplication of large numbers. http://numbers.computation.free.fr/constants/algorithms/fft.html [13] Proskuryakov I. V. Zbornik zadataka iz linearne algebre. Nauka, Moskva, 1966. [14] avier Gourdon and Pascal Sebah. Arbitary Precision Computation. http://numbers.computation.free.fr/constants/algorithms/reprezentation.html [15] T Grandlung. GNU multiple precision arithmetic library. Swox AB. September 2004. http://www.swox.com/gmp/ [16] Bruno Haible, CLN, a Class Library for Numbers. URL: http://www.ginac.de/cln/ 6