can be used to decide whether the result of a transformation is worth storing in the cache (e.g. normalization) and maybe later on for a simplify() method
pure virtual and const method complexity(), returning an unsignend in Base
the implemented methods in Base-derived classes can e.g. return
Undefined 0
Numeric: integer 1, fraction 2, double 3
Constant 4
Symbol 5 (for both positive and non-positive)
Sum 5 + operands
Product 5 + operands
Power 5 + base + 2*exp
Function 6 + operands
unit tests should all be in a new test/testcomplexity.cpp
test/testcomplexity.cpp