Skip to content

Commit

Permalink
added some data functions
Browse files Browse the repository at this point in the history
  • Loading branch information
Phionx committed Mar 11, 2024
1 parent f68e031 commit 7f24daf
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 4 deletions.
49 changes: 45 additions & 4 deletions jaxquantum/core/qarray.py
Original file line number Diff line number Diff line change
Expand Up @@ -345,22 +345,63 @@ def tr(qarr: Qarray, **kwargs) -> Qarray:
"""
return jnp.trace(qarr.data, **kwargs)


def expm_data(data: Array, **kwargs) -> Array:
"""Matrix exponential wrapper.
Returns:
matrix exponential
"""
return jsp.linalg.expm(data, **kwargs)

def expm(qarr: Qarray, **kwargs) -> Qarray:
"""Matrix exponential wrapper.
Returns:
matrix exponential
"""
data = jsp.linalg.expm(qarr.data, **kwargs)
dims = deepcopy(qarr.dims)
dims = qarr.dims
data = expm_data(qarr.data, **kwargs)
return Qarray.create(data, dims=dims)


def cosm_data(data: Array, **kwargs) -> Array:
"""Matrix cosine wrapper.
Returns:
matrix cosine
"""
return (expm_data(1j*data) + expm_data(-1j*data))/2

def cosm(qarr: Qarray) -> Qarray:
return (expm(1j*qarr) + expm(-1j*qarr))/2
"""Matrix cosine wrapper.
Args:
qarr (Qarray): quantum array
Returns:
matrix cosine
"""
dims = qarr.dims
data = cosm_data(qarr.data)
return Qarray.create(data, dims=dims)


def sinm_data(data: Array, **kwargs) -> Array:
"""Matrix sine wrapper.
Args:
data: matrix
Returns:
matrix sine
"""
return (expm_data(1j*data) - expm_data(-1j*data))/(2j)

def sinm(qarr: Qarray) -> Qarray:
return (expm(1j*qarr) - expm(-1j*qarr))/(2j)
dims = qarr.dims
data = sinm_data(qarr.data)
return Qarray.create(data, dims=dims)


def keep_only_diag_elements(qarr: Qarray) -> Qarray:
Expand Down
48 changes: 48 additions & 0 deletions tutorials/1-single-qubit-rabi-qarray.ipynb

Large diffs are not rendered by default.

0 comments on commit 7f24daf

Please sign in to comment.