# -*- coding: utf-8 -*- """ wrapper functions for CMem """ import ctypes from ctypes.util import find_library import pathlib import numpy as np from qlazy.util import get_lib_ext from qlazy.CMem import CMem lib = ctypes.CDLL( str(pathlib.Path(__file__).with_name('libqlz.' + get_lib_ext()))) libc = ctypes.CDLL(find_library("c"), mode=ctypes.RTLD_GLOBAL) def cmem_init(cmem_num): """ initialize classical memory """ if cmem_num < 1: raise ValueError("cmem size must be positive integer.") cmem = None c_cmem = ctypes.c_void_p(cmem) lib.cmem_init.restype = ctypes.c_bool lib.cmem_init.argtypes = [ctypes.c_int, ctypes.POINTER(ctypes.c_void_p)] ret = lib.cmem_init(ctypes.c_int(cmem_num), c_cmem) if ret is False: raise ValueError("can't initialize cmem.")
""" wrapper functions for QState """ import ctypes from ctypes.util import find_library import pathlib from collections import Counter import numpy as np import qlazy.config as cfg from qlazy.util import get_lib_ext, qstate_check_args from qlazy.QState import QState from qlazy.MData import MData from qlazy.Observable import Observable from qlazy.QCirc import QCirc from qlazy.CMem import CMem lib = ctypes.CDLL(str(pathlib.Path(__file__).with_name('libqlz.'+get_lib_ext()))) libc = ctypes.CDLL(find_library("c"), mode=ctypes.RTLD_GLOBAL) def qstate_init(qubit_num=None, seed=None, use_gpu=False): """ initialize QState object """ libc.srand(ctypes.c_int(seed)) qstate = None c_qstate = ctypes.c_void_p(qstate) lib.qstate_init.restype = ctypes.c_bool lib.qstate_init.argtypes = [ctypes.c_int, ctypes.POINTER(ctypes.c_void_p), ctypes.c_bool] ret = lib.qstate_init(ctypes.c_int(qubit_num), c_qstate, ctypes.c_bool(use_gpu)) if ret is False: