Parallel Arbitrary-Precision Integer Arithmetic
Total Page:16
File Type:pdf, Size:1020Kb
Load more
										Recommended publications
									
								- 
												  The Sage Project: Unifying Free Mathematical Software to Create a Viable Alternative to Magma, Maple, Mathematica and MATLABThe Sage Project: Unifying Free Mathematical Software to Create a Viable Alternative to Magma, Maple, Mathematica and MATLAB Bur¸cinEr¨ocal1 and William Stein2 1 Research Institute for Symbolic Computation Johannes Kepler University, Linz, Austria Supported by FWF grants P20347 and DK W1214. [email protected] 2 Department of Mathematics University of Washington [email protected] Supported by NSF grant DMS-0757627 and DMS-0555776. Abstract. Sage is a free, open source, self-contained distribution of mathematical software, including a large library that provides a unified interface to the components of this distribution. This library also builds on the components of Sage to implement novel algorithms covering a broad range of mathematical functionality from algebraic combinatorics to number theory and arithmetic geometry. Keywords: Python, Cython, Sage, Open Source, Interfaces 1 Introduction In order to use mathematical software for exploration, we often push the bound- aries of available computing resources and continuously try to improve our imple- mentations and algorithms. Most mathematical algorithms require basic build- ing blocks, such as multiprecision numbers, fast polynomial arithmetic, exact or numeric linear algebra, or more advanced algorithms such as Gr¨obnerbasis computation or integer factorization. Though implementing some of these basic foundations from scratch can be a good exercise, the resulting code may be slow and buggy. Instead, one can build on existing optimized implementations of these basic components, either by using a general computer algebra system, such as Magma, Maple, Mathematica or MATLAB, or by making use of the many high quality open source libraries that provide the desired functionality. These two approaches both have significant drawbacks.
- 
												  An Open Source Approach Using SageAn Introduction to Algebraic, Scientific, and Statistical Computing: an Open Source Approach Using Sage William A. Stein April 11, 2008 Abstract This is an undergraduate textbook about algebraic, scientific, and statistical computing using the free open source mathematical software system Sage. Contents 1 Computing with Sage 6 1.1 Installing and Using Sage ...................... 6 1.1.1 Installing Sage ........................ 6 1.1.2 The command line and the notebook ............ 8 1.1.3 Loading and saving variables and sessions ......... 13 1.2 Python: the Language of Sage .................... 15 1.2.1 Lists, Tuples, Strings, Dictionaries and Sets ........ 15 1.2.2 Control Flow ......................... 24 1.2.3 Errors Handling ....................... 24 1.2.4 Classes ............................ 26 1.3 Cython: Compiled Python ...................... 28 1.3.1 The Cython project ..................... 28 1.3.2 How to use Cython: command line, notebook ....... 28 1.4 Optimizing Sage Code ........................ 28 1.4.1 Example: Optimizing a Function Using A Range of Man- ual Techniques ........................ 28 1.4.2 Optimizing Using the Python profile Module ..... 37 1.5 Debugging Sage Code ........................ 39 1.5.1 Be Skeptical! ......................... 40 1.5.2 Using Print Statements ................... 41 1.5.3 Debugging Python using pdb ................ 41 1.5.4 Debugging Using gdb .................... 41 1.5.5 Narrowing down the problem ................ 42 1.6 Source Control Management ..................... 42 1.6.1 Distributed versus Centralized ............... 42 1.6.2 Mercurial ........................... 42 1.7 Using Mathematica, Matlab, Maple, etc., from Sage ....... 42 2 Algebraic Computing 43 2.1 Groups, Rings and Fields ...................... 43 2.1.1 Groups ............................ 43 2.1.2 Rings ............................
- 
												  Sage 9.3 Reference Manual: External PackagesSage 9.4 Reference Manual: External Packages Release 9.4 The Sage Development Team Aug 24, 2021 CONTENTS 1 Standard Packages 1 2 Optional Packages 7 3 Experimental Packages 11 4 Detailed Listing of External Packages 13 i ii CHAPTER ONE STANDARD PACKAGES The Sage distribution includes most programs and libraries on which Sage depends. It installs them automatically if it does not find equivalent system packages. • _prereq: Represents system packages required for installing SageMath from source • alabaster: Default theme for the Sphinx documentation system • appdirs: A small Python module for determining appropriate platform-specific dirs, e.g. a “user data dir”. • appnope: Disable App Nap on OS X • arb: Arbitrary-precision floating-point ball arithmetic • argon2_cffi: The secure Argon2 password hashing algorithm • attrs: Decorator for Python classes with attributes • babel: Internationalization utilities for Python • backcall: Specifications for callback functions • bleach: An HTML-sanitizing tool • boost_cropped: Portable C++ libraries (subset needed for Sage) • brial: Boolean Ring Algebra implementation using binary decision diagrams • bzip2: High-quality data compressor • cddlib: Double description method for polyhedral representation conversion • certifi: Python package for providing Mozilla’s CA Bundle • cffi: Foreign Function Interface for Python calling Ccode • cliquer: Routines for clique searching • cmake: A cross-platform build system generator • combinatorial_designs: Data from the Handbook of Combinatorial Designs • conway_polynomials:
- 
												  SAGEMATH CROSS PRODUCT: Community Run Open Source Software Providing Research Opportunities for Developers, Users, Contributors, and TeachersCOLLABORATIVE RESEARCH: SI2-SSI: SAGEMATH CROSS PRODUCT: Community Run Open Source Software Providing Research Opportunities for Developers, Users, Contributors, and Teachers SageMath [217], or Sage for short, is a free open source general purpose mathematical software system, initiated under the leadership of William Stein (University of Washington), that has developed explosively within the last ten years among research mathematicians. Stein's primary motivational goal was to create software that is efficient, open source, comprehensive, well- documented, extensible, and free [216]. Sage's development has reached a point where it has the potential to become a standard software package that is widely used throughout STEM disciplines. If funded, the proposed project will allow us to make major progress towards this goal. Sage is similar to Maple [150], Mathematica [237], Magma [43], and MATLAB [225] (via third-party packages like SciPy [105]), but uses the popular Python language [175] both as an implementation and as a surface language. This not only ensures easy access to help with programming [75, 146, 174], but also provides developers with transferable skills as they work with a computer language that is ubiquitous in the software industry. Furthermore, Sage has gained strong momentum in the mathematics community far beyond its initial focus in number theory, in particular in the field of combinatorics where the capabilities and functionalities of Sage are much deeper than those of commercial packages. Sage is community-run, meaning that it is developed and organized by users for users. The development is driven by research and teaching needs and has a variety of stakeholders: e.g., developers, users, contributors, researchers, and teachers.
- 
												  Fast Computation of Hermite Normal Forms of Random Integer Matrices ∗ Clément Pernet A,1, William Stein B, ,2 a Grenoble Université, INRIA-MOAIS, LIG; 51, Avenue JARTICLE IN PRESS YJNTH:4018 JID:YJNTH AID:4018 /FLA [m1G; v 1.36; Prn:2/04/2010; 10:44] P.1 (1-9) Journal of Number Theory ••• (••••) •••–••• Contents lists available at ScienceDirect Journal of Number Theory www.elsevier.com/locate/jnt Fast computation of Hermite normal forms of random integer matrices ∗ Clément Pernet a,1, William Stein b, ,2 a Grenoble université, INRIA-MOAIS, LIG; 51, avenue J. Kuntzmann; 38330 Montbonnot St-Martin, France b University of Washington, Department of Mathematics, Box 354350, Seattle, WA, United States article info abstract Article history: This paper is about how to compute the Hermite normal form Received 21 April 2009 of a random integer matrix in practice. We propose significant Available online xxxx improvements to the algorithm by Micciancio and Warinschi, and Communicated by Fernando Rodriguez extend these techniques to the computation of the saturation of Villegas a matrix. We describe the fastest implementation for computing Keywords: Hermite normal form for large matrices with large entries. Hermite normal form © 2010 Published by Elsevier Inc. Exact linear algebra 1. Introduction This paper is about how to compute the Hermite normal form of a random integer matrix in practice. We describe the best known algorithm for random matrices, due to Micciancio and Warin- schi [MW01] and explain some new ideas that make it practical. We also apply these techniques to give a new algorithm for computing the saturation of a module, and present timings. In this paper we do not concern ourselves with nonrandom matrices, and instead refer the reader to [SL96,Sto98] for the state of the art for worse case complexity results.