Rechnen ohne Limit mit Brüchen, Vorzeichen und bis zu 2 Mrd STELLEN!



  • Rechnen ohne Limit ist eine shared object (*.so) Libary für Linux.
    Durch Rechnen ohne Limit kann man Berechnungen mit Zahlen durchführen, die bis zu 2Mrd Stellen haben können.
    Außerdem werden auch Brüche unterstützt!
    Feature-List:

    -Kann mit Zahlen von bis zu 2 147 483 647 Stellen rechnen.
    -Beherrscht die Multiplikation, Division, Subtraktion und Addition
    -Beherrscht die Abfragen >,<, ==
    -Alle Abfragen und Grundrechenarten können mit Komazahlen umgehen.
    -Bei der Division kann man angeben, nach wie vielen Nachkomastellen abgebrochen werden soll.
    -Das ganze ist als Bibliothek verfügbar.
    -Man kann problemlos frühere Projekte umstellen
    -Negative Zahlen 
    -Brüche
    -einfache Benutzung
    

    Downloaden kann man das ganze hier.(ganz runter scrollen)
    Forum zum Projekt.
    Ich freue mich über Anregung & Kritik!

    etlam



  • Ich hab die library selbst nochnicht getestet, hab aber schonmal ein paar Kritikpunkte:

    1.

    In jedes Programm, das \"Rechnen ohne Limit\" benutzen soll, rol.h einbinden ( #include \"rol.h\" ) - rol.h liegt im Ordner dieses Scripts.

    Warum kopierst du nicht einfach die rol.h in /usr/include ?
    So wie dus auch mit der library machst.

    2.
    Warum kopierst du die library sowohl in /lib /usr/lib und /usr/local/lib
    ich würd mal sagen /usr/lib reicht.

    3.
    Unter welcher Lizens steht den diese Library?
    Falls Open Source (GPL oder ähnliches): Wo bezieh ich den Quellcode her?
    Falls Closed Source: Warum sollte ich nicht gmp benutzten, die ist Open Source :p



  • @etlam
    Entferne die Gänsefüsschen, die die URLs in deiner Signatur einschließen, dann wird das Zeug auch korrekt angezeigt.



  • 2 Mrd. Nachkommastellen == ohne Limit??

    2 Mrd. == Unendlich?

    Nein.. also mit Limit! 😃



  • Storm.Xapek.de schrieb:

    Ich hab die library selbst nochnicht getestet, hab aber schonmal ein paar Kritikpunkte:

    1.

    In jedes Programm, das \"Rechnen ohne Limit\" benutzen soll, rol.h einbinden ( #include \"rol.h\" ) - rol.h liegt im Ordner dieses Scripts.

    Warum kopierst du nicht einfach die rol.h in /usr/include ?
    So wie dus auch mit der library machst.

    Ja, stimmt, gute Idee - Danke - mache ich dann wahrscheinlich in der nächsten version.

    Storm.Xapek.de schrieb:

    2.
    Warum kopierst du die library sowohl in /lib /usr/lib und /usr/local/lib
    ich würd mal sagen /usr/lib reicht.

    Mache ich ja nicht!?

    Storm.Xapek.de schrieb:

    3.
    Unter welcher Lizens steht den diese Library?
    Falls Open Source (GPL oder ähnliches): Wo bezieh ich den Quellcode her?
    Falls Closed Source: Warum sollte ich nicht gmp benutzten, die ist Open Source :p

    Es steht (noch) nicht unter GPL. Ich werde nächstes Jahr nochmal damit bei JugendForscht teilnehmen, danach stelle ich es unter GPL.
    gmp hat glaube ich keine Brüche?
    @BorisDieKlinge:
    Was willst du denn rechnen, wofür du 2Mrd Stellen brauchst? Die gröste Primzahl, hat in etwa 10 Millionen Stellen, und man musste mehrere Monate dafür rechnen... 🙄

    Vielen Dank für die Kritik!

    etlam



  • hehe, 2 zahlen mit 2Mrd stellen passen ja auch kaum in den Ram 😉
    also wenn sie aus ASCII-Basis gespeichert werden. Es ging ja auch nur ums Prinzip, dass es eben doch ein Limit gibt. Ob man das Limit dann erreicht, ist ja was anderes.

    btw: Was hat das denn mit Jugend forscht zun tun? Was forscht man denn da? Ichmein, eigentlich stehen die algorithmen dafür doch fest, oder? ODer hast du da was neues erfunden?



  • Maxi schrieb:

    btw: Was hat das denn mit Jugend forscht zun tun? Was forscht man denn da? Ichmein, eigentlich stehen die algorithmen dafür doch fest, oder? ODer hast du da was neues erfunden?

    Schau mal hier: http://forum.etlamsoft.de/viewtopic.php?f=9&t=12
    und hier: http://www.jugend-forscht.de/
    Jugentliche können dort ihr Projekt einreichen.
    Dann kommen sie zuerst in einen Regionalwettbewerb, können, falls sie gewinnen können sie in den Landeswettbewerb und in den Bundeswettbewerb kommen.
    Man muss nicht umbedingt etwas forschen oder neu erfinden, es heißt nur so...
    Ich kam dieses Jahr mit diesem Projekt in den Landeswettbewerb Hessen.

    etlam



  • etlam schrieb:

    Die gröste Primzahl, hat in etwa 10 Millionen Stellen.

    Stimmt nicht. Gibts unendlich davon. Und kannst unendlich viele davon sehr leicht erzeugen, auch mit > 10 Mio stellen.

    Ansonsten habe vor sowas ähnliches selbst zu programmieren, was aber nur auf ganze zahlen beschränkt sein wird.



  • Was fuer Algorithmen verwendest du denn fuer die Multiplikation und Division?



  • Ich find irgendwie den Download link nicht.

    Ich hatte vor einiger Zeit auch eine Bibliothek gebaut um mit großen Zahlen zu jonglieren. Meine gibt es hier. (Falls irgendwer das einsetzen will bitte melden, dann gibt es bug update.)

    Sind deine 2 Milliarden Festkommazahlen oder Gleitkommazahlen? Wie sieht es mit komplexeren Operationen aus wie zum Beispiel Wurzel ziehen?



  • Also das ganze funktioniert in etwa so, wie ein Mensch auf Papier rechnen würde.
    2Mrd Stellen heißt, das die Zahl aus 2Mrd Zeichen aufgebaut sein darf. (Als Zeichen zählt auch das Komma, der Bruchstrich...).
    Es sind Festkommazahlen.
    Download findet man hier: http://forum.etlamsoft.de/viewtopic.php?f=9&t=10&st=0&sk=t&sd=a&start=10
    Das Installationsscript ist dem letzten Post angehängt.
    Das Installationsscript macht ihr einfach ausführbar und führt es als root aus.
    Das script lädt dann die eigentliche Libary herunter.
    Wurzel gibt es noch nicht, kommt aber zur nächsten Version!

    etlam



  • etlam schrieb:

    Also das ganze funktioniert in etwa so, wie ein Mensch auf Papier rechnen würde.

    Dann ist die Library also noch ausbaufaehig, um es mal diplomatisch auszudruecken :).



  • Achso, eine Sache wundert mich noch: Warum kannst du das ganze nicht unter eine Open-Source-Lizenz stellen, nur weil du an "Jugend forscht" teilnimmst?



  • Naja, weißt du es gibt auch noch Leute die ein Windows haben und keinen Bock haben irgendeinen Bash Port zu installieren nur um mal schnell eine Lib anzuschauen.

    Wie wäre es mit einem Zip mit einem src Verzeichnis wo alle *.cpp Dateien drin liegen, einem include Verzeichnis mit den Headern, ein Readme wo drin steht wie man das ganze benutzt und vielleicht noch ein makefile?

    So hab mir die Adresse mal von Hand ausgelesen.
    http://www.etlamsoft.de/rechnen_ohne_limit/rol_1.4.0.zip

    Die ist in der Tat sehr verbesserungsfähig. Als erstes solltest du dir mal anschauen wie ein Header auszusehen hat. (Stichwort include guards) Danach solltest du dir mal ein geeigneteres Format für Zahlen überlegen. Ein String ist da eine sehr schlechte Wahl.

    typedef string rol;
    extern rol& operator+(rol&,rol&);
    

    Kompiliert das überhaupt? Es gibt doch bereits ein std::string std::operator+(const std::string&, const std::string&). Das muss doch Konflikte geben. Desweiteren glaub ich kaum, dass der Rückgabe-Type kein Bug ist.



  • Doktor Prokt schrieb:

    etlam schrieb:

    Also das ganze funktioniert in etwa so, wie ein Mensch auf Papier rechnen würde.

    Dann ist die Library also noch ausbaufaehig, um es mal diplomatisch auszudruecken :).

    Wenn du Ideen hast, nur her damit 😉
    Ich arbeite natuerlich noch daran und verbessere es.
    Mit "Die groeste Primzahl hat 10Millionen Stellen" meinte ich natuerlich, die groesste bekannte! Primzahl!
    Das ich bei JugendForscht mitmache, ist nicht der Grund dafuer, dass ich jetzt nicht GPL benutze, das ist nur mein Zeitpunkt, zu dem ich das aendere.
    @Ben04 Wieso brauchst du den Pfad zur Zip Datei?
    Benutze doch einfach das Installationsscript?
    Ja, das mit dem include aendere ich und das mit dem string ueberlege ich auch noch einmal.
    Und: Ja, es kompiliert!

    etlam



  • etlam schrieb:

    Mit "Die groeste Primzahl hat 10Millionen Stellen" meinte ich natuerlich, die groesste bekannte! Primzahl!

    Glaub ich nicht so recht. Ich kann noch ne größere ausrechnen.

    edit: http://de.wikipedia.org/wiki/Arithmetik_in_Stellenwertsystemen hilft dir vielleicht für bessere algorithmen.



  • etlam schrieb:

    Benutze doch einfach das Installationsscript?

    [nicht diplomatisch]Es gibt da ein Programm, es nennt sich Windows, welches von einer Minderheit (nur etwa 75%) von Usern eingesetzt wird. Auf dem Laufen keine Bash-Shell Scripts und mit "shared Objects" kann es leider auch nicht umgehen.[/nicht diplomatisch]

    etlam schrieb:

    Ja, das mit dem include aendere ich und das mit dem string ueberlege ich auch noch einmal.
    Und: Ja, es kompiliert!

    Fragt sich nur ob

    std::string a("a"), b("b"), c;
    c = a + b;
    

    noch das tut was man erwartet.



  • Hm das würd mich aber jetzt auch mal interessieren 🙂
    Wäre es nicht besser eine neue Klasse rol zu definieren
    statt "nur" ein typedef?

    Und warum nimmst du überhaupt strings zur Darstellung
    von solchen Zahlen. Das ist doch totale Platzverschwendung!
    Schau dir mal den Link an:
    http://www.uni-leipzig.de/~sma/pi_einfuehrung/langzahlc.html



  • hi,
    schau dir auch mal die Algorithmen von gmp (GNU Multiple Precision) an.
    vg tesu



  • Ben04 schrieb:

    [nicht diplomatisch]Es gibt da ein Programm, es nennt sich Windows, welches von einer Minderheit (nur etwa 75%) von Usern eingesetzt wird. Auf dem Laufen keine Bash-Shell Scripts und mit "shared Objects" kann es leider auch nicht umgehen.[/nicht diplomatisch]

    Wenn du Windows benutzt, geht es eben nicht.
    Entweder legst du dir Linux zu, oder du benutzt es eben nicht...

    Ben04 schrieb:

    Fragt sich nur ob

    std::string a("a"), b("b"), c;
    c = a + b;
    

    noch das tut was man erwartet.

    Hmm, ich aender das noch und machs ohne Typedef...
    @Storm.Xapek.de:
    jA, machs dann mit einer Klasse.
    Den Link kann ich hier nicht oeffnen, blockiert...
    Was steht denn dort?
    Ich machs lieber erstmal ohne andere algorithmen, da ich so erstmal besser noch neue Sachen machen kann. Hinterher aender ich das dann.
    @matimatiker:
    Wenn du groessere Primzahlen ausrechnen kannst, dann reichs bei eef ein und du bekommst 100 000 Euro!!!!
    Bei 1Mrd Stellen bekommst du eine viertel Millionen! 🙄

    Mfg,
    etlaM


Anmelden zum Antworten