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

/**
 * This is the parent package for all vector sketch algorithms. Any classes at this level are
 * used by more than one sub-package.
 */
package com.yahoo.sketches;
