VI_shl  VBI_shl  VSI_shl  VLI_shl  VQI_shl 
VU_shl  VUB_shl  VUS_shl  VUL_shl  VUI_shl 

Function  "Shift to the left", i.e. multiply by integer powers of 2. 

Syntax C/C++  #include <VImath.h>
void VI_shl( iVector Y, iVector X, ui size, unsigned C );
void VUL_shl( ulVector Y, ulVector X, ui size, unsigned C );
(similarly all other functions of this family) 
C++ VecObj  #include <OptiVec.h>
void vector<T>::shl( const vector<T>& X, unsigned C ); 
Pascal/Delphi  uses VImath;
procedure VI_shl( Y, X:iVector; size:UIntSize; C:UInt );
procedure VUL_shl( Y, X:ulVector; size:UIntSize; C:UInt );
(similarly all other functions of this family) 

Description  Y_{i} = X_{i} << C
All bits of X_{i} are shifted to the left by as many positions as indicated in the parameter C. This corresponds to a multiplication by 2^{C}, neglecting possible overflow (in all versions) and loss of the sign bit (for signed numbers, i.e. in the VI_, VBI_, VSI_, VLI_, and VQI_ versions).
Note that by shifting 8bit numbers (VBI_, VUB_ versions) by more than 7 positions, any nonzero bit present in the original number is lost and the result is 0. The same is true for 16bit numbers (VSI_, VUS_ versions) shifted by more than 15 positions, and for 32bit numbers (VLI_, VUL_) shifted by more than 31 positions.
C is always of the data type unsigned. Shifting by negative numbers C is, therefore, not possible. To perform a rightshift, the appropriate function of the VI_shr family has to be used. 



