143:
notation from the difficulty of mastering its implications. For example, learning the rules for computing a matrix product is easy, but a mastery of its implications (such as its associativity, its distributivity over addition, and its ability to represent linear functions and geometric operations) is a different and much more difficult matter.
2058:
it is important to distinguish the difficulty of describing and of learning a piece of notation from the difficulty of mastering its implications. For example, learning the rules for computing a matrix product is easy, but a mastery of its implications (such as its associativity, its distributivity
151:
Users of computers and programming languages are often concerned primarily with the efficiency of execution of algorithms, and might, therefore, summarily dismiss many of the algorithms presented here. Such dismissal would be short-sighted since a clear statement of an algorithm can usually be used
142:
The thesis is that the advantages of executability and universality found in programming languages can be effectively combined, in a single coherent language, with the advantages offered by mathematical notation. it is important to distinguish the difficulty of describing and of learning a piece of
2059:
over addition, and its ability to represent linear functions and geometric operations) is a different and much more difficult matter. Indeed, the very suggestiveness of a notation may make it seem harder to learn because of the many properties it suggests for explorations.
1973:
However, these solutions are neither the most concise ones (e.g. still remains the need to notationally differentiate overdetermined systems) nor the most computationally efficient. The latter point is easy to understand when considering again the scalar equivalent
566:
would have an extremely hard time amalgamating two or more apparently disparate functions which might appear in different program sections or sub-routines, even though a programmer could do this easily, aggregating sums on the same pass over the array to minimize
514:
While scalar languages like C do not have native array programming elements as part of the language proper, this does not mean programs written in these languages never take advantage of the underlying techniques of vectorization (i.e., utilizing a CPU's
2042:
This is not only an example of terse array programming from the coding point of view but also from the computational efficiency perspective, which in several array programming languages benefits from quite efficient linear algebra libraries such as
171:
rank in mathematics: functions that operate on data may be classified by the number of dimensions they act on. Ordinary multiplication, for example, is a scalar ranked function because it operates on zero-dimensional data (individual numbers). The
800:'s matrix programming language Mata supports array programming. Below, we illustrate addition, multiplication, addition of a matrix and a scalar, element by element multiplication, subscripting, and one of Mata's many inverse matrix functions.
113:, which implements vector instructions. Array programming primitives concisely express broad ideas about data manipulation. The level of concision can be dramatic in certain cases: it is not uncommon to find array programming language
156:
The basis behind array programming and thinking is to find and exploit the properties of data where individual elements are similar or adjacent. Unlike object orientation which implicitly breaks down data to its constituent parts (or
139:
most programming languages are decidedly inferior to mathematical notation and are little used as tools of thought in ways that would be considered significant by, say, an applied mathematician.
562:
code. (For example, additions of other elements of the same array may be subsequently encountered during the same execution, causing unnecessary repeated lookups.) Even the most sophisticated
1697:
Raku supports the array paradigm via its
Metaoperators. The following example demonstrates the addition of arrays @a and @b using the Hyper-operator in conjunction with the plus operator.
1469:
by default. The following example illustrates a process of multiplication of two matrices followed by an addition of a scalar (which is, in fact, a one-element vector) and a vector:
2561:
1804:. The previous statements are also valid MATLAB expressions if the third one is executed before the others (numerical comparisons may be false because of round-off errors).
3308:
2262:
Chatzigeorgiou; Stephanides (2002). "Evaluating
Performance and Power Of Object-Oriented Vs. Procedural Programming Languages". In Blieberger; Strohmeier (eds.).
224:
in that one physical processor performs operations on a group of items simultaneously while parallel processing aims to split a larger problem into smaller ones (
129:
model as it allows the programmer to think and operate on whole aggregates of data, without having to resort to explicit loops of individual scalar operations.
2467:
237:
2531:
184:
reduce the dimensionality of an input data array by one or more dimensions. For example, summing over elements collapses the input array by 1 dimension.
523:
at some optimization levels detect and vectorize sections of code that its heuristics determine would benefit from it. Another approach is given by the
2480:
2021:
to maintain the essential part of the analogy with the scalar case, therefore simplifying the mathematical reasoning and preserving the conciseness:
364:
expresses the addition of two numbers. In such languages, adding one array to another requires indexing and looping, the coding of which is tedious.
1576:# t() is a transpose operator !!this has nrow=2 ... and B has 3 rows --- a clear contradiction to the definition of A
1466:
164:
2324:
2630:
2565:
2106:
635:
This operation works on arrays of any rank (including rank 0), and on a scalar and an array. Dyalog APL extends the original language with
146:
Indeed, the very suggestiveness of a notation may make it seem harder to learn because of the many properties it suggests for explorations.
3301:
2044:
17:
2460:
2130:
StƩfan van der Walt; S. Chris
Colbert & Gaƫl Varoquaux (2011). "The NumPy array: a structure for efficient numerical computation".
2403:
38:
refers to solutions that allow the application of operations to an entire set of values at once. Such solutions are commonly used in
2068:
The use of specialized and efficient libraries to provide more terse abstractions is also common in other programming languages. In
2694:
285:
3294:
3044:
2906:
1732:
The matrix left-division operator concisely expresses some semantic properties of matrices. As in the scalar equivalent, if the (
2435:
3401:
3391:
3050:
2076:. In some cases a very terse abstraction in those languages is explicitly influenced by the array programming paradigm, as the
3449:
3406:
3396:
3386:
2453:
2273:
2237:
3467:
3363:
3235:
2983:
125:
The fundamental idea behind array programming is that operations apply at once to an entire set of values. This makes it a
1402:
The inner product between two matrices having the same number of elements can be implemented with the auxiliary operator
225:
558:. Because the additions are performed in isolation from the rest of the coding, they may not produce the optimally most
461:
In array-based languages, for example in
Fortran, the nested for-loop above can be written in array-format in one line,
2703:
516:
213:
1429:
is a database-oriented array-programming language. For example, two arrays could be added with the following query:
3378:
3075:
2755:
2699:
1378:
example of the inner product of two arrays can be implemented using the native matrix multiplication operator. If
200:
and compatible CPUs developed and produced after 1997 contained various instruction set extensions, starting from
3358:
2935:
2808:
2739:
2674:
2597:
2384:"Reference for Armadillo 1.1.8. Examples of Matlab/Octave syntax and conceptually corresponding Armadillo syntax"
2263:
1368:
126:
3472:
3438:
3353:
3113:
2876:
2506:
2292:
333:
181:
3368:
2891:
2881:
2659:
2081:
353:
269:
527:
API, which allows one to parallelize applicable sections of code by taking advantage of multiple CPU cores.
3275:
3255:
3185:
3128:
3090:
3080:
3040:
2965:
2901:
2871:
2798:
2787:
2684:
2664:
2639:
2602:
277:
98:
2304:
3230:
2993:
2960:
2855:
2831:
2793:
2773:
2669:
2578:
2556:
2541:
313:
2363:
3427:
3177:
3163:
3070:
3030:
2955:
2861:
2841:
2708:
2587:
2521:
1364:
580:
329:
273:
261:
253:
66:
3270:
3035:
2945:
2925:
2911:
2328:
2085:
50:
3250:
3210:
3153:
3085:
2823:
2654:
349:
321:
309:
281:
257:
233:
193:
90:
70:
3260:
3240:
3181:
3168:
3148:
2975:
2712:
2616:
2574:
2445:
2111:
520:
46:
3220:
3195:
3189:
3133:
3095:
2783:
2778:
2730:
2625:
2526:
2498:
2489:
2054:
Returning to the previous quotation of
Iverson, the rationale behind it should now be evident:
2033: (associativity also holds for matrices, commutativity is no more required)
568:
559:
176:
operation is an example of a vector rank function because it operates on vectors, not scalars.
2265:
Proceedings - 7th
International Conference on Reliable Software Technologies - Ada-Europe'2002
3122:
3118:
3060:
3012:
2582:
201:
180:
is an example of a 2-rank function, because it operates on 2-dimensional objects (matrices).
177:
39:
3346:
3317:
3265:
3245:
3205:
3007:
2866:
2735:
2722:
2476:
2149:
2073:
636:
265:
229:
82:
62:
2407:
535:
In array languages, operations are generalized to apply to both scalars and arrays. Thus,
8:
3200:
3138:
2950:
2930:
2916:
2648:
2516:
2511:
2349:
1801:
1426:
563:
135:
described the rationale behind array programming (actually referring to APL) as follows:
2153:
220:, making modern CPUs sophisticated vector processors. Array processing is distinct from
3017:
2970:
2940:
2886:
2745:
2644:
2536:
2288:
2183:
2165:
2139:
305:
221:
158:
132:
102:
58:
54:
3341:
3336:
3173:
3065:
2920:
2896:
2803:
2765:
2750:
2689:
2269:
1393:
114:
2169:
1765:
216:
array capabilities. This has continued into the 2020s with instruction sets such as
3055:
2987:
2851:
2592:
2199:
2157:
1360:
110:
31:
2241:
677:
had MAT statements for matrix and array manipulation in its third edition (1966).
105:. In these languages, an operation that operates on entire arrays can be called a
3286:
3105:
2979:
2845:
2546:
2129:
674:
167:
is an important concept to array programming languages in general, by analogy to
161:
quantities), array orientation looks to group data and apply a uniform handling.
3157:
2813:
2679:
2383:
1745:
1356:
2220:
3461:
3143:
2101:
1987:
1784:
1768:
554:
An array language simplifies programming but possibly at a cost known as the
173:
3331:
45:
Modern programming languages that support array programming (also known as
2204:
2187:
1990:
as the extension of the scalar solution to the matrix case would require:
1336:
language, which extends the original language with augmented assignments:
3025:
2161:
1733:
53:
languages) have been engineered specifically to generalize operations on
2238:"The Data Abstraction Penalty (DAP) Benchmark for Small Objects in Java"
1333:
293:
152:
as a basis from which one may easily derive a more efficient algorithm.
86:
519:
if it has them or by using multiple CPU cores). Some C compilers like
2089:
1407:
94:
2072:
several linear algebra libraries exploit the language's ability to
613:
APL uses single character
Unicode symbols with no syntactic sugar.
337:
2475:
2144:
1740:
is not null then it is possible to solve the (vectorial) equation
301:
249:
228:) to be solved piecemeal by numerous processors. Processors with
217:
74:
2440:
2002: (commutativity does not hold for matrices!)
483:
or alternatively, to emphasize the array nature of the objects,
2048:
1986:. The problem is that generally matrix multiplications are not
1727:
1307:
allows the same economy allowed by using the
Fortran language.
1304:
524:
317:
297:
289:
209:
168:
78:
1406:, which reshapes a given matrix into a column vector, and the
2077:
2069:
797:
205:
197:
2008: (associativity also holds for matrices)
1982:
would require two operations instead of the more efficient
1375:
325:
2017:
The MATLAB language introduces the left-division operator
1941: (matrix-multiplication associativity)
663:
Analytica provides the same economy of expression as Ada.
551:
are scalars, or the sum of two arrays if they are arrays.
248:
The canonical examples of array programming languages are
27:
Applying operations to whole sets of values simultaneously
2261:
2430:
2350:"Metaoperators section of Raku Operator documentation"
579:
The previous C code would become the following in the
109:
operation, regardless of whether it is executed on a
117:
that require several pages of object-oriented code.
1760:). The following mathematical statements hold when
583:language, which supports array-programming syntax.
3316:
2364:"GNU Octave Manual. Appendix G Installing Octave"
3459:
1811:has more rows than columns ā the pseudoinverse
65:, and higher-dimensional arrays. These include
196:; a topic of much research nowadays. Further,
3302:
2461:
1513:# !!this has nrow=2 ... and A has 2 rows
1289:+-------------------------------------------+
1249:+-------------------------------------------+
356:, operations apply only to single values, so
2404:"Blitz++ User's Guide. 3. Array Expressions"
2325:"MATLAB documentation. Arithmetic Operators"
1783: (matrix-multiplication
1728:Mathematical reasoning and language notation
1355:Both MATLAB and GNU Octave natively support
1386:is a corresponding column vector of size .
1181:// Subscripting to get a submatrix of F and
3309:
3295:
2468:
2454:
1807:If the system is overdetermined ā so that
1756:(in both MATLAB and GNU Octave languages:
1359:operations such as matrix multiplication,
1236:// symmetric positive semi-definite matrix
2532:Programming in the large and in the small
2305:"GNU Octave Manual. Arithmetic Operators"
2222:Meta-Compilation of Language Abstractions
2203:
2143:
1232:// Generalized inverse (F*F^(-1)F=F) of a
192:Array programming is very well suited to
2218:
2063:
1332:A variant of the MATLAB language is the
2182:
14:
3460:
1744:by left-multiplying both sides by the
3290:
2449:
2235:
1815:(in MATLAB and GNU Octave languages:
2132:Computing in Science and Engineering
543:expresses the sum of two scalars if
120:
2107:List of array programming languages
343:
24:
530:
25:
3484:
2424:
3076:Partitioned global address space
1363:, and the numerical solution of
2431:"No stinking loops" programming
2396:
2376:
2356:
2293:G.3.1 Real Vectors and Matrices
2188:"Notation as a Tool of Thought"
1944:
1888:
1827:
3318:Types of programming languages
2342:
2317:
2297:
2282:
2255:
2229:
2212:
2176:
2123:
13:
1:
3418:
2441:"Types of Arrays" programming
2117:
1736:of the) coefficient (matrix)
1382:is a row vector of size and
3450:Programming paradigms navbox
2603:Uniform Function Call Syntax
658:
348:In scalar languages such as
243:
212:, which include rudimentary
7:
3468:Array programming languages
3071:Parallel programming models
3045:Concurrent constraint logic
2436:Discovering Array Languages
2095:
1369:MooreāPenrose pseudoinverse
42:and engineering settings.
18:Mata (programming language)
10:
3489:
3164:Metalinguistic abstraction
3031:Automatic mutual exclusion
1819:) can replace the inverse
1781:(A^-1 * A)* x ==A^-1 * b
1776:A^-1 *(A * x)==A^-1 * (b)
1365:system of linear equations
1234::
1183::
954:// A 3 by 2 matrix of ones
57:to apply transparently to
3377:
3324:
3219:
3104:
3036:Choreographic programming
3006:
2822:
2764:
2721:
2624:
2615:
2555:
2497:
2488:
2268:. Springer. p. 367.
2192:Communications of the ACM
1978:, for which the solution
1298:
517:vector-based instructions
3086:Relativistic programming
1699:
1471:
1465:The R language supports
1431:
1420:
1338:
1309:
802:
679:
669:
641:
615:
585:
485:
463:
366:
194:implicit parallelization
103:Perl Data Language (PDL)
2112:Automatic vectorization
1692:
1427:rasdaman query language
792:
240:are common as of 2023.
238:general computing cores
204:and continuing through
187:
3096:Structured concurrency
2481:Comparison by language
2061:
1681:# c() creates a vector
1303:The implementation in
608:
574:
154:
127:high-level programming
3473:Programming paradigms
3439:Programming languages
3061:Multitier programming
2877:Interface description
2477:Programming paradigms
2205:10.1145/358896.358899
2080:extension library to
2064:Third-party libraries
2056:
1238:: I
1185:// switch row 1 and 2
637:augmented assignments
178:Matrix multiplication
137:
2289:Ada Reference Manual
2162:10.1109/mcse.2011.37
1460:
3201:Self-modifying code
2809:Probabilistic logic
2740:Functional reactive
2695:Expression-oriented
2649:Partial application
2154:2011CSE....13b..22V
1802:relational operator
1800:is the equivalence
1396:is implemented as:
564:optimizing compiler
556:abstraction penalty
222:parallel processing
3114:Attribute-oriented
2887:List comprehension
2832:Algebraic modeling
2645:Anonymous function
2537:Design by contract
2507:Jackson structures
2138:(2). IEEE: 22ā30.
2074:overload operators
2031:(A \ A)* x ==A \ b
2026:A \ (A * x)==A \ b
2006:x * (a / a)==b / a
2000:(x * a)/ a ==b / a
1995:(a * x)/ a ==b / a
1135:+----------------+
1104:+----------------+
306:Perl Data Language
260:. Others include:
236:with thousands of
182:Collapse operators
133:Kenneth E. Iverson
3428:Computer language
3415:
3414:
3284:
3283:
3174:Program synthesis
3066:Organic computing
3002:
3001:
2907:Non-English-based
2882:Language-oriented
2660:Purely functional
2611:
2610:
2275:978-3-540-43784-0
2219:Surana P (2006).
1715:= ,,]; ] >
1708:= ,,]; ] >
1394:entrywise product
1392:By contrast, the
1367:, even using the
666:A := A + B;
121:Concepts of array
36:array programming
16:(Redirected from
3480:
3454:
3448:
3443:
3437:
3432:
3426:
3311:
3304:
3297:
3288:
3287:
3186:by demonstration
3091:Service-oriented
3081:Process-oriented
3056:Macroprogramming
3041:Concurrent logic
2912:Page description
2902:Natural language
2872:Grammar-oriented
2799:Nondeterministic
2788:Constraint logic
2690:Point-free style
2685:Functional logic
2622:
2621:
2593:Immutable object
2512:Block-structured
2495:
2494:
2470:
2463:
2456:
2447:
2446:
2419:
2418:
2416:
2415:
2406:. Archived from
2400:
2394:
2393:
2391:
2390:
2380:
2374:
2373:
2371:
2370:
2360:
2354:
2353:
2346:
2340:
2339:
2337:
2336:
2327:. Archived from
2321:
2315:
2314:
2312:
2311:
2301:
2295:
2286:
2280:
2279:
2259:
2253:
2252:
2250:
2249:
2240:. Archived from
2233:
2227:
2226:
2216:
2210:
2209:
2207:
2180:
2174:
2173:
2147:
2127:
2038:
2032:
2027:
2020:
2013:
2007:
2001:
1996:
1985:
1981:
1977:
1969:
1968:
1965:
1962:
1959:
1956:
1953:
1950:
1947:
1940:
1939:
1936:
1933:
1930:
1927:
1924:
1921:
1918:
1915:
1912:
1909:
1906:
1903:
1900:
1897:
1894:
1891:
1885:
1884:
1881:
1878:
1875:
1872:
1869:
1866:
1863:
1860:
1857:
1854:
1851:
1848:
1845:
1842:
1839:
1836:
1833:
1830:
1822:
1818:
1814:
1810:
1799:
1792:
1782:
1777:
1763:
1759:
1755:
1751:
1743:
1739:
1722:
1718:
1714:
1711:
1707:
1704:
1688:
1685:
1682:
1679:
1676:
1673:
1670:
1667:
1664:
1661:
1658:
1655:
1652:
1649:
1646:
1643:
1640:
1637:
1634:
1631:
1628:
1625:
1622:
1619:
1616:
1613:
1610:
1607:
1604:
1601:
1598:
1595:
1592:
1589:
1586:
1583:
1580:
1577:
1574:
1571:
1568:
1565:
1562:
1559:
1556:
1553:
1550:
1547:
1544:
1541:
1538:
1535:
1532:
1529:
1526:
1523:
1520:
1517:
1514:
1511:
1508:
1505:
1502:
1499:
1496:
1493:
1490:
1487:
1484:
1481:
1478:
1475:
1456:
1453:
1450:
1447:
1444:
1441:
1438:
1435:
1413:
1405:
1385:
1381:
1361:matrix inversion
1351:
1348:
1345:
1342:
1328:
1325:
1322:
1319:
1316:
1313:
1294:
1290:
1286:
1282:
1279:
1276:
1272:
1268:
1265:
1261:
1257:
1253:
1250:
1247:
1244:
1241:
1237:
1233:
1229:
1225:
1221:
1217:
1214:
1210:
1206:
1203:
1199:
1196:
1193:
1190:
1186:
1182:
1178:
1174:
1171:
1167:
1163:
1160:
1156:
1153:
1150:
1147:
1143:
1140:
1136:
1132:
1129:
1126:
1122:
1118:
1115:
1112:
1108:
1105:
1102:
1099:
1096:
1092:
1088:
1084:
1081:
1077:
1073:
1070:
1066:
1063:
1060:
1057:
1053:
1049:
1045:
1042:
1039:
1035:
1031:
1028:
1025:
1021:
1018:
1015:
1012:
1009:
1005:
1001:
997:
994:
990:
986:
983:
979:
975:
972:
968:
965:
962:
959:
955:
951:
947:
943:
939:
935:
931:
928:
925:
921:
917:
914:
911:
907:
904:
901:
898:
895:
891:
887:
883:
879:
875:
871:
868:
865:
861:
857:
854:
851:
847:
844:
841:
838:
835:
831:
827:
823:
819:
815:
811:
807:
788:
785:
782:
779:
776:
773:
770:
767:
764:
761:
758:
755:
752:
749:
746:
743:
740:
737:
734:
731:
728:
725:
722:
719:
716:
713:
710:
707:
704:
701:
698:
695:
692:
689:
686:
683:
654:
651:
648:
645:
631:
628:
625:
622:
619:
604:
601:
598:
595:
592:
589:
510:
507:
504:
501:
498:
495:
492:
489:
479:
476:
473:
470:
467:
457:
454:
451:
448:
445:
442:
439:
436:
433:
430:
427:
424:
421:
418:
415:
412:
409:
406:
403:
400:
397:
394:
391:
388:
385:
382:
379:
376:
373:
370:
344:Scalar languages
111:vector processor
51:multidimensional
32:computer science
21:
3488:
3487:
3483:
3482:
3481:
3479:
3478:
3477:
3458:
3457:
3452:
3446:
3441:
3435:
3430:
3424:
3421:
3416:
3411:
3373:
3364:Very high-level
3320:
3315:
3285:
3280:
3222:
3215:
3106:Metaprogramming
3100:
3016:
3011:
2998:
2980:Graph rewriting
2818:
2794:Inductive logic
2774:Abductive logic
2760:
2717:
2680:Dependent types
2628:
2607:
2579:Prototype-based
2559:
2557:Object-oriented
2551:
2547:Nested function
2542:Invariant-based
2484:
2474:
2427:
2422:
2413:
2411:
2402:
2401:
2397:
2388:
2386:
2382:
2381:
2377:
2368:
2366:
2362:
2361:
2357:
2348:
2347:
2343:
2334:
2332:
2323:
2322:
2318:
2309:
2307:
2303:
2302:
2298:
2287:
2283:
2276:
2260:
2256:
2247:
2245:
2234:
2230:
2217:
2213:
2181:
2177:
2128:
2124:
2120:
2098:
2066:
2036:
2030:
2025:
2018:
2011:
2005:
1999:
1994:
1983:
1979:
1975:
1966:
1963:
1960:
1957:
1954:
1951:
1948:
1945:
1937:
1934:
1931:
1928:
1925:
1922:
1919:
1916:
1913:
1910:
1907:
1904:
1901:
1898:
1895:
1892:
1889:
1882:
1879:
1876:
1873:
1870:
1867:
1864:
1861:
1858:
1855:
1852:
1849:
1846:
1843:
1840:
1837:
1834:
1831:
1828:
1820:
1816:
1812:
1808:
1797:
1790:
1780:
1775:
1761:
1757:
1753:
1749:
1741:
1737:
1730:
1725:
1724:
1720:
1719: Ā»+Ā«
1716:
1712:
1709:
1705:
1702:
1695:
1690:
1689:
1686:
1683:
1680:
1677:
1674:
1671:
1668:
1665:
1662:
1659:
1656:
1653:
1650:
1647:
1644:
1641:
1638:
1635:
1632:
1629:
1626:
1623:
1620:
1617:
1614:
1611:
1608:
1605:
1602:
1599:
1596:
1593:
1590:
1587:
1584:
1581:
1578:
1575:
1572:
1569:
1566:
1563:
1560:
1557:
1554:
1551:
1548:
1545:
1542:
1539:
1536:
1533:
1530:
1527:
1524:
1521:
1518:
1515:
1512:
1509:
1506:
1503:
1500:
1497:
1494:
1491:
1488:
1485:
1482:
1479:
1476:
1473:
1463:
1458:
1457:
1454:
1451:
1448:
1445:
1442:
1439:
1436:
1433:
1423:
1418:
1411:
1403:
1400:
1390:
1383:
1379:
1353:
1352:
1349:
1346:
1343:
1340:
1330:
1329:
1326:
1323:
1320:
1317:
1314:
1311:
1301:
1296:
1295:
1292:
1288:
1284:
1280:
1277:
1274:
1270:
1266:
1263:
1259:
1255:
1251:
1248:
1245:
1242:
1239:
1235:
1231:
1227:
1223:
1219:
1215:
1212:
1208:
1204:
1201:
1197:
1194:
1191:
1188:
1184:
1180:
1176:
1172:
1169:
1165:
1161:
1158:
1154:
1151:
1148:
1145:
1141:
1138:
1134:
1130:
1127:
1124:
1120:
1116:
1113:
1110:
1106:
1103:
1100:
1097:
1094:
1090:
1086:
1082:
1079:
1075:
1071:
1068:
1064:
1061:
1058:
1055:
1051:
1048:+-------------+
1047:
1043:
1040:
1037:
1033:
1029:
1026:
1023:
1019:
1017:+-------------+
1016:
1013:
1010:
1007:
1003:
999:
995:
992:
988:
984:
981:
977:
973:
970:
966:
963:
960:
957:
953:
949:
945:
941:
937:
934:+-------------+
933:
929:
926:
923:
919:
915:
912:
909:
905:
903:+-------------+
902:
899:
896:
893:
889:
885:
881:
877:
874:+-------------+
873:
869:
866:
863:
859:
855:
852:
849:
845:
843:+-------------+
842:
839:
836:
833:
829:
825:
821:
817:
813:
809:
805:
795:
790:
789:
786:
783:
780:
777:
774:
771:
768:
765:
762:
759:
756:
753:
750:
747:
744:
741:
738:
735:
732:
729:
726:
723:
720:
717:
714:
711:
708:
705:
702:
699:
696:
693:
690:
687:
684:
681:
675:Dartmouth BASIC
672:
667:
661:
656:
655:
652:
649:
646:
643:
633:
632:
629:
626:
623:
620:
617:
611:
606:
605:
602:
599:
596:
593:
590:
587:
577:
533:
531:Array languages
512:
511:
508:
505:
502:
499:
496:
493:
490:
487:
481:
480:
477:
474:
471:
468:
465:
459:
458:
455:
452:
449:
446:
443:
440:
437:
434:
431:
428:
425:
422:
419:
416:
413:
410:
407:
404:
401:
398:
395:
392:
389:
386:
383:
380:
377:
374:
371:
368:
346:
246:
190:
123:
28:
23:
22:
15:
12:
11:
5:
3486:
3476:
3475:
3470:
3456:
3455:
3444:
3433:
3420:
3417:
3413:
3412:
3410:
3409:
3404:
3399:
3394:
3389:
3383:
3381:
3375:
3374:
3372:
3371:
3366:
3361:
3356:
3350:
3349:
3344:
3339:
3334:
3328:
3326:
3322:
3321:
3314:
3313:
3306:
3299:
3291:
3282:
3281:
3279:
3278:
3273:
3268:
3263:
3258:
3253:
3248:
3243:
3238:
3233:
3227:
3225:
3217:
3216:
3214:
3213:
3208:
3203:
3198:
3193:
3171:
3166:
3161:
3151:
3146:
3141:
3136:
3131:
3126:
3116:
3110:
3108:
3102:
3101:
3099:
3098:
3093:
3088:
3083:
3078:
3073:
3068:
3063:
3058:
3053:
3048:
3038:
3033:
3028:
3022:
3020:
3004:
3003:
3000:
2999:
2997:
2996:
2991:
2976:Transformation
2973:
2968:
2963:
2958:
2953:
2948:
2943:
2938:
2933:
2928:
2923:
2914:
2909:
2904:
2899:
2894:
2889:
2884:
2879:
2874:
2869:
2864:
2862:Differentiable
2859:
2849:
2842:Automata-based
2839:
2834:
2828:
2826:
2820:
2819:
2817:
2816:
2811:
2806:
2801:
2796:
2791:
2781:
2776:
2770:
2768:
2762:
2761:
2759:
2758:
2753:
2748:
2743:
2733:
2727:
2725:
2719:
2718:
2716:
2715:
2709:Function-level
2706:
2697:
2692:
2687:
2682:
2677:
2672:
2667:
2662:
2657:
2652:
2642:
2636:
2634:
2619:
2613:
2612:
2609:
2608:
2606:
2605:
2600:
2595:
2590:
2585:
2571:
2569:
2553:
2552:
2550:
2549:
2544:
2539:
2534:
2529:
2524:
2522:Non-structured
2519:
2514:
2509:
2503:
2501:
2492:
2486:
2485:
2473:
2472:
2465:
2458:
2450:
2444:
2443:
2438:
2433:
2426:
2425:External links
2423:
2421:
2420:
2395:
2375:
2355:
2341:
2316:
2296:
2281:
2274:
2254:
2228:
2211:
2198:(8): 444ā465.
2184:Iverson, K. E.
2175:
2121:
2119:
2116:
2115:
2114:
2109:
2104:
2097:
2094:
2092:libraries do.
2065:
2062:
2040:
2039:
2034:
2028:
2015:
2014:
2009:
2003:
1997:
1971:
1970:
1942:
1886:
1823:, as follows:
1794:
1793:
1788:
1778:
1729:
1726:
1700:
1694:
1691:
1472:
1467:array paradigm
1462:
1459:
1432:
1422:
1419:
1417:A(:)' * B(:);
1416:
1398:
1388:
1357:linear algebra
1339:
1310:
1300:
1297:
1137:: G = E :
1093:B : F
1054:C : E
803:
794:
791:
680:
671:
668:
665:
660:
657:
642:
616:
610:
607:
586:
576:
573:
532:
529:
486:
464:
367:
345:
342:
245:
242:
230:multiple cores
189:
186:
122:
119:
26:
9:
6:
4:
3:
2:
3485:
3474:
3471:
3469:
3466:
3465:
3463:
3451:
3445:
3440:
3434:
3429:
3423:
3422:
3408:
3405:
3403:
3400:
3398:
3395:
3393:
3390:
3388:
3385:
3384:
3382:
3380:
3376:
3370:
3367:
3365:
3362:
3360:
3357:
3355:
3352:
3351:
3348:
3345:
3343:
3340:
3338:
3335:
3333:
3330:
3329:
3327:
3323:
3319:
3312:
3307:
3305:
3300:
3298:
3293:
3292:
3289:
3277:
3274:
3272:
3269:
3267:
3264:
3262:
3259:
3257:
3254:
3252:
3249:
3247:
3246:Data-oriented
3244:
3242:
3239:
3237:
3234:
3232:
3229:
3228:
3226:
3224:
3218:
3212:
3209:
3207:
3204:
3202:
3199:
3197:
3194:
3191:
3187:
3183:
3179:
3175:
3172:
3170:
3167:
3165:
3162:
3159:
3155:
3152:
3150:
3147:
3145:
3144:Homoiconicity
3142:
3140:
3137:
3135:
3132:
3130:
3127:
3124:
3120:
3117:
3115:
3112:
3111:
3109:
3107:
3103:
3097:
3094:
3092:
3089:
3087:
3084:
3082:
3079:
3077:
3074:
3072:
3069:
3067:
3064:
3062:
3059:
3057:
3054:
3052:
3051:Concurrent OO
3049:
3046:
3042:
3039:
3037:
3034:
3032:
3029:
3027:
3024:
3023:
3021:
3019:
3014:
3009:
3005:
2995:
2992:
2989:
2985:
2981:
2977:
2974:
2972:
2969:
2967:
2964:
2962:
2959:
2957:
2954:
2952:
2949:
2947:
2946:Set-theoretic
2944:
2942:
2939:
2937:
2934:
2932:
2929:
2927:
2926:Probabilistic
2924:
2922:
2918:
2915:
2913:
2910:
2908:
2905:
2903:
2900:
2898:
2895:
2893:
2890:
2888:
2885:
2883:
2880:
2878:
2875:
2873:
2870:
2868:
2865:
2863:
2860:
2857:
2853:
2850:
2847:
2843:
2840:
2838:
2835:
2833:
2830:
2829:
2827:
2825:
2821:
2815:
2812:
2810:
2807:
2805:
2802:
2800:
2797:
2795:
2792:
2789:
2785:
2782:
2780:
2777:
2775:
2772:
2771:
2769:
2767:
2763:
2757:
2754:
2752:
2749:
2747:
2744:
2741:
2737:
2734:
2732:
2729:
2728:
2726:
2724:
2720:
2714:
2710:
2707:
2705:
2704:Concatenative
2701:
2698:
2696:
2693:
2691:
2688:
2686:
2683:
2681:
2678:
2676:
2673:
2671:
2668:
2666:
2663:
2661:
2658:
2656:
2653:
2650:
2646:
2643:
2641:
2638:
2637:
2635:
2632:
2627:
2623:
2620:
2618:
2614:
2604:
2601:
2599:
2596:
2594:
2591:
2589:
2586:
2584:
2580:
2576:
2573:
2572:
2570:
2567:
2563:
2558:
2554:
2548:
2545:
2543:
2540:
2538:
2535:
2533:
2530:
2528:
2525:
2523:
2520:
2518:
2515:
2513:
2510:
2508:
2505:
2504:
2502:
2500:
2496:
2493:
2491:
2487:
2482:
2478:
2471:
2466:
2464:
2459:
2457:
2452:
2451:
2448:
2442:
2439:
2437:
2434:
2432:
2429:
2428:
2410:on 2011-03-23
2409:
2405:
2399:
2385:
2379:
2365:
2359:
2351:
2345:
2331:on 2010-09-07
2330:
2326:
2320:
2306:
2300:
2294:
2290:
2285:
2277:
2271:
2267:
2266:
2258:
2244:on 2009-01-11
2243:
2239:
2232:
2224:
2223:
2215:
2206:
2201:
2197:
2193:
2189:
2185:
2179:
2171:
2167:
2163:
2159:
2155:
2151:
2146:
2141:
2137:
2133:
2126:
2122:
2113:
2110:
2108:
2105:
2103:
2102:Array slicing
2100:
2099:
2093:
2091:
2087:
2083:
2079:
2075:
2071:
2060:
2055:
2052:
2050:
2046:
2035:
2029:
2024:
2023:
2022:
2010:
2004:
1998:
1993:
1992:
1991:
1989:
1943:
1887:
1826:
1825:
1824:
1805:
1803:
1789:
1786:
1785:associativity
1779:
1774:
1773:
1772:
1770:
1769:square matrix
1767:
1747:
1735:
1698:
1470:
1468:
1430:
1428:
1415:
1409:
1397:
1395:
1387:
1377:
1372:
1370:
1366:
1362:
1358:
1337:
1335:
1308:
1306:
1273:|
1262:|
1254:|
1220:+-----------+
1195:+-----------+
1177:+-----------+
1152:+-----------+
1087:+-----------+
1062:+-----------+
1006:B : D
892:) : B
832:) : A
801:
799:
678:
676:
664:
640:
638:
614:
584:
582:
572:
570:
565:
561:
557:
552:
550:
546:
542:
538:
528:
526:
522:
518:
484:
462:
365:
363:
359:
355:
351:
341:
339:
335:
331:
327:
323:
319:
315:
311:
307:
303:
299:
295:
291:
287:
283:
279:
275:
271:
267:
263:
259:
255:
251:
241:
239:
235:
231:
227:
223:
219:
215:
211:
207:
203:
199:
195:
185:
183:
179:
175:
174:cross product
170:
166:
165:Function rank
162:
160:
153:
149:
147:
144:
140:
136:
134:
130:
128:
118:
116:
112:
108:
104:
100:
96:
92:
88:
84:
80:
76:
72:
68:
64:
60:
56:
52:
48:
43:
41:
37:
33:
19:
3453:}}
3447:{{
3442:}}
3436:{{
3431:}}
3425:{{
3251:Event-driven
2836:
2655:Higher-order
2583:Object-based
2412:. Retrieved
2408:the original
2398:
2387:. Retrieved
2378:
2367:. Retrieved
2358:
2344:
2333:. Retrieved
2329:the original
2319:
2308:. Retrieved
2299:
2284:
2264:
2257:
2246:. Retrieved
2242:the original
2231:
2221:
2214:
2195:
2191:
2178:
2135:
2131:
2125:
2067:
2057:
2053:
2041:
2016:
1980:x = a^-1 * b
1972:
1806:
1795:
1791:x = A^-1 * b
1731:
1696:
1464:
1424:
1401:
1391:
1373:
1354:
1331:
1302:
1187:: H
1144:: G
952:)
796:
673:
662:
634:
612:
578:
555:
553:
548:
544:
540:
536:
534:
513:
482:
460:
361:
357:
347:
247:
191:
163:
155:
150:
148:
145:
141:
138:
131:
124:
106:
44:
35:
29:
3347:Interpreted
3261:Intentional
3241:Data-driven
3223:of concerns
3182:Inferential
3169:Multi-stage
3149:Interactive
3026:Actor-based
3013:distributed
2956:Stack-based
2756:Synchronous
2713:Value-level
2700:Applicative
2617:Declarative
2575:Class-based
2236:Kuketayev.
1988:commutative
1734:determinant
1525:2 4 6
1522:1 3 5
1179:: H = F
1000:+---------+
964:+---------+
956:: C
3462:Categories
3379:Generation
3359:High-level
3236:Components
3221:Separation
3196:Reflective
3190:by example
3134:Extensible
3008:Concurrent
2984:Production
2971:Templating
2951:Simulation
2936:Scientific
2856:Spacecraft
2784:Constraint
2779:Answer set
2731:Flow-based
2631:comparison
2626:Functional
2598:Persistent
2562:comparison
2527:Procedural
2499:Structured
2490:Imperative
2414:2011-03-19
2389:2011-03-19
2369:2011-03-19
2335:2011-03-19
2310:2011-03-19
2248:2008-03-17
2118:References
1334:GNU Octave
1285:9444444444
1230:F)
294:GNU Octave
115:one-liners
107:vectorized
40:scientific
3354:Low-level
3123:Inductive
3119:Automatic
2941:Scripting
2640:Recursive
2225:(Thesis).
2145:1102.1523
2086:Armadillo
2037:x = A \ b
2012:x = b / a
1984:x = b / a
1976:a * x = b
1766:full rank
1742:A * x = b
1410:operator
1408:transpose
808:: : A = (
659:Analytica
560:efficient
284:, Klong,
266:Analytica
244:Languages
95:Cilk Plus
83:Analytica
3419:See also
3369:Esoteric
3342:Compiled
3337:Assembly
3276:Subjects
3266:Literate
3256:Features
3211:Template
3206:Symbolic
3178:Bayesian
3158:Hygienic
3018:parallel
2897:Modeling
2892:Low-code
2867:End-user
2804:Ontology
2736:Reactive
2723:Dataflow
2186:(1980).
2170:16907816
2096:See also
1399:a .* b;
1089:: F = A:
1002:: D = A
569:overhead
338:TI-BASIC
63:matrices
3332:Machine
3231:Aspects
3139:Generic
3129:Dynamic
2988:Pattern
2966:Tactile
2931:Quantum
2921:filters
2852:Command
2751:Streams
2746:Signals
2517:Modular
2150:Bibcode
2090:Blitz++
1817:pinv(A)
1746:inverse
1687:42 30
1684:30 21
1651:41 29
1648:29 20
1621:40 28
1618:28 19
1389:a * b;
1226:(F'
1050:: E = A
876:: B = (
334:Futhark
308:(PDL),
302:FreeMat
250:Fortran
218:AVX-512
75:Fortran
59:vectors
55:scalars
3402:Fourth
3392:Second
2994:Visual
2961:System
2846:Action
2670:Strict
2272:
2168:
2082:Python
2049:LAPACK
1796:where
1723:; ]
1591:2 1
1588:4 3
1585:6 5
1543:matrix
1483:matrix
1434:SELECT
1305:MATLAB
1299:MATLAB
1287:|
1224:invsym
1222:: I =
1218:|
1175:|
1133:|
1085:|
1046:|
998:|
936:: C =
932:|
872:|
525:OpenMP
354:Pascal
336:, and
318:S-Lang
298:Scilab
290:MATLAB
270:Chapel
256:, and
210:3DNow!
169:tensor
159:scalar
87:Octave
79:MATLAB
47:vector
3407:Fifth
3397:Third
3387:First
3325:Level
3271:Roles
3154:Macro
2917:Pipes
2837:Array
2814:Query
2766:Logic
2675:GADTs
2665:Total
2588:Agent
2166:S2CID
2140:arXiv
2078:NumPy
2045:ATLAS
1764:is a
1701:>
1654:>
1642:>
1630:<-
1624:>
1612:>
1600:<-
1594:>
1579:>
1534:<-
1528:>
1516:>
1480:<-
1474:>
1421:rasql
798:Stata
772:PRINT
670:BASIC
509:(:,:)
500:(:,:)
491:(:,:)
278:Julia
206:SSSE3
198:Intel
99:Julia
2919:and
2566:list
2270:ISBN
2088:and
1952:pinv
1923:pinv
1893:pinv
1862:pinv
1829:pinv
1758:A^-1
1693:Raku
1561:nrow
1501:nrow
1446:FROM
1425:The
1376:Nial
1374:The
1281:1.75
1269:|
1267:3.25
1258:|
1211:|
1207:|
1200:|
1164:|
1157:|
1123:|
1119:|
1109:|
1074:|
1067:|
1032:|
987:|
976:|
918:|
884:) \(
858:|
820:) \(
806:mata
793:Mata
547:and
429:<
390:<
352:and
326:Nial
314:Raku
234:GPUs
232:and
226:MIMD
214:SIMD
208:and
188:Uses
2824:DSL
2200:doi
2158:doi
2070:C++
2047:or
1748:of
1606:%*%
1404:(:)
1293:end
1168:|
1078:|
1036:|
1022:|
991:|
980:|
969:|
922:|
908:|
862:|
848:|
769:MAT
751:MAT
733:MAT
721:MAT
682:DIM
609:APL
581:Ada
575:Ada
571:).
521:GCC
408:for
369:for
330:ZPL
322:SAC
274:IDL
254:APL
202:MMX
67:APL
49:or
30:In
3464::
3188:,
3184:,
3180:,
2986:,
2982:,
2711:,
2702:,
2581:,
2577:,
2564:,
2291::
2196:23
2194:.
2190:.
2164:.
2156:.
2148:.
2136:13
2134:.
2084:,
2051:.
1920:==
1859:==
1798:==
1771::
1752::
1721:@b
1717:@a
1713:@b
1710:my
1706:@a
1703:my
1414::
1371:.
1344:+=
1205:10
1173:18
1170:18
1131:18
1128:10
1117:12
1083:15
1080:15
888:..
880:..
706:),
694:),
639::
591::=
450:+=
441:++
402:++
340:.
332:,
328:,
324:,
320:,
316:,
312:,
304:,
300:,
296:,
292:,
288:,
280:,
276:,
272:,
268:,
264:,
262:A+
252:,
101:,
97:,
93:,
89:,
85:,
81:,
77:,
73:,
69:,
61:,
34:,
3310:e
3303:t
3296:v
3192:)
3176:(
3160:)
3156:(
3125:)
3121:(
3047:)
3043:(
3015:,
3010:,
2990:)
2978:(
2858:)
2854:(
2848:)
2844:(
2790:)
2786:(
2742:)
2738:(
2651:)
2647:(
2633:)
2629:(
2568:)
2560:(
2483:)
2479:(
2469:e
2462:t
2455:v
2417:.
2392:.
2372:.
2352:.
2338:.
2313:.
2278:.
2251:.
2208:.
2202::
2172:.
2160::
2152::
2142::
2019:\
1967:b
1964:*
1961:)
1958:A
1955:(
1949:=
1946:x
1938:b
1935:*
1932:)
1929:A
1926:(
1917:x
1914:*
1911:)
1908:A
1905:*
1902:)
1899:A
1896:(
1890:(
1883:)
1880:b
1877:(
1874:*
1871:)
1868:A
1865:(
1856:)
1853:x
1850:*
1847:A
1844:(
1841:*
1838:)
1835:A
1832:(
1821:A
1813:A
1809:A
1787:)
1762:A
1754:A
1750:A
1738:A
1678:)
1675:1
1672:,
1669:1
1666:(
1663:c
1660:+
1657:D
1645:D
1639:1
1636:+
1633:C
1627:D
1615:C
1609:B
1603:A
1597:C
1582:B
1573:)
1570:)
1567:2
1564:=
1558:,
1555:1
1552::
1549:6
1546:(
1540:(
1537:t
1531:B
1519:A
1510:)
1507:2
1504:=
1498:,
1495:6
1492::
1489:1
1486:(
1477:A
1461:R
1455:B
1452:,
1449:A
1443:B
1440:+
1437:A
1412:'
1384:b
1380:a
1350:;
1347:B
1341:A
1327:;
1324:B
1321:+
1318:A
1315:=
1312:A
1291::
1283:.
1278:-
1275:0
1271:3
1264:0
1260:2
1256:0
1252:1
1246:3
1243:2
1240:1
1228:*
1216:6
1213:2
1209:2
1202:4
1198:1
1192:2
1189:1
1166:2
1162:9
1159:9
1155:1
1149:2
1146:1
1142:3
1139:+
1125:4
1121:2
1114:6
1111:2
1107:1
1101:3
1098:2
1095:1
1091:*
1076:2
1072:6
1069:6
1065:1
1059:2
1056:1
1052:*
1044:9
1041:7
1038:5
1034:2
1030:7
1027:5
1024:3
1020:1
1014:3
1011:2
1008:1
1004:+
996:1
993:1
989:3
985:1
982:1
978:2
974:1
971:1
967:1
961:2
958:1
950:1
948:,
946:2
944:,
942:3
940:(
938:J
930:3
927:2
924:1
920:2
916:4
913:3
910:2
906:1
900:3
897:2
894:1
890:3
886:1
882:4
878:2
870:6
867:5
864:4
860:2
856:3
853:2
850:1
846:1
840:3
837:2
834:1
830:6
828:,
826:5
824:,
822:4
818:3
816:,
814:2
812:,
810:1
804:.
787:C
784:,
781:B
778:,
775:A
766:B
763:+
760:A
757:=
754:C
748:A
745:*
742:2
739:=
736:B
730:1
727:=
724:A
718:)
715:4
712:(
709:C
703:4
700:(
697:B
691:4
688:(
685:A
653:B
650:ā
647:+
644:A
630:B
627:+
624:A
621:ā
618:A
603:;
600:B
597:+
594:A
588:A
549:b
545:a
541:b
539:+
537:a
506:b
503:+
497:a
494:=
488:a
478:b
475:+
472:a
469:=
466:a
456:;
453:b
447:a
444:)
438:j
435:;
432:n
426:j
423:;
420:0
417:=
414:j
411:(
405:)
399:i
396:;
393:n
387:i
384:;
381:0
378:=
375:i
372:(
362:b
360:+
358:a
350:C
310:R
286:Q
282:K
258:J
91:R
71:J
20:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.