Coverage Report

Created: 2026-09-28 06:23

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/quantlib/ql/compounding.hpp
Line
Count
Source
1
/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3
/*
4
 Copyright (C) 2004, 2005, 2006, 2007 Ferdinando Ametrano
5
6
 This file is part of QuantLib, a free-software/open-source library
7
 for financial quantitative analysts and developers - http://quantlib.org/
8
9
 QuantLib is free software: you can redistribute it and/or modify it
10
 under the terms of the QuantLib license.  You should have received a
11
 copy of the license along with this program; if not, please email
12
 <quantlib-dev@lists.sf.net>. The license is also available online at
13
 <https://www.quantlib.org/license.shtml>.
14
15
 This program is distributed in the hope that it will be useful, but WITHOUT
16
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17
 FOR A PARTICULAR PURPOSE.  See the license for more details.
18
*/
19
20
/*! \file compounding.hpp
21
    \brief Compounding enumeration
22
*/
23
24
#ifndef quantlib_compounding_hpp
25
#define quantlib_compounding_hpp
26
27
#include <ql/errors.hpp>
28
29
namespace QuantLib {
30
31
    //! Interest rate coumpounding rule
32
    /*! SimpleThenCompounded and CompoundedThenSimple express that the
33
        compounding style depends on the position of the
34
        cashflow. Therefore, they should not be used on their own when
35
        the cashflow position is not available from the context of a
36
        calculation. */
37
    enum Compounding { Simple = 0,          //!< \f$ 1+rt \f$
38
                       Compounded = 1,      //!< \f$ (1+r)^t \f$
39
                       Continuous = 2,      //!< \f$ e^{rt} \f$
40
                       SimpleThenCompounded, //!< Simple up to the first period then Compounded
41
                       CompoundedThenSimple //!< Compounded up to the first period then Simple
42
    };
43
44
0
    inline std::ostream& operator<<(std::ostream& out, const Compounding& compounding) {
45
0
        switch (compounding) {
46
0
            case Compounding::Simple:
47
0
                return out << "Simple";
48
0
            case Compounding::Compounded:
49
0
                return out << "Compounded";
50
0
            case Compounding::Continuous:
51
0
                return out << "Continuous";
52
0
            case Compounding::SimpleThenCompounded:
53
0
                return out << "SimpleThenCompounded";
54
0
            case Compounding::CompoundedThenSimple:
55
0
                return out << "CompoundedThenSimple";
56
0
            default:
57
                QL_FAIL("unknown compounding type");
58
0
        }
59
0
    }
Unexecuted instantiation: QuantLib::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, QuantLib::Compounding const&)
Unexecuted instantiation: QuantLib::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, QuantLib::Compounding const&)
60
}
61
62
#endif