Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Yorick (programming language)
Interpreted programming language

Yorick is an interpreted programming language designed for numerics, graph plotting, and steering large scientific simulation codes. It is quite fast due to array syntax, and extensible via C or Fortran routines. It was created in 1996 by David H. Munro of Lawrence Livermore National Laboratory.

We don't have any images related to Yorick (programming language) yet.
We don't have any YouTube videos related to Yorick (programming language) yet.
We don't have any PDF documents related to Yorick (programming language) yet.
We don't have any Books related to Yorick (programming language) yet.
We don't have any archived web articles related to Yorick (programming language) yet.

Features

Indexing

Yorick is good at manipulating elements in N-dimensional arrays conveniently with its powerful syntax.

Several elements can be accessed all at once:

> x=[1,2,3,4,5,6]; > x [1,2,3,4,5,6] > x(3:6) [3,4,5,6] > x(3:6:2) [3,5] > x(6:3:-2) [6,4] Arbitrary elements > x=[[1,2,3],[4,5,6]] > x [[1,2,3],[4,5,6]] > x([2,1],[1,2]) [[2,1],[5,4]] > list=where(1<x) > list [2,3,4,5,6] > y=x(list) > y [2,3,4,5,6] Pseudo-index

Like "theading" in PDL and "broadcasting" in Numpy, Yorick has a mechanism to do this:

> x=[1,2,3] > x [1,2,3] > y=[[1,2,3],[4,5,6]] > y [[1,2,3],[4,5,6]] > y(-,) [[[1],[2],[3]],[[4],[5],[6]]] > x(-,) [[1],[2],[3]] > x(,-) [[1,2,3]] > x(,-)/y [[1,1,1],[0,0,0]] > y=[[1.,2,3],[4,5,6]] > x(,-)/y [[1,1,1],[0.25,0.4,0.5]] Rubber index

".." is a rubber-index to represent zero or more dimensions of the array.

> x=[[1,2,3],[4,5,6]] > x [[1,2,3],[4,5,6]] > x(..,1) [1,2,3] > x(1,..) [1,4] > x(2,..,2) 5

"*" is a kind of rubber-index to reshape a slice(sub-array) of array to a vector.

> x(*) [1,2,3,4,5,6] Tensor multiplication

Tensor multiplication is done as follows in Yorick:

P(,+, )*Q(, +)

means ∑ j = 1 j = N P i j k l Q m n j {\displaystyle \sum _{j=1}^{j=N}{P_{ijkl}Q_{mnj}}}

> x=[[1,2,3],[4,5,6]] > x [[1,2,3],[4,5,6]] > y=[[7,8],[9,10],[11,12]] > x(,+)*y(+,) [[39,54,69],[49,68,87],[59,82,105]] > x(+,)*y(,+) [[58,139],[64,154]]