If you know that you are limited to 3-dimensional objects, you might consider using the type double3 (or float3 if your gpu does not support double precision).
So far, only vectors have been supported, so you will need to do some encoding yourself regarding the use of matrix multiplication or inversion. However, you may be interested in the following built-in geometric functions . In particular, dot and cross products are defined.
You may also be interested to know that there are reserved data types for futures matrix impregnations: see, for example, double nx m. In your case, if this is possible in the future, you can use double3x3 types for your matrices.
source share