Multi–Precision Math Tom St Denis Algonquin College Mads Rasmussen Open Communications Security Greg Rose QUALCOMM Australia March 10, 2007 This text has been placed in the public domain. This text corresponds to the v0.39 release of the LibTomMath project. Tom St Denis 111 Banning Rd Ottawa, Ontario K2L 1C3 Canada Phone: 1-613-836-3160 Email:
[email protected] This text is formatted to the international B5 paper size of 176mm wide by 250mm tall using the LATEX book macro package and the Perl booker package. Contents 1 Introduction 1 1.1 Multiple Precision Arithmetic . 1 1.1.1 What is Multiple Precision Arithmetic? . 1 1.1.2 The Need for Multiple Precision Arithmetic . 1 1.1.3 Benefits of Multiple Precision Arithmetic . 3 1.2 PurposeofThisText......................... 4 1.3 DiscussionandNotation . 5 1.3.1 Notation............................ 5 1.3.2 PrecisionNotation . 5 1.3.3 Algorithm Inputs and Outputs . 6 1.3.4 MathematicalExpressions. 6 1.3.5 WorkEffort.......................... 7 1.4 Exercises ............................... 7 1.5 IntroductiontoLibTomMath . 9 1.5.1 WhatisLibTomMath?. 9 1.5.2 GoalsofLibTomMath . 9 1.6 ChoiceofLibTomMath .. .. .. .. .. .. .. .. .. .. 10 1.6.1 CodeBase........................... 10 1.6.2 APISimplicity ........................ 11 1.6.3 Optimizations.. .. .. .. .. .. .. .. .. .. .. 11 1.6.4 Portability and Stability . 11 1.6.5 Choice............................. 12 2 Getting Started 13 2.1 LibraryBasics ............................ 13 2.2 WhatisaMultiplePrecisionInteger? . 14 2.2.1 The mp intStructure .................... 15 iii 2.3 ArgumentPassing .......................... 17 2.4 ReturnValues............................. 18 2.5 InitializationandClearing . 19 2.5.1 Initializing an mp int .................... 19 2.5.2 Clearing an mp int...................... 21 2.6 MaintenanceAlgorithms .