docs: public static DMatrixRMaj nullVector(SingularValueDecomposition_F64<DMatrixRMaj> svd ,
                                             boolean isRight ,
                                             DMatrixRMaj nullVector )
      {
          int N = svd.numberOfSingularValues();
          double s[] = svd.getSingularValues();
  
          DMatrixRMaj A = isRight ? svd.getV(null,true) : svd.getU(null,false);
  
          if( isRight ) {
              if( A.numRows != svd.numCols() ) {
                  throw new IllegalArgumentException("Can't compute the null space using a compact SVD for a matrix of this size.");
              }
  
              if( nullVector == null ) {
                  nullVector = new DMatrixRMaj(svd.numCols(),1);
              } else {
                  nullVector.reshape(svd.numCols(),1);
              }
          } else {
              if (A.numCols != svd.numRows()) {
                  throw new IllegalArgumentException("Can't compute the null space using a compact SVD for a matrix of this size.");
              }
  
              if (nullVector == null) {
                  nullVector = new DMatrixRMaj(svd.numRows(), 1);
              } else {
                  nullVector.reshape(svd.numRows(), 1);
              }
          }
  
          int smallestIndex = -1;
  
          if( isRight && svd.numCols() > svd.numRows() )
              smallestIndex = svd.numCols()-1;
          else if( !isRight && svd.numCols() < svd.numRows() )
              smallestIndex = svd.numRows()-1;
          else {
              // find the smallest singular value
              double smallestValue = Double.MAX_VALUE;
  
              for( int i = 0; i < N; i++ ) {
                  if( s[i] < smallestValue ) {
                      smallestValue = s[i];
                      smallestIndex = i;
                  }
              }
          }
  
          // extract the null space
          if( isRight )
              SpecializedOps_DDRM.subvector(A,smallestIndex,0,A.numRows,true,0,nullVector);
          else
              SpecializedOps_DDRM.subvector(A,0,smallestIndex,A.numRows,false,0,nullVector);
  
          return nullVector;
      }