don't expose Vec constructor, only unsafeVec which performs a runtime check
use unsafeVec internally for now, to catch errors
toSX :: (Vectorize f n, Vectorize g m) => AlgorithmV f g Double -> IO (f SX, g SX)
for instead of hiding it all in toSXFun