Wirklich lange zahlen multiplizieren.



  • Hi
    ich hab da ein riesen-problem.mein programm soll 2 long zahlen multiplizieren.es dürfen jedoch weder potenzen noch unsinnige werte rauskommen. da das ergebnis weiterbearbeitetwird. mein work-around bis jetzt war es eine der zahlen durch 1000 zu teilen,ist aber sehr ungenau und nicht besonders elegant. gibt´s auch einen größeren datentyp ?
    die zahlen sind z.b: 14399823 * 16476 bzw. 670434682 * 10747991880.
    Das MUSS doch irgendwie gehen,ich dachte computer sind riesige rechenmaschienen.
    thx.

    //ich benutze den gcc bzw g++ unter linux



  • long long oder GMP



  • selber bauen

    struct mylong{
    long hi;
    long med;
    long low
    }



  • @jeff.
    nix verstehen..
    an selber bauen hab ich auch schohn gedacht in dem ich die zahlen zerlege,mir ist aber nix praktikables eingefallen..was meinst du mit long hi,long med.. ?
    thx



  • was heisst es duerfen keine potenzen rauskommen? wann ist eine zahl eine potenz? wenn sie sich als potenz darstellen laesst? dann ist jede eine mit exponent 1.

    was du brauchst, wenn ein verzicht auf genauigkeit mit double nicht moeglich ist, nennt sich "arbitrary precision library".

    und jeff meint einfach eine zahl zu basteln, die so lang wie 3 longs ist, mit den hoeherwertigen bits in hi, den "mittelwertigen" in med und den niederwertigen in lo.



  • Du kannst auch ne Zahl durch ein Bitfeld mit der Laenge deiner Wahl darstellen ....
    Zum Zuweisen dann einfach die = Operatoren fuer long ULongLong usw. ueberladen.
    DIch dann mit nem Buch ueber Hexadezimale rechenoperationen in ner stillen kammer einschliessen und die + - * / ^ Operatoren fuer deine neuen DatenTyp / (Deiner Klasse) selber implementieren. Dann bist wirklich sehr variabel mit der Groesse ! und sicher auch sehr grosszigueg mit der rechenpower 🙂

    Langen dir fuers erste 64 bit grosse integers ... dann schau dir den Datentyp LongLong / ULongLong (windows.h) an oder INT_64 UINT_64.

    Und irgendwo im (inet)universum findest bestimmt auch ne Library, die Dir die rudimentaeren Rechenoperationen fuer den Typ zur verfuegung stellt. Ich glaub zumindest multiplication und division geht mit den typen ned so einfach ... habs aber auch noch nie so gebraucht ...

    Ciao ...

    [ Dieser Beitrag wurde am 04.07.2003 um 17:19 Uhr von RHBaum editiert. ]



  • Ehm, RHBaum... Was nützt ihm die windows.h unter Linux?



  • Hi

    Schau dir das mal an: [url] http://indigo.ie/~mscott/ [/url]
    Hab ich schon mit gearbeitet und ist gut.


Anmelden zum Antworten