I compiled with g++ instead of gcc and passed -Wall to warn of errors in the code. Here's what I found.
g++ explicitMatrix.cpp -o explicitMatrix -lgsl -lgslcblas -lm -lstdc++ -g -Wall
explicitMatrix.cpp: In member function ‘void Reaction::setreacString(char*)’:
explicitMatrix.cpp:1488:31:warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare]
1488 | for (int i = 0; i < sizeof(p); i++) {
| ~~^~~~~~~~~~~explicitMatrix.cpp: In static member function ‘static void ReactionVector::makeReactionVectors()’:
explicitMatrix.cpp:2227:25:warning: unused variable ‘temp’ [-Wunused-variable]
2227 | int temp = gsl_vector_get(rvPt+i, j);
| ^~~~explicitMatrix.cpp: In member function ‘void ReactionGroup::setreaclabel(int, char*)’:
explicitMatrix.cpp:2700:27:warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare]
2700 | for (int i = 0; i < sizeof(p); i++) {
| ~~^~~~~~~~~~~explicitMatrix.cpp: In static member function ‘static void Integrate::doIntegrationStep()’:
explicitMatrix.cpp:3409:20:warning: unused variable ‘E_half1’ [-Wunused-variable]
3409 | double E_half1 = 0.0;
| ^~~~~~~explicitMatrix.cpp:3410:20:warning: unused variable ‘E_half2’ [-Wunused-variable]
3410 | double E_half2 = 0.0;
| ^~~~~~~explicitMatrix.cpp: In static member function ‘static double Integrate::computeTimeStep_EA(double, double)’:
explicitMatrix.cpp:3572:20:warning: variable ‘dtt_0’ set but not used [-Wunused-but-set-variable]
3572 | double dtt_0;
| ^~~~~explicitMatrix.cpp: In static member function ‘static void Integrate::updatePopulations(double)’:
explicitMatrix.cpp:3659:21:warning: unused variable ‘numAsy’ [-Wunused-variable]
3659 | int numAsy = 0;
| ^~~~~~explicitMatrix.cpp: In function ‘int main()’:
explicitMatrix.cpp:4006:20:warning: statement has no effect [-Wunused-value]
4006 | hasBe8 == true;
| ~~~~~~~^~~~~~~explicitMatrix.cpp:4007:22:warning: statement has no effect [-Wunused-value]
4007 | indexBe8 == i;
| ~~~~~~~~~^~~~explicitMatrix.cpp:4011:22:warning: statement has no effect [-Wunused-value]
4011 | hasAlpha == true;
| ~~~~~~~~~^~~~~~~explicitMatrix.cpp:4012:24:warning: statement has no effect [-Wunused-value]
4012 | indexAlpha == i;
| ~~~~~~~~~~~^~~~explicitMatrix.cpp: In function ‘void assignRG()’:
explicitMatrix.cpp:5430:13:warning: variable ‘upper1’ set but not used [-Wunused-but-set-variable]
5430 | int upper1;
| ^~~~~~explicitMatrix.cpp:5431:13:warning: variable ‘upper2’ set but not used [-Wunused-but-set-variable]
5431 | int upper2;
| ^~~~~~explicitMatrix.cpp: In function ‘void sumFplusFminus()’:
explicitMatrix.cpp:5728:12:warning: unused variable ‘dydt’ [-Wunused-variable]
5728 | double dydt;
| ^~~~explicitMatrix.cpp: In constructor ‘Reaction::Reaction()’:
explicitMatrix.cpp:1407:26:warning: ‘*this.Reaction::reacIndex’ is used uninitialized [-Wuninitialized]
1407 | reacIsActive[reacIndex] = true;
| ^~~~~~~~~
I compiled with g++ instead of gcc and passed -Wall to warn of errors in the code. Here's what I found.