                 vt = Empty(Shape{n, n}, dtype, device);
             } else {
                 u = Empty(Shape{mn, m}, dtype, device);
-                vt = Empty(Shape{mn, n}, dtype, device);
+                vt = Empty(Shape{n, mn}, dtype, device);
+                ldvt = mn;
             }
         } else {
             u = Empty(Shape{0}, dtype, device);

            trans_flag = true;
        }
        int64_t mn = std::min(m, n);

        Array u{};
        Array vt{};

                    m,
                    s_ptr,
                    u_ptr,
                    ldu,
                    vt_ptr,
                    ldvt,
                    work_ptr,
                    buffersize,
                    nullptr,
