brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 28a58c8 Raw
59 lines · plain
1//  (C) Copyright Nick Thompson 2019.2//  Use, modification and distribution are subject to the3//  Boost Software License, Version 1.0. (See accompanying file4//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)5 6#ifndef BOOST_MATH_INTERPOLATORS_CARDINAL_TRIGONOMETRIC_HPP7#define BOOST_MATH_INTERPOLATORS_CARDINAL_TRIGONOMETRIC_HPP8#include <memory>9#include <boost/math/interpolators/detail/cardinal_trigonometric_detail.hpp>10 11namespace boost { namespace math { namespace interpolators {12 13template<class RandomAccessContainer>14class cardinal_trigonometric15{16public:17    using Real = typename RandomAccessContainer::value_type;18    cardinal_trigonometric(RandomAccessContainer const & v, Real t0, Real h)19    {20        m_impl = std::make_shared<interpolators::detail::cardinal_trigonometric_detail<Real>>(v.data(), v.size(), t0, h);21    }22 23    Real operator()(Real t) const24    {25        return m_impl->operator()(t);26    }27 28    Real prime(Real t) const29    {30        return m_impl->prime(t);31    }32 33    Real double_prime(Real t) const34    {35        return m_impl->double_prime(t);36    }37 38    Real period() const39    {40        return m_impl->period();41    }42 43    Real integrate() const44    {45        return m_impl->integrate();46    }47 48    Real squared_l2() const49    {50        return m_impl->squared_l2();51    }52 53private:54    std::shared_ptr<interpolators::detail::cardinal_trigonometric_detail<Real>> m_impl;55};56 57}}}58#endif59