private void seedTestInvertLeft( long seed ) throws NotInvertibleException {
		
		final Random rand = new Random();
		
		rand.setSeed( seed );
		
		final TestDimensionFour td = new TestDimensionFour();
		
		final DoubleElemFactory dl = new DoubleElemFactory();
		
		final SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory> se = 
				new SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory>(dl, td);
		
		final SquareMatrixElemFactory<TestDimensionFour,
			SquareMatrixElem<TestDimensionFour,DoubleElem,DoubleElemFactory>,SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory>> se2 = 
				new SquareMatrixElemFactory<TestDimensionFour,
				SquareMatrixElem<TestDimensionFour,DoubleElem,DoubleElemFactory>,SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory>>(se, td);
		
		final SquareMatrixElemFactory<TestDimensionFour,SquareMatrixElem<TestDimensionFour,SquareMatrixElem<TestDimensionFour,DoubleElem,DoubleElemFactory>,
			SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory>>,
			SquareMatrixElemFactory<TestDimensionFour,SquareMatrixElem<TestDimensionFour,DoubleElem,DoubleElemFactory>,
			SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory>>> se3 = 
			new SquareMatrixElemFactory<TestDimensionFour,SquareMatrixElem<TestDimensionFour,SquareMatrixElem<TestDimensionFour,DoubleElem,DoubleElemFactory>,
			SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory>>,
			SquareMatrixElemFactory<TestDimensionFour,SquareMatrixElem<TestDimensionFour,DoubleElem,DoubleElemFactory>,
			SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory>>>( se2 , td );
		
		
		final SquareMatrixElem<TestDimensionFour,SquareMatrixElem<TestDimensionFour,SquareMatrixElem<TestDimensionFour,DoubleElem,DoubleElemFactory>,
			SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory>>,
			SquareMatrixElemFactory<TestDimensionFour,SquareMatrixElem<TestDimensionFour,DoubleElem,DoubleElemFactory>,
			SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory>>> mat = generateMatC( rand , se3 );
		
		final SquareMatrixElem<TestDimensionFour,SquareMatrixElem<TestDimensionFour,SquareMatrixElem<TestDimensionFour,DoubleElem,DoubleElemFactory>,
			SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory>>,
			SquareMatrixElemFactory<TestDimensionFour,SquareMatrixElem<TestDimensionFour,DoubleElem,DoubleElemFactory>,
			SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory>>> inv = mat.invertLeft();
		
		final SquareMatrixElem<TestDimensionFour,SquareMatrixElem<TestDimensionFour,SquareMatrixElem<TestDimensionFour,DoubleElem,DoubleElemFactory>,
			SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory>>,
			SquareMatrixElemFactory<TestDimensionFour,SquareMatrixElem<TestDimensionFour,DoubleElem,DoubleElemFactory>,
			SquareMatrixElemFactory<TestDimensionFour,DoubleElem,DoubleElemFactory>>> shouldBeIdent = inv.mult( mat );
		
		
		
		int i;
		int j;
		
		
		for( i = 0 ; i < 4 ; i++ )
		{
			for( j = 0 ; j < 4 ; j++ )
			{
				
				
				int i2;
				int j2;
				
				for( i2 = 0 ; i2 < 4 ; i2++ )
				{
					for( j2 = 0 ; j2 < 4 ; j2++ )
					{
						
						
						int i3;
						int j3;
						
						for( i3 = 0 ; i3 < 4 ; i3++ )
						{
							for( j3 = 0 ; j3 < 4 ; j3++ )
							{
								final double matchVal = ( i == j ) && ( i2 == j2 ) && ( i3 == j3 ) ? 1.0 : 0.0;
								Assert.assertEquals( matchVal , 
										shouldBeIdent.getVal(BigInteger.valueOf(i) , BigInteger.valueOf(j)  ).
										getVal(BigInteger.valueOf(i2) , BigInteger.valueOf(j2)  ).getVal( 
												BigInteger.valueOf(i3) , BigInteger.valueOf(j3) ).getVal() , 1E-6 );
							}
						}
					}
				}
			}
		}
		
		
	}