Developer documentation
Version 3.0.3-105-gd3941f44
chebyshev.h
Go to the documentation of this file.
1/* Copyright (c) 2008-2022 the MRtrix3 contributors.
2 *
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 *
7 * Covered Software is provided under this License on an "as is"
8 * basis, without warranty of any kind, either expressed, implied, or
9 * statutory, including, without limitation, warranties that the
10 * Covered Software is free of defects, merchantable, fit for a
11 * particular purpose or non-infringing.
12 * See the Mozilla Public License v. 2.0 for more details.
13 *
14 * For more details, see http://www.mrtrix.org/.
15 */
16
17#ifndef __math_chebyshev_h__
18#define __math_chebyshev_h__
19
20#include "math/math.h"
21
22namespace MR
23{
24 namespace Math
25 {
26 namespace Chebyshev
27 {
28
29 template <typename T> inline T eval (const double* coef, const int order, const T lower, const T upper, const T x)
30 {
31 T y = (2.0*x - lower - upper) / (upper - lower);
32 T d = 0.0, dd = 0.0;
33 for (int i = order; i >= 1; i--) {
34 T temp = d;
35 d = 2.0*y*d - dd + coef[i];
36 dd = temp;
37 }
38 return (y*d - dd + 0.5 * coef[0]);
39 }
40
41 }
42 }
43}
44
45#endif
46
T eval(const double *coef, const int order, const T lower, const T upper, const T x)
Definition: chebyshev.h:29
vector< size_t > order(const HeaderType &header, size_t from_axis=0, size_t to_axis=std::numeric_limits< size_t >::max())
sort range of axes with respect to their absolute stride.
Definition: stride.h:159
Definition: base.h:24