Coverage Report

Created: 2026-08-14 07:10

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/quantlib/ql/math/integrals/integral.hpp
Line
Count
Source
1
/*
2
 Copyright (C) 2007 François du Vignaud
3
4
 This file is part of QuantLib, a free-software/open-source library
5
 for financial quantitative analysts and developers - http://quantlib.org/
6
7
 QuantLib is free software: you can redistribute it and/or modify it
8
 under the terms of the QuantLib license.  You should have received a
9
 copy of the license along with this program; if not, please email
10
 <quantlib-dev@lists.sf.net>. The license is also available online at
11
 <https://www.quantlib.org/license.shtml>.
12
13
 This program is distributed in the hope that it will be useful, but WITHOUT
14
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15
 FOR A PARTICULAR PURPOSE.  See the license for more details.
16
*/
17
18
/*! \file integral.hpp
19
\brief Integrators base class definition
20
*/
21
22
#ifndef quantlib_math_integrator_hpp
23
#define quantlib_math_integrator_hpp
24
25
#include <ql/types.hpp>
26
#include <functional>
27
28
namespace QuantLib {
29
30
    class Integrator{
31
      public:
32
        Integrator(Real absoluteAccuracy,
33
                   Size maxEvaluations);
34
208k
        virtual ~Integrator() = default;
35
36
        Real operator()(const std::function<Real (Real)>& f,
37
                        Real a,
38
                        Real b) const;
39
40
        //! \name Modifiers
41
        //@{
42
        void setAbsoluteAccuracy(Real);
43
        void setMaxEvaluations(Size);
44
        //@}
45
46
        //! \name Inspectors
47
        //@{
48
        Real absoluteAccuracy() const;
49
        Size maxEvaluations() const;
50
        //@}
51
52
        Real absoluteError() const ;
53
54
        Size numberOfEvaluations() const;
55
56
        virtual bool integrationSuccess() const;
57
58
      protected:
59
        virtual Real integrate(const std::function<Real (Real)>& f,
60
                               Real a,
61
                               Real b) const = 0;
62
        void setAbsoluteError(Real error) const;
63
        void setNumberOfEvaluations(Size evaluations) const;
64
        void increaseNumberOfEvaluations(Size increase) const;
65
      private:
66
        Real absoluteAccuracy_;
67
        mutable Real absoluteError_;
68
        Size maxEvaluations_;
69
        mutable Size evaluations_;
70
    };
71
72
}
73
74
75
#endif