160x Filetype PDF File size 1.19 MB Source: marty.in2p3.fr
CSL C++Symbolic computation Library User Manual Grégoire Uhlrich May 31, 2022 CSL User Manual 2 Contents 1 Introduction 15 2 C++basics 17 2.1 C++101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.1.1 History, philosophy . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.1.2 Compile-time vs. run-time . . . . . . . . . . . . . . . . . . . . . . . 18 2.1.3 Type system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2 Constness in C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.3 References, pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.4 Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.5 Enumerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.6 The auto keyword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.7 Lambda functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.8 The standard library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.8.1 I/O streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.8.2 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.8.3 Containers, C++ vector . . . . . . . . . . . . . . . . . . . . . . . . 31 2.8.4 Smart pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.8.5 Optional variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.9 Lists in C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.10 Polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3 CSL basics 41 3.1 Philosophy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.2 Symbolic computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.2.1 Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.2.2 Internal representation of an expression . . . . . . . . . . . . . . . . 42 3.2.3 The Expr type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.2.4 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.3 Using CSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.4 CSL type system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.4.1 Type system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.4.2 Primary type system . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.4.3 When CSL type system is not enough . . . . . . . . . . . . . . . . . 50 3.5 CSL builder functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.6 CSL error system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.7 Loops with CSL expressions . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.8 Canonical forms of expressions . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.9 Automatic ordering of expressions . . . . . . . . . . . . . . . . . . . . . . . 54 3 CSL User Manual CONTENTS 3.10 How to learn CSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.10.1 The manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.10.2 The documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.10.3 The code, for the brave . . . . . . . . . . . . . . . . . . . . . . . . . 57 4 CSL good manners 59 4.1 Resource safety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.2 Memory allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.3 C++goodmanners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.3.1 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.3.2 C++vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.4 CSL good manners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.4.1 The Expr type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.4.2 Avoidable allocations . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.4.3 Heavy interface functions . . . . . . . . . . . . . . . . . . . . . . . . 67 5 Numbers 69 5.1 Integer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.2 Float . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.3 IntFraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.4 Complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.5 NumericalEval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 6 Scalar literals 75 6.1 Complex literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.2 Constant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.3 Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 6.4 Imaginary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 6.5 IntFactorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 6.6 Arbitrary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 6.7 CSL global variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 7 Mathematical operations 85 7.1 Sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.2 Prod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 7.3 Pow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 7.4 Subtraction and division . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 8 Mathematical functions 91 8.1 Common mathematical functions . . . . . . . . . . . . . . . . . . . . . . . 92 8.2 Other functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 8.2.1 Angle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 8.2.2 Factorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 8.2.3 DiracDelta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 9 Operators 99 9.1 Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 9.2 RealPart, ImaginaryPart . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 9.3 Derivative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 9.4 Integrals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 4
no reviews yet
Please Login to review.