Hi Ralf, just picking on one of your remark.
You cannot change the rotation denominator (fixed at 1) for the matrices processed by sgtbx.space_group. Therefore you cannot work with, e.g. the pseudo-orthorhombic C-centered setting of a hexagonal space group. However, I never came across a situation where this was interesting.
It would be possible to rewrite the sgtbx based on boost::rational<int>, but it is a big project. The advantage would be more flexibility, the disadvantage a performance decrease. If there is a strong reason I would go for more flexibility, but so far I've never found this worthwhile.
If I understand correctly, space_group_type lets the user use any space-group in a non-standard setting defined by a special change of basis. Now your example would require the matrix of change of basis to be rational whereas in the current implementation it can only be integral. At least as far as I understand, from the code and your comments. Thus, the only place where rational numbers would be necessary is in those matrices of change of basis, isn't it? Now, would it be possible to define a new class space_group_irrational_setting which would provide services very similar to space_group_type but accepting non-integral matrices for the change of basis? Luc