| |
|
|
 p.specht
 | Speicherverwaltung dreidimensionaler Matrizen:
XProfan (V. 11.2a) funktioniert mit der "Am-Stück"-Speicherverwaltung nur für statisch deklarierte Listen und für Matrizen mit von vorneherein definierter Größe. Dann aber lässt sich sicher zugreifen, wenn man die Indexverwaltung (und den Speicherbedarf für ein Einzelelement) richtig einsetzt.
Für eine spätere Umsetzung in Assembler dazu die nachstehende kleine Studie.
WindowTitle "Studie: Speicher- und Zugriffsorganisation"+\
"auf dreidimensionale Matrizen (a.k.a. Tensoren)"
Cls:randomize
'Speicherbedarf eines Einzelwertes (XProfan):
var SB&=8'Double precision Floatingpoint: 8 Byte
'Stellenzahlen
var xm&=2
var ym&=2
var zm&=2
declare x&,y&,z&, M![xm&-1,ym&-1,zm&-1]
M![]=&index'rnd()
print
print "Händisch für M[x,y,z]:"
print M![0,0,0],M![0,0,1]," ",M![0,1,0],M![0,1,1]
print M![1,0,0],M![1,0,1]," ",M![1,1,0],M![1,1,1]
print
print "Vereinfacher x-Komponentenaufruf:"
print M![0]
print M![1]
print
print "Linear programmierter Aufruf:"
Whileloop 0,zm&-1:z&=&Loop
Whileloop 0,ym&-1:y&=&Loop
whileloop 0,xm&-1:x&=&Loop
print float( addr(M![0]),SB&*(x& * ym&*zm& + y& *zm& + z&)),
EndWhile:print " ";
Endwhile:print
Endwhile:print
waitinput
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 29.05.2021 ▲ |
|
|
|