Nehme das Angebot gerne an - aber am Besten, wenn wir uns mal im Chat treffen. Bin ja relativ regelmäßig dort.af0815 hat geschrieben:Kann ich dir irgendwie helfen ?
mschnell: Gewünschte Version im Anhang.
Nehme das Angebot gerne an - aber am Besten, wenn wir uns mal im Chat treffen. Bin ja relativ regelmäßig dort.af0815 hat geschrieben:Kann ich dir irgendwie helfen ?
Hmm. Da ist immer noch die globale Zahlenbasis drin. Kann ich auch nicht ausbauen, weil ich da nicht genügend durchblicke.Euklid hat geschrieben:mschnell: Gewünschte Version im Anhang.
Genau. Wie oben erwähnt, wird die für die Division noch benötigt. Wenn man die GNZdiv löscht, wird auch die GNZ_GlobZahlenbasis nicht mehr benötigt.mschnell hat geschrieben:Hmm. Da ist immer noch die globale Zahlenbasis drin.
Die Pascalversion, die ohne Assembler auskommt (dafür aber mit der Zahlenbasis) habe ich extra für dich entfernt, da du ja "nur eine Version" der Routinen in der Unit haben wolltest. Zumindest hatte ich dich so verstanden.Ich bin der Ansicht. Als Basis zur weiteren Bearbeitung brauchen wir eine Version, in der die globale Zahlenbasis als Wert nicht vorkommt (2^64 ist als Wert in keinem Typ darstellbar), sondern nur als in {$if abfragbarer Form mit den beide Möglichkeiten 2^32 und 2^64 also z.B. ist "GNURZBasis64" definiert oder nicht. Dann können wir später den Ausbau auf 64 Bit in Angriff nehmen.
Voll Kompatible Pascal- und ASM-Versionen derselben Funktionen (der "Internal"-Funktionen) sehe ich auch nicht.
Kannst du gerne machen - ich muss aber fairerweise dazu sagen, dass ich momentan wenig Zeit habe, mich um GNURZ zu kümmern. Aber die Unit ist ja OpenSource und kann von jedem weiterentwickelt werden, der Interesse daran hat - das ist der Vorteil von OpenSource. Der Performancegewinn durch Deine Assembler-Routinen ist enormSoll ich die basteln ?
Das ist eine gute Frage! Als ich die GNURZ aus Promathika heraus extrahiert habe, damit sie noch anderen Pascal-Programmierern nützlich sein kann, dachte ich, eine Klassenstruktur wäre das vernünftigste. Allerdings hast du recht, dass dies mit dem Wegfall der Zahlenbasis und der festen Implementierung der Karazubagrenze die Klassenstruktur nicht mehr notwendig ist.Frage: Warum ist das überhaupt eine Klasse ?
Ich will nicht in Deiner Datei 'rumlöschen. Ich warte auf eine Version von Dir, die als Startpunkt für weitere (gemeinsame) Arbeiten (im SVN Archiv) dient. Alles andere ist mir zu chaotisch.Euklid hat geschrieben:mschnell hat geschrieben:Wenn man die GNZdiv löscht, wird auch die GNZ_GlobZahlenbasis nicht mehr benötigt.
Ich habe nichts dagegen, wenn die GNURZ ganz im Sinne von OpenSource weiterentwickelt wird, im Gegenteil. Deswegen ist sie ja OpenSource.mschnell hat geschrieben:Ich will nicht in Deiner Datei 'rumlöschen. Ich warte auf eine Version von Dir, die als Startpunkt für weitere (gemeinsame) Arbeiten (im SVN Archiv) dient.
Die GNURZ ist in seinen Ursprüngen hinsichtlich seiner GNZ-Arithmetik ein sehr sauberes Projekt ohne bekannte Bugs - und das trotz regelmäßigem Einsatz und umfangreicher Prüfung. Das ist alles andere als chaotisch.Alles andere ist mir zu chaotisch.
Wegen einer kleinen Sache stirbt kein Projektmschnell hat geschrieben:Schade dass, das Projekt somit stirbt
Ich wüsste momentan nicht, wie die Variable globale Zahlenbasis komplett (bei der Division) ausgebaut werden könnteEuklid hat geschrieben: Ich habe versucht, die Struktur der GNURZ so aufzubauen, dass sie von anderen Programmierern leicht erweitert werden kann. Dank af's SVN-Zugang wurde endgültig eine Öffnung des Projektes möglich.
Grundsätzlich siehst Du das nicht richtigmschnell hat geschrieben:Natürlich hat NX keine Arrays mit festen Grenzen.
Wenn ich das richtig sehe, muss man bei den NX-Funktionen für jeden Parameter das Datenfeld und die Länge angeben.
Code: Alles auswählen
//======================================
// A := A * B
//======================================
procedure IMul(A,B: PBigInt);
//======================================
// A <- A div B (B is not modified)
// Result := TRUE iff A mod B = 0
//======================================
function IDiv(A,B: PBigInt): Boolean;
Code: Alles auswählen
//===============================
// R := A + B
//===============================
procedure IAddTo(R,A,B: PBigInt);
Hallo mschnell,mschnell hat geschrieben:Hat noch jemand Interesse an dem Thema ?