Rechengenauigkeit erhöhen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Lutz-Development

Betreff: Rechengenauigkeit erhöhen

BeitragDo, Jan 06, 2005 2:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich bräuchte für mathematische Operationen eine höhere Rechengenauigkeit als Float. Blitz unterstützt von Haus aus jedoch nicht einmal double Crying or Very sad

Gibt es da eine DLL oder ähnliches, dass mindestens Double (oder sogar noch mehr) als Datentyp erlaubt?

Vielen Dank für eure Hilfe.

Gruß,
Thomas
 

Klaas

BeitragDo, Jan 06, 2005 2:39
Antworten mit Zitat
Benutzer-Profile anzeigen
eine DLL dafür kenne ih nicht, aber mit Binären Operationen könnte man eine Präzision weit über einen Double hinbekommen. Es wird wohl nur sehr viel langsamer werden, da die FPU dann nichtmehr im Spiel ist.

Eine Recherche über Logische Schlatungen etc. solte darüber Aufschluss geben.
 

Lutz-Development

BeitragDo, Jan 06, 2005 11:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

danke für die Antwort, aber Geschwindigkeit ist wohl auch unerlässlich. Wie müsste eine DLL aussehen, damit man neue mathematische Funktionen einbauen kann? Oder könnte man sich auch selbst mit Strings da was zusammenbasteln (oder wäre das wieder zu langsam?).

Gruß,
Thomas
 

noir

BeitragDo, Jan 06, 2005 12:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Lutz-Development welche bb version hast du?
wenn du bb3d, bb+ hast kannst du userlibs benutzen.
du könntest dir zwar mit einer dll einen genaueren wert berechnen lassen, aber was bringt es dir? bb kann diesen dann nicht gebrauchen, du könntest ihn dann nur als string oder halt wieder als floatwert zurückgeben.

TheShadow

Moderator

BeitragDo, Jan 06, 2005 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
wird wohl nur mit strings gehen... oder mit 2 integer (=64bit)

du übergibst 2 32-bit-integer an eine DLL
so daraus wird ein double errechnet. damit kannst du machen was du möchtest. Dann kannst du wieder 2 integer zurückliefern... um ergebnis anzuzeigen kannst du es in string umwandeln...

naja alles so ein mischmasch... man muss es sich richtig ausdenken...

bbmax unterstützt doubles übrigens direkt...

PS:
http://de.wikipedia.org/wiki/IEEE_754
http://de.wikipedia.org/wiki/Gleitkommazahl
http://www.telecom.fh-htwchur....tkomma.htm
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

Lutz-Development

BeitragSa, Jan 08, 2005 2:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich habe BB+.

Vielleicht werde ich das ganze implementieren, vielleicht auch nicht - hab nicht mehr so viel Zeit dafür Rolling Eyes

Gruß,
Thomas

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Jan 08, 2005 10:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mir diese String Rechnen Functionen geschrieben,
allerdings sind die nicht optimiert, aber dafür unendlichgenau (was der Rechner so noch schafft)!
hier mal mein Mini Taschenrechner, war nur zu Testzwecken:
http://people.freenet.de/ralli...ionGui.exe

die Speed wird angezeigt in der Statusleiste
beim Teilen wird ein Oberstrich evt für Periode angezeigt zb 39/38

In diesem Prog rechne ich mit der + und - Function die eigens dafür geschrieben worden ist!
http://people.freenet.de/ralli...vHanoi.exe
[BB2D | BB3D | BB+]
 

Lutz-Development

BeitragSa, Jan 08, 2005 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

könnte ich vielleicht die Libs dazu bekommen?

Gruß,
Thomas

stfighter01

BeitragSa, Jan 08, 2005 12:09
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn es für ein spiel ist wo mehr als 100 solcher werte notwendig sind, würd ich mit string-rechenfunktionen gar nicht anfangen.

vielleicht kannst du integer und float kombinieren.

z.b.: über integer berechnest du grob die position und mit float gibst du die position exakt an.
addieren und subtrahieren sollte kein prob. sein, aber frag mich nicht wie man solche mischwerte multipliziert.


mfg stfighter
Denken hilft!
 

Demon

BeitragSa, Jan 08, 2005 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Fixed Point könnte helfen Smile.
Du nimmst einfach Integer und benutzt z.B. die ersten 16 Bit als Vorkommastellen, dann hast du zumindest da 100% Genauigkeit aber nicht die Reichweite wie bei Float.
Don't drink and derive!
 

Lutz-Development

BeitragSa, Jan 08, 2005 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ist kein Spiel, sondern ein Mathe-Programm mit 2D-Ausgabe Wink

Es sind allerdings Millionen von Berechnungen nötig... Crying or Very sad

Gruß,
Thomas

stfighter01

BeitragSa, Jan 08, 2005 13:01
Antworten mit Zitat
Benutzer-Profile anzeigen
wie wärs mit java? Wink
(always use the right tool for the right work)


mfg stfighter
Denken hilft!
 

Lutz-Development

BeitragSa, Jan 08, 2005 13:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich brauche GUI + 2D Ausgabe. Und da habe ich Java zwar ausprobiert, aber wegen der Komplexität verworfen. BlitzBasic hingegen war optimal dafür.

Das Programm steht im Prinzip schon, ich würde mir für manche Rechenoperationen halt eine höhere Genauigkeit wünschen.

Gruß,
Thomas
 

Demon

BeitragSa, Jan 08, 2005 13:09
Antworten mit Zitat
Benutzer-Profile anzeigen
In welchem Zahlenbereich befinden sich deine Rechnungen denn (Anzahl der Vorkommastellen/Nachkommastellen)?
Don't drink and derive!
  • Zuletzt bearbeitet von Demon am Sa, Jan 08, 2005 13:39, insgesamt einmal bearbeitet

stfighter01

BeitragSa, Jan 08, 2005 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ich bin hier zwar im falschen forum um werbung für java zu machen *g*

aber libs für 2D ausgabe und gui unterstützung sowie mathe operationen sind in java voll implementiert.
und soooo komplex ist es auch wieder nicht.

nevertheless, shadow hast schon die besten lösungen gesagt.
wenn dus über dll machst dann schreib am besten die ganze rechenlogik in der dll und übergib nur die benutzer ein- u. ausgabe.
wenn du für jede einzelne berechnung zuerst in string( od. 2integer) umwandelst -> übergibst -> berechnest -> zurückgibst wirst du alt.


mfg stfighter
Denken hilft!
 

Lutz-Development

BeitragSa, Jan 08, 2005 13:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

sicherlich hat Java das implementiert, aber bis ich da die Sachen zusammengesucht hatte, dass die GUI auf Knopfdruck das 2D-Fenster neu zeichnen lässt, bin ich alt geworden Wink

Derzeit verwende ich Float - ansonsten je mehr Nachkommastellen, umso besser - double sollte schon ausreichen. Vorkommastellen nur wenige, 1-2.

Wie schreibt man eine DLL - hab das noch nie gemacht - gibts da irgendwo ein gutes Tutorial dafür?

Gruß,
Thomas

stfighter01

BeitragSa, Jan 08, 2005 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
tutorials gibts im internet, aber dafür benötigst du trotzdem eine andere sprache.
c++ oder irgendsowas.
Denken hilft!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group