Skip to content

Commit 221b9f3

Browse files
author
Roel Van Beeumen
committed
F3C++ v0.1.0
0 parents  commit 221b9f3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+10710
-0
lines changed

.gitignore

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Log files
2+
*.log
3+
4+
# Swap files
5+
*.swp
6+
7+
# Builds
8+
build/
9+
debug/
10+
release/
11+
12+
# Documentation
13+
doc/doxygen/html/
14+
doc/doxygen/latex/
15+
16+
# Generated by MacOS
17+
.DS_Store
18+

CMakeLists.txt

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
cmake_minimum_required( VERSION 3.16 FATAL_ERROR )
2+
3+
# project
4+
project( F3CPP VERSION 0.1.0 LANGUAGES CXX )
5+
6+
# openmp
7+
find_package( OpenMP )
8+
9+
# fetch content
10+
include( FetchContent )
11+
12+
# qclabpp
13+
FetchContent_Declare( qclabpp
14+
GIT_REPOSITORY https://github.com/QuantumComputingLab/qclabpp.git
15+
)
16+
FetchContent_MakeAvailable( qclabpp )
17+
18+
# GTest
19+
FetchContent_Declare( gtest
20+
GIT_REPOSITORY https://github.com/google/googletest.git
21+
)
22+
FetchContent_MakeAvailable( gtest )
23+
24+
# f3c/src
25+
add_subdirectory( src )
26+
27+
# f3c/test
28+
add_subdirectory( test )
29+
30+
# f3c/examples
31+
add_subdirectory( examples )
32+
33+
# f3c/python
34+
add_subdirectory( python )
35+
36+
# documentation
37+
find_package( Doxygen )
38+
if( DOXYGEN_FOUND )
39+
configure_file( ${CMAKE_SOURCE_DIR}/doc/doxygen/doxygen.dox.in
40+
${CMAKE_BINARY_DIR}/doxygen.dox @ONLY)
41+
add_custom_target( f3c_doc ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/doxygen.dox
42+
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
43+
COMMENT "Generating API documentation with doxygen" VERBATIM )
44+
endif()
45+

README.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# Fast Free Fermion Compiler: F3C++
2+
3+
F3C++ is an object-oriented, fully templated C++ package for compiling
4+
time-evolution quantum circuits of spin Hamiltonians that can be mapped to free
5+
fermions. F3C++ is build on top of QCLAB++ and provides I/O through openQASM
6+
making it compatible with quantum hardware.
7+
8+
9+
## How to run?
10+
11+
The F3C++ package uses the CMake build system (CMake version ≥ 3.16).
12+
The recommended way of building F3C++ is as follows:
13+
14+
1. Install
15+
16+
git clone https://github.com/QuantumComputingLab/f3cpp.git
17+
18+
2. CMake
19+
20+
cd f3cpp
21+
mkdir release
22+
cd release
23+
cmake -DCMAKE_BUILD_TYPE=Release ..
24+
make -j8
25+
26+
3. Run tests
27+
28+
./test/f3c_tests
29+
30+
4. Examples
31+
32+
./examples/f3c_time_evolution_XY ../examples/XY.ini
33+
./examples/f3c_time_evolution_TFXY ../examples/TFXY.ini
34+
or
35+
36+
python3 python/f3c_time_evolution_XY.py ../examples/XY.ini
37+
python3 python/f3c_time_evolution_TFXY.py ../examples/TFXY.ini
38+
39+
5. Generate documentation
40+
41+
doxygen doxygen.dox
42+
43+
44+
## References
45+
The F3C compiler is based on:
46+
- An Algebraic Quantum Circuit Compression Algorithm for Hamiltonian Simulation,
47+
Daan Camps, Efekan Köckü, Lindsay Bassman, Wibe A. de Jong,
48+
Alexander F. Kemper, and Roel Van Beeumen (2021)
49+
- Algebraic Compression of Quantum Circuits for Hamiltonian Evolution,
50+
Efekan Köckü, Daan Camps, Lindsay Bassman, J. K. Freericks,
51+
Wibe A. de Jong, Roel Van Beeumen, and Alexander F. Kemper (2021)
52+
53+
54+
## Developers - Lawrence Berkeley National Laboratory
55+
- [Roel Van Beeumen](http://www.roelvanbeeumen.be/) - rvanbeeumen@lbl.gov
56+
- [Daan Camps](http://campsd.github.io/) - dcamps@lbl.gov
57+
58+
59+
## Funding
60+
The F3C++ project is supported by the Laboratory Directed Research and
61+
Development Program of Lawrence Berkeley National Laboratory under U.S.
62+
Department of Energy Contract No. DE-AC02-05CH11231.
63+
64+
65+
## About
66+
F3C++ Copyright (c) 2021, The Regents of the University of California,
67+
through Lawrence Berkeley National Laboratory (subject to receipt of
68+
any required approvals from the U.S. Dept. of Energy). All rights reserved.
69+
70+
If you have questions about your rights to use or distribute this software,
71+
please contact Berkeley Lab's Intellectual Property Office at
72+
IPO@lbl.gov.
73+
74+
NOTICE. This Software was developed under funding from the U.S. Department
75+
of Energy and the U.S. Government consequently retains certain rights. As
76+
such, the U.S. Government has been granted for itself and others acting on
77+
its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the
78+
Software to reproduce, distribute copies to the public, prepare derivative
79+
works, and perform publicly and display publicly, and to permit others to do so.

0 commit comments

Comments
 (0)