This is generally a MathLink issue (not specific to FiniteFlow) on
some Linux distributions. It can be solved by installing the
uuid-dev package or an equivalent one, depending on the
distribution.
If you encounter issues with the installation, including failure to load the library or the Mathematica package, please follow the steps below before contacting the developer. These may help you identifying the problem or provide useful diagnostic information to include in support requests.
- Clean up the current installation using
make clean && make uninstallfollowed byrm CMakeCache.txt. - Update FiniteFlow to the latest version and repeat the installation procedure, carefully checking all specified paths (if any) are correct. Monitor the output of
cmakeandmakefor errors. If errors occur that you are unable to resolve, report them to the developer. - If you plan to use the Mathematica interface, make sure that Mathematica is found during the
cmakeconfiguration and that its version matches the one you intend to use. If not, define theMathematica_FIND_VERSIONand/orMathematica_FIND_VERSION_EXACTvariables (e.g., withcmake -DMathematica_FIND_VERSION="13.2.1" -DMathematica_FIND_VERSION_EXACT=TRUE ...) to specify the required Mathematica version. You may also setMathematica_HOST_ROOT_DIRto your Mathematica's$InstallationDirectoryto point to a specific directory where the correct Mathematica version is installed. Refer to the FindMathematica manual for more information. - Execute the command
make tests && ./testjson. If the output ends withUsage: ./testjson input outputthen the C++ installation was successful. Otherwise, check your installation procedure again and, if the errors persist, report the outcome to the developer. - Execute the command
math -script mathlink/tests.m. You may need to replacemathwith the command for executing Mathematica or the Wolfram kernel from command line (e.g.wolframscript). If the tests pass without any error, then the Mathematica interface has been installed correctly. - If the previous command reported failure in loading the FiniteFlow library, execute
LD_DEBUG=libs math -script mathlink/tests.mwhich repeats the previous test but may report more information about this problem. This information is often helpful in detecting issues, such having multiple conflicting versions of FiniteFlow or its dependencies installed. If you're still unable to resolve the issue, include the output of this command when reporting the problem to the developer. - On certain Linux distributions, Mathematica’s bundled GMP appears to be incompatible with Flint, causing a
LibraryFunction::loaderror. This can be resolved by either using flint-finiteflow-dep instead of the official Flint library, or by disabling Flint entirely via-DFFLOW_USE_FLINT=0duringcmakeconfiguration.
When passing rational functions to dataflow procedures, they should
be collected under a common denominator, i.e. written as ratios of
two polynomials. This is also true for the coefficients multiplying
the unknowns of linear systems, where one can use the option
"ApplyFunction" to fix the issue. As an example, this will cause an
error
FFDenseSolve[{(t + 1/t) x + y == 3}, {x,y}]
because the coefficient of x is not written as a ratio of two
polynomials. However the following works
FFDenseSolve[{(t + 1/t) x + y == 3}, {x,y}, "ApplyFunction"->Together]
and is equivalent to
FFDenseSolve[{Together[t + 1/t] x + y == 3}, {x,y}]