C 17 implementation of a variable with memory of its past values.
cmake 3.26.3
is used to compile the sources.
The cmake files compile with C 20
.
The unit tests are implemented in googletest: be sure you have installed googletest to compile.
To run the performance tests, a RAM of 16GB is needed. If less RAM is available, just reduce the value of historyCapacity
(line 16 in perfTest.cpp).
$ git clone https://github.com:massimo-marino/memvar.git
$ cd memvar/unitTests
$ mkdir build
$ cd build
$ cmake ..
$ make
$ ./memvar-unit-tests
If needed (because cmake fails), copy FindGMock.cmake
to the Modules directory of cmake.
In my installation located in my home, it is in ~/cmake-3.26.3-linux-x86_64/share/cmake-3.26/Modules/
$ git clone https://github.com:massimo-marino/memvar.git
$ cd memvar/perfTests
$ mkdir build
$ cd build
$ cmake ..
$ make
$ ./perfTests
See the source code and the unit tests for examples of use.
void fibonacciNumbers()
{
// The type stored in the memvar
using memvarType = uint64_t;
// define the memvar with a history capacity of 100 values
// and store fib(0) = 0
memvar::memvar<memvarType> fibs{0, 100};
// store fib(1) = 1
fibs = 1;
// compute and store fib(2) = fib(1) fib(0)
// through fib(93) = fib(92) fib(91)
for (int i = 1; i <= 92; i)
{
// compute fib(n 1) = fib(n) fib(n-1)
fibs = fibs(1);
}
// print the first 94 fibonacci numbers
std::cout << "fibs: "; fibs.printHistoryData();
}