clc, clear all, close all

%*** Functionen auf Richtigkeit testen
A = rand(2^4);
B = rand(2^4);

C = A*B;

C1 = matProd(A,B);
C2 = matProdVec(A,B);
C3 = matProdStr(A,B);

if max(max(abs(C-C1)))<1e-14
  disp('matProd......  ok!')
end
if max(max(abs(C-C2)))<1e-14
  disp('matProdVec...  ok!')
end
if max(max(abs(C-C3)))<1e-14
  disp('matProdStr...  ok!')
end


%*** Laufzeit-Test
n = 2.^(1:9);

for k=1:length(n)
  %*** Zufalls-Matrizen anlegen
  %
  %       to do!
  % 
  
  %*** Matrix-Produkt mit 3-facher for-schleife berechnen
  tic
  %
  %       to do!
  %
  timeMP(k) = toc;
  
  %*** Matrix-Produkt vektorisiert berechnen
  tic
  %
  %       to do!
  %
  timeMPVec(k) = toc;
  
  %*** Matrix-Produkt mit Strassen-Algorithmus
  tic
  %
  %       to do!
  %
  timeMPStr(k) = toc;
end

%*** Zeiten plotten, Achsen beschriften, Legende einzeichnen 
figure(1)
%
%        to do!
%

%*** Verhalten einzeichnen
hold on
loglog(n(5:end), 2e-6*n(5:end).^2.8, '-k')
loglog(n(3:end), 6e-9*n(3:end).^3  , '-k')
loglog(n(3:8)  , 8e-6*n(3:8).^2    , '-k')
