next up previous contents index
Next: Eingabevariablen Up: Definitionsbereiche Previous: Elementennamen   Contents   Index


Definitionsbereiche

Der Definitionsbereich besteht aus einem Grunddefinitionsbereich und eventuell Parametern, die den Grunddefinitionsbereich weiter spezifizieren.


Das erste Bit (die Zählung beginnt bei 1) des Grunddefinitionsbereichsfeldes bestimmt dessen Länge:


Das zweite Bit gibt an, ob der Definitionsbereich skaliert wird:

Wenn der Definitionsbereich skaliert wird, wird ein Skalierungsfaktor $S$ angegeben. Dieser Faktor $S$ ist eine Gleitkommazahl, mit dem die Werte des unskalierten Definitionsbereichs multipliziert werden, um (die Werte des/) den skalierten Definitionsbereich zu erhalten.

Der Skalierungsteil wird hinter den Definitionsbereichsangaben (inklusive Parametern) angegeben. Er besteht aus 3 Feldern: dem Längenfeld, dem Mantissenfeld und dem Exponentenfeld. Das erste Feld (das Längenfeld) ist 8 Bit lang, stellt eine natürliche Zahlen dar und gibt die Anzahl der Bytes für sowohl das Mantisse- als auch das Exponentenfeld an. Das Mantissenfeld (zweites Feld) $S_M$ und das Exponentenfeld (drittes Feld) $S_E$ sind jeweils Ganzzahlen. Der Skalierungsfaktor $S$ ergibt sich dann zu $S=S_M*2^{S_E}$.

Beispiel: Der Definitionsbereich sind 2 Bit natürliche Zahlen mit dem Skalierungsfaktor $F=1*2^{-1}=1/2$ (die Mantisse ist $1$ und der Exponent ist $-1$, das Längenfeld ist $1$, für ein Byte Skalierungsfaktorfeld). Die Bits des Skalierungsfaktors sind damit: 0000 0001; 0000 0001; 1111 1111. Möglich Werte für das Element zum Definitionsbereich sind: $\{$ $0*1/2=0$; $1*1/2=0,5$; $2*1/2=1$; $3*1/2=1,5$ $\}$. Ist nun im Element zum Definitionsbereich eine Zahl, die unskaliert $1$ bedeuten würde, bedeutet sie mit Skalierung $0,5$. Die Bits des gesamten Definitionsbereichs sind: 0; 1; 000000; 00000010; 00000001; 00000001; 11111111 (Felder in dieser Reihenfolge: 8-Bit-Grunddefinitionsbereiche; skaliert; natNumberB; mit 2 Bit pro Element; Skalierungsfaktor: 1 Byte pro Feld, $S_M=1$, $S_E=-1$) (in der Datei, erste Bit vorn: 01000000 01000000 10000000 10000000 11111111)


Die einzelnen Definitionsbereiche (inklusive Skalierungsfaktor) werden mit 0 auf ganzzahlige Byts aufgefüllt. Ist also eine Definitionsbereichsangabe 13 Bit lang, so werden die verbleibenden 3 Bit mit 0 gefüllt, so dass ein 16-Bit (=2 Byte) Definitionsbereichsfeld entsteht.

Table: 8 Bit Parameter für Definitionsbereiche
Name Wert Bits 3 bis 8 Beschreibung Parameter
       
naturalNumberB 0000 00 Der Grunddefinitionsbereich sind die natürlichen Zahlen. Der folgende 8-Bit-Parameter ist eine natürliche Zahl $X$, welche die Anzahl der Bits für Werte des Definitionsbereichs angibt. Der zugehörige Grunddefinitionsbereich ist dann $0 \ldots (2^X-1)$.
integerB 0100 00 Der Grunddefinitionsbereich sind die Ganzzahlen. Der folgende 8-Bit-Parameter ist eine natürliche Zahl $X$, welche die Anzahl der Bits für Werte des Definitionsbereichs angibt. Der zugehörige Grunddefinitionsbereich ist dann $-(2^{X-1}) \ldots (2^{X-1}-1)$.
naturalNumber 0000 01 Der Grunddefinitionsbereich sind die natürlichen Zahlen. Der folgende 64-Bit-Parameter ist eine natürliche Zahl $X$, welche die größte natürliche Zahl des Definitionsbereichs angibt. Der zugehörige Grunddefinitionsbereich ist dann $0 \ldots X$. Die Bits, die pro Wert des Definitionsbereichs benötigt werden, sind $\lceil \log_2(X+1) \rceil $.
integer 0100 01 Der Grunddefinitionsbereich sind die Ganzzahlen. Die folgenden zwei 64-Bit-Parameter sind zwei Ganzzahlen $X$ und $Y$. Der erste Parameter $X$ gibt die untere Grenze des Grunddefinitionsbereich an. Der zweite Parameter $Y$ gibt die obere Grenze des Grunddefinitionsbereich an. Der zugehörige Grunddefinitionsbereich ist dann $Y \ldots X$. Die Bits, die pro Wert des Definitionsbereichs benötigt werden, sind $\lceil \log_2(Y-X+1) \rceil $. Bei der Interpretation der Bits werden alle Werte $W$ ($W$ ist der Wert der Bits als natürliche Zahl) größer als $X$ als negative Werte mit dem Wert $W-(X-Y+1)$ umgesetzt. Wenn die kleinste Zahl $X$ größer als 0 oder die größte Zahl $Y$ kleiner als 0 ist ist, wird kleinste Zahl $X$ von alle Zahlen zum Speichern abgezogen ($W+X$).
integerValues 0100 10 Der Grunddefinitionsbereich sind die Ganzzahlen. Der erste folgende 64-Bit-Parameter ist eine natürliche Zahl $N$, welche die Anzahl der möglichen Werte angibt. Der zweite folgende 8-Bit-Parameter $B$ gibt die Anzahl der Bits pro nachfolgenden Wert an. Nach den ersten beiden Parametern folgen $N$ Ganzzahlen mit je $B$ Bits in der Zweierkomplementdarstellung. Diese $N$ Ganzzahlen sind alle Werte, die Werte zu dem Grunddefinitionsbereich einnehmen können. Dabei wird der Wert $W$ einer Zahl in einem Element zum Definitionsbereich auf die $W$'te Zahl in der Liste gemappt/interpretiert (die Zählung beginnt bei 0). Die Bits, die pro Wert $W$ des Definitionsbereichs benötigt werden, sind $\lceil \log_2(N) \rceil $.
real 1000 00 Der Grunddefinitionsbereich sind Gleitkommazahlen. Eine Gleitkommazahl besteht aus zwei Ganzzahlfeldern, eines, das Erste, für den Exponent $E$ und eines, das Zweite, für die Mantisse $M$. Die Gleitkommazahl $Z$ ergibt sich dann zu $Z=M*2^E$ . Es folgen zwei Parameter. Der erste Parameter gibt den Definitionsbereich der Mantisse und der zweite des Exponenten an. Die Angabe der Definitionsbereiche ist so wie in dieser Tabelle beschrieben (ohne dass die Definitionsbereiche einzeln mit 0 aufgefüllt werden). Beide Definitionsbereiche müssen aus den Ganzzahlen kommen (also integer... oder naturalNumber...).
realValues 1000 01 Der Grunddefinitionsbereich sind Gleitkommazahlen. Eine Gleitkommazahl besteht aus zwei Ganzzahlfeldern, eines, das Erste, für den Exponent $E$ und eines, das Zweite, für die Mantisse $M$. Die Gleitkommazahl $Z$ ergibt sich dann zu $Z=M*2^E$ . Der erste folgende 64 Bit Parameter ist eine natürliche Zahl $N$, welche die Anzahl der möglichen Werte angibt. Es folgen 2 Parameter. Der erste Parameter gibt den Definitionsbereich der Mantisse und der zweite des Exponenten an. Beide Definitionsbereiche müssen aus den Ganzzahlen kommen (also integer... oder naturalNumber...) . Nach den ersten drei Parameter folgen $N$ Gleitkommazahlen mit je $B=B_M+B_E$ Bits in der Gleitkommazahlendarstellung für die gegebenen Mantissa and Exponenten Definitionsbereiche. Dabei sind $B_M$ die Bits pro Mantisse und $B_E$ die Bits pro Exponent. Diese $N$ Gleitkommazahlen sind alle Werte, die Werte zu dem Definitionsbereich einnehmen können. Dabei wird der Wert $W$, einer Zahl in einem Element zum Definitionsbereich, auf die $W$'te Zahl in der Liste gemappt/ interpretiert (die Zählung beginnt bei 0). Die Bits, die pro Wert des Definitionsbereichs benötigt werden, sind $\lceil \log_2(N) \rceil $.
vector 1100 00 und 1100 01 Der Grunddefinitionsbereich sind Vektoren. Der folgende Parameter $E$ gibt die Anzahl der Elemente des Vektors an. Der (Anzahl-)Parmeter ist bei der Einleitung "1100 00" 8 Bit lang und bei der Einleitung "1100 01" 64 Bit lang. Auf diesen Parameter folgt eine Liste mit $E$ Definitionsbereichen, so wie sie in diesem Abschnitt definiert sind. Alle Werte des Definitionsbereichs haben dann die Form $(D_1, \ldots , D_E)$, wobei $D_i$ ein Wert aus dem i'ten Definitionsbereich der Liste ist.
vectorValues 1100 10 und 1100 11 Der Grunddefinitionsbereich sind Vektoren. Der erste folgende Parameter $E$ gibt die Anzahl der Elemente des Vektors an. Der zweite Parameter $N$ die Anzahl der möglichen Vektoren. Die (Anzahl-)Parmeter sind bei der Einleitung "1100 00" 8 Bit lang und bei der Einleitung "1100 01" 64 Bit lang. Auf den zweiten Parameter folgt eine Liste mit $E$ Definitionsbereichen, so wie sie in diesem Abschnitt definiert sind. Darauf folgt eine Liste mit $N$ Vektoren, so wie im Abschnitt 25.3.1 auf Seite [*] beschreiben. Die Definitionsbereiche der Vektoren sind die angegebenen Definitionsbereich der vorhergehenden Liste. Es können auch Variablen in den abgespeicherten Vektoren vorkommen. Der Definitionsbereich für Variablen in der Liste hat 0 Bits. Für eine Variable im Vektor wird also nur die einleitende $1$ geschrieben. Ein Wert $W$ zum Definitionsbereich in einem Fib-Element wird dann als $W$'ter Vektor der zweiten Liste interpretiert. (Die Zählung beginnt bei $0$ . ) Enthält der angegebene Vektor Variablen, folgen auf den Wert $W$ direkt die Variablenbezeichner der Variablen, so wie sie über dem aktuellen Fib-Element definiert wurde. Die Anzahl der Bits der Variable wird durch den entsprechenden Definitionsbereich für Variablen "variable" bestimmt (siehe Abschnitt 25.2.4 auf Seite [*]).
vectorOpenEnd 1110 00 und 1110 01 Der Grunddefinitionsbereich sind Vektoren. Der folgende Parameter $E$ gibt die mindest Anzahl der Elemente des Vektors an. Der (Anzahl-)Parmeter ist bei der Einleitung "1100 00" 8 Bit lang und bei der Einleitung "1100 01" 64 Bit lang. Auf diesen Parameter folgt eine Liste mit $E$ Definitionsbereichen, so wie sie in diesem Abschnitt definiert sind. Alle Werte des Definitionsbereichs haben dann die Form $(D_1, \ldots , D_E, \ldots ,D_E)$, wobei $D_i$ ein Wert aus dem i'ten Definitionsbereich der Liste ist. Dieser Definitionsbereich dient für Elemente, die Vektoren unterschiedlicher Größe enthalten können. Die Anzahl der Elemente eines Vektors zu diesem Definitionsbereich wird durch das Element bestimmt, welches den Vektor enthält.
domainReference 1111 00 Ein Verweis auf den (Unter-)Definitionsbereich eines anderen Elements. Als Definitionsbereich wird der Definitionsbereich des Elements mit dem gegebenen Definitionsbereichnamen $Name$ genommen. Als erster Parameter folgt der im komprimierte Dateiformat kodierte $Name$ des Elements von dem der Definitionsbereich verwendet wird (siehe Abschnitt 25.2.4 auf Seite [*], ohne auffüllen auf ein ganzes Byte). Danach folgt die Angabe der $Element$ Parameter, für die Auswahl eines Unterdefinitionsbereichs. Als erstes folgt dafür ein $Element$-Einleitungsbit, welches angibt ob ein weiterer $Element$ Parameter folgen. Ist es $0$ folgt kein $Element$ Parameter, ist es $1$ folgt ein $Element$ Parameter. Wenn es $1$ ist folgt auf dieses erste $Element$-Einleitungsbit eine 1 Byte (8-Bit) lange natürliche Zahl $Bits$, die Angibt, wieviele Bits pro $Element$ Parameter verwendet werden. Danach folgt der erste $Element$ Parameter. Nach jedem $Element$ Parameter (abgespeichert mit dem Definitionsbereich $naturalNumberB( Bits )$) folgt wieder ein $Element$-Einleitungsbit und danach eventuell der nächste $Element$ Parameter usw. . Beispiel $matrix.3.1$: zwei Bits werden benötigt um die $Element$ Parameter abzuspeichern; die Bits sind (erstes Bit vorn): 0 0 001111 0 00 11011 1 00000010 11 1 10 0 ( In ihrer Reihenfolge stehen die Felder für: Definitionsbereichsfeld 8 Bit lang; nicht skaliert; domainReference; 8 Bit Elementname; keine Parameter; matrixElement; $Element$ Parameter folgt; mit je 2 Bit; 3'ter Unterdefinitionsbereich; $Element$ Parameter folgt; erster Unterdefinitionsbereich; kein $Element$ Parameter folgt )
defaultDomain 1111 01 Der angegebene Definitionsbereich wird nur verwendet, wenn es für das entsprechende Element bisher keinen anderen Definitionsbereich gibt. Als Parameter folgt ein Definitionsbereich wie in dieser Tabelle beschrieben. Der angegeben Definitionsbereich wird nur verwendet, wenn es für das entsprechende Element bisher keinen anderen Definitionsbereich gibt.
     


next up previous contents index
Next: Eingabevariablen Up: Definitionsbereiche Previous: Elementennamen   Contents   Index
Betti Österholz 2013-02-13