Fix broadcasting oob error.
For vectorized 1-dimensional inputs that do not take the special
blocking path (e.g. std::complex<...>), there was an
index-out-of-bounds error causing the broadcast size to be
computed incorrectly. Here we fix this, and make other minor
cleanup changes.
Fixes #2351 (closed).