LatNet Builder Manual  2.0.1-11
Software Package for Constructing Highly Uniform Point Sets
LatBuilder::Kernel::RAlpha Class Reference

One-dimensional merit function for the \(\mathcal R_\alpha\) figure of merit for any \(\alpha \geq 0\). More...

#include <RAlpha.h>

Inherits LatBuilder::Kernel::Base< RAlpha >.

Public Member Functions

 RAlpha (Real alpha)
 Constructor. More...
 
Real pointValue (const Real &x, uInteger n) const
 Returns the one-dimensional function evaluated at x. More...
 
template<LatticeType LR, EmbeddingType L, Compress C, PerLevelOrder P>
RealVector valuesVector (const Storage< LR, L, C, P > &storage) const
 Creates a new vector of kernel values. More...
 
Real alpha () const
 Returns the value of \(\alpha\).
 
bool symmetric () const
 
std::string name () const
 
- Public Member Functions inherited from LatBuilder::Kernel::Base< RAlpha >
RealVector valuesVector (const Storage< LR, L, C, P > &storage) const
 Creates a new vector of kernel values. More...
 
bool symmetric () const
 Returns true if the kernel takes the same value at points \(x\) and \(1 - x\) for \(x \in [0,1)\).
 
std::string name () const
 Returns the name of the kernel.
 
RAlphaderived ()
 
const RAlphaderived () const
 

Static Public Member Functions

static constexpr Compress suggestedCompression ()
 

Static Public Attributes

static constexpr Real CUPower = 2
 

Detailed Description

One-dimensional merit function for the \(\mathcal R_\alpha\) figure of merit for any \(\alpha \geq 0\).

This merit function is defined as

\[ \omega(x) = r_{\alpha,n}(x) = \sum_{h = -\lfloor (n-1)/2 \rfloor}^{\lfloor n/2 \rfloor} |\max(1, h)|^{-\alpha} e^{2 \pi i h x} - 1 \]

For even \(n\), the sum is over \(h=-n/2+1,\dots,n/2\); for odd \(n\), the sum is over \(h=-(n-1)/2,\dots,(n-1)/2\). By replacing \(h\) with \(-h\) in the part of the sum that is over the negative values of \(h\), we obtain:

\[ r_{\alpha,n}(x) = 2 \sum_{h=1}^{\lfloor (n-1)/2 \rfloor} h^{-\alpha} \cos(2\pi h x) + \mathbb 1[\text{$n$ is even}] \, (n/2)^{-\alpha} e^{i\pi n x} \]

This is the expression implemented by pointValue(). Note that the last term is nonzero only if \(n\) is even and, for \(x=j/n\), is equal to \((-1)^j\) for any integer \(j\).

Remarks
This functor only returns the real part of the last term.

Alternatively, by replacing \(h\) with \(h-n\) in the part of the sum that is over the negative values of \(h\), we obtain:

\[ r_{\alpha,n}(x) = \sum_{h=0}^{n-1} \hat r_{\alpha,n}(h) e^{2 \pi i h x}, \]

where

\[ \hat r_{\alpha,n}(h) = \begin{cases} 0 & \text{if $h=0$} \\ h^{-\alpha} & \text{if $0 < h \leq n/2$} \\ (n-h)^{-\alpha} & \text{if $n/2 < h < n $} \\ \end{cases} \]

The values of \(r_{\alpha,n}(j/n)\) for \(j=0,\dots,n-1\) are the \(n\)-point inverse discrete Fourier transform of \(\hat r_{\alpha,n}(h)\) at \(h=0,\dots,n-1\). This is how valuesVector() computes these values.

Template Parameters
ETType of lattice.

Constructor & Destructor Documentation

◆ RAlpha()

LatBuilder::Kernel::RAlpha::RAlpha ( Real  alpha)
inline

Constructor.

Parameters
alphaValue of \(\alpha\).

Member Function Documentation

◆ pointValue()

Real LatBuilder::Kernel::RAlpha::pointValue ( const Real x,
uInteger  n 
) const
inline

Returns the one-dimensional function evaluated at x.

Parameters
xPoint at which the function must be evaluated.
nNumber of terms in the sum (see class documentation).
Remarks
Returns only the real part of the kernel value.

References alpha().

◆ valuesVector()

template<LatticeType LR, EmbeddingType L, Compress C, PerLevelOrder P>
RealVector LatBuilder::Kernel::RAlpha::valuesVector ( const Storage< LR, L, C, P > &  storage) const
inline

Creates a new vector of kernel values.

The values of the kernel evaluated at sizeParam.numPoints() regular intervals in \([0,1)\) are stored in a linear vector. The intervals are of size 1/sizeParam.numPoints() and the first point is at 0.

the \(i^{\text{th}}\) element \(\omega_i\) is:

  • \(\omega(i/n)\) in the case of an ordinary lattice with modulus \(n\).
  • \(\omega((\nu_m(\frac{i(z)}{P(z)}))\) in the case of a polynomial lattice of modulus \(P(z)\) ( \( i(z) = \sum a_iz^i\) where \(i =\sum a_i2^i\)).

    Returns
    The newly created vector.

    Creates a new vector of kernel values using fast Fourier transforms.

References alpha(), and fftw< T >::ifft().


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