This project was developed in Linux, thus only linux system can currently use it.
All the code is documented. Proper documentation is present in the header files, and proper comments are written along the code in the cpp files.
The documentation present in the header files can also be generated into an HTML format (doxygen). To generate it, please build the project using the docs flags, as follows:
cmake -B build -S . -DBCGEN_DOCS=ON && cmake --build build
Currently, the project has the following limitations:
- Only supports integer variables. Decimal values are not supported (yet).
- The functions do not allow variables with arbitrary sizes between the variables. In most functions, all the inserted variables must have the same size, including the output variables.
The project is setup with several unit tests that can be executed to make sure everything is working properly. To compile them, please build the project using the tests flags, as follows:
cmake -B build -S . -DBCGEN_TESTS=ON && cmake --build build
The project is setup with several examples that can be executed to generate specific circuits that might help an user. To compile them, please build the project using the examples flags, as follows:
cmake -B build -S . -DBCGEN_EXAMPLES=ON && cmake --build build
- Make use of BCGEN_OPTIMIZE CMake flag.
- Adapt methods to accept variables with arbitrary sizes;
- Keep track of the created gates so there isn't duplicated gates in the circuit.
- Implement operations on other types (currently only integers are supported).