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 the above download link 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, i.e., the include directory in the library) 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 a C++11 compliant compiler. gcc version 4.8 or later, or clang version 3.3 or later are recommended.
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, clang or icc 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 - 2017 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/.