TBTK
Subindex.h File Reference

An entry in an Index. More...

#include "TBTK/Integer.h"
#include "TBTK/Natural.h"
#include "TBTK/PseudoSerializable.h"
#include "TBTK/json.hpp"

Go to the source code of this file.

## Classes

class  TBTK::Subindex
An entry in an Index. More...

## Variables

Special subindex values. More...

constexpr Subindex TBTK::IDX_ALL = (int)(0xBFFFFFFF & ~0x20000000)

constexpr Subindex TBTK::_a_ = IDX_ALL

constexpr Subindex TBTK::IDX_SUM_ALL = (int)(0xBFFFFFFF & ~0x20000001)

constexpr Subindex TBTK::IDX_SPIN = (int)(0xBFFFFFFF & ~0x20000002)

constexpr Subindex TBTK::IDX_SEPARATOR = (int)(0xBFFFFFFF & ~0x20000003)

constexpr Subindex TBTK::IDX_ALL_ = (int)(0xBFFFFFFF & ~0x10000000)

constexpr Subindex TBTK::_aX_ = IDX_ALL_

constexpr Subindex TBTK::IDX_RANGE = (int)(0xBFFFFFFF & ~0x08000000)

constexpr Subindex TBTK::IDX_X = (int)(IDX_RANGE & ~0x00000000)

constexpr Subindex TBTK::IDX_Y = (int)(IDX_RANGE & ~0x00000001)

constexpr Subindex TBTK::IDX_Z = (int)(IDX_RANGE & ~0x00000002)

## Detailed Description

An entry in an Index.

## Variable Documentation

Special subindex values.

Negative Subindex values with the second uppermost bit set to zero are reserved for flags.

IDX_ALL = a:
Wildcard Used to indicate that all indices are to be considered or that the particular subindex value is of no interest. To improve self-documentation for library code, only IDX_ALL should be used in library code. 'a' is syntactic sugar meant for use in application code.

IDX_SUM_ALL:
: Used to indicate that a subindex should be summed over.

IDX_SPIN:
Used to indicate that a subindex should be interpreted as a spin-subindex.

IDX_SEPARATOR:
Used as Index-separator in compound indices such as {{1, 2}, {3, 4}}, which is stored as {1, 2, IDX_SEPARATOR, 3, 4}.

IDX_ALL_ = aX: Labeled wildcards. Are used for the same purpose as wildcard indices (IDX_ALL), but where two or more subindices should covary. The function call operator works together with IDX_ALL_ to create wildcards with different labels. For example, {IDX_ALL_(0), 1, IDX_ALL_(1), IDX_ALL_(0), IDX_ALL_(1)} indicates that all indices of the form {m, 1, n, m, n} are of interest. To improve self-documentation, only IDX_ALL_ should be used in library code. 'aX' is syntactic sugar meant for use in application code.

IDX_X, IDX_Y, IDX_Z:
Loop indices used to indicate that a particular index should be looped over.