#function-application">the function
application section</a>, a <code>real</code> argument will be
promoted to <code>complex</code> if necessary, a <code>vector</code> will be promoted to
<code>complex_vector</code> if necessary, and so on.</p>
<p>In general, matrix operations return the lowest inferable type. For
example, <code>row_vector * vector</code> returns a value of type
<code>real</code>, which is declared in the function documentation and index
as <code>real operator*(row_vector, vector)</code>.</p