Discrete Optimization in Chemical Space Reference Manual

by B. C. Rinderspacher

ARL-TR-6202 October 2012

Approved for public release; distribution unlimited. 
NOTICES

Disclaimers

The findings in this report are not to be construed as an official Department of the Army position 

unless so designated by other authorized documents.

Citation of manufacturer’s or trade names does not constitute an official endorsement or 

approval of the use thereof.

Destroy this report when it is no longer needed. Do not return it to the originator.
Army Research Laboratory 

Aberdeen Proving Ground, MD 21005

ARL-TR-6202 October 2012 

Discrete Optimization in Chemical Space Reference Manual 

B. C. Rinderspacher 

Weapons and Materials Research Directorate, ARL 

Approved for public release; distribution unlimited. 
ii

REPORT DOCUMENTATION PAGE Form Approved

OMB No. 0704-0188

Public reporting burden for this collection of information is estimated to average 1 hour per response, including the time for reviewing instructions, searching existing data sources, gathering and maintaining the 

data needed, and completing and reviewing the collection information. Send comments regarding this burden estimate or any other aspect of this collection of information, including suggestions for reducing the 

burden, to Department of Defense, Washington Headquarters Services, Directorate for Information Operations and Reports (0704-0188), 1215 Jefferson Davis Highway, Suite 1204, Arlington, VA 22202-4302. 

Respondents should be aware that notwithstanding any other provision of law, no person shall be subject to any penalty for failing to comply with a collection of information if it does not display a currently valid 

OMB control number.

PLEASE DO NOT RETURN YOUR FORM TO THE ABOVE ADDRESS.

1. REPORT DATE (DD-MM-YYYY)

October 2012

2. REPORT TYPE

Interim

3. DATES COVERED (From - To)

2009–2011

4. TITLE AND SUBTITLE

Discrete Optimization in Chemical Space Reference Manual

5a. CONTRACT NUMBER

5b. GRANT NUMBER

5c. PROGRAM ELEMENT NUMBER

6. AUTHOR(S)

B. C. Rinderspacher

5d. PROJECT NUMBER

5e. TASK NUMBER

5f. WORK UNIT NUMBER

7. PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES)

U.S. Army Research Laboratory

ATTN: RDRL-WMM-G

Aberdeen Proving Ground, MD 21005

8. PERFORMING ORGANIZATION

 REPORT NUMBER

ARL-TR-6202

9. SPONSORING/MONITORING AGENCY NAME(S) AND ADDRESS(ES) 10. SPONSOR/MONITOR’S ACRONYM(S)

11. SPONSOR/MONITOR'S REPORT

 NUMBER(S)

12. DISTRIBUTION/AVAILABILITY STATEMENT

Approved for public release; distribution unlimited.

13. SUPPLEMENTARY NOTES

14. ABSTRACT

We present the manual for using the constrained inverse molecular design program. The program uses an object-oriented 

approach implemented in C++. The manual includes instructions on setting up constrained optimizations of substitutional 

frameworks and the full application programming interface (API) necessary for extending and developing new capabilities.

15. SUBJECT TERMS

Molecular optimization, software documentation

16. SECURITY CLASSIFICATION OF: 

17. LIMITATION

OF ABSTRACT

UU

18. NUMBER

OF PAGES

413

19a. NAME OF RESPONSIBLE PERSON

B. C. Rinderspacher

a. REPORT

UNCLASSIFIED

b. ABSTRACT

UNCLASSIFIED

c. THIS PAGE

UNCLASSIFIED

19b. TELEPHONE NUMBER (Include area code)

(410) 306-2811

Standard Form 298 (Rev. 8/98) 

Prescribed by ANSI Std. Z39.18 
Contents

1. Introduction 1

1.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 Command Line Options . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2. Discrete Optimization in Chemical Space Module Documentation 3

2.1 Discrete Optimization of Chemical Space . . . . . . . . . . . . . . . . . . . . 3

2.1.1 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2 Linear Algebra Package with Sparse Implementations . . . . . . . . . . . . . 4

2.2.1 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 7

3. Discrete Optimization in Chemical Space Namespace Documentation 8

3.1 Boost Namespace Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.2 Concepts Namespace Reference . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.2.1 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.3 linear algebra Namespace Reference . . . . . . . . . . . . . . . . . . . . . . . 9

3.3.1 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.4 std Namespace Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4. Discrete Optimization in Chemical Space Class Documentation 37

4.1 linear algebra::asymmetric< TN > Class Template Reference . . . . . . . . . 37

4.1.1 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 38

4.2 Concepts::base iterator< X > Class Template Reference . . . . . . . . . . . 38

4.2.1 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 39

iii
4.2.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 39

4.3 binary entropic< C > Class Template Reference . . . . . . . . . . . . . . . . 40

4.3.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.3.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 41

4.3.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 41

4.3.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 42

4.4 binary gdmc< C > Class Template Reference . . . . . . . . . . . . . . . . . 42

4.4.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.4.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 44

4.4.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 44

4.4.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 45

4.5 binary line search< C > Class Template Reference . . . . . . . . . . . . . . 45

4.5.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.5.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 46

4.6 binary steepest descent< C > Class Template Reference . . . . . . . . . . . 47

4.6.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.6.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 49

4.7 chem opt Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.7.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.7.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 51

4.7.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 51

4.8 ChemGroup Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.8.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

iv
4.8.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 54

4.8.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 55

4.8.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 56

4.9 ChemIdent Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.9.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.9.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 60

4.9.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 61

4.9.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 62

4.10 double truct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

4.10.1 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 64

4.11 gen base entropic< C > Class Template Reference . . . . . . . . . . . . . . . 64

4.11.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 66

4.11.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 66

4.11.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 66

4.12 gen base gdmc< C > Class Template Reference . . . . . . . . . . . . . . . . 67

4.12.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 68

4.12.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 68

4.12.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 69

4.13 gen base grad LS< C, B > Class Template Reference . . . . . . . . . . . . . 69

4.13.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 71

4.13.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 71

4.13.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 72

4.14 gen base LS< C, B > Class Template Reference . . . . . . . . . . . . . . . . 72

v
4.14.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 74

4.14.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 74

4.14.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 74

4.15 general base iterator< X > Class Template Reference . . . . . . . . . . . . . 75

4.15.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 77

4.15.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 78

4.15.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 79

4.16 Concepts::has gradients< X > Class Template Reference . . . . . . . . . . . 79

4.16.1 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 80

4.16.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 81

4.17 has gradients data< X > Class Template Reference . . . . . . . . . . . . . . 81

4.17.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 82

4.17.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 82

4.18 Concepts::has hessians< X > Class Template Reference . . . . . . . . . . . . 83

4.18.1 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 84

4.18.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 84

4.19 has hessians data< X > Class Template Reference . . . . . . . . . . . . . . . 85

4.19.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 85

4.19.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 86

4.19.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 86

4.20 Concepts::has Name< X > Class Template Reference . . . . . . . . . . . . . 86

4.20.1 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 87

4.20.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 88

vi
4.21 Concepts::has optimize< X > Class Template Reference . . . . . . . . . . . 88

4.21.1 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 89

4.21.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 89

4.22 Concepts::has stacksize< X > Class Template Reference . . . . . . . . . . . 89

4.22.1 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 90

4.22.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 90

4.23 Concepts::is threadable< X > Class Template Reference . . . . . . . . . . . 90

4.23.1 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 91

4.23.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 91

4.24 is threadable abstract Class Reference . . . . . . . . . . . . . . . . . . . . . 92

4.24.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 93

4.24.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 93

4.24.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 93

4.25 Concepts::Library< X > Class Template Reference . . . . . . . . . . . . . . 93

4.25.1 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 94

4.25.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 95

4.26 Library data Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

4.26.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

4.26.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 97

4.26.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 97

4.26.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 98

4.27 linear algebra::mat asym full< TN > Class Template Reference . . . . . . . 98

4.27.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

vii
4.27.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 103

4.27.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 103

4.27.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 112

4.28 linear algebra::mat asym sparse< TN > Class Template Reference . . . . . . 112

4.28.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

4.28.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 118

4.28.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 119

4.28.4 Friends and Related Function Documentation . . . . . . . . . . . . . 129

4.28.5 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 129

4.29 linear algebra::mat full< TN > Class Template Reference . . . . . . . . . . . 129

4.29.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

4.29.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 135

4.29.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 136

4.29.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 149

4.30 linear algebra::mat sparse< TN > Class Template Reference . . . . . . . . . 149

4.30.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

4.30.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 153

4.30.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 154

4.30.4 Friends and Related Function Documentation . . . . . . . . . . . . . 162

4.30.5 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 162

4.31 linear algebra::mat sym full< TN > Class Template Reference . . . . . . . . 163

4.31.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

4.31.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 168

viii
4.31.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 169

4.31.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 181

4.32 linear algebra::mat sym sparse< TN > Class Template Reference . . . . . . 182

4.32.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

4.32.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 188

4.32.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 190

4.32.4 Friends and Related Function Documentation . . . . . . . . . . . . . 198

4.32.5 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 199

4.33 linear algebra::matrix< TN > Class Template Reference . . . . . . . . . . . 199

4.33.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 200

4.33.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 201

4.33.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 202

4.34 noprune< X > Class Template Reference . . . . . . . . . . . . . . . . . . . . 202

4.34.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 203

4.34.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 203

4.35 optimize abstract Class Reference . . . . . . . . . . . . . . . . . . . . . . . . 204

4.35.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 205

4.35.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 205

4.35.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 206

4.36 linear algebra::polynomial< C > Class Template Reference . . . . . . . . . . 206

4.36.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 208

4.36.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 208

4.36.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 213

ix
4.37 Concepts::pruner< X > Class Template Reference . . . . . . . . . . . . . . . 213

4.37.1 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 214

4.37.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 214

4.38 pruner abstract< X > Class Template Reference . . . . . . . . . . . . . . . . 215

4.38.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 216

4.38.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 217

4.38.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 218

4.39 linear algebra::refcount< Type > Class Template Reference . . . . . . . . . . 218

4.39.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 219

4.39.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 220

4.39.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 220

4.40 linear algebra::refvector< TN > Class Template Reference . . . . . . . . . . 220

4.40.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 225

4.40.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 225

4.40.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 233

4.41 reorder general base< X > Class Template Reference . . . . . . . . . . . . . 233

4.41.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

4.41.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 235

4.41.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 235

4.41.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 236

4.42 simple prune< X > Class Template Reference . . . . . . . . . . . . . . . . . 237

4.42.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 238

4.42.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 238

x
4.43 linear algebra::sparse vector< TN > Class Template Reference . . . . . . . . 238

4.43.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 242

4.43.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 243

4.43.3 Friends and Related Function Documentation . . . . . . . . . . . . . 248

4.43.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 249

4.44 linear algebra::sparse vector infty< TN > Class Template Reference . . . . . 249

4.44.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 252

4.44.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 253

4.44.3 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 259

4.45 linear algebra::square< TN > Class Template Reference . . . . . . . . . . . 259

4.45.1 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 260

4.46 boost::stateful thread group Class Reference . . . . . . . . . . . . . . . . . . 260

4.47 linear algebra::symmetric< TN > Class Template Reference . . . . . . . . . 260

4.47.1 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 262

4.48 valerg Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

4.48.1 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 264

4.49 zmat Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

4.49.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

4.49.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 267

4.49.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 267

4.49.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 272

4.50 zmat connector Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . 272

4.50.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

xi
4.50.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 275

4.50.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 275

4.50.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 276

4.51 zmat entry Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

4.51.1 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 279

4.51.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 279

4.51.3 Friends and Related Function Documentation . . . . . . . . . . . . . 280

4.51.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 280

4.52 zmat opt Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

4.52.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

4.52.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . 282

4.52.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . 282

4.52.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . 283

5. Discrete Optimization in Chemical Space File Documentation 284

5.1 binary entropic.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . . 284

5.1.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

5.2 binary line search.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . 284

5.2.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

5.3 binary opt.cc File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

5.3.1 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 286

5.4 binarygdmc.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 286

5.4.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

5.5 binarysteepestdescent.hh File Reference . . . . . . . . . . . . . . . . . . . . . 286

xii
5.5.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

5.6 chem opt.cc File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

5.6.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

5.6.2 Define Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . 287

5.7 chem opt.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

5.8 chemgroup.cc File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

5.8.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

5.8.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 288

5.9 chemgroup.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

5.9.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

5.9.2 Typedef Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 289

5.10 chemident.cc File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

5.10.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

5.10.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 290

5.10.3 Variable Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 290

5.11 chemident.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

5.11.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

5.12 concepts.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

5.12.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 292

5.13 entropic aux.cc File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 292

5.13.1 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 292

5.14 entropic aux.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 293

5.14.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

xiii
5.14.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 294

5.15 gen base entropic.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . 294

5.16 genbase-grad-ls.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . . 294

5.16.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

5.17 genbase-l-s.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

5.17.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

5.18 generalbaseiterator.cc File Reference . . . . . . . . . . . . . . . . . . . . . . 295

5.18.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

5.19 generalbaseiterator.hh File Reference . . . . . . . . . . . . . . . . . . . . . . 296

5.19.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

5.20 has gradients hessian data.decl File Reference . . . . . . . . . . . . . . . . . 296

5.21 has gradients hessian data.hh File Reference . . . . . . . . . . . . . . . . . . 296

5.22 include/BCR CPP LA/ABmBA.hh File Reference . . . . . . . . . . . . . . . 297

5.22.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

5.23 include/BCR CPP LA/ABpBA.hh File Reference . . . . . . . . . . . . . . . 298

5.23.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 300

5.24 include/BCR CPP LA/asymmetric.decl File Reference . . . . . . . . . . . . 300

5.24.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

5.25 include/BCR CPP LA/asymmetric.h File Reference . . . . . . . . . . . . . . 301

5.25.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

5.26 include/BCR CPP LA/class extensions.decl File Reference . . . . . . . . . . 301

5.26.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

5.27 include/BCR CPP LA/class extensions.hh File Reference . . . . . . . . . . . 304

xiv
5.27.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 306

5.28 include/BCR CPP LA/invert sym.h File Reference . . . . . . . . . . . . . . 306

5.28.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

5.29 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

5.30 include/BCR CPP LA/linear algebra.decl File Reference . . . . . . . . . . . 308

5.30.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

5.31 include/BCR CPP LA/linear algebra.h File Reference . . . . . . . . . . . . . 309

5.32 include/BCR CPP LA/mat asym full.decl File Reference . . . . . . . . . . . 309

5.32.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

5.33 include/BCR CPP LA/mat asym full.h File Reference . . . . . . . . . . . . 310

5.33.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

5.34 include/BCR CPP LA/mat asym sparse.decl File Reference . . . . . . . . . 311

5.35 include/BCR CPP LA/mat asym sparse.h File Reference . . . . . . . . . . . 311

5.36 include/BCR CPP LA/mat full.decl File Reference . . . . . . . . . . . . . . 312

5.36.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

5.37 include/BCR CPP LA/mat full.h File Reference . . . . . . . . . . . . . . . . 312

5.38 mat full.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

5.39 include/BCR CPP LA/mat sparse.decl File Reference . . . . . . . . . . . . . 313

5.39.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

5.40 include/BCR CPP LA/mat sparse.h File Reference . . . . . . . . . . . . . . 314

5.40.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

5.41 include/BCR CPP LA/mat sym full.decl File Reference . . . . . . . . . . . 314

5.41.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

xv
5.42 include/BCR CPP LA/mat sym full.h File Reference . . . . . . . . . . . . . 315

5.42.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

5.43 include/BCR CPP LA/mat sym sparse.decl File Reference . . . . . . . . . . 316

5.43.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

5.44 include/BCR CPP LA/mat sym sparse.h File Reference . . . . . . . . . . . 316

5.44.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

5.45 include/BCR CPP LA/mat sym sparse eigen.decl File Reference . . . . . . . 317

5.45.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

5.46 include/BCR CPP LA/mat sym sparse eigen.h File Reference . . . . . . . . 317

5.46.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

5.47 include/BCR CPP LA/matrix.decl File Reference . . . . . . . . . . . . . . . 318

5.47.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

5.48 include/BCR CPP LA/matrix.h File Reference . . . . . . . . . . . . . . . . 318

5.48.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

5.49 include/BCR CPP LA/polynomial.decl File Reference . . . . . . . . . . . . 319

5.49.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

5.50 include/BCR CPP LA/polynomial.h File Reference . . . . . . . . . . . . . . 319

5.50.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

5.51 include/BCR CPP LA/refcount.decl File Reference . . . . . . . . . . . . . . 320

5.51.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

5.52 include/BCR CPP LA/refcount.h File Reference . . . . . . . . . . . . . . . . 320

5.52.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

5.53 include/BCR CPP LA/sparse vector.decl File Reference . . . . . . . . . . . 321

xvi
5.53.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

5.54 include/BCR CPP LA/sparse vector.h File Reference . . . . . . . . . . . . . 322

5.54.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

5.55 include/BCR CPP LA/sparse vector infty.decl File Reference . . . . . . . . 323

5.55.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

5.56 include/BCR CPP LA/sparse vector infty.h File Reference . . . . . . . . . . 323

5.56.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

5.57 include/BCR CPP LA/square.decl File Reference . . . . . . . . . . . . . . . 323

5.57.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

5.58 include/BCR CPP LA/square.h File Reference . . . . . . . . . . . . . . . . . 324

5.58.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

5.59 include/BCR CPP LA/symmetric.decl File Reference . . . . . . . . . . . . . 324

5.59.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

5.60 include/BCR CPP LA/symmetric.h File Reference . . . . . . . . . . . . . . 325

5.60.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

5.61 include/BCR CPP LA/trace AB.hh File Reference . . . . . . . . . . . . . . 325

5.61.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

5.62 include/sorting functions.hh File Reference . . . . . . . . . . . . . . . . . . . 326

5.62.1 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 326

5.63 include/stateful thread group.hh File Reference . . . . . . . . . . . . . . . . 326

5.64 stateful thread group.hh File Reference . . . . . . . . . . . . . . . . . . . . . 327

5.65 isthreadableabstract.h File Reference . . . . . . . . . . . . . . . . . . . . . . 328

5.65.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

xvii
5.66 Library data.cc File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 328

5.66.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

5.67 Library data.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 329

5.68 noprune.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

5.68.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

5.69 optimizeabstract.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . 329

5.69.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

5.70 prunerabstract.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . 330

5.70.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

5.71 reordergeneralbase.hh File Reference . . . . . . . . . . . . . . . . . . . . . . 330

5.72 simpleprune.cc File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . 330

5.72.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

5.73 simpleprune.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

5.73.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

5.74 typedefs.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

5.74.1 Typedef Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 332

5.74.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 332

5.74.3 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

5.75 zmat.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

5.75.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

5.76 zmat opt.cc File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

5.76.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

5.76.2 Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 334

xviii
5.77 zmat opt.hh File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

5.77.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

6. Discrete Optimization in Chemical Space Example Documentation 334

6.1 carbazoles.inp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

6.2 ChemGroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

6.3 vanilla-rings.inp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

Distribution 391

xix
1. Introduction

1.1 Usage

These modules include a reference counted Linear Algebra namespace (linear algebra) for

easy manipulation and a general substitution class based on recursion (ChemIdent). In the

main driver, the function calc property() executes ./property script. The secondary driver

executes an energy computation via ./energy script.

To test the program, copy all files from the test directory to your working directory and

invoke

/path_to_src/discrete_opt ftc-input.inp

The result should be a simple optimization of the hyperpolarizibility.

calc property() will generate a .zmat file which will hold the Z-matrix of the current

molecule. The prefix will be the current number of visited configurations followed by the

current conformation and overall structures visited. See calc property() for details.

energy script must return .rconsts, .rvars, .energy files on a successful run.

• .rconsts must contain the optimized constants of the Z-matrix from the geometry

optimization.

• .rvars must contain the optimized variables of the Z-matrix from the geometry

optimization.

• .result holds the result of the objective function.

• .energy holds the energy of the final geometry.

property script must return .result and potentially .penalty files on a successful run.

• .result holds the result of the objective function.

• .penalty contains a penalty value.

To access the program flow go to main(). For information on the representation of

molecules see class ChemIdent. For information on the input file syntax see

ChemIdent::ChemIdent(stringstream& s).

1
1.1.1 Command Line Options

Parameters:

−p Switches pruning or heuristics on.

See also:

noprune, simple prune, reorder general base.

Parameters:

-sub-method <method>

-sm <method> details the sub-method to be used. Currently this includes

binary line search, GBLS (gen base LS), GBGLS (gen base grad LS), SD, steepest descent

(binary steepest descent)

-m <method> Supplies the method to be used. Options include all listed under

sub-methods and GBEN (gen base entropic), GDMC (binary gdmc)

-T <temperature> provides a fictitious temperature for GDMC calculations.

-TS <steps> provides the number of steps to tighten selection criteria for GDMC.

-MS <steps> Maximum number of evaluations used in GBEN and GDMC.

1.2 Installation

• Untar and unzip the tarball. The source will be extracted into discrete opt/.

• Change direcory to discrete opt/src and edit Doxyfile to change the documentation

path to your liking.

• To build the code, execute: make

• For Documentation execute:

make docs

• For the debugable version execute:

make discrete_opt.d

MakeVars and Makefile contain the compilation information which you may want to change.

The executable will be named discrete opt.

2
2. Discrete Optimization in Chemical Space Module

Documentation

2.1 Discrete Optimization of Chemical Space

Files

• file Library data.cc

Implementations of the Library class for discrete spaces.

Classes

• class has gradients data < X >

Abstract class for discrete optimizations.

• class has hessians data < X >

Abstract class for discrete optimizations.

• class Library data

Abstract class for discrete optimizations.

Functions

• class Library data & Library data::operator= (const Library data &d)

Assignment operator.

• void Library data::set Name (const string &A) const

Sets the name as written for the purpose of writing files or other I/O.

2.1.1 Function Documentation

2.1.1.1 Library data & Library data::operator= (const Library data & d)

[inherited]

2.1.1.2 void Library data::set Name (const string & A) const

[inherited]

3
2.2 Linear Algebra Package with Sparse Implementations

Files

• file ABmBA.hh

• file ABpBA.hh

• file asymmetric.decl

Provide declarations for antisymmetric full matrices.

• file asymmetric.h

Provide manipulations for antisymmetric full matrices.

• file class extensions.decl

Declarations of general expansions for LA.

• file class extensions.hh

General expansions for LA.

• file linear algebra.decl

Namespace Class Declarations.

• file mat asym full.decl

Provide declarations for antisymmetric full matrices.

• file mat asym full.h

Provide manipulations for antisymmetric full matrices.

• file mat sym sparse.decl

Provide declarations for antisymmetric sparse matrices.

• file mat sym sparse.h

Provide functionality for symmetric sparse matrices.

• file mat full.decl

Provide declarations for full matrix and vector interactions.

• file mat sparse.decl

Provide declarations for sparse matrix and vector interactions.

• file mat sparse.h

Provide functionality for sparse matrix and vector interactions.

• file mat sym full.decl

Provide declarations for symmetric full matrices.

4
• file mat sym full.h

Provide manipulatins for symmetric full matrices.

• file mat sym sparse eigen.decl

Eigenvalue related declarations.

• file mat sym sparse eigen.h

Eigenvalue related routines.

• file matrix.decl

Declares fundamentals of matrices.

• file matrix.h

Describes fundamentals of matrices.

• file polynomial.decl

Class declarations for polynomial.

• file polynomial.h

Implementations for a class of polynomials.

• file refcount.decl

Contains the declarations to a reference counted vector class as well as general

reference counting.

• file refcount.h

Contains a reference counted vector class as well as general reference counting.

• file sparse vector.decl

Provide declarations for sparse vector interactions.

• file sparse vector.h

Provide functionality for sparse vectors.

• file sparse vector infty.decl

Provide declarations for sparse vector interactions of infinite dimensions.

• file sparse vector infty.h

Provide functionality for sparse vectors of infinite dimension.

• file square.decl

Declares fundamentals of square matrices.

• file square.h

Describes fundamentals of matrices.

5
• file symmetric.decl

Declares fundamentals of matrices.

• file symmetric.h

Describes fundamentals of symmetric matrices.

• file trace AB.hh

get the trace of matrix products.

Namespaces

• namespace linear algebra

Linear algebra Namespace.

Functions

• void linear algebra::mat sym sparse::gen mat (const sparse vector< TN > &a, const

sparse vector< TN > &b, TN correction)

Produce the necessary ij∗ + ji∗.

• mat sparse< TN > linear algebra::mat sym sparse::householder (vector< TN >

&diagonal, vector< TN > &subdiagonal)

This routine produces the diagonal, sub/superdiagonal and transformation matrix

for the Householder transformation of a sparse symmetric matrix.

• mat sparse< TN > linear algebra::mat sym sparse::householder (refvector< TN >

&diagonal, refvector< TN > &subdiagonal)

This routine produces the diagonal, sub/superdiagonal and transformation matrix

for the Householder transformation of a sparse symmetric matrix.

• void gen mat (const sparse vector< TN > &a, const sparse vector< TN > &b, TN

correction)

Produce the necessary ij∗ + ji∗.

• mat sparse< TN > householder (vector< TN > &diagonal, vector< TN >

&subdiagonal)

This routine produces the diagonal, sub/superdiagonal and transformation matrix

for the Householder transformation of a sparse symmetric matrix.

• mat sparse< TN > householder (refvector< TN > &diagonal, refvector< TN >

&subdiagonal)

This routine produces the diagonal, sub/superdiagonal and transformation matrix

for the Householder transformation of a sparse symmetric matrix.

6
• template<class TN> void std::operator>> (const vector< TN > &a, ostream

&OUT)

• template<typename TN> void std::operator>> (const TN &a, ostream &OUT)

2.2.1 Function Documentation

2.2.1.1 void gen mat (const sparse vector< TN > & a, const sparse vector< TN

> & b, TN correction)

2.2.1.2 template<class TN> void linear algebra::mat sym sparse< TN

>::gen mat (const sparse vector< TN > & a, const sparse vector< TN > & b,

TN correction) [inherited]

2.2.1.3 mat sparse< TN > householder (refvector < TN > & diagonal,

refvector< TN > & subdiagonal)

2.2.1.4 mat sparse< TN >householder (vector< TN > & diagonal, vector< TN

> & subdiagonal)

2.2.1.5 template<class TN> mat sparse< TN >

linear algebra::mat sym −sparse< TN >::householder (refvector< TN > &

diagonal, refvector< TN > & subdiagonal)[inherited]

2.2.1.6 template<class TN> mat sparse< TN >

linear algebra::mat sym −sparse< TN >::householder (vector< TN > &

diagonal), vector< TN > & subdiagonal)[inherited]The aspired transformation is a

multiplication by (I − vv∗

) where v is (±e1a12+ a12)/

±a12,1a12+ a122. Notice

that we begin counting at 0. Also see mat sym full::householder on the transformstions.

2.2.1.7 template<typename TN> void std::operator>> (const TN & a, ostream

& OUT)

2.2.1.8 template<class TN> void std::operator>> (const vector< TN > & a, ostream & OUT)

7
3. Discrete Optimization in Chemical Space Namespace

Documentation

3.1 Boost Namespace Reference

Classes

• class stateful thread group

3.2 Concepts Namespace Reference

Namespace reserved for concepts.

Classes

• class Library

Defines the concept of an addressable set of values.

• class base iterator

Defines the concept of an iterator for a class of bases.

• class pruner

Defines the concept of an addressable set of values.

• class has gradients

Defines the concept of a class that has gradients.

• class has hessians

Defines the concept of a class that has hessians.

• class has Name

Defines the concept of a class that has a private string Name.

• class is threadable

Defines the concept of a class that is threadable.

• class has optimize

Defines the concept of a class that has an optimize member.

• class has stacksize

Defines the concept of a class that has a stack member.

8
Functions

• template<typename T> void same type (T const &, T const &)

Dummy function to determine type equality.

3.2.1 Function Documentation

3.2.1.1 template<typename T> void Concepts::same type (T const &, T const &)

3.3 linear algebra Namespace Reference

Linear algebra Namespace.

Classes

• class asymmetric

Class of antisymmetric matrices.

• class mat asym full

mat asym full uses packing for full antisymmetric matrices.

• class mat asym sparse

mat asym sparse packs sparse column matrices into a comfortable format.

• class mat full

Class of full column matrices.

• class mat sparse

Class of sparse column matrices.

• class mat sym full

mat sym full uses packing for full symmetric matrices.

• class mat sym sparse

mat sym sparse packs sparse column matrices into a comfortable format.

• class matrix

matrix is a basic class which covers all kinds of matrices.

• class polynomial

A class for polynomials.

9
• class refcount

Class refcount provides reference counted pointers. Most basic use.

• class refvector

Class refvector provides reference counted vectors.

• class sparse vector

A class for sparse vectors.

• class sparse vector infty

A class for sparse vectors.

• class square

The square matrix class contains all n by n matrices.

• class symmetric

The symmetric class contains all symmetric matrices.

Functions

• template<class TN> mat sym full< TN > & (const mat sym full< TN > A, const

mat asym full< TN > B, mat sym full< TN > &r)

Computes the commutator AB-BA.

• template<class TN> mat asym full< TN > ABmBA (const mat sym full< TN > A,

const mat asym full< TN > B)

Computes the commutator AB-BA.

• template<class TN> mat asym full< TN > & ABmBA (const mat sym full< TN >

B, mat asym full< TN > &r)

Computes the commutator AB-BA.

• template<class TN> mat asym full< TN > ABmBA (const mat asym full< TN > A,

const mat sym full< TN > B)

Computes the commutator AB-BA.

• template<class TN> mat asym full< TN > & ABmBA (const mat asym full< TN >

&A, const mat asym full< TN > &B, mat asym full< TN > &r)

Computes the commutator AB-BA.

• template<class TN> mat asym full< TN > ABmBA (const mat asym full< TN >

&A, const mat asym full< TN > &B)

Computes the commutator AB-BA.

10
• template<class TN> mat asym full< TN > & ABpBA (const mat sym full< TN >

&A, const mat asym full< TN > &B, mat asym full< TN > &r)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > ABpBA (const mat sym full< TN > &A,

const mat asym full< TN > &B)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > ABpBA (const mat full< TN > &A, const

mat asym full< TN > &B, mat asym full< TN > &r)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > ABpBA (const mat full< TN > A, const

mat asym full< TN > B)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > & ABpBA (const mat asym full< TN >

A, const mat sym full< TN > B, mat asym full< TN > &r)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > ABpBA (const mat asym full< TN > A,

const mat sym full< TN > B)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > & ABpBA (const mat sym full< TN >

A, const mat asym sparse< TN > B, mat asym full< TN > &r)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > ABpBA (const mat sym full< TN > A,

const mat asym sparse< TN > B)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > & ABpBA (const mat asym sparse< TN

> A, const mat sym full< TN > B,mat asym full< TN > &r)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > ABpBA (const mat asym sparse< TN >

A, const mat sym full< TN > B)

Computes the anti-commutator AB+BA.

• template<class TN>mat sym full< TN > & ABpBA (const mat sym full< TN > A,

mat sym full< TN > B, mat sym full< TN > &r, mat sym full< TN > &I, mat full<

TN > &I2)

Computes the anti-commutator AB+BA.

11
• template<class TN> mat sym full< TN > & ABpBA (const mat sym full< TN > A,

mat sym full< TN > B, mat sym full< TN > &r)

Computes the anti-commutator AB+BA.

• template<class TN> mat sym full< TN > & ABpBA (const mat sym full< TN >

&A, const mat sym full< TN > &B, mat sym full< TN > &r, mat sym full< TN >

&I)

Computes the anti-commutator AB+BA.

• template<class TN> mat sym full< TN > ABpBA (const mat sym full< TN > &A,

const mat sym full< TN > &B)

Computes the anti-commutator AB+BA.

• template<class TN> mat sym full< TN > & ABpBA (const mat sym full< TN >

&A, const mat sym sparse< TN > &B, mat sym full< TN > &r, mat full< TN >

&I2)

Computes the anti-commutator AB+BA.

• template<class TN> mat sym full< TN > & ABpBA (const mat sym full< TN >

&A, const mat sym sparse< TN > &B, mat sym full< TN > &r)

Computes the anti-commutator AB+BA.

• template<class TN> mat sym full< TN > ABpBA (const mat sym full< TN > &A,

const mat sym sparse< TN > &B)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > & ABpBA (const mat asym full< TN >

&A, const mat sym sparse< TN > &B, mat asym full< TN > &r, mat full< TN >

&I2)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym sparse< TN > & ABpBA (const mat asym full< TN

> &A, const mat sym sparse< TN > &B, mat asym sparse< TN > &r, mat sparse<

TN > &I2)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > & ABpBA (const mat asym full< TN >

&A, const mat sym sparse< TN > &B, mat asym full< TN > &r, mat sparse< TN

> &I2)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > & ABpBA (const mat asym full< TN >

&A, const mat sym sparse< TN > &B, mat asym full< TN > &r)

Computes the anti-commutator AB+BA.

12
• template<class TN> mat asym sparse< TN > & ABpBA (const mat asym full< TN

> &A, const mat sym sparse< TN > &B, mat asym sparse< TN > &r)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > ABpBA (const mat asym full< TN >

&A, const mat sym sparse< TN > &B)

Computes the anti-commutator AB+BA.

• template<class T> mat sym full< T > ABpBA (const mat asym full< T > &A, const

mat asym full< T > &B)

Commutes the anti-commutator AB+BA. Lame and lazy version.

• template<class TN> matrix< TN > & zero (matrix< TN > &r)

• template<class TN> mat full< TN > & zero (mat full< TN > &r)

• template<class TN> mat sym full< TN > & zero (mat sym full< TN > &r)

• template<class TN> mat asym full< TN > & zero (mat asym full< TN > &r)

• template<class TN> refvector< TN > & zero (refvector< TN > &r)

• double & zero (double &r)

• double & one (double &r)

• template<class TN> matrix< TN > & one (matrix< TN > &r)

• void copy (double &a, const double &b, const long i)

• void copy (double &a, const double &b)

• void copy (long &a, const long &b, const long i)

13
• void copy (long &a, const long &b)

• template<class TN> void copy (mat sym sparse< TN > &a, mat sym sparse< TN >

&b, const long i)

• template<class TN> void copy (mat sym sparse< TN > &a, const mat sym sparse<

TN > &b)

• template<class TN> void copy (mat sym sparse< TN > &a, mat sym sparse< TN >

&b)

• template<class TN> void copy (mat sym full< TN > &a, mat sym full< TN > &b,

const long i)

• template<class TN> void copy (mat sym full< TN > &a, const mat sym full< TN >

&b)

• template<class TN> void copy (mat sym full< TN > &a, mat sym full< TN > &b)

• template<class TN> void copy (mat full< TN > &a, mat full< TN > &b, const long i)

• template<class TN> void copy (mat full< TN > &a, const mat full< TN > &b)

• template<class TN> void copy (mat full< TN > &a, mat full< TN > &b)

• template<class TN> void copy (mat sparse< TN > &a, mat sparse< TN > &b, const

long i)

• template<class TN> void copy (mat sparse< TN > &a, const mat sparse< TN > &b)

• template<class TN> void copy (mat sparse< TN > &a, mat sparse< TN > &b)

14
• template<class TN> void copy (refvector< TN > &a, refvector< TN > &b, const

long i)

• template<class TN> void copy (refvector< TN > &a, const refvector< TN > &b)

• template<class TN> void copy (refvector< TN > &a, refvector< TN > &b)

• template<class TN> void copy (sparse vector< TN > &a, sparse vector< TN > &b,

const long i)

• template<class TN> void copy (sparse vector< TN > &a, const sparse vector< TN

> &b)

• template<class C> void copy (C &a, const C &b)

• template<class TN> void display (const matrix< TN > &a, ostream &outs)

• template<class TN> void display (const refvector< TN > &a, ostream &outs)

• void display (const double &a, ostream &outs)

• template<class TNTN> mat full< TNTN > exp (const mat asym full< TNTN > &A)

• template<class TNTN> mat full< TNTN > dexp (mat asym full< TNTN > A, const

long k, const long l)

• template<class TN> mat sym sparse< TN > & zero (mat sym sparse< TN > &r)

• template<class TN> mat sparse< TN > & zero (mat sparse< TN > &r)

• template<typename TN> TN & zero (TN &r)

15
• void copy (bool &a, const bool &b)

• template<class TN> void copy (mat full< TN > &a, const mat full< TN > &b, const

long i)

• template<class TN> void copy (mat sparse< TN > &a, const mat sparse< TN > &b,

const long i)

• template<class TN> void copy (mat sym sparse< TN > &a, const mat sym sparse<

TN > &b, const long i)

• template<class TN> void copy (mat sym full< TN > &a, const mat sym full< TN >

&b, const long i)

• template<class TN> void copy (refvector< TN > &a, const refvector< TN > &b,

const long i)

• template<class TN> TN operator ∗ (const std::vector< TN > &a, const std::vector<

TN > &b)

Scalar product of two full vectors.

• template<class TN> TN operator ∗ (const vector< TN > &a, const vector< TN >

&b)

Scalar product of two full vectors.

• template<class TN> TN operator ∗ (sparse vector< TN > a, std::vector< TN > b)

Scalar product of a sparse vector with a full vector.

• template<class TN> TN operator ∗ (sparse vector< TN > a, refvector< TN > b)

Scalar product of a sparse vector with a full refvector.

• template<class TN> TN operator ∗ (sparse vector< TN > a, vector< TN > b)

Scalar product of a sparse vector with a full vector.

• template<class TN> TN trace AB (const mat sym full< TN > &A, const mat sym full<

TN > &B)

16
• template<class TN> TN trace AB (const mat sym full< TN > &A, const mat sym sparse<

TN > &B)

• template<class T> T trace AB (const mat asym full< T > &A, const mat asym full<

T > &B)

3.3.1 Function Documentation

3.3.1.1 template<class TN> mat sym full<TN>& linear algebra::ABmBA (const mat sym full<

TN > A, const mat asym full< TN > B, mat sym full< TN > & r )

Here is the call graph for this function:

linear_algebra::ABmBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::matrix::size

3.3.1.2 template<class TN> mat asym full<TN> linear algebra::ABmBA (const mat sym full<

TN > A, const mat asym full< TN > B)

Here is the call graph for this function:

linear_algebra::ABmBA linear_algebra::ABmBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::matrix::size

3.3.1.3 template<class TN> mat asym full<TN>& linear algebra::ABmBA (const mat asym full<

TN > A, const mat sym full< TN > B, mat asym full< TN > & r )

Here is the call graph for this function:

linear_algebra::ABmBA linear_algebra::ABmBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::matrix::size

17
3.3.1.4 template<class TN> mat asym full<TN> linear algebra::ABmBA (const mat asym full<

TN > A, const mat sym full< TN > B)

Here is the call graph for this function:

linear_algebra::ABmBA linear_algebra::ABmBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::matrix::size

3.3.1.5 template<class TN> mat asym full<TN>& linear algebra::ABmBA (const mat asym full<

TN > & A, const mat asym full< TN > & B, mat asym full< TN > & r )

Here is the call graph for this function:

linear_algebra::ABmBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.6 template<class TN> mat asym full<TN> linear algebra::ABmBA (const mat asym full<

TN > & A, const mat asym full< TN > & B)

Here is the call graph for this function:

linear_algebra::ABmBA linear_algebra::ABmBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::matrix::size

3.3.1.7 template<class TN> mat asym full<TN>& linear algebra::ABpBA (const mat sym full<

TN > & A, const mat asym full< TN > & B, mat asym full< TN > & r )

Here is the call graph for this function:

18
linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.8 template<class TN> mat asym full<TN> linear algebra::ABpBA (const mat sym full<

TN > & A, const mat asym full< TN > & B—)

Here is the call graph for this function:

linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.9 template<class TN> mat asym full<TN> linear algebra::ABpBA (const mat full<

TN > & A, const mat asym full< TN > & B, mat asym full< TN > & r )

Here is the call graph for this function:

linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

3.3.1.10 template<class TN> mat asym full<TN> linear algebra::ABpBA (const mat full<

TN > A, const mat asym full< TN > B)

Here is the call graph for this function:

19
linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.11 template<class TN> mat asym full<TN>& linear algebra::ABpBA (const mat asym full<

TN > A, const mat sym full< TN > B, mat asym full< TN > & r )

Here is the call graph for this function:

linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.12 template<class TN> mat asym full<TN> linear algebra::ABpBA (const mat asym full<

TN > A, const mat sym full< TN > B)

Here is the call graph for this function:

linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.13 template<class TN> mat4 4asym4 4full<TN>& linear algebra::ABpBA (const mat sym full<

TN > A, const mat asym sparse< TN > B, mat asym full< TN > & r )

Todo

Need optimization taking advantage of sparse structure.

Here is the call graph for this function:

20
linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.14 template<class TN> mat asym full<TN> linear algebra::ABpBA (const mat sym full<

TN > A, const mat asym sparse< TN > B)

Here is the call graph for this function:

linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.15 template<class TN> mat asym full<TN>& linear algebra::ABpBA (const mat asym sparse<

TN > A, const mat sym full< TN > B, mat asym full< TN > & r )

Here is the call graph for this function:

linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.16 template<class TN> mat asym full<TN> linear algebra::ABpBA (const mat asym sparse<

TN > A, const mat sym full< TN > B)

Here is the call graph for this function:

21
linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.17 template<class TN> mat sym full<TN>& linear algebra::ABpBA (const mat sym full<

TN > A, mat sym full< TN > B, mat sym full< TN > & r , mat sym full< TN > & I,

mat full< TN > & I2 )

Here is the call graph for this function:

linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::matrix::size

linear_algebra::mat_sym_full::utu linear_algebra::mat_sym_full::multiply

3.3.1.18 template<class TN> mat sym full<TN>& linear algebra::ABpBA (const mat sym full<

TN > A, mat sym full< TN > B, mat sym full< TN > & r )

Here is the call graph for this function:

linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

22
3.3.19 template<class TN> mat sym full<TN>& linear algebra::ABpBA (const mat sym full<

TN > & A, const mat sym full< TN > & B, mat sym full< TN > & r , mat sym full< TN

> & I)

Here is the call graph for this function:

linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.20 template<class TN> mat sym full<TN> linear algebra::ABpBA (const mat sym full<

TN > & A, const mat sym full< TN > & B)

Here is the call graph for this function:

linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.21 template<class TN> mat sym full<TN>& linear algebra::ABpBA (const mat sym full<

TN > & A, const mat sym sparse< TN > & B, mat sym full< TN > & r , mat full< TN

> & I2 )

Here is the call graph for this function:

linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::mat_sym_sparse::multiply

linear_algebra::matrix::rows

23
3.3.1.22 template<class TN> mat sym full<TN>& linear algebra::ABpBA (const mat sym full<

TN > & A, const mat sym sparse< TN > & B, mat sym full< TN > & r )

Here is the call graph for this function:

linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.23 template<class TN> mat sym full<TN> linear algebra::ABpBA (const mat sym full<

TN > & A, const mat sym sparse< TN > & B)

Here is the call graph for this function:

linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.24 template<class TN> mat asym full<TN>& linear algebra::ABpBA (const mat asym full<

TN > & A, const mat sym sparse< TN > & B, mat asym full< TN > & r , mat full< TN

> & [I2 )

Here is the call graph for this function:

linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

24
3.3.1.25 template<class TN> mat asym sparse<TN>& linear algebra::ABpBA (const mat asym full<

TN > & A, const mat sym sparse< TN > & B, mat asym sparse< TN > & r , mat sparse<

TN > & I2 )

Here is the call graph for this function:

linear_algebra::ABpBA

linear_algebra::mat_asym_sparse::add

linear_algebra::matrix::cols linear_algebra::mat_sparse::index

linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::rows

linear_algebra::mat_asym_sparse::prune

linear_algebra::mat_sparse::size

linear_algebra::mat_asym_sparse::zero

linear_algebra::refvector::insert

linear_algebra::mat_asym_sparse::is_col_nonzero

linear_algebra::refvector::erase

linear_algebra::mat_asym_sparse::size

3.3.1.26 template<class TN> mat asym full<TN>& linear algebra::ABpBA (const mat asym full<

TN > & A, const mat sym sparse< TN > & B, mat asym full< TN > & r , mat sparse<

TN > & I2 )

Here is the call graph for this function:

linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::mat_sparse::index

linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::rows

linear_algebra::mat_sparse::size

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

25
3.3.1.27 template<class TN> mat asym full<TN>& linear algebra::ABpBA (const mat asym full<

TN > & A, const mat sym sparse< TN > & B, mat asym full< TN > & r )

Here is the call graph for this function:

linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.28 template<class TN> mat asym sparse<TN>& linear algebra::ABpBA (const mat asym full<

TN > & A, const mat sym sparse< TN > & B, mat asym sparse< TN > & r )

Here is the call graph for this function:

linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.3.1.29 template<class TN> mat asym full<TN> linear algebra::ABpBA (const mat asym full<

TN > & A, const mat sym sparse< TN > & B)

Here is the call graph for this function:

linear_algebra::ABpBA linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

26
3.3.1.30 template<class T> mat sym full<T> linear algebra::ABpBA (const mat asym full<

T > & A, const mat asym full< T > & B)

Here is the call graph for this function:

linear_algebra::ABpBA

linear_algebra::matrix::cols

linear_algebra::matrix::rows

3.3.1.31 template<class TN> matrix<TN>& linear algebra::zero (matrix< TN > & r )[inline]

3.3.1.32 template<class TN> mat full< TN > & linear algebra::zero (mat full< TN > &

r )[inline]

Here is the call graph for this function:

linear_algebra::zero linear_algebra::mat_full::zero linear_algebra::zero

3.3.1.33 template<class TN> mat sym full< TN > & linear algebra::zero (mat sym full<

TN > & r )[inline]

Here is the call graph for this function:

linear_algebra::zero linear_algebra::mat_sym_full::zero

3.3.1.34 template<class TN> mat asym full< TN > & linear algebra::zero (mat asym full<

TN > & r )[inline]

Here is the call graph for this function:

27
linear_algebra::zero linear_algebra::mat_asym_full::zero

3.3.1.35 template<class TN> refvector< TN > & linear algebra::zero (refvector< TN > &

r )[inline]

Here is the call graph for this function:

linear_algebra::zero linear_algebra::refvector::zero

linear_algebra::refvector::dim

linear_algebra::zero

3.3.1.36 double & linear algebra::zero (double & r )[inline]

3.3.1.37 double & linear algebra::one (double & r )[inline]

3.3.1.38 template<class TN> matrix< TN > & linear algebra::one (matrix< TN > &

r )[inline]

3.3.1.39 void linear algebra::copy (double & a, const double & b, const long i)[inline]

3.3.1.40 void linear algebra::copy (double & a, const double & b)[inline]

3.3.1.41 void linear algebra::copy (long & a, const long & b, const long i)[inline]

3.3.1.42 void linear algebra::copy (long & a, const long & b)[inline]

3.3.1.43 template<class TN> void linear algebra::copy (mat sym sparse< TN > & a, mat sym sparse<

TN > & b, const long i)tt [inline]

3.3.1.44 template<class TN> void linear algebra::copy (mat sym sparse< TN > & a, const

mat sym sparse< TN > & b[inline]

Here is the call graph for this function:

linear_algebra::copy linear_algebra::mat_sym_sparse::copy

3.3.1.45 template<class TN> void linear algebra::copy (mat sym sparse< TN > & a, mata sym sparse<

TN > & b)[inline]

Here is the call graph for this function:

28
linear_algebra::copy linear_algebra::mat_sym_sparse::copy

3.3.1.46 template<class TN> void linear algebra::copy (mat sym full< TN > & a, mat sym full<

TN > & b, const long i)[inline]

3.3.1.47 template<class TN> void linear algebra::copy (mat sym full< TN > & a, const

mat sym full< TN > & b)[inline]

Here is the call graph for this function:

linear_algebra::copy linear_algebra::mat_sym_full::copy

3.3.1.48 template<class TN> void linear algebra::copy (mat sym full< TN > & a, mat sym full<

TN > & b)[inline]

Here is the call graph for this function:

linear_algebra::copy linear_algebra::mat_sym_full::copy

3.3.1.49 template<class TN> void linear algebra::copy (mat full< TN > & a, mat full< TN

> & b, const long i)[inline]

3.3.1.50 template<class TN> void linear algebra::copy (mat full< TN > & a, const mat full<

TN > & b)[inline]

Here is the call graph for this function:

29
linear_algebra::copy linear_algebra::mat_full::copy

3.3.1.51 template<class TN> void linear algebra::copy (mat full< TN > & a, mat full< TN

> & b)[inline]

Here is the call graph for this function:

linear_algebra::copy linear_algebra::mat_full::copy

3.3.1.52 template<class TN> void linear algebra::copy (mat sparse< TN > & a, mat sparse<

TN > & b, const long i)[inline]

3.3.1.53 template<class TN> void linear algebra::copy (mat sparse< TN > & a, const

mat sparse< TN > & b)[inline]

Here is the call graph for this function:

linear_algebra::copy linear_algebra::mat_sparse::copy linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

3.3.1.54 template<class TN> void linear algebra::copy (mat sparse< TN > & a, mat sparse<

TN > & b)[inline]

Here is the call graph for this function:

30
linear_algebra::copy linear_algebra::mat_sparse::copy linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

3.3.1.55 template<class TN> void linear algebra::copy (refvector< TN > & a, refvector<

TN > & b, const long i)[inline]

Here is the call graph for this function:

linear_algebra::copy linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

3.3.1.56 template<class TN> void linear algebra::copy (refvector< TN > & a, const refvector<

TN > & b){[inline]

Here is the call graph for this function:

linear_algebra::copy linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

3.3.1.57 template<class TN> void linear algebra::copy (refvector< TN > & a, refvector<

TN > & b){[inline]

3.3.1.58 template<class TN> void linear algebra::copy (sparse vector< TN > & a, sparse vector<

TN > & b, const long i)[inline]

Here is the call graph for this function:

31
linear_algebra::copy linear_algebra::sparse_vector::copy linear_algebra::refvector::vec

3.3.1.59 template<class TN> void linear algebra::copy (sparse vector< TN > & a, const

sparse vector< TN > & b)[inline]

Here is the call graph for this function:

linear_algebra::copy linear_algebra::sparse_vector::copy linear_algebra::refvector::vec

3.3.1.60 template<class C> void linear algebra::copy (C & a, const C & b)[inline]

3.3.1.61 template<class TN> void linear algebra::display (const matrix< TN > & a, ostream

& outs)[inline]

3.3.1.62 template<class TN> void linear algebra::display (const refvector< TN > & a, ostream & outs)[inline]

Here is the call graph for this function:

linear_algebra::display linear_algebra::refvector::display

linear_algebra::display

linear_algebra::refvector::size

3.3.1.63 void linear algebra::display (const double & a, ostream & outs)[inline]

3.3.1.64 template<class TNTN> mat full< TNTN > linear algebra::exp (const mat asym full<

TNTN > & A)

Here is the call graph for this function:

32
linear_algebra::exp linear_algebra::matrix::cols

3.3.1.65 template<class TNTN> mat full< TNTN > linear algebra::dexp (mat asym full<

TNTN > A, const long k, const long l)

Here is the call graph for this function:

linear_algebra::dexp

linear_algebra::matrix::cols

linear_algebra::mat_full::set

3.3.1.66 template<class TN> mat sym sparse<TN>& linear algebra::zero (mat sym sparse<

TN > & r )[inline]

Here is the call graph for this function:

linear_algebra::zero linear_algebra::mat_sym_sparse::zero

3.3.1.67 template<class TN> mat sparse<TN>& linear algebra::zero (mat sparse< TN >

& r )[inline]

3.3.1.68 template<typename TN> TN& linear algebra::zero (TN & r )[inline]

3.3.1.69 void linear algebra::copy (bool & a, const bool & b)[inline]

3.3.1.70 template<class TN> void linear algebra::copy (mat full< TN > & a, const mat full<

TN > & b, const long i){[inline]

Here is the call graph for this function:

33
linear_algebra::zero linear_algebra::mat_sparse::zero

linear_algebra::copy linear_algebra::mat_full::copy

3.3.1.71 template<class TN> void linear algebra::copy (mat sparse< TN > & a, const

mat sparse< TN > & b, const long i)[inline]

Here is the call graph for this function:

linear_algebra::copy linear_algebra::mat_sparse::copy linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

3.3.1.72 template<class TN> void linear algebra::copy (mat sym sparse< TN > & a, const

mat sym sparse< TN > & b, const long i)[inline]

Here is the call graph for this function:

34
linear_algebra::copy linear_algebra::mat_sym_sparse::copy

3.3.1.73 template<class TN> void linear algebra::copy (mat sym full< TN > & a, const

mat sym full< TN > & b, const long i)[inline]

Here is the call graph for this function:

linear_algebra::copy linear_algebra::mat_sym_full::copy

3.3.1.74 template<class TN> void linear algebra::copy (refvector< TN > & a, const refvector<

TN > & b, const long i)[inline]

Here is the call graph for this function:

linear_algebra::copy linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

3.3.1.75 template<class TN> TN linear algebra::operator ∗ (const std::vector< TN > & a,

const std::vector< TN > & b)

3.3.1.76 template<class TN> TN linear algebra::operator ∗ (const vector< TN > & a, const

vector< TN > & b)

3.3.1.77 template<class TN> TN linear algebra::operator ∗ (sparse vector< TN > a, std::vector<

TN > b)[inline]

3.3.1.78 template<class TN> TN linear algebra::operator ∗ (sparse vector< TN > a, refvector<

TN > b)[inline]

Here is the call graph for this function:

35
linear_algebra::operator * linear_algebra::refvector::vec

3.3.1.79 template<class TN> TN linear algebra::operator ∗ (sparse vector< TN > a, vector<

TN > b)[inline]

Here is the call graph for this function:

linear_algebra::operator *

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size linear_algebra::refvector::size

3.3.1.80 template<class TN> TN linear algebra::trace AB (const mat sym full< TN > &

A, const mat sym full< TN > & B)

Here is the call graph for this function:

linear_algebra::trace_AB

linear_algebra::matrix::cols

linear_algebra::matrix::rows

3.3.1.81 template<class TN> TN linear algebra::trace AB (const mat sym full< TN > &

A, const mat sym sparse< TN > & B)

Here is the call graph for this function:

36
linear_algebra::trace_AB

linear_algebra::matrix::cols

linear_algebra::mat_sym_sparse::index

linear_algebra::matrix::rows

linear_algebra::mat_sym_sparse::size

3.3.1.82 template<class T> T linear algebra::trace AB (const mat asym full< T > & A,

const mat asym full< T > & B)

Here is the call graph for this function:

linear_algebra::trace_AB

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

3.4 std Namespace Reference

Functions

• template<class TN> void (const vector< TN > &a, ostream &OUT)

• template<typename TN> void (const TN &a, ostream &OUT)

4. Discrete Optimization in Chemical Space Class

Documentation

4.1 linear algebra::asymmetric< TN > Class Template Reference

Class of antisymmetric matrices.

Inheritance diagram for linear algebra::asymmetric< TN >:

Collaboration diagram for linear algebra::asymmetric< TN >:

Public Member Functions

37
linear_algebra::asymmetric< TN >

linear_algebra::mat_asym_full< TN > linear_algebra::mat_asym_sparse< TN >

linear_algebra::square< TN >

linear_algebra::matrix< TN >

linear_algebra::asymmetric< TN >

linear_algebra::square< TN >

linear_algebra::matrix< TN >

• asymmetric< TN > & transpose ()

• asymmetric< TN > operator ∗ (const TN a) const

template<class TN> class linear algebra::asymmetric< TN >

4.1.1 Member Function Documentation

4.1.1.1 template<class TN> asymmetric< TN > linear algebra::asymmetric< TN

>::operator ∗ (const TN a) const

Reimplemented in linear algebra::mat asym full< TN >.

4.1.1.2 template<class TN> asymmetric< TN > & linear algebra::asymmetric< TN

>::transpose ()

The documentation for this class was generated from the following files:

• include/BCR CPP LA/asymmetric.decl

• include/BCR CPP LA/asymmetric.h

4.2 Concepts::base iterator< X > Class Template Reference

Concept defines an iterator for a class of bases.

38
#include <concepts.hh> Collaboration diagram for Concepts::base iterator< X >:

Concepts::base_iterator< X >

X

Y

Public Member Functions

• BOOST CONCEPT USAGE (base iterator)

Private Attributes

• X&Y

template<class X> class Concepts::base iterator< X >

4.2.1 Member Function Documentation

4.2.1.1 template<class X> Concepts::base iterator< X >::BOOST CONCEPT USAGE

base iterator< X >)

[inline]

Here is the call graph for this function:

Concepts::base_iterator::BOOST_CONCEPT_USAGE Concepts::same_type

4.2.2 Member Data Documentation

4.2.2.1 template<class X> X& Concepts::base iterator< X >::Y[private]

The documentation for this class was generated from the following file:

• concepts.hh

39
4.3 binary entropic< C > Class Template Reference

Class for enhanced sampling using an entropic measure of coverage.

#include <binary entropic.hh> Inheritance diagram for binary entropic< C >:

binary_entropic< C >

optimize_abstract

Collaboration diagram for binary entropic< C >:

binary_entropic< C >

optimize_abstract linear_algebra::refvector< long >

bases

C

opt_object

Public Member Functions

• binary entropic (const C &a)

Copy constructor.

• ulong optimize (ulong N) const

Meta-Optimize by generating maximally distant starting configurations.

• valerg get value (const ulong i) const

Public Attributes

• ulong nruns

Number of runs.

• long max steps

Maximum number of steps.

Protected Attributes

• C opt object

This is an optimization object of type C. This is the underlying optimization method.

40
• refvector< long > bases

This vector defines the substitution bases used in the optimization and entropic maximization (maximize entropic distance()).

Private Member Functions

• BOOST CONCEPT ASSERT ((Concepts::has optimize< C >))

Require C to conform to an optimization.

• BOOST CONCEPT ASSERT ((Concepts::pruner< C >))

Require C to conform to the pruner concept.

4.3.1 Detailed Description

template<class C> class binary entropic< C >

This class provides a meta-optimization mechanism. The secondary optimizer C has to

comply with the Concepts::has optimize and Concepts::pruner concepts in order for the

optimization to work. After each successful optimization the visited configurations are

analysed for coverage of the library. maximize entropic distance() is then used to

determine the next best starting point.

4.3.2 Constructor & Destructor Documentation

4.3.2.1 template<class C> binary entropic< C >::binary entropic (const C & a)[inline]

4.3.3 Member Function Documentation

4.3.3.1 template<class C> binary entropic< C >::BOOST CONCEPT ASSERT

((Concepts::pruner< C >)) [private]

4.3.3.2 template<class C> binary entropic< C >::BOOST CONCEPT ASSERT

((Concepts::has optimize< C >)) [private]

4.3.3.3 template<class C> valerg binary entropic< C >::get value (const ulong i) const

[inline]

4.3.3.4 template<class C> ulong binary entropic< C >::optimize (ulong N ) const [inline,

virtual]

The metric used to determine the distance is implemented and explained in

maximize entropic distance().

41
Implements optimize abstract.

Here is the call graph for this function:

binary_entropic::optimize maximize_entropic_distance

4.3.4 Member Data Documentation

4.3.4.1 template<class C> refvector<long> binary entropic< C >::bases[protected]

4.3.4.2 template<class C> long binary entropic< C >::max steps

4.3.4.3 template<class C>ulong binary entropic< C >::nruns

4.3.4.4 template<class C> C binary entropic< C >::opt object[protected]

The documentation for this class was generated from the following file:

• binary entropic.hh

4.4 binary gdmc< C > Class Template Reference

Gradient-directed Monte Carlo performed on a hypercube.

#include <binarygdmc.hh>

Inheritance diagram for binary gdmc< C >:

binary_gdmc< C >

optimize_abstract

42
Collaboration diagram for binary gdmc< C >:

binary_gdmc< C >

optimize_abstract C

opt_object

Public Member Functions

• binary gdmc (const C &a)

Copy Constructor.

• ulong optimize (ulong N) const

Gradient-directed Monte-Carlo optimization.

• valerg get value (const ulong i) const

Return the value for molecule i.

Public Attributes

• double T

Temperature-analogue to be used for Monte-Carlo evaluations.

• ulong tight steps

Number of tightening steps. Determines the strictness of acceptance.

• ulong max steps

Maximum number of steps.

Private Member Functions

• BOOST CONCEPT ASSERT ((Concepts::has gradients< C >))

Require C to conform to the Concepts::has gradients concept.

• BOOST CONCEPT ASSERT ((Concepts::pruner< C >))

Require C to conform to the Concepts::pruner concept.

• BOOST CONCEPT ASSERT ((Concepts::has optimize< C >))

Require C to conform to an optimization.

43
Private Attributes

• C opt object

This is the library object to be used in the optimization.

4.4.1 Detailed Description

template<class C> class binary gdmc< C > This class takes a Library object and

performs an optimization. The Library is arranged in a hypercube topology in which each

molecule occupies a vertex on the hull of the cube. After a local optimum has been

reached, a Monte-Carlo simulation is performed to determine a new starting point. Each

time a new minimum is found the acceptance criteria become more strict.

4.4.2 Constructor & Destructor Documentation

4.4.2.1 template<class C> binary gdmc< C >::binary gdmc (const C & a)[inline]

4.4.3 Member Function Documentation

4.4.3.1 template<class C> binary gdmc< C >::BOOST CONCEPT ASSERT

((Concepts::has optimize< C >))[private]

4.4.3.2 template<class C> binary gdmc< C >::BOOST CONCEPT ASSERT

((Concepts::pruner< C >))[private]

4.4.3.3 template<class C> binary gdmc< C >::BOOST CONCEPT ASSERT

((Concepts::has gradients< C >))[private]

4.4.3.4 template<class C> valerg binary gdmc< C >::get value (const ulong i) const[inline]

4.4.3.5 template<class C> ulong binary gdmc< C >::optimize (ulong N ) const[inline,

virtual]

The gradient to be used is determined by the gradient() method of the class C.

Implements optimize abstract.

Here is the call graph for this function:

binary_gdmc::optimize linear_algebra::exp linear_algebra::matrix::cols

44
4.4.4 Member Data Documentation

4.4.4.1 template<class C> ulong binary gdmc< C >::max steps

4.4.4.2 template<class C> C binary gdmc< C >::opt object[private]

4.4.4.3 template<class C> double binary gdmc< C >::T

4.4.4.4 template<class C> ulong binary gdmc< C >::tight steps

The documentation for this class was generated from the following file:

• binarygdmc.hh

4.5 binary line search< C > Class Template Reference

Search a pruned Library using a linesearch algorithm.

#include <binary line search.hh> Inheritance diagram for binary line search< C >:

binary_line_search< C >

optimize_abstract

Collaboration diagram for binary line search< C >:

binary_line_search< C >

optimize_abstract

Public Member Functions

• binary line search ()

Default constructor.

• binary line search (const binary line search &a)

Copy constructor.

45
• ulong optimize (ulong N) const

Default optimization with a clear history and no pruning in the first iteration.

• ulong optimize (ulong N, double lambda, refvector< ulong > &visited run) const

Optimize starting from conformation N.

Private Member Functions

• BOOST CONCEPT ASSERT ((Concepts::pruner< C >))

Require Concepts::pruner compliance of C.

• BOOST CONCEPT ASSERT ((boost::DefaultConstructible< C >))

4.5.1 Detailed Description

template<class C> class binary line search< C >

In this method the Library is spanned via a hypercube. Each molecule in the library sits

on one vertex of the cube. This leads to a bit representation of each molecule. The line

search is then performed on the bits.

Constructor & Destructor Documentation

4.5.1.1 template<class C> binary line search< C >::binary line search ()[inline]

4.5.1.2 template<class C> binary line search< C >::binary line search (const

binary line search< C > & a)

4.5.2 Member Function Documentation

4.5.2.1 template<class C> binary line search< C >::BOOST CONCEPT ASSERT

((boost::DefaultConstructible< C >))[private]

4.5.2.2 template<class C> binary line search< C >::BOOST CONCEPT ASSERT

((Concepts::pruner< C >))[private]

4.5.2.3 template<class C> ulong binary line search< C >::optimize (ulong N , double

lambda, refvector< ulong > & visited run) const[inline]

A Lagrange multiplier method is employed to enforce boundary constraints. The multiplier

increases as the optimization proceeds, enforcing the constraint ever more rigorously.

46
In essence we are following an interior point method, in which we reestablish feasibility

every log(library size) cycles. The precise rules for pruning and adjusting the Lagrange

multiplier can be found in prune(). At each position in the bit string representing the

reference molecule N, the molecule with that bit flipped from N is computed and

compared. If there is an improvement in the objective function P + λπ, where P is the

property, π is the penalty and λ is the current value of the Lagrange multiplier, then the

new molecule becomes the new reference.

See also:

noprune::adjust lagrange(), simple prune::prune(),

reorder general base::prune()

Here is the call graph for this function:

binary_line_search::optimize

linear_algebra::refvector::contains

linear_algebra::refvector::push_back

linear_algebra::refvector::dim

4.5.2.4 template<class C> ulong binary line search< C >::optimize (ulong N ) const[inline,

virtual]

This is a clean slate optimization. Any pruned molecules from previous runs are eradicated.

Parameters:

N gives the starting molecule’s number in the library.

Implements optimize abstract.

Here is the call graph for this function:

binary_line_search::optimize optimize_abstract::optimize

The documentation for this class was generated from the following file:

• binary line search.hh

4.6 binary steepest descent< C > Class Template Reference

Searches a Library for an optimum using a steepest descent method.

47
#include <binarysteepestdescent.hh>

Inheritance diagram for binary steepest descent< C >:

binary_steepest_descent< C >

optimize_abstract

Collaboration diagram for binary steepest descent< C >:

binary_steepest_descent< C >

optimize_abstract

Public Member Functions

• ulong optimize (ulong N) const

Optimize starting from index N.

Private Member Functions

• BOOST CONCEPT ASSERT ((Concepts::pruner< C >))

Require C to conform to the Concepts::pruner concept.

• BOOST CONCEPT ASSERT ((Concepts::has gradients< C >))

Require C to conform to the Concepts::has gradients concept.

4.6.1 Detailed Description

template<class C> class binary steepest descent< C >

As all optimization classes in the binary ∗ vein, the library is organized and searched as a

hypercube on which the molecules are the vertices on the hull. The resultant bit-string

representation of each molecule is used to perform optimizations.

48
4.6.2 Member Function Documentation

4.6.2.1 template<class C> binary steepest descent< C >::BOOST CONCEPT ASSERT

((Concepts::has gradients< C >)) [private]

4.6.2.2 template<class C> binary steepest descent< C >::BOOST CONCEPT ASSERT

((Concepts::pruner< C >))[private]

4.6.2.3 template<class C> ulong binary steepest descent< C >::optimize (ulong N )

const[inline, virtual]

Each edge (i.e., bit) on the hypercube is interpreted as a search direction. A gradient is

computed along each direction and is then searched for improvements. Constraints are

enforced with Lagrange multipliers which are ramped after a local optimum is reached.

Implements optimize abstract.

Here is the call graph for this function:

binary_steepest_descent::optimize linear_algebra::refvector::dim

49
The documentation for this class was generated from the following file:

• binarysteepestdescent.hh

4.7 chem opt Class Reference

Chemical optimization class.

#include <chem opt.hh>

Inheritance diagram for chem opt:

chem_opt

ChemGroup is_threadable_abstract Library_data

Collaboration diagram for chem opt:

chem_opt

ChemGroup

linear_algebra::refvector< ChemIdent >

Substituent_Groups_r

Substituent_Groups

is_threadable_abstract

boost::stateful_thread_group

threads

Library_data

linear_algebra::refvector< valerg >

value_r

value

Public Member Functions

• chem opt ()

Default constructor.

• chem opt (const chem opt &a)

Default constructor.

• chem opt (const ChemGroup &a)

Construct from a ChemGroup.

• chem opt (ulong nmax)

Construction assigning maximum number of threads.

50
• chem opt & operator= (const ChemGroup &a)

Assignment operator.

• void output () const

Output of the chemical pattern.

• valerg compute property (ulong i) const

Compute the property.

• ulong get space size () const

Compute the size of the optimization space.

• ulong get space size (const long Group) const

Compute the size of the optimization space of a specific group.

• ulong get bits () const

Compute the number of bits to address the optimization space.

4.7.1 Detailed Description

The class implements a Library of molecules that can be enumerated.

4.7.2 Constructor & Destructor Documentation

4.7.2.1 chem opt::chem opt ()

4.7.2.2 chem opt::chem opt (const chem opt & a)

4.7.2.3 chem opt::chem opt (const ChemGroup & a)

4.7.2.4 chem opt::chem opt (ulong nmax)

4.7.3 Member Function Documentation

4.7.3.1 valerg chem opt::compute property (ulong i) const[virtual]

Computes the Z-matrix of molecule i and then performs a conformational search and finally

computes and returns the computed property value (as well as constraint violations).

Implements Library data.

4.7.3.2 ulong chem opt::get bits () const[virtual]

Implements Library data.

51
4.7.3.3 ulong chem opt::get space size (const long Group) const

4.7.3.4 ulong chem opt::get space size () const[virtual]

Implements Library data.

4.7.3.5 chem opt & chem opt::operator= (const ChemGroup & a)

This should really never be invoked on anything that has already been started.

4.7.3.6 void chem opt::output () const

Reimplemented from ChemGroup. The documentation for this class was generated from

the following files:

• chem opt.hh

• chem opt.cc

4.8 ChemGroup Class Reference

This class describes a group of substitution sites and their respective substitution options

as well as computation history.

#include <chemgroup.hh>

Inheritance diagram for ChemGroup:

ChemGroup

chem_opt

Collaboration diagram for ChemGroup:

ChemGroup

linear_algebra::refvector< ChemIdent >

Substituent_Groups_r

Substituent_Groups

52
Public Member Functions

• bool error free () const

Check whether there are any errors in the definition.

• mat build zmat (long i, ulong &number, const zmat connector &e, zmat &A,

zmat connector &y) const

Build the Z-matrix using occupation i.

• zmat & build zmat (long i, const zmat connector &e, zmat &A, zmat connector &y)

const

Build the Z-matrix using occupation i.

• void occupy (ulong number) const

Set occupations according to number.

• ChemGroup & operator= (const ChemGroup &a)

Assignment operator.

• bool operator== (const ChemGroup &a) const

Comparison operator.

• void output () const

Display to cout what’s going on.

Constructors

• ChemGroup ()

Empty constructor.

• ChemGroup (const ChemGroup &a)

Copy constructor.

• ChemGroup (stringstream &in)

Construction from a stringstream.

• ChemGroup (istream &in)

Construction from a file.

Substituent manipulations

• long add substituent (const ChemIdent &a)

Add a substituent.

53
• refvector< long > add substituents (const refvector< ChemIdent > &a)

Add a list of substituents.

• void add substituent (long i, long j, long k)

Add a substituent to a site.

• void add substituents (long i, long k, const refvecto< long > &j)

Add a list of substituents to a site.

Public Attributes

• const refvector< ChemIdent > & Substituent Groups r

Private Attributes

• refvector< ChemIdent > Substituent Groups

4.8.1 Detailed Description

It assumes the existence of a valerg calc property(const zmat& A, const stringstream& id)

function to compute properties. In essence this is a collection of ChemIdent objects. The

first substitution group is used as the root for generating any Z-matrices based on the

specific chosen substitutions.

The general strategy is to split each substitution group (ChemIdent) from the overall

structure. Hence, a ChemIdent identifies a molecular framework/scaffold and possible

substitution sites on this. Singletons don’t have any substitution sites and cap

substitutions. The ChemGroup collects these and gives meaning to specific substitutions at

each defined site.

See class ChemIdent for the substitution rules. Examples:

carbazoles.inp, and vanilla-rings.inp.

4.8.2 Constructor & Destructor Documentation

4.8.2.1 ChemGroup::ChemGroup ()

4.8.2.2 ChemGroup::ChemGroup (const ChemGroup & a)

4.8.2.3 ChemGroup::ChemGroup (stringstream & s)

54
See also:

ChemGroup::ChemGroup(istream& in)

4.8.2.4 ChemGroup::ChemGroup (istream & in)

The input file format is as follows:ChemGroup(ChemIdent1 ChemIdent2 ... )

See also:

ChemIdent::ChemIdent(istream& in) for ChemIdent input format and examples.

4.8.3 Member Function Documentation

4.8.3.1 void ChemGroup::add substituent (long i, long j, long k)

A new substituent is added at site j of group i. k references the global group that is taken

from ChemGroup and linked to the substition site. Hence, j has to be a valid site on

Substituent Groups[i] and k as well as i are an index of Substituent Groups.

4.8.3.2 long ChemGroup::add substituent (const ChemIdent & a)

This appends another ChemIdent object to the list of possible substution groups.

4.8.3.3 void ChemGroup::add substituents (long i, long m, const refvecto< long > & j)

This adds a number of substituents to site m on group i. Similar to add substituent().

4.8.3.4 refvector< long > ChemGroup::add substituents (const refvector< ChemIdent > &

a)

This appends a list of substituents as add substituent() does for a single group.

4.8.3.5 zmat & ChemGroup::build zmat (long Group, const zmat connector & e, zmat &

A, zmat connector & y) const

This routine generates the local Z-matrix and combines it with the global Z-matrix using

the default values as provided by occupation. Due to connectivity concerns it may be

necessary to define appropriate dummy atoms in zmat::Z. A suggestion would be a dummy

atom for each substitution group to define the topology.

Parameters:

Group index of the group to be added to the Z-matrix

e defines the connection of Group to the Z-matrix

A is the Z-matrix to which the Group topology will be attached. It will also be returned.

55
Note the non-const reference.

y defines the return connector.

4.8.3.6 zmat & ChemGroup::build zmat (long Group, ulong & number , const

zmat connector & e, zmat & A, zmat connector & y) const

This routine generates the local Z-matrix and combines it with the global Z-matrix for

molecule number. Due to connectivity concerns it may be necessary to define appropriate

dummy atoms in zmat::Z. A suggestion would be a dummy atom for each substitution

group to define the topology. The combinatorics are different in this version, as it frees all

constraints imposed by the general structure.

Parameters:

Group index of the group to be added to the Z-matrix

number index of the molecule to be built.

A is the Z-matrix to which the Group topology will be attached. It will also be returned.

Note the non-const reference.

y defines the return connector.

4.8.3.7 bool ChemGroup::error free () const

4.8.3.8 void ChemGroup::occupy (ulong number ) const

Each ChemIdent has default occupations for its sites. This sets these to reflect the

molecule referenced by number.

4.8.3.9 ChemGroup & ChemGroup::operator= (const ChemGroup & a)

Assignment operator.

Reimplemented in chem opt.

4.8.3.10 bool ChemGroup::operator== (const ChemGroup & a) const

4.8.3.11 void ChemGroup::output () const

Reimplemented in chem opt.

4.8.4 Member Data Documentation

4.8.4.1 refvector<ChemIdent> ChemGroup::Substituent Groups [private]

This array holds the possible ChemIdent substitutions for each substitution site.

56
4.8.4.2 const refvector<ChemIdent>& ChemGroup::Substituent Groups r

This double array holds the possible substitutions for each substitution site. (READ

ONLY)

The documentation for this class was generated from the following files:

• chemgroup.h

• chemgroup.cc

4.9 ChemIdent Class Reference

This class describes a group of substitution sites on a Z-matrix and their respective

substitution options.

#include <chemident.hh>

Collaboration diagram for ChemIdent:

ChemIdent

zmat

Z

Z_r

zmat_connector

return_connector_r

return_connector

linear_algebra::refvector< long >

occupation_r

occupation

centers_r

centers

linear_algebra::refvector< zmat_connector >

Connector_r

Connector

Public Member Functions

• refvector< int > & generate conformation list (long i, const zmat connector &e,

refvector< int > &conformation, zmat connector &y) const

Build a list of indices for occupied substituents, configuration

only.(DEPRECATED).

• ChemIdent & operator= (const ChemIdent &a)

Assignment operator.

• bool operator== (const ChemIdent &a) const

Comparison operator.

57
• ChemIdent & set Z (const zmat &Z)

Set the Z-matrix.

• ChemIdent & set return connector (const zmat connector &A)

Set the return connector.

• ChemIdent & add to dihedrals (int zentry, int maxn, int n)

Add another dihedral for conformational searching.

• ChemIdent & set dihedrals (int dihedrals, int n)

Set the value of a dihedral.

• void occupy (long i, long j) const

Set occupation to generate the zmat.

• long compute space size () const

Computes the size of the library of molecules described by this instance.

• void fix Substituent dihedrals ()

Fix the substituent dihedrals for connection purposes.

• void output () const

Display to cout what’s going on.

Constructors

• ChemIdent ()

Empty constructor.

• ChemIdent (const string &Name)

Primary constructor.

• ChemIdent (const zmat &A)

Primary constructor from a Z-matrix.

• ChemIdent (const ChemIdent &a)

Copy constructor.

• ChemIdent (stringstream &in)

Construction from a stringstream.

• ChemIden (istream &in)

Construction from a file.

58
Site manipulations

• ChemIdent & add substitution site (const refvector< long > &a, const

zmat connector &e)

Increase the number of substitution sites and add a list of substituents for that

site.

• ChemIdent & add substitution site (long a, const zmat connector &e)

Increase the number of substitution sites and add a substituent number to that

site.

Substituent manipulations

• ChemIdent & add substituents (long i, const refvector< long > &a)

Add a substituent.

• ChemIdent & add substituent (long i, long j)

Add a substituent.

Static Public Member Functions

• static zmat entry & update connector (const zmat connector &a, const

zmat connector &e, const long A, zmat connector &x)

Update a connector to fit, e.g., after combining two Z-matrices.

Public Attributes

• const refvector< refvector< long > > & allowed Substituents r

• const refvector< long > & occupation r

• const zma & Z

• const refvector< zmat connector > & Connector r

• const zmat connector & return connector r

Private Attributes

59
• refvector< refvector< long > > allowed

• refvector< long > occupation

• long Space Size

• zmat Z

• refvector< zmat connector > Connector

• zmat connector return connector

4.9.1 Detailed Description

The representation of a chemical substitution pattern is subdivided into a list of

substitution sites which are potentially linked (return connector). In the case of linkage the

groups are considered to be linked in a chain, i.e., only to the predecessor. The

return connector has three distinct eferences:

• –6 to –4 refer to the original connector of the following group. (default)

• –3 to –1 refer to values of the connector passed down to the current group. Values

greater then –1 refer to values in the local Z-matrix.

For the purpose of preoptimizing starting structures, which in the construction routine may

be overlapped, the zmat connector::opt val and zmat entry::opt val structures direct the

optimization of a specific entry. By default all dihedral angles between adjoined Z-matrices

are optimized. This may cause problems in ring-structures. To change this the

fix Substituent dihedrals() call cancels this behavior. Additionally it is possible to select

dihedrals for conformational searching via ChemIdent::dihedrals. zmat connector supplies

zmat connector::angle and zmat connector::angle val for conformational optimizations with

respect to the connectors.

4.9.2 Constructor & Destructor Documentation

4.9.2.1 ChemIdent::ChemIdent ()

4.9.2.2 ChIdent::ChIdent (const string & Name)

4.9.2.3 ChemIdent::ChemIdent (const zmat & A)

4.9.2.4 ChemIdent::ChemIdent (const ChemIdent & a)

60
4.9.2.5 ChemIdent::ChemIdent (stringstream & s)

The input file format is as follows:( Z(zmat)

ReturnConnector (zmat connector)

Connector ( zmat connector zmat connector ... )

allowed Substituents( ( group number 1, group number 2 , ... ) ... ) )

Under Z a zmat object is read in. The appropriate format can be found under

zmat::zmat(stringstream& s). ReturnConnector reads in a zmat connector using

zmat connector::zmat connector(stringstream& s). Connector reads in a list of

zmat connector objects, each adhering to the format found under

zmat connector::zmat connector(stringstream& s).

See also:

carbazoles.inp and vanilla-rings.inp in the examples section.

Read the connector.

Read the connector.

4.9.2.6 ChemIdent::ChemIdent (istream & in)

See also:

ChemIdent::ChemIdent(stringstream& in)

4.9.3 Member Function Documentation

4.9.3.1 ChemIdent & ChemIdent::add substituent (long i, long j)

4.9.3.2 ChemIdent & ChemIdent::add substituents (long i, const refvector< long > & a)

4.9.3.3 ChemIdent & ChemIdent::add substitution site (long a, const zmat connector & e)

4.9.3.4 ChemIdent & ChemIdent::add substitution site (const refvector< long > & a, const

zmat connector & e)

4.9.3.5 ChemIdent & ChemIdent::add to dihedrals (int zentry, int maxn, int n)

Parameters:

zentry dihedral of Z-matrix entry to be optimized.

61
maxn is the number of division of 360 deg, Δ∠ : 360 deg

maxn .

n current instantiation (<maxn).

4.9.3.6 long ChemIdent::compute space size () const

4.9.3.7 void ChemIdent::fix Substituent dihedrals ()

4.9.3.8 refvector<int>& ChemIdent::generate conformation list (long i, const

zmat connector & e, refvector< int > & conformation, zmat connector & y) const

4.9.3.9 void ChemIdent::occupy (long i, long j) const

4.9.3.10 ChemIdent & ChemIdent::operator= (const ChemIdent & a)

Assignment operator.

4.9.3.11 bool ChemIdent::operator== (const ChemIdent & a) const

Comparison operator.

4.9.3.12 void ChemIdent::output () const

4.9.3.13 ChemIdent& ChemIdent::set dihedrals (int dihedrals, int n)

4.9.3.14 ChemIdent & ChemIdent::set return connector (const zmat connector & A)

4.9.3.15 ChemIdent & ChemIdent::set Z (const zmat & Z)

4.9.3.16 zmat entry& ChemIdent::update connector (const zmat connector & a, const

zmat connector & e, const long A, zmat connector & x)[static]

4.9.4 Member Data Documentation

4.9.4.1 refvector<refvector<long> > ChemIdent::allowed Substituents[private]

This double array holds the possible substitutions for each substitution site.

4.9.4.2 const refvector<refvector<long> >& ChemIdent::allowed Substituents r

This double array holds the possible substitutions for each substitution site. (READ

ONLY)

4.9.4.3 refvector<zmat connector> ChemIdent::Connector[private]

This array of entries holds the connectivity data on the substituents within Z and the

62
complete framework.

4.9.4.4 refvector<zmat connector>& ChemIdent::Connector r

This array of entries holds the connectivity data on the substituents within Z and the

complete framework. (READ ONLY)

4.9.4.5 refvector<long> ChemIdent::occupation[mutable, private]

This array holds current substituents at each site

4.9.4.6 refvecto<long>ChIdent::occupation r

This array holds current substituents at each site. (READ ONLY)

4.9.4.7 zmat connector ChemIdent::return connector[private]

This Z-matrix entry is returned in order to connect subsequent groups to this chemgroup.

4.9.4.8 const zmat connector& ChemIdent::return connector r

This Z-matrix entry is returned in order to connect subsequent groups to this chemgroup.

4.9.4.9 long ChemIdent::Space Size[mutable, private]

This number holds the possible number of combinations for the substitution sites.

4.9.4.10 zmat ChemIdent::Z[private]

This Z-matrix holds the connectivity data for this group. Respective substitution sites will

be added via their own build zmat() calls. For unambiguous building of Z-matrices it may

be necessary to include dummy atoms. These are easily omitted upon conversion to

cartesian coordinates.

4.9.4.11 const zma& ChemIdent::Z r

This Z-matrix holds the connectivity data for this group. Respective substitution sites will

be added via their own build zmat() calls. For unambiguous building of Z-matrices it may

be necessary to include dummy atoms. These are easily omitted upon conversion to

cartesian coordinates. (READ ONLY)

The documentation for this class was generated from the following files:

• chemident.h

63
• chemident.cc

4.10 double truct Reference

Pair of configurational and conformational index, respectively.

#include <typedefs.hh>

Public Attributes

• int configuration

• int conformation

4.10.1 Member Data Documentation

4.10.1.1 int double index::configuration

4.10.1.2 int double index::conformation

The documentation for this struct was generated from the following file:

• typedefs.hh

4.11 gen base entropic< C > Class Template Reference

Meta-Optimize by generating maximally distant starting configurations.

#include <gen base entropic.hh>

Inheritance diagram for gen base entropic< C >:

gen_base_entropic< C >

optimize_abstract

64
Collaboration diagram for gen base entropic< C >:

gen_base_entropic< C >

optimize_abstract linear_algebra::refvector< long >

bases

C

opt_object

Public Member Functions

• gen base entropic (const C &a, const refvector< long > &b)

• ulong optimize (ulong N) const

Meta-Optimize by generating maximally distant starting configurations.

• valerg get value (const ulong i) const

Public Attributes

• ulong nruns

Number of runs.

• long max steps

Maximum number of steps.

Protected Attributes

• C opt object

• refvector< long > bases

Private Member Functions

• BOOST CONCEPT ASSERT ((Concepts::has optimize< C >))

Require C to conform to an optimization.

• BOOST CONCEPT ASSERT ((boost::CopyConstructible< C >))

Require Copy constructibility.

template<class C> class gen base entropic< C >

65
4.11.1 Constructor & Destructor Documentation

4.11.1.1 template<class C> gen base entropic< C >::gen base entropic (const C & a,

const refvector< long > & b)[inline]

4.11.2 Member Function Documentation

4.11.2.1 template<class C> gen base entropic< C >::BOOST CONCEPT −ASSERT

((boost::CopyConstructible< C >))[private]

4.11.2.2 template<class C> gen base entropic< C >::BOOST CONCEPT ASSERT

((Concepts::has optimize< C >))[private]

4.11.2.3 template<class C> valerg gen base entropic< C >::get value (const ulong i)

const[inline]

4.11.2.4 template<class C> ulong gen base entropic< C >::optimize (ulong N )

const[inline, virtual]

Implements optimize abstract.

Here is the call graph for this function:

gen_base_entropic::optimize maximize_entropic_distance

4.11.3 Member Data Documentation

4.11.3.1 template<class C> refvector<long> gen base entropic< C >::bases[protected]

4.11.3.2 template<class C> long gen base entropic< C >::max steps

4.11.3.3 template<class C> ulong gen base entropic< C >::nruns

4.11.3.4 template<class C> C gen base entropic< C >::opt object[protected]

The documentation for this class was generated from the following file:

• gen base entropic.hh

66
4.12 gen base gdmc< C > Class Template Reference

#include <genbasegdmc.hh>

Inheritance diagram for gen base gdmc< C >:

gen_base_gdmc< C >

optimize_abstract

Collaboration diagram for gen base gdmc< C >:

gen_base_gdmc< C >

optimize_abstract linear_algebra::refvector< long >

bases

C

opt_object

Public Member Functions

• gen base gdmc (const C &a, const refvector< long > &b)

• ulong optimize (ulong N) const

Gradient-directed Monte-Carlo optimization.

• valerg get value (ulong i) const

Public Attributes

• double T

Temperature.

• ulong tight steps

Number of tightening steps.

• ulong max steps

Maximum number of steps.

Private Member Functions

67
• BOOST CONCEPT ASSERT ((Concepts::has gradients< C >))

Require C to conform to the has gradients concept.

• BOOST CONCEPT ASSERT ((Concepts::has optimize< C >))

Require C to conform to an optimization.

• BOOST CONCEPT ASSERT ((Concepts::has stacksize< C >))

Require C to conform to providing computed number of configurations.

• BOOST CONCEPT ASSERT ((boost::CopyConstructible< C >))

Require Copy constructibility.

Private Attributes

• C opt object

• refvector< long > bases

template<class C> class gen base gdmc< C >

4.12.1 Constructor & Destructor Documentation

4.12.1.1 template<class C> gen base gdmc< C >::gen base gdmc (const C & a, const

refvector< long > & b)[inline]

4.12.2 Member Function Documentation

4.12.2.1 template<class C> gen base gdmc< C >::BOOST CONCEPT ASSERT

((boost::CopyConstructible< C >))[private]

4.12.2.2 template<class C> gen base gdmc< C >::BOOST CONCEPT ASSERT

((Concepts::has stacksize< C >))[private]

4.12.2.3 template<class C> gen base gdmc< C >::BOOST CONCEPT ASSERT

((Concepts::has optimize< C >))[private]

4.12.2.4 template<class C> gen base gdmc< C >::BOOST CONCEPT ASSERT

((Concepts::has gradients< C >))[private]

4.12.2.5 template<class C> valerg gen base gdmc< C >::get value (ulong i) const[inline]

4.12.2.6 template<class C> ulong gen base gdmc< C >::optimize (ulong N ) const[inline,

virtual]

68
Implements optimize abstract.

Here is the call graph for this function:

gen_base_gdmc::optimize

linear_algebra::exp

linear_algebra::refvector::size

linear_algebra::matrix::cols

4.12.3 Member Data Documentation

4.12.3.1 template<class C> refvector<long> gen base gdmc< C >::bases[private]

4.12.3.2 template<class C> ulong gen base gdmc< C >::max steps

4.12.3.3 template<class C> C gen base gdmc< C >::opt object[private]

4.12.3.4 template<class C> double gen base gdmc< C >::T

4.12.3.5 template<class C> ulong gen base gdmc< C >::tight steps

The documentation for this class was generated from the following file:

• genbasegdmc.hh

4.13 gen base grad LS< C, B > Class Template Reference

Line search optimization class using general bases.

#include <genbase-grad-ls.hh>

Inheritance diagram for gen base grad LS< C, B >:

gen_base_grad_LS< C, B >

optimize_abstract

Collaboration diagram for gen base grad LS< C, B >:

Public Member Functions

69
gen_base_grad_LS< C, B >

optimize_abstract B

bases_r

bases

C

lib_object_r

lib_object

• gen base grad LS (const C &Library)

• gen base grad LS (const gen base grad LS< C, B > &a)

Copy constructor.

• refvector< valerg > gradient (const ulong conf1) const

Gradient computation.

• refvector< valerg > & gradient (const ulong conf1, refvector< valerg > &r) const

Gradient computation.

• long stacksize () const

• ulong optimize (ulong N) const

Optimize starting from conformation i.

• valerg get value (const ulong i) const

Public Attributes

• const B & bases r

• const C & lib object r

Private Member Functions

• BOOST CONCEPT ASSERT ((Concepts::pruner< C >))

Require Concepts::pruner compliance of C.

• BOOST CONCEPT ASSERT ((boost::CopyConstructible< C >))

• BOOST CONCEPT ASSERT ((Concepts::base iterator< B >))

Private Attributes

70
• const C lib object

• B bases

template<class C, class B> class gen base grad LS< C, B >

4.13.1 Constructor & Destructor Documentation

4.13.1.1 template<class C, class B> gen base grad LS< C, B >::gen base grad LS (const

C & Library)[inline]

4.13.1.2 template<class C, class B> gen base grad LS< C, B >::gen base grad LS (const

gen base grad LS< C, B > & a)[inline]

4.13.2 Member Function Documentation

4.13.2.1 template<class C, class B> gen base grad LS< C, B

>::BOOST CONCEPT ASSERT ((Concepts::base iterator< B >))[private]

4.13.2.2 template<class C, class B> gen base grad LS< C, B

>::BOOST CONCEPT ASSERT ((boost::CopyConstructible< C >))[private]

4.13.2.3 template<class C, class B> gen base grad LS< C, B

>::BOOST CONCEPT ASSERT ((Concepts::pruner< C >))[private]

4.13.2.4 template<class C, class B> valerg gen base grad LS< C, B >::get value (const

ulong i) const[inline]

4.13.2.5 template<class C, class B> refvector<valerg>& gen base grad LS< C, B

>::gradient (const ulong conf1 , refvecto< valerg > & r ) const[inline]

4.13.2.6 template<class C, class B> refvector<valerg> gen base grad LS< C, B

>::gradient (const ulong conf1 ) const[inline]

4.13.2.7 template<class C, class B> ulong gen base grad LS< C, B >::optimize (ulong N )

const[inline, virtual]

A Lagrange multiplier method is employed to enforce boundary constraints. The multiplier

increases as the optimizatoin proceeds, enforcing the constraint ever more rigorously.

Implements optimize abstract.

Here is the call graph for this function:

71
gen_base_grad_LS::optimize

linear_algebra::refvector::contains

linear_algebra::refvector::push_back

linear_algebra::refvector::dim

4.13.2.8 template<class C, class B> long gen base grad LS< C, B >::stacksize ()

const[inline]

4.13.3 Member Data Documentation

4.13.3.1 template<class C, class B> B gen base grad LS< C, B >::[mutable, private]

4.13.3.2 template<class C, class B> const B& gen base grad LS< C, B >::bases r

4.13.3.3 template<class C, class B> const C gen base grad LS< C, B >::lib object[private]

4.13.3.4 template<class C, class B> const C& gen base grad LS< C, B >::lib object r

The documentation for this class was generated from the following file:

• genbase-grad-ls.hh

4.14 gen base LS< C, B > Class Template Reference

Line search optimization class using general bases.

#include <genbase-l-s.hh>

Inheritance diagram for gen base LS< C, B >:

gen_base_LS< C, B >

optimize_abstract

Collaboration diagram for gen base LS< C, B >:

72
gen_base_LS< C, B >

optimize_abstract B

bases_r

bases

C

lib_object_r

lib_object

*Public Member Functions

• gen base LS (const C &Library)

• ulong optimize (ulong N) const

Optimize starting from conformation i.

• valerg get value (const ulong i) const

Public Attributes

• const B bases r

• const C & lib object r

Private Member Functions

• BOOST CONCEPT ASSERT ((Concepts::pruner< C >))

Require Concepts::pruner compliance of C.

• BOOST CONCEPT ASSERT ((boost::CopyConstructible< C >))

• BOOST CONCEPT ASSERT ((Concepts::base iterator< B >))

Private Attributes

• const C lib object

• B bases

template<class C, class B> class gen base LS< C, B >

73
4.14.1 Constructor & Destructor Documentation

4.14.1.1 template<class C, class B> gen base LS< C, B >::gen base LS (const C &

Library)[inline]

4.14.2 Member Function Documentation

4.14.2.1 template<class C, class B> gen base LS< C, B >::BOOST CONCEPT ASSERT

((Concepts::base iterator< B >))[private]

4.14.2.2 template<class C, class B> gen base LS< C, B >::BOOST CONCEPT ASSERT

((boost::CopyConstructible< C >))[private]

4.14.2.3 template<class C, class B> gen base LS< C, B >::BOOST CONCEPT ASSERT

((Concepts::pruner< C >))[private]

4.14.2.4 template<class C, class B> valerg gen base LS< C, B >::get value (const ulong i)

const[inline]

4.14.2.5 template<class C, class B> ulong gen base LS< C, B >::optimize (ulong N )

const[inline, virtual]

A Lagrange multiplier method is employed to enforce boundary constraints. The multiplier

increases as the optimizatoin proceeds, enforcing the constraint ever more rigorously.

Implements optimize abstract.

Here is the call graph for this function:

gen_base_LS::optimize

linear_algebra::refvector::contains

linear_algebra::refvector::push_back

linear_algebra::refvector::dim

4.14.3 Member Data Documentation

4.14.3.1 template<class C, class B> B gen base LS< C, B >::bases[mutable, private]

4.14.3.2 template<class C, class B> const B& gen base LS< C, B >::bases r

4.14.3.3 template<class C, class B> const C gen base LS< C, B >::lib object[private]

4.14.3.4 template<class C, class B> const C& gen base LS< C, B >::lib object r

74
The documentation for this class was generated from the following file:

• genbase-l-s.hh

4.15 general base iterator< X > Class Template Reference

Iterator over the potential bases.

#include <generalbaseiterator.hh>

Collaboration diagram for general base iterator< X >:

general_base_iterator< X >

X

lib_object

linear_algebra::refvector< long >

bases

occupation

moduli

Public Member Functions

• general base iterator (const X &b)

Constructor. Mandatory library object.

• general base iterator (const general base iterator< X > &b)

Copy Constructor.

• general base iterator< X > & operator++ (int i)

Advance the iterator to the next number.

• ulong set refstate (ulong newref)

Set the reference state of the library to determine the relevance of subs.

• ulong get refstate () const

Retrieve the current refstate.

• long operator= (long i)

Set the current state.

• long get state () const

Retrieve the current state.

75
• long operator() () const

Retrieve the current base size.

• long modulus () const

Modulus.

• bool done () const

End of iterator?

• long non empty size () const

• template<> bool done () const

• template<> void occupy (ulong number)

• template<> void compute bases (long Group, const refvector< long > &base sizes)

• template<> void compute bases ()

• template<> general base iterator (const general base iterator< chem opt > &b)

• template<> general base iterator (const chem opt &b)

• template<> long modulus () const

• template<> general base iterator< chem opt > & operator++ (int i)

• template<> ulong get refstate () const

• template<>ulong set refstate (ulong newref)

• template<> long operator= (long i)

• template<> long get state () const

• template<> long operator() () const

• template<> long non empty size () const

Private Member Functions

• BOOST CONCEPT ASSERT ((Concepts::Library< X >))

• void compute bases ()

Compute offsets of groups.

76
• void compute bases (long N, const refvector< long > &base sizes)

Compute the base for N.

• void occupy (ulong number)

Set the occupation numbers w.r.t. number.

Private Attributes

• long number of bases

• ulong refstate

Reference state.

• long state

Current base.

• const X & lib object

Library object which is enumerated with the bases to be iterated.

• refvector< long > bases

Offsets of the bases.

• refvector< long > moduli

Moduli of the bases.

• refvector< long > occupation

occupation of groups by current refstate.

template<class X> class general base iterator< X >

4.15.1 Constructor & Destructor Documentation

4.15.1.1 template<class X> general base iterator< X >::general base iterator (const X &

b)

4.15.1.2 template<class X> general base iterator< X >::general base iterator (const

general base iterator< X > & b)

4.15.1.3 template<> general base iterator< chem opt >::general base iterator (const

general base iterator< chem opt > & b)

4.15.1.4 template<> general base iterator< chem opt >::general base iterator (const

chem opt & b)

77
4.15.2 Member Function Documentation

4.15.2.1 template<class X> general base iterator< X >::BOOST CONCEPT ASSERT

((Concepts::Library< X >))[private]

4.15.2.2 template<> void general base iterator< chem opt >::compute bases ()

4.15.2.3 template<> void general base iterator< chem opt >::compute bases (long Group,

const refvector< long > & base sizes)

4.15.2.4 template<class X> void general base iterator< X >::compute bases (long N ,

const refvector< long > & base sizes)[private]

4.15.2.5 template<class X> void general base iterator< X >::compute bases ()[private]

4.15.2.6 template<> bool general base iterator< chem opt >::done () const

4.15.2.7 template<class X> bool general base iterator< X >::done () const

4.15.2.8 template<> ulong general base iterator< chem opt >::get refstate () const

4.15.2.9 template<class X> ulong general base iterator< X >::get refstate () const

4.15.2.10 template<> long general base iterator< chem opt >::get state () const

4.15.2.11 template<class X> long general base iterator< X >::get state () const

4.15.2.12 template<> long general base iterator< chem opt >::modulus () const

4.15.2.13 template<class X> long general base iterator< X >::modulus () const

4.15.2.14 template<> long general base iterator< chem opt >::non empty size () const

4.15.2.15 template<class X> long general base iterator< X >::non empty size () const

4.15.2.16 template<> void general base iterator< chem opt >::occupy (ulong number )

4.15.2.17 template<class X> void general base iterator< X >::occupy (ulong

number )[private]

4.15.2.18 template<> long general base iterator< chem opt >::operator() () const

4.15.2.19 template<class X> long general base iterator< X >::operator() () const

4.15.2.20 template<> general base iterator< chem opt > & general base iterator<

78
chem opt >::operator++ (int i)

4.15.2.21 template<class X> general base iterator<X>& general base iterator< X

>::operator++ (int i)

4.15.2.22 template<> long general base iterator< chem opt >::operator= (long i)

4.15.2.23 template<class X> long general base iterator< X >::operator= (long i)

4.15.2.24 template<> ulong general base iterator< chem opt >::set refstate (ulong newref )

4.15.2.25 template<class X> ulong general base iterator< X >::set refstate (ulong newref )

4.15.3 Member Data Documentation

4.15.3.1 template<class X> refvector<long> general base iterator< X >::bases[mutable,

private]

4.15.3.2 template<class X> const X& general base iterator< X >::lib object[private]

4.15.3.3 template<class X> refvector<long> general base iterator< X >::moduli[mutable,

private]

4.15.3.4 template<class X> long general base iterator< X >::number of bases[private]

4.15.3.5 template<class X> refvector<long> general base iterator< X

>::occupation[private]

4.15.3.6 template<class X> ulong general base iterator< X >::refstate[private]

4.15.3.7 template<class X> long general base iterator< X >::state[private]

The documentation for this class was generated from the following file:

• generalbaseiterator.hh

4.16 Concepts::has gradients< X > Class Template Reference

Concept defines a class that has gradients.

#include <concepts.hh>

Inheritance diagram for Concepts::has gradients< X >:

79
Concepts::has_gradients< X >

Concepts::has_hessians< X >

Collaboration diagram for Concepts::has gradients< X >:

Concepts::has_gradients< X >

X

i

linear_algebra::refvector< valerg >

vh

v

Public Member Functions

• BOOST CONCEPT USAGE (has gradients)

Private Attributes

• X&i

• valer > v

• refvector< valerg > & vh

template<class X> class Concepts::has gradients< X >

4.16.1 Member Function Documentation

4.16.1.1 template<class X> Concepts::has gradients< X >::BOOST CONCEPT USAGE

(has gradients< X >)[inline]

Here is the call graph for this function:

Concepts::has_gradients::BOOST_CONCEPT_USAGE Concepts::same_type

80
4.16.2 Member Data Documentation

4.16.2.1 template<class X> X& Concepts::has gradients< X >::i[private]

Reimplemented in Concepts::has hessians< X >.

4.16.2.2 template<class X> refvector<valerg> Concepts::has gradients< X >::v[private]

Reimplemented in Concepts::has hessians< X >.

4.16.2.3 template<class X> refvector<valerg>& Concepts::has gradients< X >::vh[private]

Reimplemented in Concepts::has hessians< X >.

The documentation for this class was generated from the following file:

• concepts.hh

4.17 has gradients data< X > Class Template Reference

Abstract class for discrete optimizations.

Public Member Functions

• has gradients data ()

• has gradients data (const has gradients data &a)

• has gradients data & operator= (const has gradients data &d)

• void diff (ulong n1, ulong n2, valerg &r) const

compute the difference between numbers n1 and n2.

• refvector< valerg > gradient (const ulong i) const

Gradient computation.

• refvector< valerg > & gradient (const ulong i, refvector< valerg > &v) const

Gradient computation.

Protected Member Functions

• void gradient thread (boost::shared mutex ∗mx, const ulong ∗i, ulong ∗k) const

81
Private Member Functions

• BOOST CONCEPT ASSERT ((Concepts::Library< X >))

• BOOST CONCEPT ASSERT ((Concepts::has Name< X >))

• BOOST CONCEPT ASSERT ((Concepts::is threadable< X >))

template<class X> class has gradients data< X >

4.17.1 Constructor & Destructor Documentation

4.17.1.1 template<class X> has gradients data< X >::has gradients data ()[inline]

4.17.1.2 template<class X> has gradients data< X >::has gradients data (const

has gradients data< X > & a)[inline]

4.17.2 Member Function Documentation

4.17.2.1 template<class X> has gradients data< X >::BOOST CONCEPT ASSERT

((Concepts::is threadable< X >))[private]

4.17.2.2 template<class X> has gradients data< X >::BOOST CONCEPT ASSERT

((Concepts::has Name< X >))[private]

4.17.2.3 template<class X> has gradients data< X >::BOOST CONCEPT ASSERT

((Concepts::Library< X >))[private]

4.17.2.4 template<class X> void has gradients data< X >::diff (ulong n1 , ulong n2 , valerg

& r ) const

4.17.2.5 template<class X> refvector< valerg > & has gradients data< X >::gradient

(const ulong i, refvector< valerg > & v) const

Here is the call graph for this function:

has_gradients_data::gradient linear_algebra::refvector::resize

4.17.2.6 template<class X> refvector< valerg > has gradients data< X >::gradient (const

ulong i) const

82
4.17.2.7 template<class X> void has gradients data< X >::gradient thread

(boost::shared mutex ∗ mx, const ulong ∗ i, ulong ∗ k) const[protected]

4.17.2.8 template<class X> has gradients data& has gradients data< X >::operator=

(const has gradients data< X > & d)

The documentation for this class was generated from the following files:

• has gradients hessian data.decl

• has gradients hessian data.hh

4.18 Concepts::has hessians< X > Class Template Reference

Concept defines a class that has hessians.

#include <concepts.hh>

Inheritance diagram for Concepts::has hessians< X >:

Concepts::has_hessians< X >

Concepts::has_gradients< X >

Collaboration diagram for Concepts::has hessians< X >:

Concepts::has_hessians< X >

Concepts::has_gradients< X >

X

i

i

linear_algebra::refvector< valerg >

vh

v

linear_algebra::mat_sym_full< valerg >

_vals

vh

v

linear_algebra::symmetric< valerg >

linear_algebra::square< valerg >

linear_algebra::matrix< valerg >

Public Member Functions

83
• BOOST CONCEPT USAGE (has hessians)

• X i

• mat sym full< valerg > v

• mat sym full< valerg > & vh

template<class X> class Concepts::has hessians< X >

4.18.1 Member Function Documentation

4.18.1.1 template<class X> Concepts::has hessians< X >::BOOST CONCEPT USAGE

(has hessians< X >)[inline]

Here is the call graph for this function:

Concepts::has_hessians::BOOST_CONCEPT_USAGE Concepts::same_type

4.18.2 Member Data Documentation

4.18.2.1 template<class X> X Concepts::has hessians< X >::i[private]

Reimplemented from Concepts::has gradients< X >.

4.18.2.2 template<class X> mat sym full<valerg> Concepts::has hessians< X >::v[private]

Reimplemented from Concepts::has gradients< X >.

4.18.2.3 template<class X> mat sym full<valerg>& Concepts::has hessians< X

>::vh[private]

Reimplemented from Concepts::has gradients< X >.

The documentation for this class was generated from the following file:

• concepts.hh

84
4.19 has hessians data< X > Class Template Reference

Abstract class for discrete optimizations.

Public Member Functions

• has hessians data ()

• has hessians data (const has hessians data &a)

• has hessians data & operator= (const has hessians data &d)

• mat sym full< valerg > hessian (ulong i) const

Hessian computation.

• mat sym full< valerg > & hessian (ulong i, mat sym full< valerg > &H) const

Hessian computation.

Public Attributes

• const string & Name r

Private Member Functions

• BOOST CONCEPT ASSERT ((Concepts::has gradients< X >))

• BOOST CONCEPT ASSERT ((Concepts::Library< X >))

• BOOST CONCEPT ASSERT ((Concepts::has Name< X >))

• BOOST CONCEPT ASSERT ((Concepts::is threadable< X >))

template<class X> class has hessians data< X >

4.19.1 Constructor & Destructor Documentation

4.19.1.1 template<class X> has hessians data< X >::has hessians data ()[inline]

4.19.1.2 template<class X> has hessians data< X >::has hessians data (const

has hessians data< X > & a)[inline]

85
4.19.2 Member Function Documentation

4.19.2.1 template<class X> has hessians data< X >::BOOST CONCEPT ASSERT

((Concepts::is threadable< X >))[private]

4.19.2.2 template<class X> has hessians data< X >::BOOST CONCEPT ASSERT

((Concepts::has Name< X >))[private]

4.19.2.3 template<class X> has hessians data< X >::BOOST CONCEPT ASSERT

((Concepts::Library< X >))[private]

4.19.2.4 template<class X> has hessians data< X >::BOOST CONCEPT ASSERT

((Concepts::has gradients< X >))[private]

4.19.2.5 template<class X> mat sym full< valerg > & has hessians data< X >::hessian

(ulong i, mat sym full< valerg > & H ) const

Here is the call graph for this function:

has_hessians_data::hessian linear_algebra::mat_sym_full::resize

4.19.2.6 template<class X> mat sym full< valerg > has hessians data< X >::hessian

(ulong i) const

4.19.2.7 template<class X> has hessians data& has hessians data< X >::operator= (const

has hessians data< X > & d)

4.19.3 Member Data Documentation

4.19.3.1 template<class X> const string& has hessians data< X >::Name r

The documentation for this class was generated from the following files:

• has gradients hessian data.decl

• has gradients hessian data.hh

4.20 Concepts::has Name< X > Class Template Reference

Concept defines a class that has a private string Name.

86
#include <concepts.hh>

Collaboration diagram for Concepts::has Name< X >:

Concepts::has_Name< X >

X

i

Public Member Functions

• BOOST CONCEPT USAGE (has Name)

Private Attributes

• X&i

• string N

• const string & Nh

• string M

template<class X> class Concepts::has Name< X >

4.20.1 Member Function Documentation

4.20.1.1 template<class X> Concepts::has Name< X >::BOOST CONCEPT USAGE

(has Name< X >)[inline]

Here is the call graph for this function:

Concepts::has_Name::BOOST_CONCEPT_USAGE Concepts::same_type

87
4.20.2 Member Data Documentation

4.20.2.1 template<class X> X& Concepts::has Name< X >::i[private]

4.20.2.2 template<class X> string Concepts::has Name< X >::M[private]

4.20.2.3 template<class X> string Concepts::has Name< X >::N[mutable, private]

4.20.2.4 template<class X> const string& Concepts::has Name< X >::Nh[private]

The documentation for this class was generated from the following file:

• concepts.hh

4.21 Concepts::has optimize< X > Class Template Reference

Concept defines a class that has an optimize member.

#include <concepts.hh>

Collaboration diagram for Concepts::has optimize< X >:

Concepts::has_optimize< X >

X

i

Public Member Functions

• BOOST CONCEPT USAGE (has optimize)

Private Attributes

• X&i

• ulong index

• string & id

template<class X> class Concepts::has optimize< X >

88
4.21.1 Member Function Documentation

4.21.1.1 template<class X> Concepts::has optimize< X >::BOOST CONCEPT USAGE

(has optimize< X >)[inline]

Here is the call graph for this function:

Concepts::has_optimize::BOOST_CONCEPT_USAGE Concepts::same_type

4.21.2 Member Data Documentation

4.21.2.1 template<class X> X& Concepts::has optimize< X >::i[private]

4.21.2.2 template<class X> string& Concepts::has optimize< X >::id[private]

4.21.2.3 template<class X> ulong Concepts::has optimize< X >::index[private]

The documentation for this class was generated from the following file:

• concepts.hh

4.22 Concepts::has stacksize< X > Class Template Reference

Concept defines a class that has a stack member.

#include <concepts.hh>

Collaboration diagram for Concepts::has stacksize< X >:

Concepts::has_stacksize< X >

X

i

Public Member Functions

• BOOST CONCEPT USAGE (has stacksize)

89
Private Attributes

• X&i

• long index

• string & id

template<class X> class Concepts::has stacksize< X >

4.22.1 Member Function Documentation

4.22.1.1 template<class X> Concepts::has stacksize< X >::BOOST CONCEPT USAGE

(has stacksize< X >)[inline]

Here is the call graph for this function:

Concepts::has_stacksize::BOOST_CONCEPT_USAGE Concepts::same_type

4.22.2 Member Data Documentation

4.22.2.1 template<class X> X& Concepts::has stacksize< X >::i[private]

4.22.2.2 template<class X> string& Concepts::has stacksize< X >::id[private]

4.22.2.3 template<class X> long Concepts::has stacksize< X >::index[private]

The documentation for this class was generated from the following file:

• concepts.hh

4.23 Concepts::is threadable< X > Class Template Reference

Concept defines a class that is threadable.

#include <concepts.hh>

Collaboration diagram for Concepts::is threadable< X >:

Public Member Functions

90
Concepts::is_threadable< X >

X

i

boost::stateful_thread_group

threads

• BOOST CONCEPT USAGE (is threadable)

Private Attributes

• X i

• ulong mt

• boost::shared mutex hm

• boost::stateful thread group threads

template<class X> class Concepts::is threadable< X >

4.23.1 Member Function Documentation

4.23.1.1 template<class X> Concepts::is threadable< X >::BOOST CONCEPT USAGE

(is threadable< X >)[inline]

Here is the call graph for this function:

Concepts::is_threadable::BOOST_CONCEPT_USAGE Concepts::same_type

4.23.2 Member Data Documentation

4.23.2.1 template<class X> boost::shared mutex Concepts::is threadabl< X

>::hm[mutable, private]

4.23.2.2 template<class X> X Concepts::is threadable< X >::i[private]

4.23.2.3 template<class X> ulong Concepts::is threadable< X >::mt[private]

4.23.2.4 template<class X> boost::stateful thread group Concepts::is threadable< X

>::threads[mutable, private]

91
The documentation for this class was generated from the following file:

• concepts.hh

4.24 is threadable abstract Class Reference

Abstract class implementing the Concepts::is threadable concept.

#include <isthreadableabstract.h>

Inheritance diagram for is threadable abstract:

is_threadable_abstract

chem_opt zmat_opt

Collaboration diagram for is threadable abstract:

is_threadable_abstract

boost::stateful_thread_group

threads

Public Member Functions

• void set max threads (ulong N)

Set the maximum number of threads.

• is threadable abstract ()

Default constructor. Minimum of one (1) threads.

• is threadable abstract (const is threadable abstract &a)

Copy constructor.

• is threadable abstract & operator= (const is threadable abstract &a)

Assignment operator.

Protected Attributes

92
• ulong max threads

Maximum number of concurrent threads.

• boost::shared mutex history mutex

Shared mutex for locking during write operations.

• boost::stateful thread group threads

Group of threads.

4.24.1 Constructor & Destructor Documentation

4.24.1.1 is threadable abstract::is threadable abstract ()[inline]

4.24.1.2 is threadable abstract::is threadable abstract (const is threadable abstract &

a)[inline]

4.24.2 Member Function Documentation

4.24.2.1 is threadable abstract& is threadable abstract::operator= (const

is threadable abstract & a)[inline]

4.24.2.2 ulong N )[inline]

4.24.3 Member Data Documentation

4.24.3.1 boost::shared mutex is threadable abstract::history mutex[mutable, protected]

4.24.3.2 ulong is threadable abstract::max threads[protected]

4.24.3.3 boost::stateful thread group is threadable abstract::threads[mutable, protected]

The documentation for this class was generated from the following file:

• isthreadableabstract.h

4.25 Concepts::Library< X > Class Template Reference

Concept defines an addressable set of values.

#include <concepts.hh>

Collaboration diagram for Concepts::Library< X >:

93
Concepts::Library< X >

X

i

linear_algebra::refvector< valerg >

vs

valerg

val

Public Member Functions

• BOOST CONCEPT USAGE (Library)

Private Attributes

• X i

• valerg val

• ulong index

• ulong mi

• refvector< ulong > rd

• refvector< valerg > vs

template<class X> class Concepts::Library< X >

4.25.1 Member Function Documentation

4.25.1.1 template<class X> Concepts::Library< X >::BOOST CONCEPT USAGE

(Library< X >)[inline]

Here is the call graph for this function:

Concepts::Library::BOOST_CONCEPT_USAGE Concepts::same_type

94
4.25.2 Member Data Documentation

4.25.2.1 template<class X> X& Concepts::Library< X >::i[private]

4.25.2.2 template<class X> ulong Concepts::Library< X >::index[private]

4.25.2.3 template<class X> ulong Concepts::Library< X >::mi[mutable, private]

4.25.2.4 template<class X> refvector<ulong> Concepts::Library< X >::rd[mutable,

private]

4.25.2.5 template<class X> valerg Concepts::Library< X >::val[private]

4.25.2.6 template<class X> refvector<valerg> Concepts::Library< X >::vs[mutable,

private]

The documentation for this class was generated from the following file:

• concepts.hh

4.26 Library data Class Reference

Abstract class for discrete optimizations.

#include <Library data.hh>

Inheritance diagram for Library data:

Library_data

chem_opt zmat_opt

Collaboration diagram for Library data:

Library_data

linear_algebra::refvector< valerg >

value_r

value

Public Member Functions

95
• Library data ()

Default Constructor.

• Library data (const Library data &a)

Copy constructor.

• virtual ∼Library data ()

Destructor.

• Library data & operator= (const Library data &d)

Assignment operator.

• virtual ulong get space size () const =0

Compute the size of the optimization space.

• virtual ulong get bits () const =0

Compute the number of bits to address the optimization space.

• valerg get value (ulong i) const

Retrieve a value for a number.

• void set Name (const string &A) const

Sets the name for the purpose of writing files etc.

Public Attributes

• const string & Name r

Access to Name (Read-Only).

• const refvector< ulong > & visited r

Visited numbers (Read-Only).

• const refvector< valerg > & value r

Values of visited numbers (Read-Only).

Protected Member Functions

• virtual valerg compute property (ulong i) const =0

Class must have a way to compute values.

Protected Attributes

96
• refvector< ulong > visited

Visited numbers.

• refvector< valerg > value

Values of visited numbers.

• ulong space size

• bool space size computed

• ulong bits

• bool bits computed

• string Nam

4.26.1 Detailed Description

This class provides the API that guarantees the Concepts::Library concept. The library is

considered an access class to a static Library. Therefore, many of its members are mutable

since the static library is too large to be stored completely. Instead, entries are computed

on the fly and memoized.

4.26.2 Constructor & Destructor Documentation

4.26.2.1 Library data::Library data ()[inline]

4.26.2.2 Library data::Library data (const Library data & a)[inline]

4.26.2.3 virtual Library data::∼Library data ()[inline, virtual]

4.26.3 Member Function Documentation

4.26.3.1 virtual valerg Library data::compute property (ulong i) const[protected, pure

virtual]

Implemented in chem opt, and zmat opt.

4.26.3.2 virtual ulong Library data::get bits () const[pure virtual]

Implemented in chem opt, and zmat opt.

4.26.3.3 virtual ulong Library data::get space size () const[pure virtual]

97
Implemented in chem opt, and zmat opt.

4.26.3.4 valerg Library data::get value (ulong i) const[inline]

Here is the call graph for this function:

Library_data::get_value Library_data::compute_property

4.26.4 Member Data Documentation

4.26.4.1 ulong Library data::bits[mutable, protected]

4.26.4.2 bool Library data::bits computed[mutable, protected]

4.26.4.3 string Library data::Name[mutable, protected]

4.26.4.4 const string& Library data::Name r

4.26.4.5 ulong Library data::space size[mutable, protected]

4.26.4.6 bool Library data::space size computed[mutable, protected]

4.26.4.7 refvector<valerg> Library data::value[mutable, protected]

4.26.4.8 const refvector<valerg>& Library data::value r

4.26.4.9 refvector<ulong> Library data::visited[mutable, protected]

4.26.4.10 const refvector<ulong>& Library data::visited r

The documentation for this class was generated from the following files:

• Library data.hh

• Library data.cc

4.27 linear algebra::mat asym full< TN > Class Template Reference

mat asym full uses packing for full antisymmetric matrices

Inheritance diagram for linear algebra::mat asym full< TN >:

98
linear_algebra::mat_asym_full< TN >

linear_algebra::asymmetric< TN >

linear_algebra::square< TN >

linear_algebra::matrix< TN >

Collaboration diagram for linear algebra::mat asym full< TN >:

linear_algebra::mat_asym_full< TN >

linear_algebra::asymmetric< TN >

linear_algebra::square< TN >

linear_algebra::matrix< TN >

Public Member Functions

• mat asym full ()

Default constructor.

• mat asym full (long n)

Constructor of dimension n with uninitialised values.

• mat asym full (long n, const std::vector< TN > &vals)

Constructor of dimension n with initialisation of values.

• mat asym full (long n, refvector< TN > &vals)

Constructor of dimension n with initialisation of values.

• mat asym full (std::istream &IN)

Constructor to read a stored matrix from a stream. Aimed at retrieving

information from a binary save with mat full::operator>>().

• void operator>> (std::ostream &OUT) const

Output an asymmetric, full matrix in binary format into a stream. Aimed at file

storage.

99
• const TN & operator() (const long x, const long y) const

Access operator which checks for integrity in debug mode.

• TN operator() (const long x, const long y)

Access operator which checks for integrity in debug mode.

• const TN & operator[ ] (const long x) const

Direct access operator which checks for integrity in debug mode.

• TN & operator[ ] (const long x)

Direct access operator which checks for integrity in debug mode.

• mat full< TN > & multiply (const mat full< TN > &a, mat full< TN > &r) const

Multiply by a full matrix.

• mat full< TN > operator ∗ (const mat full< TN > &a) const

Multiply by a full matrix.

• mat sparse< TN > multiply (const mat sym sparse< TN > &b, mat sparse< TN >

&r) const

Multiply two sparse matrices.

• sparse vector< TN > & multiply (const sparse vector< TN > &v, sparse vector<

TN > &r) const

Multiply an asymmetric full matrix with a sparse vector.

• mat asym full< TN > & operator ∗= (TN a)

Multiply by a number back into the matrix.

• mat asym full< TN > operator ∗ (TN a) const

Multiply by a number.

• refvector< TN > & multiply (const refvector< TN > &v, refvector< TN > &r) const

Multiply an asymmetric full matrix with a full vector.

• refvector< TN > operator ∗ (const refvector< TN > &v) const

Multiply an asymmetric full matrix with a full vector.

• refvector< TN > & multiply (const sparse vector< TN > &v, refvector< TN > &r)

const

Multiply an asymmetric full matrix with a full vector.

• refvector< TN > operator ∗ (const sparse vector< TN > &v) const

Multiply an asymmetric full matrix with a sparse vector.

100
• mat asym full< TN > operator+ (const mat asym full< TN > &a) const

Add an antisymmetric full matrix to an existing one.

• mat asym full< TN > & operator+= (const mat asym full< TN > &a)

Add an antisymmetric full matrix to an existing one.

• mat asym full< TN > & operator-= (const mat asym full< TN > &a)

Subtract an antisymmetric full matrix to an existing one.

• refvector< TN > extract col (const long x) const

Extract a column from an antisymmetric matyrix.

• mat full< TN > & multiply (const mat asym full< TN > &B, mat full< TN > &r)

const

Mulitply an antisymmetric full matrix with an antisymmetric full matrix.

• mat full< TN > operator ∗ (const mat asym full< TN > &B) const

Mulitply an antisymmetric full matrix with an antisymmetric full matrix.

• mat full< TN > operator ∗ (const mat sym full< TN > &B) const

Mulitply an antisymmetric full matrix with a symmetric full matrix.

• mat full< TN > & multiply (const mat sym sparse< TN > &B, mat full< TN > &r)

const

Mulitply an antisymmetric full matrix with a symmetric full matrix.

• mat full< TN > operator ∗ (const mat sym sparse< TN > &B) const

Mulitply an antisymmetric full matrix with a symmetric sparse matrix.

• mat sym full< TN > aa 

() const

Get the product AA∗.

• void add (const long x, const long y, TN a)

• bool display () const

Simple display of matrix.

• void set (const long x, const long y, TN value)

Assignment operation for compatibility with mat sym sparse.

• mat asym full< TN > & copy (const mat asym full< TN > a)

Copy matrix with depth 1.

• mat asym full< TN > & copy (const mat asym full< TN > a, const long i)

Copy matrix with depth i.

101
• void clear ()

Reset matrix releasing all associated memory.

• mat asym full< TN > & zero ()

Set matrix to 0, i.e., all elements.

• long size () const

Returns the size of the vector containing the matrix data.

• mat asym full< TN > & utu (const mat asym full< TN > &a, mat asym full< TN

> &R, mat full< TN > &I) const

This a symmetric transform SAS.

• mat asym full< TN > utu (const mat asym full< TN > &a, mat full< TN > &I)

const

This an antisymmetric transform SAS.

• mat asym full< TN > & utu (const mat asym full< TN > &a, mat asym full< TN

> &R) const

This an antisymmetric transform SAS.

• mat asym full< TN > utu (const mat asym full< TN > &a) const

This a symmetric transform SAS.

• mat asym full< TN > & utu (const mat full< TN > &U, mat asym full< TN >

&R) const

This is the unitary transform U∗AU.

• mat asym full< TN > utu (const mat full< TN > &U) const

This is the unitary transform U∧tAU.

• mat asym full< TN > & uut (const mat full< TN > &U, mat asym full< TN > &R,

mat full< TN > &I) const

This is the unitary transform UAU∗.

• mat asym full< TN > & uut (const mat full< TN > &U, mat asym full< TN >

&R) const

This is the unitary transform UAU∗.

• mat asym full< TN > uut (const mat full< TN > &U) const

This is the unitary transform UAU∗.

• void gen mat (const refvector< TN > &a, const refvector< TN > &b)

Produce the necessary ij∗ − ji∗.

102
• mat full< TN > householder (refvector< TN > &subdiagonal)

This routine produces the diagonal, sub/superdiagonal and transformation matrix

for the Householder transformation of a full anti-symmetric matrix.

• mat asym full< TN > & prune (const TN tol)

Prune the matrix of negligible values.

Private Attributes

• refvector< TN > vals

Vector of values including the diagonal (which by necessity is 0).

4.27.1 Detailed Description

template<class TN> class linear algebra::mat asym full< TN >

The packing is optimised for column access. The matrix is stored as the upper triangle.

The lower triangle is the negative of the upper triangle. It is important to note that the

diagonal is stored explicitly and may be non-zero. As such, these matrices are not

necessarily anti-symmetric, but pseudo antisymmetric in terms of the off diagonal terms.

4.27.2 Constructor & Destructor Documentation

4.27.2.1 template<class TN> linear algebra::mat asym full< TN >::mat asym full ()

mat asym full uses packing for full antisymmetric matrices Default constructor.

4.27.2.2 template<class TN> linear algebra::mat asym full< TN >::mat asym full (long n)

4.27.2.3 template<class TN> linear algebra::mat asym full< TN >::mat asym full (long n,

const std::vector< TN > & vals)

4.27.2.4 template<class TN> linear algebra::mat asym full< TN >::mat asym full (long n,

refvector< TN > & vals)

4.27.2.5 template<class TN> linear algebra::mat asym full< TN >::mat asym full

(std::istream & IN )

4.27.3 Member Function Documentation

4.27.3.1 template<class TN> mat sym full< TN > linear algebra::mat asym full< TN

>::aa t () const

103
Test

4.27.3.2 template<class TN> void linear algebra::mat asym full< TN >::add (const long

x, const long y, TN a)

4.27.3.3 template<class TN> void linear algebra::mat asym full< TN >::clear ()

4.27.3.4 template<class TN> mat asym full< TN > & linear algebra::mat asym full< TN

>::copy (const mat asym full< TN > a, const long i)

4.27.3.5 template<class TN> mat asym full< TN > linear algebra::mat asym full< TN

>::copy (const mat asym full< TN > a)

4.27.3.6 template<class TN> bool linear algebra::mat asym full< TN >::display () const

4.27.3.7 template<class TN> refvector< TN > linear algebra::mat asym full< TN

>::extract col (const long x) const

4.27.3.8 template<class TN> void linear algebra::mat asym full< TN >::gen mat (const

refvector< TN > & a, const refvector< TN > & b)

the result is + = ab∗ − ba∗.

Here is the call graph for this function:

linear_algebra::mat_asym_full::gen_mat linear_algebra::refvector::dim

4.27.3.9 template<class TN> mat full< TN > linear algebra::mat asym full< TN

>::householder (refvector< TN > & subdiagonal)

The aspired transformation is a multiplication by (I − vv∗) where v is

(±e1a12+ a12)/

±a12,1a12+ a122. Notice that we begin counting at 0. The matrix

is split up according to A =

 a11 a∗

12

a12 A22 

We use preconditioning such that the matrix is

ordered with lowest off-diagonal value in the low right=hand corner.

⎛

⎜⎜⎜⎝

a11 ···

...

... 0

ann

⎞

⎟⎟⎟⎠

Here is the call graph for this function:

4.27.3.10 template<class TN> mat full< TN > & linear algebra::mat asym 4-full< TN

104
linear_algebra::mat_asym_full::householder

linear_algebra::refvector::copy

linear_algebra::refvector::size

linear_algebra::mat_asym_full::gen_mat

linear_algebra::copy

linear_algebra::refvector::dim

>::multiply (const mat sym sparse< TN > & B, mat full< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::cols

linear_algebra::mat_sym_sparse::index

linear_algebra::mat_sym_full::multiply

linear_algebra::matrix::rows

linear_algebra::mat_sym_sparse::size

4.27.3.11 template<class TN> mat full< TN > & linear algebra::mat asym full< TN

>::multiply (const mat asym full< TN > & B, mat full< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::cols

linear_algebra::mat_full::display

linear_algebra::matrix::rows

linear_algebra::mat_full::zero linear_algebra::zero

4.27.3.12 template<class TN> refvector< TN > & linear algebra::mat asym full< TN

>::multiply (const sparse vector< TN > & v, refvector< TN > & r ) const

Here is the call graph for this function:

105
linear_algebra::mat_asym_full::multiply

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size linear_algebra::refvector::size

4.27.3.13 template<class TN> refvector< TN > & linear algebra::mat asym full< TN

>::multiply (const refvector< TN > & v, refvector< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_asym_full::multiply linear_algebra::refvector::dim

4.27.3.14 template<class TN> sparse vector< TN > & linear algebra::mat asym full< TN

>::multiply (const sparse vector< TN > & v, sparse vector< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_asym_full::multiply

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::prune

linear_algebra::sparse_vector::size

linear_algebra::sparse_vector::zero

linear_algebra::refvector::erase

linear_algebra::refvector::size

4.27.3.15 template<class TN> mat sparse< TN > & linear algebra::mat asym full< TN

>::multiply (const mat sym sparse< TN > & b, mat sparse< TN > & r ) const

Here is the call graph for this function:

106
linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::cols linear_algebra::mat_sym_sparse::index

linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::rows

linear_algebra::mat_sym_sparse::size

linear_algebra::refvector::vec

4.27.3.16 template<class TN> mat full< TN > & linear algebra::mat asym full< TN

>::multiply (const mat full< TN > & a, mat full< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.27.3.17 template<class TN> mat full< TN > linear algebra::mat asym full< TN

>::operator ∗ (const mat sym sparse< TN > & B) const

Here is the call graph for this function:

linear_algebra::mat_asym_full::operator *

linear_algebra::matrix::cols

linear_algebra::mat_asym_full::multiply linear_algebra::matrix::rows

4.27.3.18 template<class TN> mat full< TN > linear algebra::mat asym full< TN

>::operator ∗ (const mat sym full< TN > & B) const

Here is the call graph for this function:

107
linear_algebra::mat_asym_full::operator *

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.27.3.19 template<class TN> mat full< TN > linear algebra::mat asym full< TN

>::operator ∗ (const mat asym full< TN > & B) const

Here is the call graph for this function:

linear_algebra::mat_asym_full::operator * linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.27.3.20 template<class TN> refvector< TN > linear algebra::mat asym full< TN

>::operator ∗ (const sparse vector< TN > & v) const

Here is the call graph for this function:

linear_algebra::mat_asym_full::operator *

linear_algebra::sparse_vector::dim

linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.27.3.21 template<class TN> refvector< TN > linear algebra::mat asym full< TN

>::operator ∗ (const refvector< TN > & v) const

Here is the call graph for this function:

108
linear_algebra::mat_asym_full::operator *

linear_algebra::refvector::dim

linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.27.3.22 template<class TN> mat asym full< TN > linear algebra::mat asym full< TN

>::operator ∗ (TN a) const

Reimplemented from linear algebra::asymmetric< TN >.

4.27.3.23 template<class TN> mat full< TN > linear algebra::mat asym full< TN

>::operator ∗ (const mat full< TN > & a) const

Here is the call graph for this function:

linear_algebra::mat_asym_full::operator *

linear_algebra::matrix::cols

linear_algebra::mat_asym_full::multiply linear_algebra::matrix::rows

4.27.3.24 template<class TN> mat asym full< TN > & linear algebra::mat asym full<

TN >::operator ∗= (TN a)

4.27.3.25 template<class TN> TN linear algebra::mat asym full< TN >::operator() (const

long x, const long y)

4/27/3/26 template<class TN> const TN & linear algebra::mat asym full< TN

>::operator() (const long x, const long y) const[virtual]

Implements linear algebra::matrix< TN >.

4.27.3.27 template<class TN> mat asym full< TN > linear algebra::mat asym full< TN

>::operator+ (const mat asym full< TN > & a) const

4.37.3.28 template<class TN> mat asym full< TN > & linear algebra::mat asym full<

TN >::operator+= (const mat asym full< TN > & a)

4.27.3.29 template<class TN> mat asym full< TN > & linear algebra::mat asym full<

TN >::operator-= (const mat asym full< TN > & a)

4.27.3.30 template<class TN> void linear algebra::mat asym full< TN >::operator>>

(std::ostream & OUT ) const[virtual]

Reimplemented from linear algebra::matrix< TN >.

109
4.27.3.31 template<class TN> TN & linear algebra::mat asym full< TN >::operator[ ]

(const long x)

4.27.3.32 template<class TN> const TN & linear algebra::mat asym full< TN

>::operator[ ] (const long x) const

Here is the call graph for this function:

linear_algebra::mat_asym_full::operator[] linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

4.27.3.33 template<class TN> mat asym full< TN > & linear algebra::mat asym full<

TN >::prune (const TN tol)

4.27.3.34 template<class TN> void linear algebra::mat asym full< TN >::set (const long

x, const long y, TN value)

4.27.3.35 template<class TN> long linear algebra::mat asym full< TN >::size () const

Here is the call graph for this function:

linear_algebra::mat_asym_full::size linear_algebra::refvector::dim

4.27.3.36 template<class TN> mat asym full< TN > linear algebra::mat asym full< TN

>::utu (const mat full< TN > & U ) const

Here is the call graph for this function:

linear_algebra::mat_asym_full::utu linear_algebra::matrix::cols

linear_algebra::mat_asym_full::utu

4.27.3.37 template<class TN> mat asym full< TN > & linear algebra::mat asym full<

TN >::utu (const mat full< TN > & U , mat asym full< TN > & R) const

Here is the call graph for this function:

4.27.3.38 template<class TN> mat asym full< TN > linear algebra::mat asym full< TN

>::utu (const mat asym full< TN > & a) const

Here is the call graph for this function:

110
linear_algebra::mat_asym_full::utu

linear_algebra::matrix::cols

linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::utu

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::utu

4.27.3.39 template<class TN> mat asym full< TN > & linear algebra::mat asym full<

TN >::utu (const mat asym full< TN > & a, mat asym full< TN > & R) const

Here is the call graph for this function:

linear_algebra::mat_asym_full::utu

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::utu

4.27.3.40 template<class TN> mat asym full< TN > linear algebra::mat asym full< TN

>::utu (const mat asym full< TN > & a, mat full< TN > & I) const

Here is the call graph for this function:

4.27.3.41 template<class TN> mat asym full< TN > & linear algebra::mat asym full<

TN >::utu (const mat asym full< TN > & a, mat asym full< TN > & R, mat full< TN >

& I) const

Here is the call graph for this function:

4.27.3.42 template<class TN> mat asym full< TN > linear lgebra::mat asym full< TN

>::uut (const mat full< TN > & U ) const

Here is the call graph for this function:

4.27.3.43 template<class TN> mat asym full< TN > & linear algebra::mat asym full<

TN >::uut (const mat full< TN > & U , mat asym full< TN > & R) const

Here is the call graph for this function:

4.27.3.44 template<class TN> mat asym full< TN > & linear algebra::mat asym full<

TN >::uut (const mat full< TN > & U , mat asym full< TN > & R, mat full< TN > &

I) const

111
linear_algebra::mat_asym_full::utu

linear_algebra::matrix::cols

linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::utu

linear_algebra::matrix::cols

linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::rows

Here is the call graph for this function:

4.27.3.45 template<class T> mat asym full< T > & linear algebra::mat asym full< T

>::zero ()

4.27.4 Member Data Documentation

4.27.4.1 template<class TN> refvector<TN> linear algebra::mat asym full< TN

>:: vals[private]

The documentation for this class was generated from the following files:

• include/BCR CPP LA/mat asym full.decl

• include/BCR CPP LA/mat asym full.h

4.28 linear algebra::mat asym sparse< TN > Class Template Reference

mat asym sparse packs sparse column matrices into a comfortable format.

Inheritance diagram for linear algebra::mat asym sparse< TN >:

Collaboration diagram for linear algebra::mat asym sparse< TN >:

Public Member Functions

• mat asym sparse ()

Default constructor.

• mat asym sparse (long n)

Constructor of dimension n with uninitialised values.

112
linear_algebra::mat_asym_full::uut

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::uut linear_algebra::matrix::cols

linear_algebra::mat_full::multiply

linear_algebra::mat_asym_full::uut

linear_algebra::matrix::rows

linear_algebra::mat_asym_full::uut linear_algebra::matrix::cols

linear_algebra::mat_full::multiply

• mat asym sparse (long n, const vector< long > &scols, const vector< sparse vector<

TN > > &vals)

Constructor of dimension n with initialisation of values.

• mat asym sparse (long n, const vector< long > &scols, const refvector<

sparse vector< TN > > &vals)

Constructor of dimension n with initialisation of values.

• mat asym sparse (long n, const refvector< long > &scols, const refvector<

sparse vector< TN > > &vals)

Constructor of dimension n with initialisation of values.

• mat asym sparse (long n, const refvector< long > &scols, const vector<

sparse vector< TN > > &vals)

Constructor of dimension n with initialisation of values.

• mat asym spars (istream &IN)

Constructor to read a stored matrix from a stream. Aimed at retrieving

information from a binary save with mat asym sparse::operator>>().

• mat asym sparse< TN > & operator= (const mat asym sparse< TN > &b)

• TN operator() (const long x, const long y) const

Access operator.

• const sparse vector< TN > operator[ ] (const long i) const

Direct access operator.

• sparse vector< TN > & operator[ ](const long i)

Direct access operator.

• void set (const long x, const long y, TN value)

Set operation for safe assignments.

113
linear_algebra::mat_asym_full::uut

linear_algebra::matrix::cols

linear_algebra::mat_full::multiply

linear_algebra::matrix::rows

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size

linear_algebra::mat_asym_sparse< TN >

linear_algebra::asymmetric< TN >

linear_algebra::square< TN >

linear_algebra::matrix< TN >

• mat asym sparse< TN > operator ∗ (const TN &a) const

Multiplies an antisymmetric sparse matrix with an object.

• mat full< TN > operator ∗ (mat full< TN > A) const

Multiply by a full matrix.

• mat full< TN > & multiply (mat full< TN > A, mat full< TN > &r) const

Multiply by a full matrix.

• refvector< TN > & multiply (const refvector< TN > &v, refvector< TN > &r) const

Multiply a symmetric sparse matrix with a full vector into a full vector./test.

• refvector< TN > operator ∗ (const refvector< TN > &v) const

Multiply an antisymmetric sparse matrix with a full vector into a full vector./test.

• mat asym sparse< TN > & operator ∗= (const TN &x)

Multiply by an object of TN into left side.

• mat asym sparse< TN > & multiply (long x, long y, TN a)

Multiplies an element by a number.

• mat full< TN > & multiply (const mat asym full< TN > &B, mat full< TN > &r)

const

Multiply an antisymmetric sparse matrix with a full vector into a full vector./test.

• mat full< TN > operator ∗ (const mat asym full< TN > &B) const

Multiply a symmetric sparse matrix with a full vector into a full vector./test.

114
linear_algebra::mat_asym_sparse< TN >

linear_algebra::asymmetric< TN >

linear_algebra::square< TN >

linear_algebra::matrix< TN >

linear_algebra::refvector< long >

_scols

TN

_prune_tol

• mat sym full< TN > aa 

() const

return a symmetric full matrix=g · g∗.

• mat asym sparse & operator/=(const TN &x)

Divide by an object of TN into left side. This is very slow and not advisable.

• sparse vector< TN > operator ∗ (const sparse vector< TN > &v) const

Multiply a sparse symmetric matrix with a sparse vector.

• mat sparse< TN > operator ∗ (const mat sparse< TN > &B) const

Multiply a sparse symmetric matrix with a sparse matrix.

• mat asym sparse< TN > & operator+= (const mat asym sparse< TN > &B)

Add a matrix into left object.

• mat asym sparse< TN > & operator-= (const mat asym sparse< TN > &B)

Subtract a matrix into left object.

• bool is col nonzero (const long x, long &i) const

• bool is nonzero (long x, long y, long &j, long &k) const

Checks whether an access is non zero.

• bool add (long x, long y, const TN z)

Adds a value.

• bool is empty () const

• long size () const

Returns size of non-zero entries in svals.

• void operator>> (ostream &OUT) const

Output matrix in binary format into a stream. Aimed at file storage.

• mat asym sparse< TN > & prune (const TN x=0)

Deletes all entries that are smaller in magnitude than x.

115
• TN max element () const

Finds a maximum element.

• bool display () const

Simple display of matrix.

• vector< TN > extract full col (const long column, const long xmin, const long xmax)

const

Extracts a block from a column/row.

• vector< TN > extract full col (const long column, const long xmin=0) const

Extracts a block from a column/row.

• mat asym full< TN > extract full asym block (long xmin, long xmax) const

Extracts a full symmetric block.

• mat asym full< TN > extract full asym block (long xmin=0) const

Extracts a full symmetric block.

• mat sparse< TN > extract sparse block (long xmin, long xmax, long ymin, long

ymax) const

Extracts a block from anywhere in the matrix.

• sparse vector< TN > extract sparse col (const long column, const long xmin=0)

const

Extracts a block from a column/row.

• sparse vector< TN > extract sparse lower col (const long column, const long xmin,

const long xmax) const

Extracts a sparse column up to the diagonal.

• sparse vector< TN > extract sparse lower col (const long column, const long

xmin=0) const

Extracts a block from a column/row.

• double density () const

Return the density of non-zero elements.

• void clear ()

Sets matrix to zero releasing all associated memory.

• mat asym sparse< TN > & zero ()

Sets matrix to zero releasing all associated memory.

• long index (long i) const

Returns the ith nonzero column number.

116
• mat asym full< TN > & utu (const mat full< TN > &U, mat asym full< TN >

&R) const

This is the unitary transform U∗AU.

• mat asym full< TN > utu (const mat full< TN > &U) const

This is the unitary transform U∧tAU.

Public Attributes

• TN prune tol

Tolerance for multiplication with a sparse vector.

Private Attributes

• refvector< long > scols

Vector of column indices.

• refvector< sparse vector< TN > > svals

Vector of sparse columns.

• bool empty

State of matrix.

Friends

• class mat sparse< TN >

• class mat full< TN >

4.28.1 Detailed Description

template<class TN> class linear algebra::mat asym sparse< TN >

The sparse matrix is packed as a sparse vector of sparse vectors. Only the columns which

are not empty are indexed and kept in memory. The sparse vector part takes care of the

rows.

117
4.28.2 Constructor & Destructor Documentation

4.28.2.1 template<class TN> linear algebra::mat asym sparse< TN >::mat asym sparse ()

4.28.2.2 template<class TN> linear algebra::mat asym sparse< TN >::mat asym sparse

(long n)

4.28.2.3 template<class TN> linear algebra::mat asym sparse< TN >::mat asym sparse

(long n, const vector< long > & scols, const vector< sparse vector< TN > > & vals)

Parameters

n Dimension of matrix.

srows Vector of row indices.

scols Vector of column indices.

vals Vector of values.

Each value has an associated row and column index in srows and scols. Therefore they all

have the same size. There is no integrity check.

4.28.2.4 template<class TN> linear algebra::mat asym sparse< TN >::mat asym sparse

(long n, const vector< long > & scols, const refvector< sparse vector< TN > > & vals)

n Dimension of matrix.

srows Vector of row indices.

scols Vector of column indices.

vals reference counted Vector of values.

Each value has an associated row and column index in srows and scols. Therefore they all

have the same size. There is no integrity check.

4.28.2.5 template<class TN> linear algebra::mat asym sparse< TN >::mat asym sparse

(long n, const refvector< long > & scols, const refvector< sparse vector< TN > > & vals)

textbf Parameters:

n Dimension of matrix.

srows Vector of row indices.

scols Reference counted vector of column indices.

vals Reference counted vector of values.

Each value has an associated row and column index in srows and scols. Therefore they all

have the same size. There is no integrity check.

118
Here is the call graph for this function:

linear_algebra::mat_asym_sparse::mat_asym_sparse linear_algebra::refvector::size

4.28.2.6 template<class TN> linear algebra::mat asym sparse< TN >::mat asym sparse

(long n, const refvector< long > & scols, const vector< sparse vector< TN > > & vals)

Parameters:

n Dimension of matrix.

srows Vector of row indices.

scols]Reference counted vector of column indices.

vals Vector of values. Each value has an associated row and column index in srows and

scols. Therefore they all have the same size. There is no integrity check.

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::mat_asym_sparse linear_algebra::refvector::size

4.28.2.7 template<class TN> linear algebra::mat asym sparse< TN >::mat asym sparse

(istream & IN )

The resultant vector is pruned to default pruning tolerance = 0. This should be completely

superfluous but in case a different program not using this class produces the matrix as

input we prune.

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::mat_asym_sparse

linear_algebra::matrix::cols

linear_algebra::mat_asym_sparse::prune

linear_algebra::mat_asym_sparse::size

linear_algebra::refvector::push_back

linear_algebra::refvector::size

4.28.3 Member Function Documentation

4.28.3.1 template<class TN> mat sym full< TN > linear algebra::mat asym sparse< TN

>::aa 

() const

119
4.28.3.2 template<class TN> bool linear algebra::mat asym sparse< TN >::add (long x,

long y, const TN z )

Parameters:

z is added to (x,y). If the value is zero the associated vectors are expanded.

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::add

linear_algebra::refvector::insert

linear_algebra::mat_asym_sparse::is_col_nonzero linear_algebra::refvector::size

4.28.3.3 template<class TN> void linear algebra::mat asym sparse< TN >::clear ()

4.28.3.4 template<class TN> double linear algebra::mat asym sparse< TN >::density ()

const

4.28.3.5 template<class TN> bool linear algebra::mat asym sparse< TN >::display ()

const

4.28.3.6 template<class TN> mat asym full< TN > linear algebra::mat asym sparse< TN

>::extract full asym block (long xmin = 0) const

4.28.3.7 template<class TN> mat asym full< TN > linear algebra::mat asym sparse< TN

>::extract full asym block (long xmin, long xmax) const

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::extract_full_asym_block

linear_algebra::mat_asym_sparse::is_col_nonzero

linear_algebra::mat_asym_sparse::size

4.28.3.8 template<class TN> vector< TN > linear algebra::mat asym sparse< TN

>::extract full col (const long column, const long xmin = 0) const

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::extract_full_col linear_algebra::mat_asym_sparse::extract_full_col

4.28.3.9 template<class TN> vector< TN > linear algebra::mat asym sparse< TN

>::extract full col (const long column, const long xmin, const long xmax) const

120
Here is the call graph for this function:

linear_algebra::mat_asym_sparse::extract_full_col linear_algebra::mat_asym_sparse::is_col_nonzero linear_algebra::refvector::size

4.28.3.10 template<class TN> mat sparse< TN > linear algebra::mat asym sparse< TN

>::extract sparse block (long xmin, long xmax, long ymin, long ymax ) const

Test

should work, but ...

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::extract_sparse_block

linear_algebra::mat_asym_sparse::is_nonzero

linear_algebra::refvector::push_back

linear_algebra::mat_asym_sparse::size

linear_algebra::refvector::size

4.28.3.11 template<class TN> sparse vector< TN > linear algebra::mat asym sparse< TN

>::extract sparse col (const long column, const long xmin = 0) const

4.28.3.12 template<class TN> sparse vector< TN > linear algebra::mat asym sparse< TN

>::extract sparse lower col (const long column, const long xmin = 0) const

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::extract_sparse_lower_col linear_algebra::mat_asym_sparse::extract_sparse_lower_col

4.28.3.13 template<class TN> sparse vector< TN > linear algebra::mat sym sparse< TN

>::extract sparse lower col (const long column, const long xmin, const long xmax) const

Here is the call graph for this function:

121
linear_algebra::mat_asym_sparse::extract_sparse_lower_col

linear_algebra::mat_asym_sparse::is_col_nonzero

linear_algebra::refvector::push_back

4.28.3.14 template<class TN> long linear algebra::mat asym sparse< TN >::index (long i)

const

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::index linear_algebra::refvector::size

4.28.3.15 template<class TN> bool linear algebra::mat asym sparse< TN >::is col nonzero

(const long x, long & i) const

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::is_col_nonzero linear_algebra::refvector::size

4.28.3.16 template<class TN> bool linear algebra::mat asym sparse< TN >::is empty ()

const

4.28.3.17 template<class TN> bool linear algebra::mat asym sparse< TN >::is nonzero

(long x, long y, long & j, long & k) const

Parameters:

j holds the position of (x,y) in vals. If (x,y) is 0. An insertion would happen here.

4.28.3.18 template<class TN> TN linear algebra::mat asym sparse< TN >::max element

() const

Here is the call graph for this function:

122
linear_algebra::mat_asym_sparse::max_element linear_algebra::mat_asym_sparse::size

4.28.3.19 template<class TN> mat full< TN > & linear algebra::mat asym sparse< TN

>::multiply (const mat asym full< TN > & B, mat full< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::multiply

linear_algebra::matrix::cols

linear_algebra::mat_asym_sparse::index

linear_algebra::matrix::rows

linear_algebra::refvector::size

4.28.3.20 template<class TN> mat asym sparse< TN > &

linear algebra::mat asym sparse< TN >::multiply (long x, long y, TN a)

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::multiply linear_algebra::mat_asym_sparse::is_col_nonzero linear_algebra::refvector::size

4.28.3.21 template<class TN> refvector< TN > & linear algebra::mat asym sparse< TN

>::multiply (const refvector< TN > & v, refvector< TN > & r ) const

Here is the call graph for this function:

123
linear_algebra::mat_asym_sparse::multiply linear_algebra::sparse_vector::copy linear_algebra::refvector::vec

4.28.3.22 template<class TN> mat full< TN > & linear algebra::mat asym sparse< TN

>::multiply (mat full< TN > A, mat full< TN > & r ) const

Test

4.28.3.23 template<class TN> mat sparse< TN > linear algebra::mat asym sparse< TN

>::operator ∗ (const mat sparse< TN > & B) const

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::operator *

linear_algebra::refvector::push_back

linear_algebra::refvector::size

linear_algebra::refvector::vec

4.28.3.24 template<class TN> sparse vector< TN > linear algebra::mat asym sparse< TN

>::operator ∗ (const sparse vector< TN > & v) const

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::operator *

linear_algebra::sparse_vector::copy

linear_algebra::refvector::push_back

linear_algebra::refvector::size

linear_algebra::mat_asym_sparse::size

linear_algebra::refvector::vec

4.28.3.25 template<class TN> mat full< TN > linear algebra::mat asym sparse< TN

>::operator ∗ (const mat asym full< TN > & B) const

Here is the call graph for this function:

124
linear_algebra::mat_asym_sparse::operator *

linear_algebra::matrix::cols

linear_algebra::mat_asym_sparse::multiply

4.28.3.26 template<class TN> refvector< TN > linear algebra::mat asym sparse< TN

>::operator ∗ (const refvector< TN > & v) const

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::operator * linear_algebra::mat_asym_sparse::multiply

4.28.3.27 template<class TN> mat full< TN > linear algebra::mat asym sparse< TN

>::operator ∗ (mat full< TN > A) const

Test

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::operator *

linear_algebra::matrix::cols

linear_algebra::mat_asym_sparse::multiply

4.28.3.28 template<class TN> mat asym sparse< TN > linear algebra::mat asym sparse<

TN >::operator ∗ (const TN & a) const

Here is the call graph for this function:

125
linear_algebra::mat_asym_sparse::operator *

linear_algebra::refvector::size

linear_algebra::refvector::vec

4.28.3.29 template<class TN> mat asym sparse< TN > &

linear algebra::mat asym sparse< TN >::operator ∗= (const TN & x)

4.28.3.30 template<class TN> TN linear algebra::mat asym sparse< TN >::operator()

(const long x, const long y) const[virtual]

Implements linear algebra::matrix< TN >.

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::operator() linear_algebra::mat_asym_sparse::is_nonzero

4.28.3.31 template<class TN> mat asym sparse<TN>& linear algebra::mat asym sparse<

TN >::operator+= (const mat asym sparse< TN > & B)

4.28.3.32 template<class TN> mat asym sparse<TN>& linear algebra::mat asym sparse<

TN >::operator-= (const mat asym sparse< TN > & B)

4.28.3.33 template<class TN> mat asym sparse< TN > &

linear algebra::mat asym sparse< TN >::operator/= (const TN & x)

4.28.3.34 template<class TN> mat asym sparse< TN > &

linear algebra::mat asym sparse< TN >::operator= (const mat asym sparse< TN > & b)

4.28.3.35 template<class TN> void linear algebra::mat asym sparse< TN >::operator>>

(ostream & OUT ) const

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::operator>> linear_algebra::refvector::size

4.28.3.36 template<class TN> sparse vector< TN > & linear algebra::mat asym sparse<

TN >::operator[ ] (const long i)

Here is the call graph for this function:

126
linear_algebra::mat_asym_sparse::operator[] linear_algebra::refvector::dim

4.28.3.37 template<class TN> const sparse vector< TN >

linear algebra::mat asym sparse< TN >::operator[ ] (const long i) const

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::operator[] linear_algebra::refvector::size

4.28.3.38 template<class TN> mat asym sparse< TN > &

linear algebra::mat asym sparse< TN >::prune (const TN x = 0)

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::prune

linear_algebra::refvector::erase

linear_algebra::mat_asym_sparse::size

4.28.3.39 template<class TN> void linear algebra::mat asym sparse< TN >::set (const

long x, const long y, TN value)

Here is the call graph for this function:

127
linear_algebra::mat_asym_sparse::set

linear_algebra::refvector::insert

linear_algebra::mat_asym_sparse::is_col_nonzero linear_algebra::refvector::size

4.28.3.40 template<class TN> long linear algebra::mat asym sparse< TN >::size () const

4.28.4.41 template<class TN> mat asym full< TN > linear algebra::mat asym sparse<

TN >::utu (const mat full< TN > & U ) const

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::utu linear_algebra::mat_asym_sparse::utu

linear_algebra::matrix::cols

linear_algebra::mat_asym_sparse::multiply

linear_algebra::matrix::rows

4.28.3.42 template<class TN> mat asym full< TN > & linear algebra::mat asym sparse<

TN >::utu (const mat full< TN > & U , mat asym full< TN > & R) const

Here is the call graph for this function:

linear_algebra::mat_asym_sparse::utu

linear_algebra::matrix::cols

linear_algebra::mat_asym_sparse::multiply

linear_algebra::matrix::rows

128
4.28.3.43 template<class TN> mat asym sparse< TN > &

linear algebra::mat asym sparse< TN >::zero ()

4.28.4 Friends and Related Function Documentation

4.28.4.1 template<class TN> friend class mat full< TN >[friend]

4.28.4.2 template<class TN> friend class mat sparse< TN >[friend]

4.28.5 Member Data Documentation

4.28.5.1 template<class TN> bool linear algebra::mat asym sparse< TN

>:: empty[private]

4.28.5.2 template<class TN> TN linear algebra::mat asym sparse< TN >:: prune tol

4.28.5.3 template<class TN> refvector<long> linear algebra::mat asym sparse< TN

>:: scols[private]

4.28.5.4 template<class TN> refvector<sparse vector<TN> >

linear algebra::mat asym sparse< TN >:: svals[private]

The documentation for this class was generated from the following files:

• include/BCR CPP LA/mat asym sparse.decl

• include/BCR CPP LA/mat asym sparse.h

4.29 linear algebra::mat full< TN > Class Template Reference

Class of full column matrices.

129
Inheritance diagram for linear algebra::mat full< TN >:

linear_algebra::mat_full< TN >

linear_algebra::matrix< TN >

Collaboration diagram for linear algebra::mat full< TN >:

linear_algebra::mat_full< TN >

linear_algebra::matrix< TN >

Public Member Functions

• mat full (long n, long m)

Constructor of n columns and m rows with uninitialised values.

• mat full (long n, long m, const std::vector< std::vector< TN > > &vals)

Constructor of n columns and m rows with initialisation of values.

• mat full (long n, long m, const TN ∗vals[ ])

Constructor of n columns and m rows with initialisation of values. You had

better be sure there is no buffer overrun.

• mat full (long n, long m, const refvector< std::vector< TN > > &vals)

Constructor of n columns and m rows with initialisation of values.

• mat full (long n, long m, const refvector< refvector< TN > > &vals)

Constructor of n columns and m rows with initialisation of values.

• mat full (long n, long m, const std::vector< refvector< TN > > &vals)

Constructor of n columns and m rows with initialisation of values.

• mat full ()

• mat full (std::istream &IN)

Constructor to read a stored matrix from a stream. Aimed at retrieving

information from a binary save with mat full::operator>>().

• ∼mat full ()

130
• mat full< TN > & operator= (mat full< TN > &a)

Assignment operator for non const objects.

• mat full< TN > & operator= (const mat full< TN > &a)

Assignment operator for non const objects.

• bool operator== (const mat full< TN > &b) const

Compares two full matrices.

• bool same (const mat full< TN > &b) const

• refvector< TN > & operator[ ] (const long x)

Return a column through direct access. No integrity checked.

• const refvector< TN > & operator[ ] (const long x) const

Return a column through direct access. No integrity checked.

• const TN & operator() (const long x, const long y) const

Return value at (x,y).

• TN & operator() (const long x, const long y)

Return value at (x,y).

• refvector< TN > & multiply (const sparse vector< TN > &a, refvector< TN > &r)

const

Multiply a full matrix by a sparse vector.

• refvector< TN > operator ∗ (const sparse vector< TN > &a) const

Multiply a full matrix by a sparse vector.

• mat full< TN > operator ∗ (const TN &a) const

Multiply a full matrix by a number.

• mat full< TN > & multiply (const TN &a, mat full< TN > &r) const

Multiply a full matrix by a number.

• mat full< TN > & operator ∗= (const TN &x)

Multiply by an object of TN into left side.

• mat full< TN > & operator/= (const TN &x)

Divide by an object of TN into left side. This is very slow and not advisable.

• mat full< TN > & operator ∗= (const mat asym full< TN > &b)

Multiply an asymmetric, full matrix from the left into this full matrix.

• mat full< TN > & operator ∗= (const mat sym full< TN > &b)

Multiply a symmetric, full matrix from the left into this full matrix.

131
• mat full< TN > & multiply (const mat full< TN > &b, mat full< TN > &r) const

Multiply two full matrices.

• mat full< TN > operator ∗ (const mat full< TN > &b) const

Multiply two full matrices.

• mat full< TN > & multiply t a (const mat full< TN > &b, mat full< TN > &r)

const

Multiply the transpose of a full matrix with a full matrix.

• mat full< TN > multiply t a (const mat full< TN > &b) const

Multiply the transpose of a full matrix with a full matrix.

• mat full< TN > & multiply a t (const mat full< TN > &b, mat full< TN > &r)

const

Multiply full matrix with the transpose of a full matrix.

• mat full< TN > multiply a t (const mat full< TN > &b) const

Multiply full matrix with the transpose of a full matrix.

• mat full< TN > & multiply (const mat sym full< TN > &b, mat full< TN > &r)

const

Multiply a full matrix by a symmetric full matrix.

• mat full< TN > operator ∗ (const mat sym full< TN > &b) const

Multiply a full matrix by a symmetric full matrix.

• mat full< TN > & multiply (const mat asym full< TN > &b, mat full< TN > &r)

const

Multiply a full matrix by an antisymmetric full matrix.

• mat full< TN > operator ∗ (const mat asym full< TN > &b) const

Multiply a full matrix by an antisymmetric full matrix.

• mat full< TN > & multiply (const mat sym sparse< TN > &b, mat full< TN > &r)

const

Multiply a full matrix by a symmetric sparse matrix.

• mat full< TN > operator ∗ (const mat sym sparse< TN > &b) const

Multiply a full matrix by a symmetric sparse matrix.

• template<class TN2> refvector< TN > & multiply (const refvector< TN2 > &a,

refvector< TN > &r) const

Multiply a full matrix by a full vector.

132
• template<class TN2> refvector< TN > operator ∗ (const refvector< TN2 > &a)

const

Multiply a full matrix by a full vector.

• mat full< TN > & operator ∗= (const mat full< TN > &b)

Multiplies the left hand side from the { left } by the right hand side.

• mat full< TN > & operator+= (const mat full< TN > &b)

Add two matrices.

• mat full< TN > & operator+= (const mat sym full< TN > &b)

Add two matrices.

• mat full< TN > & operator-= (const mat full< TN > &b)

Subtract two matrices.

• mat full< TN > & operator-= (const mat sym full< TN > &b)

Add two matrices.

• mat full< TN > operator+ (const mat full< TN > &b) const

Add two matrices.

• mat full< TN > operator- (const mat full< TN > &b) const

Subtract two matrices.

• mat full< TN > & copy (const mat full< TN > &a)

Copy matrix with full depth.

• mat full< TN > & copy (const mat full< TN > &a, const long i)

Copy matrix with depth i.

• mat full< TN > & copy (mat full< TN > &a, const long i)

Copy matrix with depth i.

• matrix< TN > & copy (const matrix< TN > &a)

Copy matrix with full depth.

• matrix< TN > & copy (const matrix< TN > &a, long i)

Copy matrix with depth i.

• matrix< TN > & copy (matrix< TN > &a, long i)

Copy matrix with depth i.

• bool add(const long x, const long y, const TN z)

Adds a value.

133
• void set (const long x, const long y, TN z)

Set a value.

• bool display () const

Simple display of matrix.

• bool display (std::ostream &os) const

Simple display of matrix.

• mat sym full< TN > sym upper triangle () const

Returns a mat sym full object of the upper triangle of a full matrix.

• mat sym full< TN > & sym upper triangle (mat sym full< TN > &r) const

Returns a mat sym full object of the upper triangle of a full matrix.

• mat asym full< TN > asym upper triangle () const

Returns a mat asym full object of the upper triangle of a full matrix.

• mat sym full< TN > sym lower triangle () const

Returns a mat sym full object of the lower triangle of a full matrix.

• mat sym full< TN > & sym lower triangle (mat sym full< TN > &r) const

Returns a mat sym full object of the lower triangle of a full matrix.

• mat full< double > & gauss elim (mat full< TN > &T)

Do half a householder and then do gaussian elimination for a left inverse.

• mat full< TN > transpose () const

Transposes the full matrix.

• mat full< TN > & transpose (mat full< TN > &t) const

Transposes the full matrix.

• mat full< TN > & grow (long n, long m)

Extend the matrix by n columns and m rows.

• void clear ()

Release the associated memory.

• mat full< TN > & prune (TN a)

Prune the matrix of negligible values.

• mat full< TN > & zero ()

Set the matrix to zero.

• mat full< TN > & one ()

Set the matrix to the identity.

134
Protected Attributes

• refvector< refvector< TN > > scols

< Vector of columns.

4.29.1 Detailed Description

template<class TN> class linear algebra::mat full< TN >

’column’ specifies that the values are ordered for speedy retrieval per column.

4.29.2 Constructor & Destructor Documentation

4.29.2.1 template<class TN> linear algebra::mat full< TN >::mat full (long n, long m)

’column’ specifies that the values are ordered for speedy retrieval per column.

4.29.2.2 template<class TN> linear algebra::mat full< TN >::mat full (long n, long m,

const std::vector< std::vector< TN > > & vals)

4.29.2.3 template<class TN> linear algebra::mat full< TN >::mat full (long n, long m,

const TN ∗ vals[ ])

Parameters:

n Columns of matrix.

m Rows of matrix.

vals array of columns.

Each column is a full array.

Each value has an associated row and column index in srows and scols. Therefore they all

have the same size.

4.29.2.4 template<class TN> linear algebra::mat full< TN >::mat full (long n, long m,

const refvector< std::vector< TN > > & vals)

4.29.2.5 template<class TN> linear algebra::mat full< TN >::mat full (long n, long m,

const refvector< refvector< TN > > & vals)

Parameters:

n Dimension of matrix.

135
scols Reference counted vector of column indices.

vals Reference counted vector of columns.

Each column is a full vector.

Each value has an associated row and column index in srows and scols. Therefore they all

have the same size.

4.29.2.6 template<class TN> linear algebra::mat full< TN >::mat full (long n, long m,

const std::vector< refvector< TN > > & vals)

4.29.2.7 template<class TN> linear algebra::mat full< TN >::mat full ()

4.29.2.8 template<class TN> linear algebra::mat full< TN >::mat full (std::istream & IN )

4.29.4.9 template<class TN> linear algebra::mat full< TN >::∼mat full ()

4.29.3 Member Function Documentation

4.29.3.1 template<class TN> bool linear algebra::mat full< TN >::add (const long x,

const long y, const TN z )

Parameters:

z is added to (x,y). If the value is zero the associated vectors are expanded.

4.29.3.2 template<class TN> mat asym full< TN > linear algebra::mat full< TN

>::asym upper triangle () const

4.29.3.3 template<class TN> void linear algebra::mat full< TN >::clear ()

4.29.3.4 template<class TN> matrix< TN > & linear algebra::mat full< TN >::copy

(matrix< TN > & a, long i)

Here is the call graph for this function:

linear_algebra::mat_full::copy linear_algebra::mat_full::copy

4.29.3.5 template<class TN> matrix< TN > & linear algebra::mat full< TN >::copy

(const matrix< TN > & a, long i)

Here is the call graph for this function:

136
linear_algebra::mat_full::copy linear_algebra::mat_full::copy

4.29.3.6 template<class TN> matrix< TN > & linear algebra::mat full< TN >::copy

(const matrix< TN > & a)

Here is the call graph for this function:

linear_algebra::mat_full::copy linear_algebra::mat_full::copy

4.29.3.7 template<class TN> mat full< TN > & linear algebra::mat full< TN >::copy

(mat full< TN > & a, const long i)

4.29.3.8 template<class TN> mat full< TN > & linear algebra::mat full< TN >::copy

(const mat full< TN > & a, const long i)

4.29.3.9 template<class TN> mat full< TN > & linear algebra::mat full< TN >::copy

(const mat full< TN > & a)

4.29.3.10 template<class TN> bool linear algebra::mat full< TN >::display (std::ostream

& os) const

4.29.3.11 template<class TN> bool linear algebra::mat full< TN >::display () const

4.29.3.12 template<class TN> mat full< double > & linear algebra::mat full< TN

>::gauss elim (mat full< TN > & T )

Todo

Throw exceptions for ill-conditioned matrices

Here is the call graph for this function:

linear_algebra::mat_full::gauss_elim

linear_algebra::matrix::cols

linear_algebra::refvector::dim

linear_algebra::mat_full::display

linear_algebra::mat_full::one

linear_algebra::mat_full::prune

linear_algebra::matrix::rows

linear_algebra::one

linear_algebra::mat_full::zero linear_algebra::zero

137
4.29.3.13 template<class T>mat full< T > & linear algebra::mat full< T >::grow (long n,

long m)

4.29.3.14 template<class TN> template<class TN2> refvector< TN > &

linear algebra::mat full< TN >::multiply (const refvector< TN2 > & a, refvector< TN >

& r ) const

A little care needs to be taken here because any vector for which TN∗TN2 is defined this

product is also defined.

4.29.3.15 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::multiply (const mat sym sparse< TN > & b, mat full< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_full::multiply

linear_algebra::matrix::cols

linear_algebra::mat_sym_sparse::index

linear_algebra::refvector::multiply

linear_algebra::matrix::rows

linear_algebra::mat_sym_sparse::size

4.29.3.16 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::multiply (const mat asym full< TN > & b, mat full< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_full::multiply

linear_algebra::matrix::cols

linear_algebra::mat_full::multiply

linear_algebra::matrix::rows

linear_algebra::mat_full::same

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size

4.29.3.17 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::multiply (const mat sym full< TN > &

Here is the call graph for this function:

138
linear_algebra::mat_full::multiply

linear_algebra::matrix::cols

linear_algebra::refvector::dim

linear_algebra::mat_full::multiply

linear_algebra::matrix::rows

linear_algebra::mat_full::same

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size

4.29.3.18 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::multiply (const mat full< TN > & b , mat full< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_full::multiply

linear_algebra::matrix::cols

linear_algebra::mat_full::multiply

linear_algebra::matrix::rows

linear_algebra::mat_full::same

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size

4.29.3.19 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::multiply (const TN & a, mat full< TN > & r ) const

Test

Here is the call graph for this function:

linear_algebra::mat_full::multiply

linear_algebra::matrix::cols

linear_algebra::mat_full::multiply

linear_algebra::matrix::rows

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size

3.29.3.20 template<class TN> refvector< TN > & linear algebra::mat full< TN

>::multiply (const sparse vector< TN > & a, refvector< TN > & r ) const

Test

Here is the call graph for this function:

139
linear_algebra::mat_full::multiply

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size linear_algebra::refvector::size

4.29.3.21 template<class TN> mat full< TN > linear algebra::mat full< TN

>::multiply a t (const mat full< TN > & b) const

Here is the call graph for this function:

linear_algebra::mat_full::multiply_a_t

linear_algebra::mat_full::multiply_a_t

linear_algebra::matrix::rows

linear_algebra::matrix::cols

linear_algebra::mat_full::same

4.29.3.22 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::multiply a t (const mat full< TN > & b, mat full< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_full::multiply_a_t

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_full::same

4.29.3.23 template<class TN> mat full< TN > linear algebra::mat full< TN

>::multiply t a (const mat full< TN > & b) const

140
Here is the call graph for this function:

linear_algebra::mat_full::multiply_t_a

linear_algebra::matrix::cols

linear_algebra::mat_full::multiply_t_a linear_algebra::matrix::rows

linear_algebra::mat_full::same

4.29.3.24 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::multiply t a (const mat full< TN > & b, mat full< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_full::multiply_t_a

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_full::same

4.29.3.25 template<class TN> mat full< TN > & linear algebra::mat full< TN >::one ()

Here is the call graph for this function:

linear_algebra::mat_full::one

linear_algebra::one

linear_algebra::mat_full::zero linear_algebra::zero

4.29.3.26 template<class TN> template<class TN2> refvector< TN >

linear algebra::mat full< TN >::operator ∗ (const refvector< TN2 > & a) const

Here is the call graph for this function:

141
linear_algebra::mat_full::operator * linear_algebra::mat_full::multiply

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size

4.29.3.27 template<class TN> mat full< TN > linear algebra::mat full< TN >::operator ∗

(const mat sym sparse< TN > & b) const

Here is the call graph for this function:

linear_algebra::mat_full::operator *

linear_algebra::matrix::cols

linear_algebra::mat_full::multiply

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size

4.29.3.28 template<class TN> mat full< TN > linear algebra::mat full< TN >::operator ∗

(const mat asym full< TN > & b) const

Here is the call graph for this function:

linear_algebra::mat_full::operator *

linear_algebra::matrix::cols

linear_algebra::mat_full::multiply

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size

4.29.3.29 template<class TN> mat full< TN > linear algebra::mat full< TN >::operator ∗

(const mat sym full< TN > & b) const

Here is the call graph for this function:

142
linear_algebra::mat_full::operator *

linear_algebra::matrix::cols

linear_algebra::mat_full::multiply

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size

4.29.3.30 template<class TN> mat full< TN > linear algebra::mat full< TN >::operator ∗

(const mat full< TN > & b) const

Here is the call graph for this function:

linear_algebra::mat_full::operator *

linear_algebra::matrix::cols

linear_algebra::mat_full::multiply

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size

4.29.3.31 template<class TN> mat full< TN > linear algebra::mat full< TN >::operator ∗

(const TN & a) const

Test

Here is the call graph for this function:

linear_algebra::mat_full::operator * linear_algebra::mat_full::multiply

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size

4.29.3.32 template<class TN> refvector< TN > linear algebra::mat full< TN >::operator

∗ (const sparse vector< TN > & a) const

Test

Here is the call graph for this function:

143
linear_algebra::mat_full::operator * linear_algebra::mat_full::multiply

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size

4.29.3.33 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::operator ∗= (const mat full< TN > & b)

4.29.3.34 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::operator ∗= (const mat sym full< TN > & b)

Here is the call graph for this function:

linear_algebra::mat_full::operator *=

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.29.3.35 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::operator ∗= (const mat asym full< TN > & b)

Here is the call graph for this function:

linear_algebra::mat_full::operator *=

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.29.3.36 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::operator ∗= (const TN & x)

4.29.3.37 template<class TN> TN & linear algebra::mat full< TN >::operator() (const

long x, const long y)

Here is the call graph for this function:

144
linear_algebra::mat_full::operator() linear_algebra::matrix::size

4.29.3.38 template<class TN> const TN & linear algebra::mat full< TN >::operator()

(const long x, const long y) const[virtual]

Implements linear algebra::matrix< TN >.

Here is the call graph for this function:

linear_algebra::mat_full::operator() linear_algebra::matrix::size

4.29.3.39 template<class TN> mat full< TN > linear algebra::mat full< TN >::operator+

(const mat full< TN > & b) const

Here is the call graph for this function:

linear_algebra::mat_full::operator+

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.29.3.40 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::operator+= (const mat sym full< TN > & b)

Here is the call graph for this function:

145
linear_algebra::mat_full::operator+=

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.29.3.41 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::operator+= (const mat full< TN > & b)

Here is the call graph for this function:

linear_algebra::mat_full::operator+=

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.29.3.42 template<class TN> mat full< TN > linear algebra::mat full< TN >::operator-

(const < TN > & b) const

Here is the call graph for this function:

linear_algebra::mat_full::operatorlinear_algebra::matrix::cols

linear_algebra::matrix::rows

4.29.3.43 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::operator-= (const mat sym full< TN > & b)

Here is the call graph for this function:

146
linear_algebra::mat_full::operator-=

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.29.3.44 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::operator-= (const mat full< TN > & b)

Here is the call graph for this function:

linear_algebra::mat_full::operator-=

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.29.3.45 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::operator/= (const TN & x)

4.29.3.46 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::operator= (const mat full< TN > & a)

4.29.3.47 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::operator= (mat full< TN > & a)

4.29.3.48 template<class TN> bool linear algebra::mat full< TN >::operator== (const

mat full< TN > & b) const

4.29.3.49 template<class TN> const refvector< TN > & linear algebra::mat full< TN

>::operator[ ] (const long x) const

4.29.3.50 template<class TN> refvector< TN > & linear algebra::mat full< TN

>::operator[ ] (const long x)

4.29.3.51 template<class TN> mat full< TN > & linear algebra::mat full< TN >::prune

TN a)

4.29.3.52 template<class TN> bool linear algebra::mat full< TN >::same (const mat full<

TN > & b) const

4.29.3.53 template<class TN> void linear algebra::mat full< TN >::set (const long x,

const long y, TN z )

4.29.3.54 template<class TN> mat sym full< TN > & linear algebra::mat full< TN

>::sym lower triangle (mat sym full< TN > & r ) const

147
Here is the call graph for this function:

linear_algebra::mat_full::sym_lower_triangle linear_algebra::matrix::cols

4.29.3.55 template<class TN> mat sym full< TN > linear algebra::mat full< TN

>::sym lower triangle () const

4.29.3.56 template<class TN> mat sym full< TN > & linear algebra::mat full< TN

>::sym upper triangle (mat sym full< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_full::sym_upper_triangle linear_algebra::matrix::cols

4.29.3.57 template<class TN> mat sym full< TN > linear algebra::mat full< TN

>::sym upper triangle () const

4.29.3.58 template<class TN> mat full< TN > & linear algebra::mat full< TN

>::transpose (mat full< TN > & t) const

Here is the call graph for this function:

linear_algebra::mat_full::transpose

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.29.3.59 template<class TN> mat full< TN > linear algebra::mat full< TN >::transpose

() const

4.29.3.60 template<class TN> mat full< TN > & linear algebra::mat full< TN >::zero ()

Here is the call graph for this function:

148
linear_algebra::mat_full::zero linear_algebra::zero

4.29.4 Member Data Documentation

4.29.4.1 template<class TN> refvector<refvector<TN> > linear algebra::mat full< TN

>:: scols[protected]

The documentation for this class was generated from the following files:

• mat full.decl

• mat full.h

• mat full.h

4.30 linear algebra::mat sparse< TN > Class Template Reference

Class of sparse column matrices.

Inheritance diagram for linear algebra::mat sparse< TN >:

linear_algebra::mat_sparse< TN >

linear_algebra::matrix< TN >

Collaboration diagram for linear algebra::mat sparse< TN >:

linear_algebra::mat_sparse< TN >

linear_algebra::matrix< TN > linear_algebra::refvector< long >

_colindex

TN

_prune_tol

Public Member Functions

• mat sparse (long n, long m)

Constructor of n columns and m rows with uninitialised values.

149
• mat sparse (long n, long m, const vector< long > &scols, const vector<

sparse vector< TN > > &vals)

Constructor of n columns and m rows with initialisation of values.

• mat sparse (long n, long m, const vector< long > &scols, const refvector<

sparse vector< TN > > &vals)

Constructor of n columns and m rows with initialisation of values.

• mat sparse (long n, long m, const refvector< long > &scols, const refvector<

sparse vector< TN > > &vals)

Constructor of n columns and m rows with initialisation of values.

• mat sparse (long n, long m, const refvector< long > &scols, const vector<

sparse vector< TN > > &vals)

Constructor of n columns and m rows with initialisation of values.

• mat sparse ()

• mat sparse< TN > & operator= (mat sparse< TN > &a)

• sparse vector< TN > & operator[ ] (const long x)

Return a column through direct access. No integrity checked.

• const sparse vector< TN > & operator[ ] (const long x) const

Return a column through direct access. No integrity checked.

• virtual const TN & operator() (const long x, const long y) const

Return value at (x,y).

• mat sparse< TN > & operator ∗= (const TN &x)

Multiply by an object of TN into left side.

• mat sparse< TN > & operator/= (const TN &x)

Divide by an object of TN into left side. This is very slow and not advisable.

• mat sparse< TN > operator ∗ (const mat sparse< TN > &b) const

Multiply two sparse matrices.

• sparse vector< TN > operator ∗ (const sparse vector< TN > &a) const

Multiply a sparse matrix by a sparse vector.

• mat sparse< TN > operator ∗ (const mat sym sparse< TN > &b) const

Multiply a sparse matrix by a sparse symmetric matrix.

• mat sparse< TN > & operator ∗= (const mat sparse< TN > &b)

Multiplies the left hand side from the { left } by the right hand side.

150
• mat sparse< TN > & operator ∗= (const mat full< TN > &b)

Multiplies the left hand side from the {left } by the right hand side.

• refvector< TN > & multiply (const refvector< TN > &a, refvector< TN > &b) const

Multiply a sparse matrix with a full refvector.

• refvector< TN > operator ∗ (const refvector< TN > &a) const

Multiply a sparse matrix with a full refvector.

• mat full< TN > & multiply (const mat full< TN > &a, mat full< TN > &R) const

Multiply a sparse matrix with a full matrix.

• mat full< TN > operator ∗ (const mat full< TN > &a) const

Multiply a sparse matrix with a full matrix.

• mat sparse< TN > & copy (const mat sparse< TN > &a)

Copy matrix with deep copy.

• mat sparse< TN > transpose () const

Transpose the sparse matrix.

• void prune (const TN x)

Prune the matrix.

• void prune ()

• bool is nonzero (long x, long y, long &j, long &k) const

Checks whether an access is non zero.

• bool is col nonzero (const long x, long &i) const

Checks whether a column is empty.

• bool add (const long x, const long y, const TN z)

Adds a value.

• bool display () const

Simple display of matrix.

• vector< TN > extract full col (const long column, const long xmin, const long xmax)

const

xtracts a block from a column.

• vector< TN > extract full col (const long column, const long xmin) const

Extracts a block from a column with default max=matrix<TN> rows.

• sparse vector< TN > extract sparse col (const long column, const long xmin) const

Extracts a block from a column with default max=matrix<TN> rows.

151
• sparse vector< TN > extract sparse col (const long column, const long xmin, const

long xmax) const

Extracts a sparse block from a column.

• mat sym sparse< TN > sym upper triangle () const

Returns a mat sym sparse object of the upper triangle of a sparse matrix.

• void erase (long c)

Deletes described column from the matrix. Direct access deletion.

• double density () const

Return the density of non-zero elements.

• long size () const

Returns the number of nonzero columns.

• long index (const long x) const

Returns the column of a given index.

• void set (const long x, const long y, TN z)

Set a value.

• void clear ()

Sets the matrix to zero releasing all associated memory.

• mat sparse< TN > & zero ()

Sets the matrix to zero releasing all associated memory.

Public Attributes

• TN prune tol

Pruning tolerance.

Protected Attributes

• refvector< sparse vector< TN > > scols

Vector of columns.

• refvector< long > colindex

Index of nonzero columns.

• bool empty

State of matrix.

152
Friends

• class mat sym sparse< TN >

4.30.1 Detailed Description

template<class TN> class linear algebra::mat sparse< TN >

’column’ specifies that the values are ordered for speedy retrieval per column.

4.30.2 Constructor & Destructor Documentation

4.30.2.1 template<class TN> linear algebra::mat sparse< TN >::mat sparse (long n, long

m)

4.30.2.2 template<class TN> linear algebra::mat sparse< TN >::mat sparse (long n, long

m, const vector< long > & scols, const vector< sparse vector< TN > > & vals)

n Dimension of matrix.

scols Vector of column indices.

vals Vector of columns. Each column is a sparse vector.

Each value has an associated row and column index in srows and scols. Therefore they all

have the same size.

4.30.2.3 template<class TN> linear algebra::mat sparse< TN >::mat sparse (long n, long

m, const vector< long > & scols, const refvector< sparse vector< TN > > & vals)

Parameters:

n Dimension of matrix.

scols Vector of column indices.

vals Reference counted vector of columns. Each column is a sparse vector.

Each value has an associated row and column index in srows and scols. Therefore they all

have the same size.

4.30.2.4 template<class TN> linear algebra::mat sparse< TN >::mat sparse (long n, long

m, const refvector< long > & scols, const refvector< sparse vector< TN > > & vals)

Parameters:

n Dimension of matrix.

153
scols Reference counted vector of column indices.

vals Reference counted vector of columns. Each column is a sparse vector.

Each value has an associated row and column index in srows and scols. Therefore they all

have the same size.

Here is the call graph for this function:

linear_algebra::mat_sparse::mat_sparse linear_algebra::refvector::size

4.30.2.5 template<class TN> linear algebra::mat sparse< TN >::mat sparse (long n, long

m, const refvector< long > & scols, const vector< sparse vector< TN > > & vals)

Parameters:

n Dimension of matrix.

scols Reference counted Vector of column indices.

vals Vector of columns. Each column is a sparse vector.

Each value has an associated row and column index in srows and scols. Therefore they all

have the same size.

Here is the call graph for this function:

linear_algebra::mat_sparse::mat_sparse linear_algebra::refvector::size

4.30.2.6 template<class TN> linear algebra::mat sparse< TN >::mat sparse ()

4.30.3 Member Function Documentation

4.30.3.1 template<class TN> bool linear algebra::mat sparse< TN >::add (const long x,

const long y, const TN z )

Parameters:

z is added to (x,y). If the value is zero the associated vectors are expanded.

Here is the call graph for this function:

4.30.3.2 template<class TN> void linear algebra::mat sparse< TN >::clear ()

154
linear_algebra::mat_sparse::add

linear_algebra::refvector::insert

linear_algebra::mat_sparse::is_col_nonzero linear_algebra::refvector::size

4.30.3.3 template<class TN> mat sparse< TN > & linear algebra::mat sparse< TN

>::copy (const mat sparse< TN > & a)

Here is the call graph for this function:

linear_algebra::mat_sparse::copy linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

4.30.3.4 template<class TN> double linear algebra::mat sparse< TN >::density () const

4.30.3.5 template<class TN> bool linear algebra::mat sparse< TN >::display () const

Here is the call graph for this function:

linear_algebra::mat_sparse::display linear_algebra::mat_sparse::size

4.30.3.6 template<class TN> void linear algebra::mat sparse< TN >::erase (long c)

Here is the call graph for this function:

155
linear_algebra::mat_sparse::erase

linear_algebra::refvector::erase

linear_algebra::mat_sparse::size

4.30.3.7 template<class TN> vector< TN > linear algebra::mat sparse< TN

>::extract full col (const long column, const long xmin) const

Here is the call graph for this function:

linear_algebra::mat_sparse::extract_full_col linear_algebra::mat_sparse::extract_full_col linear_algebra::mat_sparse::is_col_nonzero

4.30.3.8 template<class TN> vector< TN > linear algebra::mat sparse< TN

>::extract full col (const long column, const long xmin, const long xmax) const

Here is the call graph for this function:

linear_algebra::mat_sparse::extract_full_col linear_algebra::mat_sparse::is_col_nonzero linear_algebra::refvector::size

4.30.3.9 template<class TN> sparse vector< TN > linear algebra::mat sparse< TN

>::extract sparse col (const long column, const long xmin, const long xmax) const

Here is the call graph for this function:

156
linear_algebra::mat_sparse::extract_sparse_col

linear_algebra::mat_sparse::is_col_nonzero

linear_algebra::refvector::push_back

linear_algebra::refvector::size

4.30.3.10 template<class TN> sparse vector< TN > linear algebra::mat sparse< TN

>::extract sparse col (const long column, const long xmin) const

4.30.3.11 template<class TN> long linear algebra::mat sparse< TN >::index (const long

x) const

4.30.3.12 template<class TN> bool linear algebra::mat sparse< TN >::is col nonzero

(const long x, long & i) const

Here is the call graph for this function:

linear_algebra::mat_sparse::is_col_nonzero linear_algebra::refvector::size

4.30.3.13 template<class TN> bool linear algebra::mat sparse< TN >::is nonzero (long x,

long y, long & j, long & k) const

Parameters:

j,k hold the position of x,y in scols, scols[j]. If (x,y) is 0. An insertion would happen here.

4.30.3.14 template<class TN> mat full< TN > & linear algebra::mat sparse< TN

>::multiply (const mat full< TN > & a, mat full< TN > & R) const

Here is the call graph for this function:

linear_algebra::mat_sparse::multiply

linear_algebra::matrix::cols

linear_algebra::mat_sparse::multiply

linear_algebra::matrix::rows

linear_algebra::refvector::dim

linear_algebra::refvector::size

4.30.3.15 template<class TN> refvector< TN > & linear algebra::mat sparse< TN

>::multiply (const refvector< TN > & a, refvector< TN > & b) const

Here is the call graph for this function:

157
linear_algebra::mat_sparse::multiply

linear_algebra::refvector::dim

linear_algebra::refvector::size

4.30.3.16 template<class TN> mat full< TN > linear algebra::mat sparse< TN

>::operator ∗ (const mat full< TN > & a) const

Here is the call graph for this function:

linear_algebra::mat_sparse::operator *

linear_algebra::matrix::cols

linear_algebra::mat_sparse::multiply

linear_algebra::refvector::dim

linear_algebra::refvector::size

4.30.3.17 template<class TN> refvector< TN > linear algebra::mat sparse< TN

>::operator ∗ (const refvector< TN > & a) const

Here is the call graph for this function:

linear_algebra::mat_sparse::operator * linear_algebra::mat_sparse::multiply

linear_algebra::refvector::dim

linear_algebra::refvector::size

4.30.3.18 template<class TN> mat sparse< TN > linear algebra::mat sparse< TN

>::operator ∗ (const mat sym sparse< TN > & b) const

The result is automatically pruned for the default pruning value set in prune tol.

Here is the call graph for this function:

158
linear_algebra::mat_sparse::operator * linear_algebra::mat_sparse::size

4.30.3.19 template<class TN> sparse vector< TN > linear algebra::mat sparse< TN

>::operator ∗ (const sparse vector< TN > & a) const

Here is the call graph for this function:

linear_algebra::mat_sparse::operator *

linear_algebra::sparse_vector::prune

linear_algebra::refvector::size

linear_algebra::refvector::erase

4.30.3.20 template<class TN> mat sparse< TN > linear algebra::mat sparse< TN

>::operator ∗ (const mat sparse< TN > & b) const

Here is the call graph for this function:

linear_algebra::mat_sparse::operator *

linear_algebra::refvector::size

linear_algebra::refvector::vec

4.30.3.21 template<class TN> mat sparse< TN > & linear algebra::mat sparse< TN

>::operator ∗= (const mat full< TN > & b)

Here is the call graph for this function:

159
linear_algebra::mat_sparse::operator *=

linear_algebra::mat_sparse::prune

linear_algebra::refvector::size

4.30.3.22 template<class TN> mat sparse< TN > & linear algebra::mat sparse< TN

>::operator ∗= (const mat sparse< TN > & b)

Here is the call graph for this function:

linear_algebra::mat_sparse::operator *=

linear_algebra::mat_sparse::prune

linear_algebra::refvector::size

4.30.3.23 template<class TN> mat sparse< TN > & linear algebra::mat sparse< TN

>::operator ∗= (const TN & x)

Here is the call graph for this function:

linear_algebra::mat_sparse::operator *= linear_algebra::refvector::size

4.30.3.24 template<class TN> const TN & linear algebra::mat spars< TN >::operator()

(const long x, const long y) const[virtual]

Implements linear algebra::matrix< TN >.

Here is the call graph for this function:

160
linear_algebra::mat_sparse::operator() linear_algebra::mat_sparse::is_nonzero

4.30.3.25 template<class TN> mat sparse< TN > & linear algebra::mat sparse< TN

>::operator/= (const TN & x)

Here is the call graph for this function:

linear_algebra::mat_sparse::operator/= linear_algebra::refvector::size

4.30.3.26 template<class TN> mat sparse< TN > & linear algebra::mat sparse< TN

>::operator= (mat sparse< TN > & a)

4.30.3.27 template<class TN> const sparse vector< TN > & linear algebra::mat sparse<

TN >::operator[ ] (const long x) const

4.30.3.28 template<class TN> sparse vector< TN > & linear algebra::mat sparse< TN

>::operator[ ] (const long x)

4.30.3.29 template<class TN> void linear algebra::mat sparse< TN >::prune ()

4.30.3.30 template<class TN> void linear algebra::mat sparse< TN >::prune (const TN x)

Here is the call graph for this function:

linear_algebra::mat_sparse::prune linear_algebra::refvector::erase

4.30.3.31 template<class TN> void linear algebra::mat sparse< TN >::set (const long x,

const long y, TN z )

Here is the call graph for this function:

161
linear_algebra::mat_sparse::set

linear_algebra::refvector::insert

linear_algebra::mat_sparse::is_col_nonzero linear_algebra::refvector::size

4.30.3.32 template<class TN> long linear algebra::mat sparse< TN >::size () const

4.30.3.33 template<class TN> mat sym sparse< TN > linear algebra::mat sparse< TN

>::sym upper triangle () const

Test

Here is the call graph for this function:

linear_algebra::mat_sparse::sym_upper_triangle linear_algebra::refvector::push_back

4.30.3.34 template<class TN> mat sparse< TN > linear algebra::mat sparse< TN

>::transpose () const

Here is the call graph for this function:

linear_algebra::mat_sparse::transpose linear_algebra::mat_sparse::size

4.30.3.35 template<class TN> mat sparse< TN > & linear algebra::mat sparse< TN

>::zero ()

4.30.4 Friends and Related Function Documentation

4.30.4.1 template<class TN> friend class mat sym sparse< TN >[friend]

4.30.5 Member Data Documentation

4.30.5.1 template<class TN> refvector<long> linear algebra::mat sparse< TN

>:: colindex[protected]

4.30.5.2 template<class TN> bool linear algebra::mat sparse< TN >:: empty[protected]

4.30.5.3 template<class TN> TN linear algebra::mat sparse< TN >:: prune tol

4.30.5.4 template<class TN> refvector<sparse vector<TN> > linear algebra::mat sparse<

TN >:: scols[protected]

162
The documentation for this class was generated from the following files:

• include/BCR CPP LA/mat sparse.decl

• include/BCR CPP LA/mat sparse.h

4.31 linear algebra::mat sym full< TN > Class Template Reference

mat sym full uses packing for full symmetric matrices

Inheritance diagram for linear algebra::mat sym full< TN >:

linear_algebra::mat_sym_full< TN >

linear_algebra::symmetric< TN >

linear_algebra::square< TN >

linear_algebra::matrix< TN >

Collaboration diagram for linear algebra::mat sym full< TN >:

linear_algebra::mat_sym_full< TN >

linear_algebra::symmetric< TN >

linear_algebra::square< TN >

linear_algebra::matrix< TN >

Public Member Functions

• mat sym full ()

Default constructor.

• mat sym full (istream &IN)

Constructor to read a stored matrix from a stream. Aimed at retrieving

information from a binary save with mat sym full::operator>>().

163
• mat sym full (long n)

Constructor of dimension n with uninitialised values.

• mat sym full (long n, const vector< TN > &vals)

Constructor of dimension n with initialisation of values.

• mat sym full (long n, refvector< TN > &vals)

Constructor of dimension n with initialisation of values.

• void operator> > (ostream &OUT) const

Output matrix in binary format into a stream. Aimed at file storage.

• mat sym full< TN > & operator= (mat sym full< TN > &a)

Assignement operator for non-const matrices.

• mat sym full< TN > & operator= (const mat sym full< TN > &a)

Assignement operator for non-const matrices.

• const TN & operator() (const long x, const long y) const

Access operator which checks for integrity in debug mode.

• TN & operator() (const long x, const long y)

Access operator which checks for integrity in debug mode.

• const TN & operator mbox[ ] (const long x) const

Direct access operator which checks for integrity in debug mode.

• TN & operator mbox[ ] (const long x)

Direct access operator which checks for integrity in debug mode.

• refvector< TN > operator() (const long column, const long xmin, const long xmax)

const

Extracts a block from a column/row.

• refvector< TN > operator() (const long column) const

Extracts a column/row from the matrix.

• mat sym full< TN > & multiply (long x, long y, TN a)

Addition operation for compatibility with mat sym sparse.

• mat full< TN > & multiply (const mat full< TN > &b, mat full< TN > &r) const

Multiplies a symmetric full matrix with a full matrix.

• mat full< TN > operator ∗ (const mat full< TN > &b) const

164
• mat full< TN > & multiply (const mat sym full< TN > &b, mat full< TN > &r)

const

Multiply a symmetric full matrix with a symmetric full matrix.

• mat full< TN > operator ∗ (const mat sym full< TN > &b) const

Multiply a symmetric full matrix with a symmetric full matrix.

• mat full< TN > & multiply (const mat asym full< TN > &b, mat full< TN > &r)

const

Multiply a symmetric full matrix with an antisymmetric full matrix.

• mat full< TN > operator ∗ (const mat asym full< TN > &b) const

Multiply a symmetric full matrix with an antisymmetric full matrix.

• template<class TN2> refvector< TN > & multiply (const sparse vector< TN2 >

&v, refvector< TN > &r) const

Multiply a symmetric full matrix with a sparse vector.

• template<class TN2> refvector< TN > operator ∗ (const sparse vector< TN2 > &v)

const

Multiply a symmetric full matrix with a sparse vector.

• template<class TN2> refvector< TN > & multiply (const refvector< TN2 > &v,

refvector< TN > &r) const

Multiply a symmetric full matrix with a full vector.

• template<class TN2> refvector< TN > operator ∗ (const refvector< TN2 > &v)

const

Multiply a symmetric full matrix with a full vector.

• template<class TN2> mat sym full< TN > operator ∗= (const TN2 &a)

Multiply a symmetric full matrix with an element.

• template<class TN2> mat sym full< TN > & operator/= (const TN2 &a)

Divide a symmetric full matrix by an element.

• mat sym full< TN > & multiply (const TN &a, mat sym full< TN > &r) const

Multiply a symmetric full matrix with an element.

• mat sym full< TN > operator ∗ (const TN &a) const

Multiply a symmetric full matrix with an element.

• mat sym full< TN > operator/ (const TN &a) const

Divide a symmetric full matrix by an element.

165
• mat sym full< TN > & operator+= (const mat sym full< TN > &a)

Add two symmetric matrices.

• mat sym full< TN > & operator+= (const mat sym sparse< TN > &a)

Add two symmetric matrices.

• mat sym full< TN > & operator-= (const mat sym full< TN > &a)

Subtract two symmetric matrices.

• mat sym full< TN > & operator-= (const mat sym sparse< TN > &a)

Subtract two symmetric matrices.

• mat sym full< TN > operator+ (const mat sym full< TN > &a) const

Add two symmetric matrices.

• mat sym full< TN > operator- (const mat sym full< TN > &a) const

Subtract two symmetric matrices.

• mat sym full< TN > operator- (const mat sym sparse< TN > &a) const

Subtract two symmetric matrices, one full one sparse.

• bool display () const

Simple display of matrix.

• void set (const long x, const long y, TN value)

Assignment operation for compatibility with mat sym sparse.

• bool add (long x, long y, const TN value)

Addition operation for compatibility with mat sym sparse.

• void gen mat (const refvector< TN > &a, const refvector< TN > &b, TN correction)

Produce the necessary ij∗ + ji∗.

• mat sym full< TN > unitary transform (const mat full< TN > U) const

Transforms a symmetric full matrix by a unitary matrix. O(n∧4) UAU∧t.

• mat full< TN > householder (refvector< TN > &diagonal, refvector< TN >

&subdiagonal)

This routine produces the diagonal, sub/superdiagonal and transformation matrix

for the Householder transformation of a sparse symmetric matrix.

• mat sym full< TN > & copy (const mat sym full< TN > &a)

Copy matrix with full depth.

• mat sym full< TN > & copy (const mat sym full< TN > &a, const long i)

Copy matrix with depth i.

166
• mat sym full< TN > & copy mat sym full< TN > &a, const long i)

Copy matrix with depth i.

• symmetric< TN > & copy (const symmetric< TN > &a)

Copy matrix with depth 1.

• symmetric< TN > & copy (const symmetric< TN > &a, const long i)

Copy matrix with depth i.

• symmetric< TN > & copy (symmetric< TN > &a, const long i)

Copy matrix with depth i.

• void clear ()

Release the memory associated with the matrix.

• mat sym full< TN > & uut(const mat full< TN > &U, mat sym full< TN > &R,

mat full< TN > &I) const

This is the unitary transform UAU∗.

• mat sym full< TN > & uut (const mat full< TN > &U, mat sym full< TN > &R)

const

This is the unitary transform UAU∗.

• mat sym full< TN > uut (const mat full< TN > &U) const

This is the unitary transform UAU∗.

• mat sym full< TN > & utu (const mat sym full< TN > &a, mat sym full< TN >

&R, mat full< TN > &I) const

This a symmetric transform SAS.

• mat sym full< TN > utu (const mat sym full< TN > &a, mat full< TN > &I) const

This a symmetric transform SAS.

• mat sym full< TN > & utu (const mat sym full< TN > &a, mat sym full< TN >

&R) const

This a symmetric transform SAS.

• mat sym full< TN > utu (const mat sym full< TN > &a) const

This a symmetric transform SAS.

• mat sym full< TN > & utu (const mat full< TN > &U, mat sym full< TN > &R)

const

This is the unitary transform U∗AU.

167
• mat sym full< TN > & utu (const mat full< TN > &U, mat sym full< TN > &R,

refvector< TN > &v) const

This is the unitary transform U∗AU.

• mat sym full< TN > utu (const mat full< TN > &U) const

This is the unitary transform U∧tAU.

• mat sym full< TN > utu (const mat asym full< TN > &a, mat full< TN > &I)

const

This a symmetric transform SAS.

• mat sym full< TN > utu (const mat asym full< TN > &U) const

This is the unitary transform U∧tAU.

• mat sym full< TN > & prune (const TN tol)

Prune the matrix of negligible values.

• mat sym full< TN > & zero ()

Set the matrix to zero.

• mat sym full< TN > & resize (long n)

Constructor of dimension n with uninitialised values.

Private Attributes

• refvector< TN > vals

Vector of values.

4.31.1 Detailed Description

template<class TN> class linear algebra::mat sym full< TN >

The packing is optimised for column access.

4.31.2 Constructor & Destructor Documentation

4.31.2.1 template<class TN> linear algebra::mat sym full< TN >::mat sym full ()

4.31.2.2 template<class TN> linear algebra::mat sym full< TN >::mat sym full (istream

& IN )

4.31.2.3 template<class TN> linear algebra::mat sym full< TN >::mat sym full (long n)

168
4.31.2.4 template<class TN> linear algebra::mat sym full< TN >::mat sym full (long n,

const vector< TN > & vals)

4.31.2.5 template<class TN> linear algebra::mat sym full< TN >::mat sym full (long n,

refvector< TN > & vals)

4.31.3 Member Function Documentation

4.31.3.1 template<class TN> bool linear algebra::mat sym full< TN >::add (long x, long

y, const TN value)

Reimplemented from linear algebra::symmetric< TN >.

4.31.3.2 template<class TN> void linear algebra::mat sym full< TN >::clear ()

4.31.3.3 template<class TN> symmetric< TN > & linear algebra::mat sym full< TN

>::copy (symmetric< TN > & a, const long i)[virtual]

Implements linear algebra::symmetric< TN >.

Here is the call graph for this function:

linear_algebra::mat_sym_full::copy linear_algebra::mat_sym_full::copy

4.31.3.4 template<class TN> symmetric< TN > & linear algebra::mat sym full< TN

>::copy (const symmetric< TN > & a, const long i)[virtual]

Implements linear algebra::symmetric< TN >.

Here is the call graph for this function:

linear_algebra::mat_sym_full::copy linear_algebra::mat_sym_full::copy

4.31.3.5 template<class TN> symmetric< TN > & linear algebra::mat sym full< TN

>::copy (const symmetric< TN > & a)[virtual]

Implements linear algebra::symmetric< TN >.

Here is the call graph for this function:

169
linear_algebra::mat_sym_full::copy linear_algebra::mat_sym_full::copy

4.31.3.6 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::copy (mat sym full< TN > & a, const long i)

4.31.3.7 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::copy (const mat sym full< TN > & a, const long i)

4.31.3.8 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::copy (const mat sym full< TN > & a)

4.31.3.9 template<class TN> bool linear algebra::mat sym full< TN >::display () const

4.31.3.10 template<class TN> void linear algebra::mat sym full< TN >::gen mat (const

refvector< TN > & a, const refvector< TN > & b, TN correction)

the result is − = ab∗ + ba∗ (-=ab∧ + ba∧).

Here is the call graph for this function:

linear_algebra::mat_sym_full::gen_mat linear_algebra::refvector::size

4.31.3.11 template<class TN> mat full< TN > linear algebra::mat sym full< TN

>::householder (refvector< TN > & diagonal, refvector< TN > & subdiagonal)

The aspired transformation is a product of (I − viv∗

i) where vi is

(±e1a12+ a12)/

±a12,1a12+ a122. Notice that we begin counting at 0. The matrix

is split up according to A =

 a11 a∗

12

a12 A22 

We use preconditioning such that the matrix is

ordered with lowest off-diagonal value in the low right=hand corner.

⎛

⎜⎜⎜⎝

a11 ···

...

... 0

ann

⎞

⎟⎟⎟⎠

The returned matrix U will transfrom S to tridiagonal form via

U∗SU.

Here is the call graph for this function:

170
linear_algebra::mat_sym_full::householder

linear_algebra::refvector::copy

linear_algebra::refvector::size

linear_algebra::mat_sym_full::gen_mat

linear_algebra::copy

4.31.3.12 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::multiply (const TN & a, mat sym full< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::multiply linear_algebra::matrix::cols

4.31.3.13 template<class TN> template<class TN2> refvector< TN > &

linear algebra::mat sym full< TN >::multiply (const refvector< TN2 > & v, refvector<

TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::multiply

linear_algebra::refvector::dim

linear_algebra::refvector::same

linear_algebra::refvector::size

4.31.3.14 template<class TN> template<class TN2> refvector< TN > &

linear algebra::mat sym full< TN >::multiply (const sparse vector< TN2 > & v,

refvector< TN > & r ) const

Here is the call graph for this function:

171
linear_algebra::mat_sym_full::multiply

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::refvector::size

4.31.3.15 template<class TN> mat full< TN > & linear algebra::mat sym full< TN

>::multiply (const mat asym full< TN > & b, mat full< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::multiply

linear_algebra::matrix::cols

linear_algebra::mat_asym_full::extract_col

linear_algebra::mat_sym_full::multiply

linear_algebra::matrix::rows

4.31.3.16 template<class TN> mat full< TN > & linear algebra::mat sym full< TN

>::multiply (const mat sym full< TN > & b, mat full< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::multiply

linear_algebra::matrix::cols

linear_algebra::matrix::rows

4.31.3.17 template<class TN> mat full< TN > & linear algebra::mat sym full< TN

>::multiply (const mat full< TN > & b, mat full< TN > & r ) const

Here is the call graph for this function:

172
linear_algebra::mat_sym_full::multiply

linear_algebra::matrix::cols

linear_algebra::mat_sym_full::multiply

linear_algebra::matrix::rows

4.31.3.18 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::multiply (long x, long y, TN a)

4.31.3.19 template<class TN> mat sym full< TN > linear algebra::mat sym full< TN

>::operator ∗ (const TN & a) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::operator * linear_algebra::mat_sym_full::multiply

4.31.3.20 template<class TN> template<class TN2> refvector< TN >

linear algebra::mat sym full< TN >::operator ∗ (const refvector< TN2 > & v) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::operator *

linear_algebra::refvector::dim

linear_algebra::mat_sym_full::multiply

4.31.3.21 template<class TN> template<class TN2> refvector< TN

>linear algebra::mat sym full< TN >::operator ∗ (const sparse vector< TN2 > & v) const

Here is the call graph for this function:

173
linear_algebra::mat_sym_full::operator * linear_algebra::mat_sym_full::multiply

4.31.3.22 template<class TN> mat full< TN > linear algebra::mat sym full< TN

>::operator ∗ (const mat asym full< TN > & b) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::operator *

linear_algebra::matrix::cols

linear_algebra::mat_sym_full::multiply

4.31.3.23 template<class TN> mat full< TN > linear algebra::mat sym full< TN

>::operator ∗ (const mat sym full< TN > & b) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::operator *

linear_algebra::matrix::cols

linear_algebra::mat_sym_full::multiply

4.31.3.24 template<class T> mat full< T > linear algebra::mat sym full< T >::operator ∗

(const mat full< TN > & b) const

Here is the call graph for this function:

174
linear_algebra::mat_sym_full::operator *

linear_algebra::matrix::cols

linear_algebra::mat_sym_full::multiply

4.31.3.25 template<class TN> template<class TN2> mat sym full< TN >

linear algebra::mat sym full< TN >::operator ∗= (const TN2 & a)

4.31.3.26 template<class TN> refvector< TN > linear algebra::mat sym full< TN

>::operator() (const long column) const

4.31.3.27 template<class TN> refvector< TN > linear algebra::mat sym full< TN

>::operator() (const long column, const long xmin, const long xmax) const

4.31.3.28 template<class TN> TN & linear algebra::mat sym full< TN >::operator()

(const long x, const long y)

4.31.3.29 template<class TN> const TN & linear algebra::mat sym full< TN >::operator()

(const long x, const long y) const[virtual]

Implements linear algebra::matrix< TN >.

4.31.3.30 template<class TN> mat sym full< TN > linear algebra::mat sym full< TN

>::operator+ (const mat sym full< TN > & a) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::operator+ linear_algebra::matrix::cols

4.31.3.31 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::operator+= (const mat sym sparse< TN > & a)

Here is the call graph for this function:

linear_algebra::mat_sym_full::operator+=

linear_algebra::matrix::cols

linear_algebra::mat_sym_sparse::index

linear_algebra::mat_sym_sparse::size

4.31.3.32 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::operator+= (const mat sym full< TN > & a)

175
Here is the call graph for this function:

linear_algebra::mat_sym_full::operator+= linear_algebra::matrix::cols

4.31.3.33 template<class TN> mat sym full< TN > linear algebra::mat sym full< TN

>::operator- (const mat sym sparse< TN > & a) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::operatorlinear_algebra::matrix::cols

linear_algebra::mat_sym_full::copy

linear_algebra::mat_sym_sparse::index

linear_algebra::mat_sym_sparse::size

4.31.3.34 template<class TN> mat sym full< TN > linear algebra::mat sym full< TN

>::operator- (const mat sym full< TN > & a) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::operator- linear_algebra::matrix::cols

4.31.3.35 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::operator-= (const mat sym sparse < TN > & a)

Here is the call graph for this function:

176
linear_algebra::mat_sym_full::operator-=

linear_algebra::matrix::cols

linear_algebra::mat_sym_sparse::index

linear_algebra::mat_sym_sparse::size

4.31.3.36 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::operator-= (const mat sym full< TN > & a)

Here is the call graph for this function:

linear_algebra::mat_sym_full::operator-= linear_algebra::matrix::cols

4.31.3.37 template<class TN> mat sym full< TN > linear algebra::mat sym full< TN

>::operator/ (const TN & a) const

4.31.3.38 template<class TN> template<class TN2> mat sym full< TN > &

linear algebra::mat sym full< TN >::operator/= (const TN2 & a)

4.31.3.39 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::operator= (const mat sym full< TN > & a)

4.31.3.40 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::operator= (mat sym full< TN > & a)

The default is to output a full (column) matrix.

4.31.3.41 template<class TN> void linear algebra::mat sym full< TN >::operator>>

(ostream & OUT ) const

The default is to output a full (column) matrix.

4.31.3.42 template<class TN> TN & linear algebra::mat sym full< TN >::operator[ ]

(const long )

4.31.3.43 template<class TN> const TN & linear algebra::mat sym full< TN >::operator[ ]

(const long x) const

4.31.3.44 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::prune (const TN tol)

Reimplemented from linear algebra::symmetric< TN >.

177
4.31.3.45 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::resize (long n)

4.31.3.46 template<class TN> void linear algebra::mat sym full< TN >::set (const long x,

const long y, TN value)

4.31.3.47 template<class TN> mat sym full< TN > linear algebra::mat sym full< TN

>::unitary transform (const mat full< TN > U ) const

This transform is only suggested if memory management is of importance. Otherwise using

two matrix mulitplications is faster O(n∧3).

4.31.3.48 template<class TN> mat sym full< TN > linear algebra::mat sym full< TN

>::utu (const mat asym full< TN > & U ) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::utu

linear_algebra::matrix::cols

linear_algebra::mat_sym_full::utu linear_algebra::mat_sym_full::multiply

linear_algebra::matrix::rows

4.31.3.49 template<class TN> mat sym full< TN > linear algebra::mat sym full< TN

>::utu (const mat asym full< TN > & a, mat full< TN > & I) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::utu

linear_algebra::matrix::cols

linear_algebra::mat_asym_full::multiply

linear_algebra::matrix::rows

linear_algebra::mat_sym_full::multiply

4.31.3.50 template<class TN> mat sym full< TN > linear algebra::mat sym full< TN

>::utu (const mat full< TN > & U ) const

Here is the call graph for this function:

178
linear_algebra::mat_sym_full::utu

linear_algebra::matrix::cols

linear_algebra::mat_sym_full::utu linear_algebra::mat_sym_full::multiply

linear_algebra::matrix::rows

4.31.3.51 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::utu (const mat full< TN > & U , mat sym full< TN > & R, refvector< TN > & v)

const

Here is the call graph for this function:

linear_algebra::mat_sym_full::utu

linear_algebra::matrix::cols

linear_algebra::refvector::dim

linear_algebra::mat_sym_full::multiply

linear_algebra::matrix::rows

4.31.3.52 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::utu (const mat full< TN > & U , mat sym full< TN > & R) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::utu

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_sym_full::utu linear_algebra::mat_sym_full::multiply

4.31.3.53 template<class TN> mat sym full< TN > linear algebra::mat sym full< TN

>::utu (const mat sym full< TN > & a) const

Here is the call graph for this function:

179
linear_algebra::mat_sym_full::utu

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_sym_full::utu linear_algebra::mat_sym_full::multiply

4.31.3.54 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::utu (const mat sym full< TN > & a, mat sym full< TN > & ) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::utu

linear_algebra::matrix::cols

linear_algebra::matrix::rows

linear_algebra::mat_sym_full::utu linear_algebra::mat_sym_full::multiply

4.31.3.55 template<class TN>mat sym ful< TN > linear algebra::mat sym full< TN

>::utu (const mat sym full< TN > & a, mat full< TN > & I) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::utu

linear_algebra::matrix::cols

linear_algebra::mat_sym_full::multiply

linear_algebra::matrix::rows

4.31.3.56 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::utu (const mat sym full< TN > & a, mat sym full< TN > & R, mat full< TN > & I)

const

Here is the call graph for this function:

180
linear_algebra::mat_sym_full::utu

linear_algebra::matrix::cols

linear_algebra::mat_sym_full::multiply

linear_algebra::matrix::rows

4.31.3.57 template<class TN> mat sym full< TN > linear algebra::mat sym full< TN

>::uut (const mat full< TN > & U ) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::uut

linear_algebra::matrix::rows

linear_algebra::mat_sym_full::uut linear_algebra::matrix::cols

linear_algebra::mat_full::multiply

4.31.3.58 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::uut (const mat full< TN > & U , mat sym full< TN > & R) const

Here is the call graph for this function:

linear_algebra::mat_sym_full::uut

linear_algebra::matrix::rows

linear_algebra::mat_sym_full::uut linear_algebra::matrix::cols

linear_algebra::mat_full::multiply

4.31.3.59 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::uut (const mat full< TN > & U , mat sym full< TN > & R, mat full< TN > & I) const

Here is the call graph for this function:

4.31.3.60 template<class TN> mat sym full< TN > & linear algebra::mat sym full< TN

>::zero ()

4.31.4 Member Data Documentation

4.31.4.1 template<class TN> refvector<TN> linear algebra::mat sym full< TN

>:: vals[private]

The documentation for this class was generated from the following files:

181
linear_algebra::mat_sym_full::uut

linear_algebra::matrix::cols

linear_algebra::mat_full::multiply

linear_algebra::matrix::rows

linear_algebra::refvector::dim

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size

• include/BCR CPP LA/mat sym full.decl

• include/BCR CPP LA/mat sym full.h

4.32 linear algebra::mat sym sparse< TN > Class Template Reference

mat sym sparse packs sparse column matrices into a comfortable format.

Inheritance diagram for linear algebra::mat sym sparse< TN >:

linear_algebra::mat_sym_sparse< TN >

linear_algebra::symmetric< TN >

linear_algebra::square< TN >

linear_algebra::matrix< TN >

Collaboration diagram for linear algebra::mat sym sparse< TN >:

linear_algebra::mat_sym_sparse< TN >

linear_algebra::symmetric< TN >

linear_algebra::square< TN >

linear_algebra::matrix< TN >

linear_algebra::refvector< long >

_scols

TN

_prune_tol

182
Public Member Functions

• mat sym sparse ()

Default constructor.

• mat sym sparse (long n)

Constructor of dimension n with uninitialised values.

• mat sym sparse (long n, const vector< long > &scols, const vector< sparse vector<

TN > > &vals)

Constructor of dimension n with initialisation of values.

• mat sym sparse (long n, const vector< long > &scols, refvector< sparse vector< TN

> > &vals)

Constructor of dimension n with initialisation of values.

• mat sym sparse (long n, refvector< long > &scols, refvector< sparse vector< TN >

> &vals)

Constructor of dimension n with initialisation of values.

• mat sym sparse (long n, refvector< long > &scols, const vector< sparse vector< TN

> > &vals)

Constructor of dimension n with initialisation of values.

• mat sym sparse (istream &IN)

Constructor to read a stored matrix from a stream. Aimed at retrieving

information from a binary save with mat sym sparse::operator>>().

• mat sym sparse< TN > & operator= (mat sym sparse< TN > &b)

• mat sym sparse< TN > & operator= (const mat sym sparse< TN > &b)

• const TN & operator() (const long x, const long y) const

Access operator.

• const sparse vector< TN > operator[ ] (const long i) const

Direct access operator.

• sparse vector< TN > & operator[ ] (const long i)

Direct access operator.

• void set (const long x, const long y, TN value)

Set operation for safe assignments.

• mat sym sparse< TN > operator ∗ (const TN &a) const

Multiplies a symmetric sparse matrix with an object.

183
• mat full< TN > operator ∗ (mat full< TN > A) const

Multiply by a full matrix.

• mat full< TN > & multiply (mat full< TN > A, mat full< TN > &r) const

Multiply by a full matrix.

• refvector< TN > & multiply (const refvector< TN > &v, refvector< TN > &r) const

Multiply a symmetric sparse matrix with a full vector into a full vector./test.

• refvector< TN > operator ∗ (const refvector< TN > &v) const

Multiply a symmetric sparse matrix with a full vector into a full vector./test.

• mat sym sparse< TN > & operator ∗= (const TN &x)

Multiply by an object of TN into left side.

• mat sym sparse< TN > & multiply (long x, long y, TN a)

Multiplies an element by a number.

• mat full< TN > & multiply (const mat asym full< TN > &B, mat full< TN > &r)

const

Multiply a symmetric sparse matrix with a full vector into a full vector./test.

• mat full< TN > operator ∗ (const mat asym full< TN > &B) const

Multiply a symmetric sparse matrix with a full vector into a full vector./test.

• mat sym sparse & operator/= (const TN &x)

Divide by an object of TN into left side. This is very slow and not advisable.

• sparse vector< TN > operator ∗ (const sparse vector< TN > &v) const

Multiply a sparse symmetric matrix with a sparse vector.

• mat sparse< TN > operator ∗ (const mat sparse< TN > &B) const

Multiply a sparse symmetric matrix with a sparse matrix.

• mat sym sparse< TN > & operator+= (const mat sym sparse< TN > &B)

Add a matrix into left object.

• mat sym| sparse< TN > & operator-= (const mat sym sparse< TN > &B)

Subtract a matrix into left object.

• bool is col nonzero (const long x, long &i) const

• bool is nonzero (long x, long y, long &j, long &k) const

Checks whether an access is non zero.

• bool add (long x, long y, const TN z)

Adds a value.

184
• bool is empty () const

• long size () const

Returns size of non-zero entries in svals.

• void operator>> (ostream &OUT) const

Output matrix in binary format into a stream. Aimed at file storage.

• mat sym sparse< TN > & prune (const TN x=0)

Deletes all entries that are smaller in magnitude than x.

• TN max element () const

Finds the maximum element.

• bool display () const

Simple display of matrix.

• vector< TN > extract full col (const long column, const long xmin, const long xmax)

const

Extracts a block from a column/row.

• vector< TN > extract full col (const long column, const long xmin=0) const

Extracts a block from a column/row.

• mat sym full< TN > extract full sym block (long xmin, long xmax) const

Extracts a full symmetric block.

• mat sym full< TN > extract full sym block (long xmin=0) const

Extracts a full symmetric block.

• mat sparse< TN > extract sparse block (long xmin, long xmax, long ymin, long

ymax) const

Extracts a block from anywhere in the matrix.

• sparse vecto< TN > extract sparse col (const long column, const long xmin=0) const

Extracts a block from a column/row.

• sparse vector< TN > extract sparse lower col (const long column, const long xmin,

const long xmax) const

Extracts a sparse column up to the diagonal.

• sparse vector< TN > extract sparse lower col (const long column, const long

xmin=0) const

Extracts a block from a column/row.

185
• double density () const

Return the density of non-zero elements.

• void gen mat (const sparse vector< TN > &a, const sparse vector< TN > &b, TN

correction)

Produce the necessary ij∗ + ji∗.

• mat sparse< TN > householder (vector< TN > &diagonal, vector< TN >

&subdiagonal)

This routine produces a the diagonal, sub/superdiagonal and transformation

matrix for the Householder transformation of a sparse symmetric matrix.

• mat sparse< TN > householder (refvector< TN > &diagonal,refvector< TN >

&subdiagonal)

This routine produces a the diagonal, sub/superdiagonal and transformation

matrix for the Householder transformation of a sparse symmetric matrix.

• void clear ()

Sets matrix to zero releasing all associated memory.

• mat sym sparse< TN > & zero ()

Sets matrix to zero releasing all associated memory.

• long index (long i) const

Returns the ith nonzero column number.

• mat sym full< TN > utu (const mat full< TN > &U, mat sym full< TN > &R)

const

This is the unitary transform U∗AU.

• mat sym full< TN > utu (const mat full< TN > &U) const

This is the unitary transform U∧tAU.

• TN trace () const

The square matrix class contains all n by n matrices.

• void copy (mat sym sparse< TN > &b, long i)

• void copy (const mat sym sparse< TN > &b)

• void copy (mat sym sparse< TN > &b)

• symmetric< TN > & copy (const symmetric< TN > &a)

Copy matrix with depth 1.

186
• symmetric< TN > & copy (const symmetric< TN > &a, const long i)

Copy matrix with depth i.

• symmetric< TN > & copy (symmetric< TN > &a, const long i)

Copy matrix with depth i.

Public Attributes

• TN prune tol

Tolerance for multiplication with a sparse vector.

Private Attributes

• refvector< long > scols

Vector of column indices.

• refvector< sparse vector< TN > > svals

Vector of sparse columns.

• bool pt

State of matrix.

Friends

• class mat sparse< TN >

• class mat full< TN >

• class mat asym full< TN >

4.32.1 Detailed Description

template<class TN> class linear algebra::mat sym sparse< TN >

The sparse matrix is packed as a sparse vector of sparse vectors. Only the columns which

are not empty are indexed and kept in memory. The sparse vector part takes care of the

rows.

187
4.32.2 Constructor & Destructor Documentation

4.32.2.1 template<class TN> linear algebra::mat sym sparse< TN >::mat sym sparse ()

4.32.2.2 template<class TN> linear algebra::mat sym sparse< TN >::mat sym sparse

(long n)

4.32.2.3 template<class TN> linear algebra::mat sym sparse< TN >::mat sym sparse

(long n, const vector< long > & scols, const vector< sparse vector< TN > > & vals)

Parameters:

n Dimension of matrix.

srows Vector of row indices.

scols Vector of column indices.

vals Vector of values.

Each value has an associated row and column index in srows and scols. Therefore they all

have the same size. There is no integrity check.

4.32.2.4 template<class TN> linear algebra::mat sym sparse< TN >::mat sym sparse

(long n, const vector< long > & scols, refvector< sparse vector< TN > > & vals)

Parameters:

n Dimension of matrix.

srows Vector of row indices.

scols Vector of column indices.

vals reference counted Vector of values.

Each value has an associated row and column index in srows and scols. Therefore they all

have the same size. There is no integrity check.

4.32.2.5 template<class TN> linear algebra::mat sym sparse< TN >::mat sym sparse

(long n, refvector< long > & scols, refvector< sparse vector< TN > > & vals)

Parameters:

n Dimension of matrix.

srows Vector of row indices.

scols Reference counted vector of column indices.

vals Reference counted vector of values.

Each value has an associated row and column index in srows and scols. Therefore they all

188
have the same size. There is no integrity check.

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::mat_sym_sparse linear_algebra::refvector::size

4.32.2.6 template<class TN> linear algebra::mat sym sparse< TN >::mat sym sparse

(long n, refvector< long > & scols, const vector< sparse vector< TN > > & vals)

Parameters:

n Dimension of matrix.

srows Vector of row indices.

scols Reference counted vector of column indices.

vals Vector of values.

Each value has an associated row and column index in srows and scols. Therefore they all

have the same size. There is no integrity check.

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::mat_sym_sparse linear_algebra::refvector::size

4.32.2.7 template<class TN> linear algebra::mat sym sparse< TN >::mat sym sparse

(istream & IN )

The resultant vector is pruned to default pruning tolerance = 0. This should be completely

superfluous but in case a different program not using this class produces the matrix as

input we prune.

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::mat_sym_sparse

linear_algebra::matrix::cols

linear_algebra::mat_sym_sparse::prune

linear_algebra::mat_sym_sparse::size

linear_algebra::refvector::push_back

linear_algebra::refvector::size

linear_algebra::refvector::erase

189
4.32.3 Member Function Documentation

4.32.3.1 template<class TN> bool linear algebra::mat sym sparse< TN >::add (long x,

long y, const TN z )

Parameters:

z is added to (x,y). If the value is zero the associated vectors are expanded.

Reimplemented from linear algebra::symmetric< TN >.

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::add

linear_algebra::refvector::insert

linear_algebra::mat_sym_sparse::is_col_nonzero linear_algebra::refvector::size

4.32.3.2 template<class TN> void linear algebra::mat sym sparse< TN >::clear ()

4.32.3.3 template<class TN>symmetric< TN > & linear algebra::mat sym sparse< TN

>::copy (symmetric< TN > & a, const long i)[virtual]

Implements linear algebra::symmetric< TN >.

4.32.3.4 template<class TN> symmetric< TN > & linear algebra::mat sym sparse< TN

>::copy (const symmetric< TN > & a, const long i)[virtual]

Implements linear algebra::symmetric< TN >.

4.32.3.5 template<class TN> symmetric< TN > & linear algebra::mat sym sparse< TN

>::copy (const symmetric< TN > & a)[virtual]

Implements linear algebra::symmetric< TN >.

4.32.3.6 template<class TN> void linear algebra::mat sym sparse< TN >::copy

(mat sym sparse< TN > & b)

4.32.3.7 template<class TN> void linear algebra::mat sym sparse< TN >::copy (const

mat sym sparse< TN > & b)

4.32.3.8 template<class TN> void linear algebra::mat sym sparse< TN >::copy

(mat sym sparse< TN > & b, long i)

190
4.32.3.9 template<class TN> double linear algebra::mat sym sparse< TN >::density ()

const

4.32.3.10 template<class TN> bool linear algebra::mat sym sparse< TN >::display ()

const

4.32.3.11 template<class TN> vector< TN > linear algebra::mat sym sparse< TN

>::extract full col (const long column, const long xmin = 0) const

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::extract_full_col linear_algebra::mat_sym_sparse::extract_full_col

4.32.3.12 template<class TN> vector< TN > linear algebra::mat sym sparse< TN

>::extract full col (const long column, const long xmin, const long xmax) const

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::extract_full_col linear_algebra::mat_sym_sparse::is_col_nonzero linear_algebra::refvector::size

4.32.3.13 template<class TN> mat sym full< TN > linear algebra::mat sym sparse< TN

>::extract full sym block (long xmin = 0) const

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::extract_full_sym_block linear_algebra::mat_sym_sparse::extract_full_sym_block

4.32.3.14 template<class TN> mat sym full< TN > linear algebra::mat sym sparse< TN

>::extract full sym block (long xmin, long xmax) const

Here is the call graph for this function:

191
linear_algebra::mat_sym_sparse::extract_full_sym_block

linear_algebra::mat_sym_sparse::is_col_nonzero

linear_algebra::mat_sym_sparse::size

4.32.3.15 template<class TN> mat sparse< TN > linear algebra::mat sym sparse< TN

>::extract sparse block (long xmin, long xmax, long ymin, long ymax ) const

Test

should work, but ...

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::extract_sparse_block

linear_algebra::mat_sym_sparse::is_nonzero

linear_algebra::refvector::push_back

linear_algebra::mat_sym_sparse::size

linear_algebra::refvector::size

4.32.3.16 template<class TN> sparse vector< TN > linear algebra::mat sym sparse< TN

>::extract sparse col (const long column, const long xmin = 0) const

4.32.3.17 template<class TN> sparse vector< TN > linear algebra::mat sym sparse< TN

>::extract sparse lower col (const long column, const long xmin = 0) const

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::extract_sparse_lower_col linear_algebra::mat_sym_sparse::extract_sparse_lower_col

4.32.3.18 template<class TN> sparse vector< TN > linear algebra::mat sym sparse< TN

>::extract sparse lower col (const long column, const long xmin, const long xmax) const

Here is the call graph for this function:

192
linear_algebra::mat_sym_sparse::extract_sparse_lower_col

linear_algebra::mat_sym_sparse::is_col_nonzero

linear_algebra::refvector::push_back

4.32.3.19 template<class TN> long linear algebra::mat sym sparse< TN >::index (long i)

const

4.32.3.20 template<class TN> bool linear algebra::mat sym sparse< TN >::is col nonzero

(const long x, long & i) const

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::is_col_nonzero linear_algebra::refvector::size

4.32.3.21 template<class TN> bool linear algebra::mat sym sparse< TN >::is empty ()

const

4.32.3.22 template<class TN> bool linear algebra::mat sym sparse< TN >::is nonzero

(long x, long y, long & j, long & k) const

Parameters:

j holds the position of (x,y) in vals. If (x,y) is 0. An insertion would happen here.

4.32.3.23 template<class TN> TN linear algebra::mat sym sparse< TN >::max element ()

const

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::max_element linear_algebra::mat_sym_sparse::size

4.32.3.24 template<class TN> mat full< TN > & linear algebra::mat sym sparse< TN

>::multiply (const mat asym full< TN > & B, mat full< TN > & const

Here is the call graph for this function:

193
linear_algebra::mat_sym_sparse::multiply

linear_algebra::matrix::cols

linear_algebra::mat_sym_sparse::index

linear_algebra::matrix::rows

4.32.3.25 template<class TN> mat sym sparse< TN > & linear algebra::mat sym sparse<

TN >::multiply (long x, long y, TN a)

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::multiply linear_algebra::mat_sym_sparse::is_col_nonzero linear_algebra::refvector::size

4.32.3.26 template<class TN> refvector< TN > & linear algebra::mat sym sparse< TN

>::multiply (const refvector< TN > & v, refvector< TN > & r ) const

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::multiply linear_algebra::sparse_vector::copy linear_algebra::refvector::vec

4.32.3.27 template<class TN> mat full< TN > &linear algebra::mat sym sparse< TN

>::multiply (mat full< TN > A, mat full< TN > & r ) const

Test

4.32.3.28 template<class TN> mat sparse< TN > linear algebra::mat sym sparse< TN

>::operator ∗ (const mat sparse< TN > & B) const

Here is the call graph for this function:

194
linear_algebra::mat_sym_sparse::operator *

linear_algebra::refvector::push_back

linear_algebra::refvector::size

linear_algebra::refvector::vec

4.32.3.29 template<class TN> sparse vector< TN > linear algebra::mat sym sparse< TN

>::operator ∗ (const sparse vector< TN > & v) const

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::operator *

linear_algebra::sparse_vector::copy

linear_algebra::refvector::push_back

linear_algebra::refvector::size

linear_algebra::mat_sym_sparse::size

linear_algebra::refvector::vec

4.32.3.30 template<class TN> mat full< TN > linear algebra::mat sym sparse< TN

>::operator ∗ (const mat asym full< TN > & B) const

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::operator *

linear_algebra::matrix::cols

linear_algebra::mat_sym_sparse::multiply

4.32.3.31 template<class TN> refvector< TN > linear algebra::mat sym sparse< TN

>::operator ∗ (const refvector< TN > & v) const

Here is the call graph for this function:

195
linear_algebra::mat_sym_sparse::operator * linear_algebra::mat_sym_sparse::multiply

4.32.3.32 template<class TN> mat full< TN > linear algebra::mat sym sparse< TN

>::operator ∗ (mat full< TN > A) const

Test

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::operator *

linear_algebra::matrix::cols

linear_algebra::mat_sym_sparse::multiply

4.32.3.33 template<class TN> mat sym sparse< TN > linear algebra::mat sym sparse<

TN >::operator ∗ (const TN & a) const

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::operator *

linear_algebra::refvector::size

linear_algebra::refvector::vec

4.32.3.34 template<class TN> mat sym sparse< TN > & linear algebra::mat sym sparse<

TN >::operator ∗= (const TN & x)

4.32.3.35 template<class TN> const TN & linear algebra::mat sym sparse< TN

>::operator() (const long x, const long y) const[virtual]

Implements linear algebra::matrix< TN >.

Here is the call graph for this function:

196
linear_algebra::mat_sym_sparse::operator() linear_algebra::mat_sym_sparse::is_nonzero

4.32.3.36 template<class TN> mat sym sparse<TN>& linear algebra::mat sym sparse<

TN >::operator+= (const mat sym sparse< TN > & B)

4.32.3.37 template<class TN> mat sym sparse<TN>& linear algebra::mat sym sparse<

TN >::operator-= (const mat sym sparse< TN > & B)

4.32.3.38 template<class TN> mat sym sparse< TN > & linear algebra::mat sym sparse<

TN >::operator/= (const TN & x)

4.32.3.39 template<class TN> mat sym sparse< TN > & linear algebra::mat sym sparse<

TN >::operator= (const mat sym sparse< TN > & b)

4.32.3.40 template<class TN> mat sym sparse< TN > & linear algebra::mat sym sparse<

TN >::operator= (mat sym sparse< TN > & b)

4.32.3.41 template<class TN> void linear algebra::mat sym sparse< TN >::operator>>

(ostream & OUT ) const

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::operator>> linear_algebra::refvector::size

4.32.3.42 template<class TN> sparse vector< TN > & linear algebra::mat sym sparse<

TN >::operator[ ] (const long i)

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::operator[] linear_algebra::refvector::dim

4.32.3.43 template<class TN> const sparse vector< TN >

linear algebra::mat sym sparse< TN >::operator[ ] (const long i) const

Here is the call graph for this function:

197
linear_algebra::mat_sym_sparse::operator[] linear_algebra::refvector::size

4.32.3.44 template<class TN> mat sym sparse< TN > & linear algebra::mat sym sparse<

TN >::prune (const TN x = 0)

Reimplemented from linear algebra::symmetric< TN >.

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::prune

linear_algebra::refvector::erase

linear_algebra::mat_sym_sparse::size

4.32.3.45 template<class TN> void linear algebra::mat sym sparse< TN >::set (const long

x, const long y, TN value)

Here is the call graph for this function:

linear_algebra::mat_sym_sparse::set

linear_algebra::refvector::insert

linear_algebra::mat_sym_sparse::is_col_nonzero linear_algebra::refvector::size

4.32.3.46 template<class TN> long linear algebra::mat sym sparse< TN >::size () const

4.32.3.47 template<class TN> TN linear algebra::mat sym sparse< TN >::trace () const

Reimplemented from linear algebra::square< TN >.

4.32.3.48 template<class TN> mat sym full< TN > linear algebra::mat sym sparse< TN

>::utu (const mat full< TN > & U ) const

4.32.3.49 template<class TN> mat sym full< TN > linear algebra::mat sym sparse< TN

>::utu (const mat full< TN > & U , mat sym full< TN > & R) const

4.32.3.50 template<class TN> mat sym sparse< TN > & linear algebra::mat sym sparse<

TN >::zero ()

4.32.4 Friends and Related Function Documentation

4.32.4.1 template<class TN> friend class mat asym full< TN >[friend]

198
4.32.4.2 template<class TN> friend class mat full< TN >[friend]

4.32.4.3 template<class TN> friend class mat sparse< TN >[friend]

4.32.5 Member Data Documentation

4.32.5.1 template<class TN> bool linear algebra::mat sym sparse< TN >:: empty[private]

4.32.5.2 template<class TN> TN linear algebra::mat sym sparse< TN >:: prune tol

4.32.5.3 template<class TN> refvector<long> linear algebra::mat sym sparse< TN

>:: scols[private]

4.32.5.4 template<class TN> refvector<sparse vector<TN> >

linear algebra::mat sym sparse< TN >:: svals[private]

The documentation for this class was generated from the following files:

• include/BCR CPP LA/mat sym sparse.decl

• include/BCR CPP LA/mat sym sparse.h

4.33 linear algebra::matrix< TN > Class Template Reference

matrix is a basic class which covers all kinds of matrices.

Inheritance diagram for linear algebra::matrix< TN >:

linear_algebra::matrix< TN >

linear_algebra::mat_full< TN > linear_algebra::mat_sparse< TN > linear_algebra::square< TN >

linear_algebra::asymmetric< TN > linear_algebra::symmetric< TN >

Public Member Functions

• matrix ()

Default constructor.

• virtual ∼matrix ()

Default destructor.

199
• virtual void operator>> (std::ostream &OUT) const

Output matrix in binary format into a stream. Aimed at file storage.

• virtual const TN & operator() (const long i, const long j) const =0

• long rows () const

Returns number of rows.

• long cols () const

Returns number of columns.

• long size ()

Returns the number of entries.

• matrix< TN > & operator= (const matrix< TN > &b)

• TN trace () const

We demand that there is a zero function.

Protected Attributes

• long rows

Number of rows.

• long cols

Number of columns.

• long size

Size of std::vector<TN> vals.

template<class TN> class linear algebra::matrix< TN >

4.33.1 Constructor & Destructor Documentation

4.33.1.1 template<class TN> linear algebra::matrix< TN >::matrix ()

matrix is a basic class which covers all kinds of matrices. Default constructor.

4.33.1.2 template<class TN> virtual linear algebra::matrix< TN >::∼matrix ()[inline,

virtual]

200
4.33.2 Member Function Documentation

4.33.2.1 template<class TN> long linear algebra::matrix< TN >::cols () const

4.33.2.2 template<class TN> virtual const TN& linear algebra::matrix< TN >::operator()

(const long i, const long j) const[pure virtual]

Implemented in linear algebra::mat asym full< TN >, linear algebra::mat asym sparse<

TN >, linear algebra::mat full< TN >, linear algebra::mat sparse< TN

>,linear algebra::mat sym full< TN >, linear algebra::mat sym sparse< TN >,

linear algebra::mat full< double >, linear algebra::mat full< bool >, and

linear algebra::mat sym full< valerg >.

4.33.2.3 template<class TN> matrix< TN > & linear algebra::matrix< TN >::operator=

(const matrix< TN > & b)

Here is the call graph for this function:

linear_algebra::matrix::operator= linear_algebra::copy

4.33.2.4 template<class TN> virtual void linear algebra::matrix< TN >::operator>>

(std::ostream & OUT ) const[inline, virtual]

The default is to output a full (column) matrix.

Reimplemented in linear algebra::mat asym full< TN >.

4.33.2.5 template<class TN> long linear algebra::matrix< TN >::rows () const

4.33.2.6 template<class TN> long linear algebra::matrix< TN >::size ()

4.33.2.7 template<class TN> TN linear algebra::matrix< TN >::trace () const

Reimplemented in linear algebra::mat sym sparse< TN >, linear algebra::square< TN >,

and linear algebra::square< valerg >.

Here is the call graph for this function:

linear_algebra::matrix::trace

linear_algebra::matrix::cols

linear_algebra::matrix::rows

201
4.33.3 Member Data Documentation

4.33.3.1 template<class TN> long linear algebra::matrix< TN >:: cols[protected]

4.33.3.2 template<class TN> long linear algebra::matrix< TN >:: rows[protected]

4.33.3.3 template<class TN> long linear algebra::matrix< TN >:: size[protected]

The documentation for this class was generated from the following files:

• include/BCR CPP LA/matrix.decl

• include/BCR CPP LA/matrix.h

4.34 noprune< X > Class Template Reference

Dummy pruning class. No actual pruning done.

#include <noprune.h>

Inheritance diagram for noprune< X >:

noprune< X >

pruner_abstract< X >

Collaboration diagram for noprune< X >:

noprune< X >

pruner_abstract< X >

linear_algebra::refvector< valerg >

value

Public Member Functions

• noprune ()

202
• noprune (const noprune< X > &a)

• void adjust lagrange (double &lambda, ulong &conf1, ulong &conf2, long &config,

const refvector< ulong > &visited run) const

Compute the increase of lambda and assess current best value.

• ulong prune (double &lambda, ulong &conf1, ulong &conf2, long &config, const

refvector< ulong > &a) const

• ulong deprune (ulong N const

self-explanatory

• ulong reprune (ulong N) const

Given an ”absolute” reference number return the current reference number.

template<class X> class noprune< X >

4.34.1 Constructor & Destructor Documentation

4.34.1.1 template<class X> noprune< X >::noprune ()[inline]

4.34.1.2 template<class X> noprune< X >::noprune (const noprune< X > & a)[inline]

4.34.2 Member Function Documentation

4.34.2.1 template<class X> void noprune< X >::adjust lagrange (double & lambda, ulong

& conf1 , ulong & conf2 , long & config, const refvector< ulong > & visited run)

const[inline]

Here is the call graph for this function:

noprune::adjust_lagrange

noprune::deprune

linear_algebra::refvector::size

4.34.2.2 template<class X> ulong noprune< X >::deprune (ulong N ) const[inline, virtual]

Implements pruner abstract< X >.

4.34.2.3 template<class X> ulong noprune< X >::prune (double & lambda, ulong & conf1 ,

ulong & conf2 , long & config, const refvector< ulong > & a) const[inline, virtual]

203
Implements pruner abstract< X >.

Here is the call graph for this function:

noprune::prune noprune::adjust_lagrange

noprune::deprune

linear_algebra::refvector::size

4.34.2.4 template<class X> ulong noprune< X >::reprune (ulong N ) const[inline, virtual]

Implements pruner abstract< X >.

The documentation for this class was generated from the following file:

• noprune.h

4.35 optimize abstract Class Reference

Abstract class that implements the Concepts::has optimize concept. Only good for generic

referncing of optimizations.

#include <optimizeabstract.h>

Inheritance diagram for optimize abstract:

optimize_abstract

binary_entropic< C >

binary_gdmc< C >

binary_line_search< C >

binary_steepest_descent< C >

gen_base_entropic< C >

gen_base_gdmc< C >

gen_base_grad_LS< C, B >

gen_base_LS< C, B >

Public Member Functions

• virtual ∼optimize abstract ()

204
• ulong optimize () const

Default optimize.

• virtual ulong optimize (const ulong N) const =0

• optimize abstract ()

• optimize abstract (const optimize abstract &a)

• void set id (const string &ID) const

Public Attributes

• const string & id r

Private Attributes

• string id

Identifier string;.

4.35.1 Constructor & Destructor Documentation

4.35.1.1 virtual optimize abstract::∼optimize abstract ()text[inline, virtual]

4.35.1.2 optimize abstract::optimize abstract ()[inline]

4.35.1.3 optimize abstract::optimize abstract (const optimize abstract & a)[inline]

4.35.2 Member Function Documentation

4.35.2.1 virtual ulong optimize abstract::optimize (const ulong N ) const[pure virtual]

Implemented in binary entropic< C >, binary line search< C >, binary gdmc< C >,

binary steepest descent< C >, gen base entropic< C >, gen base grad LS< C, B >,

gen base LS< C, B >, and gen base gdmc< C >.

4.35.2.2 ulong optimize abstract::optimize () const[inline]

4.35.2.3 void optimize abstract::set id (const string & ID) const[inline]

205
4.35.3 Member Data Documentation

4.35.3.1 string optimize abstract::id[mutable, private]

4.35.3.2 const string& optimize abstract::id r

The documentation for this class was generated from the following file:

• optimizeabstract.h

4.36 linear algebra::polynomial< C > Class Template Reference

A class for polynomials.

Collaboration diagram for linear algebra::polynomial< C >:

linear_algebra::polynomial< C >

linear_algebra::sparse_vector_infty< C >

_p

linear_algebra::refvector< long >

_index

linear_algebra::refvector< C >

_vals

Public Member Functions

• polynomial ()

Standard constructor.

• polynomial< C > & operator= (const polynomial< C > &a)

Assignment operator.

• polynomial< C > & operator= (polynomial< C > &a)

Assignment operator.

• polynomial< C > & zero ()

Define a zero.

• long index (const long i) const

Get the exponnent of the ith element.

206
• long size () const

return the number of nonzeros.

Multiplications

• polynomial< C > & multiply (const polynomial< C > &a, polynomial< C > &r)

const

Multiply two polynomials.

• polynomial< C > operator ∗ (const polynomial< C > &a) const

Multiply two polynomials.

• polynomial< C > operator ∗= (const polynomial< C > &a)

Multiply two polynomials.

Additions

• polynomial< C > operator+ (const polynomial< C > &a) const

Add two polynomials.

• polynomial< C > & operator+= (const polynomial< C > &a)

Add two polynomials.

Access

• const C & operator() (const long i) const

Acess an element.

• C & operator() (const long i)

Acess an element.

Initialisers

• void set (const long i, const C &a)

The ith element to a.

• void set (const long i, C &a)

The ith element to a.

207
Direct Acces operators

• C operator[ ] (const long i) const

• C & operator[ ] (const long i)

Copy operations.

• polynomial< C > & copy (const polynomial< C > &a)

Copy assignment.

• polynomial< C > & copy (polynomial< C > &a)

Copy assignment.

• polynomial< C > & copy (const polynomial< C > &a, const long i)

Copy assignment.

• polynomial< C > & copy (polynomial< C > &a, const long i)

Copy assignment.

Private Attributes

• sparse vector inft< C >

template<class C> class linear algebra::polynomial< C >

4.36.1 Constructor & Destructor Documentation

4.36.1.1 template<class C> linear algebra::polynomial< C >::polynomial ()

4.36.2 Member Function Documentation

4.36.2.1 template<class C> polynomial< C > & linear algebra::polynomial< C >::copy

(polynomial< C > & a, const long i)

Here is the call graph for this function:

linear_algebra::polynomial::copy linear_algebra::sparse_vector_infty::copy linear_algebra::refvector::vec

208
4.36.2.2 template<class C> polynomial< C > & linear algebra::polynomial< C >::copy

(const polynomial< C > & a, const long i)

Here is the call graph for this function:

linear_algebra::polynomial::copy linear_algebra::sparse_vector_infty::copy linear_algebra::refvector::vec

4.36.2.3 template<class C> polynomial< C > & linear algebra::polynomial< C >::copy

(polynomial< C > & a)

Here is the call graph for this function:

linear_algebra::polynomial::copy linear_algebra::sparse_vector_infty::copy linear_algebra::refvector::vec

436.2.4 template<class C> polynomial< C > & linear algebra::polynomial< C >::copy

(const polynomial< C > & a)

Here is the call graph for this function:

linear_algebra::polynomial::copy linear_algebra::sparse_vector_infty::copy linear_algebra::refvector::vec

4.36.2.5 template<class C> long int linear algebra::polynomial< C >::index (const long i)

const

Here is the call graph for this function:

209
linear_algebra::polynomial::index linear_algebra::sparse_vector_infty::index

4.36.2.6 template<class C> polynomial< C > & linear algebra::polynomial< C

>::multiply (const polynomial< C > & a, polynomial< C > & r ) const

Here is the call graph for this function:

linear_algebra::polynomial::multiply

linear_algebra::sparse_vector_infty::add

linear_algebra::sparse_vector_infty::index

linear_algebra::sparse_vector_infty::size

linear_algebra::zero

linear_algebra::refvector::insert

linear_algebra::refvector::size

4.36.2.7 template<class C> polynomial< C > linear algebra::polynomial< C >::operator ∗

(const polynomial< C > & a) const

Here is the call graph for this function:

linear_algebra::polynomial::operator * linear_algebra::polynomial::multiply

linear_algebra::sparse_vector_infty::add

linear_algebra::sparse_vector_infty::index

linear_algebra::sparse_vector_infty::size

linear_algebra::zero

4.36.2.8 template<class C> polynomial< C > linear algebra::polynomial< C >::operator

∗= (const polynomial< C > & a)

Here is the call graph for this function:

210
linear_algebra::polynomial::operator *= linear_algebra::polynomial::multiply

linear_algebra::sparse_vector_infty::add

linear_algebra::sparse_vector_infty::index

linear_algebra::sparse_vector_infty::size

linear_algebra::zero

4.36.2.9 template<class C> C & linear algebra::polynomial< C >::operator() (const long i)

4.36.2.10 template<class C> const C & linear algebra::polynomial< C >::operator() (const

long i) const

4.36.2.11 template<class C> polynomial< C > linear algebra::polynomial< C

>::operator+ (const polynomial< C > & a) const

Here is the call graph for this function:

linear_algebra::polynomial::operator+

linear_algebra::sparse_vector_infty::index

linear_algebra::sparse_vector_infty::set

4.36.2.12 template<class C> polynomial< C > & linear algebra::polynomial< C

>::operator+= (const polynomial< C > & a)

4.36.2.13 template<class C> polynomial< C > & linear algebra::polynomial< C

>::operator= (polynomial< C > & a)

4.36.2.14 template<class C> polynomial< C > & linear algebra::polynomial< C

>::operator= (const polynomial< C > & a)

4.36.2.15 template<class C> C & linear algebra::polynomial< C >::operator[ ] (const long

i)

4.36.2.16 template<class C> C linear algebra::polynomial< C >::operator[ ] (const long i)

const

4.36.2.17 template<class C> void linear algebra::polynomial< C >::set (const long i,C&

a)

Here is the call graph for this function:

211
linear_algebra::polynomial::set linear_algebra::sparse_vector_infty::set

4.36.2.18 template<class C> void linear algebra::polynomial< C >::set (const long i, const

C & a)

Here is the call graph for this function:

linear_algebra::polynomial::set linear_algebra::sparse_vector_infty::set

4.36.2.19 template<class C> long int linear algebra::polynomia< C >::size () const

Here is the call graph for this function:

linear_algebra::polynomial::size linear_algebra::sparse_vector_infty::size linear_algebra::refvector::size

4.36.2.20 template<class C> polynomial< C > & linear algebra::polynomial< C >::zero ()

Here is the call graph for this function:

212
linear_algebra::polynomial::zero linear_algebra::sparse_vector_infty::zero

4.36.3 Member Data Documentation

4.36.3.1 template<class C> sparse vector infty<C> linear algebra::polynomial< C

>:: p[private]

The documentation for this class was generated from the following files:

• include/BCR CPP LA/polynomial.decl

• include/BCR CPP LA/polynomial.h

4.37 Concepts::pruner< X > Class Template Reference

Concept defines an addressable set of values.

#include <concepts.hh>

Collaboration diagram for Concepts::pruner< X >:

Concepts::pruner< X >

X

i

Y

linear_algebra::refvector< valerg >

ve

vc

Public Member Functions

• BOOST CONCEPT USAGE (pruner)

Private Member Functions

• BOOST CONCEPT ASSERT ((Library< X >))

Private Attributes

• X&i

213
• const X & Y

• refvector< ulong > v

• refvector< valerg >ve

• const refvector< ulong > vd

• const refvector< valerg > vc

template<class X> class Concepts::pruner< X >

4.37.1 Member Function Documentation

4.37.1.1 template<class X> Concepts::pruner< X >::BOOST CONCEPT ASSERT

((Library< X >))[private]

4.37.1.2 template<class X> Concepts::pruner< X >::BOOST CONCEPT USAGE

(pruner< X >)[inline]

Here is the call graph for this function:

Concepts::pruner::BOOST_CONCEPT_USAGE Concepts::same_type

4.37.2 Member Data Documentation

4.37.2.1 template<class X> X& Concepts::pruner< X >::i[private]

4.37.2.2 template<class X> refvector<ulong> Concepts::pruner< X >::v[private]

4.37.2.3 template<class X> const refvector<valerg> Concepts::pruner< X >::vc[private]

4.37.2.4 template<class X> const refvector<ulong> Concepts::pruner< X >::vd[private]

4.37.2.5 template<class X> refvector<valerg> Concepts::pruner< X >::ve[private]

4.37.2.6 template<class X> const X& Concepts::pruner< X >::Y[private]

The documentation for this class was generated from the following file:

• concepts.hh

214
4.38 pruner abstract< X > Class Template Reference

Abstract class implementing the Concepts::pruner concept.

#include <prunerabstract.h>

Inheritance diagram for pruner abstract< X >:

pruner_abstract< X >

noprune< X > reorder_general_base< X > simple_prune< X >

Collaboration diagram for pruner abstract< X >:

pruner_abstract< X >

linear_algebra::refvector< valerg >

value

Public Member Functions

• pruner abstract ()

Default constructor.

• pruner abstract (const pruner abstract< X > &a)

Copy constructor.

• valerg compute property (ulong N) const

Wrap the Library::compute property to exclude pruned access.

• ulong get space size () const

Adjust the space size to reflect the absence of pruned values.

• ulong get bits () const

Compute the bits of the adjusted space.

• valerg get value (ulong N) const

Same as compute property(ulong N), but absolute numbering.

• virtual ulong prune (double &lambda, ulong &conf1, ulong &conf2, long &config,

const refvector< ulong > &visit) const =0

215
• ulong prune (double &lambda, ulong &conf1, ulong &conf2, long &config) const

• virtual ulong reprune (ulong N) const =0

Given an ”absolute” reference number return the current reference number.

• virtual ulong deprune (ulong N) const =0

self-explanatory

Protected Attributes

• refvector< ulong > pruned visited

List of pruned indices in Library.

• refvector< ulong > & visited

Reference to Library::visited.

• refvector< valerg > & value

Reference to Library::value.

• bool bits computed

• bool space size computed

• ulong space size

• ulong bits

Private Member Functions

• BOOST CONCEPT ASSERT ((Concepts::Library< X >))

template<class X> class pruner abstract< X >

4.38.1 Constructor & Destructor Documentation

4.38.1.1 template<class X> pruner abstract< X >::pruner abstract ()[inline]

4.38.1.2 template<class X> pruner abstract< X >::pruner abstract (const

pruner abstract< X > & a)[nline]

216
4.38.2 Member Function Documentation

4.38.2.1 template<class X> pruner abstract< X >::BOOST CONCEPT ASSERT

((Concepts::Library< X >))[private]

4.38.2.2 template<class X> valerg pruner abstract< X >::compute property (ulong N )

const[inline]

Here is the call graph for this function:

pruner_abstract::compute_property pruner_abstract::deprune

4.38.2.3 template<class X> virtual ulong pruner abstract< X >::deprune (ulong N )

const[pure virtual]

Implemented in noprune< X >, reorder general base< X >, and simple prune< X >.

4.38.2.4 template<class X> ulong pruner abstract< X >::get bits () const[inline]

Here is the call graph for this function:

pruner_abstract::get_bits pruner_abstract::get_space_size

4.38.2.5 template<class X> ulong pruner abstract< X >::get space size () const[inline]

4.38.2.6 template<class X> valerg pruner abstract< X >::get value (ulong N ) const[inline]

4.38.2.7 template<class X> ulong pruner abstract< X >::prune (double & lambda, ulong

& conf1 , ulong & conf2 , long & config) const[inline]

Here is the call graph for this function:

pruner_abstract::prune pruner_abstract::prune

4.38.2.8 template<class X> virtual ulong pruner abstract< X >::prune (double & lambda,

ulong & conf1 , ulong & conf2 , long & config, const refvector< ulong > & visit) const[pure

virtual]

Implemented in noprune< X >, reorder general base< X >, and simple prune< X >.

217
4.38.2.9 template<class X> virtual ulong pruner abstract< X >::reprune (ulong N )

const[pure virtual]

Implemented in noprune< X >, reorder general base< X >, and simple prune< X >.

4.38.3 Member Data Documentation

4.38.3.1 template<class X> ulong pruner abstract< X >::bits[mutable, protected]

4.38.3.2 template<class X> bool pruner abstract< X >::bits computed[mutable, protected]

4.38.3.3 template<class X> refvector<ulong> pruner abstract< X

>::pruned visited[mutable, protected]

4.38.3.4 template<class X> ulong pruner abstract< X >::space size[mutable, protected]

4.38.3.5 template<class X> bool pruner abstract< X >::space size computed[mutable,

protected]

4.38.3.6 template<class X> refvector<valerg>& pruner abstract< X >::value[mutable,

protected]

4.38.3.7 template<class X> refvector<ulong>& pruner abstract< X >::visited[mutable,

protected]

The documentation for this class was generated from the following file:

• prunerabstract.h

4.39 linear algebra::refcount< Type > Class Template Reference

Class refcount provides reference counted pointers. Most basic use.

Collaboration diagram for linear algebra::refcount< Type >:

linear_algebra::refcount< Type >

Type

_P

Public Member Functions

218
• refcount ()

Default constructor;.

• refcount (Type ∗l)

Constructor from a pointer.

• refcount (const refcount< Type > &rhs)

Copy constructor, but no deep copy.

• refcount (refcount< Type > &rhs)

Copy constructor, but no deep copy.

• ∼refcount ()

Destructor checks for reference count and deletes if necessary.

• refcount< Type > & operator= (refcount< Type > &rhs)

Assignment without deep copy. Old information is discarded if no references

remain.

• operator Type ∗ ()

Let refcount behave like any other pointer.

• operator const Type ∗ () const

Private Attributes

• unsigned long ∗ refcount

Reference count.

• Type ∗ P

Data pointer.

template<typename Type> class linear algebra::refcount< Type >

4.39.1 Constructor & Destructor Documentation

4.39.1.1 template<class Type> linear algebra::refcount< Type >::refcount ()

4.39.1.2 template<class Type> linear algebra::refcount< Type >::refcount (Type ∗ l)

4.39.1.3 template<class Type> linear algebra::refcount< Type >::refcount (const

refcount< Type > & rhs)

219
4.39.1.4 template<class Type> linear algebra::refcount< Type >::refcount (refcount<

Type > & rhs)

4.39.1.5 template<class Type> linear algebra::refcount< Type >::∼refcount ()

4.39.2 Member Function Documentation

4.39.2.1 template<class Type> linear algebra::refcount< Type >::operator const Type ∗ ()

const

4.39.2.2 template<class Type> linear algebra::refcount< Type >::operator Type ∗ ()

4.39.2.3 template<class Type> refcount< Type > & linear algebra::refcount< Type

>::operator= (refcount< Type > & rhs

4.39.3 Member Data Documentation

4.39.3.1 template<typename Type> Type∗ linear algebra::refcount< Type >:: P[private]

4.39.3.2 template<typename Type> unsigned long∗ linear algebra::refcount< Type

>:: refcount[private]

The documentation for this class was generated from the following files:

• include/BCR CPP LA/refcount.decl

• include/BCR CPP LA/refcount.h

4.40 linear algebra::refvector< TN > Class Template Reference

Class refvector provides reference counted vectors.

Public Member Functions

• ∼refvector ()

Destructor checks for reference count and deletes if necessary.

• void clear ()

• bool operator== (const refvector< TN > &a) const

Compares two refvectors.

220
• template<class T> bool same (const refvector< T > &a) const

Determines if two refvectors are exactly the same.

• refvector< TN > & operator= (const refvector< TN > &rhs)

Assignment with necessary deep copy. Old information is discarded if no

references remain.

• refvector< TN > & operator= (refvector< TN > &rhs)

Assignment without deep copy. Old information is discarded if no references

remain.

• refvector< TN > & operator= (const std::vector< TN > &rhs)

• refvector< TN > & set (long i, TN &rhs)

• void operator>> (std::ostream &o) const

• refvector< TN > & operator ∗= (const refvector< TN > &a)

Multiply by a refvector.

• refvector< TN > element prod (const refvector< TN > &a) const

Multiply by a refvector.

• TN operator ∗ (const refvector< TN > &b) const

Scalar product of refvectors.

• template<class TN3, class TN2> TN3 & multiply (const refvector< TN2 > &b, TN3

&r) const

Scalar product of refvectors.

• template<class TN3, class TN2> TN3 operator ∗ (const refvector< TN2 > &b) const

Scalar product of refvectors.

• refvector< TN > & operator+= (const refvector< TN > &B)

Add a refvector.

• refvector< TN > operator+ (const refvector< TN > &B) const

Add two refvectors.

• refvector< TN > & operator-= (const refvector< TN > &B)

Subtract a refvector.

• refvector< TN > operator- (const refvector< TN > &B) const

Subtract two refvectors.

• refvector< TN > & subtract (const refvector< TN > &B, refvector< TN > &r) const

Subtract two refvectors.

221
• refvector< TN > & operator+= (const sparse vector< TN > &a)

Add a sparse vector.

• refvector< TN > & operator ∗= (const TN x)

Multiply by an element.

• template<class TN2> refvector< TN > operator ∗= (const TN2 &a)

Multiply by an element into the vector.

• template<class TN2> refvector< TN > operator ∗ (const TN2 x) const

Multiply by an element.

• template<class TN2> refvector< TN > & multiply (const TN2 x, refvector< TN >

&a) const

Multiply by an element.

• template<class TN2> refvector< TN > operator/ (const TN2 x) const

Divide by an element.

• void display (ostream &outs=cout) const

Simple display of refvector.

• TN max () const

Returns the maximum element.

• void normalise ()

Normalise the vector in accordance with the ·2 2-norm.

• TN & operator[ ] (long i)

Direct access operator.

• const TN & operator[ ] (long i) const

Direct access operator.

• std::vector< TN > ∗ operator → ()

Dereferencing operator.

• const std::vector< TN > ∗ operator → () const

Dereferencing operator.

• std::vector< TN > & vec ()

Return the vector.

• const std::vector< TN > & vec () const

Return the vector.

222
• refvector< TN > & copy (const refvector< TN > &i, const long j)

Do a copy of depth j of i into a referenced counter. /item refvector< TN > &

copy (const refvector< TN > &i)

Copy i with full depth.

• long dim () const

Returns the dimension of the vector.

• long size () const

Returns the length of the vector.

• refvector< TN > & push back (const TN &a)

• void insert (long n, const TN &a)

• void resize (long n, const TN &a)

• void resize (long n)

• void erase (typename std::vector< TN >::iterator a)

• void write to (std::ostream &OUTFILE)

Write a refvector to a stream.

• refvector< TN > & zero ()

Set the refvector to the zero vector of current dimension.

• long contains (const TN &a) const

Determines whether the refvector contains a certain element and returns its first

occurence position.

• refvector< TN > & concat (const refvector< TN > &a)

Appends another refvector to the end.

Constructors

• refvector ()

Dereferencing operator.

• refvector (const refvector< TN > &rhs)

Copy constructor necessarily deep to first level.

• refvector (refvector< TN > &rhs)

Copy constructor, but no deep copy.

223
• refvector (long i)

Initialise the vector to have i entries.

• refvector (const std::vector< TN > &i)

Do a deep copy of i into a referenced counter.

• refvector (long j, const TN ∗rhs)

Do a deep copy of i into a referenced counter.

• refvector (std::istream &IN)

Read a refvector from a stream as writexttten by refvector::write to().

Public Attributes

• char deli

Private Member Functions

• const refvector< TN > & copy (const refvector< TN > &r) const

Copy i with depth 1.

• const refvector< TN > & copy (const refvector< TN > &r, long i) const

Do a copy of depth j of i into a referenced counter.

• const refvector< TN > & operator= (const refvector< TN > &r) const

Assignment without deep copy. Old information is discarded if no references

remain.

Private Attributes

• unsigned long ∗ refcount

Reference count.

• std::vector< TN > ∗

Data pointer.

template<class TN> class linear algebra::refvector< TN >

224
4.40.1 Constructor & Destructor Documentation

4.40.1.1 template<class TN> linear algebra::refvector< TN >::refvector ()

Class refvector provides reference counted vectors. Default constructor;

4.40.1.2 template<class TN> linear algebra::refvector< TN >::refvector (const refvector<

TN > & rhs)

4.40.1.3 template<class TN> linear algebra::refvector< TN >::refvector (refvector< TN >

& rhs)

4.40.1.4 template<class TN> linear algebra::refvector< TN >::refvector (long i)

4.40.1.5 template<class TN> linear algebra::refvector< TN >::refvector (const

std::vector< TN > & i)

4.40.1.6 template<class TN> linear algebra::refvector< TN >::refvector (long j, const TN

∗ rhs)

4.40.1.7 template<class TN> linear algebra::refvector< TN >::refvector (std::istream &

IN )

4.40.1.8 template<class TN> linear algebra::refvector< TN >::∼refvector ()

4.40.2 Member Function Documentation

4.40.2.1 template<class TN> void linear algebra::refvector< TN >::clear ()

4.40.2.2 template<class TN> refvector< TN > & linear algebra::refvector< TN >::concat

(const refvector< TN > & a)

Here is the call graph for this function:

linear_algebra::refvector::concat

linear_algebra::refvector::resize

linear_algebra::refvector::size

4.40.2.3 template<class TN> long linear algebra::refvector< TN >::contains (const TN &

a) const

Here is the call graph for this function:

225
linear_algebra::refvector::contains linear_algebra::refvector::dim

4.40.2.4 template<class TN> const refvector< TN > & linear algebra::refvector< TN

>::copy (const refvector< TN > & r , long i) const[private]

Here is the call graph for this function:

linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

4.40.2.5 template<class TN> const refvector< TN > & linear algebra::refvector< TN

>::copy (const refvector< TN > & r ) const[private]

Here is the call graph for this function:

linear_algebra::refvector::copy linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

4.40.2.6 template<class TN> refvector< TN > & linear algebra::refvector< TN >::copy

(const refvector< TN > & i)

Here is the call graph for this function:

226
linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

4.40.2.7 template<class TN> refvector< TN > & linear algebra::refvector< TN >::copy

(const refvector< TN > & i, const long j)

Here is the call graph for this function:

linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

4.40.2.8 template<class TN> long linear algebra::refvector< TN >::dim () const

4.40.2.9 template<class TN> void linear algebra::refvector< TN >::display (ostream &

outs = cout) const

Here is the call graph for this function:

linear_algebra::refvector::display

linear_algebra::display

linear_algebra::refvector::size

4.40.2.10 template<class TN> refvector< TN > linear algebra::refvector< TN

>::element prod (const refvector< TN > & a) const

This is an elementwise multiplication which results in a new vector. ci = ci · ai. See

refvector::operator∗=().

Here is the call graph for this function:

227
linear_algebra::refvector::element_prod linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

4.40.2.11 template<class TN> void linear algebra::refvector< TN >::erase (typename

std::vector< TN >::iterator a)

4.40.2.12 template<class TN> void linear algebra::refvector< TN >::insert (long n, const

TN & a)

4.40.2.13 template<class TN> TN linear algebra::refvector< TN >::max () const

Here is the call graph for this function:

linear_algebra::refvector::max linear_algebra::refvector::size

4.40.2.14 template<class TN> template<class TN2> refvector< TN > &

linear algebra::refvector< TN >::multiply (const TN2 x, refvector< TN > & a) const

This may pose problems in some setextttings when TN∗TN2 is not defined.

4.40.2.15 template<class TN> template<class TN3, class TN2> TN3&

linear algebra::refvector< TN >::multiply (const refvector< TN2 > & b, TN3 & r ) const

4.40.2.16 template<class TN> void linear algebra::refvector< TN >::normalise ()

4.40.2.17 template<class TN> template<class TN2> refvector< TN >

linear algebra::refvector< TN >::operator ∗ (const TN2 x) const

Here is the call graph for this function:

linear_algebra::refvector::operator * linear_algebra::refvector::multiply

4.40.2.18 template<class TN> template<class TN3, class TN2> TN3

linear algebra::refvector< TN >::operator ∗ (const refvector< TN2 > & b) const

4.40.2.19 template<class TN> TN linear algebra::refvector< TN >::operator ∗ (const

refvector< TN > & b) const

Here is the call graph for this function:

228
linear_algebra::refvector::operator * linear_algebra::refvector::size

4.40.2.20 template<class TN> template<class TN2> refvector< TN >

linear algebra::refvector< TN >::operator ∗= (const TN2 & a)

4.40.2.21 template<class TN> refvector< TN > & linear algebra::refvector< TN

>::operator ∗= (const TN x)

4.40.2.22 template<class TN> refvector< TN > & linear algebra::refvector< TN

>::operator ∗= (const refvector< TN > & a)

This is an elementwise multiplication which results in a new vector. ci = ci · ai. See also

refvector::element prod

Here is the call graph for this function:

linear_algebra::refvector::operator *= linear_algebra::refvector::size

4.40.2.23 template<class TN> refvector< TN > linear algebra::refvector< TN

>::operator+ (const refvector< TN > & B) const

Here is the call graph for this function:

linear_algebra::refvector::operator+ linear_algebra::refvector::size

4.40.2.24 template<class TN> refvector< TN > & linear algebra::refvector< TN

>::operator+= (const sparse vector< TN > & a)

Here is the call graph for this function:

229
linear_algebra::refvector::operator+=

linear_algebra::sparse_vector::dim

linear_algebra::sparse_vector::index

linear_algebra::sparse_vector::size linear_algebra::refvector::size

4.40.2.25 template<class TN> refvector< TN > & linear algebra::refvector< TN

>::operator+= (const refvector< TN > & B)

Here is the call graph for this function:

linear_algebra::refvector::operator+= linear_algebra::refvector::size

4.40.2.26 template<class TN> refvector< TN > linear algebra::refvector< TN

>::operator- (const refvector< TN > & ) const

Here is the call graph for this function:

linear_algebra::refvector::operator- linear_algebra::refvector::size

4.40.2.27 template<class TN> refvector< TN > & linear algebra::refvector< TN

>::operator-= (const refvector< TN > & B)

Here is the call graph for this function:

230
linear_algebra::refvector::operator-= linear_algebra::refvector::size

4.40.2.28 template<class TN> const vector< TN > ∗ linear algebra::refvector< TN

>::operator → () const

4.40.2.29 template<class TN> vector< TN > ∗ linear algebra::refvector< TN >::operator

→ ()

4.40.2.30 template<class TN> template<class TN2> refvector< TN >

linear algebra::refvector< TN >::operator/ (const TN2 x) const

This may pose problems in some setextttings when TN∗=TN2 is not defined.

4.40.2.31 template<class TN> const refvector< TN > & linear algebra::refvector< TN

>::operator= (const refvector< TN > & r ) const[private]

4.40.2.32 template<class TN> refvector<TN>& linear algebra::refvector< TN

>::operator= (const std::vector< TN > & rhs)

4.40.2.33 template<class TN> refvector< TN > & linear algebra::refvector< TN

>::operator= (refvector< TN > & rhs)

4.40.2.34 template<class TN> refvector< TN > & linear algebra::refvector< TN

>::operator= (const refvector< TN > & rhs)

Here is the call graph for this function:

linear_algebra::refvector::operator=

linear_algebra::refvector::copy

linear_algebra::refvector::size

linear_algebra::copy

231
4.40.2.35 template<class TN> bool linear algebra::refvector< TN >::operator== (const

refvector< TN > & a) const

Here is the call graph for this function:

linear_algebra::refvector::operator== linear_algebra::refvector::dim

4.40.2.36 template<class TN> void linear algebra::refvector< TN >::operator>>

(std::ostream & o) const

4.40.2.37 template<class TN> const TN & linear algebra::refvector< TN >::operator[ ]

(long i) cons

4.40.2.38 template<class TN> TN & linear algebra::refvector< TN >::operator[ ] (long i)

4.40.2.39 template<class TN> refvector< TN > & linear algebra::refvector< TN

>::push back (const TN & a)

4.40.2.40 template<class TN> void linear algebra::refvector< TN >::resize (long n)

4.40.2.41 template<class TN> void linear algebra::refvector< TN >::resize (long n, const

TN & a)

4.40.2.42 template<class TN> template<class T> bool linear algebra::refvector< TN

>::same (const refvector< T > & a) const

4.40.2.43 template<class TN> refvector< TN > & linear algebra::refvector< TN >::set

(long i, TN & rhs)

Here is the call graph for this function:

linear_algebra::refvector::set linear_algebra::refvector::size

4.40.2.44 template<class TN> long linear algebra::refvector< TN >::size () const

4.40.2.45 template<class TN> refvector< TN > & linear algebra::refvector< TN

>::subtract (const refvector< TN > & B, refvector< TN > & r ) const

Here is the call graph for this function:

232
linear_algebra::refvector::subtract linear_algebra::refvector::size

4.40.2.46 template<class TN> const vector< TN > & linear algebra::refvector< TN >::vec

() const

4.40.2.47 template<class TN> vector< TN > & linear algebra::refvector< TN >::vec ()

4.40.2.48 template<class TN> void linear algebra::refvector< TN >::write to (std::ostream

& OUTFILE)

4.40.2.49 template<class TN> refvector< TN > & linear algebra::refvector< TN >::zero ()

Here is the call graph for this function:

linear_algebra::refvector::zero

linear_algebra::refvector::dim

linear_algebra::zero

4.40.3 Member Data Documentation

4.40.3.1 template<class TN> char linear algebra::refvector< TN >:: delim

4.40.3.2 template<class TN> std::vector<TN>∗ linear algebra::refvector< TN

>:: P[private]

4.40.3.3 template<class TN> unsigned long∗ linear algebra::refvector< TN

>:: refcount[private]

The documentation for this class was generated from the following files:

• include/BCR CPP LA/refcount.decl

• include/BCR CPP LA/refcount.h

4.41 reorder general base< X > Class Template Reference

#include <reordergeneralbase.hh>

Inheritance diagram for reorder general base< X >:

233
reorder_general_base< X >

pruner_abstract< X >

Collaboration diagram for reorder general base< X >:

reorder_general_base< X >

pruner_abstract< X >

linear_algebra::refvector< valerg >

value

Public Member Functions

• reorder general base (reorder general base< X > &L)

Copy Constructor.

• reorder general base (const reorder general base< X > &L)

Copy Constructor.

• reorder general base (const refvector< long > &ibases)

Constructor with a vector of bases.

• void adjust lagrange (double &lambda, ulong &conf1, ulong &conf2, long &config,

const refvector< ulong > &visited run) const

Compute the increase of lambda and assess current best value.

• ulong prune (double &lambda, ulong &conf1, ulong &conf2, long &config, const

refvector< ulong > &visited run) const

Adjust the Lagrange multiplier and prune the library.

• ulong deprune (ulong N) const

Reverse-map N to the global index.

• ulong reprune (ulong N) const

Given an ”absolute” reference number return the current reference number.

Private Attributes

234
• refvector< refvector< long > > base order

Records the order of digits in each base.

• refvector< refvector< valerg > > base averages

Records the average values associated with each digit and base.

• ulong oldvisitedsize

Records the size of visited prior to the latest iteration.

4.41.1 Detailed Description

template<class X> class reorder general base< X >

This class takes an array of bases and orders the bases so as to produce a smooth

optimization process. Each digit per base is weighted by the average computed values for

compounds with the appropriate digit. There is no actual pruning done!

4.41.2 Constructor & Destructor Documentation

4.41.2.1 template<class X> reorder general base< X >::reorder general base

(reorder general base< X > & L)[inline]

4.41.2.2 template<class X> reorder general base< X >::reorder general base (const

reorder general base< X > & L)[inline]

4.41.2.3 template<class X> reorder general base< X >::reorder general base (const

refvector< long > & ibases)[inline]

Here is the call graph for this function:

reorder_general_base::reorder_general_base linear_algebra::refvector::size

4.41.3 Member Function Documentation

4.41.3.1 template<class X> void reorder general base< X >::adjust lagrange (double &

lambda, ulong & conf1 , ulong & conf2 , long & config, const refvector< ulong > &

visited run) const[inline]

Here is the call graph for this function:

235
reorder_general_base::adjust_lagrange

reorder_general_base::deprune

linear_algebra::refvector::size

4.41.3.2 template<class X> ulong reorder general base< X >::deprune (ulong N)

const[inline, virtual]

Implements pruner abstract< X >.

4.41.3.3 template<class X> ulong reorder general base< X >::prune (double & lambda,

ulon & conf1 , ulong & conf2 , long & config, const refvector< ulong > & visited run)

const[inline, virtual]

Implements pruner abstract< X >.

Here is the call graph for this function:

reorder_general_base::prune

reorder_general_base::adjust_lagrange

linear_algebra::refvector::size

linear_algebra::refvector::contains

sort_ascending

reorder_general_base::deprune

linear_algebra::refvector::dim

4.41.3.4 template<class X> ulong reorder general base< X >::reprune (ulong N )

const[inline, virtual]

Implements pruner abstract< X >.

4.41.4 Member Data Documentation

4.41.4.1 template<class X> refvector< refvector<valerg> > reorder general base< X

>::base averages[mutable, private]

4.41.4.2 template<class X> refvector< refvector < long > > reorder general base< X

>::base order[mutable, private]

4.41.4.3 template<class X> ulong reorder general base< X >::oldvisitedsize[mutable,

private]

The documentation for this class was generated from the following file:

236
• reordergeneralbase.hh

4.42 simple prune< X > Class Template Reference

Class to prune a Library.

#include <simpleprune.h>

Inheritance diagram for simple prune< X >:

simple_prune< X >

pruner_abstract< X >

Collaboration diagram for simple prune< X >:

simple_prune< X >

pruner_abstract< X >

linear_algebra::refvector< valerg >

value

Public Member Functions

• simple prune ()

• simple prune (const simple prune< X > &a)

• ulong prune (double &lambda, ulong &conf1, ulong &conf2, long &config, const

refvector< ulong > &a) const

Prune the Library and adjust lambda. Pruned entries are in pruned visited.

• ulong deprune (ulong N) const

Revert an index from the pruned Library to the original Library.

• ulong reprune (ulong N) const

Convert an ”absolute” index to a relative index.

template<class X> class simple prune< X >

237
4.42.1 Constructor & Destructor Documentation

4.42.1.1 template<class X> simple prune< X >::simple prune ()[inline]

4.42.1.2 template<class X> simple prune< X >::simple prune (const simple prune< X >

& a)[inline]

4.42.2 Member Function Documentation

4.42.2.1 template<class X> ulong simple prune< X >::deprune (ulong N ) const[virtual]

Implements pruner abstract< X >.

4.42.2.2 template<class X> ulong simple prune< X >::prune (double & lambda, ulong &

conf1 , ulong & conf2 , long & config, const refvector< ulong > & visited run) const[virtual]

Inferior values have larger penalties than the current best. Lambda is adjusted such that

P ropconf1 − λ

P enconf1 < P ropj − λP enj for some j and λ > λ

Implements pruner abstract< X >.

4.42.2.3 template<class X> ulong simple prune< X >::reprune (ulong N ) const[virtual]

Implements pruner abstract< X >.

The documentation for this class was generated from the following files:

• simpleprune.h

• simpleprune.cc

4.43 linear algebra::sparse vector< TN > Class Template Reference

A class for sparse vectors.

Collaboration diagram for linear algebra::sparse vector< TN >:

linear_algebra::sparse_vector< TN >

linear_algebra::refvector< long >

_index

TN

_prune_tol

238
Public Member Functions

• sparse vector ()

Default constructor. Dimension 0.

• sparse vector (const long n)

Constructs a sparse vector of dimension n without initialisation.

• sparse vector (const long n, const std::vector< long > &a, const std::vector< TN >

&b)

Constructs a sparse vector of dimension n with initialisation.

• sparse vector (const long n, const refvector< long > &a, const std::vector< TN >

&b)

Constructs a sparse vector of dimension n with initialisation.

• sparse vector (const long n, const refvector< long > &a, const refvector< TN > &b)

Constructs a sparse vector of dimension n with initialisation.

• sparse vector (const long n, const std::vector< long > &a, const refvector< TN >

&b)

Constructs a sparse vector of dimension n with initialisation.

• sparse vector (const sparse vector &a)

Copy constructor.—

• sparse vector< TN > & operator ∗= (const sparse vector< TN > &a)

Multiply by a sparse vector.

• TN operator ∗ (const sparse vector &a) const

Scalar product of sparse vectors.

• bool is nonzero (const long x, long &i) const

is (x) non zero

• TN operator[ ] (const long x)

Direct access operator.

• TN operator[ ] (const long x) const

Direct access operator.

• const TN & operator() (const long x) const

Access by element operator.

• TN operator() (const long x)

Access by element operator.

239
• sparse vector< TN > & add (const long x, TN z)

Add an element for consistency.

• sparse vector< TN > & multiply (const long x, TN z)

Multiply an element for consistency.

• sparse vector< TN > & operator+= (const sparse vector< TN > &B)

Add a sparse vector.

• sparse vector< TN > & operator-= (const sparse vector< TN > &B)

Subtract a sparse vector.

• sparse vector< TN > operator- () const

Subtract a sparse vector.

• sparse vector< TN > & operator ∗= (const TN x)

Multiply by an element.

• sparse vector< TN > operator ∗ (const TN x) const

Multiply by an element.

• sparse vector< TN > & operator/= (const TN x)

Divide by an element.

• sparse vector< TN > operator/ (const TN x) const

Divide by an element.

• sparse vector< TN > & operator= (const sparse vector< TN > &b)

Copy const sparse vector.

• sparse vector< TN > & operator= (sparse vector< TN > &b)

Copy const sparse vector.

• sparse vector< TN > & operator= (const std::vector< TN > b)

Copy a const vector into a sparse vector.

• sparse vector< TN > copy (const sparse vector< TN > &b, long i)

Copy sparse vector with copy of depth i.

• sparse vector< TN > copy (const sparse vector< TN > &b)

Copy a sparse vector with depth=1.

• void set (long i, TN value)

• void prune (const TN x)

Prune a sparse vector of negligible values.

240
• void prune ()

• bool display () const

Simple display of sparse vector.

• TN max () const

Returns the maximum element.

• void normalise ()

Normalise the sparse vector in accordance with the ·2 2-norm.

• long size () const

Returns the number of nonzero elements.

• long index (long i) const

Returns the index of the ith nonzero element.

• long dim () const

Returns the dimension of the vector.

• void clear ()

Releases the associated memory, i.e., sets the vector to 0.

• void zero ()

Retains the dimension but releases the associated memory, i.e., sets the vector to

0.

Public Attributes

• TN prune tol

Pruning tolerance.

Private Attributes

• long size

Dimension.

• refvector< TN > vals

Vector of values.

• linear algebra::refvector< long > index

Vector of indices.

241
Friends

• class mat sparse< TN >

• class mat sym sparse< TN >

• class mat asym sparse< TN >

• class mat sym full< TN >

• class mat full< TN >

template<class TN> class linear algebra::sparse vector< TN >

4.43.1 Constructor & Destructor Documentation

4.43.1.1 template<class TN> linear algebra::sparse vector< TN >::sparse vector ()

4.43.1.2 template<class TN> linear algebra::sparse vector< TN >::sparse vector (const

long n)

4.43.1.3 template<class TN> linear algebra::sparse vector< TN >::sparse vector (const

long n, const std::vector< long > & a, const std::vector< TN > & b)

4.43.1.4 template<class TN> linear algebra::sparse vector< TN >::sparse vector (const

long n, const refvector< long > & a, const std::vector< TN > & b)

4.43.1.5 template<class TN> linear algebra::sparse vector< TN >::sparse vector (const

long n, const refvector< long > & a, const refvector< TN > & b)

Parameters:

a Reference counted vector indices.

Reference counted ector values.

Here is the call graph for this function:

linear_algebra::sparse_vector::sparse_vector linear_algebra::refvector::size

4.43.1.6 template<class TN> linear algebra::sparse vector< TN >::sparse vector (const

long n, const std::vector< long > & a, const refvector< TN > & b)

242
4.43.1.7 template<class TN> linear algebra::sparse vector< TN >::sparse vector (const

sparse vector< TN > & a)

Here is the call graph for this function:

linear_algebra::sparse_vector::sparse_vector linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

4.43.2 Member Function Documentation

4.43.2.1 template<class TN> sparse vector< TN > & linear algebra::sparse vector< TN

>::add (const long x, TN z )

One of the pitfalls of using this for assignments is that if size is set incorrectly the throw

argument will result in an SIGABORT if not caught.

Here is the call graph for this function:

linear_algebra::sparse_vector::add

linear_algebra::refvector::insert

linear_algebra::refvector::size

4.43.2.2 template<class TN> void linear algebra::sparse vector< TN >::clear ()

4.43.2.3 template<class TN> sparse vector< TN > linear algebra::sparse vector< TN

>::copy (const sparse vector< TN > & b)

Here is the call graph for this function:

linear_algebra::sparse_vector::copy linear_algebra::sparse_vector::copy linear_algebra::refvector::vec

4.43.2.4 template<class TN> sparse vector< TN > linear algebra::sparse vector< TN

>::copy (const sparse vector< TN > & b, long i)

Here is the call graph for this function:

243
linear_algebra::sparse_vector::copy linear_algebra::refvector::vec

4.43.2.5 template<class TN> long linear algebra::sparse vector< TN >::dim () const

4.43.2.6 template<class TN> bool linear algebra::sparse vector< TN >::display () const

4.43.2.7 template<class TN> long linear algebra::sparse vector< TN >::index (long i)

const

4.43.2.8 template<class TN> bool linear algebra::sparse vector< TN >::is nonzero (const

long x, long & i) const

Here is the call graph for this function:

linear_algebra::sparse_vector::is_nonzero linear_algebra::refvector::size

4.43.2.9 template<class TN> TN linear algebra::sparse vector< TN >::max () const

Here is the call graph for this function:

linear_algebra::sparse_vector::max linear_algebra::sparse_vector::size linear_algebra::refvector::size

4.43.2.10 template<class TN> sparse vector< TN > & linear algebra::sparse vector< TN

>::multiply (const long x, TN z )

One of the pitfalls of using this for assignments is that if size is set incorrectly the throw

argument will result in an SIGABORT if not caught.

Here is the call graph for this function:

244
linear_algebra::sparse_vector::multiply linear_algebra::refvector::size

4.43.2.11 template<class TN> void linear algebra::sparse vector< TN >::normalise ()

4.43.2.12 template<class TN> sparse vector< TN > linear algebra::sparse vector< TN

>::operator ∗ (const TN x) const

Here is the call graph for this function:

linear_algebra::sparse_vector::operator * linear_algebra::sparse_vector::copy linear_algebra::refvector::vec

4.43.2.13 template<class TN> TN linear algebra::sparse vector< TN >::operator ∗ (const

sparse vector< TN > & a) const

Here is the call graph for this function:

linear_algebra::sparse_vector::operator * linear_algebra::sparse_vector::size linear_algebra::refvector::size

4.43.2.14 template<class TN> sparse vector< TN > & linear algebra::sparse vector< TN

>::operator ∗= (const TN x)

4.43.2.15 template<class TN> sparse vector< TN > & linear algebra::sparse vector< TN

>::operator ∗= (const sparse vector< TN > & a)

This is an elementwise multiplication which results in a new vector. ci = ci · ai.

Here is the call graph for this function:

245
linear_algebra::sparse_vector::operator *=

linear_algebra::refvector::erase

linear_algebra::sparse_vector::size linear_algebra::refvector::size

4.43.2.16 template<class TN> TN & linear algebra::sparse vector< TN >::operator()

(const long x)

One of the pitfalls of using this for assignments is that if size is set incorrectly the throw

argument will result in an SIGABORT if not caught.

Here is the call graph for this function:

linear_algebra::sparse_vector::operator()

linear_algebra::refvector::insert

linear_algebra::refvector::size

4.43.2.17 template<class TN> const TN & linear algebra::sparse vector< TN

>::operator() (const long x) const

Here is the call graph for this function:

linear_algebra::sparse_vector::operator() linear_algebra::sparse_vector::size linear_algebra::refvector::size

4.43.2.18 template<class TN> sparse vector< TN > & linear algebra::sparse vector< TN

>::operator+= (const sparse vector< TN > & B)

Here is the call graph for this function:

246
linear_algebra::sparse_vector::operator+=

linear_algebra::refvector::insert

linear_algebra::refvector::push_back

linear_algebra::refvector::size

4.43.2.19 template<class TN> sparse vector< TN > linear algebra::sparse vector< TN

>::operator- () const

Test

4.43.2.20 template<class TN> sparse vector< TN > & linear algebra::sparse vector< TN

>::operator-= (const sparse vector< TN > & B)

Here is the call graph for this function:

linear_algebra::sparse_vector::operator-=

linear_algebra::refvector::insert

linear_algebra::refvector::push_back

linear_algebra::refvector::size

linear_algebra::sparse_vector::size

4.43.2.21 template<class TN> sparse vector< TN > linear algebra::sparse vector< TN

>::operator/ (const TN x) const

Here is the call graph for this function:

linear_algebra::sparse_vector::operator/ linear_algebra::sparse_vector::copy linear_algebra::refvector::vec

4.443.2.22 template<class TN> sparse vector< TN > & linear algebra::sparse vector< TN

>::operator/= (const TN x)

4.43.2.23 template<class TN> sparse vector<TN>& linear algebra::sparse vector< TN

>::operator= (const std::vector< TN > b)

4.43.2.24 template<class TN> sparse vector< TN > & linear algebra::sparse vector< TN

>::operator= (sparse vector< TN > & b)

4.43.2.25 template<class TN> sparse vector< TN > & linear algebra::sparse vector< TN

>::operator= (const sparse vector< TN > & b)

247
4.43.2.26 template<class TN> TN linear algebra::sparse vector< TN >::operator[ ] (const

long x) const

4.43.2.27 template<class TN> TN & linear algebra::sparse vector< TN >::operator[ ]

(const long x)

4.43.2.28 template<class TN> void linear algebra::sparse vector< TN >::prune ()

4.43.2.29 template<class TN> void linear algebra::sparse vector< TN >::prune (const TN

x)

Here is the call graph for this function:

linear_algebra::sparse_vector::prune

linear_algebra::refvector::erase

linear_algebra::refvector::size

4.43.2.30 template<class TN> void linear algebra::sparse vector< TN >::set (long i, TN

value)

4.43.2.31 template<class TN> long linear algebra::sparse vector< TN >::size () const

Here is the call graph for this function:

linear_algebra::sparse_vector::size linear_algebra::refvector::size

4.43.2.32 template<class TN> void linear algebra::sparse vector< TN >::zero ()

4.43.3 Friends and Related Function Documentation

4.43.3.1 template<class TN> friend class mat asym sparse< TN >[friend]

4.43.3.2 template<class TN> friend class mat full< TN >[friend]

4.43.3.3 template<class TN> friend class mat sparse< TN >[friend]

4.43.3.4 template<class TN> friend class mat sym full< TN >[friend]

4.43.3.5 template<class TN> friend class mat sym sparse< TN >[friend]

248
4.43.4 Member Data Documentation

4.43.4.1 template<class TN> linear algebra::refvector< long >

linear algebra::sparse vector< TN >:: index[private]

4.43.4.2 template<class TN> TN linear algebra::sparse vector< TN >:: prune tol

4.43.4.3 template<class TN> long linear algebra::sparse vector< TN >:: size[private]

4.43.4.4 template<class TN> refvector<TN> linear algebra::sparse vector< TN

>:: vals[private]

The documentation for this class was generated from the following files:

• include/BCR CPP LA/sparse vector.decl

• include/BCR CPP LA/sparse vector.h

4.44 linear algebra::sparse vector infty< TN > Class Template Reference

A class for sparse vectors.

Collaboration diagram for linear algebra::sparse vector infty< TN >:

linear_algebra::sparse_vector_infty< TN >

linear_algebra::refvector< long >

_index

TN

_prune_tol

Public Member Functions

• sparse vector infty ()

Default constructor. Dimension 0.

• sparse vector infty (const std::vector< long > &a, const std::vector< TN > &b)

Constructs an infinite sparse vector with initialisation.

• sparse vector infty (const refvector< long > &a, const std::vector< TN > &b)

Constructs an infinite sparse vector with initialisation.

• sparse vector infty (const refvector< long > &a, const refvector< TN > &b)

Constructs a sparse vector of infinite dimension with initialisation.

249
• sparse vector infty (const std::vector< long > &a, const refvector< TN > &b)

Constructs an infinite sparse vector with initialisation.

• sparse vector infty (const sparse vector infty &a)

Copy constructor.

• sparse vector infty< TN > & operator ∗= (const sparse vector infty< TN > &a)

Multiply by a sparse vector.

• TN operator ∗ (const sparse vector infty &a) const

Scalar product of sparse vectors.

• bool is nonzero (const long x, long &i) const

is (x) non zero

• TN & operator[ ] (const long x)

Direct access operator.

• TN operator[ ] (const long x) const

Direct access operator.

• TN operator() (const long x) const

Access by element operator.

• TN & operator() (const long x)

Access by element operator.

• sparse vector infty< TN > & add (const long x, TN z)

Add an element for consistency.

• sparse vector infty< TN > & multiply (const long x, TN z)

Multiply an element for consistency.

• sparse vector infty< TN > & operator+= (const sparse vector infty< TN > &B)

Add an infinite sparse vector.

• sparse vector infty< TN > & operator-= (const sparse vector infty< TN > &B)

Subtract a sparse vector.

• sparse vector infty< TN > operator- () const

Subtract a sparse vector.

• sparse vector infty< TN > & operator ∗= (const TN x)

Multiply by an element.

• sparse vector infty< TN > operator ∗ (const TN x) const

Multiply by an element.

250
• sparse vector infty< TN > & operator/= (const TN x)

Divide by an element.

• sparse vector infty< TN > operator/ (const TN x) const

Divide by an element.

• sparse vector infty< TN > & operator= (const sparse vector infty< TN > &b)

Copy const sparse vector infty.

• sparse vector infty< TN > & operator= (sparse vector infty< TN > &b)

Copy const sparse vector infty.

• sparse vector infty< TN > & operator= (const std::vector< TN > b)

Copy a const vector into a sparse vector.

• sparse vector infty< TN > copy (const sparse vector infty< TN > &b, long i)

Copy sparse vector with copy of depth i.

• sparse vector infty< TN > copy (const sparse vector infty< TN > &b)

Copy a sparse vector with depth=1.

• void set (long i, const TN &value)

• void set (long i, TN &value)

• void prune (const TN x)

Prune a sparse vector of negligible values.

• void prune ()

• bool display () const

Simple display of sparse vector.

• TN max () const

Returns the maximum element.

• void normalise ()

Normalise the sparse vector in accordance with the ·2 2-norm.

• long size () const

Returns the number of nonzero elements.

• long index (long i) const

Returns the index of the ith nonzero element.

• void clear ()

Releases the associated memory, i.e., sets the vector to 0.

251
• void zero ()

Retains the dimension but releases the associated memory, i.e., sets the vector to

0.

Public Attributes

• TN prune tol

Pruning tolerance.

Private Attributes

• long size

Non-zero entries.

• refvector< TN > vals

Vector of values.

• refvector< long > index

Vector of indices.

template<class TN> class linear algebra::sparse vector infty< TN >

4.44.1 Constructor & Destructor Documentation

4.44.1.1 template<class TN> linear algebra::sparse vector infty< TN

>::sparse vector infty ()

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::sparse_vector_infty linear_algebra::zero

4.44.1.2 template<class TN> linear algebra::sparse vector infty< TN

>::sparse vector infty (const std::vector< long > & a, const std::vector< TN > & b)

4.44.1.3 template<class TN> linear algebra::sparse vector infty< TN

>::sparse vector infty (const refvector< long > & a, const std::vector< TN > & b)

4.44.1.4 template<class TN> linear algebra::sparse vector infty< TN

>::sparse vector infty (const refvector< long > & a, const refvector< TN > & b)

252
Parameters:

a Reference counted vector indices.

b Reference counted ector values.

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::sparse_vector_infty linear_algebra::refvector::size

4.44.1.5 template<class TN> linear algebra::sparse vector infty< TN

>::sparse vector infty (const std::vector< long > & a, const refvector< TN > & b)

4.44.1.6 template<class TN> linear algebra::sparse vector infty< TN

>::sparse vector infty (const sparse vector infty< TN > & a)

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::sparse_vector_infty linear_algebra::refvector::copy

linear_algebra::copy

linear_algebra::refvector::size

4.44.2 Member Function Documentation

4.44.2.1 template<class TN> sparse vector infty< TN > &

linear algebra::sparse vector infty< TN >::add (const long x, TN z )

One of the pitfalls of using this for assignments is that if size is set incorrectly the throw

argument will result in an SIGABORT if not caught.

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::add

linear_algebra::refvector::insert

linear_algebra::refvector::size

4.44.2.2 template<class TN> void linear algebra::sparse vector infty< TN >::clear ()

253
4.44.2.3 template<class TN> sparse vector infty< TN >

linear algebra::sparse vector infty< TN >::copy (const sparse vector infty< TN > & b)

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::copy linear_algebra::sparse_vector_infty::copy linear_algebra::refvector::vec

4.44.2.4 template<class TN> sparse vector infty< TN >

linear algebra::sparse vector infty< TN >::copy (const sparse vector infty< TN > & b,

long i)

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::copy linear_algebra::refvector::vec

4.44.2.5 template<class TN> bool linear algebra::sparse vector infty< TN >::display ()

const

4.44.2.6 template<class TN> long linear algebra::sparse vector infty< TN >::index (long

i) const

4.44.2.7 template<class TN> bool linear algebra::sparse vector infty< TN >::is nonzero

(const long x, long & i) const

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::is_nonzero linear_algebra::refvector::size

4.44.2.8 template<class TN> TN linear algebra::sparse vector infty< TN >::max () const

Here is the call graph for this function:

254
linear_algebra::sparse_vector_infty::max linear_algebra::sparse_vector_infty::size linear_algebra::refvector::size

4.44.2.9 template<class TN> sparse vector infty< TN > &

linear algebra::sparse vector infty< TN >::multiply (const long x, TN z )

One of the pitfalls of using this for assignments is that if size is set incorrectly the throw

argument will result in an SIGABORT if not caught.

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::multiply linear_algebra::refvector::size

4.44.2.10 template<class TN> void linear algebra::sparse vector infty< TN >::normalise ()

4.44.2.11 template<class TN> sparse vector infty< TN >

linear algebra::sparse vector infty< TN >::operator ∗ (const TN x) const

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::operator * linear_algebra::sparse_vector_infty::copy linear_algebra::refvector::vec

4.44.2.12 template<class TN> TN linear algebra::sparse vector infty< TN >::operator ∗

(const sparse vector infty< TN > & a) const

Here is the call graph for this function:

255
linear_algebra::sparse_vector_infty::operator * linear_algebra::sparse_vector_infty::size linear_algebra::refvector::size

4.44.2.13 template<class TN> sparse vector infty< TN > &

linear algebra::sparse vector infty< TN >::operator ∗= (const TN x)

4.44.2.14 template<class TN> sparse vector infty< TN > &

linear algebra::sparse vector infty< TN >::operator ∗= (const sparse vector infty< TN >

& a)

This is an elementwise multiplication which results in a new vector. ci = ci · ai.

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::operator *=

linear_algebra::refvector::erase

linear_algebra::sparse_vector_infty::size linear_algebra::refvector::size

4.44.2.15 template<class TN> TN & linear algebra::sparse vector infty< TN >::operator()

(const long x)

One of the pitfalls of using this for assignments is that if size is set incorrectly the throw

argument will result in an SIGABORT if not caught.

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::operator()

linear_algebra::refvector::insert

linear_algebra::refvector::size

linear_algebra::zero

4.44.2.16 template<class TN> TN linear algebra::sparse vector infty< TN >::operator()

(const long x) const

Here is the call graph for this function:

256
linear_algebra::sparse_vector_infty::operator()

linear_algebra::sparse_vector_infty::size

linear_algebra::refvector::size

linear_algebra::sparse_vector_infty::zero

4.44.2.17 template<class TN> sparse vector infty< TN > &

linear algebra::sparse vector infty< TN >::operator+= (const sparse vector infty< TN >

& B)

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::operator+=

linear_algebra::refvector::insert

linear_algebra::refvector::push_back

linear_algebra::refvector::size

4.44.2.18 template<class TN> sparse vector infty< TN >

linear algebra::sparse vector infty< TN >::operator- () const

Test

4.44.2.19 template<class TN> sparse vector infty< TN > &

linear algebra::sparse vector infty< TN >::operator-= (const sparse vector infty< TN > &

B)

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::operator-=

linear_algebra::refvector::insert

linear_algebra::refvector::push_back

linear_algebra::refvector::size

linear_algebra::sparse_vector_infty::size

4.44.2.20 template<class TN> sparse vector infty< TN >

linear algebra::sparse vector infty< TN >::operator/ (const TN x) const

Here is the call graph for this function:

257
linear_algebra::sparse_vector_infty::operator/ linear_algebra::sparse_vector_infty::copy linear_algebra::refvector::vec

4.44.2.21 template<class TN> sparse vector infty< TN > &

linear algebra::sparse vector infty< TN >::operator/= (const TN x)

4.44.2.22 template<class TN> sparse vector infty<TN>&

linear algebra::sparse vector infty< TN >::operator= (const std::vector< TN > b)

4.44.2.23 template<class TN> sparse vector infty< TN > &

linear algebra::sparse vector infty< TN >::operator= (sparse vector infty< TN > & b)

4.44.2.24 template<class TN> sparse vector infty< TN > &

linear algebra::sparse vector infty< TN >::operator= (const sparse vector infty< TN > &

b)

4.44.2.25 template<class TN> TN linear algebra::sparse vector infty< TN >::operator[ ]

(const long x) const

4.44.2.26 template<class TN> TN & linear algebra::sparse vector infty< TN >::operator[ ]

(const long x)

4.44.2.27 template<class TN> void linear algebra::sparse vector infty< TN >::prune ()

4.44.2.28 template<class TN> void linear algebra::sparse vector infty< TN >::prune

(const TN x)

Here is the call graph for this function:

linear_algebra::sparse_vector_infty::prune

linear_algebra::refvector::erase

linear_algebra::refvector::size

4.44.2.29 template<class TN> void linear algebra::sparse vector infty< TN >::set (long i,

TN & value)

4.44.2.30 template<class TN> void linear algebra::sparse vector infty< TN >::set (long i,

const TN & value)

4.44.2.31 template<class TN> long linear algebra::sparse vector infty< TN >::size () const

Here is the call graph for this function:

258
linear_algebra::sparse_vector_infty::size linear_algebra::refvector::size

4.44.2.32 template<class TN> void linear algebra::sparse vector infty< TN >::zero ()

4.44.3 Member Data Documentation

4.44.3.1 template<class TN> refvector<long> linear algebra::sparse vector infty< TN

>:: index[private]

4.44.3.2 template<class TN> TN linear algebra::sparse vector infty< TN >:: prune tol

4.44.3.3 template<class TN> long linear algebra::sparse vector infty< TN

>:: sizetext[private]

4.44.3.4 template<class TN> refvector<TN> linear algebra::sparse vector infty< TN

>:: vals[private]

The documentation for this class was generated from the following files:

• include/BCR CPP LA/sparse vector infty.decl

• include/BCR CPP LA/sparse vector infty.h

4.45 linear algebra::square< TN > Class Template Reference

The square matrix class contains all n by n matrices.

Inheritance diagram for linear algebra::square< TN >:

linear_algebra::square< TN >

linear_algebra::asymmetric< TN > linear_algebra::symmetric< TN >

linear_algebra::matrix< TN >

Collaboration diagram for linear algebra::square< TN >:

259
linear_algebra::square< TN >

linear_algebra::matrix< TN >

Public Member Functions

• TN trace () const

The square matrix class contains all n by n matrices.

template<class TN> class linear algebra::square< TN >

4.45.1 Member Function Documentation

4.45.1.1 template<class TN> TN linear algebra::square< TN >::trace () const

Reimplemented from linear algebra::matrix< TN >.

Reimplemented in linear algebra::mat sym sparse< TN >.

The documentation for this class was generated from the following files:

• include/BCR CPP LA/square.decl

• include/BCR CPP LA/square.h

4.46 boost::stateful thread group Class Reference

#include <stateful thread group.hh>

The documentation for this class was generated from the following file:

• include/stateful thread group.hh

4.47 linear algebra::symmetric< TN > Class Template Reference

The symmetric class contains all symmetric matrices.

Inheritance diagram for linear algebra::symmetric< TN >:

260
linear_algebra::symmetric< TN >

linear_algebra::mat_sym_full< TN > linear_algebra::mat_sym_sparse< TN >

linear_algebra::square< TN >

linear_algebra::matrix< TN >

Collaboration diagram for linear algebra::symmetric< TN >:

linear_algebra::symmetric< TN >

linear_algebra::square< TN >

linear_algebra::matrix< TN >

• matrix< TN > & transpose (matrix< TN > &r) const

The symmetric class contains all symmetric matrices.

• matrix< TN > & transpose (matrix< TN > &r)

• symmetric< TN > & transpose (symmetric< TN > &r) const

• symmetric< TN > & transpose (symmetric< TN > &r)

• symmetric< TN > & transpose () const

• symmetric< TN > & transpose ()

• matrix< TN > & copy (const matrix< TN > &a)

• matrix< TN > & copy (const matrix< TN > &a, const long i)

• matrix< TN > & copy (matrix< TN > &a, const long i)

• virtual symmetric< TN > & copy (const symmetric< TN > &a)=0

• virtual symmetric< TN > & copy (const symmetric< TN > &a, const long i)=0

• virtual symmetric< TN > & copy (symmetric< TN > &a, const long i)=0

261
• bool add (long x, long y, const TN z)

Adds a value.

• symmetric< TN > & prune (const TN x=0) Deletes all entries that are smaller

in magnitude than x.

template<class TN> class linear algebra::symmetric< TN >

4.47.1 Member Function Documentation

4.47.1.1 template<class TN> bool linear algebra::symmetric< TN >::add (long x, long y,

const TN z )

Reimplemented in linear algebra::mat sym full< TN >, linear algebra::mat sym sparse<

TN >, and linear algebra::mat sym full< valerg >.

4.47.1.2 template<class TN> virtual symmetric<TN>& linear algebra::symmetric< TN

>::copy (symmetric< TN > & a, const long i)[pure virtual]

Implemented in linear algebra::mat sym full< TN >, linear algebra::mat sym sparse< TN

>, and linear algebra::mat sym full< valerg >.

4.47.1.3 template<class TN> virtual symmetric<TN>& linear algebra::symmetric< TN

>::copy (const symmetric< TN > & a, const long i)[pure virtual]

Implemented in linear algebra::mat sym full< TN >, linear algebra::mat sym sparse< TN

>, and linear algebra::mat sym full< valerg >.

4.47.1.4 template<class TN> virtual symmetric<TN>& linear algebra::symmetric< TN

>::copy (const symmetric< TN > & a)[pure virtual]

Implemented in linear algebra::mat sym full< TN >, linear algebra::mat sym sparse< TN

>, and linear algebra::mat sym full< valerg >.

4.47.1.5 template<class TN> matrix< TN > & linear algebra::symmetric< TN >::copy

(matrix< TN > & a, const long i)

Here is the call graph for this function:

linear_algebra::symmetric::copy linear_algebra::symmetric::copy

262
4.47.1.6 template<class TN> matrix< TN > & linear algebra::symmetric< TN >::copy

(const matrix< TN > & a, const long i)

Here is the call graph for this function:

linear_algebra::symmetric::copy linear_algebra::symmetric::copy

4.47.1.7 template<class TN> matrix< TN > & linear algebra::symmetric< TN >::copy

(const matrix< TN > & a)

4.47.1.8 template<class TN> symmetric<TN>& linear algebra::symmetric< TN >::prune

(const TN x = 0)

Reimplemented in linear algebra::mat sym full< TN >, linear algebra::mat sym sparse<

TN >, and linear algebra::mat sym full< valerg >.

4.47.1.9 template<class TN> symmetric< TN > & linear algebra::symmetric< TN

>::transpose ()

4.47.1.10 template<class TN> symmetric< TN > & linear algebra::symmetric< TN

>::transpose () const

4.47.1.11 template<class TN> symmetric< TN > & linear algebra::symmetric< TN

>::transpose (symmetric< TN > & r )

4.47.1.12 template<class TN> symmetric< TN > & linear algebra::symmetric< TN

>::transpose (symmetric< TN > & r ) const

4.47.1.13 template<class TN> matrix< TN > & linear algebra::symmetric< TN

>::transpose (matrix< TN > & r )

4.47.1.14 template<class TN> matrix< TN > & linear algebra::symmetric< TN

>::transpose (matrix< TN > & r ) const

The documentation for this class was generated from the following files:

• include/BCR CPP LA/symmetric.decl

• include/BCR CPP LA/symmetric.h

263
4.48 valerg Struct Reference

Pair of property value and energy.

#include <typedefs.hh>

Public Attributes

• double property

• double penalty

• double energy

• bool property computed

• bool energy computed

4.48.1 Member Data Documentation

4.48.1.1 double valerg::energy

4.48.1.2 bool valerg::energy computed

4.48.1.3 double valerg::penalty

4.48.1.4 double valerg::property

4.48.1.5 bool valerg::property computed

The documentation for this struct was generated from the following file:

• typedefs.hh

4.49 zmat Class Reference

Class for Z-matrices. Just a wrapper class around a vector of entries.

#include <zmat.hh>

Collaboration diagram for zmat:

264
zmat

linear_algebra::refvector< zmat_entry >

list2

list

Public Member Functions

• zmat & operator= (const zmat &a)

Assignment operator.

• bool operator== (const zmat &a) const

Comparison operator.

• zmat & set val (int i, int j, double val)

Set a value.

• zmat & add val (int i, int j, double val)

Add to a value.

• zmat & add entry (const zmat entry &e)

Add an entry to the Z-matrix.

• void output (ostream &out) const

Output the z-matrix definition.

• zmat & add increment (long i, long j, double a)

Add another value to entry i in position j.

• zmat & add zmat (const zmat &B)

Combine two Z-matrices. B.offset must be zero!

• void set opt val (long i, long j, bool val)

Set the optimization flag for zmat entry i in position j.

• zmat & add zmat (const zmat &B, const zmat connector &e)

Combine two Z-matrices. B.offset must be zero!

• zmat & concat zmat (const zmat&B)

Concat two Z-matrices with different offsets.

• zmat & correct zmat (const zmat entry &x, const long newoff)

• long count constants () const

Count the number of constants.

265
• long count variables () const

Count the number of variables.

• void set constants variables (const refvector< double > &consts, const refvector<

double > &vars)

Set the constants and variables of a Z-matrix from two refvectors.

• stringstream & zmat to string (long N, stringstream &output) const

Output a Z-matrix to a stringstream.

• void update variables (const zmat &B)

Update the variables in the matrix without touching connectivity or increments.

Constructors

• zmat ()

Default constructor.

• zmat (const long o)

Constructor which uses a non-zero offset.

• zmat (const zmat &a)

Copy constructor.

• zmat (const refvector< zmat entry > &z)

Construction from a vector of zmat entries.

• zmat (stringstream &s)

Construct from a stringstream.

Public Attributes

• const refvector< zmat entry > & list

read-only access to list2

• const long & offset r

read-only access to offset.

Private Attributes

• refvector< zmat entry > list2

List of zmat entries.

266
• long offset

Auxiliary offset for connecting matrices.

4.49.1 Detailed Description

The Z-matrix may have negative connectivity entries in the first upper triangle of

definition. This is for the purpose of combining Z-matrices. These entries are ignored when

the zmat is output. The zmat entries are always checked for consistency upon construction.

4.49.2 Constructor & Destructor Documentation

4.49.2.1 zmat::zmat ()[inline]

4.49.2.2 zmat::zmat (const long o)[inline]

4.49.2.3 zmat::zmat (const zmat & a)[inline]

4.49.2.4 zmat::zmat (const refvector< zmat entry > & z )[inline]

Here is the call graph for this function:

zmat::zmat

zmat::add_entry

linear_algebra::refvector::size

linear_algebra::refvector::dim

zmat_entry::output

linear_algebra::refvector::push_back

4.49.2.5 zmat::zmat (stringstream & s)[inline]

The format goes (zmat entry ... zmat entry)

Here is the call graph for this function:

zmat::zmat zmat::add_entry

linear_algebra::refvector::dim

zmat_entry::output

linear_algebra::refvector::push_back

4.49.3 Member Function Documentation

4.49.3.1 zmat& zmat::add entry (const zmat entry & e)[inline]

267
Here is the call graph for this function:

zmat::add_entry

linear_algebra::refvector::dim

zmat_entry::output

linear_algebra::refvector::push_back

4.49.3.2 zmat& zmat::add increment (long i, long j, double a)[inline]

Here is the call graph for this function:

zmat::add_increment linear_algebra::refvector::size

4.49.3.3 zmat& zmat::add val (int i, int j, double val)[inline]

Here is the call graph for this function:

zmat::add_val linear_algebra::refvector::size

4.49.3.4 zmat& zmat::add zmat (const zmat & B, const zmat connector & e)[inline]

The first entry is defined to be exactly e with the corresponding Name, i.e., [ B.list[0].Name

-1 e.connect[0] -2 e.connect[1] -3 e.connect[2] ].

Here is the call graph for this function:

268
zmat::add_zmat

zmat::add_entry

linear_algebra::refvector::set

linear_algebra::refvector::size

linear_algebra::refvector::dim

zmat_entry::output

linear_algebra::refvector::push_back

4.49.3.5 zmat& zmat::add zmat (const zmat & B)[inline]

It is assumed that all B entries refer to the last three entries of (∗this) or B itself.

Here is the call graph for this function:

zmat::add_zmat

zmat::add_entry

linear_algebra::refvector::size

linear_algebra::refvector::dim

zmat_entry::output

linear_algebra::refvector::push_back

4.49.3.6 zmat& zmat::concat zmat (const zmat & B)[inline]

Here is the call graph for this function:

zmat::concat_zmat

zmat::add_entry

linear_algebra::refvector::size

linear_algebra::refvector::dim

zmat_entry::output

linear_algebra::refvector::push_back

4.49.3.7 zmat& zmat::correct zmat (const zmat entry & x, const long newoff )[inline]

This has the effect of inserting blank space between the original offset matrix and the new

matrix as well as updating the connectors.

Here is the call graph for this function:

269
zmat::correct_zmat linear_algebra::refvector::size

4.49.3.8 long zmat::count constants () const[inline]

4.49.3.9 long zmat::count variables () const[inline]

4.49.3.10 zmat& zmat::operator= (const zmat & a)[inline]

4.49.3.11 bool zmat::operator== (const zmat & a) const[inline]

4.49.3.12 void zmat::output (ostream & out) const[inline]

Here is the call graph for this function:

zmat::output linear_algebra::refvector::size

4.49.3.13 void zmat::set constants variables (const refvector< double > & consts, const

refvector< double > & vars)[inline]

Here is the call graph for this function:

zmat::set_constants_variables linear_algebra::refvector::size

4.49.3.14 void zmat::set opt val (long i, long j, bool val)[inline]

Here is the call graph for this function:

270
zmat::set_opt_val linear_algebra::refvector::size

4.49.3.15 zmat& zmat::set val (int i, int j, double val)[inline]

Here is the call graph for this function:

zmat::set_val linear_algebra::refvector::size

4.49.3.16 void zmat::update variables (const zmat & B)[inline]

Here is the call graph for this function:

zmat::update_variables linear_algebra::refvector::size

4.49.3.17 stringstream& zmat::zmat to string (long N , stringstream & output) const[inline]

Parameters:

N signifies the conformation of the combinatorial product of options.

Here is the call graph for this function:

271
zmat::zmat_to_string

zmat::output

linear_algebra::refvector::size

linear_algebra::refvector::push_back

4.49.4 Member Data Documentation

4.49.4.1 const refvector<zmat entry>& zmat::list

4.49.4.2 refvector<zmat entry> zmat::list2[private]

4.49.4.3 long zmat::offset[private]

4.49.4.4 const long& zmat::offset r

The documentation for this class was generated from the following file:

• zmat.hh

4.50 zmat connector Class Reference

Class of connectors between z-matrices.

#include <zmat.hh>

Collaboration diagram for zmat connector:

zmat_connector

linear_algebra::mat_full< bool >

opt_val_r

default_opt_val

opt_val

linear_algebra::refvector< double >

angles_r

angles

linear_algebra::refvector< long >

centers_r

centers

linear_algebra::refvector< bool >

default_yrvv

default_yrv

linear_algebra::mat_full< double >

modifiers_r

modifiers

Public Member Functions

• zmat connector & operator= (const zmat connector &A)

272
Assignment operator.

• bool operator== (const zmat connector &A) const

Comparison operator.

• stringstream & output (stringstream &s) const

Output the connector to a stringstream.

• void set opt val (long i, long j, bool v)

Set the optimization flag .

• void add angle (double i)

Add an angle to the.

Constructors

• zmat connector ()

Default constructor.

• zmat connector (const zmat entry &a)

Construct from a zmat entry.

• zmat connector (const zmat entry &a, const mat full< bool > &nopt val)

Construct from a zmat entry and a set of optimization flags.

• zmat connector (stringstream &s)

Construct from an input string stream.

• zmat connector (const zmat connector &A)

Construct from another zmat connector.

Static Public Member Functions

• static zmat connector & update connector (const zmat connector &a, const

zmat connector &e, const long add, zmat connector &x)

Update a connector to fit after two Z-matrices have been combined.

• static zmat connector & update connector (const zmat connector &a, const long add,

zmat connector &x)

Update a connector to fit after two Z-matrices have been combined.

Public Attributes

273
• const refvector< long > & centers r

Translation vector of -3, -2, -1 to alternate centers. (READ ONLY).

• const mat full< double > & modifiers r

Modification matrix. Depending on the use of each center modifications may be

different. (READ ONLY).

• const mat full< bool > & opt val r

Matrix of flags to set optimization.

• const refvector< double > & angles r

deg/angle for conformational purposes. (READ ONLY)

Static Public Attributes

• static const bool default y [3] = {false, false, false}

• static const refvector< bool > default yrv

• static const refvector< bool > default yrvv [3]

• static const refvector< refvector< bool > > default yrvrv

• static const mat full< bool > default opt val

Private Attributes

• refvector< long > centers

Translation vector of -3, -2, -1 to alternate centers.

• mat full< double > modifiers

Modification matrix. Depending on the use of each center modifications may be

different.

• mat full< bool > opt val

Matrix of flags to set optimization.

• refvector< double > angles

deg/angle for conformational purposes.

274
4.50.1 Detailed Description

A zmat connector has three distinct references:

• –6 to –4 refer to the original connector of the following group. (default)

• –3 to –1 refer to values of the connector passed down to the current group.

• >–1 refers to values in the local Z-matrix.

4.50.2 Constructor & Destructor Documentation

4.50.2.1 zmat connector::zmat connector ()

4.50.2.2 zmat connector::zmat connector (const zmat entry & a)

4.50.2.3 zmat connector::zmat connector (const zmat entry & a, const mat full< bool > &

nopt val)

4.50.2.4 zmat connector::zmat connector (stringstream & s)

The connector information is generated from:( C1,C2,C3)

(V11,V12,V13)

(V21,V22,V23)

(V31,V32,V33)

(O11,O12,O13)

(O11,O12,O13)

(O11,O12,O13)

(Oa,Ob)

Ci are integers referencing connectors, Vij are variables depending on the position Ci in a

zmat entry Oij is a flag 0/1 for optimization of this variable

4.50.2.5 zmat connector::zmat connector (const zmat connector & A)

4.50.3 Member Function Documentation

4.50.3.1 void zmat connector::add angle (double i

4.50.3.2 zmat connector & zmat connector::operator= (const zmat connector & A)

4.50.3.3 bool zmat connector::operator== (const zmat connector & A) const

275
4.50.3.4 stringstream & zmat connector::output (stringstream & s) const

4.50.3.5 void zmat connector::set opt val (long i, long j, bool v)

4.50.3.6 zmat connector & zmat connector::update connector (const zmat connector & a,

const long add, zmat connector & x)[static]

4.50.3.7 zmat connector & zmat connector::update connector (const zmat connector & a,

const zmat connector & e, const long add, zmat connector & x)[static]

4.50.4 Member Data Documentation

4.50.4.1 refvector<double> zmat connector::angles[private]

4.50.4.2 const refvector<double>& zmat connector::angles r

4.50.4.3 refvector<long> zmat connector::centers[private]

4.50.4.4 const refvector<long>& zmat connector::centers r

4.50.4.5 const mat full< bool > zmat connector::default opt val[static]

4.50.4.6 const bool zmat connector::default y = {false, false, false}[static]

4.50.4.7 const refvector< bool > zmat connector::default yrv[static]

4.50.4.8 const refvector< refvector< bool > > zmat connector::default yrvrv[static]

4.50.4.9 const refvector< bool > zmat connector::default yrvv[static]

Initial value:

refvector<bool>(3),

zmat connector::default yrv,

zmat connector::default yrv

4.50.4.10 mat full<double> zmat connector::modifiers[private]

4.50.4.11 const mat full<double>& zmat connector::modifiers r

4.50.4.12 mat full<bool> zmat connector::opt val[private]

4.50.4.13 mat full<bool>& zmat connector::opt val r

The documentation for this class was generated from the following files:

276
• zmat.hh

• zmat.cc

4.51 zmat entry Class Reference

Class of Z-matrix entries.

#include <zmat.hh>

Collaboration diagram for zmat entry:

zmat_entry

linear_algebra::refvector< double >

variable_r

variable

linear_algebra::refvector< long >

connect_r

connect

linear_algebra::refvector< bool >

opt_val_r

opt_val

Public Member Functions

• zmat entry & operator= (const zmat entry &a)

Copy assignment.

• bool operator== (const zmat entry &a) const

Comparison operator.

• stringstream & output (stringstream &s) const

Output the entry to a stringstream.

• void update variables (const zmat entry &b)

Update the variables in the zmat entry without touching connectivity or

increments.

Constructors

• zmat entry ()

Default constructor. zmat entry (const zmat entry &a)

Copy constructor. zmat entry (const string &N)

Named default construction.

• zmat entry (const string &N, const double ∗v, const int ∗c)

Construction with full initialization.

277
• zmat entry (const string &N, const double ∗v)

Construction with variable initialization.

• zmat entry (const string &N, const refvector< double > &v)

Construction with variable initialization.

• zmat entry (const string &N, const refvector< double > &v, const refvector< long >

&c)

Construction from explicit values.

• zmat entry (stringstream &s)

Construction from a stringstream.

Public Attributes

• const string & Name r

Atom name.

• const refvector< double > & variable r

Array of variables.

• const refvector< refvector< double > > & increment r

Potential alternate values for each variable.

• const refvector< long > & connect r

Connectivity data.

• const refvector< bool > & opt val r

Optimization flags for each variable.

Static Public Attributes

• static const bool default opt val [3] = {false,false, false}

Private Attributes

• string Name

Atom name.

• refvector< double > variable

Array of variables.

278
• refvector< refvector< double > > increment

Potential alternate values for each variable.

• refvector< long > connect

Connectivity data.

• refvector< bool > opt val

Optimization flags for each variable.

Friends

• class zmat

4.51.1 Constructor & Destructor Documentation

4.51.1.1 zmat entry::zmat entry ()

4.51.1.2 zmat entry::zmat entry (const zmat entry & a)

4.51.1.3 zmat entry::zmat entry (const string & N )

4.51.1.4 zmat entry::zmat entry (const string & N , const double ∗ v, const int ∗ c)

4.51.1.5 zmat entry::zmat entry (const string & N , const double ∗ v)

4.51.1.6 zmat entry::zmat entry (const string & N , const refvector< double > & v)

4.51.1.7 zmat entry::zmat entry (const string & N , const refvector< double > & v, const

refvector< long > & textit c)

4.51.1.8 zmat entry::zmat entry (stringstream & s)

Each entry in the string has the followin form: (Name, Integer(f), ength(double,...,double),

Integer(f), Angle(double,...,double), Integer(f), Dihedral(double,...,double))

• Name is a string.

• f is a flag of 0 or 1. The inner parentheses are only needed if specific values are given.

4.51.2 Member Function Documentation

4.51.2.1 zmat entry & zmat entry::operator= (const zmat entry & a)

279
4.51.2.2 bool zmat entry::operator== (const zmat entry & a) const

4.51.2.3 stringstream & zmat entry::output (stringstream & s) const

4.51.2.4 void zmat entry::update variables (const zmat entry & b)

4.51.3 Friends and Related Function Documentation

4.51.3.1 friend class zmat[friend]

4.51.4 Member Data Documentation

4.51.4.1 refvector<long> zmat entry::connect[private]

4.51.4.2 const refvector<long>& zmat entry::connect r

4.51.4.3 const bool zmat entry::default opt val = {false,false, false}[static]

4.51.4.4 refvector<refvector<double> > zmat entry::increment[private]

4.51.4.5 const refvector<refvector<double> >& zmat entry::increment r

4.51.4.6 string zmat entry::Name[private]

4.51.4.7 const string& zmat entry::Name r

4.51.4.8 refvector<bool> zmat entry::opt val[private]

4.51.4.9 refvector<bool>& zmat entry::opt val r

4.51.4.10 refvector<double> zmat entry::variable[private]

4.51.4.11 const refvector<double>& zmat entry::variable r

The documentation for this class was generated from the following files:

• zmat.hh

• zmat.cc

4.52 zmat opt Class Reference

#include <zmat opt.hh>

280
Inheritance diagram for zmat opt:

zmat_opt

Library_data is_threadable_abstract

Collaboration diagram for zmat opt:

zmat_opt

Library_data

linear_algebra::refvector< valerg >

value_r

value

is_threadable_abstract

boost::stateful_thread_group

threads

zmat

Z

Z_r

linear_algebra::refvector< zmat_entry >

list2

list

Public Member Functions

• const zmat & operator= (const zmat &A)

Assignment operator for a zmat. valerg compute property ulong i) const

Compute the property. (Here energy is important).

• valerg compute property (ulong i, zmat &A) const

Compute the property. (Here energy is important).

• valerg compute energy (ulong i) const

Compute the energy. (Here energy is important).

• valerg compute energy (ulong i, zmat &A) const

Compute the energy. (Here energy is important).

• ulong get space size () const

Compute the size of the optimization space.

• ulong get bits () const

Compute the number of bits to address the optimization space.

• bool pre opt (ulong N) const

Find a converged starting geometry.

281
Constructors

• zmat opt ()

Default constructor. zmat opt (const zmat opt &A)

Copy constructor. zmat opt (const zmat &A)

Initialize with a zmatrix.

Public Attributes

• const zmat & Z r

Read-only access to Z.

• bool compute property flag

Private Attributes

• zma

4.52.1 Detailed Description

zmat opt describes a threadable Library using class zmat. It has two associated properties

as expressed by compute energy(ulong i) and compute property(ulong i). Set

compute property flag in order to compute the property and energy of a given

conformation.

4.52.2 Constructor & Destructor Documentation

4.52.2.1 zmat opt::zmat opt ()

4.52.2.2 zmat opt::zmat opt (const zmat opt & A)

4.52.2.3 zmat opt::zmat opt (const zmat & A)

4.52.3 Member Function Documentation

4.52.3.1 valerg zmat opt::compute energy (ulong i, zmat & A) const

This method is necessary for initialisation purposes.

282
4.52.3.2 valerg zmat opt::compute energy (ulong i) const

4.52.3.3 valerg zmat opt::compute property (ulong i, zmat & A) const

This method is necessary for initialisation purposes.

4.52.3.4 valerg zmat opt::compute property (ulong i) const[virtual]

Implements Library data.

4.52.3.5 ulong zmat opt::get bits () const[virtual]

Implements Library data.

4.52.3.6 ulong zmat opt::get space size () const[virtual]

Implements Library data.

4.52.3.7 const zmat & zmat opt::operator= (const zmat & A)

4.52.3.8 bool zmat opt::pre opt (ulong N ) const

4.52.4 Member Data Documentation

4.52.4.1 bool zmat opt::compute property flag

Changes the behavior of compute property.

• true: compute property and energy

• false: compute energy only.

4.52.4.2 zmat zmat opt::Z[mutable, private]

4.52.4.3 const zmat& zmat opt::Z r

The documentation for this class was generated from the following files:

• zmat opt.hh

• zmat opt.cc

283
5. Discrete Optimization in Chemical Space File Documentation

5.1 binary entropic.hh File Reference

Definition and Implementation of the binary entropic class.

#include <typedefs.hh>

#include <concepts.hh>

#include <iostream>

#include <optimizeabstract.h>

#include <cmath>

#include <BCR CPP LA/linear algebra.h>

#include <entropic aux.hh>

Namespaces

• namespace std

Classes

• class binary entropic< C >

Class for enhanced sampling using an entropic measure of coverage.

5.1.1 Detailed Description

5.2 binary line search.hh File Reference

implementation of a line search optimization

#include <concepts.hh>

#include <optimizeabstract.h>

Classes

• class binary line search< C >

Search a pruned Library using a linesearch algorithm.

284
5.2.1 Detailed Description

5.3 binary opt.cc File Reference

#include <BCR CPP LA/refcount.h>

#include <chemgroup.hh>

#include <chem opt.hh>

#include <Library data.hh>

#include <zmat.hh>

#include <sstream>

#include <fstream>

#include <iostream>

#include <cmath>

#include <noprune.h>

#include <simpleprune.h>

#include <simpleprune.cc>

#include <optimizeabstract.h>

#include <binary line search.hh>

#include <binarysteepestdescent.hh>

#include <binarygdmc.hh>

#include <genbase-l-s.hh>

#include <genbase-grad-ls.hh>

#include <boost/concept check.hpp>

#include <concepts.hh>

#include <reordergeneralbase.hh>

#include <generalbaseiterator.hh>

#include <genbasegdmc.hh>

#include <gen base entropic.hh>

#include <binary entropic.hh>

Functions

• valerg calc property (const zmat &A, const string &out, const string &id, zmat

&returnA)

Setup the external computations and execute them.

• template<class X> void print (const X &D)

• template<class X> ulong run (const X &D)

• int main (int argc, char ∗argv[ ])

Main execution routine. Handles command-line input and executes optimization.

285
5.3.1 Function Documentation

5.3.1.1 valerg calc property (const zmat & A, const string & out, const string & id, zmat &

returnA)

5.3.1.2 int main (int argc, char ∗ argv[ ])

5.3.1.3 template<class X> void print (const X & D)

5.3.1.4 template<class X> ulong run (const X & D)

5.4 binarygdmc.hh File Reference

Implementation of binary GDMC.

#include <typedefs.hh>

#include <concepts.hh>

#include <iostream>

#include <optimizeabstract.h>

Classes

• class binary gdmc< C >

Gradient-directed Monte Carlo performed on a hypercube.

5.4.1 Detailed Description

5.5 binarysteepestdescent.hh File Reference

Implements the binary steepest descent optimization class.

#include <optimizeabstract.h>

#include <concepts.hh>

#include <BCR CPP LA/refcount.h>

#include <has gradients hessian data.hh>

Classes

• class binary steepest descent< C >

Searches a Lilbrary for an optimum using a steepest descent method.

286
5.5.1 Detailed Description

5.6 chem opt.cc File Reference

Implementation of chemical optimization class.

#include <BCR CPP LA/refcount.h>

#include <chemgroup.hh>

#include <zmat opt.hh>

#include <chem opt.hh>

#include <cmath>

#include <binary line search.hh>

Defines

• #define CLASS template <class P> chem opt

5.6.1 Detailed Description

5.6.2 Define Documentation

5.6.2.1 #define CLASS template <class P> chem opt

5.7 chem opt.hh File Reference

#include <BCR CPP LA/refcount.h>

#include <typedefs.hh>

#include <chemgroup.hh>

#include <zmat.hh>

#include <Library data.hh>

#include <isthreadableabstract.h>

#include <concepts.hh>

#include <boost/concept check.hpp>

Classes

• chem opt

Chemical optimization class.

287
5.8 chemgroup.cc File Reference

Implementation file of class ChemGroup.

#include <BCR CPP LA/refcount.h>

#include <chemgroup.hh> %

#include <zmat.hh>

#include <string>

#include <sstream>

#include <iostream>

#include <cmath>

Functions

• bool filter (const ChemGroup &A)

• refvector< unsigned long > & sort descending (const refvector)< double > &E,

unsigned long start, unsigned long end, refvector< unsigned long > &index)

Do a qsort on E with immediate storage back into index. (perfectly parallelizable).

• refvector< unsigned long > & sort descending (const refvector< double > &E,

refvector< unsigned long > &index)

• static void spaces (long n)

outputs a number of spaces

5.8.1 Detailed Description

5.8.2 Function Documentation

5.8.2.1 bool filter (const ChemGroup & A)

5.8.2.2 refvector<unsigned long>& sort descending (const refvector< double > & E,

refvector< unsigned long > & index )

5.8.2.3 refvector<unsigned long>& sort descending (const refvector< double > & E,

unsigned long start, unsigned long end, refvector< unsigned long > & index )

5.8.2.4 static void spaces (long n)[static]

288
5.9 chemgroup.hh File Reference

Header file for ChemGroup class.

#include <BCR CPP LA/refcount.decl>

#include <zmat.hh>

#include <iostream>

#include <sstream>

#include <typedefs.hh>

#include <chemident.hh>

Classes

• class ChemGroup

This class describes a group of substitution sites and their respective substitution

options as well as computation history.

Typedefs

• typedef unsigned long ulong

5.9.1 Detailed Description

5.9.2 Typedef Documentation

5.9.2.1 typedef unsigned long ulong

5.10 chemident.cc File Reference

Implementation file of class ChemIdent.

#include <BCR CPP LA/refcount.h>

#include <chemident.hh>

#include <zmat.hh>

#include <zmat opt.hh>

#include <string>

#include <sstream>

#include <iostream>

#include <cmath>

Functions

289
• static void (long n)

Variables

• static const double zeros [3] = {0.0,0.0,0.0}

• static const int conn [3] = {-6,-5,-4}

• static const zmat connector default return connector (zmat entry(” ”, zeros, conn))

5.10.1 Detailed Description

5.10.2 Function Documentation

5.10.2.1 static void spaces (long n)[static]

5.10.3 Variable Documentation

5.10.3.1 const int conn[3] = {-6,-5,-4}[static]

5.10.3.2 const zmat connector default return connector(zmat entry(” ”, zeros,

conn))[static]

5.10.3.3 const double zeros[3] = {0.0,0.0,0.0}[static]

5.11 chemident.hh File Reference

Header file for ChemIdent class.

#include <BCR CPP LA/linear algebra.h>

#include <zmat.hh>

#include <zmat opt.hh>

#include <iostream>

#include <sstream>

#include <typedefs.hh>

Classes

• class ChemIdent

This class describes a group of substitution sites on a Z-matrix and their

respective substitution options.

290
5.11.1 Detailed Description

5.12 concepts.hh File Reference

#include <boost/concept check.hpp>

#include <BCR CPP LA/refcount.decl>

#include <BCR CPP LA/mat sym full.decl>

#include <typedefs.hh>

#include <boost/thread/shared mutex.hpp>

#include <stateful thread group.hh>

#include <string>

Namespaces

• namespace Concepts

Classes

• class Concepts::Library< X >

Concept defines an addressable set of values.

• class Concepts::base iterator< X >

Concept defines an iterator for a class of bases.

• class Concepts::pruner< X >

Concept defines an addressable set of values.

• class Concepts::has gradients< X >

Concept defines a class that has gradients.

• class Concepts::has hessians< X >

Concept defines a class that has hessians.

• class Concepts::has Name< X >

Concept defines a class that has a private string Name.

• class Concepts::is threadable< X >

Concept defines a class that is threadable.

• class Concepts::has optimize< X >

Concept defines a class that has an optimize member.

• class Concepts::has stacksize< X >

Concept defines a class that has a stack member.

291
Functions

• template<typename T> void Concepts::same type (T const &, T const &)

Dummy function to determine type equality.

5.12.1 Detailed Description

This file contains the assembled concepts used in the project Discrete Molecular

Optimization.

5.13 entropic aux.cc File Reference

#include <iostream>

#include <cmath>

#include <BCR CPP LA/linear algebra.h>

Functions

• void linsolve cg (const mat sym full< double > &J, const refvector< double > &G,

refvector< double > &X)

Conjugate gradients for linear solver.

• refvector< double > & set gradient (const refvector< long > &b, const mat full<

double > &H, const refvector< double > &X, refvector< double > &G)

We ignore infinities in the derivatives.

• mat sym full< double > & set hessian (const refvector< long > &b, const mat full<

double > &H, const refvector< double > &X, mat sym full< double > &J)

We ignore infinities in the derivatives.

• ulong maximize entropic distance (const refvector< ulong > &A, const refvector<

long > &b)

Maixmize the entropic distance as declared in set gradient() using

Newton-Raphson.

5.13.1 Function Documentation

5.13.1.1 const mat sym full< double > & J , const refvector< double > & G, refvector<

double > & X )

292
5.13.1.2 ulong maximize entropic distance (const refvector< ulong > & A, const refvector<

long > & b)

5.13.1.3 refvector<double>& set gradient (const refvector< long > & b, const mat full<

double > & H , const refvector< double > & X , refvector< double > & G)

Compute the gradient of the distance function f = 

i lnj sin(xj − s

(i)

j π/nj )2 where nj

is the number of digits in component j.

5.13.1.4 mat sym full<double>& set hessian (const refvector< long > & b, const

mat full< double > & H , const refvector< double > & X , mat sym full< double > & J )

Compute the hessian of the distance function f = 

i lnj sin(xj − s

(i)

j π/nj )2 where nj

is the number of digits in component j.

5.14 entropic aux.hh File Reference

Auxiliary functions for ∗ entropic classes.

#include <iostream>

#include <cmath>

#include <BCR CPP LA/linear algebra.h>

Functions

• void linsolve cg (const mat sym full< double > &J, const refvector< double > &G,

refvector< double > &X)

Conjugate gradients for linear solver.

• refvector< double > & set gradient (const refvector< long > &b, const mat full<

double > &H, const refvector< double > &X, refvector< double > &G)

We ignore infinities in the derivatives.

• mat sym full< double > & set hessian (const refvector< long > &b, const mat full<

double > &H, const refvector< double > &X, mat sym full< double > &J)

We ignore infinities in the derivatives.

• ulong maximize entropic distance (const refvector< ulong > &A, const refvector<

long > &b)

Maixmize the entropic distance as declared in set gradient() using

Newton-Raphson.

293
5.14.1 Detailed Description

5.14.2 Function Documentation

5.14.2.1 void linsolve cg (const mat sym full< double > & J , const refvector< double > &

G, refvector< double > & X )

5.14.2.2 ulong maximize entropic distance (const refvector< ulong > & A, const refvector<

long > & b)

5.14.2.3 refvector<double>& set gradient (const refvector< long > & b, const mat full<

double > & H , const refvector< double > & X , refvector< double > & G)

Compute the gradient of the distance function f = 

i lnj sin(xj − s

(i)

j π/nj )2 where nj

is the number of digits in component j.

5.14.2.4 mat sym full<double>& set hessian (const refvector< long > & b, const

mat full< double > & H , const refvector< double > & X , mat sym full< double > & J )

Compute the hessian of the distance function f = 

i lnj sin(xj − s

(i)

j π/nj )2 where nj

is the number of digits in component j.

5.15 gen base entropic.hh File Reference

#include <typedefs.hh>

#include <concepts.hh>

#include <iostream>

#include <optimizeabstract.h>

#include <cmath>

#include <BCR CPP LA/linear algebra.h>

#include <entropic aux.hh>

Classes

• class gen base entropic< C >

Meta-Optimize by generating maximally distant starting configurations.

5.16 genbase-grad-ls.hh File Reference

Line search optimization with general bases.

294
#include <typedefs.hh>

#include <concepts.hh>

#include <iostream>

#include <optimizeabstract.h>

#include <BCR CPP LA/refcount.h>

Classes

• class gen base grad LS< C, B >

Line search optimization class using general bases.

5.16.1 Detailed Description

5.17 genbase-l-s.hh File Reference

Line search optimization with general bases.

#include <typedefs.hh>

#include <concepts.hh>

#include <iostream>

#include <optimizeabstract.h>

#include <BCR CPP LA/refcount.h>

Classes

• class gen base LS< C, B >

• Line search optimization class using general bases.

5.17.1 Detailed Description

5.18 generalbaseiterator.cc File Reference

TODO: Throw exceptions.

#include <chem opt.hh>

#include <chemident.hh>

#include <generalbaseiterator.hh>

295
5.18.1 Detailed Description

5.19 generalbaseiterator.hh File Reference

#include <concepts.hh>

#include <BCR CPP LA/refcount.h>

#include <typedefs.hh>

#include <chemident.hh>

Classes

• class general base iterator< X >

Iterator over the potential bases.

5.19.1 Detailed Description

5.20 has gradients hessian data.decl File Reference

#include <BCR CPP LA/refcount.decl>

#include <BCR CPP LA/mat sym full.decl>

#include ”typedefs.hh”

#include <string>

#include <boost/thread.hpp>

#include <stateful thread group.hh>

#include ”concepts.hh”

Classes

• class has gradients data< X >

Abstract class for discrete optimizations.

• class has hessians data< X >

Abstract class for discrete optimizations.

5.21 has gradients hessian data.hh File Reference

#include <has gradients hessian data.decl>

296
#include <BCR CPP LA/refcount.h>

#include <BCR CPP LA/mat sym full.h>

#include <typedefs.hh>

#include <stdexcept>

5.22 include/BCR CPP LA/ABmBA.hh File Reference

#include <linear algebra.h>

Namespaces

• namespace linear algebra

Functions

• template<class TN> mat sym full< TN > & linear algebra::ABmBA (const

mat sym full< TN > A, const mat asym full< TN > B, mat sym full< TN > &r)

Computes the commutator AB-BA.

• template<class TN> mat asym full< TN > linear algebra::ABmBA (const

mat sym full< TN > A, const mat asym full< TN > B)

Computes the commutator AB-BA.

• template<class TN> mat asym full< TN > & linear algebra::ABmBA (const

mat asym full< TN > A, const mat sym full< TN > B, mat asym full< TN > &r)

Computes the commutator AB-BA.

• template<class TN> mat asym full< TN > linear algebra::ABmBA (const

mat asym full< TN > A, const mat sym full< TN > B)

Computes the commutator AB-BA.

• template<class TN> mat asym full< TN > & linear algebra::ABmBA (const

mat asym full< TN > &A, const mat asym full< TN > &B, mat asym full< TN >

&r)

Computes the commutator AB-BA.

• template<class TN> mat asym full< TN > linear algebra::ABmBA (const

mat asym full< TN > &A, const mat asym full< TN > &B)

Computes the commutator AB-BA.

297
5.22.1 Detailed Description

5.23 include/BCR CPP LA/ABpBA.hh File Reference

#include <linear algebra.h>

Namespaces

• namespace linear algebra

Functions

• template<class TN> mat asym full< TN > & linear algebra::ABpBA (const

mat sym full< TN > &A, const mat asym full< TN > &B, mat asym full< TN >

&r)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > linear algebra::ABpBA (const

mat sym full< TN > &A, const mat asym full< TN > &B)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > linear algebra::ABpBA (const mat full<

TN > &A, const mat asym full< TN > &B, mat asym full< TN > &r)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > linear algebra::ABpBA (const mat full<

TN > A, const mat asym full< TN > B)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > & linear algebra::ABpBA (const

mat asym full< TN > A, const mat sym full< TN > B, mat asym full< TN > &r)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > linear algebra::ABpBA (const

mat asym full< TN > A, const mat sym full< TN > B)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > & linear algebra::ABpBA (const

mat sym full< TN > A, const mat asym sparse< TN > B, mat asym full< TN >

&r)

Computes the anti-commutator AB+BA.

298
• template<class TN> mat asym full< TN > linear algebra::ABpBA (const

mat sym full< TN > A, const mat asym sparse< TN > B)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > & linear algebra::ABpBA (const

mat asym sparse< TN > A, const mat sym full< TN > B, mat asym full< TN >

&r)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > linear algebra::ABpBA (const

mat asym sparse< TN > A, const mat sym full< TN > B)

Computes the anti-commutator AB+BA.

• template<class TN> mat sym full< TN > & linear algebra::ABpBA (const

mat sym full< TN > A, mat sym full< TN > B, mat sym full< TN > &r,

mat sym full< TN > &I, mat full< TN > &I2)

Computes the anti-commutator AB+BA.

• template<class TN> mat sym full< TN > & linear algebra::ABpBA (const

mat sym full< TN > A, mat sym full< TN > B, mat sym full< TN > &r)

Computes the anti-commutator AB+BA.

• template<class TN> mat sym full< TN > & linear algebra::ABpBA (const

mat sym full< TN > &A, const mat sym full< TN > &B, mat sym full< TN > &r,

mat sym full< TN > &I)

Computes the anti-commutator AB+BA.

• template<class TN> mat sym full< TN > linear algebra::ABpBA (const

mat sym full< TN > &A, const mat sym full< TN > &B)

Computes the anti-commutator AB+BA.

• template<class TN> mat sym full< TN > & linear algebra::ABpBA (const

mat sym full< TN > &A, const mat sym sparse< TN > &B, mat sym full< TN >

&r, mat full< TN > &I2)

Computes the anti-commutator AB+BA.

• template<class TN> mat sym full< TN > & linear algebra::ABpBA (const

mat sym full< TN > &A, const mat sym sparse< TN > &B, mat sym full< TN >

&r)

Computes the anti-commutator AB+BA.

• template<class TN> mat sym full< TN > linear algebra::ABpBA (const

mat sym full< TN > &A, const mat sym sparse< TN > &B)

Computes the anti-commutator AB+BA.

299
• template<class TN> mat asym full< TN > & linear algebra::ABpBA (const

mat asym full< TN > &A, const mat sym sparse< TN > &B, mat asym full< TN

> &r, mat full< TN > &I2)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym sparse< TN > & linear algebra::ABpBA (const

mat asym full< TN > &A, const mat sym sparse< TN > &B, mat asym sparse<

TN > &r, mat sparse< TN > &I2)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > & linear algebra::ABpBA (const

mat asym full< TN > &A, const mat sym sparse< TN > &B, mat asym full< TN

> &r, mat sparse< TN > &I2)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > & linear algebra::ABpBA (const

mat asym full< TN > &A, const mat sym sparse< TN > &B, mat asym full< TN

> &r)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym sparse< TN > & linear algebra::ABpBA (const

mat asym full< TN > &A, const mat sym sparse< TN > &B, mat asym sparse<

TN > &r)

Computes the anti-commutator AB+BA.

• template<class TN> mat asym full< TN > linear algebra::ABpBA (const

mat asym full< TN > &A, const mat sym sparse< TN > &B)

Computes the anti-commutator AB+BA.

• template<class T> mat sym full< T > linear algebra::ABpBA (const

mat asym full< T > &A, const mat asym full< T > &B)

Commutes the anti-commutator AB+BA. Lame and lazy version.

5.23.1 Detailed Description

5.24 include/BCR CPP LA/asymmetric.decl File Reference

Provide declarations for antisymmetric full matrices.

#include <vector>

#include <linear algebra.decl>

#include <matrix.decl>

#include <square.decl>

300
Namespaces

• namespace linear algebra

Classes

• class linear algebra::asymmetric< TN >

Class of antisymmetric matrices.

5.24.1 Detailed Description

Todo

throw exceptions.

5.25 include/BCR CPP LA/asymmetric.h File Reference

Provide manipulations for antisymmetric full matrices.

#include <vector>

#include <square.h>

#include <asymmetric.decl>

Namespaces

• namespace linear algebra

5.25.1 Detailed Description

Todo throw exceptions.

5.26 include/BCR CPP LA/class extensions.decl File Reference

Declarations of general expansions for LA.

#include <stdexcept>

#include <sstream>

#include <iostream>

#include <linear algebra.decl>

Namespaces

301
• namespace linear algebra

Functions

• template<class TN> matrix< TN > & linear algebra::zero (matrix< TN > &r)

• template<class TN> mat full< TN > & linear algebra::zero (mat full< TN > &r)

• template<class TN> mat sym full< TN > & linear algebra::zero (mat sym full< TN

> &r)

• template<class TN> mat asym full< TN > & linear algebra::zero (mat asym full<

TN > &r)

• template<class TN> refvector< TN > & linear algebra::zero (refvector< TN > &r)

• double & linear algebra::zero (double &r)

• double & linear algebra::one (double &r)

• template<class TN> matrix< TN > & linear algebra::one (matrix< TN > &r)

• void linear algebra::copy (double &a, const double &b, const long i)

• void linear algebra::copy (double &a, const double &b)

• void linear algebra::copy (long &a, const long &b, const long i)

• void linear algebra::copy (long &a, const long &b)

• template<class TN> void linear algebra::copy (mat sym sparse< TN > &a,

mat sym sparse< TN > &b, const long i)

• template<class TN> void linear algebra::copy (mat sym sparse< TN > &a, const

mat sym sparse< TN > &b)

• template<class TN> void linear algebra::copy (mat sym sparse< TN > &a,

mat sym sparse< TN > &b)

• template<class TN> void linear algebra::copy (mat sym full< TN > &a,

mat sym full< TN > &b, const long i)

• template<class TN> void linear algebra::copy (mat sym full< TN > &a, const

mat sym full< TN > &b)

302
• template<class TN> void linear algebra::copy (mat sym full< TN > &a,

mat sym full< TN > &b)

• template<class TN> void linear algebra::copy (mat full< TN > &a, mat full< TN >

&b, const long i)

• template<class TN> void linear algebra::copy (mat full< TN > &a, const mat full<

TN > &b)

• template<class TN> void linear algebra::copy (mat full< TN > &a, mat full< TN >

&b)

• template<class TN> void linear algebra::copy (mat sparse< TN > &a, mat sparse<

TN > &b, const long i)

• template<class TN> void linear algebra::copy (mat sparse< TN > &a, const

mat sparse< TN > &b)

• template<class TN> void linear algebra::copy (mat sparse< TN > &a, mat sparse<

TN > &b)

• template<class TN> void linear algebra::copy (refvector< TN > &a, refvector< TN

> &b, const long i)

• template<class TN> void linear algebra::copy (refvector< TN > &a, const

refvector< TN > &b)

• template<class TN> void linear algebra::copy (refvector< TN > &a, refvector< TN

> &b)

• template<class TN> void linear algebra::copy (sparse vector< TN > &a,

sparse vector< TN > &b, const long i)

• template<class TN> void linear algebra::copy (sparse vector< TN > &a, const

sparse vector< TN > &b)

• template<class C> void linear algebra::copy (C &a, const C &b)

• template<class TN> void linear algebra::display (const matrix< TN > &a, ostream

&outs)

• template<class TN> void linear algebra::display (const refvector< TN > &a,

ostream &outs)

• void linear algebra::display (const double &a, ostream &outs)

303
• template<class TNTN> mat full< TNTN > linear algebra::exp (const

mat asym full< TNTN > &A)

• template<class TNTN> mat full< TNTN > linear algebra::dexp (mat asym full<

TNTN > A, const long k, const long l)

5.26.1 Detailed Description

5.27 include/BCR CPP LA/class extensions.hh File Reference

General expansions for LA.

#include <stdexcept>

#include <sstream>

#include <linear algebra.decl>

#include <class extensions.decl>

#include <refcount.decl>

#include <matrix.decl>

#include <mat full.decl>

#include <mat asym full.decl>

#include <cmath>

#include <linear algebra.h>

Namespaces

• namespace linear algebra

Functions

• template<class TN> mat sym sparse< TN > & linear algebra::zero

(mat sym sparse< TN > &r)

• template<class TN> mat sym full< TN > & linear algebra::zero (mat sym full< TN

> &r)

• template<class TN> mat sparse< TN > & linear algebra::zero (mat sparse< TN >

&r)

• template<class TN> mat full< TN > & linear algebra::zero (mat full< TN > &r)

• template<class TN> mat asym full< TN > & linear algebra::zero (mat asym full<

TN > &r)

304
• template<class TN> refvector< TN > & linear algebra::zero (refvector< TN > &r)

• double & linear algebra::zero (double &r)

• template<typename TN> TN & linear algebra::zero (TN &r)

• double & linear algebra::one (double &r)

• template<class TN> matrix< TN > & linear algebra::one (matrix< TN > &r)

• void linear algebra::copy (double &a, const double &b, const long i)

• void linear algebra::copy (double &a, const double &b)

• void linear algebra::copy (long &a, const long &b, const long i)

• void linear algebra::copy (long &a, const long &b)

• void linear algebra::copy (bool &a, const bool &b)

• template<class TN> void linear algebra::copy (mat full< TN > &a, const mat full<

TN > &b, const long i)

• template<class TN> void linear algebra::copy (mat full< TN > &a, const mat full<

TN > &b)

• template<class TN> void linear algebra::copy (mat full< TN > &a, mat full< TN >

&b)

• template<class TN> void linear algebra::copy (mat sparse< TN > &a, const

mat sparse< TN > &b, const long i)

• template<class TN> void linear algebra::copy (mat sparse< TN > &a, const

mat sparse< TN > &b)

• template<class TN> void linear algebra::copy (mat sparse< TN > &a, mat sparse<

TN > &b)

• template<class TN> void linear algebra::copy (mat sym sparse< TN > &a, const

mat sym sparse< TN > &b, const long i)

• template<class TN> void linear algebra::copy (mat sym sparse< TN > &a, const

mat sym sparse< TN > &b)

• template<class TN> void linear algebra::copy (mat sym sparse< TN > &a,

mat sym sparse< TN > &b)

305
• template<class TN> void linear algebra::copy (mat sym full< TN > &a, const

mat sym full< TN > &b, const long i)

• template<class TN> void linear algebra::copy (mat sym full< TN > &a, const

mat sym full< TN > &b)

• template<class TN> void linear algebra::copy (mat sym full< TN > &a,

mat sym full< TN > &b)

• template<class TN> void linear algebra::copy (refvector< TN > &a, refvector< TN

> &b, const long i)

• template<class TN> void linear algebra::copy (refvector< TN > &a, const

refvector< TN > &b, const long i)

• template<class TN> void linear algebra::copy (refvector< TN > &a, const

refvector< TN > &b)

• template<class TN> void linear algebra::copy (sparse vector< TN > &a,

sparse vector< TN > &b, const long i)

• template<class TN> void linear algebra::copy (sparse vector< TN > &a, const

sparse vector< TN > &b)

• template<class C> void linear algebra::copy (C &a, const C &b)

• template<class TN> void linear algebra::display (const matrix< TN > &a, ostream

&outs)

• template<class TN> void linear algebra::display (const refvector< TN > &a,

ostream &outs)

• void linear algebra::display (const double &a, ostream &outs)

• template<class TNTN> mat full< TNTN > linear algebra::exp (const

mat asym full< TNTN > &A)

• template<class TNTN> mat full< TNTN > linear algebra::dexp (mat asym full<

TNTN > A, const long k, const long l)

5.27.1 Detailed Description

5.28 include/BCR CPP LA/invert sym.h File Reference

Inversion of symmetric matrices.

306
#include <linear algebra.h>

#include <vector>

#include <iostream>

• refvector< double > & invert sym (const mat sym full< double > &S1, const

refvector< double > &v, refvector< double > &r2)

Invert a symmetric full matrix and multiply by a vector.

• refvector< double > invert sym (const mat sym full< double > &S1, const

refvector< double > &v)

Invert a symmetric full matrix and multiply by a vector.

• mat sym full< double > invert sym (mat sym full< double > &S)

Invert a symmetric full matrix.

5.28.1 Detailed Description

5.29 Function Documentation

5.29.2.1 mat sym full<double> invert sym (mat sym full< double > & S)[inline]

A symmetric matrix can be transformed to a tridiagonal matrix via a householder

transformation (O(n2)). A following gaussian elimination of the tridiagonal matrix (O(n))

can be used to solve for the inverted matrix.

Here is the call graph for this function:

invert_sym linear_algebra::matrix::cols

linear_algebra::mat_full::copy

linear_algebra::mat_sym_full::householder

linear_algebra::matrix::rows

linear_algebra::mat_full::sym_upper_triangle

linear_algebra::mat_sym_full::utu

307
5.29.2.2 refvector<double> invert sym (const mat sym full< double > & S1 , const

refvector< double > & v)[inline]

Here is the call graph for this function:

invert_sym

linear_algebra::refvector::dim

invert_sym

linear_algebra::matrix::cols

linear_algebra::mat_sym_full::copy

linear_algebra::mat_sym_full::householder

linear_algebra::refvector::size

linear_algebra::refvector::multiply

linear_algebra::matrix::rows

5.29.2.3 refvector<double>& invert sym (const mat sym full< double > & S1 , const

refvector< double > & v, refvector< double > & r2 )[inline]

A symmetric matrix can be transformed to a tridiagonal matrix via a householder

transformation (O(n2)). A following gaussian elimination of the tridiagonal matrix (O(n)).

Can be used to solve for the inverted matrix.

Here is the call graph for this function:

invert_sym

linear_algebra::matrix::cols

linear_algebra::mat_sym_full::copy

linear_algebra::refvector::dim

linear_algebra::mat_sym_full::householder

linear_algebra::refvector::size

linear_algebra::refvector::multiply

linear_algebra::matrix::rows

5.30 include/BCR CPP LA/linear algebra.decl File Reference

Namespace Class Declarations.

#include <refcount.decl>

308
#include <matrix.decl>

#include <square.decl>

#include <symmetric.decl>

#include <asymmetric.decl>

#include <sparse vector.decl>

#include <mat sparse.decl>

#include <mat full.decl>

#include <mat sym full.decl>

#include <mat sym sparse.decl>

#include <mat asym sparse.decl>

#include <mat asym full.decl>

#include <class extensions.decl>

Namespaces

• namespace linear algebra

5.30.1 Detailed Description

5.31 include/BCR CPP LA/linear algebra.h File Reference

#include <linear algebra.decl>

#include <refcount.h>

#include <matrix.h>

#include <square.h>

#include <symmetric.h>

#include <asymmetric.h>

#include <sparse vector.h>

#include <mat sparse.h>

#include <mat sym full.h>

#include <mat full.h>

#include <mat sym sparse.h>

#include <mat asym sparse.h>

#include <mat asym full.h>

#include <class extensions.hh>

5.32 include/BCR CPP LA/mat asym full.decl File Reference

Provide declarations for antisymmetric full matrices.

309
#include <vector>

#include <linear algebra.decl>

#include <asymmetric.decl>

Namespaces

• namespace linear algebra

Classes

• class linear algebra::mat asym full< TN >

mat asym full uses packing for full antisymmetric matrices

5.32.1 Detailed Description

Todo

throw exceptions.

5.33 include/BCR CPP LA/mat asym full.h File Reference

Provide manipulations for antisymmetric full matrices.

#include <vector>

#include <linear algebra.decl>

#include <refcount.decl>

#include <sparse vector.decl>

#include <mat full.decl>

#include <mat sym full.decl>

#include <mat sym sparse.decl>

#include <mat asym full.decl>

#include <cmath>

#include <refcount.h>

#include <sparse vector.h>

#include <mat full.h>

#include <mat sym full.h>

#include <mat sym sparse.h>

Namespaces

• namespace linear algebra

310
5.33.1 Detailed Description

Todo

throw exceptions.

5.34 include/BCR CPP LA/mat asym sparse.decl File Reference

#include <vector>

#include <linear algebra.decl>

#include <asymmetric.decl>

Namespaces

• namespace linear algebra

Classes

• class linear algebra::mat asym sparse< TN >

mat asym sparse packs sparse column matrices into a comfortable format.

5.35 include/BCR CPP LA/mat asym sparse.h File Reference

#include <vector>

#include <linear algebra.decl>

#include <mat asym sparse.decl>

#include <refcount.decl>

#include <sparse vector.decl>

#include <mat full.decl>

#include <mat sparse.decl>

#include <mat sym full.decl>

#include <mat asym full.decl>

#include <refcount.h>

#include <sparse vector.h>

#include <mat full.h>

#include <mat sparse.h>

#include <mat sym full.h>

#include <mat asym full.h>

Namespaces

311
• namespace linear algebra

5.36 include/BCR CPP LA/mat full.decl File Reference

Provide declarations for full matrix and vector interactions.

#include <vector>

#include <iostream>

#include <stdexcept>

#include <linear algebra.decl>

#include <matrix.decl>

Namespaces

• namespace linear algebra

Classes

• class linear algebra::mat full< TN >

Class of full column matrices.

5.36.1 Detailed Description

5.37 include/BCR CPP LA/mat full.h File Reference

#include <vector>

#include <stdexcept>

#include <linear algebra.decl>

#include <matrix.decl>

#include <refcount.decl>

#include <sparse vector.decl>

#include <mat sym full.decl>

#include <mat asym full.decl>

#include <mat sym sparse.decl>

#include <refcount.h>

#include <matrix.h>

#include <sparse vector.h>

#include <mat sym full.h>

#include <mat asym full.h>

#include <mat sym sparse.h>

312
Namespaces

• namespace linear algebra

5.38 mat full.h File Reference

#include <vector>

#include <stdexcept>

#include <linear algebra.decl>

#include <matrix.decl>

#include <refcount.decl>

#include <sparse vector.decl>

#include <mat sym full.decl>

#include <mat asym full.decl>

#include <mat sym sparse.decl>

#include <refcount.h>

#include <matrix.h>

#include <sparse vector.h>

#include <mat sym full.h>

#include <mat asym full.h>

#include <mat sym sparse.h>

Namespaces

• namespace linear algebra

5.39 include/BCR CPP LA/mat sparse.decl File Reference

Provide declarations for sparse matrix and vector interactions.

#include <vector>

#include <stdexcept>

#include <linear algebra.decl>

#include <matrix.decl>

#include <refcount.decl>

Namespaces

• namespace linear algebra

313
Classes

• class linear algebra::mat sparse< TN >

Class of sparse column matrices.

5.39.1 Detailed Description

5.40 include/BCR CPP LA/mat sparse.h File Reference

Provide functionality for sparse matrix and vector interactions.

#include <vector>

#include <stdexcept>

#include <linear algebra.decl>

#include <matrix.decl>

#include <mat sparse.decl>

#include <refcount.decl>

#include <sparse vector.decl>

#include <mat full.decl>

#include <mat sym sparse.decl>

#include <refcount.h>

#include <sparse vector.h>

#include <mat full.h>

#include <mat sym sparse.h>

Namespaces

• namespace linear algebra

5.40.1 Detailed Description

5.41 include/BCR CPP LA/mat sym full.decl File Reference

Provide declarations for symmetric full matrices.

#include <vector>

#include <stdexcept>

#include <linear algebra.decl>

#include <symmetric.decl>

Namespaces

314
• namespace linear algebra

Classes

• class linear algebra::mat sym full< TN >

mat sym full uses packing for full symmetric matrices

5.41.1 Detailed Description

Todo

throw exceptions.

5.42 include/BCR CPP LA/mat sym full.h File Reference

Provide manipulatins for symmetric full matrices.

#include <vector>

#include <stdexcept>

#include <linear algebra.decl>

#include <refcount.decl>

#include <sparse vector.decl>

#include <mat full.decl>

#include <mat asym full.decl>

#include <mat sym full.decl>

#include <refcount.h>

#include <sparse vector.h>

#include <mat full.h>

#include <mat asym full.h>

Namespaces

• namespace linear algebra

5.42.1 Detailed Description

Todo

throw exceptions.

315
5.43 include/BCR CPP LA/mat sym sparse.decl File Reference

Provide declarations for antisymmetric sparse matrices.

#include <vector>

#include <linear algebra.decl>

#include <symmetric.decl>

#include ”mat sym sparse eigen.decl”

Namespaces

• namespace linear algebra

Classes

• class linear algebra::mat sym sparse< TN >

mat sym sparse packs sparse column matrices into a comfortable format.

5.43.1 Detailed Description

5.44 include/BCR CPP LA/mat sym sparse.h File Reference

Provide functionality for symmetric sparse matrices.

#include <vector>

#include <linear algebra.decl>

#include <mat sym sparse.decl>

#include <refcount.decl>

#include <sparse vector.decl>

#include <mat full.decl>

#include <mat sym full.decl>

#include <mat asym full.decl>

#include ”mat sym sparse eigen.h”

#include <refcount.h>

#include <sparse vector.h>

#include <mat full.h>

#include <mat sym full.h>

#include <mat asym full.h>

Namespaces

316
• namespace linear algebra

5.44.1 Detailed Description

5.45 include/BCR CPP LA/mat sym sparse eigen.decl File Reference

Eigenvalue related declarations.

Functions

• void gen mat (const sparse vector< TN > &a, const sparse vector< TN > &b, TN

correction)

Produce the necessary ij∗ + ji∗.

• mat sparse< TN > householder (vector< TN > &diagonal, vector< TN >

&subdiagonal)

This routine produces a the diagonal, sub/superdiagonal and transformation

matrix for the Householder transformation of a sparse symmetric matrix.

• mat sparse< TN > householder (refvector< TN > &diagonal, refvector< TN >

&subdiagonal)

This routine produces a the diagonal, sub/superdiagonal and transformation

matrix for the Householder transformation of a sparse ymmetric matrix.

5.45.1 Detailed Description

Todo

throw exceptions.

5.46 include/BCR CPP LA/mat sym sparse eigen.h File Reference

Eigenvalue related routines.

5.46.1 Detailed Description

Todo

throw exceptions.

317
5.47 include/BCR CPP LA/matrix.decl File Reference

Declares fundamentals of matrices.

#include <vector>

#include <iostream>

#include <linear algebra.decl>

Namespaces

• namespace linear algebra

Classes

• class linear algebra::matrix< TN >

matrix is a basic class which covers all kinds of matrices.

Functions

• template<class TN> TN linear algebra::operator ∗ (const std::vector< TN > &a,

const std::vector< TN > &b)

Scalar product of two full vectors.

5.47.1 Detailed Description

5.48 include/BCR CPP LA/matrix.h File Reference

Describes fundamentals of matrices.

#include <vector>

#include <iostream>

#include <linear algebra.decl>

#include <matrix.decl>

Namespaces

• namespace linear algebra

318
Functions

• template<class TN> TN linear algebra::operator ∗ (const vector< TN > &a, const

vector< TN > &b)

Scalar product of two full vectors.

5.48.1 Detailed Description

5.49 include/BCR CPP LA/polynomial.decl File Reference

Class declarations for polynomial.

#include <linear algebra.decl>

#include <sparse vector infty.decl>

Namespaces

• namespace linear algebra

Classes

• class linear algebra::polynomial< C >

A class for polynomials.

5.49.1 Detailed Description

5.50 include/BCR CPP LA/polynomial.h File Reference

Impltextitentations for a class of polynomials.

#include <sparse vector infty.h>

#include <polynomial.decl>

#include <linear algebra.h>

#include <class extensions.h>

Namespaces

• namespace linear algebra

319
5.50.1 Detailed Description

5.51 include/BCR CPP LA/refcount.decl File Reference

Contains the declarations to a reference counted vector class as well as general reference

counting.

#include <vector>

#include <stdexcept>

#include <iostream>

#include <sstream>

#include <linear algebra.decl>

Namespaces

• namespace linear algebra

Classes

• class linear algebra::refcount< Type >

Class refcount provides reference counted pointers. Most basic use.

• class linear algebra::refvector< TN >

Class refvector provides reference counted vectors.

Functions

• template<class TN> void std::operator>>(const vector< TN > &a, ostream &OUT)

5.51.1 Detailed Description

5.52 include/BCR CPP LA/refcount.h File Reference

Contains a reference counted vector class as well as general reference counting.

#include <vector>

#include <stdexcept>

#include <sstream>

#include <iostream>

320
#include <linear algebra.decl>

#include <refcount.decl>

#include <sparse vector.decl>

#include <class extensions.hh>

#include <cstdlib>

#include <sparse vector.h>

Namespaces

• namespace linear algebra

Functions

• template<class TN> void std::operator>> (const vector< TN > &a, ostream

&OUT)

• template<typename TN> void std::operator>> (const TN &a, ostream &OUT)

5.52.1 Detailed Description

5.53 include/BCR CPP LA/sparse vector.decl File Reference

Provide declarations for sparse vector interactions.

#include <vector>

#include <stdexcept>

#include <linear algebra.decl>

#include <refcount.decl> %

#include <matrix.decl>

Namespaces

• namespace linear algebra

Classes

• class linear algebra::sparse vector< TN >

A class for sparse vectors.

321
Functions

• template<class TN> TN linear algebra::operator ∗ (sparse vector< TN > a,

std::vector< TN > b)

Scalar product of a sparse vector with a full vector.

• template<class TN> TN linear algebra::operator ∗ (sparse vector< TN > a,

refvector< TN > b)

Scalar product of a sparse vector with a full refvector.

5.53.1 Detailed Description

5.54 include/BCR CPP LA/sparse vector.h File Reference

Provide functionality for sparse vectors.

#include <vector>

#include <stdexcept>

#include <linear algebra.decl>

#include <sparse ector.decl>

#include <refcount.decl>

#include <cstdlib>

#include <refcount.h>

Namespaces

• namespace linear algebra

Functions

• template<class TN> TN linear algebra::operator ∗ (sparse vector< TN > a, vector<

TN > b)

Scalar product of a sparse vector with a full vector.

• template<class TN> TN linear algebra::operator ∗ (sparse vector< TN > a,

refvector< TN > b)

Scalar product of a sparse vector with a full refvector.

322
5.54.1 Detailed Description

5.55 include/BCR CPP LA/sparse vector infty.decl File Reference

Provide declarations for sparse vector interactions of infinite dimensions.

#include <vector>

#include <stdexcept>

#include <linear algebra.decl>

#include <refcount.decl>

Namespaces

• namespace linear algebra

Classes

• class linear algebra::sparse vector infty< TN >

A class for sparse vectors.

5.55.1 Detailed Description

5.56 include/BCR CPP LA/sparse vector infty.h File Reference

Provide functionality for sparse vectors of infinite dimension.

#include <vector>

#include <stdexcept>

#include <sparse vector infty.decl>

#include <refcount.h>

#include <class extensions.h>

Namespaces

• namespace linear algebra

5.56.1 Detailed Description

5.57 include/BCR CPP LA/square.decl File Reference

Declares fundamentals of square matrices.

323
#include <linear algebra.decl>

#include <matrix.decl>

Namespaces

• namespace linear algebra

Classes

• class linear algebra::square< TN >

The square matrix class contains all n by n matrices.

5.57.1 Detailed Description

5.58 include/BCR CPP LA/square.h File Reference

Describes fundamentals of matrices.

#include <vector>

#include <iostream>

#include <square.decl>

#include <matrix.h>

Namespaces

• namespace linear algebra

5.58.1 Detailed Description

5.59 include/BCR CPP LA/symmetric.decl File Reference

Declares fundamentals of matrices.

#include <linear algebra.decl>

#include <square.decl>

Namespaces

• namespace linear algebra

324
Classes

• class linear algebra::symmetric< TN >

The symmetric class contains all symmetric matrices.

5.59.1 Detailed Description

5.60 include/BCR CPP LA/symmetric.h File Reference

Describes fundamentals of symmetric matrices.

#include <vector>

#include <iostream>

#include <square.h>

#include <symmetric.decl>

Namespaces

• namespace linear algebra

5.60.1 Detailed Description

5.61 include/BCR CPP LA/trace AB.hh File Reference

get the trace of matrix products.

#include <linear algebra.h>

Namespaces

• namespace linear algebra

Functions

• template<class TN> TN linear algebra::trace AB (const mat sym full< TN > &A,

const mat sym full< TN > &B)

• template<class TN> TN linear algebra::trace AB (const mat sym full< TN > &A,

const mat sym sparse< TN > &B)

• template<class T> T linear algebra::trace AB (const mat asym full< T > &A, const

mat asym full< T > &B)

325
5.61.1 Detailed Description

5.62 include/sorting functions.hh File Reference

#include <BCR CPP LA/refcount.h>

#include <sorting functions.hh>

Functions

• template<class T1> static refvector< unsigned long > & sort ascending (const

refvector< T1 > &E, unsigned long start, unsigned long end, refvector< unsigned

long > &index)

Do a qsort on E with immediate storage back into index. ensure index has the

right dimension. (perfectly parallelizable).

• template<class T1> static refvector< unsigned long > sort ascending (const

refvector< T1 > &E)

5.62.1 Function Documentation

5.62.1.1 template<class T1> static refvector<unsigned long> sort ascending (const

refvector< T1 > & E)[static]

Here is the call graph for this function:

sort_ascending

linear_algebra::refvector::size

sort_ascending

5.62.1.2 template<class T1> static refvector<unsigned long>& sort ascending (const

refvector< T1 > & E, unsigned long start, unsigned long end, refvector< unsigned long >

& index )[static]

5.63 include/stateful thread group.hh File Reference

#include <boost/thread/exceptions.hpp>

#include <ostream>

#include <boost/thread/detail/move.hpp>

#include <boost/thread/mutex.hpp>

326
#include <boost/thread/xtime.hpp>

#include <boost/thread/detail/thread heap alloc.hpp>

#include <boost/utility.hpp>

#include <boost/assert.hpp>

#include <list>

#include <algorithm>

#include <boost/ref.hpp>

#include <boost/cstdint.hpp>

#include <boost/bind.hpp>

#include <stdlib.h>

#include <memory>

#include <boost/utility/enable if.hpp>

#include <boost/type traits/remove reference.hpp>

#include <boost/thread.hpp>

#include <boost/config/abi prefix.hpp>

#include <boost/config/abi suffix.hpp>

Namespaces

• namespace boost

Classes

• class boost::stateful thread group

5.64 stateful thread group.hh File Reference

#include <boost/thread/exceptions.hpp>

#include <ostream>

#include <boost/thread/detail/move.hpp>

#include <boost/thread/mutex.hpp>

#include <boost/thread/xtime.hpp>

#include <boost/thread/detail/thread heap alloc.hpp>

#include <boost/utility.hpp>

#include <boost/assert.hpp>

#include <list>

#include <algorithm>

#include <boost/ref.hpp>

#include <boost/cstdint.hpp>

327
#include <boost/bind.hpp>

#include <stdlib.h>

#include <memory>

#include <boost/utility/enable if.hpp>

#include <boost/type traits/remove reference.hpp>

#include <boost/thread.hpp>

#include <boost/config/abi prefix.hpp>

#include <boost/config/abi suffix.hpp>

Namespaces

• namespace boost

Classes

• class boost::stateful thread group

5.65 isthreadableabstract.h File Reference

implementation of is threadable abstract

#include <boost/thread/shared mutex.hpp>

#include <stateful thread group.hh>

Classes

• class is threadable abstract

Abstract class implementing the Concepts::is threadable concept.

5.65.1 Detailed Description

5.66 Library data.cc File Reference

Implementations of the Library class for discrete spaces.

#include <BCR CPP LA/linear algebra.h>

#include <Library data.hh>

#include <boost/thread.hpp>

#include <boost/mem fn.hpp>

328
5.66.1 Detailed Description

5.67 Library data.hh File Reference

#include <BCR CPP LA/refcount.decl>

#include <typedefs.hh>

#include <string>

Classes

• class Library data

Abstract class for discrete optimizations.

5.68 noprune.h File Reference

Header of class noprune.

#include <concepts.hh>

#include <prunerabstract.h>

Classes

• class noprune< X >

Dummy pruning class. No actual pruning done.

5.68.1 Detailed Description

5.69 optimizeabstract.h File Reference

implement abstract class optimize abstract

Classes

• class optimize abstract

Abstract class that implements the Concepts::has optimize concept. Only good for

generic referncing of optimizations.

329
5.69.1 Detailed Description

5.70 prunerabstract.h File Reference

pruner abstract implementation

#include <BCR CPP LA/refcount.h>

#include <concepts.hh>

Classes

• class pruner abstract< X >

Abstract class implementing the Concepts::pruner concept.

5.70.1 Detailed Description

5.71 reordergeneralbase.hh File Reference

#include <prunerabstract.h>

#include <typedefs.hh>

#include <BCR CPP LA/refcount.h>

#include <sorting functions.hh>

Classes

• class reorder general base< X >

5.72 simpleprune.cc File Reference

Implementation file of simple prune.

#include <BCR CPP LA/refcount.h>

#include <simpleprune.h>

#include <sorting functions.hh>

5.72.1 Detailed Description

5.73 simpleprune.h File Reference

simple pruning class.

330
#include <typedefs.hh>

#include <boost/concept check.hpp>

#include <concepts.hh>

#include <BCR CPP LA/refcount.decl>

#include <prunerabstract.h>

Classes

• class simple prune< X >

Class to prune a Library.

5.73.1 Detailed Description

5.74 typedefs.hh File Reference

#include <cmath>

#include <limits>

Classes

• struct valerg

Pair of property value and energy.

• struct double index

Pair of configurational and conformational index, respectively.

Typedefs

• typedef unsigned long ulong

Functions

• bool operator== (const double index &a, const double index &b)

Comparison operator.

• bool operator== (const valerg &a, const valerg &b)

Comparison operator. item valerg operator- (const valerg &a, const valerg &b)

Subtract two valerg.

331
• valerg operator-= (valerg &a, const valerg &b)

Subtract two valerg.

• valerg operator+= (valerg &a, const valerg &b)

Subtract two valerg.

• valerg operator+ (const valerg &a, const valerg &b)

Add two valerg.

• valerg operator ∗ (const valerg &a, const double b)

Multiply.

• valerg & operator ∗= (valerg &r, const double b

) Multiply.

5.74.1 Typedef Documentation

5.74.1.1 typedef unsigned long ulong

5.74.2 Function Documentation

5.74.2.1 valerg operator ∗ (const valerg & a, const double b)[inline]

5.74.2.2 valerg& operator ∗= (valerg & r , const double b)[inline]

5.74.2.3 valerg operator+ (const valerg & a, const valerg & b)[inline]

5.74.2.4 valerg operator+= (valerg & a, const valerg & b)[inline]

5.74.2.5 valerg operator- (const valerg & a, const valerg & b)[inline]

7.74.2.6 valerg operator-= (valerg & a, const valerg & b[inline]

5.74.2.7 bool operator== (const valerg & a, const valerg & b)[inline]

5.74.2.8 bool operator== (const double index & a, const double index & b)[inline]

Define zmat and zmat entry.

#include <sstream>

#include <BCR CPP LA/linear algebra.h>

#include <zmat.hh>

332
5.74.3 Detailed Description

5.75 zmat.hh File Reference

Define zmat and zmat entry.

#include <sstream>

#include <BCR CPP LA/linear algebra.h>

Classes

• class zmat entry

Class of Z-matrix entries.

• class zmat connector

Class of connectors between z-matrices.

• class zmat

Class for Z-matrices. Just a wrapper class around a vector of entries.

5.75.1 Detailed Description

5.76 zmat opt.cc File Reference

Z-matrix optimization class implementation.

#include <typedefs.hh>

#include <zmat.hh>

#include <zmat opt.hh>

#include <iostream>

#include <fstream>

Functions

• valerg calc property (const zmat &A, const string &out, const string &id, zmat

&returnA)

Setup the external computations and execute them.

• static valerg calc energy (const zmat &A, const string &out, const string &id, zmat

&returnA)

Setup the external computations for the energy and execute them.

333
5.76.1 Detailed Description

5.76.2 Function Documentation

5.76.2.1 static valerg calc energy (const zmat & A, const string & out, const string & id,

zmat & returnA)[static]

requires

./energy_script

5.76.2.2 valerg calc property (const zmat & A, const string & out, const string & id, zmat

& eturnA)

5.77 zmat opt.hh File Reference

Z-matrix optimization class definition.

#include <typedefs.hh>

#include <zmat.hh>

#include <Library data.hh>

#include <noprune.h>

#include <isthreadableabstract.h>

Classes

• class zmat opt

5.77.1 Detailed Description

6. Discrete Optimization in Chemical Space Example

Documentation

6.1 carbazoles.inp

1 ChemGroup(

2 (

3 Z(

334
4 (c, -3, 0.7, -2, 0, -1, 0)

5 (c, 0, 1.4, -3, 126, -2, 0)

6 (c, 1, 1.4, 0, 108, -3, 180)

7 (c, 2, 1.4, 1, 108, 0, 0)

8 )

9 ReturnConnector()

10 Connector(

11 (

12 (0,1,2)

13 (0.7,0,0)

14 (0,120,0)

15 (0,0,180)

16

17 (0,0,1)

18 (0,0,1)

19 (0,0,0)

20 ()

21 )

22 (

23 (-3,-2,-1)

24 (0,0,0)

25 (0,0,0)

26 (0,0,0)

27

28 (0,0,0)

29 (0,0,0)

30 (0,0,0)

31 ()

32 )

33 (

34 (-3,-2,-1)

35 (0,0,0)

36 (0,0,0)

37 (0,0,0)

38

39 (0,0,0)

40 (0,0,0)

41 (0,0,0)

42 ()

43 )

335
44 (

45 (-3,-2,-1)

46 (0,0,0)

47 (0,0,0)

48 (0,0,0)

49

50 (0,0,0)

51 (0,0,0)

52 (0,0,0)

53 ()

54 )

55 (

56 (-3,-2,-1)

57 (0,0,0)

58 (0,0,0)

59 (0,0,0)

60

61 (0,0,0)

62 (0,0,0)

63 (0,0,0)

64 ()

65 )

66 (

67 (3,2,1)

68 (0.7,0,0)

69 (0,120,0)

70 (0,0,180)

71

72 (0,0,1)

73 (0,0,1)

74 (0,0,0)

75 ()

76 )

77 (

78 (-3,-2,-1)

79 (0,0,0)

80 (0,0,0)

81 (0,0,0)

82

83 (0,0,0)

336
84 (0,0,0)

85 (0,0,0)

86 ()

87 )

88 (

89 (-3,-2,-1)

90 (0,0,0)

91 (0,0,0)

92 (0,0,0)

93

94 (0,0,0)

95 (0,0,0)

96 (0,0,0)

97 ()

98 )

99 (

100 (-3,-2,-1)

101 (0,0,0)

102 (0,0,0)

103 (0,0,0)

104

105 (0,0,0)

106 (0,0,0)

107 (0,0,0)

108 ()

109 )

110 (

111 (-3,-2,-1)

112 (0,0,0)

113 (0,0,0)

114 (0,0,0)

115

116 (0,0,0)

117 (0,0,0)

118 (0,0,0)

119 ()

120 )

121 (

122 (0,1,2)

123 (1.4,0,0)

337
124 (0, 108, 0)

125 (0, 0, 0)

126

127 (0,0,1)

128 (0,0,1)

129 (0,0,0)

130 ()

131 )

132 )

133 allowed_groups(

134 (7,2,3,4,5,6,8,9,10,11,12)

135 (7,2,3,4,5,6,8,9,10,11,12)

136 (7,2,3,4,5,6,8,9,10,11,12)

137 (7,2,3,4,5,6,8,9,10,11,12)

138 (1)

139 (7,2,3,4,5,6,8,9,10,11,12)

140 (7,2,3,4,5,6,8,9,10,11,12)

141 (7,2,3,4,5,6,8,9,10,11,12)

142 (7,2,3,4,5,6,8,9,10,11,12)

143 (1)

144 (13,14,15)

145 )

146 )

147 (

148 Z()

149 ReturnConnector(

150 (

151 (-6,-5,-4)

152 (0,0, 0)

153 (0,0, 0)

154 (0,0, 0)

155

156 (0,0,0)

157 (0,0,0)

158 (0,0,0)

159 ()

160 )

161 )

162 Connector()

163 allowed_groups()

338
164 )

165 (

166 Z(

167 (C, -3, 0.7, -2, 0, -1, 0)

168 (C, 0, 1.4, -3, 120, -2, 180)

169 (N, 0, 2.7, -3, 120, -2, 180)

170 )

171 ReturnConnector(

172 (

173 (0,1,-3)

174 (0.7, 0, 0)

175 (0, 120, 180)

176 (0,0, 180)

177

178 (0,0,1)

179 (0,0,1)

180 (0,0,0)

181 ()

182 )

183 )

184 Connector()

185 allowed_groups()

186 )

187 (

188 Z(

189 (C, -3, 0.7, -2, 0, -1, 0)

190 (C, 0, 1.4, -3, 120, -2, 180)

191 (O, 1, 1.4, 0, 120, -3, -91)

192 (H, 1, 1.1, 2, 120, 0, 180)

193 )

194 ReturnConnector(

195 (

196 (0,1,-3)

197 (0.7, 0, 0)

198 (0, 120, 180)

199 (0,0, 180)

200

201 (0,0,1)

202 (0,0,0)

203 (0,0,0)

339
204 ()

205 )

206 )

207 Connector()

208 allowed_groups()

209 )

210 (

211 Z(

212 (C, -3, 0.7, -2, 0, -1, 0)

213 (O, 0, 1.4, -3, 120, -2, 180)

214 (C, 1, 1.4, 0, 120, -3, -91(180))

215 (H, 2, 1.1, 1, 109.47, 0, 180)

216 (H, 2, 1.1, 1, 109.47, 3, 120)

217 (H, 2, 1.1, 1, 109.47, 4, 120)

218 )

219 ReturnConnector(

220 (

221 (0,1,-3)

222 (0.7, 0, 0)

223 (0, 120, 180)

224 (0,0, 180)

225

226 (0,0,1)

227 (0,0,0)

228 (0,0,0)

229 ()

230 )

231 )

232 Connector()

233 allowed_groups()

234 )

235 (

236 Z(

237 (C, -3, 0.7, -2, 0, -1, 0)

238 (C, 0, 1.4, -3, 120, -2, 180)

239 (O, 1, 1.3, 0, 120, -3, -91(180))

240 (C, 1, 1.5, 2, 120, 0, 180)

241 (H, 3, 1.1, 1, 109.47, 2, 180)

242 (H, 3, 1.1, 1, 109.47, 4, 120)

243 (H, 3, 1.1, 1, 109.47, 5, 120)

340
244 )

245 ReturnConnector(

246 (

247 (0,1,-3)

248 (0.7, 0, 0)

249 (0, 120, 180)

250 (0,0, 180)

251

252 (0,0,1)

253 (0,0,0)

254 (0,0,0)

255 ()

256 )

257 )

258 Connector()

259 allowed_groups()

260 )

261 (

262 Z(

263 (C, -3, 0.7, -2, 0, -1, 0)

264 (N, 0, 1.4, -3, 120, -2, 180)

265 (C, 1, 1.4, 0, 120, -3, -91(180))

266 (O, 2, 1.3, 1, 120, 0, 0(180))

267 (C, 2, 1.5, 1, 120, 3, 180)

268 (H, 4, 1.1, 2, 109.47, 1, 180)

269 (H, 4, 1.1, 2, 109.47, 5, 120)

270 (H, 4, 1.1, 2, 109.47, 6, 120)

271

272 (H, 1, 1.1, 2, 120, 0, 180)

273 )

274 ReturnConnector(

275 (

276 (0,1,-3)

277 (0.7, 0, 0)

278 (0, 120, 180)

279 (0,0, 180)

280

281 (0,0,1)

282 (0,0,0)

283 (0,0,0)

341
284 ()

285 )

286 )

287 Connector()

288 allowed_groups()

289 )

290 (

291 Z(

292 (C, -3, 0.7, -2, 0, -1, 0)

293 (H, 0, 1.1, -3, 120, -2, 180)

294 )

295 ReturnConnector(

296 (

297 (0,1,-3)

298 (0.7, 0, 0)

299 (0, 120, 180)

300 (0,0, 180)

301

302 (0,0,1)

303 (0,0,0)

304 (0,0,0)

305 ()

306 )

307 )

308 Connector()

309 allowed_groups()

310 )

311 (

312 Z(

313 (C, -3, 0.7, -2, 0, -1, 0)

314 (N, 0, 1.4, -3, 120, -2, 180)

315 (O, 1, 1.2, 0, 120, -3, -80)

316 (O, 1, 1.2, 2, 120, 0, 180)

317 )

318 ReturnConnector(

319 (

320 (0,1,-3)

321 (0.7, 0, 0)

322 (0, 120, 180)

323 (0,0, 180)

342
324

325 (0,0,1)

326 (0,0,0)

327 (0,0,0)

328 ()

329 )

330 )

331 Connector()

332 allowed_groups()

333 )

334 (

335 Z(

336 (C, -3, 0.7, -2, 0, -1, 0)

337 (O, 0, 1.3, -3, 120, -2, 180)

338 (c, 1, 1.4, 0, 120, -3, 0(180))

339 (o, 2, 1.3, 1, 120, 0, 0(180))

340 (c, 2, 1.5, 1, 120, 3, 180)

341 (H, 4, 1.1, 2, 109.47, 1, 180)

342 (h, 4, 1.1, 2, 109.47, 5, 120)

343 (h, 4, 1.1, 2, 109.47, 6, 120)

344 )

345 ReturnConnector(

346 (

347 (0,1,-3)

348 (0.7, 0, 0)

349 (0, 120, 180)

350 (0,0, 180)

351

352 (0,0,1)

353 (0,0,0)

354 (0,0,0)

355 ()

356 )

357 )

358 Connector()

359 allowed_groups()

360 )

361 (

362 Z(

363 (C, -3, 0.7, -2, 0, -1, 0)

343
364 (O, 0, 1.4, -3, 120, -2, 180)

365 (H, 1, 1.1, 0, 120, -3, -91(180))

366 )

367 ReturnConnector(

368 (

369 (0,1,-3)

370 (0.7, 0, 0)

371 (0, 120, 180)

372 (0,0, 180)

373

374 (0,0,1)

375 (0,0,0)

376 (0,0,0)

377 ()

378 )

379 )

380 Connector()

381 allowed_groups()

382 )

383 (

384 Z(

385 (C, -3, 0.7, -2, 0 , -1, 0)

386 (N, 0, 1.4, -3, 120, -2, 180)

387 (H, 1, 1.1, 0, 120 , -3, 0)

388 (H, 1, 1.1, 2, 109.47, 0, 120(-240))

389 )

390 ReturnConnector(

391 (

392 (0,1,-3)

393 (0.7, 0, 0)

394 (0, 120, 180)

395 (0,0, 180)

396

397 (0,0,1)

398 (0,0,0)

399 (0,0,0)

400 ()

401 )

402 )

403 Connector()

344
404 allowed_groups()

405 )

406 (

407 Z(

408 (C, -3, 0.7, -2, 0, -1, 0)

409 (N, 0, 1.4, -3, 120, -2, 180)

410 (C, 1, 1.4, 0, 120, -3, 60)

411 (C, 1, 1.4, 2, 120, 0, 120(-240))

412 (H, 2, 1.1, 1, 109.47, 3, 180)

413 (H, 2, 1.1, 1, 109.47, 4, 120)

414 (H, 2, 1.1, 1, 109.47, 5, 120)

415 (H, 3, 1.1, 1, 109.47, 2, 80)

416 (H, 3, 1.1, 1, 109.47, 7, 120)

417 (H, 3, 1.1, 1, 109.47, 8, 120)

418 )

419 ReturnConnector(

420 (

421 (0,1,-3)

422 (0.7, 0, 0)

423 (0, 120, 180)

424 (0,0, 180)

425

426 (0,0,1)

427 (0,0,0)

428 (0,0,0)

429 ()

430 )

431 )

432 Connector()

433 allowed_groups()

434 )

435 (

436 Z(

437 (o, -3, 0, -2,0,-1,0)

438 )

439 ReturnConnector()

440 Connector()

441 allowed_groups()

442 )

443 (

345
444 Z(

445 (s, -3, 0, -2,0,-1,0)

446 )

447 ReturnConnector()

448 Connector()

449 allowed_groups()

450 )

451 (

452 Z(

453 (c, -3, 0, -2, 0,-1,0)

454 (o, 0, 1.3, -3, 126, -2, 180)

455 )

456 ReturnConnector()

457 Connector()

458 allowed_groups()

459 )

460 )

6.2 ChemGroup

Default construction. ChemIdent(”H”)

6.3 vanilla-rings.inp

1 ChemGroup(

2 (

3 Z()

4 ReturnConnector()

5 Connector(

6 (

7 (-3,-2,-1)

8 (0,0,0)

9 (0,0,0)

10 (0,0,0)

11

12 (0,0,0)

13 (0,0,0)

14 (0,0,0)

15 ()

16 )

346
17 (

18 (-3,-2,-1)

19 (0,0,0)

20 (0,0,0)

21 (0,0,0)

22

23 (0,0,0)

24 (0,0,0)

25 (0,0,0)

26 ()

27 )

28 (

29 (-3,-2,-1)

30 (0,0,0)

31 (0,0,0)

32 (0,0,0)

33

34 (0,0,0)

35 (0,0,0)

36 (0,0,0)

37 ()

38 )

39 (

40 (-3,-2,-1)

41 (0,0,0)

42 (0,0,0)

43 (0,0,0)

44

45 (0,0,0)

46 (0,0,0)

47 (0,0,0)

48 ()

49 )

50 (

51 (-3,-2,-1)

52 (0,0,0)

53 (0,0,0)

54 (0,0,0)

55

56 (0,0,0)

347
57 (0,0,0)

58 (0,0,0)

59 ()

60 )

61 (

62 (-3,-2,-1)

63 (0,0,0)

64 (0,0,0)

65 (0,0,0)

66

67 (0,0,0)

68 (0,0,0)

69 (0,0,0)

70 ()

71 )

72 (

73 (-3,-2,-1)

74 (0,0,0)

75 (0,0,0)

76 (0,0,0)

77

78 (0,0,0)

79 (0,0,0)

80 (0,0,0)

81 ()

82 )

83 )

85 (36,37,38,39,40,41,42,43,44,45,46)

86 (47,1,2, 7,12)

87 (47,1,3, 8,13)

88 (47,1,4, 9,14)

89 (47,1,5,10,15)

90 (47,1,6,11,16)

91 (37,36,38,39,40,41,42,43,44,45,46)

92 )

93 )

94 (

95 Z(

96 (C, -3, 0.7, -2, 0, -1, 0 )

97 (C, 0, 1.3, -3, 170.0, -2, 180 )

348
98 )

99 ReturnConnector(

100 (

101 (1,0,-3)

102 (0.7, 0, 0)

103 ( 0, 179.0, 0)

104 ( 0, 0, 180)

105

106 (0,0,1)

107 (0,0,1)

108 (0,0,0)

109 ()

110 )

111 )

112 Connector()

113 allowed_groups()

114 )

115

116 (

117 Z(

118 )

119 ReturnConnector(

120 (

121 (-3,-2,-1)

122 (2.2, 0, 0)

123 ( 0, 30.0, 0)

124 ( 0, 0 , 0)

125

126 (0,0,0)

127 (0,0,0)

128 (0,0,0)

129 ()

130 )

131 )

132 Connector(

133 (

134 (-3,-2,-1)

135 (0, 0, 0)

136 (0, 0, 0)

137 (0, 0, 0)

349
138

139 (0, 0, 1)

140 (0, 0, 1)

141 (0, 0, 1)

142 ()

143 )

144 (

145 (-3,-2,-1)

146 (0.9, 0, 0)

147 (0, 10, 180)

148 (0, 0, 0)

149

150 (0, 0, 1)

151 (0, 0, 1)

152 (0, 0, 1)

153 ()

154 )

155 )

156 allowed_groups(

157 (48,49,50,51,52,53,54,55,56,57,58)

158 (48,49,50,51,52,53,54,55,56,57,58)

159 )

160 )

161 (

162 Z(

163 )

164 ReturnConnector(

165 (

166 (-3,-2,-1)

167 (2.2, 0, 0)

168 ( 0, 30.0, 0)

169 ( 0, 0 , 0)

170

171 (0,0,0)

172 (0,0,0)

173 (0,0,0)

174 ()

175 )

176 )

177 Connector(

350
178 (

179 (-3,-2,-1)

180 (0, 0, 0)

181 (0, 0, 0)

182 (0, 0, 0)

183

184 (0, 0, 1)

185 (0, 0, 1)

186 (0, 0, 1)

187 ()

188 )

189 (

190 (-3,-2,-1)

191 (0.9, 0, 0)

192 (0, 10, 180)

193 (0, 0, 0)

194

195 (0, 0, 1)

196 (0, 0, 1)

197 (0, 0, 1)

198 ()

199 )

200 )

201 allowed_groups(

202 (48,49,50,51,52,53,54,55,56,57,58)

203 (48,49,50,51,52,53,54,55,56,57,58)

204 )

205 )

206 (

207 Z(

208 )

209 ReturnConnector(

210 (

211 (-3,-2,-1)

212 (2.2, 0, 0)

213 ( 0, 30.0, 0)

214 ( 0, 0 , 0)

215

216 (0,0,0)

217 (0,0,0)

351
218 (0,0,0)

219 ()

220 )

221 )

222 Connector(

223 (

224 (-3,-2,-1)

225 (0, 0, 0)

226 (0, 0, 0)

227 (0, 0, 0)

228

229 (0, 0, 1)

230 (0, 0, 1)

231 (0, 0, 1)

232 ()

233 )

234 (

235 (-3,-2,-1)

236 (0.9, 0, 0)

237 (0, 10, 180)

238 (0, 0, 0)

239

240 (0, 0, 1)

241 (0, 0, 1)

242 (0, 0, 1)

243 ()

244 )

245 )

246 allowed_groups(

247 (48,49,50,51,52,53,54,55,56,57,58)

248 (48,49,50,51,52,53,54,55,56,57,58)

249 )

250 )

251 (

252 Z(

253 )

254 ReturnConnector(

255 (

256 (-3,-2,-1)

257 (2.2, 0, 0)

352
258 ( 0, 30.0, 0)

259 ( 0, 0 , 0)

260

261 (0,0,0)

262 (0,0,0)

263 (0,0,0)

264 ()

265 )

266 )

267 Connector(

268 (

269 (-3,-2,-1)

270 (0, 0, 0)

271 (0, 0, 0)

272 (0, 0, 0)

273

274 (0, 0, 1)

275 (0, 0, 1)

276 (0, 0, 1)

277 ()

278 )

279 (

280 (-3,-2,-1)

281 (0.9, 0, 0)

282 (0, 10, 180)

283 (0, 0, 0)

284

285 (0, 0, 1)

286 (0, 0, 1)

287 (0, 0, 1)

288 ()

289 )

290 )

291 allowed_groups(

292 (48,49,50,51,52,53,54,55,56,57,58)

293 (48,49,50,51,52,53,54,55,56,57,58)

294 )

295 )

296 (

297 Z(

353
298 )

299 ReturnConnector(

300 (

301 (-3,-2,-1)

302 (2.2, 0, 0)

303 ( 0, 30.0, 0)

304 ( 0, 0 , 0)

305

306 (0,0,0)

307 (0,0,0)

308 (0,0,0)

309 ()

310 )

311 )

312 Connector(

313 (

314 (-3,-2,-1)

315 (0, 0, 0)

316 (0, 0, 0)

317 (0, 0, 0)

318

319 (0, 0, 1)

320 (0, 0, 1)

321 (0, 0, 1)

322 ()

323 )

324 (

325 (-3,-2,-1)

326 (0.9, 0, 0)

327 (0, 10, 180)

328 (0, 0, 0)

329

330 (0, 0, 1)

331 (0, 0, 1)

332 (0, 0, 1)

333 ()

334 )

335 )

336 allowed_groups(

337 (48,49,50,51,52,53,54,55,56,57,58)

354
338 (48,49,50,51,52,53,54,55,56,57,58)

339 )

340 )

341

342 (

343 Z(

344 (C, -3, 0.7, -2, 0, -1, 0 )

345 (C, -3, 3.7, 0,1.0, -1, 180 )

346 )

347 ReturnConnector(

348 (

349 (1,0,-3)

350 (0.7, 0, 0)

351 ( 0, 178.0, 0)

352 ( 0, 0, 180)

353

354 (0,0,1)

355 (0,0,1)

356 (0,0,0)

357 ()

358 )

359 )

360 Connector(

361 (

362 (0,1,-3)

363 (0.7,0,0)

364 (0,60,0)

365 (0,0,180)

366

367 (0,0,1)

368 (0,0,1)

369 (0,0,0)

370 ()

371 )

372 (

373 (0,1,-3)

374 (0.7,0,0)

375 (0,60,0)

376 (0,0,0)

377

355
378 (0,0,1)

379 (0,0,1)

380 (0,0,0)

381 ()

382 )

383 (

384 (1,0,-3)

385 (0.7,0,-180)

386 (0,60,0)

387 (0,0,180)

388

389 (0,0,1)

390 (0,0,1)

391 (0,0,0)

392 ()

393 )

394 (

395 (1,0,-3)

396 (0.7,0,-180)

397 (0,60,)

398 (0,0,0)

399

400 (0,0,1)

401 (0,0,1)

402 (0,0,0)

403 ()

404 )

405 )

406 allowed_groups(

407 (17,18,19,20,21,22,23,24,25,26,27)

408 (17,18,19,20,21,22,23,24,25,26,27)

409 (17,18,19,20,21,22,23,24,25,26,27)

410 (17,18,19,20,21,22,23,24,25,26,27)

411 )

412 )

413 (

414 Z(

415 (C, -3, 0.7, -2, 0, -1, 0 )

416 (C, -3, 3.7, 0,1.0, -1, 180 )

417 )

356
418 ReturnConnector(

419 (

420 (1,0,-3)

421 (0.7, 0, 0)

422 ( 0, 178.0, 0)

423 ( 0, 0, 180)

424

425 (0,0,1)

426 (0,0,1)

427 (0,0,0)

428 ()

429 )

430 )

431 Connector(

432 (

433 (0,1,-3)

434 (0.7,0,0)

435 (0,60,0)

436 (0,0,180)

437

438 (0,0,1)

439 (0,0,1)

440 (0,0,0)

441 ()

442 )

443 (

444 (0,1,-3)

445 (0.7,0,0)

446 (0,60,0)

447 (0,0,0)

448

449 (0,0,1)

450 (0,0,1)

451 (0,0,0)

452 ()

453 )

454 (

455 (1,0,-3)

456 (0.7,0,-180)

457 (0,60,0)

357
458 (0,0,180)

459

460 (0,0,1)

461 (0,0,1)

462 (0,0,0)

463 ()

464 )

465 (

466 (1,0,-3)

467 (0.7,0,-180)

468 (0,60,)

469 (0,0,0)

470

471 (0,0,1)

472 (0,0,1)

473 (0,0,0)

474 ()

475 )

476 )

477 allowed_groups(

478 (17,18,19,20,21,22,23,24,25,26,27)

479 (17,18,19,20,21,22,23,24,25,26,27)

480 (17,18,19,20,21,22,23,24,25,26,27)

481 (17,18,19,20,21,22,23,24,25,26,27)

482 )

483 )

484 (

485 Z(

486 (C, -3, 0.7, -2, 0, -1, 0 )

487 (C, -3, 3.7, 0,1.0, -1, 180 )

488 )

489 ReturnConnector(

490 (

491 (1,0,-3)

492 (0.7, 0, 0)

493 ( 0, 178.0, 0)

494 ( 0, 0, 180)

495

496 (0,0,1)

497 (0,0,1)

358
498 (0,0,0)

499 ()

500 )

501 )

502 Connector(

503 (

504 (0,1,-3)

505 (0.7,0,0)

506 (0,60,0)

507 (0,0,180)

508

509 (0,0,1)

510 (0,0,1)

511 (0,0,0)

512 ()

513 )

514 (

515 (0,1,-3)

516 (0.7,0,0)

517 (0,60,0)

518 (0,0,0)

519

520 (0,0,1)

521 (0,0,1)

522 (0,0,0)

523 ()

524 )

525 (

526 (1,0,-3)

527 (0.7,0,-180)

528 (0,60,0)

529 (0,0,180)

530

531 (0,0,1)

532 (0,0,1)

533 (0,0,0)

534 ()

535 )

536 (

537 (1,0,-3)

359
538 (0.7,0,-180)

539 (0,60,)

540 (0,0,0)

541

542 (0,0,1)

543 (0,0,1)

544 (0,0,0)

545 ()

546 )

547 )

548 allowed_groups(

549 (17,18,19,20,21,22,23,24,25,26,27)

550 (17,18,19,20,21,22,23,24,25,26,27)

551 (17,18,19,20,21,22,23,24,25,26,27)

552 (17,18,19,20,21,22,23,24,25,26,27)

553 )

554 )

555 (

556 Z(

557 (C, -3, 0.7, -2, 0, -1, 0 )

558 (C, -3, 3.7, 0,1.0, -1, 180 )

559 )

560 ReturnConnector(

561 (

562 (1,0,-3)

563 (0.7, 0, 0)

564 ( 0, 178.0, 0)

565 ( 0, 0, 180)

566

567 (0,0,1)

568 (0,0,1)

569 (0,0,0)

570 ()

571 )

572 )

573 Connector(

574 (

575 (0,1,-3)

576 (0.7,0,0)

577 (0,60,0)

360
578 (0,0,180)

579

580 (0,0,1)

581 (0,0,1)

582 (0,0,0)

583 ()

584 )

585 (

586 (0,1,-3)

587 (0.7,0,0)

588 (0,60,0)

589 (0,0,0)

590

591 (0,0,1)

592 (0,0,1)

593 (0,0,0)

594 ()

595 )

596 (

597 (1,0,-3)

598 (0.7,0,-180)

599 (0,60,0)

600 (0,0,180)

601

602 (0,0,1)

603 (0,0,1)

604 (0,0,0)

605 ()

606 )

607 (

608 (1,0,-3)

609 (0.7,0,-180)

610 (0,60,)

611 (0,0,0)

612

613 (0,0,1)

614 (0,0,1)

615 (0,0,0)

616 ()

617 )

361
618 )

619 allowed_groups(

620 (17,18,19,20,21,22,23,24,25,26,27)

621 (17,18,19,20,21,22,23,24,25,26,27)

622 (17,18,19,20,21,22,23,24,25,26,27)

623 (17,18,19,20,21,22,23,24,25,26,27)

624 )

625 )

626 (

627 Z(

628 (C, -3, 0.7, -2, 0, -1, 0 )

629 (C, -3, 3.7, 0,1.0, -1, 180 )

630 )

631 ReturnConnector(

632 (

633 (1,0,-3)

634 (0.7, 0, 0)

635 ( 0, 178.0, 0)

636 ( 0, 0, 180)

637

638 (0,0,1)

639 (0,0,1)

640 (0,0,0)

641 ()

642 )

643 )

644 Connector(

645 (

646 (0,1,-3)

647 (0.7,0,0)

648 (0,60,0)

649 (0,0,180)

650

651 (0,0,1)

652 (0,0,1)

653 (0,0,0)

654 ()

655 )

656 (

657 (0,1,-3)

362
658 (0.7,0,0)

659 (0,60,0)

660 (0,0,0)

661

662 (0,0,1)

663 (0,0,1)

664 (0,0,0)

665 ()

666 )

667 (

668 (1,0,-3)

669 (0.7,0,-180)

670 (0,60,0)

671 (0,0,180)

672

673 (0,0,1)

674 (0,0,1)

675 (0,0,0)

676 ()

677 )

678 (

679 (1,0,-3)

680 (0.7,0,-180)

681 (0,60,)

682 (0,0,0)

683

684 (0,0,1)

685 (0,0,1)

686 (0,0,0)

687 ()

688 )

689 )

690 allowed_groups(

691 (17,18,19,20,21,22,23,24,25,26,27)

692 (17,18,19,20,21,22,23,24,25,26,27)

693 (17,18,19,20,21,22,23,24,25,26,27)

694 (17,18,19,20,21,22,23,24,25,26,27)

695 )

696 )

697

363
698 (

699 Z(

700 (C, -3, 0.7, -2, 0, -1, 0)

701 (C, 0, 2.5, -3,162, -2, 180)

702 )

703 ReturnConnector(

704 (

705 (1,0,-3)

706 (0.7, 0, 0)

707 ( 0, 150, 0)

708 ( 0, 0, 0)

709

710 (0,0,1)

711 (0,0,1)

712 (0,0,0)

713 ()

714 )

715 )

716 Connector(

717 (

718 (1,0,-3)

719 (0.7, 0, 0)

720 (0, 36, 0)

721 (0,0,0)

722

723 (0,0,1)

724 (0,0,1)

725 (0,0,0)

726 ()

727 )

728 (

729 (0,1,-3)

730 (0.7, 0, 0)

731 (0, 72, 0)

732 (0,0,180)

733

734 (0,0,1)

735 (0,0,1)

736 (0,0,0)

737 ()

364
738 )

739 (

740 (1,0,-3)

741 (0.7, 0, 0)

742 (0, 72, 0)

743 (0,0,180)

744

745 (0,0,1)

746 (0,0,1)

747 (0,0,0)

748 ()

749 )

750 )

751 allowed_groups(

752 (28,29,30,31,32,33,34,35)

753 (17,18,19,20,21,22,23,24,25,26,27)

754 (17,18,19,20,21,22,23,24,25,26,27)

755 )

756 )

757 (

758 Z(

759 (C, -3, 0.7, -2, 0, -1, 0)

760 (C, 0, 2.5, -3,162, -2, 180)

761 )

762 ReturnConnector(

763 (

764 (1,0,-3)

765 (0.7, 0, 0)

766 ( 0, 150, 0)

767 ( 0, 0, 0)

768

769 (0,0,1)

770 (0,0,1)

771 (0,0,0)

772 ()

773 )

774 )

775 Connector(

776 (

777 (1,0,-3)

365
778 (0.7, 0, 0)

779 (0, 36, 0)

780 (0,0,0)

781

782 (0,0,1)

783 (0,0,1)

784 (0,0,0)

785 ()

786 )

787 (

788 (0,1,-3)

789 (0.7, 0, 0)

790 (0, 72, 0)

791 (0,0,180)

792

793 (0,0,1)

794 (0,0,1)

795 (0,0,0)

796 ()

797 )

798 (

799 (1,0,-3)

800 (0.7, 0, 0)

801 (0, 72, 0)

802 (0,0,180)

803

804 (0,0,1)

805 (0,0,1)

806 (0,0,0)

807 ()

808 )

809 )

810 allowed_groups(

811 (28,29,30,31,32,33,34,35)

812 (17,18,19,20,21,22,23,24,25,26,27)

813 (17,18,19,20,21,22,23,24,25,26,27)

814 )

815 )

816 (

817 Z(

366
818 (C, -3, 0.7, -2, 0, -1, 0)

819 (C, 0, 2.5, -3,162, -2, 180)

820 )

821 ReturnConnector(

822 (

823 (1,0,-3)

824 (0.7, 0, 0)

825 ( 0, 150, 0)

826 ( 0, 0, 0)

827

828 (0,0,1)

829 (0,0,1)

830 (0,0,0)

831 ()

832 )

833 )

834 Connector(

835 (

836 (1,0,-3)

837 (0.7, 0, 0)

838 (0, 36, 0)

839 (0,0,0)

840

841 (0,0,1)

842 (0,0,1)

843 (0,0,0)

844 ()

845 )

846 (

847 (0,1,-3)

848 (0.7, 0, 0)

849 (0, 72, 0)

850 (0,0,180)

851

852 (0,0,1)

853 (0,0,1)

854 (0,0,0)

855 ()

856 )

857 (

367
858 (1,0,-3)

859 (0.7, 0, 0)

860 (0, 72, 0)

861 (0,0,180)

862

863 (0,0,1)

864 (0,0,1)

865 (0,0,0)

866 ()

867 )

868 )

869 allowed_groups(

870 (28,29,30,31,32,33,34,35)

871 (17,18,19,20,21,22,23,24,25,26,27)

872 (17,18,19,20,21,22,23,24,25,26,27)

873 )

874 )

875 (

876 Z(

877 (C, -3, 0.7, -2, 0, -1, 0)

878 (C, 0, 2.5, -3,162, -2, 180)

879 )

880 ReturnConnector(

881 (

882 (1,0,-3)

883 (0.7, 0, 0)

884 ( 0, 150, 0)

885 ( 0, 0, 0)

886

887 (0,0,1)

888 (0,0,1)

889 (0,0,0)

890 ()

891 )

892 )

893 Connector(

894 (

895 (1,0,-3)

896 (0.7, 0, 0)

897 (0, 36, 0)

368
898 (0,0,0)

899

900 (0,0,1)

901 (0,0,1)

902 (0,0,0)

903 ()

904 )

905 (

906 (0,1,-3)

907 (0.7, 0, 0)

908 (0, 72, 0)

909 (0,0,180)

910

911 (0,0,1)

912 (0,0,1)

913 (0,0,0)

914 ()

915 )

916 (

917 (1,0,-3)

918 (0.7, 0, 0)

919 (0, 72, 0)

920 (0,0,180)

921

922 (0,0,1)

923 (0,0,1)

924 (0,0,0)

925 ()

926 )

927 )

928 allowed_groups(

929 (28,29,30,31,32,33,34,35)

930 (17,18,19,20,21,22,23,24,25,26,27)

931 (17,18,19,20,21,22,23,24,25,26,27)

932 )

933 )

934 (

935 Z(

936 (C, -3, 0.7, -2, 0, -1, 0)

937 (C, 0, 2.5, -3,162, -2, 180)

369
938 )

939 ReturnConnector(

940 (

941 (1,0,-3)

942 (0.7, 0, 0)

943 ( 0, 150, 0)

944 ( 0, 0, 0)

945

946 (0,0,1)

947 (0,0,1)

948 (0,0,0)

949 ()

950 )

951 )

952 Connector(

953 (

954 (1,0,-3)

955 (0.7, 0, 0)

956 (0, 36, 0)

957 (0,0,0)

958

959 (0,0,1)

960 (0,0,1)

961 (0,0,0)

962 ()

963 )

964 (

965 (0,1,-3)

966 (0.7, 0, 0)

967 (0, 72, 0)

968 (0,0,180)

969

970 (0,0,1)

971 (0,0,1)

972 (0,0,0)

973 ()

974 )

975 (

976 (1,0,-3)

977 (0.7, 0, 0)

370
978 (0, 72, 0)

979 (0,0,180)

980

981 (0,0,1)

982 (0,0,1)

983 (0,0,0)

984 ()

985 )

986 )

987 allowed_groups(

988 (28,29,30,31,32,33,34,35)

989 (17,18,19,20,21,22,23,24,25,26,27)

990 (17,18,19,20,21,22,23,24,25,26,27)

991 )

992 )

993

994 (

995 Z(

996 (C, -3, 0.7, -2, 0, -1, 0)

997 (H, 0, 1.1, -3, 120, -2, 180)

998 )

999 ReturnConnector()

1000 Connector()

1001 allowed_groups()

1002 )

1003 (

1004 Z(

1005 (C, -3, 0.7, -2, 0, -1, 0)

1006 (N, 0, 1.4, -3, 120, -2, 180)

1007 (H, 1, 1.1, 0, 120, -3, 150)

1008 (H, 1, 1.1, 0, 120, 2, 150)

1009 )

1010 ReturnConnector()

1011 Connector()

1012 allowed_groups()

1013 )

1014 (

1015 Z(

1016 (C, -3, 0.7, -2, 0, -1, 0)

1017 (N, 0, 1.4, -3, 120, -2, 180)

371
1018 (O, 1, 1.2, 0, 120, -3, 150)

1019 (O, 1, 1.2, 0, 120, 2, 180)

1020 )

1021 ReturnConnector()

1022 Connector()

1023 allowed_groups()

1024 )

1025 (

1026 Z(

1027 (C, -3, 0.7, -2, 0, -1, 0)

1028 (N, 0, 1.4, -3, 120, -2, 180)

1029 (H, 1, 1.1, 0, 120, -3, 150)

1030 (C, 1, 1.4, 0, 120, 2, 180)

1031 (O, 3, 1.3, 1, 120, 2, 0(180))

1032 (C, 3, 1.5, 1, 120, 4, 180)

1033 (H, 5, 1.1, 3, 109.47, 4,180)

1034 (H, 5, 1.1, 3, 109.47, 6, 120)

1035 (H, 5, 1.1, 3, 109.47, 7, 120)

1036 )

1037 ReturnConnector()

1038 Connector()

1039 allowed_groups()

1040 )

1041 (

1042 Z(

1043 (C, -3, 0.7, -2, 0, -1, 0)

1044 (C, 0, 1.4, -3, 120, -2, 180)

1045 (O, 1, 1.3, 0, 120, -3, -30(150))

1046 (C, 1, 1.5, 0, 120, 2, 180)

1047 (H, 3, 1.1, 1, 109.47, 2, 180)

1048 (H, 3, 1.1, 1, 109.47, 4, 120)

1049 (H, 3, 1.1, 1, 109.47, 5, 120)

1050 )

1051 ReturnConnector()

1052 Connector()

1053 allowed_groups()

1054 )

1055 (

1056 Z(

1057 (C, -3, 0.7, -2, 0, -1, 0)

372
1058 (O, 0, 1.4, -3, 120, -2, 180)

1059 (C, 1, 1.4, 0, 120, -3, -30(150))

1060 (O, 2, 1.3, 1, 120, 0, 0(180))

1061 (C, 2, 1.5, 1, 120, 3, 180)

1062 (H, 4, 1.1, 2, 109.47, 3,180)

1063 (H, 4, 1.1, 2, 109.47, 5, 120)

1064 (H, 4, 1.1, 2, 109.47, 6, 120)

1065 )

1066 ReturnConnector()

1067 Connector()

1068 allowed_groups()

1069 )

1070 (

1071 Z(

1072 (C, -3, 0.7, -2, 0, -1, 0)

1073 (C, 0, 1.5, -3, 120, -2, 180)

1074 (N, 0, 2.8, -3, 170, -2, 180)

1075 )

1076 ReturnConnector()

1077 Connector()

1078 allowed_groups()

1079 )

1080 (

1081 Z(

1082 (C, -3, 0.7, -2, 0, -1, 0)

1083 (N, 0, 1.4, -3, 120, -2, 180)

1084 (C, 1, 1.2, 0, 120, -3, 150)

1085 (C, 1, 1.2, 0, 120, 2, 180)

1086

1087 (H, 2, 1.1, 1, 109.47, 0,180)

1088 (H, 2, 1.1, 1, 109.47, 4, 120)

1089 (H, 2, 1.1, 1, 109.47, 5, 120)

1090

1091 (H, 3, 1.1, 1, 109.47, 0,180)

1092 (H, 3, 1.1, 1, 109.47, 7, 120)

1093 (H, 3, 1.1, 1, 109.47, 8, 120)

1094 )

1095 ReturnConnector()

1096 Connector()

1097 allowed_groups()

373
1098 )

1099 (

1100 Z(

1101 (C, -3, 0.7, -2, 0, -1, 0)

1102 (O, 0, 1.4, -3, 120, -2, 180)

1103 (C, 1, 1.5, 0, 120, -3, -30(150))

1104 (H, 2, 1.1, 1, 109.47, 0,180)

1105 (H, 2, 1.1, 1, 109.47, 3, 120)

1106 (H, 2, 1.1, 1, 109.47, 4, 120)

1107 )

1108 ReturnConnector()

1109 Connector()

1110 allowed_groups()

1111 )

1112 (

1113 Z(

1114 (C, -3, 0.7, -2, 0, -1, 0)

1115 (S, 0, 1.6, -3, 120, -2, 180)

1116 (C, 1, 1.5, 0, 120, -3, -30(150))

1117 (H, 2, 1.1, 1, 109.47, 0,180)

1118 (H, 2, 1.1, 1, 109.47, 3, 120)

1119 (H, 2, 1.1, 1, 109.47, 4, 120)

1120 )

1121 ReturnConnector()

1122 Connector()

1123 allowed_groups()

1124 )

1125 (

1126 Z(

1127 (N, -3,0.6, -2,0,-1,0)

1128 )

1129 ReturnConnector()

1130 Connector()

1131 allowed_groups()

1132 )

1133

1134

1135 (

1136 Z(

1137 (O, -3, 0.7, -2, 0 , -1, 0)

374
1138 )

1139 ReturnConnector()

1140 Connector()

1141 allowed_groups()

1142 )

1143 (

1144 Z(

1145 (S, -3, 0.7, -2, 0 , -1, 0)

1146 )

1147 ReturnConnector()

1148 Connector()

1149 allowed_groups()

1150 )

1151 (

1152 Z(

1153 (Si, -3, 0.7, -2, 0 , -1, 0)

1154 (H , 0,1.4, -3, 109.47, -2, 120)

1155 (H , 0,1.4, 1, 109.47, -3, -120)

1156 )

1157 ReturnConnector()

1158 Connector()

1159 allowed_groups()

1160 )

1161 (

1162 Z(

1163 (S, -3, 0.7, -2, 0 , -1, 0)

1164 (O , 0,1.9, -3, 109.47, -2, 120)

1165 (O , 0,1.9, 1, 109.47, -3, -120)

1166 )

1167 ReturnConnector()

1168 Connector()

1169 allowed_groups()

1170 )

1171 (

1172 Z(

1173 (C, -3, 0.7, -2, 0 , -1, 0)

1174 (H , 0,1.1, -3, 109.47, -2, 120)

1175 (H , 0,1.1, 1, 109.47, -3, -120)

1176 )

1177 ReturnConnector()

375
1178 Connector()

1179 allowed_groups()

1180 )

1181 (

1182 Z(

1183 (C, -3, 0.7, -2, 0 , -1, 0)

1184 (O , 0,1.3, -3, 120 , -2(1), -180)

1185 )

1186 ReturnConnector()

1187 Connector()

1188 allowed_groups()

1189 )

1190 (

1191 Z(

1192 (N, -3, 0.7, -2, 0 , -1, 0)

1193 (C , 0,1.5, -3, 120.00, -2, -180)

1194 (H , 1,1.1, 0, 109.47, -3, 60)

1195 (H , 1,1.1, 0, 109.47, 2, 120)

1196 (H , 1,1.1, 0, 109.47, 3, 120)

1197 )

1198 ReturnConnector()

1199 Connector()

1200 allowed_groups()

1201 )

1202 (

1203 Z(

1204 (C , -3, 0.7, -2, 0 , -1, 0)

1205 (C , 0,1.4, -3, 120 , -2, 180)

1206 (H , 1,1.1, 0, 120.0 , -3, 180)

1207 (H , 1,1.1, 0, 120.0 , 2, 180)

1208 )

1209 ReturnConnector()

1210 Connector()

1211 allowed_groups()

1212 )

1213

1214

1215 (

1216 Z(

1217 (N, -3, 0.7, -2, 0, -1, 0)

376
1218 (C, 0, 1.4, -3, 120, -2, 60)

1219 (C, 0, 1.4, 1, 120, -3, 120(-240))

1220 (H, 1, 1.1, 0, 109.47, 2(1), 180)

1221 (H, 1, 1.1, 0, 109.47, 3, 120)

1222 (H, 1, 1.1, 0, 109.47, 4, 120)

1223 (H, 2, 1.1, 0, 109.47, 1, 80)

1224 (H, 2, 1.1, 0, 109.47, 6, 120)

1225 (H, 2, 1.1, 0, 109.47, 7, 120)

1226 )

1227 ReturnConnector(

1228 (

1229 (0,1,2)

1230 (0.7, 0,0)

1231 (0,109.47,0)

1232 (0,0,120)

1233 (0,0,1)

1234 (0,0,1)

1235 (0,0,0)

1236 ()

1237 )

1238 )

1239 Connector()

1240 allowed_groups()

1241 )

1242 (

1243 Z(

1244 (C, -3, 0.7, -2, 0, -1, 0)

1245 (N, 0 , 1.2, -3, 179.0, -2, 180)

1246 )

1247 ReturnConnector(

1248 (

1249 (0,1,-3)

1250 (0.7, 0,0)

1251 (0,170,0)

1252 (0,0,180)

1253 (0,0,1)

1254 (0,0,1)

1255 (0,0,0)

1256 ()

1257 )

377
1258 )

1259 Connector()

1260 allowed_groups()

1261 )

1262 (

1263 Z(

1264 (C, -3, 0.7, -2, 0, -1, 0)

1265 (O, 0, 1.4, -3, 120, -2, -91(180))

1266 (H, 0, 1.1, 1, 120, -3, 180)

1267 )

1268 ReturnConnector(

1269 (

1270 (0,1,2)

1271 (0.7, 0,0)

1272 (0,109.47,0)

1273 (0,0,180)

1274 (0,0,1)

1275 (0,0,1)

1276 (0,0,0)

1277 ()

1278 )

1279 )

1280 Connector()

1281 allowed_groups()

1282 )

1283 (

1284 Z(

1285 (O, -3, 1.4, -2, 0, -1, 0)

1286 (C, 0, 1.4, -3, 120, -2, -91(180))

1287 (H, 1, 1.1, 0, 109.47, -3, 180)

1288 (H, 1, 1.1, 0, 109.47, 2, 120)

1289 (H, 1, 1.1, 0, 109.47, 3, 120)

1290 )

1291 ReturnConnector(

1292 (

1293 (0,1,2)

1294 (0.7, 0,0)

1295 (0,109.47,0)

1296 (0,0,120)

1297 (0,0,1)

378
1298 (0,0,1)

1299 (0,0,0)

1300 ()

1301 )

1302 )

1303 Connector()

1304 allowed_groups()

1305 )

1306 (

1307 Z(

1308 (C, -3, 1.5, -2, 0, -1, 0)

1309 (O, 0, 1.3, -3, 120, -2, 180)

1310 (C, 0, 1.5, 1, 120, -3, 180)

1311 (H, 2, 1.1, 0, 109.47, 1, 180)

1312 (H, 2, 1.1, 0, 109.47, 3, 120)

1313 (H, 2, 1.1, 0, 109.47, 4, 120)

1314 )

1315 ReturnConnector(

1316 (

1317 (0,1,2)

1318 (0.7, 0,0)

1319 (0,109.47,0)

1320 (0,0,180)

1321 (0,0,1)

1322 (0,0,1)

1323 (0,0,0)

1324 ()

1325 )

1326 )

1327 Connector()

1328 allowed_groups()

1329 )

1330 (

1331 Z(

1332 (N, -3, 0.7, -2, 0, -1, 0)

1333 (C, 0, 1.4, -3, 120, -2, -91)

1334 (O, 1, 1.3, 0, 120, -3, 0)

1335 (C, 1, 1.5, 0, 120, 2, 180)

1336 (H, 3, 1.1, 1, 109.47, 0, 180)

1337 (H, 3, 1.1, 1, 109.47, 4, 120)

379
1338 (H, 3, 1.1, 1, 109.47, 5, 120)

1339

1340 (H, 0, 1.1, 1, 120, 2, 180)

1341 )

1342 ReturnConnector(

1343 (

1344 (0,1,2)

1345 (0.7, 0,0)

1346 (0,109.47,0)

1347 (0,0,10)

1348 (0,0,1)

1349 (0,0,1)

1350 (0,0,0)

1351 ()

1352 )

1353 )

1354 Connector()

1355 allowed_groups()

1356 )

1357 (

1358 Z(

1359 (H, -3, 0.4, -2, 0, -1, 0)

1360 )

1361 ReturnConnector(

1362 (

1363 (0,-3,-2)

1364 (0.4, 0,0)

1365 (0,109.47,0)

1366 (0,0,180)

1367 (0,0,1)

1368 (0,0,1)

1369 (0,0,0)

1370 ()

1371 )

1372 )

1373 Connector()

1374 allowed_groups()

1375 )

1376 (

1377 Z(

380
1378 (N, -3, 0.7, -2, 0, -1, 0)

1379 (O, 0, 1.2, -3, 120, -2, -80)

1380 (O, 0, 1.2, 1, 120, -3, 180)

1381 )

1382 ReturnConnector(

1383 (

1384 (0,1,2)

1385 (0.7, 0,0)

1386 (0,109.47,0)

1387 (0,0,180)

1388 (0,0,1)

1389 (0,0,1)

1390 (0,0,0)

1391 ()

1392 )

1393 )

1394 Connector()

1395 allowed_groups()

1396 )

1397 (

1398 Z(

1399 (o, -3, 0.6, -2, 0, -1, 0)

1400 (c, 0, 1.4, -3, 120, -2, 0(180))

1401 (o, 1, 1.3, 0, 120, -3, 0(180))

1402 (c, 1, 1.5, 0, 120, 2, 180)

1403 (H, 3, 1.1, 1, 109.47, 0, 180)

1404 (h, 3, 1.1, 1, 109.47, 4, 120)

1405 (h, 3, 1.1, 1, 109.47, 5, 120)

1406 )

1407 ReturnConnector(

1408 (

1409 (0,1,2)

1410 (0.7, 0,0)

1411 (0,120,0)

1412 (0,0,180)

1413 (0,0,1)

1414 (0,0,1)

1415 (0,0,0)

1416 ()

1417 )

381
1418 )

1419 Connector()

1420 allowed_groups()

1421 )

1422 (

1423 Z(

1424 (O, -3, 0.6, -2, 0, -1, 0)

1425 (H, 0, 1.1, -3, 120, -2, -91(180))

1426 )

1427 ReturnConnector(

1428 (

1429 (0,1,-3)

1430 (0.7, 0,0)

1431 (0,109.47,0)

1432 (0,0,120)

1433 (0,0,1)

1434 (0,0,1)

1435 (0,0,0)

1436 ()

1437 )

1438 )

1439 Connector()

1440 allowed_groups()

1441 )

1442 (

1443 Z(

1444 (N, -3, 0.7, -2, 0 , -1, 0)

1445 (H, 0, 1.1, -3, 120 , -2, 180)

1446 (H, 0, 1.1, 1, 109.47, -3, 120(-120))

1447 )

1448 ReturnConnector(

1449 (

1450 (0,1,2)

1451 (0.7, 0,0)

1452 (0,109.47,0)

1453 (0,0,120)

1454 (0,0,1)

1455 (0,0,1)

1456 (0,0,0)

1457 ()

382
1458 )

1459 )

1460 Connector()

1461 allowed_groups()

1462 )

1463 (

1464 Z()

1465 ReturnConnector(

1466 (

1467 (-3,-2,-1)

1468 (0,0,0)

1469 (0,0,0)

1470 (0,0,0)

1471 (0,0,0)

1472 (0,0,0)

1473 (0,0,0)

1474 ()

1475 )

1476 )

1477 Connector()

1478 allowed_groups()

1479 )

1480

1481 (

1482 Z(

1483 (C, -3, 0.7, -2, 0, -1, 0)

1484 (H, 0, 1.1, -3, 120, -2, 180)

1485 )

1486 ReturnConnector(

1487 (

1488 (0,1,-3)

1489 (0.7,0,0)

1490 (0,120,0)

1491 (0,0,180)

1492

1493 (0,0,1)

1494 (0,0,1)

1495 (0,0,0)

1496 ()

1497 )

383
1498 )

1499 Connector()

1500 allowed_groups()

1501 )

1502 (

1503 Z(

1504 (C, -3, 0.7, -2, 0, -1, 0)

1505 (N, 0, 1.4, -3, 120, -2, 180)

1506 (H, 1, 1.1, 0, 120, -3, -30(150))

1507 (H, 1, 1.1, 0, 120, 2, 150)

1508 )

1509 ReturnConnector(

1510 (

1511 (0,1,-3)

1512 (0.7,0,0)

1513 (0,120,0)

1514 (0,0,180)

1515

1516 (0,0,1)

1517 (0,0,1)

1518 (0,0,0)

1519 ()

1520 ))

1521 Connector()

1522 allowed_groups()

1523 )

1524 (

1525 Z(

1526 (C, -3, 0.7, -2, 0, -1, 0)

1527 (N, 0, 1.4, -3, 120, -2, 180)

1528 (O, 1, 1.2, 0, 120, -3, 150)

1529 (O, 1, 1.2, 0, 120, 2, 180)

1530 )

1531 ReturnConnector(

1532 (

1533 (0,1,-3)

1534 (0.7,0,0)

1535 (0,120,0)

1536 (0,0,180)

1537

384
1538 (0,0,1)

1539 (0,0,1)

1540 (0,0,0)

1541 ()

1542 ))

1543 Connector()

1544 allowed_groups()

1545 )

1546 (

1547 Z(

1548 (C, -3, 0.7, -2, 0, -1, 0)

1549 (N, 0, 1.4, -3, 120, -2, 180)

1550 (H, 1, 1.1, 0, 120, -3, -30(150))

1551 (C, 1, 1.4, 0, 120, 2, 180)

1552 (O, 3, 1.3, 1, 120, 2, 0(180))

1553 (C, 3, 1.5, 1, 120, 4, 180)

1554 (H, 5, 1.1, 3, 109.47, 4,180)

1555 (H, 5, 1.1, 3, 109.47, 6, 120)

1556 (H, 5, 1.1, 3, 109.47, 7, 120)

1557 )

1558 ReturnConnector(

1559 (

1560 (0,1,-3)

1561 (0.7,0,0)

1562 (0,120,0)

1563 (0,0,180)

1564

1565 (0,0,1)

1566 (0,0,1)

1567 (0,0,0)

1568 ()

1569 ))

1570 Connector()

1571 allowed_groups()

1572 )

1573 (

1574 Z(

1575 (C, -3, 0.7, -2, 0, -1, 0)

1576 (C, 0, 1.4, -3, 120, -2, 180)

1577 (O, 1, 1.3, 0, 120, -3, -30(150))

385
1578 (C, 1, 1.5, 0, 120, 2, 180)

1579 (H, 3, 1.1, 1, 109.47, 2, 180)

1580 (H, 3, 1.1, 1, 109.47, 4, 120)

1581 (H, 3, 1.1, 1, 109.47, 5, 120)

1582 )

1583 ReturnConnector(

1584 (

1585 (0,1,-3)

1586 (0.7,0,0)

1587 (0,120,0)

1588 (0,0,180)

1589

1590 (0,0,1)

1591 (0,0,1)

1592 (0,0,0)

1593 ()

1594 ))

1595 Connector()

1596 allowed_groups()

1597 )

1598 (

1599 Z(

1600 (C, -3, 0.7, -2, 0, -1, 0)

1601 (O, 0, 1.4, -3, 120, -2, 180)

1602 (C, 1, 1.4, 0, 120, -3, -30(150))

1603 (O, 2, 1.3, 1, 120, 0, 0(180))

1604 (C, 2, 1.5, 1, 120, 3, 180)

1605 (H, 4, 1.1, 2, 109.47, 3,180)

1606 (H, 4, 1.1, 2, 109.47, 5, 120)

1607 (H, 4, 1.1, 2, 109.47, 6, 120)

1608 )

1609 ReturnConnector(

1610 (

1611 (0,1,-3)

1612 (0.7,0,0)

1613 (0,120,0)

1614 (0,0,180)

1615

1616 (0,0,1)

1617 (0,0,1)

386
1618 (0,0,0)

1619 ()

1620 ))

1621 Connector()

1622 allowed_groups()

1623 )

1624 (

1625 Z(

1626 (C, -3, 0.7, -2, 0, -1, 0)

1627 (C, 0, 1.5, -3, 120, -2, 180)

1628 (N, 0, 2.8, 1, 10, -3, 180)

1629 )

1630 ReturnConnector(

1631 (

1632 (0,1,-3)

1633 (0.7,0,0)

1634 (0,120,0)

1635 (0,0,180)

1636

1637 (0,0,1)

1638 (0,0,1)

1639 (0,0,0)

1640 ()

1641 ))

1642 Connector()

1643 allowed_groups()

1644 )

1645 (

1646 Z(

1647 (C, -3, 0.7, -2, 0, -1, 0)

1648 (N, 0, 1.4, -3, 120, -2, 180)

1649 (C, 1, 1.2, 0, 120, -3, 150)

1650 (C, 1, 1.2, 0, 120, 2, 180)

1651

1652 (H, 2, 1.1, 1, 109.47, 0,180)

1653 (H, 2, 1.1, 1, 109.47, 4, 120)

1654 (H, 2, 1.1, 1, 109.47, 5, 120)

1655

1656 (H, 3, 1.1, 1, 109.47, 0,180)

1657 (H, 3, 1.1, 1, 109.47, 7, 120)

387
1658 (H, 3, 1.1, 1, 109.47, 8, 120)

1659 )

1660 ReturnConnector(

1661 (

1662 (0,1,-3)

1663 (0.7,0,0)

1664 (0,120,0)

1665 (0,0,180)

1666

1667 (0,0,1)

1668 (0,0,1)

1669 (0,0,0)

1670 ()

1671 ))

1672 Connector()

1673 allowed_groups()

1674 )

1675 (

1676 Z(

1677 (C, -3, 0.7, -2, 0, -1, 0)

1678 (O, 0, 1.4, -3, 120, -2, 180)

1679 (C, 1, 1.5, 0, 120, -3, -30(150))

1680 (H, 2, 1.1, 1, 109.47, 0,180)

1681 (H, 2, 1.1, 1, 109.47, 3, 120)

1682 (H, 2, 1.1, 1, 109.47, 4, 120)

1683 )

1684 ReturnConnector(

1685 (

1686 (0,1,-3)

1687 (0.7,0,0)

1688 (0,120,0)

1689 (0,0,180)

1690

1691 (0,0,1)

1692 (0,0,1)

1693 (0,0,0)

1694 ()

1695 ))

1696 Connector()

1697 allowed_groups()

388
1698 )

1699 (

1700 Z(

1701 (C, -3, 0.7, -2, 0, -1, 0)

1702 (S, 0, 1.6, -3, 120, -2, 180)

1703 (C, 1, 1.5, 0, 120, -3, -30(150))

1704 (H, 2, 1.1, 1, 109.47, 0,180)

1705 (H, 2, 1.1, 1, 109.47, 3, 120)

1706 (H, 2, 1.1, 1, 109.47, 4, 120)

1707 )

1708 ReturnConnector(

1709 (

1710 (0,1,-3)

1711 (0.7,0,0)

1712 (0,120,0)

1713 (0,0,180)

1714

1715 (0,0,1)

1716 (0,0,1)

1717 (0,0,0)

1718 ()

1719 ))

1720 Connector()

1721 allowed_groups()

1722 )

1723 (

1724 Z(

1725 (N, -3,0.6, -2,0,-1,0)

1726 )

1727 ReturnConnector(

1728 (

1729 (0,-3,-2)

1730 (0.7,0,0)

1731 (0,120,0)

1732 (0,0,180)

1733

1734 (0,0,1)

1735 (0,0,1)

1736 (0,0,0)

1737 ()

389
1738 ))

1739 Connector()

1740 allowed_groups()

1741 )

1742

1743 )

%

390
391

 1 DEFENSE TECHNICAL 

 (PDF INFORMATION CTR 

 only) DTIC OCA 

 8725 JOHN J KINGMAN RD

 STE 0944 

 FORT BELVOIR VA 22060-6218

 1 DIRECTOR 

 US ARMY RESEARCH LAB 

 IMAL HRA 

 2800 POWDER MILL RD 

 ADELPHI MD 20783-1197 

 1 DIRECTOR 

 US ARMY RESEARCH LAB 

 RDRL CIO LL 

 2800 POWDER MILL RD 

 ADELPHI MD 20783-1197 

 1 DIRECTOR 

 US ARMY RESEARCH LAB 

 RDRL CIO LT 

 2800 POWDER MILL RD 

 ADELPHI MD 20783-1197 

 3 DIRECTOR 

 US ARMY RESEARCH LAB 

 RDRL-WMM-G 

 B. CHRISTOPHER RINDERSPACHER 

 JAN W. ANDZELM 

 TANYA L. CHANTAWANSRI 

 APG MD 21005
392

INTENTIONALLY LEFT BLANK.