# Introduction

CVXOPT is a free software package for convex optimization based on the Python programming language. It can be used with the interactive Python interpreter, on the command line by executing Python scripts, or integrated in other software via Python extension modules. Its main purpose is to make the development of software for convex optimization applications straightforward by building on Python’s extensive standard library and on the strengths of Python as a high-level programming language.

CVXOPT extends the built-in Python objects with two matrix objects: a `matrix` object for dense matrices and an `spmatrix` object for sparse matrices. These two matrix types are introduced in the chapter Dense and Sparse Matrices, together with the arithmetic operations and functions defined for them. The following chapters (The BLAS Interface and Sparse Linear Equations) describe interfaces to several libraries for dense and sparse matrix computations. The CVXOPT optimization routines are described in the chapters Cone Programming and Modeling. These include convex optimization solvers written in Python, interfaces to a few other optimization libraries, and a modeling tool for piecewise-linear convex optimization problems.

CVXOPT is organized in different modules.

`cvxopt.blas`

  Interface to most of the double-precision real and complex BLAS (The BLAS Interface).

`cvxopt.lapack`

  Interface to dense double-precision real and complex linear equation solvers and eigenvalue routines from LAPACK (The LAPACK Interface).

`cvxopt.fftw`

  An optional interface to the discrete transform routines from FFTW (Discrete Transforms).

`cvxopt.amd`

  Interface to the approximate minimum degree ordering routine from AMD (Matrix Orderings).

`cvxopt.umfpack`

  Interface to the sparse LU solver from UMFPACK (General Linear Equations).

`cvxopt.cholmod`

  Interface to the sparse Cholesky solver from CHOLMOD (Positive Definite Linear Equations).

`cvxopt.solvers`

  Convex optimization routines and optional interfaces to solvers from GLPK, MOSEK, and DSDP5 (Cone Programming and Nonlinear Convex Optimization).

`cvxopt.modeling`

  Routines for specifying and solving linear programs and convex optimization problems with piecewise-linear cost and constraint functions (Modeling).

`cvxopt.info`

  Defines a string `version` with the version number of the CVXOPT installation and a function `license` that prints the CVXOPT license.

`cvxopt.printing`

  Contains functions and parameters that control how matrices are formatted.

The modules are described in detail in this manual and in the on-line Python help facility pydoc. Several example scripts are included in the distribution.