Coverage Report

Created: 2024-10-11 06:23

/builds/MusicScience37Projects/numerical-analysis/numerical-collection-cpp/include/num_collect/rbf/rbfs/inverse_quadratic_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 inverse_quadratic_rbf class.
19
 */
20
#pragma once
21
22
#include "num_collect/base/concepts/real_scalar.h"
23
24
namespace num_collect::rbf::rbfs {
25
26
/*!
27
 * \brief Class of inverse quadratic RBF \cite Fornberg2015.
28
 *
29
 * \tparam Scalar Type of scalars.
30
 */
31
template <base::concepts::real_scalar Scalar>
32
class inverse_quadratic_rbf {
33
public:
34
    //! Type of scalars.
35
    using scalar_type = Scalar;
36
37
    /*!
38
     * \brief Calculate a function value of RBF.
39
     *
40
     * \param[in] distance_rate Rate of distance.
41
     * \return Value of this RBF.
42
     */
43
    [[nodiscard]] auto operator()(
44
321
        const scalar_type& distance_rate) const noexcept -> scalar_type {
45
321
        return static_cast<scalar_type>(1) /
46
321
            (static_cast<scalar_type>(1) + distance_rate * distance_rate);
47
321
    }
48
};
49
50
}  // namespace num_collect::rbf::rbfs