Guest User

Untitled

a guest
Aug 27th, 2016
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 1.41 KB | None | 0 0
  1. import std.getopt;
  2. import std.stdio;
  3. import std.experimental.ndslice;
  4.  
  5. int n = 600, l=600, m=600;
  6.  
  7. void main(string[] args)
  8. {
  9.         auto A = new double [l*m].sliced(l,m);
  10.         auto B = new double [m*n].sliced(m,n);
  11.         auto C = new double [l*n].sliced(l,n);
  12.         A[][] = 0;
  13.  
  14.  
  15.         matrix!(typeof(A)).ini(A);
  16.  
  17.         // matrix!(typeof(A)).print(A);
  18.  
  19.         // blabla
  20.  
  21.         matrix!(typeof(A)).ini(B);
  22.         matrix!(typeof(A)).MatMul(A,B,C);
  23.         //
  24.         writeln(C[1,1]);
  25.         writefln("%d   %d ", C.length, C[0].length);
  26.         /*matrix!(typeof(C)).print(C);*/
  27. }
  28.  
  29.  
  30. template matrix(T){
  31.         void ini(T mtx){
  32.                 for(int i = 0; i <mtx.length; i++) {
  33.                         for(int j = 0; j< mtx[i].length; j++) {
  34.               mtx[i,j] = i*j + 0.6*j +3.4;
  35.                         }
  36.                 }
  37.         }
  38.  
  39.         void print(T mtx){
  40.                 for(int i = 0; i <mtx.length; i++) {
  41.                         writefln("%(%8.1f %)", mtx[i]);
  42.  
  43.                 }
  44.         }
  45.  
  46.  
  47.         void MatMul(T A, T B, T C){
  48.                 C[] = 0;
  49.  
  50.                 for(int k = 0; k < C[0].length; k++) {
  51.                         for(int i = 0; i < C.length; i++) {
  52.                                 for(int j = 0; j < A[0].length; j++) {
  53.                   C[i,k] += A[i,j] * B[j,k];
  54.                                 }
  55.                         }
  56.                 }
  57.         }
  58.  
  59.  
  60. }
Advertisement
Add Comment
Please, Sign In to add comment