State preparation
State Preparation Routines
            ghz_block(n_qubits)
    Generates the abstract ghz state for a specified number of qubits.
| PARAMETER | DESCRIPTION | 
|---|---|
n_qubits | 
            
               The number of qubits. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    ChainBlock
                
             | 
            
               A ChainBlock representing the GHZ state.  | 
          
Examples:
Source code in qadence/states.py
              
            ghz_state(n_qubits, batch_size=1)
    Creates a GHZ state.
| PARAMETER | DESCRIPTION | 
|---|---|
n_qubits | 
            
               The number of qubits. 
                  
                    TYPE:
                        | 
          
batch_size | 
            
               How many bitstrings to use. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Tensor
                
             | 
            
               A torch.Tensor.  | 
          
Examples:
Source code in qadence/states.py
              
            is_normalized(wf, atol=NORMALIZATION_ATOL)
    Checks if a wave function is normalized.
| PARAMETER | DESCRIPTION | 
|---|---|
wf | 
            
               The wave function as a torch tensor. 
                  
                    TYPE:
                        | 
          
atol | 
            
               The tolerance. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    bool
                
             | 
            
               A bool.  | 
          
Examples:
Source code in qadence/states.py
              
            normalize(wf)
    Normalizes a wavefunction or batch of wave functions.
| PARAMETER | DESCRIPTION | 
|---|---|
wf | 
            
               Normalized wavefunctions. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Tensor
                
             | 
            
               A torch.Tensor.  | 
          
Examples:
Source code in qadence/states.py
              
            one_block(n_qubits)
    Generates the abstract one state for a specified number of qubits.
| PARAMETER | DESCRIPTION | 
|---|---|
n_qubits | 
            
               The number of qubits. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    KronBlock
                
             | 
            
               A KronBlock representing the one state.  | 
          
Examples:
Source code in qadence/states.py
              
            one_state(n_qubits, batch_size=1)
    Generates the one state for a specified number of qubits.
| PARAMETER | DESCRIPTION | 
|---|---|
n_qubits | 
            
               The number of qubits. 
                  
                    TYPE:
                        | 
          
batch_size | 
            
               The batch size. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Tensor
                
             | 
            
               A torch.Tensor.  | 
          
Examples:
Source code in qadence/states.py
              
            pmf(wf)
    Converts a wave function into a torch Distribution.
| PARAMETER | DESCRIPTION | 
|---|---|
wf | 
            
               The wave function as a torch tensor. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Distribution
                
             | 
            
               A torch.distributions.Distribution.  | 
          
Examples:
Source code in qadence/states.py
              
            product_block(bitstring)
    Creates an abstract product state from a bitstring.
| PARAMETER | DESCRIPTION | 
|---|---|
bitstring | 
            
               A bitstring. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    KronBlock
                
             | 
            
               A KronBlock representing the product state.  | 
          
Examples:
Source code in qadence/states.py
              
            product_state(bitstring, batch_size=1, endianness=Endianness.BIG, backend=BackendName.PYQTORCH)
    Creates a product state from a bitstring.
| PARAMETER | DESCRIPTION | 
|---|---|
bitstring | 
            
               A bitstring. 
                  
                    TYPE:
                        | 
          
batch_size | 
            
               Batch size. 
                  
                    TYPE:
                        | 
          
backend | 
            
               The backend to use. Default is "pyqtorch". 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    ArrayLike
                
             | 
            
               A torch.Tensor.  | 
          
Examples:
from qadence.states import product_state
print(product_state("1100", backend="pyqtorch"))
print(product_state("1100", backend="horqrux"))
Source code in qadence/states.py
              
            rand_bitstring(N)
    Creates a random bistring.
| PARAMETER | DESCRIPTION | 
|---|---|
N | 
            
               The length of the bitstring. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    str
                
             | 
            
               A string.  | 
          
Examples:
Source code in qadence/states.py
              
            rand_product_block(n_qubits)
    Creates a block representing a random abstract product state.
| PARAMETER | DESCRIPTION | 
|---|---|
n_qubits | 
            
               The number of qubits. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    KronBlock
                
             | 
            
               A KronBlock representing the product state.  | 
          
Examples:
Source code in qadence/states.py
              
            rand_product_state(n_qubits, batch_size=1)
    Creates a random product state.
| PARAMETER | DESCRIPTION | 
|---|---|
n_qubits | 
            
               The number of qubits. 
                  
                    TYPE:
                        | 
          
batch_size | 
            
               How many bitstrings to use. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Tensor
                
             | 
            
               A torch.Tensor.  | 
          
Examples:
Source code in qadence/states.py
              
            random_state(n_qubits, batch_size=1, backend=BackendName.PYQTORCH, type=StateGeneratorType.HAAR_MEASURE_FAST)
    Generates a random state for a specified number of qubits.
| PARAMETER | DESCRIPTION | 
|---|---|
n_qubits | 
            
               The number of qubits. 
                  
                    TYPE:
                        | 
          
backend | 
            
               The backend to use. 
                  
                    TYPE:
                        | 
          
batch_size | 
            
               The batch size. 
                  
                    TYPE:
                        | 
          
type | 
            
               StateGeneratorType. 
                  
                    DEFAULT:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Tensor
                
             | 
            
               A torch.Tensor.  | 
          
Examples:
from qadence.states import random_state, StateGeneratorType
from qadence.states import random_state, is_normalized, pmf
from qadence.types import BackendName
from torch.distributions import Distribution
### We have the following options:
print([g.value for g in StateGeneratorType])
n_qubits = 2
# The default is StateGeneratorType.HAAR_MEASURE_FAST
state = random_state(n_qubits=n_qubits)
print(state)
### Lets initialize a state using random rotations, i.e., StateGeneratorType.RANDOM_ROTATIONS.
random = random_state(n_qubits=n_qubits, type=StateGeneratorType.RANDOM_ROTATIONS)
print(random)
Source code in qadence/states.py
              
            uniform_block(n_qubits)
    Generates the abstract uniform state for a specified number of qubits.
| PARAMETER | DESCRIPTION | 
|---|---|
n_qubits | 
            
               The number of qubits. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    KronBlock
                
             | 
            
               A KronBlock representing the uniform state.  | 
          
Examples:
Source code in qadence/states.py
              
            uniform_state(n_qubits, batch_size=1)
    Generates the uniform state for a specified number of qubits.
| PARAMETER | DESCRIPTION | 
|---|---|
n_qubits | 
            
               The number of qubits. 
                  
                    TYPE:
                        | 
          
batch_size | 
            
               The batch size. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Tensor
                
             | 
            
               A torch.Tensor.  | 
          
Examples:
Source code in qadence/states.py
              
            zero_block(n_qubits)
    Generates the abstract zero state for a specified number of qubits.
| PARAMETER | DESCRIPTION | 
|---|---|
n_qubits | 
            
               The number of qubits. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    KronBlock
                
             | 
            
               A KronBlock representing the zero state.  | 
          
Examples:
Source code in qadence/states.py
              
            zero_state(n_qubits, batch_size=1)
    Generates the zero state for a specified number of qubits.
| PARAMETER | DESCRIPTION | 
|---|---|
n_qubits | 
            
               The number of qubits for which the zero state is to be generated. 
                  
                    TYPE:
                        | 
          
batch_size | 
            
               The batch size for the zero state. 
                  
                    TYPE:
                        | 
          
| RETURNS | DESCRIPTION | 
|---|---|
                
                    Tensor
                
             | 
            
               A torch.Tensor.  | 
          
Examples: