Welcome to MCS 507

1 About the Course content and organization expectations of the course

2 SageMath, SciPy, Julia the software system SageMath Python’s computational ecosystem the programming language Julia

3 The PSLQ Integer Relation Algorithm calling pslq in mpmath a hexadecimal expansion for π

MCS 507 Lecture 1 Mathematical, Statistical and Scientific Software Jan Verschelde, 26 August 2019

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 1/25 Welcome to MCS 507

1 About the Course content and organization expectations of the course

2 SageMath, SciPy, Julia the software system SageMath Python’s computational ecosystem the programming language Julia

3 The PSLQ Integer Relation Algorithm calling pslq in mpmath a hexadecimal expansion for π

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 2/25 Catalog Description

The design, analysis, and use of mathematical, statistical, and scientific software. Prerequisite(s): the catalog lists “Grade of B or better in MCS 360 or the equivalent or consent of instructor.” Examples of courses which could serve as “the equivalent” are MCS 320 (introduction to symbolic computation) and MCS 471 (). MCS 507 fits in an interdisciplinary and engineering (CSE) curriculum. MCS 507 prepares for MCS 572 (introduction to supercomputing).

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 3/25 Research Software and Software Research

The design, analysis, and use of mathematical, statistical, and scientific software. In this course, software is the object of our research. Examples of academic publication venues: Proceedings of the annual SciPy conference. The International Congress on Mathematical Software has proceedings as a volume of Lectures Notes in Computer Science. ACM Transactions on Mathematical Software is a journal.

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 4/25 Content of the Course text book and core software

An introduction to computational science with Python is in A Primer on Scientific Programming with Python. Fifth Edition, Springer-Verlag, 2016, by Hans Petter Langtangen. http://vefur.simula.no/intro-programming/ The textbook is optional, not required for the course. We will not strictly follow the textbook. Solving problems in industry is a mix of mathematical modeling and computational experiments. We consider SageMath bundles many free and open source software systems; Python’s computational ecosystem: SciPy; Julia: a fresh approach to numerical computing.

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 5/25 Welcome to MCS 507

1 About the Course content and organization expectations of the course

2 SageMath, SciPy, Julia the software system SageMath Python’s computational ecosystem the programming language Julia

3 The PSLQ Integer Relation Algorithm calling pslq in mpmath a hexadecimal expansion for π

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 6/25 Organization and Expectations

Three parts in the course: scientific scripting with Python and Julia; introduction to SageMath and some of its components: , GAP, PARI/GP, , , etc. software for your own research interests.

Activities throughout the semester: several homework collections; midterm exam could be take home; three computer projects.

A final exam could be possible, but instead of a final exam, most likely the last lectures will be reserved for student project presentations.

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 7/25 Welcome to MCS 507

1 About the Course content and organization expectations of the course

2 SageMath, SciPy, Julia the software system SageMath Python’s computational ecosystem the programming language Julia

3 The PSLQ Integer Relation Algorithm calling pslq in mpmath a hexadecimal expansion for π

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 8/25 do not re-invent the wheel metaphor: on building the car ...

B. Eröcal and W. Stein. The Sage project: Unifying free mathematical software to create a viable alternative to Magma, , Mathematica, and MATLAB. In K. Fukuda, J. van der Hoeven, M. Joswig, and N. Takayama, editors, Mathematical Software - ICMS 2010, vol. 6327 of Lecture Notes in Computer Science, pages 12–27. Springer, 2010.

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 9/25 SageMath a free open source mathematical software system

Sage aims to be a viable free and open source alternative to the big M’s (Magma, Mathematica, MATLAB, Maple). Why Sage? At least four reasons:

1 bundles various leading software systems used for mathematical research and experimentation 2 Python as scripting language 3 active and large community of developers 4 Try it online! at www..org David Joyner and William Stein: Open Source Mathematical Software. Opinion. Notices of the American Mathematical Society 54(10):1279, 2007.

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 10/25 Welcome to MCS 507

1 About the Course content and organization expectations of the course

2 SageMath, SciPy, Julia the software system SageMath Python’s computational ecosystem the programming language Julia

3 The PSLQ Integer Relation Algorithm calling pslq in mpmath a hexadecimal expansion for π

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 11/25 the stack picture from the slides of Jake VanderPlas

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 12/25 the SciPy community project

Pauli Virtanen, Ralf Gommers, Tyler Reddy, Anne Archibald, Andrew R. J. Nelson, Charles Harris, CJ Carey, Denis Laxalde, Eric Larson, Eric Moore, Eric Quintero, Evgeni Burovski, Jaime Fernández del Rio, Josef Perktold, Josh Wilson, Matthew Brett, Nikolay Mayorov, Warren Weckesser, Matt Haberland, Scott Sievert, Yu Feng, Antonio Horta Ribeiro, Ian Henriksen, K. Jarrod Millman, Stéfan J. van der Walt, and ˙Ilhan Polat. SciPy 1.0 – Fundamental Algorithms for Scientific Computing in Python. https://arxiv.org/abs/1907.10121 Juan Nunez-Iglesias, Harriet Dashnow, and Stéfan van der Walt. Elegant SciPy. O’Reilly Media, 2017.

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 13/25 Welcome to MCS 507

1 About the Course content and organization expectations of the course

2 SageMath, SciPy, Julia the software system SageMath Python’s computational ecosystem the programming language Julia

3 The PSLQ Integer Relation Algorithm calling pslq in mpmath a hexadecimal expansion for π

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 14/25 the Julia language picture of Software Engineering Daily web site

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 15/25 high performance computing with a scripting language

Traditional mathematical software development in two steps: 1 prototype in computer or scripting language, 2 rewrite high performance version in compiled language.

Julia aims to provide one environment to develop proof-of-concept implementations, and to write high performance code in the same language.

J. Bezanson, A. Edelman, S. Karpinski, and V. B. Shah. Julia: A fresh approach to numerical computing. SIAM Review, 59(1):65–98, 2017.

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 16/25 characteristics of modern software

Modern software systems offer the following solutions: interactive computing, scripts engage users

cloud computing, available in a browser

parallel computing: distributed, multicore, accelerated

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 17/25 Welcome to MCS 507

1 About the Course content and organization expectations of the course

2 SageMath, SciPy, Julia the software system SageMath Python’s computational ecosystem the programming language Julia

3 The PSLQ Integer Relation Algorithm calling pslq in mpmath a hexadecimal expansion for π

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 18/25 the PSLQ algorithm

Let x be a vector of n real numbers, x = (x1, x2,..., xn). An integer relation algorithm finds n integers a = (a1, a2,..., an):

a x + a x + + anxn = 0. 1 1 2 2 · · · The Euclidean algorithm solves this problem for n = 2. The PSLQ algorithm by David Bailey and Helaman Ferguson is the best-known integer relation algorithm. PSLQ was named one of ten “algorithms of the century” by Computing in Science and Engineering. PSLQ stands for “Partial Sum of Least Squares.” The algorithm requires high-precision arithmetic software: at least d n digits, where d is the size (in digits) of the largest integer a . × k

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 19/25 deciding whether a number is algebraic

One application of PSLQ is to find polynomials with integer coefficients that vanish at approximate roots. If α is an algebraic number (the root of a polynomial, e.g.: α = √3 4), then RealField(53)(α) (in Sage) returns an approximation for the corresponding root. The output of PSLQ establishes the opposite direction: with the polynomial with integer coefficients that vanishes at an approximate root, we can declare a corresponding algebraic number. To find polynomials which vanish at an approximate root r we give a sequence of consecutive powers of r as input to PSLQ.

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 20/25 calling pslq in mpmath

Starting from a floating point approximation for α = √3 4, computing the polynomial that vanishes at this approximation shows its algebraic number representation.

>>> from mpmath import pslq >>> r = 4.0**(1/3.0); r 1.5874010519681994 >>> pslq([r**n for n in xrange(5)]) [4, 0, 0, -1, 0] The calculations above simulated the discovery of 1.5874010519681994 as √3 4, as a root of 4 x 3 = 0. − The commands above are identical in Sage.

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 21/25 Welcome to MCS 507

1 About the Course content and organization expectations of the course

2 SageMath, SciPy, Julia the software system SageMath Python’s computational ecosystem the programming language Julia

3 The PSLQ Integer Relation Algorithm calling pslq in mpmath a hexadecimal expansion for π

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 22/25 a hexadecimal expansion for π

One of the remarkable discoveries made by PSLQ is a simple formula that allows to calculating any binary digit of π without calculating the digits preceding it:

∞ 1 4 2 1 1 π = . 16i 8i + 1 − 8i + 4 − 8i + 5 − 8i + 6 Xi=0 David H. Bailey, Peter B. Borwein, and Simon Plouffe. On the Rapid Computation of Various Polylogarithmic Constants. of Computation 66 (218): 903–913, 1997. David H. Bailey. Integer Relation Detection. Computing in Science and Engineering 2(1):24–28, 2000.

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 23/25 a Python script using mpmath

import math from mpmath import pslq SEQ = [sum([1.0/(16**k*(8*k+j)) \ for k in range(8)]) \ for j in range(1, 8)] print(SEQ) SEQ.append(math.pi) RESULT = pslq(SEQ) print(RESULT)

The RESULT printed is [-4, 0, 0, 2, 1, 1, 0, 1].

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 24/25 Summary + Exercises

We use Python, Julia, and SageMath to solve scientific problems. Exercises: 1 Visit www.sagemath.org and install SageMath on your computer, or get familiar with running it online. 2 Visit www.python.org and install Python on your computer, or get familiar with running it online. 3 Visit www.julialang.org and install Julia on your computer, or get familiar with running it online. 4 Consider r = 1.2599210498948732. Apply the PSLQ algorithm to find the algebraic number that is closest to r.

Scientific Software (MCS 507) Welcome to MCS 507 L-1 26August2019 25/25