//
// Copyright (c) 2002
// Ronald Kevin Burton
//
// Z poniższym kodem nie jest związana żadna gwarancja poprawności działania.
// Program został dołączony do książki ".NET CLR. Księga eksperta" w celu
// ilustracji koncepcji i zasad przedstawionych w tej książce. Program może być 
// używany na własne ryzyko.
//
// Przyznaje się prawo do użycia lub kopiowania tego oprogramowania do dowolnego celu
// bez konieczności ponoszenia żadnych opłat pod warunkiem, że powyższe uwagi zostaną 
// zachowane we wszystkich kopiach. Przyznaje się także prawo do modyfikacji kodu
// i dystrybucji zmodyfikowanego kodu pod warunkiem zachowania powyższych uwag
// oraz dołączenia informacji mówiącej o modyfikacji kodu.
//
//  
using System;

namespace MatrixMultiplication
{
	/// <summary>
	/// Podsumowanie dla MatrixMultiplyDirect.
	/// </summary>
	public class MatrixMultiplyDirect : MatrixMultiply
	{
		public MatrixMultiplyDirect(double [,] A, double [,] B) : base(A,B)
		{
		}
		public override double [,] Multiply()
		{
			for(int i = 0; i < A.GetLength(0); i++)
				for(int j = 0; j < B.GetLength(1); j++)
					C[i,j] = 0.0;

			// Pętla dla wierszy A
			for(int i = 0; i < A.GetLength(0); i++)
				// Pętla dla kolumn A i wierszy B
				for(int j = 0; j < A.GetLength(1); j++)
				{
					// Pętla dla kolumn B
					for(int k = 0; k < B.GetLength(1); k++)
						C[i,k] += A[i,j] * B[j,k];
				}
			return C;
		}
	}
}
