@Test
	public void Muliplytest() throws BTFMatrixErrorException, InputFileParserException, InternalErrorException, OperationNotSupportedException, InconsistentLinearSystemException {
		
		
		ConvolutionSolver convolution = new ConvolutionSolver(qnm);
		
		BigRational G ;
		
		for(int cur_class = 1; cur_class <= qnm.R; cur_class++) {
			PopulationVector N = qnm.N.copy();
			for(int i = cur_class - 1; i < qnm.R; i++) {
				N.set(i,0);
			}
			
			System.out.print("N: " + N + "\n");			
			
			system.initialiseForClass(N, cur_class);
			N.restore();
			system.update(2);
			System.out.print("N: " + N + "\n");		
						
			//Compute values in previous basis
			basis.startBasisComputation();
			for(int i = 0; i < basis.getOrder().size(); i++) {
				PopulationChangeVector n = basis.getOrder().get(i);
				for(int k = 0; k <= qnm.M; k++) {
					
					MultiplicitiesVector m = qnm.getMultiplicitiesVector();	
					m.plusOne(k);
					
					//compute RHS value
					G = convolution.compute(m, N.changePopulation(n));
					basis.setValue(G.copy(), basis.indexOf(n, k));
				}
			}
			
			//Compute values in new basis:
			basis.startBasisComputation();
			for(int i = 0; i < basis.getOrder().size(); i++) {
				PopulationChangeVector n = basis.getOrder().get(i);
				for(int k = 0; k <= qnm.M; k++) {
					
					MultiplicitiesVector m = qnm.getMultiplicitiesVector();	
					m.plusOne(k);
					
					//compute LHS value
					N.plusOne(cur_class);
					
					G = convolution.compute(m, N.changePopulation(n));
					N.restore();
					basis.setValue(G.copy(), basis.indexOf(n, k));
				}
			}			
			
			//printing lhs and rhs:
			System.out.print(String.format("%40s", "lhs: "));
			System.out.print(String.format("%40s", "rhs: "));
			System.out.print("\n");
			for(int i = 0; i < basis.getSize(); i++) {
				System.out.print(String.format("%40s", basis.getNewValue(i)));
				System.out.print(String.format("%40s", basis.getOldValue(i)));
				System.out.print("\n");
			}
			
			//intialise vector to store results and multiply
			BigRational[] rhs_result = system.multiplyrhs();
			basis.startBasisComputation();
			BigRational[] lhs_result = system.multiplylhs();
			
			
			//printing lhs and rhs results:
			System.out.print(String.format("%40s", "Multiplied lhs: "));
			System.out.print(String.format("%40s", "Multiplied rhs: "));
			System.out.print("\n");
			for(int i = 0; i < basis.getSize(); i++) {
				System.out.print(String.format("%40s", lhs_result[i]));
				System.out.print(String.format("%40s", rhs_result[i]));
				System.out.print("\n");
				assertTrue(lhs_result[i].equals(rhs_result[i]));
			}
		}
	}