Dear list, Using GiNaC one can define a symbolic/formal function f of two variables as follows: DECLARE_FUNCTION_2P(f) REGISTER_FUNCTION(f, dummy()) Formal derivatives can be computed by defining symbols x, y and calculating e.g. f(x,y).diff(x, 3).diff(y, 2) which is printed as D[0,0,0,1,1](f)(x,y) This is fantastic. Now, I would like to obtain the list [0, 0, 0, 1, 1] from the above expression. Checking the printing code GiNaC::fderivative::do_print, this is stored in a GiNaC::paramset. However, it's protected, and it doesn't seem to be accessible by any method. My attempt if (is_a<fderivative>(e)) { fderivative fder = ex_to<fderivative>(e); for (auto x : fder.parameter_set) cout << x << ", "; } therefore fails. Could an accessor or some such be implemented so this (basic) operation becomes possible? Best regards, Ricardo