Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
pzktupel
Anmeldungsdatum: 07.07.2020 Beiträge: 83
|
Verfasst am: 15.07.2020, 17:11 Titel: BigInt und andete Features |
|
|
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
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 |
|
|
hhr
Anmeldungsdatum: 15.07.2020 Beiträge: 88
|
Verfasst am: 15.07.2020, 20:28 Titel: |
|
|
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 |
|
|
pzktupel
Anmeldungsdatum: 07.07.2020 Beiträge: 83
|
Verfasst am: 15.07.2020, 22:08 Titel: |
|
|
Das schau ich mir mal an !
Dickes Lob ! |
|
Nach oben |
|
|
pzktupel
Anmeldungsdatum: 07.07.2020 Beiträge: 83
|
Verfasst am: 16.07.2020, 16:00 Titel: |
|
|
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 ! _________________ Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php |
|
Nach oben |
|
|
pzktupel
Anmeldungsdatum: 07.07.2020 Beiträge: 83
|
Verfasst am: 13.10.2020, 13:08 Titel: |
|
|
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ß _________________ Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 13.10.2020, 23:22 Titel: |
|
|
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 |
|
|
|