LSST Applications g044012fb7c+304891ab8a,g04a91732dc+4e1b87f259,g07dc498a13+f701f15b83,g114c6a66ad+c7887c1284,g1409bbee79+f701f15b83,g1a7e361dbc+f701f15b83,g1fd858c14a+6ebd102b59,g35bb328faa+0eb18584fe,g3bd4b5ce2c+e83bf4edc8,g4e0f332c67+976ceb6bc8,g53246c7159+0eb18584fe,g5477a8d5ce+51234355ef,g60b5630c4e+c7887c1284,g623d845a50+c7887c1284,g6f0c2978f1+98123c34b6,g71fabbc107+c7887c1284,g75b6c65c88+ce466f4385,g78460c75b0+85633614c8,g786e29fd12+02b9b86fc9,g8852436030+cfe5cf5b7b,g89139ef638+f701f15b83,g9125e01d80+0eb18584fe,g95236ca021+d4f98599f0,g974caa22f6+0eb18584fe,g989de1cb63+f701f15b83,g9f33ca652e+b4908f5dcd,gaaedd4e678+f701f15b83,gabe3b4be73+543c3c03c9,gace736f484+07e57cea59,gb1101e3267+487fd1b06d,gb58c049af0+492386d360,gc99c83e5f0+a513197d39,gcf25f946ba+cfe5cf5b7b,gd0fa69b896+babbe6e5fe,gd6cbbdb0b4+3fef02d88a,gde0f65d7ad+e8379653a2,ge278dab8ac+ae64226a64,gfba249425e+0eb18584fe,w.2025.07
LSST Data Management Base Package
Loading...
Searching...
No Matches
lsst::geom::polynomials::Function1d< Basis > Class Template Reference

A 1-d function defined by a series expansion and its coefficients. More...

#include <Function1d.h>

Public Types

using iterator = double *
 
using const_iterator = double const *
 
using Basis = Basis_
 The basis type used by this function.
 

Public Member Functions

 Function1d (Basis const &basis)
 Construct with zero-valued coefficients.
 
 Function1d (Basis const &basis, Eigen::VectorXd const &coefficients)
 Construct with coefficients from an Eigen object.
 
template<typename Iterator >
 Function1d (Basis const &basis, Iterator first, Iterator last)
 Construct by copying coefficients from an STL iterator range.
 
 Function1d (Function1d const &)=default
 Default copy constructor.
 
 Function1d (Function1d &&)=default
 Default move constructor.
 
Function1doperator= (Function1d const &)=default
 Default copy assignment.
 
Function1doperator= (Function1d &&)=default
 Default move assignment.
 
iterator begin ()
 Iterators over coefficients.
 
iterator end ()
 
const_iterator cbegin () const
 
const_iterator cend () const
 
const_iterator begin () const
 
const_iterator end () const
 
Basis const & getBasis () const
 Return the associated Basis1d object.
 
std::size_t size () const
 Return the number of coefficients.
 
double operator() (double x, SumMode mode=SumMode::FAST) const
 Evaluate the function at the given point.
 
double & operator[] (std::size_t n)
 Return the coefficient associated with the nth basis function.
 
double const & operator[] (std::size_t n) const
 
auto getCoefficients ()
 Return the coefficient vector as an Eigen matrix-like object.
 
auto getCoefficients () const
 
Function1d< typename Basis::Scaled > scaled (Scaling1d const &scaling) const
 Return a new function that applies the given scaling to all points before evaluation.
 

Detailed Description

template<typename Basis>
class lsst::geom::polynomials::Function1d< Basis >

A 1-d function defined by a series expansion and its coefficients.

A Function1d combines a Basis1d that defines basis functions \(B_n(x)\) with a vector of associated coefficients \(a_n\). Evaluating the function computes

\[ \sum_{n=0}^{n \le N} a_n B_n(x) \]

Definition at line 31 of file ScaledBasis1d.h.

Member Typedef Documentation

◆ Basis

template<typename Basis >
using lsst::geom::polynomials::Function1d< Basis >::Basis = Basis_

The basis type used by this function.

Definition at line 49 of file Function1d.h.

◆ const_iterator

template<typename Basis >
using lsst::geom::polynomials::Function1d< Basis >::const_iterator = double const *

Definition at line 46 of file Function1d.h.

◆ iterator

template<typename Basis >
using lsst::geom::polynomials::Function1d< Basis >::iterator = double *

Definition at line 45 of file Function1d.h.

Constructor & Destructor Documentation

◆ Function1d() [1/5]

template<typename Basis >
lsst::geom::polynomials::Function1d< Basis >::Function1d ( Basis const & basis)
inlineexplicit

Construct with zero-valued coefficients.

Definition at line 52 of file Function1d.h.

52 :
53 _basis(basis),
54 _coefficients(Eigen::VectorXd::Zero(basis.size()))
55 {}
table::Key< table::Array< double > > basis
Definition PsfexPsf.cc:365

◆ Function1d() [2/5]

template<typename Basis >
lsst::geom::polynomials::Function1d< Basis >::Function1d ( Basis const & basis,
Eigen::VectorXd const & coefficients )
inline

Construct with coefficients from an Eigen object.

Definition at line 58 of file Function1d.h.

58 :
59 _basis(basis),
60 _coefficients(coefficients)
61 {
62 assert(basis.size() == static_cast<std::size_t>(_coefficients.size()));
63 }
ndarray::Array< double const, 2, 2 > coefficients

◆ Function1d() [3/5]

template<typename Basis >
template<typename Iterator >
lsst::geom::polynomials::Function1d< Basis >::Function1d ( Basis const & basis,
Iterator first,
Iterator last )
inline

Construct by copying coefficients from an STL iterator range.

Definition at line 67 of file Function1d.h.

67 :
68 _basis(basis),
69 _coefficients(basis.size())
70 {
71 assert(std::distance(first, last) == static_cast<std::ptrdiff_t>(basis.size()));
72 std::copy(first, last, &_coefficients[0]);
73 }
T copy(T... args)
T distance(T... args)

◆ Function1d() [4/5]

template<typename Basis >
lsst::geom::polynomials::Function1d< Basis >::Function1d ( Function1d< Basis > const & )
default

Default copy constructor.

◆ Function1d() [5/5]

template<typename Basis >
lsst::geom::polynomials::Function1d< Basis >::Function1d ( Function1d< Basis > && )
default

Default move constructor.

Member Function Documentation

◆ begin() [1/2]

template<typename Basis >
iterator lsst::geom::polynomials::Function1d< Basis >::begin ( )
inline

Iterators over coefficients.

Definition at line 89 of file Function1d.h.

89{ return _coefficients.data(); }

◆ begin() [2/2]

template<typename Basis >
const_iterator lsst::geom::polynomials::Function1d< Basis >::begin ( ) const
inline

Definition at line 93 of file Function1d.h.

93{ return _coefficients.data(); }

◆ cbegin()

template<typename Basis >
const_iterator lsst::geom::polynomials::Function1d< Basis >::cbegin ( ) const
inline

Definition at line 91 of file Function1d.h.

91{ return _coefficients.data(); }

◆ cend()

template<typename Basis >
const_iterator lsst::geom::polynomials::Function1d< Basis >::cend ( ) const
inline

Definition at line 92 of file Function1d.h.

92{ return begin() + size(); }
std::size_t size() const
Return the number of coefficients.
Definition Function1d.h:101
iterator begin()
Iterators over coefficients.
Definition Function1d.h:89

◆ end() [1/2]

template<typename Basis >
iterator lsst::geom::polynomials::Function1d< Basis >::end ( )
inline

Definition at line 90 of file Function1d.h.

90{ return begin() + size(); }

◆ end() [2/2]

template<typename Basis >
const_iterator lsst::geom::polynomials::Function1d< Basis >::end ( ) const
inline

Definition at line 94 of file Function1d.h.

94{ return begin() + size(); }

◆ getBasis()

template<typename Basis >
Basis const & lsst::geom::polynomials::Function1d< Basis >::getBasis ( ) const
inline

Return the associated Basis1d object.

Definition at line 98 of file Function1d.h.

98{ return _basis; }

◆ getCoefficients() [1/2]

template<typename Basis >
auto lsst::geom::polynomials::Function1d< Basis >::getCoefficients ( )
inline

Return the coefficient vector as an Eigen matrix-like object.

The exact type of the returned object is unspecified, but it is guaranteed to be a view.

Definition at line 125 of file Function1d.h.

125 {
126 // Return a block view to ensure the caller only modify the values, not the size.
127 return _coefficients.head(size());
128 }

◆ getCoefficients() [2/2]

template<typename Basis >
auto lsst::geom::polynomials::Function1d< Basis >::getCoefficients ( ) const
inline

Definition at line 129 of file Function1d.h.

129{ return _coefficients.head(size()); }

◆ operator()()

template<typename Basis >
double lsst::geom::polynomials::Function1d< Basis >::operator() ( double x,
SumMode mode = SumMode::FAST ) const
inline

Evaluate the function at the given point.

Definition at line 104 of file Function1d.h.

104 {
105 return _basis.sumWith(x, _coefficients, mode);
106 }

◆ operator=() [1/2]

template<typename Basis >
Function1d & lsst::geom::polynomials::Function1d< Basis >::operator= ( Function1d< Basis > && )
default

Default move assignment.

◆ operator=() [2/2]

template<typename Basis >
Function1d & lsst::geom::polynomials::Function1d< Basis >::operator= ( Function1d< Basis > const & )
default

Default copy assignment.

◆ operator[]() [1/2]

template<typename Basis >
double & lsst::geom::polynomials::Function1d< Basis >::operator[] ( std::size_t n)
inline

Return the coefficient associated with the nth basis function.

Caller is responsible for ensuring that the given index is valid.

Definition at line 114 of file Function1d.h.

114{ return begin()[n]; }

◆ operator[]() [2/2]

template<typename Basis >
double const & lsst::geom::polynomials::Function1d< Basis >::operator[] ( std::size_t n) const
inline

Definition at line 115 of file Function1d.h.

115{ return begin()[n]; }

◆ scaled()

template<typename Basis >
Function1d< typename Basis::Scaled > lsst::geom::polynomials::Function1d< Basis >::scaled ( Scaling1d const & scaling) const
inline

Return a new function that applies the given scaling to all points before evaluation.

Definition at line 133 of file Function1d.h.

133 {
135 }
table::Key< double > scaling
Basis const & getBasis() const
Return the associated Basis1d object.
Definition Function1d.h:98
Function1d< typename Basis::Scaled > scaled(Scaling1d const &scaling) const
Return a new function that applies the given scaling to all points before evaluation.
Definition Function1d.h:133
Function1d(Basis const &basis)
Construct with zero-valued coefficients.
Definition Function1d.h:52

◆ size()

template<typename Basis >
std::size_t lsst::geom::polynomials::Function1d< Basis >::size ( ) const
inline

Return the number of coefficients.

Definition at line 101 of file Function1d.h.

101{ return _basis.size(); }

The documentation for this class was generated from the following files: