### Features

Introduces C++ programming language using examples that illustrate how C++ is used in mathematical research Describes how to use C++ on different computer systems to help you start programming right away Gives a clear and comprehensive introduction to the object-oriented method of programming Discusses relevant topics including more advanced input/output, visualization, documentation, and selected special features of the C++ language Includes a quick reference guide to the C++ language
### Summary

For problems that require extensive computation, a C++ program can race through billions of examples faster than most other computing choices. C++ enables mathematicians of virtually any discipline to create programs to meet their needs quickly, and is available on most computer systems at no cost.

**C++ for Mathematicians: An Introduction for Students and Professionals** accentuates C++ concepts that are most valuable for pure and applied mathematical research.

This is the first book available on C++ programming that is written specifically for a mathematical audience; it omits the language’s more obscure features in favor of the aspects of greatest utility for mathematical work. The author explains how to use C++ to formulate conjectures, create images and diagrams, verify proofs, build mathematical structures, and explore myriad examples. Emphasizing the essential role of *practice *as part of the learning process, the book is ideally designed for undergraduate coursework as well as self-study. Each chapter provides many problems and solutions which complement the text and enable you to learn quickly how to apply them to your own problems. An accompanying CD ROM provides all numbered programs so that readers can easily use or adapt the code as needed.

Presenting clear explanations and examples from the world of mathematics that develop concepts from the ground up, **C++ for Mathematicians **can be used again and again as a resource for applying C++ to problems that range from the basic to the complex.

### Table of Contents

*List of Programs *

*List of Figures *

*Preface *

**I. PROCEDURES **

**The Basics**

What is C++?

Hello C++

**Numbers **

The Integer Types

The Real Number Types

The bool and char Types

Checking the Size and Capacity of the Different Types

Standard Operations

Comparisons and Boolean Operations

Complex Numbers

Naming Variables

**Greatest Common Divisor **

The Problem

A First Approach

Euclid’s Method

Looping With for, while, and do

An Exhaustive Approach to the GCD Problem

Extended GCD, Call by Reference, and Overloading

**Random Numbers **

Pseudo Random Number Generation

Uniform Random Values

More on Pseudo Random Number Generation

A Monte Carlo Program for the GCD Problem

Normal Random Values

**Arrays **

Euler’s Totient

Array Fundamentals

A Procedure to Factor Integers

A Procedure to Calculate Euler’s Totient

The Sieve of Eratosthenes

A Faster Totient

Computing pn for Large n

The Answer

**II. OBJECTS **

**Points in the Plane **

Data and Methods

Declaring the Point Class

Data Hiding

Constructors

Assignment and Conversion

Methods

Procedures using Arguments of Type Point

Operators

**Pythagorean Triples **

Generating Pythagorean Triples

Designing a Primitive Pythagorean Triple Class

Implementation of the PTriple Class

Finding and Sorting the Triples

**Containers **

Sets

Set Iterators

Multisets

Adjustable Arrays Via the Vector Class

Ordered Pairs

Maps

Lists, Stacks, and Assorted Queues

**Modular Arithmetic **

Designing the Mod Type

The Code

The Default Modulus: Static Class Variables and Methods

Constructors and Get/Set Methods

Comparison Operators

Arithmetic Operators

Writing Mod Objects to Output Streams

A Main to Demonstrate the Mod Class

**The Projective Plane **

Introduction to the Projective Plane, RP2

Designing the Classes PPoint and PLine

Inheritance

Protected Class Members

Class and File Organization for PPoint and PLine

The Parent Class PObject

The Classes PPoint and PLine

Discovering and Repairing a Bug

Pappus Revisited

**Permutations **

Ulam’s Problem

Designing the Permutation Class

Finding Monotone Subsequences

Exercises

**Polynomials**

Procedure Templates

Class Templates

The Polynomial Class Template

The GCD Problem Revisited

Working in Binary

**III. TOPICS **

**Using Other Packages **

Arbitrary Precision Arithmetic: the GMP Package

Linear Algebra

Other Packages

**Strings, Input/Output, and Visualization **

Character Arrays

The String Class

Command Line Arguments

Reading and Writing Data in Files

String Streams

Formatting

A Class to Parse Files

Visualization

**Odds and Ends **

The switch Statement

Labels and the goto Statement

Exception Handling

Friends

Other Ways to Create Types

Pointers

**IV. APPENDICES **

**A. Your C++ Computing Environment **

Programming with a Command Window and a Text Editor

Programming with an Integrated Development Environment

General Advice on Debugging

**B. Documentation with Doxygen **

Doxygen Comments

Using Doxygen

**C. C++ Reference **

Variables and Types

Operations

Control Statements

Procedures

Classes

Standard Functions

**D. Answers **

*Index*

**Each Chapter Contains Exercises; Solutions can be found in Appendix D*

### Reviews

“For a mathematician like myself, Scheinerman’s new book is ideal. It concentrates on the portion of C++ that will be most useful to a mathematician. While developing the necessary tools and syntax of C++, the book presents example programs relevant to interesting and somewhat sophisticated mathematical problems. The reader can proceed as far as he/she wants. Even just reading the first few chapters of the book and writing some programs using the constructs introduced, there is sufficient [material] for many purposes within undergraduate mathematics … The strength of this book is the intermingling of interesting mathematics with the ideas and syntax of the C++ language. … The writing is very fluent and does not bog down in endless detail as so many programming books do … In summary, I recommend this book highly to frustrated mathematicians wishing to learn C++ programming. You will really enjoy the well-chosen examples and the light touch in the exposition.”

—Jeffrey Nunemacher, *MAA Reviews*