static MacroCell fromBoolean(boolean[][] tab){
		if(tab==null) return null;
		//copie de tab vers matrice carre 2^n*2^n
		int m = Math.max(tab.length, tab[0].length);
		int n = (int) (Math.log(m)/Math.log(2));
		if(Math.log(m)/Math.log(2)-n>0) n = n+1;
		int p=(int)Math.pow(2,n);
		//DEBUGSystem.out.println("creation of size "+p+" MacroCell");
		
		boolean[][] carre = new boolean[p][p];
		for(int i=0;i<p;i++){for(int j=0;j<p;j++){if(i<tab.length&&j<tab[0].length){carre[i][j]=tab[i][j];}else{carre[i][j]=false;}}}
		//DEBUGSystem.out.println("initOK");
		
		//result
		return fromBoolSub(carre,0,0,p);
	}