private void update(double value) {
		assert _initialized;

		// If min or max, handle as a special case; otherwise, ...
		if (_quantile == 0.0) {
			if (value < _q[2]) {
				_q[2] = value;
			}
		} else if (_quantile == 1.0) {
			if (value > _q[2]) {
				_q[2] = value;
			}
		} else {
			// Increment marker locations and update min and max.
			if (value < _q[0]) {
				++_n[1]; ++_n[2]; ++_n[3]; ++_n[4]; _q[0] = value;
			} else if (value < _q[1]) {
				++_n[1]; ++_n[2]; ++_n[3]; ++_n[4];
			} else if (value < _q[2]) {
				++_n[2]; ++_n[3]; ++_n[4];
			} else if (value < _q[3]) {
				++_n[3]; ++_n[4];
			} else if (value < _q[4]) {
				++_n[4];
			} else {
				++_n[4]; _q[4] = value;
			}

			// Increment positions of markers k + 1
			_nn[0] += _dn[0];
			_nn[1] += _dn[1];
			_nn[2] += _dn[2];

			adjustMarkerHeights();
		}
	}
Combine two {@code Quantile} objects.

@since 3.1

@param other the other {@code Quantile} object to combine
@return {@code this}
@throws java.lang.NullPointerException if the {@code other} object is
        {@code null}.
@throws java.lang.IllegalArgumentException if the {@link #quantile}
        of the {@code other} object differs from {@code this} one.
jenetics/src/main/java/io/jenetics/stat/Quantile.java