89#ifdef STORM_USE_CLN_EA
90 STORM_PRINT(
"Using CLN numbers for exact arithmetic.\n");
92 STORM_PRINT(
"Using GMP numbers for exact arithmetic.\n");
94#ifdef STORM_USE_CLN_RF
95 STORM_PRINT(
"Using CLN numbers for rational functions.\n");
97 STORM_PRINT(
"Using GMP numbers for rational functions.\n");
101#ifdef STORM_HAVE_CARL
102 STORM_PRINT(
"Linked with CArL v" << STORM_CARL_VERSION <<
".\n");
104#ifdef STORM_HAVE_GLPK
105 STORM_PRINT(
"Linked with GNU Linear Programming Kit v" << GLP_MAJOR_VERSION <<
"." << GLP_MINOR_VERSION <<
".\n");
107#ifdef STORM_HAVE_GUROBI
108 STORM_PRINT(
"Linked with Gurobi Optimizer v" << GRB_VERSION_MAJOR <<
"." << GRB_VERSION_MINOR <<
"." << GRB_VERSION_TECHNICAL <<
".\n");
110#ifdef STORM_HAVE_INTELTBB
111 STORM_PRINT(
"Linked with Intel Threading Building Blocks v" << TBB_VERSION_MAJOR <<
"." << TBB_VERSION_MINOR <<
" (Interface version "
112 << TBB_INTERFACE_VERSION <<
").\n");
114#ifdef STORM_HAVE_MSAT
115 char* msatVersion = msat_get_version();
116 STORM_PRINT(
"Linked with " << msatVersion <<
".\n");
117 msat_free(msatVersion);
119#ifdef STORM_HAVE_SOPLEX
120 STORM_PRINT(
"Linked with Soplex v" << SOPLEX_VERSION <<
".\n");
122#ifdef STORM_HAVE_SMTRAT
123 STORM_PRINT(
"Linked with SMT-RAT v" << SMTRAT_VERSION <<
".\n");
125#ifdef STORM_HAVE_SPOT
126 STORM_PRINT(
"Linked with Spot v" << spot::version() <<
".\n");
128#ifdef STORM_HAVE_XERCES
129 STORM_PRINT(
"Linked with Xerces-C v" << gXercesMajVersion <<
"." << gXercesMinVersion <<
"." << gXercesRevision <<
".\n");
132 unsigned int z3Major, z3Minor, z3BuildNumber, z3RevisionNumber;
133 Z3_get_version(&z3Major, &z3Minor, &z3BuildNumber, &z3RevisionNumber);
134#ifdef STORM_HAVE_Z3_OPTIMIZE
135 STORM_PRINT(
"Linked with Z3 Theorem Prover v" << z3Major <<
"." << z3Minor <<
" Build " << z3BuildNumber <<
" Rev " << z3RevisionNumber
136 <<
" (with optimization features).\n");
138 STORM_PRINT(
"Linked with Z3 Theorem Prover v" << z3Major <<
"." << z3Minor <<
" Build " << z3BuildNumber <<
" Rev " << z3RevisionNumber <<
".\n");
145 getrusage(RUSAGE_SELF, &ru);
147 std::cout <<
"\nPerformance statistics:\n";
150 uint64_t maximumResidentSizeInMegabytes = ru.ru_maxrss / 1024 / 1024;
154 uint64_t maximumResidentSizeInMegabytes = ru.ru_maxrss / 1024;
156 std::cout <<
" * peak memory usage: " << maximumResidentSizeInMegabytes <<
"MB\n";
157 char oldFillChar = std::cout.fill(
'0');
158 std::cout <<
" * CPU time: " << ru.ru_utime.tv_sec <<
"." << std::setw(3) << ru.ru_utime.tv_usec / 1000 <<
"s\n";
159 if (wallclockMilliseconds != 0) {
160 std::cout <<
" * wallclock time: " << (wallclockMilliseconds / 1000) <<
"." << std::setw(3) << (wallclockMilliseconds % 1000) <<
"s\n";
162 std::cout.fill(oldFillChar);