Scientific C++: Building Numerical Libraries the Object-Oriented Way

Introduction Chapter 1 Why C++ 1.1 Procedural Programming 1.2 Object-Oriented Programming Chapter 2 From Fortran to C++ 2.1 Introduction 2.2 Statements 2.3 Program Structure 2.4 Identifiers 2.5 Comments 2.6 Variable 2.7 Constants Without Identifiers 2.8 Constants with Identifiers 2.9 Operators 2.10 Iterative Cycles 2.11 Decisions 2.12 Questions 2.13 Examples Chapter 3 Derived Types: Pointers, References, Arrays 3.1 Introduction 3.2 Pointers 3.3 References 3.4 Array DD> 3.5 Questions 3.6 Examples Chapter 4 Derived Types: Class, struct, union, enum 4.1 Introduction 4.2 The struct Type without Encapsulated Functions 4.3 The class Type 4.4 The union Type 4.5 The enum Type 4.6 Questions Chapter 5 Introduction to Functions 5.1 Introduction 5.2 Definition of a Function 5.3 Function Argument 5.4 void Argument D>5.5 Vectors and Matrices as Function Arguments 5.6 return Function 5.7 Recursive Functions 5.8 Questions 5.9 Examples Chapter 6 Program Structure 6.1 Introduction 6.2 Declaring and Defining 6.3 Accessibility, Duration and Scope of an Identifier 6.4 When Should Declarations and Definitions be Used? 6.5 Questions Chapter 7 Functions 7.1 Introduction 7.2 Function Arguments 7.3 Inline Functions 7.4 Function Overloading 7.5 Function Pointers 7.6 Generic Functions 7.7 Library Functions 7.8 Questions 7.9 Examples Chapter 8 Setting up a Program Library for Scientific Use 8.1 Introduction 8.2 Constants 8.3 Errors and Messages 8.4 Commonly Used Inline Functions 8.5 Other Commonly Used Functions 8.6 Sum, Subtraction and Products of Vectors 8.7 Euclidean Norm of a Vector Chapter 9 Object-Oriented Programming: the Class Type 9.1 Encapsulating and Hiding 9.2 Functions Which are Members of a ckass 9.3 The Hidden Pointer this 9.4 static Type Members 9.5 const Type Members 9.6 friend 9.7 Pointer to a Class Member 9.8 Questions Chapter 10 Using Objects 10.1 Introduction >10.2 Initializing Simple Classes 10.3 Constructors and Destructors 10.4 Defining Objects 10.5 Special Constructors 10.6 Defining Pointers to Objects 10.7 Defining Arrays of Objects 10.8 Initialization List 10.9 Defining Object with Global Scope 10.10 Temporary, Hidden Objects with No Explicit Identifier 10.11 Function returns 10.12 Questions 10.13 Examples Chapter 11 Operator Overloading 11.1 Introduction 11.2 Syntax for Overloading Operators 11.3 Assignment Operator = 11.4 Combined Assignment Operators 11.5 Operator [ ] 11.6 Operator ( ) 11.7 Differences between Member and Non-Member Operators 11.8 Conersion Operators 11.9 Questions Chapter 12 Matrices and Vectors 12.1 Introduction 12.2 Class Plan for Vectors and Matrices 12.3 Implementation of Matrices and Vectors 12.4 Operator and Function Returns 12.5 Initializing 12.6 Operations 12.7 Access to Elements 12.8 Assiging 12.9 Constructing matrices with && and // 12.10 Logical Operators 12.11 Implemented Operations 12.12 Other Functions 12.13 Examples of Applications Chapter 13 Sparse Matrices 13.1 Introduction 13.2 Storing Coeefficients 13.3 Constructors and Destructor 13.4 Access to Elements 13.5 Operators 13.6 Operators DD> 13.7 Solutions to Sparse Systems Chapter 14 Derived Classes and Polymorphism 14.1 Introduction 14.2 Class Derivation 14.3 Deriving and Overloading Functions 14.4 Pointers to Drived Class Objects 14.5 Virtual Functions 14.6 Advantages of Virtual Functions 14.7 Example of How Virtual Functions are Used 14.8 Early and Late Binding 14.9 Interactions between Virtual and Normal Functions >14.10 Level of Protection for Virtual Functions 14.11 Pure Virtual Functions and Abstract Classes 14.12 Constructors and Destructors in Derived Classes 14.13 Questions Chapter 15 Program Design for Linear Algebra 15.1 Introduction 15.2 Implemented Classes 15.3 The Base Class Factored 15.4 The Class FactoredPLR 15.5 The Class FactoredQRLQ 15.6 The Classes Factored Gauss and Factored Crout >15.7 The Classes FactoredQR and FactoredLQ 15.8 Examples Summary Bibliography Index