| |
|
|
p.specht
| comme Vorbereitung zur allfällligen Beschleunigung mittels Assembler...
Windowtitle "MATMUL - Matrixmultiplikation comme Proc"
Windowstyle 24
Fenêtre 0,0-%maxx,%maxy:imprimer
Déclarer s&,sz&,z&,err&
'z&=53 : sz&=50 : s&=17
z&=53 : sz&=1 : s&=10
set("decimals",0):set("numwidth",8)
dec z&:dec sz&:dec s&
Déclarer u![z&,sz&],v![sz&,s&],w![z&,s&]
inc z&:inc sz&:inc s&
u![]=&index : v![]=3*&index
Check MATMUL(u![],v![],w![],s&,sz&,z&)
font 2
Check MATPRNT(w![],s&,z&)
waitinput
FIN
Proc MATMUL :parameters a![],b![],c![],s&,sz&,z&
cas (s&<1) or (sz&<1) or (s&<1):return -2
cas (s&*sz&*z&)>50000:return -1
Déclarer sum!,prod!,i&,j&,k&
dec s&:dec sz&:dec z&
Whileloop 0,z&:i&=&Boucle
whileloop 0,s&:j&=&Boucle
sum!=0
whileloop 0,sz&:k&=&Boucle
prod!=a![i&,k&]*b![k&,j&]
sum!=sum!+prod!
Endwhile
c![i&,j&]=sum!
Endwhile
Endwhile
return 0
ENDPROC
Proc MATPRNT
parameters c![],s&,z&
cas (s&<1) or (s&<1):return -2
cas (s&*z&)>50000:return -3
cas (z&>53) or (s&>17):return -4
declare i&,j&
dec s&:dec z&
Whileloop 0,z&:i&=&Boucle
whileloop 0,s&:j&=&Boucle
imprimer c![i&,j&],
Endwhile:imprimer
Endwhile
return 0
ENDPROC
proc Check:parameters err&
sélectionner err&
caseof 0:return
caseof -1:Imprimer " Error: *** index Overflow ***"
caseof -2:Imprimer " Error: *** index <=0 ***"
caseof -3:Imprimer " Error: *** Mat too big for RAM ***"
caseof -4:Imprimer " Problem: *** Mat too big for Screen ***"
otherwise :Imprimer " Error: *** unknown ***"
endselect
endproc
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 26.05.2021 ▲ |
|
|
|