cuquantum.custatevec.apply_generalized_permutation_matrix

cuquantum.custatevec.apply_generalized_permutation_matrix(intptr_t handle, intptr_t sv, int sv_data_type, uint32_t n_index_bits, permutation, intptr_t diagonals, int diagonals_data_type, int32_t adjoint, targets, uint32_t n_targets, controls, control_bit_values, uint32_t n_controls, intptr_t workspace, size_t workspace_size)[source]

Apply a generalized permutation matrix.

Parameters
  • handle (intptr_t) – The library handle.

  • sv (intptr_t) – The pointer address (as Python int) to the statevector (on device).

  • sv_data_type (cuquantum.cudaDataType) – The data type of the statevector.

  • n_index_bits (uint32_t) – The number of index bits.

  • permutation

    A host or device array for the permutation table. It can be

    • an int as the pointer address to the array

    • a Python sequence of permutation elements

  • diagonals (intptr_t) – The pointer address (as Python int) to a matrix (on either host or device).

  • diagonals_data_type (cuquantum.cudaDataType) – The data type of the matrix.

  • adjoint (int32_t) – Whether the adjoint of the matrix would be applied.

  • targets

    A host array of permutation matrix target bits. It can be

    • an int as the pointer address to the array

    • a Python sequence of basis bits

  • n_targets (uint32_t) – The length of targets.

  • controls

    A host array for control bits. It can be

    • an int as the pointer address to the array

    • a Python sequence of index bit ordering

  • control_bit_values

    A host array of control bit values. It can be

    • an int as the pointer address to the array

    • a Python sequence of index bit ordering

  • n_controls (uint32_t) – The length of controls and control_bit_values.

  • workspace (intptr_t) – The pointer address (as Python int) to the workspace (on device).

  • workspace_size (size_t) – The workspace size (in bytes).