docs: public static boolean svd(DMatrixRMaj A, @Nullable DMatrixRMaj U , DGrowArray sv , @Nullable DMatrixRMaj Vt ) {
  
          boolean needU = U != null;
          boolean needV = Vt != null;
  
          SingularValueDecomposition_F64<DMatrixRMaj> svd =
                  DecompositionFactory_DDRM.svd(A.numRows,A.numCols,needU,needV,true);
  
          if( svd.inputModified() ) {
              A = A.copy();
          }
  
          if( !svd.decompose(A)) {
              return false;
          }
  
          int N = Math.min(A.numCols,A.numRows);
  
          if( needU )
              svd.getU(U,false);
          if( needV )
              svd.getV(Vt,true);
  
          sv.reshape(N);
          System.arraycopy(svd.getSingularValues(), 0, sv.data, 0, N);
  
          descendingOrder(U,false,sv.data,N,Vt,true);
  
          return true;
      }