taky nesmite zapomenout ze cisla v tyhle knihovne jsou ukazatele takze fungujou jako varovy promeny v pascalu.. jednou se mi to celkem vymstilo :)
pouziva naslodujicy type:
MP_INT - dlouhej integer
MP_RAT - dlouhy realny cislo
taky pozuiva limb coz je cast presnyho cisla co se vejde do wordu
MP_INT blb; mpz_init(& blb); samozdrejme je i mpq_inita cistise:
mpz_clear(& blb);taky je treba nezapomenout ze kdyz napisete blb1=blb2 tak se na sebe nasmerojou ukazatele a obe promene maji stejny misto v pameti..proste na jakoukoliv praci pouzivat mpcacky knihovny
taky na inicializaci je fce mpz_aray_init(aray[],pocet prvku pole,pocet limbu na cislo); to je na rychlou alokaci stejne dlouhych ciseldalsi fce jsou popsany v info/mpw zaklad:
void mpz_set(MP_INT *cil,MP_INT zdroj); void mpz_set_ui(MP_INT *cil,unsigned long cislo); void mpz_set_si(MP_INT *cil,signed long cislo); void mpz_set_str(MP_INT *cil,char *cislo,int soustava); (ATD..)Fungujou jako = ale zalezi na tom, z jakeho typu chcete nastavovat(MP_INT, unsigned long nebo string)
mpz_set_str(& blb,"123456789012345678901234567890",10);a je tam!
Existuji i kombinace jako:mpz_init_set,mpz_init_set_ui
atd..
dal jsou mpz_get* fce ktery zase vracej hodnotu nebo ji uriznou kdyz se nevejde
mpz_get_str ma format(string,soutava,velky cislo); na to pozor!
mpz_add, sub, mul, div, mod, divmod, mdiv, mmod, mdivmod, sqrt...
proste se
kouknete do infa...Ma i logicky funxe stylu add,xor atd..
mpz_inp_raw(cislo,FILE *stream)
nacteni byto ze vstupumpz_imp_str
nacteni stringu mpz_out_raw(stream,cislo)
pro vystup atd..vsechny tyto fce jsou i pro mpq_ pak jsou taky ty low level ale ty tu popisovat nebudu
Je to fakt pekna knihovna..moc jsem se zni bavil je rychla a normalne velky cisla delaji velky problemy tady ne.. moc peknej program napsanej pomoci ni je bc je to skvela vec mozna o ni taky neco napisu
Tento soubor je soucasti rozsahle sbirky skolicek na http://www.ucw.cz/~hubicka/skolicky
Take si muzete prohlidnout jeji puvodni textovou podobu
Nebo mi mailnout na hubicka@ucw.cz
Copyright (C) Jan Hubicka 1995