private final void extendBounds(double[] location) {
		if (minLimit == null) {
			minLimit = new double[dimensions];
			System.arraycopy(location, 0, minLimit, 0, dimensions);
			maxLimit = new double[dimensions];
			System.arraycopy(location, 0, maxLimit, 0, dimensions);
			return;
		}
		for (int i = 0; i < dimensions; i++) {
			if (Double.isNaN(location[i])) {
				minLimit[i] = Double.NaN;
				maxLimit[i] = Double.NaN;
				singularity = false;
			} else if (minLimit[i] > location[i]) {
				minLimit[i] = location[i];
				singularity = false;
			} else if (maxLimit[i] < location[i]) {
				maxLimit[i] = location[i];
				singularity = false;
			}
		}
	}