The (srfi 133) spec goes to length to explain that the elt=? argument must be "consistent with eq?" -- ie. if (eq? a b) for any elements from the given vectors, then (elt=? a b) must be true.
The problem with that is that it means that (vector= = ...) cannot be expected to have the semantics expected from = when one or more elements of the argument vectors might be +nan.0.
When using the sample implementation of (srfi 133):
(let ((v #(+nan.0))) (vector= = v v)) ==> #t
(let ((v #(+nan.0))) (vector= = v (vector-copy v))) ==> #t
So, one workaround is to tell the users, "don't use =, use eqv? -- you'll get the same results, but then they'll be correct!" <sigh>
Should (srfi 160) declare something different here for the floating point and complex vector types? Perhaps even just a note of warning about using = ?