LSST Applications g063fba187b+eddd1b24d7,g0f08755f38+4a855ab515,g1653933729+a8ce1bb630,g168dd56ebc+a8ce1bb630,g1a2382251a+062a45aee3,g1dcb35cd9c+45d3fa5522,g20f6ffc8e0+4a855ab515,g217e2c1bcf+f55e51b560,g28da252d5a+7d8e536cc7,g2bbee38e9b+2d92fc7d83,g2bc492864f+2d92fc7d83,g3156d2b45e+6e55a43351,g32e5bea42b+625186cc6b,g347aa1857d+2d92fc7d83,g35bb328faa+a8ce1bb630,g3a166c0a6a+2d92fc7d83,g3e281a1b8c+c5dd892a6c,g3e8969e208+a8ce1bb630,g414038480c+5927e1bc1e,g41af890bb2+1af189bab1,g7af13505b9+7b6a50a2f8,g80478fca09+6174b7f182,g82479be7b0+5b71efbaf0,g858d7b2824+4a855ab515,g9125e01d80+a8ce1bb630,ga5288a1d22+61618a97c4,gb58c049af0+d64f4d3760,gc28159a63d+2d92fc7d83,gc5452a3dca+f4add4ffd5,gcab2d0539d+d9f5af7f69,gcf0d15dbbd+6c7e0a19ec,gda6a2b7d83+6c7e0a19ec,gdaeeff99f8+1711a396fd,ge79ae78c31+2d92fc7d83,gef2f8181fd+55fff6f525,gf0baf85859+c1f95f4921,gfa517265be+4a855ab515,gfa999e8aa5+17cd334064,w.2024.51
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
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 42 of file Function1d.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(); }
iterator begin()
Iterators over coefficients.
Definition Function1d.h:89
std::size_t size() const
Return the number of coefficients.
Definition Function1d.h:101

◆ 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 {
134 return Function1d<typename Basis::Scaled>(getBasis().scaled(scaling), _coefficients);
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

◆ 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 file: