Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

BigInt und andete Features

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
pzktupel



Anmeldungsdatum: 07.07.2020
Beiträge: 39

BeitragVerfasst am: 15.07.2020, 16:11    Titel: BigInt und andete Features Antworten mit Zitat

Hallo liebes Forum, ich habe ein neues Anliegen !

1. Wenn man unter FB 32bit durch ULongInt Zahlen bis 2^64-1 halten konnte, warum überträgt man nicht längst diese Methode auf 64 bit , analog 2^128-1 UIntegers ?

2. Es gibt unter FB wie C++ usw Biblotheken, die mit sehr großen Zahlen, Primzahltests, MOD-Funktionen arbeiten können.

Wie kann ich das an einem einfachen Bsp nachfolziehen ?

Meine was von LargeInt.bi gelesen zu haben und dann diese unzähligen mpz-Befehle dazu. Ich würde gerne mal mich da reintasten lächeln

Was muss ich laden und wie könnte ich zum Bsp. mit welchen Befehlen

2^1009 MOD 1013 berechnen

oder auch
8974981274897281974861278467812647821687368173981 MOD 11391719911

bzw. Primzahltests (Fermat/RM-Test)

Ich mache sowas etweder über externe Programme oder splitte das auf UInterbereich runter.

Allgemein wird sowas wohl über Zeichenketten realisiert und ist darauf optimiert...


Vielen Dank !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hhr



Anmeldungsdatum: 15.07.2020
Beiträge: 16

BeitragVerfasst am: 15.07.2020, 19:28    Titel: Antworten mit Zitat

Zwei Adressen:

https://www.freebasic.net/forum/viewtopic.php?f=14&t=25082&p=224933&hilit=Big+Int+overload.bi#p224933

https://drive.google.com/uc?export=download&id=0BwDGv21nAMiVcWx1Z19DWnVZbXc

Big-Int overload.bi in den inc-Ordner kopieren.
libbig_int.a in den entsprechenden lib-Ordner kopieren.

Ein Beispiel:
Code:

#include "Big-Int overload.bi"

Operator Mod Overload (Byref n As bigint, Byref m As bigint) As bigint
Dim As bigint result
If big_int_mod( n.numptr, m.numptr, result.numptr)=0 Then
    Operator=result
Else
    Operator=-1
    Print "mod failed"
End If
End Operator

Dim As bigint p=bigint(2)^1009

Print p
Print
Print p-(p/1013)*1013
Print p Mod 1013
Print

Print bigint("8974981274897281974861278467812647821687368173981") Mod bigint("11391719911")

Dim As bigint a,b,q,r
a="8974981274897281974861278467812647821687368173981"
b="11391719911"
q=a / b
r=a Mod b
Print q
Print r
Print b*q+r

Print "Ende mit beliebiger Taste..."
Sleep
'
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pzktupel



Anmeldungsdatum: 07.07.2020
Beiträge: 39

BeitragVerfasst am: 15.07.2020, 21:08    Titel: Antworten mit Zitat

Das schau ich mir mal an !

Dickes Lob !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pzktupel



Anmeldungsdatum: 07.07.2020
Beiträge: 39

BeitragVerfasst am: 16.07.2020, 15:00    Titel: Antworten mit Zitat

Habe heute mal etwas herumprobiert, muss aber einräumen, das meine benötigten Ersatzberechnungen dazu doch schneller arbeiten. Ich weiß, das
es im Hintergrund nur mit Strings geht, aber über Felder mit Integer-Werten ist doch erheblich schneller.

Abgezielt war eben, ob BigInt-Berechnungen schneller arbeiten bei:

Man berechne als Bsp. INT(10^1399\30030) = X , Y= X MOD P , P bis zu 20 Mrd.

Soll aber nicht heißen, dass die mir anderen unbekannten Dinge nicht doch besser sind. Ich bleib aber hier, um mehr Fragen zu stellen, wenn mal wieder was zu fragen ist !

Sehr hilfsbereites Forum ! lächeln
_________________
Zum Primzahl k-Tupel Thread
https://matheplanet.de/matheplanet/nuke/html/viewtopic.php?topic=232720&start=0
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pzktupel



Anmeldungsdatum: 07.07.2020
Beiträge: 39

BeitragVerfasst am: 13.10.2020, 12:08    Titel: Antworten mit Zitat

Ich möchte nochmal auf die 1. Frage zurückkommen.

Während man unter 32bit mit dem Befehl ULONGINT eine 64bit Zahl händeln konnte, wieso ist unter 64Bit nicht eine 128Bit Zahl mit selbigen Verfahren machbar ?
Ich meine nicht die Nutzung von BigInt.

Gruß
_________________
Zum Primzahl k-Tupel Thread
https://matheplanet.de/matheplanet/nuke/html/viewtopic.php?topic=232720&start=0
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1867
Wohnort: D59192

BeitragVerfasst am: 13.10.2020, 22:22    Titel: Antworten mit Zitat

Hi,
so bleibt FB auf Prozessoren ohne 128Bit Register nutzbar.
Die Notwendigkeit 128Bit Zahlen zu verarbeiten scheint gering.
Wer es möchte kann entsprechende Librarys benutzen.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz