lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
src
math
Function.cc
Go to the documentation of this file.
1
/*
2
* LSST Data Management System
3
* Copyright 2008, 2009, 2010 LSST Corporation.
4
*
5
* This product includes software developed by the
6
* LSST Project (http://www.lsst.org/).
7
*
8
* This program is free software: you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation, either version 3 of the License, or
11
* (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the LSST License Statement and
19
* the GNU General Public License along with this program. If not,
20
* see <http://www.lsstcorp.org/LegalNotices/>.
21
*/
22
23
/*
24
* Support routines for
25
*/
26
#include "
lsst/afw/math/FunctionLibrary.h
"
27
#include "
lsst/afw/table/io/Persistable.cc
"
28
29
namespace
lsst
{
30
namespace
afw
{
31
namespace
math
{
32
33
template
<
typename
ReturnT>
34
std::vector<double>
PolynomialFunction2<ReturnT>::getDFuncDParameters
(
double
x,
double
y)
const
{
35
std::vector<double>
coeffs(this->
getNParameters
());
36
37
//
38
// Go through params order by order, evaluating x^r y^s; we do this by first evaluating
39
// y^s for a complete order, then going through again multiplying by x^r
40
//
41
int
i0 = 0;
// starting index for this order's coefficients
42
for
(
int
order = 0; order <= this->
_order
; ++order) {
43
coeffs[i0] = 1;
44
double
zn = y;
// y^s
45
for
(
int
i = 1; i <= order; ++i) {
46
coeffs[i0 + i] = zn;
47
zn *= y;
48
}
49
50
zn = x;
// x^r
51
for
(
int
i = order - 1; i >= 0; --i) {
52
coeffs[i0 + i] *= zn;
53
zn *= x;
54
}
55
56
i0 += order + 1;
57
}
58
59
assert(i0 ==
static_cast<
int
>
(coeffs.
size
()));
60
61
return
coeffs;
62
}
63
64
}
// namespace math
65
67
#define INSTANTIATE(TYPE) \
68
template std::shared_ptr<math::Function<TYPE>> \
69
table::io::PersistableFacade<math::Function<TYPE>>::dynamicCast( \
70
std::shared_ptr<table::io::Persistable> const&); \
71
template std::shared_ptr<math::Function1<TYPE>> \
72
table::io::PersistableFacade<math::Function1<TYPE>>::dynamicCast( \
73
std::shared_ptr<table::io::Persistable> const&); \
74
template std::shared_ptr<math::Function2<TYPE>> \
75
table::io::PersistableFacade<math::Function2<TYPE>>::dynamicCast( \
76
std::shared_ptr<table::io::Persistable> const&); \
77
template std::vector<double> math::PolynomialFunction2<TYPE>::getDFuncDParameters(double x, double y) \
78
const
79
80
INSTANTIATE
(
double
);
81
INSTANTIATE
(
float
);
83
}
// namespace afw
84
}
// namespace lsst
INSTANTIATE
#define INSTANTIATE(FROMSYS, TOSYS)
Definition
Detector.cc:509
FunctionLibrary.h
lsst::afw::math::BasePolynomialFunction2::_order
int _order
order of polynomial
Definition
Function.h:431
lsst::afw::math::Function::getNParameters
unsigned int getNParameters() const noexcept
Return the number of function parameters.
Definition
Function.h:112
lsst::afw::math::PolynomialFunction2::getDFuncDParameters
std::vector< double > getDFuncDParameters(double x, double y) const override
Return the coefficients of the Function's parameters, evaluated at (x, y) I.e.
Definition
Function.cc:34
Persistable.cc
lsst::afw::math
Definition
statistics.dox:6
lsst::afw
Definition
imageAlgorithm.dox:1
lsst
std::vector::size
T size(T... args)
std::vector
Generated on
for lsst.afw by
1.17.0