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.
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.
If you have a question about how to use QIClib, create a new issue at issue tracker labelled discussion
.
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.
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.
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/.