-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Development: clara 1.0.0 #2
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[Documentation] adding information about using testing example Signed-off-by: slowy07 <[email protected]>
[Documentation] ``include/constants.h`` adding commented code for information about variable ``chop``, `maxn`, `eps` ``include/internal/classFunction/iomanip.h`` ``IDisplay`` class is an abstract class the provides a generic interface for displaying object . the ``Display_Impl_`` class concrete class that implements the ``IDisplay`` interface for Eigen matrices. - the first constructor takes an eigen matrix as input and double as a parameter, the double parameter specifies amount of chopping that should be done whne displaying the matrix - the second constructure takes a complex number as input an a double as parameter, the double parameter specifieds tha amount of chopping that soubld be done when displaying the complex number ``include/traits.h`` adding preprocessor directive to check the version of the GCC compiler ``clara_test/tests/traits.cpp`` adding testing for test ``traits.h`` ``clara_test/run_test`` adding support for macOs and support for ubuntu and arch based package Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
added necessary using statements to define ComplexScalar and ComplexMatrix types for handling complex numbers. replaced dyn_mat with Eigen::Matrix to match the type of rA. improved the check for matrix size by comparing the rows and columns separately. changed rA.template cas<cplx>() to rA.template cast<ComplexScalar>() to handle complex matrix conversion.
[Documentation] adding reference used in clara adding unitest for mac os Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
[Documentation] make expection hierarchy for custom exceptions, this exception based on the standard ``std::exception`` class, provide a mechanisem for creating custom exception types with specific description that can be thrown and caught in the application code Signed-off-by: slowy07 <[email protected]>
[Documentation] testing quantum bit manipulation - the code initialize the number of bits and the number of trials. it creates a vector of vectors called `indices`, where each sub-vector contains indices representing bits for trial operations - it perform a series trials using `TOF` operation on the `Bit_circuit`, the `TOF` operation applies controlled NOT operation on the specified bits in the circuit - after the trials the code display the initial and final states of the bit circuit as well as the hamming weight ( number of set bits ) - create `ket` and `bra` instance representing quantim states and display them using the `disp` function Signed-off-by: slowy07 <[email protected]>
[Documentation] grover algorithm starts with equal superposition of all possible states, then iteratively applies the oracle and diffusion operator to amplify the probability of the marked state while reducing the probability of other states, after a sufficient number of iterations, measuring the final state gives a high probability of obtaining the marked state fix: fixing ``clara/include/operations.h`` [Documentation] fixing code to provide a flexible efficient way to apply a controlled quantum gate a quantum state, allowing for various types of control and target subsystem configurations. the use of eigen library provides efficient matrix operations, and the code is optimized for performance using multi-threading fix: fixing ``clara/include/random.h`` fixing function to provide a convenient and safe way to generate random indices whithin specified range, making use of the standard library random number generation capabilitesm use of thread local random number generators is particularly helpful multi-threading applications to avoid potential concurency issues Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
[Documentation] code documentation is a collection of documents and code comments explaining how code works and how to use it. Signed-off-by: slowy07 <[email protected]>
[Documentation] code documentation is a collection of documents and code comments explaining how code works and how to use it. Signed-off-by: slowy07 <[email protected]>
[Documentation] adding docker test to testing scale lib into any environment Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
[Documentation] information CWE-120: The product copies an input buffer to an output buffer without verifying that the size of the input buffer is less than the size of the output buffer, leading to a buffer overflow. fix: typo on input_output.h fix: delete windows test chore: adding ``input_output_testing`` [Documentation] adding unitesting using google test framwork to test the functionallity of the `save` and `load` function from `clara` library `input_output` Signed-off-by: slowy07 <[email protected]>
chore: update ``experimental_test`` [Documentation] The `experimental_test.h` header file defines classes and functions for simulating quantum circuits. The classes provided are: - `clara::experimental::ClaraCircuit`: Represents a quantum circuit for simulation. - `clara::experimental::LogicalCircuit`: Represents a logical circuit with gates and their details. - `clara::experimental::Test`: Represents a test class for quantum circuit operations. ClaraCircuit Class This class represents a quantum circuit for simulation. It provides functionalities for creating, manipulating, and simulating quantum circuits. Class: `clara::experimental::ClaraCircuit<T>` - Constructor: Initializes a quantum circuit. Parameters: - `number_qubit`: Number of qubits in the circuit. - `number_classical`: Number of classical bits in the circuit. - `dimension`: Dimension of the quantum state space (default: 2). - Methods: - `measure(std::vector<idx> subsys)`: Measures specified subsystem qubits. - `measure_all()`: Measures all unmeasured qubits in the circuit. - `apply(const cmat& gate, const std::vector<idx>& subsys)`: Applies a quantum gate to specified subsystem qubits. - `apply_all(const cmat& gate)`: Applies a quantum gate to all unmeasured qubits. - `reset()`: Resets the quantum circuit to its initial state. - Accessor methods for retrieving circuit information: - `dimension()`: Returns the dimension of the quantum state space. - `get_number_qubit()`: Returns the number of qubits in the circuit. - `get_number_classical()`: Returns the number of classical bits in the circuit. - `get_size()`: Returns the total size of the circuit (qubits + classical bits). - `get_num_measured_qubits()`: Returns the number of measured qubits. - `get_num_active_qubits()`: Returns the number of active (unmeasured) qubits. - `get_psi()`: Returns the current quantum state of the circuit. - `get_results()`: Returns the measured results as a vector of indices. - `get_results_as_N()`: Returns the measured results as an integer in base-N representation. - `bits()`: Returns a reference to the classical bits associated with the circuit. LogicalCircuit Class This class represents a logical circuit with gates and their details. Class: `clara::experimental::LogicalCircuit` - Methods: - `add(const cmat& gate, const std::string& gate_name, const idx_vec& ctrl, const idx_vec& target)`: Adds a gate to the logical circuit. - `gate_gate_count()`: Returns the total count of gates added to the logical circuit. - `display(std::ostream& os) const`: Displays the logical circuit's gates and their details. chore: add more testing for make sure code works very well chore: adding reversible [Documentation] provided functionalities to work with dynamic bitset, perform bitwise operations, and represent bit circuits with various gate operations Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
[Documentation] change from `pi` to `std::pi` docs: add more documentation `gates.h` fix: fixing entanglement which testing always return `out of range` Signed-off-by: slowy07 <[email protected]>
[Documentation] this code demonstrate various quantum channels using clara lib. it perform operations on a quantum state, such as partial transpose, measurement channels application and entropy computation. `performChannelsOperations()`: - step process - create the initial state `|00⟩ + |11⟩` and display it - perform partial transpose on the first subsystem of the state and display eigen values - set up a measurement channels with two kraus operators (pauli Z operatios for `|0⟩` and `|11⟩`) - apply the measurement channels to first subsystem and display the resulting state - partially trace down the second subsystem and display the resulting state. -compute and diplasy the von-neummann entropy of the final state. Signed-off-by: slowy07 <[email protected]>
[Documentation] function applies a scalar function element-wise to each entry of the input matrix 'A'. the result is a new matrix of the same dimensions, where each entry is the result of applying the provided scalar function to the corresponding entry in 'A'. Signed-off-by: slowy07 <[email protected]>
[Documentation] adding algorithm that can be used to efficiently transform a quantum state from one basis to another. - Command Line Argument the code check if exactly two command line arguments are provided, if not it prints an errpr message and exists the program - Extracting Command Line Arguments - the number CPU cores to use (`num_core`) and the number qubits in quantum system (`n`) are extracted from the command line arguments - Setting OpenMP Threads - the number of OpenMP threads to use for parallel processing is set to `num_core` - Creating Quantum State Vector - A vector `qubits` is created to store indices - A quantum state vector `psi` is created using `mket` function with the qubit indices. - An initial copy `result` of the quantum state is also created - Measuring Execution Time - A `Timer` object `t` is created to measure the execution time - Quantum operations - A loops iterates over each qubit index - A hadamard gate (`gt.H`) applied to each qubit - Another Nested llop applies controlled-phase gate, where the control and target qubits are determined by the loop indices - The gate are applied to the `result` quantum state vector - Qubit Swap Operations - Another loop swaps qubit state using the `gt.SWAP` gate - Qubit at specific indices are swapped - Printing Result - the program prints the number of CPU cores used, the number of qubits, and the execution time measured by the timer Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
Signed-off-by: slowy07 <[email protected]>
[Documentation] adding entropies, entrpoies is a measure of the amount of randomness or uncertainty ins tate of a quantum system. - creating quantum system the code creates a complex matrix `rho` representing a quantum state using predefined state `st.pb00`, the state is likely defined in the include `clarah.h` header - partial trace calculation the `ptrace()` function is used to compute the partial trace of the quantums state `rho` over subsystem B. the result stored in the matrix `rhoA` - displaying states the `disp()` function is used to display the original quantum state matrix `rho` and the result of the partial trace `rhoA` - entropy calculation the `tsallis()` function is used to calculate the tsallis-1 and tsallis-2 entropies for the quantum matrix `rho`. the calculated entropies displayed - quantum mutual information calculation teh `qmutualinformation()` function to calculation the quantum mutual information between subsystem A and B the quantum state `rho`. the calculated mutual information is displayed Signed-off-by: slowy07 <[email protected]>
[Documentation] demonstrate the simulation of quantum circuit, including gate operations and measurement, the process code by: - create quantum state `psi` and initialized to |00⟩ state - controlled (CNOT) gate `U` is created using the tensor product (`kron`) of the hadamard gate (`gt.H`) and the identity gate (`gt.Id2`) - the gate `U` applied to the quantums state `psi` resulting in a new state stored in the variable `result` state - X gate (`gt.X`) is applied to the `result` state at qubit 1, updating the state - print the `producing` bell state - the state measurement is performed on the `result` state using hadamard gate (`gt.H`) on qubit 0. the measurement result, probabilites, and resulting states are store in the `measured tuple` Signed-off-by: slowy07 <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
development working on progress
adding
grover search algorithm
information
grover algorithm starts with equal superposition of all possible states, then iteratively applies the oracle and diffusion operator to amplify the probability of the marked state while reducing the probability of other states, after a sufficient number of iterations, measuring the final state gives a high probability of obtaining the marked state
support docker
information
Docker is a containerization platform that allows you to package software into standardized units called containers. Containers are isolated from each other and from the host machine, making them lightweight and portable. This makes it easy to deploy and run applications on different environments.