Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз

в 15:01, , рубрики: CUDA, opencl, Wolfram, wolfram language, wolfram mathematica, абсолютная точность, Алгоритмы, ассоциативные массивы, Блог компании Wolfram Research, векторизация, вычисления, дебаг, компиляция, компиляция в c, машинная точность, мемоизация, оптимизация кода, отладка, плавающая запятая, правила замены, Программирование, распараллеливание, символьные вычисления, списки, точность, ускорение кода, функциональное программирование, хеш-таблицы, хэширование, шаблоны

Скачать файл с кодом и данные можно в оригинале поста в моем блоге

Картинка к вебинару и посту взята не просто так: в определенном смысле символьное ядро Wolfram Language можно сравнить с Таносом — если бы его мощь была бы направлена в правильное русло, он мог бы стать самым мощным и полезным «добряком». Так же и с символьным ядром Wolfram — его чудовищную мощь нужно правильно использовать, а если это делать не так, оно может стать настоящим «злом», замедляющим все очень сильно. Начинающие разработчики не знают многих важнейших парадигм, идей и принципов языка Wolfram Language, пишут код, который на самом деле дико неэффективен и после этого разочаровываются, хотя тут нет вины Wolfram Language. Эту ситуацию призвана исправить эта статья.

Мне довелось работать с Wolfram Language начиная с (уже довольно далекого) 2005 года (тогда еще была версия Mathematica 5.2, сейчас уже 12-я). За эти почти 15 лет произошло очень много: добавились тысячи новых встроенных функций и областей, в которых они работают (машинное обучение, точная геометрия, работа с аудио, работа в вебе, облачные возможности, глубокая поддержка единиц измерения, интеграция с базами данных Wolfram|Alpha, географические вычисления, поддержка работы с CUDA, Python, распараллеливание операций и многое многое другое), появились новые сервисы — облако Wolfram Cloud, широко известная система вычислительных значeний Wolfram|Alpha, репозиторий функций, репозиторий нейросетей и пр.

За эти годы я применял Wolfram Language очень много (да, ранее, по сути, он назывался Mathematica, до того, как Стивен Вольфрам не решил выделить язык и сделать его общим для целой плеяды своих продуктов) и в разных областях: довелось делать модель продаж для фармацевтической компании; создавать парсеры и автоматические генераторы альбомов о фильмах для индустрии проката кино (когда они еще только зарождались); применять активно в науке (работы по химии и физике твердого тела и теории разрушения); разрабатывать прототипы обучающих систем для платформ отечественного школьного и вузовского образования и ведущих компаний и издательств на этом рынке в России.

Записи некоторых моих выступлений на MBLT DEV и конференциях Wolfram

Это, а вместе с тем то, что я уже несколько лет руковожу своей студией разработки, в которой мы применяем помимо Wolfram Language много чего: JavaScript, Python, Java, PHP и др. — дало мне возможность оценить язык Wolfram глубоко и понять области, в которых ему, пожалуй, особенно нет равных.

В этой статье, которая является компиляцией моего личного опыта и опыта потрясающего разработчика, который сделал очень много для ядра Wolfram Language — Леонида Шифрина (см., скажем, ответ к вопросу "Performance tuning in Mathematica?" — часть этой статьи является её адаптированным и расширенным переводом) — мне хотелось бы развеять мифы относительно скорости языка Wolfram Language — ведь часто разработчики просто, прошу прощения за прямоту, не умеют (не знают) как эффективно использовать его возможности.

Разработчики часто применяют неэффективные конструкции, не используют потрясающие возможности, вроде: распараллеливания, компиляции кода в C или байт-код Wolfram Language, интеграции с CUDA, другими языками вроде Java и C (да, можно подгружать код на этих языках прямо в Wolfram-код).

Это в целом неудивительно, ведь Wolfram Language дает уникальную свободу разработки. Вот, скажем, набор примеров, показывающий 15 способов задать факториал (обратите внимание, как сильно отличается время вычисления функций — показано в какое количество раз оно больше, чем у встроенной функции Factorial):

Код

Module[{st, stInput, data, systemFunction}, 
st=Style[#, FontFamily->"Arial", Gray, FontSize->14]&;

SetAttributes[stInput, HoldAll];

stInput[code_]:=(Clear[f];

code;

{Style[HoldForm@code, "Input", FontSize->14, Background->None], code;

RepeatedTiming[f[9];

, 2][[1]]});

data=Flatten/@{
{st@"Ядро Wolfram", stInput[f=Factorial]}, 
{"", stInput[f[n_]:=n!]}, 
{st["Правила замены"], stInput[f[n_]:=n f[n-1];

f[1]=1]}, 
{st["Процедурный"], stInput[f[n_]:=Module[{t=1}, Do[t=t*i, {i, n}];

t]]}, 
{"", stInput[f[n_]:=Module[{t=1, i}, For[i=1, i<=n, i++, t*=i];

t]]}, 
{st["На списках (массивах)"], stInput[f[n_]:=Apply[Times, Range[n]]]}, 
{"", stInput[f[n_]:=Fold[Times, 1, Range[n]]]}, 
{st["Рекурсивный"], stInput[f[n_]:=If[n==1, 1, n*f[n-1]]]}, 
{st["Функциональный"], stInput[f=If[#1==1, 1, #1*#0[#1-1]]&]}, 
{"", stInput[f[n_]:=Fold[#2[#1]&, 1, Array[Function[t, #t]&, n]]]}, 
{st["Конструктивный"], stInput[f[n_]:=Length[Permutations[Range[n]]]]}, 
{st["Правила замены (шаблоны)"], stInput[f[n_]:=First[{1, n}//.{a_, b_/;

b>0}:>{b*a, b-1}]]}, 
{st["На строках"], stInput[f[n_]:=StringLength[Fold[StringJoin[Table[#1, {#2}]]&, "A", Range[n]]]]}, 
{st["Математический"], stInput[f[n_]:=Gamma[n+1]]}, 
{"", stInput[f[n_]:=Product[i, {i, n}]]}
};

systemFunction=data[[1, 3]];

Framed[#, Background->White, FrameMargins->5, FrameStyle->None]&@Grid[{Style[st[#], Bold]&/@{"Парадигма", "Код", "Медленнее встроеннойnфункции,  раз"}}~Join~({#[[1]], #[[2]], st[Round[#[[3]]/systemFunction, 1/10]//N]}&/@data), 
Alignment->{{Center, Left, Left}, Center}, 
Dividers->{None, {None, {LightGray}, None}}, Background->{None, {LightOrange, None}}
]]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 1

Эта статья призвана помочь вам писать красивый и эффективный код, который будет работать ни чуть не медленнее, чем, скажем, в популярном Python. Знания этих принципов и приемов позмоляет писать код на Wolfram Language, который будет не особо медленнее кода на C, но за счет широты языка разработку вести в нем намного быстрее и проще.

В конце статьи вы найдете ссылки на полезные ресурсы для изучения языка Wolfram Language.

Поскольку Wolfram Language (Mathematica и другие системы, основанные на нем) — символьный язык программирования, который имеет символьный вычислительный движок, гораздо более общий, чем, скажем, в том же Matlab (Sympy, Maxima, Maple и пр.), неудивительно, что настройка производительных вычислений в нем иногда бывает более сложной. Существует, однако, множество техник, но все они сводятся, в основном, к главному принципу, который звучит так:

Избегайте полного цикла символьных вычислений в Wolfram Language, насколько это возможно.

1. Базовые принципы

1.1. Применяйте везде, где это возможно, встроенные функции

Так как они реализованы непосредственно в ядре Wolfram на низкоуровневых языках (С и Java), они обычно (но не всегда!) намного быстрее, чем созданные вами функции для решения той же задачи. Чем более специализированную функцию для конкретной задачи вы применяете, тем выше шансы, что вы ускорите код.

ClearAll[data];

data=RandomReal[1, {10^6, 2, 2}];

compareTiming[{Map[Flatten, data], Flatten[data, {{1}, {2, 3}}]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 2

1.2. Используйте функциональное программирование (Map /@, Apply @@ и им подобные)

Также используйте чистые функции (лямбда-исчисление) на основе нотации #-&, когда это возможно — они, как правило, быстрее, чем функции функции с именованными аргументами (на основе Function) или функции, основанные на правилах замены (особенно для функций, не требующих интенсивных вычислений, которые применяются к большим спискам).

ClearAll[data];

data=Range[1, 10^6];

compareTiming[{f[x_]:=x^2;

Table[f[i], {i, data}], Map[#^2&, data]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 3

1.3. Используйте структурные и векторизованные операции

Применяйте Transpose, Flatten, Partition, Part и т. п. — они быстрее, чем функциональные.

ClearAll[data];

data=RandomReal[1, {10^5, 2}];

compareTiming[{{#[[1]], #[[2]]^2}&/@data, Transpose[{#1, #2^2}&@@Transpose[data]]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 4

1.4. Избегайте использования процедурного стиля программирования

Не применяйте циклы и т. п, так как этот стиль программирования имеет тенденцию разбивать большие структуры на части (индексирование массива и т. п.). Это «выталкивает» значительную часть вычислений из ядра и поэтому сильно замедляет их.

ClearAll[fibonacci, f];

compareTiming[{fibonacci={1, 1};

n=3;

While[n<=20000, AppendTo[fibonacci, fibonacci[[n-1]]+fibonacci[[n-2]]];

n++];

fibonacci, f[1]=1;

f[2]=1;

f[n_]:=f[n]=f[n-1]+f[n-2];

f/@Range[20000]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 5

2. Используйте машинную точность, всегда, когда это возможно

В большинстве языков программирования просто нет таких понятий, как точные константы, вроде 6/47 или каких бы то ни было символьных выражений. Поэтому применяя их нужно быть аккуратным и понимать, как работает процесс вычислений, чтобы не использовать абсолютную точность, когда это не нужно.

2.1. Не применяйте абсолютную точность там, где это не нужно

Скажем, если вы строите график, вам нет необходимости применять точную арифметику.

compareTiming[{data=Table[{x, Sin[x]/Gamma[x]}, {x, 0, 10, 1/100}];

ListPlot[data], data=Table[{x, Sin[x]/Gamma[x]}, {x, 0, 10, 1/100.}];

ListPlot[data]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 6

В примере выше изменено только одно место — 100 заменено на 100. — первое число имеет абсолютную точность, а второе — машинную. Но от этого вычисления ускорились в 4 раза! Вот, собственно, как выглядят данные.

Table[{x, Sin[x]/Gamma[x]}, {x, 0, 10, 1/2}]
Table[{x, Sin[x]/Gamma[x]}, {x, 0, 10, 1/2.}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 7

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 8

Важно учитывать, что Wolfram Language работает с минимальной введенной точностью: это означает, что ваше точное вычисление нарушит любое число с машинной точностью (если не сделана защита от такого), и если вы используете не машинную точность, а, скажем, 100 знаков (в Wolfram Language можно работать с любой точностью), и внутри встретится число с точностью меньше, результат будет получен с этой минимальной точностью. Это все логично и целиком следует из теории численных методов и работы с погрешностью, но это обязательно нужно знать и помнить.

2.2. Применяйте машинную точность до символьных преобразований

Также нужно помнить, что по умолчанию система делает все символьно и это может занять много времени. Скажем, вы хотите решить уравнение $ax^3+bx+c=0$ при заданном наборе значений a, b, c. Вы можете сделать вот так:

Solve[a x^3+b x+c==0, x]/.{a->1.23, b->3.45, c->2.6}

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 10

И вы удивитесь, почему чуть иначе написанный код будет быстрее в 15 раз:

compareTiming[{Solve[a x^3+b x+c==0, x]/.{a->1.23, b->3.45, c->2.6}, Solve[a x^3+b x+c==0/.{a->1.23, b->3.45, c->2.6}, x]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 11

Все дело как раз в том, что в первом примере Wolfram Language сначала ищет точное решение и затем подставляет в него численные значения коэффициентов:

Solve[a x^3+b x+c==0, x]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 12

Solve[a x^3+b x+c==0, x]/.{a->1.23, b->3.45, c->2.6}

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 13

Во втором случае ищется решение сразу численными методами:

a x^3+b x+c==0/.{a->1.23, b->3.45, c->2.6}

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 14

Solve[a x^3+b x+c==0/.{a->1.23, b->3.45, c->2.6}, x]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 15

2.3. Не мешайте числа с разной точностью

Если в вашем списке есть числа с разной точностью — он автоматически будет распакован и будет работать в сотни раз медленнее (см. ниже про упакованные массивы). Приводите числа к одинаковой точности с помощью таких функций как N, Rationalize, Round, Floor, Ceiling, SetPrecision, SetAccuracy.

3. Компиляция, листабилити, распараллеливание и CUDA

3.1. Помните про листабилити

Листабилити (Listability) — это применение функции к массиву, каждому её элементу автоматически. Так как в Wolfram Language массивы называются List — отсюда название. В принципе, можно назвать также это векторизацией.

Помните, что многие встроенные функции листабильны, а значит применение их к большим спискам предпочтительнее применения конструкций вроде Map или циклов.

ClearAll[data];

data=RandomReal[{-Pi, Pi}, 10^7];

compareTiming[{Sin/@data, Sin[data]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 16

3.2. Используйте компиляцию на основе Compile

Используйте компиляцию всегда, когда это возможно. Применяйте компиляцию в C-код (для этого потребуется доустановить компилятор, можно установить Visual C++ Build Tools 2017 — подробнее о том, как это сделать, см. здесь). Делайте ваши компилированные функции листабельными (RuntimeAttributes) и распараллеленными (Parallelization).

ClearAll[data];

data=Range[-50, 50, 0.001];

Оригинальная функция:

fNotCompiled=Function[{x}, Block[{sum=1.0, inc=1.0}, Do[inc=inc*x/i;

sum=sum+inc, {i, 100}];

sum]];

Фунция, скомпилированная в байт-код Wolfram Language (JIT-компиляция) (далее будем ее называть JIT-функция)

fJITCompiled=Compile[{{x}}, Block[{sum=1.0, inc=1.0}, Do[inc=inc*x/i;

sum=sum+inc, {i, 100}];

sum]];

JIT-функция с возможностью распараллеливания:

fJITCompiledParallelized=Compile[{{x}}, Block[{sum=1.0, inc=1.0}, Do[inc=inc*x/i;

sum=sum+inc, {i, 100}];

sum], Parallelization->True];

JIT-функция с листабилити:

fJITCompiledListable=Compile[{{x}}, Block[{sum=1.0, inc=1.0}, Do[inc=inc*x/i;

sum=sum+inc, {i, 100}];

sum], RuntimeAttributes->{Listable}];

JIT-функция с листабилити и распараллеливанием:

fJITCompiledListableParallelized=Compile[{{x}}, Block[{sum=1.0, inc=1.0}, Do[inc=inc*x/i;

sum=sum+inc, {i, 100}];

sum], Parallelization->True, RuntimeAttributes->{Listable}];

Фунция, скомпилированная в код C (остальные аналогично):

fСCompiled=Compile[{{x}}, Block[{sum=1.0, inc=1.0}, Do[inc=inc*x/i;

sum=sum+inc, {i, 100}];

sum], CompilationTarget->"C"];

fСCompiledParallelized=Compile[{{x}}, Block[{sum=1.0, inc=1.0}, Do[inc=inc*x/i;

sum=sum+inc, {i, 100}];

sum], CompilationTarget->"C", Parallelization->True];

fСCompiledListable=Compile[{{x}}, Block[{sum=1.0, inc=1.0}, Do[inc=inc*x/i;

sum=sum+inc, {i, 100}];

sum], CompilationTarget->"C", RuntimeAttributes->{Listable}];

fСCompiledListableParallelized=Compile[{{x}}, Block[{sum=1.0, inc=1.0}, Do[inc=inc*x/i;

sum=sum+inc, {i, 100}];

sum], CompilationTarget->"C", Parallelization->True, RuntimeAttributes->{Listable}];

Теперь посмотрим на все варианты (по сути одной и той же функции!) работы функции и её разных компилированных версий. Как видно, ускорение просто от оборачивания функции и использования компиляции в C ускоряет её более чем в 50 раз!

compareTiming[
{fNotCompiled/@data, 
fJITCompiled/@data, 
fJITCompiledListable@data, 
fJITCompiledParallelized/@data, 
fJITCompiledListableParallelized@data, 
fСCompiled/@data, 
fСCompiledListable@data, 
fСCompiledParallelized/@data, 
fСCompiledListableParallelized@data}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 17

Когда вы применяете Compile может случиться так, что компилированная функция имеет «утечки», когда часть вычислений перестает быть компилированной. Примеры борьбы с этим явлением вы можете найти в MathGroup.

3.3. Применяйте векторизированные операции внутри Compile

Когда это возможно, используйте векторизованные операции (UnitStep, Clip, Sign, Abs и т. д.) внутри компилированной функции, создаваемой с помощью Compile, чтобы реализовать конструкции «векторизованного порядка выполнения (блок-схемы)», такие как If, чтобы избежать явных циклов (по крайней мере, в самых глубоковложенных циклах) внутри Compile. Это может дать вам скорость уже не байт-кода Wolfram Language, а почти родную скорость C во многих случаях.

f1Compiled=Compile[{{x, _Real}}, SeedRandom[1];

Block[{data}, data=RandomReal[{-x, x}, 10^5];

Table[If[data[[i]]>0, 1, 0], {i, 1, Length[data]}]], CompilationTarget->"C", Parallelization->True];

f2Compiled=Compile[{{x, _Real}}, SeedRandom[1];

Block[{data}, data=RandomReal[{-x, x}, 10^5];

UnitStep@data], CompilationTarget->"C", Parallelization->True];

compareTiming[{f1Compiled@10, f2Compiled@10}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 18

3.4. Распараллеливание

Применяйте распараллеливание — для базовых нужд оно крайне просто реализовано, хотя есть множество настроек. Для начала просто запомните, главные функции: Parallelize, ParallelMap, ParallelTable.

compareTiming[{Table[Solve[Sin[n x+n^2]==0, x], {n, 1, 100}], ParallelTable[Solve[Sin[n x+n^2]==0, x], {n, 1, 100}]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 19

3.5. CUDA, OpenCL — вычисления с помощью графических процессоров (видеокарт)

Вы можете писать программы, основанные на технологиях CUDA и OpenCL. Производительность этих программ, естественно, будет соответствующей. Также можно использовать готовые программы на этих языках.

4. Имейте ввиду, что списки ({...} или List) реализованы в Wolfram Language, как массивы

4.1. Выделяйте большие списки, чтобы обрабатывать их «целиком», как описано выше.

Если у вас есть необходимость обрабатывать списки разного размера и содержимого, то особенно аккуратно нужно относиться к большим спискам. Иногда, список из 100-1000 элементов тоже может быть большим, например, если его элементами являются объекты XMLObject, получающиеся от импорта веб-страниц, каждый из которых весит килобайты, сотни килобайт или даже мегабайты.

4.2. Избегайте применять Append, Prepend, AppendTo и PrependTo в циклах

Не стоит применять функции Append, Prepend, AppendTo and PrependTo в циклах, для создания списков и т. п. — так как они создают копию всего списка, чтобы добавить единственный элемент, что приводить к квадратичной, а не линейной сложности конструирования списков.

compareTiming[{list={};

n=1;

While[n<=10000, list=Append[list, n++]];

list, Range[1, 10000]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 20

4.3. Используйте связанные списки

Применяйте «связанные списки» (конструкции, типа {1,{2,{3,{}}}}) вместо «плоских» списков (типа {1,2,3,4}) для накопления элементов списка в программах.

Простая конструкция для накопления элементов выглядит так: A = {new element, A}.

Так как A — это ссылка, отдельное присваивание осуществляется за одинаковое время.

compareTiming[{list1={};

Table[If[PrimeQ[i], list1=list1~Join~{i}], {i, 1, 100000}];

list1, list2={};

Table[If[PrimeQ[i], list2={list2, i}], {i, 1, 100000}];

Flatten@list2}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 21

4.4. Сопоставление по шаблону в последовательности шаблонов

Не забывайте о том, что сопоставление по шаблону (Pattern matching) для шаблонов, задающих последовательность выражений (__ BlankSequence и ___ BlankNullSequence) также основывается на том, что последовательности (Sequence) являются массивами. Таким образом, скажем, правило {fst_,rest___}:>{f[fst],g[rest]} скопирует весь список и только потом будет применяться. В частности, не используйте рекурсию таким образом, который может выглядеть естественным в других языках. Если вы хотите использовать рекурсию в списках, сначала преобразуйте свои списки в связанные списки (см. выше).

5. Избегайте неэффективные шаблоны. Создавайте их правильно.

Для того, чтобы лучше понимать, что такое шаблоны (Patterns) в Wolfram Language рекомендую посмотреть мой урок:

5.1. Используйте аккуратно правила замены

Программирование на основе правил замены может быть как очень быстрым, так и очень медленным, в зависимости от того, как вы строите свои вычисления и правила замены, но на практике легче нечаянно замедлить его.

Особенно медленными будут правила замены, которые заставляют внутренний механизм сопоставления с шаблоном делать много априори обреченных на неудачу попыток сопоставления, например, недоиспользуя каждый прогон сопоставителя шаблонов через длинный список (или выражение).

Хорошим примером является сортировка элементов:

list //. {left___, x_, middle__, y_, right__} /; x > y :> {left, y, middle, x, right};

Не забывайте о SequenceCases, SequencePosition, SequenceCount, SequenceReplace, специально оптимизированных для работы с массивами, которые появились в версии 10.1 языка Wolfram.

5.2. Структуры данных и сопоставитель шаблонов

Старайтесь создавать эффективные шаблоны и соответствующие им структуры для хранения ваших данных, что позволит механизму сопоставления с шаблоном тратить как можно меньше времени на ложные попытки сопоставления.

ClearAll[data];

data=RandomInteger[{0, 100}, {10^6, 2}];

compareTiming[{data/.{p:({x_/;

x>90&&PrimeQ[x], y_/;

y>34})/;

x^2+y^2>1000:>p, t:{_, _}:>Nothing}, ((data/.{_, y_/;

y<=34}:>Nothing)/.{x_/;

(x<=90||Not[PrimeQ[x]]), _}:>Nothing)/.({x_, y_}/;

x^2+y^2<=1000)->Nothing, 
Cases[Cases[Cases[data, {x_/;

x>90&&PrimeQ[x], _}], {_, y_/;

y>34}], {x_, y_}/;

x^2+y^2>1000]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 22

5.3. Используйте аккуратно правила замены

Избегайте использования шаблонов с вычислительно интенсивными условиями или тестами. Сопоставитель шаблонов даст вам максимальную скорость, если шаблоны в основном синтаксические по своей природе (структура теста, головной части выражения и т.д.). Каждый раз, когда применяется условие ( / ;) или тест шаблона (?), для каждого потенциального соответствия шаблону, вычислительное ядро вызывается сопоставителем шаблонов, и это замедляет его.

ClearAll[data];

data=RandomSample[{##}]&@@@Transpose[{RandomInteger[{0, 100}, 10^5], RandomReal[{0, 100}, 10^5]}];

compareTiming[{Cases[data, {_Integer, x_/;

Sin[x]<FractionalPart[x]}], Module[{preData, seconds}, preData=Cases[data, {_Integer, _}];

seconds=Developer`ToPackedArray[preData[[;;, 2]]];

Pick[preData, UnitStep[FractionalPart[seconds]-Sin[seconds]], 1]]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 23

6. Работа со списками

Большинство встроенных функций Wolfram Language, которые обрабатывают списки, создают при этом копию исходного списка и работают с этой копией. Поэтому они часто имеют линейную сложность по времени, зависящую от размера исходного списка, даже если они изменяют список только в нескольких местах.

Одна универсальная встроенная функция, которая не создает копии списка (или выражения), а изменяет исходное выражение и не имеет этой проблемы — это [[...]] (Part).

6.1. Аккуратно применяйте функции, модифицирующие списки

Избегайте использования большинства встроенных функций, которые меняют списки для большого количества небольших независимых модификаций списка.

compareTiming[{NestWhile[Drop[#, 1]&, Range[1000], (Length[#]>10)&], Drop[Range[1000], 990]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 24

6.2. Расширенный функционал Part

Используйте расширенные функциональные возможности Part для одновременного извлечения и изменения большого количества элементов списка (или более общего выражения). Это очень быстро, и не только для упакованных числовых массивов (Part изменяет исходный список).

Простейший пример выглядит так:

list={1, 2, 3, 4, 5};

list[[{1, 3}]]=list[[{4, 1}]];

list

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 25

Вот простой пример — изменить элементы списка в соответствии с заданным порядком:

ClearAll[list1, list2];

list1=Range[1000000];

list2=list1;

newArrangement=RandomSample[list1];

compareTiming[{list1=Table[list1[[i]], {i, newArrangement}];

list1, 
list2=list2[[newArrangement]];

list2}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 26

6.3. Используйте Extract

Используйте Extract для извлечения сразу нескольких элементов на разных уровнях, причем список позиций может быть очень большим.

ClearAll[list1, list2];

list=Range[10000000];

elems=RandomInteger[{1, 10000000}, 10000];

compareTiming[{Table[list[[elems[[i]]]], {i, 1, Length@elems}], 
Extract[list, List/@elems]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 27

7. Используйте эффективные встроенные форматы данных

7.1. Упакованные массивы

Для того, чтобы упаковать массив его достаточно обернуть в Developer`ToPackedArray. Чтобы проверить упакованность массива служит функция Developer`PackedArrayQ.

ClearAll[data];

data=RandomInteger[{0, 1}, 10^6];

dataUnPacked=data~Join~{1.};

dataPacked=Developer`ToPackedArray[N[data]~Join~{1.}];

compareTiming[{Total[dataUnPacked], Total[dataPacked]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 28

7.2. Разреженные массивы

Безусловно, если ваша матрица разреженная, то, безусловно, держать её в памяти и обращаться к ней становится неэффективным. Для работы с такими объектами существует функция SparseArray.

sparseArray=SparseArray[RandomInteger[{1, 100}, {100, 2}]->RandomReal[{0, 10}, 100], {100, 100}];

notSparseArray=Normal@sparseArray;

compareTiming[{Det@notSparseArray, Det@sparseArray}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 29

7.3. Хеш-таблицы

Начиная с версии 10 в Wolfram Language появились неизменяемые ассоциативные массивы, которые называются ассоциациями <|...|> (Association).

Тот факт, что они неизменяемы, не мешает им эффективно вставлять и удалять пары ключ-значение («дешевые копии», отличающиеся от исходной ассоциации наличием или отсутствием данной пары ключ-значение). Они представляют собой идиоматические ассоциативные массивы в Wolfram Language и имеют очень хорошие характеристики производительности.

assoc=<|a->1, b->2, c->3, d->4, e->5|>;

assoc[d]+assoc[a]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 30

Также не забывайте про Dataset — это объект, который можно назвать внутренним форматом базы данных языка Wolfram Language.

Помимо этого также важно помнить про функцию Dispatch, которая создает оптимизированную хэш-таблицу правил замены.

8. Применяйте кэширование, ленивые вычисления и динамическое программирование

8.1. Кеширование значений функций (мемоизация) и выгрузка определений функций на жесткий диск

Оно крайне просто реализовано в Wolfram Language и может сохранить вам просто астрономическое количество времени.

Простейший принцип работы выглядит так: вместо конструкции f[x_]:=functionBody используется f[x_]:=f[x]=functionBody — при этом функция не просто вычисляет значение при заданном значении аргумента, но и запоминает его. Поэтому вычисления требуются 1 раз, после этого их можно использовать и, если нужно, выгрузить на жесткий диск с помощью Save или DumpSave.

ClearAll[f1, f2];

f1[x_]:=(Pause[0.1];

x^2);

f2[x_]:=f2[x]=(Pause[0.1];

x^2);

compareTiming[{f1/@{1, 1, 1, 1, 1}, f2/@{1, 1, 1, 1, 1}}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 31

8.2. Замыкания (closures)

Wolfram Language позволяет реализовать более сложные версии мемоизации, где вы можете определить функции (замыкания) непосредственно во время их выполнения, которые будут использовать некоторые предварительно вычисленные части в своих определениях и, следовательно, будут быстрее.

ClearAll[f1, f2]

f1[x_]:=(y/.Solve[y^2+x y+x==0, y]);

Module[{solution=FullSimplify@Solve[y^2+x y+x==0, y]}, 
f2[xValue_]:=(y/.solution)/.x->xValue];

compareTiming[{Table[f1[x], {x, 0, 100}], Table[f2[x], {x, 0, 100}]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 32

8.3. Ленивые вычисления

Ленивые или отсроченные вычисления реализуются в Wolfram Language через конструкции := (SetDelayed), а для правил замены через :> (RuleDelayed). Они являются «естественными» для языка и позволяют вызывать функции, только когда они нужны и не вычислять их заранее, в отличие от заданий с помощью = (Set) и -> (Rule). Однако, важно понимать разницу и применять каждый тип верно.

ClearAll[f1, f2]

f1[x_]:=(y/.FullSimplify[Solve[y^2+x y+x==0, y]]);

f2[x_]=(y/.FullSimplify[Solve[y^2+x y+x==0, y]]);

compareTiming[{Table[f1[x], {x, 0, 100}], Table[f2[x], {x, 0, 100}]}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 33

9. Прочие замечания

9.1. Используйте сцепку функций Reap + Sow для сбора данных в процессе вычислений

Reap и Sow обеспечивают эффективный способ сбора промежуточных результатов, причем их можно «помечать» тэгами, для сбора необходимых результатов. Эти команды также хорошо сочетаются с функциональным программированием.

9.2. Все есть символьная констукция

В Wolfram Language все имеет символьное представление, даже картинки, код и документы Mathematica. Это дает потрясающие возможности для метапрограммирования и автоматизации самых разных задач. Но об этом всегда важно помнить. Полную форму выражения можно посмотреть с помощью конструкции FullForm.

FullForm[{{1, 2}, {3, {4}}, {{5}}}]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 34

FullForm[Hold[x5+y2+1/z+4/2]]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 35

9.3. Дуализм позиции и элемента

Часто вы можете написать более быстрые функции для работы с позициями элементов, а не с самими элементами, поскольку позиции являются целыми числами (для плоских списков). Это может дать вам ускорение на порядок даже по сравнению со встроенными функциями.

9.4. Отключите $HistoryLength

По умолчанию Wolfram Language помнит все вычисления, сделанные в текущей сессии. Это может сильно мешать работы и контролируется параметром $HistoryLength.

Преимущества языка Wolfram Language в скорости разработки

Мы подробно обсудили технические детали — как применяя те или иные приёмы ускорить код, или сразу писать его эффективным. Однако, есть одна важная сторона разработки на Wolfram Language, которая остается обычно незамеченной: высокая скорость разработки и прототипирования.

Дело в том, что внутри систем, таких как Wolfram Mathematica, Wolfram Cloud, Wolfram One и пр. реализована интерактивная среда разработки, которую вы можете кастомизировать под себя и делать то, что можно назвать «интерактивной книгой». Скажем эта статья изначально написана на Wolfram Language в Wolfram Mathematica, после не особенно сложный обработчик конвертирует документ, который готов полностью для публикации в моем блоге и здесь, на Хабре. Он делает все: готовит и выгружает иллюстрации на сервер, сохраняет документ в некскольких форматах, с учетом разницы платформ и пр.

Такого рода примеров можно привести очень много и все они сводятся до простой мысли: если у вас очень много разнородных задач, требующих работы в самых разных областях или вы хотите расширить свои горизонты и возможности разработки — Wolfram Language отлично подойдет для этого. Равно как он подойдет компаниям, которым необходимо быстро и качественно имплементировать у себя сложный, нагруженный специфическими вычислениями движок.

Если коротко, то можно отметить следующие ключевые возможности, благодаря которым разработка на Wolfram Language экономит массу времени на разработке:

  • Гигантское количество встроенных функций, покрывающих очень много областей (от символьной математики (интегралов, рядов, доказательства теорем и геометрии) до географических вычислений или создания облачных сервисов). Для того, чтобы оценить этот функционал — просто откройте документацию и поизучайте её хотя бы минут 15, вы убедитесь в этом сами.

    На картинке ниже показаны области, в которых работает Wolfram Language вместе с количеством функций, которые относятся к этой области. Всего на данный момент (в версии 12.0) доступно 5436 функций из 188 областей. Под картинкой в спойлере вы можете посмотреть их перечисление по областям.

data=SortBy[#,-Length[#]&]&@GroupBy[Flatten[Thread/@EntityValue[WolframLanguageData[],{name,functionality areas}],1],Last,Sort[#[[;;,1]]]&];

Framed[Labeled[Style["Области применения Wolfram Language и количество функций, относящихся к нимn",30,FontFamily->"Intro Regular"],#],Background->GrayLevel[0.95],FrameMargins->5,FrameStyle->None]&@WordCloud[KeyValueMap[{StringRiffle[StringCases[#1,RegularExpression["[A-Z][a-z]+"]]/."Symbols"->""," "]<>" ("<>ToString[Length@#2]<>")",N@Length@#2}&,data],ImageSize->{1200,800},Background->GrayLevel[0.95],WordOrientation->{{-Pi/4,0,Pi/4}},MaxItems->All,WordSpacings->3,FontFamily->"Intro Regular"]

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 36

Export[FileNameJoin[{NotebookDirectory[], "fileNames.nb"}], Notebook@Flatten@KeyValueMap[{Cell[#1<>" ("<>ToString[Length[#2]]<>")", "Title"], Cell[BoxData@ToBoxes@Row[Map[Hyperlink[#, "http://reference.wolfram.com/language/ref/"<>#<>".html"]&, #2], ",  "], "Text"]}&, data]];
Функции Wolfram Language по областям

Math Functions (279)

AiryAi, AiryAiPrime, AiryAiZero, AiryBi, AiryBiPrime, AiryBiZero, AlternatingFactorial, AngerJ, AppellF1, ArithmeticGeometricMean, BarnesG, BellB, BellY, BernoulliB, BernsteinBasis, BesselI, BesselJ, BesselJZero, BesselK, BesselY, BesselYZero, Beta, BetaRegularized, BlomqvistBeta, BSplineBasis, CarmichaelLambda, CatalanNumber, ChampernowneNumber, ChebyshevT, ChebyshevU, ClebschGordan, Clip, CoshIntegral, CosIntegral, CubeRoot, Cyclotomic, DawsonF, DedekindEta, DiracComb, DirichletBeta, DirichletCharacter, DirichletEta, DirichletL, DirichletLambda, DiscreteDelta, DivisorSigma, EllipticE, EllipticExp, EllipticExpPrime, EllipticF, EllipticK, EllipticLog, EllipticNomeQ, EllipticPi, EllipticTheta, EllipticThetaPrime, Erf, Erfc, Erfi, EulerE, EulerPhi, ExpIntegralE, ExpIntegralEi, Factorial, Factorial2, FactorialPower, Fibonacci, Fibonorial, FractionalPart, FresnelC, FresnelF, FresnelG, FresnelS, Gamma, GammaRegularized, GegenbauerC, GoodmanKruskalGamma, Gudermannian, HankelH1, HankelH2, HarmonicNumber, Haversine, HeavisideLambda, HeavisidePi, HeavisideTheta, HermiteH, HurwitzLerchPhi, HurwitzZeta, Hyperfactorial, Hypergeometric0F1, Hypergeometric0F1Regularized, Hypergeometric1F1, Hypergeometric1F1Regularized, Hypergeometric2F1, Hypergeometric2F1Regularized, HypergeometricPFQ, HypergeometricPFQRegularized, HypergeometricU, InverseBetaRegularized, InverseEllipticNomeQ, InverseErf, InverseErfc, InverseGammaRegularized, InverseGudermannian, InverseHaversine, InverseJacobiCD, InverseJacobiCN, InverseJacobiCS, InverseJacobiDC, InverseJacobiDN, InverseJacobiDS, InverseJacobiNC, InverseJacobiND, InverseJacobiNS, InverseJacobiSC, InverseJacobiSD, InverseJacobiSN, InverseWeierstrassP, JacobiAmplitude, JacobiCD, JacobiCN, JacobiCS, JacobiDC, JacobiDN, JacobiDS, JacobiNC, JacobiND, JacobiNS, JacobiP, JacobiSC, JacobiSD, JacobiSN, JacobiSymbol, JacobiZeta, KelvinBei, KelvinBer, KelvinKei, KelvinKer, KendallTau, KleinInvariantJ, KroneckerDelta, KroneckerSymbol, LaguerreL, LegendreP, LegendreQ, LerchPhi, LiouvilleLambda, Log10, Log2, LogBarnesG, LogGamma, LogIntegral, LogisticSigmoid, LucasL, MangoldtLambda, MarcumQ, MathieuC, MathieuCharacteristicA, MathieuCharacteristicB, MathieuCharacteristicExponent, MathieuCPrime, MathieuS, MathieuSPrime, MeijerG, MinkowskiQuestionMark, Minus, MittagLefflerE, ModularLambda, MoebiusMu, Multinomial, MultiplicativeOrder, NevilleThetaC, NevilleThetaD, NevilleThetaN, NevilleThetaS, NextPrime, NorlundB, OwenT, ParabolicCylinderD, PartitionsP, PartitionsQ, Pochhammer, PolyGamma, PolygonalNumber, PolyLog, PrimeNu, PrimeOmega, PrimePi, PrimeZetaP, PrimitiveRoot, ProductLog, QBinomial, QFactorial, QGamma, QHypergeometricPFQ, QPochhammer, QPolyGamma, Quotient, RamanujanTau, RamanujanTauL, RamanujanTauTheta, RamanujanTauZ, Ramp, RealAbs, RealSign, RecurrenceTable, Rescale, RiemannR, RiemannSiegelTheta, RiemannSiegelZ, RiemannXi, SawtoothWave, ScorerGi, ScorerGiPrime, ScorerHi, ScorerHiPrime, SiegelTheta, Sinc, SinhIntegral, SinIntegral, SixJSymbol, SpearmanRho, SphericalBesselJ, SphericalBesselY, SphericalHankelH1, SphericalHankelH2, SphericalHarmonicY, SpheroidalEigenvalue, SpheroidalJoiningFactor, SpheroidalPS, SpheroidalPSPrime, SpheroidalQS, SpheroidalQSPrime, SpheroidalRadialFactor, SpheroidalS1, SpheroidalS1Prime, SpheroidalS2, SpheroidalS2Prime, Sqrt, SquareWave, StieltjesGamma, StirlingS1, StirlingS2, StruveH, StruveL, Subfactorial, Subtract, Surd, ThreeJSymbol, TriangleWave, UnitBox, UnitStep, UnitTriangle, WeberE, WeierstrassE1, WeierstrassE2, WeierstrassE3, WeierstrassEta1, WeierstrassEta2, WeierstrassEta3, WeierstrassHalfPeriods, WeierstrassHalfPeriodW1, WeierstrassHalfPeriodW2, WeierstrassHalfPeriodW3, WeierstrassInvariantG2, WeierstrassInvariantG3, WeierstrassInvariants, WeierstrassP, WeierstrassPPrime, WeierstrassSigma, WeierstrassZeta, WhittakerM, WhittakerW, WignerD, WilksW, ZernikeR, Zeta, ZetaZero, $MaxPiecewiseCases

Basic (243)

Abs, All, AllowedDimensions, And, Append, Apply, ArcCos, ArcCosh, ArcCot, ArcCoth, ArcCsc, ArcCsch, ArcSec, ArcSech, ArcSin, ArcSinh, ArcTan, ArcTanh, Arg, Array, ArrayDepth, ArrayQ, AtomQ, Attributes, Automatic, Binomial, Blank, BlankNullSequence, BlankSequence, Block, Cancel, Cases, Ceiling, CharacterRange, Characters, Check, Clear, ClearAll, ClearAttributes, Coefficient, Collect, Column, Complement, Complex, Composition, CompoundExpression, Condition, Conjugate, Contexts, Cos, Cosh, Cot, Coth, Cross, Csc, Csch, DateList, Default, Definition, Degree, DeleteCases, Denominator, Depth, Det, Dimensions, DiracDelta, Disk, Divide, Divisors, Do, Dot, E, Equal, Evaluate, EvenQ, Exp, Expand, Extract, Factor, False, FindFit, First, FirstCase, FirstPosition, Fit, Flatten, Floor, Fold, FoldList, For, Format, Fourier, FreeQ, Function, Gather, GatherBy, GCD, General, Graphics, Greater, GreaterEqual, Grid, Head, Hold, HoldAll, HoldFirst, HoldPattern, HoldRest, I, Identity, IdentityMatrix, If, Im, Infinity, Inner, InputForm, Integer, IntegerQ, Intersection, Interval, Inverse, Join, Last, LCM, Length, Less, LessEqual, Level, Line, List, Listable, ListQ, Log, Map, MapAt, MapThread, MatchQ, MatrixQ, Max, Mean, Median, MemberQ, Message, Min, Mod, Module, Most, N, Nest, None, Nor, Norm, Normal, Not, Null, NumberQ, Numerator, NumericQ, OddQ, Options, Or, OrderedQ, Out, Outer, Part, Partition, Pattern, Permutations, Pi, Piecewise, Plot, Plus, Point, Polygon, Power, PowerRange, Prepend, Prime, PrimeQ, Print, RandomInteger, RandomReal, Range, Rational, Re, Real, Replace, ReplaceAll, ReplacePart, Rest, Return, Reverse, RightComposition, Round, Rule, RuleDelayed, SameQ, Sec, Sech, Select, Sequence, Set, SetAttributes, SetDelayed, SetOptions, Sign, Sin, Sinh, Slot, SlotSequence, Sort, SortBy, Span, SparseArray, Subsets, Switch, Table, TagSet, TagSetDelayed, TagUnset, Take, Tally, Tan, Tanh, Thread, Times, Timing, Together, Tr, True, Tuples, Union, UnsameQ, Unset, UpSet, UpSetDelayed, VectorQ, Verbatim, Which, While, With, $ModuleNumber, $NewSymbol

Image (183)

AlphaChannel, BarcodeImage, BarcodeRecognize, Binarize, BinaryImageQ, Blur, BorderDimensions, BottomHatTransform, BrightnessEqualize, CaptureRunning, ChanVeseBinarize, Closing, ComponentMeasurements, ConformImages, ConstantImage, ContourDetect, CornerNeighbors, CrossingDetect, CurrentImage, CurrentNotebookImage, CurrentScreenImage, DeleteBorderComponents, DeleteSmallComponents, Dilation, DistanceTransform, DominantColors, DynamicImage, EdgeDetect, Erosion, EstimatedBackground, FillingTransform, FilterRules, FindFaces, FindThreshold, FrameRate, GeodesicClosing, GeodesicDilation, GeodesicErosion, GeodesicOpening, GrowCutComponents, GuidedFilter, HighlightImage, HitMissTransform, Image, Image3D, Image3DProjection, Image3DSlices, ImageAccumulate, ImageAdd, ImageAdjust, ImageAlign, ImageApply, ImageApplyIndexed, ImageAspectRatio, ImageAssemble, ImageCapture, ImageCaptureFunction, ImageChannels, ImageClip, ImageCollage, ImageCompose, ImageConvolve, ImageCooccurrence, ImageCorners, ImageCorrelate, ImageCorrespondingPoints, ImageCrop, ImageData, ImageDeconvolve, ImageDemosaic, ImageDifference, ImageDimensions, ImageDisplacements, ImageDistance, ImageEffect, ImageExposureCombine, ImageFeatureTrack, ImageFileApply, ImageFileFilter, ImageFileScan, ImageFocusCombine, ImageForestingComponents, ImageFormattingWidth, ImageForwardTransformation, ImageGraphics, ImageKeypoints, ImageLevels, ImageLines, ImageMargins, ImageMarker, ImageMeasurements, ImageMultiply, ImagePad, ImagePadding, ImagePartition, ImagePeriodogram, ImagePerspectiveTransformation, ImagePosition, ImagePreviewFunction, ImagePyramid, ImagePyramidApply, ImageQ, ImageRecolor, ImageReflect, ImageResize, ImageResolution, ImageRestyle, ImageRotate, ImageScaled, ImageScan, ImageSize, ImageSizeAction, ImageSizeMultipliers, ImageSubtract, ImageTake, ImageTransformation, ImageTrim, ImageType, ImageValue, ImageValuePositions, IncludeMetaInformation, Inpaint, Interleaving, InverseDistanceTransform, InverseImagePyramid, InverseRadon, KeypointStrength, LiftingFilterData, LinearGradientImage, LocalAdaptiveBinarize, Masking, MaxDetect, MaxFeatureDisplacement, MaxFeatures, MaxItems, MetaInformation, MinDetect, MorphologicalBinarize, MorphologicalBranchPoints, MorphologicalComponents, MorphologicalEulerNumber, MorphologicalGraph, MorphologicalPerimeter, MorphologicalTransform, Opening, Padding, PixelValue, PixelValuePositions, PreprocessingRules, PreserveColor, PreserveImageOptions, Pruning, RadialGradientImage, Radon, RandomImage, RegionBinarize, RegionImage, ReliefImage, RemoveAlphaChannel, RemoveBackground, ReplaceImageValue, ReplacePixelValue, Resampling, SelectComponents, SetAlphaChannel, Sharpen, SkeletonTransform, TextRecognize, Thinning, Threshold, Thumbnail, TopHatTransform, TransformationClass, WatershedComponents, WaveletFilterCoefficients, WaveletImagePlot, WordCloud, WordOrientation, WordSelectionFunction, WordSpacings, ZoomCenter, ZoomFactor, $ImageFormattingWidth

Graph Theory (179)

AdjacencyGraph, AdjacencyList, AdjacencyMatrix, BetweennessCentrality, BreadthFirstScan, CanonicalGraph, ChromaticPolynomial, ClosenessCentrality, CommunityGraphPlot, CommunityLabels, CommunityRegionStyle, ConnectedComponents, ConnectedGraphComponents, DegreeCentrality, DepthFirstScan, DirectedEdge, DirectedEdges, DirectedGraph, EccentricityCentrality, EdgeAdd, EdgeBetweennessCentrality, EdgeCapacity, EdgeConnectivity, EdgeContract, EdgeCost, EdgeCount, EdgeCycleMatrix, EdgeDelete, EdgeIndex, EdgeLabels, EdgeLabelStyle, EdgeList, EdgeRules, EdgeShapeFunction, EdgeStyle, EdgeWeight, EdgeWeightedGraphQ, EigenvectorCentrality, FindClique, FindCycle, FindEdgeCover, FindEdgeCut, FindEdgeIndependentPaths, FindEulerianCycle, FindFundamentalCycles, FindGraphCommunities, FindGraphIsomorphism, FindGraphPartition, FindHamiltonianCycle, FindHamiltonianPath, FindIndependentEdgeSet, FindIndependentVertexSet, FindKClan, FindKClique, FindKClub, FindKPlex, FindMaximumFlow, FindMinimumCostFlow, FindMinimumCut, FindPath, FindPostmanTour, FindShortestPath, FindSpanningTree, FindVertexCover, FindVertexCut, FindVertexIndependentPaths, FlowPolynomial, GlobalClusteringCoefficient, Graph, Graph3D, GraphAssortativity, GraphAutomorphismGroup, GraphCenter, GraphComplement, GraphData, GraphDensity, GraphDiameter, GraphDifference, GraphDisjointUnion, GraphDistance, GraphDistanceMatrix, GraphEmbedding, GraphHighlight, GraphHighlightStyle, GraphHub, GraphIntersection, GraphLayout, GraphLinkEfficiency, GraphPeriphery, GraphPlot, GraphPlot3D, GraphPower, GraphRadius, GraphReciprocity, GraphStyle, GraphUnion, HighlightGraph, HITSCentrality, IncidenceGraph, IncidenceList, IncidenceMatrix, IndexGraph, KatzCentrality, KCoreComponents, KEdgeConnectedComponents, KirchhoffMatrix, KVertexConnectedComponents, LambdaComponents, LayeredGraphPlot, LayerSizeFunction, LinkRankCentrality, LocalClusteringCoefficient, LuccioSamiComponents, MeanClusteringCoefficient, MeanDegreeConnectivity, MeanGraphDistance, MeanNeighborDegree, MultiedgeStyle, NeighborhoodGraph, NestGraph, OptimumFlowData, PageRankCentrality, PlanarGraph, Properties, Property, PropertyList, PropertyValue, RadialityCentrality, RandomGraph, RelationGraph, RemoveProperty, ReverseGraph, SelfLoopStyle, SetProperty, ShortestPathFunction, SimpleGraph, SocialMediaData, StatusCentrality, Subgraph, TopologicalSort, TransitiveClosureGraph, TransitiveReductionGraph, TreePlot, TuttePolynomial, UndirectedEdge, UndirectedGraph, VertexAdd, VertexCapacity, VertexComponent, VertexConnectivity, VertexContract, VertexCoordinates, VertexCorrelationSimilarity, VertexCosineSimilarity, VertexCount, VertexDegree, VertexDelete, VertexDiceSimilarity, VertexEccentricity, VertexInComponent, VertexInDegree, VertexIndex, VertexJaccardSimilarity, VertexLabels, VertexLabelStyle, VertexList, VertexOutComponent, VertexOutDegree, VertexReplace, VertexShape, VertexShapeFunction, VertexSize, VertexStyle, VertexWeight, VertexWeightedGraphQ, WeaklyConnectedComponents, WeaklyConnectedGraphComponents, WeightedAdjacencyGraph, WeightedAdjacencyMatrix

Statistical Distribution (152)

ArcSinDistribution, BatesDistribution, BeckmannDistribution, BenfordDistribution, BeniniDistribution, BenktanderGibratDistribution, BenktanderWeibullDistribution, BernoulliDistribution, BetaBinomialDistribution, BetaDistribution, BetaNegativeBinomialDistribution, BetaPrimeDistribution, BinomialDistribution, BinormalDistribution, BirnbaumSaundersDistribution, BorelTannerDistribution, CauchyDistribution, CensoredDistribution, ChiDistribution, ChiSquareDistribution, CircularOrthogonalMatrixDistribution, CircularQuaternionMatrixDistribution, CircularRealMatrixDistribution, CircularSymplecticMatrixDistribution, CircularUnitaryMatrixDistribution, CompoundPoissonDistribution, CopulaDistribution, CoxianDistribution, DagumDistribution, DataDistribution, DavisDistribution, DirichletDistribution, DiscreteUniformDistribution, EmpiricalDistribution, ErlangDistribution, EstimatedDistribution, ExpGammaDistribution, ExponentialDistribution, ExponentialPowerDistribution, ExtremeValueDistribution, FailureDistribution, FirstPassageTimeDistribution, FisherHypergeometricDistribution, FisherZDistribution, FRatioDistribution, FrechetDistribution, GammaDistribution, GaussianOrthogonalMatrixDistribution, GaussianSymplecticMatrixDistribution, GaussianUnitaryMatrixDistribution, GeometricDistribution, GompertzMakehamDistribution, GumbelDistribution, HalfNormalDistribution, HjorthDistribution, HotellingTSquareDistribution, HoytDistribution, HyperbolicDistribution, HyperexponentialDistribution, HypergeometricDistribution, HypoexponentialDistribution, InverseChiSquareDistribution, InverseGammaDistribution, InverseGaussianDistribution, InverseWishartMatrixDistribution, JohnsonDistribution, KDistribution, KernelMixtureDistribution, KumaraswamyDistribution, LandauDistribution, LaplaceDistribution, LevyDistribution, LindleyDistribution, LogGammaDistribution, LogisticDistribution, LogLogisticDistribution, LogMultinormalDistribution, LogNormalDistribution, LogSeriesDistribution, MarchenkoPasturDistribution, MarginalDistribution, MatrixNormalDistribution, MatrixPropertyDistribution, MatrixTDistribution, MaxStableDistribution, MaxwellDistribution, MeixnerDistribution, MinStableDistribution, MixtureDistribution, MoyalDistribution, MultinomialDistribution, MultinormalDistribution, MultivariateHypergeometricDistribution, MultivariatePoissonDistribution, MultivariateTDistribution, NakagamiDistribution, NegativeBinomialDistribution, NegativeMultinomialDistribution, NoncentralBetaDistribution, NoncentralChiSquareDistribution, NoncentralFRatioDistribution, NoncentralStudentTDistribution, NormalDistribution, OrderDistribution, ParameterMixtureDistribution, ParetoDistribution, ParetoPickandsDistribution, PascalDistribution, PearsonDistribution, PERTDistribution, PoissonConsulDistribution, PoissonDistribution, PolyaAeppliDistribution, PowerDistribution, ProbabilityDistribution, ProductDistribution, RayleighDistribution, ReliabilityDistribution, RiceDistribution, SechDistribution, ShiftedGompertzDistribution, SinghMaddalaDistribution, SkellamDistribution, SkewNormalDistribution, SliceDistribution, SmoothKernelDistribution, SplicedDistribution, StableDistribution, StandbyDistribution, StationaryDistribution, StudentTDistribution, SurvivalDistribution, SuzukiDistribution, TracyWidomDistribution, TransformedDistribution, TriangularDistribution, TruncatedDistribution, TsallisQExponentialDistribution, TsallisQGaussianDistribution, TukeyLambdaDistribution, UniformDistribution, UniformSumDistribution, VarianceGammaDistribution, VoigtDistribution, VonMisesDistribution, WakebyDistribution, WalleniusHypergeometricDistribution, WaringYuleDistribution, WeibullDistribution, WignerSemicircleDistribution, WishartMatrixDistribution, ZipfDistribution

Graphics (126)

AbsoluteDashing, AbsolutePointSize, AbsoluteThickness, Antialiasing, Arrowheads, AspectRatio, Axes, AxesEdge, AxesLabel, AxesOrigin, AxesStyle, Axis, Back, Background, BezierFunction, Boxed, BoxRatios, BoxStyle, BSplineFunction, BSplineSurface, ClippingStyle, ClipPlanes, ClipPlanesStyle, ClipRange, ContentSelectable, ContourLabels, Contours, ContourShading, CoordinatesToolOptions, CurveClosed, Dashed, Dashing, DataRange, DataReversed, DateTicksFormat, DefaultAxesStyle, DefaultBaseStyle, DefaultBoxStyle, DefaultFaceGridsStyle, DefaultFrameStyle, DefaultFrameTicksStyle, Directive, DisplayFunction, DotDashed, Dotted, Epilog, Exclusions, ExtentElementFunction, ExtentMarkers, ExtentSize, FaceGrids, Filling, FillingStyle, Frame, FrameLabel, FrameMargins, FrameTicks, Front, FullGraphics, Graphics3D, GraphicsColumn, GraphicsGrid, GraphicsGroup, GraphicsRow, GridLines, Highlighted, Inset, ItemAspectRatio, Joined, Lighting, LightingAngle, Mesh, MeshFunctions, MeshShading, NCache, NormalsFunction, Offset, Opacity, OpacityFunction, OpacityFunctionScaling, PixelConstrained, PointSize, PolarAxes, PolarAxesOrigin, PolarGridLines, PolarTicks, Prolog, Raster, Raster3D, Rasterize, RasterSize, RegionFunction, RevolutionAxis, Rotate, RotateLabel, RotationAction, RoundingRadius, Scale, Scaled, Show, Specularity, SphericalRegion, SplineClosed, SplineDegree, SplineKnots, SplineWeights, StreamScale, Texture, Thick, Thickness, Thin, Ticks, Translate, Transparent, VertexColors, VertexDataCoordinates, VertexNormals, VertexTextureCoordinates, ViewAngle, ViewCenter, ViewMatrix, ViewPoint, ViewProjection, ViewRange, ViewVector, ViewVertical

Region (125)

Area, ArrayMesh, AugmentedPolyhedron, BeveledPolyhedron, BooleanRegion, BoundaryDiscretizeGraphics, BoundaryDiscretizeRegion, BoundaryMesh, BoundaryMeshRegion, BoundaryMeshRegionQ, BoundedRegionQ, BoundingRegion, CanonicalizePolygon, CanonicalizePolyhedron, CantorMesh, ConnectedMeshComponents, ConstantRegionQ, ConvexHullMesh, ConvexPolygonQ, ConvexPolyhedronQ, CrossingCount, CrossingPolygon, DelaunayMesh, DihedralAngle, DimensionalMeshComponents, DirichletCondition, DiscretizeGraphics, DiscretizeRegion, DualPolyhedron, EulerCharacteristic, FindMeshDefects, GeometricScene, HighlightMesh, HilbertCurve, ImageMesh, ImplicitRegion, InnerPolygon, InnerPolyhedron, InverseTransformedRegion, KochCurve, MaxCellMeasure, MengerMesh, MeshCellCentroid, MeshCellCount, MeshCellHighlight, MeshCellIndex, MeshCellLabel, MeshCellMarker, MeshCellMeasure, MeshCellQuality, MeshCells, MeshCellShapeFunction, MeshCellStyle, MeshCoordinates, MeshPrimitives, MeshQualityGoal, MeshRefinementFunction, MeshRegion, MeshRegionQ, MomentOfInertia, NeumannValue, OuterPolygon, OuterPolyhedron, ParametricRegion, PeanoCurve, Perimeter, PeriodicBoundaryCondition, PlanarAngle, PolygonAngle, PolygonCoordinates, PolygonDecomposition, PolyhedronAngle, PolyhedronCoordinates, PolyhedronDecomposition, PolyhedronGenus, Printout3D, Printout3DPreviewer, Pyramid, RandomPoint, RandomPolygon, RandomPolyhedron, Region, RegionBoundary, RegionBounds, RegionCentroid, RegionDifference, RegionDimension, RegionDisjoint, RegionDistance, RegionDistanceFunction, RegionEmbeddingDimension, RegionEqual, RegionIntersection, RegionMeasure, RegionMember, RegionMemberFunction, RegionMoment, RegionNearest, RegionNearestFunction, RegionProduct, RegionQ, RegionResize, RegionSize, RegionSymmetricDifference, RegionUnion, RegionWithin, RepairMesh, SierpinskiCurve, SierpinskiMesh, SignedRegionDistance, SimplePolygonQ, SimplePolyhedronQ, SnubPolyhedron, SolidAngle, SolidRegionQ, SurfaceArea, TransformedRegion, TriangulateMesh, TruncatedPolyhedron, UniformPolyhedron, Volume, VoronoiMesh, WindingCount, WindingPolygon, $Printout3DPreviewer

String (115)

Alphabet, AlphabeticOrder, AlphabeticSort, Antonyms, Capitalize, CaseOrdering, CaseSensitive, CharacterCounts, CharacterEncoding, CharacterName, Containing, Decapitalize, DeleteStopwords, DictionaryWordQ, DigitCharacter, DigitQ, EndOfLine, EndOfString, ExportString, FromLetterNumber, HexadecimalCharacter, IgnoreCase, IgnorePunctuation, ImportString, IncludeInflections, InputString, InsertLinebreaks, LanguageIdentify, LetterCharacter, LetterCounts, LetterNumber, LetterQ, LowerCaseQ, NameQ, Names, NumberString, Overlaps, PalindromeQ, PartOfSpeech, Pluralize, PrintableASCIIQ, PunctuationCharacter, RandomWord, RegularExpression, RemoveDiacritics, Snippet, SpellingCorrection, SpellingCorrectionList, SpokenString, StartOfLine, StartOfString, String, StringCases, StringContainsQ, StringCount, StringDelete, StringDrop, StringEndsQ, StringExpression, StringExtract, StringFormat, StringFreeQ, StringInsert, StringJoin, StringLength, StringMatchQ, StringPadLeft, StringPadRight, StringPart, StringPartition, StringPosition, StringQ, StringRepeat, StringReplace, StringReplaceList, StringReplacePart, StringReverse, StringRiffle, StringRotateLeft, StringRotateRight, StringSkeleton, StringSplit, StringStartsQ, StringTake, StringTrim, Symbol, Synonyms, SyntaxLength, SyntaxQ, TextCases, TextContents, TextElement, TextPosition, TextSentences, TextStructure, TextTranslation, TextWords, ToCharacterCode, ToLowerCase, ToString, ToUpperCase, Transliterate, UpperCaseQ, VerifyInterpretation, Whitespace, WhitespaceCharacter, WordBoundary, WordCharacter, WordCount, WordCounts, WordDefinition, WordList, WordStem, WordTranslation, WriteString

Plotting (110)

AbsArgPlot, AnatomyPlot3D, AnatomySkinStyle, AnatomyStyling, BoundaryStyle, Callout, CalloutMarker, CalloutStyle, ComplexListPlot, ComplexPlot, ComplexPlot3D, ContourPlot, ContourPlot3D, DateListLogPlot, DateListPlot, DateListStepPlot, DensityPlot, DensityPlot3D, DiscretePlot, DiscretePlot3D, IntervalMarkers, IntervalMarkersStyle, JuliaSetPlot, LabelingSize, LabelVisibility, LeaderSize, LineIntegralConvolutionPlot, LineIntegralConvolutionScale, ListContourPlot, ListContourPlot3D, ListCurvePathPlot, ListDensityPlot, ListDensityPlot3D, ListLineIntegralConvolutionPlot, ListLinePlot, ListLogLinearPlot, ListLogLogPlot, ListLogPlot, ListPlot, ListPlot3D, ListPointPlot3D, ListPolarPlot, ListSliceContourPlot3D, ListSliceDensityPlot3D, ListSliceVectorPlot3D, ListStepPlot, ListStreamDensityPlot, ListStreamPlot, ListSurfacePlot3D, ListVectorDensityPlot, ListVectorPlot, ListVectorPlot3D, LogLinearPlot, LogLogPlot, LogPlot, MandelbrotSetPlot, MaxPlotPoints, NumberLinePlot, ParametricPlot, ParametricPlot3D, Plot3D, PlotLabel, PlotLabels, PlotLayout, PlotLegends, PlotMarkers, PlotPoints, PlotRange, PlotRangeClipping, PlotRangePadding, PlotRegion, PlotStyle, PlotTheme, PolarPlot, ProbabilityPlot, ProbabilityScalePlot, QuantilePlot, ReferenceLineStyle, RegionPlot, RegionPlot3D, ReImLabels, ReImPlot, ReImStyle, ReliefPlot, RevolutionPlot3D, RulePlot, SingularValuePlot, SliceContourPlot3D, SliceDensityPlot3D, SliceVectorPlot3D, SphericalPlot3D, StackedDateListPlot, StackedListPlot, StreamDensityPlot, StreamMarkers, StreamPlot, StreamPoints, StreamPosition, TextureCoordinateFunction, TextureCoordinateScaling, TimelinePlot, VectorDensityPlot, VectorMarkers, VectorPlot, VectorPlot3D, VectorPoints, VectorScale, WaveletListPlot, WaveletMatrixPlot, $PlotTheme

Statistics (110)

AbsoluteCorrelation, AbsoluteCorrelationFunction, AlternativeHypothesis, BarlowProschanImportance, BirnbaumImportance, BiweightLocation, BiweightMidvariance, CDF, Censoring, CentralFeature, CentralMoment, CentralMomentGeneratingFunction, CharacteristicFunction, Conditioned, ConfidenceRange, ConfidenceTransform, ContraharmonicMean, Correlation, CorrelationFunction, Covariance, CovarianceFunction, CoxModel, CoxModelFit, CriticalityFailureImportance, CriticalitySuccessImportance, Cumulant, CumulantGeneratingFunction, Distributed, DistributionParameterAssumptions, DistributionParameterQ, ErlangB, ErlangC, EventData, Expectation, ExponentialMovingAverage, FactorialMoment, FactorialMomentGeneratingFunction, FindDistribution, FindDistributionParameters, FussellVeselyImportance, GeometricMean, HarmonicMean, HazardFunction, HoeffdingD, HypothesisTestData, ImprovementImportance, InitialSeeding, InterquartileRange, InverseCDF, InverseSurvivalFunction, Kurtosis, Likelihood, LogLikelihood, MaxExtraBandwidths, MaxMixtureKernels, MeanDeviation, MedianDeviation, MissingDataMethod, Moment, MomentConvert, MomentEvaluate, MomentGeneratingFunction, MovingAverage, MovingMedian, NExpectation, NProbability, ParameterEstimator, PartialCorrelationFunction, PDF, PillaiTrace, PowerSpectralDensity, Probability, QnDispersion, Quantile, QuartileDeviation, Quartiles, QuartileSkewness, QueueProperties, RandomChoice, RandomComplex, RandomFunction, RandomSample, RandomSeeding, RandomVariate, RarerProbability, RiskAchievementImportance, RiskReductionImportance, RootMeanSquare, SeedRandom, SignificanceLevel, Skewness, SnDispersion, SpatialMedian, StandardDeviation, Standardize, Standardized, StrataVariables, StructuralImportance, SurvivalFunction, SurvivalModel, SurvivalModelFit, TemporalData, TrimmedMean, TrimmedVariance, Variance, VerifyTestAssumptions, WeakStationarity, WeightedData, WinsorizedMean, WinsorizedVariance

Paclet (103)

AdministrativeDivisionData, AircraftData, AirportData, AirPressureData, AirTemperatureData, AnatomyData, BridgeData, BroadcastStationData, BuildingData, ChemicalData, CityData, CometData, CompanyData, ConstellationData, CountryData, DamData, DeepSpaceProbeData, DictionaryLookup, EarthImpactData, EarthquakeData, ElementData, ExampleData, ExoplanetData, FetalGrowthData, FinancialData, FormulaData, FormulaLookup, GalaxyData, GenomeData, GenomeLookup, GeoElevationData, GeogravityModelData, GeologicalPeriodData, GeomagneticModelData, HistoricalPeriodData, HumanGrowthData, IconData, IslandData, IsotopeData, KnotData, LakeData, LaminaData, LanguageData, LatticeData, MannedSpaceMissionData, MathematicalFunctionData, MedicalTestData, MeteorShowerData, MineralData, MinorPlanetData, MortalityData, MountainData, MovieData, NebulaData, NeighborhoodData, NuclearExplosionData, NuclearReactorData, OceanData, ParkData, ParticleAcceleratorData, ParticleData, PersonData, PhysicalSystemData, PlaneCurveData, PlanetaryMoonData, PlanetData, PlantData, PolyhedronData, ProteinData, PsychrometricPropertyData, PulsarData, SatelliteData, SolarSystemFeatureData, SolidData, SpaceCurveData, SpeciesData, SpectralLineData, StandardAtmosphereData, StandardOceanData, StarClusterData, StarData, StoppingPowerData, SupernovaData, SurfaceData, ThermodynamicData, TideData, TropicalStormData, TunnelData, UnderseaFeatureData, UniverseModelData, UniversityData, VolcanoData, WeatherData, WeatherForecastData, WikipediaData, WindDirectionData, WindSpeedData, WindVectorData, WolframLanguageData, WordData, WordFrequency, WordFrequencyData, ZIPCodeData

Cloud (97)

AddUsers, AllowedCloudExtraParameters, AllowedCloudParameterExtensions, APIFunction, Authentication, AutoRefreshed, AutoSubmitting, CachePersistence, ClearPermissions, CloudAccountData, CloudBase, CloudConnect, CloudDeploy, CloudDirectory, CloudDisconnect, CloudEvaluate, CloudExport, CloudExpression, CloudExpressions, CloudFunction, CloudGet, CloudImport, CloudLoggingData, CloudObject, CloudObjectNameFormat, CloudObjects, CloudObjectURLType, CloudPublish, CloudPut, CloudSave, CloudShare, CloudSubmit, CloudSymbol, CloudUnshare, CompoundElement, CreateCloudExpression, CreatePermissionsGroup, CreateUUID, Delayed, DeleteCloudExpression, DeleteObject, DeletePermissionsKey, EmbeddedHTML, ExportForm, ExternalBundle, ExternalTypeSignature, FormControl, FormFunction, FormLayoutFunction, FormObject, FormPage, GenerateHTTPResponse, GenerateSecuredAuthenticationKey, HTTPErrorResponse, HTTPResponse, IconRules, IncludeDefinitions, LocalCache, PageTheme, PartProtection, Permissions, PermissionsGroup, PermissionsGroups, PermissionsKey, PermissionsKeys, RemoveUsers, ResponseForm, SecuredAuthenticationKey, SecuredAuthenticationKeys, SetCloudDirectory, SetPermissions, SetUsers, SharingList, $CacheBaseDirectory, $CloudBase, $CloudConnected, $CloudCreditsAvailable, $CloudEvaluation, $CloudExpressionBase, $CloudObjectNameFormat, $CloudObjectURLType, $CloudRootDirectory, $CloudSymbolBase, $CloudUserID, $CloudUserUUID, $CloudVersion, $EvaluationCloudBase, $EvaluationCloudObject, $Permissions, $RequesterAddress, $RequesterWolframID, $RequesterWolframUUID, $SSHAuthentication, $UserAgentString, $UserURLBase, $WolframID, $WolframUUID

Net (90)

AggregationLayer, AppendLayer, AttentionLayer, BasicRecurrentLayer, BatchNormalizationLayer, BatchSize, CatenateLayer, ConstantArrayLayer, ConstantPlusLayer, ConstantTimesLayer, ContrastiveLossLayer, ConvolutionLayer, CrossEntropyLossLayer, CTCLossLayer, DeconvolutionLayer, DotLayer, DropoutLayer, ElementwiseLayer, EmbeddingLayer, ExtractLayer, FlattenLayer, GatedRecurrentLayer, LearningRate, LearningRateMultipliers, LinearLayer, LocalResponseNormalizationLayer, LongShortTermMemoryLayer, LossFunction, MaxTrainingRounds, MeanAbsoluteLossLayer, MeanSquaredLossLayer, NetAppend, NetBidirectionalOperator, NetChain, NetDecoder, NetDelete, NetDrop, NetEncoder, NetEvaluationMode, NetExtract, NetFlatten, NetFoldOperator, NetGraph, NetInformation, NetInitialize, NetInsert, NetInsertSharedArrays, NetJoin, NetMapOperator, NetMapThreadOperator, NetMeasurements, NetModel, NetNestOperator, NetPairEmbeddingOperator, NetPort, NetPortGradient, NetPrepend, NetRename, NetReplace, NetReplacePart, NetSharedArray, NetStateObject, NetTake, NetTrain, NetTrainResultsObject, NormalizationLayer, OrderingLayer, PaddingLayer, PartLayer, PoolingLayer, PrependLayer, ReplicateLayer, ReshapeLayer, ResizeLayer, SequenceLastLayer, SequenceMostLayer, SequenceRestLayer, SequenceReverseLayer, SoftmaxLayer, SpatialTransformationLayer, SummationLayer, ThreadingLayer, TotalLayer, TrainingProgressCheckpointing, TrainingProgressFunction, TrainingProgressMeasurements, TrainingProgressReporting, TrainingStoppingCriterion, TransposeLayer, UnitVectorLayer

Control System (88)

AffineStateSpaceModel, AsymptoticOutputTracker, BodePlot, CarlemanLinearize, ContinuousTimeModelQ, ControllabilityGramian, ControllabilityMatrix, ControllableDecomposition, ControllableModelQ, DescriptorStateSpace, DiscreteLQEstimatorGains, DiscreteLQRegulatorGains, DiscreteTimeModelQ, DualSystemsModel, EstimatorGains, EstimatorRegulator, FeedbackLinearize, FeedbackSector, FeedbackSectorStyle, FeedbackType, FullInformationOutputRegulator, GainMargins, GainPhaseMargins, InternallyBalancedDecomposition, JordanModelDecomposition, KalmanEstimator, KroneckerModelDecomposition, LinearizingTransformationData, LQEstimatorGains, LQGRegulator, LQOutputRegulatorGains, LQRegulatorGains, MinimalStateSpaceModel, NicholsGridLines, NicholsPlot, NonlinearStateSpaceModel, NyquistGridLines, NyquistPlot, ObservabilityGramian, ObservabilityMatrix, ObservableDecomposition, ObservableModelQ, OutputControllabilityMatrix, OutputControllableModelQ, OutputResponse, PhaseMargins, PhaseRange, PIDData, PIDDerivativeFilter, PIDFeedforward, PIDTune, PoleZeroMarkers, RootLocusPlot, SamplingPeriod, SmithDelayCompensator, StabilityMargins, StabilityMarginsStyle, StateFeedbackGains, StateOutputEstimator, StateResponse, StateSpaceModel, StateSpaceRealization, StateSpaceTransform, StateTransformationLinearize, SystemsConnectionsModel, SystemsModelDelay, SystemsModelDelayApproximate, SystemsModelDelete, SystemsModelDimensions, SystemsModelExtract, SystemsModelFeedbackConnect, SystemsModelLabels, SystemsModelLinearity, SystemsModelMerge, SystemsModelOrder, SystemsModelParallelConnect, SystemsModelSeriesConnect, SystemsModelStateFeedbackConnect, SystemsModelVectorRelativeOrders, ToContinuousTimeModel, ToDiscreteTimeModel, TransferFunctionCancel, TransferFunctionExpand, TransferFunctionFactor, TransferFunctionModel, TransferFunctionPoles, TransferFunctionTransform, TransferFunctionZeros

Operator (86)

AngleBracket, Backslash, Because, BracketingBar, Cap, CapitalDifferentialD, CenterDot, CircleDot, CircleMinus, CirclePlus, CircleTimes, Colon, Congruent, Coproduct, Cup, CupCap, Del, Diamond, DifferentialD, DoubleBracketingBar, DoubleVerticalBar, Equilibrium, MinusPlus, NonCommutativeMultiply, NotCongruent, NotCupCap, NotDoubleVerticalBar, NotExists, NotReverseElement, NotSquareSubset, NotSquareSubsetEqual, NotSquareSuperset, NotSquareSupersetEqual, NotSubset, NotSubsetEqual, NotSuperset, NotSupersetEqual, NotVerticalBar, OverBar, OverDot, OverHat, Overscript, OverTilde, OverVector, PlusMinus, Proportion, Proportional, ReverseElement, ReverseEquilibrium, ReverseUpEquilibrium, SmallCircle, SpanFromLeft, Square, SquareIntersection, SquareSubset, SquareSubsetEqual, SquareSuperset, SquareSupersetEqual, SquareUnion, Star, SubMinus, SubPlus, Subscript, Subset, SubsetEqual, SubStar, Subsuperscript, SuchThat, SuperDagger, SuperMinus, SuperPlus, Superscript, Superset, SupersetEqual, SuperStar, Therefore, UnderBar, Underoverscript, Underscript, UnionPlus, UpEquilibrium, Vee, VerticalBar, VerticalSeparator, VerticalTilde, Wedge

Front End (85)

Iconize, Infix, Inherited, InheritScope, Initialization, Input, InputAutoReplacements, Interpretation, Invisible, Item, ItemSize, LimitsPositioning, LineIndent, LineIndentMaxFraction, LineSpacing, ListAnimate, LocalizeVariables, LocatorAutoCreate, LocatorRegion, Magnify, MakeExpression, Manual, Overlay, Paneled, PaneSelector, PassEventsDown, PassEventsUp, Placeholder, PopupWindow, Postfix, PreemptProtect, Prefix, Refresh, RefreshRate, Row, SaveDefinitions, Scrollbars, ScrollPosition, ShrinkingDelay, Spacer, Spacings, SpanFromAbove, SpanFromBoth, SynchronousInitialization, SynchronousUpdating, Text, TextAlignment, TextClipboardType, TextData, TextJustification, ToExpression, TouchPosition, TouchscreenAutoZoom, TouchscreenControlPlacement, TrackedSymbols, TransitionDirection, TransitionDuration, TransitionEffect, UndoOptions, UndoTrackedVariables, UnsavedVariables, UpdateInterval, UsingFrontEnd, $CharacterEncoding, $CharacterEncodings, $ControlActiveSetting, $DefaultImagingDevice, $Display, $DisplayFunction, $Epilog, $FrontEnd, $FrontEndSession, $IgnoreEOF, $ImagingDevices, $ImportFormats, $Inspector, $Line, $NumberMarks, $OutputSizeLimit, $ScriptCommandLine, $ScriptInputString, $SummaryBoxDataSizeLimit, $SynchronousEvaluation, $SyntaxHandler, $Urgent

Cell (78)

AllowGroupClose, AllowInlineCells, AllowReverseGroupClose, Cell, CellAutoOverwrite, CellBaseline, CellBracketOptions, CellChangeTimes, CellContext, CellDingbat, CellDynamicExpression, CellEditDuplicate, CellEpilog, CellEvaluationDuplicate, CellEvaluationFunction, CellEventActions, CellFrame, CellFrameColor, CellFrameLabelMargins, CellFrameLabels, CellFrameMargins, CellGroup, CellGroupData, CellGrouping, CellID, CellLabel, CellLabelAutoDelete, CellLabelStyle, CellMargins, CellObject, CellOpen, CellPrint, CellProlog, Cells, CellStyle, CellTags, CloudRenderingMethod, ConversionRules, Copyable, DefaultDuplicateCellStyle, DefaultNaturalLanguage, DefaultNewCellStyle, Deletable, DockedCells, Editable, Evaluatable, EvaluationCell, ExpressionCell, GeneratedCell, Hyphenation, InitializationCell, LanguageCategory, Multiselection, NextCell, ParagraphIndent, ParagraphSpacing, ParentCell, PreviousCell, PrivateCellOptions, PrivateFontOptions, Selectable, SelectedCells, SelectionCreateCell, SelectionEvaluateCreateCell, ShowAutoSpellCheck, ShowAutoStyles, ShowCellBracket, ShowCellLabel, ShowCellTags, ShowCursorTracker, ShowGroupOpener, ShowSpecialCharacters, ShowStringCharacters, SingleLetterItalics, StripOnInput, StructuredSelection, TaggingRules, TextCell

File System (78)

AbsoluteFileName, Compress, ContextToFileName, CopyFile, CopyToClipboard, CreateArchive, CreateFile, DeleteContents, DeleteFile, DumpSave, Encode, ExpandFileName, Export, ExtractArchive, File, FileBaseName, FileByteCount, FileConvert, FileDate, FileExistsQ, FileExtension, FileFormat, FileHash, FileNameDepth, FileNameDrop, FileNameForms, FileNameJoin, FileNames, FileNameSetter, FileNameSplit, FileNameTake, FilePrint, FileSize, FileSystemMap, FileSystemScan, FileType, FindFile, Get, Import, IncludeDirectories, MailAddressValidation, MailExecute, MailFolder, MailItem, MailReceiverFunction, MailResponseFunction, MailSearch, MailServerConnect, MailServerConnection, MailSettings, NotebookDirectory, NotebookFileName, OpenAppend, OpenRead, OpenWrite, OverwriteTarget, Path, PingTime, Put, PutAppend, RemoteFile, RenameFile, ReturnReceiptFunction, Run, RunThrough, Save, SendMail, SendMessage, SetFileDate, SystemOpen, Uncompress, XMLElement, XMLObject, $ExportFormats, $IncomingMailSettings, $InputFileName, $MobilePhone, $Path

Comparison Operator (73)

DotEqual, EqualTilde, GreaterEqualLess, GreaterFullEqual, GreaterGreater, GreaterLess, GreaterSlantEqual, GreaterTilde, HumpDownHump, HumpEqual, LeftTriangle, LeftTriangleBar, LeftTriangleEqual, LessEqualGreater, LessFullEqual, LessGreater, LessLess, LessSlantEqual, LessTilde, NestedGreaterGreater, NestedLessLess, NotEqualTilde, NotGreater, NotGreaterEqual, NotGreaterFullEqual, NotGreaterGreater, NotGreaterLess, NotGreaterSlantEqual, NotGreaterTilde, NotHumpDownHump, NotHumpEqual, NotLeftTriangle, NotLeftTriangleBar, NotLeftTriangleEqual, NotLess, NotLessEqual, NotLessFullEqual, NotLessGreater, NotLessLess, NotLessSlantEqual, NotLessTilde, NotNestedGreaterGreater, NotNestedLessLess, NotPrecedes, NotPrecedesEqual, NotPrecedesSlantEqual, NotPrecedesTilde, NotRightTriangle, NotRightTriangleBar, NotRightTriangleEqual, NotSucceeds, NotSucceedsEqual, NotSucceedsSlantEqual, NotSucceedsTilde, NotTilde, NotTildeEqual, NotTildeFullEqual, NotTildeTilde, Precedes, PrecedesEqual, PrecedesSlantEqual, PrecedesTilde, RightTriangle, RightTriangleBar, RightTriangleEqual, Succeeds, SucceedsEqual, SucceedsSlantEqual, SucceedsTilde, Tilde, TildeEqual, TildeFullEqual, TildeTilde

Color (71)

Black, Blend, Blue, Brown, ChromaticityPlot, ChromaticityPlot3D, CMYKColor, ColorBalance, ColorCombine, ColorConvert, ColorCoverage, ColorData, ColorDataFunction, ColorDetect, ColorDistance, ColorFunction, ColorFunctionScaling, Colorize, ColorNegate, ColorProfileData, ColorQ, ColorQuantize, ColorReplace, ColorRules, ColorSeparate, ColorSetter, ColorsNear, ColorSpace, ColorToneMapping, Cyan, Darker, Dithering, FindMatchingColor, Glow, Gray, GrayLevel, Green, Hue, ImageColorSpace, LABColor, LCHColor, LightBlue, LightBrown, LightCyan, Lighter, LightGray, LightGreen, LightMagenta, LightOrange, LightPink, LightPurple, LightRed, LightYellow, LUVColor, Magenta, MaxColorDistance, MinColorDistance, Orange, Pink, Purple, RandomColor, Red, RGBColor, StreamColorFunction, StreamColorFunctionScaling, VectorColorFunction, VectorColorFunctionScaling, White, WhitePoint, XYZColor, Yellow

Audio (69)

AllowedFrequencyRange, Audio, AudioAmplify, AudioAnnotate, AudioAnnotationLookup, AudioBlockMap, AudioCapture, AudioChannelAssignment, AudioChannelCombine, AudioChannelMix, AudioChannels, AudioChannelSeparate, AudioData, AudioDelay, AudioDelete, AudioDistance, AudioFade, AudioFrequencyShift, AudioGenerator, AudioInputDevice, AudioInsert, AudioIntervals, AudioJoin, AudioLabel, AudioLength, AudioLocalMeasurements, AudioLooping, AudioLoudness, AudioMeasurements, AudioNormalize, AudioOutputDevice, AudioOverlay, AudioPad, AudioPan, AudioPartition, AudioPause, AudioPitchShift, AudioPlay, AudioPlot, AudioQ, AudioRecord, AudioReplace, AudioResample, AudioReverb, AudioSampleRate, AudioSpectralMap, AudioSpectralTransformation, AudioSplit, AudioStop, AudioStream, AudioStreams, AudioTimeStretch, AudioTrim, AudioType, ConformAudio, Duration, MaxDuration, PaddingSize, PartitionGranularity, PitchRecognize, RemoveAudioStream, SpeechRecognize, SpeechSynthesize, VoiceStyleData, $AudioInputDevices, $AudioOutputDevices, $DefaultAudioInputDevice, $DefaultAudioOutputDevice, $VoiceStyles

Linear Algebra (62)

AllowedHeads, AntihermitianMatrixQ, AntisymmetricMatrixQ, CharacteristicPolynomial, CholeskyDecomposition, ConjugateTranspose, Diagonal, DiagonalizableMatrixQ, DiagonalMatrixQ, DiscreteLyapunovSolve, DiscreteRiccatiSolve, Distribute, Eigensystem, Eigenvalues, Eigenvectors, HermiteDecomposition, HermitianMatrixQ, HessenbergDecomposition, IndefiniteMatrixQ, JordanDecomposition, LinearSolve, LinearSolveFunction, LowerTriangularize, LowerTriangularMatrixQ, LUDecomposition, LyapunovSolve, MatrixExp, MatrixFunction, MatrixLog, MatrixPower, MatrixRank, Minors, NegativeDefiniteMatrixQ, NegativeSemidefiniteMatrixQ, Normalize, Normalized, NormalMatrixQ, NullSpace, Orthogonalize, OrthogonalMatrixQ, Permanent, PositiveDefiniteMatrixQ, PositiveSemidefiniteMatrixQ, PrincipalComponents, Projection, PseudoInverse, QRDecomposition, RealBlockDiagonalForm, RiccatiSolve, RowReduce, SchurDecomposition, SingularValueDecomposition, SingularValueList, SmithDecomposition, SquareMatrixQ, SymmetricMatrixQ, Transpose, UnitaryMatrixQ, UpperTriangularize, UpperTriangularMatrixQ, VectorAngle, ZeroTest

Machine Learning (60)

AcceptanceThreshold, ActiveClassification, ActiveClassificationObject, ActivePrediction, ActivePredictionObject, AmbiguityFunction, AmbiguityList, AnomalyDetection, AnomalyDetectorFunction, AssumeDeterministic, AudioIdentify, BayesianMaximization, BayesianMaximizationObject, BayesianMinimization, BayesianMinimizationObject, ClassifierFunction, ClassifierMeasurements, ClassifierMeasurementsObject, Classify, ClassPriors, DeleteAnomalies, DimensionReduce, DimensionReducerFunction, DimensionReduction, FacialFeatures, FeatureDistance, FeatureExtract, FeatureExtraction, FeatureExtractor, FeatureExtractorFunction, FeatureNames, FeatureNearest, FeatureSpacePlot, FeatureSpacePlot3D, FeatureTypes, FindAnomalies, ImageAugmentationLayer, ImageBoundingBoxes, ImageCases, ImageContainsQ, ImageContents, ImageIdentify, ImageInstanceQ, IndeterminateThreshold, InitialEvaluationHistory, LearnDistribution, LearnedDistribution, MaxOverlapFraction, MissingValuePattern, Predict, PredictorFunction, PredictorMeasurements, PredictorMeasurementsObject, RecognitionPrior, SequencePredict, SequencePredictorFunction, SpecificityGoal, SynthesizeMissingValues, UtilityFunction, ValidationSet

Notebook (60)

AutoCopy, CreateCellID, CreateDocument, CreateNotebook, CreateWindow, DocumentNotebook, EvaluationElements, EvaluationNotebook, InputNotebook, InsertResults, Interactive, Notebook, NotebookApply, NotebookAutoSave, NotebookClose, NotebookDelete, NotebookEvaluate, NotebookEventActions, NotebookFind, NotebookGet, NotebookImport, NotebookInformation, NotebookLocate, NotebookObject, NotebookOpen, NotebookPrint, NotebookPut, NotebookRead, Notebooks, NotebookSave, NotebookSelection, NotebookWrite, ParentNotebook, Paste, PlaceholderReplace, PrintingStyleEnvironment, PrivateNotebookOptions, ScreenStyleEnvironment, ScrollingOptions, SelectedNotebook, SelectionEvaluate, SelectionMove, SetSelectedNotebook, ShowSelection, SpellingOptions, Visible, WindowClickSelect, WindowElements, WindowFloating, WindowFrame, WindowFrameElements, WindowMargins, WindowOpacity, WindowSize, WindowStatusArea, WindowTitle, WindowToolbars, WrapAround, $Canceled, $Notebooks

Date (59)

AbsoluteTime, BusinessDayQ, CalendarConvert, CalendarData, CalendarType, CurrentDate, DateBounds, Dated, DateDifference, DateFormat, DateFunction, DateObject, DateObjectQ, DateOverlapsQ, DatePattern, DatePlus, DateRange, DateString, DateValue, DateWithinQ, DayCount, DayCountConvention, DaylightQ, DayMatchQ, DayName, DayPlus, DayRange, DayRound, Friday, FromAbsoluteTime, FromJulianDate, FromUnixTime, HolidayCalendar, JulianDate, LeapYearQ, LocalTime, LocalTimeZone, Monday, NextDate, Now, PreviousDate, Saturday, Sunday, Thursday, TimeObject, TimeObjectQ, TimeZone, TimeZoneConvert, TimeZoneOffset, Today, Tomorrow, Tuesday, UnixTime, Wednesday, Yesterday, $DateStringFormat, $SystemTimeZone, $TimeZone, $TimeZoneEntity

Clustering (52)

BinaryDistance, BrayCurtisDistance, CanberraDistance, CanonicalWarpingCorrespondence, CanonicalWarpingDistance, ChessboardDistance, ClusterClassify, ClusterDissimilarityFunction, ClusteringTree, CorrelationDistance, CosineDistance, CriterionFunction, DamerauLevenshteinDistance, Dendrogram, DiceDissimilarity, DistanceFunction, DistanceMatrix, EditDistance, EuclideanDistance, FindClusters, GapPenalty, HammingDistance, JaccardDissimilarity, LongestCommonSequence, LongestCommonSequencePositions, LongestCommonSubsequence, LongestCommonSubsequencePositions, LongestOrderedSequence, ManhattanDistance, MatchingDissimilarity, MeanShift, Nearest, NearestFunction, NearestNeighborGraph, NearestTo, NeedlemanWunschSimilarity, NormalizedSquaredEuclideanDistance, RogersTanimotoDissimilarity, RussellRaoDissimilarity, SequenceAlignment, SequenceCases, SequenceCount, SequencePosition, SequenceReplace, SequenceSplit, SimilarityRules, SmithWatermanSimilarity, SokalSneathDissimilarity, SquaredEuclideanDistance, WarpingCorrespondence, WarpingDistance, YuleDissimilarity

Graphics Primitive (51)

AASTriangle, AffineHalfSpace, AffineSpace, Annulus, Arrow, ASATriangle, Ball, BezierCurve, BSplineCurve, CapsuleShape, Circle, Circumsphere, Cone, ConicHullRegion, Cube, Cuboid, Cylinder, DiskSegment, Dodecahedron, Ellipsoid, EmptyRegion, FilledCurve, FullRegion, GraphicsComplex, HalfLine, HalfPlane, HalfSpace, Hexahedron, Hyperplane, Icosahedron, InfiniteLine, InfinitePlane, Insphere, JoinedCurve, Octahedron, Parallelepiped, Parallelogram, Polyhedron, Prism, Rectangle, RegularPolygon, SASTriangle, ShellRegion, Simplex, Sphere, SphericalShell, SSSTriangle, StadiumShape, Tetrahedron, Triangle, Tube

Form (48)

AccountingForm, BaseForm, CapForm, CForm, DecimalForm, DefaultPrintPrecision, DigitBlock, DisplayForm, EdgeForm, EngineeringForm, ExponentFunction, ExponentStep, FaceForm, FormatType, FortranForm, FullForm, HoldForm, JoinForm, MathMLForm, MatrixForm, NumberForm, NumberFormat, NumberMarks, NumberMultiplier, NumberPadding, NumberPoint, NumberSeparator, NumberSigns, OutputForm, PaddedForm, PercentForm, PrecedenceForm, QuantityForm, ScientificForm, ScientificNotationThreshold, SignPadding, StandardForm, StringForm, SyntaxForm, TableAlignments, TableDepth, TableDirections, TableForm, TableHeadings, TableSpacing, TeXForm, TraditionalForm, TreeForm

Stream (44)

AnchoredSearch, BinaryFormat, Byte, Character, Close, DefineInputStreamMethod, DefineOutputStreamMethod, EndOfBuffer, EndOfFile, Expression, Find, FindList, InputStream, NullRecords, NullWords, Number, OutputStream, Read, ReadLine, ReadList, ReadString, Record, RecordLists, RecordSeparators, RemoveInputStreamMethod, RemoveOutputStreamMethod, SetStreamPosition, Skip, Streams, StringToStream, TokenWords, TotalWidth, Word, WordSearch, WordSeparators, Write, WriteLine, $BatchInput, $BatchOutput, $Echo, $Input, $InputStreamMethods, $Output, $OutputStreamMethods

Statistical Test (42)

AndersonDarlingTest, AutocorrelationTest, BaringhausHenzeTest, BlomqvistBetaTest, BrownForsytheTest, ConoverTest, CorrelationTest, CramerVonMisesTest, DistributionFitTest, FisherRatioTest, GoodmanKruskalGammaTest, HoeffdingDTest, IndependenceTest, JarqueBeraALMTest, KendallTauTest, KolmogorovSmirnovTest, KuiperTest, LeveneTest, LocationEquivalenceTest, LocationTest, LogRankTest, MannWhitneyTest, MardiaCombinedTest, MardiaKurtosisTest, MardiaSkewnessTest, PairedTTest, PairedZTest, PearsonChiSquareTest, PearsonCorrelationTest, PillaiTraceTest, ShapiroWilkTest, SiegelTukeyTest, SignedRankTest, SignTest, SpearmanRankTest, TTest, UnitRootTest, VarianceEquivalenceTest, VarianceTest, WatsonUSquareTest, WilksWTest, ZTest

Statistical Process (41)

ARCHProcess, ARIMAProcess, ARMAProcess, ARProcess, BernoulliProcess, BinomialProcess, BrownianBridgeProcess, CompoundPoissonProcess, CompoundRenewalProcess, ContinuousMarkovProcess, CoxIngersollRossProcess, DiscreteMarkovProcess, EstimatedProcess, FARIMAProcess, FindHiddenMarkovStates, FindProcessParameters, FractionalBrownianMotionProcess, FractionalGaussianNoiseProcess, GARCHProcess, GeometricBrownianMotionProcess, HiddenMarkovProcess, InhomogeneousPoissonProcess, ItoProcess, MAProcess, MarkovProcessProperties, OrnsteinUhlenbeckProcess, PoissonProcess, ProcessEstimator, ProcessParameterAssumptions, ProcessParameterQ, QueueingNetworkProcess, QueueingProcess, RandomWalkProcess, RenewalProcess, SARIMAProcess, SARMAProcess, StratonovichProcess, TelegraphProcess, TransformedProcess, WhiteNoiseProcess, WienerProcess

Chart (39)

BarChart, BarChart3D, BarOrigin, BarSpacing, BoxWhiskerChart, BubbleChart, BubbleChart3D, BubbleScale, BubbleSizes, CandlestickChart, ChartBaseStyle, ChartElementFunction, ChartElements, ChartLabels, ChartLayout, ChartLegends, ChartStyle, DistributionChart, EventLabels, InteractiveTradingChart, KagiChart, LabelingFunction, LegendAppearance, LineBreakChart, PairedBarChart, PieChart, PieChart3D, Placed, PointFigureChart, RectangleChart, RectangleChart3D, RenkoChart, ScalingFunctions, SectorChart, SectorChart3D, SectorOrigin, SectorSpacing, TradingChart, TrendStyle

Polynomial (39)

AugmentedSymmetricPolynomial, CoefficientArrays, CoefficientList, CoefficientRules, CountRoots, Decompose, Discriminant, Exponent, FactorList, FactorSquareFree, FactorSquareFreeList, FactorTerms, FactorTermsList, FromCoefficientRules, GroebnerBasis, HornerForm, IrreduciblePolynomialQ, MonomialList, PolynomialExtendedGCD, PolynomialGCD, PolynomialLCM, PolynomialMod, PolynomialQ, PolynomialQuotient, PolynomialQuotientRemainder, PolynomialReduce, PolynomialRemainder, PowerSymmetricPolynomial, PrimitivePolynomialQ, Resultant, RootIntervals, SquareFreeQ, SubresultantPolynomialRemainders, SubresultantPolynomials, Subresultants, SymmetricPolynomial, SymmetricReduction, Trig, Variables

Arrow Operator (38)

DoubleDownArrow, DoubleLeftArrow, DoubleLeftRightArrow, DoubleLongLeftArrow, DoubleLongLeftRightArrow, DoubleLongRightArrow, DoubleRightArrow, DoubleUpArrow, DoubleUpDownArrow, DownArrow, DownArrowBar, DownArrowUpArrow, DownTeeArrow, LeftArrow, LeftArrowBar, LeftArrowRightArrow, LeftRightArrow, LeftTeeArrow, LongLeftArrow, LongLeftRightArrow, LongRightArrow, LowerLeftArrow, LowerRightArrow, RightArrow, RightArrowBar, RightArrowLeftArrow, RightTeeArrow, ShortDownArrow, ShortLeftArrow, ShortRightArrow, ShortUpArrow, UpArrow, UpArrowBar, UpArrowDownArrow, UpDownArrow, UpperLeftArrow, UpperRightArrow, UpTeeArrow

Machine (38)

Environment, OperatingSystem, SystemInformation, SystemInstall, SystemProcessData, SystemProcesses, $ActivationKey, $CommandLine, $CreationDate, $EvaluationEnvironment, $GeoLocationCity, $GeoLocationCountry, $GeoLocationSource, $LicenseExpirationDate, $LicenseID, $LicenseServer, $MachineAddresses, $MachineDomains, $MachineID, $MachineName, $MachineType, $NetworkConnected, $OperatingSystem, $ParentProcessID, $PathnameSeparator, $ProcessID, $ProcessorCount, $ProcessorType, $ReleaseNumber, $SessionID, $System, $SystemCharacterEncoding, $SystemID, $SystemShell, $SystemWordLength, $Username, $Version, $VersionNumber

(36)

ActiveStyle, ClearCookies, ConnectionSettings, CookieFunction, EmbedCode, ExternalOptions, FindCookies, FollowRedirects, HostLookup, HTTPRedirect, HTTPRequest, HTTPRequestData, Hyperlink, InstallService, IPAddress, SetCookies, URL, URLBuild, URLDecode, URLDispatcher, URLDownload, URLDownloadSubmit, URLEncode, URLExecute, URLExpand, URLParse, URLQueryDecode, URLQueryEncode, URLRead, URLResponseTime, URLShorten, URLSubmit, VerifySecurityCertificates, $Cookies, $CookieStore, $EmbedCodeEnvironments

Image Filter (35)

BilateralFilter, CommonestFilter, CornerFilter, CurvatureFlowFilter, DerivativeFilter, DifferentiatorFilter, EntropyFilter, FourierDCTFilter, GaborFilter, GaussianFilter, GeometricMeanFilter, GradientFilter, GradientOrientationFilter, HarmonicMeanFilter, HighpassFilter, HilbertFilter, ImageFilter, ImageSaliencyFilter, KuwaharaFilter, LaplacianFilter, LaplacianGaussianFilter, LowpassFilter, MaxFilter, MeanFilter, MeanShiftFilter, MedianFilter, MinFilter, NonlocalMeansFilter, PeronaMalikFilter, RangeFilter, RecurrenceFilter, RidgeFilter, StandardDeviationFilter, TotalVariationFilter, WienerFilter

Parallel (35)

AbortKernels, CloseKernels, CriticalSection, DistributedContexts, DistributeDefinitions, EvaluationObject, GetEnvironment, KernelObject, Kernels, LaunchKernels, ParallelArray, ParallelCombine, ParallelDo, ParallelEvaluate, Parallelize, ParallelMap, ParallelNeeds, ParallelProduct, ParallelSubmit, ParallelSum, ParallelTable, ParallelTry, SetEnvironment, SetSharedFunction, SetSharedVariable, TargetDevice, UnsetShared, WaitAll, WaitNext, $ConfiguredKernels, $DistributedContexts, $KernelCount, $KernelID, $SharedFunctions, $SharedVariables

Entity (34)

AggregatedEntityClass, CanonicalName, CombinedEntityClass, CommonName, DatabaseConnect, DatabaseDisconnect, DatabaseReference, Entity, EntityClass, EntityClassList, EntityCopies, EntityFunction, EntityGroup, EntityInstance, EntityList, EntityPrefetch, EntityProperties, EntityProperty, EntityPropertyClass, EntityRegister, EntityStore, EntityStores, EntityTypeName, EntityUnregister, EntityValue, ExtendedEntityClass, FilteredEntityClass, FromEntity, IncludeRelatedTables, RandomEntity, RelationalDatabase, SampledEntityClass, SortedEntityClass, ToEntity

Vector Tee Operator (34)

DoubleLeftTee, DoubleRightTee, DownLeftRightVector, DownLeftTeeVector, DownLeftVector, DownLeftVectorBar, DownRightTeeVector, DownRightVector, DownRightVectorBar, DownTee, LeftDownTeeVector, LeftDownVector, LeftDownVectorBar, LeftRightVector, LeftTee, LeftTeeVector, LeftUpDownVector, LeftUpTeeVector, LeftUpVector, LeftUpVectorBar, LeftVector, LeftVectorBar, RightDownTeeVector, RightDownVector, RightDownVectorBar, RightTee, RightTeeVector, RightUpDownVector, RightUpTeeVector, RightUpVector, RightUpVectorBar, RightVector, RightVectorBar, UpTee

Control Object (33)

ActionMenu, Animate, Animator, Checkbox, CheckboxBar, ClickPane, Clock, Control, CurrentValue, DefaultFieldHintStyle, Deploy, Deployed, Enabled, EventHandler, FieldCompletionFunction, GestureHandler, InputField, ListPicker, Locator, LocatorPane, Manipulate, Manipulator, MousePosition, Opener, PopupMenu, RadioButton, RadioButtonBar, Setter, SetterBar, Setting, Toggler, TogglerBar, Trigger

Style (33)

BaseStyle, Bold, CommunityBoundaryStyle, ContourStyle, DefaultGridLinesStyle, DefaultOptions, DefaultTicksStyle, ExclusionsStyle, FaceGridsStyle, FrameStyle, FrameTicksStyle, GeoGridLinesStyle, GridLinesStyle, Italic, ItemStyle, Large, Larger, Medium, MeshStyle, Plain, ScriptBaselineShifts, ScriptMinSize, ScriptSizeMultipliers, Small, Smaller, StreamStyle, Style, StyleData, StyleDefinitions, Tiny, TranslationOptions, Underlined, VectorStyle

Geodesy (32)

FindGeoLocation, GeoAntipode, GeoArea, GeoDestination, GeodesyData, GeoDirection, GeoDisplacement, GeoDistance, GeoDistanceList, GeoEntities, GeoGridDirectionDifference, GeoGridPosition, GeoGridUnitArea, GeoGridUnitDistance, GeoGridVector, GeoIdentify, GeoLength, GeoNearest, GeoPosition, GeoPositionENU, GeoPositionXYZ, GeoProjectionData, GeoVector, GeoVectorENU, GeoVectorXYZ, GeoWithinQ, Here, Latitude, LatitudeLongitude, Longitude, RandomGeoPosition, $GeoLocation

Geo Graphics (32)

DynamicGeoGraphics, GeoArraySize, GeoBackground, GeoBoundingBox, GeoBounds, GeoBubbleChart, GeoCenter, GeoGraphics, GeoGridLines, GeoGridRange, GeoGridRangePadding, GeoGroup, GeoHistogram, GeoImage, GeoLabels, GeoListPlot, GeoModel, GeoProjection, GeoRange, GeoRangePadding, GeoRegionValuePlot, GeoResolution, GeoScaleBar, GeoServer, GeoSmoothHistogram, GeoStreamPlot, GeoStyling, GeoStylingImageFunction, GeoVariant, GeoVectorPlot, GeoZoomLevel, MissingStyle

Named Group (32)

AbelianGroup, AlternatingGroup, BabyMonsterGroupB, ConwayGroupCo1, ConwayGroupCo2, ConwayGroupCo3, CyclicGroup, DihedralGroup, FischerGroupFi22, FischerGroupFi23, FischerGroupFi24Prime, HaradaNortonGroupHN, HeldGroupHe, HigmanSimsGroupHS, JankoGroupJ1, JankoGroupJ2, JankoGroupJ3, JankoGroupJ4, LyonsGroupLy, MathieuGroupM11, MathieuGroupM12, MathieuGroupM22, MathieuGroupM23, MathieuGroupM24, McLaughlinGroupMcL, MonsterGroupM, ONanGroupON, RudvalisGroupRu, SuzukiGroupSuz, SymmetricGroup, ThompsonGroupTh, TitsGroupT

Recurrence (32)

Casoratian, DeBruijnSequence, DifferenceRoot, DifferenceRootReduce, Differences, DirichletConvolve, DirichletTransform, DiscreteChirpZTransform, DiscreteConvolve, DiscreteHadamardTransform, DiscreteRatio, DiscreteShift, ExponentialGeneratingFunction, FareySequence, FindGeneratingFunction, FindLinearRecurrence, FindSequenceFunction, FourierSequenceTransform, FunctionSpace, GeneratingFunction, InverseFourierSequenceTransform, InverseZTransform, LinearRecurrence, Ratios, RSolve, RSolveValue, RudinShapiro, ShiftRegisterSequence, SubstitutionSystem, ThueMorse, ValidationLength, ZTransform

Restructuring (31)

AddSides, Apart, ApartSquareFree, ApplySides, Assuming, Assumptions, ComplexExpand, ComplexityFunction, DivideSides, ExcludedForms, ExpandAll, ExpandDenominator, ExpandNumerator, ExpToTrig, FullSimplify, FunctionExpand, MeijerGReduce, MultiplySides, PiecewiseExpand, PowerExpand, Refine, Simplify, SubtractSides, TargetFunctions, TransformationFunctions, TrigExpand, TrigFactor, TrigFactorList, TrigReduce, TrigToExp, $Assumptions

Wavelet (31)

BattleLemarieWavelet, BiorthogonalSplineWavelet, CDFWavelet, CoifletWavelet, ContinuousWaveletData, ContinuousWaveletTransform, DaubechiesWavelet, DGaussianWavelet, DiscreteWaveletData, DiscreteWaveletPacketTransform, DiscreteWaveletTransform, GaborWavelet, HaarWavelet, InverseContinuousWaveletTransform, InverseWaveletTransform, LiftingWaveletTransform, MexicanHatWavelet, MeyerWavelet, MorletWavelet, PaulWavelet, ReverseBiorthogonalSplineWavelet, ShannonWavelet, StationaryWaveletTransform, SymletWavelet, WaveletBestBasis, WaveletMapIndexed, WaveletPhi, WaveletPsi, WaveletScale, WaveletScalogram, WaveletThreshold

Box (30)

AdjustmentBox, BoxData, BoxObject, ButtonBox, ErrorBox, EvaluationBox, FormBox, FractionBox, FrameBox, GridBox, InterpretationBox, ListPickerBox, MakeBoxes, OverscriptBox, ParentBox, RadicalBox, RawBoxes, RowBox, SqrtBox, StripBoxes, StripWrapperBoxes, StyleBox, SubscriptBox, SubsuperscriptBox, SuperscriptBox, TagBox, TemplateBox, ToBoxes, UnderoverscriptBox, UnderscriptBox

Solving (30)

CylindricalDecomposition, DEigensystem, DEigenvalues, DependentVariables, DifferentialRoot, DifferentialRootReduce, DSolve, DSolveValue, Eliminate, GeneratedParameters, GenericCylindricalDecomposition, InverseFunctions, MaxExtraConditions, NBodySimulation, NBodySimulationData, NDEigensystem, NDEigenvalues, NDSolve, NDSolveValue, NSolve, ParametricFunction, ParametricNDSolve, ParametricNDSolveValue, Reduce, SemialgebraicComponentInstances, Solve, SolveAlways, ToRules, VerifySolutions, WhenEvent

Association (29)

AssociateTo, Association, AssociationFormat, AssociationMap, AssociationQ, AssociationThread, Catenate, JoinAcross, Key, KeyCollisionFunction, KeyComplement, KeyDrop, KeyDropFrom, KeyExistsQ, KeyFreeQ, KeyIntersection, KeyMap, KeyMemberQ, Keys, KeySelect, KeySort, KeySortBy, KeyTake, KeyUnion, KeyValueMap, KeyValuePattern, Lookup, Merge, Values

Box Options (28)

AdjustmentBoxOptions, AutoDelete, ButtonBoxOptions, ColumnAlignments, ColumnLines, ColumnsEqual, ColumnSpacings, ColumnWidths, FormBoxOptions, FractionBoxOptions, FrameBoxOptions, InterpretationBoxOptions, ListPickerBoxOptions, OverscriptBoxOptions, RadicalBoxOptions, RowAlignments, RowLines, RowMinHeight, RowsEqual, RowSpacings, SqrtBoxOptions, SubscriptBoxOptions, SubsuperscriptBoxOptions, SuperscriptBoxOptions, TagBoxOptions, TemplateBoxOptions, UnderoverscriptBoxOptions, UnderscriptBoxOptions

Calculus (28)

C, Constants, Convolve, D, Derivative, Direction, Dt, FunctionDomain, FunctionPeriod, FunctionRange, GenerateConditions, GreenFunction, HankelTransform, Integrate, InverseHankelTransform, InverseMellinTransform, InverseRadonTransform, Limit, MaxLimit, MellinConvolve, MellinTransform, MinLimit, NIntegrate, NonConstants, PrincipalValue, RadonTransform, Residue, Wronskian

Graph Boolean Property (28)

AcyclicGraphQ, BipartiteGraphQ, CompleteGraphQ, ConnectedGraphQ, DirectedGraphQ, EdgeCoverQ, EdgeQ, EmptyGraphQ, EulerianGraphQ, GraphQ, HamiltonianGraphQ, IndependentEdgeSetQ, IndependentVertexSetQ, IsomorphicGraphQ, KEdgeConnectedGraphQ, KVertexConnectedGraphQ, LoopFreeGraphQ, MixedGraphQ, MultigraphQ, PathGraphQ, PlanarGraphQ, SimpleGraphQ, TreeGraphQ, UndirectedGraphQ, VertexCoverQ, VertexQ, WeaklyConnectedGraphQ, WeightedGraphQ

Number Theory (28)

ChineseRemainder, CompositeQ, CoprimeQ, Divisible, DivisorSum, ExtendedGCD, FindIntegerNullVector, FrobeniusNumber, FrobeniusSolve, GaussianIntegers, IntegerPartitions, MersennePrimeExponent, MersennePrimeExponentQ, MixedRadix, ModularInverse, NumberCompose, NumberDecompose, NumberExpand, PerfectNumber, PerfectNumberQ, PowerMod, PowerModList, PowersRepresentations, PrimePowerQ, Primes, PrimitiveRootList, RandomPrime, SquaresR

Quantity (28)

CommonUnits, CompatibleUnitQ, DatedUnit, DimensionalCombinations, GeneratedQuantityMagnitudes, IncludeQuantities, IndependentPhysicalQuantity, IndependentUnit, IndependentUnitDimension, KnownUnitQ, MixedMagnitude, MixedRadixQuantity, MixedUnit, NondimensionalizationTransform, PlanckRadiationLaw, Quantity, QuantityArray, QuantityDistribution, QuantityMagnitude, QuantityQ, QuantityUnit, TargetUnits, UnitConvert, UnitDimensions, UnitSimplify, UnitSystem, UnityDimensions, $UnitSystem

Array (27)

ArrayComponents, ArrayFilter, ArrayFlatten, ArrayPad, ArrayResample, ArrayReshape, ArrayRules, Band, CellularAutomaton, CenterArray, ClusteringComponents, ConstantArray, CoordinateBoundingBox, CoordinateBoundingBoxArray, CoordinateBounds, CoordinateBoundsArray, Downsample, FindPeaks, FlattenAt, KarhunenLoeveDecomposition, PadLeft, PadRight, PeakDetect, Subsequences, Total, TuringMachine, Upsample

Molecule (27)

Atom, AtomCoordinates, AtomCount, AtomDiagramCoordinates, AtomList, Bond, BondCount, BondList, BondQ, ConnectedMoleculeComponents, ConnectedMoleculeQ, FindMoleculeSubstructure, IncludeAromaticBonds, IncludeHydrogens, Molecule, MoleculeContainsQ, MoleculeEquivalentQ, MoleculeGraph, MoleculeModify, MoleculePattern, MoleculePlot, MoleculePlot3D, MoleculeProperty, MoleculeQ, MoleculeValue, StereochemistryElements, ValenceErrorHandling

Template (26)

AutoRemove, CombinerFunction, DeliveryFunction, DocumentGenerator, DocumentGeneratorInformation, DocumentGenerators, EpilogFunction, FileTemplate, FileTemplateApply, GeneratedDocumentBinding, GenerateDocument, GeneratorDescription, GeneratorHistoryLength, GeneratorOutputType, InsertionFunction, NotebookTemplate, StringTemplate, TemplateApply, TemplateExpression, TemplateIf, TemplateObject, TemplateSequence, TemplateSlot, TemplateWith, XMLTemplate, $TemplatePath

Tensor (26)

Antisymmetric, Arrays, HodgeDual, Indexed, KroneckerProduct, LeviCivitaTensor, Matrices, StructuredArray, Symmetric, Symmetrize, SymmetrizedArray, SymmetrizedArrayRules, SymmetrizedDependentComponents, SymmetrizedIndependentComponents, SymmetrizedReplacePart, TensorContract, TensorDimensions, TensorExpand, TensorProduct, TensorRank, TensorReduce, TensorSymmetry, TensorTranspose, TensorWedge, Vectors, ZeroSymmetric

Control Object Options (25)

AnimationDirection, AnimationRate, AnimationRepetitions, AnimationRunning, AnimationRunTime, AnimationTimeIndex, Appearance, AppearanceElements, AppearanceRules, AutoAction, AutorunSequencing, Backward, Bookmarks, ContentSize, ContinuousAction, ControlActive, ControlPlacement, ControlsRendering, ControlType, DefaultDuration, Delimiter, DisplayAllSteps, Forward, ForwardBackward, TrackingFunction

List (25)

Accumulate, AnglePath, AnglePath3D, AngleVector, CirclePoints, ContainsAll, ContainsAny, ContainsExactly, ContainsNone, ContainsOnly, FactorInteger, FindDivisions, FindRepeat, FindTransientRepeat, LatticeReduce, ListConvolve, ListCorrelate, ListDeconvolve, RotateLeft, RotateRight, Signature, SpherePoints, Subdivide, Unitize, UnitVector

Front End Options (24)

AutoIndent, AutoItalicWords, AutoMultiplicationSymbol, AutoScroll, AutoSpacing, CodeAssistOptions, ContentPadding, DefaultElement, DelimiterFlashTime, Delimiters, Dividers, Evaluator, FieldHint, FieldHintStyle, FieldMasked, FieldSize, FrontEndDynamicExpression, FrontEndEventActions, GridDefaultElement, InputAliases, Magnification, OutputSizeLimit, RenderingOptions, RulerUnits

Math Function Windows (24)

BartlettHannWindow, BartlettWindow, BlackmanHarrisWindow, BlackmanNuttallWindow, BlackmanWindow, BohmanWindow, CauchyWindow, ConnesWindow, CosineWindow, DirichletWindow, ExactBlackmanWindow, FlatTopWindow, GaussianWindow, HammingWindow, HannPoissonWindow, HannWindow, KaiserBesselWindow, KaiserWindow, LanczosWindow, NuttallWindow, ParzenWindow, PoissonWindow, TukeyWindow, WelchWindow

Time Series (24)

AdjustTimeSeriesForecast, EventSeries, IncludeWindowTimes, MinimumTimeIncrement, MovingMap, RegularlySampledQ, ResamplingMethod, TemporalRegularity, TimeSeries, TimeSeriesAggregate, TimeSeriesForecast, TimeSeriesInsert, TimeSeriesInvertibility, TimeSeriesMap, TimeSeriesMapThread, TimeSeriesModel, TimeSeriesModelFit, TimeSeriesResample, TimeSeriesRescale, TimeSeriesShift, TimeSeriesThread, TimeSeriesWindow, ToInvertibleTimeSeries, ValueDimensions

Gauge (22)

AngularGauge, BulletGauge, ClockGauge, DefaultLabelStyle, GaugeFaceElementFunction, GaugeFaceStyle, GaugeFrameElementFunction, GaugeFrameSize, GaugeFrameStyle, GaugeLabels, GaugeMarkers, GaugeStyle, HorizontalGauge, LabelStyle, ScaleDivisions, ScaleOrigin, ScalePadding, ScaleRanges, ScaleRangeStyle, ThermometerGauge, TicksStyle, VerticalGauge

Min Max (22)

ArgMax, ArgMin, FindArgMax, FindArgMin, FindCurvePath, FindMaximum, FindMaxValue, FindMinimum, FindMinValue, FindShortestTour, KnapsackSolve, LinearProgramming, Maximize, MaxValue, Minimize, MinValue, NArgMax, NArgMin, NMaximize, NMaxValue, NMinimize, NMinValue

Group Theory (21)

CayleyGraph, CycleIndexPolynomial, FiniteAbelianGroupCount, FiniteGroupCount, FiniteGroupData, GroupActionBase, GroupCentralizer, GroupElementFromWord, GroupElementPosition, GroupElementQ, GroupElements, GroupElementToWord, GroupGenerators, GroupMultiplicationTable, GroupOrbits, GroupOrder, GroupSetwiseStabilizer, GroupStabilizer, GroupStabilizerChain, PermutationGroup, RightCosetRepresentative

Link (21)

DisplayPacket, Install, LinkActivate, LinkClose, LinkConnect, LinkCreate, LinkInterrupt, LinkLaunch, LinkObject, LinkPatterns, LinkProtocol, LinkRead, LinkReadyQ, Links, LinkWrite, SourceLink, Uninstall, $CurrentLink, $Linked, $ParentLink, $SourceLink

Logic (21)

AxiomaticTheory, Conjunction, Disjunction, Equivalent, Exists, FindEquationalProof, FindInstance, ForAll, Implies, LogicalExpand, Majority, Nand, ProofObject, Resolve, SatisfiabilityCount, SatisfiabilityInstances, SatisfiableQ, TautologyQ, UnateQ, Xnor, Xor

Search (21)

AddToSearchIndex, ContentFieldOptions, ContentLocationFunction, ContentObject, CreateSearchIndex, DeleteSearchIndex, DocumentWeightingRules, FindTextualAnswer, MaxWordGap, SearchAdjustment, SearchIndexObject, SearchIndices, SearchQueryString, SearchResultObject, TextSearch, TextSearchReport, UpdateSearchIndex, WebAudioSearch, WebImageSearch, WebSearch, WikipediaSearch

Boolean (20)

AllTrue, AnyTrue, Boole, BooleanConsecutiveFunction, BooleanConvert, BooleanCountingFunction, BooleanFunction, BooleanGraph, BooleanMaxterms, BooleanMinimize, BooleanMinterms, BooleanQ, Booleans, BooleanTable, BooleanVariables, ConditionalExpression, DiscreteIndicator, NoneTrue, TrueQ, Undefined

Compile (20)

CompilationOptions, CompilationTarget, Compile, Compiled, CompiledCodeFunction, CompiledFunction, CompilerOptions, FunctionCompile, FunctionCompileExport, FunctionCompileExportByteArray, FunctionCompileExportLibrary, FunctionCompileExportString, KernelFunction, Parallelization, RuntimeAttributes, RuntimeOptions, TargetSystem, Typed, TypeSpecifier, $CompilationTarget

Directory (20)

CopyDirectory, CreateDirectory, CreateIntermediateDirectories, DeleteDirectory, Directory, DirectoryName, DirectoryQ, DirectoryStack, ParentDirectory, RenameDirectory, ResetDirectory, SetDirectory, $BaseDirectory, $HomeDirectory, $InitialDirectory, $InstallationDirectory, $RootDirectory, $TemporaryDirectory, $UserBaseDirectory, $UserDocumentsDirectory

Extraction (20)

Commonest, Delete, DeleteDuplicates, DeleteDuplicatesBy, Drop, MaximalBy, MinimalBy, MinMax, Pick, RankedMax, RankedMin, SelectFirst, TakeDrop, TakeLargest, TakeLargestBy, TakeList, TakeSmallest, TakeSmallestBy, TakeWhile, UpTo

Fitting (20)

ConfidenceLevel, CovarianceEstimatorFunction, DesignMatrix, DispersionEstimatorFunction, ExponentialFamily, FindFormula, FitRegularization, FittedModel, GeneralizedLinearModelFit, IncludeConstantBasis, LeastSquares, LinearModelFit, LinearOffsetFunction, LinkFunction, LogitModelFit, NominalVariables, NonlinearModelFit, ProbitModelFit, VarianceEstimatorFunction, Weights

Geometric Transform (20)

AffineTransform, EulerAngles, EulerMatrix, FindGeometricTransform, GeometricTransformation, LinearFractionalTransform, ReflectionMatrix, ReflectionTransform, RescalingTransform, RollPitchYawAngles, RollPitchYawMatrix, RotationMatrix, RotationTransform, ScalingMatrix, ScalingTransform, ShearingMatrix, ShearingTransform, TransformationFunction, TransformationMatrix, TranslationTransform

Numerics Precision (20)

Accuracy, AccuracyGoal, Chop, ExactNumberQ, InexactNumberQ, MachineNumberQ, MachinePrecision, Precision, SetAccuracy, SetPrecision, $MachineEpsilon, $MachinePrecision, $MaxExtraPrecision, $MaxMachineNumber, $MaxNumber, $MaxPrecision, $MinMachineNumber, $MinNumber, $MinPrecision, $PerformanceGoal

Channel (19)

Anonymous, ChannelBase, ChannelBrokerAction, ChannelDatabin, ChannelListen, ChannelListener, ChannelListeners, ChannelObject, ChannelPreSendFunction, ChannelReceiverFunction, ChannelSend, ChannelSubscribers, CreateChannel, DeleteChannel, FindChannels, RemoveChannelListener, RemoveChannelSubscribers, $AllowExternalChannelFunctions, $ChannelBase

Matrix (19)

ArrayPlot, BoxMatrix, CrossMatrix, DiagonalMatrix, DiamondMatrix, DiskMatrix, FourierDCTMatrix, FourierDSTMatrix, FourierMatrix, GaborMatrix, GaussianMatrix, HadamardMatrix, HankelMatrix, HilbertMatrix, MatrixPlot, PauliMatrix, SavitzkyGolayMatrix, ShenCastanMatrix, ToeplitzMatrix

Named Graph (19)

ButterflyGraph, CirculantGraph, CompleteGraph, CompleteKaryTree, CycleGraph, DeBruijnGraph, GridGraph, HararyGraph, HypercubeGraph, KaryTree, KirchhoffGraph, KnightTourGraph, LineGraph, PathGraph, PetersenGraph, StarGraph, TreeGraph, TuranGraph, WheelGraph

Packet (19)

BeginDialogPacket, CallPacket, DisplayEndPacket, EndDialogPacket, EnterExpressionPacket, EnterTextPacket, EvaluatePacket, InputNamePacket, InputPacket, InputStringPacket, MenuPacket, MessagePacket, OutputNamePacket, ReturnExpressionPacket, ReturnPacket, ReturnTextPacket, StationaryWaveletPacketTransform, SyntaxPacket, TextPacket

Device (18)

DeviceClose, DeviceConfigure, DeviceExecute, DeviceExecuteAsynchronous, DeviceObject, DeviceOpen, DeviceRead, DeviceReadBuffer, DeviceReadLatest, DeviceReadList, DeviceReadTimeSeries, Devices, DeviceStreams, DeviceWrite, DeviceWriteBuffer, FindDevices, ImagingDevice, $ImagingDevice

Messages And Printing (18)

Assert, MessageList, MessageName, Messages, Off, On, PrintTemporary, Quiet, Shallow, Short, Skeleton, $AssertFunction, $Language, $MessageGroups, $MessageList, $MessagePrePrint, $Messages, $NewMessage

Binary Data (17)

BaseDecode, BaseEncode, BinaryDeserialize, BinaryRead, BinaryReadList, BinarySerialize, BinaryWrite, ByteArray, ByteArrayFormat, ByteArrayQ, ByteArrayToString, ByteOrdering, ExportByteArray, ImportByteArray, ReadByteArray, StringToByteArray, $ByteOrdering

Debug (17)

Echo, EchoFunction, MatchLocalNames, Stack, StackBegin, StackComplete, StackInhibit, Trace, TraceAbove, TraceBackward, TraceDepth, TraceForward, TraceOff, TraceOn, TraceOriginal, TracePrint, TraceScan

Discrete Fourier (17)

Cepstrogram, CepstrogramArray, CepstrumArray, FourierDCT, FourierDST, FourierParameters, InverseFourier, InverseShortTimeFourier, InverseSpectrogram, ListFourierSequenceTransform, ListZTransform, Periodogram, PeriodogramArray, ShortTimeFourier, ShortTimeFourierData, Spectrogram, SpectrogramArray

Histogram (17)

BinCounts, BinLists, DateHistogram, DateReduction, DensityHistogram, Histogram, Histogram3D, HistogramDistribution, HistogramList, HistogramTransform, HistogramTransformInterpolation, ImageHistogram, PairedHistogram, PairedSmoothHistogram, SmoothDensityHistogram, SmoothHistogram, SmoothHistogram3D

Numeric (17)

DifferenceQuotient, DiscreteVariables, EvaluationMonitor, Gradient, MaxIterations, MaxRecursion, MaxStepFraction, MaxSteps, MaxStepSize, Method, NormFunction, PerformanceGoal, PrecisionGoal, StartingStepSize, StepMonitor, Tolerance, WorkingPrecision

Permutation (17)

Cycles, FindPermutation, InversePermutation, PermutationCycles, PermutationCyclesQ, PermutationLength, PermutationList, PermutationListQ, PermutationMax, PermutationMin, PermutationOrder, PermutationPower, PermutationProduct, PermutationReplace, PermutationSupport, Permute, RandomPermutation

Symbol Information (17)

Constant, Flat, Locked, NHoldAll, NHoldFirst, NHoldRest, NumericFunction, OneIdentity, OptionValue, Orderless, Protected, ReadProtected, SequenceHold, SetSystemOptions, Stub, SystemOptions, Temporary

System Model (17)

ConnectSystemModelComponents, CreateDataSystemModel, CreateSystemModel, FindSystemModelEquilibrium, SetSystemModel, SystemModel, SystemModeler, SystemModelExamples, SystemModelLinearize, SystemModelParametricSimulate, SystemModelPlot, SystemModelProgressReporting, SystemModelReliability, SystemModels, SystemModelSimulate, SystemModelSimulateSensitivity, SystemModelSimulationData

Cryptography (16)

Decrypt, DecryptFile, DerivedKey, DigitalSignature, Encrypt, EncryptedObject, EncryptFile, GenerateAsymmetricKeyPair, GenerateDerivedKey, GenerateDigitalSignature, GenerateSymmetricKey, PrivateKey, PublicKey, SymmetricKey, VerifyDerivedKey, VerifyDigitalSignature

Structural (16)

GroupBy, Groupings, Heads, Insert, Nothing, Order, Ordering, OrderingBy, Position, PositionIndex, ReverseSort, ReverseSortBy, Riffle, SortedBy, Split, SplitBy

Time Memory (16)

AbsoluteTiming, MaxMemoryUsed, MemoryAvailable, MemoryConstrained, MemoryConstraint, MemoryInUse, Pause, RepeatedTiming, SessionTime, Share, TimeConstrained, TimeConstraint, TimeGoal, TimeUsed, $TimedOut, $TimeUnit

Code Action (15)

BlockMap, FixedPoint, FixedPointList, FoldPair, FoldPairList, MapAll, MapIndexed, NestList, NestWhile, NestWhileList, Operate, SequenceFold, SequenceFoldList, SubsetMap, Through

Continuous Fourier (15)

FourierCoefficient, FourierCosCoefficient, FourierCosSeries, FourierCosTransform, FourierSeries, FourierSinCoefficient, FourierSinSeries, FourierSinTransform, FourierTransform, FourierTrigSeries, InverseFourierCosTransform, InverseFourierSinTransform, InverseFourierTransform, InverseLaplaceTransform, LaplaceTransform

Domain (15)

Element, NegativeIntegers, NegativeRationals, NegativeReals, NonNegativeIntegers, NonNegativeRationals, NonNegativeReals, NonPositiveIntegers, NonPositiveRationals, NonPositiveReals, NotElement, PositiveIntegers, PositiveRationals, PositiveReals, Rationals

External Process (15)

KillProcess, ProcessConnection, ProcessDirectory, ProcessEnvironment, Processes, ProcessInformation, ProcessObject, ProcessStatus, RemoteAuthorizationCaching, RemoteConnect, RemoteConnectionObject, RemoteRun, RemoteRunProcess, RunProcess, StartProcess

Integer (15)

DigitCount, FromCharacterCode, FromDigits, FromRomanNumeral, IntegerDigits, IntegerExponent, IntegerLength, IntegerName, IntegerPart, IntegerReverse, Integers, IntegerString, QuotientRemainder, RealDigits, RomanNumeral

Interpreter (15)

DelimitedSequence, ExcludedLines, GeoLocation, HeaderLines, ImportOptions, Interpreter, MissingDataRules, RectangularRepeatingElement, RepeatingElement, Restricted, SemanticImport, SemanticImportString, SemanticInterpretation, SquareRepeatingElement, $InterpreterTypes

Socket (15)

NetworkPacketCapture, NetworkPacketRecording, NetworkPacketTrace, SocketConnect, SocketListen, SocketListener, SocketObject, SocketOpen, SocketReadMessage, SocketReadyQ, Sockets, SocketWaitAll, SocketWaitNext, $DefaultNetworkInterface, $NetworkInterfaces

Vector Calculus (15)

ArcCurvature, ArcLength, CoordinateChartData, CoordinateTransform, CoordinateTransformData, Curl, Div, FrenetSerretSystem, FromPolarCoordinates, FromSphericalCoordinates, Grad, Laplacian, ToPolarCoordinates, ToSphericalCoordinates, TransformedField

Blockchain (14)

BlockchainAddressData, BlockchainBase, BlockchainBlockData, BlockchainContractValue, BlockchainData, BlockchainGet, BlockchainKeyEncode, BlockchainPut, BlockchainTokenData, BlockchainTransaction, BlockchainTransactionData, BlockchainTransactionSign, BlockchainTransactionSubmit, $BlockchainBase

Dynamic (14)

AbsoluteCurrentValue, Deinitialization, Dynamic, DynamicEvaluationTimeout, DynamicModule, DynamicModuleValues, DynamicSetting, DynamicWrapper, FinishDynamic, MouseAnnotation, MouseAppearance, Mouseover, NotebookDynamicExpression, $DynamicEvaluation

Library Link (14)

ConnectLibraryCallbackFunction, CreateManagedLibraryExpression, FindLibrary, LibraryDataType, LibraryFunction, LibraryFunctionError, LibraryFunctionInformation, LibraryFunctionLoad, LibraryFunctionUnload, LibraryLoad, LibraryUnload, ManagedLibraryExpressionID, ManagedLibraryExpressionQ, $LibraryPath

Sound (14)

Beep, EmitSound, ListPlay, Play, PlayRange, SampleDepth, SampledSoundFunction, SampledSoundList, SampleRate, Sound, SoundNote, SoundVolume, Speak, $SoundDisplayFunction

Dialog (13)

AuthenticationDialog, ChoiceDialog, CreateDialog, Dialog, DialogInput, DialogNotebook, DialogProlog, DialogReturn, DialogSymbols, MessageDialog, Modal, SystemDialogInput, TraceDialog

Environment (13)

ClearSystemCache, Exit, In, InString, Quit, Update, $HistoryLength, $IterationLimit, $Post, $Pre, $PrePrint, $PreRead, $RecursionLimit

Signal Processing (13)

BandpassFilter, BandstopFilter, BesselFilterModel, BiquadraticFilterModel, ButterworthFilterModel, Chebyshev1FilterModel, Chebyshev2FilterModel, EllipticFilterModel, EquirippleFilterKernel, FrequencySamplingFilterKernel, KalmanFilter, LeastSquaresFilterKernel, ResamplingAlgorithmData

Astronomy (12)

AltitudeMethod, CelestialSystem, EclipseType, LunarEclipse, MoonPhase, MoonPosition, SiderealTime, SolarEclipse, SunPosition, Sunrise, Sunset, TimeDirection

Geo Graphics Primitive (12)

DayHemisphere, DayNightTerminator, GeoBoundsRegion, GeoCircle, GeoDisk, GeoHemisphere, GeoHemisphereBoundary, GeoMarker, GeoPath, GeoVisibleRegion, GeoVisibleRegionBoundary, NightHemisphere

Root (12)

Cubics, FindRoot, Modulus, NRoots, Quartics, Root, RootOfUnityQ, RootReduce, Roots, RootSum, ToRadicals, $MaxRootDegree

Symbol Assignment (12)

AddTo, AppendTo, Decrement, DivideBy, Increment, PreDecrement, PreIncrement, PrependTo, Protect, SubtractFrom, TimesBy, Unprotect

Algebraic (11)

AlgebraicIntegerQ, AlgebraicNumber, AlgebraicNumberDenominator, AlgebraicNumberNorm, AlgebraicNumberPolynomial, AlgebraicNumberTrace, Algebraics, AlgebraicUnitQ, IsolatingInterval, MinimalPolynomial, RootApproximant

Alignment (11)

Above, Alignment, AlignmentPoint, Baseline, BaselinePosition, Below, Bottom, Center, Left, Right, Top

Asymptotic (11)

AsymptoticDSolveValue, AsymptoticEqual, AsymptoticEquivalent, AsymptoticGreater, AsymptoticGreaterEqual, AsymptoticIntegrate, AsymptoticLess, AsymptoticLessEqual, AsymptoticRSolveValue, AsymptoticSolve, AsymptoticSum

Button (11)

Button, ButtonBar, ButtonData, ButtonFunction, ButtonMinHeight, ButtonNotebook, ButtonSource, CancelButton, ChoiceButtons, DefaultButton, PasteButton

Code Interruption (11)

Abort, AbortProtect, Catch, CheckAbort, Failure, FailureQ, Interrupt, Success, Throw, $Aborted, $Failed

Discrete Calculus (11)

DifferenceDelta, DiscreteLimit, DiscreteMaxLimit, DiscreteMinLimit, NProduct, NSum, Product, Regularization, Sum, SumConvergence, VerifyConvergence

Finance (11)

Annuity, AnnuityDue, Cashflow, CurrencyConvert, EffectiveInterest, FinancialBond, FinancialDerivative, FinancialIndicator, InflationAdjust, InflationMethod, TimeValue

Geometric Scene (11)

AngleBisector, CircleThrough, FindGeometricConjectures, GeometricAssertion, Midpoint, PerpendicularBisector, RandomInstance, TriangleCenter, TriangleConstruct, TriangleMeasurement, UnconstrainedParameters

Pattern (11)

Alternatives, Except, Longest, Optional, OptionsPattern, OrderlessPatternSequence, PatternSequence, PatternTest, Repeated, RepeatedNull, Shortest

Resource (11)

DefineResourceFunction, PublisherID, ResourceData, ResourceFunction, ResourceObject, ResourceRegister, ResourceRemove, ResourceSearch, ResourceSubmit, ResourceUpdate, $PublisherID

Service (11)

EmbeddedService, SaveConnection, ServiceConnect, ServiceDisconnect, ServiceExecute, ServiceObject, ServiceRequest, ServiceSubmit, $EmbeddableServices, $ServiceCreditsAvailable, $Services

Annotation (10)

Annotation, AnnotationDelete, AnnotationRules, DefaultTooltipStyle, Monitor, ProgressIndicator, StatusArea, Tooltip, TooltipDelay, TooltipStyle

Bit (10)

BitAnd, BitClear, BitGet, BitLength, BitNot, BitOr, BitSet, BitShiftLeft, BitShiftRight, BitXor

Code Evaluation (10)

Activate, Defer, EvaluationData, HoldAllComplete, HoldComplete, IgnoringInactive, Inactivate, Inactive, ReleaseHold, Unevaluated

External Session (10)

ExternalEvaluate, ExternalFunction, ExternalObject, ExternalSessionObject, ExternalSessions, ExternalValue, FindExternalEvaluators, RegisterExternalEvaluator, StartExternalSession, UnregisterExternalEvaluator

Initialization (10)

EvaluationEnvironment, InitializationObjects, InitializationValue, Initialize, LocalSubmit, ValuePreprocessingFunction, $Initialization, $InitializationContexts, $NoValue, $PreInitialization

Legend (10)

BarLegend, LegendFunction, LegendLabel, LegendLayout, LegendMargins, LegendMarkers, LegendMarkerSize, LineLegend, PointLegend, SwatchLegend

Number Field (10)

Extension, NumberFieldClassNumber, NumberFieldDiscriminant, NumberFieldFundamentalUnits, NumberFieldIntegralBasis, NumberFieldNormRepresentatives, NumberFieldRegulator, NumberFieldRootsOfUnity, NumberFieldSignature, ToNumberField

Optimization (10)

ConicOptimization, LinearFractionalOptimization, LinearOptimization, QuadraticOptimization, SecondOrderConeOptimization, SemidefiniteOptimization, VectorGreater, VectorGreaterEqual, VectorLess, VectorLessEqual

Task (10)

SessionSubmit, TaskAbort, TaskExecute, TaskObject, TaskRemove, TaskResume, Tasks, TaskSuspend, TaskWait, $CurrentTask

Ask (9)

Ask, AskAppend, AskConfirm, AskDisplay, AskedQ, AskedValue, AskFunction, AskState, AskTemplateDisplay

Code Flow (9)

Break, Continue, Goto, Label, LengthWhile, Once, Reap, Scan, Sow

Expression Testing (9)

Between, DuplicateFreeQ, EqualTo, GreaterEqualThan, GreaterThan, LessEqualThan, LessThan, Unequal, UnequalTo

Font (9)

FontColor, FontFamily, FontSize, FontSlant, FontSubstitutions, FontTracking, FontVariations, FontWeight, $FontFamilies

Fractal (9)

CantorStaircase, EscapeRadius, JuliaSetBoettcher, JuliaSetIterationCount, JuliaSetPoints, MandelbrotSetBoettcher, MandelbrotSetDistance, MandelbrotSetIterationCount, MandelbrotSetMemberQ

Grammar (9)

AllowLooseGrammar, AnyOrder, FixedOrder, GrammarApply, GrammarRules, GrammarToken, IgnoreDiacritics, NoWhitespace, OptionalElement

Persistent Object (9)

ExpirationDate, MergingFunction, PersistenceLocation, PersistenceTime, PersistentObject, PersistentObjects, PersistentValue, $PersistenceBase, $PersistencePath

Dataset (8)

Dataset, DeleteMissing, FailureAction, Missing, MissingBehavior, MissingQ, PartBehavior, Query

Expression Size (8)

ByteCount, Count, CountDistinct, CountDistinctBy, Counts, CountsBy, Entropy, LeafCount

Formatting (8)

DisableFormatting, Framed, Labeled, Legended, Multicolumn, Pane, Panel, TextGrid

Graph Distribution (8)

BarabasiAlbertGraphDistribution, BernoulliGraphDistribution, DegreeGraphDistribution, GraphPropertyDistribution, PriceGraphDistribution, SpatialGraphDistribution, UniformGraphDistribution, WattsStrogatzGraphDistribution

Page (8)

GroupPageBreakWithin, PageBreakAbove, PageBreakBelow, PageBreakWithin, PageFooters, PageHeaders, PageWidth, ShowPageBreaks

Web Session (8)

StartWebSession, WebElementObject, WebExecute, WebImage, WebSessionObject, WebSessions, WebWindowObject, $CurrentWebSession

Databin (7)

CopyDatabin, CreateDatabin, Databin, DatabinAdd, DatabinRemove, Databins, DatabinUpload

Interpolation (7)

FunctionInterpolation, InterpolatingFunction, InterpolatingPolynomial, Interpolation, InterpolationOrder, InterpolationPoints, ListInterpolation

Number (7)

Negative, NonNegative, NonPositive, NumericalOrder, NumericalSort, Positive, PossibleZeroQ

Quantity Variable (7)

ExcludedPhysicalQuantities, QuantityVariable, QuantityVariableCanonicalUnit, QuantityVariableDimensions, QuantityVariableIdentifier, QuantityVariablePhysicalQuantity, RequiredPhysicalQuantities

Series (7)

ComposeSeries, InverseSeries, O, PadeApproximant, Series, SeriesCoefficient, SeriesData

Symbol Value (7)

DownValues, FullDefinition, Information, OwnValues, SyntaxInformation, UpValues, ValueQ

Viewer (7)

FlipView, GalleryView, OpenerView, Pagination, PopupView, SlideView, TabView

Wolfram Alpha (7)

Asynchronous, ExcludePods, IncludePods, InputAssumptions, PodStates, PodWidth, WolframAlpha

Controller (6)

ControllerInformation, ControllerLinking, ControllerManipulate, ControllerMethod, ControllerPath, ControllerState

Local Object (6)

LocalObject, LocalObjects, LocalSymbol, $DefaultLocalBase, $LocalBase, $LocalSymbolBase

Numeric Constant (6)

Catalan, EulerGamma, Glaisher, GoldenAngle, GoldenRatio, Khinchin

Slider (6)

ColorSlider, IntervalSlider, MinIntervalSize, Slider, Slider2D, VerticalSlider

Test (6)

TestID, TestReport, TestReportObject, TestResultObject, VerificationTest, $TestFileName

Text String (6)

BooleanStrings, ElidedForms, ListFormat, MissingString, TextString, TimeFormat

Travel (6)

TravelDirections, TravelDirectionsData, TravelDistance, TravelDistanceList, TravelMethod, TravelTime

Continued Fraction (5)

ContinuedFraction, ContinuedFractionK, Convergents, FromContinuedFraction, QuadraticIrrationalQ

Infinity (5)

ComplexInfinity, DirectedInfinity, Indeterminate, Overflow, Underflow

Menu (5)

DefaultMenuStyle, MenuCommandKey, MenuSortingValue, MenuStyle, MenuView

Package (5)

BeginPackage, DeclarePackage, EndPackage, Needs, $Packages

Raw Expression (5)

Hash, NumericArray, NumericArrayQ, NumericArrayType, RawData

Set (5)

AnySubset, DisjointQ, IntersectingQ, SameTest, SubsetQ

Symbol Context (5)

Begin, Context, End, $Context, $ContextPath

Uncertainty (5)

Around, AroundReplace, ComputeUncertainty, MeanAround, VectorAround

Function (4)

ComposeList, Construct, Curry, InverseFunction

Real (4)

MantissaExponent, Rationalize, RealExponent, Reals

Rule (4)

Dispatch, ReplaceList, ReplaceRepeated, TwoWayRule

Scheduled Task (4)

ContinuousTask, IncludeGeneratorTasks, RestartInterval, ScheduledTask

Angle (3)

DMSList, DMSString, FromDMS

Asynchronous Task (3)

HandlerFunctions, HandlerFunctionsKeys, NotificationFunction

Complex (3)

AbsArg, Complexes, ReIm

Front End Execution (3)

FrontEndExecute, FrontEndToken, FrontEndTokenExecute

Interval (3)

IntervalIntersection, IntervalMemberQ, IntervalUnion

Special (3)

After, Before, Full

(3)

Remove, SymbolName, Unique

Autocomplete (2)

Autocomplete, AutocompletionFunction

(2)

AlternateImage, CDFDeploy

Global Options (2)

FindSettings, Language

Palette (2)

CreatePalette, PaletteNotebook

Rational (2)

MixedFractionParts, NumeratorDenominator

Module (1)

BlockRandom

Option (1)

AbsoluteOptions

  • Огромные встроенные базы данных и наборы алгоритмов: Entity (доступ к встроенным данным по самым разным областям: от фильмов до аэропортов и музыки), репозиторий данных (Wolfram Data Repository), репозиторий нейронных сетей (Wolfram Neural Net Repository), репозиторий готовых функций от пользователей (Wolfram Function Repository) и многое другое.
  • Высокая степень интеграции компонент. Возможность использовать совершенно разные области знаний совместно, для решения одной сложной задачи. Вы можете почитать мои статьи и переводы, чтобы убедиться в этом.
  • Сверх-быстрый цикл разработки: создание и внедрение сложного приложения реально сделать (часто) за день, для рельно очень сложных задач — за неделю. Посмотрите записи выступлений:
    Разработка больших приложений в Mathematica | Леонид Шифрин | Конференция Wolfram Технологии 2014

    Роман Осипов | Решение срочных разноплановых задач с помощью Wolfram Language

    Осипов Роман | Разработка практических приложений на основе Wolfram технологий

  • Простое создание облачных сервисов за считанные минуты — API, формы ввода, хранилища данных, сайты, интерактивы. Все это делается из любой системы, в которой работает Wolfram Language. Все объекты можно использовать как непосредственно, так и встраивая их в свой сайт. Подробнее можно посмотреть в видео:
    Подробный обзор Wolfram Programming Cloud

    (видео устарело, Wolfram Cloud сейчас намного круче, в чем вы можете убедиться лично — в скором времени я планирую рассказать о нем подробнее).

  • Короткий и выразительный код. Код в Wolfram Language по сути самый короткий среди языков программирования — см. статью "Розеттский код: измеряем длину кода в огромном количестве языков программирования, изучаем близость языков между собой".
  • Символьная парадигма, которая дает возможность решать задачи и разрабатывать код на высоком уровне абстракции. При этом язык Wolfram Language — что называется «Problem-oriented» — на нем можно программировать буквально «как думаешь», в парадигме, естественной для решаемой задачи. Подробнее см. запись
    Символьные возможности языка Wolfram | Роман Осипов | Конференция Wolfram Технологии 2014

  • Очень высокая степень интерактивности и визуализации результатов. Тут важно отметить, что можно налету создавать динамические объекты (Manipulate, Dynamic, DynamicModule, EventHandler) или вычислять все непосредственно в документе, а сам документ при этом по сути представляет собой интерактивную книгу (эта статья, как я отмечал выше, тоже создана непосредственно в главном средстве разработки на языке Wolfram Language — системе Mathematica).
  • Поддержка современных парадигм программирования:
    • процедурное программирование — как в Fortran, C, Matlab;
    • функциональное программирование — как в Lisp, Haskell, Ocaml/F#, Scala, Clojure;
    • логическое программирование — как в Prolog;
    • программирование на массивах и структурных операциях — как в APL, Matlab;
    • объектно-ориентированное программирование — доступно пока в виде отдельного расширения.

Вспомогательные конструкции

ClearAll[timing];

SetAttributes[timing, HoldAll];

timing[expr_]:=(ClearSystemCache[];

AbsoluteTiming[expr]);

ClearAll[compareTiming];

SetAttributes[compareTiming, HoldAll];

compareTiming[expr_List, OptionsPattern[{"OrderQ"->True}]]:=Module[{t, v, c1, c2, holdExpr, colorF, order, rescale}, 
colorF=Blend[{ColorSwatchGraphicsFontCapHeightRGBColor[19255, 167255, 107255]DeployedRGBColorValueSelectorClosingActionsSelectionDepartureParentChangedEvaluatorQuitPreemptive, ColorSwatchGraphicsFontCapHeightRGBColor[1, 101255, 47255]DeployedRGBColorValueSelectorClosingActionsSelectionDepartureParentChangedEvaluatorQuitPreemptive}, #]&;

holdExpr=ReleaseHold@Map[HoldForm, HoldForm@expr, {2}];

{t, v}=Transpose[timing[ReleaseHold[#]]&/@holdExpr];

order=If[OptionValue["OrderQ"], Reverse[Ordering[t]], Range[1, Length[expr]]];

t=t[[order]];

rescale=Evaluate[Rescale[#, MinMax[t], {0, 1}]]&;

v=v[[order]];

holdExpr=holdExpr[[order]];

If[Length[DeleteDuplicates[v]]>1, Echo["Возможно неодинаковый результат работы программ"]];

Framed[Grid[{{Style[#, Bold]&@"Сравнение скорости работы программ на языке Wolfram Language"}, 
{Grid[{{"Код", "Время,  с"}}~Join~Table[{Style[holdExpr[[ind]], "Input", Background->Transparent], t[[ind]]}, {ind, 1, Length[expr]}], Alignment->{{Left, Center}, {Center, Center}}, Dividers->White, Background->{None, {LightGray}~Join~(colorF@*rescale/@t)}, ItemSize->{{30, 8}, Automatic}]}, 
If[Length[expr]==2, {Row[{"Код ускорен в ", Style[Round[Max[t]/Min[t], 1/100]//N, Bold], " раз"}]}, {Row[{"Максимальное ускорение кода ", Style[Round[Max[t]/Min[t], 1/100]//N, Bold], " раз"}]}], 
{Graphics[
Table[{Opacity[0.6], colorF@*rescale@t[[ind]], Rectangle[{0, 1-ind-0.2(ind-1)}, {t[[ind]], 2-ind-0.2(ind-1)}]}, {ind, 1, Length[expr]}], 
ImageSize->{500, Automatic}, PlotRange->{{0, Max[t]}, {1.2(1-Length[expr]), 1}}, AspectRatio->1/(9-Length[expr]/2), 
Axes->False, Ticks->{Automatic, None}, FrameTicks->{All, None}, 
GridLines->{Automatic, None}, Background->White, PlotRangePadding->0, Frame->True, FrameLabel->{{None, None}, {"Время,  с", None}}]}
}, 
ItemStyle->Directive[FontSize -> 14, FontFamily->"Open Sans Light"]], Background->White, FrameStyle->None]];

Как начать работу? Бесплатно)

Не многие знают, что можно начать работу с движком Wolfram и языком Wolfram Language совершенно бесплатно. Ниже перечислены ключевые варианты:

  • Wolfram Cloudбесплатный план (все функции доступны, ограничения только на время вычислений и запросы к базам данных).
  • Wolfram Programming Lab — бесплатная лаборатория программирования Wolfram для изучения языка Wolfram Language. Подробнее см. перевод на Хабре.
  • Wolfram Engine — бесплатная библиотека для разработчиков программного обеспечения. Подробнее см. перевод на Хабре.
  • Raspberry Pi — система Mathematica поставляется бесплатно на каждой версии этого замечательного компьютера. Подробнее...

P.S.

На моем канале YouTube есть две важные рубрики: "КиЯ — Коротко и Ясно" (выходят ежедневно) и Вебинары (еженедельно). Подписывайтесь на канал, он будет полезен каждому, кто работает с языком Wolfram Language!

Краеугольные камни уничтожения медленного кода в Wolfram Language: ускоряем код в десятки, сотни и тысячи раз - 37

Для сотрудничества — пишите личное сообщение на Хабре или в мою группу ВКонтакте.
Регистрация на новые курсы. Готовый онлайн курс.

Автор: OsipovRoman

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js