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

/**
 * <p>This package is dedicated to streaming algorithms that enable approximate matrix
 * decompositions.</p>
 *
 * <p>These sketches are mergeable and can be serialized and deserialized to/from a compact
 * form.</p>
 */
package com.yahoo.sketches.decomposition;
