// MMult(bereich1,bereich2,bereichZ) // tm 97-11-23 // multipliziert die zwei Matrizen bereich1,bereich2 // und schreibt das Ergebnis ab der linken oberen Zelle // des Zielbereichs ins Blatt proc main(...) { if (argc<5) exit(1); datei = argv[0]; zelle = argv[1]; if (address("texel")) { m1 = GetRange(argv[2],datei); m2 = GetRange(argv[3],datei); dest = GetRange(argv[4],datei); r1s = m1[0]; c1s = m1[1]; r1e = m1[2]; c1e = m1[3]; r2s = m2[0]; c2s = m2[1]; r2e = m2[2]; c2e = m2[3]; dr = dest[0]; dc = dest[1]; if (((r1e - r1s) == (c2e - c2s)) && ((c1e - c1s) == (r2e - r2s))) { for (r=r1s; r<=r1e; r++) { for (c=c2s; c<=c2e; c++) { wert = 0.0; for (i=c1s; i<=c1e; i++) { z1 = GetCell(r,i,datei); z2 = GetCell(i+r2s-c1s,c,datei); wert += z1*z2; } SetCell(r+dr-r1s,c+dc-c2s,wert,datei); } } } ReturnCellValue(datei,zelle,0.0); } }