100% found this document useful (2 votes)
72 views55 pages

Options and Derivatives Programming in C Algorithms and Programming Techniques For The Financial Industry 1st Edition Carlos Oliveira (Auth.)

Options

Uploaded by

gavricbienva
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
72 views55 pages

Options and Derivatives Programming in C Algorithms and Programming Techniques For The Financial Industry 1st Edition Carlos Oliveira (Auth.)

Options

Uploaded by

gavricbienva
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 55

Experience Seamless Full Ebook Downloads for Every Genre at textbookfull.

com

Options and Derivatives Programming in C


Algorithms and Programming Techniques for the
Financial Industry 1st Edition Carlos Oliveira
(Auth.)
https://textbookfull.com/product/options-and-derivatives-
programming-in-c-algorithms-and-programming-techniques-for-
the-financial-industry-1st-edition-carlos-oliveira-auth/

OR CLICK BUTTON

DOWNLOAD NOW

Explore and download more ebook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Options and Derivatives Programming in C++20: Algorithms


and Programming Techniques for the Financial Industry 2nd
Edition Carlos Oliveira
https://textbookfull.com/product/options-and-derivatives-programming-
in-c20-algorithms-and-programming-techniques-for-the-financial-
industry-2nd-edition-carlos-oliveira/
textboxfull.com

Practical C++20 Financial Programming: Problem Solving for


Quantitative Finance, Financial Engineering, Business, and
Economics 2nd Edition Carlos Oliveira
https://textbookfull.com/product/practical-c20-financial-programming-
problem-solving-for-quantitative-finance-financial-engineering-
business-and-economics-2nd-edition-carlos-oliveira/
textboxfull.com

Options, Futures, and Other Derivatives: Eleventh Edition


[Rental] John C. Hull

https://textbookfull.com/product/options-futures-and-other-
derivatives-eleventh-edition-rental-john-c-hull/

textboxfull.com

Trading and Pricing Financial Derivatives A Guide to


Futures Options and Swaps Patrick Boyle

https://textbookfull.com/product/trading-and-pricing-financial-
derivatives-a-guide-to-futures-options-and-swaps-patrick-boyle/

textboxfull.com
Algorithms For Competitive Programming 1st Edition David
Esparza Alba

https://textbookfull.com/product/algorithms-for-competitive-
programming-1st-edition-david-esparza-alba/

textboxfull.com

Problem Solving in Data Structures Algorithms Using C


Programming Interview Guide 1st Edition Hemant Jain

https://textbookfull.com/product/problem-solving-in-data-structures-
algorithms-using-c-programming-interview-guide-1st-edition-hemant-
jain/
textboxfull.com

Options, futures, and other derivatives Tenth Edition Basu

https://textbookfull.com/product/options-futures-and-other-
derivatives-tenth-edition-basu/

textboxfull.com

Intermediate C Programming for the PIC Microcontroller:


Simplifying Embedded Programming Hubert Henry Ward

https://textbookfull.com/product/intermediate-c-programming-for-the-
pic-microcontroller-simplifying-embedded-programming-hubert-henry-
ward/
textboxfull.com

Cohesive Subgraph Computation over Large Sparse Graphs


Algorithms Data Structures and Programming Techniques
Lijun Chang
https://textbookfull.com/product/cohesive-subgraph-computation-over-
large-sparse-graphs-algorithms-data-structures-and-programming-
techniques-lijun-chang/
textboxfull.com
T H E E X P E R T ’S V O I C E ® I N C+ +

Options and
Derivatives
Programming
in C++
Algorithms and Programming
Techniques for the Financial Industry

Carlos Oliveira
Options and Derivatives
Programming in C++
Algorithms and Programming Techniques
for the Financial Industry

Carlos Oliveira
Options and Derivatives Programming in C++
Carlos Oliveira
Monmouth Junction, New Jersey
USA
ISBN-13 (pbk): 978-1-4842-1813-6 ISBN-13 (electronic): 978-1-4842-1814-3
DOI 10.1007/978-1-4842-1814-3
Library of Congress Control Number: 2016954432
Copyright © 2016 by Carlos Oliveira
This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the
material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation,
broadcasting, reproduction on microfilms or in any other physical way, and transmission or information
storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now
known or hereafter developed.
Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with
every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an
editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are
not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to
proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of publication,
neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or
omissions that may be made. The publisher makes no warranty, express or implied, with respect to the
material contained herein.
Managing Director: Welmoed Spahr
Lead Editor: Jonathan Gennick
Technical Reviewer: Don Reamey
Editorial Board: Steve Anglin, Pramila Balan, Laura Berendson, Aaron Black, Louise Corrigan,
Jonathan Gennick, Todd Green, Robert Hutchinson, Celestin Suresh John, Nikhil Karkal,
James Markham, Susan McDermott, Matthew Moodie, Natalie Pao, Gwenan Spearing
Coordinating Editor: Jill Balzano
Copy Editor: Kezia Endsley
Compositor: SPi Global
Indexer: SPi Global
Artist: SPi Global
Cover Designer: Anna Ishchenko
Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street,
6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected],
or visit www.springer.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer
Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation.
For information on translations, please e-mail [email protected], or visit www.apress.com.
Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use.
eBook versions and licenses are also available for most titles. For more information, reference our Special
Bulk Sales–eBook Licensing web page at www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this text is available to readers
at www.apress.com. For detailed information about how to locate your book’s source code, go to
www.apress.com/source-code/.
Printed on acid-free paper
To my family, my real source of inspiration.
Contents at a Glance

About the Author ................................................................................................... xiii


About the Technical Reviewer .................................................................................xv
Introduction ...........................................................................................................xvii

■Chapter 1: Options Concepts ................................................................................. 1


■Chapter 2: Financial Derivatives.......................................................................... 19
■Chapter 3: Basic Algorithms................................................................................ 35
■Chapter 4: Object-Oriented Techniques ............................................................... 67
■Chapter 5: Design Patterns for Options Processing ............................................ 85
■Chapter 6: Template-Based Techniques ............................................................ 101
■Chapter 7: STL for Derivatives Programming .................................................... 115
■Chapter 8: Functional Programming Techniques............................................... 127
■Chapter 9: Linear Algebra Algorithms ............................................................... 143
■Chapter 10: Algorithms for Numerical Analysis ................................................ 161
■Chapter 11: Models Based on Differential Equations ........................................ 175
■Chapter 12: Basic Models for Options Pricing ................................................... 189
■Chapter 13: Monte Carlo Methods ..................................................................... 207
■Chapter 14: Using C++ Libraries for Finance .................................................... 223
■Chapter 15: Credit Derivatives........................................................................... 241

Index ..................................................................................................................... 255

v
Contents

About the Author ................................................................................................... xiii


About the Technical Reviewer .................................................................................xv
Introduction ...........................................................................................................xvii

■Chapter 1: Options Concepts ................................................................................. 1


Basic Definitions .............................................................................................................. 2
Option Greeks ................................................................................................................... 6
Using C++ for Options Programming ............................................................................... 8
Availability .............................................................................................................................................. 8
Performance ........................................................................................................................................... 9
Standardization ...................................................................................................................................... 9
Expressiveness ..................................................................................................................................... 10

Modeling Options in C++ ............................................................................................... 10


Creating Well-Behaving Classes ........................................................................................................... 10
Computing Option Value at Expiration .................................................................................................. 12
Complete Listing ................................................................................................................................... 13
Building and Testing ............................................................................................................................. 16

Further References......................................................................................................... 18
Conclusion ...................................................................................................................... 18
■Chapter 2: Financial Derivatives.......................................................................... 19
Models for Derivative Pricing ......................................................................................... 19
Credit Default Swaps ............................................................................................................................ 21
Collateralized Debt Obligations............................................................................................................. 22

vii
■ CONTENTS

FX Derivatives ....................................................................................................................................... 23
Derivative Modeling Equations ............................................................................................................. 23
Numerical Models................................................................................................................................. 24
Binomial Trees ...................................................................................................................................... 24
Simulation Models ................................................................................................................................ 25
Using the STL ................................................................................................................. 26
Generating a Random Walk .................................................................................................................. 27
Complete Listing ................................................................................................................................... 29
Building and Testing ............................................................................................................................. 32
Further References......................................................................................................... 33
Conclusion ...................................................................................................................... 34
■Chapter 3: Basic Algorithms................................................................................ 35
Date and Time Handling ................................................................................................. 35
Date Operations .................................................................................................................................... 36
Complete Listings ................................................................................................................................. 39
A Compact Date Representation .................................................................................... 48
Complete Listings ................................................................................................................................. 49
Building and Testing ............................................................................................................................. 53

Working with Networks .................................................................................................. 53


Creating a Dictionary Class .................................................................................................................. 54
Calculating a Shortest Path .................................................................................................................. 56
Complete Listings ................................................................................................................................. 58
Building and Testing ............................................................................................................................. 66

Conclusion ...................................................................................................................... 66
■Chapter 4: Object-Oriented Techniques ............................................................... 67
OO Programming Concepts ............................................................................................ 67
Encapsulation ....................................................................................................................................... 69
Inheritance............................................................................................................................................ 72
Polymorphism ....................................................................................................................................... 72
Polymorphism and Virtual Tables.......................................................................................................... 75

viii
■ CONTENTS

Virtual Functions and Virtual Destructors ............................................................................................. 76


Abstract Functions................................................................................................................................ 78
Building Class Hierarchies .................................................................................................................... 80
Object Composition............................................................................................................................... 82
Conclusion ...................................................................................................................... 83
■Chapter 5: Design Patterns for Options Processing ............................................ 85
Introduction to Design Patterns...................................................................................... 86
The Factory Method Design Pattern ............................................................................... 87
The Singleton Pattern ..................................................................................................... 90
Clearing House Implementation in C++ ............................................................................................... 91
The Observer Design Pattern ......................................................................................... 93
Complete Code ..................................................................................................................................... 96

Conclusion .................................................................................................................... 100


■Chapter 6: Template-Based Techniques ............................................................ 101
Introduction to Templates ............................................................................................. 101
Compilation-Time Polymorphism ................................................................................. 103
Template Functions ...................................................................................................... 104
Implementing Recursive Functions .............................................................................. 106
Recursive Functions and Template Classes ................................................................. 108
Containers and Smart Pointers .................................................................................... 109
Avoiding Lengthy Template Instantiations .................................................................... 111
Pre-Instantiating Templates ................................................................................................................ 111

Conclusion .................................................................................................................... 113


■Chapter 7: STL for Derivatives Programming .................................................... 115
Introduction to Algorithms in the STL ........................................................................... 115
Sorting .......................................................................................................................... 116
Presenting Frequency Data ................................................................................................................ 119

Copying Container Data ................................................................................................ 121


Finding Elements.......................................................................................................... 123

ix
■ CONTENTS

Selecting Option Data ................................................................................................... 124


Conclusion .................................................................................................................... 126
■Chapter 8: Functional Programming Techniques............................................... 127
Functional Programming Concepts .............................................................................. 128
Function Objects .......................................................................................................... 128
Functional Predicates in the STL .................................................................................. 131
The Bind Function ........................................................................................................ 133
Lambda Functions in C++11 ........................................................................................ 135
Complete Code ............................................................................................................. 137
Conclusion .................................................................................................................... 142
■Chapter 9: Linear Algebra Algorithms ............................................................... 143
Vector Operations ......................................................................................................... 143
Scalar-to-Vector Operations ............................................................................................................... 144
Vector-to-Vector Operations ............................................................................................................... 146

Matrix Implementation ................................................................................................. 148


Using the uBLAS Library............................................................................................... 154
Complete Code ............................................................................................................. 156
Conclusion .................................................................................................................... 160
■Chapter 10: Algorithms for Numerical Analysis ................................................ 161
Representing Mathematical Functions......................................................................... 161
Using Horner’s Method ....................................................................................................................... 163

Finding Roots of Equations........................................................................................... 165


Newton’s Method................................................................................................................................ 165

Integration .................................................................................................................... 170


Conclusion .................................................................................................................... 173
■Chapter 11: Models Based on Differential Equations ........................................ 175
General Differential Equations...................................................................................... 175
Ordinary Differential Equations .................................................................................... 176

x
■ CONTENTS

Euler’s Method ............................................................................................................. 177


Implementing the Method .................................................................................................................. 178

The Runge-Kutta Method ............................................................................................. 182


Runge-Kutta Implementation ............................................................................................................. 183

Complete Code ............................................................................................................. 185


Conclusion .................................................................................................................... 187
■Chapter 12: Basic Models for Options Pricing ................................................... 189
Lattice Models .............................................................................................................. 189
Binomial Model ............................................................................................................ 190
Binomial Model Implementation ......................................................................................................... 192
Pricing American-Style Options .......................................................................................................... 195

Solving the Black-Scholes Model ................................................................................. 197


Numerical Solution of the Model ........................................................................................................ 198

Complete Code ............................................................................................................. 202


Conclusion .................................................................................................................... 205
■Chapter 13: Monte Carlo Methods ..................................................................... 207
Introduction to Monte Carlo Methods ........................................................................... 207
Random Number Generation ........................................................................................ 208
Probability Distributions ..................................................................................................................... 210
Using Common Probability Distributions ............................................................................................ 213

Creating Random Walks ............................................................................................... 218


Conclusion .................................................................................................................... 221
■Chapter 14: Using C++ Libraries for Finance .................................................... 223
Boost Libraries ............................................................................................................. 223
Installing Boost ................................................................................................................................... 225
Solving ODEs with Boost .................................................................................................................... 225
Solving a Simple ODE ......................................................................................................................... 227

xi
■ CONTENTS

The QuantLib Library .................................................................................................... 229


Handling Dates ................................................................................................................................... 230
Working with Calendars...................................................................................................................... 231
Computing Solutions for Black-Scholes Equations ............................................................................ 233
Creating a C++ Interface .................................................................................................................... 235
Complete Code ................................................................................................................................... 237

Conclusion .................................................................................................................... 240


■Chapter 15: Credit Derivatives........................................................................... 241
Introduction to Credit Derivatives ................................................................................. 241
Modeling Credit Derivatives ......................................................................................... 242
Using Barrier Options ................................................................................................... 243
A Solver Class for Barrier Options ...................................................................................................... 244
Barrier Option Classes in QuantLib ..................................................................................................... 245
An Example Using QuantLib................................................................................................................ 247

Complete Code ............................................................................................................. 249


Conclusion .................................................................................................................... 253

Index ..................................................................................................................... 255

xii
About the Author

Carlos Oliveira works in the area of quantitative finance, with more than
10 years of experience in creating scientific and financial models in C++.
During his career, Carlos has developed several large-scale applications for
financial companies such as Bloomberg L.P. and Incapital LLC. Oliveira
obtained a PhD in Operations Research and Systems Engineering from the
University of Florida, an MSc in Computer Science from UFC (Brazil), and
a BSc in Computer Science from UECE (Brazil). He has also performs
academic research in the field of combinatorial optimization, with
applications in diverse areas such as finance, telecommunications,
computational biology, and logistics. Oliveira has written more than
30 academic papers on optimization and authored three books, including
Practical C++ Financial Programming (Apress, 2015).

xiii
About the Technical Reviewer

Don Reamey is currently a Senior Engineering Manager at Apptio


Corporation. Previously he worked at Microsoft as a Principal Software
Engineer and Program Manager. Don also managed engineering teams at
TIBCO Software and Bank of America. He enjoys learning and creating
new programming languages, creating web-based applications, and
playing guitar and weight lifting.

xv
Introduction

On Wall Street, the use of algorithmic trading and other computational techniques has skyrocketed in the
last few years, as can be seen from the public interest in automated trading as well as the profits generated
by these strategies. This growing trend demonstrates the importance of using software to analyze and trade
markets in diverse areas of finance. One particular area that has been growing in importance during the last
decade is options and derivatives trading.
Initially used only as a niche investment strategy, derivatives have become one of the most common
instruments for investors in all areas. Likewise, the interest in automated trading and analysis of such
instruments has also increased considerably.
Along with scientists and economists, software engineers have also greatly contributed to the
development of advanced computational techniques using financial derivatives. Such techniques have been
used at banks, hedge funds, pension funds, and other financial institutions. In fact, every day new systems
are developed to give a trading advantage to the players in this industry.
This books attempts to provide the basic programming knowledge needed by C++ programmers
working with options and derivatives in the financial industry. This is a hands-on book for programmers
who want to learn how C++ is used to develop solutions for options and derivatives trading. In the book’s
chapters, you’ll explore the main algorithms and programming techniques used in the implementation of
systems and solutions for trading options and other derivatives.
Because of stringent performance characteristics, most of these trading systems are developed using
C++ as the main implementation language. This makes the topic of this book relevant to everyone interested
in programming skills used in the financial industry in general.
In Options and Derivatives Programming in C++, I cover the features of the language that are more
frequently used to write financial software for options and derivatives. These features include the STL,
templates, functional programming, and support for numerical libraries. New features introduced in the latest
updates of the C++ standard are also covered, including additional functional techniques such as lambda
functions, automatic type detection, custom literals, and improved initialization strategies for C++ objects.
I also provide how-to examples that cover the major tools and concepts used to build working solutions
for quantitative finance. The book teaches you how to employ advanced C++ concepts as well as the basic
building libraries used by modern C++ developers, such as the STL, Boost, and QuantLib. It also discusses
how to create correct and efficient applications, leveraging knowledge of object-oriented and template-
based programming. I assume only a basic knowledge of C and C++ and extensively use concepts already
mastered by developers who are fluent in these languages.
In the process of writing this book, I was also concerned with providing value for readers who are trying
to use their current programming knowledge in order to become proficient at the style of programming used
in large banks, hedge funds, and other investment institutions. Therefore, the topics covered in the book
are introduced in a logical and structured way. Even novice programmers will be able to absorb the most
important topics and competencies necessary to develop C++ for the problems occurring on the analysis of
options and other financial derivatives.

xvii
■ INTRODUCTION

Audience
This book is intended for readers who already have a working knowledge of programing in C, C++, or
another mainstream language. These are usually professionals or advanced students in computer science,
engineering, and mathematics, who have interest in learning about options and derivatives programming
using the C++ language, for personal or for professional reasons. The book is also directed at practitioners of
C++ programming in financial institutions, who would use the book as a ready-to-use reference of software
development algorithms and best practices for this important area of finance.
Many readers are interested in a book that would describe how modern C++ techniques are used to
solve practical problems arising when considering options on financial instruments and other derivatives.
Being a multi-paradigm language, C++ usage may be slightly different in each area, so the skills that are
useful for developing desktop applications, for example, are not necessarily the same ones used to write
high-performance software.
A large part of high-performance financial applications are written in C++, which means that
programmers who want to enter this lucrative market need to acquire a working knowledge of specific parts
of the language. This book attempts to give developers who want to develop their knowledge effectively this
choice, while learning one of the most sought-after and marketable skillsets for modern financial application
and high-performance software development.
This book is also targeted at students and new developers who have some experience with the C++
language and want to leverage that knowledge into financial software development. This book is written with
the goal of reaching readers who need a concise, algorithms-based strategy, providing basic information
through well-targeted examples and ready-to-use solutions. Readers will be able to directly apply the
concepts and sample code to some of the most common problems faced regarding the analysis of options
and derivative contracts.

What You Will Learn


Here is a sample of topics that are covered in the following chapters:
• Fundamental problems in the options and derivatives market
• Options market models
• Derivative valuation problems
• Trading strategies for options and derivatives
• Pricing algorithms for derivatives
• Binomial method
• Differential equations method
• Black-Scholes model
• Quantitative finance algorithms for options and derivatives
• Linear algebra techniques
• Interpolation
• Calculating roots
• Numerical solution for PDEs

xviii
■ INTRODUCTION

• Important features of C++ language as used in quantitative financial programming,


such as
• Templates
• STL containers
• STL algorithms
• Boost libraries
• QuantLib
• New features of C++11 and C++14

Book Contents
Here is a quick overview of the major topics covered in each chapter.
• Chapter 1: “Options Concepts.” An option is a standard financial contract that
derives its value from an underlying asset such as a stock. Options can be used to
pursue multiple economic objectives, such as hedging against variations on the
underlying asset, or speculating on the future price of a stock. Chapter 1 presents the
basic concepts of options, including their advantages and challenges. It also explains
how options can be modeled using C++. The main topics covered in this chapter are
as follows:
• Basic definitions of options
• An introduction to options strategies
• Describing options with Greeks
• Sample code for options handling
• Chapter 2: “Financial Derivatives.” A derivative is a general term for a contract
whose price is based on an underlying asset. In the previous decades, the financial
industry created and popularized a large number of derivatives. Pricing and trading
these derivatives is a large part of the work performed by trading desks throughout
the world. Derivatives have been created based on diverse assets such as foreign
currency, mortgage contracts, and credit default swaps. This chapter explores this
type of financial instrument and presents a few C++ techniques to model specific
derivatives. The main topics covered in this chapter are as follows:
• Credit default swaps
• Forex derivatives
• Interest rate derivatives
• Exotic derivatives

xix
■ INTRODUCTION

• Chapter 3: “Basic Algorithms.” To become a proficient C++ developer, it is essential


to have good knowledge of the basic algorithms used in your application area.
Some basic algorithms for tasks such as vector processing, date and time handling,
and data access and storage are useful in almost all applications involving options
and other financial derivatives. This chapter surveys such algorithms and their
implementation in C++, including the following topics:
• Date and time handling
• Vector processing
• Graphs and networks
• Fast data processing
• Chapter 4: “Object-Oriented Techniques.” For the last 30 years, object-oriented
techniques have become the standard for software development. Since C++ fully
supports OO programming, it is imperative that you have a good understanding of
OO techniques in order to solve the problems presented by options and derivatives.
I present summary of what you need to become proficient in the relevant OO
techniques used in the financial industry. Some of the topics covered in this chapter are:
• Problem partitioning
• Designing solutions using OO strategies
• OO implementation in C++
• Reusing OO components
• Chapter 5: “Design Patterns for Options Processing.” Design patterns are a set of
common programming practices that can be used to simplify the solution of recurring
problems. With the use of OO techniques, design patterns can be cleanly implemented
as a set of classes that interact toward the solution of a common goal. In this chapter,
you learn about the most common design pattern employed when working with
financial options and derivatives, with specific examples. It covers the following topics:
• The importance of design patterns
• Factory pattern
• Visitor pattern
• Singleton pattern
• Less common patterns
• Chapter 6: “Template-Based Techniques.” C++ templates allow programmers to write
code that works without modification on different data types. Through the careful
use of templates, C++ programmers can write code with high performance and low
overhead, without the need to employ more computationally expensive object-
oriented techniques. This chapter explores a few template-oriented practices used in
the solution of options and derivatives-based financial problems.
• Motivating the use of templates
• Compile-time algorithms
• Containers and smart pointers
• Template libraries

xx
■ INTRODUCTION

• Chapter 7: “STL for Derivatives Programming.” Modern financial programming in


C++ makes heavy use of template-based algorithms. Many of the basic template
algorithms are implemented in the standard template library (STL). This chapter
discusses the STL and how it can be used in quantitative finance projects, in
particular to solve options and financial derivative problems. You will get a clear
understanding of how the STL interacts with other parts of the system, and how it
imposes a certain structure on classes developed in C++.
• STL-based algorithms
• Functional techniques on STL
• STL containers
• Smart pointers
• Chapter 8: “Functional Programming Techniques.” Functional programming is
a technique that focuses on the direct use of functions as first-class objects. This
means that you are allowed to create, store, and call functions as if they were just
another variable of the system. Recently, functional techniques in C++ have been
greatly improved with the adoption of the new standard (C++11), particularly with
the introduction of lambda functions. The following topics are explored in this
chapter:
• Lambdas
• Functional templates
• Functions as first-class objects
• Managing state in functional programming
• Functional techniques for options processing
• Chapter 9: “Linear Algebra Algorithms.” Linear algebra techniques are used
throughout the area of financial engineering, and in particular in the analysis of
options and other financial derivatives. Therefore, it is important to understand how
the traditional methods of linear algebra can be applied in C++. With this goal in
mind, I present a few examples that illustrate how to use some of the most common
linear algebra algorithms. In this chapter, you will also learn how to integrate existing
LA libraries into your code.
• Implementing matrices
• Matrix decomposition
• Computing determinants
• Solving linear systems of equations

xxi
■ INTRODUCTION

• Chapter 10: “Algorithms for Numerical Analysis.” Equations are some of the building
blocks of financial algorithms for options and financial derivatives, and it is important
to be able to efficiently calculate the solution for such mathematical models. In
this chapter, you will see programming recipes for different methods of calculating
equation roots and integrating functions, along with explanations of how they work
and when they should be used. I also discuss numerical error and stability issues that
present a challenge for developers in the area of quantitative financial programming.
• Basic numerical algorithms
• Root-finding algorithms
• Integration algorithms
• Reducing errors in numeric algorithms
• Chapter 11: “Models Based on Differential Equations.” Differential equations are at
the heart of many techniques using in the analysis of derivatives. There are several
processes for solving and analyzing PDEs that can be implemented in C++. This
chapter presents programming recipes that cover aspects of PDE-based option
modeling and application in C++. Topics covered include the following:
• Basic techniques for differential equations
• Ordinary differential equations
• Partial difference equations
• Numerical algorithms for differential equations
• Chapter 12: “Basic Models for Options Pricing.” Options pricing is the task of
determining the fair value of a particular option, given a set of parameters that
exactly determine the option type. This chapter discusses some of the most popular
models for options pricing. They include tree-based methods, such as binomial
and trinomial trees. It also discusses the famous Black-Scholes model, which is
frequently used as the basis for the analysis of most options and derivative contracts.
• Binomial trees
• Trinomial trees
• Black-Scholes model
• Implementation strategies
• Chapter 13: “Monte Carlo Methods.” Among other programming techniques for equity
markets, Monte Carlo simulation has a special place due to its wide applicability and
easy implementation. These methods can be used to forecast prices or to validate
options buying strategies, for example. In This chapter provides programming recipes
that can be used as part of simulation-based algorithms applied to options pricing.
• Probability distributions
• Random number generation
• Stochastic models for options
• Random walks
• Improving performance

xxii
■ INTRODUCTION

• Chapter 14: “Using C++ Libraries for Finance.” Writing good financial code is not an
individual task. You frequently have to use libraries created by other developers and
integrate them into your own work. In the world of quantitative finance, a number of
C++ libraries have been used with great success. This chapter reviews some of these
libraries and explains how they can be integrated into your own derivative-based
applications. Some of the topics covered include the following:
• Standard library tools
• QuantLib
• Boost math
• Boost lambda
• Chapter 15: “Credit Derivatives.” Credit derivatives are an increasingly popular
type of financial derivative that aims at reducing credit risk—that is, the risk of
default posed by contracts established with a counterparty. Credit derivatives can
be modeled using some of the tools already discussed for options, although credit
derivative have their own peculiarities. This chapter describes how to create the C++
code needed to quantitatively analyze such financial contracts. Here are some of the
topics discussed:
• General concepts of credit derivatives
• Modeling the problem
• C++ algorithms for derivative pricing
• Improving algorithm efficiency

Example Code
The examples given in this book have all been tested on MacOS X using the Xcode 7 IDE. The code uses only
standard C++ techniques, so you should be able to build the given examples using any standards-compliant
C++ compiler that implements the C++11 standard. For example, gcc is available on most platforms, and
Microsoft Visual Studio will also work on Windows.
If you use MacOS X and don’t have Xcode installed in your computer yet, you can download it for free
from Apple’s developer web site at http://developer.apple.com.
If you instead prefer to use MinGW on Windows, you can download the MinGW distribution from the
web site http://www.mingw.org.
Once MinGW is installed, start the command prompt from the MinGW program group in the Start
menu. Then, you can type gcc to check that the compiler is properly installed.
To download the source code for all examples in this book, visit the web page of the author at
http://coliveira.net.

xxiii
CHAPTER 1

Options Concepts

In the last few decades, software development has become an integral part of the investment industry.
Advances in trading infrastructure, as well as the need for increased volume and liquidity, has caused
financial institutions to adopt computational techniques in their day-to-day operations. This means
that there are many opportunities for computer scientists specializing in the design and development of
automated strategies for trading and analyzing options and other financial derivatives.
Options are among the several investment vehicles that are currently traded using automated methods,
as you will learn in the following chapters. Given the mathematical structure of options and related
derivatives, it is possible to explore their features in a controlled way, which is ideal for the application of
computational algorithms. In this book, I present many of the computational techniques used to develop
strategies in order to trade options and other derivatives.
An option is a standard financial contract that derives its value from an underlying asset such as
common stock or commodities. Options can be used to pursue multiple economic objectives, such as
hedging against large variations on the underlying asset, or speculating on the future price of a stock. This
chapter presents the basic concepts of options, along with supporting definitions. I also give an overview of
the use of C++ in the financial industry, and how options can be modeled using C++.
The following concepts are explored in the next sections:
• Basic definitions: You will learn fundamental definitions about options contracts and
how they are used in the investment industry.
• Fundamental option strategies: Due to their flexibility, options can be combined in
a surprising large number of investment strategies. You will learn about some of the
most common option strategies, and how to model them using C++.
• Option Greeks: One of the advantages of options investing is that it promotes a very
analytical view of financial decisions. Each option is defined by a set of variables
called Greeks, which reflect the properties of an option contract at each moment in
time.
• Delta hedging: One of the ways to use options is to create a hedge for some other
underlying asset positions. This is called delta hedging, and it is widely used in the
financial industry. You will see how this investment technique works and how it can
be modeled using C++.

Electronic supplementary material The online version of this chapter (doi:10.1007/978-1-4842-1814-3_1)


contains supplementary material, which is available to authorized users.

© Carlos Oliveira 2016 1


C. Oliveira, Options and Derivatives Programming in C++, DOI 10.1007/978-1-4842-1814-3_1
CHAPTER 1 ■ OPTIONS CONCEPTS

Basic Definitions
Let’s start with an overview of concepts and programming problems presented by options in the financial
industry. Options are specialized trading instruments, and therefore require their users to be familiar
with a number of details about their operation. In this section, I introduce some basic definitions about
options and their associated ideas. Before starting, take a quick look at Table 1-1 for a summary of the most
commonly used concepts. These concepts are defined in more detail in the remaining parts of this section.

Table 1-1. Basic Concepts in Options Trading

Concept Definition
Call An option contract that gives its owner the right to buy the underlying asset for a
predetermined price.
Put An option contract that gives its owner the right to sell the underlying asset for a
predetermined price.
Underlying Asset whose price is used as the base of the options contract.
Strike price The price at which option owners can buy or sell the underlying asset under the
options contract.
Expiration The last date of the options contract.
Settlement The act of exercising the options contract at the expiration date.
Intrinsic value Amount of option value that is directly derived from the underlying price.
Break-even price The price at which an investor will start to make a profit in the option.
Exercise The act of buying of selling the option underlying under the price determined by the
option contract.
American option An option style where option owners can exercise the option at any moment between
option purchase and option expiration.
European option An option style where option owners can exercise the option only at expiration time.
ATM (At The Money): Refers to options that have a strike price close to the current price
for the underlying.
OTM (Out of The Money): Refers to options that have a strike price above (for calls) or
below (for puts) the current price of the underlying asset. These options have no
intrinsic value.
ITM (In The Money): Refers to options that have a strike price below (for calls) or above
(for puts) the current price of the underlying asset. These options have an intrinsic
value.

Options can be classified according to several criteria. The features of the options determine every
aspect of how they can be used, such as the quantity of underlying assets, the strike price, and the expiration,
among others. There are two main types of Options processing: calls and puts. A call is a standard contract
that gives its owner the right (but not the obligation) to buy an underlying instrument at a particular
price. Similarly, a put is standard contract that gives its owner the right (but not the obligation) to sell an
underlying instrument at a predetermined price.

2
CHAPTER 1 ■ OPTIONS CONCEPTS

The strike price is the price at which the option can be exercised. For example, a call for IBM stock with
strike $100 gives its owner the right to buy IBM stock at the price of $100. If the current price of IBM is greater
than $100, the owner of such an option has the right to buy the stock at a price that is lower than the current
price, which means that the call has a higher value as the value of IBM stock increases. This situation is
exemplified in Figure 1-1. If the current price is lower than $100 at expiration, the value of the option is zero,
since there is no profit in exercising the contract.

Figure 1-1. Profit chart for a call option

As you have seen in this example, if you buy an option, you have an unlimited gain and your losses are
limited to the value paid originally. This is advantageous when you’re trying to limit losses in a particular
investment scenario. As long as you are okay with losing a limited amount of money paid for the option,
you can profit from the unlimited upside potential of a call (if the underlying grows in price). Put options
don’t have unlimited profit potential since the maximum gain happens when the underlying price is zero.
However, they still benefit from the well-defined, limited loss versus the possible large gains.
Expiration: The expiration is the moment when the option contract ends its validity and a final value
exchange can be performed. Each option will have a particular, predefined expiration. For example, certain
index-based options expire in the morning of the third Friday of the month. Most stock-based options expire
in practice at the end of the third Friday of the month (although they will list the Saturday as the formal
expiration day). More recently, several weekly-based option contracts have been made available for some
of the most traded stocks and indices. Each options contract makes it clear when expiration is due, and
investors need to plan accordingly on what to do before the expiration date.

3
CHAPTER 1 ■ OPTIONS CONCEPTS

Settlement: The settlement is the agreed-on result of the option transaction at the specific time when
the option contract expires. The particular details of the settlement depend on the type of underlying asset.
For example, options on common stock settle at expiration day, when the owner of the option needs to
decide to sell (for puts) or buy (for calls) a certain quantity of stock. For index-based options, the settlement
is normally performed directly in cash, determined as the cash equivalent for a certain number of units of
the index. Some options on futures may require the settlement on the underlying commodity, such as grain,
oil, or sugar. Investors need to be aware of the requirement settlement for different option contracts. Trading
brokerages will typically let investors know about the steps required to settle the options they’re currently
holding.
Selling Options: An investor can buy or sell a call option. When doing so, it is important to understand
the difference between these two situations. For option buyers, the goal is to profit from the possible increase
(in the case of calls) or the decrease (in the case of puts) in value for the underlying. For option sellers, on
the other hand, the goal is to profit from the lack of movement (increase for calls or decrease for puts). So, for
example, if you sell calls against a stock, the intent is to profit in the case that the stock decreases in price or
stays at the same price until expiration. If you sell a put option, the goal is to profit when the stock increases
in price or stays at the same price until expiration.
Option exercise: An option contract can be used to buy or sell the underlying asset as dictated by
the contract specification. This process of using the option to trade the underlying asset is called option
exercising. If the option is a call, you can exercise it and buy the underlying asset at the specified price. If the
option is a put, you can use the option to sell the underlying asset at the previously specified price. The price
at which the option is exercised is defined by the contract. For example, a call option for AAPL stock with a
$100 strike allows its owner to buy the stock for the strike price, independent of the current price of AAPL.
Exercise style: Options contracts can have different exercise styles based on when exercising is allowed.
There are two main types:
• American options: Can be exercised at any time until expiration. That is, the owner
of the option can decide to exercise it at any moment, as long as the option has not
expired.
• European options: Can be exercised only upon expiration date. This style is more
common for contracts that are settled directly on cash, such as index-based options.
An option is defined as a derivative of an underlying instrument. The underlying instrument is the asset
whose price is used as the basic value for an option contract. There is no fixed restriction on the type of
asset used and the underlying asset for an option contract, but in practice options tend to be defined based
on openly traded securities. Examples of securities that can be used as the underlying asset for commonly
traded option contracts include the following:
• Common stock: Probably the most common way to use options is to trade call or
put options on common stock. In this way, you can profit largely from small price
changes in stocks of public companies.
• Indices: An index, such as the Dow Industrials or the NASDAQ 100, can be used as
the underlying for an options contract. Options based on indices are traditionally
settled on cash (as explained below), and each unit of value corresponds to multiples
of the current index value.
• Currencies: A currency, usually traded using Forex platforms, can also be used as the
underlying for option contracts. Common currencies such as the U.S. Dollar, Euro,
Japanese Yen, and Swiss Franc are traded 24 hours a day. The related options are
traded on lots of currencies, which are defined according to the relative prices of the
target currencies. Expiration varies similarly to stock options.

4
CHAPTER 1 ■ OPTIONS CONCEPTS

• Commodities: Options can also be written on commodities contracts. A commodity


is a common product that can be traded in large quantities, including agricultural
products such as corn, coffee, and sugar; fuels such as gasoline and crude oil; and
even index-based underlying assets such as the S&P 500. Options can be used to
trade such commodities and trading exchanges now offer options for many of the
commodity types.
• Futures: These are contracts for the future delivery of a particular asset. Many of the
commodity types discussed previously are traded using future contracts, including
gasoline, crude oil, sugar, coffee, and other products. The structure of future
contracts is defined to simplify the trade of products that will only be available in a
due period, such as next fall, for example.
• ETFs (Exchange Traded Funds) and ETN (Exchange Traded Notes): More recently, an
increasing number of funds have started to trade using the same rules applicable to
common stocks in standard exchanges. Such funds are responsible for maintaining
a basket of assets, and their shares are traded daily on exchanges. Examples of
well-known ETFs include funds that hold components of the S&P 500, sectors of the
economy, and even commodities and currency.
Options trading has traditionally been done on stock exchanges, just like other forms of stock and future
trading. One of the most prominent options exchange is the Chicago Board Options Exchange. Many other
exchanges provide support and liquidity for the trading of options for many of the instruments listed here.
The techniques described in this book are useful for options with any of these underlying instruments.
Therefore, you don’t need to worry if the algorithms are applied to stock options of the futures options,
as long as you consider the possible peculiarities of these different contracts, such as their expiration and
exercise.
Options can also be classified according to the relation between the strike price and the price of the
underlying asset. There are three cases that are typically considered:
• An option is said to be out of the money (OTM) when the strike price is above the
current price of the underlying asset (for call options) or when the strike price is
below the current price of the underlying asset (for put options).
• An option is said to be at the money (ATM) when the strike price is close to the
current price of the underlying asset.
• An option is said to be in the money (ITM) when the strike price is below the current
price of the underlying asset (for call options) or when the strike price is above the
current price of the underlying asset (for put options).
Notice that OTM options are cheaper than a similar ATM option, since the OTM options (being away
from the current price of the underlying) have a lower chance of profit than ATM options. Similarly, ATM
options are cheaper than ITM options, because ATM options have less probability of making money than
other ITM options. Notice that, when considering the relation between strike price and underlying price, the
option price reflects the probability that the option will generate any profit.
A related concept is the intrinsic value of an option. The intrinsic value is the part of the value of an
option that can be derived from the difference between strike price and the price of the underlying asset.
For example, consider an ITM call option for a particular stock with a strike of $100. Assume that the current
price for that stock is $102. Therefore, the price of the option must include the $2 difference between the
strike and the price of the underlying, since the holder of a call option can exercise it and have an immediate
profit of $2. Similarly, ITM put options have intrinsic value when the current price of the underlying is above
the strike price, using the same reasoning.

5
CHAPTER 1 ■ OPTIONS CONCEPTS

The break-even price is the price of the underlying at which the owner of an option will start to make a
profit. The break-even price has to include not only the potential profit derived from the intrinsic value, but
also the cost paid for the option. Therefore, for an investor to make a profit on a call option, the price of the
underlying asset has to rise above the strike plus any cost paid for the option (and similarly it has to drop
below the strike minus the option cost for put options). For example, if an $100 MSFT call option has a cost
of $1, then the investor will have a net profit only when the price of MSFT rises above $101 (and this without
considering transaction costs).
As part of the larger picture of investing, options have assumed an important role due to their flexibility
and their profit potential. As a result, new programming problems introduced by the use of options have
come to the forefront of the investment industry, including banks, hedge funds, and other financial
institutions. As you will see in the next section, C++ is the ideal language to create efficient and elegant
solutions to the programming problems occurring with options investing.

Option Greeks
One of the characteristics of derivatives is the determination of quantitative measures that can be essential
in the analysis and pricing of the derivative product. In the case of options, the quantitative measures are
called Greeks, because most of these measures are named after Greek letters. Many of these Greek quantities
correspond to the variation of the price with respect to one or more variables, such as time, strike, or
underlying price.
The most well known option Greek is delta. The delta of an option is defined as the amount of change in
the price of an option when the underlying changes by one unit. Therefore, delta represents a rate of change
of the option in relation to the change in the underlying, and it is essential to understand price variation in
options. Consider, for example, an option for IBM stock that expires in 30 days. The strike price is $100, and
the stock is currently trading at $100. Suppose that the price of the stock increases by $1. It is interesting to
calculate the expected change in the option price. It turns out that when the underlying price is close to the
strike price, the delta of an option is close to 0.5. Expressing this in terms of probabilities, it means the value
of the stock is equality probable to go up or down. Therefore, it makes sense that the change per unit of price
will be just half of the change in the underlying asset.
The value of delta increases as the option becomes more and more in the money. In that case, the delta
gets close to one, since each dollar of change will have a larger impact in the intrinsic value of the option.
Conversely, the value of delta decreases as the option becomes more and more out of the money. In that
case, delta gets closer to zero, since each dollar of change will have less impact on the value of an option that
is out of the money.
The second option Greek that is related to delta is gamma. The gamma of an option is described as
the rate of change of delta with a unit change in price of the underlying. As you have seen, delta changes in
different ways when the option is in the money, out of the money, or at the money. But the rate of change
of delta will also vary depending on other factors. For example, delta will change more quickly if the option
is close to expiration, because there is so little time for a movement to happen. To see why this happen,
consider an option delta 30 days before expiration and one that is one day before expiration. Delta is also
dependent on time, because an option close to expiration has less probability of change. As a result, the
delta will move from zero to one slowly if there are 30 days to go, because there is still plenty of time left
for other changes. But an option with only one day left will quickly move from close to zero delta to near
one, since there is no time left for future changes. This is described by saying that the first option has lower
gamma than the second option. Other factors such as volatility can also change an option gamma. Figure 1-2
illustrates the value of gamma for a particular option at different times before expiration.

6
CHAPTER 1 ■ OPTIONS CONCEPTS

Figure 1-2. Value of gamma at different dates before expiration

Another option Greek that is closely related to time is theta. The theta of an option is proportional to the
time left to expiration, and its value decays when it gets closer to the expiration date. You can think of theta
as a measure of time potential for the option. For option buyers, higher theta is a desirable feature, since
buyers want more probability of changes for their options. On the other hand, option sellers benefit from
decreased theta, so short-term options are ideal for sellers due to the lower theta.
Finally, we have an option Greek that is not really named after a Greek letter: vega. The vega of an
option measures the amount of volatility of the underlying asset that is priced into an option. The higher the
volatility, the more expensive an option has to be in order to account for the increased possibility of pricing
changes. The differential equations that define the price of an option (as you will see in future chapters)
take into account this volatility. Vega can be used to determine how much relative volatility is embedded in
the option price, and an important use of this measure is to help option buyers and sellers determine if this
implied volatility is consistent with their expectations for the future of the underlying prices.
There are other option Greeks that have been used in the academic community and in some financial
application; however, they are not as widespread as the ones mentioned here. You can see a summary of the
most commonly used option Greeks in Table 1-2.

7
CHAPTER 1 ■ OPTIONS CONCEPTS

Table 1-2. Option Greeks and Their Common Meanings

Greek Meaning
Delta The rate of change of the option value with respect to the price of the underlying asset.
Gamma The rate of change of delta with respect to the price of the underlying asset.
Rho The change of the price of the option with respect to changes in interest rates.
Theta The rate of change in the option value with respect to time left to expiration.
Vega The rate of change of the option value with respect to the volatility of the underlying asset.
Lambda The rate of change in the option value with respect to percent changes in the price of the
underlying asset.

Using C++ for Options Programming


C++ has unique features that make it especially useful for programming software for the financial industry.
Over the years, developers have migrated to C++ as a practical way to meet the requirements of numeric,
real-time algorithms used by the investment community. When it comes to creating decision support
software for fast-paced investment strategies, it is very difficult to beat the C++ programming language in the
areas of performance and flexibility.
While it is true that several programming languages are available for the implementation of financial
software, very few of them provide the combination of advantages available when using C++. Let’s look at
some of the areas where C++ provides a unique advantage when compared to other programming languages
that could be used to implement investment software.

Availability
When looking for a programming language to implement investment software, one of the first concerns
you need to address is the ability to run the code in a variety of computational environments. Targets for
such investment software can range from small and mobile processors to large-scale parallel systems
and supercomputers. Moreover, it is not uncommon to have to interact with different operating systems,
including the common software platforms based on Linux, Windows, and MacOS X.
Because modern computer systems are so heterogeneous, it makes economic sense to use languages
that can be employed in a large variety of hardware and software configurations with little or no source
code modifications. Financial programmers also work on different platforms, which makes it even more
interesting to use software that can run in different computers and operating systems with little or no
changes.
A strong characteristic of C++ is its wide availability over different platforms. Due to its early success
as a multi-paradigm language, C++ has been ported to nearly any imaginable software and hardware
combination. While other mainstream languages such as Java require the implementation of a complex
runtime environment for proper operation, C++ was designed from the beginning with simplicity and
portability in mind. The language does not require a runtime system, and only a minimal support system,
provided by the C++ standard library, needs to work in order to support a new target. Therefore, it is
relatively easy to port C++ compilers and build systems to new platforms with minimal changes.
Another advantage is the availability of multiple compilers provided by commercial vendors as well as
free software. Given the importance of C++ software, it is possible to find compilers with both free and under
commercial licenses, so that you can use the scheme that best suits your objectives. Open source developers
can use state-of-the-art free compilers such as gcc and LLVM cc. Commercial groups, on the other hand, can
take advantage of compilers licensed by companies such as Intel and IBM.

8
CHAPTER 1 ■ OPTIONS CONCEPTS

Performance
It is fact that programmers using C++ benefit from the high performance provided by the language. Because
C++ was explicitly designed to require a minimum amount of overhead in most platforms, typical C++
programs run very efficiently, even without further optimization steps. Programs naturally coded in C++ will
frequently outperform code created in other languages, even when this software has been heavily optimized.
Part of the performance advantage provided by C++ is a result of mature compilers and other building
tools. Since C++ is such a well-established language, major companies as well as well-known open source
projects have created optimized compilers for the language. Common examples include gcc, Visual C++,
LLVM cc, and Intel cc. Such compilers provide huge speed improvements in typical running time, frequently
beating non-optimized (and even optimized) code that is produced by other languages.
When considering performance, C++ shares the same philosophy of the C programming language.
The general idea is to provide high-level features, while avoiding whenever possible any overhead on the
implementation of such features on common processors. This means that the features provided by C++
generally match very closely with low-level processor instructions.
Other solutions for improved performance in C++ include the use of templates in addition to runtime
polymorphism. With templates, the compiler can generate code that matches the types used in a particular
algorithm exactly. In this way, programs can avoid the large overhead of polymorphic code, which need to
made different runtime decisions depending on the particular type. Programmers can control algorithms in
a much finer grained scale when using templates, while still retaining the ability to use high-level types.
Last but not least, C++ simplifies the use of memory and other resources with the help of smart pointers
and other techniques based on RAII (Resource Acquisition Is Initialization). These techniques allow C++
programs to control memory usage without having to rely on a runtime GC (garbage collection) system. By
using such strategies, C++ programmers can considerably reduce the overhead of frequently used dynamic
algorithms, without the need to resort to manual bookkeeping of memory and other resources.

Standardization
Another great advantage of C++ is that it’s based on an international standard, which is recognized
by practically every software vendor. Unlike some languages that are practically defined by an actual
implementation or controlled by a powerful company, C++ has for decades being defined as the result of the
C++ committee, with representatives from major companies and organizations that have an interest in the
future development of the language.
In fact, some of the big financial companies also have representatives in the C++ committee. This
means that the future of C++ is not controlled by a single institution, such as what happens with Java
(controlled by Oracle), C# (controlled by Microsoft), or Objective-C and Swift (controlled by Apple). The fact
that the standards committee has members from several organizations protects its users from commercial
manipulation that would benefit a single company, to the detriment of the larger community of users.
The C++ standards committee has been effective in improving the language in ways that address many
of the modern needs of programmers. For example, the last two version of the language standard (C++11
and C++14) introduced many changes that simplify common aspects of programming, such as simpler
initialization methods, more advanced type detection, and generalized control structures.
The standard library has also been the target of many improvements over the last few years. A main
focus has been the introduction of containers and smart pointers, which can be used to simplify a large part
of modern applications. The standard library also has been augmented to support parallel and multithreaded
algorithms, using primitives that can be reused on different operating systems and architectures.
It is necessary to remember that the standardization process has a few drawbacks too. One of the issues
is the time it takes to introduce new features. Since the standardization process requires a lot of organization
and formal meetings, it takes several years before a new version of the standard is approved. Also, there
is the risk of including features that go against the previous design of the language. In this case, however,
the committee has been very careful in introducing only features that have been thoroughly tested and
considered to improve the language according to its philosophy.
9
Another Random Scribd Document
with Unrelated Content
ils eurent recours aux prières, et obtinrent encore la paix. Constance
retourna à Milan; et Julien après une campagne qui donna de
l'expérience à ce prince, du courage à ses troupes, et de grandes
espérances aux Gaulois, alla passer l'hiver à Sens [Senones].
[86] Ces peuples sont encore nommés par les auteurs latins
Vithungi.—S.-M.
[87] On voit, par les lois du Code Théodosien, que Constance
était à Milan le 11 avril et le 29 octobre 356; c'est donc dans cet
intervalle de temps qu'il fit la guerre aux Allemans.—S.-M.
[88] Le récit d'Ammien Marcellin, montre qu'il passa par la ville de
Trèves (Treviri), pour faire cette expédition.—S.-M.
Ce ne fut pas pour lui un temps de repos. Il n'avait
pas affaire à des ennemis rassemblés en un corps, An 357.
qui fixassent toutes ses vues sur un seul objet.
C'étaient des essaims de Barbares, tantôt séparés,
tantôt réunis, qu'il était difficile de vaincre, difficile xxii.
même d'atteindre, les uns en-deçà du Rhin, les
autres au-delà, mais toujours prêts à franchir cette Julien assiégé à
Sens.
barrière, et qui partageaient son esprit en autant de
soins, qu'ils occupaient de territoires, et que le Rhin Amm. l. 16, c. 3,
offrait de passages. Il s'agissait d'écarter tous ces 4.
nuages, de ramener dans les postes exposés les Jul. ad Ath. p.
garnisons que la terreur avait dispersées, de 278, ed. Spanh.
pourvoir dans des pays ruinés aux subsistances
d'une armée toujours en mouvement, et dont les marches ne
pouvaient être réglées que sur les courses imprévues des ennemis.
Il venait d'être associé pour la seconde fois à Constance dans le
consulat. Pendant qu'il prenait des mesures pour la campagne
prochaine, une multitude de Barbares vint l'assiéger dans la ville de
Sens. Ils se flattaient d'autant plus de réussir, qu'ils savaient que le
manque de vivres l'avait obligé de séparer une partie de ses
meilleurs corps, et de les distribuer en divers quartiers. Julien fit
fortifier les endroits faibles de la ville; toujours la cuirasse sur le dos,
il se montrait jour et nuit sur les remparts; il brûlait d'impatience d'en
venir aux mains, mais il était retenu par la considération du petit
nombre de ses troupes. Enfin après trente jours de siége, les
Barbares aussi peu constants dans l'exécution que prompts à
entreprendre, perdirent courage et se retirèrent.
Marcellus, quoiqu'il ne fût pas éloigné de Julien, ne
s'était pas mis en peine de le secourir dans un péril xxiii. Disgrace
si pressant. Il avait cru sans doute suivre les de Marcellus.
intentions de Constance. Mais il est dangereux de se
[Julian. ad
prêter aux vues de l'injustice: comme elle dégrade Athen. p. 278,
ceux qui la servent, elle en prend droit de les ed. Spanh.]
mépriser; et souvent pour se disculper, elle se fait Amm. l. 16, c. 4,
honneur de les punir. D'ailleurs Constance voulait 7, et 8.
tenir Julien dans l'abaissement, mais il ne voulait pas
le perdre. La conduite du général excitait les
murmures; l'empereur le sacrifia sans regret à la haine publique: il lui
ôta le commandement, et lui donna ordre de se retirer sur ses terres.
Marcellus prit cependant le parti de venir à la cour, dans l'espérance
de se justifier en chargeant Julien: il comptait sur la faveur que la
calomnie trouvait auprès du prince. Mais le César se doutant de son
dessein, fit partir en même temps son chambellan Euthérius, et lui
confia le soin de le défendre. Marcellus qui ne savait rien de cette
précaution, arrive à Milan, et se plaint hautement de sa disgrace: il
était impétueux et fanfaron. Il se fait introduire au conseil; il déclame
contre Julien avec beaucoup de chaleur: c'était, disait-il, un jeune
téméraire, un ambitieux qui prenait l'essor au point de ne plus
reconnaitre de supérieur. Après une invective fort animée à laquelle
il n'attendait pas de réponse, il est surpris de voir paraître Euthérius,
qui de sang-froid et d'un ton modeste réfute en peu de mots tous ses
mensonges, développe ses indignes manœuvres, rend un compte
exact de ce qui s'est passé au siége de Sens, et répond sur sa tête
de la fidélité inviolable de son maître. Marcellus confondu se retira à
Sardique sa patrie. Le vertueux Euthérius soutenait à la cour de
Julien le rôle qu'il avait fait inutilement dans celle de Constant.
Sobre, uniforme dans sa conduite, à l'épreuve de tout intérêt, fidèle
et d'un secret impénétrable, il ne profitait de sa faveur que pour
inspirer les mêmes vertus au jeune prince. Il s'efforçait de corriger
par ses sages conseils ce que l'éducation asiatique avait laissé de
léger et de frivole dans le caractère de Julien. Aussi ce rare
courtisan eut-il un bonheur presque inconnu aux favoris: sa
considération survécut à son maître; il ne fut pas obligé dans sa
vieillesse d'aller cacher dans une retraite voluptueuse des richesses
odieuses et injustement acquises. Il passa ses dernières années à
Rome, jouissant du repos d'une bonne conscience, chéri et honoré
de tous les ordres de l'état.
La Gaule commençait à respirer; mais les défiances
perpétuelles de Constance rendaient sa cour un xxiv. Etat de la
séjour moins assuré que la Gaule. Les délateurs, cour de
plus dangereux que les Barbares, étaient Constance.
secrètement excités par les favoris qui profitaient Amm. l. 13, c. 6
des confiscations. Rufin préfet du prétoire, Arbétion et 8.
général de la cavalerie, l'eunuque Eusèbe et Cod. Th. lib. 9,
plusieurs autres s'enrichissaient de condamnations. tit. 16, leg. 4, 5,
Tout était crime de lèse-majesté: la sottise même et 6.
la superstition devenaient un attentat contre le
prince; et s'il en faut croire Ammien, ce fut moins par zèle pour la
religion chrétienne, que par l'effet d'une crainte pusillanime, que
Constance fit en ce temps là plusieurs lois qui condamnaient à mort
et les devins et ceux qui les consultaient. Un autre Rufin, ce chef des
officiers de la préfecture, qui avait gagné les bonnes graces du
prince en accusant Africanus, ayant corrompu la femme d'un certain
Danus, habitant de la Dalmatie, l'engagea à prendre la voie la moins
périlleuse pour se défaire de son mari: c'était de l'accuser d'une
conspiration contre l'empereur. Selon les instructions de ce fourbe,
elle supposa que Danus aidé de plusieurs complices avait dérobé le
manteau de pourpre renfermé dans le tombeau de Dioclétien. Rufin
accourt à Milan pour déférer ce forfait à l'empereur. Heureusement
pour l'innocence, Constance chargea cette fois de l'information deux
hommes incorruptibles; c'étaient Lollianus[89] préfet du prétoire
d'Italie, et Ursulus surintendant des finances[90]. Ils se transportent
sur les lieux; l'affaire est traitée à la rigueur; on met à la question les
accusés. Leur constance à nier le crime embarrassait les
commissaires; enfin la vérité éclata: la femme pressée elle-même
par les tourments avoua son intrigue avec Rufin; ils furent tous deux
condamnés à mort, comme ils ne l'avaient que trop méritée. Mais
Constance, irrité d'avoir perdu dans Rufin un zélé serviteur, envoie
en diligence à Ursulus une lettre menaçante, avec ordre de se
rendre à la cour. Ursulus, malgré ses amis qui tremblaient pour lui,
vient hardiment, se présente au conseil, rend compte de sa conduite
et de celle de Lollianus avec tant de fermeté, qu'il impose silence
aux flatteurs, et force l'empereur d'étouffer son injuste ressentiment.
Les innocents ne furent pas tous aussi heureux que Danus. Une
maison fort riche fut ruinée dans l'Aquitaine, parce qu'un délateur
invité à un repas, ayant aperçu sur la table et sur les lits qui
l'environnaient quelques morceaux de pourpre, prétendit qu'ils
faisaient partie d'une robe impériale; il s'en saisit, les alla présenter
aux juges, qui ordonnèrent une recherche exacte pour découvrir où
pouvait être le reste de la robe. On ne trouva rien, mais la maison fut
pillée. Il y avait en Espagne une coutume singulière dans les festins:
au déclin du jour, quand les valets apportaient les lumières, ils
disaient à haute voix aux convives: Vivons, il faut mourir. Un agent
du prince qui avait assisté à un de ces repas, fit un crime de ce qui
n'était qu'un usage; il sut si bien envenimer ces paroles, qu'il y
trouva de quoi perdre une honnête famille. Arbétion, l'un des
principaux auteurs de ces calomnies, se vit lui-même sur le point de
succomber. On employa contre lui ses propres artifices. Le comte
Vérissimus l'accusa de porter ses vues jusqu'à l'empire, et de s'être
fait faire d'avance les ornements impériaux. Dorus, dont nous avons
déja parlé, se mit de la partie. On commença l'instruction du procès;
on s'assura des amis d'Arbétion: le public attendait avec impatience
la conviction de ce personnage odieux. Mais la sollicitation des
chambellans du prince arrêta tout à coup la procédure; on mit en
liberté ceux qui étaient détenus pour cette affaire: Dorus disparut, et
Vérissimus demeura muet, comme s'il eût oublié son rôle.
[89] Cet officier est appelé Mavortius par Ammien Marcellin, l. 16,
c. 8. Il portait indifféremment ces deux noms. En l'an 352, il avait
été consul avec Arbétion; et en 355, il avait exercé la charge de
préfet de Rome.—S.-M.
[90] Comes largitionum.—S.-M.
L'impératrice Eusébia avait fait un voyage à Rome
l'année précédente, pendant l'expédition de xxv. Constance
Constance en Rhétie. Elle y avait été reçue avec vient à Rome.
magnificence; le sénat était sorti au-devant d'elle. La Jul. or. 3, p.
princesse avait de son côté récompensé par de 129.
grandes largesses l'empressement des habitants. Amm. l. 16, c.
Constance voulut aller à son tour recevoir les 10.
hommages de l'ancienne capitale de l'empire. Son Idat. chron.
dessein était d'y entrer en triomphe pour la victoire Till. not. 39.
qu'il avait remportée sur Magnence. Cette vanité
n'avait point d'exemple chez les anciens Romains,
qui ne voyaient dans les guerres civiles qu'un sujet de larmes, et non
pas une matière de triomphe. Après avoir ordonné tout l'appareil
capable d'éblouir les yeux par la pompe la plus brillante, il prit la
route d'Ocricoli [Ocriculum], escorté de toutes les troupes de sa
maison qui marchaient en ordre de bataille; repaissant de sa gloire
les regards de ceux qui accouraient sur son passage, et se
repaissant lui-même de leurs applaudissements. A son approche de
Rome[91], le sénat étant allé à sa rencontre, le prince enivré de
pompeuses idées s'imaginait voir ces anciens sénateurs supérieurs
aux rois, mais dont ceux-ci n'étaient plus que l'ombre; et cette
immense multitude qui sortait à grands flots des portes de Rome,
semblait lui annoncer tout l'univers rassemblé pour l'admirer.
Précédé d'une partie de sa maison et des enseignes de pourpre qui
flottaient au gré des vents, il entra assis seul sur un char rayonnant
d'or et de pierreries: à droite et à gauche marchaient plusieurs files
de soldats, couverts d'armes éclatantes; chaque bande était séparée
par des escadrons de cavaliers tout revêtus de lames d'un acier poli
et luisant. L'empereur, au milieu des cris de joie qui se mêlaient au
son des trompettes, gardait une contenance roide et immobile; il ne
tournait la tête d'aucun côté; on remarqua seulement qu'il la baissait
au passage des portes, quoiqu'elles fussent fort élevées, et qu'il fût
de fort petite taille: d'ailleurs il n'avait d'autre mouvement que celui
de son char. C'était une gravité de maintien qu'il affecta toute sa vie.
Jaloux de sa dignité, il l'attachait toute entière à la fierté de
l'extérieur: jamais il ne fit monter personne avec lui dans son char;
jamais il ne partagea l'honneur du consulat avec aucun particulier. Il
fut reçu dans le palais des empereurs au bruit des acclamations d'un
peuple innombrable; et sa vanité ne fut jamais plus agréablement
flattée.
[91] Constance entra dans Rome le 28 avril 357.—S.-M.
Pendant un mois qu'il resta dans cette ville fameuse,
elle fut pour lui un spectacle toujours ravissant. xxvi. Il en
Chaque objet ne lui laissait rien attendre de plus admire les
beau, et son admiration ne s'épuisa jamais. Il vit édifices.
cette place digne par sa magnificence d'avoir servi Amm. l. 16, c.
de lieu d'assemblée à un peuple, juge souverain des 10.
rois et des empires; le temple de Jupiter Capitolin, le
plus superbe séjour de l'idolâtrie; ces thermes, qui semblaient autant
de vastes palais; l'amphithéâtre de Vespasien, d'une élévation
surprenante, et dont la solidité promettait encore un grand nombre
de siècles; le Panthéon; les colonnes qui portaient les statues
colossales de ses prédécesseurs; le théâtre de Pompée; l'Odéon; le
grand cirque, et les autres monuments de cette ville qu'on appelait la
ville éternelle. Mais quand on l'eut conduit à la place de Trajan, et
qu'il se vit environné de tout ce que l'architecture avait pu imaginer
de plus noble et de plus sublime, ce fut alors que, confondu et
comme anéanti au milieu de tant de grandeur, il avoua qu'il ne
pouvait se flatter de faire jamais rien de pareil: Mais je pourrais bien,
ajouta-t-il, faire exécuter une statue équestre semblable à celle de
Trajan, et j'ai dessein de le tenter. Sur quoi Hormisdas[92], qui se
trouvait à ses côtés, lui dit: Prince, pour loger un cheval tel que celui-
là, songez auparavant à lui bâtir une aussi belle écurie. Comme on
demandait au même Hormisdas ce qu'il pensait de Rome: Il n'y a,
dit-il, qu'une chose qui m'en déplaise[93]; c'est que j'ai ouï dire qu'on
y meurt comme dans le moindre village.
[92] Frère du roi de Perse Sapor, qui s'était retiré chez les
Romains. Voyez ce qui a été dit à son sujet, l. iv, § 1, 2 et 3.—S.-
M.
[93] On trouve dans le texte d'Ammien Marcellin, Id tantum sibi
placuisse aiebat, quod didicisset ibi quoque homines mori. Au lieu
de placuisse, une note placée à la marge du manuscrit porte
displicuisse.—S.-M.

Constance frappé de tant de merveilles accusait la


renommée d'injustice et de jalousie à l'égard de xxvii.
Rome, dont, disait-il, elle diminuait les beautés, Obélisques.
tandis qu'elle se plaît à exagérer tout le reste. Il Amm. l. 17, c. 4.
voulut payer à cette ville le plaisir qu'elle lui avait Baronius.
procuré, et y ajouter quelque nouvel ornement. Gruter, p. 136,
Auguste y avait fait transporter d'Héliopolis, ville de no 3.
la basse Égypte, deux obélisques, dont l'un avait été
placé dans le grand cirque, l'autre dans le champ de Mars. Il en était
resté un troisième plus grand que les deux autres: il avait de hauteur
cent trente-deux pieds, et était chargé de caractères hiéroglyphiques
qui contenaient des éloges de Ramessès[94]. Les flatteurs, pour
donner à Constance quelque avantage sur Auguste, lui persuadaient
que la difficulté du transport avait empêché ce prince de
l'entreprendre. Mais en effet, c'était par un sentiment de religion
qu'Auguste avait laissé cet obélisque dans le temple du soleil,
auquel il était consacré. Constantin, qui n'était pas retenu par le
même scrupule, avait donné ordre de l'enlever: il le destinait à
l'embellissement de sa nouvelle ville. On le transporta par le Nil à
Alexandrie, où il resta couché sur terre en attendant qu'on eût
construit un vaisseau propre à porter une masse si prodigieuse: ce
vaisseau devait être monté de trois cents rameurs. Constantin étant
mort avant que ce dessein fût exécuté, Constance changea la
destination de l'obélisque, et le fit venir à Rome par mer et par le
Tibre. On ne put le faire remonter que jusqu'à trois milles de la
ville[95]. De là il fallut le conduire sur des traîneaux jusqu'au milieu
du grand cirque, où l'on vint à bout de le dresser à force de
machines. On plaça sur la pointe une boule de bronze doré; et
lorsqu'elle eut été peu après abattue d'un coup de foudre, on mit à la
place des flammes de même métal. C'est le même obélisque que
Sixte V a fait rétablir et dresser dans la place de Saint-Jean-de-
Latran[96].
[94] Il paraît qu'il y a confusion ici. Lebeau n'a pas bien entendu
ce que dit Ammien Marcellin au sujet de l'obélisque égyptien
élevé par Constance. Cet auteur ne dit rien sur ce que pouvaient
contenir les inscriptions hiéroglyphiques, placées sur ce
monument; mais il donne l'interprétation grecque dont nous
n'avons plus qu'une portion, faite par un certain Hermapion, des
légendes égyptiennes, inscrites sur l'ancien obélisque du Cirque.
Notarum textus obelisco incisus est veteri, quem videmus in
Circo. C'est sur cet obélisque que se trouvent les louanges du roi
Ramessès ou Sésostris le Grand. On ignore si l'obélisque, dont
nous avons en partie la traduction, est un de ceux dont Rome est
décorée, ou s'il est encore enfoui sous les ruines de cette ville.
Voyez ce que j'ai dit à ce sujet dans la Biographie universelle, art.
Ramessès, tome xxxvii.—S.-M.
[95] Dans un lieu nommé le bourg d'Alexandre, vicus Alexandri, à
trois milles de Rome, tertio lapide ab Urbe. Il entra par la porte
d'Ostie, et traversa la grande piscine pour arriver au grand cirque.
—S.-M.
[96] Il n'est pas bien certain que ce soit là le monument qui fut
élevé par les ordres de Constance. D'autres pensent que c'est
celui de la porte du peuple, désigné sous le nom de Flaminien.
Quoi qu'il en soit sur ce point, toujours est-il que l'obélisque de S.
Jean de Latran fut érigé pour la première fois en Égypte par
Thethmosis, le septième des rois de la dix-huitième des dynasties
Égyptiennes, dont le règne remonte à l'an 1676 avant J.-C.—S.-
M.
La splendeur de Rome inspira à Constance des
égards pour les habitants. Avant son entrée, il avait xxviii. Conduite
fait enlever de la salle du sénat l'autel de la Victoire, de Constance à
que Magnence avait permis d'y replacer; mais il ne Rome.
porta aucune atteinte aux priviléges des vestales, Amm. l. 16, c.
qui subsistèrent jusque vers la fin du règne de 10.
Théodose-le-Grand. Il conféra les sacerdoces aux Themist. or. 3,
païens distingués par leur naissance: il ne retrancha p. 41 et 44, et
rien des fonds destinés aux frais des sacrifices. or. 4, p. 50, 53
Précédé du sénat qui triomphait de joie, il parcourut et 54.
toutes les rues de Rome, visita tous les temples, lut Symm. l. 10, ep.
les inscriptions gravées en l'honneur des dieux; se fit 54.
raconter l'origine de ces édifices, et donna des [Ambros. epist.
louanges aux fondateurs. Il en fit assez pour plaire 18, t. 2, p. 841.]
aux païens; mais il en fit trop au gré de la religion Idat. chron.
chrétienne: cette vaine complaisance s'écartait du
plan de Constantin. Dans les courses de chevaux
qu'il donna plusieurs fois, loin de s'offenser de la liberté du peuple,
qui dans ces occasions s'émancipait souvent jusqu'à plaisanter aux
dépens de ses maîtres, il parut lui-même s'en divertir. Il ne gêna
point le spectacle, comme c'était sa coutume dans les autres villes,
en le faisant cesser à son gré; il ne voulut influer en rien sur la
décision de la victoire. Il finissait la vingtième année de son règne, et
approchait de la trente-cinquième depuis qu'il avait été créé César:
ce fut pour solenniser l'une ou l'autre de ces deux époques qu'il fit,
selon l'usage, célébrer des jeux dans tout l'empire. Plusieurs villes
lui envoyèrent des couronnes d'or d'un grand poids. Constantinople
lui rendit cet hommage par une députation de ses principaux
sénateurs, du nombre desquels devait être Thémistius, dont
l'éloquence était célèbre. L'empereur pour honorer ses talents lui
avait donné une place dans le sénat. Thémistius, n'ayant pu venir à
Rome à cause d'une indisposition, envoya à l'empereur le discours
qu'il avait composé. Constance l'en récompensa en lui faisant ériger
à Constantinople une statue d'airain; et l'orateur, pour ne pas
demeurer en reste, prononça encore dans le sénat dont il était
membre, un autre discours, où il n'oublia pas de prodiguer les
éloges qu'on n'épargne guère aux princes les plus médiocres,
lorsque la vanité de l'orateur s'évertue à disputer contre la stérilité de
sa matière.
Dans le séjour de Rome, Eusébia fit une action
exécrable, et capable de ternir encore plus de belles xxix.
qualités qu'elle n'en possédait. Elle était stérile et Méchanceté
jalouse, jusqu'à la fureur, d'Hélène, femme de Julien. d'Eusébia.
Dès l'année précédente, Hélène était accouchée Amm. l. 16, c.
dans la Gaule d'un enfant mâle. Mais la sage- 10.
femme, corrompue par argent, avait fait périr l'enfant
au moment de sa naissance. L'impératrice ayant, sous une fausse
apparence de tendresse, engagé sa belle-sœur à l'accompagner à
Rome, lui fit avaler un breuvage meurtrier, propre à servir sa
criminelle jalousie, et à tarir dans les flancs d'Hélène la source de sa
fécondité.
L'empereur aurait fort désiré de s'arrêter plus long-
temps dans une ville où la majesté romaine respirait xxx.
encore, du moins dans les édifices; mais le bruit des Mouvements
incursions des Barbares l'obligeait de se rapprocher des Barbares.
des frontières. Les Suèves couraient la Rhétie; les
Quades, la Valérie; les Sarmates exercés au Amm. l. 16, c. 9
brigandage ravageaient la Mésie supérieure et la et 10, et l. 17, c.
seconde Pannonie; en Orient, les Perses envoyaient 5.
sans cesse des partis qui, voltigeant çà et là,
enlevaient les hommes et les troupeaux. Les garnisons romaines
étaient continuellement en alerte, soit pour empêcher leurs pillages,
soit pour leur enlever le butin. Musonianus, préfet du prétoire, de
concert avec Cassianus, duc de la Mésopotamie, homme de service
et d'expérience, entretenait des espions qui lui donnaient avis de
tous les projets des ennemis. Il apprit par leur moyen, que Sapor
était engagé dans une guerre difficile et sanglante contre les
Chionites, les Eusènes et les Gélanes[97], peuples barbares voisins
de ses états. Il crut la conjoncture favorable pour déterminer ce
prince à traiter avec l'empereur. Dans cette pensée il envoie à
Tamsapor[98], général des Perses cantonnés sur la frontière, des
officiers déguisés, qui, dans des entrevues secrètes, lui
persuadèrent d'écrire à son maître, et de le porter à la paix.
Tamsapor se chargea de la proposition; mais comme Sapor était
occupé à l'autre extrémité de la Perse, sa réponse ne vint que
l'année suivante. Ces diverses alarmes contraignirent Constance de
quitter Rome le 29 mai, trente et un jours après son arrivée.
[97] J'ignore quels étaient les deux premiers de ces peuples. Pour
les Gélanes, ils doivent être les Gilaniens des modernes, qui
occupent le Gilan, province au sud-ouest de la mer Caspienne. Ils
étaient déja appelés Gelæ par les anciens. Il serait cependant
possible que les Chionites fussent les mêmes que les Huns. Ces
peuples étaient déja puissants, et on voit par les auteurs
arméniens qu'ils faisaient à cette époque des invasions en Asie.
Ils avaient souvent la guerre avec les Perses. Leur nom ne se
prononçait peut-être pas de la même façon en Orient que dans
l'Occident, ce qui nous empêcherait de le reconnaître.—S.-M.
[98] Le nom de ce personnage est en persan Tenschahpour.—S.-
M.
Il fut témoin de l'attachement des Romains pour le
pape Libérius, et de leur aversion pour Félix. On xxxi. Les
regardait celui-ci comme un intrus: on disputait à son dames
clergé tous les priviléges ecclésiastiques; et sur la fin romaines
de l'année l'empereur fut obligé de les confirmer par demandent le
deux lois, dont l'une est adressée à Félix. Avant son retour de
départ de Rome, il reçut à ce sujet une députation Libérius.
tout-à-fait extraordinaire. Les femmes des magistrats Theod. l. 2, c.
et des citoyens les plus distingués, ayant concerté 17.
ensemble, pressèrent leurs maris de se réunir pour Soz. l. 4, c. 11.
demander à l'empereur le retour de Libérius; elles Cod. Th. lib. 16;
les menaçaient de les abandonner, s'ils ne tit. 2, leg. 13 et
l'obtenaient, et d'aller trouver leur évêque dans son 14.
exil. Les maris s'en excusèrent sur la crainte Till. Arian. art.
d'offenser l'empereur, qui regarderait cette démarche 67.
comme l'effet d'une cabale séditieuse: Chargez-vous
vous-mêmes de cette requête, leur dirent-ils; s'il vous refuse, du
moins ne vous en arrivera-t-il aucun mal. Elles suivirent ce conseil;
et s'étant parées de leurs plus beaux habits, elles vont se jeter aux
pieds de l'empereur, et le supplient d'avoir pitié de Rome privée de
son pasteur et livrée à des loups ravissants. Constance leur ayant
répondu qu'elles avaient un vrai pasteur dans la personne de Félix,
elles jettent de grands cris, et ne témoignent que de l'horreur pour ce
faux prélat. Le prince promet de les satisfaire; il expédie aussitôt des
lettres de rappel en faveur de Libérius, à condition qu'il gouvernera
l'église de Rome conjointement avec Félix; et pour calmer le peuple,
on fait dans le cirque la lecture de ces lettres. Le peuple s'en moque;
il s'écrie que rien n'est mieux imaginé; qu'apparemment comme il y a
dans le cirque deux factions distinguées par les couleurs, on veut
qu'elles aient chacune leur évêque. Enfin toutes les voix se
réunissent pour crier: Un Dieu, un Christ, un évêque. Constance,
confus de ces clameurs, tint conseil avec les prélats qui suivaient la
cour, et consentit à rétablir Libérius, pourvu qu'il voulût se réunir de
sentiment avec eux.
L'empereur retourna à Milan[99], d'où, étant allé en
Illyrie[100] vers le milieu de juillet, il resta trois ou xxxii. Affaires
quatre mois dans cette province[101], afin d'observer de l'église.
de plus près les mouvements des Barbares; mais il Ath. ad monach.
s'occupait bien davantage des affaires de l'église. t. 1, p. 368; de
Les Ariens étaient dans une agitation perpétuelle. fuga, p. 322 et
323, et epist. ad
Semblables, dit saint Athanase, à des gens inquiets episc. c. 6, p.
qui changent sans cesse leur testament, à peine 276.
avaient-ils tracé une formule, qu'ils en composaient Hilar. de synod.
une nouvelle. Quelques-uns d'entre eux s'étant p. 1151, 1155 et
assemblés à Sirmium sur la fin de juillet, y 1201, et in
Const. p. 1237-
dressèrent un formulaire impie, qu'on appela le 1260.
blasphème de Sirmium. L'auteur fut Potamius,
évêque de Lisbonne, d'abord catholique, ensuite Hieron. de
script. eccl. c.
attiré au parti des Ariens par une libéralité de 97, t. 2, p. 918.
l'empereur. Ce prince lui fit présent d'une terre du
domaine qu'il souhaitait avec passion; mais dont il Rufin. l. 10, c.
27.
ne jouit jamais, ayant été frappé d'une plaie mortelle,
comme il allait s'en mettre en possession. Osius, ce S. Aug. l. 1,
héros de la foi, qui jusqu'à l'âge de plus de cent ans contra Parmen.
c. 4, 5, 8, t. 9, p.
avait triomphé des plus rudes persécutions, retenu 15-19.
depuis un an à Sirmium, outragé dans la personne
Sulp. Sev. l. 2,
de ses parents que l'empereur accablait d'injustices,
c. 56.
maltraité lui-même et meurtri de coups malgré son
grand âge, succomba enfin; et sa chute fut pour Socr. l. 2, c. 30
et 31.
toute l'église un sujet de deuil. Il signa la nouvelle
confession arienne, et communiqua avec Ursacius et Soz. l. 4, c. 12
Valens. Il avait mille fois exposé sa vie; mais, dit et 15
saint Hilaire, il aima trop son sépulcre, c'est-à-dire, Philost. l. 4, c.
son corps cassé de vieillesse. On ne put pourtant le 3.
forcer à souscrire à la condamnation d'Athanase; et Petav. ad Epiph.
peu de temps après étant de retour à Cordoue, p. 316.
comme il se sentait près de mourir, il protesta contre Baronius.
la violence qu'on lui avait faite, et anathématisa les Hermant, vie de
Ariens. Il mourut après soixante-deux ou soixante- S. Athan. l. 8, c.
trois ans d'épiscopat. Une autre plaie encore plus 2, 3, 4, 5.
sensible à l'église, et qui pénétra jusqu'à ses Eclairc.
entrailles, ce fut la prévarication du premier pontife. Till. Arian. art.
Libérius, dont la sainteté et la constance apostolique 68, 69; et Osius,
avaient fait jusqu'alors l'admiration de tous les art. 9.
fidèles, ne pouvant plus résister à l'ennui et aux Fleury, l. 13, c.
incommodités de son exil, menacé de la mort, privé 46.
de la consolation qu'il tirait de ses ecclésiastiques
qu'on sépara de lui, céda enfin aux sollicitations de Vita Athan. in
Fortunatianus d'Aquilée et de Démophile de Bérhée: edit. Benecdict.
celui-ci obsédait ce saint pontife, et travaillait sans t. 1, p. 71.
cesse à aigrir ses maux, plus encore par ses
pernicieux conseils que par ses mauvais traitements. Libérius signa
la formule de Sirmium, renonça à la communion d'Athanase, et
embrassa celle des Ariens. Les lettres qu'il écrivit ensuite au clergé
de Rome, à l'empereur, aux évêques d'Orient, à Ursacius et à
Valens, à Vincent de Capoue, comparées avec cette conférence
généreuse où, confondant Constance, il s'était attiré un glorieux exil,
montrent de quelle hauteur peuvent tomber les ames les plus
élevées, et sont de tristes monuments de la faiblesse humaine. Des
auteurs respectables le déchargent du moins de l'accusation
d'hérésie: ils prétendent qu'il ne signa pas la seconde formule de
Sirmium où la consubstantialité était condamnée, mais la première,
dressée en 351, ou la troisième faite, selon quelques-uns, en 358,
dans lesquelles le terme de consubstantiel était seulement
supprimé. Nous laissons ces discussions aux théologiens à qui elles
appartiennent. Les humbles supplications du faible pontife ne purent
encore cette année obtenir de l'empereur qu'il fût rétabli dans son
église.
[99] Constance était à Milan, le 3 juin 357; il s'y trouvait encore le
13 juillet.—S.-M.
[100] Selon Ammien Marcellin, l. 16, c. 10, Constance passa par
Trente (Tridentum).—S.-M.
[101] Le 4 et le 6 décembre, il était de retour à Milan, d'où il
repartit bientôt après pour l'Illyrie, où il était le 18 décembre,
comme on le voit par une loi de ce jour, datée de Sirmium.—S.-M.
Constance revenait d'Illyrie à Milan, lorsqu'on lui
présenta sur son chemin un captif fameux. C'était xxxiii.
Chnodomaire roi des Allemans, que Julien lui Dispositions
envoyait comme un hommage de sa victoire. Il est pour la seconde
temps de reprendre la suite des exploits de ce campagne de
prince, et de rendre compte de la seconde Julien.
campagne qu'il fit dans la Gaule. Marcellus ayant été Jul. ad Ath. p.
rappelé, Eusébia profita du mécontentement vrai ou 282 et 283, et,
or. 8, p. 247.
apparent de l'empereur, pour l'engager à donner à Liban. or. 10, t.
Julien un pouvoir plus étendu; et Constance y 2, p. 272.
consentit, parce qu'il n'attendait de ce jeune prince Amm. l. 16, c.
que de médiocres succès. Il n'en souhaitait pas 10 et 11.
davantage. Il lui laissa donc le commandement Zos. l. 3, c. 2.
absolu, et la pleine disposition de toutes les
opérations militaires. Il lui envoya Sévère en la place de Marcellus,
pour agir sous ses ordres. Ce général était un vieux guerrier, habile
dans le métier des armes, mais sans orgueil, sans jalousie, disposé
à obéir comme un simple soldat, plutôt que de troubler les affaires
par un faux point d'honneur. Julien ne fut pas aussi content des
officiers chargés du gouvernement civil. Florentius préfet du prétoire,
homme injuste, intéressé, insensible à la misère du peuple,
s'accordait mal avec le caractère équitable, généreux, compatissant,
que montrait le César. Pentadius autre officier dont on ignore
l'emploi, et qui était peut-être le même qui avait eu tant de part à la
mort de Gallus, esprit remuant et dangereux, ne cessait d'agir
sourdement contre Julien, parce que ce prince éclairait ses
démarches et s'opposait à ses entreprises. Au milieu de ces
contradictions et de ces cabales, Julien eut un bonheur qui arrive
rarement aux princes; il trouva un ami: c'était Salluste, Gaulois de
naissance, plein de fidélité, de lumières et de franchise. Ce sage et
zélé confident partageait ses peines et ses plaisirs, l'éclairait de ses
conseils, le reprenait de ses défauts; et toujours tendre, mais
toujours libre, il savait prêter à la vérité toutes les graces qui la
rendent utile en la rendant aimable. L'empereur en envoyant Sévère
rappela à la cour Ursicin, qui s'ennuyant d'être inutile en Gaule,
revint avec joie à Sirmium. Il fut renvoyé en Orient avec le titre de
général, pour consommer, s'il était possible, l'ouvrage de la paix dont
Musonianus donnait des espérances. Julien avait pendant l'hiver
augmenté ses troupes; il avait enrôlé beaucoup de volontaires; et
ayant découvert dans une ville de la Gaule un magasin de vieilles
armes, il les avait fait réparer et distribuer à ses soldats.
Les Allemans frémissaient du mauvais succès de la
dernière campagne, et ne respiraient que xxxiv. Succès
vengeance. Le pays étant désert, on n'apprenait que de Julien.
fort tard les mouvements des Barbares. Julien après
le siége de Sens [Senones], pour prévenir de Amm. l. 16, c.
pareilles surprises, avait établi depuis les bords du 11.
Rhin des courriers qui se communiquaient l'alarme Liban. or. 10. t.
de bouche en bouche, et la faisaient passer en peu 2, p. 272 et 273.
de temps jusqu'à son quartier. Il fut donc bientôt
averti, et se rendit en diligence à Rheims [Remi]. D'un autre côté
Barbation, devenu général de l'infanterie depuis la mort de Silvanus,
partit d'Italie par ordre de Constance, avec une armée de vingt-cinq
mille hommes, et s'avança vers Bâle[102]. Le projet de l'empereur
était d'enfermer les ennemis entre les deux armées; mais par un
effet de sa défiance ordinaire, il avait défendu à Barbation de se
joindre à Julien. Cependant les Lètes, nation originaire de Gaule,
transplantée ensuite en Germanie[103], et enfin rappelée dans le
pays de Trèves par Maximien, ayant apparemment fait alliance avec
les Allemans, passèrent entre les deux camps, et traversant avec
une promptitude incroyable une partie de la Gaule, ils pénétrèrent
jusqu'à Lyon [Lugdunum]. Leur dessein était de piller cette ville, et
d'y mettre le feu. On n'eut que le temps de barricader les portes; ils
enlevèrent tout ce qui se trouva dans la campagne. A cette nouvelle
le César détache trois corps de sa meilleure cavalerie, pour se saisir
des trois seuls passages par où il savait que les Barbares pouvaient
revenir. Sa prévoyance ne fut pas trompée. Tous furent taillés en
pièces; on reprit sur eux tout le butin: il n'échappa que ceux qui
passèrent auprès du camp de Barbation. Celui-ci, loin de les arrêter,
fit retirer les tribuns Bainobaude et Valentinien[104], depuis empereur,
qui par ordre de Julien étaient venus occuper ces postes[105], et ce
perfide général trompa Constance par un faux rapport: il lui manda
que ces deux officiers ne s'étaient approchés de son camp, que pour
lui débaucher ses soldats. Constance les cassa sans autre examen.
[102] Rauracos venit.—S.-M.
[103] Ammien Marcellin appelle les Lètes des Barbares, c'est-à-
dire des étrangers, Læti Barbari. C'est Zosime, l. 2, c. 54, qui dit
qu'ils étaient une nation gauloise, ἔθνος Γαλατικόν. Rien ne
prouve qu'il faille prendre à la lettre cette expression. Euménius,
dans son panégyrique de Constance Chlore, § 21, nous apprend
que des Lètes et des Francs obtinrent de Maximien ces pays
déserts qui avaient été autrefois occupés par les Nerviens et les
Tréviriens. Sicuti pridem tuo, Diocletiane Aug. jussu supplevit
deserta Thraciæ translatis incolis Asia; sicut postea tuo,
Maximiane Aug. nutu Nerviorum et Trevirorum arva jacentia
Lætus postliminio restitutus, et receptus in leges Francus excoluit.
Il est souvent question, dans la notice de l'empire, des Lètes
Nerviens.—S.-M.
[104] Ils étaient à la tête d'un corps de cavalerie, cum equestribus
turmis quas regebant.—S.-M.
[105] Ce fut un nommé Cella, tribun des Scutaires, qui leur porta
cet ordre de la part de Barbation, et les empêcha d'observer la
retraite des Allemans.—S.-M.
Les Barbares établis en-deçà du Rhin, effrayés de
l'approche des deux armées, songèrent à leur xxxv. Les
sûreté. On ne pouvait aller à eux que par des Allemans
chemins montueux et difficiles. Ils tâchèrent de les chassés des
rendre impraticables par des abatis d'arbres. Une îles du Rhin.
partie se jeta dans les îles du Rhin, et de là ils
insultaient à grands cris les Romains et le César. Afin de châtier leur
insolence, Julien envoya demander à Barbation sept grandes
barques, de celles qu'il avait préparées pour passer le fleuve. Mais
ce général aima mieux les brûler toutes, que d'en prêter une seule à
un prince qu'il haïssait. Julien ne se rebuta pas. Ayant appris des
prisonniers que, dans la saison des grandes chaleurs, les eaux du
fleuve étaient basses en plusieurs endroits, il y fit entrer des troupes
légères à la suite de Bainobaude[106], différent du précédent, et
peut-être son fils. Ces soldats, partie à gué, partie sur leurs boucliers
qui leur servaient de nacelles, gagnèrent l'île la plus prochaine; et
après avoir passé au fil de l'épée tous ceux qui s'y étaient retirés,
sans épargner les femmes ni les enfants, ils y trouvèrent plusieurs
bateaux, à l'aide desquels ils passèrent dans les autres îles. Enfin
lassés de carnage et chargés de butin, ils revinrent sans avoir perdu
un seul homme. Ceux des ennemis qui purent se sauver de ce
massacre, se retirèrent sur la rive opposée.
[106] Il était tribunus Cornutorum.—S.-M.
Les Allemans avaient détruit Saverne [Tabernas ou Tres Tabernas],
place importante[107], qui servait de ce côté-là de boulevard à la
Gaule[108]. Julien la rétablit en peu de temps, y mit
garnison, et la pourvut de vivres pour un an. xxxvi. Mauvais
C'étaient des blés que les Barbares avaient semés, succès de
et que les soldats de Julien moissonnèrent l'épée à Barbation.
la main. Il en resta de quoi nourrir l'armée pendant Amm. l. 16, c.
vingt jours. La malice de Barbation n'avait laissé que 11.
cette ressource. D'un convoi considérable qu'on Liban. or. 10, t.
amenait au camp quelques jours auparavant, il en 2, p. 273.
avait enlevé une partie et brûlé le reste. Les ennemis Jul. ad Ath. p.
prirent eux-mêmes le soin de punir ce méchant 279, ed. Spanh.
homme. Il venait d'établir un pont de bateaux, et il se
préparait au passage. Les Allemans étant remontés
au-dessus jettent dans le fleuve de grosses pièces de bois, qui
heurtant contre les barques, séparent les unes, brisent les autres, en
coulent plusieurs à fond. En même temps ils profitent de la confusion
où cet accident jettait les Romains; ils passent eux-mêmes le Rhin,
tombent sur Barbation qui prend la fuite avec ses troupes, et le
poursuivent jusqu'au-delà de Bâle[109]. La plus grande partie du
bagage et des valets de l'armée resta au pouvoir des ennemis. Ce
fut là cette année le dernier exploit de Barbation. Ayant distribué ses
soldats dans les quartiers d'hiver, quoiqu'on ne fût encore qu'au
temps de la moisson, il retourna à la cour, pour y faire à Julien par
ses calomnies une autre espèce de guerre, où il était bien plus sûr
de réussir.
[107] Ammien Marcellin la désigne par le mot munimentum.—S.-
M.
[108] Julien parle de cette place dans son discours aux
Athéniens, mais il ne la nomme pas: il dit seulement qu'elle était
voisine de Strasbourg (Ἀργέντορα), près du mont Barsegus πρὸς
τοῦ Βαρσέγου, c'est-à-dire, des Vosges, Vosegus. Les noms
géographiques de la Gaule sont presque toujours altérés dans les
auteurs grecs.—S.-M.
[109] Fugiens adusque Rauracos.—S.-M.
La fuite de Barbation augmenta l'audace des
Barbares. Ils regardaient aussi comme une retraite xxxvii. Les
l'éloignement de Julien, qui s'occupait à fortifier Allemans
Saverne [Tres Tabernas]. Sept rois allemans, viennent
Chnodomaire, Vestralpe, Urius, Ursicin, Sérapion, camper près de
Suomaire et Hortaire, réunissent leurs forces et Strasbourg.
s'approchent des bords du Rhin du côté de Amm. l. 10, c.
Strasbourg [Argentoratum]. Un soldat de la 12.
garde[110], qui, pour éviter la punition d'un crime, Liban. or. 10, t.
avait passé dans leur camp, redoublait leur 2, p. 269 et 273.
confiance en leur assurant, comme il était vrai, que
Julien n'avait avec lui que treize mille hommes. Comptant sur une
victoire certaine, ils envoient fièrement signifier au César qu'il ait à
se retirer d'un pays conquis par leur valeur. Libanius rapporte que
les députés présentèrent à Julien les lettres par lesquelles
Constance avait appelé les Allemans en Gaule du temps de
Magnence, en leur abandonnant la propriété des terres dont ils
pourraient se rendre maîtres: Si vous rejetez ces titres de
possession, ajoutèrent-ils, nous avons assez de forces et de
courage pour une seconde conquête; préparez-vous à combattre.
Julien, sans s'émouvoir, retint dans son camp ces envoyés, sous
prétexte qu'ils n'étaient que des espions, et que le chef des ennemis
ne pouvait être assez hardi pour les faire porteurs de paroles si
insolentes. Ce chef était Chnodomaire, à qui les autres rois avaient
déféré le principal commandement. Fier de ses victoires sur
Décentius, de la ruine de plusieurs grandes villes, et des richesses
de la Gaule qu'il avait long-temps pillée en liberté, il se croyait
invincible; et les entreprises les plus hasardeuses ne l'étonnaient
pas. Son orgueil se communiquait aux autres rois: ce n'était dans
leur camp que menaces et que bravades; et les soldats, voyant
entre les mains de leurs camarades les boucliers de l'armée de
Barbation, regardaient déja les troupes de Julien comme des captifs
qui leur apportaient leurs dépouilles.
[110] Scutarius.—S.-M.
L'armée des Allemans croissait tous les jours. Ils
avaient appelé à cette bataille tous leurs xxxviii. Julien
compatriotes qui étaient en état de porter les armes. marche à leur
Les sujets de Gundomade et de Vadomaire, à qui rencontre.
Constance venait d'accorder la paix, massacrèrent le
premier de ces deux princes qui voulait les retenir, et se rendirent au
camp malgré Vadomaire. Ils employèrent trois jours et trois nuits à
passer le fleuve. Julien qui était bien aise de les attirer en-deçà du
Rhin, ayant appris qu'ils étaient assemblés dans la plaine de
Strasbourg, part de Saverne avant le jour, et fait marcher son armée
en ordre de bataille, les fantassins au centre, sur les aîles les
cavaliers, entre lesquels étaient les gens d'armes tout couverts de
fer et les archers à cheval, troupe redoutable par sa force et par son
adresse. Il se mit à la tête de l'aîle droite, où il avait placé ses
meilleurs corps. Après une marche de sept lieues, ils arrivèrent sur
le midi à la vue des ennemis. Julien ne jugeant pas à propos
d'exposer une armée fatiguée, rappela ses coureurs, et ayant fait
faire halte, il parla ainsi à ses soldats:
«Camarades, je suis bien assuré qu'aucun de vous
ne me soupçonne de craindre l'ennemi, et je compte xxxix. Discours
aussi sur votre bravoure. Mais plus je l'estime, plus de Julien à ses
je dois la ménager, et prendre les moyens les plus troupes.
sûrs pour ne pas acheter trop cher un succès qui
vous est dû. De bons soldats sont fiers et opiniâtres contre les
ennemis; modestes et dociles à l'égard de leur général. Cependant
je ne veux rien décider ici sans votre consentement. Le jour est
avancé, et la lune qui est en décours se refuserait à notre victoire.
Harassés d'une longue marche vous allez trouver un terrain
raboteux et fourré, des sables brûlants et sans eau, un ennemi
reposé et rafraîchi. N'est-il pas à craindre que la faim, la soif, la
fatigue ne nous aient fait perdre une partie de notre vigueur? La
prudence fait prévenir les difficultés, et les dangers disparaissent,
quand on écoute la divinité qui s'explique par les bons conseils.
Celui que je vous donne, c'est de nous retrancher ici, de nous
reposer à l'abri des gardes avancées que j'aurai soin de placer; et
après avoir réparé nos forces par la nourriture et par le sommeil,
nous marcherons aux ennemis à la pointe du jour sous les auspices
de la Providence et de votre valeur.»
Il n'avait pas encore cessé de parler, que ses soldats
l'interrompirent. Frémissant de colère et frappant xl. Ardeur des
leurs boucliers avec leurs piques, ils demandent à troupes.
grands cris qu'on les mène à l'ennemi. Ils comptent
sur la protection du ciel, sur eux-mêmes, sur la capacité et la fortune
de leur général. Ne considérant pas la diversité des circonstances,
ils se croient en droit de mépriser un ennemi, qui l'année précédente
n'a osé dans son propre pays se montrer à l'empereur. Les officiers
ne marquaient pas moins d'impatience. Florentius pensait que,
malgré le péril, il était de la prudence de combattre sans délai: Si les
Barbares viennent à se retirer pendant la nuit, qui pourra, disait-il,
résister à une soldatesque bouillante et séditieuse, que le désespoir
d'avoir manqué une victoire qu'elle regarde comme infaillible portera
aux derniers excès? Dans l'accès de cette ardeur générale, un
enseigne s'écrie: Marche, heureux César, où te guide ton bonheur.
Nous voyons enfin à notre tête la valeur et la science militaire. Tu
vas voir aussi ce qu'un soldat romain trouve de forces sous les yeux
d'un chef guerrier, qui sait faire de grandes actions et en produire
par ses regards.
Julien marche aussitôt; et toute l'armée s'avance
vers un coteau couvert de moissons, qui n'était pas xli. Ordre des
éloigné des bords du Rhin. A son approche trois Barbares.
coureurs ennemis, qui étaient venus jusque-là pour
la reconnaître, s'enfuient à toute bride et vont porter l'alarme à leur
camp. On en atteignit un quatrième qui fuyait à pied, et dont on tira
des instructions. Les deux armées firent halte en présence l'une de
l'autre. Les Barbares, informés par des transfuges de l'ordre de
bataille de Julien, avaient porté sur leur aîle gauche leurs principales
forces. Mais comme ils sentaient la supériorité des gens d'armes
romains, ils avaient jeté entre leurs escadrons des pelotons de
fantassins légèrement armés, qui devaient pendant le combat se
glisser sous le ventre des chevaux, les percer et abattre les
cavaliers. Ils fortifièrent leur aile droite d'un corps d'infanterie qu'ils
postèrent dans un marais entre des roseaux. A la tête de l'armée
paraissaient Chnodomaire et Sérapion, distingués entre les autres
rois. Chnodomaire, auteur de cette guerre, commandait l'aile
gauche, composée des corps les plus renommés, et où se devaient
faire les plus violents efforts. Ce prince était d'une taille
avantageuse; il avait été brave soldat avant que d'être habile
capitaine: il montait un puissant cheval; l'éclat de ses armes, le
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like