https://github.com/deepakkumar1984/arithmetica
This is a simple library to build and simulate your own quantum computing algorithms in C#, yes in C#.
https://github.com/deepakkumar1984/arithmetica
array computing image-processing linear maths matrix multi ndarray quantum vector
Last synced: 5 months ago
JSON representation
This is a simple library to build and simulate your own quantum computing algorithms in C#, yes in C#.
- Host: GitHub
- URL: https://github.com/deepakkumar1984/arithmetica
- Owner: deepakkumar1984
- License: mit
- Created: 2019-05-09T11:01:47.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2022-06-22T23:32:27.000Z (over 3 years ago)
- Last Synced: 2025-06-10T06:39:15.171Z (7 months ago)
- Topics: array, computing, image-processing, linear, maths, matrix, multi, ndarray, quantum, vector
- Language: C#
- Homepage:
- Size: 60.3 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
This is a simple library to build and simulate your own quantum computing algorithms in C#, yes in C#.
## How to use the library
* Create a new .NET core or Windows console project.
* Right-Click on the solution and select Managed NuGet References.
* Search for “Arithmetica”, select and install the latest version
* Open the class file and import namespace “using Arithmetica” to start using the library and its functions.
## Complex Matrix Example
```csharp
//Define a 2x2 complex matrix
ComplexMatrix matrix = new ComplexMatrix(2, 2);
matrix[0, 0] = new Complex(2, 2);
matrix[0, 1] = new Complex(1, 2);
matrix[1, 0] = new Complex(3, 1);
matrix[1, 1] = new Complex(2, 3);
Console.WriteLine("First Matrix");
Console.WriteLine(matrix.ToString());
//Define a comple vector of length 2
ComplexVector vector = new ComplexVector(2);
vector[0] = new Complex(2, 1);
vector[1] = new Complex(1, 3);
Console.WriteLine("Second Vector");
Console.WriteLine(vector.ToString());
// Multiplying a 2x2 matrix with a vector will result a vector
var result = matrix * vector;
Console.WriteLine("Result Vector");
Console.WriteLine(result.ToString());
```
## Quantum Teleportation
```csharp
//Create a register with 2 Qubits
QuantumRegister register = new QuantumRegister(2);
//Create a blank circuit with the regiter initialised
QuantumCircuit circuit = new QuantumCircuit(register);
//Initialize the tranported counter
int transported = 0;
//Let try to teleport 25 quantum information
for (int i = 0; i < 25; i++)
{
var send = GetRandom();
//Initial the first Qubit with the particle to be teleported
circuit.INIT(0, send);
//Hadamard gate to apply superposition to the first quantum bit which means the first qubit will have both 0 and 1
circuit.H(0);
//Controlled not gate to entangle the two qubit
circuit.CNOT(0, 1);
//Measure the first will collapse the quantum state and bring it to reality whic will be either one or zero
circuit.Measure(0);
//Store the first state
var res1 = register[0].QState;
//Measure the second particle and store the value
circuit.Measure(1);
var res2 = register[1].QState;
Console.WriteLine("Send: {0}, Received: {1}", res1, res2);
//If you compare the result the two result will be same which states that the information is teleported.
if (res1 == res2)
transported++;
register.Reset();
}
//var result = circuit.Execute(1000);
Console.WriteLine("Teleported count: " + transported);
```
Nuget package available, search with name Arithmetica
API Documentation: https://tech-quantum.github.io/Arithmetica/api/Arithmetica.html