/*
 * Copyright 2016, Yahoo! Inc. Licensed under the terms of the Apache License 2.0. See LICENSE file
 * at the project root for terms.
 */

/**
 * <p>The quantiles package contains stochastic streaming algorithms that enable single-pass 
 * analysis of the distribution of a stream of real (double) values or generic items. 
 * </p>
 * 
 * @author Lee Rhodes
 */
package com.yahoo.sketches.pig.quantiles;
