Coverage Report

Created: 2025-08-05 06:45

/src/quantlib/ql/methods/lattices/lattice1d.hpp
Line
Count
Source (jump to first uncovered line)
1
/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3
/*
4
 Copyright (C) 2005 StatPro Italia srl
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
 <http://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 lattice1d.hpp
21
    \brief One-dimensional lattice class
22
*/
23
24
#ifndef quantlib_tree_lattice_1d_hpp
25
#define quantlib_tree_lattice_1d_hpp
26
27
#include <ql/methods/lattices/lattice.hpp>
28
29
namespace QuantLib {
30
31
    //! One-dimensional tree-based lattice.
32
    /*! Derived classes must implement the following interface:
33
        \code
34
        Real underlying(Size i, Size index) const;
35
        \endcode
36
37
        \ingroup lattices */
38
    template <class Impl>
39
    class TreeLattice1D : public TreeLattice<Impl> {
40
      public:
41
        TreeLattice1D(const TimeGrid& timeGrid, Size n)
42
0
        : TreeLattice<Impl>(timeGrid,n) {}
43
0
        Array grid(Time t) const override {
44
0
            Size i = this->timeGrid().index(t);
45
0
            Array grid(this->impl().size(i));
46
0
            for (Size j=0; j<grid.size(); j++)
47
0
                grid[j] = this->impl().underlying(i,j);
48
0
            return grid;
49
0
        }
50
        Real underlying(Size i, Size index) const {
51
            return this->impl().underlying(i,index);
52
        }
53
    };
54
55
}
56
57
58
#endif