Nothing
      GSVD <-
function(A,B)
{
    ##  the author thanks Berend Hasselman  and Lapack authors
    ## for help in preparing some of these wrappers
    ## some of the code here has been adapted from package
    ## geigen, by Hasselman
    if(!is.matrix(A)) stop("Argument A should be a matrix")
    if(!is.matrix(B)) stop("Argument B should be a matrix")
  
    
    # A=U*E1*Q'
    # B=V*E2*Q'
  
    dimA <- dim(A)
    dimB <- dim(B)
    if(dimA[1]==0) stop("Matrix A has zero rows/columns")
    if(dimB[1]==0) stop("Matrix B has zero rows/columns")
    
    if(!all(is.finite(A))) stop("Matrix A may not contain infinite/NaN/NA")
    if(!all(is.finite(B))) stop("Matrix B may not contain infinite/NaN/NA")
 z = geigen::gsvd(A, B)
### names(z)
        R <- geigen::gsvd.R(z)
        oR <- geigen::gsvd.oR(z)
        D1 <- geigen::gsvd.D1(z);
        D2 <- geigen::gsvd.D2(z)
### R;oR
### D1;D2
##### matlab X is (sort of) 
        X    =    t(oR %*% t(z$Q) )
###  z$U %*% D1 %*% t(X) 
        C = D1
        S = D2
        return(list(U = z$U, V = z$V, X = X, C = D1, S = D2))
     
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.