Lattice Builder Manual Software Package for Constructing Rank-1 Lattices

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files
- Examples

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Modules Pages
Public Member Functions | Static Public Member Functions | List of all members
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, Modulus n) const
| Returns the one-dimensional function evaluated at `x`. More...
template<LatType L, Compress C>
RealVector | valuesVector (const Storage< L, C > &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< L, C > &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.
RAlpha & | derived ()
const RAlpha & | derived () const

## Static Public Member Functions
static constexpr Compress | suggestedCompression ()

## 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

  LAT | Type of lattice.

## Constructor & Destructor Documentation

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

Constructor.

Parameters

  alpha | Value of \(\alpha\).

## Member Function Documentation

Real LatBuilder::Kernel::RAlpha::pointValue | ( | const Real & | x,
|  | Modulus | n
| ) |  | const
| inline

Returns the one-dimensional function evaluated at `x`.

Parameters

  x | Point at which the function must be evaluated.
  n | Number of terms in the sum (see class documentation).

Remarks
  Returns only the real part of the kernel value.

References alpha().

template<LatType L, Compress C>

RealVector LatBuilder::Kernel::RAlpha::valuesVector | ( | const Storage< L, C > & | 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.

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:

- latbuilder/include/latbuilder/Kernel/RAlpha.h