Fred wrote: Would be cool if you can point me the list of the integrated GFA commands so i can take a closer look.
As a former official GFA32 betatester, and a not to bad PB coder, i can say you can do at least the same with PB than you could do with GFA 32.
No big runtime needed.
Super small and stable exe's , the GFA32 exe's are unstable as hell.
Here are the mathematical functions....guess Fred maybe needs a translation
Frank Ostrowski wrote:Log(fexp) Berechnet den natürlichen Logarithmus, mathematisch geschrieben als ln fexp, also den Logarithmus zur Basis e, mit e = 2.71828... .
Log10(fexp) Berechnet den dekadischen (Zehner-) Logarithmus, lg fexp. Logarithmus zur Basis 10.
Log2(fexp) Berechnet den dualen (binären, Zweier-) Logarithmus, lb fexp. Logarithmus zur Basis 2
Der Logarithmus einer Zahl x zu einer Basis y ist die Zahl, mit der y potenziert werden muß, um x zu erhalten. Es gilt x = e ^ Log(x) = Exp(Log(x) und x = 2 ^ Log2(x). Für numerische Berechnungen gilt dies nur angenähert wegen der begrenzten Stellenzahl der Ergebnisse. Dies gilt unabhängig von der verwendeten Stellenzahl (7, 15 oder 12000), da die Ergebnisse von Log (meist) irrationale Zahlen sind, also unendliche nicht periodische Dezimalbrüche.
Allgemein läßt sich der Logarithmus zu einer beliebige Basis berechnen durch:
Log zur Basis y (x) = Log(x) / Log(y). = Log2(x) / Log2(y)
(Anmerkung: Log zur Basis y wird normalerweise durch logy x gekennzeichnet, wobei y tiefgestellt ist. Diese Formatierung läßt WinHelp aber nicht immer zu).
Da bei INTEL-Fließkommaarithmetik die Basis 2 bevorzugt wird, ist Log2(x) minimal schneller als die anderen Log-Funktionen.
Die Log-Funktionen sind nur für Zahlen fexp größer 0 definiert, bei negativen Zahlen und 0 gibt es eine Fehlermeldung.
Exp(fexp) Berechnet e ^ fexp, e = 2.71828...
Exp10(fexp) Berechnet 10 ^ fexp
Exp2(fexp) Berechnet 2 ^ fexp
Die Umkehrfunktionen zu den Log-Funktionen (x = Exp(Log(x)).
Als Parameter fexp sind positive und negative Zahlen sowie 0 erlaubt, das Ergebnis ist stets größer als Null. Bei zu großen positiven Zahlen (etwa Exp(10000)) tritt ein Überlauffehler ein, bei zu kleinen negativen Zahlen (Exp(-10000) ein Unterlauf, der zu einem mathematisch unkorrekten Ergebnis von 0 führt.
Potenzierung: x ^ y = Pow(x, y) = Exp(x * Log(y)) = Exp2(x * Log2(y))
Die Potenzierungsfunktionen mit Log und Exp sind nur für positive Exponenten gültig (y > 0), bei ganzzahlig negativen Exponenten ist der ^ - Operator bzw, die Pow() - Funktion zu verwenden. Bei negativem nicht ganzzahligen Exponenten gibt es auch dann eine Fehlermeldung.
Sqrt(fexp) Quadratwurzel (fexp >= 0)
Sqr(fexp) Quadratwurzel (fexp >= 0)
Square(fexp) Quadrat, (fexp * fexp)
Pow(fexp1, fexp2) Berechnet fexp1 ^ fexp2
_j0(fexp) Bessel Funktion 1. Art, 0. Ordnung.
_j1(fexp) Bessel Funktion 1. Art, 1. Ordnung.
_jn(n, fexp) Bessel Funktion 1. Art, n. Ordnung. (n = iexp)
_y0(fexp) Bessel Funktion 2. Art, 0. Ordnung.
_y1(fexp) Bessel Funktion 2. Art, 1. Ordnung.
_yn (n, fexp) Bessel Funktion 2. Art, n. Ordnung. (n = iexp)
Fact (n) Fakultät, berechnet n! (n = iexp)
Combin(n, k) Kombinationen, berechnet n! / k! / (n-k)! (n, k = iexp)
Variat(n, k) Variationen = Permutationen, n! / k! (n, k = iexp)
Permut(n, k) Variationen = Permutationen, n! / k! (n, k = iexp)
Floor(fexp) Berechnet die nächstkleinere ganze Fließkommazahl
Int(fexp) Berechnet die nächstkleinere ganze Fließkommazahl
Fix(fexp) Berechnet die vom Betrag her nächstkleinere ganze Fließkommazahl, also Abschneiden gegen 0.
Trunc(fexp) Berechnet die vom Betrag her nächstkleinere ganze Fließkommazahl, also Abschneiden gegen 0.
Ceil(fexp) Berechnet die nächstgrößere ganze Fließkommazahl
Frac(fexp) Liefert den gebrochenen Anteil eines arithmetischen Ausdrucks, Frac(x) = x - Trunc(x) = x - Fix(x)
Round(fexp) Runden einer Zahl, 4/5 Rundung
FRound(fexp) Runden einer Zahl, 4/5 Rundung (F = Finanz..)
QRound(fexp) Runden einer Zahl, 4/5 Rundung (Q=Quick). Im Gegensatz zu Round und FRound wird hier die im 80x87 vorgesehene Rundung verwendet, die bei exakt gleichem Abstand zu zwei Zahlen (wie bei 100.5 mit 0.5 Abstand zu 100 und 0.5 Abstand zu 101) stets die gerade Zahl wählt (also QRound (100.5) = 100, Round (100.5) = FRound (100.5) = 101). QRound = QuickRound: Weil diese Rundung vom (Ko-)Prozessor direkt durchgeführt wird, ist sie ein wenig schneller.
Round(fexp, n) FRound(fexp, n) QRound(fexp, n)
Runden einer Zahl, 4/5 Rundung, auf n Stellen, n = 0, wie _Round, bei n>0 wird auf n Stellen hinter dem Komma gerundet, bei n < 0 findet die Rundung vor dem Komma statt. Aufgrund der internen Rundungsproblematik bei Fließkommaarithmetik ist das Ergebnis nicht immer exakt.
Abs(fexp) Betragsfunktion
Abs(iexp) Betragsfunktion, bei _minInt falsch
Abs(liexp) Betragsfunktion, bei _minLarge falsch
Abs(curexp) Betragsfunktion, bei _minCur Fehlermeldung
Sgn(exp) Vorzeichen ermitteln, -1 für exp<0, +1 für exp>0 und 0 für 0. (exp = fexp, iexp, liexp oder curexp) Rückgabewert ist iexp.
Spezialfunktionen:
Diese Funktionen sind für die Benutzung in speziellen Arithmetik-Programmen vorgesehen. Zahlen im intern verwendeten Double-Format bestehen aus einer Mantisse von 52 Bits sowie einem binären Exponenten von 11 Bit und Vorzeichen. Das Vorzeichen läßt sich mit Sgn und Abs behandeln. Zur Trennung der Mantisse und des Exponenten gibt es Funktionen (Mant und GetExp) sowie eine Funktion zur Kombination von Mantisse und Exponent (LdExp).
Mant(fexp) Diese Funktionen ermittelt die Mantisse, also die Zahl zwischen 0.5 und 1.0, die sich durch Multiplikation mit (Division durch) einer Potenz von Zwei ergibt.
GetExp(fexp) Diese Funktion ermittelt den entsprechenden Exponenten der Zweierpotenz.
LdExp(n, fexp) Kombination von Mantisse und Exponent. Wegen der internen Zahlendarstellung im Binärformat ist eine Multiplikation mit einer Zweierpotenz besonders einfach durchführen. LdExp(n, x) entspricht x * 2 ^ n, ist aber etwas schneller.
Winkel Funktionen
Alle Winkelfunktionen sind Fließkommafunktionen, Parameter und Ergebnis sind Fließkomma.
Sin(fexp) Die Sinusfunktion, fexp ist im Bogenmaß
Cos(fexp) Die Cosinusfunktion, fexp ist im Bogenmaß
Tan(fexp) Die Tangensfunktion, fexp ist im Bogenmaß
Asin(fexp) Die Inverse zur Sinusfunktion, -1.0 <= fexp <= 1.0.
Acos(fexp) Die Inverse zur Cosinusfunktion, -1.0 <= fexp <= 1.0.
Atan(fexp) Die Inverse zur Tangensfunktion.
Atn(fexp) Die Inverse zur Tangensfunktion (genau wie Atan).
Atan2(fexp1, fexp2)
Die Inverse zum Tangens, entspricht Atn(fexp1 / fexp2), ohne Division (mit Fehlermöglichkeit bei fexp2 == 0).
SinH(fexp) Hyperbolischer Sinus
CosH(fexp) Hyperbolischer Cosinus
TanH(fexp) Hyperbolischer Tangens
ArSinH(fexp) Hyperbolischer Area Sinus
ArCosH(fexp) Hyperbolischer Area Cosinus
ArTanH(fexp) Hyperbolischer Area Tangens
_Hypot(fexp1, fexp2)
Hypothenusenlängenbestimmung, ergibt Sqr(fexp1 * fexp1 + fexp2 * fexp2), also die Quadratwurzel aus der Summe der Quadrate zweier Zahlen, nach Pythagoras also die Länge der Hypothenuse in einem rechtwinkligen Dreieck.
Anwendungsbeispiel ist die Umrechnung kartesischer (der normalen Rechteck-) Koordinaten in Polarkoordinaten: Winkel = Atan2(x, y) : Radius = _Hypot(x, y)
Deg(fexp) Umwandlung Bogenmaß nach Grad, wie (fexp * 180 / pi)
Rad(fexp) Umwandlung Grad nach Bogenmaß, wie (fexp * PI / 180)