/usr/include/ql/experimental/models/squarerootclvmodel.hpp is in libquantlib0-dev 1.12-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98  | /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 Copyright (C) 2016 Klaus Spanderen
 This file is part of QuantLib, a free-software/open-source library
 for financial quantitative analysts and developers - http://quantlib.org/
 QuantLib is free software: you can redistribute it and/or modify it
 under the terms of the QuantLib license.  You should have received a
 copy of the license along with this program; if not, please email
 <quantlib-dev@lists.sf.net>. The license is also available online at
 <http://quantlib.org/license.shtml>.
 This program is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 FOR A PARTICULAR PURPOSE.  See the license for more details.
*/
/*! \file squarerootclvmodel.hpp
    \brief CLV model with a square root kernel process
*/
#ifndef quantlib_square_root_clv_model_hpp
#define quantlib_square_root_clv_model_hpp
#include <ql/time/date.hpp>
#include <ql/patterns/lazyobject.hpp>
#include <ql/math/interpolations/lagrangeinterpolation.hpp>
#include <ql/math/matrix.hpp>
#include <ql/experimental/math/gaussiannoncentralchisquaredpolynomial.hpp>
#include <boost/function.hpp>
#include <map>
namespace QuantLib {
    class GBSMRNDCalculator;
    class SquareRootProcess;
    class GeneralizedBlackScholesProcess;
    class SquareRootCLVModel : public LazyObject {
      public:
        SquareRootCLVModel(
            const boost::shared_ptr<GeneralizedBlackScholesProcess>& bsProcess,
            const boost::shared_ptr<SquareRootProcess>& sqrtProcess,
            const std::vector<Date>& maturityDates,
            Size lagrangeOrder,
            Real pMax = Null<Real>(),
            Real pMin = Null<Real>());
        // cumulative distribution function of the BS process
        Real cdf(const Date& d, Real x) const;
        // inverse cumulative distribution function of the BS process
        Real invCDF(const Date& d, Real q) const;
        // collocation points of the square root process
        Disposable<Array> collocationPointsX(const Date& d) const;
        // collocation points for the underlying Y
        Disposable<Array> collocationPointsY(const Date& d) const;
        // CLV mapping function
        boost::function<Real(Time, Real)> g() const;
      protected:
        void performCalculations() const;
      private:
        class MappingFunction : public std::binary_function<Time, Real, Real> {
          public:
            explicit MappingFunction(const SquareRootCLVModel& model);
            Real operator()(Time t, Real x) const;
          private:
            const boost::shared_ptr<Matrix> s_, x_;
            typedef std::map<Time, boost::shared_ptr<LagrangeInterpolation> >
                interpl_type;
            interpl_type interpl;
        };
        std::pair<Real, Real> nonCentralChiSquaredParams(const Date& d) const;
        const Real pMax_, pMin_;
        const boost::shared_ptr<GeneralizedBlackScholesProcess> bsProcess_;
        const boost::shared_ptr<SquareRootProcess> sqrtProcess_;
        const std::vector<Date> maturityDates_;
        const Size lagrangeOrder_;
        const boost::shared_ptr<GBSMRNDCalculator> rndCalculator_;
        mutable boost::function<Real(Time, Real)> g_;
    };
}
#endif
 |