Site Index - Feedback - Impressum |
| |||||||||
|
|
( Archiv ) | ( Neues Thema ) |
18.10.2000 |
Wie und Was: (Bis zu 27) mathematische Standardfunktionen unter REXX aufrufen (von: GA, 11:12:53) | ^ |
Mit folgendem Programm(rumpf) kann man bis zu 27 mathematische Standardfunktionen aufrufen:
/* REXXCALC.CMD */ IF RxFuncQuery("MathLoadFuncs") THEN DO RC = RxFuncAdd("MATHLOADFUNCS","RXMATHFN","MATHLOADFUNCS") IF (RC) THEN DO SAY "RXMATHFN- functions are not accessable" EXIT END RC = MathLoadFuncs("QUIED") END CALL RxFuncAdd "sqrt","RXU","RxuMthsqrt" CALL RxFuncAdd "ceil","RXU","RxuMthceil" CALL RxFuncAdd "exp","RXU","RxuMthexp" CALL RxFuncAdd "frexp","RXU","RxuMthfrexp" CALL RxFuncAdd "floor","RXU","RxuMthfloor" CALL RxFuncAdd "fmod","RXU","RxuMthfmod" CALL RxFuncAdd "rexp","RXU","RxuMthrexp" CALL RxFuncAdd "ldexp","RXU","RxuMthldexp" CALL RxFuncAdd "log","RXU","RxuMthlog" CALL RxFuncAdd "log10","RXU","RxuMthlog10" CALL RxFuncAdd "modf","RXU","RxuMthmodf" CALL RxFuncAdd "pow","RXU","RxuMthpow" CALL RxFuncAdd "sinh","RXU","RxuMthsinh" CALL RxFuncAdd "cosh","RXU","RxuMthcosh" CALL RxFuncAdd "tanh","RXU","RxuMthtanh" CALL RxFuncAdd "asin","RXU","RxuMthasin" CALL RxFuncAdd "acos","RXU","RxuMthacos" CALL RxFuncAdd "atan2","RXU","RxuMthatan2" CALL RxFuncAdd "atan","RXU","RxuMthatan" CALL RxFuncAdd "sin","RXU","RxuMthsin" CALL RxFuncAdd "cos","RXU","RxuMthcos" CALL RxFuncAdd "tan","RXU","RxuMthtan" CALL RxFuncAdd "fabs","RXU","RxuMthfabs" CALL RxFuncAdd "erf","RXU","RxuMtherf" CALL RxFuncAdd "erfc","RXU","RxuMtherfc" CALL RxFuncAdd "gamma","RXU","RxuMthgamma" CALL RxFuncAdd "hypot","RXU","RxuMthhypot" NUMERIC DIGITS 9 /* Liste der mathematischen Funktioen: cos (x) cosine (x), x in radians sin (x) sine (x), x in radians tan (x) tangent(x), x in radians acos (x) arccosine(x),x in radians asin (x) arcsine (x),x in radians atan (x) arctangent(x),x in radians atan2(y,x) arctangent(y/x),x in radians cosh (x) hyperbolic cosine (x) sinh (x) hyperbolic sine (x) tanh (x) hyperbolic tangent (x) ceil (x) smallest integer that is greater than or equal x floor(x) largest integer less than or equal x exp (x) e to power of x (e is natural logarithm base) frexp(x) returns mantissa and exponent of x ldexp(x,y) computes x*(2**y) log (x) natural logrithm of x log10(x) base 10 logrithm of x sqrt (x) square root x erf (x) error function of x erfc (x) computes 1.0 - erf(x): used for large values of x pow (x,y) x to power y (x**y) gamma(x) gamma function of x (ln(|G(x)|)) hypot(x,y) hypotenuse of right triangle of sites x and y fmod(x,y) floating point remainder of x/y modf(x,y) returns fractional and integral parts of x pi() value of pi e() value of e (e is natural logarithm base) max(a,b,c,...) maxmimum value of a,b,c,.... min(a,b,c,...) minimum value of a,b,c,.... abs(x) absolute value of x fabs(x) absolute value of x */ /* Hier folgenden die Anweisungen des Programms */ EXIT Anmerkungen: 1. Es wurden 2 Bibliotheken RXMATHFN.DLL und RXU.DLL verwendet. Die erste findet man als Datei hier: http://www.leo.org/pub/comp/os/os2/leo/rexx/rxmath.zip Die zweite kann man mit ftpsearch(hier im helpdesk) als Datei RXU1A.ZIP finden. 2. Bei der Bibliothek RXU.DLL wurde die Technik angewendet, daß man in RxFuncAdd das erste Argument im Rahmen der Konventionen unter REXX als Namen frei wählen kann. Damit sind die üblichen Namen der Standardfunktionen wie sin(x) im Programm zu verwenden. 3. Funktionen, die nicht mit RXU.DLL geladen wurden, werden entweder mit RXMATHFN.DLL geladen oder sind Standardfunktionen unter REXX. 4. Die Länge der Mantisse(= ANzahl der Stellenzahl nach dem Komma) ist durch die Funktionen der Bibliotheken vorgegeben. Es ist also nicht möglich, mit der Anweisung NUMERIC DIGITS NUM (NUM steht für eine ganze, postive Zahl) die Mantisse der Funktionsergebnisse zu erhöhen. Hinweis: Mit dem Aufruf von NUMERIC DIGITS 15 kann man die Anzahl der zu berechnenden Stellen im Programm auf 15 erhöhen. Mit einem weiteren Aufruf von NUMERIC DIGITS kann man die Stellenzahl wieder herabsetzen. Dies gilt auch für Routinen. Mit wachsender Stellenzahl erhöht sich der Rechenaufwand bez. der Zeit. Es ist also wohl kaum sinnvoll, ein Ergebnis mit 50 Stellen berechnen zu lassen(bis auf bestimmte Ausnahmen). Wer kann Ergänzungen zun dem Thema zeigen? [ Leser: 71 ] |
|
Mit * markierte Felder müssen ausgefüllt werden ! |
( Zeige alle Einträge ) | ( Zur Startübersicht ) |
|
| GA | 71 | 18.10.2000 | 11:12 |
|