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 = ?