\section{EXIST Test for Existence}

\subsection{Usage}

Tests for the existence of a variable, function, directory or
file.  The general syntax for its use is
\begin{verbatim}
  y = exist(item,kind)
\end{verbatim}
where \verb|item| is a string containing the name of the item
to look for, and \verb|kind| is a string indicating the type 
of the search.  The \verb|kind| must be one of 
\begin{itemize}
\item  \verb|'builtin'| checks for built-in functions

\item  \verb|'dir'| checks for directories

\item  \verb|'file'| checks for files

\item  \verb|'var'| checks for variables

\item  \verb|'all'| checks all possibilities (same as leaving out \verb|kind|)

\end{itemize}
You can also leave the \verb|kind| specification out, in which case
the calling syntax is
\begin{verbatim}
  y = exist(item)
\end{verbatim}
The return code is one of the following:
\begin{itemize}
\item  0 - if \verb|item| does not exist

\item  1 - if \verb|item| is a variable in the workspace

\item  2 - if \verb|item| is an M file on the search path, a full pathname
 to a file, or an ordinary file on your search path

\item  5 - if \verb|item| is a built-in FreeMat function

\item  7 - if \verb|item| is a directory

\end{itemize}
Note: previous to version \verb|1.10|, \verb|exist| used a different notion
of existence for variables: a variable was said to exist if it 
was defined and non-empty.  This test is now performed by \verb|isset|.
\subsection{Example}

Some examples of the \verb|exist| function.  Note that generally \verb|exist|
is used in functions to test for keywords.  For example,
\begin{verbatim}
  function y = testfunc(a, b, c)
  if (~exist('c'))
    % c was not defined, so establish a default
    c = 13;
  end
  y = a + b + c;
\end{verbatim}
An example of \verb|exist| in action.
\begin{verbatim}
--> a = randn(3,5,2)
a = 
  <double>  - size: [3 5 2]
(:,:,1) = 
 
Columns 1 to 3
  0.88871349656451581  -0.27486926931161132  -0.12024249625514018  
 -0.90519861711237160   0.26884652521190833   1.90471605852950709  
 -1.65189724917687153   0.16892429650998678   0.51341456129698237  
 
Columns 4 to 5
  0.23474524092873861   0.28152354823275738  
 -0.05325434204406199  -1.61961083433645769  
 -0.57950864136569458   0.78628503285432572  
(:,:,2) = 
 
Columns 1 to 3
  0.82461267864970456  -0.58233963047628279  -0.69861236877830091  
 -0.50220881813883467   2.43683687159149187   1.26785652397925097  
 -0.99659329315144363  -0.55300573033678591  -0.33252184524739037  
 
Columns 4 to 5
  0.35908413820778551  -2.59873004781618944  
 -1.47481790392009282  -0.42393856108254580  
  2.29840609365120008   0.50244492229832827  
--> b = []
b = 
  <double>  - size: [0 0]
  []
--> who
  Variable Name      Type   Flags             Size
              a    double                    [3 5 2]
              b    double                    [0 0]
--> exist('a')
ans = 
  <int32>  - size: [1 1]
 1  
--> exist('b')
ans = 
  <int32>  - size: [1 1]
 1  
--> exist('c')
ans = 
  <int32>  - size: [1 1]
 0  

\end{verbatim}
