Coverage Report

Created: 2024-10-11 06:23

/builds/MusicScience37Projects/numerical-analysis/numerical-collection-cpp/include/num_collect/rbf/rbfs/gaussian_rbf.h
Line
Count
Source
1
/*
2
 * Copyright 2024 MusicScience37 (Kenta Kabashima)
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 *     http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16
/*!
17
 * \file
18
 * \brief Definition of gaussian_rbf class.
19
 */
20
#pragma once
21
22
#include <cmath>
23
24
#include "num_collect/base/concepts/real_scalar.h"
25
26
namespace num_collect::rbf::rbfs {
27
28
/*!
29
 * \brief Class of Gaussian RBF \cite Fornberg2015.
30
 *
31
 * \tparam Scalar Type of scalars.
32
 */
33
template <base::concepts::real_scalar Scalar>
34
class gaussian_rbf {
35
public:
36
    //! Type of scalars.
37
    using scalar_type = Scalar;
38
39
    /*!
40
     * \brief Calculate a function value of RBF.
41
     *
42
     * \param[in] distance_rate Rate of distance.
43
     * \return Value of this RBF.
44
     */
45
    [[nodiscard]] auto operator()(
46
226k
        const scalar_type& distance_rate) const noexcept -> scalar_type {
47
226k
        using std::exp;
48
226k
        return exp(-distance_rate * distance_rate);
49
226k
    }
50
};
51
52
}  // namespace num_collect::rbf::rbfs