Skip to content

titaschanda/QIClib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Version 1.0 - March 20, 2017

QIClib is a mordern C++11 library for general purpose quantum computing, supporting Linux, Windows and Mac OS X. It is a header only template library, using Armadillo (developed by Conrad Sanderson et al., Data61, Australia) for highly efficient linear algebra calculations, and if available, the NLopt nonlinear optimization library for certain features.

Getting started

QIClib is a header only library, so there is no need to compile the source. Download QIClib either from official website or using git clone with the command

 git clone https://github.com/titaschanda/QIClib.

Include the header QIClib in your source code (make sure that your compiler can find the path of the header file) and QIClib is ready to fly.

Make sure that you have Armadillo (version 4.2 or later) and NLopt installed on your system. If you don't want to use NLopt specific features (like Quantum Discord), just add the following line before including QIClib header:

#define QICLIB_DONT_USE_NLOPT

Also make sure that you have an C++11 compliant compiler. gcc version 4.8 or later, or clang version 3.3 or later is recomended.

For example codes, see here. You will also find detailed API information here.

Note: Instead of using standard BLAS, link OpenBLAS, Intel MKL or AMD ACML (or Accelerate Framework in MAC OSX) with latest version of Armadillo for better performance. For more see, this and this. Also turn on compiler optimizations, e.g., in gcc or clang add -O3 flag during compilation. You can also add -march=native flag to enable SSE3, SSE4, and AVX instructions for further speed ups.

Note: Though older versions of Armadillo (upto version 4.2) are compatible with QIClib, it is recommended to use newer versions. If your package manager does not provide newer versions of Armadillo, manually upgrade it to the latest version.

Got a Problem or Question?

If you have a question about how to use QIClib, create a new issue at issue tracker labelled discussion.

Found an Issue or Bug?

If you found a bug in the source code or a mistake in any kind of documentation, please let us know by adding an issue to the issue tracker.

You are welcomed to submit a pull request with your fix afterwards, if at hand.

Requesting a Feature?

If you are missing some features within QIClib, feel free to ask us about it by adding a new request to the issue tracker labelled feature request.

Note that submitting a pull request, providing the needed changes to introduced your requested feature, usually speeds up the process.

License

Copyright (c) 2015 - 2019 Titas Chanda, titas DOT chanda AT gmail DOT com

QIClib is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

QIClib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with QIClib. If not, see http://www.gnu.org/licenses/.

About

A C++11 library for quantum information and computation based on Armadillo (Website Changed)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages