public int compare(boolean[] class_list, int datapoint) throws BoostingAlgorithmException{
		int c;
		int class_index = -1;
		int classification = -1;
		//determine what class in the classlist the datapoint has
		for (c = 0; c < classes; c++) {
			if (data.classes[datapoint].equals(data.classlist[c])) {
				class_index = c;
			}
		}
		if (class_index == -1) {
			throw new BoostingAlgorithmException("Class \"" + data.classes[datapoint] + "\" not found in class list");
		}
		//Check if the correct class is indicated
		if (class_list[class_index]) {
			//the correct class is selected
			classification = 0;
		} else {
			//the correct class is not selected
			classification = 3;
		}
		for (c = 0; c < classes; c++) {
			//check if any other classes are indicated
			if (c != class_index && class_list[c]) {
				if (classification == 0) {
					//the correct class is selected, but so are other classes
					classification = 1;
				} else if (classification == 3) {
					//the correct class is not selected, but other classes are selected
					classification = 2;
				}
			}
		}
		
		return classification;
	}