Test der DM-internen Funktionen und Berechnungen von arithmetischen Ausdrücken Teil I Diese Zusammenstellung enthält die Testrechnungen zu den internen, aufrufbaren Funktionen von DM und die Tests zur Berechnung von arithmetischen Ausdrücken. Auch die hier noch nicht aufgeführten Funktionen sind natürlich getestet worden, jedoch hier noch nicht dokumentiert. Oft werden Vergleiche mit Mathematica und/oder Numerical Recipes benutzt. In anderen Fällen werden die Funktionsdefinitionen im Taschenrechner in DM eingegeben und so verglichen. Berechnungen in DM werden immer in der vorgegebenen Weise durchgeführt. DM ist nicht in der Lage, Vereinfachungen, z. B. bei LN(EXP(X))-1, durchzuführen. Das gefundene Ergebnis 0 für den Ausdruck ist daher ein Test für den Logarithmus und die Exponentialfunktion. Die Tests wurden i. a. mit den DM-T aschenrechner durchgeführt. Der Taschenrechner ist i. a. auf Festkommaausgabe eingestellt. Hinter dem Gleichheitszeichen ist das jeweilige Ergebnis der Berechnung in DM oder Mathematica angegeben. Die Funktionen sind in alphabetischer Reihenfolge der DM-Funktionsnamen aufgeführt, wobei einige Funktionen, z. B. SIN, COS und TAN unter dem ersten Namen zusammengefasst sind und auch BINK, BINV und KBNV stehen hintereinander. Teil I beschreibt in der angegebenen Reihenfolge: Allgemeine arithmetische Ausdrücke Ausgabemöglichkeiten im Taschenrechner Grad/Bogenmaß F(X) holen -----------------ABS: Absolutwert eines reellen Arguments ABSK: Absolutwert eines komplexen Arguments AGM: Arithmetisch-geometrischer Mittelwert ASIN: Arkussinus ACOS: Arkuscosinus ATAN: Arkustangens ARSI: Areasinus ARCO: Areacosinus ARTA: Areatangens ATAZ: Arkustangens mit zwei Argumenten BERN: Bernstein-Polynome BINK: Binomialkoeffizienten BINV: Binomialverteilung KBNV: Kumulierte Binomialverteilung CEIL: Kleinste ganze Zahl $Argument DIV: Ganzzahldivision EPHI: Eulersche N-Funktion EXP: Exponentialfunktion FAK: Fakultät FFAK: !!-Fakultät FIBZ: Fibonacci-Zahlen FLOR: Größte ganze Zahl # Argument GGT: Größter gemeinsamer Teiler HARM: Harmonische Reihe INT: Abschneiden der Nachkommstellen INTG: Integral KFFR: Realteil der Kugelflächenfunktion KFFI: Imaginärteil der Kugelflächenfunktion Teil II enthält in der angegebenen Reihenfolge: KGV: KRON: LEG: ALEG: LN: LOG: LOGB: LUCF: NINT: MAX: MIN: MOD: MODO: MORS: NPRI: PIPR: PIPZ: POIS: POCH: PROD: PSFR: PSFS: SIGN: SIN: COS: TAN: SINH: COSH: TANH: SINC: SPGT: SPGE: SPLT: SPLE: STIE: STIZ: SUM: TEFU: TEZA: PTZA: WOSZ: WWAS: Kleinstes gemeinschaftliches Vielfaches Kronecker-Symbol Legendre-Polynome Assoziierte Legendre-Polynome Natürlicher Logarithmus Logarithmus zur Basis 10 Logarithmus zur Basis B Lucas-Folge Nächste ganze Zahl Größere von zwei Zahlen Kleinere von zwei Zahlen Mod-Funktion Modulo-Funktion Morse-Funktion N-te Primzahl Zahl der Primzahlen bis zum Argument Zahl der Primzahlzwillinge bis zum Argument Poissonverteilung Pochhammersymbol Endliche und unendliche Produkte Partielle Siebfunktion, rekursive Methode Partielle Siebfunktion, Siebmethode Signum-Funktion Sinus Cosinus Tangens Sinus hyperbolicus Cosinus hyperbolicus Tangens hyperbolicus Sinc-Funktion Sprungfunktion Sprungfunktion Sprungfunktion Sprungfunktion Stirlingzahlen 1. Art Stirlingzahlen 2. Art Endliche und unendliche Summen Teilerfunktion Teilerzahl Primteilerzahl Wellenfunktion des harmonischen Oszillators Wellenfunktion des Wasserstoffatoms Allgemeine arithmetische Ausdrücke Rückgabe des Eingabestrings Alles in Großschreibung: Entfernung führender “+”-Zeichen: Entfernung von Leerzeichen: Linksbündige Rückgabe: sIn(1.2e2) => SIN(1.2E2) +7*DIV(+5,+2)+1.0E+2 => 7*DIV(5,2)+1.0E2 7 * DI V(5 , 2 ) => 7*DIV(5,2) | 2+3 => |2+3 Übernahme von Zahlen 5=5 +5 = 5 -5 = -5 2.3 = 2.3 -2.3 = -2.3 0.01E+2 = 1 0.01E-2 = 0.0001 X = 5, X = 2.3, X = -2.3, X = 1, X^2+2*X = 35, 1,234 1.23*10^2 = 123 wenn X = 5 gesetzt ist. wenn X = 2.3 gesetzt ist. wenn X = -2.3 gesetzt ist. wenn X = 0.01E+2 gesetzt ist. wenn X = 5 gesetzt ist. Fehlermeldung Entspricht in DM keiner bloßen Zahleneingabe, sondern ist ein Produkt von 1.23 und 10^2, das korrekt ausgewertet wird. Klammern 2*(3+4) = 14 (3+4)*2 = 14 (((1+2)*3+4)*5+6)*7 = 497 (2*(3+4)-3*(4+5))*6 = -78 SIN(PI/2+PI/2)*3 = 0 Rechnung im Bogenmaß Grundoperationen 2+3 = 5 2+(-3) = -1 -2+3 = 1 2.1+3.2 = 5.3 2.1+3.2E10 = 32000000002.099999 bei 6-stelliger Ausgabe 2.1+3.2E-10 = 2.100000000320 bei 12-stelliger Ausgabe 1+1.E-15 = 1.000000000000001 bei 15-stelliger Ausgabe 2-3 = -1 -2-3 = -5 -2-(-3) = 1 2.1-3.2 = -1.1 2.1-3.2E10 = -31999999997,900002 bei 6-stelliger Ausgabe 2.1-3.2E-10 = 2.099999999680 bei 12-stelliger Ausgabe 2-3+2 = 1 Abarbeitung von links 1-1.E-15 = 0.999999999999999 bei 15-stelliger Ausgabe 2*3 = 6 (-2)*3 = -6 (-2)*(-3) = 6 3.E10*3.E-10 = 9 2 X statt 2*X Ist in DM nicht erlaubt: Fehlermeldung 2/3 = 0.6666666 2/(-3) = -0.6666666 -2/3 = -0.6666666 (-2)/3 = -0.6666666 2/3*2 = 1.3333333 Abarbeitung von links 1.234E100/1.234E-100 = 1.E200 2/3*3/2 = 1 1/(1-1.E-15) = 1.000000000000001 bei 15-stelliger Ausgabe Priorität 2+3*4 = 14 2-3/4 = 1.25 (2+3)*4 = 20 2*3^4 =162 8/2^3 = 1 2^(1+2) = 8 2^(2*3) = 64 SIN(PI/2)*2 = 2 im Bogenmaß 2^3^4 = (2^3)^4 = 4096 Abarbeitung von links 1 bis 4 Argumente SIN(PI/2) = 1 MODO(10,4) = 2 SUM(1,10,J) = 55 KFFR(5,2,0.5,0.2) = 0,41262.... Im Bogenmaß Mathematische Konstanten PI = 3.141592653589793 GS = 1.618033988749895 GS-(1+SQRT(5))/2 = 0 BG = 180/PI = 57.295... GB = PI/180 = 0.017453.... CATK = 0.915965594177219 EULK = 0.577215664901532 INF = 1.E306 NINF = 2147483647 Rechnet Bogenmaß in Grad um Rechnet Grad in Bogenmaß um Catalansche Konstante Eulersche Konstante Liegt knapp unter der größten darstellbaren Real*8-Zahl Größte darstellbare INTEGER*4-Zahl Naturkonstanten KME = 9.1093897E-31 KMP = 1.6726231E-27 KMN = 1.6749286E-27 KGR = 6.67259E-11 KGE = 2.002319304386 KEP = 8.854187816E-12 KBR = 5.29177249E-11 KRY = 1.0973731534E7 KMU = 12.56637061435917D-7 KBM = 9.2740154E-24 KKM = 5.0507866E-27 KT = 273.15 KH = 6.6260755E-34 KE = 1.60217733E-19 KG = 9.80665 Ruhemasse des Elektrons Ruhemasse des Protons Ruhemasse des Neutrons Gravitationskonstante Landé-Faktor des freien Elektrons Dielektrizitätkonstante des Vakuums Bohrscher Radius Rydbergkonstante Permeabilität des Vakuums Bohrsches Magneton Kern-Magneton Nullpunkt der Celsiusskala Wirkungsquantum Elementarladung Erdbeschleunigung Goldener Schnitt KA = 6.0221367E23 KK = 1.380658E-23 KF = 9.6485309E4 KR = 8.314510 KC = 299792458.0E0 KS = 5.67051E-8 Avogadrosche Konstante Boltzmannkonstante Faradaykonstante Gaskonstante Vakuumlichtgeschwindigkeit Stefan-Boltzmann-Konstante Einige Zusammenhänge zwischen den Naturkonstanten KR/KK/KA . 1 Boltzmannkonstante/Gaskonstante KF/KA/KE . 1 Faradaykonstante KMU/(4*PI*10^(-7) . 1 Permeabilität des Vakuums KEP*KH^2/(PI*KME*KE^2)/KBR . 1 Bohrscher Radius KE^4*KME/(8*KEP^2*KH^3*KC)/KRY . 1 Rydbergkonstante KKM/KBM*KMP/KME . 1 Magnetonverhältnis KEP*KMU*KC^2 . 1 Dielektrizitätkonstante des Vakuums PI^2*KK^4/(60*(KH/2/PI)^3*KC^2)/KS . 1 Stefan-Boltzmann-Konstante Ausgabemöglichkeiten im Taschenrechner Die Ergebnisse der Berechnungen können im Gleitkomma-, Festkomma- oder Ganzzahlformat ausgegeben werden. Bei der Ausgabe als Gleitkommazahl bestehen kaum Beschränkungen. Die größte ausgebbare Zahl ist ±9.99E306. Die kleinste ist etwa ±3.0E-308. Es sind bis zu 15 Nachkommastellen ausgebbar, da eine REAL*8Zahl keine größere Genauigkeit hergibt. Wird die Nachkommastellenzahl auf Null gesetzt, so wird der Dezimalpunkt nicht ausgegeben, d. h. es entsteht dem Aussehen nach eine ganz Zahl. Bei der Ausgabe als Festkommazahl bestehen gewisse Beschränkungen. Ab 1.0E20 würden & insbesondere bei der Ausgabe mit vielen Nachkommastellen & sehr lange Zahlen entstehen, von denen die letzten Ziffern wegen der beschränkten Genauigkeit der REAL*8-Zahlen auch falsch sind. Die Ausgabe wird daher über 1.0 E 20 auf die Gleitkommadarstellung umgeschaltet. Auch vorher entstehen schon unsinnige Ziffern am Ende der Zahlen, z. B. ergibt 1.234567890123E19 12345678901230000128.00 bei 2 Nachkommastellen. Ein ähnliches Problem entsteht bei der Festkommaausgabe von sehr kleinen Zahlen durch die große Zahl führender Nullen. So ergibt 1.0E-16 bei der Festkommaausgabe mit 15 Nachkommastellen eine Null. Der Taschenrechner-Algorithmus belässt dieses unter den Bedingungen korrekte Ergebnis. Eine Ganzzahlausgabe erreicht man mit der Festkommaausgabe und 0 Nachkommastellen. Bei der Ausgabe von nichtganzen Zahlen wird gerundet. Das Komma wird bei dieser Darstellung unterdrückt Tests Bei den Tests wird keine Berechnung ausgeführt, sondern einfach die interessierende Zahl eingegeben und “Ausführen” angeklickt. Gleitkommamodus mit 6 Nachkommastellen 9.99E306: 9.990000e+306 -9.99E306: -9.990000e+306 1.0E307: Fehlermeldung des Taschenrechners -1.0E307: Fehlermeldung des Taschenrechners Versuch mehr als 15 Nachkommastellen einzustellen: wird verhindert. Ausgabe mit 15 Nachkommastellen im Festkommamodus 1.234567890123456: 1.234567890123456 Ausgabe mit 0 Nachkommastellen im Festkommamodus 1.49: 1 1.50: 2 -1.49: -1 -1.50: -2 1.234567890123456E19: 12345678901234558976, dazu siehe oben Grad/Bogenmaß Einstellung Bogenmaß: SIN(PI/2) = 1 SIN(GB*90) = 1 SIN(GB*45) - SQRT(2)/2 = 0 ASIN(0.5) - PI/6 = 0 Einstellung Gradmaß: SIN(90) = 1 SIN(BG*PI/2) = 1 SIN(45) - SQRT(2)/2 = 0 ASIN(0.5) - 30 = 0 F(X) holen Längeren Ausdruck in Datenein/ausgabe/Berechnen eingeben und eine Berechnung ausführen (!!). Der Ausdruck wird ohne ‘Y =’ in den Taschenrechner übernommen. ABS(ARG) Hier wird die Standardfunktionen ABS von Fortran benutzt. ABS(5.1) = 5.1 ABS(-5.1) = 5.1 ABS(0) = 0 ABSZ(ARG1,ARG2) ABSZ(ARG1,ARG2) berechnet den Absolutwert SQRT(ARG1^2 + ARG2^2) der komplexen Zahl ARG1 + ARG2@i. ABS(3,4) = 5 ABS(-3,4) = 5 ABS(0,0) = 0 AGM (ARG1,ARG2) AGM(ARG1,ARG2) ergibt den arithmetisch-geometrischen Mittelwert. Dieser ist durch folgende Iteration definiert: a 0 = ARG1, b0 = ARG2 und a n+1 = (a n + bn)/2, bn+1 = SQRT(a n ( bn) bis a n+1 = bn+1 mit ausreichender Genauigkeit. In DM wird die ausreichende Genauigkeit durch die Abfrage a n+1 .EQ. bn+1 sichergestellt. Ist das Vorzeichen von ARG1 und ARG2 negativ, wird bei der W urzel der negative Wert benutzt. Bei der Berechnung selbst wird mit den Absolutwerten gerechnet und dann mit -1 multipliziert. Jede Iteration führt zu einem Verlust an Genauigkeit. Bei kleinen relativen Unterschieden in den Argumenten geht die Iteration mit wenigen Schritten: 1000000 und 1000001 liefern im nächsten Schritt 100000.5 und 1000000,499999875, d. h. schon fast das Endergebnis. Längere Iterationen entstehen, wenn die Zahlen weit auseinander liegen, z. B. 1 und 1000000. Das ergibt im nächsten Schritt 500000.5 und 1000. Das arithmetische Mittel geht langsam nach unten, während der geometrische Mittelwert schnell nach oben geht: Der Exponent des Verhältnisses halbiert sich bei jedem Schritt. Einige mit Mathematica bestimmte Werte ARG1 ARG2 AGM 1 2 1,456 791 031 046 906 87 1 1000 189,388 302 409 950 876 1 10 8 7 930 521 033 434 531 1 0.1 0.001 0,026 216 688 720 224 923 -ARG1 -ARG2 -AGM(ARG1,ARG2) ARG1 ARG1 ARG1 0 ARG1 0 0 0 0 DM findet identische Werte. Unterscheiden sich die Argumente im Vorzeichen, wird eine Fehlermeldung ausgegeben. ASIN, ACOS und ATAN Hier werden die Standardfunktionen ASIN, ACOS und AT AN von Fortran benutzt. Steht die Checkbox auf Grad, wird mit BOGGRAD multipliziert. Bei ASIN und ACOS darf der Absolutwert des Arguments nicht größer als 1 sein –> Fehlermeldung. Tests im Bogenmaß: Ergebnis jeweils mit 15-stelliger Genauigkeit ASIN(1) - PI/2 = 0 ASIN(SIN(1.0)) = 1 ASIN(SIN(-1.0)) = -1 ASIN(PI/2.0) - 1 = 0 ASIN(-PI/2.0) + 1 = 0 ASIN(SIN(X)) - X = 0 mit X = krummer Wert größer/kleiner als 0 ASIN(X) + ACOS(X) - PI/2 ACOS(0) - PI/2 = 0 ACOS(1) = 0 ACOS(-1) + PI/2 = 0 ACOS(COS(X)) - X = 0 für krummes X > 0 bis Pi ATAN(1) - PI/4 = 0 ATAN(-1) + PI/4 = 0 2*ATAN(X)-ATAN(2*X/(1-X^2)) = 0 für X = 0.2 und -2*^10 -16 für X = 0.9 Tests im Gradmaß: ASIN(1) = 90 ASIN(-1) = -90 ASIN(SIN(60.0)) - 60 = -7*10 -15 ASIN(X) + ACOS(X) - 90 = 0 für X = krummer Wert ACOS(COS(60)) - 60 = 0 ATAN(1) - 45 = 0 ATAN(-1) + 45 = 0 2*ATAN(X)-ATAN(2*X/(1-X^2)) = 3*10 -15 für X = 0.2 und 0 für X = 0.9 Alle diese Tests werden erfüllt. ARSI, ARCO und ARTA Die Berechnung der Area-Funktionen erfolgt in DM mit Hilfe der bekannten logarithmischen Darstellungen der Area-Funktionen. Bei negativen Argumenten wird ARSI mit dem absoluten Argument berechnet und das Vorzeichen umgedreht. Tests mit Hilfe der Umkehrfunktionen: ARSI(SINH(X))-X = 0 für |X| < 700. ARCO(COSH(X))-X = 0 für 0 # X < 700. ARTA(TANH(X))-X = 0 für |X| < 10. Bei größeren X-Werten wird TANH(X) fast 1 und ARTA divergiert für X 6 1; das Ergebnis der Berechnung wird daher schnell ungenau. Oberhalb von X = 20 wird TANH innerhalb der Rechengenauigkeit 1 und es wird eine Fehlermeldung ausgegeben. Ein Vergleich mit Werten nach Mathematica: ARSI(0.5) = 0.481211825059603 ARSI(-0.5) = -0.481211825059603 ARCO(1.5) = 0.962423650119207 ARTA(0.5) = 0.549306144334055 ARTA(-0.5) = -0.549306144334055 Diese Werte werden von DM reproduziert. ATAZ Arkustangens mit zwei Argumenten: ATAZ()Y,)X). Das Ergebnis ist arctan()Y/)X) und liegt im Bogenmaß zwischen -PI und +PI. )Y und )X 0 = ist nicht erlaubt –> Fehlermeldung. Es wird die StandardfortranFunktion ATAN2 benutzt. Tests im Bogenmaß Ergebnis mit 15-stelliger Genauigkeit ATAZ(0.1,0) - PI/2 = 0 ATAZ(0.1,0.1) - PI/4 = 0 ATAZ(0.1,-0.1) - 3*PI/4 = 0 Tests im Gradmaß Ergebnis mit 15-stelliger Genauigkeit ATAZ(0,0.1) = 0 ATAZ(0.1,0) = 90 ATAZ(0,-0.1) = 180 Das ist so entsprechend der Fortrandefinition ATAZ(-0.1,0) = -90 ATAZ(0.1,0.1) = 45 ATAZ(-0.1,-0.1) = -135 ATAZ(0.1,-0.1) = 135 BERN(i,n,X) Berechnet das i. Bernstein-Polynom vom Grad n zum Argument X. Definition: Diese Definition wird für die Berechnung benutzt. Es entstehen keine Probleme durch Subtraktionen. Tests: i und n müssen ganzzahlig sein. n größer gleich 0. n wird in DM nach oben auf 1000 beschränkt. i < 0 und i > n müssen BERN = 0 ergeben . Das Argument X muss zwischen 0 und 1 liegen. Sonderfälle: X = 0 und i = 0 und entsprechend X = 1 und n = i sind nach der Definition unbestimmt; die Rekursion: und der Grenzwert ergeben eine 1; daher gibt DM auch eine 1 aus. Mathematica kennt die Bernsteinpolynome nicht. Daher müssen eigene Test verwendet werden. Die Summe der Bernsteinpolynom-Werte über alle i zu einem beliebigen t muss 1 ergeben. Daher: SUM(0,6,BERN(J,6,0.37)) = 1 Dito mit n = 60 und 600 und t = 0, 0,97 und 1. Die Maxima der Bernsteinpolynome liegen bei i/n: Test mit der Extremalroutine von DM für BERN(i,4,X) für alle i. Dabei ergeben sich verstandene Probleme für die Fälle i = 0 und i = 4, d. h. an den Grenzen des Definitionsbereichs. Schwierigere Fälle: Maximum von BERN(30,600,X): 0.05 BERN(3,600,X) mit Schrittweite 0.001: 0.005 BERN(597,600,X) mit Schrittweite 0.001 und Startwert 0.99: 0.995. Ist man in den letzteren Fällen zu weit vom Maximum weg, so ist der Wert des Bernsteinpolynoms de facto 0! Vergleich mit einem der einfachen Bernsteinpolynome. Z. B. ist . Man bildet im Taschenrechner die Differenz dieser beiden Ausdrücke für einige t-Werte. Es entstehen Differenzen von einerseits 0 und auch Werten zwischen 10 -17 und 10 -26. BINK(N,K) Berechnet die Binomialkoeffizienten N über K. Aufruf BINK(N,K). Definition: BINK(N,K) = N!/(K! (N-K)!) Beschränkungen: N und K ganzzahlig und größer gleich 0, sonst Fehlermeldung. In Übereinstimmung mit Mathematica ist: BINK(5,0) = 1 wegen 5!/(0! 5!) = 5!/5! = 1 BINK(0,5) = 0. Das ist nicht ohne weiteres ersichtlich. BINK(0,0) = 1 wegen 0!/(0! 0!) = 1 BINK(5,5) = 1 wegen 5!/(5! 0!) = 1 Fall K > N BIN K in Übereinstim m u ng m it M a them a tica = 0. Für diese Argumente sind die Binomialkoeffizienten nicht definiert (siehe z. B. Num. Rec. S. 208). Mathematica gibt auch Binomialkoeffizienten für den Fall N < 0 aus. Dies erfolgt nicht in DM in Übereinstimmung mit der Nichtausgabe von Fakultäten für Argumente < 0. Zur Berechnung. Die obige Definitionsgleichung ist für die Berechnung untauglich, da durch die Fakultäten sehr schnell Zahlenüberläufe entstehen. Zur Berechnung wird eine Rekursion aus Num. Rec. S. 209, Gl. 6.1.7 benutzt. In diesem Ausdruck wird k durch k - 1 ersetzt: Sie gestattet die Berechnung von N über K ausgehend von N über 0 = 1. Für die Berechnung wird weiterhin die Symmetrie ausgenutzt. Das Pascalsche Dreieck ist symmetrisch zur Mitte, d. h. man darf mit K oder N - K rechnen - dies folgt auch aus der obigen Definition. Da die Rekursion über K läuft, kann dies eine wesentliche Erhöhung der Geschwindigkeit und Genauigkeit nach sich ziehen. Einige Werte mit kleineren Argumenten wurden manuell nachgerechnet: BINK(5,3) = 10 BINK(8,4) = 70 BINK(9,4) = 126 Zwei große Werte in Übereinstimmung mit Mathematica BINK(120,40) = 1,145 568 482 449 652@10 32 BINK(1000,800) = 6,617155560659@10 215 Zahlenüberlauf bei der Berechnung: Große Werte von N und K in der Nähe von N/2 erzeugen schell einen Zahlenüberlauf im REAL-Bereich. Z. B. überschreitet N = 1030 und K = 515 die größte zulässige REAL-Zahl. Dagegen ist man bei K = 1 noch sehr weit davon weg. Eine zuverlässige Aussage, wann das passiert, wäre höchstens mit GAMMALN möglich; das dauert aber sehr lange. In DM wird daher nichts unternommen: Bei zu großen N,K-Kombinationen gibt es einen Absturz. BINV(N,K,p) Berechnet den Wert der Binomialverteilung mit der Definition Die Berechnung erfolgt entsprechend dieser Definition, wobei für zur Berechnung von N über K die Routine aus der Funktion BINK verwendet wird. Probleme bei der Berechnung durch sich weitgehend aufhebende Terme sind hier nicht zu befürchten. Wie bei der Berechnung der Binomialkoeffizienten gibt es bei zu großen Werten von N und K einen Absturz von DM. Beschränkungen: N und K ganzzahlig und größer gleich 0, p zwischen 0 und 1, K kleiner gleich N, sonst Fehlermeldung. Zwei Sonderfälle für N=1 und größer müssen wegen 0^0 gesetzt werden: BINV(N,0,0) = 1 BINV(N,N,1) = 1 Sonderfall so gesetzt: BINV(0,0,p) = 1 für alle p. Einige mit Hand nachgerechnete Werte: BINV(5,3,0.3) = 10 @ 0.3 3 @ 0.7 2 = 0.132300000.... BINV(15,5,0.2) = 3003 @ 0.2 5 @ 0.8 10 = 0.103182294319104 BINV(1030,515,0.2): Absturz von DM wegen Zahlenüberlaufs bei der Berechnung von BINK. Die Summe der Binomialverteilungen über alle K muss 1 ergeben: SUM(0,30,BINV(30,J,0.34567))-1 = 0 KBNV Berechnet den Wert der kumulierten Binomialverteilung mit der Definition Die Berechnung erfolgt entsprechend dieser Definition, wobei für N über M die Routine aus der Funktion BINK verwendet wird. Probleme bei der Berechnung durch sich weitgehend aufhebende Terme sind hier nicht zu befürchten. Wie bei der Berechnung der Binomialkoeffizienten gibt es bei zu großen Werten von N und K einen Absturz von DM. Beschränkungen: N und K ganzzahlig und größer gleich 0, p zwischen 0 und 1, K kleiner gleich N, sonst Fehlermeldung. Zwei so gesetzte Sonderfälle für N=1 und größer: KBNV(N,0,0) = 1 KBNV(N,N,1) = 1 Sonderfall so gesetzt: KBNV(0,0,p) = 1 für alle p. Einige mit Hand nachgerechnete Werte: KBNV(5,3,0.3) = 0.96922000000 KBNV(5,5,0.3) = 1 KBNV(15,5,0.2) = 0.938948570382337 Weiterhin wurden einige Werte mit dem Taschenrechner entsprechend ihrer Definition überprüft. Z. B. KBNV(15,5,0.2)-SUM(0,5,BINK(15,J)*0.2^J*(1-0.2)^(15-J)) oder ähnlich KBNV(15,5,0.2)-SUM(0,5,BINV(15,J,0.2)) Ergebnis: 0 mit 15-stelliger Genauigkeit. KBNV(1030,515,0.2): Absturz von DM wegen Zahlenüberlaufs bei der Berechnung von BINK. CEIL(ARG) CEIL(ARG) berechnet die kleinste Integerzahl, die größer gleich dem Argument ist. Benutzt die Standardfortranfunktion CEILING. Das Ergebnis ist daher auf den Bereich der Integerzahlen beschränkt; andernfalls Fehlermeldung. Siehe auch FLOR. Einige DM-Ergebnisse: CEIL(15.99999999999) = 16 CEIL(15.00000000001) = 16 CEIL(15.0) = 15 CEIL(0) = 0 CEIL(1.E-200) = 1 CEIL(-1.E-200) = 0 CEIL(-15.99999999999) = -15 CEIL(-15.00000000001) = 15 CEIL(-16.0) = 16 DIV(N,M ) Ergibt die Ganzzahldivision von N/M. N und M müssen ganzzahlig und absolut kleiner gleich 2147483647 sein, M ungleich 0; andernfalls Fehlermeldung. Es wird die Fortranoperation DBLE(N/M) benutzt. Einige Ergebnisse: DIV(12,3) = 4 DIV(13,3) = 4 DIV(14,3) = 4 DIV(-13,3) = -4 DIV(13,-3) = -4 DIV(-13,-3) = 4 EPHI(N) Die Eulersche N-Funktion ergibt die Zahl der positiven ganzen Zahlen, die teilerfremd zu N sind. Die Berechnung erfolgt über eine Zerlegung von in ein Produkt von Primzahlen p. Es gilt N muss ganzzahlig und absolut kleiner gleich 2147483647 sein. EPHI(1) = 1 EPHI(2) = 1 EPHI(3) = 2 EPHI(4) = 2 EPHI(5) = 4 EPHI(6) = 2 EPHI(7) = 6 EPHI(0) = 0; so gesetzt, wie in Mathematica; allgemein üblich ist dagegen 1. Der Grund für die Null in DM sind die “Mengen aus der Zahlentheorie” in “Mathematik”. Was sollte man für das Argument 0, wenn das Ergebnis 1 lautet dort ausgeben?? EPHI(-N) = EPHI(N) EPHI(1000) = 400 in Übereinstimmung mit Mathematica EPHI(1017) = 672 in Übereinstimmung mit Mathematica EPHI(5003) = 5002 Ist N eine Primzahl, so gilt EPHI(N) = N-1 EPHI(4999) = 4998 EPHI(17*200117) = 3201856 (Sonderfall des Algorithmus, wenn eine Primzahl > 46341 übrig bleibt) EPHI(200117) = 2000116 (Sonderfall: Es liegt eine Primzahl > 46341 vor) EPHI(17*200117*13)-EPHI(17)*EPHI(200117)*EPHI(13)) = 0 (Multiplikativität) MODO(20^EPHI(21),21) = 1 (Satz von Fermat-Euler) Die Eulersche N-Funktion kann man sich auch bei Mathematik/Mengen aus der Zahlentheorie/Teilermengen/Teilerfremde Menge ansehen. Hier wird neben der N-Funktion auch die teilerfremde Menge selbst ausgegeben. EXP(ARG) Hier wird die Standardfunktionen von Fortran benutzt, d. h. EXP(ARG). Um einen Zahlenüberlauf zu vermeiden, wird bei ARG > 700 eine Fehlermeldung ausgegeben. Bei Argumenten < -700 wird wie folgt verfahren: Das Salford-Fortran gibt bis etwa -708 noch von Null verschiedene Zahlen aus. Bei kleineren Argumenten ist das Ergebnis dann 0. In DM wird wegen der Symmetrie zu +700 für alle Argumente < -700 das Ergebnis 0 gesetzt. Einige Ergebnisse mit Mathematica EXP(0) = 1 EXP(1) = 2.718281828459045 EXP(10) = 22026.46579480672 EXP(100) = 2.688117141816135*10 43 EXP(500) = 1.403592217852837*10 217 EXP(-1) = 0.3678794411714423 EXP(-10) = 0.00004539992976248485 EXP(-100) = 3.720075976020836×10 -44 EXP(-500) = 7.124576406741286×10 -218 DM findet die gleichen Zahlen, wobei manchmal die letzte Stelle um 1 abweicht. LN(EXP(X))-X = 0 für verschiedene X. Siehe auch die Bemerkung bei LN. FAK(N) Berechnet N!. Einige Ergebnisse: FAK(0) = 1 FAK(1) = 1 FAK(2) = 2 FAK(3) = 6 FAK(4) = 24 FAK(12) = 479001600 FAK(20) = 2432902008176640000 FAK(170) = 7.257@10 306 Per Definition Letzter Wert innerhalb des INTEGER*4-Bereichs Trotz 19 Stellen noch korrekt Letztere Ergebnisse in Übereinstimmung mit dem 5000-stelligen Taschenrechner und Mathematica. Grenzen für N: 0 # N # 170; andernfalls Fehlermeldung FFAK(N) Berechnet N!!, d. h. N (N-2) (N-4) (N-6) . . .. Einige Ergebnisse: FAK(1) = 1 FAK(2) = 2 FAK(3) = 3 FAK(4) = 8 FAK(12) = 46080 FAK(13) = 135135 FAK(20) = 3 715 891 200 FAK(30) = 42 849 873 690 624 000 FAK(300) = 8.15441@10 307 Gerade außerhalb des INTEGER*4-Bereichs Trotz 17 Stellen noch korrekt Letztere Ergebnisse in Übereinstimmung mit dem 5000-stelligen Taschenrechner und Mathematica. Grenzen für N: 1 # N # 300; andernfalls Fehlermeldung FIBZ(N) Berechnet die Fibonacci-Zahlen. Definition: F(n) = F(n-1) + F(n-2) mit F(1) = F(2) = 1. Für negative Argumente gilt die gleiche Rekursion. Man muss nach F(n-2) auflösen: F(n-2) = F(n) & F(n-1) und ersetzt n-2 durch n, d. h. F(n) = F(n+2) & F(n+1). Eine andere Art der Berechnung für negative Argumente ist die Gleichung Dazu siehe auch die Beispiele in der Tabelle. Diese Gleichung wird auch im Endeffekt in DM benutzt. Für kleine Werte von N erhält man so folgende Werte: N FIBZ(N) -4 -3 -3 2 -2 -1 -1 1 0 0 1 1 2 1 3 2 4 3 5 5 6 8 10 55 DM erlaubt nur Eingaben ABS(N) # 1470, da FIBZ(±1470) = ±7.3@10^306 die höchste erlaubte Realzahl fast erreicht. Natürlich kann DM mehr als 16-stellige Zahlen nicht mehr auf 1 genau darstellen. Jedoch wird FIBZ(77) = 5 527 939 700 884 775 noch - im Vergleich zu Mathematica - korrekt gefunden, d. h. bis 16 Stellen ist DM genau. Ein Test für sehr große Werte von N: Das Verhältnis von zwei aufeinander folgenden Fibonacci-Zahlen strebt gegen den Goldenen Schnitt: FIBZ(X+1)/FIBZ(X)-GS. Für X = 37 beträgt die Differenz nur noch 10 -15; danach nur noch 0. Weitere Tests: N muss ganzzahlig sein und ABS(N) kleiner als 1470. FLOR(ARG) FLOR(ARG) berechnet die größte Integerzahl, die kleiner gleich dem Argument ist. Benutzt die Standardfortranfunktion FLOOR. Das Ergebnis ist daher auf den Bereich der Integerzahlen beschränkt; andernfalls Fehlermeldung. Siehe auch CEIL. Einige DM-Ergebnisse: FLOR(15.99999999999) = 15 FLOR(15.00000000001) = 15 FLOR(15.0) = 15 FLOR(0) = 0 FLOR(1.E-200) = 0 FLOR(-1.E-200) = -1 FLOR(-15.99999999999) = -16 FLOR(-15.00000000001) = -16 FLOR(-16.0) = -16 GGT(N,M ) Berechnet den größten gemeinschaftlichen Teiler von N und M mit Hilfe des Euklidischen Algorithmus. N und M müssen ganzzahlig sein und dürfen 2 147 483 647 nicht übersteigen. Einige mit DM berechnete Werte, die man manuell nachrechnen kann: GGT(30,12) = 6 GGT(30,-12) = 6 GGT(-30,12) = 6 GGT(-30,-12) = 6 GGT(-50,50) = 50 GGT(50,-50) = 50 GGT(11,7) = 1 GGT(171887,341921) = 17 GGT(341921,171887) = 17 GGT(506173741,506171773) = 41 GGT(506173741,123) = 41 GGT(2^3*3^2*17,2*3^3*19) = 2*3^2 = 18 GGT(12,GGT(6,18)) = 6 GGT(15,0) = 15 GGT(0,15) = 15 GGT(0,0) = 0, so gesetzt. GGT(-48,120)*KGV(-48,120)-ABS(-48*120) = 0 HARM (N) Harmonische Reihe: Summe aller 1/N von 1 bis N. Aufruf HARM(N). N natürlich und > 0. Berechnung mit 15-stelliger Genauigkeit. Berechnungsverfahren Bis einschließlich N = 100 wird entsprechend der Definition die Summe berechnet, wobei aus Gründen der Genauigkeit mit dem kleinsten Glied begonnen wird. Da die Rechnung wohl nur im Prozessor mit 80 Bit abläuft, wird die gut 15-stellige Genauigkeit erhalten. Dazu siehe auch unten einige berechnete Werte. Für N > 100 wird ein bei Knuth, “Fundamental Algorithms” angegebener Algorithmus benutzt. Es gilt: Die Glieder der Summe sind k Bk Koeffizient 0 1 ? 1 -1/2 1/2 2 1/6 -1/12 3 0 0 4 -1/30 1/120 5 0 0 6 1/42 -1/252 7 0 0 8 -1/30 1/240 Die B k erhält man übereinstimmend mit DM und Mathematica. Bei k = 1 muss aus dem vorderen T eil der Gleichung 1/n addiert werden: daher +1/2 Ab N = 101 wird die Knuthsche Formel bis k = 6 benutzt. Das Glied mit k = 8 ergibt 1/(240(10 16) .10 -18 bei einem Wert von etwa 5, d. h. das Glied mit k = 8 wird nicht benötigt. Einige Werte mit Mathematica und DM berechnet. k Mathematica DM 98 5.167 276 507 538 610 5.167 276 507 538 611 99 5.177 377 517 639 620 5.177 377 517 639 621 100 5,187 377 517 639 620 5,187 377 517 639 622 101 5,197 278 507 738 630 5,197 278 507 738 630 102 5,207 082 429 307 258 5,207 082 429 307 257 NINF 22, 064 778 262 027 01 Die größte Differenz findet man bei N = 100, d. h. bei der letzten Berechnung nach der Summenformel. Aber auch hier ist der relative Fehler nur 0.5(10 -15. Letzter Wert: NINF = 2 147 483 647. HARM(NINF) = ln(2 147 483 647) + 0,577 215 664 901 532 + 1/2/NINF = 22, 064 778 262 027 006, wobei diese Berechnung mit dem 5000-stelligen Taschenrechner durchgeführt wurde. INT(ARG) INT(ARG) schneidet die Nachkommastellen ab. Es wird die entsprechende Fortranfunktion benutzt. Das Ergebnis ist daher auf den Bereich der Integerzahlen beschränkt; andernfalls Fehlermeldung. Einige DM-Ergebnisse: NINT(15) = 15 NINT(15.1) = 15 NINT(15.99999999999) = 15 NINT(0) = 0 NINT(-15) = 15 NINT(-15.1) = -15 NINT(-15.99999999999) = -15 INTG(X0,X1,F(U)) INTG berechnet bestimmte Integrale mit dem Aufruf INT G(X0,X1,F(U)). X0 und X1 sind die untere bzw. obere Integrationsgrenze, F(U) ist der Integrand; die Integrationsvariable muss U heißen. X0 und X1 können feste Zahlen oder kompliziertere Ausdrücke sein. Möglich ist weiterhin, dass sie Funktionen von X bei der "Datenein/ausgabe/Berechnung" sein dürfen. Wird X als obere Integrationsgrenze benutzt, so erhält man mit "Berechnen" die Abhängigkeit von der oberen Integrationsgrenze. F(U) ist die zu integrierende Funktion, wobei die Integrationsvariable U sein muss!! Für F(U) dürfen einfache Funktionen, wie U^2, aber auch komplizierte, wie HERM(3,U)*LAG(3,U), verwandt werden. Der Ausdruck darf neben dem Integral keine weitere Funktionen vom Typ SUM, PROD, INTG, LIMP und LIMM enthalten. Dies wird nicht überprüft und kann zum Absturz führen. Die Integration erfolgt mit dem Rombergverfahren, das mit steigender Stützpunktzahl mit Hilfe des Trapezverfahrens numerisch integriert. Die Zwischenergebnisse werden gespeichert und mit einer sehr effektiven Routine auf die Stützpunktweite Null extrapoliert. Diese Routine erlaubt auch eine Fehlerabschätzung. Die Stü tzpunktzahlverdopplung wird beendet, wenn der geschä tzte Fehler den größ eren W ert von TOLREL*ABS(ERGEBNIS) bzw. TOLABS unterschreitet. TOLREL stellt den relativen und TOLABS den absoluten Fehler dar. Würde nur das erste relative Kriterium verwandt werden, gäbe es Probleme mit Integralen mit dem Wert Null. Der geschätzte Fehler kann nicht Null werden. Würde nur der absolute Fehler als Kriterium verwandt werden, so würde man dieses Kriterium bei Integralen mit großen Werten & z. B. über 10 8 & nie erreichen. Bei Integralen mit kleinen Werten würde die Integration umgekehrt zu früh abgebrochen werden. Die Verwendung des größeren Wertes der beiden Kriterien schafft einen T eil der Probleme aus der Welt. Es verbleibt jedoch das Problem bei Integralen mit sehr kleinen Werten. Vermeiden lässt sich dieses Problem, in dem der Integrand mit einem Faktor multipliziert wird, so dass das Integral in der Nähe von 1liegt. Die Größen TOLREL und TOLABS können in der Routine "Verschiedenes/Abbruchkriterien für unendliche Summen;..." eingestellt werden. Das eingesetzte Rombergverfahren benutzt die Integrationsgrenzen X0 und X1 nicht. Das macht die Integration zwar etwas uneffektiver, hat aber den Vorteil, dass Uneigentliche Integrale mit "Schwierigkeiten" an den Integralgrenzen berechenbar sind (siehe weiter unten). Die Integralgrenzen müssen aber - anders als in der Integrationsroutine in der Mathematik - endlich bleiben, d. h. 1.E10 oder INF als Integralgrenzen führen zu einem Abbruch bzw. Absturz. Test mit einfachen Integralen und Originaleinstellung der Größen TOLREL und TOLABS INTG(0,100,U^2) = 333 333,333 333 333 INTG(100,0,U^2) = -333 333,333 333 333 INTG(0,PI,SIN(U)) = 2,000 000 000 001 5 (Bogenmaß benutzen!) INTG(0,2*PI,SIN(U)) = 5.809@10 -16 Das absolute Fehlerkriterium ist wirksam INTG(0,PI,1.E8*SIN(U)) = 2,000 000 000 001 5@10 8 Das relative Fehlerkriterium ist wirksam Negative TOLREL und TOLABS werden im Programm automatisch in positive umgewandelt: Negative Werte eingeben und“Ausführen”. Nachsehen: Es stehen positive Größen da. Für den Test der Wirksamkeit des relativen Kriteriums wird eine sehr viel schlechter numerisch integrierbare Funktion gewählt und das Integrationsergebnis abgezogen INTG(0,10,SQRT(U))-2/3*10^1.5 = 1.18@10 -3 Mit TOLREL = 10 -6 INTG(0,10,SQRT(U))-2/3*10^1.5 = 2.27@10 -4 Mit TOLREL = 10 -8 -6 INTG(0,10,SQRT(U))-2/3*10^1.5 = 1.62@10 Mit TOLREL = 10 -10 Bei diesem Beispiel sieht man auch, dass die Fehlerabschätzung der Extrapolation bei schlecht integrierbaren Funktionen zu optimistisch ist: Der Wert des Integrals beträgt etwa 20 und der absolute Fehler sollte daher für das letzte Beispiel nur 2@10 -9 betragen. Für den Test der Wirksamkeit des absoluten Kriteriums wird INT G(0,10,SQRT (U)-2/3*SQRT (10)) herangezogen. Diese unsymmetrische Funktion lässt sich schlecht integrieren und ergibt Null. Das relative Kriterium wird durch den Wert 10 -12 unwirksam gemacht. INTG(0,10,SQRT(U)-2/3*SQRT(10)) = 8.4@10 -6 Mit TOLABS = 10 -8 INTG(0,10,SQRT(U)-2/3*SQRT(10)) = 6.0@10 -8 INTG(0,10,SQRT(U)-2/3*SQRT(10)) = 4.8@10 -10 Mit TOLABS = 10 -10 Mit TOLABS = 10 -12 Die Wahl der Stützpunkte bei dem gewählten Rombergverfahren erfolgt so: Zuerst wird als Stützpunkt die Mitte des Integrationsintervalls benutzt. Im ersten Verdopplungsschritt werden die jetzt entstandenen zwei Intervalle halbiert, d. h. es sind dann insgesamt drei Stützpunkte bei 0.25, 0.5 und 0.75 vorhanden. Dieses Verfahren wird mindestens fünfmal durchgeführt. Wegen dieser Minimalzahl von Stützpunkten hängt die Genauigkeit der Integration bei den gut integrierbaren Funktionen wie U^2 scheinbar nicht von den gesetzten Fehlern ab. Der Fehler ist nach fünf Intervallhalbierungen bereits unter allen üblichen Fehlergrenzen. Integration einer Funktion mit einem unendlichen Funktionswert an einer Integralgrenze. INTG(0,1,1/SQRT(U))-2 = -1.16@10 -2 Mit TOLREL = 10 -6 INTG(0,1,1/SQRT(U))-2 = -1.43@10 -4 Mit TOLREL = 10 -8 Werden kleinere relative Fehler eingestellt, bricht die Routine mit einer Fehlermeldung ab, da das Maximum von 15 Intervallhalbierungen erreicht wird. Integration einer Funktion mit einem unbestimmten Funktionswert an einer Integralgrenze: INTG(0,10,U/U) = 10 Die untere Integrationsgrenze wird nicht benötigt Integration einer unstetigen Funktion INTG(0,2,U*SPLE(U,1)+(U+1)*SPGT(U,1))-3 = -9.00@10 -3 INTG(0,2,U*SPLE(U,1)+(U+1)*SPGT(U,1))-3 = -3.70@10 -5 Besser ist es, die beiden Funktionsstücke einzeln zu integrieren. INTG(0,1,U) + INTG(1,2,U+1)-3 = 1.3@10 -15 Mit TOLREL = 10 -4 Mit TOLREL = 10 -8 Es ist bekannt, dass das Romberg-Verfahren mit Extrapolation niedere Polynome und Funktionen, die sich gut in Polynome entwickeln lassen, sehr gut integriert. Je mehr die Funktionen davon abweichen, um so ungenauer wird die Integration. Ausdrücke als Integrationsgrenzen: INTG(SQRT(5^2)-5,EXP(LN(100)),U^2) = 333 333,333 333 334 ersten Beispiel 0 und 100. Die Integrationsgrenzen sind wie beim Verwendung von INTG in Ausdrücken: EXP(INTG(0,1,U)+0.5)-EXP(1) = 0 Verwendung von INTG in “Berechnen”: Y = INTG(0,X,U) mit X von 0 bis 10 ergibt die Werte zur Parabel Y = X^2/2 Verwendung mehrerer Ausdrücke mit inneren Schleifen in DM: INTG(0,100,U^2)+INTG(0,100,U^2) = 666 666,666 . . . Das geht INTG(0,SUM(0,4,J^2),U) = 450 Das geht INTG(0,1,U*SUM(0,4,J^2)) = 15 Das geht INTG(0,1,SUM(0,4,U*J^2)) = manchmal 0, manchmal 29.481 Falsch In den ersten drei Beispielen ist jeweils die DM-interne Schleife für die Integral/Summenberechnung abgearbeitet, wenn die neue Integrationsschleife beginnt; im letzten Beispiel greifen die Schleifen ineinander. Das kann DM nicht. Wegen dieses komplizierten Verhaltens, findet man in der DM-Hilfe, dass gegenseitige Aufrufe unzulässig sind. Eine serielle Verwendung von Ausdrücken mit DM-internen Schleifen ist immer erlaubt. KFFR(l,m,theta,phi) und KFFI(l,m,theta,phi) Geben die Real- und Imaginärteil der Kugelflächefunktion aus. Berechnung nach Numerical Recipes, S. 246. Die dort beschriebene Routine plgndr(l,m,x) berechnet die assoziierten Legendreschen Polynome nur für m >= 0. Die Werte für negative m werden mittels Yl,-m = (-1)m @ Ylm * erhalten. Einige Testwerte Einige Werte mit Mathematica, wobei die Dezimalzahlen als Brüche zu schreiben sind KFFR(0,0,0.5,0.5) = 0, 282 094 791 773 878 143 KFFR(1,1,0.5,0.2) = -0, 162 336 972 189 314 444 KFFI(1,1,0.5,0.2) = -0, 032 907 333 396 866 389 KFFR(2,1,0.5,0.2) = -0, 318 559 402 882 550 776 KFFI(2,1,0.5,0.2) = -0, 064 575 187 869 943 331 KFFR(2,-1,0.5,0.2): Das Vorzeichen des Realteils ändert sich (siehe Berechnungsverfahren, letzte Zeile des 1. Absatzes KFFR(4,2,0.5,0.2) = 0, 310 975 544 341 626 668 KFFI(4,2,0.5,0.2) = 0, 131 147 835 134 104 828 KFFR(4,-2,0.5,0.2): Das Vorzeichen des Imaginärteils ändert sich (bei geradem m gilt Yl,-m = Ylm *) KFFR(4,2,Pi-0.5,0.2): Alles identisch KFFR(4,2,0.5,-0.2): Das Vorzeichen des Imaginärteils ändert sich KFFR(4,3,2.0,3.0) = -0, 356 808 596 172 672 263 KFFI(4,3,2.0,3.0) = 0, 161 390 115 472 348 681 Untersuchung der Grad/Bogenmaßumschaltung KFFR(5,2,0.5,0.2) = 0,412621.... im Bogenmaß = KFFR(5,2,BG*0.5,BG*0.2) im Gradmaß KFFI(5,2,0.5,0.2) = 0,174453.... im Bogenmaß = KFFI(5,2,BG*0.5,BG*0.2) im Gradmaß Siehe dazu auch die Bemerkungen in der Fußnote zu KFFR in der DM-internen Hilfe.