Sub Ex_Zggsvd3()
Const M = 3, N = 3, P = 3
Dim A(M - 1, N - 1) As Complex, B(P - 1, N - 1) As Complex
Dim Alpha(N - 1) As Double, Beta(N - 1) As Double
Dim U(M - 1, M - 1) As Complex, V(P - 1, P - 1) As Complex, Q(N - 1, N - 1) As Complex
Dim K As Long, L As Long, Info As Long
A(0, 0) = cmplx(0.2, -0.11): A(0, 1) = cmplx(-0.93, -0.32): A(0, 2) = cmplx(0.81, 0.37)
A(1, 0) = cmplx(-0.8, -0.92): A(1, 1) = cmplx(-0.29, 0.86): A(1, 2) = cmplx(0.64, 0.51)
A(2, 0) = cmplx(0.71, 0.59): A(2, 1) = cmplx(-0.15, 0.19): A(2, 2) = cmplx(0.2, 0.94)
B(0, 0) = cmplx(0.57, -0.91): B(0, 1) = cmplx(-0.28, -0.45): B(0, 2) = cmplx(0.25, 0.91)
B(1, 0) = cmplx(0.83, 0.46): B(1, 1) = cmplx(0.63, -0.19): B(1, 2) = cmplx(-0.69, 0.09)
B(2, 0) = cmplx(0.24, -1.33): B(2, 1) = cmplx(-0.56, -0.67): B(2, 2) = cmplx(0.9, 1.25)
Call Zggsvd3("U", "V", "Q", M, N, P, K, L, A(), B(), Alpha(), Beta(), U(), V(), Q(), Info)
Debug.Print "Alpha =", Alpha(0), Alpha(1), Alpha(2)
Debug.Print "Beta =", Beta(0), Beta(1), Beta(2)
Debug.Print "R ="
Debug.Print Creal(A(0, 0)), Cimag(A(0, 0)), Creal(A(0, 1)), Cimag(A(0, 1))
Debug.Print Creal(A(1, 0)), Cimag(A(1, 0)), Creal(A(1, 1)), Cimag(A(1, 1))
Debug.Print Creal(A(2, 0)), Cimag(A(2, 0)), Creal(A(2, 1)), Cimag(A(2, 1))
Debug.Print Creal(A(0, 2)), Cimag(A(0, 2))
Debug.Print Creal(A(1, 2)), Cimag(A(1, 2))
Debug.Print Creal(A(2, 2)), Cimag(A(2, 2))
Debug.Print "U ="
Debug.Print Creal(U(0, 0)), Cimag(U(0, 0)), Creal(U(0, 1)), Cimag(U(0, 1))
Debug.Print Creal(U(1, 0)), Cimag(U(1, 0)), Creal(U(1, 1)), Cimag(U(1, 1))
Debug.Print Creal(U(2, 0)), Cimag(U(2, 0)), Creal(U(2, 1)), Cimag(U(2, 1))
Debug.Print Creal(U(0, 2)), Cimag(U(0, 2))
Debug.Print Creal(U(1, 2)), Cimag(U(1, 2))
Debug.Print Creal(U(2, 2)), Cimag(U(2, 2))
Debug.Print "V ="
Debug.Print Creal(V(0, 0)), Cimag(V(0, 0)), Creal(V(0, 1)), Cimag(V(0, 1))
Debug.Print Creal(V(1, 0)), Cimag(V(1, 0)), Creal(V(1, 1)), Cimag(V(1, 1))
Debug.Print Creal(V(2, 0)), Cimag(V(2, 0)), Creal(V(2, 1)), Cimag(V(2, 1))
Debug.Print Creal(V(0, 2)), Cimag(V(0, 2))
Debug.Print Creal(V(1, 2)), Cimag(V(1, 2))
Debug.Print Creal(V(2, 2)), Cimag(V(2, 2))
Debug.Print "Q ="
Debug.Print Creal(Q(0, 0)), Cimag(Q(0, 0)), Creal(Q(0, 1)), Cimag(Q(0, 1))
Debug.Print Creal(Q(1, 0)), Cimag(Q(1, 0)), Creal(Q(1, 1)), Cimag(Q(1, 1))
Debug.Print Creal(Q(2, 0)), Cimag(Q(2, 0)), Creal(Q(2, 1)), Cimag(Q(2, 1))
Debug.Print Creal(Q(0, 2)), Cimag(Q(0, 2))
Debug.Print Creal(Q(1, 2)), Cimag(Q(1, 2))
Debug.Print Creal(Q(2, 2)), Cimag(Q(2, 2))
Debug.Print "K =", K, "L =", L, "Info =", Info
End Sub