@Override
	public IMatrix nMultiply(IMatrix other) {
		/*
		 * da bi se dvije matrice mogle pomnožiti, moraju biti ulančane;
		 * ulančanost podrazumijeva da je broj stupaca prve matrice jednak broju 
		 * redaka druge matrice;
		 * rezultantna matrica ima broj redaka jednak broju redaka prvoj matrici,
		 * a broj stupaca jednak broju stupaca drugoj matrici
		 */
		if (this.getColsCount() != other.getRowsCount()) {
			throw new IncompatibleOperandException(
					"Matrices are not chained.");
		}
		IMatrix matrix = this.newInstance(
				this.getRowsCount(), other.getColsCount());
		
		//složenost O(n^3)!
		for (int row = 0; row < this.getRowsCount(); row++) {
			for (int col = 0; col < other.getColsCount(); col++) {
				for (int rowCol = 0; rowCol < this.getColsCount(); rowCol++) {
					matrix.set(
							row, 
							col, 
							matrix.get(row, col) + 
							this.get(row, rowCol)*other.get(rowCol, col));
				}
			}
		}
		return matrix;
	}