// Copyright ©2019 The Gonum Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Gonum is a set of packages designed to make writing numerical and
// scientific algorithms productive, performant, and scalable.
//
// Gonum contains libraries for matrices and linear algebra; statistics,
// probability distributions, and sampling; tools for function
// differentiation, integration, and optimization; network creation and
// analysis; and more.
package gonum // import "gonum.org/v1/gonum"
