Jiahao Chen Describe Julia semantics  over 8 years ago

Commit id: af49eed76fdeadb28ee1d222f99142d25123c36a

deletions | additions      

       

year = {2010}  }  @article{Bezanson2012,  author = {Bezanson, J. and Karpinski, S. and Shah, V.~B. and Edelman, A.},  title = {{J}ulia: A Fast Dynamic Language for Technical Computing},  journal = {ArXiv},  archivePrefix = "arXiv",  eprint = {1209.5145},  primaryClass = "cs.PL",  year = 2012,  }  @Manual{Rlang,  title = {R: A Language and Environment for Statistical Computing},  author = {{R Core Team}},         

\subsection{Julia}  Julia is a dynamic for technical computing, whose base library features generous functionality for linear algebraic operations.~\cite{Bezanson2009} operations.~\cite{Bezanson2012}  Julia's multiplication operator, \verb|*|, implements matrix--matrix and  matrix--vector products, as well as scalings of vectors and matrices, on top of  ordinary scalar multiplication.  Julia's division \verb|x/y| is equivalent to multiplication of \verb|x| by the  inverse of \verb|y| on the right. For non-scalar \verb|y|, the inverse is  generalized to matrix inverses and pseudoinverses (in the least-squares sense)  where appropriate.  Julia's transposition operator, \verb|'|, promotes vectors to column matrices  before transposing them. Thus we have that vector transposition is not  idempotent, \verb|x''|$\ne$\verb|x|.   Julia's current semantics lead to some unexpected behavior. Expressions like  \verb|a'*b| for the inner product produce a vector of length 1, which do not  have the semantics of scalars. Other identities, like $(xy^\prime)z =  x(y^\prime z)$, also fail to hold in code, since \verb|x*(y'z)| becomes the  product of a vector with a 1-vector, which is not defined.  \subsection{R}