If the columns of a matrix are orthonormal and it is partitioned into a 2-by-1 block matrix, then the singular value decompositions of the blocks are related. This is the essence of the "CS decomposition". The computation of these related SVD's requires some care. Stewart has given an algorithm that uses the LIN-PACK SVD algorithm together with a Jacobi-type "clean-up" operation on a cross-product matrix. Our technique is equally stable and fast but avoids the cross-product matrix. The simplicity of our technique makes it more amenable to parallel computation on systolic-type computer architectures. These developments are of interest because the best way to compute the generalized singular value decomposition of a matrix pair (A,B)...