{"id":326269,"date":"2021-07-11T15:00:18","date_gmt":"2021-07-11T15:00:18","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=326269"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=326269","title":{"rendered":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 AngouriMath 1.3"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438: <a href=\"https:\/\/habr.com\/ru\/post\/565996\/\" rel=\"noopener noreferrer nofollow\">\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b<\/a><\/p>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 AngouriMath<\/h2>\n<p>AngouriMath &#8212; \u044d\u0442\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f open-source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u044b, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b .NET \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0430\u044f \u0432 \u043d\u0435\u0439. \u0420\u0430\u0431\u043e\u0442\u0430 \u043d\u0430\u0434 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0432\u0435\u0434\u0435\u0442\u0441\u044f \u0441 \u043a\u043e\u043d\u0446\u0430 2019 \u0433\u043e\u0434\u0430. \u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043a\u0440\u0443\u043f\u043d\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u0431\u044b\u043b \u0432\u044b\u043f\u0443\u0449\u0435\u043d 2 \u043c\u0430\u0440\u0442\u0430, \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c <a href=\"https:\/\/habr.com\/en\/post\/545436\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a>.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0437\u0430 4 \u043c\u0435\u0441\u044f\u0446\u0430!<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/321\/93f\/579\/32193f57952810539897ea15a7552ae1.png\" width=\"1560\" height=\"842\"><figcaption><\/figcaption><\/figure>\n<p>AngouriMath \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0434\u043b\u044f C#, F#, \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0440\u0435\u0434 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Jupyter) \u0438 \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u0434\u043b\u044f C++. \u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0441\u0440\u0435\u0434, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"182\" width=\"182\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"122\" width=\"122\">\n<p>C#<\/p>\n<\/td>\n<td>\n<p>F#<\/p>\n<\/td>\n<td>\n<p>Interactive<\/p>\n<\/td>\n<td>\n<p>C++<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"182\" width=\"182\">\n<p>AngouriMath<\/p>\n<\/td>\n<td data-colwidth=\"122\" width=\"122\">\n<p>\u2713  <\/p>\n<\/td>\n<td>\n<p>\u2713  <\/p>\n<\/td>\n<td>\n<p>\u2713  <\/p>\n<\/td>\n<td>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"182\" width=\"182\">\n<p>AngouriMath.FSharp<\/p>\n<\/td>\n<td data-colwidth=\"122\" width=\"122\">\n<\/td>\n<td>\n<p>\u2713  <\/p>\n<\/td>\n<td>\n<p>\u2713  <\/p>\n<\/td>\n<td>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"182\" width=\"182\">\n<p>AngouriMath.Interactive<\/p>\n<\/td>\n<td data-colwidth=\"122\" width=\"122\">\n<\/td>\n<td>\n<\/td>\n<td>\n<p>\u2713  <\/p>\n<\/td>\n<td>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"182\" width=\"182\">\n<p>AngouriMath.CPP<\/p>\n<\/td>\n<td data-colwidth=\"122\" width=\"122\">\n<\/td>\n<td>\n<\/td>\n<td>\n<\/td>\n<td>\n<p align=\"center\">\u2713  <\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2>\u041c\u0430\u0442\u0440\u0438\u0446\u044b<\/h2>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u043c\u0438 &#8212; \u043e\u0434\u043d\u043e \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f API \u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0435\u043d\u0437\u043e\u0440\u043e\u0432 (\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u0442) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u044b: <code>Entity.Matrix<\/code>. \u041f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u044b, \u043d\u043e \u0443 \u043d\u0438\u0445 \u043d\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u0432\u0435\u043a\u0442\u043e\u0440 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0441 \u043e\u0434\u043d\u0438\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u043c \u0438\u0437 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. <\/p>\n<p> \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"cs\">Entity a = \"[1, 2, 3]\"; \/\/ a - \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u0437 \u0442\u0440\u0451\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/code><\/pre>\n<pre><code class=\"cs\">Entity b = \"[1, 2, 3]T\"; \/\/ b - \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0441 \u043e\u0434\u043d\u0438\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u043c, \t\t\t\t\t\t\t\t\t\t\t\t \/\/ \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440-\u0441\u0442\u0440\u043e\u043a\u0430<\/code><\/pre>\n<p>\u041f\u043e\u043a\u0430\u0436\u0435\u043c \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0430\u0442\u0440\u0438\u0446\u0443 <img decoding=\"async\" class=\"formula inline\" source=\"c = \\begin{pmatrix}1&amp;2\\\\3&amp;4\\end{pmatrix}\" alt=\"c = \\begin{pmatrix}1&amp;2\\\\3&amp;4\\end{pmatrix}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/304\/dff\/e9e\/304dffe9ef1737d0516c2e05c62888bc.svg\"><\/p>\n<pre><code class=\"cs\">Entity \u0441 = \"[[1, 2], [3, 4]]\"; \/\/ c - \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 [1, 2] \u0438 [3, 4]<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u0430\u0442\u0440\u0438\u0446:<\/p>\n<pre><code class=\"cs\">Entity.Matrix m = ... m.Adjugate   \/\/ null \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 (\u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 - \u043d\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u0430\u044f) m.AsScalar() \/\/ \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 1x1 \u043a \u0441\u043a\u0430\u043b\u044f\u0440\u0443 m.Inverse    \/\/ null \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 m.Pow(int)   \/\/ \u0432\u043e\u0437\u0432\u043e\u0434\u0438\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c m.ReducedRowEchelonForm \/\/ \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0438\u0434 \u043c\u0430\u0442\u0440\u0438\u0446\u044b<\/code><\/pre>\n<p>\u0417\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a <a href=\"https:\/\/am.angouri.org\/docs\/AngouriMath.Entity\/Matrix.html\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 <code>AngouriMath.FSharp<\/code>. \u0412\u0441\u0435 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b\u0438 \u0432 <code>AngouriMath.FSharp.Matrices<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0434\u043b\u044f \u043c\u0430\u0442\u0440\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0442\u043e\u0447\u043a\u0443:<\/p>\n<pre><code>a +. b a -. b a *. b a \/. b a **. b \/\/ \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0432\u043e\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c a ***. b \/\/ \u0442\u0435\u043d\u0437\u043e\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 a ****. b \/\/ \u0442\u0435\u043d\u0437\u043e\u0440\u043d\u043e\u0435 \u0432\u043e\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c<\/code><\/pre>\n<h2>\u041f\u0430\u0440\u0441\u0435\u0440 \u0438 LaTeX<\/h2>\n<p>\u041f\u0430\u0440\u0441\u0435\u0440 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0443 \u0438 \u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442, \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b: <code>\\n, \\r<\/code> \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0430\u0442\u0440\u0438\u0446.<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 <code>MathS.Settings.ExplicitParsingOnly<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043e\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cs\">Entity a = \"2x + 3(x + 1)\"; \/\/ \u0411\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u043e \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u043c \u043a\u0430\u043a \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u0435\u0441\u043b\u0438 MathS.Settings.ExplicitParsingOnly == false \t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u0438\u043d\u0430\u0447\u0435 \u0436\u0435, \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u043e.<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>MathS.Parse<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 <code>Either<\/code> \u043e\u0442 <code>Entity<\/code> \u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043d\u0435\u0443\u0434\u0430\u0447\u0438. <\/p>\n<p><code>Either<\/code> &#8212; \u0442\u0438\u043f \u0438\u0437 <a href=\"https:\/\/github.com\/WhiteBlackGoose\/HonkSharp\" rel=\"noopener noreferrer nofollow\">Honk#<\/a> (\u043f\u0440\u043e \u043d\u0435\u0433\u043e \u0435\u0449\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043b\u0438\u0431\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u0432\u044b\u0445\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438), \u043b\u0438\u0431\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 (\u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433 <code>std::variant<\/code> \u0438\u0437 C++).<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cs\">using AngouriMath; using System;  var res = MathS.Parse(\"2x + 3\")     .Switch(         valid =&gt; valid,         failure =&gt; failure.Reason.Switch&lt;Entity&gt;(                 unknown =&gt; $\"Unknown reason: {unknown.Reason}\",                 missingOperator =&gt; $\"Operator missed: {missingOperator.Details}\",                 internalError =&gt; $\"Internal error: {internalError.Details}\"         )     );  Console.WriteLine(res);<\/code><\/pre>\n<p><code>Latexise<\/code> (LaTeX \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 <code>Entity<\/code>) \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u043a\u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f (<code>\\times<\/code>), \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0442\u0430\u0432\u044f\u0442\u0441\u044f <code>\\cdot<\/code> \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0433\u0434\u0435 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e (\u043c\u0435\u0436\u0434\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438), \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0433\u043e\u0432 \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043e.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\underbrace{\\times}_{\\text{\\times}} \\text{ vs } \\ \\underbrace{ \\vphantom{ \\times }  \\cdot}_{\\text{\\cdot}}\" alt=\"\\underbrace{\\times}_{\\text{\\times}} \\text{ vs } \\ \\underbrace{ \\vphantom{ \\times }  \\cdot}_{\\text{\\cdot}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f0d\/a59\/0c6\/f0da590c64ec1627f2bb078275058f9f.svg\" width=\"107\" height=\"45\"><\/p>\n<h2>\u041d\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/h2>\n<p><code>MathS.Series.Maclaurin<\/code>,&nbsp;<code>MathS.Series.Taylor<\/code>&nbsp;,&nbsp;<code>MathS.Series.TaylorTerms<\/code>&nbsp;&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0440\u044f\u0434 \u0422\u0435\u0439\u043b\u043e\u0440\u0430.<\/p>\n<p>\u0411\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e API \u0442\u0435\u043e\u0440\u0438\u0438 \u0447\u0438\u0441\u0435\u043b. \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u044b\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0438\u043d\u0443\u0441\u044b \u0438 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u044b, \u043e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0433\u043b\u043e\u0432. <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"\\sin \\frac{17 \\pi}{42}\" alt=\"\\sin \\frac{17 \\pi}{42}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/751\/614\/30e\/75161430e4a03656300ac11f5abb4739.svg\">:<\/p>\n<pre><code class=\"cs\">1\/2 * ((sqrt(1 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) ^ 2 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) * sqrt(1 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) - 2 * sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) * sqrt(1 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) * sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2))) - -(2 * sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) * sqrt(1 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) * sqrt(1 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) + (sqrt(1 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) ^ 2 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) * sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2))) * sqrt(3) \/ 2<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0412\u0441\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: <\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p><code>SymbolicFormOfSine<\/code><\/p>\n<\/li>\n<li>\n<p><code>SymbolicFormOfCosine<\/code><\/p>\n<\/li>\n<li>\n<p><code>ExpandSineOfSum<\/code><\/p>\n<\/li>\n<li>\n<p><code>ExpandConsineOfSum<\/code><\/p>\n<\/li>\n<li>\n<p><code>ExpandSineArgumentMultiplied<\/code><\/p>\n<\/li>\n<li>\n<p><code>ExpandCosineArgumentMultiplied<\/code><\/p>\n<\/li>\n<li>\n<p><code>GetSineOfHalvedAngle<\/code><\/p>\n<\/li>\n<li>\n<p><code>GetCosineOfHalvedAngle<\/code><\/p>\n<\/li>\n<li>\n<p><code>DecomposeRational<\/code><\/p>\n<\/li>\n<li>\n<p><code>GetSineOfHalvedAngle<\/code>  <\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u043b\u0438\u0430\u0441\u043e\u0432 \u0433\u0438\u043f\u0435\u0440\u0431\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c. <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430<code>AngouriMath.FSharp<\/code> \u0431\u0443\u0434\u0435\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d <code>InnerSimplified<\/code> (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>sqrt 4<\/code> \u0432\u0435\u0440\u043d\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 <code>2<\/code> \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a <code>MathS.Sqrt(4)<\/code> \u0432\u0441\u0451 \u0435\u0449\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f <code>4<\/code> \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c <code>1\/2<\/code>)<\/p>\n<p>\u0423 \u043f\u0430\u043a\u0435\u0442\u0430 <code>AngouriMath.Interactive<\/code> \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c: <code>AggressiveOperators<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432: <code>+, -, *, \/, **, &lt;, &gt;, &gt;=, &lt;=, =<\/code>. \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u043a\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u0430\u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043d\u043e \u043e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/github.com\/WhiteBlackGoose\/AngouriMath.Terminal\" rel=\"noopener noreferrer nofollow\">\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435<\/a>.<\/p>\n<h2>AngouriMath.CPP: \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0434\u043b\u044f C++<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u0432\u043d\u0435. \u042d\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f <a href=\"https:\/\/github.com\/dotnet\/runtimelab\/tree\/feature\/NativeAOT\" rel=\"noopener noreferrer nofollow\">NativeAOT<\/a>, \u043d\u043e\u0432\u043e\u0439 \u0444\u0438\u0447\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0438 .NET \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cpp\">#include &lt;AngouriMath.h&gt; AngouriMath::Entity expr(\"x * y + 2sin(x * y) - y^x\"); std::cout &lt;&lt; expr.Differentiate(\"x\") &lt;&lt; \"\\n\";<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c: <code>y + cos(x * y) * y * 2 - y ^ x * ln(y)<\/code> <\/p>\n<p>AngouriMath.CPP &#8212; \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442, \u043d\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u044b\u0442\u0430\u0442\u044c \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0432\u0448\u0438\u0441\u044c \u0441 \u043a\u0440\u0430\u0442\u043a\u043e\u0439 <a href=\"https:\/\/am.angouri.org\/quickstart\/#cpp\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439<\/a>. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0435\u043c \u043e\u043d \u0435\u0434\u0432\u0430 \u043b\u0438 \u0433\u043e\u0434\u0435\u043d \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e, \u043d\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/www.reddit.com\/r\/dotnet\/comments\/nctry2\/nets_angourimath_now_can_be_used_from_c_proof_of\/\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0441\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043d\u0430 Reddit<\/a> \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435.<\/p>\n<h2>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 AngouriMath \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445<\/h2>\n<p>\u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043f\u043e\u043c\u0438\u043c\u043e netstandard2.0, AngouriMath \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 .NET Framework 4.7.2+ \u0438 netstandard2.1, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 legacy \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.<\/p>\n<p><a href=\"https:\/\/github.com\/WhiteBlackGoose\/HonkSharp\" rel=\"noopener noreferrer nofollow\">Honk#<\/a> \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 AngouriMath, \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Honk# \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445. <\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0412 \u043d\u043e\u0432\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0444\u0438\u0447 \u0438 \u0444\u0438\u043a\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u0430\u043a\u0438\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438. \u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 <a href=\"https:\/\/am.angouri.org\/whatsnew\/\" rel=\"noopener noreferrer nofollow\">\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435<\/a> \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0434\u043e \u043a\u043e\u043d\u0446\u0430! \u0421 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435\u043c \u0436\u0434\u0435\u043c \u0432\u0430\u0448\u0438\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<h2>\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<ol>\n<li>\n<p><a href=\"https:\/\/github.com\/asc-community\/AngouriMath\" rel=\"noopener noreferrer nofollow\">Github<\/a> \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/am.angouri.org\/\" rel=\"noopener noreferrer nofollow\">\u0421\u0430\u0439\u0442<\/a> \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/am.angouri.org\/whatsnew\/\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043c\u0435\u0442\u043a\u0438 \u043e \u0440\u0435\u043b\u0438\u0437\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.nuget.org\/packages\/AngouriMath\" rel=\"noopener noreferrer nofollow\"><u>Nuget<\/u><\/a>&nbsp;(<a href=\"https:\/\/www.nuget.org\/packages\/AngouriMath\" rel=\"noopener noreferrer nofollow\">C#<\/a>,&nbsp;<a href=\"https:\/\/www.nuget.org\/packages\/AngouriMath.FSharp\" rel=\"noopener noreferrer nofollow\">F#<\/a>,&nbsp;<a href=\"https:\/\/www.nuget.org\/packages\/AngouriMath.Interactive\" rel=\"noopener noreferrer nofollow\">Interactive<\/a>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c AngouriMath \u0432&nbsp;<a href=\"https:\/\/mybinder.org\/v2\/gh\/asc-community\/AngouriMathLab\/try?filepath=HelloBook.AngouriMath.Interactive.ipynb\" rel=\"noopener noreferrer nofollow\">binder<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtimelab\/tree\/feature\/NativeAOT\" rel=\"noopener noreferrer nofollow\">NativeAOT<\/a>&nbsp;\u0434\u043b\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/interactive\" rel=\"noopener noreferrer nofollow\"><u>dotnet\/interactive<\/u><\/a>&nbsp;\u0434\u043b\u044f Jupyter \u0438 \u043d\u043e\u0442\u0431\u0443\u043a\u043e\u0432<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/WhiteBlackGoose\/HonkSharp\" rel=\"noopener noreferrer nofollow\">Honk#<\/a>&nbsp;\u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/twitter.com\/WhiteBlackGoose\" rel=\"noopener noreferrer nofollow\">Twitter<\/a> \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<\/p>\n<\/li>\n<\/ol>\n<h2>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c<\/h2>\n<p>\u0410\u0432\u0442\u043e\u0440 \u0432\u044b\u0440\u0430\u0436\u0430\u0435\u0442 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0432\u043a\u043b\u0430\u0434 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442:<\/p>\n<p><strong>Contributors<\/strong>:&nbsp;<a href=\"https:\/\/github.com\/Happypig375\" rel=\"noopener noreferrer nofollow\">Happypig375<\/a>,&nbsp;<a href=\"https:\/\/github.com\/ryyanmapes\" rel=\"noopener noreferrer nofollow\">ryynmapes<\/a>,&nbsp;<a href=\"https:\/\/github.com\/MomoDeve\" rel=\"noopener noreferrer nofollow\">MomoDeve<\/a>,&nbsp;<a href=\"https:\/\/github.com\/TheSeems\" rel=\"noopener noreferrer nofollow\">TheSeems<\/a>,&nbsp;<a href=\"https:\/\/github.com\/KuhakuPixel\" rel=\"noopener noreferrer nofollow\">KuhakuPixel<\/a>,&nbsp;<a href=\"https:\/\/github.com\/jaimeadf\" rel=\"noopener noreferrer nofollow\">jaimeadf<\/a>,&nbsp;<a href=\"https:\/\/github.com\/yoshiask\" rel=\"noopener noreferrer nofollow\">yoshiask<\/a>.<\/p>\n<p><strong>Consultants<\/strong>:&nbsp;<a href=\"https:\/\/github.com\/Happypig375\" rel=\"noopener noreferrer nofollow\">Happypig375<\/a>, mednik.<\/p>\n<p><strong>Sponsors<\/strong>: zyzhu.<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/567126\/\"> https:\/\/habr.com\/ru\/post\/567126\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438: <a href=\"https:\/\/habr.com\/ru\/post\/565996\/\" rel=\"noopener noreferrer nofollow\">\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b<\/a><\/p>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 AngouriMath<\/h2>\n<p>AngouriMath &#8212; \u044d\u0442\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f open-source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0430\u043b\u0433\u0435\u0431\u0440\u044b, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b .NET \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0430\u044f \u0432 \u043d\u0435\u0439. \u0420\u0430\u0431\u043e\u0442\u0430 \u043d\u0430\u0434 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0432\u0435\u0434\u0435\u0442\u0441\u044f \u0441 \u043a\u043e\u043d\u0446\u0430 2019 \u0433\u043e\u0434\u0430. \u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043a\u0440\u0443\u043f\u043d\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u0431\u044b\u043b \u0432\u044b\u043f\u0443\u0449\u0435\u043d 2 \u043c\u0430\u0440\u0442\u0430, \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c <a href=\"https:\/\/habr.com\/en\/post\/545436\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a>.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0437\u0430 4 \u043c\u0435\u0441\u044f\u0446\u0430!<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>AngouriMath \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0434\u043b\u044f C#, F#, \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0440\u0435\u0434 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Jupyter) \u0438 \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u0434\u043b\u044f C++. \u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0441\u0440\u0435\u0434, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"182\" width=\"182\">\n<p align=\"center\">\n<\/td>\n<td data-colwidth=\"122\" width=\"122\">\n<p>C#<\/p>\n<\/td>\n<td>\n<p>F#<\/p>\n<\/td>\n<td>\n<p>Interactive<\/p>\n<\/td>\n<td>\n<p>C++<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"182\" width=\"182\">\n<p>AngouriMath<\/p>\n<\/td>\n<td data-colwidth=\"122\" width=\"122\">\n<p>\u2713  <\/p>\n<\/td>\n<td>\n<p>\u2713  <\/p>\n<\/td>\n<td>\n<p>\u2713  <\/p>\n<\/td>\n<td>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"182\" width=\"182\">\n<p>AngouriMath.FSharp<\/p>\n<\/td>\n<td data-colwidth=\"122\" width=\"122\">\n<\/td>\n<td>\n<p>\u2713  <\/p>\n<\/td>\n<td>\n<p>\u2713  <\/p>\n<\/td>\n<td>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"182\" width=\"182\">\n<p>AngouriMath.Interactive<\/p>\n<\/td>\n<td data-colwidth=\"122\" width=\"122\">\n<\/td>\n<td>\n<\/td>\n<td>\n<p>\u2713  <\/p>\n<\/td>\n<td>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"182\" width=\"182\">\n<p>AngouriMath.CPP<\/p>\n<\/td>\n<td data-colwidth=\"122\" width=\"122\">\n<\/td>\n<td>\n<\/td>\n<td>\n<\/td>\n<td>\n<p align=\"center\">\u2713  <\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2>\u041c\u0430\u0442\u0440\u0438\u0446\u044b<\/h2>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u043c\u0438 &#8212; \u043e\u0434\u043d\u043e \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f API \u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0435\u043d\u0437\u043e\u0440\u043e\u0432 (\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u0442) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u044b: <code>Entity.Matrix<\/code>. \u041f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u044b, \u043d\u043e \u0443 \u043d\u0438\u0445 \u043d\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u0432\u0435\u043a\u0442\u043e\u0440 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0441 \u043e\u0434\u043d\u0438\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u043c \u0438\u0437 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. <\/p>\n<p> \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"cs\">Entity a = \"[1, 2, 3]\"; \/\/ a - \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u0437 \u0442\u0440\u0451\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432<\/code><\/pre>\n<pre><code class=\"cs\">Entity b = \"[1, 2, 3]T\"; \/\/ b - \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0441 \u043e\u0434\u043d\u0438\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u043c, \t\t\t\t\t\t\t\t\t\t\t\t \/\/ \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440-\u0441\u0442\u0440\u043e\u043a\u0430<\/code><\/pre>\n<p>\u041f\u043e\u043a\u0430\u0436\u0435\u043c \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0430\u0442\u0440\u0438\u0446\u0443 <\/p>\n<pre><code class=\"cs\">Entity \u0441 = \"[[1, 2], [3, 4]]\"; \/\/ c - \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 [1, 2] \u0438 [3, 4]<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u0430\u0442\u0440\u0438\u0446:<\/p>\n<pre><code class=\"cs\">Entity.Matrix m = ... m.Adjugate   \/\/ null \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 (\u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 - \u043d\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u0430\u044f) m.AsScalar() \/\/ \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 1x1 \u043a \u0441\u043a\u0430\u043b\u044f\u0440\u0443 m.Inverse    \/\/ null \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 m.Pow(int)   \/\/ \u0432\u043e\u0437\u0432\u043e\u0434\u0438\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u0443 \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c m.ReducedRowEchelonForm \/\/ \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0438\u0434 \u043c\u0430\u0442\u0440\u0438\u0446\u044b<\/code><\/pre>\n<p>\u0417\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a <a href=\"https:\/\/am.angouri.org\/docs\/AngouriMath.Entity\/Matrix.html\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 <code>AngouriMath.FSharp<\/code>. \u0412\u0441\u0435 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b\u0438 \u0432 <code>AngouriMath.FSharp.Matrices<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0434\u043b\u044f \u043c\u0430\u0442\u0440\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0442\u043e\u0447\u043a\u0443:<\/p>\n<pre><code>a +. b a -. b a *. b a \/. b a **. b \/\/ \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u0432\u043e\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c a ***. b \/\/ \u0442\u0435\u043d\u0437\u043e\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 a ****. b \/\/ \u0442\u0435\u043d\u0437\u043e\u0440\u043d\u043e\u0435 \u0432\u043e\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c<\/code><\/pre>\n<h2>\u041f\u0430\u0440\u0441\u0435\u0440 \u0438 LaTeX<\/h2>\n<p>\u041f\u0430\u0440\u0441\u0435\u0440 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0443 \u0438 \u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442, \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b: <code>\\n, \\r<\/code> \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0430\u0442\u0440\u0438\u0446.<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 <code>MathS.Settings.ExplicitParsingOnly<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043e\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cs\">Entity a = \"2x + 3(x + 1)\"; \/\/ \u0411\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u043e \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u043c \u043a\u0430\u043a \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u0435\u0441\u043b\u0438 MathS.Settings.ExplicitParsingOnly == false \t\t\t\t\t\t\t\t\t\t\t\t\t\t\/\/ \u0438\u043d\u0430\u0447\u0435 \u0436\u0435, \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u043e.<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>MathS.Parse<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 <code>Either<\/code> \u043e\u0442 <code>Entity<\/code> \u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043d\u0435\u0443\u0434\u0430\u0447\u0438. <\/p>\n<p><code>Either<\/code> &#8212; \u0442\u0438\u043f \u0438\u0437 <a href=\"https:\/\/github.com\/WhiteBlackGoose\/HonkSharp\" rel=\"noopener noreferrer nofollow\">Honk#<\/a> (\u043f\u0440\u043e \u043d\u0435\u0433\u043e \u0435\u0449\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043b\u0438\u0431\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u0432\u044b\u0445\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438), \u043b\u0438\u0431\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 (\u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433 <code>std::variant<\/code> \u0438\u0437 C++).<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cs\">using AngouriMath; using System;  var res = MathS.Parse(\"2x + 3\")     .Switch(         valid =&gt; valid,         failure =&gt; failure.Reason.Switch&lt;Entity&gt;(                 unknown =&gt; $\"Unknown reason: {unknown.Reason}\",                 missingOperator =&gt; $\"Operator missed: {missingOperator.Details}\",                 internalError =&gt; $\"Internal error: {internalError.Details}\"         )     );  Console.WriteLine(res);<\/code><\/pre>\n<p><code>Latexise<\/code> (LaTeX \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 <code>Entity<\/code>) \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u043a\u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f (<code>\\times<\/code>), \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0442\u0430\u0432\u044f\u0442\u0441\u044f <code>\\cdot<\/code> \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0433\u0434\u0435 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e (\u043c\u0435\u0436\u0434\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438), \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0433\u043e\u0432 \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043e.<\/p>\n<h2>\u041d\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/h2>\n<p><code>MathS.Series.Maclaurin<\/code>,&nbsp;<code>MathS.Series.Taylor<\/code>&nbsp;,&nbsp;<code>MathS.Series.TaylorTerms<\/code>&nbsp;&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0440\u044f\u0434 \u0422\u0435\u0439\u043b\u043e\u0440\u0430.<\/p>\n<p>\u0411\u044b\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e API \u0442\u0435\u043e\u0440\u0438\u0438 \u0447\u0438\u0441\u0435\u043b. \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u044b\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0438\u043d\u0443\u0441\u044b \u0438 \u043a\u043e\u0441\u0438\u043d\u0443\u0441\u044b, \u043e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0433\u043b\u043e\u0432. <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 :<\/p>\n<pre><code class=\"cs\">1\/2 * ((sqrt(1 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) ^ 2 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) * sqrt(1 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) - 2 * sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) * sqrt(1 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) * sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2))) - -(2 * sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) * sqrt(1 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) * sqrt(1 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) + (sqrt(1 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) ^ 2 - sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2)) ^ 2) * sqrt(1\/2 - 1\/2 * sqrt(1 - sqrt(1 - (1\/6 * (-1 + ((7 + 21 * sqrt(-3)) \/ 2) ^ (1\/3) + ((7 - 21 * sqrt(-3)) \/ 2) ^ (1\/3))) ^ 2) ^ 2))) * sqrt(3) \/ 2<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0412\u0441\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: <\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p><code>SymbolicFormOfSine<\/code><\/p>\n<\/li>\n<li>\n<p><code>SymbolicFormOfCosine<\/code><\/p>\n<\/li>\n<li>\n<p><code>ExpandSineOfSum<\/code><\/p>\n<\/li>\n<li>\n<p><code>ExpandConsineOfSum<\/code><\/p>\n<\/li>\n<li>\n<p><code>ExpandSineArgumentMultiplied<\/code><\/p>\n<\/li>\n<li>\n<p><code>ExpandCosineArgumentMultiplied<\/code><\/p>\n<\/li>\n<li>\n<p><code>GetSineOfHalvedAngle<\/code><\/p>\n<\/li>\n<li>\n<p><code>GetCosineOfHalvedAngle<\/code><\/p>\n<\/li>\n<li>\n<p><code>DecomposeRational<\/code><\/p>\n<\/li>\n<li>\n<p><code>GetSineOfHalvedAngle<\/code>  <\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u043b\u0438\u0430\u0441\u043e\u0432 \u0433\u0438\u043f\u0435\u0440\u0431\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c. <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430<code>AngouriMath.FSharp<\/code> \u0431\u0443\u0434\u0435\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d <code>InnerSimplified<\/code> (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>sqrt 4<\/code> \u0432\u0435\u0440\u043d\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 <code>2<\/code> \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a <code>MathS.Sqrt(4)<\/code> \u0432\u0441\u0451 \u0435\u0449\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f <code>4<\/code> \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c <code>1\/2<\/code>)<\/p>\n<p>\u0423 \u043f\u0430\u043a\u0435\u0442\u0430 <code>AngouriMath.Interactive<\/code> \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c: <code>AggressiveOperators<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432: <code>+, -, *, \/, **, &lt;, &gt;, &gt;=, &lt;=, =<\/code>. \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u043a\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u0430\u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u043d\u043e \u043e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/github.com\/WhiteBlackGoose\/AngouriMath.Terminal\" rel=\"noopener noreferrer nofollow\">\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435<\/a>.<\/p>\n<h2>AngouriMath.CPP: \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0434\u043b\u044f C++<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u0432\u043d\u0435. \u042d\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f <a href=\"https:\/\/github.com\/dotnet\/runtimelab\/tree\/feature\/NativeAOT\" rel=\"noopener noreferrer nofollow\">NativeAOT<\/a>, \u043d\u043e\u0432\u043e\u0439 \u0444\u0438\u0447\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0438 .NET \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cpp\">#include &lt;AngouriMath.h&gt; AngouriMath::Entity expr(\"x * y + 2sin(x * y) - y^x\"); std::cout &lt;&lt; expr.Differentiate(\"x\") &lt;&lt; \"\\n\";<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c: <code>y + cos(x * y) * y * 2 - y ^ x * ln(y)<\/code> <\/p>\n<p>AngouriMath.CPP &#8212; \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442, \u043d\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u044b\u0442\u0430\u0442\u044c \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0432\u0448\u0438\u0441\u044c \u0441 \u043a\u0440\u0430\u0442\u043a\u043e\u0439 <a href=\"https:\/\/am.angouri.org\/quickstart\/#cpp\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439<\/a>. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0435\u043c \u043e\u043d \u0435\u0434\u0432\u0430 \u043b\u0438 \u0433\u043e\u0434\u0435\u043d \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e, \u043d\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/www.reddit.com\/r\/dotnet\/comments\/nctry2\/nets_angourimath_now_can_be_used_from_c_proof_of\/\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0441\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043d\u0430 Reddit<\/a> \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435.<\/p>\n<h2>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 AngouriMath \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445<\/h2>\n<p>\u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043f\u043e\u043c\u0438\u043c\u043e netstandard2.0, AngouriMath \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 .NET Framework 4.7.2+ \u0438 netstandard2.1, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 legacy \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.<\/p>\n<p><a href=\"https:\/\/github.com\/WhiteBlackGoose\/HonkSharp\" rel=\"noopener noreferrer nofollow\">Honk#<\/a> \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 AngouriMath, \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Honk# \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445. <\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0412 \u043d\u043e\u0432\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0444\u0438\u0447 \u0438 \u0444\u0438\u043a\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u0430\u043a\u0438\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438. \u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 <a href=\"https:\/\/am.angouri.org\/whatsnew\/\" rel=\"noopener noreferrer nofollow\">\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435<\/a> \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0434\u043e \u043a\u043e\u043d\u0446\u0430! \u0421 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435\u043c \u0436\u0434\u0435\u043c \u0432\u0430\u0448\u0438\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<h2>\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<ol>\n<li>\n<p><a href=\"https:\/\/github.com\/asc-community\/AngouriMath\" rel=\"noopener noreferrer nofollow\">Github<\/a> \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/am.angouri.org\/\" rel=\"noopener noreferrer nofollow\">\u0421\u0430\u0439\u0442<\/a> \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/am.angouri.org\/whatsnew\/\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043c\u0435\u0442\u043a\u0438 \u043e \u0440\u0435\u043b\u0438\u0437\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.nuget.org\/packages\/AngouriMath\" rel=\"noopener noreferrer nofollow\"><u>Nuget<\/u><\/a>&nbsp;(<a href=\"https:\/\/www.nuget.org\/packages\/AngouriMath\" rel=\"noopener noreferrer nofollow\">C#<\/a>,&nbsp;<a href=\"https:\/\/www.nuget.org\/packages\/AngouriMath.FSharp\" rel=\"noopener noreferrer nofollow\">F#<\/a>,&nbsp;<a href=\"https:\/\/www.nuget.org\/packages\/AngouriMath.Interactive\" rel=\"noopener noreferrer nofollow\">Interactive<\/a>)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c AngouriMath \u0432&nbsp;<a href=\"https:\/\/mybinder.org\/v2\/gh\/asc-community\/AngouriMathLab\/try?filepath=HelloBook.AngouriMath.Interactive.ipynb\" rel=\"noopener noreferrer nofollow\">binder<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/runtimelab\/tree\/feature\/NativeAOT\" rel=\"noopener noreferrer nofollow\">NativeAOT<\/a>&nbsp;\u0434\u043b\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/dotnet\/interactive\" rel=\"noopener noreferrer nofollow\"><u>dotnet\/interactive<\/u><\/a>&nbsp;\u0434\u043b\u044f Jupyter \u0438 \u043d\u043e\u0442\u0431\u0443\u043a\u043e\u0432<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/WhiteBlackGoose\/HonkSharp\" rel=\"noopener noreferrer nofollow\">Honk#<\/a>&nbsp;\u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/twitter.com\/WhiteBlackGoose\" rel=\"noopener noreferrer nofollow\">Twitter<\/a> \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<\/p>\n<\/li>\n<\/ol>\n<h2>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c<\/h2>\n<p>\u0410\u0432\u0442\u043e\u0440 \u0432\u044b\u0440\u0430\u0436\u0430\u0435\u0442 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0432\u043a\u043b\u0430\u0434 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442:<\/p>\n<p><strong>Contributors<\/strong>:&nbsp;<a href=\"https:\/\/github.com\/Happypig375\" rel=\"noopener noreferrer nofollow\">Happypig375<\/a>,&nbsp;<a href=\"https:\/\/github.com\/ryyanmapes\" rel=\"noopener noreferrer nofollow\">ryynmapes<\/a>,&nbsp;<a href=\"https:\/\/github.com\/MomoDeve\" rel=\"noopener noreferrer nofollow\">MomoDeve<\/a>,&nbsp;<a href=\"https:\/\/github.com\/TheSeems\" rel=\"noopener noreferrer nofollow\">TheSeems<\/a>,&nbsp;<a href=\"https:\/\/github.com\/KuhakuPixel\" rel=\"noopener noreferrer nofollow\">KuhakuPixel<\/a>,&nbsp;<a href=\"https:\/\/github.com\/jaimeadf\" rel=\"noopener noreferrer nofollow\">jaimeadf<\/a>,&nbsp;<a href=\"https:\/\/github.com\/yoshiask\" rel=\"noopener noreferrer nofollow\">yoshiask<\/a>.<\/p>\n<p><strong>Consultants<\/strong>:&nbsp;<a href=\"https:\/\/github.com\/Happypig375\" rel=\"noopener noreferrer nofollow\">Happypig375<\/a>, mednik.<\/p>\n<p><strong>Sponsors<\/strong>: zyzhu.<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/567126\/\"> https:\/\/habr.com\/ru\/post\/567126\/<\/a><br \/><\/br><\/br><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-326269","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/326269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=326269"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/326269\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=326269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=326269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=326269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}