For [#139], [#112], we need to exponentiate operators, at least in simple cases (no coupling of electronic states). Furthermore, to determine if composite operators can be exponentiated, we need to check if the components commute, so this functionality may also be needed.
It may help to introduce additional traits / interface classes to merge multiple elementary operators under one umbrella. But then again, the number of base classes may be small enough that a simple tabular approach is appropriate.
Instead of the grand scheme outlined above, which allows widespread operator algebra, I only went for the "small" solution. Here, only specific operators allow exponentiation at all, and I only did a simplistic implementation. More complex operations have been delayed to [#218]
Diff:
Diff:
Related
Tickets: #112
Tickets: #139
Diff:
Related
Tickets: #112
Tickets: #139
Diff:
Related
Tickets: #112
Tickets: #139
Diff:
Related
Tickets: #218