/*
    public LinearOptimizer(LinearFilterRepresentation orig) {		outputs = orig.getPushCount();	inputs = orig.getPopCount();	states = orig.getStateCount() + inputs;	preNeeded = orig.preworkNeeded();	totalMatrix = new FilterMatrix(states+outputs,states+inputs);	totalMatrix.copyAt(0,0,orig.getA());	totalMatrix.copyAt(0,states-inputs,orig.getB());	totalMatrix.copyAt(states-inputs,states, FilterMatrix.getIdentity(inputs));	totalMatrix.copyAt(states,0,orig.getC());	totalMatrix.copyAt(states,states-inputs,orig.getD());	D = new FilterMatrix(outputs,inputs);	initVec = new FilterVector(states);	initVec.copyAt(0,0,orig.getInit());	storedInputs = orig.getStoredInputCount();	if(preNeeded) {	    pre_inputs = orig.getPreWorkPopCount() + inputs;	    totalPreMatrix = new FilterMatrix(states,states+pre_inputs);	    totalPreMatrix.copyAt(0,0,orig.getPreWorkA());	    totalPreMatrix.copyAt(0,states,orig.getPreWorkB());	    totalPreMatrix.copyAt(states-inputs,states+pre_inputs-inputs, FilterMatrix.getIdentity(inputs));	}	else {	    pre_inputs = inputs;	    totalPreMatrix = new FilterMatrix(states,states+pre_inputs);	    totalPreMatrix.copyAt(0,0, FilterMatrix.getIdentity(states-inputs));	    totalPreMatrix.copyAt(states-inputs,states, FilterMatrix.getIdentity(inputs));	    preNeeded = true;	}    }