docs: def to_valid_state_vector(state_rep: Union[int, np.ndarray],
                            num_qubits: int,
                            dtype: Type[np.number] = np.complex64) -> np.ndarray:
      """Verifies the state_rep is valid and converts it to ndarray form.
  
      This method is used to support passing in an integer representing a
      computational basis state or a full wave function as a representation of
      a state.
  
      Args:
          state_rep: If an int, the state returned is the state corresponding to
              a computational basis state. If an numpy array this is the full
              wave function. Both of these are validated for the given number
              of qubits, and the state must be properly normalized and of the
              appropriate dtype.
          num_qubits: The number of qubits for the state. The state_rep must be
              valid for this number of qubits.
          dtype: The numpy dtype of the state, will be used when creating the
              state for a computational basis state, or validated against if
              state_rep is a numpy array.
  
      Returns:
          A numpy ndarray corresponding to the state on the given number of
          qubits.
  
      Raises:
          ValueError if the state is not valid.
      """
      if isinstance(state_rep, np.ndarray):
          if len(state_rep) != 2 ** num_qubits:
              raise ValueError(
                  'initial state was of size {} '
                  'but expected state for {} qubits'.format(
                      len(state_rep), num_qubits))
          state = state_rep
      elif isinstance(state_rep, int):
          if state_rep < 0:
              raise ValueError('initial_state must be positive')
          elif state_rep >= 2 ** num_qubits:
              raise ValueError(
                  'initial state was {} but expected state for {} qubits'.format(
                      state_rep, num_qubits))
          else:
              state = np.zeros(2 ** num_qubits, dtype=dtype)
              state[state_rep] = 1.0
      else:
          raise TypeError('initial_state was not of type int or ndarray')
      validate_normalized_state(state, num_qubits, dtype)
      return state