LSSTApplications
20.0.0
LSSTDataManagementBasePackage
stack
1a1d771
Linux64
afw
20.0.0
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
y
int y
Definition:
SpanSet.cc:49
std::vector< double >
std::vector::size
T size(T... args)
Persistable.cc
FunctionLibrary.h
lsst::afw
Definition:
imageAlgorithm.dox:1
INSTANTIATE
#define INSTANTIATE(FROMSYS, TOSYS)
Definition:
Detector.cc:484
x
double x
Definition:
ChebyshevBoundedField.cc:277
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
lsst
A base class for image defects.
Definition:
imageAlgorithm.dox:1
Generated on Wed Jun 24 2020 18:10:05 for LSSTApplications by
1.8.18