The longer Levin mowed, the oftener he felt the moments of unconsciousness in which it seemed not his hands that swung the scythe, but the scythe mowing of itself, a body full of life and consciousness of its own, and as though by magic, without thinking of it, the work turned out regular and well-finished of itself.
-- Tolstoy, Anna Karenina (trans. Constance Garnett)

The Scythe Statistical Library is an open source C++ library for statistical computation, written by Daniel Pemstein (Harvard University and University of Illinois), Kevin M. Quinn (UC Berkeley), and Andrew D. Martin (Washington University). It includes a suite of matrix manipulation functions, a suite of pseudo-random number generators, and a suite of numerical optimization routines. Programs written using Scythe are generally much faster than those written in commonly used interpreted languages, such as R and MATLAB, and can be compiled on any system with the GNU GCC compiler (and perhaps with other C++ compilers). One of the primary design goals of the Scythe developers has been ease of use for non-expert C++ programmers. We provide ease of use through three primary mechanisms: (1) operator and function over-loading, (2) numerous pre-fabricated utility functions, and (3) clear documentation and example programs. Additionally, Scythe is quite flexible and entirely extensible because the source code is available to all users under the GNU General Public License.

Current Public Release -- Scythe 1.0.2

We released Scythe 1.0 on January 15, 2007. This release represents a major overhaul of the library since the last public release (0.3) and the library's new interface is not backwards compatible with previous releases. Scythe now provides both column- and row-major matrices, multiple views of the same matrix, submatrix assignment, and a variety of other new functionality. In addition, Scythe now optionally uses highly optimized LAPACK and BLAS routines to perform certain matrix and linear algebra operations on machines that provide these libraries. We have tested Scythe 1.0 on Linux and OS X and the library should work with the GNU GCC compiler version 4.0.1 or greater.

Scythe 1.0.2, released on August 15, 2007, provides new linear algebra routines and fixes a number of bugs. See the ChangeLog for details.

Documentation

We currently provide an article that introduces the library and walks through some examples of how to use it, and a set of documents that exhaustively describe Scythe's application programmers' interface (API).

Mailing List

We have established a list serve to facilitate communication among Scythe users and among Scythe developers. To subscribe, send an email to listserv@artsci.wustl.edu with the text subscribe scythe firstname lastname in the text of the message (after substituting your real first name and last name).

Projects and Papers That Use Scythe

Scythe has been used in the following software projects and published papers:

Please let us know of other projects or papers to add to this list.

If you have any questions about Scythe, or would like to contribute to the project, please do not hesitate to email one of the authors: Daniel Pemstein, Kevin M. Quinn, or Andrew D. Martin.

Acknowledgements

We gratefully acknowledge support from the United States National Science Foundation (Grants SES-0350646 and SES-0350613), the Department of Political Science, the Weidenbaum Center, and the Center for Empirical Research in the Law at Washington University, and the Department of Government and The Institute for Quantitative Social Science at Harvard University. Neither the foundation, Washington University, nor Harvard University bear any responsibility for this software.

We'd also like to thank the research assistants who have helped us with Scythe: Matthew Fasman, Steve Haptonstahl, Kate Jensen, Laura Keys, Kevin Rompala, Joe Sheehan, and Jean Yang.

image