Advertisement
Guest User

Untitled

a guest
Aug 29th, 2016
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 1.33 KB | None | 0 0
  1. import std.getopt;
  2. import std.stdio;
  3. import std.experimental.ndslice;
  4.  
  5. int n = 1000, l=1000, m=1000;
  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.         matrix!(typeof(A)).ini(A);
  15.         matrix!(typeof(A)).ini(B);
  16.         matrix!(typeof(A)).MatMul(A,B,C);
  17.  
  18.         writeln(C[1,1]);
  19.         writefln("%d   %d ", C.length, C[0].length);
  20. }
  21.  
  22.  
  23. template matrix(T){
  24.         void ini(T mtx){
  25.                 for(int i = 0; i <mtx.length; i++) {
  26.                         for(int j = 0; j< mtx[i].length; j++) {
  27.               mtx[i,j] = i*j + 0.6*j +3.4;
  28.                         }
  29.                 }
  30.         }
  31.  
  32.         void print(T mtx){
  33.                 for(int i = 0; i <mtx.length; i++) {
  34.                         writefln("%(%8.1f %)", mtx[i]);
  35.  
  36.                 }
  37.         }
  38.  
  39.  
  40.         void MatMul(T A, T B, T C){
  41.                 C[] = 0;
  42.  
  43.                 for(int k = 0; k < C[0].length; k++) {
  44.                         for(int i = 0; i < C.length; i++) {
  45.                                 for(int j = 0; j < A[0].length; j++) {
  46.                   C[i,k] += A[i,j] * B[j,k];
  47.                                 }
  48.                         }
  49.                 }
  50.         }
  51.  
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement