Yorick es un lenguaje de programación interpretado diseñado para números , trazado de gráficos y dirección de grandes códigos de simulación científica. Es bastante rápido debido a la sintaxis de la matriz y se puede ampliar a través de las rutinas de C o Fortran . Fue creado en 1996 por David H. Munro del Laboratorio Nacional Lawrence Livermore .
Diseñada por | David H. Munro |
---|---|
Apareció por primera vez | 1996 |
Lanzamiento estable | 2.2.04 / mayo de 2015 |
SO | Sistemas similares a Unix, incluidos macOS , Microsoft Windows |
Licencia | BSD |
Extensiones de nombre de archivo | .I |
Sitio web | yorick |
Características
Indexación
Yorick es bueno manipulando elementos en matrices N-dimensionales convenientemente con su poderosa sintaxis.
Se puede acceder a varios elementos a la vez:
> 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]
- Elementos arbitrarios
> x = [[1,2,3], [4,5,6]] > x [[1,2,3], [4,5,6]] > x ([2,1], [1 , 2]) [[2,1], [5,4]] > lista = donde (1 )>> lista [2,3,4,5,6] > y = x (lista) > y [2 , 3,4,5,6]
- Pseudoíndice
Como "theading" en PDL y "broadcasting" en Numpy , Yorick tiene un mecanismo para hacer esto:
> 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]]
- Índice de caucho
".." es un índice de caucho para representar cero o más dimensiones de la matriz.
> 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
"*" es una especie de índice de goma para remodelar un segmento (submatriz) de una matriz en un vector.
> x (*) [1,2,3,4,5,6]
- Multiplicación de tensor
La multiplicación de tensor se realiza de la siguiente manera en Yorick:
P (, +,) * Q (, +)
medio
> 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]]